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.
Small annoyances when building NuttX on FreeBSD
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. 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