tests/docker: allow "update" to add the current user
authorAlex Bennée <alex.bennee@linaro.org>
Wed, 12 May 2021 10:20:24 +0000 (11:20 +0100)
committerAlex Bennée <alex.bennee@linaro.org>
Tue, 18 May 2021 08:35:39 +0000 (09:35 +0100)
The current user functionality is used for cross compiling to avoid
complications with permissions when building test programs. However
for images that come from the registry we still need the ability to
add the user after the fact.

Reviewed-by: Willian Rampazzo <willianr@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20210512102051.12134-5-alex.bennee@linaro.org>

tests/docker/docker.py

index 9b3425fec2dada287126b3d6a2b4cb8cd6b71dcf..7a140588015f54e9eae76211ebe3d3d4b0f7e32e 100755 (executable)
@@ -517,7 +517,7 @@ class BuildCommand(SubCommand):
 
 
 class UpdateCommand(SubCommand):
-    """ Update a docker image with new executables. Args: <tag> <executable>"""
+    """ Update a docker image. Args: <tag> <actions>"""
     name = "update"
 
     def args(self, parser):
@@ -525,6 +525,9 @@ class UpdateCommand(SubCommand):
                             help="Image Tag")
         parser.add_argument("--executable",
                             help="Executable to copy")
+        parser.add_argument("--add-current-user", "-u", dest="user",
+                            action="store_true",
+                            help="Add the current user to image's passwd")
 
     def run(self, args, argv):
         # Create a temporary tarball with our whole build context and
@@ -564,6 +567,13 @@ class UpdateCommand(SubCommand):
 
             df.write(u"ADD . /\n")
 
+        if args.user:
+            uid = os.getuid()
+            uname = getpwuid(uid).pw_name
+            df.write("\n")
+            df.write("RUN id %s 2>/dev/null || useradd -u %d -U %s" %
+                     (uname, uid, uname))
+
         df_bytes = BytesIO(bytes(df.getvalue(), "UTF-8"))
 
         df_tar = TarInfo(name="Dockerfile")