contrib/packaging/dockerrpm
author Matt Harbison <matt_harbison@yahoo.com>
Tue, 24 Nov 2020 16:17:16 -0500
changeset 45968 971424517e17
parent 43359 e66a3bfcb19b
child 48331 4713bcf78037
permissions -rwxr-xr-x
packaging: drop Disco (19.04) and add Focal (20.04) Disco support ended in January 2020, and Focal does not have an announced EOL. Something is now installing and configuring `tzdata`, which was throwing up an interactive prompt to configure the timezone. Aside from being hostile to automation, the prompt didn't actually accept input and hung the process. This propagates the host's timezone into the image via environment variable in order to skip the prompt, and avoid hardcoding a value. Differential Revision: https://phab.mercurial-scm.org/D9396

#!/bin/bash -e

BUILDDIR=$(dirname $0)
export ROOTDIR=$(cd $BUILDDIR/../..; pwd)

PLATFORM="$1"
shift # extra params are passed to buildrpm

DOCKERFILE="$PLATFORM"
OS_RELEASE="${PLATFORM//[a-z]/}"
case "$PLATFORM" in
fedora*)
    DOCKERFILE="${PLATFORM//[0-9]/}.template"
    ;;
esac

DOCKER=$($BUILDDIR/hg-docker docker-path)

CONTAINER=hg-docker-$PLATFORM

if [[ -z "${HG_DOCKER_OWN_USER}" ]]; then
    DOCKERUID=1000
    DOCKERGID=1000
else
    DOCKERUID=$(id -u)
    DOCKERGID=$(id -g)
fi

$BUILDDIR/hg-docker build \
    --build-arg UID=$DOCKERUID \
    --build-arg GID=$DOCKERGID \
    --build-arg OS_RELEASE=${OS_RELEASE:-latest} \
    $BUILDDIR/docker/$DOCKERFILE $CONTAINER

RPMBUILDDIR=$ROOTDIR/packages/$PLATFORM
mkdir -p $RPMBUILDDIR
$ROOTDIR/contrib/packaging/buildrpm --rpmbuilddir $RPMBUILDDIR --prepare $*

DSHARED=/mnt/shared
DBUILDUSER=build

$DOCKER run -e http_proxy -e https_proxy -u $DBUILDUSER --rm -v $RPMBUILDDIR:$DSHARED $CONTAINER \
    rpmbuild --define "_topdir $DSHARED" -ba $DSHARED/SPECS/mercurial.spec --clean

$DOCKER run -e http_proxy -e https_proxy -u $DBUILDUSER --rm -v $RPMBUILDDIR:$DSHARED $CONTAINER \
    createrepo $DSHARED

cat << EOF > $RPMBUILDDIR/mercurial.repo
# Place this file in /etc/yum.repos.d/mercurial.repo
[mercurial]
name=Mercurial packages for $PLATFORM
# baseurl=file://$RPMBUILDDIR/
baseurl=http://hg.example.com/build/$PLATFORM/
skip_if_unavailable=True
gpgcheck=0
enabled=1
EOF

echo
echo "Build complete - results can be found in $RPMBUILDDIR"