[dracut] dracut-023-13.git20120821

Harald Hoyer harald at fedoraproject.org
Tue Aug 21 18:04:52 UTC 2012


commit 7e00d97aa69a7f9810cd2483abad9f440047d0d7
Author: Harald Hoyer <harald at redhat.com>
Date:   Tue Aug 21 20:04:01 2012 +0200

    dracut-023-13.git20120821
    
    - reintroduce rd.neednet, which reenables anaconda networking
    - fix some dracut-install corner cases
    - fix FIPS for /boot not on extra partition

 ...ated-to-recent-version-of-http-www.gnu.or.patch |  138 ++++++++++++++++++++
 ...cut.conf.d-gentoo.conf.example-fix-header.patch |   19 +++
 ...onf.5.asc-s-dracut-conf.d-dracut.conf.d-g.patch |   24 ++++
 0004-include-the-omap_hsmmc-module-on-arm.patch    |   22 +++
 ...ys-create-need_shutdown-if-we-have-assemb.patch |   60 +++++++++
 0006-add-back-scsi_wait_scan.patch                 |   34 +++++
 0007-network-reintroduce-rd.neednet.patch          |   41 ++++++
 ...ot-as-symlink-to-sysroot-boot-if-no-boot-.patch |   48 +++++++
 ...cut-install.c-Ensure-deps-are-resolved-wh.patch |   45 +++++++
 ...cut-install.c-Deal-gracefully-with-paths-.patch |   43 ++++++
 ...cut-install.c-No-need-to-compare-the-NULL.patch |   23 ++++
 ...Pre-usrmove-systemd-installs-might-not-fi.patch |   41 ++++++
 dracut.spec                                        |   20 +++-
 13 files changed, 556 insertions(+), 2 deletions(-)
---
diff --git a/0001-COPYING-updated-to-recent-version-of-http-www.gnu.or.patch b/0001-COPYING-updated-to-recent-version-of-http-www.gnu.or.patch
new file mode 100644
index 0000000..e23a921
--- /dev/null
+++ b/0001-COPYING-updated-to-recent-version-of-http-www.gnu.or.patch
@@ -0,0 +1,138 @@
+From aa11b710ce86190fbff9afeafedcbce85c7e9a7f Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 1 Aug 2012 15:53:25 +0200
+Subject: [PATCH] COPYING: updated to recent version of
+ http://www.gnu.org/licenses/gpl-2.0.txt
+
+---
+ COPYING | 42 +++++++++++++++++++++---------------------
+ 1 file changed, 21 insertions(+), 21 deletions(-)
+
+diff --git a/COPYING b/COPYING
+index a43ea21..d159169 100644
+--- a/COPYING
++++ b/COPYING
+@@ -1,12 +1,12 @@
+-		    GNU GENERAL PUBLIC LICENSE
+-		       Version 2, June 1991
++                    GNU GENERAL PUBLIC LICENSE
++                       Version 2, June 1991
+ 
+- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+-                          675 Mass Ave, Cambridge, MA 02139, USA
++ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  Everyone is permitted to copy and distribute verbatim copies
+  of this license document, but changing it is not allowed.
+ 
+-			    Preamble
++                            Preamble
+ 
+   The licenses for most software are designed to take away your
+ freedom to share and change it.  By contrast, the GNU General Public
+@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users.  This
+ General Public License applies to most of the Free Software
+ Foundation's software and to any other program whose authors commit to
+ using it.  (Some other Free Software Foundation software is covered by
+-the GNU Library General Public License instead.)  You can apply it to
++the GNU Lesser General Public License instead.)  You can apply it to
+ your programs, too.
+ 
+   When we speak of free software, we are referring to freedom, not
+@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
+ 
+   The precise terms and conditions for copying, distribution and
+ modification follow.
+-
+-		    GNU GENERAL PUBLIC LICENSE
++
++                    GNU GENERAL PUBLIC LICENSE
+    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+ 
+   0. This License applies to any program or other work which contains
+@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
+     License.  (Exception: if the Program itself is interactive but
+     does not normally print such an announcement, your work based on
+     the Program is not required to print an announcement.)
+-
++
+ These requirements apply to the modified work as a whole.  If
+ identifiable sections of that work are not derived from the Program,
+ and can be reasonably considered independent and separate works in
+@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
+ access to copy the source code from the same place counts as
+ distribution of the source code, even though third parties are not
+ compelled to copy the source along with the object code.
+-
++
+   4. You may not copy, modify, sublicense, or distribute the Program
+ except as expressly provided under this License.  Any attempt
+ otherwise to copy, modify, sublicense or distribute the Program is
+@@ -225,7 +225,7 @@ impose that choice.
+ 
+ This section is intended to make thoroughly clear what is believed to
+ be a consequence of the rest of this License.
+-
++
+   8. If the distribution and/or use of the Program is restricted in
+ certain countries either by patents or by copyrighted interfaces, the
+ original copyright holder who places the Program under this License
+@@ -255,7 +255,7 @@ make exceptions for this.  Our decision will be guided by the two goals
+ of preserving the free status of all derivatives of our free software and
+ of promoting the sharing and reuse of software generally.
+ 
+-			    NO WARRANTY
++                            NO WARRANTY
+ 
+   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGES.
+ 
+-		     END OF TERMS AND CONDITIONS
+-
+-	Appendix: How to Apply These Terms to Your New Programs
++                     END OF TERMS AND CONDITIONS
++
++            How to Apply These Terms to Your New Programs
+ 
+   If you develop a new program, and you want it to be of the greatest
+ possible use to the public, the best way to achieve this is to make it
+@@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least
+ the "copyright" line and a pointer to where the full notice is found.
+ 
+     <one line to give the program's name and a brief idea of what it does.>
+-    Copyright (C) 19yy  <name of author>
++    Copyright (C) <year>  <name of author>
+ 
+     This program is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published by
+@@ -303,16 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+     GNU General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++    You should have received a copy of the GNU General Public License along
++    with this program; if not, write to the Free Software Foundation, Inc.,
++    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ 
+ Also add information on how to contact you by electronic and paper mail.
+ 
+ If the program is interactive, make it output a short notice like this
+ when it starts in an interactive mode:
+ 
+-    Gnomovision version 69, Copyright (C) 19yy name of author
++    Gnomovision version 69, Copyright (C) year name of author
+     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+     This is free software, and you are welcome to redistribute it
+     under certain conditions; type `show c' for details.
+@@ -335,5 +335,5 @@ necessary.  Here is a sample; alter the names:
+ This General Public License does not permit incorporating your program into
+ proprietary programs.  If your program is a subroutine library, you may
+ consider it more useful to permit linking proprietary applications with the
+-library.  If this is what you want to do, use the GNU Library General
++library.  If this is what you want to do, use the GNU Lesser General
+ Public License instead of this License.
diff --git a/0002-dracut.conf.d-gentoo.conf.example-fix-header.patch b/0002-dracut.conf.d-gentoo.conf.example-fix-header.patch
new file mode 100644
index 0000000..6beba7a
--- /dev/null
+++ b/0002-dracut.conf.d-gentoo.conf.example-fix-header.patch
@@ -0,0 +1,19 @@
+From a41dc8f96903b750259e19fe724cd808b7570765 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe at aidecoe.name>
+Date: Wed, 1 Aug 2012 16:23:24 +0200
+Subject: [PATCH] dracut.conf.d/gentoo.conf.example: fix header
+
+---
+ dracut.conf.d/gentoo.conf.example | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example
+index 6b74954..7b94cf5 100644
+--- a/dracut.conf.d/gentoo.conf.example
++++ b/dracut.conf.d/gentoo.conf.example
+@@ -1,4 +1,4 @@
+-# /etc/dracut.conf.d/gentoo-openrc.conf
++# /etc/dracut.conf.d/gentoo.conf
+ # Dracut config file customized for Gentoo Base System release 2
+ 
+ udevdir=/lib/udev
diff --git a/0003-dracut.conf.5.asc-s-dracut-conf.d-dracut.conf.d-g.patch b/0003-dracut.conf.5.asc-s-dracut-conf.d-dracut.conf.d-g.patch
new file mode 100644
index 0000000..8d32594
--- /dev/null
+++ b/0003-dracut.conf.5.asc-s-dracut-conf.d-dracut.conf.d-g.patch
@@ -0,0 +1,24 @@
+From dece5ee1f530335d2c2c10472733f838f6027434 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Wed, 1 Aug 2012 16:35:46 +0200
+Subject: [PATCH] dracut.conf.5.asc: s#dracut/conf.d#dracut.conf.d#g
+
+---
+ dracut.conf.5.asc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc
+index 89bbf61..f3a7de6 100644
+--- a/dracut.conf.5.asc
++++ b/dracut.conf.5.asc
+@@ -127,8 +127,8 @@ _/etc/dracut.conf_::
+     Old configuration file. You better use your own file in
+     _/etc/dracut/conf.d/_.
+ 
+-_/etc/dracut/conf.d/_::
+-    Any _/etc/dracut/conf.d/*.conf_ file can overwrite the values in
++_/etc/dracut.conf.d/_::
++    Any _/etc/dracut.conf.d/*.conf_ file can overwrite the values in
+     _/etc/dracut.conf_. The configuration files are read in alphanumerical
+     order.
+ 
diff --git a/0004-include-the-omap_hsmmc-module-on-arm.patch b/0004-include-the-omap_hsmmc-module-on-arm.patch
new file mode 100644
index 0000000..8687717
--- /dev/null
+++ b/0004-include-the-omap_hsmmc-module-on-arm.patch
@@ -0,0 +1,22 @@
+From ec6d8eab6963078bc472f7512cc1a1491dee98e6 Mon Sep 17 00:00:00 2001
+From: Dennis Gilmore <dennis at ausil.us>
+Date: Thu, 2 Aug 2012 05:12:54 -0500
+Subject: [PATCH] include the omap_hsmmc module on arm
+
+---
+ modules.d/90kernel-modules/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
+index 4e75ef8..e58b257 100755
+--- a/modules.d/90kernel-modules/module-setup.sh
++++ b/modules.d/90kernel-modules/module-setup.sh
+@@ -40,7 +40,7 @@ installkernel() {
+         hostonly='' instmods usb_storage sdhci sdhci-pci
+ 
+         # arm specific modules
+-        hostonly='' instmods sdhci_esdhc_imx mmci sdhci_tegra mvsdio omap omapdrm sdhci_dove ahci_platform pata_imx sata_mv
++        hostonly='' instmods sdhci_esdhc_imx mmci sdhci_tegra mvsdio omap omapdrm omap_hsmmc sdhci_dove ahci_platform pata_imx sata_mv
+ 
+         # install keyboard support
+         hostonly='' instmods atkbd i8042 usbhid hid-apple hid-sunplus hid-cherry hid-logitech hid-logitech-dj hid-microsoft ehci-hcd ohci-hcd uhci-hcd xhci-hcd hid_generic
diff --git a/0005-mdraid-always-create-need_shutdown-if-we-have-assemb.patch b/0005-mdraid-always-create-need_shutdown-if-we-have-assemb.patch
new file mode 100644
index 0000000..3a487a9
--- /dev/null
+++ b/0005-mdraid-always-create-need_shutdown-if-we-have-assemb.patch
@@ -0,0 +1,60 @@
+From e4297a66b1458329437e35bf7d99a4f20c1d824d Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 14 Aug 2012 17:44:46 +0200
+Subject: [PATCH] mdraid: always create need_shutdown, if we have assembled a
+ raid
+
+---
+ modules.d/90mdraid/mdraid-cleanup.sh      |  4 ++--
+ modules.d/90mdraid/mdraid-needshutdown.sh | 11 +++++++++++
+ modules.d/90mdraid/module-setup.sh        |  1 +
+ 3 files changed, 14 insertions(+), 2 deletions(-)
+ create mode 100755 modules.d/90mdraid/mdraid-needshutdown.sh
+
+diff --git a/modules.d/90mdraid/mdraid-cleanup.sh b/modules.d/90mdraid/mdraid-cleanup.sh
+index 9c4bc18..da86d65 100755
+--- a/modules.d/90mdraid/mdraid-cleanup.sh
++++ b/modules.d/90mdraid/mdraid-cleanup.sh
+@@ -14,11 +14,11 @@ for md in /dev/md[0-9_]*; do
+         containers="$containers $md"
+         continue
+     fi
+-    mdadm $_offroot -S "$md" >/dev/null 2>&1 || need_shutdown
++    mdadm $_offroot -S "$md" >/dev/null 2>&1
+ done
+ 
+ for md in $containers; do
+-    mdadm $_offroot -S "$md" >/dev/null 2>&1 || need_shutdown
++    mdadm $_offroot -S "$md" >/dev/null 2>&1
+ done
+ 
+ unset containers udevinfo _offroot
+diff --git a/modules.d/90mdraid/mdraid-needshutdown.sh b/modules.d/90mdraid/mdraid-needshutdown.sh
+new file mode 100755
+index 0000000..79f9852
+--- /dev/null
++++ b/modules.d/90mdraid/mdraid-needshutdown.sh
+@@ -0,0 +1,11 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
++
++for md in /dev/md[0-9_]*; do
++    [ -b "$md" ] || continue
++    need_shutdown
++    break
++done
+diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
+index 8522756..6119226 100755
+--- a/modules.d/90mdraid/module-setup.sh
++++ b/modules.d/90mdraid/module-setup.sh
+@@ -84,6 +84,7 @@ install() {
+     inst_hook pre-udev 30 "$moddir/mdmon-pre-udev.sh"
+     inst_hook pre-trigger 30 "$moddir/parse-md.sh"
+     inst_hook pre-mount 10 "$moddir/mdraid-waitclean.sh"
++    inst_hook cleanup 99 "$moddir/mdraid-needshutdown.sh"
+     inst_hook shutdown 30 "$moddir/md-shutdown.sh"
+     inst_script "$moddir/mdraid-cleanup.sh" /sbin/mdraid-cleanup
+     inst_script "$moddir/mdraid_start.sh" /sbin/mdraid_start
diff --git a/0006-add-back-scsi_wait_scan.patch b/0006-add-back-scsi_wait_scan.patch
new file mode 100644
index 0000000..7f7dfb2
--- /dev/null
+++ b/0006-add-back-scsi_wait_scan.patch
@@ -0,0 +1,34 @@
+From bdf1f472b461747d4cb9f32ae18bb2033e592970 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Fri, 17 Aug 2012 09:22:12 +0200
+Subject: [PATCH] add back scsi_wait_scan
+
+---
+ modules.d/98systemd/dracut-initqueue.sh | 1 +
+ modules.d/99base/init.sh                | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/modules.d/98systemd/dracut-initqueue.sh b/modules.d/98systemd/dracut-initqueue.sh
+index e9da432..773e4cd 100755
+--- a/modules.d/98systemd/dracut-initqueue.sh
++++ b/modules.d/98systemd/dracut-initqueue.sh
+@@ -25,6 +25,7 @@ while :; do
+     check_finished && break
+ 
+     udevsettle
++    modprobe -q scsi_wait_scan && modprobe -q -r scsi_wait_scan
+ 
+     check_finished && break
+ 
+diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
+index 16c8958..4c5a2f8 100755
+--- a/modules.d/99base/init.sh
++++ b/modules.d/99base/init.sh
+@@ -156,6 +156,7 @@ while :; do
+     check_finished && break
+ 
+     udevsettle
++    modprobe -q scsi_wait_scan && modprobe -q -r scsi_wait_scan
+ 
+     check_finished && break
+ 
diff --git a/0007-network-reintroduce-rd.neednet.patch b/0007-network-reintroduce-rd.neednet.patch
new file mode 100644
index 0000000..83642bf
--- /dev/null
+++ b/0007-network-reintroduce-rd.neednet.patch
@@ -0,0 +1,41 @@
+From 48dba7f9ace186871528eb4d83cd96e92e853c6c Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 21 Aug 2012 14:47:14 +0200
+Subject: [PATCH] network: reintroduce rd.neednet
+
+rd.neednet is used by anaconda and the network interfaces cannot
+be known in advance.
+---
+ dracut.cmdline.7.asc                | 3 +++
+ modules.d/40network/net-genrules.sh | 4 +++-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
+index 71d02ca..c376d79 100644
+--- a/dracut.cmdline.7.asc
++++ b/dracut.cmdline.7.asc
+@@ -384,6 +384,9 @@ interface name. Better name it "bootnet" or "bluesocket".
+ **biosdevname=0**::
+     boolean, turn off biosdevname network interface renaming
+ 
++**rd.neednet=1**::
++    boolean, bring up network even without netroot set
++
+ **vlan=_<vlanname>_:_<phydevice>_**::
+     Setup vlan device named <vlanname> on <phydeivce>.
+     We support the four styles of vlan names: VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5),
+diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
+index 8aeee2d..6a58ab5 100755
+--- a/modules.d/40network/net-genrules.sh
++++ b/modules.d/40network/net-genrules.sh
+@@ -15,7 +15,9 @@ fix_bootif() {
+ }
+ 
+ # Don't continue if we don't need network
+-[ -z "$netroot" ] && ! [ -e "/tmp/net.ifaces" ] && return;
++if [ -z "$netroot" ] && [ ! -e "/tmp/net.ifaces" ] && ! getargbool 0 rd.neednet >/dev/null; then
++    return
++fi
+ 
+ # Write udev rules
+ {
diff --git a/0008-fips-set-boot-as-symlink-to-sysroot-boot-if-no-boot-.patch b/0008-fips-set-boot-as-symlink-to-sysroot-boot-if-no-boot-.patch
new file mode 100644
index 0000000..91a7f93
--- /dev/null
+++ b/0008-fips-set-boot-as-symlink-to-sysroot-boot-if-no-boot-.patch
@@ -0,0 +1,48 @@
+From c9a9968dfc7f8fb644909cbb52e27fe7312156a7 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald at redhat.com>
+Date: Tue, 21 Aug 2012 15:01:08 +0200
+Subject: [PATCH] fips: set /boot as symlink to /sysroot/boot if no boot=
+ parameter
+
+otherwise sha512hmac will error out with:
+
+sha512hmac -c /sysroot/boot/.vmlinuz-2.6.32-220.el6.x86_64.hmac
+Error opening "/boot/vmlinuz-2.6.32-220.el6.x86_64": No such file or directory.
+---
+ modules.d/01fips/fips.sh | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh
+index 67eefb8..324e062 100755
+--- a/modules.d/01fips/fips.sh
++++ b/modules.d/01fips/fips.sh
+@@ -45,23 +45,23 @@ mount_boot()
+         mkdir /boot
+         info "Mounting $boot as /boot"
+         mount -oro "$boot" /boot || return 1
++    elif [ -d "$NEWROOT/boot" ]; then
++        rm -fr /boot
++        ln -sf "$NEWROOT/boot" /boot
+     fi
+ }
+ 
+ do_fips()
+ {
+     info "Checking integrity of kernel"
+-    newroot=$NEWROOT
+     KERNEL=$(uname -r)
+ 
+-    [ -e "$newroot/boot/.vmlinuz-${KERNEL}.hmac" ] || unset newroot
+-
+-    if ! [ -e "$newroot/boot/.vmlinuz-${KERNEL}.hmac" ]; then
+-        warn "$newroot/boot/.vmlinuz-${KERNEL}.hmac does not exist"
++    if ! [ -e "/boot/.vmlinuz-${KERNEL}.hmac" ]; then
++        warn "/boot/.vmlinuz-${KERNEL}.hmac does not exist"
+         return 1
+     fi
+ 
+-    sha512hmac -c "$newroot/boot/.vmlinuz-${KERNEL}.hmac" || return 1
++    sha512hmac -c "/boot/.vmlinuz-${KERNEL}.hmac" || return 1
+ 
+     FIPSMODULES=$(cat /etc/fipsmodules)
+ 
diff --git a/0009-install-dracut-install.c-Ensure-deps-are-resolved-wh.patch b/0009-install-dracut-install.c-Ensure-deps-are-resolved-wh.patch
new file mode 100644
index 0000000..ab4124a
--- /dev/null
+++ b/0009-install-dracut-install.c-Ensure-deps-are-resolved-wh.patch
@@ -0,0 +1,45 @@
+From 68318328f1fc394ac043b939425715ba78dc6f57 Mon Sep 17 00:00:00 2001
+From: Colin Guthrie <colin at mageia.org>
+Date: Tue, 14 Aug 2012 22:09:39 +0100
+Subject: [PATCH] install/dracut-install.c: Ensure deps are resolved when
+ handling scripts
+
+If we are doing lazy dep solving and happen to process a script with a
+shebang on e.g. /bin/bash before we encounter the actual binary itself
+we effectively ignore the fact that we've been asked to resolve the deps
+and put the item in the 'seen' hashmap. Thus when we later really do try
+and resolve deps, we short circuit and don't do anything.
+
+Example test case:
+
+$ cd
+$ mkdir -p foo/bin
+$ cp /bin/bash foo/bin
+$ echo '#!/bin/bash' >foo/bin/script
+$ dracut-install -D $HOME/foo -R $HOME/foo/bin/script $HOME/foo/bin/bash
+---
+ install/dracut-install.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/install/dracut-install.c b/install/dracut-install.c
+index e79065d..9a244ba 100644
+--- a/install/dracut-install.c
++++ b/install/dracut-install.c
+@@ -392,10 +392,15 @@ static int dracut_install(const char *src, const char *dst, bool isdir, bool res
+         }
+ 
+         if (ret == 0) {
+-                log_debug("'%s' already exists", fulldstpath);
++                if (resolvedeps) {
++                        log_debug("'%s' already exists, but checking for any deps", fulldstpath);
++                        ret = resolve_deps(src);
++                } else
++                        log_debug("'%s' already exists", fulldstpath);
++
+                 free(fulldstpath);
+                 /* dst does already exist */
+-                return 0;
++                return ret;
+         }
+ 
+         /* check destination directory */
diff --git a/0010-install-dracut-install.c-Deal-gracefully-with-paths-.patch b/0010-install-dracut-install.c-Deal-gracefully-with-paths-.patch
new file mode 100644
index 0000000..6821a82
--- /dev/null
+++ b/0010-install-dracut-install.c-Deal-gracefully-with-paths-.patch
@@ -0,0 +1,43 @@
+From f9c7788ba5bbb9785ba9946c7a6500fc0c782244 Mon Sep 17 00:00:00 2001
+From: Colin Guthrie <colin at mageia.org>
+Date: Tue, 14 Aug 2012 22:32:00 +0100
+Subject: [PATCH] install/dracut-install.c: Deal gracefully with paths
+ containing double /'s
+
+While such paths should not be included internally, we cannot
+guarantee that external scripts with shebangs will not do this.
+
+Some older versions of plymouth also resulted in double /'s
+in some paths, so best deal with this gracefully.
+---
+ install/dracut-install.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/install/dracut-install.c b/install/dracut-install.c
+index 9a244ba..dfee259 100644
+--- a/install/dracut-install.c
++++ b/install/dracut-install.c
+@@ -64,7 +64,7 @@ static size_t dir_len(char const *file)
+         size_t length;
+         /* Strip the basename and any redundant slashes before it.  */
+         for (length = strlen(file); 0 < length; length--)
+-                if (file[length] == '/')
++                if (file[length] == '/' && file[length-1] != '/')
+                         break;
+         return length;
+ }
+@@ -91,7 +91,13 @@ static char *convert_abs_rel(const char *from, const char *target)
+                 return strdup(from);
+         }
+ 
+-        asprintf(&realtarget, "%s/%s", q, &p[dirlen + 1]);
++        /* dir_len() skips double /'s e.g. //lib64, so we can't skip just one
++         * character - need to skip all leading /'s */
++        rl = strlen(target);
++        for (i = dirlen+1; i < rl; ++i)
++            if (p[i] != '/')
++                break;
++        asprintf(&realtarget, "%s/%s", q, &p[i]);
+         free(p);
+         free(q);
+ 
diff --git a/0011-install-dracut-install.c-No-need-to-compare-the-NULL.patch b/0011-install-dracut-install.c-No-need-to-compare-the-NULL.patch
new file mode 100644
index 0000000..001bc71
--- /dev/null
+++ b/0011-install-dracut-install.c-No-need-to-compare-the-NULL.patch
@@ -0,0 +1,23 @@
+From 68c49db95233d03a25b27e01709cd052d60cef7a Mon Sep 17 00:00:00 2001
+From: Colin Guthrie <colin at mageia.org>
+Date: Sat, 18 Aug 2012 11:38:02 +0100
+Subject: [PATCH] install/dracut-install.c: No need to compare the NULL byte
+ each time.
+
+---
+ install/dracut-install.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/install/dracut-install.c b/install/dracut-install.c
+index dfee259..c95b7c2 100644
+--- a/install/dracut-install.c
++++ b/install/dracut-install.c
+@@ -63,7 +63,7 @@ static size_t dir_len(char const *file)
+ {
+         size_t length;
+         /* Strip the basename and any redundant slashes before it.  */
+-        for (length = strlen(file); 0 < length; length--)
++        for (length = strlen(file)-1; 0 < length; length--)
+                 if (file[length] == '/' && file[length-1] != '/')
+                         break;
+         return length;
diff --git a/0012-udev-rules-Pre-usrmove-systemd-installs-might-not-fi.patch b/0012-udev-rules-Pre-usrmove-systemd-installs-might-not-fi.patch
new file mode 100644
index 0000000..7967217
--- /dev/null
+++ b/0012-udev-rules-Pre-usrmove-systemd-installs-might-not-fi.patch
@@ -0,0 +1,41 @@
+From f9452c94c05e505d358329fbb228da7979770c4c Mon Sep 17 00:00:00 2001
+From: Colin Guthrie <colin at mageia.org>
+Date: Thu, 16 Aug 2012 14:27:22 +0100
+Subject: [PATCH] udev-rules: Pre usrmove systemd installs might not find
+ udevd.
+
+If users had switched to systemd-183+ but have not completed
+the usrmove, then the variable ${systemdutildir} will likely
+refer to /usr/lib/systemd NOT /lib/systemd and thus the
+systemd-udevd daemon may not be found.
+
+So let's try a little harder and add another hard coded path
+and if we don't find it, then bail out hard.
+---
+ modules.d/95udev-rules/module-setup.sh | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
+index 2e3c955..5e1cce5 100755
+--- a/modules.d/95udev-rules/module-setup.sh
++++ b/modules.d/95udev-rules/module-setup.sh
+@@ -12,7 +12,7 @@ install() {
+         /etc/udev/udev.conf /etc/group
+ 
+     [ -d ${initdir}/lib/systemd ] || mkdir -p ${initdir}/lib/systemd
+-    for _i in ${systemdutildir}/systemd-udevd ${udevdir}/udevd /sbin/udevd; do
++    for _i in ${systemdutildir}/systemd-udevd ${udevdir}/udevd /lib/systemd/systemd-udevd /sbin/udevd; do
+         [ -x "$_i" ] || continue
+         inst "$_i"
+ 
+@@ -21,6 +21,10 @@ install() {
+         fi
+         break
+     done
++    if ! [[ -e ${initdir}/lib/systemd/systemd-udevd ]]; then
++        derror "Cannot find [systemd-]udevd binary!"
++        exit 1
++    fi
+ 
+     inst_rules 50-udev-default.rules 60-persistent-storage.rules \
+         61-persistent-storage-edd.rules 80-drivers.rules 95-udev-late.rules \
diff --git a/dracut.spec b/dracut.spec
index e7e9012..e6ae31c 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -10,7 +10,7 @@
 
 Name: dracut
 Version: 023
-Release: 2%{?dist}
+Release: 13.git20120821%{?dist}
 
 Summary: Initramfs generator using udev
 %if 0%{?fedora} || 0%{?rhel}
@@ -29,8 +29,19 @@ URL: https://dracut.wiki.kernel.org/
 # Source can be generated by
 # http://git.kernel.org/?p=boot/dracut/dracut.git;a=snapshot;h=%{version};sf=tgz
 Source0: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut-%{version}.tar.bz2
+Patch1: 0001-COPYING-updated-to-recent-version-of-http-www.gnu.or.patch
+Patch2: 0002-dracut.conf.d-gentoo.conf.example-fix-header.patch
+Patch3: 0003-dracut.conf.5.asc-s-dracut-conf.d-dracut.conf.d-g.patch
+Patch4: 0004-include-the-omap_hsmmc-module-on-arm.patch
+Patch5: 0005-mdraid-always-create-need_shutdown-if-we-have-assemb.patch
+Patch6: 0006-add-back-scsi_wait_scan.patch
+Patch7: 0007-network-reintroduce-rd.neednet.patch
+Patch8: 0008-fips-set-boot-as-symlink-to-sysroot-boot-if-no-boot-.patch
+Patch9: 0009-install-dracut-install.c-Ensure-deps-are-resolved-wh.patch
+Patch10: 0010-install-dracut-install.c-Deal-gracefully-with-paths-.patch
+Patch11: 0011-install-dracut-install.c-No-need-to-compare-the-NULL.patch
+Patch12: 0012-udev-rules-Pre-usrmove-systemd-installs-might-not-fi.patch
 
-Patch1:  0001-include-the-omap_hsmmc-module-on-arm.patch
 
 BuildRequires: dash bash git
 
@@ -363,6 +374,11 @@ rm -rf $RPM_BUILD_ROOT
 %dir /var/lib/dracut/overlay
 
 %changelog
+* Tue Aug 21 2012 Harald Hoyer <harald at redhat.com> 023-13.git20120821
+- reintroduce rd.neednet, which reenables anaconda networking
+- fix some dracut-install corner cases
+- fix FIPS for /boot not on extra partition
+
 * Wed Aug 01 2012 Dennis Gilmore <dennis at ausil.us> - 023-2
 - add patch to include omap_hsmmc for arm
 


More information about the scm-commits mailing list