summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWilliam Deegan <bill@baddogconsulting.com>2019-10-08 01:44:22 (GMT)
committerGitHub <noreply@github.com>2019-10-08 01:44:22 (GMT)
commit43cebd68db3696a4a7fdd2d38a81842d18d6d2cd (patch)
treea34d8ba5c57dc97eb9e4e9b11a8507fcf20ff329 /src
parent581a6912938f3143b2c31dcb78ecc9928da124df (diff)
parentb161cf3f51e376a82208081e3f83dd96e2a4d6bf (diff)
downloadSCons-43cebd68db3696a4a7fdd2d38a81842d18d6d2cd.zip
SCons-43cebd68db3696a4a7fdd2d38a81842d18d6d2cd.tar.gz
SCons-43cebd68db3696a4a7fdd2d38a81842d18d6d2cd.tar.bz2
Merge branch 'master' into CmdStringHolder
Diffstat (limited to 'src')
-rwxr-xr-xsrc/CHANGES.txt8
-rw-r--r--src/engine/SCons/Conftest.py4
-rw-r--r--src/engine/SCons/Environment.xml149
-rw-r--r--src/engine/SCons/Script/SConsOptions.py20
-rw-r--r--src/engine/SCons/Tool/__init__.xml30
-rw-r--r--src/engine/SCons/Tool/install.xml16
-rw-r--r--src/engine/SCons/Tool/suncxx.py4
7 files changed, 164 insertions, 67 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt
index e3d057e..0a30bfa 100755
--- a/src/CHANGES.txt
+++ b/src/CHANGES.txt
@@ -16,7 +16,15 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER
- Replace instances of string find method with "in" checks where
the index from find() was not used.
- CmdStringHolder fix from issue #3428
+ - Turn previously deprecated debug options into failures:
+ --debug=tree, --debug=dtree, --debug=stree, --debug=nomemoizer.
+ From Jacek Kuczera:
+ - Fix CheckFunc detection code for Visual 2019. Some functions
+ (e.g. memmove) were incorrectly recognized as not available.
+
+ From Jakub Kulik
+ - Fix subprocess result bytes not being decoded in SunOS/Solaris related tools.
RELEASE 3.1.1 - Mon, 07 Aug 2019 20:09:12 -0500
diff --git a/src/engine/SCons/Conftest.py b/src/engine/SCons/Conftest.py
index 1163aa3..c24adf8 100644
--- a/src/engine/SCons/Conftest.py
+++ b/src/engine/SCons/Conftest.py
@@ -290,6 +290,10 @@ char %s();""" % function_name
#include <assert.h>
%(hdr)s
+#if _MSC_VER && !__INTEL_COMPILER
+ #pragma function(%(name)s)
+#endif
+
int main(void) {
#if defined (__stub_%(name)s) || defined (__stub___%(name)s)
fail fail fail
diff --git a/src/engine/SCons/Environment.xml b/src/engine/SCons/Environment.xml
index 5137bad..a635108 100644
--- a/src/engine/SCons/Environment.xml
+++ b/src/engine/SCons/Environment.xml
@@ -148,9 +148,9 @@ appending to this list,
although the more flexible approach
is to associate scanners
with a specific Builder.
-See the sections "Builder Objects"
-and "Scanner Objects,"
-below, for more information.
+See the manpage sections "Builder Objects"
+and "Scanner Objects"
+for more information.
</para>
</summary>
</cvar>
@@ -160,7 +160,8 @@ below, for more information.
<para>
A reserved variable name
that may not be set or used in a construction environment.
-(See "Variable Substitution," below.)
+(See the manpage section "Variable Substitution"
+for more information).
</para>
</summary>
</cvar>
@@ -170,7 +171,8 @@ that may not be set or used in a construction environment.
<para>
A reserved variable name
that may not be set or used in a construction environment.
-(See "Variable Substitution," below.)
+(See the manpage section "Variable Substitution"
+for more information).
</para>
</summary>
</cvar>
@@ -180,7 +182,8 @@ that may not be set or used in a construction environment.
<para>
A reserved variable name
that may not be set or used in a construction environment.
-(See "Variable Substitution," below.)
+(See the manpage section "Variable Substitution"
+for more information).
</para>
</summary>
</cvar>
@@ -190,7 +193,8 @@ that may not be set or used in a construction environment.
<para>
A reserved variable name
that may not be set or used in a construction environment.
-(See "Variable Substitution," below.)
+(See the manpage section "Variable Substitution"
+for more information).
</para>
</summary>
</cvar>
@@ -200,7 +204,8 @@ that may not be set or used in a construction environment.
<para>
A reserved variable name
that may not be set or used in a construction environment.
-(See "Variable Substitution," below.)
+(See the manpage section "Variable Substitution"
+for more information).
</para>
</summary>
</cvar>
@@ -210,7 +215,8 @@ that may not be set or used in a construction environment.
<para>
A reserved variable name
that may not be set or used in a construction environment.
-(See "Variable Substitution," below.)
+(See the manpage section "Variable Substitution"
+for more information).
</para>
</summary>
</cvar>
@@ -220,7 +226,8 @@ that may not be set or used in a construction environment.
<para>
A reserved variable name
that may not be set or used in a construction environment.
-(See "Variable Substitution," below.)
+(See the manpage section "Variable Substitution"
+for more information).
</para>
</summary>
</cvar>
@@ -230,7 +237,8 @@ that may not be set or used in a construction environment.
<para>
A reserved variable name
that may not be set or used in a construction environment.
-(See "Variable Substitution," below.)
+(See the manpage section "Variable Substitution"
+for more information).
</para>
</summary>
</cvar>
@@ -255,8 +263,8 @@ that are part of this construction environment.
Creates an Action object for
the specified
<varname>action</varname>.
-See the section "Action Objects,"
-below, for a complete explanation of the arguments and behavior.
+See the manpage section "Action Objects"
+for a complete explanation of the arguments and behavior.
</para>
<para>
@@ -359,7 +367,8 @@ has been built.
The specified action(s) may be
an Action object, or anything that
can be converted into an Action object
-(see below).
+See the manpage section "Action Objects"
+for a complete explanation.
</para>
<para>
@@ -386,7 +395,8 @@ is built.
The specified action(s) may be
an Action object, or anything that
can be converted into an Action object
-(see below).
+See the manpage section "Action Objects"
+for a complete explanation.
</para>
<para>
@@ -512,7 +522,7 @@ Otherwise, the construction variable
and the value of the keyword argument
are both coerced to lists,
and the lists are added together.
-(See also the Prepend method, below.)
+(See also the &Prepend; method).
</para>
<para>
@@ -634,8 +644,8 @@ or
Creates a Builder object for
the specified
<varname>action</varname>.
-See the section "Builder Objects,"
-below, for a complete explanation of the arguments and behavior.
+See the manpage section "Builder Objects"
+for a complete explanation of the arguments and behavior.
</para>
<para>
@@ -898,11 +908,15 @@ wx_env = env.Clone(parse_flags='!wx-config --cflags --cxxflags')
<builder name="Command">
<summary>
<para>
-The &b-Command; "Builder" is actually implemented
-as a function that looks like a Builder,
-but actually takes an additional argument of the action
-from which the Builder should be made.
-See the &f-link-Command; function description
+The &b-Command; "Builder" is actually
+a function that looks like a Builder,
+but takes a required third argument, which is the
+action to take to construct the target
+from the source, used for "one-off" builds
+where a full builder is not needed.
+Thus it does not follow the builder
+calling rules described at the start of this section.
+See instead the &f-link-Command; function description
for the calling syntax and details.
</para>
</summary>
@@ -947,7 +961,7 @@ same-named existing construction variables.
An action can be an external command,
specified as a string,
or a callable Python object;
-see "Action Objects," below,
+see the manpage section "Action Objects"
for more complete information.
Also note that a string specifying an external command
may be preceded by an
@@ -971,7 +985,7 @@ env.Command('foo.out', 'foo.in',
env.Command('bar.out', 'bar.in',
["rm -f $TARGET",
"$BAR_BUILD &lt; $SOURCES &gt; $TARGET"],
- ENV = {'PATH' : '/usr/local/bin/'})
+ ENV={'PATH': '/usr/local/bin/'})
def rename(env, target, source):
import os
@@ -979,7 +993,7 @@ def rename(env, target, source):
env.Command('baz.out', 'baz.in',
["$BAZ_BUILD &lt; $SOURCES &gt; .tmp",
- rename ])
+ rename])
</example_commands>
<para>
@@ -988,14 +1002,14 @@ Note that the
function will usually assume, by default,
that the specified targets and/or sources are Files,
if no other part of the configuration
-identifies what type of entry it is.
+identifies what type of entries they are.
If necessary, you can explicitly specify
that targets or source nodes should
-be treated as directoriese
+be treated as directories
by using the
&f-link-Dir;
or
-<function>env.Dir</function>()
+<function>env.Dir</function>
functions.
</para>
@@ -1011,9 +1025,9 @@ env.Command(env.Dir('$DISTDIR')), None, make_distdir)
</example_commands>
<para>
-(Also note that SCons will usually
+Also note that SCons will usually
automatically create any directory necessary to hold a target file,
-so you normally don't need to create directories by hand.)
+so you normally don't need to create directories by hand.
</para>
</summary>
</scons_function>
@@ -1029,8 +1043,8 @@ so you normally don't need to create directories by hand.)
<para>
Creates a Configure object for integrated
functionality similar to GNU autoconf.
-See the section "Configure Contexts,"
-below, for a complete explanation of the arguments and behavior.
+See the manpage section "Configure Contexts"
+for a complete explanation of the arguments and behavior.
</para>
</summary>
</scons_function>
@@ -1375,7 +1389,8 @@ would supply a string as a directory name
to a Builder method or function.
Directory Nodes have attributes and methods
that are useful in many situations;
-see "File and Directory Nodes," below.
+see manpage section "File and Directory Nodes"
+for more information.
</para>
</summary>
</scons_function>
@@ -1458,8 +1473,8 @@ Executes an Action object.
The specified
<varname>action</varname>
may be an Action object
-(see the section "Action Objects,"
-below, for a complete explanation of the arguments and behavior),
+(see manpage section "Action Objects"
+for a complete explanation of the arguments and behavior),
or it may be a command-line string,
list of commands,
or executable Python function,
@@ -1532,7 +1547,8 @@ would supply a string as a file name
to a Builder method or function.
File Nodes have attributes and methods
that are useful in many situations;
-see "File and Directory Nodes," below.
+see manpage section "File and Directory Nodes"
+for more information.
</para>
</summary>
</scons_function>
@@ -2190,7 +2206,7 @@ and the construction variables they affect
are as specified for the
&f-link-env-ParseFlags;
method (which this method calls).
-See that method's description, below,
+See that method's description
for a table of options and construction variables.
</para>
</summary>
@@ -2658,8 +2674,8 @@ env.Requires('foo', 'file-that-must-be-built-before-foo')
Creates a Scanner object for
the specified
<varname>function</varname>.
-See the section "Scanner Objects,"
-below, for a complete explanation of the arguments and behavior.
+See manpage section "Scanner Objects"
+for a complete explanation of the arguments and behavior.
</para>
</summary>
</scons_function>
@@ -3650,30 +3666,51 @@ SConscript(dirs='doc', variant_dir='build/doc', duplicate=0)
Searches for the specified executable
<varname>program</varname>,
returning the full path name to the program
-if it is found,
-and returning None if not.
-Searches the specified
-<varname>path</varname>,
-the value of the calling environment's PATH
-(<literal>env['ENV']['PATH']</literal>),
-or the user's current external PATH
-(<literal>os.environ['PATH']</literal>)
-by default.
+if it is found, else <literal>None</literal>.
+Searches the value of the
+<varname>path</varname> keyword argument,
+or if <literal>None</literal> (the default)
+the value of the calling environment's <envar>PATH</envar>
+(<literal>env['ENV']['PATH']</literal>).
+If <varname>path</varname> is <literal>None</literal> and
+the <literal>env['ENV']['PATH']</literal> key does not exist,
+the user's current external <envar>PATH</envar>
+(<literal>os.environ['PATH']</literal>) is used as fallback.
+</para>
+<para>
On Windows systems, searches for executable
-programs with any of the file extensions
-listed in the specified
-<varname>pathext</varname>,
-the calling environment's PATHEXT
-(<literal>env['ENV']['PATHEXT']</literal>)
-or the user's current PATHEXT
+programs with any of the file extensions listed in the
+<varname>pathext</varname> keyword argument,
+or if <literal>None</literal> (the default)
+the calling environment's <envar>PATHEXT</envar>
+(<literal>env['ENV']['PATHEXT']</literal>).
+The user's current external <envar>PATHEXT</envar>
(<literal>os.environ['PATHEXT']</literal>)
-by default.
+is used as a fallback if <varname>pathext</varname> is
+<literal>None</literal>
+and the key <literal>env['ENV']['PATHEXT']</literal>
+does not exist.
+</para>
+<para>
Will not select any
path name or names
in the specified
<varname>reject</varname>
list, if any.
</para>
+<note>
+<para>
+If you would prefer to search
+the user's current external <envar>PATH</envar>
+(<literal>os.environ['PATH']</literal>)
+by default,
+consider using the function <literal>SCons.Util.WhereIs</literal> instead.
+Note that <literal>SCons.Util.WhereIs</literal>
+does not expand environment variables automatically
+(no implicit <literal>env.subst</literal> for its arguments).
+</para>
+</note>
+
</summary>
</scons_function>
diff --git a/src/engine/SCons/Script/SConsOptions.py b/src/engine/SCons/Script/SConsOptions.py
index c45cb01..add1150 100644
--- a/src/engine/SCons/Script/SConsOptions.py
+++ b/src/engine/SCons/Script/SConsOptions.py
@@ -584,9 +584,15 @@ def Parser(version):
help="Print build actions for files from CacheDir.")
def opt_invalid(group, value, options):
+ """report an invalid option from a group"""
errmsg = "`%s' is not a valid %s option type, try:\n" % (value, group)
return errmsg + " %s" % ", ".join(options)
+ def opt_invalid_rm(group, value, msg):
+ """report an invalid option from a group: recognized but removed"""
+ errmsg = "`%s' is not a valid %s option type " % (value, group)
+ return errmsg + msg
+
config_options = ["auto", "force" ,"cache"]
opt_config_help = "Controls Configure subsystem: %s." \
@@ -604,9 +610,11 @@ def Parser(version):
help="Search up directory tree for SConstruct, "
"build all Default() targets.")
- deprecated_debug_options = {
+ deprecated_debug_options = {}
+
+ removed_debug_options = {
"dtree" : '; please use --tree=derived instead',
- "nomemoizer" : ' and has no effect',
+ "nomemoizer" : '; there is no replacement',
"stree" : '; please use --tree=all,status instead',
"tree" : '; please use --tree=all instead',
}
@@ -618,11 +626,12 @@ def Parser(version):
def opt_debug(option, opt, value__, parser,
debug_options=debug_options,
- deprecated_debug_options=deprecated_debug_options):
+ deprecated_debug_options=deprecated_debug_options,
+ removed_debug_options=removed_debug_options):
for value in value__.split(','):
if value in debug_options:
parser.values.debug.append(value)
- elif value in list(deprecated_debug_options.keys()):
+ elif value in deprecated_debug_options:
parser.values.debug.append(value)
try:
parser.values.delayed_warnings
@@ -632,6 +641,9 @@ def Parser(version):
w = "The --debug=%s option is deprecated%s." % (value, msg)
t = (SCons.Warnings.DeprecatedDebugOptionsWarning, w)
parser.values.delayed_warnings.append(t)
+ elif value in removed_debug_options:
+ msg = removed_debug_options[value]
+ raise OptionValueError(opt_invalid_rm('debug', value, msg))
else:
raise OptionValueError(opt_invalid('debug', value, debug_options))
diff --git a/src/engine/SCons/Tool/__init__.xml b/src/engine/SCons/Tool/__init__.xml
index 69cc597..b6e5a43 100644
--- a/src/engine/SCons/Tool/__init__.xml
+++ b/src/engine/SCons/Tool/__init__.xml
@@ -468,7 +468,7 @@ as C++ files.
Used to override &cv-link-SHLIBVERSION;/&cv-link-LDMODULEVERSION; when
generating versioned import library for a shared library/loadable module. If
undefined, the &cv-link-SHLIBVERSION;/&cv-link-LDMODULEVERSION; is used to
-determine the version of versioned import library.
+determine the version of versioned import library.
</para>
</summary>
</cvar>
@@ -476,7 +476,10 @@ determine the version of versioned import library.
<cvar name="LIBEMITTER">
<summary>
<para>
-TODO
+Contains the emitter specification for the
+&b-link-StaticLibrary; builder.
+The manpage section "Builder Objects" contains
+general information on specifying emitters.
</para>
</summary>
</cvar>
@@ -494,10 +497,24 @@ format as &cv-link-SHLIBVERSION;.
</summary>
</cvar>
+<cvar name="LDMODULEEMITTER">
+<summary>
+<para>
+Contains the emitter specification for the
+&b-link-LoadableModule; builder.
+The manpage section "Builder Objects" contains
+general information on specifying emitters.
+</para>
+</summary>
+</cvar>
+
<cvar name="SHLIBEMITTER">
<summary>
<para>
-TODO
+Contains the emitter specification for the
+&b-link-SharedLibrary; builder.
+The manpage section "Builder Objects" contains
+general information on specifying emitters.
</para>
</summary>
</cvar>
@@ -505,7 +522,10 @@ TODO
<cvar name="PROGEMITTER">
<summary>
<para>
-TODO
+Contains the emitter specification for the
+&b-link-Program; builder.
+The manpage section "Builder Objects" contains
+general information on specifying emitters.
</para>
</summary>
</cvar>
@@ -514,7 +534,7 @@ TODO
<summary>
<para>
When this construction variable is defined, a versioned shared library
-is created by &b-link-SharedLibrary; builder. This activates the
+is created by the &b-link-SharedLibrary; builder. This activates the
&cv-link-_SHLIBVERSIONFLAGS; and thus modifies the &cv-link-SHLINKCOM; as
required, adds the version number to the library name, and creates the symlinks
that are needed. &cv-link-SHLIBVERSION; versions should exist as alpha-numeric,
diff --git a/src/engine/SCons/Tool/install.xml b/src/engine/SCons/Tool/install.xml
index 6ae3e30..74169b3 100644
--- a/src/engine/SCons/Tool/install.xml
+++ b/src/engine/SCons/Tool/install.xml
@@ -52,6 +52,22 @@ a builder.
<example_commands>
env.Install('/usr/local/bin', source = ['foo', 'bar'])
</example_commands>
+
+<para>
+If the <option>--install-sandbox</option> command line
+option is given, the target directory will be prefixed
+by the directory path specified.
+This is useful to test installs without installing to
+a "live" location in the system.
+</para>
+
+<para>
+See also &FindInstalledFiles;.
+For more thoughts on installation, see the User Guide
+(particularly the section on Command-Line Targets
+and the chapters on Installing Files and on Alias Targets).
+</para>
+
</summary>
</builder>
diff --git a/src/engine/SCons/Tool/suncxx.py b/src/engine/SCons/Tool/suncxx.py
index 9ac8d32..090df7d 100644
--- a/src/engine/SCons/Tool/suncxx.py
+++ b/src/engine/SCons/Tool/suncxx.py
@@ -74,7 +74,7 @@ def get_package_info(package_name, pkginfo, pkgchk):
except EnvironmentError:
pass
else:
- pkginfo_contents = p.communicate()[0]
+ pkginfo_contents = p.communicate()[0].decode()
version_re = re.compile(r'^ *VERSION:\s*(.*)$', re.M)
version_match = version_re.search(pkginfo_contents)
if version_match:
@@ -88,7 +88,7 @@ def get_package_info(package_name, pkginfo, pkgchk):
except EnvironmentError:
pass
else:
- pkgchk_contents = p.communicate()[0]
+ pkgchk_contents = p.communicate()[0].decode()
pathname_re = re.compile(r'^Pathname:\s*(.*/bin/CC)$', re.M)
pathname_match = pathname_re.search(pkgchk_contents)
if pathname_match: