diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2019-07-13 13:01:51 +0200 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2019-07-14 13:58:10 +0200 |
commit | a5e0b2e18b5fb2cea8a4a2bd9a5f7b0b538f2328 (patch) | |
tree | 45cf3a4582570daeb4d6b8f8c65e94efb8854e8a | |
parent | gen_package.sh: Refactor gen_minkernpackage() (diff) | |
download | genkernel-a5e0b2e18b5fb2cea8a4a2bd9a5f7b0b538f2328.tar.gz genkernel-a5e0b2e18b5fb2cea8a4a2bd9a5f7b0b538f2328.tar.bz2 genkernel-a5e0b2e18b5fb2cea8a4a2bd9a5f7b0b538f2328.zip |
gen_package.sh: Refactor gen_modulespackage()
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
-rw-r--r-- | doc/genkernel.8.txt | 5 | ||||
-rwxr-xr-x | gen_cmdline.sh | 6 | ||||
-rwxr-xr-x | gen_determineargs.sh | 13 | ||||
-rwxr-xr-x | gen_package.sh | 32 | ||||
-rw-r--r-- | genkernel.conf | 6 |
5 files changed, 37 insertions, 25 deletions
diff --git a/doc/genkernel.8.txt b/doc/genkernel.8.txt index 4eb74ea..9e8d176 100644 --- a/doc/genkernel.8.txt +++ b/doc/genkernel.8.txt @@ -387,8 +387,9 @@ OUTPUT SETTINGS Archive file created using tar containing kernel and initramfs. NOTE: No modules outside of the initramfs will be included! -*--modulespackage*=<tbz2>:: - File to output a .tar.bz2'd modules after the callbacks have run. +*--modulespackage*=<archive>:: + Archive file created using tar containing modules after the callbacks + have run. *--kerncache*=<archive>:: Archive file created using tar containing kernel binary, content of diff --git a/gen_cmdline.sh b/gen_cmdline.sh index 5a24d94..b0699f9 100755 --- a/gen_cmdline.sh +++ b/gen_cmdline.sh @@ -165,8 +165,9 @@ longusage() { echo " --minkernpackage=<archive>" echo " Archive file created using tar containing kernel and" echo " initramfs" - echo " --modulespackage=<tbz2> File to output a .tar.bz2'd modules after the" - echo " callbacks have run" + echo " --modulespackage=<archive>" + echo " Archive file created using tar containing modules after" + echo " the callbacks have run" echo " --kerncache=<archive> Archive file created using tar containing kernel binary," echo " content of /lib/modules and the kernel config." echo " NOTE: Archive is created before the callbacks are run!" @@ -644,7 +645,6 @@ parse_cmdline() { ;; --modulespackage=*) CMD_MODULESPACKAGE="${*#*=}" - [ ${CMD_MODULESPACKAGE:0:1} != / ] && CMD_MODULESPACKAGE=$PWD/$CMD_MODULESPACKAGE print_info 2 "MODULESPACKAGE: ${CMD_MODULESPACKAGE}" ;; --kerncache=*) diff --git a/gen_determineargs.sh b/gen_determineargs.sh index fa36d57..44879e3 100755 --- a/gen_determineargs.sh +++ b/gen_determineargs.sh @@ -256,9 +256,18 @@ determine_real_args() { if [ -n "${MODULESPACKAGE}" ] then + MODULESPACKAGE=$(expand_file "${CMD_MODULESPACKAGE}") + if [[ -z "${MODULESPACKAGE}" || "${MODULESPACKAGE}" != *.tar* ]] + then + gen_die "--modulespackage value '${CMD_MODULESPACKAGE}' is invalid!" + fi + local modulespackage_dir=$(dirname "${MODULESPACKAGE}") - mkdir -p "${modulespackage_dir}" \ - || gen_die "Failed to create '${modulespackage_dir}'!" + if [ ! -d "${modulespackage_dir}" ] + then + mkdir -p "${modulespackage_dir}" \ + || gen_die "Failed to create '${modulespackage_dir}'!" + fi fi if [ -n "${KERNCACHE}" ] diff --git a/gen_package.sh b/gen_package.sh index b3ae3bd..dbc0aba 100755 --- a/gen_package.sh +++ b/gen_package.sh @@ -84,24 +84,26 @@ gen_minkernpackage() { } gen_modulespackage() { - print_info 1 '' - print_info 1 "Creating modules package in '${MODULESPACKAGE}'..." - rm -rf "${TEMP}/modulespackage" > /dev/null 2>&1 - mkdir "${TEMP}/modulespackage" || gen_die 'Could not make a directory for the kernel package!' - - if [ -d ${INSTALL_MOD_PATH}/lib/modules/${KV} ] + if [ -d "${INSTALL_MOD_PATH}/lib/modules/${KV}" ] then - mkdir -p ${TEMP}/modulespackage/lib/modules - cp -r "${INSTALL_MOD_PATH}/lib/modules/${KV}" "${TEMP}/modulespackage/lib/modules" - cd "${TEMP}/modulespackage" - /bin/tar -jcpf ${MODULESPACKAGE} * || gen_die 'Could not compress the modules package!' + print_info 1 '' + print_info 1 "Creating modules package in '${MODULESPACKAGE}' ..." + rm -rf "${TEMP}/modulespackage" >/dev/null 2>&1 + mkdir "${TEMP}/modulespackage" || gen_die "Failed to create '${TEMP}/modulespackage'!" + + mkdir -p "${TEMP}/modulespackage/lib/modules" || gen_die "Failed to create '${TEMP}/modulespackage/lib/modules'!" + cp -arP "${INSTALL_MOD_PATH}/lib/modules/${KV}" "${TEMP}/modulespackage/lib/modules" + + cd "${TEMP}/modulespackage" || gen_die "Failed to chdir to '${TEMP}/modulespackage'!" + + local -a tar_cmd=( "$(get_tar_cmd "${MODULESPACKAGE}")" ) + tar_cmd+=( '*' ) + + print_info 2 "COMMAND: ${tar_cmd[*]}" 1 0 1 + eval "${tar_cmd[@]}" || gen_die "Failed to create compressed modules package '${MODULESPACKAGE}'!" else - print_info 1 "Could not create modules package, '${INSTALL_MOD_PATH}/lib/modules/${KV}' was not found" + print_info 1 "'${INSTALL_MOD_PATH}/lib/modules/${KV}' was not found; Skipping creation of modules package in '${MODULESPACKAGE}' ..." fi - - cd "${TEMP}" - isTrue "${CMD_DEBUGCLEANUP}" && rm -rf "${TEMP}/modulespackage" > /dev/null - return 0 } gen_kerncache() { diff --git a/genkernel.conf b/genkernel.conf index 29a0b3a..9a5a838 100644 --- a/genkernel.conf +++ b/genkernel.conf @@ -323,9 +323,9 @@ DEFAULT_KERNEL_SOURCE="/usr/src/linux" #MODULES_group1="some-module" #MODULES_group2="" # Load no modules for this group -# File to output a .tar.bz2'd modules after the -# callbacks have run -#MODULESPACKAGE="/path/to/file.bz2" +# Archive file created using tar containing modules after +# the callbacks have run +#MODULESPACKAGE="/path/to/file.tar.xz" # Directory structure to include in the initramfs, # only available on >=2.6 kernels |