diff options
Diffstat (limited to 'bin/unpack-sources')
-rwxr-xr-x | bin/unpack-sources | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/bin/unpack-sources b/bin/unpack-sources new file mode 100755 index 000000000..7221696e1 --- /dev/null +++ b/bin/unpack-sources @@ -0,0 +1,91 @@ +#!/usr/bin/env bash + +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +usage() +{ + echo "Helper script to unpack the LO source tarballs" + echo + echo "Usage: ${0##*/} [--help] start-dir tarball..." + echo + echo "Options:" + echo + echo " --help this help" + echo " start-dir path where the sources are unpacked (bootstrap directory)" + echo " tarball list of LO source tarball that need to be unpacked" +} + +start_dir= +tarballs= + +while test -n "$1" ; do + case "$1" in + --help) + usage + exit 0; + ;; + --download) + download="yes" + ;; + -*) + echo "Error: unknown option: $1" + exit 1; + ;; + *) + if test -z "$start_dir" ; then + start_dir="$1" + else + tarballs="$tarballs $1" + fi + ;; + esac + shift +done + +if test -z "$start_dir" ; then + echo "Error: Please, define where to unpack sources, try --help" +fi + +if ! test -f $start_dir/Repository.mk ; then + echo "Error: $start_dir is not a valid LibreOffice core source directory" + exit 1; +fi + +if test ! -f $start_dir/sources.ver -o -d $start_dir/.git ; then + echo "Warning: sources are from git and not from tarball" + echo " Do nothing." + exit 0; +fi + +lo_src_dir="$start_dir/src" +mkdir -p "$lo_src_dir" + +for tarball in $tarballs ; do + tarname=`basename $tarball | sed -e "s/\.tar\..*//"` + if test -d $lo_src_dir/$tarname ; then + echo "Warning: $lo_src_dir/$tarname already exists => skipping" + continue; + fi + + echo "Unpacking $tarname..." + echo mkdir -p "$lo_src_dir/$tarname" + if ! mkdir -p "$lo_src_dir/$tarname" ; then + echo "Error: could not create directory $lo_src_dir/$tarname" + fi + echo tar -xf "$tarball" -C "$lo_src_dir/$tarname" --strip-components=1 + if ! tar -xf "$tarball" -C "$lo_src_dir/$tarname" --strip-components=1; then + echo "Error: could not unpack $tarname" + exit 1 + fi + + # create symlinks for module directories; ignore git-hooks directory + while read -r dir; do + ln -sf "src/${tarname}/$(basename "$dir")" "$start_dir" + done < <(find "$lo_src_dir/$tarname" -mindepth 1 -maxdepth 1 -type d -path $lo_src_dir/$tarname/git-hooks) +done |