diff options
author | Carlos Santos <casantos@datacom.ind.br> | 2018-05-07 11:44:27 -0300 |
---|---|---|
committer | Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> | 2019-02-06 17:03:30 +0100 |
commit | bf2a308578bddf7cbc5d9273bcec50f063e82da2 (patch) | |
tree | fa917d863119ba3f38c3e78579b4e5001e6c43fb /support | |
parent | cab8bd3b46badb11e734e64747aee848c2b4282d (diff) | |
download | buildroot-bf2a308578bddf7cbc5d9273bcec50f063e82da2.tar.gz buildroot-bf2a308578bddf7cbc5d9273bcec50f063e82da2.zip |
skeleton-custom: use a script to check merged usr structure
Introduce support/scripts/check-merged-usr.sh, a script that check if a
given path complies to the merged /usr requirements:
/
/bin -> usr/bin
/lib -> usr/lib
/sbin -> usr/sbin
/usr/bin/
/usr/lib/
/usr/sbin/
Use this script in skeleton-custom.mk instead of a bunch of variables
filled by $(shell ...) macros. The same script will be used to check
rootfs overlays, in a forthcoming change.
Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Diffstat (limited to 'support')
-rwxr-xr-x | support/scripts/check-merged-usr.sh | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/support/scripts/check-merged-usr.sh b/support/scripts/check-merged-usr.sh new file mode 100755 index 0000000000..433857cd8c --- /dev/null +++ b/support/scripts/check-merged-usr.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Check if a given custom skeleton or overlay complies to the merged /usr +# requirements: +# / +# /bin -> usr/bin +# /lib -> usr/lib +# /sbin -> usr/sbin +# /usr/bin/ +# /usr/lib/ +# /usr/sbin/ +# +# Output: the list of non-compliant paths (empty if compliant). +# + +# Extract the inode numbers for all of those directories. In case any is +# a symlink, we want to get the inode of the pointed-to directory, so we +# append '/.' to be sure we get the target directory. Since the symlinks +# can be anyway (/bin -> /usr/bin or /usr/bin -> /bin), we do that for +# all of them. +# +lib_inode=$(stat -c '%i' "${1}/lib/." 2>/dev/null) +bin_inode=$(stat -c '%i' "${1}/bin/." 2>/dev/null) +sbin_inode=$(stat -c '%i' "${1}/sbin/." 2>/dev/null) +usr_lib_inode=$(stat -c '%i' "${1}/usr/lib/." 2>/dev/null) +usr_bin_inode=$(stat -c '%i' "${1}/usr/bin/." 2>/dev/null) +usr_sbin_inode=$(stat -c '%i' "${1}/usr/sbin/." 2>/dev/null) + +not_merged_dirs="" +test -z "$lib_inode" || \ + test "$lib_inode" = "$usr_lib_inode" || \ + not_merged_dirs="/lib" +test -z "$bin_inode" || \ + test "$bin_inode" = "$usr_bin_inode" || \ + not_merged_dirs="$not_merged_dirs /bin" +test -z "$sbin_inode" || \ + test "$sbin_inode" = "$usr_sbin_inode" || \ + not_merged_dirs="$not_merged_dirs /sbin" +echo "${not_merged_dirs# }" |