Hello community, here is the log from the commit of package libguestfs for openSUSE:Factory checked in at 2015-05-20 23:57:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libguestfs (Old) and /work/SRC/openSUSE:Factory/.libguestfs.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libguestfs" Changes: -------- --- /work/SRC/openSUSE:Factory/libguestfs/libguestfs.changes 2014-10-31 12:26:28.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.libguestfs.new/libguestfs.changes 2015-05-20 23:57:44.000000000 +0200 @@ -1,0 +2,45 @@ +Mon Mar 9 14:14:52 UTC 2015 - [email protected] + +- Force feature usb into initrd to avoid build-compare noise + +------------------------------------------------------------------- +Mon Mar 9 13:58:47 UTC 2015 - [email protected] + +- Workaround bug in patch(1) which does not follow symlinks anymore + +------------------------------------------------------------------- +Tue Feb 24 09:43:58 UTC 2015 - [email protected] + +- Update to version 1.26.10 + * gcc5: test-tool: Initialize local variable. + * lua: Define luaL_checkint which was deprecated in lua 5.3. + * tools: fix free -m invocation + +------------------------------------------------------------------- +Fri Feb 6 13:45:22 UTC 2015 - [email protected] + +- Make zypper called with -n parameter when installing packages. + (bsc#916567) + +------------------------------------------------------------------- +Tue Dec 9 15:44:39 UTC 2014 - [email protected] + +- Package guestfs_lvm_conf.aug (bnc#908632) + +------------------------------------------------------------------- +Wed Nov 26 11:02:59 UTC 2014 - [email protected] + +- Handle more dist versions when patching mkinitrd + +------------------------------------------------------------------- +Mon Nov 24 17:02:33 UTC 2014 - [email protected] + +- Add isofs and other fs drivers (bnc#906692) + +------------------------------------------------------------------- +Mon Nov 24 16:52:12 UTC 2014 - [email protected] + +- Use fixed /etc/hosts, scsi_dh_modules and ibft_hostname to + reduce build-compare noise + +------------------------------------------------------------------- Old: ---- libguestfs-1.26.9.tar.xz New: ---- libguestfs-1.26.10.tar.xz libguestfs.mkinitrd.1115.patch libguestfs.mkinitrd.1140.patch libguestfs.mkinitrd.1230.patch libguestfs.mkinitrd.1310.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libguestfs.spec ++++++ --- /var/tmp/diff_new_pack.GAO6Rh/_old 2015-05-20 23:57:45.000000000 +0200 +++ /var/tmp/diff_new_pack.GAO6Rh/_new 2015-05-20 23:57:45.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package libguestfs # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2011 Michal Hrusecky <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -17,7 +17,7 @@ # -Version: 1.26.9 +Version: 1.26.10 Release: 0 %define opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0) @@ -194,8 +194,12 @@ Source20: libguestfs.mkinitrd.boot-btrfs.sh Source21: libguestfs.mkinitrd.setup-btrfs.sh # +Source1310: libguestfs.mkinitrd.1310.patch +Source1230: libguestfs.mkinitrd.1230.patch Source1220: libguestfs.mkinitrd.1220.patch Source1210: libguestfs.mkinitrd.1210.patch +Source1140: libguestfs.mkinitrd.1140.patch +Source1115: libguestfs.mkinitrd.1115.patch Source1110: libguestfs.mkinitrd.1110.patch # Source10001: libguestfs.test.simple.run-libugestfs-test-tool.sh @@ -727,27 +731,31 @@ ' mkinitrd/scripts/boot-guestfs.sh diff -u mkinitrd/scripts/boot-guestfs.sh~ mkinitrd/scripts/boot-guestfs.sh || : # -%if %suse_version < 1230 +pushd mkinitrd patched= for p in \ + %{S:1310} \ + %{S:1230} \ %{S:1220} \ %{S:1210} \ + %{S:1140} \ + %{S:1115} \ %{S:1110} \ ; do - if patch --dry-run -p1 < $p + if patch --dry-run -p2 < $p then - patch -p1 < $p + patch -p2 < $p patched=$p break - elif patch --dry-run -R -p1 < $p + elif patch --dry-run -R -p2 < $p then patched=$p break fi done +popd test -n "$patched" -%endif ./mkinitrd_setup.sh \ -s $PWD/mkinitrd/scripts \ @@ -774,6 +782,7 @@ additional_modules=" " env PATH=${RPM_BUILD_ROOT}/usr/bin:${RPM_BUILD_ROOT}/usr/sbin:${PATH} \ +LIBGUESTFS_SRC_APPLIANCE_DIR=`cd $PWD/appliance ; pwd -P` \ bash -x \ ./mkinitrd.sh \ -l $PWD/mkinitrd \ @@ -781,7 +790,7 @@ -i initramfs.${arch}.img \ -b $PWD/mkinitrd/boot_tmp \ -m "$additional_modules" \ - -f "lvm2 dm md network nfs btrfs" \ + -f "lvm2 dm md network nfs btrfs usb" \ -B # mkdir -vp $RPM_BUILD_ROOT%{_libdir}/guestfs ++++++ 0000-hotfix.patch ++++++ --- /var/tmp/diff_new_pack.GAO6Rh/_old 2015-05-20 23:57:46.000000000 +0200 +++ /var/tmp/diff_new_pack.GAO6Rh/_new 2015-05-20 23:57:46.000000000 +0200 @@ -28,3 +28,17 @@ ADD_ARG (argv, i, fs_buf); ADD_ARG (argv, i, NULL); +Index: libguestfs-1.26.9/customize/customize_run.ml +=================================================================== +--- libguestfs-1.26.9.orig/customize/customize_run.ml ++++ libguestfs-1.26.9/customize/customize_run.ml +@@ -105,8 +105,7 @@ exec >>%s 2>&1 + | "yum" -> + sprintf "yum -y install %s" quoted_args + | "zypper" -> +- (* XXX Should we use -n option? *) +- sprintf "zypper in %s" quoted_args ++ sprintf "zypper -n in %s" quoted_args + | "unknown" -> + eprintf (f_"%s: --install is not supported for this guest operating system\n") + prog; ++++++ libguestfs-1.26.9.tar.xz -> libguestfs-1.26.10.tar.xz ++++++ ++++ 95508 lines of diff (skipped) ++++++ libguestfs.mkinitrd.1110.patch ++++++ --- /var/tmp/diff_new_pack.GAO6Rh/_old 2015-05-20 23:57:48.000000000 +0200 +++ /var/tmp/diff_new_pack.GAO6Rh/_new 2015-05-20 23:57:48.000000000 +0200 @@ -1,9 +1,82 @@ --- + mkinitrd/scripts/setup-ibft.sh | 2 + mkinitrd/scripts/setup-network.sh | 11 +++- mkinitrd/scripts/setup-prepare.sh | 94 ++++++++++++++++++++++++++++------- mkinitrd/scripts/setup-progs.sh | 4 - + mkinitrd/scripts/setup-scsi_dh.sh | 2 mkinitrd/scripts/setup-sharedlibs.sh | 60 +++++++++++++--------- - 3 files changed, 114 insertions(+), 44 deletions(-) + 6 files changed, 126 insertions(+), 47 deletions(-) +Index: 1110/mkinitrd/scripts/setup-ibft.sh +=================================================================== +--- 1110.orig/mkinitrd/scripts/setup-ibft.sh ++++ 1110/mkinitrd/scripts/setup-ibft.sh +@@ -21,22 +21,22 @@ ibft_set_iface() { + interface=$iface + drvlink=$(get_network_module $interface) + if [ ! "$nettype" -a -e $ibft_nic/dhcp ]; then + nettype=dhcp + read ibft_dhcp < $ibft_nic/dhcp + [ "$ibft_dhcp" = "0.0.0.0" ] && nettype=static + else + nettype=static + fi + fi + } + + ibft_nic=/sys/firmware/ibft/ethernet0 +-ibft_hostname=$(hostname) ++ibft_hostname=localhost + + if [ "$root_iscsi" = 1 -a -d $ibft_nic ]; then + ibft_available=1 + ibft_set_iface + fi + save_var ibft_available + save_var ibft_hostname + save_var ibft_nic +Index: 1110/mkinitrd/scripts/setup-network.sh +=================================================================== +--- 1110.orig/mkinitrd/scripts/setup-network.sh ++++ 1110/mkinitrd/scripts/setup-network.sh +@@ -291,27 +291,36 @@ if [ "$nettype" = "ifup" ] ; then + verbose "[NETWORK]\tifup: $interface" + fi + done + interface= + fi + + # Copy the /etc/resolv.conf when the IP is static + if test -n "$static_interfaces"; then + verbose "[NETWORK]\tUsing /etc/resolv.conf from the system in the initrd" + cp /etc/resolv.conf $tmp_mnt/etc + fi + + # Copy netcfg files (bnc#468090, bnc#714945) +-cp /etc/{hosts,protocols,services,netconfig} $tmp_mnt/etc ++cp /etc/{protocols,services,netconfig} $tmp_mnt/etc ++cat > $tmp_mnt/etc/hosts <<_EOH_ ++127.0.0.1 localhost ++::1 localhost ipv6-localhost ipv6-loopback ++fe00::0 ipv6-localnet ++ff00::0 ipv6-mcastprefix ++ff02::1 ipv6-allnodes ++ff02::2 ipv6-allrouters ++ff02::3 ipv6-allhosts ++_EOH_ + + # Get static IP configuration if requested + for iface in $static_interfaces; do + static_ips="$static_ips $(get_ip_config $iface)" + done + + mkdir -p $tmp_mnt/var/lib/dhcpcd + mkdir -p $tmp_mnt/var/run + + cp_bin /lib/mkinitrd/bin/ipconfig.sh $tmp_mnt/bin/ipconfig + if [ -f /etc/udev/rules.d/70-persistent-net.rules ] ; then + cp /etc/udev/rules.d/70-persistent-net.rules $tmp_mnt/etc/udev/rules.d + fi Index: 1110/mkinitrd/scripts/setup-prepare.sh =================================================================== --- 1110.orig/mkinitrd/scripts/setup-prepare.sh @@ -193,6 +266,25 @@ [ -e "bin/sh" ] || ln -s /bin/bash bin/sh +Index: 1110/mkinitrd/scripts/setup-scsi_dh.sh +=================================================================== +--- 1110.orig/mkinitrd/scripts/setup-scsi_dh.sh ++++ 1110/mkinitrd/scripts/setup-scsi_dh.sh +@@ -1,13 +1,13 @@ + #!/bin/bash + # + #%stage: device + # + # Include all scsi_dh_* modules and load them on boot (bnc#727428 et al) + + scsi_dh_modules= +-for i in $(find $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler -name "scsi[-_]dh[_-]*.ko"); do ++for i in $(find $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler -name "scsi[-_]dh[_-]*.ko" | sort); do + i=${i%.ko} + scsi_dh_modules="$scsi_dh_modules ${i##*/}" + done + + save_var scsi_dh_modules Index: 1110/mkinitrd/scripts/setup-sharedlibs.sh =================================================================== --- 1110.orig/mkinitrd/scripts/setup-sharedlibs.sh ++++++ libguestfs.mkinitrd.1115.patch ++++++ --- mkinitrd/scripts/setup-ibft.sh | 2 mkinitrd/scripts/setup-network.sh | 11 +++- mkinitrd/scripts/setup-prepare.sh | 90 +++++++++++++++++++++++++++++------ mkinitrd/scripts/setup-progs.sh | 4 - mkinitrd/scripts/setup-scsi_dh.sh | 2 mkinitrd/scripts/setup-sharedlibs.sh | 60 +++++++++++++---------- 6 files changed, 124 insertions(+), 45 deletions(-) Index: 1115/mkinitrd/scripts/setup-ibft.sh =================================================================== --- 1115.orig/mkinitrd/scripts/setup-ibft.sh +++ 1115/mkinitrd/scripts/setup-ibft.sh @@ -22,23 +22,23 @@ ibft_set_iface() { drvlink="$drvlink $(get_network_module $interface)" if [ ! "$nettype" -a -e $ibft_nic/dhcp ]; then nettype=dhcp read ibft_dhcp < $ibft_nic/dhcp [ "$ibft_dhcp" = "0.0.0.0" ] && nettype=static else nettype=static fi fi } ibft_nic=/sys/firmware/ibft/ethernet0 ibft_nic2=/sys/firmware/ibft/ethernet1 -ibft_hostname=$(hostname) +ibft_hostname=localhost if [ "$root_iscsi" = 1 -a -d $ibft_nic ]; then ibft_available=1 ibft_set_iface fi save_var ibft_available save_var ibft_hostname save_var ibft_nic save_var ibft_nic2 Index: 1115/mkinitrd/scripts/setup-network.sh =================================================================== --- 1115.orig/mkinitrd/scripts/setup-network.sh +++ 1115/mkinitrd/scripts/setup-network.sh @@ -287,27 +287,36 @@ if [ "$nettype" = "ifup" ] ; then verbose "[NETWORK]\tifup: $interface" fi done interface= fi # Copy the /etc/resolv.conf when the IP is static if test -n "$static_interfaces"; then verbose "[NETWORK]\tUsing /etc/resolv.conf from the system in the initrd" cp /etc/resolv.conf $tmp_mnt/etc fi # Copy netcfg files (bnc#468090, bnc#714945) -cp /etc/{hosts,protocols,services,netconfig} $tmp_mnt/etc +cp /etc/{protocols,services,netconfig} $tmp_mnt/etc +cat > $tmp_mnt/etc/hosts <<_EOH_ +127.0.0.1 localhost +::1 localhost ipv6-localhost ipv6-loopback +fe00::0 ipv6-localnet +ff00::0 ipv6-mcastprefix +ff02::1 ipv6-allnodes +ff02::2 ipv6-allrouters +ff02::3 ipv6-allhosts +_EOH_ mkdir -p $tmp_mnt/var/lib/dhcpcd mkdir -p $tmp_mnt/var/run cp_bin /lib/mkinitrd/bin/ipconfig.sh $tmp_mnt/bin/ipconfig if [ -f /etc/udev/rules.d/70-persistent-net.rules ] ; then cp /etc/udev/rules.d/70-persistent-net.rules $tmp_mnt/etc/udev/rules.d fi # XXX: This belongs to the if [ "$nettype" = "ifup" ] branch above, but we # are being bug-compatible with previous versions of mkinitrd, which # included these files unconditionally (bnc#891573). if [ -f /etc/udev/rules.d/77-network.rules ] ; then cp /etc/udev/rules.d/77-network.rules $tmp_mnt/etc/udev/rules.d Index: 1115/mkinitrd/scripts/setup-prepare.sh =================================================================== --- 1115.orig/mkinitrd/scripts/setup-prepare.sh +++ 1115/mkinitrd/scripts/setup-prepare.sh @@ -13,43 +13,103 @@ #%param_v: "Verbose mode." #%param_L: "Disable logging." #%param_h: "This help screen." # ###### Additional options ## ## Script inclusion may be overriden by ## 1) creating a monster-initrd ## 2) including the wanted module in the configuration option ADDITIONAL_FEATURES in /etc/sysconfig/initrd ## 3) definition using the -f command line switch ## # Install a binary file +# cp_bin file target_filename +# cp_bin file target_directory +# cp_bin file file target_directory +# file is either a regular file or a symlink. symlinks and all paths they point to will be copied +# the "root" of target is $tmp_mnt, which is required to copy symlinks properly cp_bin() { - cp -a "$@" \ - || exit_code=1 + local -a files + local target + local target_dirname + local file - # Remember the binaries installed. We need the list for checking - # for dynamic libraries. - while [ $# -gt 1 ]; do - initrd_bins[${#initrd_bins[@]}]=$1 - shift - done - # file may print '^setuid ELF ...' - # suid mount will fail if mkinitrd was called as user - if [ -L "$1" ]; then - : do nothing with symlinks - elif [ -d "$1" -o -f "$1" ]; then - find "$1" -type f -print0 | xargs -0 chmod 0755 - fi + # need at least two parameters, source and destination + if test $# -lt 2 + then + return 0 + fi + # store source filenames + until test $# -eq 1 + do + files=( ${files[@]} $1 ) + shift + done + # store target, either file or directory + target=$1 + # if more than two parameters, last entry must be a directory + if test ${#files[@]} -gt 1 + then + if ! test -d ${target} + then + return 0 + fi + target_dirname=${target} + else + # simplify symlink resolving for sinlge filename + target_dirname=${target%/*} + fi + + for file in ${files[@]} + do + local src dst + src=${file} + dst=${target} + # copy requested soure file as is to requested destination + cp -a -v --remove-destination ${src} ${dst} + # copy symlinks recursivly + while [ 1 ] + do + local tmp_src + if test -L ${src} + then + tmp_src=$(readlink ${src}) + if test "${tmp_src:0:1}" = "/" + then + src=${tmp_src} + else + # relative symlink + src=${src%/*}/${tmp_src} + fi + cp -a -v --remove-destination --parents ${src} $tmp_mnt + # if link target exists, proceed to next symlink target + if test -e "${src}" + then + continue + fi + fi + # exit loop in case of dead symlink or if target of symlink was reached + break + done + # if source file exists, add it to list of binaries + if test -e "${src}" + then + # file may print '^setuid ELF ...' + # suid mount will fail if mkinitrd was called as user + chmod -v 0755 $tmp_mnt/${src} + initrd_bins[${#initrd_bins[@]}]=${src} + fi + done } # check if we should use script or feature $1 use_script() { local condition feature script file # always use when creating monster initrd [ "$create_monster_initrd" ] && return 0 # Normalize to feature name feature="${1##*/}" feature="${feature#*-}" feature="${feature%.sh}" Index: 1115/mkinitrd/scripts/setup-progs.sh =================================================================== --- 1115.orig/mkinitrd/scripts/setup-progs.sh +++ 1115/mkinitrd/scripts/setup-progs.sh @@ -28,29 +28,29 @@ for script in $INITRD_PATH/boot/*.sh; do echo "[ \"\$debug\" ] && echo running $file source boot/$file [ \"\$modules\" ] && load_modules" >> run_all.sh [ "$condition" ] && echo "fi" >> run_all.sh # and all programs it needs for files in $(cat $script | grep '%programs: ' | sed 's/^#%programs: \(.*\)$/\1/'); do for file in $(eval echo $files); do if [ "${file:0:17}" = "/lib/mkinitrd/bin" ]; then SOURCE=$file DEST="./bin/" elif [ "${file:0:1}" = "/" ]; then # absolute path files have to stay alive SOURCE=$file [ ! -e $file -a -e /usr$file ] && SOURCE="/usr$file" - DEST=".$file" + DEST=".$SOURCE" else SOURCE=$(which "$file") - DEST="./bin/" + DEST=".$SOURCE" fi cp_bin "$SOURCE" "$DEST" done done fi done echo -ne "Features: " echo $features [ -e "bin/sh" ] || ln -s /bin/bash bin/sh Index: 1115/mkinitrd/scripts/setup-scsi_dh.sh =================================================================== --- 1115.orig/mkinitrd/scripts/setup-scsi_dh.sh +++ 1115/mkinitrd/scripts/setup-scsi_dh.sh @@ -1,13 +1,13 @@ #!/bin/bash # #%stage: device # # Include all scsi_dh_* modules and load them on boot (bnc#727428 et al) scsi_dh_modules= -for i in $(find $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler -name "scsi[-_]dh[_-]*.ko"); do +for i in $(find $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler -name "scsi[-_]dh[_-]*.ko" | sort); do i=${i%.ko} scsi_dh_modules="$scsi_dh_modules ${i##*/}" done save_var scsi_dh_modules Index: 1115/mkinitrd/scripts/setup-sharedlibs.sh =================================================================== --- 1115.orig/mkinitrd/scripts/setup-sharedlibs.sh +++ 1115/mkinitrd/scripts/setup-sharedlibs.sh @@ -54,58 +54,68 @@ shared_object_files() { while [ -L "/$lib" ]; do echo $lib link="$(readlink "/$lib")" if [ x"${link:0:1}" == x"/" ]; then lib=${link#/} else lib="${lib%/*}/$link" fi done echo $lib done } -verbose -ne "Shared libs:\t" -# Copy all required shared libraries and the symlinks that -# refer to them. -lib_files=$(shared_object_files "${initrd_bins[@]}") -[ $? -eq 0 ] || return 1 -if [ -n "$lib_files" ]; then - for lib in $lib_files; do - [ -L $root_dir/$lib ] || verbose -n "$lib " - ( cd ${root_dir:-/} ; cp -dp --parents $lib $tmp_mnt ) - done - lib_files= +copy_shared_libs() { + local bins=( "$@" ) + local extra_lib_files lib_files lib i + + # First see what nss and other libs are required. This can be 64bit or 32bit, + # depending on the host and the already copied binaries. case "$(uname -m)" in alpha|ia64) + # this is a known location mkdir -p $tmp_mnt/lib - lib_files="$lib_files `echo $root_dir/lib/libnss_{dns,files}* $root_dir/lib/lib{gcc_s,unwind}.so*`" + extra_lib_files="`echo $root_dir/lib/libnss_{dns,files}* $root_dir/lib/lib{gcc_s,unwind}.so*`" ;; *) - # no symlinks, most point into the running system - for i in `LANG=C LC_ALL=C file -b $tmp_mnt/{,usr/}{lib*/udev/,{,s}bin}/* | sed -n 's/^ELF \([0-9][0-9]-bit\) .*/\1/p' | sort -u` + # Skip symlinks, they may point into the running system instead of $tmp_mnt + for i in `LANG=C LC_ALL=C file -b $tmp_mnt/{,usr/}{lib*/udev,{,s}bin}/* | sed -n 's/^ELF \([0-9][0-9]-bit\) .*/\1/p' | sort -u` do case "$i" in 32-bit) mkdir -p $tmp_mnt/lib - lib_files="$lib_files `echo $root_dir/lib/libnss_{dns,files}* $root_dir/lib/libgcc_s.so*`" + extra_lib_files="$extra_lib_files `echo $root_dir/lib/libnss_{dns,files}* $root_dir/lib/libgcc_s.so*`" ;; 64-bit) mkdir -p $tmp_mnt/lib64 - lib_files="$lib_files `echo $root_dir/lib64/libnss_{dns,files}* $root_dir/lib64/libgcc_s.so*`" + extra_lib_files="$extra_lib_files `echo $root_dir/lib64/libnss_{dns,files}* $root_dir/lib64/libgcc_s.so*`" ;; esac done ;; esac - for lib in $lib_files ; do - if [ -f $lib ] ; then - verbose -n "${lib##$root_dir/} " - cp -dp --parents $lib $tmp_mnt + verbose -ne "Shared libs:\t" + + # Now collect a list of libraries on which the binaries and extra libs depend on + lib_files=$( shared_object_files ${bins[@]} $extra_lib_files ) + if [ $? -eq 0 ] + then + if [ -n "$lib_files" ] + then + # Finally copy dependencies and extra libs + for lib in $lib_files $extra_lib_files + do + [ -L $root_dir/$lib ] || verbose -n "$lib " + ( cd ${root_dir:-/} ; cp -dp --parents $lib $tmp_mnt ) + done + verbose + else + verbose "none" fi - done - verbose -else - verbose "none" -fi + else + return 1 + fi +} +# Copy all required shared libraries and the symlinks that refer to them. +copy_shared_libs "${initrd_bins[@]}" ++++++ libguestfs.mkinitrd.1140.patch ++++++ --- mkinitrd/scripts/setup-ibft.sh | 2 mkinitrd/scripts/setup-network.sh | 14 ++++- mkinitrd/scripts/setup-prepare.sh | 94 ++++++++++++++++++++++++++++------- mkinitrd/scripts/setup-progs.sh | 17 +----- mkinitrd/scripts/setup-sharedlibs.sh | 60 +++++++++++++--------- 5 files changed, 127 insertions(+), 60 deletions(-) Index: 1140/mkinitrd/scripts/setup-ibft.sh =================================================================== --- 1140.orig/mkinitrd/scripts/setup-ibft.sh +++ 1140/mkinitrd/scripts/setup-ibft.sh @@ -9,22 +9,22 @@ ibft_set_iface() { interface=$if drvlink=$(get_network_module $interface) if [ ! "$nettype" -a -e $ibft_nic/dhcp ]; then nettype=dhcp read ibft_dhcp < $ibft_nic/dhcp [ "$ibft_dhcp" = "0.0.0.0" ] && nettype=static else nettype=static fi } } ibft_nic=/sys/firmware/ibft/ethernet0 -ibft_hostname=$(hostname) +ibft_hostname=localhost if [ "$root_iscsi" = 1 -a -d $ibft_nic ]; then ibft_available=1 ibft_set_iface fi save_var ibft_available save_var ibft_hostname save_var ibft_nic Index: 1140/mkinitrd/scripts/setup-network.sh =================================================================== --- 1140.orig/mkinitrd/scripts/setup-network.sh +++ 1140/mkinitrd/scripts/setup-network.sh @@ -231,29 +231,37 @@ if [ "$nettype" = "ifup" ] ; then drvlink="$drvlink $mod" verbose "[NETWORK]\t$interface ($nettype)" fi done interface= fi # Copy the /etc/resolv.conf when the IP is static if [ "$interface" -a "$nettype" = "static" -a -f /etc/resolv.conf ] ; then verbose "[NETWORK]\tUsing /etc/resolv.conf from the system in the initrd" cp /etc/resolv.conf $tmp_mnt/etc fi -# Copy /etc/hosts in any case to be able to resolve static host names in the -# initrd (bnc #468090) -cp /etc/hosts $tmp_mnt/etc +# Copy netcfg files (bnc#468090, bnc#714945) +cp /etc/{protocols,services,netconfig} $tmp_mnt/etc +cat > $tmp_mnt/etc/hosts <<_EOH_ +127.0.0.1 localhost +::1 localhost ipv6-localhost ipv6-loopback +fe00::0 ipv6-localnet +ff00::0 ipv6-mcastprefix +ff02::1 ipv6-allnodes +ff02::2 ipv6-allrouters +ff02::3 ipv6-allhosts +_EOH_ # Get static IP configuration if requested if [ "$interface" -a "$nettype" = "static" ] ; then ip=$(get_ip_config $interface) fi mkdir -p $tmp_mnt/var/lib/dhcpcd mkdir -p $tmp_mnt/var/run cp_bin /lib/mkinitrd/bin/ipconfig.sh $tmp_mnt/bin/ipconfig if [ -f /etc/udev/rules.d/70-persistent-net.rules ] ; then cp /etc/udev/rules.d/70-persistent-net.rules $tmp_mnt/etc/udev/rules.d fi Index: 1140/mkinitrd/scripts/setup-prepare.sh =================================================================== --- 1140.orig/mkinitrd/scripts/setup-prepare.sh +++ 1140/mkinitrd/scripts/setup-prepare.sh @@ -13,43 +13,103 @@ #%param_R: "Print release (version)." #%param_L: "Disable logging." #%param_h: "This help screen." # ###### Additional options ## ## Script inclusion may be overriden by ## 1) creating a monster-initrd ## 2) including the wanted module in the configuration option ADDITIONAL_FEATURES in /etc/sysconfig/initrd ## 3) definition using the -f command line switch ## # Install a binary file +# cp_bin file target_filename +# cp_bin file target_directory +# cp_bin file file target_directory +# file is either a regular file or a symlink. symlinks and all paths they point to will be copied +# the "root" of target is $tmp_mnt, which is required to copy symlinks properly cp_bin() { - cp -a "$@" \ - || exit_code=1 - - # Remember the binaries installed. We need the list for checking - # for dynamic libraries. - while [ $# -gt 1 ]; do - initrd_bins[${#initrd_bins[@]}]=$1 - shift - done - # file may print '^setuid ELF ...' - # suid mount will fail if mkinitrd was called as user - if [ -L "$1" ]; then - : do nothing with symlinks - elif [ -d "$1" -o -f "$1" ]; then - find "$1" -type f -print0 | xargs -0 chmod 0755 - fi + local -a files + local target + local target_dirname + local file + + # need at least two parameters, source and destination + if test $# -lt 2 + then + return 0 + fi + # store source filenames + until test $# -eq 1 + do + files=( ${files[@]} $1 ) + shift + done + # store target, either file or directory + target=$1 + # if more than two parameters, last entry must be a directory + if test ${#files[@]} -gt 1 + then + if ! test -d ${target} + then + return 0 + fi + target_dirname=${target} + else + # simplify symlink resolving for sinlge filename + target_dirname=${target%/*} + fi + + for file in ${files[@]} + do + local src dst + src=${file} + dst=${target} + # copy requested soure file as is to requested destination + cp -a -v --remove-destination ${src} ${dst} + # copy symlinks recursivly + while [ 1 ] + do + local tmp_src + if test -L ${src} + then + tmp_src=$(readlink ${src}) + if test "${tmp_src:0:1}" = "/" + then + src=${tmp_src} + else + # relative symlink + src=${src%/*}/${tmp_src} + fi + cp -a -v --remove-destination --parents ${src} $tmp_mnt + # if link target exists, proceed to next symlink target + if test -e "${src}" + then + continue + fi + fi + # exit loop in case of dead symlink or if target of symlink was reached + break + done + # if source file exists, add it to list of binaries + if test -e "${src}" + then + # file may print '^setuid ELF ...' + # suid mount will fail if mkinitrd was called as user + chmod -v 0755 $tmp_mnt/${src} + initrd_bins[${#initrd_bins[@]}]=${src} + fi + done } # check if we should use script or feature $1 use_script() { local condition feature script file # always use when creating monster initrd [ "$create_monster_initrd" ] && return 0 # Normalize to feature name feature="${1##*/}" feature="${feature#*-}" feature="${feature%.sh}" @@ -143,27 +203,27 @@ fi for feature in $ADDITIONAL_FEATURES ; do feature_exists "$feature" || echo "[WARNING] Feature \"$feature\" not found. A typo?" done # create an empty initrd if ! mkdir $tmp_mnt ; then error 1 "could not create temporary directory" fi # fill the initrd cp $INITRD_PATH/bin/linuxrc $linuxrc mkdir "$tmp_mnt/boot" -mkdir -p $tmp_mnt/{sbin,bin,etc,dev,proc,sys,root,config} +mkdir -p $tmp_mnt/{sbin,bin,etc,dev,proc,sys,root,config,usr/bin,usr/sbin} mkdir -p -m 4777 $tmp_mnt/tmp # Create a dummy /etc/mtab for mount/umount echo -n > $tmp_mnt/etc/mtab # Add modprobe, modprobe.conf*, and a version of /bin/true: modprobe.conf # might use it. for mod in $root_dir/etc/modprobe.conf $root_dir/etc/modprobe.conf.local \ $root_dir/etc/modprobe.d ; do test -e $mod && cp -r $mod $tmp_mnt/etc done cat > $tmp_mnt/bin/true <<-EOF Index: 1140/mkinitrd/scripts/setup-progs.sh =================================================================== --- 1140.orig/mkinitrd/scripts/setup-progs.sh +++ 1140/mkinitrd/scripts/setup-progs.sh @@ -24,48 +24,37 @@ for script in $INITRD_PATH/boot/*.sh; do condition="$(sed -rn 's/^#[[:blank:]]*%if:[[:blank:]]*(.*)$/if [ \1 ]; then/p' < "$script")" echo "$condition" >> run_all.sh # -- remember dependent modules sed -rn 's/^#[[:blank:]]*%modules:[[:blank:]]*(.*)$/modules="\1"/p' < $script >> run_all.sh echo "[ \"\$debug\" ] && echo running $file source boot/$file [ \"\$modules\" ] && load_modules" >> run_all.sh [ "$condition" ] && echo "fi" >> run_all.sh # and all programs it needs for files in $(sed -rn 's/^#[[:blank:]]*%programs:[[:blank:]]*(.*)$/\1/p' < "$script"); do for file in $(eval echo $files); do if [ "${file:0:17}" = "/lib/mkinitrd/bin" ]; then SOURCE=$file - DEST="./bin/" + DEST="${tmp_mnt}/bin/" elif [ "${file:0:1}" = "/" ]; then # absolute path files have to stay alive SOURCE=$file [ ! -e $file -a -e /usr$file ] && SOURCE="/usr$file" - DEST=".$file" + DEST="${tmp_mnt}$SOURCE" else case "$(type -t "$file")" in builtin) continue esac SOURCE=$(type -p "$file") - DEST="./bin/" + DEST="${tmp_mnt}$SOURCE" fi cp_bin "$SOURCE" "$DEST" - - # if we're given a symlink, always copy the linked file too - if [ -L "$SOURCE" ]; then - LINK=$(readlink -e "$SOURCE") - if [ -e "$LINK" ]; then - mkdir -p .$(dirname "$LINK") - cp_bin "$LINK" ."$LINK" - else - echo 2>&1 "WARNING: $LINK is a dangling symlink" - fi - fi done done fi done echo -ne "Features: " echo $features [ -e "bin/sh" ] || ln -s /bin/bash bin/sh Index: 1140/mkinitrd/scripts/setup-sharedlibs.sh =================================================================== --- 1140.orig/mkinitrd/scripts/setup-sharedlibs.sh +++ 1140/mkinitrd/scripts/setup-sharedlibs.sh @@ -54,58 +54,68 @@ shared_object_files() { while [ -L "/$lib" ]; do echo $lib link="$(readlink "/$lib")" if [ x"${link:0:1}" == x"/" ]; then lib=${link#/} else lib="${lib%/*}/$link" fi done echo $lib done } -verbose -ne "Shared libs:\t" -# Copy all required shared libraries and the symlinks that -# refer to them. -lib_files=$(shared_object_files "${initrd_bins[@]}") -[ $? -eq 0 ] || return 1 -if [ -n "$lib_files" ]; then - for lib in $lib_files; do - [ -L $root_dir/$lib ] || verbose -n "$lib " - ( cd ${root_dir:-/} ; cp -dp --parents $lib $tmp_mnt ) - done - lib_files= +copy_shared_libs() { + local bins=( "$@" ) + local extra_lib_files lib_files lib i + + # First see what nss and other libs are required. This can be 64bit or 32bit, + # depending on the host and the already copied binaries. case "$(uname -m)" in ia64) + # this is a known location mkdir -p $tmp_mnt/lib - lib_files="$lib_files `echo $root_dir/lib/libnss_{dns,files}* $root_dir/lib/lib{gcc_s,unwind}.so*`" + extra_lib_files="`echo $root_dir/lib/libnss_{dns,files}* $root_dir/lib/lib{gcc_s,unwind}.so*`" ;; *) - # no symlinks, most point into the running system - for i in `LANG=C LC_ALL=C file -b $tmp_mnt/{,usr/}{lib*/udev/,{,s}bin}/* | sed -n 's/^ELF \([0-9][0-9]-bit\) .*/\1/p' | sort -u` + # Skip symlinks, they may point into the running system instead of $tmp_mnt + for i in `LANG=C LC_ALL=C file -b $tmp_mnt/{,usr/}{lib*/udev,{,s}bin}/* | sed -n 's/^ELF \([0-9][0-9]-bit\) .*/\1/p' | sort -u` do case "$i" in 32-bit) mkdir -p $tmp_mnt/lib - lib_files="$lib_files `echo $root_dir/lib/libnss_{dns,files}* $root_dir/lib/libgcc_s.so*`" + extra_lib_files="$extra_lib_files `echo $root_dir/lib/libnss_{dns,files}* $root_dir/lib/libgcc_s.so*`" ;; 64-bit) mkdir -p $tmp_mnt/lib64 - lib_files="$lib_files `echo $root_dir/lib64/libnss_{dns,files}* $root_dir/lib64/libgcc_s.so*`" + extra_lib_files="$extra_lib_files `echo $root_dir/lib64/libnss_{dns,files}* $root_dir/lib64/libgcc_s.so*`" ;; esac done ;; esac - for lib in $lib_files ; do - if [ -f $lib ] ; then - verbose -n "${lib##$root_dir/} " - cp -dp --parents $lib $tmp_mnt + verbose -ne "Shared libs:\t" + + # Now collect a list of libraries on which the binaries and extra libs depend on + lib_files=$( shared_object_files ${bins[@]} $extra_lib_files ) + if [ $? -eq 0 ] + then + if [ -n "$lib_files" ] + then + # Finally copy dependencies and extra libs + for lib in $lib_files $extra_lib_files + do + [ -L $root_dir/$lib ] || verbose -n "$lib " + ( cd ${root_dir:-/} ; cp -dp --parents $lib $tmp_mnt ) + done + verbose + else + verbose "none" fi - done - verbose -else - verbose "none" -fi + else + return 1 + fi +} +# Copy all required shared libraries and the symlinks that refer to them. +copy_shared_libs "${initrd_bins[@]}" ++++++ libguestfs.mkinitrd.1210.patch ++++++ --- /var/tmp/diff_new_pack.GAO6Rh/_old 2015-05-20 23:57:48.000000000 +0200 +++ /var/tmp/diff_new_pack.GAO6Rh/_new 2015-05-20 23:57:48.000000000 +0200 @@ -1,9 +1,81 @@ --- + mkinitrd/scripts/setup-ibft.sh | 2 + mkinitrd/scripts/setup-network.sh | 11 +++- mkinitrd/scripts/setup-prepare.sh | 94 ++++++++++++++++++++++++++++------- mkinitrd/scripts/setup-progs.sh | 17 +----- mkinitrd/scripts/setup-sharedlibs.sh | 60 +++++++++++++--------- - 3 files changed, 115 insertions(+), 56 deletions(-) + 5 files changed, 126 insertions(+), 58 deletions(-) +Index: 1210/mkinitrd/scripts/setup-ibft.sh +=================================================================== +--- 1210.orig/mkinitrd/scripts/setup-ibft.sh ++++ 1210/mkinitrd/scripts/setup-ibft.sh +@@ -9,22 +9,22 @@ ibft_set_iface() { + interface=$if + drvlink=$(get_network_module $interface) + if [ ! "$nettype" -a -e $ibft_nic/dhcp ]; then + nettype=dhcp + read ibft_dhcp < $ibft_nic/dhcp + [ "$ibft_dhcp" = "0.0.0.0" ] && nettype=static + else + nettype=static + fi + } + } + + ibft_nic=/sys/firmware/ibft/ethernet0 +-ibft_hostname=$(hostname) ++ibft_hostname=localhost + + if [ "$root_iscsi" = 1 -a -d $ibft_nic ]; then + ibft_available=1 + ibft_set_iface + fi + save_var ibft_available + save_var ibft_hostname + save_var ibft_nic +Index: 1210/mkinitrd/scripts/setup-network.sh +=================================================================== +--- 1210.orig/mkinitrd/scripts/setup-network.sh ++++ 1210/mkinitrd/scripts/setup-network.sh +@@ -277,27 +277,36 @@ if [ "$nettype" = "ifup" ] ; then + verbose "[NETWORK]\tifup: $interface" + fi + done + interface= + fi + + # Copy the /etc/resolv.conf when the IP is static + if test -n "$static_interfaces"; then + verbose "[NETWORK]\tUsing /etc/resolv.conf from the system in the initrd" + cp /etc/resolv.conf $tmp_mnt/etc + fi + + # Copy netcfg files (bnc#468090, bnc#714945) +-cp /etc/{hosts,protocols,services,netconfig} $tmp_mnt/etc ++cp /etc/{protocols,services,netconfig} $tmp_mnt/etc ++cat > $tmp_mnt/etc/hosts <<_EOH_ ++127.0.0.1 localhost ++::1 localhost ipv6-localhost ipv6-loopback ++fe00::0 ipv6-localnet ++ff00::0 ipv6-mcastprefix ++ff02::1 ipv6-allnodes ++ff02::2 ipv6-allrouters ++ff02::3 ipv6-allhosts ++_EOH_ + + # Get static IP configuration if requested + for iface in $static_interfaces; do + static_ips="$static_ips $(get_ip_config $iface)" + done + + mkdir -p $tmp_mnt/var/lib/dhcpcd + mkdir -p $tmp_mnt/var/run + + cp_bin /lib/mkinitrd/bin/ipconfig.sh $tmp_mnt/bin/ipconfig + if [ -f /etc/udev/rules.d/70-persistent-net.rules ] ; then + cp /etc/udev/rules.d/70-persistent-net.rules $tmp_mnt/etc/udev/rules.d + fi Index: 1210/mkinitrd/scripts/setup-prepare.sh =================================================================== --- 1210.orig/mkinitrd/scripts/setup-prepare.sh ++++++ libguestfs.mkinitrd.1220.patch ++++++ --- /var/tmp/diff_new_pack.GAO6Rh/_old 2015-05-20 23:57:48.000000000 +0200 +++ /var/tmp/diff_new_pack.GAO6Rh/_new 2015-05-20 23:57:48.000000000 +0200 @@ -1,9 +1,82 @@ --- + mkinitrd/scripts/setup-ibft.sh | 2 + mkinitrd/scripts/setup-network.sh | 11 ++- mkinitrd/scripts/setup-prepare.sh | 126 +++++++++++++++++++++-------------- mkinitrd/scripts/setup-progs.sh | 17 ---- + mkinitrd/scripts/setup-scsi_dh.sh | 2 mkinitrd/scripts/setup-sharedlibs.sh | 60 +++++++++------- - 3 files changed, 114 insertions(+), 89 deletions(-) + 6 files changed, 126 insertions(+), 92 deletions(-) +Index: 1220/mkinitrd/scripts/setup-ibft.sh +=================================================================== +--- 1220.orig/mkinitrd/scripts/setup-ibft.sh ++++ 1220/mkinitrd/scripts/setup-ibft.sh +@@ -21,22 +21,22 @@ ibft_set_iface() { + interface=$iface + drvlink=$(get_network_module $interface) + if [ ! "$nettype" -a -e $ibft_nic/dhcp ]; then + nettype=dhcp + read ibft_dhcp < $ibft_nic/dhcp + [ "$ibft_dhcp" = "0.0.0.0" ] && nettype=static + else + nettype=static + fi + fi + } + + ibft_nic=/sys/firmware/ibft/ethernet0 +-ibft_hostname=$(hostname) ++ibft_hostname=localhost + + if [ "$root_iscsi" = 1 -a -d $ibft_nic ]; then + ibft_available=1 + ibft_set_iface + fi + save_var ibft_available + save_var ibft_hostname + save_var ibft_nic +Index: 1220/mkinitrd/scripts/setup-network.sh +=================================================================== +--- 1220.orig/mkinitrd/scripts/setup-network.sh ++++ 1220/mkinitrd/scripts/setup-network.sh +@@ -278,27 +278,36 @@ if [ "$nettype" = "ifup" ] ; then + verbose "[NETWORK]\tifup: $interface" + fi + done + interface= + fi + + # Copy the /etc/resolv.conf when the IP is static + if test -n "$static_interfaces"; then + verbose "[NETWORK]\tUsing /etc/resolv.conf from the system in the initrd" + cp /etc/resolv.conf $tmp_mnt/etc + fi + + # Copy netcfg files (bnc#468090, bnc#714945) +-cp /etc/{hosts,protocols,services,netconfig} $tmp_mnt/etc ++cp /etc/{protocols,services,netconfig} $tmp_mnt/etc ++cat > $tmp_mnt/etc/hosts <<_EOH_ ++127.0.0.1 localhost ++::1 localhost ipv6-localhost ipv6-loopback ++fe00::0 ipv6-localnet ++ff00::0 ipv6-mcastprefix ++ff02::1 ipv6-allnodes ++ff02::2 ipv6-allrouters ++ff02::3 ipv6-allhosts ++_EOH_ + + # Get static IP configuration if requested + for iface in $static_interfaces; do + static_ips="$static_ips $(get_ip_config $iface)" + done + + mkdir -p $tmp_mnt/var/lib/dhcpcd + mkdir -p $tmp_mnt/var/run + + cp_bin /lib/mkinitrd/bin/ipconfig.sh $tmp_mnt/bin/ipconfig + if [ -f /etc/udev/rules.d/70-persistent-net.rules ] ; then + cp /etc/udev/rules.d/70-persistent-net.rules $tmp_mnt/etc/udev/rules.d + fi Index: 1220/mkinitrd/scripts/setup-prepare.sh =================================================================== --- 1220.orig/mkinitrd/scripts/setup-prepare.sh @@ -218,6 +291,25 @@ [ -e "bin/sh" ] || ln -s /bin/bash bin/sh +Index: 1220/mkinitrd/scripts/setup-scsi_dh.sh +=================================================================== +--- 1220.orig/mkinitrd/scripts/setup-scsi_dh.sh ++++ 1220/mkinitrd/scripts/setup-scsi_dh.sh +@@ -1,13 +1,13 @@ + #!/bin/bash + # + #%stage: device + # + # Include all scsi_dh_* modules and load them on boot (bnc#727428 et al) + + scsi_dh_modules= +-for i in $(find $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler -name "scsi[-_]dh[_-]*.ko"); do ++for i in $(find $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler -name "scsi[-_]dh[_-]*.ko"| sort); do + i=${i%.ko} + scsi_dh_modules="$scsi_dh_modules ${i##*/}" + done + + save_var scsi_dh_modules Index: 1220/mkinitrd/scripts/setup-sharedlibs.sh =================================================================== --- 1220.orig/mkinitrd/scripts/setup-sharedlibs.sh ++++++ libguestfs.mkinitrd.1230.patch ++++++ --- mkinitrd/scripts/setup-ibft.sh | 2 +- mkinitrd/scripts/setup-network.sh | 11 ++++++++++- mkinitrd/scripts/setup-scsi_dh.sh | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) Index: 1230/mkinitrd/scripts/setup-ibft.sh =================================================================== --- 1230.orig/mkinitrd/scripts/setup-ibft.sh +++ 1230/mkinitrd/scripts/setup-ibft.sh @@ -21,22 +21,22 @@ ibft_set_iface() { interface=$iface drvlink=$(get_network_module $interface) if [ ! "$nettype" -a -e $ibft_nic/dhcp ]; then nettype=dhcp read ibft_dhcp < $ibft_nic/dhcp [ "$ibft_dhcp" = "0.0.0.0" ] && nettype=static else nettype=static fi fi } ibft_nic=/sys/firmware/ibft/ethernet0 -ibft_hostname=$(hostname) +ibft_hostname=localhost if [ "$root_iscsi" = 1 -a -d $ibft_nic ]; then ibft_available=1 ibft_set_iface fi save_var ibft_available save_var ibft_hostname save_var ibft_nic Index: 1230/mkinitrd/scripts/setup-network.sh =================================================================== --- 1230.orig/mkinitrd/scripts/setup-network.sh +++ 1230/mkinitrd/scripts/setup-network.sh @@ -278,27 +278,36 @@ if [ "$nettype" = "ifup" ] ; then verbose "[NETWORK]\tifup: $interface" fi done interface= fi # Copy the /etc/resolv.conf when the IP is static if test -n "$static_interfaces"; then verbose "[NETWORK]\tUsing /etc/resolv.conf from the system in the initrd" cp /etc/resolv.conf $tmp_mnt/etc fi # Copy netcfg files (bnc#468090, bnc#714945) -cp /etc/{hosts,protocols,services,netconfig} $tmp_mnt/etc +cp /etc/{protocols,services,netconfig} $tmp_mnt/etc +cat > $tmp_mnt/etc/hosts <<_EOH_ +127.0.0.1 localhost +::1 localhost ipv6-localhost ipv6-loopback +fe00::0 ipv6-localnet +ff00::0 ipv6-mcastprefix +ff02::1 ipv6-allnodes +ff02::2 ipv6-allrouters +ff02::3 ipv6-allhosts +_EOH_ # Get static IP configuration if requested for iface in $static_interfaces; do static_ips="$static_ips $(get_ip_config $iface)" done mkdir -p $tmp_mnt/var/lib/dhcpcd mkdir -p $tmp_mnt/var/run cp_bin /lib/mkinitrd/bin/ipconfig $tmp_mnt/bin/ipconfig if [ -f /etc/udev/rules.d/70-persistent-net.rules ] ; then cp /etc/udev/rules.d/70-persistent-net.rules $tmp_mnt/etc/udev/rules.d fi Index: 1230/mkinitrd/scripts/setup-scsi_dh.sh =================================================================== --- 1230.orig/mkinitrd/scripts/setup-scsi_dh.sh +++ 1230/mkinitrd/scripts/setup-scsi_dh.sh @@ -1,13 +1,13 @@ #!/bin/bash # #%stage: device # # Include all scsi_dh_* modules and load them on boot (bnc#727428 et al) scsi_dh_modules= -for i in $(find $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler -name "scsi[-_]dh[_-]*.ko"); do +for i in $(find $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler -name "scsi[-_]dh[_-]*.ko"| sort); do i=${i%.ko} scsi_dh_modules="$scsi_dh_modules ${i##*/}" done save_var scsi_dh_modules ++++++ libguestfs.mkinitrd.1310.patch ++++++ --- mkinitrd/scripts/setup-ibft.sh | 2 +- mkinitrd/scripts/setup-network.sh | 11 ++++++++++- mkinitrd/scripts/setup-scsi_dh.sh | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) Index: 1310/mkinitrd/scripts/setup-ibft.sh =================================================================== --- 1310.orig/mkinitrd/scripts/setup-ibft.sh +++ 1310/mkinitrd/scripts/setup-ibft.sh @@ -21,22 +21,22 @@ ibft_set_iface() { interface=$iface drvlink=$(get_network_module $interface) if [ ! "$nettype" -a -e $ibft_nic/dhcp ]; then nettype=dhcp read ibft_dhcp < $ibft_nic/dhcp [ "$ibft_dhcp" = "0.0.0.0" ] && nettype=static else nettype=static fi fi } ibft_nic=/sys/firmware/ibft/ethernet0 -ibft_hostname=$(hostname) +ibft_hostname=localhost if [ "$root_iscsi" = 1 -a -d $ibft_nic ]; then ibft_available=1 ibft_set_iface fi save_var ibft_available save_var ibft_hostname save_var ibft_nic Index: 1310/mkinitrd/scripts/setup-network.sh =================================================================== --- 1310.orig/mkinitrd/scripts/setup-network.sh +++ 1310/mkinitrd/scripts/setup-network.sh @@ -278,27 +278,36 @@ if [ "$nettype" = "ifup" ] ; then verbose "[NETWORK]\tifup: $interface" fi done interface= fi # Copy the /etc/resolv.conf when the IP is static if test -n "$static_interfaces"; then verbose "[NETWORK]\tUsing /etc/resolv.conf from the system in the initrd" cp /etc/resolv.conf $tmp_mnt/etc fi # Copy netcfg files (bnc#468090, bnc#714945) -cp /etc/{hosts,protocols,services,netconfig} $tmp_mnt/etc +cp /etc/{protocols,services,netconfig} $tmp_mnt/etc +cat > $tmp_mnt/etc/hosts <<_EOH_ +127.0.0.1 localhost +::1 localhost ipv6-localhost ipv6-loopback +fe00::0 ipv6-localnet +ff00::0 ipv6-mcastprefix +ff02::1 ipv6-allnodes +ff02::2 ipv6-allrouters +ff02::3 ipv6-allhosts +_EOH_ # Get static IP configuration if requested for iface in $static_interfaces; do static_ips="$static_ips $(get_ip_config $iface)" done mkdir -p $tmp_mnt/var/lib/dhcpcd mkdir -p $tmp_mnt/var/run cp_bin /lib/mkinitrd/bin/ipconfig $tmp_mnt/bin/ipconfig if [ -f /etc/udev/rules.d/70-persistent-net.rules ] ; then cp /etc/udev/rules.d/70-persistent-net.rules $tmp_mnt/etc/udev/rules.d fi Index: 1310/mkinitrd/scripts/setup-scsi_dh.sh =================================================================== --- 1310.orig/mkinitrd/scripts/setup-scsi_dh.sh +++ 1310/mkinitrd/scripts/setup-scsi_dh.sh @@ -1,17 +1,17 @@ #!/bin/bash # #%stage: device # # Include all scsi_dh_* modules and load them on boot (bnc#727428 et al) scsi_dh_modules= if test -d $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler then - for i in $(find $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler -name "scsi[-_]dh[_-]*.ko") + for i in $(find $root_dir/lib/modules/$kernel_version/kernel/drivers/scsi/device_handler -name "scsi[-_]dh[_-]*.ko" | sort) do i=${i%.ko} scsi_dh_modules="$scsi_dh_modules ${i##*/}" done fi save_var scsi_dh_modules ++++++ libguestfs.mkinitrd.boot.sh ++++++ --- /var/tmp/diff_new_pack.GAO6Rh/_old 2015-05-20 23:57:48.000000000 +0200 +++ /var/tmp/diff_new_pack.GAO6Rh/_new 2015-05-20 23:57:48.000000000 +0200 @@ -17,6 +17,7 @@ #%udevmodules: 9p #%udevmodules: btrfs #%udevmodules: cramfs +#%udevmodules: cuse #%udevmodules: ext2 #%udevmodules: ext3 #%udevmodules: ext4 @@ -24,6 +25,7 @@ #%udevmodules: fuse #%udevmodules: hfs #%udevmodules: hfsplus +#%udevmodules: isofs #%udevmodules: jfs #%udevmodules: minix #%udevmodules: nfs @@ -35,6 +37,17 @@ #%udevmodules: ufs #%udevmodules: xfs #%udevmodules: +#%udevmodules: mac-celtic +#%udevmodules: mac-centeuro +#%udevmodules: mac-croatian +#%udevmodules: mac-cyrillic +#%udevmodules: mac-gaelic +#%udevmodules: mac-greek +#%udevmodules: mac-iceland +#%udevmodules: mac-inuit +#%udevmodules: mac-roman +#%udevmodules: mac-romanian +#%udevmodules: mac-turkish #%udevmodules: nls_ascii #%udevmodules: nls_cp1250 #%udevmodules: nls_cp1251 @@ -74,6 +87,7 @@ #%udevmodules: nls_koi8-r #%udevmodules: nls_koi8-ru #%udevmodules: nls_koi8ru +#%udevmodules: nls_koi8-u #%udevmodules: nls_utf8 #%udevmodules: #%udevmodules: af_packet ++++++ libguestfs.mkinitrd.setup.sh ++++++ --- /var/tmp/diff_new_pack.GAO6Rh/_old 2015-05-20 23:57:49.000000000 +0200 +++ /var/tmp/diff_new_pack.GAO6Rh/_new 2015-05-20 23:57:49.000000000 +0200 @@ -57,6 +57,17 @@ fi done +mkdir -p $tmp_mnt/usr/share/guestfs +if test -n "$LIBGUESTFS_SRC_APPLIANCE_DIR" +then + for f in $LIBGUESTFS_SRC_APPLIANCE_DIR/*.aug + do + if test -e $f + then + cp -Lavt $tmp_mnt/usr/share/guestfs $f + fi + done +fi for d in /usr/lib*/gconv do if test -e $d
