contrib/packaging/dockerrpm
author Matt Harbison <matt_harbison@yahoo.com>
Tue, 14 Jan 2020 16:37:45 -0500
changeset 44076 a7c4bcf7018a
parent 43359 e66a3bfcb19b
child 48328 4713bcf78037
permissions -rwxr-xr-x
phabricator: post revisions in ascending topological order (issue6241) The parent in phabricator ends up being the last revision posted, so sorting the user input into ascending order should be enough to preserve the proper relationships. Differential Revision: https://phab.mercurial-scm.org/D7874
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22438
f5abb231b80a dockerrpm: check that docker is running correctly before building
Mads Kiilerich <madski@unity3d.com>
parents: 21642
diff changeset
     1
#!/bin/bash -e
21255
62a2749895e4 build: initial support for in-tree autobuilding recipes
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     2
62a2749895e4 build: initial support for in-tree autobuilding recipes
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     3
BUILDDIR=$(dirname $0)
38046
1868db0d1515 packaging: move some docker scripts into contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33597
diff changeset
     4
export ROOTDIR=$(cd $BUILDDIR/../..; pwd)
21255
62a2749895e4 build: initial support for in-tree autobuilding recipes
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     5
22439
d2a00ced3cce dockerrpm: better handling of specification of docker name
Mads Kiilerich <madski@unity3d.com>
parents: 22438
diff changeset
     6
PLATFORM="$1"
22443
d8818616c45e docker: add CentOS 5
Mads Kiilerich <madski@unity3d.com>
parents: 22441
diff changeset
     7
shift # extra params are passed to buildrpm
22439
d2a00ced3cce dockerrpm: better handling of specification of docker name
Mads Kiilerich <madski@unity3d.com>
parents: 22438
diff changeset
     8
43359
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
     9
DOCKERFILE="$PLATFORM"
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    10
OS_RELEASE="${PLATFORM//[a-z]/}"
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    11
case "$PLATFORM" in
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    12
fedora*)
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    13
    DOCKERFILE="${PLATFORM//[0-9]/}.template"
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    14
    ;;
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    15
esac
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    16
38462
e5916f1236f3 packaging: replace dockerlib.sh with a Python script
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38461
diff changeset
    17
DOCKER=$($BUILDDIR/hg-docker docker-path)
e5916f1236f3 packaging: replace dockerlib.sh with a Python script
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38461
diff changeset
    18
e5916f1236f3 packaging: replace dockerlib.sh with a Python script
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38461
diff changeset
    19
CONTAINER=hg-docker-$PLATFORM
e5916f1236f3 packaging: replace dockerlib.sh with a Python script
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38461
diff changeset
    20
41234
4c0d4bbdc395 packaging: allow running packaging with custom uid+gid for CentOS
Mathias De Mare <mathias.de_mare@nokia.com>
parents: 38462
diff changeset
    21
if [[ -z "${HG_DOCKER_OWN_USER}" ]]; then
4c0d4bbdc395 packaging: allow running packaging with custom uid+gid for CentOS
Mathias De Mare <mathias.de_mare@nokia.com>
parents: 38462
diff changeset
    22
    DOCKERUID=1000
4c0d4bbdc395 packaging: allow running packaging with custom uid+gid for CentOS
Mathias De Mare <mathias.de_mare@nokia.com>
parents: 38462
diff changeset
    23
    DOCKERGID=1000
4c0d4bbdc395 packaging: allow running packaging with custom uid+gid for CentOS
Mathias De Mare <mathias.de_mare@nokia.com>
parents: 38462
diff changeset
    24
else
4c0d4bbdc395 packaging: allow running packaging with custom uid+gid for CentOS
Mathias De Mare <mathias.de_mare@nokia.com>
parents: 38462
diff changeset
    25
    DOCKERUID=$(id -u)
4c0d4bbdc395 packaging: allow running packaging with custom uid+gid for CentOS
Mathias De Mare <mathias.de_mare@nokia.com>
parents: 38462
diff changeset
    26
    DOCKERGID=$(id -g)
4c0d4bbdc395 packaging: allow running packaging with custom uid+gid for CentOS
Mathias De Mare <mathias.de_mare@nokia.com>
parents: 38462
diff changeset
    27
fi
4c0d4bbdc395 packaging: allow running packaging with custom uid+gid for CentOS
Mathias De Mare <mathias.de_mare@nokia.com>
parents: 38462
diff changeset
    28
43359
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    29
$BUILDDIR/hg-docker build \
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    30
    --build-arg UID=$DOCKERUID \
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    31
    --build-arg GID=$DOCKERGID \
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    32
    --build-arg OS_RELEASE=${OS_RELEASE:-latest} \
e66a3bfcb19b packaging: make dockerrpm fedora target more generic
Mads Kiilerich <mads@kiilerich.com>
parents: 43355
diff changeset
    33
    $BUILDDIR/docker/$DOCKERFILE $CONTAINER
22440
cf7b5c011737 dockerrpm: run docker build process as the current user, not as root
Mads Kiilerich <madski@unity3d.com>
parents: 22439
diff changeset
    34
22441
bb9a06d14857 dockerrpm: prepare source outside docker and just run rpmbuild inside docker
Mads Kiilerich <madski@unity3d.com>
parents: 22440
diff changeset
    35
RPMBUILDDIR=$ROOTDIR/packages/$PLATFORM
43355
433cdcb37321 packaging: move dockerrpm output directory creation to dockerrpm
Mads Kiilerich <mads@kiilerich.com>
parents: 41234
diff changeset
    36
mkdir -p $RPMBUILDDIR
38055
917f635b5c6a packaging: make packaging scripts less reliant on pwd
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38050
diff changeset
    37
$ROOTDIR/contrib/packaging/buildrpm --rpmbuilddir $RPMBUILDDIR --prepare $*
22441
bb9a06d14857 dockerrpm: prepare source outside docker and just run rpmbuild inside docker
Mads Kiilerich <madski@unity3d.com>
parents: 22440
diff changeset
    38
bb9a06d14857 dockerrpm: prepare source outside docker and just run rpmbuild inside docker
Mads Kiilerich <madski@unity3d.com>
parents: 22440
diff changeset
    39
DSHARED=/mnt/shared
38461
11eda1f1b6e7 packaging: consistently create build user in Dockerfiles
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38055
diff changeset
    40
DBUILDUSER=build
11eda1f1b6e7 packaging: consistently create build user in Dockerfiles
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38055
diff changeset
    41
33597
a3ac1ea611ce docker: pass proxy arguments to docker process
Mathias De Maré <mathias.de_mare@nokia.com>
parents: 27788
diff changeset
    42
$DOCKER run -e http_proxy -e https_proxy -u $DBUILDUSER --rm -v $RPMBUILDDIR:$DSHARED $CONTAINER \
22441
bb9a06d14857 dockerrpm: prepare source outside docker and just run rpmbuild inside docker
Mads Kiilerich <madski@unity3d.com>
parents: 22440
diff changeset
    43
    rpmbuild --define "_topdir $DSHARED" -ba $DSHARED/SPECS/mercurial.spec --clean
22444
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    44
33597
a3ac1ea611ce docker: pass proxy arguments to docker process
Mathias De Maré <mathias.de_mare@nokia.com>
parents: 27788
diff changeset
    45
$DOCKER run -e http_proxy -e https_proxy -u $DBUILDUSER --rm -v $RPMBUILDDIR:$DSHARED $CONTAINER \
22444
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    46
    createrepo $DSHARED
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    47
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    48
cat << EOF > $RPMBUILDDIR/mercurial.repo
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    49
# Place this file in /etc/yum.repos.d/mercurial.repo
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    50
[mercurial]
23124
4c490626af13 buildrpm: fix use of invalid $PLATFORM in mercurial.repo
Mads Kiilerich <madski@unity3d.com>
parents: 22444
diff changeset
    51
name=Mercurial packages for $PLATFORM
22444
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    52
# baseurl=file://$RPMBUILDDIR/
23124
4c490626af13 buildrpm: fix use of invalid $PLATFORM in mercurial.repo
Mads Kiilerich <madski@unity3d.com>
parents: 22444
diff changeset
    53
baseurl=http://hg.example.com/build/$PLATFORM/
22444
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    54
skip_if_unavailable=True
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    55
gpgcheck=0
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    56
enabled=1
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    57
EOF
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    58
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    59
echo
49ea49823769 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com>
parents: 22443
diff changeset
    60
echo "Build complete - results can be found in $RPMBUILDDIR"