Re: Small annoyances when building NuttX on FreeBSD
On Sat, Aug 19, 2023 at 2:22 AM Milan Obuch wrote: > > Note: using 12.0.0 sources, this problem does not occur. It looks like > there was some change in build process after 12.0.0 was released. > Are you able to do git bisect between 12.0.0 and latest master to find which commit introduces the error? Nathan
Re: Small annoyances when building NuttX on FreeBSD
On Wed, 16 Aug 2023 16:29:11 +0200 I wrote: > On Wed, 16 Aug 2023 14:32:23 +0200 > Bernd Walter wrote: > > > On Wed, Aug 16, 2023 at 11:18:19AM +0200, Milan Obuch wrote: [ snip ] > > > Additionally, for Raspberry Pi Pico, there is one more error > > > message, this time somewhat serious: > > > > > > Generating: nuttx.uf2 > > > tools/rp2040/elf2uf2 nuttx nuttx.uf2; > > > ld-elf.so.1: /usr/local/lib/gcc10/libstdc++.so.6: version > > > GLIBCXX_3.4.29 required by > > > /wrk/usr/ports/devel/apache-nuttx/work/nuttx/tools/rp2040/elf2uf2 > > > not found gmake: *** [tools/Unix.mk:541: nuttx] Error 1 > > > > > > and, consequently, nuttx.uf2 file for uploading to the board is > > > not prepared. This is not fatal for me, because I can execute > > > command > > > > > > /wrk/pico/pico-examples/build/elf2uf2/elf2uf2 -v nuttx > > > nuttx.bin.uf2 > > > > > > manually and got it. Again, it would be nice to fix this. In my > > > eyes, the preferable way for this would be just using already > > > available elf2uf2 binary, either in path, or, maybe, with > > > explicitly assigned via some ELF2UF2= assignment. The > > > PICO_SDK_PATH=/wrk/pico/pico-sdk assignment used above is just for > > > building this binary. I'd prefer to do it just once as part of > > > working setup preparation and not for every build, which could be > > > just done the way I mentioned. > > > > > > I run into that problem as well. > > It is very specific to the RP2040 build and Nuttx compiles some kind > > of tool, but uses a disfunctional GCC version, because it doesn't > > use the system compiler. > > Unfortunately the broken compiler is a dependency of the xtensa > > compiler toolchain. > > So you either have the xtensa build tools or you compile for RP2040. > > > > This is my local workaround: > > diff --git a/contrib/nuttx/tools/rp2040/Makefile.host > > b/contrib/nuttx/tools/rp2040/Makefile.host index > > 32717c11f7..aada7f9709 100644 --- > > a/contrib/nuttx/tools/rp2040/Makefile.host +++ > > b/contrib/nuttx/tools/rp2040/Makefile.host @@ -28,7 +28,7 @@ CFLAGS > > = -O2 -std=c++14 CFLAGS += > > -I$(PICO_SDK_PATH)/src/common/boot_uf2/include > > elf2uf2: $(PICO_SDK_PATH)/tools/elf2uf2/main.cpp > > - @g++ $(CFLAGS) -o $@ $< > > + @c++ $(CFLAGS) -o $@ $< > > > > clean: > > @rm -f *.o *.a *.dSYM *~ .*.swp > > > > Thanks, I suspected something like this, I did not analyzed it > thoroughly. I can live with this now, as I use jail for NuttX builds, > I can as easily use additional one for RP2040... I'll see later. > Note: using 12.0.0 sources, this problem does not occur. It looks like there was some change in build process after 12.0.0 was released. Regards, Milan
Re: Small annoyances when building NuttX on FreeBSD
On Wed, 16 Aug 2023 14:32:23 +0200 Bernd Walter wrote: > On Wed, Aug 16, 2023 at 11:18:19AM +0200, Milan Obuch wrote: > > Hi, > > > > at the moment, I am able to build NuttX on FreeBSD for arm > > (Raspberry Pi Pico boards and similar, QuickFeather), xtensa > > (Espressif ESP32 and ESP32S2) and risc-v (Espressif ESP32C3 and > > ESP32C6, and PineCone - BL602 based), some of them with tests on > > real hardware. > > > > While in general the process is quite easy, there are some > > annoyances in the process. All builds follow the same recipe: > > > > 1. configure build for the board - standard > > > > tools/configure.sh > > > > involved. Nothing special here. > > > > 2. do the build itself. As some paths are set differently in > > FreeBSD, typical invocation is (example for Raspberry Pi Pico): > > > > gmake > > CROSSDEV=/usr/local/gcc-arm-embedded-10.3-2021.10/bin/arm-none-eabi- > > PICO_SDK_PATH=/wrk/pico/pico-sdk > > > > This does the build, just with one error message at the start > > reading > > > > /usr/local/bin/bash: line 1: arm-none-eabi-gcc: command not found > > > > and then the whole build process continues, ending with nuttx file > > being created. Error message mentioned seems to be just spurious, it > > would be nice to locate where it comes from and fix. Could someone > > help me with this, hopefully small, task? > > > > Additionally, for Raspberry Pi Pico, there is one more error > > message, this time somewhat serious: > > > > Generating: nuttx.uf2 > > tools/rp2040/elf2uf2 nuttx nuttx.uf2; > > ld-elf.so.1: /usr/local/lib/gcc10/libstdc++.so.6: version > > GLIBCXX_3.4.29 required by > > /wrk/usr/ports/devel/apache-nuttx/work/nuttx/tools/rp2040/elf2uf2 > > not found gmake: *** [tools/Unix.mk:541: nuttx] Error 1 > > > > and, consequently, nuttx.uf2 file for uploading to the board is not > > prepared. This is not fatal for me, because I can execute command > > > > /wrk/pico/pico-examples/build/elf2uf2/elf2uf2 -v nuttx nuttx.bin.uf2 > > > > manually and got it. Again, it would be nice to fix this. In my > > eyes, the preferable way for this would be just using already > > available elf2uf2 binary, either in path, or, maybe, with > > explicitly assigned via some ELF2UF2= assignment. The > > PICO_SDK_PATH=/wrk/pico/pico-sdk assignment used above is just for > > building this binary. I'd prefer to do it just once as part of > > working setup preparation and not for every build, which could be > > just done the way I mentioned. > > > I run into that problem as well. > It is very specific to the RP2040 build and Nuttx compiles some kind > of tool, but uses a disfunctional GCC version, because it doesn't use > the system compiler. > Unfortunately the broken compiler is a dependency of the xtensa > compiler toolchain. > So you either have the xtensa build tools or you compile for RP2040. > > This is my local workaround: > diff --git a/contrib/nuttx/tools/rp2040/Makefile.host > b/contrib/nuttx/tools/rp2040/Makefile.host index > 32717c11f7..aada7f9709 100644 --- > a/contrib/nuttx/tools/rp2040/Makefile.host +++ > b/contrib/nuttx/tools/rp2040/Makefile.host @@ -28,7 +28,7 @@ CFLAGS = > -O2 -std=c++14 CFLAGS += > -I$(PICO_SDK_PATH)/src/common/boot_uf2/include > elf2uf2: $(PICO_SDK_PATH)/tools/elf2uf2/main.cpp > - @g++ $(CFLAGS) -o $@ $< > + @c++ $(CFLAGS) -o $@ $< > > clean: > @rm -f *.o *.a *.dSYM *~ .*.swp > Thanks, I suspected something like this, I did not analyzed it thoroughly. I can live with this now, as I use jail for NuttX builds, I can as easily use additional one for RP2040... I'll see later. Regards, Milan
Re: Small annoyances when building NuttX on FreeBSD
On Wed, Aug 16, 2023 at 11:18:19AM +0200, Milan Obuch wrote: > Hi, > > at the moment, I am able to build NuttX on FreeBSD for arm (Raspberry > Pi Pico boards and similar, QuickFeather), xtensa (Espressif ESP32 and > ESP32S2) and risc-v (Espressif ESP32C3 and ESP32C6, and PineCone - > BL602 based), some of them with tests on real hardware. > > While in general the process is quite easy, there are some annoyances > in the process. All builds follow the same recipe: > > 1. configure build for the board - standard > > tools/configure.sh > > involved. Nothing special here. > > 2. do the build itself. As some paths are set differently in FreeBSD, > typical invocation is (example for Raspberry Pi Pico): > > gmake CROSSDEV=/usr/local/gcc-arm-embedded-10.3-2021.10/bin/arm-none-eabi- > PICO_SDK_PATH=/wrk/pico/pico-sdk > > This does the build, just with one error message at the start reading > > /usr/local/bin/bash: line 1: arm-none-eabi-gcc: command not found > > and then the whole build process continues, ending with nuttx file > being created. Error message mentioned seems to be just spurious, it > would be nice to locate where it comes from and fix. Could someone help > me with this, hopefully small, task? > > Additionally, for Raspberry Pi Pico, there is one more error message, > this time somewhat serious: > > Generating: nuttx.uf2 > tools/rp2040/elf2uf2 nuttx nuttx.uf2; > ld-elf.so.1: /usr/local/lib/gcc10/libstdc++.so.6: version GLIBCXX_3.4.29 > required by /wrk/usr/ports/devel/apache-nuttx/work/nuttx/tools/rp2040/elf2uf2 > not found > gmake: *** [tools/Unix.mk:541: nuttx] Error 1 > > and, consequently, nuttx.uf2 file for uploading to the board is not > prepared. This is not fatal for me, because I can execute command > > /wrk/pico/pico-examples/build/elf2uf2/elf2uf2 -v nuttx nuttx.bin.uf2 > > manually and got it. Again, it would be nice to fix this. In my eyes, > the preferable way for this would be just using already available > elf2uf2 binary, either in path, or, maybe, with explicitly assigned via > some ELF2UF2= assignment. The PICO_SDK_PATH=/wrk/pico/pico-sdk > assignment used above is just for building this binary. I'd prefer to > do it just once as part of working setup preparation and not for every > build, which could be just done the way I mentioned. I run into that problem as well. It is very specific to the RP2040 build and Nuttx compiles some kind of tool, but uses a disfunctional GCC version, because it doesn't use the system compiler. Unfortunately the broken compiler is a dependency of the xtensa compiler toolchain. So you either have the xtensa build tools or you compile for RP2040. This is my local workaround: diff --git a/contrib/nuttx/tools/rp2040/Makefile.host b/contrib/nuttx/tools/rp2040/Makefile.host index 32717c11f7..aada7f9709 100644 --- a/contrib/nuttx/tools/rp2040/Makefile.host +++ b/contrib/nuttx/tools/rp2040/Makefile.host @@ -28,7 +28,7 @@ CFLAGS = -O2 -std=c++14 CFLAGS += -I$(PICO_SDK_PATH)/src/common/boot_uf2/include elf2uf2: $(PICO_SDK_PATH)/tools/elf2uf2/main.cpp - @g++ $(CFLAGS) -o $@ $< + @c++ $(CFLAGS) -o $@ $< clean: @rm -f *.o *.a *.dSYM *~ .*.swp > > 3. clean up after build, so I can repeat the process for another > board/configuration combo: > > gmake distclean > > This does the job, spitting maybe a hundred lines of > > /usr/local/bin/bash: line 1: arm-none-eabi-gcc: command not found > > Note I am using sources from git as of yesterday. All these errors did > not appear with 12.0.0 source tarball, but started with newer ones, I > tested 12.1.0, 12.2.0 and git newer than that. > > The exact message differs depending on the build (and consequently > toolset) used. > > At present, I do not know the whole build process that well to dig into > it myself, thus some help, hints, patches to test, all is greatly > appreciated. > > Regards, > Milan -- B.Walter https://www.bwct.de Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.