#!/usr/bin/env bash # -*- coding: utf-8 -*- type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh # tarcopy tarcopy() { [ -d "$1" -a -d "$2" ] || return 1 cd "$1" local filelist="$(mktemp)" find . \! -type d > "$filelist" tar -c -p -T "$filelist" | tar -xp -C "$2" rm -f -- "$filelist" cd - &>/dev/null } unpack_config_tgz() { local config_tgz="/etc/config.tgz" [ -e "$config_tgz" ] || return 1 local extract_dir="$(mktemp -d)" tar --extract --preserve-permissions \ --file="/etc/config.tgz" \ --directory="$extract_dir" if [ "$?" -ne 0 ]; then warn "Failed to extract '$config_tgz' to '$extract_dir'." return 1 fi # check SLX_LOCAL_CONFIGURATION source "/etc/openslx" if [ -n "$SLX_LOCAL_CONFIGURATION" ]; then if [ ! -d "${extract_dir}/openslx-configs/${SLX_LOCAL_CONFIGURATION}" ]; then logging.warn "Ignoring missing SLX_LOCAL_CONFIGURATION in '/etc/config.tgz'." else tarcopy \ "${extract_dir}/openslx-configs/${SLX_LOCAL_CONFIGURATION}" \ "${extract_dir}" fi fi # always purge openslx-configs/ rm -rf "${extract_dir}/openslx-configs" # finally copy the rest into stage4 if ! tarcopy "${extract_dir}" "$NEWROOT"; then warn "'tarcopy' from '$extract_dir' to '$NEWROOT' failed." fi } unpack_config_tgz :