# HG changeset patch # User Anton Shestakov # Date 1446916252 -28800 # Node ID 271a802071b7f52a704f27ca26f5de6d7507ba16 # Parent 663eff02a876b73f92fe3c1dbe7a526722269f92 dockerlib: allow non-unique uid and gid of $DBUILDUSER (issue4657) There are make targets for building mercurial packages for various distributions using docker. One of the preparation steps before building is to create inside the docker image a user with the same uid/gid as the current user on the host system, so that the resulting files have appropriate ownership/permissions. It's possible to run `make docker-` as a user with uid or gid that is already present in a vanilla docker container of that distibution. For example, issue4657 is about failing to build fedora packages as a user with uid=999 and gid=999 because these ids are already used in fedora, and groupadd fails. useradd would fail too, if the flow ever got to it (and there was a user with such uid already). A straightforward (maybe too much) way to fix this is to allow non-unique uid and gid for the new user and group that get created inside the image. I'm not sure of the implications of this, but marmoute encouraged me to try and send this patch for stable. diff -r 663eff02a876 -r 271a802071b7 contrib/dockerlib.sh --- a/contrib/dockerlib.sh Mon Nov 09 10:43:23 2015 -0800 +++ b/contrib/dockerlib.sh Sun Nov 08 01:10:52 2015 +0800 @@ -35,8 +35,8 @@ # running docker. This is *very likely* to fail at some point. echo RUN useradd $DBUILDUSER -u 1000 else - echo RUN groupadd $DBUILDUSER -g `id -g` - echo RUN useradd $DBUILDUSER -u `id -u` -g $DBUILDUSER + echo RUN groupadd $DBUILDUSER -g `id -g` --non-unique + echo RUN useradd $DBUILDUSER -u `id -u` -g $DBUILDUSER --non-unique fi ) | $DOCKER build --tag $CONTAINER - }