From 1c037dcd057024a004233559061f6bf0d4766763 Mon Sep 17 00:00:00 2001 From: Oliver Reiche Date: Thu, 23 Nov 2023 18:45:46 +0100 Subject: Remove unnecessary copies ... now that we retain (non-upwards) symlinks, make use of them. --- doc/COMPILERS.md | 2 +- src/compilers/clang-16-native.TARGETS | 12 +++++++----- src/compilers/clang-17-native.TARGETS | 12 +++++++----- src/compilers/gcc-13-musl-static.TARGETS | 5 ++--- src/compilers/gcc-13-musl.TARGETS | 7 +++---- src/tools/python-3.12.TARGETS | 2 +- 6 files changed, 21 insertions(+), 19 deletions(-) diff --git a/doc/COMPILERS.md b/doc/COMPILERS.md index d6d29b1..6fd4d64 100644 --- a/doc/COMPILERS.md +++ b/doc/COMPILERS.md @@ -44,7 +44,7 @@ library features (`gcc-13.2.0-native`) and build tools (`busybox`, `make`, newly built Clang is used to build any of the remaining targets. To ensure that the Clang from the first step can be used during the entire build process, GCC's runtime libraries (`libgcc`, `libstdc++`) must be locatable by setting -`LD_LIBRARY_PATH=${GCC_TOOLCHAIN}/lib{32,64}`. For building reproducibly, it is +`LD_LIBRARY_PATH=${GCC_TOOLCHAIN}/lib64`. For building reproducibly, it is required to set `LIBCXXABI_ENABLE_ASSERTIONS` and `LIBUNWIND_ENABLE_ASSERTIONS` to `OFF`, as both are enabled by default and cause leaking absolute paths to the build directory. diff --git a/src/compilers/clang-16-native.TARGETS b/src/compilers/clang-16-native.TARGETS index cafed88..0b331cd 100644 --- a/src/compilers/clang-16-native.TARGETS +++ b/src/compilers/clang-16-native.TARGETS @@ -113,7 +113,7 @@ , "GCC_TOOLCHAIN=$(dirname ${CC})/.." , "export PATH=${LOCALBASE}/bin:$PATH" , "export PKG_CONFIG=false" - , "export LD_LIBRARY_PATH=\"${GCC_TOOLCHAIN}/lib:${GCC_TOOLCHAIN}/lib32:${GCC_TOOLCHAIN}/lib64\"" + , "export LD_LIBRARY_PATH=\"${GCC_TOOLCHAIN}/lib64\"" , "unset LDFLAGS" , "CONF_ARGS=" , "INCL_ARGS=" @@ -143,8 +143,10 @@ , "find . -type f -name '*.so*' -exec sh -c \"strip {} 2>/dev/null\" \\;" , "find . -type f -name '*.a' -exec sh -c \"strip -g {}\" \\;" , "find . -type f -name '*.o' -exec sh -c \"strip -g {}\" \\;" - , "cp -r ${GCC_TOOLCHAIN}/include ${GCC_TOOLCHAIN}/lib* ${DESTDIR}/." - , "cp -rl ${DESTDIR}/lib[0-9]*/* ${DESTDIR}/lib/." + , "cp -r ${GCC_TOOLCHAIN}/include/c++ ${DESTDIR}/include/." + , "cp -r ${GCC_TOOLCHAIN}/lib/gcc ${DESTDIR}/lib/." + , "cp -r ${GCC_TOOLCHAIN}/lib64/. ${DESTDIR}/lib/." + , "ln -s lib ${DESTDIR}/lib64" , "if [ -n \"${INCL_ARGS}${LINK_ARGS}\" ]; then" , " cd ${DESTDIR}/bin" , " mv clang clang.real" @@ -195,7 +197,7 @@ { "type": "generic" , "arguments_config": ["ENV"] , "deps": ["toolchain"] - , "cmds": ["cp -L lib/$(uname -m)-*/libc++.so.1 ."] + , "cmds": ["cp -L lib/$(./bin/clang -dumpmachine)/libc++.so.1 ."] , "outs": ["libc++.so.1"] , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} } @@ -203,7 +205,7 @@ { "type": "generic" , "arguments_config": ["ENV"] , "deps": ["toolchain"] - , "cmds": ["cp -L lib/$(uname -m)-*/libc++abi.so.1 ."] + , "cmds": ["cp -L lib/$(./bin/clang -dumpmachine)/libc++abi.so.1 ."] , "outs": ["libc++abi.so.1"] , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} } diff --git a/src/compilers/clang-17-native.TARGETS b/src/compilers/clang-17-native.TARGETS index 498949a..6b268e6 100644 --- a/src/compilers/clang-17-native.TARGETS +++ b/src/compilers/clang-17-native.TARGETS @@ -113,7 +113,7 @@ , "GCC_TOOLCHAIN=$(dirname ${CC})/.." , "export PATH=${LOCALBASE}/bin:$PATH" , "export PKG_CONFIG=false" - , "export LD_LIBRARY_PATH=\"${GCC_TOOLCHAIN}/lib:${GCC_TOOLCHAIN}/lib32:${GCC_TOOLCHAIN}/lib64\"" + , "export LD_LIBRARY_PATH=\"${GCC_TOOLCHAIN}/lib64\"" , "unset LDFLAGS" , "CONF_ARGS=" , "INCL_ARGS=" @@ -143,8 +143,10 @@ , "find . -type f -name '*.so*' -exec sh -c \"strip {} 2>/dev/null\" \\;" , "find . -type f -name '*.a' -exec sh -c \"strip -g {}\" \\;" , "find . -type f -name '*.o' -exec sh -c \"strip -g {}\" \\;" - , "cp -r ${GCC_TOOLCHAIN}/include ${GCC_TOOLCHAIN}/lib* ${DESTDIR}/." - , "cp -rl ${DESTDIR}/lib[0-9]*/* ${DESTDIR}/lib/." + , "cp -r ${GCC_TOOLCHAIN}/include/c++ ${DESTDIR}/include/." + , "cp -r ${GCC_TOOLCHAIN}/lib/gcc ${DESTDIR}/lib/." + , "cp -r ${GCC_TOOLCHAIN}/lib64/. ${DESTDIR}/lib/." + , "ln -s lib ${DESTDIR}/lib64" , "if [ -n \"${INCL_ARGS}${LINK_ARGS}\" ]; then" , " cd ${DESTDIR}/bin" , " mv clang clang.real" @@ -195,7 +197,7 @@ { "type": "generic" , "arguments_config": ["ENV"] , "deps": ["toolchain"] - , "cmds": ["cp -L lib/$(uname -m)-*/libc++.so.1 ."] + , "cmds": ["cp -L lib/$(./bin/clang -dumpmachine)/libc++.so.1 ."] , "outs": ["libc++.so.1"] , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} } @@ -203,7 +205,7 @@ { "type": "generic" , "arguments_config": ["ENV"] , "deps": ["toolchain"] - , "cmds": ["cp -L lib/$(uname -m)-*/libc++abi.so.1 ."] + , "cmds": ["cp -L lib/$(./bin/clang -dumpmachine)/libc++abi.so.1 ."] , "outs": ["libc++abi.so.1"] , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} } diff --git a/src/compilers/gcc-13-musl-static.TARGETS b/src/compilers/gcc-13-musl-static.TARGETS index 109ec85..4193ae8 100644 --- a/src/compilers/gcc-13-musl-static.TARGETS +++ b/src/compilers/gcc-13-musl-static.TARGETS @@ -78,9 +78,8 @@ , "find . -type f -name '*.a' -exec sh -c \"${TARGET_STRIP} -g {}\" \\;" , "find . -type f -name '*.o' -exec sh -c \"${TARGET_STRIP} -g {}\" \\;" , "for f in $(ls ./bin/${TARGET}-*); do" - , " cp -l $f $(echo $f | sed 's|/'${TARGET}-'|/|g')" + , " ln -s $(basename $f) $(echo $f | sed 's|/'${TARGET}-'|/|g')" , "done" - , "cp -rl ./${TARGET}/lib/. ./lib/." , "find . -type l -exec sh -c 'expr match \"$(readlink {})\" \"/\" >/dev/null' \\; -delete" , "GCC_LIBDIR=\"lib/gcc/$(./bin/gcc -dumpmachine)/$(./bin/gcc -dumpfullversion -dumpversion)\"" , "mv ${GCC_LIBDIR}/include-fixed ${TMPDIR}/" @@ -117,7 +116,7 @@ { "type": "generic" , "arguments_config": ["ENV"] , "deps": ["toolchain_for_target"] - , "cmds": ["cp -L lib/libgcc_s.so.1 ."] + , "cmds": ["cp -L $(./bin/gcc -dumpmachine)/lib/libgcc_s.so.1 ."] , "outs": ["libgcc_s.so.1"] , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} } diff --git a/src/compilers/gcc-13-musl.TARGETS b/src/compilers/gcc-13-musl.TARGETS index ef226eb..bad2be8 100644 --- a/src/compilers/gcc-13-musl.TARGETS +++ b/src/compilers/gcc-13-musl.TARGETS @@ -104,9 +104,8 @@ , "find . -type f -name '*.a' -exec sh -c \"${TARGET_STRIP} -g {}\" \\;" , "find . -type f -name '*.o' -exec sh -c \"${TARGET_STRIP} -g {}\" \\;" , "for f in $(ls ./bin/${TARGET}-*); do" - , " cp -l $f $(echo $f | sed 's|/'${TARGET}-'|/|g')" + , " ln -s $(basename $f) $(echo $f | sed 's|/'${TARGET}-'|/|g')" , "done" - , "cp -rl ./${TARGET}/lib/. ./lib/." , "find . -type l -exec sh -c 'expr match \"$(readlink {})\" \"/\" >/dev/null' \\; -delete" , "GCC_LIBDIR=\"lib/gcc/$(./bin/gcc -dumpmachine)/$(./bin/gcc -dumpfullversion -dumpversion)\"" , "mv ${GCC_LIBDIR}/include-fixed ${TMPDIR}/" @@ -149,7 +148,7 @@ { "type": "generic" , "arguments_config": ["ENV"] , "deps": ["toolchain_for_target"] - , "cmds": ["cp -L lib/libstdc++.so.6 ."] + , "cmds": ["cp -L $(./bin/gcc -dumpmachine)/lib/libstdc++.so.6 ."] , "outs": ["libstdc++.so.6"] , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} } @@ -157,7 +156,7 @@ { "type": "generic" , "arguments_config": ["ENV"] , "deps": ["toolchain_for_target"] - , "cmds": ["cp -L lib/libgcc_s.so.1 ."] + , "cmds": ["cp -L $(./bin/gcc -dumpmachine)/lib/libgcc_s.so.1 ."] , "outs": ["libgcc_s.so.1"] , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} } diff --git a/src/tools/python-3.12.TARGETS b/src/tools/python-3.12.TARGETS index 625bac4..fb74882 100644 --- a/src/tools/python-3.12.TARGETS +++ b/src/tools/python-3.12.TARGETS @@ -29,7 +29,7 @@ , "find ./bin -type f -name '*-config' -exec sh -c \"sed -i 's|${ACTION_DIR}|/build|g' {}\" \\;" , "find ./lib -type f -name 'Makefile' -exec sh -c \"sed -i 's|${ACTION_DIR}|/build|g' {}\" \\;" , "find ./lib -type f -name '_sysconfigdata_*' -exec sh -c \"sed -i 's|${ACTION_DIR}|/build|g' {}\" \\;" - , "cp -l bin/python3 bin/python" + , "ln -s python3 bin/python" ] , "out_dirs": ["."] } -- cgit v1.2.3