EFI bootloader often trys to build itself at installworld stage

NGie Cooper yaneurabeya at gmail.com
Sat Oct 24 21:39:23 UTC 2015


> On Oct 24, 2015, at 14:35, NGie Cooper <yaneurabeya at gmail.com> wrote:
> 
> 
>> On Oct 24, 2015, at 14:28, Lev Serebryakov <lev at FreeBSD.org> wrote:
>> 
>> Hello freebsd-current,
>> 
>> Each other time "make installworld" from object directory created several hours ago
>> try to build efiloader again (and fails in my case as this world doesn't
>> contain compiler):
>> 
>> ===> sys/boot/efi/loader (install)
>> cc -O2 -pipe   -fPIC -I/data/src/sys/boot/efi/loader -I/data/src/sys/boot/efi/loader/arch/amd64 -I/data/src/sys/boot/efi/loader/../include -I/data/src/sys/boot/efi/loader/../include/amd64 -I/data/src/sys/boot/efi/loader/../../../contrib/dev/acpica/include -I/data/src/sys/boot/efi/loader/../../.. -I/data/src/sys/boot/efi/loader/../../i386/libi386 -DNO_PCI -DEFI -DBOOT_FORTH -I/data/src/sys/boot/efi/loader/../../ficl -I/data/src/sys/boot/efi/loader/../../ficl/amd64 -DLOADER_DISK_SUPPORT -DLOADER_GPT_SUPPORT -DLOADER_MBR_SUPPORT -I/data/src/sys/boot/efi/loader/../../common -ffreestanding -Wformat -msoft-float -mno-mmx -mno-sse -mno-avx -fshort-wchar -mno-red-zone -mno-aes -std=gnu99   -Qunused-arguments -c /data/src/sys/boot/efi/loader/autoload.c -o autoload.o
>> /tmp/install.Ku58dvCm/sh: cc: not found
>> 
>> Only LOCAL fileystems are in use, and computer has ntpd-synchronized clock.
>> 
>> "installworld" right after "buildworld" works Ok, but if I need to
>> re-create same nanobsd image without changing world (and sources), its often
>> fails to perform "installworld" for second time at this exact point: efi/loader.
> 
> Hi lev,
> 	Be sure to run buildworld with -DNO_CLEAN after updating your sources when using make installworld. Unfortunately many of the Makefiles under sys/boot are sensitive to updates, i.e. you’ll have to rebuild them (otherwise it will try to rebuild them at install and fail as noted above).
> 	That being said, what you described seems interesting. Not sure why it would be failing. Could you please dump all the debug output from make?
> Thanks!
> -NGie

Uh… yeah. I see some non-atomic logic in sys/boot/common/newvers.sh (it’s writing out to vers.c multiple times in the file) instead of once to the file, or multiple times to a temp file then moving to the final file. There are probably other issues.
sys/boot is a mess. I had a patch to better integrate it into the build process, but I wasn’t a committer at the time, so I couldn’t commit my patch (it’s been lost since then).


More information about the freebsd-current mailing list