gimp/build/flatpak/gimp-flatpak-cron.sh

113 lines
3.1 KiB
Bash
Executable File

#!/bin/sh
#########################
# Script for daily cron #
#########################
#### Usage ####
if test "$#" -ne 4; then
echo "Usage: $0 <GPKKEY> <REPO> <LOGDIR> <BUILDDIR>"
echo
echo " GPKKEY: GPG Key ID to sign flatpak commits with"
echo " REPO: local path to flatpak repository directory"
echo " LOGDIR: path where logs are stored (under date folder)"
echo " BUILDDIR: path where build files are stored:"
echo " - {BUILDDIR}/{date}/build: the finale built prefix"
echo " - {BUILDDIR}/{date}/artifacts: the build artifacts"
echo " - {BUILDDIR}/.flatpak-builder: cache, etc. (reused)"
exit 1
fi
date="`date --iso-8601=minute`"
# Get variables.
GPGKEY="$1"
REPO="$2"
LOGDIR="$3/$date/"
BUILDDIR="$4"
STATEDIR="$BUILDDIR/.flatpak-builder"
BUILDBASE="$BUILDDIR/$date/"
ARTIFACTDIR="$BUILDBASE/artifacts"
BUILDDIR="$BUILDBASE/build/"
flatpak update --user --assumeyes
# Jump to the source directory.
# We assume readlink existence.
DIR="$(dirname "$(readlink -f "$0")")"
cd $DIR
mkdir "$LOGDIR"
if test "$?" -ne "0"; then
echo "Log directory '$LOGDIR' already exists."
exit 1
fi
LOGFILE="${LOGDIR}/gimp-flatpak-cron.log"
echo "Flatpak cron for GIMP started at `date --rfc-2822`." > $LOGFILE
print_log() {
echo "[GIMP-FLATPAK-CRON] (`date --rfc-2822`) $1" >> $LOGFILE
}
mkdir "$BUILDBASE"
if test "$?" -ne "0"; then
print_log "Build directory '$BUILDBASE' already exists."
exit 1
fi
mkdir "$ARTIFACTDIR"
flatpak_build_branch() {
ARCH=$1
BRANCH=$2
FORCE=$3
BUILDLOG="${LOGDIR}/gimp-flatpak-build-${ARCH}-${BRANCH}.log"
INSTALLDIR="${BUILDDIR}/${ARCH}/${BRANCH}"
mkdir -p ${INSTALLDIR}
# Use ccache to improve build speed. Clean previous build directories.
# Keep build dirs for later debugging if ever any build issue arises.
BUILD_OPTIONS="--ccache --force-clean --keep-build-dirs --jobs=1"
SKIP=""
if test "x$FORCE" != "xyes"; then
if test -f "$REPO/config"; then
SKIP="--skip-if-unchanged"
fi
fi
print_log "Building $BRANCH/$ARCH with options: $BUILD_OPTIONS $SKIP"
flatpak-builder $SKIP $BUILD_OPTIONS --arch="$ARCH" \
--state-dir="${STATEDIR}" \
"${INSTALLDIR}" org.gimp.GIMP-$BRANCH.json \
> "${BUILDLOG}" 2>&1
ret="$?"
print_log "Flatpak $BRANCH/$ARCH successfully built in ${INSTALLDIR}"
if test $ret -eq 0; then
print_log "Exporting $BRANCH release for $ARCH"
flatpak-builder --export-only --gpg-sign="$GPGKEY" --repo="$REPO" \
--state-dir="${STATEDIR}" \
--arch="$ARCH" "${INSTALLDIR}" \
org.gimp.GIMP-$BRANCH.json \
>> "${BUILDLOG}" 2>&1
ret="$?"
if test $ret -eq 0; then
print_log "Flatpak $BRANCH/$ARCH successfully exported to ${REPO}"
fi
fi
mv ${STATEDIR}/build/ "${ARTIFACTDIR}/${ARCH}"
print_log "Detailed build logs for $BRANCH/$ARCH: ${BUILDLOG}"
return $ret
}
#### Build flatpaks ####
for arch in "i386" "x86_64"; do
flatpak_build_branch $arch nightly yes
done
print_log "Cron file ending at `date --rfc-2822`"