]> git.ipfire.org Git - people/stevee/pakfire.git/commitdiff
jail: Set container and container_uuid environment variables in jail
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 30 Dec 2022 14:32:07 +0000 (14:32 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 30 Dec 2022 14:32:07 +0000 (14:32 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/jail.c

index 68c2681e1cca6a7b221defba2f3cf28b2a92e72b..5c7a844b995ca944813f74f4881f7af7d51784c4 100644 (file)
@@ -69,6 +69,9 @@ static const struct environ {
        { "LANG", "C.utf-8" },
        { "PATH", "/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin", },
        { "TERM", "vt100" },
+
+       // Tell everything that it is running inside a Pakfire container
+       { "container", "pakfire" },
        { NULL, NULL },
 };
 
@@ -206,6 +209,13 @@ static int pakfire_jail_default_log_callback(struct pakfire* pakfire, void* data
        return 0;
 }
 
+static const char* pakfire_jail_uuid(struct pakfire_jail* jail) {
+       if (!*jail->__uuid)
+               uuid_unparse_lower(jail->uuid, jail->__uuid);
+
+       return jail->__uuid;
+}
+
 static int pakfire_jail_setup_interactive_env(struct pakfire_jail* jail) {
        // Set PS1
        int r = pakfire_jail_set_env(jail, "PS1", "pakfire-jail \\w> ");
@@ -261,6 +271,11 @@ PAKFIRE_EXPORT int pakfire_jail_create(struct pakfire_jail** jail,
                        goto ERROR;
        }
 
+       // Set container UUID
+       r = pakfire_jail_set_env(j, "container_uuid", pakfire_jail_uuid(j));
+       if (r)
+               goto ERROR;
+
        // Disable systemctl to talk to systemd
        if (!pakfire_on_root(j->pakfire)) {
                r = pakfire_jail_set_env(j, "SYSTEMD_OFFLINE", "1");
@@ -292,13 +307,6 @@ PAKFIRE_EXPORT struct pakfire_jail* pakfire_jail_unref(struct pakfire_jail* jail
        return NULL;
 }
 
-static const char* pakfire_jail_uuid(struct pakfire_jail* jail) {
-       if (!*jail->__uuid)
-               uuid_unparse_lower(jail->uuid, jail->__uuid);
-
-       return jail->__uuid;
-}
-
 // Resource Limits
 
 PAKFIRE_EXPORT int pakfire_jail_nice(struct pakfire_jail* jail, int nice) {