[opensuse-factory] Can't take care of peazip anymore
It can't be built with Qt and it has a few other problems upstream won't take care of and that I can't fix due to significant rustiness in all things pascal/delphi. Anyone willing to adopt it? -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
On Thursday 2020-09-17 15:39, Luigi Baldoni wrote:
It can't be built with Qt and it has a few other problems upstream won't take care of and that I can't fix due to significant rustiness in all things pascal/delphi.
Anyone willing to adopt it?
cat >good.pas <<-EOF program t; begin end. EOF ppcx64 -B -MObjFPC -Scgi -Cg -O3 -g -gl -k-pie -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux -Fu/usr/lib64/lazarus/components/lazutils/lib/x86_64-linux t.pas -> produces PIE cat >bad.pas <<-EOF program t; uses graphics; begin end. EOF -> bombs out with same command line So the problem is not so much in peazip (uses "graphics"), but in lazarus. -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
On 21/09/2020 11.39, Jan Engelhardt wrote:
On Thursday 2020-09-17 15:39, Luigi Baldoni wrote:
It can't be built with Qt and it has a few other problems upstream won't take care of and that I can't fix due to significant rustiness in all things pascal/delphi.
Anyone willing to adopt it?
cat >good.pas <<-EOF program t; begin end. EOF ppcx64 -B -MObjFPC -Scgi -Cg -O3 -g -gl -k-pie -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux -Fu/usr/lib64/lazarus/components/lazutils/lib/x86_64-linux t.pas -> produces PIE
cat >bad.pas <<-EOF program t; uses graphics; begin end. EOF -> bombs out with same command line
So the problem is not so much in peazip (uses "graphics"), but in lazarus.
cer@Telcontar:~/bin/lazarus/test> fpc bad.pas Free Pascal Compiler version 3.2.0 [2020/08/18] for x86_64 Copyright (c) 1993-2020 by Florian Klaempfl and others Target OS: Linux for x86-64 Compiling bad.pas bad.pas(2,10) Fatal: Can't find unit graphics used by t Fatal: Compilation aborted Error: /usr/bin/ppcx64 returned an error exitcode cer@Telcontar:~/bin/lazarus/test> Without a project file, I can not try to build it with Lazarus itself. My own programs build fine with "Graphics". -- Cheers / Saludos, Carlos E. R. (from 15.1 x86_64 at Telcontar)
On Monday 2020-09-21 11:58, Carlos E. R. wrote:
On 21/09/2020 11.39, Jan Engelhardt wrote:
ppcx64 -B -MObjFPC -Scgi -Cg -O3 -g -gl -k-pie -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux -Fu/usr/lib64/lazarus/components/lazutils/lib/x86_64-linux t.pas
cat >bad.pas <<-EOF program t; uses graphics; begin end. EOF
So the problem is not so much in peazip (uses "graphics"), but in lazarus.
cer@Telcontar:~/bin/lazarus/test> fpc bad.pas Free Pascal Compiler version 3.2.0 [2020/08/18] for x86_64 Copyright (c) 1993-2020 by Florian Klaempfl and others Target OS: Linux for x86-64 Compiling bad.pas bad.pas(2,10) Fatal: Can't find unit graphics used by t
Without a project file, I can not try to build it with Lazarus itself. My own programs build fine with "Graphics".
See above. Why do you think I posted the commandline? -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
On 21/09/2020 12.12, Jan Engelhardt wrote:
On Monday 2020-09-21 11:58, Carlos E. R. wrote:
On 21/09/2020 11.39, Jan Engelhardt wrote:
ppcx64 -B -MObjFPC -Scgi -Cg -O3 -g -gl -k-pie -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux -Fu/usr/lib64/lazarus/components/lazutils/lib/x86_64-linux t.pas
cat >bad.pas <<-EOF program t; uses graphics; begin end. EOF
So the problem is not so much in peazip (uses "graphics"), but in lazarus.
cer@Telcontar:~/bin/lazarus/test> fpc bad.pas Free Pascal Compiler version 3.2.0 [2020/08/18] for x86_64 Copyright (c) 1993-2020 by Florian Klaempfl and others Target OS: Linux for x86-64 Compiling bad.pas bad.pas(2,10) Fatal: Can't find unit graphics used by t
Without a project file, I can not try to build it with Lazarus itself. My own programs build fine with "Graphics".
See above. Why do you think I posted the commandline?
Which is obviously incorrect, or it would build. Don't ask me what is the error, I use "Build" from inside Lazarus, or: lazbuild myproject.lpi on the command line. -- Cheers / Saludos, Carlos E. R. (from 15.1 x86_64 at Telcontar)
On 21/09/2020 13.33, Carlos E. R. wrote:
On 21/09/2020 12.12, Jan Engelhardt wrote:
On Monday 2020-09-21 11:58, Carlos E. R. wrote:
On 21/09/2020 11.39, Jan Engelhardt wrote:
ppcx64 -B -MObjFPC -Scgi -Cg -O3 -g -gl -k-pie -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux -Fu/usr/lib64/lazarus/components/lazutils/lib/x86_64-linux t.pas
cat >bad.pas <<-EOF program t; uses graphics; begin end. EOF
So the problem is not so much in peazip (uses "graphics"), but in lazarus.
cer@Telcontar:~/bin/lazarus/test> fpc bad.pas Free Pascal Compiler version 3.2.0 [2020/08/18] for x86_64 Copyright (c) 1993-2020 by Florian Klaempfl and others Target OS: Linux for x86-64 Compiling bad.pas bad.pas(2,10) Fatal: Can't find unit graphics used by t
Without a project file, I can not try to build it with Lazarus itself. My own programs build fine with "Graphics".
See above. Why do you think I posted the commandline?
Which is obviously incorrect, or it would build. Don't ask me what is the error, I use "Build" from inside Lazarus, or:
lazbuild myproject.lpi
on the command line.
As an example, a program of mine that "uses Graphics" produces this build log (excerpt), which is a rather more complex command line: Info: (lazarus) Execute Title="Compile Project, Target: contarcorreo" Info: (lazarus) Working Directory="/home_aux/cer/bin/lazarus/mios/contarcorreo/" Info: (lazarus) Executable="/usr/bin/fpc" Info: (lazarus) Param[0]="-B" Info: (lazarus) Param[1]="-Tlinux" Info: (lazarus) Param[2]="-Px86_64" Info: (lazarus) Param[3]="-MObjFPC" Info: (lazarus) Param[4]="-Sgi" Info: (lazarus) Param[5]="-Cg" Info: (lazarus) Param[6]="-Cirot" Info: (lazarus) Param[7]="-Os1" Info: (lazarus) Param[8]="-g" Info: (lazarus) Param[9]="-gl" Info: (lazarus) Param[10]="-XX" Info: (lazarus) Param[11]="-l" Info: (lazarus) Param[12]="-vewnhibq" Info: (lazarus) Param[13]="-Fu/home/cer/.lazarus/lib/RunTimeTypeInfoControls/lib/x86_64-linux/gtk2" Info: (lazarus) Param[14]="-Fu/home/cer/.lazarus/lib/IDEIntf/units/x86_64-linux/gtk2" Info: (lazarus) Param[15]="-Fu/home/cer/.lazarus/lib/LazControls/lib/x86_64-linux/gtk2" Info: (lazarus) Param[16]="-Fu/home/cer/.lazarus/lib/units/x86_64-linux/gtk2" Info: (lazarus) Param[17]="-Fu/home/cer/.lazarus/lib/LCLBase/units/x86_64-linux" Info: (lazarus) Param[18]="-Fu/home/cer/.lazarus/lib/LazUtils/lib/x86_64-linux" Info: (lazarus) Param[19]="-Fu/usr/lib64/lazarus/packager/units/x86_64-linux" Info: (lazarus) Param[20]="-Fu/home_aux/cer/bin/lazarus/mios/contarcorreo/" Info: (lazarus) Param[21]="-o/home_aux/cer/bin/lazarus/mios/contarcorreo/contarcorreo" Info: (lazarus) Param[22]="-dLCL" Info: (lazarus) Param[23]="-dLCLgtk2" Info: (lazarus) Param[24]="contarcorreo.lpr" -- Cheers / Saludos, Carlos E. R. (from 15.1 x86_64 at Telcontar)
On Monday 2020-09-21 13:47, Carlos E. R. wrote:
Which is obviously incorrect, or it would build. Don't ask me what is the error, I use "Build" from inside Lazarus, or:
There is no -k-pie in your command line.
As an example, a program of mine that "uses Graphics" produces this build log (excerpt), which is a rather more complex command line:
Info: (lazarus) Execute Title="Compile Project, Target: contarcorreo" Info: (lazarus) Working Directory="/home_aux/cer/bin/lazarus/mios/contarcorreo/" Info: (lazarus) Executable="/usr/bin/fpc" Info: (lazarus) Param[0]="-B" Info: (lazarus) Param[1]="-Tlinux" Info: (lazarus) Param[2]="-Px86_64" Info: (lazarus) Param[3]="-MObjFPC" Info: (lazarus) Param[4]="-Sgi" Info: (lazarus) Param[5]="-Cg" Info: (lazarus) Param[6]="-Cirot" Info: (lazarus) Param[7]="-Os1" Info: (lazarus) Param[8]="-g" Info: (lazarus) Param[9]="-gl" Info: (lazarus) Param[10]="-XX" Info: (lazarus) Param[11]="-l" Info: (lazarus) Param[12]="-vewnhibq" Info: (lazarus) Param[13]="-Fu/home/cer/.lazarus/lib/RunTimeTypeInfoControls/lib/x86_64-linux/gtk2" Info: (lazarus) Param[14]="-Fu/home/cer/.lazarus/lib/IDEIntf/units/x86_64-linux/gtk2" Info: (lazarus) Param[15]="-Fu/home/cer/.lazarus/lib/LazControls/lib/x86_64-linux/gtk2" Info: (lazarus) Param[16]="-Fu/home/cer/.lazarus/lib/units/x86_64-linux/gtk2" Info: (lazarus) Param[17]="-Fu/home/cer/.lazarus/lib/LCLBase/units/x86_64-linux" Info: (lazarus) Param[18]="-Fu/home/cer/.lazarus/lib/LazUtils/lib/x86_64-linux" Info: (lazarus) Param[19]="-Fu/usr/lib64/lazarus/packager/units/x86_64-linux" Info: (lazarus) Param[20]="-Fu/home_aux/cer/bin/lazarus/mios/contarcorreo/" Info: (lazarus) Param[21]="-o/home_aux/cer/bin/lazarus/mios/contarcorreo/contarcorreo" Info: (lazarus) Param[22]="-dLCL" Info: (lazarus) Param[23]="-dLCLgtk2" Info: (lazarus) Param[24]="contarcorreo.lpr" -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
On 21/09/2020 13.53, Jan Engelhardt wrote:
On Monday 2020-09-21 13:47, Carlos E. R. wrote:
Which is obviously incorrect, or it would build. Don't ask me what is the error, I use "Build" from inside Lazarus, or:
There is no -k-pie in your command line.
Well, my program doesn't need/use it. It appears to be a parameter (-pie) passed to the linker: -pie --pic-executable Create a position independent executable. This is currently only supported on ELF platforms. Position independent executables are similar to shared libraries in that they are relocated by the dynamic linker to the virtual address the OS chooses for them (which can vary between invocations). Like normal dynamically linked executables they can be executed and symbols defined in the executable cannot be overridden by shared libraries. I don't see how that can be related to not finding the graphics unit. Anyway, I activate it in my program: ... Info: (lazarus) Execute Title="Compile Project, Target: contarcorreo" Info: (lazarus) Working Directory="/home_aux/cer/bin/lazarus/mios/contarcorreo/" Info: (lazarus) Executable="/usr/bin/fpc" Info: (lazarus) Param[0]="-Tlinux" Info: (lazarus) Param[1]="-Px86_64" Info: (lazarus) Param[2]="-MObjFPC" Info: (lazarus) Param[3]="-Sgi" Info: (lazarus) Param[4]="-Cg" Info: (lazarus) Param[5]="-Cirot" Info: (lazarus) Param[6]="-Os1" Info: (lazarus) Param[7]="-g" Info: (lazarus) Param[8]="-gl" Info: (lazarus) Param[9]="-XX" Info: (lazarus) Param[10]="-k-pie" Info: (lazarus) Param[11]="-l" Info: (lazarus) Param[12]="-vewnhibq" Info: (lazarus) Param[13]="-Fu/home/cer/.lazarus/lib/RunTimeTypeInfoControls/lib/x86_64-linux/gtk2" Info: (lazarus) Param[14]="-Fu/home/cer/.lazarus/lib/IDEIntf/units/x86_64-linux/gtk2" Info: (lazarus) Param[15]="-Fu/home/cer/.lazarus/lib/LazControls/lib/x86_64-linux/gtk2" Info: (lazarus) Param[16]="-Fu/home/cer/.lazarus/lib/units/x86_64-linux/gtk2" Info: (lazarus) Param[17]="-Fu/home/cer/.lazarus/lib/LCLBase/units/x86_64-linux" Info: (lazarus) Param[18]="-Fu/home/cer/.lazarus/lib/LazUtils/lib/x86_64-linux" Info: (lazarus) Param[19]="-Fu/usr/lib64/lazarus/packager/units/x86_64-linux" Info: (lazarus) Param[20]="-Fu/home_aux/cer/bin/lazarus/mios/contarcorreo/" Info: (lazarus) Param[21]="-o/home_aux/cer/bin/lazarus/mios/contarcorreo/contarcorreo" Info: (lazarus) Param[22]="-dLCL" Info: (lazarus) Param[23]="-dLCLgtk2" Info: (lazarus) Param[24]="contarcorreo.lpr" Hint: (11030) Start of reading config file /etc/fpc.cfg Hint: (11031) End of reading config file /etc/fpc.cfg Note: (11046) DWARF debug information cannot be used with smart linking on this target, switching to static linking Free Pascal Compiler version 3.2.0 [2020/08/18] for x86_64 Copyright (c) 1993-2020 by Florian Klaempfl and others (1002) Target OS: Linux for x86-64 (3104) Compiling contarcorreo.lpr /home_aux/cer/bin/lazarus/mios/contarcorreo/contarcorreo.lpr(11,44) Hint: (5023) Unit "U_Caja" not used in contarcorreo (9022) Compiling resource /home_aux/cer/bin/lazarus/mios/contarcorreo/contarcorreo.or (9015) Linking /home_aux/cer/bin/lazarus/mios/contarcorreo/contarcorreo (1008) 20 lines compiled, 1.5 sec (1022) 3 hint(s) issued (1023) 1 note(s) issued cer@Telcontar:~/bin/lazarus/mios/contarcorreo> But it doesn't run: cer@Telcontar:~/bin/lazarus/mios/contarcorreo> ./contarcorreo ./contarcorreo: Symbol `__libc_start_main' causes overflow in R_X86_64_PC32 relocation Segmentation fault (core dumped) cer@Telcontar:~/bin/lazarus/mios/contarcorreo> I have never used that parameter, so I can't say. I did not design my program to use it. Still, I do not see the relationship to "bad.pas" not building - if that is the error you get, because you did not post it. -- Cheers / Saludos, Carlos E. R. (from 15.1 x86_64 at Telcontar)
On Monday 2020-09-21 14:33, Carlos E. R. wrote:
On 21/09/2020 13.53, Jan Engelhardt wrote:
On Monday 2020-09-21 13:47, Carlos E. R. wrote:
Which is obviously incorrect, or it would build. Don't ask me what is the error, I use "Build" from inside Lazarus, or:
There is no -k-pie in your command line.
Well, my program doesn't need/use it.
Luigi wants to build peazip in PIE mode, and has a patch in that package to make it so. But PIE only works if _all_ dependencies are PIC/PIE too. fpc is PIE-enabled. lazarus isn't. That breaks the chain towards peazip which aspires PIE. Having PIE is a SUSE policy, similar to LTO. That was since 2017-05-27. -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
On 21/09/2020 15.23, Jan Engelhardt wrote:
On Monday 2020-09-21 14:33, Carlos E. R. wrote:
On 21/09/2020 13.53, Jan Engelhardt wrote:
On Monday 2020-09-21 13:47, Carlos E. R. wrote:
Which is obviously incorrect, or it would build. Don't ask me what is the error, I use "Build" from inside Lazarus, or:
There is no -k-pie in your command line.
Well, my program doesn't need/use it.
Luigi wants to build peazip in PIE mode, and has a patch in that package to make it so. But PIE only works if _all_ dependencies are PIC/PIE too. fpc is PIE-enabled. lazarus isn't. That breaks the chain towards peazip which aspires PIE.
Having PIE is a SUSE policy, similar to LTO. That was since 2017-05-27.
Ok, I understand the issue. But you can not force upstream to change to use PIE. My guess is that you would have to rebuild the entire RTL stack. I tried/did once, long ago, then refrained, not worth the effort. Basically, instead of giving the location of the units to link, you give the location of their sources, so that they are built new, local to the current project, using the project options. -- Cheers / Saludos, Carlos E. R. (from 15.1 x86_64 at Telcontar)
On Monday 2020-09-21 19:30, Carlos E. R. wrote:
Luigi wants to build peazip in PIE mode, and has a patch in that package to make it so. But PIE only works if _all_ dependencies are PIC/PIE too. fpc is PIE-enabled. lazarus [seemingly] isn't.
Ok, I understand the issue. But you can not force upstream to change to use PIE.
My guess is that you would have to rebuild the entire RTL stack. I tried/did once, long ago, then refrained, not worth the effort.
The RTL (of any language) is supposed to be PIC already, otherwise we would have had problems with shared libraries a long time ago. Anyway, turns out, the problem was identified already and a submission was made to OBS (only this late event sent a notification my way). https://bugzilla.opensuse.org/show_bug.cgi?id=1176706 All is good. Thanks everyone. Until the next package, next time :-} -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org
On 21/09/2020 21.27, Jan Engelhardt wrote:
On Monday 2020-09-21 19:30, Carlos E. R. wrote:
Luigi wants to build peazip in PIE mode, and has a patch in that package to make it so. But PIE only works if _all_ dependencies are PIC/PIE too. fpc is PIE-enabled. lazarus [seemingly] isn't.
Ok, I understand the issue. But you can not force upstream to change to use PIE.
My guess is that you would have to rebuild the entire RTL stack. I tried/did once, long ago, then refrained, not worth the effort.
The RTL (of any language) is supposed to be PIC already, otherwise we would have had problems with shared libraries a long time ago.
RTL is the wrong name, sorry, but I forget the right one. The RTL comes with the compiler and you say they are compliant already. There is a bunch of units that comes with Lazarus... ah, the LCL (Lazarus component library) which maybe is not compliant.
Anyway, turns out, the problem was identified already and a submission was made to OBS (only this late event sent a notification my way). https://bugzilla.opensuse.org/show_bug.cgi?id=1176706
All is good. Thanks everyone. Until the next package, next time :-}
Thank you. I'm sorry I can not contribute, I know nothing about the OBS, and I tried. Besides, my expertise is with the old Borland Pascal up to version 7, not with Lazarus / Free Pascal. -- Cheers / Saludos, Carlos E. R. (from 15.1 x86_64 at Telcontar)
participants (3)
-
Carlos E. R.
-
Jan Engelhardt
-
Luigi Baldoni