diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2020-03-02 12:57:42 +0100 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2020-03-18 12:21:23 +0100 |
commit | 996f0e6a0f39434e6e1b1b450262d97af60d663d (patch) | |
tree | 61bc0d0db434782a2db2087c0ec22918a1fbf7c4 /external/boost | |
parent | 1e609d1c5afb0188dd8c2b211fb405627303bef4 (diff) |
repack the boost tarball to be smaller and faster
The tarball is almost 100MiB and it unpacks to roughly 0.75GiB,
because it contains tons of generated html docs and other stuff that
is not needed for building. Unpacking it on Cygwin takes several
minutes (done in parallel, but still) and even on Linux the unpacking
takes longer than the actual compilation.
Change-Id: Ied9f3059530f4e9a856170ec3fcc304631ff8e0a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89825
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'external/boost')
-rwxr-xr-x | external/boost/repack_tarball.sh | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/external/boost/repack_tarball.sh b/external/boost/repack_tarball.sh new file mode 100755 index 000000000000..ed27875f6def --- /dev/null +++ b/external/boost/repack_tarball.sh @@ -0,0 +1,60 @@ +#! /bin/sh + +# Repack the boost tarball as xz (much faster to unpack) and remove +# a lot of needless files such as generated html docs. + +tarball="$1" + +if test -z "$tarball" -o ! -f "$tarball"; then + echo "Usage: $0 <tarball>" + exit 1 +fi + +tmpdir=$(mktemp -d) + +if ! test -d "$tmpdir"; then + echo mktemp failed + exit 1 +fi + +echo Unpacking "$tarball" ... +tar x -C "$tmpdir" -f "$tarball" +if test $? -ne 0; then + echo tar x failed + rm -rf "$tmpdir" + exit 1 +fi + +echo Removing unnecessary files ... +find "$tmpdir" \( -name doc -o -name test -o -name example \) -type d -prune -print0 | xargs -0 rm -r +if test $? -ne 0; then + echo file removal failed + rm -rf "$tmpdir" + exit 1 +fi + +name="$(basename "$tarball" | sed 's/\.tar.*$//').tar.xz" +dir=$(ls "$tmpdir") + +echo Creating "$name" ... +# To make the tarball reproducible, use a timestamp of a file inside the tarball (they all seem to have the same mtime). +if ! test -f "$tmpdir/$dir/README.md"; then + echo timestamp retrieval failed, check the script + rm -rf "$tmpdir" + exit 1 +fi +# Many of the options are to make the tarball reproducible. +LC_ALL=C tar c -C "$tmpdir" --xz -f "$(pwd)/$name" --format=gnu --sort=name --owner=0 --group=0 --mode=go=rX,u=rwX --mtime "$tmpdir/$dir/README.md" "$dir" +if test $? -ne 0; then + echo tar c failed + rm -rf "$tmpdir" + exit 1 +fi + +echo Cleaning up ... +rm -rf "$tmpdir" + +sha256sum "$name" + +echo Done. +exit 0 |