summaryrefslogtreecommitdiffstats
path: root/0012-dracut-functions.sh-removed-non-dracut-install-shell.patch
diff options
context:
space:
mode:
Diffstat (limited to '0012-dracut-functions.sh-removed-non-dracut-install-shell.patch')
-rw-r--r--0012-dracut-functions.sh-removed-non-dracut-install-shell.patch354
1 files changed, 354 insertions, 0 deletions
diff --git a/0012-dracut-functions.sh-removed-non-dracut-install-shell.patch b/0012-dracut-functions.sh-removed-non-dracut-install-shell.patch
new file mode 100644
index 0000000..72d0420
--- /dev/null
+++ b/0012-dracut-functions.sh-removed-non-dracut-install-shell.patch
@@ -0,0 +1,354 @@
+From 55a0b3abc7b8da4f3714cfcb5d34f7aa4e78e5bc Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 5 Aug 2013 11:47:54 +0200
+Subject: [PATCH] dracut-functions.sh: removed non dracut-install shell
+ functions
+
+---
+ dracut-functions.sh | 315 ++++++++++------------------------------------------
+ 1 file changed, 56 insertions(+), 259 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index dee53bb..c0a12cd 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -55,14 +55,6 @@ if ! [[ $dracutbasedir ]]; then
+ dracutbasedir="$(readlink -f $dracutbasedir)"
+ fi
+
+-if ! [[ $DRACUT_INSTALL ]]; then
+- DRACUT_INSTALL=$(find_binary dracut-install)
+-fi
+-
+-if ! [[ $DRACUT_INSTALL ]] && [[ -x $dracutbasedir/dracut-install ]]; then
+- DRACUT_INSTALL=$dracutbasedir/dracut-install
+-fi
+-
+ # Detect lib paths
+ if ! [[ $libdirs ]] ; then
+ if [[ "$(ldd /bin/sh)" == */lib64/* ]] &>/dev/null \
+@@ -588,268 +580,73 @@ fs_get_option() {
+ done
+ }
+
+-if [[ $DRACUT_INSTALL ]]; then
+- [[ $DRACUT_RESOLVE_LAZY ]] || export DRACUT_RESOLVE_DEPS=1
+- inst_dir() {
+- [[ -e ${initdir}/"$1" ]] && return 0 # already there
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} -d "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} -d "$@" || :
+- }
+-
+- inst() {
+- [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
+- #dinfo "$DRACUT_INSTALL -l $@"
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
+- }
+-
+- inst_simple() {
+- [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
+- [[ -e $1 ]] || return 1 # no source
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} "$@" || :
+- }
+-
+- inst_symlink() {
+- [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
+- [[ -L $1 ]] || return 1
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
+- }
+-
+- dracut_install() {
+- local ret
+- #dinfo "initdir=$initdir $DRACUT_INSTALL -l $@"
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- ret=$?
+- (($ret != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
+- return $ret
+- }
+-
+- inst_library() {
+- [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
+- [[ -e $1 ]] || return 1 # no source
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
+- }
+-
+- inst_binary() {
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
+- }
+-
+- inst_script() {
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
+- }
+-
+-else
+-
+- # Install a directory, keeping symlinks as on the original system.
+- # Example: if /lib points to /lib64 on the host, "inst_dir /lib/file"
+- # will create ${initdir}/lib64, ${initdir}/lib64/file,
+- # and a symlink ${initdir}/lib -> lib64.
+- inst_dir() {
+- [[ -e ${initdir}/"$1" ]] && return 0 # already there
+-
+- local _dir="$1" _part="${1%/*}" _file
+- while [[ "$_part" != "${_part%/*}" ]] && ! [[ -e "${initdir}/${_part}" ]]; do
+- _dir="$_part $_dir"
+- _part=${_part%/*}
+- done
+-
+- # iterate over parent directories
+- for _file in $_dir; do
+- [[ -e "${initdir}/$_file" ]] && continue
+- if [[ -L $_file ]]; then
+- inst_symlink "$_file"
+- else
+- # create directory
+- mkdir -m 0755 -p "${initdir}/$_file" || return 1
+- [[ -e "$_file" ]] && chmod --reference="$_file" "${initdir}/$_file"
+- chmod u+w "${initdir}/$_file"
+- fi
+- done
+- }
+
+- # $1 = file to copy to ramdisk
+- # $2 (optional) Name for the file on the ramdisk
+- # Location of the image dir is assumed to be $initdir
+- # We never overwrite the target if it exists.
+- inst_simple() {
+- [[ -f "$1" ]] || return 1
+- [[ "$1" == */* ]] || return 1
+- local _src=$1 _target="${2:-$1}"
+-
+- [[ -L $_src ]] && { inst_symlink $_src $_target; return $?; }
+-
+- if ! [[ -d ${initdir}/$_target ]]; then
+- [[ -e ${initdir}/$_target ]] && return 0
+- [[ -L ${initdir}/$_target ]] && return 0
+- [[ -d "${initdir}/${_target%/*}" ]] || inst_dir "${_target%/*}"
+- fi
+- if [[ $DRACUT_FIPS_MODE ]]; then
+- # install checksum files also
+- if [[ -e "${_src%/*}/.${_src##*/}.hmac" ]]; then
+- inst "${_src%/*}/.${_src##*/}.hmac" "${_target%/*}/.${_target##*/}.hmac"
+- fi
+- if [[ -e "/lib/fipscheck/${_src##*/}.hmac" ]]; then
+- inst "/lib/fipscheck/${_src##*/}.hmac" "/lib/fipscheck/${_target##*/}.hmac"
+- fi
+- if [[ -e "/lib64/fipscheck/${_src##*/}.hmac" ]]; then
+- inst "/lib64/fipscheck/${_src##*/}.hmac" "/lib64/fipscheck/${_target##*/}.hmac"
+- fi
+- fi
+- ddebug "Installing $_src"
+- cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$_target"
+- }
++if ! [[ $DRACUT_INSTALL ]]; then
++ DRACUT_INSTALL=$(find_binary dracut-install)
++fi
+
+- # same as above, but specialized for symlinks
+- inst_symlink() {
+- local _src=$1 _target=${2:-$1} _realsrc
+- [[ "$1" == */* ]] || return 1
+- [[ -L $1 ]] || return 1
+- [[ -L $initdir/$_target ]] && return 0
+- _realsrc=$(readlink -f "$_src")
+- if ! [[ -e $initdir/$_realsrc ]]; then
+- if [[ -d $_realsrc ]]; then
+- inst_dir "$_realsrc"
+- else
+- inst "$_realsrc"
+- fi
+- fi
+- [[ ! -e $initdir/${_target%/*} ]] && inst_dir "${_target%/*}"
++if ! [[ $DRACUT_INSTALL ]] && [[ -x $dracutbasedir/dracut-install ]]; then
++ DRACUT_INSTALL=$dracutbasedir/dracut-install
++fi
+
+- ln_r "${_realsrc}" "${_target}"
+- }
++if ! [[ -x $DRACUT_INSTALL ]]; then
++ dfatal "dracut-install not found!"
++ exit 10
++fi
+
+- # Same as above, but specialized to handle dynamic libraries.
+- # It handles making symlinks according to how the original library
+- # is referenced.
+- inst_library() {
+- local _src="$1" _dest=${2:-$1} _lib _reallib _symlink
+- [[ "$1" == */* ]] || return 1
+- [[ -e $initdir/$_dest ]] && return 0
+- if [[ -L $_src ]]; then
+- if [[ $DRACUT_FIPS_MODE ]]; then
+- # install checksum files also
+- if [[ -e "${_src%/*}/.${_src##*/}.hmac" ]]; then
+- inst "${_src%/*}/.${_src##*/}.hmac" "${_dest%/*}/.${_dest##*/}.hmac"
+- fi
+- if [[ -e "/lib/fipscheck/${_src##*/}.hmac" ]]; then
+- inst "/lib/fipscheck/${_src##*/}.hmac" "/lib/fipscheck/${_dest##*/}.hmac"
+- fi
+- if [[ -e "/lib64/fipscheck/${_src##*/}.hmac" ]]; then
+- inst "/lib64/fipscheck/${_src##*/}.hmac" "/lib64/fipscheck/${_dest##*/}.hmac"
+- fi
+- fi
+- _reallib=$(readlink -f "$_src")
+- inst_simple "$_reallib" "$_reallib"
+- inst_dir "${_dest%/*}"
+- ln_r "${_reallib}" "${_dest}"
+- else
+- inst_simple "$_src" "$_dest"
+- fi
++[[ $DRACUT_RESOLVE_LAZY ]] || export DRACUT_RESOLVE_DEPS=1
++inst_dir() {
++ [[ -e ${initdir}/"$1" ]] && return 0 # already there
++ $DRACUT_INSTALL ${initdir+-D "$initdir"} -d "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} -d "$@" || :
++}
+
+- # Create additional symlinks. See rev_symlinks description.
+- for _symlink in $(rev_lib_symlinks $_src) $(rev_lib_symlinks $_reallib); do
+- [[ ! -e $initdir/$_symlink ]] && {
+- ddebug "Creating extra symlink: $_symlink"
+- inst_symlink $_symlink
+- }
+- done
+- }
++inst() {
++ [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
++ #dinfo "$DRACUT_INSTALL -l $@"
++ $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++}
+
+- # Same as above, but specialized to install binary executables.
+- # Install binary executable, and all shared library dependencies, if any.
+- inst_binary() {
+- local _bin _target
+- _bin=$(find_binary "$1") || return 1
+- _target=${2:-$_bin}
+- [[ -e $initdir/$_target ]] && return 0
+- local _file _line
+- local _so_regex='([^ ]*/lib[^/]*/[^ ]*\.so[^ ]*)'
+- # I love bash!
+- LC_ALL=C ldd "$_bin" 2>/dev/null | while read _line; do
+- [[ $_line = 'not a dynamic executable' ]] && break
+-
+- if [[ $_line =~ $_so_regex ]]; then
+- _file=${BASH_REMATCH[1]}
+- [[ -e ${initdir}/$_file ]] && continue
+- inst_library "$_file"
+- continue
+- fi
++inst_simple() {
++ [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
++ [[ -e $1 ]] || return 1 # no source
++ $DRACUT_INSTALL ${initdir+-D "$initdir"} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} "$@" || :
++}
+
+- if [[ $_line == *not\ found* ]]; then
+- dfatal "Missing a shared library required by $_bin."
+- dfatal "Run \"ldd $_bin\" to find out what it is."
+- dfatal "$_line"
+- dfatal "dracut cannot create an initrd."
+- exit 1
+- fi
+- done
+- inst_simple "$_bin" "$_target"
+- }
++inst_symlink() {
++ [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
++ [[ -L $1 ]] || return 1
++ $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++}
+
+- # same as above, except for shell scripts.
+- # If your shell script does not start with shebang, it is not a shell script.
+- inst_script() {
+- local _bin
+- _bin=$(find_binary "$1") || return 1
+- shift
+- local _line _shebang_regex
+- read -r -n 80 _line <"$_bin"
+- # If debug is set, clean unprintable chars to prevent messing up the term
+- [[ $debug ]] && _line=$(echo -n "$_line" | tr -c -d '[:print:][:space:]')
+- _shebang_regex='(#! *)(/[^ ]+).*'
+- [[ $_line =~ $_shebang_regex ]] || return 1
+- inst "${BASH_REMATCH[2]}" && inst_simple "$_bin" "$@"
+- }
++dracut_install() {
++ local ret
++ #dinfo "initdir=$initdir $DRACUT_INSTALL -l $@"
++ $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
++ ret=$?
++ (($ret != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++ return $ret
++}
+
+- # general purpose installation function
+- # Same args as above.
+- inst() {
+- local _x
+-
+- case $# in
+- 1) ;;
+- 2) [[ ! $initdir && -d $2 ]] && export initdir=$2
+- [[ $initdir = $2 ]] && set $1;;
+- 3) [[ -z $initdir ]] && export initdir=$2
+- set $1 $3;;
+- *) dfatal "inst only takes 1 or 2 or 3 arguments"
+- exit 1;;
+- esac
+- for _x in inst_symlink inst_script inst_binary inst_simple; do
+- $_x "$@" && return 0
+- done
+- return 1
+- }
++inst_library() {
++ [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
++ [[ -e $1 ]] || return 1 # no source
++ $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++}
+
+- # dracut_install [-o ] <file> [<file> ... ]
+- # Install <file> to the initramfs image
+- # -o optionally install the <file> and don't fail, if it is not there
+- dracut_install() {
+- local _optional=no
+- if [[ $1 = '-o' ]]; then
+- _optional=yes
+- shift
+- fi
+- while (($# > 0)); do
+- if ! inst "$1" ; then
+- if [[ $_optional = yes ]]; then
+- dinfo "Skipping program $1 as it cannot be found and is" \
+- "flagged to be optional"
+- else
+- dfatal "Failed to install $1"
+- exit 1
+- fi
+- fi
+- shift
+- done
+- }
++inst_binary() {
++ $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++}
+
+-fi
++inst_script() {
++ $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++}
+
+ # find symlinks linked to given library file
+ # $1 = library file