The case is only about creating a proper symlink. "Again, the issue is
to not use the common folder at all." -- agin, that is possible. Each
"board/common" has options like "BOARD_STM32_COMMON" or
"BOARD_SAMV7_COMMON" and that is exactly to or not to use in-tree
"board/common". What other option do we need?

"If users are requesting a feature, there isn't a stronger argument."
-- that is absolutely true and that is why I suggest to mark
https://github.com/apache/incubator-nuttx/pull/5274 as a "breaking
change" so users will be aware.
"We should leave the choice of using this folder or not to the user"
-- again, users have a choice over "BOARD_STM32_COMMON" or
"BOARD_SAMV7_COMMON". "BOARD_STM32_COMMON" is defaulted to "n" and I
will make a PR to default all similar options to "n".

Let's discuss new option behavior if existing options do not satisfy a
use cases. I'm open to that, but for now I do not see a need for that
because IMO all options are already inplace.

Abdelatif, I would really appreciate it if you can write and send me
some small proposal at what level the option should exist.

Best regards,
Petro

чт, 3 бер. 2022 р. о 13:48 Abdelatif Guettouche
<abdelatif.guettou...@gmail.com> пише:
>
> > Compilation failed, but not because of a common folder but because:
>
> Again, the issue is to not use the common folder at all.  This was
> requested before.  What you did here is that you used the one in-tree.
>
> > I think this is a weak argument as we change config
> option names sometimes as users are forced to adapt their code.
>
> If users are requesting a feature, there isn't a stronger argument.
> Besides, this is not even a feature request, this is a restriction
> introduced by forcing the common folder to custom boards.
> They are called "custom" for a reason, they should not be restricted
> in this manner. We should leave the choice of using this folder or not
> to the user. As it was before.
> If we want to keep the option to share it for both in-tree and
> out-of-tree boards, then there has to be an _option_.  Not
> unconditionally forced.
> One solution is to introduce a new CONFIG_ that defaults to false.
>
>
>
>
> On Thu, Mar 3, 2022 at 1:20 PM Petro Karashchenko
> <petro.karashche...@gmail.com> wrote:
> >
> > Hello Abdelatif,
> >
> > I just tried to recreate the same scenario. To do this I did:
> > 1. Recreated folder structure as in Daniel's case
> > |-> apps
> > |-> my-folder
> >      |-> my-boards
> >        |-> custom-board
> > |-> nuttx
> >
> > 2. Copied  nucleo-g431kb to custom-board: cd my-folder/my-boards && cp
> > -r ../../nuttx/boards/arm/stm32/nucleo-g431kb custom-board
> >
> > 3. *remove from defconfig:*
> > CONFIG_ARCH_BOARD="nucleo-g431kb"
> > CONFIG_ARCH_BOARD_NUCLEO_G431KB=y
> >
> > 4. *add on defconfig:*
> > CONFIG_ARCH_BOARD_CUSTOM=y
> > CONFIG_ARCH_BOARD_CUSTOM_DIR="../my-folder/my-boards/custom-board"
> > CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y
> > CONFIG_ARCH_BOARD_CUSTOM_NAME="custom-board"
> >
> > 5. I did not performed: "*Rename src/Make.defs to src/Makefile and
> > append the line include $(TOPDIR)/boards/Board.mk at the end of
> > file.*"
> >
> > 6. tools/configure.sh ../my-folder/my-boards/custom-board/configs/nsh
> >
> > 7. make -j8
> >
> > Compilation failed, but not because of a common folder but because:
> > "board/stm32_userleds.c:60:14: error: 'BOARD_LED1' undeclared (first
> > use in this function); did you mean 'BOARD_LED2'?". So I had to "make
> > menuconfig" and select "BOARD_CUSTOM_LEDS" to pass compilation
> > successfully.
> >
> > "It could be that they have an old board where the common folder
> > structure didn't exist at the time and they don't want to change their
> > structure." -- I think this is a weak argument as we change config
> > option names sometimes as users are forced to adapt their code. The
> > only miss that I see here is that the
> > https://github.com/apache/incubator-nuttx/pull/5274 was not marked as
> > a "breaking change".
> >
> > Best regards,
> > Petro
> >
> > чт, 3 бер. 2022 р. о 11:57 Abdelatif Guettouche
> > <abdelatif.guettou...@gmail.com> пише:
> > >
> > > > If what you are writing is true, then compilation for any board that
> > > > does not have a "common" folder at board level should fail.
> > >
> > > No because in-tree this line: BOARD_COMMON_DIR = $(wildcard
> > > $(TOPDIR)$(DELIM)boards$(DELIM)$(CONFIG_ARCH)$(DELIM)$(CONFIG_ARCH_CHIP)$(DELIM)common)
> > > will result on an empty string.
> > >
> > > > We just need to copy source files from
> > > > NuttX board common to custom board location and add files to
> > > > compilation list
> > >
> > > The thing is that some people won't want to do that.  They don't want
> > > to use the common folder. It could be that they have an old board
> > > where the common folder structure didn't exist at the time and they
> > > don't want to change their structure.
> > >
> > > > Or maybe I'm missing the exact use case.
> > >
> > > Daniel's use case is the following: Use a custom board copied from an
> > > in-tree board _without_ using the common directory even if one exists.
> > >
> > > On Thu, Mar 3, 2022 at 11:43 AM Petro Karashchenko
> > > <petro.karashche...@gmail.com> wrote:
> > > >
> > > > Hi,
> > > >
> > > > There is no problem with that. We just need to copy source files from
> > > > NuttX board common to custom board location and add files to
> > > > compilation list together with disabling of NuttX board common layer
> > > > (set CONFIG_BOARD_STM32_COMMON=n for example with STM32 case).
> > > >
> > > > Or maybe I'm missing the exact use case. If yes, then please describe
> > > > it more clearly and I will try to go through it to see if that can be
> > > > achieved with the current code tree or not.
> > > >
> > > > Best regards,
> > > > Petro
> > > >
> > > > чт, 3 бер. 2022 р. о 11:37 Abdelatif Guettouche
> > > > <abdelatif.guettou...@gmail.com> пише:
> > > > >
> > > > > > I think with NuttX 10.2.0 you do not need to perform the next steps 
> > > > > > any more.
> > > > >
> > > > > These are necessary when someone is using a custom board without a
> > > > > common folder copied from a board in-tree that contains a common
> > > > > folder.
> > > > >
> > > > > On Thu, Mar 3, 2022 at 11:31 AM Abdelatif Guettouche
> > > > > <abdelatif.guettou...@gmail.com> wrote:
> > > > > >
> > > > > > > "Which is forcing a common directory when there isn't one. " -- 
> > > > > > > This
> > > > > > > statement is not true as we have
> > > > > > > https://github.com/apache/incubator-nuttx/blob/b953296de73ac75bb380a609f9f30e9fe34e7622/tools/Unix.mk#L272-L277
> > > > > > > that depends on if "BOARD_COMMON_DIR" exists or not.
> > > > > >
> > > > > > Unix.mk includes $(TOPDIR)/Make.defs which in its turn includes
> > > > > > tools/Config.mk so reaching that Make rule, BOARD_COMMON_DIR will 
> > > > > > have
> > > > > > a value, whether there is a common directory or not.
> > > > > >
> > > > > > On Thu, Mar 3, 2022 at 11:09 AM Petro Karashchenko
> > > > > > <petro.karashche...@gmail.com> wrote:
> > > > > > >
> > > > > > > Hello Abdelatif,
> > > > > > >
> > > > > > > "Which is forcing a common directory when there isn't one. " -- 
> > > > > > > This
> > > > > > > statement is not true as we have
> > > > > > > https://github.com/apache/incubator-nuttx/blob/b953296de73ac75bb380a609f9f30e9fe34e7622/tools/Unix.mk#L272-L277
> > > > > > > that depends on if "BOARD_COMMON_DIR" exists or not.
> > > > > > >
> > > > > > > Getting back to original question:
> > > > > > >
> > > > > > > > To build my apps I just need to create a symbolic link called 
> > > > > > > > external
> > > > > > > > inside apps folder. To create a new custom board I start 
> > > > > > > > copying a similar
> > > > > > > > board (e.g nucleo-g431kb) to my-boards folder and make the 
> > > > > > > > following changes
> > > > > > > >
> > > > > > > > *remove from defconfig:*
> > > > > > > > CONFIG_ARCH_BOARD="nucleo-g431kb"
> > > > > > > > CONFIG_ARCH_BOARD_NUCLEO_G431KB=y
> > > > > > > >
> > > > > > > > *add on defconfig:*
> > > > > > > > CONFIG_ARCH_BOARD_CUSTOM=y
> > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_DIR="../my-folder/my-boards/custom-board"
> > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y
> > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_NAME="custom-board"
> > > > > > > >
> > > > > > > > *Rename src/Make.defs to src/Makefile and append the line *
> > > > > > > > include $(TOPDIR)/boards/Board.mk at the end of file.
> > > > > > > >
> > > > > > > > This works well for me up to Nuttx version 10.2.0 but now when 
> > > > > > > > I try to
> > > > > > > > make I got the errors
> > > > > > >
> > > > > > > I think with NuttX 10.2.0 you do not need to perform the next 
> > > > > > > steps any more.
> > > > > > >
> > > > > > >    *Rename src/Make.defs to src/Makefile and append the line *
> > > > > > >    include $(TOPDIR)/boards/Board.mk at the end of file.
> > > > > > >
> > > > > > > I will get back to errors met by Jukka to see what caused the 
> > > > > > > problem
> > > > > > > in his case.
> > > > > > >
> > > > > > > Best regards,
> > > > > > > Petro
> > > > > > >
> > > > > > > чт, 3 бер. 2022 р. о 10:12 Abdelatif Guettouche
> > > > > > > <abdelatif.guettou...@gmail.com> пише:
> > > > > > > >
> > > > > > > > > It seems like Daniel is hitting the same issue
> > > > > > > >
> > > > > > > > Daniel is actually not using the common folder from the STM32
> > > > > > > > directory.  This is why he had to do that renaming.
> > > > > > > > The issue is this:
> > > > > > > > https://github.com/apache/incubator-nuttx/blob/master/tools/Config.mk#L154-L156
> > > > > > > > Which is forcing a common directory when there isn't one. This 
> > > > > > > > should
> > > > > > > > not be done as people have requested before to be able to use 
> > > > > > > > boards
> > > > > > > > without a common directory even if in-tree we use the common
> > > > > > > > directory.
> > > > > > > > Daniel, you can just remove those lines to confirm that it 
> > > > > > > > builds fine
> > > > > > > > (I tried and it does, at least you don't have that error 
> > > > > > > > anymore,
> > > > > > > > there are some trivial compile errors though in the board).
> > > > > > > > For a final solution I think we can either remove them 
> > > > > > > > completely or
> > > > > > > > just add an else statement. I didn't have time to think about 
> > > > > > > > it.
> > > > > > > >
> > > > > > > > On Thu, Mar 3, 2022 at 9:34 AM Jukka Laitinen 
> > > > > > > > <jukka.laiti...@iki.fi> wrote:
> > > > > > > > >
> > > > > > > > > Hi,
> > > > > > > > >
> > > > > > > > > Maybe I was jumping in to conclusion and the issue is not the 
> > > > > > > > > same as
> > > > > > > > > what I had. I was building PX4, which uses CMake build 
> > > > > > > > > system, so I am
> > > > > > > > > not having any Makefile or Make.defs in my own board 
> > > > > > > > > directory. Also the
> > > > > > > > > platform is not stm or arm, but risc-v.
> > > > > > > > >
> > > > > > > > > Anyhow, this is the error which I started getting in my build 
> > > > > > > > > scripts:
> > > > > > > > >
> > > > > > > > > "
> > > > > > > > >
> > > > > > > > > ninja: error:
> > > > > > > > > '../../platforms/nuttx/NuttX/nuttx/arch/risc-v/include/board',
> > > > > > > > >  needed by
> > > > > > > > > 'NuttX/nuttx_copy.stamp', missing and no known rule to make it
> > > > > > > > > make: *** [Makefile:225: ssrc_icicle_default] Error 1
> > > > > > > > > "
> > > > > > > > >
> > > > > > > > > My configs are:
> > > > > > > > >
> > > > > > > > > CONFIG_ARCH="risc-v"
> > > > > > > > > CONFIG_ARCH_BOARD_CUSTOM=y
> > > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_DIR="../nuttx-config"
> > > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y
> > > > > > > > > CONFIG_ARCH_BOARD_CUSTOM_NAME="px4"
> > > > > > > > >
> > > > > > > > > One version, where it fails is available publicly in
> > > > > > > > >
> > > > > > > > > https://github.com/tiiuae/px4-firmware/ (nuttx is included as 
> > > > > > > > > a submodule)
> > > > > > > > >
> > > > > > > > > Building "make ssrc_icicle_default". The board files are in
> > > > > > > > > boards/ssrc/icicle/nuttx-config and NuttX cloned in
> > > > > > > > > platforms/nuttx/Nuttx/nuttx.
> > > > > > > > >
> > > > > > > > > I didn't yet start looking into it in detail, what goes 
> > > > > > > > > wrong, just
> > > > > > > > > bisected the nuttx and reverted the commit which broke it for 
> > > > > > > > > me. I need
> > > > > > > > > to look back later to see how to change the off-tree board 
> > > > > > > > > config to get
> > > > > > > > > it back online.
> > > > > > > > >
> > > > > > > > > Just noticed that the error is somewhat similar, although 
> > > > > > > > > coming from
> > > > > > > > > different build env. But in my case it is likely that I need 
> > > > > > > > > to adapt
> > > > > > > > > the cmake build scripts according to the changes in nuttx.
> > > > > > > > >
> > > > > > > > > -Jukka
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On 3.3.2022 9.37, Petro Karashchenko wrote:
> > > > > > > > > > Hello Jukka,
> > > > > > > > > >
> > > > > > > > > > So you experience the same problem as Daniel and reverting 
> > > > > > > > > > the commit helps?
> > > > > > > > > >
> > > > > > > > > > Before f77956a227f1db6ecb44eda3814e7b02aa2187a6 there was 
> > > > > > > > > > no way to
> > > > > > > > > > reuse common code from "nuttx/board/...". I'm using a 
> > > > > > > > > > custom board
> > > > > > > > > > based on SAME70 and after
> > > > > > > > > > https://github.com/apache/incubator-nuttx/pull/4981 I found 
> > > > > > > > > > my code
> > > > > > > > > > tree broken. Now the folder structure for 
> > > > > > > > > > "boards/arm/samv7" is the
> > > > > > > > > > same as in "boards/arm/stm32". Here is what I did to get it 
> > > > > > > > > > back
> > > > > > > > > > running:
> > > > > > > > > > 1. Synced "custom-board/scripts/Make.defs" with
> > > > > > > > > > "boards/arm/samv7/same70-xplained/scripts/Make.defs"
> > > > > > > > > > 2. Renamed "custom-board/src/Makefile" to 
> > > > > > > > > > "custom-board/src/Make.defs"
> > > > > > > > > > and synced with 
> > > > > > > > > > "boards/arm/samv7/same70-xplained/src/Make.defs"
> > > > > > > > > > 3. Removed files in my code tree that have exactly the same
> > > > > > > > > > implementation as files from "boards/arm/samv7/common"
> > > > > > > > > >
> > > > > > > > > > It seems like Daniel is hitting the same issue, so I expect 
> > > > > > > > > > that
> > > > > > > > > > renaming Makefile to Make.defs plus setting 
> > > > > > > > > > "BOARD_STM32_COMMON=n"
> > > > > > > > > > should fix the issue without any additional file clean-up.
> > > > > > > > > > Please give me feedback if that helps.
> > > > > > > > > >
> > > > > > > > > > Best regards,
> > > > > > > > > > Petro
> > > > > > > > > >
> > > > > > > > > > чт, 3 бер. 2022 р. о 07:40 Jukka Laitinen 
> > > > > > > > > > <jukka.laiti...@iki.fi> пише:
> > > > > > > > > >> HI,
> > > > > > > > > >>
> > > > > > > > > >> Not sure what is the correct way to fix this, but I 
> > > > > > > > > >> reverted:
> > > > > > > > > >>
> > > > > > > > > >> "
> > > > > > > > > >>
> > > > > > > > > >> commit f77956a227f1db6ecb44eda3814e7b02aa2187a6
> > > > > > > > > >> Author: Petro Karashchenko <petro.karashche...@gmail.com>
> > > > > > > > > >> Date:   Wed Jan 19 11:16:11 2022 +0200
> > > > > > > > > >>
> > > > > > > > > >>       tools: add option to reuse boards common files for 
> > > > > > > > > >> custom boards
> > > > > > > > > >>
> > > > > > > > > >>       Signed-off-by: Petro Karashchenko 
> > > > > > > > > >> <petro.karashche...@gmail.com>
> > > > > > > > > >> "
> > > > > > > > > >>
> > > > > > > > > >> Petro, what is the proper way to configure this?
> > > > > > > > > >>
> > > > > > > > > >> Thanks,
> > > > > > > > > >>
> > > > > > > > > >> Jukka
> > > > > > > > > >>
> > > > > > > > > >>
> > > > > > > > > >>
> > > > > > > > > >> On 3.3.2022 0.06, Daniel Pereira Carvalho wrote:
> > > > > > > > > >>
> > > > > > > > > >>> Hi guys,
> > > > > > > > > >>>
> > > > > > > > > >>> I am having problems building custom boards outside of 
> > > > > > > > > >>> the Nuttx folder
> > > > > > > > > >>> tree. Usually I use the following folder structure.
> > > > > > > > > >>>
> > > > > > > > > >>> |-> apps
> > > > > > > > > >>> |-> my-folder
> > > > > > > > > >>>      |-> my-apps
> > > > > > > > > >>>         |-> custom-app
> > > > > > > > > >>>      |-> my-boards
> > > > > > > > > >>>         |-> custom-board
> > > > > > > > > >>> |-> nuttx
> > > > > > > > > >>>
> > > > > > > > > >>> To build my apps I just need to create a symbolic link 
> > > > > > > > > >>> called external
> > > > > > > > > >>> inside apps folder. To create a new custom board I start 
> > > > > > > > > >>> copying a similar
> > > > > > > > > >>> board (e.g nucleo-g431kb) to my-boards folder and make 
> > > > > > > > > >>> the following changes
> > > > > > > > > >>>
> > > > > > > > > >>> *remove from defconfig:*
> > > > > > > > > >>> CONFIG_ARCH_BOARD="nucleo-g431kb"
> > > > > > > > > >>> CONFIG_ARCH_BOARD_NUCLEO_G431KB=y
> > > > > > > > > >>>
> > > > > > > > > >>> *add on defconfig:*
> > > > > > > > > >>> CONFIG_ARCH_BOARD_CUSTOM=y
> > > > > > > > > >>> CONFIG_ARCH_BOARD_CUSTOM_DIR="../my-folder/my-boards/custom-board"
> > > > > > > > > >>> CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y
> > > > > > > > > >>> CONFIG_ARCH_BOARD_CUSTOM_NAME="custom-board"
> > > > > > > > > >>>
> > > > > > > > > >>> *Rename src/Make.defs to src/Makefile and append the line 
> > > > > > > > > >>> *
> > > > > > > > > >>> include $(TOPDIR)/boards/Board.mk at the end of file.
> > > > > > > > > >>>
> > > > > > > > > >>> This works well for me up to Nuttx version 10.2.0 but now 
> > > > > > > > > >>> when I try to
> > > > > > > > > >>> make I got the errors
> > > > > > > > > >>>
> > > > > > > > > >>> make[1]: Entering directory 
> > > > > > > > > >>> '/home/daniel/nuttx-workspace/nuttx/tools'
> > > > > > > > > >>> make[1]: Leaving directory 
> > > > > > > > > >>> '/home/daniel/nuttx-workspace/nuttx/tools'
> > > > > > > > > >>> make[1]: Entering directory 
> > > > > > > > > >>> '/home/daniel/nuttx-workspace/nuttx/tools'
> > > > > > > > > >>> make[1]: Leaving directory 
> > > > > > > > > >>> '/home/daniel/nuttx-workspace/nuttx/tools'
> > > > > > > > > >>> Create version.h
> > > > > > > > > >>> make[1]: Entering directory 
> > > > > > > > > >>> '/home/daniel/nuttx-workspace/nuttx/boards'
> > > > > > > > > >>> make[2]: Entering directory
> > > > > > > > > >>> '/home/daniel/nuttx-workspace/nuttx/boards/arm/stm32/common'
> > > > > > > > > >>> Makefile:23: board/Make.defs: No such file or directory
> > > > > > > > > >>> make[2]: *** No rule to make target 'board/Make.defs'.  
> > > > > > > > > >>> Stop.
> > > > > > > > > >>> make[2]: Leaving directory
> > > > > > > > > >>> '/home/daniel/nuttx-workspace/nuttx/boards/arm/stm32/common'
> > > > > > > > > >>> make[1]: *** [Makefile:79: context] Error 2
> > > > > > > > > >>> make[1]: Leaving directory 
> > > > > > > > > >>> '/home/daniel/nuttx-workspace/nuttx/boards'
> > > > > > > > > >>> make: *** [tools/Unix.mk:425: boards/.context] Error 2
> > > > > > > > > >>>
> > > > > > > > > >>> Does anyone know how to fix this problem?
> > > > > > > > > >>>
> > > > > > > > > >>> Thanks
> > > > > > > > > >>>
> > > > > > > > > >>> Daniel Pereira de Carvalho
> > > > > > > > > >>>

Reply via email to