chiark / gitweb /
Set up the ndk in $PATH before each build
authorDaniel Martí <mvdan@mvdan.cc>
Tue, 6 Jan 2015 18:41:55 +0000 (19:41 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Tue, 6 Jan 2015 18:41:55 +0000 (19:41 +0100)
fdroidserver/build.py
fdroidserver/common.py

index f83ab4302d6579a838b7e7be7716725a65d49e50..e5efc46f7d97929a2d8ab4fb3f2b27851e9388f7 100644 (file)
@@ -468,6 +468,10 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
     for n in ['ANDROID_NDK', 'NDK']:
         common.env[n] = thisbuild['ndk_path']
 
+    common.reset_env_path()
+    # Set up the current NDK to the PATH
+    common.add_to_env_path(thisbuild['ndk_path'])
+
     # Prepare the source code...
     root_dir, srclibpaths = common.prepare_source(vcs, app, thisbuild,
                                                   build_dir, srclib_dir,
index 0a92131c6430c0f3180d4a67e3e6f9cbf68ef5ab..61b81ed2e916275dcf7eba5a79673dee169c888d 100644 (file)
@@ -37,6 +37,7 @@ import metadata
 config = None
 options = None
 env = None
+orig_path = None
 
 
 default_config = {
@@ -118,7 +119,7 @@ def read_config(opts, config_file='config.py'):
     The config is read from config_file, which is in the current directory when
     any of the repo management commands are used.
     """
-    global config, options, env
+    global config, options, env, orig_path
 
     if config is not None:
         return config
@@ -153,6 +154,7 @@ def read_config(opts, config_file='config.py'):
     # There is no standard, so just set up the most common environment
     # variables
     env = os.environ
+    orig_path = env['PATH']
     for n in ['ANDROID_HOME', 'ANDROID_SDK']:
         env[n] = config['sdk_path']
 
@@ -1816,6 +1818,20 @@ def remove_signing_keys(build_dir):
                     logging.info("Cleaned %s of keysigning configs at %s" % (propfile, path))
 
 
+def reset_env_path():
+    global env, orig_path
+    env['PATH'] = orig_path
+
+
+def add_to_env_path(path):
+    global env
+    paths = env['PATH'].split(os.pathsep)
+    if path in paths:
+        return
+    paths += path
+    env['PATH'] = os.pathsep.join(paths)
+
+
 def replace_config_vars(cmd):
     global env
     cmd = cmd.replace('$$SDK$$', config['sdk_path'])