scripts/kernel_bump: Run script relative to the script dir
authorOlliver Schinagl <oliver@schinagl.nl>
Thu, 21 Mar 2024 09:27:44 +0000 (10:27 +0100)
committerRobert Marko <robimarko@gmail.com>
Fri, 12 Apr 2024 16:20:52 +0000 (18:20 +0200)
Determine the target directory based on the script location, which might
work better in some cases, but at least also allows the script to be ran
from with any location in the OpenWRT repository.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
scripts/kernel_bump.sh

index 5c147d78a58354417a0c71b395d27a9dea1cae2e..69045946e96746c4c2e285315ac2ede38975f66a 100755 (executable)
@@ -59,6 +59,7 @@ usage()
        echo "    -t  Target version of kernel (e.g. 'v6.6' [TARGET_VERSION]')"
        echo
        echo 'All options can also be passed in environment variables (listed between [BRACKETS]).'
+       echo 'Note that this script must be run from within the OpenWrt git repository.'
        echo 'Example: scripts/kernel_bump.sh -p realtek -s v6.1 -t v6.6'
 }
 
@@ -74,6 +75,8 @@ cleanup()
 
 init()
 {
+       src_file="$(readlink -f "${0}")"
+       src_dir="${src_file%%"${src_file##*'/'}"}"
        initial_branch="$(git rev-parse --abbrev-ref HEAD)"
        initial_commitish="$(git rev-parse HEAD)"
 
@@ -82,6 +85,11 @@ init()
                exit 1
        fi
 
+       if [ -n "${src_dir##*'/scripts/'}" ]; then
+               echo "This script '${src_file}' is not in the scripts subdirectory, this is unexpected, cannot continue."
+               exit 1
+       fi
+
        source_version="${source_version#v}"
        target_version="${target_version#v}"
 
@@ -90,20 +98,16 @@ init()
 
 bump_kernel()
 {
-       platform_name="${platform_name##*'/'}"
-
-       if [ -z "${platform_name:-}" ]; then
-               platform_name="${PWD##*'/'}"
+       if [ -z "${platform_name}" ] || \
+          [ -d "${PWD}/image" ]; then
+               platform_name="${PWD}"
        fi
+       platform_name="${platform_name##*'/'}"
 
-       if [ "${PWD##*'/'}" = "${platform_name}" ]; then
-               _target_dir='./'
-       else
-               _target_dir="target/linux/${platform_name}"
-       fi
+       _target_dir="${src_dir}/../target/linux/${platform_name}"
 
        if [ ! -d "${_target_dir}/image" ]; then
-               e_err 'Cannot find target linux directory.'
+               e_err "Cannot find target linux directory '${_target_dir:-not defined}'. Not in a platform directory, or -p not set."
                exit 1
        fi