On 2024-12-17 13:27:48, Tomek CEDRO wrote: > Hello world :-) > > Recent PR #2893 [1] proposed using "select" statement for "PIPES" as > dependency of "LIBUV" option. There is a preference to use "depends > on" in that case [2]. What are your preferences and experiences in > this area? Is there a policy / preference in this area for NuttX? :-) > > What are dangers of using "select"? Why "depends on" is preferred? Select gonna fail for "nested dependencies".
CONFIG_A depends on CONFIG_B which depends on CONFIG_C If you select A, A will select B, but it will not select C automatically, A will have to have both "select B" and "select C". This can lead to bugs I - personally - prefer depends for visible (user selectable) entries. While select can be used to select invisible entries like | config CHIP_X | bool "select chip X" | select HAVE_UART | select HAVE_SPI If you don't want for user to miss on some features I also include reversed config like: | comment "psmq requires SYSTEM_EMBEDLOG and !DISABLE_MQUEUE" | depends on DISABLE_MQUEUE || !SYSTEM_EMBEDLOG | | menuconfig SYSTEM_PSMQ | bool "psmq" | default n | depends on !DISABLE_MQUEUE && SYSTEM_EMBEDLOG In this case if you have enabled mqueue and embedlog you will see selectable | [ ] psmq otherwise you will see comment | --- psmq requires SYSTEM_EMBEDLOG and !DISABLE_MQUEUE --- This has number of perks: - user see all potential features he can choose from, regardless of what is currently selected - end user will immediatelly and explicitly see what gets pulled for a config - no chance to break with nested dependencies - if embedlog suddenly starts to require new option, only embedlog kconfig will have to be modified (with new depends on option) - no illegal configurations are possible with depends (while it is possible with select) So, rule of thumb - use select only for non-visible (non-selectable anywhere) symbols - use depends everywhere else. -- .-----------------.-------------------.----------------------.-----------------. | Michal Lyszczek | Embedded C, Linux | Company Address | .-. opensource | | +48 727 564 419 | Software Engineer | Akacjowa 10a; 55-330 | oo| supporter | | https://bofc.pl `----.--------------: Brzezinka Sredzka PL | /`'\ & | | GPG FF1EBFE7E3A974B1 | Bits of Code | NIP: 813 349 58 78 |(\_;/) programer | `----------------------^--------------^----------------------^-----------------'
signature.asc
Description: PGP signature