Import less of environment for Android/gradle 81/26181/3
authorMats Wichmann <mats@linux.com>
Thu, 5 Jul 2018 13:34:38 +0000 (07:34 -0600)
committerRick Bell <richard.s.bell@intel.com>
Mon, 16 Jul 2018 17:18:34 +0000 (17:18 +0000)
[In development pending answers to some of the below]

As noted in IOT-2559, the Gradle builder fails unless some of the
environment is passed. Since we didn't know what it needed, the whole env
was passed. This change trims that down to just two environment variables,
JAVA_HOME and ANDROID_HOME, which seems to be sufficient (but see
question following).

This change was only for the top-level java/SConscript, and works for
files which Import('jdk_env'). Note the script under service/ do not do
that import, and set up their own environment using these steps:

os.environ['ANDROID_HOME'] = env.get('ANDROID_HOME')
os.environ['ANDROID_NDK_HOME'] = env.get('ANDROID_NDK')
...
jdk_env = Environment(ENV=os.environ)

So this leaves two questions: should ANDROID_NDK_HOME also be set in the
main java SConscript (android case)?  should these scripts in service/
be modified in a similar way to to also set less env?
That list of scripts is:

service/easy-setup/mediator/richsdk/android/SConscript
service/easy-setup/sampleapp/mediator/android/SConscript
service/notification/android/SConscript
service/notification/examples/android/NotiConsumerExample/SConscript
service/notification/examples/android/NotiProviderExample/SConscript
service/resource-container/android/SConscript
service/resource-encapsulation/android/SConscript

Another question not directly part of this patch but noticed while looking
at it: in java/SConscript the Gradle builder is defined, then redefined
using a different syntax.  The first is for building library/API code,
the second for examples.  Since other scripts import the environment
which defines this builder, that doesn't seem like a really great idea
although it works as things are currently structures. Wouldn't it
be better to define two distinct builders?

Bug: https://jira.iotivity.org/browse/IOT-2559
Change-Id: Ib7bafb1ef2b24491718020e497ddeabcc87b44b2
Signed-off-by: Mats Wichmann <mats@linux.com>
java/SConscript

index c46cb84..f3e87e7 100644 (file)
@@ -233,12 +233,12 @@ if target_os == 'android':
 
 jdk_env = None
 if target_os in ['android']:
-    # IOT-2559 Why does Gradle build require importing the os.environ
-    jdk_env = Environment(ENV=os.environ)
+    # Gradle needs some settings in the environment:
+    jdk_env = env.Clone(ENV={'JAVA_HOME':env['JAVA_HOME'],
+                             'ANDROID_HOME':env['ANDROID_HOME']})
 else:
     jdk_env = env.Clone()
 
-
 cmdBuildApi = []
 cmdBuildExamples = []
 if target_os in ['android']: