From f5f518fa69046c5854dfcbcd6c1b4071c05dea5e Mon Sep 17 00:00:00 2001 From: Patryk Sondej Date: Sun, 6 Aug 2023 16:06:25 +0200 Subject: [PATCH] fix linter bundle-linux.sh --- nix/bundle/bundle-linux.sh | 226 ++++++++++++++++++------------------- 1 file changed, 113 insertions(+), 113 deletions(-) diff --git a/nix/bundle/bundle-linux.sh b/nix/bundle/bundle-linux.sh index 67e67eac0..6d48d313a 100644 --- a/nix/bundle/bundle-linux.sh +++ b/nix/bundle/bundle-linux.sh @@ -15,164 +15,164 @@ binary="$2" relative_bin_to_lib=$(echo -n "$bin_dir" | sed 's|[^/]*|..|g') clean_path() { - echo -n "$1" | sed 's#//*#/#g' + echo -n "$1" | sed 's#//*#/#g' } printNeeded() { - print-needed-elf "$1" | grep '/nix/store/' + print-needed-elf "$1" | grep '/nix/store/' } finalizeBin() { - nuke-refs "$1" + nuke-refs "$1" } relpathPathPrint() { - relative-path "$1" "$2" + relative-path "$1" "$2" } bundleLib() { - local file="$1" - local install_dir="$out/$2" - mkdir -p $install_dir + local file="$1" + local install_dir="$out/$2" + mkdir -p $install_dir - local real_file - real_file=$(realpath "$file") + local real_file + real_file=$(realpath "$file") - local file_name - file_name=$(basename "$file") + local file_name + file_name=$(basename "$file") - local real_file_name - real_file_name=$(basename "$real_file") + local real_file_name + real_file_name=$(basename "$real_file") - local copied_file - copied_file="$install_dir/$real_file_name" + local copied_file + copied_file="$install_dir/$real_file_name" - local already_bundled="1" - if [ ! -f "$copied_file" ]; then - already_bundled="0" - cp "$real_file" "$copied_file" - chmod +w "$copied_file" - fi + local already_bundled="1" + if [ ! -f "$copied_file" ]; then + already_bundled="0" + cp "$real_file" "$copied_file" + chmod +w "$copied_file" + fi - if [ "$file_name" != "$real_file_name" ] && [ ! -f "$install_dir/$file_name" ]; then - (cd "$install_dir" && ln -sf "$real_file_name" "$file_name") - chmod +w "$install_dir/$file_name" - fi + if [ "$file_name" != "$real_file_name" ] && [ ! -f "$install_dir/$file_name" ]; then + (cd "$install_dir" && ln -sf "$real_file_name" "$file_name") + chmod +w "$install_dir/$file_name" + fi - if [ "$already_bundled" = "1" ]; then - return - fi + if [ "$already_bundled" = "1" ]; then + return + fi - echo "Bundling $real_file to $install_dir" + echo "Bundling $real_file to $install_dir" - local linked_libs - linked_libs=$(printNeeded "$real_file" || true) - for linked_lib in $linked_libs; do - bundleLib "$linked_lib" "lib" - done + local linked_libs + linked_libs=$(printNeeded "$real_file" || true) + for linked_lib in $linked_libs; do + bundleLib "$linked_lib" "lib" + done - if [ -n "$linked_libs" ]; then - relative_any_to_lib=$(relpathPathPrint "$out/$lib_dir" "$copied_file") - rpath=$(clean_path "\$ORIGIN/$relative_any_to_lib/$lib_dir") - patchelf --set-rpath "$rpath" "$copied_file" - fi + if [ -n "$linked_libs" ]; then + relative_any_to_lib=$(relpathPathPrint "$out/$lib_dir" "$copied_file") + rpath=$(clean_path "\$ORIGIN/$relative_any_to_lib/$lib_dir") + patchelf --set-rpath "$rpath" "$copied_file" + fi - finalizeBin "$copied_file" + finalizeBin "$copied_file" } bundleExe() { - local exe="$1" - local interpreter="$2" - local exe_name - exe_name=$(basename "$exe") - - local copied_exe="$out/$exe_dir/$exe_name" - cp "$exe" "$copied_exe" - chmod +w "$copied_exe" - local rpath - rpath=$(clean_path "\$ORIGIN/$relative_bin_to_lib/$lib_dir") - patchelf --set-interpreter "$(basename "$interpreter")" --set-rpath "$rpath" "$copied_exe" - finalizeBin "$copied_exe" - - bundleLib "$interpreter" "lib" - - local linked_libs - linked_libs=$(printNeeded "$exe" || true) - for linked_lib in $linked_libs; do - bundleLib "$linked_lib" "lib" - done - - # shellcheck disable=SC2016 - printf '#!/bin/sh + local exe="$1" + local interpreter="$2" + local exe_name + exe_name=$(basename "$exe") + + local copied_exe="$out/$exe_dir/$exe_name" + cp "$exe" "$copied_exe" + chmod +w "$copied_exe" + local rpath + rpath=$(clean_path "\$ORIGIN/$relative_bin_to_lib/$lib_dir") + patchelf --set-interpreter "$(basename "$interpreter")" --set-rpath "$rpath" "$copied_exe" + finalizeBin "$copied_exe" + + bundleLib "$interpreter" "lib" + + local linked_libs + linked_libs=$(printNeeded "$exe" || true) + for linked_lib in $linked_libs; do + bundleLib "$linked_lib" "lib" + done + + # shellcheck disable=SC2016 + printf '#!/bin/sh set -eu dir="$(cd -- "$(dirname "$(dirname "$(realpath "$0")")")" >/dev/null 2>&1 ; pwd -P)" exec "$dir"/%s "$dir"/%s "$@"' \ - "'$lib_dir/$(basename "$interpreter")'" \ - "'$exe_dir/$exe_name'" \ - > "$out/$bin_dir/$exe_name" - chmod +x "$out/$bin_dir/$exe_name" + "'$lib_dir/$(basename "$interpreter")'" \ + "'$exe_dir/$exe_name'" \ + > "$out/$bin_dir/$exe_name" + chmod +x "$out/$bin_dir/$exe_name" } remove_prefix() { - local full_path="$1" - local dynamic_prefix="$2" - echo "${full_path#$dynamic_prefix}" + local full_path="$1" + local dynamic_prefix="$2" + echo "${full_path#$dynamic_prefix}" } bundleCustom() { - local from_dir="$1" - local to_dir="$out/$2" - local files - - files=$(find -L "$from_dir" -type f -regex '.*\(\.py\|\.pth\|\.asm\|__doc__\)$' || true) - local real_file_dir - local real_file_name - local install_dir - local install_path - - for real_file in $files; do - real_file_dir=$(dirname "$(remove_prefix "$real_file" "$from_dir")") - real_file_name=$(basename "$real_file") - install_dir="$to_dir/$real_file_dir" - install_path="$install_dir/$real_file_name" - - mkdir -p $install_dir - echo "Copy $real_file to $install_dir" - - # TODO: check symlink like in bundleLib - if [ ! -f "$install_path" ]; then - cp "$real_file" "$install_path" - chmod +w "$install_path" - fi - done + local from_dir="$1" + local to_dir="$out/$2" + local files + + files=$(find -L "$from_dir" -type f -regex '.*\(\.py\|\.pth\|\.asm\|__doc__\)$' || true) + local real_file_dir + local real_file_name + local install_dir + local install_path + + for real_file in $files; do + real_file_dir=$(dirname "$(remove_prefix "$real_file" "$from_dir")") + real_file_name=$(basename "$real_file") + install_dir="$to_dir/$real_file_dir" + install_path="$install_dir/$real_file_name" + + mkdir -p $install_dir + echo "Copy $real_file to $install_dir" + + # TODO: check symlink like in bundleLib + if [ ! -f "$install_path" ]; then + cp "$real_file" "$install_path" + chmod +w "$install_path" + fi + done } bundleDirLib() { - local from_dir="$1" - local linked_libs_root - local path_dir - local linked_libs + local from_dir="$1" + local linked_libs_root + local path_dir + local linked_libs - bundleCustom "$from_dir" "lib" + bundleCustom "$from_dir" "lib" - linked_libs_root=$(find -L "$from_dir" -type f -regex '.*\.so\(\..*\|$\)' || true) - for linked_lib_root in $linked_libs_root; do - path_dir=$(dirname "$(remove_prefix "$linked_lib_root" "$from_dir")") + linked_libs_root=$(find -L "$from_dir" -type f -regex '.*\.so\(\..*\|$\)' || true) + for linked_lib_root in $linked_libs_root; do + path_dir=$(dirname "$(remove_prefix "$linked_lib_root" "$from_dir")") - bundleLib "$linked_lib_root" "lib/$path_dir" + bundleLib "$linked_lib_root" "lib/$path_dir" - linked_libs=$(printNeeded "$linked_lib_root" || true) - for linked_lib in $linked_libs; do - bundleLib "$linked_lib" "lib" + linked_libs=$(printNeeded "$linked_lib_root" || true) + for linked_lib in $linked_libs; do + bundleLib "$linked_lib" "lib" + done done - done } -exe_interpreter=$(patchelf --print-interpreter "$binary" 2>/dev/null || true) +exe_interpreter=$(patchelf --print-interpreter "$binary" 2> /dev/null || true) if [ -n "$exe_interpreter" ]; then - mkdir -p "$out/$exe_dir" "$out/$bin_dir" "$out/$lib_dir" - bundleExe "$binary" "$exe_interpreter" + mkdir -p "$out/$exe_dir" "$out/$bin_dir" "$out/$lib_dir" + bundleExe "$binary" "$exe_interpreter" else - mkdir -p "$out/$exe_dir" "$out/$bin_dir" "$out/$lib_dir" - bundleDirLib "$binary" + mkdir -p "$out/$exe_dir" "$out/$bin_dir" "$out/$lib_dir" + bundleDirLib "$binary" fi