kiss: move main around a little

This commit is contained in:
Dylan Araps 2021-07-16 20:12:52 +03:00
parent effb608988
commit 7a9fde9494
No known key found for this signature in database
GPG Key ID: 13295DAC2CF13B5C

39
kiss
View File

@ -53,7 +53,7 @@ tmp_file() {
# for access by the caller (allowing 3 files at once). # for access by the caller (allowing 3 files at once).
_tmp_file_pre_pre=$_tmp_file_pre _tmp_file_pre_pre=$_tmp_file_pre
_tmp_file_pre=$_tmp_file _tmp_file_pre=$_tmp_file
_tmp_file=$tmp_dir/$pid-$1-$2 _tmp_file=$tmp_dir/$KISS_PID-$1-$2
: > "$_tmp_file" || : > "$_tmp_file" ||
die "$1" "Failed to create temporary file" die "$1" "Failed to create temporary file"
@ -400,7 +400,7 @@ pkg_extract_tar_hack() {
# Move the directory to prevent naming conflicts between # Move the directory to prevent naming conflicts between
# the child and parent. # the child and parent.
mv -f "$dir" "$pid-$dir" mv -f "$dir" "$KISS_PID-$dir"
# First attempt to move all files up a directory level, # First attempt to move all files up a directory level,
# if any files/directories fail (due to mv's lack of # if any files/directories fail (due to mv's lack of
@ -413,16 +413,16 @@ pkg_extract_tar_hack() {
# #
# Using only '$@' causes a single file from each # Using only '$@' causes a single file from each
# invocation to be left out of the list. Weird, right? # invocation to be left out of the list. Weird, right?
find "$pid-$dir/." ! -name . -prune \ find "$KISS_PID-$dir/." ! -name . -prune \
-exec sh -c 'mv -f "$0" "$@" .' {} + 2>/dev/null || -exec sh -c 'mv -f "$0" "$@" .' {} + 2>/dev/null ||
find "$pid-$dir/." ! -name . -prune \ find "$KISS_PID-$dir/." ! -name . -prune \
-exec sh -c 'cp -fRp "$0" "$@" .' {} + -exec sh -c 'cp -fRp "$0" "$@" .' {} +
# Remove the directory now that all files have been # Remove the directory now that all files have been
# transferred out of it. This can't be a simple 'rmdir' # transferred out of it. This can't be a simple 'rmdir'
# as we may leave files in here if any were copied. # as we may leave files in here if any were copied.
rm -rf "$pid-$dir" rm -rf "$KISS_PID-$dir"
done done
# Remove the tarball now that we are done with it. # Remove the tarball now that we are done with it.
@ -856,7 +856,7 @@ pkg_build() {
# Attempt to create the log file early so any permissions errors are caught # Attempt to create the log file early so any permissions errors are caught
# before the build starts. 'tee' is run in a pipe and POSIX shell has no # before the build starts. 'tee' is run in a pipe and POSIX shell has no
# pipe-fail causing confusing behavior when tee fails. # pipe-fail causing confusing behavior when tee fails.
: > "$log_dir/$1-$time-$pid" : > "$log_dir/$1-$time-$KISS_PID"
# Call the build script, log the output to the terminal and to a file. # Call the build script, log the output to the terminal and to a file.
# There's no PIPEFAIL in POSIX shell so we must resort to tricks like kill. # There's no PIPEFAIL in POSIX shell so we must resort to tricks like kill.
@ -881,7 +881,7 @@ pkg_build() {
\ \
"$repo_dir/build" "$pkg_dir/$1" "$repo_ver" 2>&1 || { "$repo_dir/build" "$pkg_dir/$1" "$repo_ver" 2>&1 || {
log "$1" "Build failed" log "$1" "Build failed"
log "$1" "Log stored to $log_dir/$1-$time-$pid" log "$1" "Log stored to $log_dir/$1-$time-$KISS_PID"
# arg1: build-fail # arg1: build-fail
# arg2: package name # arg2: package name
@ -891,11 +891,11 @@ pkg_build() {
pkg_clean pkg_clean
kill 0 kill 0
} }
} | tee "$log_dir/$1-$time-$pid" } | tee "$log_dir/$1-$time-$KISS_PID"
# Delete the log file if the build succeeded to prevent the directory # Delete the log file if the build succeeded to prevent the directory
# from filling very quickly with useless logs. # from filling very quickly with useless logs.
[ "$KISS_KEEPLOG" = 1 ] || rm -f "$log_dir/$1-$time-$pid" [ "$KISS_KEEPLOG" = 1 ] || rm -f "$log_dir/$1-$time-$KISS_PID"
# Copy the repository files to the package directory. # Copy the repository files to the package directory.
cp -LRf "$repo_dir" "$pkg_dir/$1/$pkg_db/" cp -LRf "$repo_dir" "$pkg_dir/$1/$pkg_db/"
@ -1209,7 +1209,7 @@ pkg_install_files() {
else else
# Construct a temporary filename which is a) unique and # Construct a temporary filename which is a) unique and
# b) identifiable as related to the package manager. # b) identifiable as related to the package manager.
__tmp=${_file%/*}/__kiss-tmp-$pkg_name-${file##*/}-$pid __tmp=${_file%/*}/__kiss-tmp-$pkg_name-${file##*/}-$KISS_PID
# Copy the file to the destination directory with the # Copy the file to the destination directory with the
# temporary name created above. # temporary name created above.
@ -1889,7 +1889,7 @@ create_tmp_dirs() {
# Top-level Temporary cache directory. # Top-level Temporary cache directory.
proc=${KISS_TMPDIR:="$cac_dir/proc"} proc=${KISS_TMPDIR:="$cac_dir/proc"}
proc=${proc%"${proc##*[!/]}"}/$pid proc=${proc%"${proc##*[!/]}"}/$KISS_PID
# Temporary cache directories. # Temporary cache directories.
mak_dir=$proc/build mak_dir=$proc/build
@ -1899,6 +1899,10 @@ create_tmp_dirs() {
mkdir -p "$src_dir" "$log_dir" "$bin_dir" \ mkdir -p "$src_dir" "$log_dir" "$bin_dir" \
"$mak_dir" "$pkg_dir" "$tar_dir" "$tmp_dir" "$mak_dir" "$pkg_dir" "$tar_dir" "$tmp_dir"
# Catch errors and ensure that build files and directories are cleaned
# up before we die. This occurs on 'Ctrl+C' as well as success and error.
trap pkg_clean EXIT INT
} }
main() { main() {
@ -1919,18 +1923,9 @@ main() {
newline=" newline="
" "
# The PID of the current shell process is used to isolate directories # Defaults for environment variables.
# to each specific KISS instance. This allows multiple package manager
# instances to be run at once. Store the value in another variable so
# that it doesn't change beneath us.
pid=${KISS_PID:=$$}
# Catch errors and ensure that build files and directories are cleaned
# up before we die. This occurs on 'Ctrl+C' as well as success and error.
trap pkg_clean EXIT INT
# Default compression method.
: "${KISS_COMPRESS:=gz}" : "${KISS_COMPRESS:=gz}"
: "${KISS_PID:=$$}"
# Figure out which 'sudo' command to use based on the user's choice or what # Figure out which 'sudo' command to use based on the user's choice or what
# is available on the system. # is available on the system.