diff options
author | Simon Rettberg | 2024-01-31 17:54:54 +0100 |
---|---|---|
committer | Simon Rettberg | 2024-01-31 17:54:54 +0100 |
commit | acacfde5da4c681eb2bce75e87a10a88e1cd10d3 (patch) | |
tree | 32334922bd48bf36f6178d842729806666565d5a /modules.d/conf-tgz/hooks/s3-unpack-config-tgz.sh | |
parent | [busybox] Split into services (diff) | |
download | systemd-init-acacfde5da4c681eb2bce75e87a10a88e1cd10d3.tar.gz systemd-init-acacfde5da4c681eb2bce75e87a10a88e1cd10d3.tar.xz systemd-init-acacfde5da4c681eb2bce75e87a10a88e1cd10d3.zip |
De-dracutize service-scripts, try to use ash where applicable
Diffstat (limited to 'modules.d/conf-tgz/hooks/s3-unpack-config-tgz.sh')
-rwxr-xr-x | modules.d/conf-tgz/hooks/s3-unpack-config-tgz.sh | 90 |
1 files changed, 45 insertions, 45 deletions
diff --git a/modules.d/conf-tgz/hooks/s3-unpack-config-tgz.sh b/modules.d/conf-tgz/hooks/s3-unpack-config-tgz.sh index 2132423c..0ab877dd 100755 --- a/modules.d/conf-tgz/hooks/s3-unpack-config-tgz.sh +++ b/modules.d/conf-tgz/hooks/s3-unpack-config-tgz.sh @@ -1,58 +1,58 @@ -#!/usr/bin/env bash +#!/bin/ash # -*- coding: utf-8 -*- -type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh - # tarcopy <source_dir> <target_dir> -tarcopy() { - [ -d "$1" -a -d "$2" ] || return 1 - cd "$1" +tarcopy() ( + if ! [ -d "$1" ] || ! [ -d "$2" ]; then + echo "'$1' or '$2' is not a directory" + return 1 + fi + cd "$1" || return 1 local filelist="$(mktemp)" find . \! -type d > "$filelist" - tar -c -p -T "$filelist" | tar -xp -C "$2" + if [ -s "$filelist" ]; then + tar -c -p -T "$filelist" | tar -xp -C "$2" || return 1 + fi rm -f -- "$filelist" - cd - &>/dev/null -} + return 0 +) -unpack_config_tgz() { - local config_tgz="/etc/config.tgz" - [ -e "$config_tgz" ] || return 1 - # create list of overwritten files for debugging purposes - mkdir -p "${NEWROOT}/opt/openslx" - tar \ - --list \ - --verbose \ - --file="$config_tgz" \ - > "${NEWROOT}/opt/openslx/config.tgz.list" 2>&1 - local extract_dir="$(mktemp -d)" - tar \ +config_tgz="/etc/config.tgz" +[ -e "$config_tgz" ] || exit 1 +# create list of overwritten files for debugging purposes +mkdir -p "${NEWROOT}/opt/openslx" +tar \ + --list \ + --verbose \ + --file="$config_tgz" \ + > "${NEWROOT}/opt/openslx/config.tgz.list" 2>&1 +extract_dir="$(mktemp -d)" +if ! tar \ --extract \ --preserve-permissions \ --file="$config_tgz" \ - --directory="$extract_dir" - if [ "$?" -ne 0 ]; then - warn "Failed to extract '$config_tgz' to '$extract_dir'." - return 1 + --directory="$extract_dir"; then + echo "Failed to extract '$config_tgz' to '$extract_dir'." + exit 1 +fi +# check SLX_LOCAL_CONFIGURATION +. "/etc/openslx" +if [ -n "$SLX_LOCAL_CONFIGURATION" ]; then + if ! [ -d "${extract_dir}/openslx-configs/${SLX_LOCAL_CONFIGURATION}" ]; then + echo "Ignoring missing SLX_LOCAL_CONFIGURATION in '$config_tgz'." + else + tarcopy \ + "${extract_dir}/openslx-configs/${SLX_LOCAL_CONFIGURATION}" \ + "${extract_dir}" fi - # check SLX_LOCAL_CONFIGURATION - source "/etc/openslx" - if [ -n "$SLX_LOCAL_CONFIGURATION" ]; then - if [ ! -d "${extract_dir}/openslx-configs/${SLX_LOCAL_CONFIGURATION}" ]; then - warn "Ignoring missing SLX_LOCAL_CONFIGURATION in '$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" +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 -} +# finally copy the rest into stage4 +if ! tarcopy "${extract_dir}" "$NEWROOT"; then + echo "'tarcopy' from '$extract_dir' to '$NEWROOT' failed." + exit 1 +fi -unpack_config_tgz -: +exit 0 |