contrib/packaging/dockerdeb
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 08 Jul 2021 04:29:36 +0200
changeset 47610 f89d3050dcd5
parent 45983 971424517e17
permissions -rwxr-xr-x
resolve: use the `parentchange` context manager to apply merge action In an ideal world, we would not have to do that. However, we are miles away from being ready to not have to do it. So we add this context manager alongside a long comment. This will help use to get to the point were have two distinct API with strict rules about when to call them. Differential Revision: https://phab.mercurial-scm.org/D11074

#!/bin/bash -eu

. $(dirname $0)/packagelib.sh

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

DISTID="$1"
CODENAME="$2"
PLATFORM="$1-$2"
shift; shift # extra params are passed to build process

OUTPUTDIR=${OUTPUTDIR:=$ROOTDIR/packages/$PLATFORM}
CONTAINER=hg-docker-$PLATFORM
TZ=`ls -la /etc/localtime | cut -d/ -f7-9`

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

$BUILDDIR/hg-docker build \
    --build-arg TZ=$TZ \
    --build-arg CODENAME=$CODENAME \
    $BUILDDIR/docker/$DISTID.template \
    $CONTAINER

# debuild only appears to be able to save built debs etc to .., so we
# have to share the .. of the current directory with the docker
# container and hope it's writable. Whee.
dn=$(basename $ROOTDIR)

if [[ -z "${HG_DOCKER_OWN_USER:-}" ]]; then
    DBUILDUSER=build
else
    DBUILDUSER="$(id -u):$(id -g)"
fi

if [ $(uname) = "Darwin" ] ; then
    $DOCKER run -u $DBUILDUSER --rm -v $PWD/..:/mnt $CONTAINER \
            sh -c "cd /mnt/$dn && make clean && make local"
fi
$DOCKER run -u $DBUILDUSER --rm -v $ROOTDIR/..:/mnt $CONTAINER \
  sh -c "cd /mnt/$dn && DEB_BUILD_OPTIONS='${DEB_BUILD_OPTIONS:=}' contrib/packaging/builddeb --build --distid $DISTID --codename $CODENAME $@"
(cd $ROOTDIR && contrib/packaging/builddeb --cleanup --distid $DISTID --codename $CODENAME)
if [ $(uname) = "Darwin" ] ; then
    $DOCKER run -u $DBUILDUSER --rm -v $PWD/..:/mnt $CONTAINER \
            sh -c "cd /mnt/$dn && make clean"
fi