Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple build configurations improvements (IDFGH-10539) #11783

Closed
nebkat opened this issue Jun 30, 2023 · 0 comments
Closed

Multiple build configurations improvements (IDFGH-10539) #11783

nebkat opened this issue Jun 30, 2023 · 0 comments
Assignees
Labels
Resolution: NA Issue resolution is unavailable Status: Done Issue is done internally Type: Feature Request Feature request for IDF

Comments

@nebkat
Copy link
Contributor

nebkat commented Jun 30, 2023

Is your feature request related to a problem?

I'd like to revisit the topic of multiple build configurations and continue the discussion from #5658.

Multiple build configurations are currently well supported using:

idf.py -B build-debug -DSDKCONFIG=build-production/sdkconfig
idf.py -B build-production -DSDKCONFIG=build-production/sdkconfig -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.prod"

Or even better with the following line:

set(SDKCONFIG "${CMAKE_BINARY_DIR}/sdkconfig")

However, the syntax remains quite awkward. Commands that would often be run quickly in succession e.g. idf.py build, idf.py app-flash, idf.py monitor all need the arguments to be provided, making it quite difficult to use without setting up custom scripts or environment variables.

This in turn is resulting in very low adoption of an otherwise excellent feature: just 11 instances of the above CMake snippet are found on GitHub. There are no doubt hundreds of developers making multiple clones of their repos in order to change a few menuconfig options (and then gitignoring sdkconfig because it is different between two targets).

Describe the solution you'd like.

Perhaps the simplest way this could be improved would be the adoption of a syntax similar to esptool, where a file path prefixed with @ would be appended to the list of arguments.

One could then define files such as:

// profiles/prod
-B build-production -DSDKCONFIG=build-production/sdkconfig -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.prod"

// profiles/debug
-B build-debug -DSDKCONFIG=build-debug/sdkconfig -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug"

And then call:

idf.py @profile/prod build
idf.py @profile/debug build

This would be an improvement even if the files simply contained e.g. -DAPP_PRODUCTION=1 and then CMake script did the rest as the interface with idf.py would be much improved.

CMake already supports a similar feature, though it is only for cache entries. -C is used in idf.py as the project path, so perhaps --initial-cache could be used instead.

Describe alternatives you've considered.

This can easily be achieved with custom scripts, but feels like something that should be available out-of-the-box.

Additional context.

Can submit a PR if idea sounds good.

@nebkat nebkat added the Type: Feature Request Feature request for IDF label Jun 30, 2023
@espressif-bot espressif-bot added the Status: Opened Issue is new label Jun 30, 2023
@github-actions github-actions bot changed the title Multiple build configurations improvements Multiple build configurations improvements (IDFGH-10539) Jun 30, 2023
@espressif-bot espressif-bot added Status: In Progress Work is in progress Status: Reviewing Issue is being reviewed and removed Status: Opened Issue is new Status: In Progress Work is in progress labels Jul 17, 2023
@espressif-bot espressif-bot added Status: Done Issue is done internally Resolution: NA Issue resolution is unavailable and removed Status: Reviewing Issue is being reviewed labels Jul 26, 2023
espressif-bot pushed a commit that referenced this issue Aug 1, 2023
feat(idf.py): Allow adding arguments from file via @filename.txt (#11783) (GitHub PR)

Closes IDFGH-10584 and IDFGH-10539

See merge request espressif/esp-idf!24955
nebkat pushed a commit to nebkat/esp-idf that referenced this issue Aug 28, 2023
- moved test inputs to one directory
- removed `-` from test arguments

Closes espressif#11821
Closes espressif#11783
nebkat pushed a commit to nebkat/esp-idf that referenced this issue Nov 17, 2023
- moved test inputs to one directory
- removed `-` from test arguments

Closes espressif#11821
Closes espressif#11783
nebkat pushed a commit to nebkat/esp-idf that referenced this issue May 8, 2024
- moved test inputs to one directory
- removed `-` from test arguments

Closes espressif#11821
Closes espressif#11783
nebkat pushed a commit to nebkat/esp-idf that referenced this issue May 15, 2024
- moved test inputs to one directory
- removed `-` from test arguments

Closes espressif#11821
Closes espressif#11783
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Resolution: NA Issue resolution is unavailable Status: Done Issue is done internally Type: Feature Request Feature request for IDF
Projects
None yet
Development

No branches or pull requests

3 participants