[BUG] sandbox: NO_SDL=1 gcc: error: arch/sandbox/cpu/sdl.o: No such file or directory

Hello Simon,
compiling with SDL fails on Alpine Linux: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13411
So I tried NO_SDL:
make sandbox_defconfig NO_SDL=1 make menuconfig # CONFIG_ETH_SANDBOX_RAW=n make -j4 NO_SDL=1
But I got an error gcc: error: arch/sandbox/cpu/sdl.o: No such file or directory
Can't we make CONFIG_SANDBOX_SDL a Kconfig symbol to get rid of the command line symbol?
We already have CONFIG_SANDBOX_VIDEO_SDL. Do we need two symbols?
Best regards
Heinrich

Hi Heinrich,
On Mon, 10 Jan 2022 at 16:22, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Hello Simon,
compiling with SDL fails on Alpine Linux: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13411
So I tried NO_SDL:
make sandbox_defconfig NO_SDL=1 make menuconfig # CONFIG_ETH_SANDBOX_RAW=n make -j4 NO_SDL=1
But I got an error gcc: error: arch/sandbox/cpu/sdl.o: No such file or directory
Do you need mrproper first? I don't hit that problem.
I see that I broke it...it needs a static inline for sandbox_sdl_remove_display().
Can't we make CONFIG_SANDBOX_SDL a Kconfig symbol to get rid of the command line symbol?
We already have CONFIG_SANDBOX_VIDEO_SDL. Do we need two symbols?
You mean, manually change the defconfig file? I suppose we could do that, but it is harder for people to do.
In any case, we should add this case to CI.
Regards, Simon

On 1/13/22 14:41, Simon Glass wrote:
Hi Heinrich,
On Mon, 10 Jan 2022 at 16:22, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Hello Simon,
compiling with SDL fails on Alpine Linux: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13411
So I tried NO_SDL:
make sandbox_defconfig NO_SDL=1 make menuconfig # CONFIG_ETH_SANDBOX_RAW=n make -j4 NO_SDL=1
But I got an error gcc: error: arch/sandbox/cpu/sdl.o: No such file or directory
Do you need mrproper first? I don't hit that problem.
I see that I broke it...it needs a static inline for sandbox_sdl_remove_display().
I intend to set up a Dockerfile for Alpine Linux because also some other problems arose due to musl used instead of glibc.
Can't we make CONFIG_SANDBOX_SDL a Kconfig symbol to get rid of the command line symbol?
We already have CONFIG_SANDBOX_VIDEO_SDL. Do we need two symbols?
You mean, manually change the defconfig file? I suppose we could do that, but it is harder for people to do.
You never suggested to replace .config by hundreds of environment variables ;)
No, menuconfig is the better tool. People are used to it. You don't expect them to know of environment variables hidden somewhere in the documentation. Saving a new defconfig is easy. Environment variables should only be used for variable file paths like the location of OpenSBI or TF-A.
I anyway had to use menuconfig to disable raw ethernet because it is not POSIX compatible.
Best regards
Heinrich
In any case, we should add this case to CI.
Regards, Simon

Hi Heinrich,
On Thu, 13 Jan 2022 at 11:07, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 1/13/22 14:41, Simon Glass wrote:
Hi Heinrich,
On Mon, 10 Jan 2022 at 16:22, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Hello Simon,
compiling with SDL fails on Alpine Linux: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13411
So I tried NO_SDL:
make sandbox_defconfig NO_SDL=1 make menuconfig # CONFIG_ETH_SANDBOX_RAW=n make -j4 NO_SDL=1
But I got an error gcc: error: arch/sandbox/cpu/sdl.o: No such file or directory
Do you need mrproper first? I don't hit that problem.
I see that I broke it...it needs a static inline for sandbox_sdl_remove_display().
I intend to set up a Dockerfile for Alpine Linux because also some other problems arose due to musl used instead of glibc.
Can't we make CONFIG_SANDBOX_SDL a Kconfig symbol to get rid of the command line symbol?
We already have CONFIG_SANDBOX_VIDEO_SDL. Do we need two symbols?
You mean, manually change the defconfig file? I suppose we could do that, but it is harder for people to do.
You never suggested to replace .config by hundreds of environment variables ;)
Strawman alert! There is one variable. I'm going to ignore the rest of your email.
- Simon
No, menuconfig is the better tool. People are used to it. You don't expect them to know of environment variables hidden somewhere in the documentation. Saving a new defconfig is easy. Environment variables should only be used for variable file paths like the location of OpenSBI or TF-A.
I anyway had to use menuconfig to disable raw ethernet because it is not POSIX compatible.
Best regards
Heinrich
In any case, we should add this case to CI.
Regards, Simon

On 1/13/22 14:41, Simon Glass wrote:
Hi Heinrich,
On Mon, 10 Jan 2022 at 16:22, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Hello Simon,
compiling with SDL fails on Alpine Linux: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13411
So I tried NO_SDL:
make sandbox_defconfig NO_SDL=1 make menuconfig # CONFIG_ETH_SANDBOX_RAW=n make -j4 NO_SDL=1
But I got an error gcc: error: arch/sandbox/cpu/sdl.o: No such file or directory
Do you need mrproper first? I don't hit that problem.
Please, build the appended Dockerfile ("sudo docker build -t .").
It gives me:
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp8': /home/uboot/u-boot/test/dm/video.c:357: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp16': /home/uboot/u-boot/test/dm/video.c:378: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp24': /home/uboot/u-boot/test/dm/video.c:401: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp24_32': /home/uboot/u-boot/test/dm/video.c:424: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp32': /home/uboot/u-boot/test/dm/video.c:445: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o:/home/uboot/u-boot/test/dm/video.c:479: more undefined references to `sandbox_sdl_set_bpp' follow collect2: error: ld returned 1 exit status make: *** [Makefile:1799: u-boot] Error 1
Best regards
Heinrich
I see that I broke it...it needs a static inline for sandbox_sdl_remove_display().
Can't we make CONFIG_SANDBOX_SDL a Kconfig symbol to get rid of the command line symbol?
We already have CONFIG_SANDBOX_VIDEO_SDL. Do we need two symbols?
You mean, manually change the defconfig file? I suppose we could do that, but it is harder for people to do.
In any case, we should add this case to CI.
Regards, Simon

On Sat, 2022-01-15 at 19:47, Heinrich Schuchardt wrote:
On 1/13/22 14:41, Simon Glass wrote:
Hi Heinrich,
On Mon, 10 Jan 2022 at 16:22, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
Hello Simon,
compiling with SDL fails on Alpine Linux: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13411
So I tried NO_SDL:
make sandbox_defconfig NO_SDL=1 make menuconfig # CONFIG_ETH_SANDBOX_RAW=n make -j4 NO_SDL=1
But I got an error gcc: error: arch/sandbox/cpu/sdl.o: No such file or directory
Do you need mrproper first? I don't hit that problem.
Please, build the appended Dockerfile ("sudo docker build -t .").
I run it on aarch64 (I don't have x86_64 machine for this) and I didn't got error.
here is the output of 'docker build .': --------------------------------------- Step 12/16 : RUN git clone https://source.denx.de/u-boot/u-boot.git ---> Running in 4f89022fad97 Cloning into 'u-boot'... Removing intermediate container 4f89022fad97 ---> 8f4a64791065 Step 13/16 : WORKDIR /home/uboot/u-boot ---> Running in c88471d92078 Removing intermediate container c88471d92078 ---> 361d0979bd27 Step 14/16 : RUN make sandbox_defconfig NO_SDL=1 ---> Running in aad201f298b6 HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o YACC scripts/kconfig/zconf.tab.c LEX scripts/kconfig/zconf.lex.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf # # configuration written to .config # Removing intermediate container aad201f298b6 ---> bf5a898ae7f6 Step 15/16 : RUN sed -i 's/CONFIG_ETH_SANDBOX_RAW=y/# CONFIG_ETH_SANDBOX_RAW is not set/g' .config ---> Running in 50eb86bfd2aa Removing intermediate container 50eb86bfd2aa ---> 0eb72e2956d1 Step 16/16 : RUN sed -i 's/CONFIG_VIDEO_SANDBOX_SDL=y/# CONFIG_VIDEO_SANDBOX_SDL is not set/g' .config ---> Running in 18bd37a4251f Removing intermediate container 18bd37a4251f ---> 8b391226e895 Successfully built 8b391226e895 ---------------------------------------

On 1/16/22 22:14, Milan P. Stanić wrote:
wrote:
On 1/13/22 14:41, Simon Glass wrote:
Hi Heinrich,
On Mon, 10 Jan 2022 at 16:22, Heinrich Schuchardtxypron.glpk@gmx.de wrote:
Hello Simon,
compiling with SDL fails on Alpine Linux: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13411
So I tried NO_SDL:
make sandbox_defconfig NO_SDL=1 make menuconfig # CONFIG_ETH_SANDBOX_RAW=n make -j4 NO_SDL=1
But I got an error gcc: error: arch/sandbox/cpu/sdl.o: No such file or directory
Do you need mrproper first? I don't hit that problem.
Please, build the appended Dockerfile ("sudo docker build -t .").
I run it on aarch64 (I don't have x86_64 machine for this) and I didn't got error.
here is the output of 'docker build .':
Step 12/16 : RUN git clonehttps://source.denx.de/u-boot/u-boot.git ---> Running in 4f89022fad97 Cloning into 'u-boot'... Removing intermediate container 4f89022fad97 ---> 8f4a64791065 Step 13/16 : WORKDIR /home/uboot/u-boot ---> Running in c88471d92078 Removing intermediate container c88471d92078 ---> 361d0979bd27 Step 14/16 : RUN make sandbox_defconfig NO_SDL=1 ---> Running in aad201f298b6 HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o YACC scripts/kconfig/zconf.tab.c LEX scripts/kconfig/zconf.lex.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf # # configuration written to .config # Removing intermediate container aad201f298b6 ---> bf5a898ae7f6 Step 15/16 : RUN sed -i 's/CONFIG_ETH_SANDBOX_RAW=y/# CONFIG_ETH_SANDBOX_RAW is not set/g' .config ---> Running in 50eb86bfd2aa Removing intermediate container 50eb86bfd2aa ---> 0eb72e2956d1 Step 16/16 : RUN sed -i 's/CONFIG_VIDEO_SANDBOX_SDL=y/# CONFIG_VIDEO_SANDBOX_SDL is not set/g' .config ---> Running in 18bd37a4251f Removing intermediate container 18bd37a4251f ---> 8b391226e895 Successfully built 8b391226e895
-- Best regards
It gives me:
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp8': /home/uboot/u-boot/test/dm/video.c:357: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp16': /home/uboot/u-boot/test/dm/video.c:378: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp24': /home/uboot/u-boot/test/dm/video.c:401: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp24_32': /home/uboot/u-boot/test/dm/video.c:424: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp32': /home/uboot/u-boot/test/dm/video.c:445: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o:/home/uboot/u-boot/test/dm/video.c:479: more undefined references to `sandbox_sdl_set_bpp' follow collect2: error: ld returned 1 exit status make: *** [Makefile:1799: u-boot] Error 1
Best regards
Heinrich
I see that I broke it...it needs a static inline for sandbox_sdl_remove_display().
Can't we make CONFIG_SANDBOX_SDL a Kconfig symbol to get rid of the command line symbol?
We already have CONFIG_SANDBOX_VIDEO_SDL. Do we need two symbols?
You mean, manually change the defconfig file? I suppose we could do that, but it is harder for people to do.
In any case, we should add this case to CI.
Regards, Simon
# SPDX-License-Identifier: GPL-2.0+ # This Dockerfile is used to build an image containing basic stuff to be used # to build U-Boot and run our test suites.
FROMalpine:3.15.0 MAINTAINER Heinrich Schuchardtxypron.glpk@gmx.de LABEL Description=" This image is for building U-Boot inside a container"
# Install packages RUN apk update RUN apk add \ alpine-sdk \ bash \ bc \ bison \ dtc \ flex \ git \ linux-headers \ ncurses-dev \ openssl-dev \ perl \ python3 \ py3-setuptools \ python3-dev \ sdl2-dev \ sudo
# Create our user/group RUN echo uboot ALL=NOPASSWD: ALL > /etc/sudoers.d/uboot RUN adduser -D uboot RUN addgroup uboot wheel USERuboot:uboot RUN bash WORKDIR /home/uboot RUN git clonehttps://source.denx.de/u-boot/u-boot.git WORKDIR /home/uboot/u-boot RUN make sandbox_defconfig NO_SDL=1 RUN sed -i 's/CONFIG_ETH_SANDBOX_RAW=y/# CONFIG_ETH_SANDBOX_RAW is not set/g' .config RUN sed -i 's/CONFIG_VIDEO_SANDBOX_SDL=y/# CONFIG_VIDEO_SANDBOX_SDL is not set/g' .config # RUN make -j$(nproc) NO_SDL=1
Did you uncomment this line? I somehow forgot to remove '# '.
Best regards
Heinrich

On Sun, 2022-01-16 at 23:41, Heinrich Schuchardt wrote:
On 1/16/22 22:14, Milan P. Stanić wrote:
wrote:
On 1/13/22 14:41, Simon Glass wrote:
Hi Heinrich,
On Mon, 10 Jan 2022 at 16:22, Heinrich Schuchardtxypron.glpk@gmx.de wrote:
Hello Simon,
compiling with SDL fails on Alpine Linux: https://gitlab.alpinelinux.org/alpine/aports/-/issues/13411
So I tried NO_SDL:
make sandbox_defconfig NO_SDL=1 make menuconfig # CONFIG_ETH_SANDBOX_RAW=n make -j4 NO_SDL=1
But I got an error gcc: error: arch/sandbox/cpu/sdl.o: No such file or directory
Do you need mrproper first? I don't hit that problem.
Please, build the appended Dockerfile ("sudo docker build -t .").
I run it on aarch64 (I don't have x86_64 machine for this) and I didn't got error.
here is the output of 'docker build .':
Step 12/16 : RUN git clonehttps://source.denx.de/u-boot/u-boot.git ---> Running in 4f89022fad97 Cloning into 'u-boot'... Removing intermediate container 4f89022fad97 ---> 8f4a64791065 Step 13/16 : WORKDIR /home/uboot/u-boot ---> Running in c88471d92078 Removing intermediate container c88471d92078 ---> 361d0979bd27 Step 14/16 : RUN make sandbox_defconfig NO_SDL=1 ---> Running in aad201f298b6 HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o YACC scripts/kconfig/zconf.tab.c LEX scripts/kconfig/zconf.lex.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf # # configuration written to .config # Removing intermediate container aad201f298b6 ---> bf5a898ae7f6 Step 15/16 : RUN sed -i 's/CONFIG_ETH_SANDBOX_RAW=y/# CONFIG_ETH_SANDBOX_RAW is not set/g' .config ---> Running in 50eb86bfd2aa Removing intermediate container 50eb86bfd2aa ---> 0eb72e2956d1 Step 16/16 : RUN sed -i 's/CONFIG_VIDEO_SANDBOX_SDL=y/# CONFIG_VIDEO_SANDBOX_SDL is not set/g' .config ---> Running in 18bd37a4251f Removing intermediate container 18bd37a4251f ---> 8b391226e895 Successfully built 8b391226e895
-- Best regards
It gives me:
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp8': /home/uboot/u-boot/test/dm/video.c:357: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp16': /home/uboot/u-boot/test/dm/video.c:378: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp24': /home/uboot/u-boot/test/dm/video.c:401: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp24_32': /home/uboot/u-boot/test/dm/video.c:424: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o: in function `dm_test_video_bmp32': /home/uboot/u-boot/test/dm/video.c:445: undefined reference to `sandbox_sdl_set_bpp' /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: /tmp/u-boot.eJeOKe.ltrans36.ltrans.o:/home/uboot/u-boot/test/dm/video.c:479: more undefined references to `sandbox_sdl_set_bpp' follow collect2: error: ld returned 1 exit status make: *** [Makefile:1799: u-boot] Error 1
Best regards
Heinrich
I see that I broke it...it needs a static inline for sandbox_sdl_remove_display().
Can't we make CONFIG_SANDBOX_SDL a Kconfig symbol to get rid of the command line symbol?
We already have CONFIG_SANDBOX_VIDEO_SDL. Do we need two symbols?
You mean, manually change the defconfig file? I suppose we could do that, but it is harder for people to do.
In any case, we should add this case to CI.
Regards, Simon
# SPDX-License-Identifier: GPL-2.0+ # This Dockerfile is used to build an image containing basic stuff to be used # to build U-Boot and run our test suites.
FROMalpine:3.15.0 MAINTAINER Heinrich Schuchardtxypron.glpk@gmx.de LABEL Description=" This image is for building U-Boot inside a container"
# Install packages RUN apk update RUN apk add \ alpine-sdk \ bash \ bc \ bison \ dtc \ flex \ git \ linux-headers \ ncurses-dev \ openssl-dev \ perl \ python3 \ py3-setuptools \ python3-dev \ sdl2-dev \ sudo
# Create our user/group RUN echo uboot ALL=NOPASSWD: ALL > /etc/sudoers.d/uboot RUN adduser -D uboot RUN addgroup uboot wheel USERuboot:uboot RUN bash WORKDIR /home/uboot RUN git clonehttps://source.denx.de/u-boot/u-boot.git WORKDIR /home/uboot/u-boot RUN make sandbox_defconfig NO_SDL=1 RUN sed -i 's/CONFIG_ETH_SANDBOX_RAW=y/# CONFIG_ETH_SANDBOX_RAW is not set/g' .config RUN sed -i 's/CONFIG_VIDEO_SANDBOX_SDL=y/# CONFIG_VIDEO_SANDBOX_SDL is not set/g' .config # RUN make -j$(nproc) NO_SDL=1
Did you uncomment this line? I somehow forgot to remove '# '.
Ah, I didn't noticed this in previous run.
Removing comment and run again I got same error as you.
participants (3)
-
Heinrich Schuchardt
-
Milan P. Stanić
-
Simon Glass