diff options
Diffstat (limited to 'helper')
| -rw-r--r-- | helper/fileutil.inc | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/helper/fileutil.inc b/helper/fileutil.inc index 49802d2b..087a9a7f 100644 --- a/helper/fileutil.inc +++ b/helper/fileutil.inc @@ -1,3 +1,16 @@ +# one time jobs + +# determine packet manager: +if [ ! -z "$(which apt-get)" ]; then + PACKET_MANAGER="apt" +elif [ ! -z "$(which zypper)" ]; then + PACKET_MANAGER="zypper" +else + perror "Could not determine this platform's packet manager" +fi + +# + # copy list of files using tar tarcopy () { [ $# -ne 2 ] && perror "Sanity check failed: tarcopy needs exactly two params, but $# were given." @@ -16,6 +29,39 @@ tarcopy () { [ "x${PS[1]}" != "x0" ] && perror "unpacking-part of tar-copy from '$SHORT' to '$TO' failed. (${PS[1]})" } +# get all files of required packages by a module +list_packet_files() { + [ -z "$REQUIRED_PACKAGES" ] && return + for PACKAGE in $REQUIRED_PACKAGES; do + local FILES="" + if [ "$PACKET_MANAGER" = "apt" ]; then + FILES="$(dpkg -L "$PACKAGE" | grep -v share/doc | grep -v share/man; echo ":###:${PIPESTATUS[0]}")" + elif [ "$PACKET_MANAGER" = "zypper" ]; then + FILES="$(rpm -ql "$PACKAGE" | grep -v share/doc | grep -v share/man; echo ":###:${PIPESTATUS[0]}")" + fi + # ugly hack to get our return value + #local LPRET=$(echo "$FILES" | tail -1 | sed 's/^.*:###:\([0-9]*\)$/\1/g') + #FILES=$(echo "$FILES" | sed 's/^\(.*\):###:[0-9]*$/\1/g') + local LPRET=$(echo "$FILES" | awk -F ':###:' '{printf $2}') + FILES=$(echo "$FILES" | awk -F ':###:' '{print $1}') + [ "x$LPRET" != "x0" ] && perror "list_packet_files exited with code '$LPRET' for packet ${PACKAGE}." + [ -z "$FILES" ] && perror "list_packet_files empty for packet ${PACKAGE}." + for FILE in $FILES; do + [ ! -d "$FILE" ] && echo "$FILE" + done + done +} + +# install all dependencies of a module +install_dependencies() { + [ -z "$REQUIRED_DEPENDENCIES" ] && return + if [ "$PACKET_MANAGER" = "apt" ]; then + apt-get install -y $REQUIRED_DEPENDENCIES || perror "Could not apt-get install $REQUIRED_DEPENDENCIES" + elif [ "$PACKET_MANAGER" = "zypper" ]; then + zypper install -y $REQUIRED_DEPENDENCIES || perror "Could not zypper install $REQUIRED_DEPENDENCIES" + fi +} + # generate initramfs of directory generate_initramfs() { [ $# -ne 2 ] && perror "Sanity check failed: generate_initramfs needs exactly two params, but $# were given." |
