Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ipxe build problem #2

Open
ato2 opened this issue Aug 18, 2022 · 4 comments
Open

ipxe build problem #2

ato2 opened this issue Aug 18, 2022 · 4 comments
Assignees

Comments

@ato2
Copy link

ato2 commented Aug 18, 2022

Can't build ipxe (on ArchLinux current) - any clue ?
docker-compose up
.................
⠿ Container pipxe-build-1 Created 0.3s
Attaching to pipxe-build-1
pipxe-build-1 | which git && git submodule update --init --recursive || true
pipxe-build-1 | /usr/bin/git
pipxe-build-1 | make -C edk2/BaseTools
pipxe-build-1 | mkdir -p $(dirname ipxe/src/config/local/rpi/console.h) || true
pipxe-build-1 | mkdir -p $(dirname ipxe/src/config/local/rpi/general.h) || true
pipxe-build-1 | make[1]: Entering directory '/opt/build/edk2/BaseTools'
pipxe-build-1 | make -C Source/C
pipxe-build-1 | make -C Source/Python
pipxe-build-1 | make[2]: Entering directory '/opt/build/edk2/BaseTools/Source/C'
pipxe-build-1 | echo "#undef LOG_LEVEL" > ipxe/src/config/local/rpi/console.h
pipxe-build-1 | Attempting to detect HOST_ARCH from 'uname -m': x86_64
pipxe-build-1 | echo "#define DOWNLOAD_PROTO_HTTPS" > ipxe/src/config/local/rpi/general.h
pipxe-build-1 | make[2]: Entering directory '/opt/build/edk2/BaseTools/Source/Python'
pipxe-build-1 | make[2]: Nothing to be done for 'all'.
pipxe-build-1 | make[2]: Leaving directory '/opt/build/edk2/BaseTools/Source/Python'
pipxe-build-1 | echo "#define LOG_LEVEL LOG_ALL" >> ipxe/src/config/local/rpi/console.h
pipxe-build-1 | echo "#define NTP_CMD" >> ipxe/src/config/local/rpi/general.h
pipxe-build-1 | echo "#define CONSOLE_SYSLOG CONSOLE_USAGE_ALL" >> ipxe/src/config/local/rpi/console.h
pipxe-build-1 | Detected HOST_ARCH of X64 using uname.
pipxe-build-1 | make -C ipxe/src CROSS=aarch64-linux-gnu- CONFIG=rpi bin-arm64-efi/snp.efi
pipxe-build-1 | make[1]: Entering directory '/opt/build/ipxe/src'
pipxe-build-1 | mkdir -p .
pipxe-build-1 | make -C Common
pipxe-build-1 | make[3]: Entering directory '/opt/build/edk2/BaseTools/Source/C/Common'
pipxe-build-1 | make[3]: Leaving directory '/opt/build/edk2/BaseTools/Source/C/Common'
pipxe-build-1 | make[3]: *** No rule to make target '/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/stdint.h', needed by 'BasePeCoff.o.
pipxe-build-1 | make[2]: *** [GNUmakefile:76: Common] Error 2
pipxe-build-1 | make[2]: Leaving directory '/opt/build/edk2/BaseTools/Source/C'
pipxe-build-1 | make[1]: *** [GNUmakefile:19: Source/C] Error 2
pipxe-build-1 | make[1]: Leaving directory '/opt/build/edk2/BaseTools'
pipxe-build-1 | make: *** [Makefile:38: efi-basetools] Error 2
pipxe-build-1 | make: *** Waiting for unfinished jobs....
pipxe-build-1 | [BUILD] bin-arm64-efi/acpi.o
pipxe-build-1 | [BUILD] bin-arm64-efi/acpi_settings.o
pipxe-build-1 | [BUILD] bin-arm64-efi/acpimac.o
pipxe-build-1 | [BUILD] bin-arm64-efi/ansicol.o
pipxe-build-1 | [BUILD] bin-arm64-efi/ansicoldef.o
pipxe-build-1 | [BUILD] bin-arm64-efi/ansiesc.o
pipxe-build-1 | [BUILD] bin-arm64-efi/archive.o
pipxe-build-1 | [BUILD] bin-arm64-efi/asprintf.o
pipxe-build-1 | [BUILD] bin-arm64-efi/assert.o
pipxe-build-1 | In file included from core/ansicol.c:31:
pipxe-build-1 | ./config/colour.h:35:10: fatal error: config/local/colour.h: No such file or directory
pipxe-build-1 | 35 | #include <config/local/colour.h>
pipxe-build-1 | | ^~~~~~~~~~~~~~~~~~~~~~~
pipxe-build-1 | compilation terminated.

same without docker:

Ran 301 tests in 0.987s

OK
make[3]: Leaving directory '/tmp/pipxe-http/pipxe/edk2/BaseTools/Tests'
make[2]: Leaving directory '/tmp/pipxe-http/pipxe/edk2/BaseTools'
mkdir -p $(dirname ipxe/src/config/local/rpi/console.h) || true
echo "#undef LOG_LEVEL" > ipxe/src/config/local/rpi/console.h
echo "#define LOG_LEVEL LOG_ALL" >> ipxe/src/config/local/rpi/console.h
echo "#define CONSOLE_SYSLOG CONSOLE_USAGE_ALL" >> ipxe/src/config/local/rpi/console.h
mkdir -p $(dirname ipxe/src/config/local/rpi/general.h) || true
echo "#define DOWNLOAD_PROTO_HTTPS" > ipxe/src/config/local/rpi/general.h
echo "#define NTP_CMD" >> ipxe/src/config/local/rpi/general.h
make -C ipxe/src CROSS=aarch64-linux-gnu- CONFIG=rpi bin-arm64-efi/ipxe.efidrv
make[2]: Entering directory '/tmp/pipxe-http/pipxe/ipxe/src'
[BUILD] bin-arm64-efi/acpi.o
In file included from include/ipxe/uaccess.h:27,
from core/acpi.c:28:
./config/ioapi.h:19:10: fatal error: config/local/ioapi.h: No such file or directory
19 | #include <config/local/ioapi.h>
| ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [Makefile.housekeeping:952: bin-arm64-efi/acpi.o] Error 1
make[2]: Leaving directory '/tmp/pipxe-http/pipxe/ipxe/src'
make[1]: *** [Makefile:64: ipxe/src/bin-arm64-efi/ipxe.efidrv] Error 2
make[1]: Leaving directory '/tmp/pipxe-http/pipxe'
make: *** [Makefile:22: dist/boot-ubuntu-jammy.img] Error 2

@valtzu valtzu self-assigned this Sep 17, 2022
@valtzu
Copy link
Owner

valtzu commented Sep 17, 2022

Hi, first of all, sorry for late reaction, I was not watching the repo (=not getting notified of this).

What comes to the issue – sounds weird and I have to say the usual: works fine for me 🤔

I just tried in Hetzner cloud with a fresh Ubuntu 22.04 instance and it worked fine. Since you are using Arch Linux but still it fails with Docker, the only difference between your setup and mine should be the kernel, which for me is 5.15.0-46-generic.


Another way I know things may go wrong with this Docker setup is fs permissions. The repo expects your host dir is owned by 1000:1000. If it's not, you should either chown -R 1000:1000 . or run it like HOST_UID=1001 HOST_GID=1001 docker-compose up.

@valtzu
Copy link
Owner

valtzu commented Sep 17, 2022

Looks like in your environment it's using GCC 12 when for me it's using GCC 11. No idea why is that.

I mean I don't have /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1 either, I only have /usr/lib/gcc/x86_64-linux-gnu/11 inside the container.

Could you try confirming this by running docker-compose run --rm build gcc --version?
I'm getting gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0

@barneyman
Copy link

barneyman commented Jul 19, 2023

a breadcrumb for anyone else who ends up here - it builds 'out of the box' in a clean environment

if, like me, you started forging ahead without installing all the tools, or not going straight to the compose for build, you 'pollute' your source and strange things happen, like the failed compile here

Make a clean code space, docker compose up and wait ...

@valtzu
Copy link
Owner

valtzu commented Jul 20, 2023

@barneyman good point – the build path could be moved into a docker volume / into the container to prevent mixing build artifacts on host vs. on docker.

I think I put it originally on host just to have persistent cache, but docker volume would do basically the same.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants