summaryrefslogtreecommitdiffstats
path: root/bin/unpack-sources
diff options
context:
space:
mode:
Diffstat (limited to 'bin/unpack-sources')
-rwxr-xr-xbin/unpack-sources91
1 files changed, 91 insertions, 0 deletions
diff --git a/bin/unpack-sources b/bin/unpack-sources
new file mode 100755
index 0000000000..7221696e19
--- /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