Skip to content

Commit 6fc56bf

Browse files
oech3oech3
authored andcommitted
build-gnu.sh: Refactor and use multicall for faster build
1 parent bed7012 commit 6fc56bf

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

util/build-gnu.sh

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
# spell-checker:ignore (paths) abmon deref discrim eacces getlimits getopt ginstall inacc infloop inotify reflink ; (misc) INT_OFLOW OFLOW
66
# spell-checker:ignore baddecode submodules xstrtol distros ; (vars/env) SRCDIR vdir rcexp xpart dired OSTYPE ; (utils) gnproc greadlink gsed multihardlink texinfo CARGOFLAGS
7-
# spell-checker:ignore openat TOCTOU CFLAGS
7+
# spell-checker:ignore openat TOCTOU CFLAGS BINDIR MANPAGES
88
# spell-checker:ignore hfsplus casefold chattr
99

1010
set -e
@@ -94,29 +94,26 @@ else
9494
fi
9595
cd -
9696

97-
# Pass the feature flags to make, which will pass them to cargo
98-
"${MAKE}" PROFILE="${PROFILE}" CARGOFLAGS="${CARGO_FEATURE_FLAGS}"
97+
# Build with MULTICALL=y for faster build time. But everything as a binary cause failure with SELinux by unknown reason.
98+
MULTICALL_UTILS="test hashsum true false yes"
99+
"${MAKE}" MULTICALL=y UTILS="${MULTICALL_UTILS}" PROFILE="${PROFILE}" CARGOFLAGS="${CARGO_FEATURE_FLAGS}"
100+
"${MAKE}" SKIP_UTILS="${MULTICALL_UTILS}" PROFILE="${PROFILE}" CARGOFLAGS="${CARGO_FEATURE_FLAGS}"
101+
for binary in "$(${UU_BUILD_DIR}/coreutils --list)"
102+
do ln -vf "${UU_BUILD_DIR}/coreutils" "${UU_BUILD_DIR}/${binary}"
103+
done
104+
ln -vf "${UU_BUILD_DIR}/install" "${UU_BUILD_DIR}/ginstall" # The GNU tests use renamed install to ginstall
99105
# min test for SELinux
100106
[ "${SELINUX_ENABLED}" = 1 ] && touch g && "${PROFILE}"/stat -c%C g && rm g
101107

102-
cp "${UU_BUILD_DIR}/install" "${UU_BUILD_DIR}/ginstall" # The GNU tests rename this script before running, to avoid confusion with the make target
103-
# Create *sum binaries
104-
for sum in b2sum b3sum md5sum sha1sum sha224sum sha256sum sha384sum sha512sum; do
105-
sum_path="${UU_BUILD_DIR}/${sum}"
106-
test -f "${sum_path}" || (cd ${UU_BUILD_DIR} && ln -s "hashsum" "${sum}")
107-
done
108-
test -f "${UU_BUILD_DIR}/[" || (cd ${UU_BUILD_DIR} && ln -s "test" "[")
109-
110108
##
111109

112110
cd "${path_GNU}" && echo "[ pwd:'${PWD}' ]"
113111

114-
# Any binaries that aren't built become `false` so their tests fail
112+
echo "Symlinking binaries that aren't built become `false` so their tests fail"
115113
for binary in $(./build-aux/gen-lists-of-programs.sh --list-progs); do
116114
bin_path="${UU_BUILD_DIR}/${binary}"
117115
test -f "${bin_path}" || {
118-
echo "'${binary}' was not built with uutils, using the 'false' program"
119-
cp "${UU_BUILD_DIR}/false" "${bin_path}"
116+
ln -vf "${UU_BUILD_DIR}/false" "${bin_path}"
120117
}
121118
done
122119

0 commit comments

Comments
 (0)