]> git.ipfire.org Git - pakfire.git/commitdiff
build: Pass the environment to the interactive shell
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 29 Dec 2024 15:49:21 +0000 (15:49 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 29 Dec 2024 15:49:21 +0000 (15:49 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/build.c
src/libpakfire/include/pakfire/jail.h
src/libpakfire/jail.c

index ef0edcea7fac9f19ecc122003587ac240e1e34f5..e2b19388d47a54c04fb07962f5cff098abb6f02c 100644 (file)
@@ -2555,5 +2555,5 @@ PAKFIRE_EXPORT int pakfire_build_shell(struct pakfire_build* build, const char*
                return pakfire_jail_exec_command(build->jail, argv, build->env, 0);
 
        // Otherwise run the shell
-       return pakfire_jail_shell(build->jail);
+       return pakfire_jail_shell(build->jail, build->env);
 }
index 3abbf20e2b7bbe1bf7a0c137f5a9bc6033409635..9c654e2377858c892e32be17b104f1beac2bd48b 100644 (file)
@@ -91,7 +91,7 @@ int pakfire_jail_exec_script(struct pakfire_jail* jail,
        pakfire_pty_stdin_callback stdin_callback, void* stdin_data,
        pakfire_pty_stdout_callback stdout_callback, void* stdout_data);
 
-int pakfire_jail_shell(struct pakfire_jail* jail);
+int pakfire_jail_shell(struct pakfire_jail* jail, struct pakfire_env* env);
 int pakfire_jail_ldconfig(struct pakfire* pakfire);
 int pakfire_jail_run_systemd_tmpfiles(struct pakfire* pakfire);
 
index 3acd23958e57bc296b74be2bc1dc121d95de93ee..78a65e2b8b6f8be056ae96a8c7236aee634286a1 100644 (file)
@@ -1710,7 +1710,7 @@ ERROR:
        return r;
 }
 
-int pakfire_jail_shell(struct pakfire_jail* jail) {
+int pakfire_jail_shell(struct pakfire_jail* jail, struct pakfire_env* e) {
        struct pakfire_env* env = NULL;
        int r;
 
@@ -1739,6 +1739,13 @@ int pakfire_jail_shell(struct pakfire_jail* jail) {
                        goto ERROR;
        }
 
+       // Merge the custom environment
+       if (e) {
+               r = pakfire_env_merge(env, e);
+               if (r < 0)
+                       goto ERROR;
+       }
+
        // Execute /bin/bash
        r = pakfire_jail_exec_command(jail, argv, env, PAKFIRE_JAIL_INTERACTIVE);
        if (r < 0)