mirror of https://github.com/GNOME/gimp.git
113 lines
3.1 KiB
Bash
Executable File
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`"
|