From e2bf48465014ace4590d94ae66681fbeafbb23b3 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Fri, 3 Oct 2025 16:18:35 +0200 Subject: bin: Add 'profile' into kbuild MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows this script to be more specific for the resulting 'install.sh', as the current situation wasn't quite working. Signed-off-by: Miquel Sabaté Solà --- bin/kbuild | 171 +++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 103 insertions(+), 68 deletions(-) diff --git a/bin/kbuild b/bin/kbuild index d3758ca..8064ac9 100755 --- a/bin/kbuild +++ b/bin/kbuild @@ -29,14 +29,15 @@ # `menuconfig`. This is useful if you are just developing over the same # `.config` file again and again. # 2. `-n/--no-install`: don't generate the install/uninstall files. -# 3. `-h/--help`: show the help message. +# 3. `-p/--profile`: the kind of machine you are building the kernel for. +# 4. `-h/--help`: show the help message. # # After that just send the resulting tarball to the machine where you want to # install this kernel. In there you just need to untar the given bundle and then # run the `install.sh` script from within the resulting directory. This will: # 1. Copy recursively all the files into their proper paths. # 2. Make an initramfs for the new image. -# 3. Run your $EDITOR to update the /boot/extlinux/extlinux.conf file. +# 3. Run your $EDITOR to update the boot loader configuration. # # *NOTE*: this script expects the `ARCH` environment variable to be set, and if # that doesn't match the current architecture, then it will expect to have @@ -52,28 +53,51 @@ set -e while [[ $# -gt 0 ]]; do case $1 in - -s | --skip-config) - SKIP_CONFIG="t" - shift - ;; - -n | --no-install) - NO_INSTALL="t" - shift - ;; - -h | --help) - SHOW_HELP=1 - shift - ;; - -*) - echo "kbuild (error): unknown option '$1'." + -s | --skip-config) + SKIP_CONFIG="t" + shift + ;; + -n | --no-install) + NO_INSTALL="t" + shift + ;; + -p | --profile) + if [ -z "$2" ]; then + echo "kbuild (error): the 'profile' option expects a value." + exit 1 + fi + + PROFILE="$2" + shift 2 + ;; + -h | --help) + SHOW_HELP=1 + shift + ;; + -*) + echo "kbuild (error): unknown option '$1'." + exit 1 + ;; + *) + echo "kbuild (warning): argument '$1' will be ignored." + shift # past argument + ;; + esac +done + +# Hard check on the profile being picked. +case "$PROFILE" in + "vf2" | "suse") + ;; + "") + echo "kbuild (error): you have to profile one of these profiles: vf2, suse." exit 1 ;; *) - echo "kbuild (warning): argument '$1' will be ignored." - shift # past argument + echo "kbuild (error): uknown profile '$PROFILE'. Possible values: vf2, suse." + exit 1 ;; - esac -done +esac # Print the show message if needed. if [ -n "$SHOW_HELP" ]; then @@ -85,6 +109,7 @@ following options: -h, --help Show this message. -n, --no-install Don't generate the install/uninstall files. + -p, --profile The profile to be picked up (values: vf2, suse). -s, --skip-config Skip the configuration step. HERE exit 0 @@ -148,37 +173,39 @@ make -j "$(nproc)" if [ -n "$NO_INSTALL" ]; then echo "kbuild (info): done!" -else - name=$(cat include/config/kernel.release) + exit 0 +fi - if [ -z "$INSTALL_PATH" ]; then - INSTALL_PATH="buildroot-$name" - fi - mkdir -p "$INSTALL_PATH/usr/lib/modules/$name" - pushd "$INSTALL_PATH" >/dev/null - ln -s usr/lib lib - popd >/dev/null +name=$(cat include/config/kernel.release) - make modules_install INSTALL_MOD_PATH="$INSTALL_PATH" - make dtbs_install INSTALL_DTBS_PATH="$INSTALL_PATH/boot/dtbs/$name" - make headers_install INSTALL_HDR_PATH="$INSTALL_PATH/usr" +if [ -z "$INSTALL_PATH" ]; then + INSTALL_PATH="buildroot-$name" +fi +mkdir -p "$INSTALL_PATH/usr/lib/modules/$name" +pushd "$INSTALL_PATH" >/dev/null +ln -s usr/lib lib +popd >/dev/null - unlink "$INSTALL_PATH/lib" +make modules_install INSTALL_MOD_PATH="$INSTALL_PATH" +make dtbs_install INSTALL_DTBS_PATH="$INSTALL_PATH/boot/dtbs/$name" +make headers_install INSTALL_HDR_PATH="$INSTALL_PATH/usr" - make install INSTALL_PATH="$INSTALL_PATH/boot" &>/dev/null - cp .config "$INSTALL_PATH/boot/config-$name" +unlink "$INSTALL_PATH/lib" - ## - # Setup install.sh script. +make install INSTALL_PATH="$INSTALL_PATH/boot" &>/dev/null +cp .config "$INSTALL_PATH/boot/config-$name" - # Files that are going to be installed. Funnily enough, the pipeline will create - # the "files.txt" first, so it will show on the `find` output. Hence the stupid - # workaround you see of moving it in later. - find "$INSTALL_PATH" -type f -printf "/%P\n" >files.txt - mv files.txt "$INSTALL_PATH/files.txt" +## +# Setup install.sh script. - # Now write the actual install script. - cat <