Search code examples
authenticationbuildrootpost-build

How to modify files in post-build script depending on a menuconfig flag?


I need to find a way to modify/edit a given file after Buildroot compilation and right before the creation of the rootfs depending on a menuconfig flag selection. I could find in the Buildroot documentation that it is possible to do that by using post-build scripts.

My problem is that I would do the script action only if I selected something in menuconfig, for example:

(x) Enable my_login_system;

If I select my_login_system, then I need to change the nsswitch.conf file according:

passwd:        my_login files

If I don't select in menuconfig the "my_login_system", then the nsswitch.conf should be:

passwd:        files my_login

So, my main question is how to know if the "my_login_system" was selected or not in the post-build script.


Solution

  • When a post-build scripts is executed, it can access the BR2_CONFIG environment variable, which holds the path to the Buildroot .config file. Your script can parse that file and act accordingly.

    Thus you could have a condition like:

    if grep -q ^BR2_MY_LOGIN_SYSTEM=y ${BR2_CONFIG}
    then
        # do some tweaks
    else
        # do other tweaks
    fi
    

    Alternatively, you could use the BR2_ROOTFS_POST_SCRIPT_ARGS configuration variable to pass arbitrary command line parameters (as opposed to environment variables) to the post-build scripts.

    Both possibilities are documented in the Buildroot manual, at section Customizing the generated target filesystem.