182 lines
4 KiB
Bash
Executable file
182 lines
4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
if [ -n "$debug" ] ; then
|
|
set -x
|
|
fi
|
|
|
|
BIN_DIR=$(dirname "$0")
|
|
CORE_DIR=$(realpath "$BIN_DIR/..")
|
|
GEN_BZ2=false
|
|
GEN_MD5=false
|
|
GEN_XZ=false
|
|
OUT_DIR="${CORE_DIR?}"
|
|
VERSION=
|
|
|
|
usage()
|
|
{
|
|
cat <<EOF
|
|
Usage: $0 [ --xz ] [ --bz2 ] [ --md5 ] [ --output-dir=<output location> ]
|
|
[ --core-dir=<core-repo-location ] [--version=<package_version] label
|
|
|
|
--xz generate a package compressed with xz (default)
|
|
--bz2 generate a package compressed with bz2. Note if you specify
|
|
both --cz and --bz2, both are created. If you specify neither
|
|
--xz is implied.
|
|
--md5 generate a md5 signature for the generated package(s)
|
|
--output-dir where to put the generated packages
|
|
--core-dir location of the core repo to extract sources from.
|
|
By default this is one directory up from the position
|
|
of this script.
|
|
--version version string used to generate the name of the package
|
|
the source package name is libreoffice-<version>.tar.[bz2|xz]
|
|
|
|
EOF
|
|
}
|
|
while [ "${1}" != "" ]; do
|
|
parm=${1%%=*}
|
|
arg=${1#*=}
|
|
has_arg=
|
|
if [ "${1}" != "${parm?}" ] ; then
|
|
has_arg=1
|
|
else
|
|
arg=""
|
|
fi
|
|
# echo "parm=!${parm}!"
|
|
# echo "arg=!${arg}!"
|
|
case "${parm}" in
|
|
-2|--bz2)
|
|
GEN_BZ2=true
|
|
;;
|
|
-x|--xz)
|
|
GEN_XZ=true
|
|
;;
|
|
-5|--md5)
|
|
GEN_MD5=true
|
|
;;
|
|
-o|--output-dir)
|
|
if [ -z "${has_arg}" ] ; then
|
|
shift;
|
|
arg="$1"
|
|
fi
|
|
if [ -z "${arg}" ] ; then
|
|
echo "Missing argument for option $parm" 1>&2
|
|
exit -1
|
|
else
|
|
OUT_DIR="$arg"
|
|
fi
|
|
;;
|
|
-v|--version)
|
|
if [ -z "${has_arg}" ] ; then
|
|
shift;
|
|
arg="$1"
|
|
fi
|
|
if [ -z "${arg}" ] ; then
|
|
echo "Missing argument for option $parm" 1>&2
|
|
exit -1
|
|
else
|
|
VERSION="$arg"
|
|
fi
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
-*)
|
|
echo "Invalid option $1" 1>&2
|
|
exit -1
|
|
;;
|
|
*)
|
|
if [ -z "${LABEL}" ] ; then
|
|
LABEL="$parm"
|
|
else
|
|
echo "Too many arguments.. $@" 1>&2
|
|
exit -1
|
|
fi
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# we need a label
|
|
if [ -z "${LABEL}" ] ; then
|
|
echo "Missing argument. We need a git label as source" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
# default to xz compression
|
|
if ! ${GEN_BZ2?} && ! ${GEN_XZ?} ; then
|
|
GEN_XZ=true
|
|
fi
|
|
|
|
# --version= is mandatory
|
|
if [ -z "${VERSION}" ] ; then
|
|
VERSION="${LABEL?}"
|
|
fi
|
|
|
|
base_name="libreoffice-${VERSION}"
|
|
|
|
# --output-dir default to core-dir
|
|
if [ -z "${OUT_DIR}" ] ; then
|
|
OUT_DIR="$CORE_DIR?}"
|
|
fi
|
|
|
|
if [ ! -d "${CORE_DIR?}" ] ; then
|
|
echo "Core repo directory $CORE_DIR does not exist or is not a directory" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "${CORE_DIR?}/.git" ] ; then
|
|
echo "Core repo $CORE_DIR is not a git repo" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "${OUT_DIR?}" ] ; then
|
|
echo "Output directory $OUT_DIR does not exist or is not a directory" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
|
|
pushd "${CORE_DIR}" > /dev/null
|
|
|
|
|
|
echo "archiving core..."
|
|
git archive --format=tar --prefix="${base_name?}/" -o "${OUT_DIR}/${base_name}.tar" ${LABEL?}
|
|
|
|
|
|
concatenate_list=
|
|
for module in dictionaries helpcontent2 translations ; do
|
|
if [ ! -f ${module?}/.git ] ; then
|
|
echo "Warning: module $module is not present" 1>&2
|
|
else
|
|
echo "archiving ${module?}..."
|
|
git archive --format=tar --prefix="${base_name?}/${module?}" -o "${OUT_DIR}/${base_name}-${module?}.tar" ${LABEL?}
|
|
concatenate_list="${concatenate_list?} ${OUT_DIR}/${base_name}-${module?}.tar"
|
|
fi
|
|
done
|
|
|
|
if [ -n "${concatenate_list?}" ] ; then
|
|
tar --concatenate --file="${OUT_DIR}/${base_name}.tar" ${concatenate_list?}
|
|
rm ${concatenate_list?}
|
|
fi
|
|
|
|
if ${GEN_BZ2?} ; then
|
|
echo "bzip2 compression..."
|
|
bzip2 -fkz "${OUT_DIR}/${base_name}.tar"
|
|
if ${GEN_MD5?} ; then
|
|
echo "md5sum..."
|
|
md5sum "${OUT_DIR}/${base_name}.tar.bz2" > "${OUT_DIR}/${base_name}.tar.bz2.md5"
|
|
fi
|
|
fi
|
|
|
|
if ${GEN_XZ?} ; then
|
|
echo "xz compression..."
|
|
xz -fz "${OUT_DIR}/${base_name}.tar"
|
|
if ${GEN_MD5?} ; then
|
|
echo "md5sum..."
|
|
md5sum "${OUT_DIR}/${base_name}.tar.xz" > "${OUT_DIR}/${base_name}.tar.zx.md5"
|
|
fi
|
|
else
|
|
rm "${OUT_DIR}/${base_name}.tar"
|
|
fi
|
|
|
|
echo "Done."
|