commit:     8768d9f1b9e8d166dbbd3428b221578c7504679c
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Tue Mar  3 00:38:31 2020 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Tue Mar  3 23:53:06 2020 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=8768d9f1

Make kernel config filename customizable

This commit will make kernel config filename used by --save-config
feature customizable like previous commit 769a07fd3e947 did for
initramfs and kernel image.

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 defaults/config.sh   |  1 +
 doc/genkernel.8.txt  |  6 ++++++
 gen_cmdline.sh       |  6 ++++++
 gen_configkernel.sh  |  2 +-
 gen_determineargs.sh | 19 +++++++++++++++++--
 5 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/defaults/config.sh b/defaults/config.sh
index fed5355..8c7cf7e 100644
--- a/defaults/config.sh
+++ b/defaults/config.sh
@@ -23,6 +23,7 @@ KERNEL_SUPPORT_MICROCODE=no
 #
 DEFAULT_INITRAMFS_FILENAME="initramfs-%%KV%%.img"
 DEFAULT_INITRAMFS_SYMLINK_NAME="initramfs"
+DEFAULT_KERNEL_CONFIG_FILENAME="kernel-config-%%KV%%"
 DEFAULT_KERNEL_FILENAME="vmlinuz-%%KV%%"
 DEFAULT_KERNEL_SYMLINK_NAME="kernel"
 DEFAULT_SYSTEMMAP_FILENAME="System.map-%%KV%%"

diff --git a/doc/genkernel.8.txt b/doc/genkernel.8.txt
index e00e028..7cd65fe 100644
--- a/doc/genkernel.8.txt
+++ b/doc/genkernel.8.txt
@@ -506,6 +506,12 @@ NOTE: No modules outside of the initramfs will be included!
     Archive file created using tar containing kernel binary, content of
     '/lib/modules' and the kernel config after the callbacks have run.
 
+*--kernel-config-filename*=<...>::
+Set the kernel config filename used by *--save-config*. Please see
+*--kernel-filename* option for available placeholders and restrictions.
++
+By default, kernel config filename will be set to 'kernel-config-%%KV%%'.
+
 *--kernel-filename*=<...>::
 Set kernel filename which will be used when kernel will be installed
 into *BOOTDIR* (implies *--install* option). The following placeholders

diff --git a/gen_cmdline.sh b/gen_cmdline.sh
index aa54c29..a34a739 100755
--- a/gen_cmdline.sh
+++ b/gen_cmdline.sh
@@ -193,6 +193,8 @@ longusage() {
   echo "       --postclear             Clear all tmp files and caches after 
genkernel has run"
   echo "       --no-postclear          Do not clean up after genkernel has run"
   echo "  Output Settings"
+  echo "       --kernel-config-filename=<...>"
+  echo "                               Set kernel config filename"
   echo "       --kernel-filename=<...>"
   echo "                               Set kernel filename"
   echo "       --kernel-symlink-name=<...>"
@@ -701,6 +703,10 @@ parse_cmdline() {
                        CMD_KERNCACHE="${*#*=}"
                        print_info 3 "KERNCACHE: ${CMD_KERNCACHE}"
                        ;;
+               --kernel-config-filename=*)
+                       CMD_KERNEL_CONFIG_FILENAME="${*#*=}"
+                       print_info 3 "CMD_KERNEL_CONFIG_FILENAME: 
${CMD_KERNEL_CONFIG_FILENAME}"
+                       ;;
                --kernel-filename=*)
                        CMD_KERNEL_FILENAME="${*#*=}"
                        print_info 3 "CMD_KERNEL_FILENAME: 
${CMD_KERNEL_FILENAME}"

diff --git a/gen_configkernel.sh b/gen_configkernel.sh
index 2f9a6a5..7804949 100755
--- a/gen_configkernel.sh
+++ b/gen_configkernel.sh
@@ -44,7 +44,7 @@ determine_kernel_config_file() {
                else
                        local -a user_kconfig_candidates
 
-                       # Always prefer kernel config based on actual $KV 
reading
+                       # Always prefer kernel config based on set 
--kernel-config-filename
                        user_kconfig_candidates+=( 
"/etc/kernels/${GK_FILENAME_CONFIG}" )
 
                        if [ -n "${KERNEL_LOCALVERSION}" -a 
"${KERNEL_LOCALVERSION}" != "UNSET" ]

diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index 14ef757..6c5d01c 100755
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -87,7 +87,6 @@ determine_KV() {
 determine_output_filenames() {
        print_info 5 '' 1 0
 
-       GK_FILENAME_CONFIG="kernel-config-${KV}"
        GK_FILENAME_KERNELZ="kernelz-${KV}"
        GK_FILENAME_TEMP_CONFIG="config-${ARCH}-${KV}"
        GK_FILENAME_TEMP_INITRAMFS="initramfs-${ARCH}-${KV}"
@@ -96,7 +95,10 @@ determine_output_filenames() {
        GK_FILENAME_TEMP_SYSTEMMAP="System.map-${ARCH}-${KV}"
 
        # Do we have values?
-       if [ -z "${KERNEL_FILENAME}" ]
+       if [ -z "${KERNEL_CONFIG_FILENAME}" ]
+       then
+               gen_die "--kernel-config-filename must be set to a non-empty 
value!"
+       elif [ -z "${KERNEL_FILENAME}" ]
        then
                gen_die "--kernel-filename must be set to a non-empty value!"
        elif [ -z "${KERNEL_SYMLINK_NAME}" ]
@@ -116,6 +118,17 @@ determine_output_filenames() {
                gen_die "--initramfs-filename must be set to a non-empty value!"
        fi
 
+       # Kernel .config
+       GK_FILENAME_CONFIG=$(arch_replace "${KERNEL_CONFIG_FILENAME}")
+       GK_FILENAME_CONFIG=$(kv_replace "${GK_FILENAME_CONFIG}")
+
+       if [ -z "${GK_FILENAME_CONFIG}" ]
+       then
+               gen_die "Internal error: Variable 'GK_FILENAME_CONFIG' is 
empty!"
+       else
+               print_info 5 "GK_FILENAME_CONFIG set to '${GK_FILENAME_CONFIG}' 
(was: '${KERNEL_CONFIG_FILENAME}')"
+       fi
+
        # Kernel
        GK_FILENAME_KERNEL=$(arch_replace "${KERNEL_FILENAME}")
        GK_FILENAME_KERNEL=$(kv_replace "${GK_FILENAME_KERNEL}")
@@ -221,6 +234,7 @@ determine_output_filenames() {
        fi
 
        local -a filename_vars
+       filename_vars+=( 'GK_FILENAME_CONFIG;--kernel-config-filename' )
        filename_vars+=( 'GK_FILENAME_KERNEL;--kernel-filename' )
        filename_vars+=( 'GK_FILENAME_KERNEL_SYMLINK;--kernel-symlink-name' )
        filename_vars+=( 'GK_FILENAME_INITRAMFS;--initramfs-filename' )
@@ -275,6 +289,7 @@ determine_real_args() {
        set_config_with_override BOOL   KERNEL_SOURCES                        
CMD_KERNEL_SOURCES                        "yes"
        set_config_with_override STRING INITRAMFS_FILENAME                    
CMD_INITRAMFS_FILENAME                    "${DEFAULT_INITRAMFS_FILENAME}"
        set_config_with_override STRING INITRAMFS_SYMLINK_NAME                
CMD_INITRAMFS_SYMLINK_NAME                "${DEFAULT_INITRAMFS_SYMLINK_NAME}"
+       set_config_with_override STRING KERNEL_CONFIG_FILENAME                
CMD_KERNEL_CONFIG_FILENAME                "${DEFAULT_KERNEL_CONFIG_FILENAME}"
        set_config_with_override STRING KERNEL_FILENAME                       
CMD_KERNEL_FILENAME                       "${DEFAULT_KERNEL_FILENAME}"
        set_config_with_override STRING KERNEL_SYMLINK_NAME                   
CMD_KERNEL_SYMLINK_NAME                   "${DEFAULT_KERNEL_SYMLINK_NAME}"
        set_config_with_override STRING SYSTEMMAP_FILENAME                    
CMD_SYSTEMMAP_FILENAME                    "${DEFAULT_SYSTEMMAP_FILENAME}"

Reply via email to