Re: Small annoyances when building NuttX on FreeBSD

2023-08-20 Thread Nathan Hartman
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

2023-08-19 Thread Milan Obuch
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

2023-08-16 Thread Milan Obuch
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

2023-08-16 Thread Bernd Walter
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

2023-08-16 Thread Milan Obuch
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