- 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
|
Thu Jan 16 21:29:47 CET 2014 - ohering@suse.de
|
||||||
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
---
|
---
|
||||||
mkinitrd/scripts/setup-prepare.sh | 94 +++++++++++++++++++++++++++++++-------
|
mkinitrd/scripts/setup-prepare.sh | 94 ++++++++++++++++++++++++++++-------
|
||||||
mkinitrd/scripts/setup-progs.sh | 4 -
|
mkinitrd/scripts/setup-progs.sh | 4 -
|
||||||
2 files changed, 79 insertions(+), 19 deletions(-)
|
mkinitrd/scripts/setup-sharedlibs.sh | 60 +++++++++++++---------
|
||||||
|
3 files changed, 114 insertions(+), 44 deletions(-)
|
||||||
|
|
||||||
Index: 1110/mkinitrd/scripts/setup-prepare.sh
|
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
|
[ -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-prepare.sh | 94 ++++++++++++++++++++++++++++-------
|
||||||
mkinitrd/scripts/setup-progs.sh | 17 +-----
|
mkinitrd/scripts/setup-progs.sh | 17 +-----
|
||||||
2 files changed, 80 insertions(+), 31 deletions(-)
|
mkinitrd/scripts/setup-sharedlibs.sh | 60 +++++++++++++---------
|
||||||
|
3 files changed, 115 insertions(+), 56 deletions(-)
|
||||||
|
|
||||||
Index: 1210/mkinitrd/scripts/setup-prepare.sh
|
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
|
[ -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-prepare.sh | 126 +++++++++++++++++++++--------------
|
||||||
mkinitrd/scripts/setup-progs.sh | 17 -----
|
mkinitrd/scripts/setup-progs.sh | 17 ----
|
||||||
2 files changed, 79 insertions(+), 64 deletions(-)
|
mkinitrd/scripts/setup-sharedlibs.sh | 60 +++++++++-------
|
||||||
|
3 files changed, 114 insertions(+), 89 deletions(-)
|
||||||
|
|
||||||
Index: 1220/mkinitrd/scripts/setup-prepare.sh
|
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
|
[ -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
|
# copy daemon manually because it is located in RPM_BUILD_ROOT
|
||||||
mkdir -vp $tmp_mnt/usr/sbin
|
mkdir -vp $tmp_mnt/usr/sbin
|
||||||
cp_bin $(type -p guestfsd) $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
|
# many guestfish commands need a mount point
|
||||||
# in guestfsd the mount point defaults to /sysroot
|
# in guestfsd the mount point defaults to /sysroot
|
||||||
|
@ -363,6 +363,7 @@ BuildRequires: mdadm
|
|||||||
BuildRequires: mkinitrd
|
BuildRequires: mkinitrd
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: module-init-tools
|
BuildRequires: module-init-tools
|
||||||
|
BuildRequires: nfs-client
|
||||||
BuildRequires: ntfs-3g
|
BuildRequires: ntfs-3g
|
||||||
BuildRequires: ntfsprogs
|
BuildRequires: ntfsprogs
|
||||||
BuildRequires: parted
|
BuildRequires: parted
|
||||||
|
Loading…
x
Reference in New Issue
Block a user