summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Moody <dmoody256@gmail.com>2017-12-29 07:39:59 (GMT)
committerDaniel Moody <dmoody256@gmail.com>2018-02-11 16:41:03 (GMT)
commit900b35ab28b344b6b5597f3fdefd34de5db10d69 (patch)
treeb1bac29044554ed0aa8d1c4ee3b27ae3ca355f2b
parent8c41b52ca3d502bfd0444bf2640e345fb7b2ae9d (diff)
downloadSCons-900b35ab28b344b6b5597f3fdefd34de5db10d69.zip
SCons-900b35ab28b344b6b5597f3fdefd34de5db10d69.tar.gz
SCons-900b35ab28b344b6b5597f3fdefd34de5db10d69.tar.bz2
fix for issue 3042, Jar method was not respecting variant dirs when using os.path to detect files or dirs
-rw-r--r--src/engine/SCons/Tool/jar.py22
-rw-r--r--test/Java/JAR.py7
2 files changed, 19 insertions, 10 deletions
diff --git a/src/engine/SCons/Tool/jar.py b/src/engine/SCons/Tool/jar.py
index b31ccb9..cb7c994 100644
--- a/src/engine/SCons/Tool/jar.py
+++ b/src/engine/SCons/Tool/jar.py
@@ -189,13 +189,21 @@ def Jar(env, target = None, source = [], *args, **kw):
# found a dir so get the class files out of it
target_nodes.extend(dir_to_class(s))
else:
- if os.path.isfile(s):
- # found a file that exists on the FS, make sure its a class file
- target_nodes.extend(file_to_class(s))
- elif os.path.isdir(s):
- # found a dir so get the class files out of it
- target_nodes.extend(dir_to_class(s))
- elif s[-len(java_suffix):] == java_suffix or s[-len(java_class_suffix):] == java_class_suffix:
+ try:
+ # source is string try to convert it to file
+ target_nodes.extend(file_to_class(env.fs.File(s)))
+ continue
+ except:
+ pass
+
+ try:
+ # source is string try to covnert it to dir
+ target_nodes.extend(dir_to_class(env.fs.Dir(s)))
+ continue
+ except:
+ pass
+
+ if s[-len(java_suffix):] == java_suffix or s[-len(java_class_suffix):] == java_class_suffix:
# found a file that may not exists and is only a string
# so add it after converting it to a class file
target_nodes.extend(file_to_class(s))
diff --git a/test/Java/JAR.py b/test/Java/JAR.py
index da2e72e..d62696c 100644
--- a/test/Java/JAR.py
+++ b/test/Java/JAR.py
@@ -337,6 +337,7 @@ test.must_exist(['testdir2', 'barTest', 'com', 'javasource', 'JavaFile3.class'])
# make some directories to test in
test.subdir('listOfLists',
+ ['manifest_dir'],
['listOfLists', 'src'],
['listOfLists', 'src', 'com'],
['listOfLists', 'src', 'com', 'javasource'],
@@ -346,14 +347,14 @@ test.subdir('listOfLists',
test.write(['listOfLists', 'SConstruct'], """
foo = Environment()
foo.VariantDir('build', 'src', duplicate=0)
+foo.VariantDir('test', '../manifest_dir', duplicate=0)
sourceFiles = ["src/com/javasource/JavaFile1.java", "src/com/javasource/JavaFile2.java", "src/com/javasource/JavaFile3.java",]
list_of_class_files = foo.Java('build', source=sourceFiles)
resources = ['build/com/resource/resource1.txt', 'build/com/resource/resource2.txt']
for resource in resources:
foo.Command(resource, list_of_class_files, Copy(resource, resource.replace('build','src')))
-foo.Command('build/MANIFEST.mf', list_of_class_files, Copy('build/MANIFEST.mf', 'MANIFEST.mf'))
contents = [list_of_class_files, resources]
-foo.Jar(target = 'lists', source = contents + ['build/MANIFEST.mf'], JARCHDIR='build')
+foo.Jar(target = 'lists', source = contents + ['test/MANIFEST.mf'], JARCHDIR='build')
foo.Command("listsTest", [], Mkdir("listsTest") )
foo.Command('listsTest/src/com/javasource/JavaFile3.java', 'lists.jar', foo['JAR'] + ' xvf ../lists.jar', chdir='listsTest')
""")
@@ -394,7 +395,7 @@ public class JavaFile3
}
""")
-test.write(['listOfLists', 'MANIFEST.mf'],
+test.write(['manifest_dir','MANIFEST.mf'],
"""Manifest-Version: 1.0
MyManifestTest: Test
""")