blob: 087a9a7f7d750f92a9b13a3cf1dc1291ceb83fc3 (
plain) (
tree)
|
|
# 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."
local FROM=$(trim "$1")
local TO=$(trim "$2")
if [ -z "$FROM" ]; then
pwarning "tarcopy called with empty input list (dest was '$TO')"
return
fi
local SHORT=$FROM
[ ${#SHORT} -gt 23 ] && SHORT=$(echo "$SHORT" | cut -c-18)...$(echo "$SHORT" | cut -c$[${#SHORT} - 4]-)
[ -z "$TO" ] && perror "tarcopy called with empty destination."
tar -cp $FROM | tar -xp -C "$TO"
local PS=(${PIPESTATUS[*]})
[ "x${PS[0]}" != "x0" ] && perror "packing-part of tar-copy from '$SHORT' to '$TO' failed. (${PS[0]})"
[ "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."
cd "$2" || perror "Cannot cd to '$2'"
find . | cpio --format="newc" --create | gzip -9 > "${MODULE_DIR}/$1"
local PS=(${PIPESTATUS[*]})
[ "x${PS[0]}" != "x0" ] && perror "'find .' in '$(pwd)' failed."
[ "x${PS[1]}" != "x0" ] && perror "cpio create failed."
[ "x${PS[2]}" != "x0" ] && perror "gzip to '${MODULE_DIR}/$1' failed."
cd -
pinfo "initramfs of $2 created at ${MODULE_DIR}/$1"
}
|