Do not export LD_LIBRARY_PATH if bintray is used

This commit is contained in:
Fredrik Fornwall
2019-04-03 23:20:08 +02:00
parent 70a786613d
commit bda80547ad

View File

@@ -93,32 +93,49 @@ public final class BackgroundJob {
}; };
} }
public static String[] buildEnvironment(boolean failSafe, String cwd) { static String[] buildEnvironment(boolean failSafe, String cwd) {
new File(TermuxService.HOME_PATH).mkdirs(); new File(TermuxService.HOME_PATH).mkdirs();
if (cwd == null) cwd = TermuxService.HOME_PATH; if (cwd == null) cwd = TermuxService.HOME_PATH;
final String termEnv = "TERM=xterm-256color"; List<String> environment = new ArrayList<>();
final String homeEnv = "HOME=" + TermuxService.HOME_PATH;
final String prefixEnv = "PREFIX=" + TermuxService.PREFIX_PATH; environment.add("TERM=xterm-256color");
final String androidRootEnv = "ANDROID_ROOT=" + System.getenv("ANDROID_ROOT"); environment.add("HOME=" + TermuxService.HOME_PATH);
final String androidDataEnv = "ANDROID_DATA=" + System.getenv("ANDROID_DATA"); environment.add("PREFIX=" + TermuxService.PREFIX_PATH);
environment.add("ANDROID_ROOT=" + System.getenv("ANDROID_ROOT"));
environment.add("ANDROID_DATA=" + System.getenv("ANDROID_DATA"));
// EXTERNAL_STORAGE is needed for /system/bin/am to work on at least // EXTERNAL_STORAGE is needed for /system/bin/am to work on at least
// Samsung S7 - see https://plus.google.com/110070148244138185604/posts/gp8Lk3aCGp3. // Samsung S7 - see https://plus.google.com/110070148244138185604/posts/gp8Lk3aCGp3.
final String externalStorageEnv = "EXTERNAL_STORAGE=" + System.getenv("EXTERNAL_STORAGE"); environment.add("EXTERNAL_STORAGE=" + System.getenv("EXTERNAL_STORAGE"));
if (failSafe) { if (failSafe) {
// Keep the default path so that system binaries can be used in the failsafe session. // Keep the default path so that system binaries can be used in the failsafe session.
final String pathEnv = "PATH=" + System.getenv("PATH"); environment.add("PATH= " + System.getenv("PATH"));
return new String[]{termEnv, homeEnv, prefixEnv, androidRootEnv, androidDataEnv, pathEnv, externalStorageEnv};
} else { } else {
final String ldEnv = "LD_LIBRARY_PATH=" + TermuxService.PREFIX_PATH + "/lib"; if (shouldAddLdLibraryPath()) {
final String langEnv = "LANG=en_US.UTF-8"; environment.add("LD_LIBRARY_PATH=" + TermuxService.PREFIX_PATH + "/lib");
final String pathEnv = "PATH=" + TermuxService.PREFIX_PATH + "/bin:" + TermuxService.PREFIX_PATH + "/bin/applets"; }
final String pwdEnv = "PWD=" + cwd; environment.add("LANG=en_US.UTF-8");
final String tmpdirEnv = "TMPDIR=" + TermuxService.PREFIX_PATH + "/tmp"; environment.add("PATH=" + TermuxService.PREFIX_PATH + "/bin:" + TermuxService.PREFIX_PATH + "/bin/applets");
environment.add("PWD=" + cwd);
return new String[]{termEnv, homeEnv, prefixEnv, ldEnv, langEnv, pathEnv, pwdEnv, androidRootEnv, androidDataEnv, externalStorageEnv, tmpdirEnv}; environment.add("TMPDIR=" + TermuxService.PREFIX_PATH + "/tmp");
} }
return environment.toArray(new String[0]);
}
private static boolean shouldAddLdLibraryPath() {
try (BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(TermuxService.PREFIX_PATH + "/etc/apt/sources.list")))) {
String line;
while ((line = in.readLine()) != null) {
if (!line.startsWith("#") && line.contains("https://dl.bintray.com/termux/termux-packages-24")) {
return false;
}
}
} catch (IOException e) {
Log.e(LOG_TAG, "Error trying to read sources.list", e);
}
return true;
} }
public static int getPid(Process p) { public static int getPid(Process p) {