On 02/01/2022 06.08, Allan McRae wrote:
On 2/1/22 10:28, Morten Linderud wrote:
  scripts/libmakepkg/tidy/strip.sh.in | 13 ++++++++-----
  1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/scripts/libmakepkg/tidy/strip.sh.in 
b/scripts/libmakepkg/tidy/strip.sh.in
index 92a6fb15..c1d8ee3c 100644
--- a/scripts/libmakepkg/tidy/strip.sh.in
+++ b/scripts/libmakepkg/tidy/strip.sh.in
@@ -36,8 +36,11 @@ build_id() {
  }
  source_files() {
-    LANG=C readelf "$1" --debug-dump 2>/dev/null | \
-        awk '/DW_AT_name +:/{name=$NF}/DW_AT_comp_dir +:/{{if (name == "<artificial>") 
next}{if (name !~ /^[<\/]/) {printf "%s/", $NF}}{print name}}'
+    dbgsrcdir="${DBGSRCDIR:-/usr/src/debug}"
+    local dbgsrclist="$(mktemp  
"${startdir}/dbgsrclist.${binary##*/}.XXXXXXXXX")"

I really do not like making temporary files.  Particularly not in ${startdir}, 
which can be readonly provided BUILDDIR, SRCDIR, etc are set.

I may accept using $srcdir if writing this to a file is *essential*>
+    LANG=C debugedit -n -b "${srcdir}" -d "${dbgsrcdir}" -l "${dbgsrclist}" "$1" 
> /dev/null
+    sort -zu "${dbgsrclist}" | tr '\0' '\n'
+    rm -f "$dbgsrclist"

I haven't been able to produce any unrelated output on stdout, so just using 
/dev/stdout for --list-file would probably work ok - to make extra sure, this 
also works:

debugedit --list-file=/dev/fd/3 "$1" 3>&1 >/dev/null | sort [...]

Tangentially related, what's the opinion on using short vs. long options? 
Personally, I find that long options make scripts much easier to grok because 
they save a lot of looking at man pages/--help outputs, but I can also see how 
they might make things too crowded and busy, especially for common commands. 
Either way, might be something to include in HACKING.

  }
  strip_file() {
@@ -58,9 +61,9 @@ strip_file() {
          # copy source files to debug directory
          local file dest t
          while IFS= read -r t; do
-            file=${t/${dbgsrcdir}/"$srcdir"}
-            dest="${dbgsrc/"$dbgsrcdir"/}$t"
-            if ! [[ -f $dest ]]; then
+            file="${srcdir}/${t}"
+            dest="${dbgsrc}/${t}"
+            if [[ -f "$file" ]] && ! [[ -f $dest ]]; then
                  mkdir -p "${dest%/*}"
                  cp -- "$file" "$dest"
              fi


Reply via email to