Added patch from Daniel Drake <dsd@gentoo.org> in bug #156445 to add userspace suspend support to genkernel.

git-svn-id: svn+ssh://svn.gentoo.org/var/svnroot/genkernel/trunk@465 67a159dc-881f-0410-a524-ba9dfbe2cb84
cleanup-cruft
Chris Gianelloni 18 years ago
parent 33bd91d532
commit 8b4b874b64

@ -2,6 +2,13 @@
# Copyright 2006-2006 Gentoo Foundation; Distributed under the GPL v2 # Copyright 2006-2006 Gentoo Foundation; Distributed under the GPL v2
# $Header: $ # $Header: $
13 Dec 2006; Chris Gianelloni <wolf31o2@gentoo.org> gen_cmdline.sh,
gen_compile.sh, gen_configkernel.sh, gen_determineargs.sh,
gen_initramfs.sh, gen_initrd.sh, generic/initrd.scripts, generic/linuxrc,
genkernel.8, genkernel.conf:
Added patch from Daniel Drake <dsd@gentoo.org> in bug #156445 to add
userspace suspend support to genkernel.
13 Dec 2006; Chris Gianelloni <wolf31o2@gentoo.org> gen_initramfs.sh, 13 Dec 2006; Chris Gianelloni <wolf31o2@gentoo.org> gen_initramfs.sh,
gen_initrd.sh: gen_initrd.sh:
Added debug level to LUKS print_info messages for bug #156410. Added debug level to LUKS print_info messages for bug #156410.

@ -77,6 +77,7 @@ longusage() {
echo " --lvm2 Include LVM2 support" echo " --lvm2 Include LVM2 support"
# echo " --unionfs Include UNIONFS support" # echo " --unionfs Include UNIONFS support"
echo " --dmraid Include DMRAID support" echo " --dmraid Include DMRAID support"
echo " --suspend Include userspace suspend/resume (uswsusp) support"
echo " --slowusb Enables extra pauses for slow USB CD boots" echo " --slowusb Enables extra pauses for slow USB CD boots"
echo " --bootloader=grub Add new kernel to GRUB configuration" echo " --bootloader=grub Add new kernel to GRUB configuration"
echo " --linuxrc=<file> Specifies a user created linuxrc" echo " --linuxrc=<file> Specifies a user created linuxrc"
@ -226,6 +227,17 @@ parse_cmdline() {
CMD_LVM2=1 CMD_LVM2=1
print_info 2 "CMD_LVM2: $CMD_LVM2" print_info 2 "CMD_LVM2: $CMD_LVM2"
;; ;;
--suspend)
if [ ! -e /etc/suspend.conf ]
then
echo 'Error: --suspend requires sys-power/suspend to be installed'
echo ' on the host system; try "emerge sys-power/suspend".'
echo ' Once installed, configure the resume settings in /etc/suspend.conf'
exit 1
fi
CMD_SUSPEND=1
print_info 2 "CMD_SUSPEND: $CMD_SUSPEND"
;;
--no-busybox) --no-busybox)
CMD_NO_BUSYBOX=1 CMD_NO_BUSYBOX=1
print_info 2 "CMD_NO_BUSYBOX: $CMD_NO_BUSYBOX" print_info 2 "CMD_NO_BUSYBOX: $CMD_NO_BUSYBOX"

@ -187,8 +187,10 @@ compile_generic() {
local RET local RET
[ "$#" -lt '2' ] && [ "$#" -lt '2' ] &&
gen_die 'compile_generic(): improper usage!' gen_die 'compile_generic(): improper usage!'
local target=${1}
local argstype=${2}
if [ "${2}" = 'kernel' ] || [ "${2}" = 'runtask' ] if [ "${argstype}" = 'kernel' ] || [ "${argstype}" = 'runtask' ]
then then
export_kernel_args export_kernel_args
MAKE=${KERNEL_MAKE} MAKE=${KERNEL_MAKE}
@ -197,42 +199,43 @@ compile_generic() {
export_utils_args export_utils_args
MAKE=${UTILS_MAKE} MAKE=${UTILS_MAKE}
fi fi
case "$2" in case "${argstype}" in
kernel) ARGS="`compile_kernel_args`" ;; kernel) ARGS="`compile_kernel_args`" ;;
utils) ARGS="`compile_utils_args`" ;; utils) ARGS="`compile_utils_args`" ;;
*) ARGS="" ;; # includes runtask *) ARGS="" ;; # includes runtask
esac esac
shift 2
# the eval usage is needed in the next set of code # the eval usage is needed in the next set of code
# as ARGS can contain spaces and quotes, eg: # as ARGS can contain spaces and quotes, eg:
# ARGS='CC="ccache gcc"' # ARGS='CC="ccache gcc"'
if [ "${2}" == 'runtask' ] if [ "${argstype}" == 'runtask' ]
then then
print_info 2 "COMMAND: ${MAKE} ${MAKEOPTS/-j?/j1} ${ARGS} ${1}" 1 0 1 print_info 2 "COMMAND: ${MAKE} ${MAKEOPTS/-j?/j1} ${ARGS} ${target} $*" 1 0 1
eval ${MAKE} -s ${MAKEOPTS/-j?/-j1} "${ARGS}" ${1} eval ${MAKE} -s ${MAKEOPTS/-j?/-j1} "${ARGS}" ${target} $*
RET=$? RET=$?
elif [ "${DEBUGLEVEL}" -gt "1" ] elif [ "${DEBUGLEVEL}" -gt "1" ]
then then
# Output to stdout and debugfile # Output to stdout and debugfile
print_info 2 "COMMAND: ${MAKE} ${MAKEOPTS} ${ARGS} ${1}" 1 0 1 print_info 2 "COMMAND: ${MAKE} ${MAKEOPTS} ${ARGS} ${target} $*" 1 0 1
eval ${MAKE} ${MAKEOPTS} ${ARGS} ${1} 2>&1 | tee -a ${DEBUGFILE} eval ${MAKE} ${MAKEOPTS} ${ARGS} ${target} $* 2>&1 | tee -a ${DEBUGFILE}
RET=${PIPESTATUS[0]} RET=${PIPESTATUS[0]}
else else
# Output to debugfile only # Output to debugfile only
print_info 2 "COMMAND: ${MAKE} ${MAKEOPTS} ${ARGS} ${1}" 1 0 1 print_info 2 "COMMAND: ${MAKE} ${MAKEOPTS} ${ARGS} ${1} $*" 1 0 1
eval ${MAKE} ${MAKEOPTS} ${ARGS} ${1} >> ${DEBUGFILE} 2>&1 eval ${MAKE} ${MAKEOPTS} ${ARGS} ${target} $* >> ${DEBUGFILE} 2>&1
RET=$? RET=$?
fi fi
[ "${RET}" -ne '0' ] && [ "${RET}" -ne '0' ] &&
gen_die "Failed to compile the \"${1}\" target..." gen_die "Failed to compile the \"${target}\" target..."
unset MAKE unset MAKE
unset ARGS unset ARGS
if [ "${2}" = 'kernel' ] if [ "${argstype}" = 'kernel' ]
then then
unset_kernel_args unset_kernel_args
elif [ "${2}" = 'utils' ] elif [ "${argstype}" = 'utils' ]
then then
unset_utils_args unset_utils_args
fi fi
@ -529,6 +532,39 @@ compile_dmraid() {
fi fi
} }
compile_suspend() {
[ -f "${SUSPEND_BINCACHE}" ] && return
[ -f "${SUSPEND_SRCTAR}" ] ||
gen_die "Could not find SUSPEND source tarball: ${SUSPEND_SRCTAR}! Please place it there, or place another version, changing /etc/genkernel.conf as necessary!"
cd ${TEMP}
rm -rf ${SUSPEND_DIR} > /dev/null
/bin/tar -zxpf ${SUSPEND_SRCTAR} ||
gen_die 'Could not extract SUSPEND source tarball!'
[ -d "${SUSPEND_DIR}" ] ||
gen_die "SUSPEND directory ${DMRAID_DIR} is invalid!"
cd "${SUSPEND_DIR}"
if [ -f "${GK_SHARE}/pkg/suspend-0.5-Makefile.patch" ]
then
patch -p1 -i \
${GK_SHARE}/pkg/suspend-0.5-Makefile.patch \
|| gen_die "Failed patching suspend"
fi
print_info 1 'suspend: >> Compiling...'
compile_generic '' utils CC_FLAGS= LD_FLAGS=
print_info 1 ' >> Copying to bincache...'
mkdir -p "${TEMP}/bincache/sbin"
cp -f resume "${TEMP}/bincache/sbin" ||
gen_die 'Could not copy resume binary'
cd "${TEMP}/bincache"
/bin/tar -cjf "${SUSPEND_BINCACHE}" * ||
gen_die 'Could not create suspend binary cache'
cd "${TEMP}"
rm -rf bincache suspend-0.5
}
compile_modutils() { compile_modutils() {
# I've disabled dietlibc support for the time being since the # I've disabled dietlibc support for the time being since the
# version we use misses a few needed system calls. # version we use misses a few needed system calls.

@ -120,4 +120,11 @@ config_kernel() {
then then
sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_FB_SPLASH is.*/CONFIG_FB_SPLASH=y/g' sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_FB_SPLASH is.*/CONFIG_FB_SPLASH=y/g'
fi fi
# This check isn't complete: SOFTWARE_SUSPEND has extra deps on some systems such as CPU hotplug
if isTrue ${CMD_SUSPEND}
then
sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_SOFTWARE_SUSPEND is.*/CONFIG_SOFTWARE_SUSPEND=y/g'
fi
} }

@ -212,6 +212,7 @@ determine_real_args() {
UNIONFS_BINCACHE=`cache_replace "${UNIONFS_BINCACHE}"` UNIONFS_BINCACHE=`cache_replace "${UNIONFS_BINCACHE}"`
UNIONFS_MODULES_BINCACHE=`cache_replace "${UNIONFS_MODULES_BINCACHE}"` UNIONFS_MODULES_BINCACHE=`cache_replace "${UNIONFS_MODULES_BINCACHE}"`
BLKID_BINCACHE=`cache_replace "${BLKID_BINCACHE}"` BLKID_BINCACHE=`cache_replace "${BLKID_BINCACHE}"`
SUSPEND_BINCACHE=`cache_replace "${SUSPEND_BINCACHE}"`
DEFAULT_KERNEL_CONFIG=`arch_replace "${DEFAULT_KERNEL_CONFIG}"` DEFAULT_KERNEL_CONFIG=`arch_replace "${DEFAULT_KERNEL_CONFIG}"`
BUSYBOX_CONFIG=`arch_replace "${BUSYBOX_CONFIG}"` BUSYBOX_CONFIG=`arch_replace "${BUSYBOX_CONFIG}"`
@ -230,6 +231,7 @@ determine_real_args() {
UNIONFS_BINCACHE=`arch_replace "${UNIONFS_BINCACHE}"` UNIONFS_BINCACHE=`arch_replace "${UNIONFS_BINCACHE}"`
UNIONFS_MODULES_BINCACHE=`arch_replace "${UNIONFS_MODULES_BINCACHE}"` UNIONFS_MODULES_BINCACHE=`arch_replace "${UNIONFS_MODULES_BINCACHE}"`
BLKID_BINCACHE=`arch_replace "${BLKID_BINCACHE}"` BLKID_BINCACHE=`arch_replace "${BLKID_BINCACHE}"`
SUSPEND_BINCACHE=`arch_replace "${SUSPEND_BINCACHE}"`
if [ "${CMD_BOOTSPLASH}" != '' ] if [ "${CMD_BOOTSPLASH}" != '' ]
then then
@ -424,6 +426,13 @@ determine_real_args() {
LVM2=0 LVM2=0
fi fi
if isTrue "${CMD_SUSPEND}"
then
SUSPEND=1
else
SUSPEND=0
fi
if isTrue "${CMD_EVMS2}" if isTrue "${CMD_EVMS2}"
then then
EVMS2=1 EVMS2=1

@ -173,6 +173,23 @@ create_unionfs_tools_cpio(){
fi fi
} }
create_suspend_cpio(){
if [ -d "${TEMP}/initramfs-suspend-temp" ];
then
rm -r "${TEMP}/initramfs-suspend-temp/"
fi
print_info 1 'SUSPEND: Adding support (compiling binaries)...'
compile_suspend
mkdir -p "${TEMP}/initramfs-suspend-temp/"
/bin/tar -jxpf "${SUSPEND_BINCACHE}" -C "${TEMP}/initramfs-suspend-temp" ||
gen_die "Could not extract suspend binary cache!"
mkdir -p "${TEMP}/initramfs-suspend-temp/etc"
cp -f /etc/suspend.conf "${TEMP}/initramfs-suspend-temp/etc" ||
gen_die 'Could not copy /etc/suspend.conf'
cd "${TEMP}/initramfs-suspend-temp/"
find . -print | cpio --quiet -o -H newc | gzip -9 > ${CACHE_CPIO_DIR}/initramfs-suspend-${SUSPEND_VER}.cpio.gz
}
create_dmraid_cpio(){ create_dmraid_cpio(){
# DMRAID # DMRAID
if [ "${DMRAID}" = '1' ] if [ "${DMRAID}" = '1' ]
@ -510,6 +527,10 @@ merge_initramfs_cpio_archives(){
then then
MERGE_LIST="${MERGE_LIST} initramfs-unionfs-${UNIONFS_VER}-modules-${KV}.cpio.gz" MERGE_LIST="${MERGE_LIST} initramfs-unionfs-${UNIONFS_VER}-modules-${KV}.cpio.gz"
fi fi
if [ "${SUSPEND}" -eq '1' -a -e "${CACHE_CPIO_DIR}/initramfs-suspend-${SUSPEND_VER}.cpio.gz" ]
then
MERGE_LIST="${MERGE_LIST} initramfs-suspend-${SUSPEND_VER}.cpio.gz"
fi
if [ "${EVMS2}" -eq '1' -a -e "${CACHE_CPIO_DIR}/initramfs-evms2.cpio.gz" ] if [ "${EVMS2}" -eq '1' -a -e "${CACHE_CPIO_DIR}/initramfs-evms2.cpio.gz" ]
then then
MERGE_LIST="${MERGE_LIST} initramfs-evms2.cpio.gz" MERGE_LIST="${MERGE_LIST} initramfs-evms2.cpio.gz"
@ -617,6 +638,12 @@ create_initramfs() {
create_unionfs_tools_cpio create_unionfs_tools_cpio
fi fi
if [ "${SUSPEND}" -eq '1' ]
then
print_info 1 " >> Creating suspend cpio archive..."
create_suspend_cpio
fi
if [ "${LVM2}" -eq '1' ] if [ "${LVM2}" -eq '1' ]
then then

@ -144,6 +144,17 @@ create_base_initrd_sys() {
gen_die "Could not extract unionfs tools binary cache!"; gen_die "Could not extract unionfs tools binary cache!";
fi fi
# Suspend
if [ "${SUSPEND}" = '1' ]
then
print_info 1 'SUSPEND: Adding support (compiling binaries)...'
compile_suspend
/bin/tar -jxpf "${SUSPEND_BINCACHE}" -C "${TEMP}/initrd-temp" ||
gen_die "Could not extract suspend binary cache!"
mkdir -p "${TEMP}/initrd-temp/etc"
cp -f /etc/suspend.conf "${TEMP}/initrd-temp/etc" ||
gen_die 'Could not copy /etc/suspend.conf'
fi
# DMRAID # DMRAID
if [ "${DMRAID}" = '1' ] if [ "${DMRAID}" = '1' ]

@ -743,6 +743,18 @@ setup_unionfs() {
fi fi
} }
suspend_resume() {
[ -x /sbin/resume ] || return 0
/sbin/resume
local ret=$?
if [ "${ret}" -eq 0 ]; then
exit 0
fi
return 0
}
suspend2_resume() { suspend2_resume() {
if [ -d /proc/suspend2 ] || [ -d /sys/power/suspend2 ]; then if [ -d /proc/suspend2 ] || [ -d /sys/power/suspend2 ]; then
local splash_theme local splash_theme

@ -250,6 +250,7 @@ fi
# Run debug shell if requested # Run debug shell if requested
rundebugshell rundebugshell
suspend_resume
suspend2_resume suspend2_resume
if [ "${CDROOT}" -eq '1' ] if [ "${CDROOT}" -eq '1' ]

@ -186,6 +186,13 @@ Add in LVM2 support from static binaries if they exist on the system,
or compile static LVM2 binaries if static ones do not exist. or compile static LVM2 binaries if static ones do not exist.
.RE .RE
.TP .TP
\fB\-\-suspend\fR
.RS
Add support for userspace suspend/resume (uswsusp). This option requires
Linux 2.6.17 or newer, \fBsys-power/suspend\fR installed on the host system,
and resume configured in \fB/etc/suspend.conf\fR.
.RE
.TP
\fB\-\-no-udev\fR \fB\-\-no-udev\fR
Force devfs on 2.6 series kernels. Not recommended or supported. Force devfs on 2.6 series kernels. Not recommended or supported.
.TP .TP

@ -142,3 +142,9 @@ E2FSPROGS_VER="VERSION_E2FSPROGS"
E2FSPROGS_DIR="e2fsprogs-${E2FSPROGS_VER}" E2FSPROGS_DIR="e2fsprogs-${E2FSPROGS_VER}"
E2FSPROGS_SRCTAR="${GK_SHARE}/pkg/e2fsprogs-${E2FSPROGS_VER}.tar.gz" E2FSPROGS_SRCTAR="${GK_SHARE}/pkg/e2fsprogs-${E2FSPROGS_VER}.tar.gz"
BLKID_BINCACHE="%%CACHE%%/blkid-${E2FSPROGS_VER}-%%ARCH%%.bz2" BLKID_BINCACHE="%%CACHE%%/blkid-${E2FSPROGS_VER}-%%ARCH%%.bz2"
SUSPEND_VER="VERSION_SUSPEND"
SUSPEND_DIR="suspend-${SUSPEND_VER}"
SUSPEND_SRCTAR="${GK_SHARE}/pkg/suspend-${SUSPEND_VER}.tar.gz"
SUSPEND_BINCACHE="%%CACHE%%/suspend-${SUSPEND_VER}-%%ARCH%%.tar.bz2"

Loading…
Cancel
Save