diff options
-rw-r--r-- | doc/scons.mod | 1 | ||||
-rw-r--r-- | doc/user/sconf.xml | 20 | ||||
-rw-r--r-- | src/CHANGES.txt | 17 | ||||
-rw-r--r-- | src/engine/SCons/Conftest.py | 16 | ||||
-rw-r--r-- | src/engine/SCons/SConf.py | 9 | ||||
-rw-r--r-- | src/engine/SCons/SConfTests.py | 18 |
6 files changed, 75 insertions, 6 deletions
diff --git a/doc/scons.mod b/doc/scons.mod index 72dc7ff..8d64054 100644 --- a/doc/scons.mod +++ b/doc/scons.mod @@ -276,6 +276,7 @@ <!ENTITY CheckHeader "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckHeader</function>"> <!ENTITY CheckLib "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckLib</function>"> <!ENTITY CheckLibWithHeader "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckLibWithHeader</function>"> +<!ENTITY CheckProg "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckProg</function>"> <!ENTITY CheckType "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckType</function>"> <!ENTITY CheckTypeSize "<function xmlns='http://www.scons.org/dbxsd/v1.0'>CheckTypeSize</function>"> <!ENTITY TryAction "<function xmlns='http://www.scons.org/dbxsd/v1.0'>TryAction</function>"> diff --git a/doc/user/sconf.xml b/doc/user/sconf.xml index 569ab1a..fe933f1 100644 --- a/doc/user/sconf.xml +++ b/doc/user/sconf.xml @@ -304,6 +304,26 @@ scons: `.' is up to date. </section> <section> + <title>Checking for the Presence of a program</title> + + <para> + + Check for the presence of a program + by using the &CheckProg; method: + + </para> + + <sconstruct> +env = Environment() +conf = Configure(env) +if not conf.CheckProg('foobar'): + print 'Unable to find the program foobar on the system' + Exit(1) +env = conf.Finish() + </sconstruct> + + </section> + <section> <title>Adding Your Own Custom Checks</title> <para> diff --git a/src/CHANGES.txt b/src/CHANGES.txt index bafd0d1..47a3f97 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -6,13 +6,21 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER - From Florian Miedniak: - - Fixed tigris issue #3011: Glob() excludes didn't work when used with VariantDir(duplicate=0) + From Dirk Baechle: + - Fixed license of SVG titlepage files in the context of Debian + packaging, such that they allow for commercial use too (#2985). From William Blevins: - InstallVersionedLib now available in the DefaultEnvironment context. - Improves orthogonality of use cases between different Install functions. - + + From Carnë Draug: + - Added new configure check, CheckProg, to check for + existence of a program. + + From Florian Miedniak: + - Fixed tigris issue #3011: Glob() excludes didn't work when used with VariantDir(duplicate=0) + From William Roberts: - Fix bug 2831 and allow Help() text to be appended to AddOption() help. @@ -43,9 +51,6 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER - Library versioning is currently implemented for the following linker tools: 'cyglink', 'gnulink', 'sunlink'. - From Dirk Baechle: - - Fixed license of SVG titlepage files in the context of Debian - packaging, such that they allow for commercial use too (#2985). RELEASE 2.4.0 - Mon, 21 Sep 2015 08:56:00 -0700 diff --git a/src/engine/SCons/Conftest.py b/src/engine/SCons/Conftest.py index e9702ff..87a3022 100644 --- a/src/engine/SCons/Conftest.py +++ b/src/engine/SCons/Conftest.py @@ -684,6 +684,22 @@ return 0; return ret +def CheckProg(context, prog_name): + """ + Configure check for a specific program. + + Check whether program prog_name exists in path. If it is found, + returns the path for it, otherwise returns None. + """ + context.Display("Checking whether %s program exists..." % prog_name) + path = context.env.WhereIs(prog_name) + if path: + context.Display(path + "\n") + else: + context.Display("no\n") + return path + + # # END OF PUBLIC FUNCTIONS # diff --git a/src/engine/SCons/SConf.py b/src/engine/SCons/SConf.py index 8bce8ce..987b8ea 100644 --- a/src/engine/SCons/SConf.py +++ b/src/engine/SCons/SConf.py @@ -444,6 +444,7 @@ class SConfBase(object): 'CheckCXXHeader' : CheckCXXHeader, 'CheckLib' : CheckLib, 'CheckLibWithHeader' : CheckLibWithHeader, + 'CheckProg' : CheckProg, } self.AddTests(default_tests) self.AddTests(custom_tests) @@ -1047,6 +1048,14 @@ def CheckLibWithHeader(context, libs, header, language, context.did_show_result = 1 return not res +def CheckProg(context, prog_name): + """Simple check if a program exists in the path. Returns the path + for the application, or None if not found. + """ + res = SCons.Conftest.CheckProg(context, prog_name) + context.did_show_result = 1 + return res + # Local Variables: # tab-width:4 # indent-tabs-mode:nil diff --git a/src/engine/SCons/SConfTests.py b/src/engine/SCons/SConfTests.py index 233ee78..57a9d04 100644 --- a/src/engine/SCons/SConfTests.py +++ b/src/engine/SCons/SConfTests.py @@ -611,6 +611,24 @@ int main() { finally: sconf.Finish() + def test_CheckProg(self): + """Test SConf.CheckProg() + """ + self._resetSConfState() + sconf = self.SConf.SConf(self.scons_env, + conf_dir=self.test.workpath('config.tests'), + log_file=self.test.workpath('config.log')) + + try: + r = sconf.CheckProg('sh') + assert r, "/bin/sh" + r = sconf.CheckProg('hopefully-not-a-program') + assert r is None + + finally: + sconf.Finish() + + def test_Define(self): """Test SConf.Define() """ |