aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/genkernel.8.txt5
-rwxr-xr-xgen_cmdline.sh6
-rwxr-xr-xgen_determineargs.sh13
-rwxr-xr-xgen_package.sh32
-rw-r--r--genkernel.conf6
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