> The case is only about creating a proper symlink. I think in the current situation the symlink is created unconditionally.
> Abdelatif, I would really appreciate it if you can write and send me some small proposal at what level the option should exist. What I was referring to is similar to options like BOARD_STM32_COMMON. However, I was thinking of having only one that we can use in different places. There are other boards, like ESP32, where there is no similar option. I haven't given this any time, so I don't know how well it would work. I'd also be okay with these separate options but used consistently across all boards and defaulting all to 'n'. If this keeps the original behavior and as a bonus also removes those weird steps where we have to rename makefiles, then this is the best of both worlds. On Thu, Mar 3, 2022 at 2:01 PM Petro Karashchenko <petro.karashche...@gmail.com> wrote: > > 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 > > > > > > > > > > >>>