support/scripts/check-bin-arch: ignore symbolic links
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 3 Sep 2017 14:09:41 +0000 (16:09 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mon, 4 Sep 2017 14:01:51 +0000 (16:01 +0200)
Since commit da32b49f0091ee9dfb613e0f00973bf6893bfa84
("instrumentation: extend packages-file-list.txt with symlinks and
directories"), the packages-file-list.txt also contains symbolic
links. Therefore, check-bin-arch is now also checking symbolic links.

However, symbolic links in $(TARGET_DIR) can have absolute path as
targets, such as:

$ ls -l output/target/sbin/ifdown
lrwxrwxrwx 1 thomas thomas 10 Sep  3 15:55 output/target/sbin/ifdown -> /sbin/ifup

Therefore, we are now potentially checking a host binary, which
obviously makes check-bin-arch fail.

This commit changes check-bin-arch to ignore symbolic links. Indeed,
we have two cases:

 - The symbolic link really points to something that will in the
   rootfs (such as /sbin/ifup above). In this case, /sbin/ifup will be
   checked separately by check-bin-arch.

 - The symbolic link doesn't point to something that will be in the
   rootfs, and that is not a problem from the perspective of
   check-bin-arch, which checks the architecture of target binaries.

Fixes:

  http://autobuild.buildroot.net/results/16d384a0183d477646ac7692feb65f00dde7d068/
  (vim)

  http://autobuild.buildroot.net/results/50429c0f63a8befff9e20899327b9a8d754d99be/
  (ifupdown)

  http://autobuild.buildroot.net/results/1db65973e782bfa61abcbccd3501bfd235f77288/
  (gawk)

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
support/scripts/check-bin-arch

index b822cdd60d5750dc6841d900b3e68f8b395803ed..700ee3f65e9a9c3007ac0ed0c694223f73cb1a3f 100755 (executable)
@@ -36,6 +36,12 @@ while read f; do
                continue
        fi
 
+       # Skip symlinks. Some symlinks may have absolute paths as
+       # target, pointing to host binaries while we're building.
+       if [[ -L "${f}" ]]; then
+               continue
+       fi
+
        # Get architecture using readelf. We pipe through 'head -1' so
        # that when the file is a static library (.a), we only take
        # into account the architecture of the first object file.