2017-10-21 16:12:44 -05:00
|
|
|
#! /bin/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/.
|
|
|
|
|
2018-12-21 05:14:25 -06:00
|
|
|
# -- Available env vars --
|
|
|
|
# * DOCKER_HUB_REPO - which Docker Hub repo to use
|
|
|
|
# * DOCKER_HUB_TAG - which Docker Hub tag to create
|
2019-12-17 01:11:14 -06:00
|
|
|
# * LIBREOFFICE_BRANCH - which branch to build in core
|
2020-02-25 14:46:04 -06:00
|
|
|
# * LIBREOFFICE_ONLINE_REPO - which git repo to clone online from
|
2019-12-17 01:11:14 -06:00
|
|
|
# * LIBREOFFICE_ONLINE_BRANCH - which branch to build in online
|
2019-01-28 05:14:36 -06:00
|
|
|
# * LIBREOFFICE_BUILD_TARGET - which make target to run (in core repo)
|
2019-01-31 03:04:24 -06:00
|
|
|
# * ONLINE_EXTRA_BUILD_OPTIONS - extra build options for online
|
2019-01-31 02:50:52 -06:00
|
|
|
# * NO_DOCKER_IMAGE - if set, don't build the docker image itself, just do all the preps
|
2020-02-20 03:45:14 -06:00
|
|
|
# * NO_DOCKER_PUSH - don't push to docker hub
|
2018-12-21 05:14:25 -06:00
|
|
|
|
2017-10-21 16:12:44 -05:00
|
|
|
# check we can sudo without asking a pwd
|
|
|
|
echo "Trying if sudo works without a password"
|
|
|
|
echo
|
|
|
|
echo "If you get a password prompt now, break, and fix your setup using 'sudo visudo'; add something like:"
|
2019-05-22 03:32:21 -05:00
|
|
|
echo "yourusername ALL=(ALL) NOPASSWD: /sbin/setcap"
|
2017-10-21 16:12:44 -05:00
|
|
|
echo
|
|
|
|
sudo echo "works"
|
|
|
|
|
2018-12-21 05:14:25 -06:00
|
|
|
# Check env variables
|
|
|
|
if [ -z "$DOCKER_HUB_REPO" ]; then
|
|
|
|
DOCKER_HUB_REPO="libreoffice/online"
|
|
|
|
fi;
|
|
|
|
if [ -z "$DOCKER_HUB_TAG" ]; then
|
|
|
|
DOCKER_HUB_TAG="master"
|
|
|
|
fi;
|
|
|
|
echo "Using Docker Hub Repository: '$DOCKER_HUB_REPO' with tag '$DOCKER_HUB_TAG'."
|
|
|
|
|
2018-12-21 07:30:41 -06:00
|
|
|
if [ -z "$LIBREOFFICE_BRANCH" ]; then
|
|
|
|
LIBREOFFICE_BRANCH="master"
|
|
|
|
fi;
|
2019-12-17 01:11:14 -06:00
|
|
|
echo "Building core branch '$LIBREOFFICE_BRANCH'"
|
|
|
|
|
|
|
|
if [ -z "$LIBREOFFICE_ONLINE_BRANCH" ]; then
|
|
|
|
LIBREOFFICE_ONLINE_BRANCH="master"
|
|
|
|
fi;
|
|
|
|
echo "Building online branch '$LIBREOFFICE_ONLINE_BRANCH'"
|
2018-12-21 07:30:41 -06:00
|
|
|
|
2019-01-28 05:14:36 -06:00
|
|
|
if [ -z "$LIBREOFFICE_BUILD_TARGET" ]; then
|
|
|
|
LIBREOFFICE_BUILD_TARGET=""
|
|
|
|
fi;
|
|
|
|
echo "LibreOffice build target: '$LIBREOFFICE_BUILD_TARGET'"
|
|
|
|
|
2020-02-25 14:46:04 -06:00
|
|
|
if [ -z "$LIBREOFFICE_ONLINE_REPO" ]; then
|
|
|
|
LIBREOFFICE_ONLINE_REPO="https://git.libreoffice.org/online"
|
|
|
|
fi;
|
|
|
|
echo "LibreOffice build target: '$LIBREOFFICE_BUILD_TARGET'"
|
|
|
|
|
2017-10-21 16:12:44 -05:00
|
|
|
# do everything in the builddir
|
|
|
|
SRCDIR=$(realpath `dirname $0`)
|
|
|
|
INSTDIR="$SRCDIR/instdir"
|
|
|
|
BUILDDIR="$SRCDIR/builddir"
|
|
|
|
|
|
|
|
mkdir -p "$BUILDDIR"
|
|
|
|
cd "$BUILDDIR"
|
|
|
|
|
2019-01-28 03:10:34 -06:00
|
|
|
rm -rf "$INSTDIR" || true
|
2017-10-21 16:12:44 -05:00
|
|
|
mkdir -p "$INSTDIR"
|
|
|
|
|
|
|
|
##### cloning & updating #####
|
|
|
|
|
|
|
|
# libreoffice repo
|
|
|
|
if test ! -d libreoffice ; then
|
2018-12-21 05:26:53 -06:00
|
|
|
git clone https://git.libreoffice.org/core libreoffice || exit 1
|
2018-01-05 10:25:42 -06:00
|
|
|
fi
|
|
|
|
|
2019-02-04 05:29:15 -06:00
|
|
|
( cd libreoffice && git fetch --all && git checkout $LIBREOFFICE_BRANCH && ./g pull -r ) || exit 1
|
2018-01-05 10:25:42 -06:00
|
|
|
|
|
|
|
# online repo
|
|
|
|
if test ! -d online ; then
|
2020-02-25 14:46:04 -06:00
|
|
|
git clone "$LIBREOFFICE_ONLINE_REPO" online || exit 1
|
2018-01-05 10:25:42 -06:00
|
|
|
fi
|
|
|
|
|
2019-12-17 01:11:14 -06:00
|
|
|
( cd online && git fetch --all && git checkout -f $LIBREOFFICE_ONLINE_BRANCH && git clean -f -d && git pull -r ) || exit 1
|
2018-01-05 10:25:42 -06:00
|
|
|
|
|
|
|
##### LibreOffice #####
|
|
|
|
|
|
|
|
# build LibreOffice
|
2019-06-11 03:27:53 -05:00
|
|
|
( cd libreoffice && ./autogen.sh --with-distro=LibreOfficeOnline) || exit 1
|
2019-01-28 05:14:36 -06:00
|
|
|
( cd libreoffice && make $LIBREOFFICE_BUILD_TARGET ) || exit 1
|
2017-10-21 16:12:44 -05:00
|
|
|
|
|
|
|
# copy stuff
|
|
|
|
mkdir -p "$INSTDIR"/opt/
|
|
|
|
cp -a libreoffice/instdir "$INSTDIR"/opt/libreoffice
|
|
|
|
|
|
|
|
##### loolwsd & loleaflet #####
|
|
|
|
|
|
|
|
# build
|
2019-03-05 02:53:45 -06:00
|
|
|
( cd online && ./autogen.sh ) || exit 1
|
2019-10-01 03:35:38 -05:00
|
|
|
( cd online && ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-silent-rules --with-lokit-path="$BUILDDIR"/libreoffice/include --with-lo-path=/opt/libreoffice $ONLINE_EXTRA_BUILD_OPTIONS) || exit 1
|
2018-01-17 16:45:25 -06:00
|
|
|
( cd online && scripts/locorestrings.py "$BUILDDIR"/online "$BUILDDIR"/libreoffice/translations )
|
|
|
|
( cd online && scripts/unocommands.py --update "$BUILDDIR"/online "$BUILDDIR"/libreoffice )
|
|
|
|
( cd online && scripts/unocommands.py --translate "$BUILDDIR"/online "$BUILDDIR"/libreoffice/translations )
|
2017-10-21 16:12:44 -05:00
|
|
|
( cd online && make -j 8) || exit 1
|
|
|
|
|
|
|
|
# copy stuff
|
|
|
|
( cd online && DESTDIR="$INSTDIR" make install ) || exit 1
|
|
|
|
|
|
|
|
# Create new docker image
|
2019-01-31 02:50:52 -06:00
|
|
|
if [ -z "$NO_DOCKER_IMAGE" ]; then
|
|
|
|
cd "$SRCDIR"
|
|
|
|
docker build --no-cache -t $DOCKER_HUB_REPO:$DOCKER_HUB_TAG . || exit 1
|
2020-02-20 03:45:14 -06:00
|
|
|
if [ -z "$NO_DOCKER_PUSH" ]; then
|
|
|
|
docker push $DOCKER_HUB_REPO:$DOCKER_HUB_TAG || exit 1
|
|
|
|
fi;
|
2019-01-31 02:50:52 -06:00
|
|
|
else
|
|
|
|
echo "Skipping docker image build"
|
|
|
|
fi;
|