Browse Source

mkinitrd: remove bash4ism (patch21), add vine patches to repo

git-svn-id: http://trac.vinelinux.org/repos/projects/specs@806 ec354946-7b23-47d6-9f5a-488ba84defc7
daisuke 14 years ago
parent
commit
81f274d841

+ 96 - 0
m/mkinitrd/mkinitrd-6.0.93-remove-bash4ism.patch

@@ -0,0 +1,96 @@
+diff -up mkinitrd-6.0.93/mkinitrd.remove-bash4ism mkinitrd-6.0.93/mkinitrd
+--- mkinitrd-6.0.93/mkinitrd.remove-bash4ism	2010-04-11 23:09:41.000000000 +0900
++++ mkinitrd-6.0.93/mkinitrd	2010-04-12 01:07:01.000000000 +0900
+@@ -345,7 +345,7 @@ findstoragedriverinsys () {
+         sysfs=$(readlink ${sysfs%/*})
+     fi
+ 
+-    if [[ ! "$sysfs" =~ '^/sys/.*block/.*$' ]]; then
++    if ! (echo "$sysfs" | egrep -q '^/sys/.*block/.*$' ); then
+         error "WARNING: $sysfs is a not a block sysfs path, skipping"
+         return
+     fi
+@@ -356,12 +356,12 @@ findstoragedriverinsys () {
+         *) handleddevices="$handleddevices $sysfs" ;;
+     esac
+ 
+-    if [[ "$sysfs" =~ '^/sys/.*block/md[0-9]+$' ]]; then
++    if ( echo "$sysfs" | egrep -q '^/sys/.*block/md[0-9]+$' ); then
+         local raid=${sysfs##*/}
+         vecho "Found MDRAID component $raid"
+         handleraid $raid
+     fi
+-    if [[ "$sysfs" =~ '^/sys/.*block/dm-[0-9]+$' ]]; then
++    if ( echo "$sysfs" | egrep -q '^/sys/.*block/dm-[0-9]+$' ); then
+         vecho "Found DeviceMapper component ${sysfs##*/}"
+         handledm $(cat $sysfs/dev |cut -d : -f 1) $(cat $sysfs/dev |cut -d : -f 2)
+     fi
+@@ -541,7 +541,7 @@ handledm() {
+                 dmname=$(dmsetup info -j $major -m $minor -c --noheadings -o name)
+                 # do the device resolution dance to get /dev/mapper/foo
+                 # since 'lvm lvs' doesn't like dm-X device nodes
+-                if [[ "$slavedev" =~ ^dm- ]]; then
++                if (echo "$slavedev" | egrep -q '^dm-' ); then
+                     majmin=$(get_numeric_dev dec "/dev/$slavedev")
+                     for dmdev in /dev/mapper/* ; do
+                         dmnum=$(get_numeric_dev dev $dmdev)
+@@ -1266,7 +1266,7 @@ if [ "x$PROBE" == "xyes" ]; then
+     else
+         # check if it's root by label
+         rdev=$rootdev
+-        if [[ "$rdev" =~ ^(UUID=|LABEL=) ]]; then
++        if ( echo "$rdev" | egrep -q '^(UUID=|LABEL=)' ); then
+             rdev=$(resolve_device_name "$rdev")
+         fi
+         rootopts=$(echo $rootopts | sed -e 's/^r[ow],//' -e 's/,_netdev//' -e 's/_netdev//' -e 's/,r[ow],$//' -e 's/,r[ow],/,/' -e 's/^r[ow]$/defaults/' -e 's/$/,ro/')
+@@ -1277,7 +1277,7 @@ if [ "x$PROBE" == "xyes" ]; then
+     [ -z "$thawdev" ] && thawdev=$(awk '/^[ \t]*[^#]/ { if ($3 == "swap") { print $1; exit }}' $fstab)
+     swsuspdev="$thawdev"
+     if [ -n "$swsuspdev" ]; then
+-        if [[ "$swsuspdev" =~ ^(UUID=|LABEL=) ]]; then
++        if ( echo "$swsuspdev" | egrep -q '^(UUID=|LABEL=)' ); then
+             swsuspdev=$(resolve_device_name "$swsuspdev")
+         fi
+ 	findstoragedriver "$swsuspdev"
+@@ -1315,7 +1315,7 @@ fi
+ # loopfs : filesystem of loopdev
+ # loopots : options to mount loopfs
+ 
+-if [ -n "${loopfs}" ] || [[ "$rootopts" =~ "loop" ]]; then
++if [ -n "${loopfs}" ] || (echo "$rootopts" | grep "loop" ); then
+     	# FIXME: probe this somehow?
+ 	
+ 	rootdev=/dev/loop0
+@@ -1546,12 +1546,12 @@ emitmodules() {
+ 
+         # we mount usbfs before the first module *after* the HCDs
+         if [ "$usb_mounted" == "prep" ]; then
+-            if [[ "$module" =~ ".hci[_-]hcd" ]]; then
++            if (echo "$module" | egrep -q ".hci[_-]hcd" ); then
+                 usb_mounted="no"
+                 found_hcd_module="yes"
+             fi
+         elif [ "$usb_mounted" == "no" ]; then
+-            if [[ ! "$module" =~ ".hci[_-]hcd" ]]; then
++            if ! (echo "$module" | egrep -q ".hci[_-]hcd" ); then
+                 usb_mounted=yes
+                 emit "mount -t usbfs /proc/bus/usb /proc/bus/usb"
+             fi
+@@ -1566,7 +1566,7 @@ emitmodules() {
+ 
+         # Hack - we need a delay after loading usb-storage to give things
+         #        time to settle down before we start looking a block devices
+-        if [[ "$module" =~ usb[_-]storage ]] || [ "$module" = "ub" ]; then 
++        if (echo "$module" | egrep -q 'usb[_-]storage' ) || [ "$module" = "ub" ]; then
+             if [ "$found_hcd_module" == "no" -a "$usb_mounted" == "prep" ]; then
+                 usb_mounted=yes
+                 emit "mount -t usbfs /proc/bus/usb /proc/bus/usb"
+@@ -1843,7 +1843,7 @@ if [ -z "$noresume" ]; then
+     if [ -n "$tuxonicefwtarget" ]; then
+         inst_tuxonice $SWSUSPPROC $MNTIMAGE $tuxonicefwtarget $USERUIPROC
+     elif [ -n "$swsuspdev" ]; then
+-        if [[ "$swsuspdev" =~ ^(UUID=|LABEL=) ]]; then
++        if (echo "$swsuspdev" | egrep -q '^(UUID=|LABEL=)' ); then
+             swsuspdev=$(resolve_device_name "$swsuspdev")
+         fi
+ 

+ 305 - 0
m/mkinitrd/mkinitrd-6.0.93-tuxonice.patch

@@ -0,0 +1,305 @@
+diff -up mkinitrd-6.0.93/mkinitrd.tuxonice mkinitrd-6.0.93/mkinitrd
+--- mkinitrd-6.0.93/mkinitrd.tuxonice	2010-03-18 13:27:18.000000000 +0900
++++ mkinitrd-6.0.93/mkinitrd	2010-03-18 14:37:24.000000000 +0900
+@@ -74,6 +74,8 @@ LD_SO_CONF=/etc/ld.so.conf
+ LD_SO_CONF_D=/etc/ld.so.conf.d/
+ 
+ [ -e /etc/sysconfig/mkinitrd ] && . /etc/sysconfig/mkinitrd
++[ -e /etc/sysconfig/mkinitrd-suspend2 ] && . /etc/sysconfig/mkinitrd-suspend2
++[ -e /etc/sysconfig/mkinitrd-tuxonice ] && . /etc/sysconfig/mkinitrd-tuxonice
+ 
+ CONFMODS="$MODULES"
+ MODULES=""
+@@ -91,7 +93,18 @@ modulefile=/etc/modules.conf
+ rc=0
+ nolvm=""
+ nodmraid=""
+-
++tuxoniceuserui="none"
++tuxoniceversion="30001"
++tuxonicefwtarget=""
++splashtheme="suspend2"
++
++DSDT="/boot/DSDT.aml"
++SWSUSPPROC="/proc/suspend2"
++USERUIPROC="userui_program"
++FWLOCPROC="filewriter_target"
++RESUMETAR="resume2"
++FWIDENT="Suspend2"
++UIPREFIX="suspend2"
+ IMAGESIZE=8000
+ PRESCSIMODS=""
+ fstab="/etc/fstab"
+@@ -111,6 +124,9 @@ usage () {
+     $cmd "       [--image-version] [--force-raid-probe | --omit-raid-modules]"
+     $cmd "       [--with=<module>] [--force-lvm-probe | --omit-lvm-modules]"
+     $cmd "       [--builtin=<module>] [--omit-dmraid] [--net-dev=<interface>]"
++    $cmd "       [--tuxonice-userui=<none | auto | text | fb>]"
++    $cmd "       [--tuxonice-version=<version-string>] [--splash=<theme>]"
++    $cmd "       [--dsdt-location=<location of DSDT-file>]"
+     $cmd "       [--fstab=<fstab>] [--nocompress] <initrd-image> <kernel-version>"
+     $cmd ""
+     $cmd "       (ex: `basename $0` /boot/initrd-2.2.5-15.img 2.2.5-15)"
+@@ -745,6 +761,125 @@ handlegraphics() {
+     qpopd
+ }
+ 
++IsANumber() {
++    case "$1" in *[!0-9]*|"") return 1 ;; esac
++    return 0
++}
++
++check_filewriter() {
++    # Filewriterhandling for Software Suspend 2
++    # we will check for /etc/hibernate/hibernate.conf and the filewriter
++    # settings there
++    local resume2 fwlocopt fwloc fwsize oldtarget newresume2
++
++    if [ -e $1/$RESUMETAR ]; then
++      resume2=$(cat $1/$RESUMETAR)
++      # if filewriter is already active use that information
++      if [ $(echo "$resume2"X | dd bs=5 count=1 2>/dev/null) = "file:" ]; then tuxonicefwtarget=$resume2; return; fi
++    else
++      # if resume2 does not exist the current kernel is not Suspend 2 enabled,
++      # so there is no way to determine filewriters target information anyway
++      return
++    fi
++
++    if [ ! -e $1/$2 ]; then return; fi
++    if [ -e /etc/hibernate/tuxonice.conf ]; then
++        fwlocopt=$(egrep ^FilewriterLocation /etc/hibernate/tuxonice.conf|tail -n 1)
++    elif [ -e /etc/hibernate/suspend2.conf ]; then
++        fwlocopt=$(egrep ^FilewriterLocation /etc/hibernate/suspend2.conf|tail -n 1)
++    elif [ ! -e /etc/hibernate/hibernate.conf ]; then
++         return;
++    else
++        fwlocopt=$(egrep ^FilewriterLocation /etc/hibernate/hibernate.conf|tail -n 1)
++    fi
++
++    if [ ! "$fwlocopt" ]; then return; fi
++    fwloc=$(echo $fwlocopt | awk '{ print $2 }')
++    fwsize=$(echo $fwlocopt | awk '{ print $3 }')
++
++    if [ ! -e "$fwloc" ]; then
++      if ! IsANumber "$fwsize"; then return; fi
++      {
++        echo "$FWIDENT"
++        dd if=/dev/zero bs=1M count=$fwsize 2>/dev/null
++
++      } > "$fwloc"
++    fi
++      
++    oldtarget=$(cat $1/$2)
++    sync
++    echo "$fwloc" > $1/$2
++    newresume2=$(cat $1/$RESUMETAR)
++    echo "$oldtarget" > $1/$2
++    echo "$resume2" > $1/$RESUMETAR
++    
++    if [ $(echo $newresume2 | dd bs=5 count=1 2>/dev/null) = "file:" ]; then tuxonicefwtarget=$newresume2; fi
++}
++
++inst_tuxonice() {
++    # TuxOnIce stuff
++    emit "echo Activating tux on ice"
++    userui="$tuxoniceuserui";
++    if [ "x$tuxoniceuserui" == "xauto" ]; then
++        if [ -f /sbin/${UIPREFIX}ui_fbsplash ]; then
++            userui="fb";
++        elif [ -f /sbin/${UIPREFIX}ui_text ]; then
++            userui="text";
++        else
++            userui="none";
++        fi
++    fi
++    if [ "x$userui" != "xnone" ]; then
++        if [ "x$userui" == "xfb" ]; then
++            if [ -f /sbin/${UIPREFIX}ui_fbsplash ]; then
++                inst /sbin/${UIPREFIX}ui_fbsplash "$2" /bin/${UIPREFIX}ui_fbsplash
++                if [ -e /etc/splash/${splashtheme} ]; then
++                  mkdir "$2/etc/splash"
++                  cp -prH /etc/splash/${splashtheme}/ "$2/etc/splash/"
++                fi
++                # check if splashtheme is a symlink and add one to initrd if that is the case
++                if [ -L /etc/splash/${splashtheme} ]; then
++                  dlink=` find /etc/splash/${splashtheme} -printf '%l' `
++                  dlink=$(basename $dlink)
++                  ln -sf ${splashtheme} "$2/etc/splash/$dlink"
++                fi
++                if [ -e $2/etc/splash/{$splashtheme} ]; then
++                  if [ ! -e $2/etc/splash/TuxOnIce ]; then
++                    ln -sf ${splashtheme} "$2/etc/splash/TuxOnIce"
++                  fi
++                  if [ ! -e $2/etc/splash/suspend2 ]; then
++                    ln -sf ${splashtheme} "$2/etc/splash/suspend2"
++                  fi
++                fi
++                if [ -f /sbin/splash_helper ]; then
++                  inst /sbin/splash_helper "$2" /bin/splash_helper
++                fi
++                emit "echo /bin/${UIPREFIX}ui_fbsplash > $1/$4"
++            else
++                error "WARNING: framebuffer UI for suspend not found, skipping."
++            fi
++        elif [ "x$userui" == "xtext" ]; then
++            if [ -f /sbin/${UIPREFIX}ui_text ]; then
++                inst /sbin/${UIPREFIX}ui_text "$2" /bin/${UIPREFIX}ui_text
++                emit "echo /bin/${UIPREFIX}ui_text > $1/$4"
++            else
++                error "WARNING: text UI for suspend not found, skipping."
++            fi
++        else
++            error "WARNING: unknown UI \"$userui\" specified."
++        fi
++    fi
++
++    # First try to resume with the parameter present on the kernel commandline
++    emit "echo Trying to resume from target specified as $RESUMETAR on cmdline."
++    emit "echo 1 > $1/do_resume"
++
++    # Then we will try the swapdevice/filetarget that was present while creating the initrd
++    emit "echo Trying to resume from $3."
++    emit "echo $3 > $1/$RESUMETAR"
++    emit "echo 1 > $1/do_resume"
++}
++
+ savedargs=$*
+ while [ $# -gt 0 ]; do
+     case $1 in
+@@ -945,6 +1080,54 @@ while [ $# -gt 0 ]; do
+                 shift
+             fi
+ 	    ;;
++	--splash*)
++	    if echo $1 | grep -q '=' ; then
++	    	splashtheme=`echo $1 | sed 's/^--splash=//'`
++	    else
++		splashtheme=$2
++		shift
++	    fi
++	    ;;
++	--tuxonice-userui*)
++	    if echo $1 | grep -q '=' ; then
++	    	tuxoniceuserui=`echo $1 | sed 's/^--tuxonice-userui=//'`
++	    else
++		tuxoniceuserui=$2
++		shift
++	    fi
++	    ;;
++	--tuxonice-version*)
++	    if echo $1 | grep -q '=' ; then
++	    	tuxoniceversion=`echo $1 | sed 's/^--tuxonice-version=//'`
++	    else
++		tuxoniceversion=$2
++		shift
++	    fi
++	    ;;
++	--suspend2-userui*)
++	    if echo $1 | grep -q '=' ; then
++	    	tuxoniceuserui=`echo $1 | sed 's/^--suspend2-userui=//'`
++	    else
++		tuxoniceuserui=$2
++		shift
++	    fi
++	    ;;
++	--suspend2-version*)
++	    if echo $1 | grep -q '=' ; then
++	    	tuxoniceversion=`echo $1 | sed 's/^--suspend2-version=//'`
++	    else
++		tuxoniceversion=$2
++		shift
++	    fi
++	    ;;
++	--dsdt-location*)
++	    if echo $1 | grep -q '=' ; then
++	    	DSDT=`echo $1 | sed 's/^--dsdt-location=//'`
++	    else
++		DSDT=$2
++		shift
++	    fi
++	    ;;
+         --help)
+             usage -n
+             ;;
+@@ -962,6 +1145,22 @@ while [ $# -gt 0 ]; do
+     shift
+ done
+ 
++if [ "$tuxoniceversion" -lt "20108" ]; then
++    SWSUSPPROC="/proc/software_suspend"
++elif [ "$tuxoniceversion" -ge "20208" ]; then
++    SWSUSPPROC="/sys/power/suspend2"
++    USERUIPROC="user_interface/program"
++    FWLOCPROC="filewriter/target"
++fi
++if [ "$tuxoniceversion" -ge "20211" ]; then
++    RESUMETAR="resume"
++fi
++if [ "$tuxoniceversion" -ge "20212" ]; then
++    SWSUSPPROC="/sys/power/tuxonice"
++    FWIDENT="TuxOnIce"
++    UIPREFIX="tuxonice"
++fi
++
+ if [ -z "$target" -o -z "$kernel" ]; then
+     usage
+ fi
+@@ -1186,6 +1385,7 @@ fi
+ mkdir -p $MNTIMAGE
+ mkdir -p $MNTIMAGE/lib/firmware
+ mkdir -p $MNTIMAGE/lib/modules/$kernel
++mkdir -p $MNTIMAGE/lib/splash
+ mkdir -p $MNTIMAGE/bin
+ mkdir -p $MNTIMAGE/etc
+ mkdir -p $MNTIMAGE/dev
+@@ -1220,6 +1420,10 @@ excludemods() {
+     echo $output
+ }
+ 
++if [ -e "$DSDT" ]; then
++    inst "$DSDT" "$MNTIMAGE/DSDT.aml"
++fi
++
+ if [ -n "$excludemodules" ]; then
+     MODULES=$(excludemods $MODULES)
+     availmodules=$(excludemods $availmodules)
+@@ -1253,6 +1457,7 @@ done
+ mknod $MNTIMAGE/dev/tty c 5 0
+ mknod $MNTIMAGE/dev/console c 5 1
+ mknod $MNTIMAGE/dev/ptmx c 5 2
++mknod $MNTIMAGE/dev/fb0 c 29 0
+ 
+ if [ -n "$raiddevices" ]; then
+     inst /sbin/mdadm "$MNTIMAGE"
+@@ -1496,6 +1701,7 @@ mknod /dev/console c 5 1
+ mknod /dev/ptmx c 5 2
+ mknod /dev/fb c 29 0
+ mknod /dev/hvc0 c 229 0
++mknod /dev/fb0 c 29 0
+ EOF
+ 
+ # XXX really we need to openvt too, in case someting changes the
+@@ -1628,8 +1834,21 @@ for cryptdev in ${!cryptolv@} ; do
+     emitcrypto `eval echo '$'$cryptdev`
+ done
+ 
+-if [ -z "$noresume" -a -n "$thawdev" ]; then
+-    emit "resume $thawdev"
++if [ -z "$noresume" ]; then
++    if [ -n "$thawdev" ]; then
++        emit "resume $thawdev"
++    fi
++    check_filewriter $SWSUSPPROC $FWLOCPROC
++    swsuspdev="$thawdev"
++    if [ -n "$tuxonicefwtarget" ]; then
++        inst_tuxonice $SWSUSPPROC $MNTIMAGE $tuxonicefwtarget $USERUIPROC
++    elif [ -n "$swsuspdev" ]; then
++        if [[ "$swsuspdev" =~ ^(UUID=|LABEL=) ]]; then
++            swsuspdev=$(resolve_device_name "$swsuspdev")
++        fi
++
++        inst_tuxonice $SWSUSPPROC $MNTIMAGE swap:$swsuspdev $USERUIPROC
++    fi
+ fi
+ 
+ if [ -n "$loopfs" ]; then

+ 10 - 2
m/mkinitrd/mkinitrd-vl.spec

@@ -2,7 +2,7 @@ Summary: Creates an initial ramdisk image for preloading modules.
 Summary(ja): モジュールをプリロードするための初期RAMディスク(initramfs)作成ユーティリティ
 Name: mkinitrd
 Version: 6.0.93
-Release: 5%{?_dist_release}
+Release: 7%{?_dist_release}
 License: GPLv2+
 Group: System Environment/Base
 
@@ -15,6 +15,7 @@ Patch14: mkinitrd-6.0.93-noselinux.patch
 Patch15: mkinitrd-6.0.93-restrict-udev-messages.patch
 
 Patch20: mkinitrd-6.0.93-tuxonice.patch
+Patch21: mkinitrd-6.0.93-remove-bash4ism.patch
 
 ExclusiveOs: Linux
 URL: git://git.fedoraproject.org/git/hosted/mkinitrd
@@ -34,7 +35,7 @@ Requires: dmraid
 Requires: kbd
 %endif
 %ifarch ppc
-Requires: ppc64-utils
+Requires: powerpc-utils
 %endif
 Requires: nash = %{version}-%{release}
 Requires: grubby
@@ -86,6 +87,7 @@ nash
 %patch14 -p1
 %patch15 -p1
 %patch20 -p1
+%patch21 -p1
 
 find . -name "Makefile*" -exec sed -i 's|-Werror||g' {} \;
 
@@ -138,6 +140,12 @@ rm -rf $RPM_BUILD_ROOT
 %dir %{_sysconfdir}/kernel/prerm.d
 
 %changelog
+* Mon Apr 12 2010 Daisuke SUZUKI <daisuke@linux.or.jp> 6.0.93-7
+- add Patch21 to remove bash4ism
+
+* Thu Mar 25 2010 MATSUBAYASHI Kohji <shaolin@vinelinux.org> - 6.0.93-6
+- Requires powerpc-utils instead of ppc64-utils
+
 * Tue Mar 23 2010 Daisuke SUZUKI <daisuke@linux.or.jp> 6.0.93-5
 - fix typo in patch20