1- __version__ = "0.4.2 "
1+ __version__ = "0.4.3 "
22
33from zenlib .util import contains
44
55
6- def resume (self ) -> None :
6+ def resume (self ) -> str :
77 """Returns a shell script handling resume from hibernation.
88 Checks that /sys/power/resume is writable, resume= is set, and noresume is not set, if so,
99 checks if UUID= or PARTUUID= or LABEL= is in the resume var,
@@ -17,46 +17,48 @@ def resume(self) -> None:
1717 If the system is freshly booted, it will not be able to resume, as there is no hibernation image.
1818 Distinguising between a fresh boot and missing/borked hibernation image is not possible at run time.
1919 """
20- return [
20+ return r"""
2121 # Check resume support
22- '[ -n "$1" ] || (ewarn "No device?" ; return 1)' ,
23- '[ -w /sys/power/resume ] || (ewarn "Kernel does not support resume!" ; return 1)' ,
24- '[[ ! "$(cat /sys/power/resume)" == "0:0" ]] || ewarn "/sys/power/resume not empty, resume has already been attempted!"' ,
22+ [ -n "$1" ] || (ewarn "No device?" ; return 1)
23+ [ -w /sys/power/resume ] || (ewarn "Kernel does not support resume!" ; return 1)
24+ # TODO: Make POSIX compliant
25+ [[ ! "$(cat /sys/power/resume)" == "0:0" ]] || ewarn "/sys/power/resume not empty, resume has already been attempted!"
2526 # Safety checks
26- " if ! [ -z $(lsblk -Q MOUNTPOINT)] ; then" ,
27- r' eerror "Cannot safely resume with mounted block devices:\n$(lsblk -Q MOUNTPOINT -no PATH)"' ,
28- " return 1" ,
29- "fi" ,
30- ' [ -b "$1" ] || (ewarn "\' $1\' is not a valid block device!" ; return 1)' ,
31- ' einfo "Attempting resume from: $1"' ,
32- ' echo -n "$1" > /sys/power/resume' ,
33- ' einfo "No image on $resume"' ,
34- " return 0" ,
35- ]
27+ if ! [ -z $(lsblk -Q MOUNTPOINT)] ; then
28+ eerror "Cannot safely resume with mounted block devices:\n$(lsblk -Q MOUNTPOINT -no PATH)"
29+ return 1
30+ fi
31+ [ -b "$1" ] || (ewarn "\'$1\' is not a valid block device!" ; return 1)
32+ einfo "Attempting resume from: $1"
33+ echo -n "$1" > /sys/power/resume
34+ einfo "No image on: $resume"
35+ return 0
36+ """
3637
3738
38- def handle_early_resume (self ) -> None :
39- return [
40- "resumeval=$(readvar resume)" , # read the cmdline resume var
41- 'if ! check_var noresume && [ -n "$resumeval" ] && [ -w /sys/power/resume ]; then' ,
42- ' if echo "$resumeval" | grep -q "UUID=" ||' , # resolve uuid to device
43- ' echo "$resumeval" | grep -q "PARTUUID=" ||' , # or resolve partuuid to device
44- ' echo "$resumeval" | grep -q "LABEL=" ; then' , # or resolve label to device
45- ' resume=$(blkid -t "$resumeval" -o device)' ,
46- " else" ,
47- ' resume="$resumeval"' ,
48- " fi" ,
49- " if ! [ -z $resume ] ; then" ,
50- ' if ! resume "$resume" ; then' ,
51- ' eerror "If you wish to continue booting, remove the resume= kernel parameter."' ,
52- ''' eerror " or run 'setvar noresume 1' from the recovery shell to skip resuming."''' ,
53- ' rd_fail "Failed to resume from $(readvar resume)."' ,
54- " fi" ,
55- " else" ,
56- " einfo \" Resume device '$resumeval' not found\" " ,
57- " fi" ,
58- "fi" ,
59- ]
39+ def handle_early_resume (self ) -> str :
40+ return """
41+ resumeval=$(readvar resume)", # read the cmdline resume var
42+ if ! check_var noresume && [ -n "$resumeval" ] && [ -w /sys/power/resume ]; then
43+ # Resolve the UUID, PARTUUID, or LABEL to a device
44+ if echo "$resumeval" | grep -q "UUID=" ||
45+ echo "$resumeval" | grep -q "PARTUUID=" ||
46+ echo "$resumeval" | grep -q "LABEL=" ; then
47+ resume=$(blkid -t "$resumeval" -o device)
48+ else
49+ resume="$resumeval"
50+ fi
51+ if ! [ -z $resume ] ; then
52+ if ! resume "$resume" ; then
53+ eerror "If you wish to continue booting, remove the resume= kernel parameter."
54+ eerror " or run 'setvar noresume 1' from the recovery shell to skip resuming."
55+ rd_fail "Failed to resume from $(readvar resume)."
56+ fi
57+ else
58+ einfo \" Resume device '$resumeval' not found\"
59+ fi
60+ fi
61+ """
6062
6163
6264@contains ("late_resume" )
0 commit comments