mirror of
https://git.suyu.dev/suyu/AppImageKit-checkrt.git
synced 2025-12-23 15:54:10 +01:00
load exec() wrapper if optional runtimes are present
This commit is contained in:
parent
2b645a7f55
commit
bce42d0560
6 changed files with 367 additions and 18 deletions
|
|
@ -1,19 +1,34 @@
|
|||
https://github.com/AppImage/AppImageKit/blob/ddcb5b98073ec251cbddda7a4eaa17545f06bbff/AppRun.c
|
||||
|
||||
--- a/AppRun.c
|
||||
+++ b/AppRun.c
|
||||
@@ -156,6 +156,7 @@
|
||||
@@ -164,6 +164,10 @@
|
||||
char *old_env;
|
||||
const int length = 2047;
|
||||
char new_env[8][length+1];
|
||||
size_t length;
|
||||
const char *format;
|
||||
+ checkrt(usr_in_appdir);
|
||||
+
|
||||
+ if (optional_ld_preload)
|
||||
+ putenv(optional_ld_preload);
|
||||
|
||||
/* https://docs.python.org/2/using/cmdline.html#envvar-PYTHONHOME */
|
||||
snprintf(new_env[0], length, "PYTHONHOME=%s/usr/", appdir);
|
||||
@@ -164,7 +165,7 @@
|
||||
snprintf(new_env[1], length, "PATH=%s/usr/bin/:%s/usr/sbin/:%s/usr/games/:%s/bin/:%s/sbin/:%s", appdir, appdir, appdir, appdir, appdir, old_env);
|
||||
SET_NEW_ENV(new_pythonhome, appdir_s, "PYTHONHOME=%s/usr/", appdir);
|
||||
@@ -172,7 +176,7 @@
|
||||
SET_NEW_ENV(new_path, appdir_s*5 + strlen(old_env), "PATH=%s/usr/bin/:%s/usr/sbin/:%s/usr/games/:%s/bin/:%s/sbin/:%s", appdir, appdir, appdir, appdir, appdir, old_env);
|
||||
|
||||
old_env = getenv("LD_LIBRARY_PATH") ?: "";
|
||||
- snprintf(new_env[2], length, "LD_LIBRARY_PATH=%s/usr/lib/:%s/usr/lib/i386-linux-gnu/:%s/usr/lib/x86_64-linux-gnu/:%s/usr/lib32/:%s/usr/lib64/:%s/lib/:%s/lib/i386-linux-gnu/:%s/lib/x86_64-linux-gnu/:%s/lib32/:%s/lib64/:%s", appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, old_env);
|
||||
+ snprintf(new_env[2], length, "LD_LIBRARY_PATH=%s%s/usr/lib/:%s/usr/lib/i386-linux-gnu/:%s/usr/lib/x86_64-linux-gnu/:%s/usr/lib32/:%s/usr/lib64/:%s/lib/:%s/lib/i386-linux-gnu/:%s/lib/x86_64-linux-gnu/:%s/lib32/:%s/lib64/:%s", optional, appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, old_env);
|
||||
- SET_NEW_ENV(new_ld_library_path, appdir_s*10 + strlen(old_env), "LD_LIBRARY_PATH=%s/usr/lib/:%s/usr/lib/i386-linux-gnu/:%s/usr/lib/x86_64-linux-gnu/:%s/usr/lib32/:%s/usr/lib64/:%s/lib/:%s/lib/i386-linux-gnu/:%s/lib/x86_64-linux-gnu/:%s/lib32/:%s/lib64/:%s", appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, old_env);
|
||||
+ SET_NEW_ENV(new_ld_library_path, appdir_s*10 + strlen(old_env), "LD_LIBRARY_PATH=%s%s/usr/lib/:%s/usr/lib/i386-linux-gnu/:%s/usr/lib/x86_64-linux-gnu/:%s/usr/lib32/:%s/usr/lib64/:%s/lib/:%s/lib/i386-linux-gnu/:%s/lib/x86_64-linux-gnu/:%s/lib32/:%s/lib64/:%s", optional, appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, appdir, old_env);
|
||||
|
||||
old_env = getenv("PYTHONPATH") ?: "";
|
||||
snprintf(new_env[3], length, "PYTHONPATH=%s/usr/share/pyshared/:%s", appdir, old_env);
|
||||
SET_NEW_ENV(new_pythonpath, appdir_s + strlen(old_env), "PYTHONPATH=%s/usr/share/pyshared/:%s", appdir, old_env);
|
||||
@@ -201,6 +205,9 @@
|
||||
if (ret == -1)
|
||||
die("Error executing '%s': %s\n", exe, strerror(error));
|
||||
|
||||
+ free(optional);
|
||||
+ if (optional_ld_preload)
|
||||
+ free(optional_ld_preload);
|
||||
free(line);
|
||||
free(desktop_file);
|
||||
free(usr_in_appdir);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue