From 066eed43b101ced28bc96502502523a85d797e92 Mon Sep 17 00:00:00 2001 From: Hein-Pieter van Braam-Stewart Date: Mon, 8 Feb 2021 01:19:12 +0100 Subject: [PATCH] Cleanup the SDKs a bit removing unnecessary files This also removes the symlinked directories which will help with the Linux SDKs for Windows --- build-sdk.sh | 16 ++++++- clean-linux-toolchain.sh | 91 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100755 clean-linux-toolchain.sh diff --git a/build-sdk.sh b/build-sdk.sh index e4356776da..04c96fe23f 100755 --- a/build-sdk.sh +++ b/build-sdk.sh @@ -14,14 +14,17 @@ case $1 in i686) cp config-godot-i686 .config toolchain_prefix=i686-godot-linux-gnu + bits=32 ;; x86_64) cp config-godot-x86_64 .config toolchain_prefix=x86_64-godot-linux-gnu + bits=64 ;; armv7) cp config-godot-armv7 .config toolchain_prefix=arm-godot-linux-gnueabihf + bits=32 ;; *) usage @@ -41,7 +44,18 @@ ${container} build -f Dockerfile.builder -t godot-buildroot-builder ${container} run -it --rm -v $(pwd):/tmp/buildroot -w /tmp/buildroot -e FORCE_UNSAFE_CONFIGURE=1 --userns=keep-id godot-buildroot-builder scl enable devtoolset-9 "bash -c make syncconfig; make clean sdk" mkdir -p godot-toolchains -mv output/images/${toolchain_prefix}_sdk-buildroot.tar.gz godot-toolchains + +rm -fr godot-toolchains/${toolchain_prefix}_sdk-buildroot +tar xf output/images/${toolchain_prefix}_sdk-buildroot.tar.gz -C godot-toolchains + +pushd godot-toolchains/${toolchain_prefix}_sdk-buildroot +../../clean-linux-toolchain.sh ${toolchain_prefix} ${bits} +popd + +pushd godot-toolchains +tar -cjf ${toolchain_prefix}_sdk-buildroot.tar.bz2 ${toolchain_prefix}_sdk-buildroot +rm -rf ${toolchain_prefix}_sdk-buildroot +popd echo echo "***************************************" diff --git a/clean-linux-toolchain.sh b/clean-linux-toolchain.sh new file mode 100755 index 0000000000..d63a566a84 --- /dev/null +++ b/clean-linux-toolchain.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +set -e + +if [ -z $1 ] || [ -z $2 ]; then + echo "usage: $0 arch bits" + exit 1 +fi + +arch=$1 +bits=$2 + +bin_to_keep="aclocal autoconf autoheader automake autoreconf cmake gawk libtool m4 meson ninja pkgconf pkg-config python3 scons tar toolchain-wrapper" +lib_to_keep="cmake gcc libpkgconf libpython3.9 libz libisl libmpc libmpfr libgmp libffi python3.9 pkgconfig" +share_to_keep="aclocal autoconf buildroot cmake gcc libtool pkgconfig" +sysroot_share_to_keep="aclocal pkgconfig" + +function clean_directory() { + pushd $1 + files_to_keep="${@:2}" + + for file in $(ls -1); do + keep_file=0 + + if echo ${file} | grep -qe "^${arch}"; then + keep_file=1 + fi + + for keep in ${files_to_keep}; do + if echo ${file} | grep -qe "^${keep}"; then + keep_file=1 + break + fi + done + + if [ ${keep_file} -eq 0 ]; then + rm -rf ${file} + fi + done + + popd +} + +rm -f $(find -name *.a | grep -vE '(nonshared|gcc|libstdc++)') +find -regex '.*\.so\(\..*\)?' -exec bin/${arch}-strip {} \; 2> /dev/null +find bin -exec bin/${arch}-strip {} \; 2> /dev/null +find ${arch}/bin -exec bin/${arch}-strip {} \; 2> /dev/null +find libexec/gcc -type f -exec bin/${arch}-strip {} \; 2> /dev/null + +clean_directory bin ${bin_to_keep} +clean_directory lib ${lib_to_keep} +clean_directory share ${share_to_keep} +clean_directory ${arch}/sysroot/usr/share ${sysroot_share_to_keep} + +find -name *.pyc -delete + +rm -f usr lib64 +rm -rf sbin var + +for s in bin lib lib64 sbin; do + if [ -L ${arch}/sysroot/${s} ]; then + rm -f ${arch}/sysroot/${s} + fi +done + +if [ ${bits} == 64 ]; then + libdir_to_remove=lib + libdir_to_keep=lib64 +else + libdir_to_remove=lib64 + libdir_to_keep=lib +fi + +rm -rf ${arch}/sysroot/usr/{bin,sbin} + +mkdir -p ${arch}/sysroot/${libdir_to_keep} +cp ${arch}/sysroot/usr/${libdir_to_keep}/libpthread*so* ${arch}/sysroot/${libdir_to_keep} +cp ${arch}/sysroot/usr/${libdir_to_keep}/ld-linux*so* ${arch}/sysroot/${libdir_to_keep} +cp ${arch}/sysroot/usr/${libdir_to_keep}/libc*so* ${arch}/sysroot/${libdir_to_keep} + +if [ -L ${arch}/sysroot/usr/${libdir_to_keep} ]; then + rm ${arch}/sysroot/usr/${libdir_to_keep} + mv ${arch}/sysroot/usr/${libdir_to_remove} ${arch}/sysroot/usr/${libdir_to_keep} + mkdir ${arch}/sysroot/usr/${libdir_to_remove} + mv ${arch}/sysroot/usr/${libdir_to_keep}/crt*.o ${arch}/sysroot/usr/${libdir_to_remove} + mv ${arch}/sysroot/usr/${libdir_to_keep}/pkgconfig ${arch}/sysroot/usr/${libdir_to_remove} + # But why tho + mv ${arch}/sysroot/usr/${libdir_to_keep}/pulseaudio ${arch}/sysroot/usr/${libdir_to_remove} +fi + +find -name *python2* -exec rm -rf {} \; || true