about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-08-24 18:20:18 +0200
committerGitHub <noreply@github.com>2022-08-24 18:20:18 +0200
commita81012cd321d655c3c5f570dc408cddd68c02327 (patch)
tree84c3c0b4f7aabd20d00b62d3b0483cf6e209b591
parent234a1cc456918972014cea80a0ca7ad0788a9989 (diff)
parent4eb748bf394aacdf96f6cf446cef8d781d3ab8b4 (diff)
Rollup merge of #100930 - cuviper:podman-keep-id, r=jyn514
Use `--userns=keep-id` when "docker" is really podman

Rootless podman creates a separate user namespace, where an inner
`LOCAL_USER_ID` will map to a different subuid range on the host.
The "keep-id" mode maps the current UID directly into the container.

This makes `src/ci/docker/run.sh` work better for testing container
images on systems running podman, where "docker" is just a shim.
-rwxr-xr-xsrc/ci/docker/run.sh11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/ci/docker/run.sh b/src/ci/docker/run.sh
index 93b4f435d4d..69d4916e5a9 100755
--- a/src/ci/docker/run.sh
+++ b/src/ci/docker/run.sh
@@ -213,7 +213,16 @@ else
   args="$args --volume $HOME/.cargo:/cargo"
   args="$args --volume $HOME/rustsrc:$HOME/rustsrc"
   args="$args --volume /tmp/toolstate:/tmp/toolstate"
-  args="$args --env LOCAL_USER_ID=`id -u`"
+
+  id=$(id -u)
+  if [[ "$id" != 0 && "$(docker -v)" =~ ^podman ]]; then
+    # Rootless podman creates a separate user namespace, where an inner
+    # LOCAL_USER_ID will map to a different subuid range on the host.
+    # The "keep-id" mode maps the current UID directly into the container.
+    args="$args --env NO_CHANGE_USER=1 --userns=keep-id"
+  else
+    args="$args --env LOCAL_USER_ID=$id"
+  fi
 fi
 
 if [ "$dev" = "1" ]