Fix find-debuginfo.sh behavior on cross-directory hardlinks (RhBug:618426)
authorRoland McGrath <roland@redhat.com>
Mon, 9 Aug 2010 12:27:03 +0000 (15:27 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Mon, 9 Aug 2010 12:29:15 +0000 (15:29 +0300)
- The find-debuginfo.sh script makes hard links of .debug files to
  correspond to hard links between install binaries.  It can fail to
  create one of these .debug hard links if it's in a directory that
  didn't exist at that point in the script run. How this happens
  depends on things like the order "find" lists files, so it can
  be hard to reproduce off hand.

scripts/find-debuginfo.sh

index 3ada962..e050dc1 100644 (file)
@@ -191,7 +191,7 @@ while read nlinks inum f; do
       link=$debugfn
       get_debugfn "$linked"
       echo "hard linked $link to $debugfn"
-      ln -nf "$debugfn" "$link"
+      mkdir -p "$(dirname "$link")" && ln -nf "$debugfn" "$link"
       continue
     else
       eval linked_$inum=\$f