Hi, The internal Gnu-EFI build gives me grief: * efi/check-gnu-efi.sh: uses realpath, which is not available on my Debian wheezy system. I now use readlink -f, but wonder if it's needed at all. * efi/build-gnu-efi.sh: uses realpath, like above, and also pushd/popd, which is not built into a standard Bourne shell invoked by #!/bin/sh. Again I wonder what's the point of it, as the script exits right after the popd, and it is not sourced but executed, so the current working directory is discarded anyway. * make spotless still fails after working around the above: [...] make -r -C efi SRC="/home/wferi/syslinux/syslinux/efi" OBJ="/home/wferi/syslinux/syslinux/efi32/efi" \ -f /home/wferi/syslinux/syslinux/efi/Makefile spotless In file included from /usr/include/elf.h:24:0, from reloc_ia32.c:39: /usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory compilation terminated. make[4]: *** [reloc_ia32.o] Error 1 make[3]: *** [gnuefi] Error 2 make[3]: Entering directory `/home/wferi/syslinux/syslinux/efi32/efi' /home/wferi/syslinux/syslinux/mk/efi.mk:27: *** Failed to build gnu-efi for ia32. Stop. make[3]: Leaving directory `/home/wferi/syslinux/syslinux/efi32/efi' make[2]: *** [efi] Error 2 [...] * maybe unrelated, but make bios also fails in this state: [...] objdump -h isolinux.elf > isolinux.sec perl /home/wferi/syslinux/syslinux/core/lstadjust.pl isolinux.lsr isolinux.sec isolinux.lst objcopy -O binary -S isolinux.elf isolinux.raw /home/wferi/syslinux/syslinux/bios/core/../lzo/prepcore isolinux.raw isolinux.bin nasm -f elf -Ox -g -F dwarf -DDATE_STR="'6.03-pre1-29-gecc43ff*'" \ -DHEXDATE="0x52b052e6" \ -Di386 \ -I/home/wferi/syslinux/syslinux/core/ \ -l isolinux-debug.lsr -o isolinux-debug.o -MP -MD ./.isolinux-debug.o.d /home/wferi/syslinux/syslinux/core/isolinux-debug.asm isolinux.asm:1102: error: TIMES value -4 is negative make[3]: *** [isolinux-debug.o] Error 1 rm isolinux.raw isolinux.o ldlinux.o ldlinux.raw make[3]: Leaving directory `/home/wferi/syslinux/syslinux/bios/core' make[2]: *** [core] Error 2 [...] Do these ring any bells? At commit 67aaaeeb I could build everything with 3.0u installed independently. -- Thanks, Feri.
2013/12/17, Ferenc Wagner <wferi at niif.hu>:> Hi, > > The internal Gnu-EFI build gives me grief: > > * efi/check-gnu-efi.sh: uses realpath, which is not available on my > Debian wheezy system. I now use readlink -f, but wonder if it's > needed at all. > > * efi/build-gnu-efi.sh: uses realpath, like above, and also pushd/popd, > which is not built into a standard Bourne shell invoked by #!/bin/sh. > Again I wonder what's the point of it, as the script exits right after > the popd, and it is not sourced but executed, so the current working > directory is discarded anyway. > > * make spotless still fails after working around the above: > [...] > make -r -C efi SRC="/home/wferi/syslinux/syslinux/efi" > OBJ="/home/wferi/syslinux/syslinux/efi32/efi" \ > -f /home/wferi/syslinux/syslinux/efi/Makefile spotless > In file included from /usr/include/elf.h:24:0, > from reloc_ia32.c:39: > /usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file > or directory > compilation terminated. > make[4]: *** [reloc_ia32.o] Error 1 > make[3]: *** [gnuefi] Error 2 > make[3]: Entering directory `/home/wferi/syslinux/syslinux/efi32/efi' > /home/wferi/syslinux/syslinux/mk/efi.mk:27: *** Failed to build gnu-efi > for ia32. Stop. > make[3]: Leaving directory `/home/wferi/syslinux/syslinux/efi32/efi' > make[2]: *** [efi] Error 2 > [...] > > * maybe unrelated, but make bios also fails in this state: > [...] > objdump -h isolinux.elf > isolinux.sec > perl /home/wferi/syslinux/syslinux/core/lstadjust.pl isolinux.lsr > isolinux.sec isolinux.lst > objcopy -O binary -S isolinux.elf isolinux.raw > /home/wferi/syslinux/syslinux/bios/core/../lzo/prepcore isolinux.raw > isolinux.bin > nasm -f elf -Ox -g -F dwarf -DDATE_STR="'6.03-pre1-29-gecc43ff*'" \ > -DHEXDATE="0x52b052e6" \ > -Di386 \ > -I/home/wferi/syslinux/syslinux/core/ \ > -l isolinux-debug.lsr -o isolinux-debug.o -MP -MD ./.isolinux-debug.o.d > /home/wferi/syslinux/syslinux/core/isolinux-debug.asm > isolinux.asm:1102: error: TIMES value -4 is negative > make[3]: *** [isolinux-debug.o] Error 1 > rm isolinux.raw isolinux.o ldlinux.o ldlinux.raw > make[3]: Leaving directory `/home/wferi/syslinux/syslinux/bios/core' > make[2]: *** [core] Error 2 > [...] > > Do these ring any bells? At commit 67aaaeeb I could build everything > with 3.0u installed independently. > -- > Thanks, > Feri.Hello, I confirm the command realpath wasn't installed by default on my debian either. And it seems it can be easily replaced by readlink -f. And actually I find its use doubtful. However, as you may have seen, these scripts are quite new and may have bugs. Using pushd/popd in a /bin/sh script is a bug. IIRC, by default, on debian, /bin/sh points to dash, and not bash. About the make spotless, I don't know much about the Makefiles, thus I can't help, sorry. I hope Matt will see this mail. :) Celelibi
Ferenc Wagner <wferi at niif.hu> writes:> The internal Gnu-EFI build gives me grief: [...]Previous points still standing, but now I tried cleaning out everything by hand. I don't know whether it matters, but building gnu-efi pollutes its source directory (unlike syslinux itself) with the following files at least (found by git status in the gnu-efi submodule): gnu-efi-3.0/gnuefi/crt0-efi-ia32.o gnu-efi-3.0/lib/libefi.a After removing these and the bios, efi32 and efi64 subdirectories, the build failed ending with the following messages: [...] gcc -Wp,-MT,isohdppx_f.o,-MD,./.isohdppx_f.o.d -m32 -march=i386 -mpreferred-stack-boundary=2 -mincoming-stack-boundary=2 -ffreestanding -fno-stack-protector -fwrapv -freg-struct-return -Os -fomit-frame-pointer -msoft-float -fno-exceptions -fno-asynchronous-unwind-tables -fno-strict-aliasing -falign-functions=0 -falign-jumps=0 -falign-labels=0 -falign-loops=0 -fvisibility=hidden -g -W -Wall -Wstrict-prototypes -Wno-clobbered -DDYNAMIC_DEBUG -Wno-sign-compare -D__ASSEMBLY__ -Wa,-a=isohdppx_f.lst -DFORCE_80 -c -o isohdppx_f.o /home/wferi/syslinux/syslinux/mbr/isohdppx.S ld -m elf_i386 -T /home/wferi/syslinux/syslinux/mbr/i386/mbr.ld -e _start -o isohdppx_f.elf isohdppx_f.o objcopy -O binary isohdppx_f.elf isohdppx_f.bin perl /home/wferi/syslinux/syslinux/mbr/checksize.pl isohdppx_f.bin chmod -x isohdppx_f.bin rm mbr_f.o isohdppx_c.o altmbr_c.o isohdppx_f.o gptmbr_c.o isohdppx.o altmbr_f.o altmbr.o isohdpfx_c.o mbr_c.o gptmbr_f.o gptmbr.o isohdpfx_f.o isohdpfx.o mbr.o make[3]: Leaving directory `/home/wferi/syslinux/syslinux/efi32/mbr' make -r -C sample SRC="/home/wferi/syslinux/syslinux/sample" OBJ="/home/wferi/syslinux/syslinux/efi32/sample" \ -f /home/wferi/syslinux/syslinux/sample/Makefile all make[3]: Entering directory `/home/wferi/syslinux/syslinux/efi32/sample' gzip -cd /home/wferi/syslinux/syslinux/sample/syslogo.ppm.gz | \ /home/wferi/syslinux/syslinux/utils/ppmtolss16 \#000000=0 \#d0d0d0=7 \#f6f6f6=15 \ > syslogo.lss 204480 pixels, 25715 bytes, (74.85% compression) make[3]: Leaving directory `/home/wferi/syslinux/syslinux/efi32/sample' make -r -C efi SRC="/home/wferi/syslinux/syslinux/efi" OBJ="/home/wferi/syslinux/syslinux/efi32/efi" \ -f /home/wferi/syslinux/syslinux/efi/Makefile all /usr/bin/ar: creating libefi.a dpath.c: In function ?_DevPathIPv4?: dpath.c:678:27: warning: variable ?IP? set but not used [-Wunused-but-set-variable] dpath.c: In function ?_DevPathIPv6?: dpath.c:690:27: warning: variable ?IP? set but not used [-Wunused-but-set-variable] dpath.c: In function ?_DevPathInfiniBand?: dpath.c:702:30: warning: variable ?InfiniBand? set but not used [-Wunused-but-set-variable] event.c: In function ?LibCreateProtocolNotifyEvent?: event.c:30:29: warning: variable ?Status? set but not used [-Wunused-but-set-variable] hand.c: In function ?LibLocateHandleByDiskSignature?: hand.c:120:28: warning: variable ?Start? set but not used [-Wunused-but-set-variable] hw.c: In function ?ReadPort?: hw.c:79:17: warning: variable ?Status? set but not used [-Wunused-but-set-variable] hw.c: In function ?WritePort?: hw.c:94:17: warning: variable ?Status? set but not used [-Wunused-but-set-variable] hw.c: In function ?ReadPciConfig?: hw.c:109:17: warning: variable ?Status? set but not used [-Wunused-but-set-variable] hw.c: In function ?WritePciConfig?: hw.c:124:17: warning: variable ?Status? set but not used [-Wunused-but-set-variable] In file included from /usr/include/elf.h:24:0, from reloc_ia32.c:39: /usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory compilation terminated. make[4]: *** [reloc_ia32.o] Error 1 make[3]: *** [gnuefi] Error 2 make[3]: Entering directory `/home/wferi/syslinux/syslinux/efi32/efi' /home/wferi/syslinux/syslinux/mk/efi.mk:27: *** Failed to build gnu-efi for ia32. Stop. make[3]: Leaving directory `/home/wferi/syslinux/syslinux/efi32/efi' make[2]: *** [efi] Error 2 make[2]: Leaving directory `/home/wferi/syslinux/syslinux/efi32' make[1]: *** [efi32] Error 2 make[1]: Leaving directory `/home/wferi/syslinux/syslinux' make: *** [all] Error 2 Issuing another make after this gave the previous error again: isolinux.asm:1102: error: TIMES value -4 is negative -- Regards, Feri.
On 01/02/2014 04:09 AM, Ferenc Wagner wrote:> > Issuing another make after this gave the previous error again: > > isolinux.asm:1102: error: TIMES value -4 is negative >I just fixed this one... it seems to be a consequence of merging in the MOVZX isolinux fix into the firmware branch. -hpa
On Tue, Dec 17, 2013 at 8:39 AM, Ferenc Wagner <wferi at niif.hu> wrote:> * make spotless still fails after working around the above: > [...] > make -r -C efi SRC="/home/wferi/syslinux/syslinux/efi" OBJ="/home/wferi/syslinux/syslinux/efi32/efi" \ > -f /home/wferi/syslinux/syslinux/efi/Makefile spotless > In file included from /usr/include/elf.h:24:0, > from reloc_ia32.c:39: > /usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory > compilation terminated. > make[4]: *** [reloc_ia32.o] Error 1 > make[3]: *** [gnuefi] Error 2 > make[3]: Entering directory `/home/wferi/syslinux/syslinux/efi32/efi' > /home/wferi/syslinux/syslinux/mk/efi.mk:27: *** Failed to build gnu-efi for ia32. Stop. > make[3]: Leaving directory `/home/wferi/syslinux/syslinux/efi32/efi' > make[2]: *** [efi] Error 2 > [...]This is a build-system bug in mk/efi.mk. I'm looking at adding a condition to prevent this. -- -Gene
On Thu, 19 Dec, at 02:39:23AM, Celelibi wrote:> > Hello, > I confirm the command realpath wasn't installed by default on my > debian either. And it seems it can be easily replaced by readlink -f. > And actually I find its use doubtful. > > However, as you may have seen, these scripts are quite new and may > have bugs. Using pushd/popd in a /bin/sh script is a bug. IIRC, by > default, on debian, /bin/sh points to dash, and not bash.D'oh, yes. That's a bug. The intent was to allow building the gnu-efi code without the Syslinux source being the current working directory - hence the realpath stuff. Furthermore, the gnu-efi Makefiles prepend a '/' to the install paths, so you have to pass absolute paths. Can you try building the head of the firmware branch? -- Matt Fleming, Intel Open Source Technology Center
On Sat, Jan 4, 2014 at 6:39 AM, Gene Cumm <gene.cumm at gmail.com> wrote:> On Tue, Dec 17, 2013 at 8:39 AM, Ferenc Wagner <wferi at niif.hu> wrote: > >> * make spotless still fails after working around the above: >> [...] >> make -r -C efi SRC="/home/wferi/syslinux/syslinux/efi" OBJ="/home/wferi/syslinux/syslinux/efi32/efi" \ >> -f /home/wferi/syslinux/syslinux/efi/Makefile spotless >> In file included from /usr/include/elf.h:24:0, >> from reloc_ia32.c:39: >> /usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory >> compilation terminated. >> make[4]: *** [reloc_ia32.o] Error 1 >> make[3]: *** [gnuefi] Error 2 >> make[3]: Entering directory `/home/wferi/syslinux/syslinux/efi32/efi' >> /home/wferi/syslinux/syslinux/mk/efi.mk:27: *** Failed to build gnu-efi for ia32. Stop. >> make[3]: Leaving directory `/home/wferi/syslinux/syslinux/efi32/efi' >> make[2]: *** [efi] Error 2 >> [...] > > This is a build-system bug in mk/efi.mk. I'm looking at adding a > condition to prevent this.Would you perhaps be building on an x86_64 OS (as shown by 'gcc -dumpmachine') but not have gcc-multilib installed? -- -Gene