- Resolve also library dependencies of libnss in mkinitrd (bnc#847785)
- BuildRequire nfs-utils to get mount.nfs, for virt-rescue OBS-URL: https://build.opensuse.org/package/show/Virtualization/libguestfs?expand=0&rev=254
This commit is contained in:
parent
6e1bf6bd40
commit
2f158c7e68
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 20 11:34:25 CET 2014 - ohering@suse.de
|
||||
|
||||
- Resolve also library dependencies of libnss in mkinitrd (bnc#847785)
|
||||
- BuildRequire nfs-utils to get mount.nfs, for virt-rescue
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 16 21:29:47 CET 2014 - ohering@suse.de
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
---
|
||||
mkinitrd/scripts/setup-prepare.sh | 94 +++++++++++++++++++++++++++++++-------
|
||||
mkinitrd/scripts/setup-progs.sh | 4 -
|
||||
2 files changed, 79 insertions(+), 19 deletions(-)
|
||||
mkinitrd/scripts/setup-prepare.sh | 94 ++++++++++++++++++++++++++++-------
|
||||
mkinitrd/scripts/setup-progs.sh | 4 -
|
||||
mkinitrd/scripts/setup-sharedlibs.sh | 60 +++++++++++++---------
|
||||
3 files changed, 114 insertions(+), 44 deletions(-)
|
||||
|
||||
Index: 1110/mkinitrd/scripts/setup-prepare.sh
|
||||
===================================================================
|
||||
@ -192,3 +193,101 @@ Index: 1110/mkinitrd/scripts/setup-progs.sh
|
||||
|
||||
[ -e "bin/sh" ] || ln -s /bin/bash bin/sh
|
||||
|
||||
Index: 1110/mkinitrd/scripts/setup-sharedlibs.sh
|
||||
===================================================================
|
||||
--- 1110.orig/mkinitrd/scripts/setup-sharedlibs.sh
|
||||
+++ 1110/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[@]}"
|
||||
|
@ -1,7 +1,8 @@
|
||||
---
|
||||
mkinitrd/scripts/setup-prepare.sh | 94 +++++++++++++++++++++++++++++++-------
|
||||
mkinitrd/scripts/setup-progs.sh | 17 +-----
|
||||
2 files changed, 80 insertions(+), 31 deletions(-)
|
||||
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(-)
|
||||
|
||||
Index: 1210/mkinitrd/scripts/setup-prepare.sh
|
||||
===================================================================
|
||||
@ -212,3 +213,101 @@ Index: 1210/mkinitrd/scripts/setup-progs.sh
|
||||
|
||||
[ -e "bin/sh" ] || ln -s /bin/bash bin/sh
|
||||
|
||||
Index: 1210/mkinitrd/scripts/setup-sharedlibs.sh
|
||||
===================================================================
|
||||
--- 1210.orig/mkinitrd/scripts/setup-sharedlibs.sh
|
||||
+++ 1210/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[@]}"
|
||||
|
@ -1,7 +1,8 @@
|
||||
---
|
||||
mkinitrd/scripts/setup-prepare.sh | 126 ++++++++++++++++++++++----------------
|
||||
mkinitrd/scripts/setup-progs.sh | 17 -----
|
||||
2 files changed, 79 insertions(+), 64 deletions(-)
|
||||
mkinitrd/scripts/setup-prepare.sh | 126 +++++++++++++++++++++--------------
|
||||
mkinitrd/scripts/setup-progs.sh | 17 ----
|
||||
mkinitrd/scripts/setup-sharedlibs.sh | 60 +++++++++-------
|
||||
3 files changed, 114 insertions(+), 89 deletions(-)
|
||||
|
||||
Index: 1220/mkinitrd/scripts/setup-prepare.sh
|
||||
===================================================================
|
||||
@ -217,3 +218,101 @@ Index: 1220/mkinitrd/scripts/setup-progs.sh
|
||||
|
||||
[ -e "bin/sh" ] || ln -s /bin/bash bin/sh
|
||||
|
||||
Index: 1220/mkinitrd/scripts/setup-sharedlibs.sh
|
||||
===================================================================
|
||||
--- 1220.orig/mkinitrd/scripts/setup-sharedlibs.sh
|
||||
+++ 1220/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[@]}"
|
||||
|
@ -5,6 +5,11 @@
|
||||
# copy daemon manually because it is located in RPM_BUILD_ROOT
|
||||
mkdir -vp $tmp_mnt/usr/sbin
|
||||
cp_bin $(type -p guestfsd) $tmp_mnt/usr/sbin
|
||||
# required for mount.nfs inside the appliance
|
||||
for i in /etc/netconfig /etc/protocols /etc/rpc /etc/services
|
||||
do
|
||||
cp $i $tmp_mnt$i
|
||||
done
|
||||
|
||||
# many guestfish commands need a mount point
|
||||
# in guestfsd the mount point defaults to /sysroot
|
||||
|
@ -363,6 +363,7 @@ BuildRequires: mdadm
|
||||
BuildRequires: mkinitrd
|
||||
%endif
|
||||
BuildRequires: module-init-tools
|
||||
BuildRequires: nfs-client
|
||||
BuildRequires: ntfs-3g
|
||||
BuildRequires: ntfsprogs
|
||||
BuildRequires: parted
|
||||
|
Loading…
Reference in New Issue
Block a user