| #!/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." |