commit: 92cb275526ce94fb6118cb715622b4dd9a136444
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 24 05:49:13 2016 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Sun Jan 24 05:49:13 2016 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=92cb2755
Support nice(1) to affect the scheduling of the make invocations.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
doc/genkernel.8.txt | 3 +++
gen_cmdline.sh | 20 ++++++++++++++++++++
gen_compile.sh | 19 +++++++++++++------
gen_determineargs.sh | 1 +
genkernel.conf | 3 +++
5 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/doc/genkernel.8.txt b/doc/genkernel.8.txt
index 45af60e..ef0aa1e 100644
--- a/doc/genkernel.8.txt
+++ b/doc/genkernel.8.txt
@@ -233,6 +233,9 @@ LOW-LEVEL COMPILATION OPTIONS
*--makeopts*=<makeopts>::
GNU Make options such as -j2, etc.
+*--*[*no-*]*nice*[=<niceness>]::
+ Runs the kernel make at the default niceness (reduction in priority) of
+ 10, or in the case of --no-nice, runs the kernel make at normal
priority.
INITIALIZATION
~~~~~~~~~~~~~~
diff --git a/gen_cmdline.sh b/gen_cmdline.sh
index c4f027a..01adfdd 100755
--- a/gen_cmdline.sh
+++ b/gen_cmdline.sh
@@ -80,6 +80,9 @@ longusage() {
echo " --no-mountboot Don't mount BOOTDIR automatically"
echo " --bootdir=<dir> Set the location of the boot-directory,
default is /boot"
echo " --modprobedir=<dir> Set the location of the
modprobe.d-directory, default is /etc/modprobe.d"
+ echo " --nice Run the kernel make at the default nice
level (10)."
+ echo " --nice=<0-19> Run the kernel make at the selected
nice level."
+ echo " --no-nice Don't be nice while running the kernel
make."
echo " Initialization"
echo " --splash=<theme> Enable framebuffer splash using <theme>"
echo " --splash-res=<res> Select splash theme resolutions to
install"
@@ -598,6 +601,23 @@ parse_cmdline() {
--config=*)
print_info 2 "CMD_GK_CONFIG: `parse_opt "$*"`"
;;
+ --nice)
+ CMD_NICE=10
+ print_info 2 "CMD_NICE: ${CMD_NICE}"
+ ;;
+ --nice=*)
+ CMD_NICE=`parse_opt "$*"`
+ if [ ${CMD_NICE} -lt 0 -o ${CMD_NICE} -gt 19 ]
+ then
+ echo "Error: Illegal value specified for
--nice= parameter."
+ exit 1
+ fi
+ print_info 2 "CMD_NICE: ${CMD_NICE}"
+ ;;
+ --no-nice)
+ CMD_NICE=0
+ print_info 2 "CMD_NICE: ${CMD_NICE}"
+ ;;
all)
BUILD_KERNEL=1
BUILD_MODULES=1
diff --git a/gen_compile.sh b/gen_compile.sh
index 99cf37c..c26a652 100755
--- a/gen_compile.sh
+++ b/gen_compile.sh
@@ -261,25 +261,32 @@ compile_generic() {
esac
shift 2
+ if [ ${NICE} -ne 0 ]
+ then
+ NICEOPTS="nice -n${NICE} "
+ else
+ NICEOPTS=""
+ fi
+
# the eval usage is needed in the next set of code
# as ARGS can contain spaces and quotes, eg:
# ARGS='CC="ccache gcc"'
if [ "${argstype}" == 'kernelruntask' ]
then
# Silent operation, forced -j1
- print_info 2 "COMMAND: ${MAKE} ${MAKEOPTS} -j1 ${ARGS}
${target} $*" 1 0 1
- eval ${MAKE} -s ${MAKEOPTS} -j1 "${ARGS}" ${target} $*
+ print_info 2 "COMMAND: ${NICEOPTS}${MAKE} ${MAKEOPTS} -j1
${ARGS} ${target} $*" 1 0 1
+ eval ${NICEOPTS}${MAKE} -s ${MAKEOPTS} -j1 "${ARGS}" ${target}
$*
RET=$?
elif [ "${LOGLEVEL}" -gt "1" ]
then
# Output to stdout and logfile
- print_info 2 "COMMAND: ${MAKE} ${MAKEOPTS} ${ARGS} ${target}
$*" 1 0 1
- eval ${MAKE} ${MAKEOPTS} ${ARGS} ${target} $* 2>&1 | tee -a
${LOGFILE}
+ print_info 2 "COMMAND: ${NICEOPTS}${MAKE} ${MAKEOPTS} ${ARGS}
${target} $*" 1 0 1
+ eval ${NICEOPTS}${MAKE} ${MAKEOPTS} ${ARGS} ${target} $* 2>&1 |
tee -a ${LOGFILE}
RET=${PIPESTATUS[0]}
else
# Output to logfile only
- print_info 2 "COMMAND: ${MAKE} ${MAKEOPTS} ${ARGS} ${target}
$*" 1 0 1
- eval ${MAKE} ${MAKEOPTS} ${ARGS} ${target} $* >> ${LOGFILE} 2>&1
+ print_info 2 "COMMAND: ${NICEOPTS}${MAKE} ${MAKEOPTS} ${ARGS}
${target} $*" 1 0 1
+ eval ${NICEOPTS}${MAKE} ${MAKEOPTS} ${ARGS} ${target} $* >>
${LOGFILE} 2>&1
RET=$?
fi
[ ${RET} -ne 0 ] &&
diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index cbc88ba..522996d 100755
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -78,6 +78,7 @@ determine_real_args() {
set_config_with_override STRING COMPRESS_INITRD
CMD_COMPRESS_INITRD "$DEFAULT_COMPRESS_INITRD"
set_config_with_override STRING COMPRESS_INITRD_TYPE
CMD_COMPRESS_INITRD_TYPE "$DEFAULT_COMPRESS_INITRD_TYPE"
set_config_with_override STRING MAKEOPTS CMD_MAKEOPTS
"$DEFAULT_MAKEOPTS"
+ set_config_with_override STRING NICE CMD_NICE
"10"
set_config_with_override STRING KERNEL_MAKE CMD_KERNEL_MAKE
"$DEFAULT_KERNEL_MAKE"
set_config_with_override STRING UTILS_MAKE CMD_UTILS_MAKE
"$DEFAULT_UTILS_MAKE"
set_config_with_override STRING KERNEL_CC CMD_KERNEL_CC
"$DEFAULT_KERNEL_CC"
diff --git a/genkernel.conf b/genkernel.conf
index 2e38e41..6b974e1 100644
--- a/genkernel.conf
+++ b/genkernel.conf
@@ -55,6 +55,9 @@ USECOLOR="yes"
# argument is: <number of processors>*<number of cores per processor>+1
#MAKEOPTS="$(portageq envvar MAKEOPTS)"
+# Run the kernel make at the following NICE level. Default is 10.
+# NICE=10
+
# Add in LVM support from static binaries if they exist on the system, or
# compile static LVM binaries if static ones do not exist.
#LVM="no"