D5571: packaging: allow running packaging with custom uid+gid for CentOS
Mathiasdm (Mathias De Maré)
phabricator at mercurial-scm.org
Fri Jan 11 14:28:52 UTC 2019
Mathiasdm created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
rpmbuild in CentOS 7 has a bug causing rpmbuild to fail
with "Bad owner/group" if spec or source files are owned
by a different user: https://github.com/rpm-software-management/rpm/issues/2
This makes it very annoying to try and build the CentOS RPMs
on CentOS with Docker.
As an alternative, this change makes it possible to do so,
using an environment variable.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D5571
AFFECTED FILES
contrib/packaging/docker/centos5
contrib/packaging/docker/centos6
contrib/packaging/docker/centos7
contrib/packaging/dockerrpm
contrib/packaging/hg-docker
CHANGE DETAILS
diff --git a/contrib/packaging/hg-docker b/contrib/packaging/hg-docker
--- a/contrib/packaging/hg-docker
+++ b/contrib/packaging/hg-docker
@@ -47,7 +47,7 @@
df = fh.read()
for k, v in args:
- df = df.replace(b'%%%s%%' % k, v)
+ df = df.replace(bytes('%%%s%%' % k.decode(), 'utf-8'), v)
return df
diff --git a/contrib/packaging/dockerrpm b/contrib/packaging/dockerrpm
--- a/contrib/packaging/dockerrpm
+++ b/contrib/packaging/dockerrpm
@@ -10,7 +10,15 @@
CONTAINER=hg-docker-$PLATFORM
-$BUILDDIR/hg-docker build $BUILDDIR/docker/$PLATFORM $CONTAINER
+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 $BUILDDIR/docker/$PLATFORM $CONTAINER
RPMBUILDDIR=$ROOTDIR/packages/$PLATFORM
$ROOTDIR/contrib/packaging/buildrpm --rpmbuilddir $RPMBUILDDIR --prepare $*
diff --git a/contrib/packaging/docker/centos7 b/contrib/packaging/docker/centos7
--- a/contrib/packaging/docker/centos7
+++ b/contrib/packaging/docker/centos7
@@ -1,7 +1,7 @@
FROM centos:centos7
-RUN groupadd -g 1000 build && \
- useradd -u 1000 -g 1000 -s /bin/bash -d /build -m build
+RUN groupadd -g %GID% build && \
+ useradd -u %UID% -g %GID% -s /bin/bash -d /build -m build
RUN yum install -y \
gcc \
diff --git a/contrib/packaging/docker/centos6 b/contrib/packaging/docker/centos6
--- a/contrib/packaging/docker/centos6
+++ b/contrib/packaging/docker/centos6
@@ -1,7 +1,7 @@
FROM centos:centos6
-RUN groupadd -g 1000 build && \
- useradd -u 1000 -g 1000 -s /bin/bash -d /build -m build
+RUN groupadd -g %GID% build && \
+ useradd -u %UID% -g %GID% -s /bin/bash -d /build -m build
RUN yum install -y \
gcc \
diff --git a/contrib/packaging/docker/centos5 b/contrib/packaging/docker/centos5
--- a/contrib/packaging/docker/centos5
+++ b/contrib/packaging/docker/centos5
@@ -1,7 +1,7 @@
FROM centos:centos5
-RUN groupadd -g 1000 build && \
- useradd -u 1000 -g 1000 -s /bin/bash -d /build -m build
+RUN groupadd -g %GID% build && \
+ useradd -u %UID% -g %GID% -s /bin/bash -d /build -m build
RUN \
sed -i 's/^mirrorlist/#mirrorlist/' /etc/yum.repos.d/*.repo && \
To: Mathiasdm, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list