forked from SCons/scons
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES.txt
executable file
·6881 lines (4544 loc) · 249 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
SCons - a software construction tool
Change Log
NOTE: The 4.0.0 Release of SCons dropped Python 2.7 Support
RELEASE VERSION/DATE TO BE FILLED IN LATER
From John Doe:
- Whatever John Doe did.
RELEASE 4.0.1 - Mon, 16 Jul 2020 16:06:40 -0700
From Rob Boehne:
- Fix fortran tools to set SHFORTRAN variables to $FORTRAN, similarly SHF77, SHF90, SHF95,
SHF03 and SHF08 will default to the variables $F77, $F90, $F95, $F03 and $F08 respectively.
If you were depending on changing the value of FORTRAN (or $F[0-9][0-9]) having no effect
on the value of SHFORTRAN, this change will break that. The values of FORTRAN, F77, F90,
F95, F03, F08 and SHFORTRAN, SHF77 (etc.) now are not overridden in generate if alredy set
by the user.
- Fix subprocess execution of 'lslpp' on AIX to produce text standard i/o.
- Re-do the fix for suncxx tool (Oracle Studio compiler) now that only Python 3 is supported,
to avoid decoding errors.
From William Deegan:
- Added Environment() variable TEMPFILEDIR which allows setting the directory which temp
files createdby TEMPFILEMUNGE are created in.
RELEASE 4.0.0 - Sat, 04 Jul 2020 12:00:27 +0000
From Dirk Baechle:
- Updated documentation toolchain to work properly under Python3, also
removed libxslt support from the Docbook Tool. (issue #3580)
- Added Docker images for building and testing SCons. (issue #3585)
From James Benton:
- Improve Visual Studio solution/project generation code to add support
for a per-variant cppflags. Intellisense can be affected by cppflags,
this is especially important when it comes to /std:c++* which specifies
what C++ standard version to target. SCons will append /Zc:__cplusplus
to the project's cppflags when a /std:c++* flag is found as this is
required for intellisense to use the C++ standard version from cppflags.
From Rob Boehne
- Specify UTF-8 encoding when opening Java source file as text. By default, encoding is the output
of locale.getpreferredencoding(False), and varies by platform.
From Joseph Brill:
- MSVC updates: When there are multiple product installations (e.g, Community and
Build Tools) of MSVC 2017 or MSVC 2019, an Enterprise, Professional,
or Community installation will be selected before a Build Tools installation when
"14.1" or "14.2" is requested, respectively. (GH Issue #3699).
- MSVC updates: When there are multiple product installations of MSVC 2017 (e.g.,
Community and Express), 2017 Express is no longer returned when "14.1" is
requested. Only 2017 Express will be returned when "14.1Exp" is requested.
(GH Issue #3699).
- MSVC updates: An MSVC 6.0 installation now appears in the installed versions list
when msvc debug output is enabled (GH Issue #3699).
- MSVS test updates: Tests for building a program using generated MSVS project and
solution files using MSVS 2015 and later now work as expected on x86 hosts.
- Test update: Reduce the number of "false negative" test failures for the interactive
configuration test (test/interactive/configure.py).
- MSVS update: Fix the development environment path for MSVS 7.0.
From William Deegan:
- Fix broken clang + MSVC 2019 combination by using MSVC configuration logic to
propagate'VCINSTALLDIR' and 'VCToolsInstallDir' which clang tools use to locate
header files and libraries from MSVC install. (Fixes GH Issue #3480)
- Added C:\msys64\mingw64\bin to default mingw and clang windows PATH's. This
is a reasonable default and also aligns with changes in Appveyor's VS2019 image.
- Drop support for Python 2.7. SCons will be Python 3.5+ going forward.
- Change SCons.Node.ValueWithMemo to consider any name passed when memoizing Value() nodes
- Fix Github Issue #3550 - When using Substfile() with a value like Z:\mongo\build\install\bin
the implementation using re.sub() would end up interpreting the string and finding regex escape
characters where it should have been simply replacing existing text. Switched to use string.replace().
- Fix Github Issue #2904 - Provide useful error message when more than one Configure Contexts are opened.
Only one open is allowed. You must call conf.Finish() to complete the currently open one before creating another
- Add msys2 installed mingw default path to PATH for mingw tool.
- C:\msys64\mingw64\bin
- Purge obsolete internal build and tooling scripts
- Allow user specified location for vswhere.exe specified by VSWHERE.
NOTE: This must be set at the time the 'msvc' 'msvs' and/or 'mslink' tool(s) are initialized to have any effect.
- Resolve Issue #3451 and Issue #3450 - Rewrite SCons setup.py and packaging. Move script logic to entry points so
package can create scripts which use the correct version of Python.
- Resolve Issue #3248 - Removing '-Wl,-Bsymbolic' from SHLIBVERSIONFLAGS
NOTE: If your build depends on the above you must now add to your SHLIBVERSIONFLAGS
- Speedup bin/docs-update-generated by caching parsed docbook schema. (60x speedup)
- Reorganized source tree. Moved src/engine/SCons to SCons to be more in line with current Python source
tree organization practices.
- Renamed as.py to asm.py and left redirecting tool. 'as' is a reserved word and so
changing the name was required as we wanted to import symbols for use in compilation_db
tool.
- Add CompilationDatabase() builder in compilation_db tool. Contributed by MongoDB.
Setting COMPILATIONDB_USE_ABSPATH to True|False controls whether the files are absolute or relative
paths. Address Issue #3693 and #3694 found during development.
- Fixed Github Issue 3628 - Hardcoding pickle protocol to 4 (supports python 3.4+)
and skipping Python 3.8's new pickle protocol 5 whose main advantage is for out-of-band data buffers.
NOTE: If you used Python 3.8 with SCons 3.0.0 or above, you may get a a pickle protocol error. Remove your
.sconsign.dblite. You will end up with a full rebuild.
From Andrii Doroshenko:
- Extended `Environment.Dump()` to select a format to serialize construction variables (pretty, json).
From Jeremy Elson:
- Updated design doc to use the correct syntax for Depends()
From Adam Gross:
- Added support for scanning multiple entries in an action string if
IMPLICIT_COMMAND_DEPENDENCIES is set to 2 or 'all'. This enables more thorough
action scanning where every item in each command line is scanned to determine
if it is a non-source and non-target path and added to the list of implicit dependencies
for the target.
- Added support for taking instances of the Value class as implicit
dependencies.
- Added new module SCons.Scanner.Python to allow scanning .py files.
- Added support for explicitly passing a name when creating Value() nodes. This may be useful
when the value can't be converted to a string or if having a name is otherwise desirable.
- Fixed usage of abspath and path for RootDir objects on Windows. Previously
env.fs.Dir("T:").abspath would return "T:\T:" and now it correctly returns "T:".
From Ivan Kravets, PlatformIO
- New conditional C Scanner (`SCons.Scanner.C.CConditionalScanner()`)
which interprets C/C Preprocessor conditional syntax (#ifdef, #if, #else,
#elif, #define, etc.)
- Improvements for virtual C Pre-Processor:
* Handle UNSIGNED LONG and LONG numeric constants in DEC (keep support for HEX)
* Skip unrecognized directives, such as `#if( defined ...)`
* Ignore `#include DYNAMIC_INCLUDE` directive that depends on a dynamic
macro which is not located in a state TABLE.
* Cleanup CPP expressions before evaluating (strip comments, carriage returns)
From Iosif Kurazs:
- Added a new flag called "linedraw" for the command line argument "--tree"
that instructs scons to use single line drawing characters to draw the dependency tree.
From Daniel Moody:
- Add no_progress (-Q) option as a set-able option. However, setting it in the
SConstruct/SConscript will still cause "scons: Reading SConscript files ..." to be
printed, since the option is not set when the build scripts first get read.
- Added check for SONAME in environment to setup symlinks correctly (Github Issue #3246)
- User callable's called during substition expansion could possibly throw a TypeError
exception, however SCons was using TypeError to detect if the callable had a different
signature than expected, and would silently fail to report user's exceptions. Fixed to
use signature module to detect function signature instead of TypeError. (Github Issue #3654)
- Added storage of SConstructs and SConscripts nodes into global set for checking
if a given node is a SConstruct/SConscript.
Added new node function SCons.Node.is_sconscript(self) (Github Issue #3625)
From Andrew Morrow:
- Fix Issue #3469 - Fixed improper reuse of temporary and compiled files by Configure when changing
the order and/or number of tests. This is done by using the hash of the generated temporary files
content and (For the target files) the hash of the action.
So where previously files would be named:
- config_1.c, config_1.o, config_1
The will now be named (For example)
- conftest_68b375d16e812c43e6d72d6e93401e7c_0.c,
conftest_68b375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187.o
or
conftest_68b375d16e812c43e6d72d6e93401e7c_0.o
conftest_68b375d16e812c43e6d72d6e93401e7c_0_5713f09fc605f46b2ab2f7950455f187 (for executable)
From Mathew Robinson:
- Improve performance of Subst by preventing unnecessary frame
allocations by no longer defining the *Subber classes inside of their
respective function calls.
- Improve performance of Subst in some cases by preventing
unnecessary calls to eval when a token is surrounded in braces
but is not a function call.
- Improve performance of subst by removing unnecessary recursion.
- Cleanup dangling symlinks before running builders (Issue #3516)
From Mats Wichmann:
- Remove deprecated SourceCode
- str.format syntax errors fixed
- a bunch of linter/checker syntax fixups
- Convert remaining uses of insecure/deprecated mktemp method.
- Clean up some duplications in manpage. Clarify portion of manpage on Dir and File nodes.
- Reduce needless list conversions.
- Fixed regex in Python scanner.
- Accommodate VS 2017 Express - it's got a more liberal license then VS
Community, so some people prefer it (from 2019, no more Express)
- vswhere call should also now work even if programs aren't on the C: drive.
- Add an alternate warning message if cl.exe is not found and msvc config
cache is in use (SCONS_CACHE_MSVC_CONFIG was given) - config cache
may be out of date.
- Fixed bug where changing TEXTFILESUFFIX would cause Substfile() to rebuild. (Github Issue #3540)
- Script/Main.py now uses importlib instead of imp module.
- Drop some Python 2-isms.
- MSVC updates: pass on VSCMD_DEBUG and VSCMD_SKIP_SENDTELEMETRY to msvc
tool setup if set in environment. Add Powershell to default env
(used to call telemetry script).
- Microsoft Visual Studio - switch to using uuid module to generate GUIDs rather than hand rolled
method using md5 directly.
NOTE: This change affects the following builders' output. If your build depends on the output of these builders
you will likely see a rebuild.
* Package() (with PACKAGETYPE='msi')
* MSVSSolution()
* MSVSProject()
- Docbook builder provides a fallback if lxml fails to generate
a document with tostring().
- Fix description of ARCOMSTR constr. var. (issue 3636). Previously the text was a copy of ASCOMSTR which
has different function.
- Update xml files in SCons to reflect changed relative paths after
code restructuring (src/engine/SCons -> SCons)
- Preliminary Python 3.9 support - elimination of some warnings.
- Drop the with_metaclass jig which was designed to let class
definitions using a metaclass be written the same for Py2/Py3.
- Bump python_version_unsupported (and deprecated) to indicate 3.5
is lowest supported Python.
- ParseFlags should not modify the user's passed in dict in case it's
a compound data structure (e.g. values are lists) (issue #3665)
- In Py3 classes no longer need to be listed as deriving from object.
- Remove deprecated check for Task subclasses needing a needs_execute
method - this is now enforced via an abstract base class, so the
check and test is no longer needed.
- Close various logfiles (trace, cache, taskmastertrace, configure)
when done using atexit calls.
- Rebase forked copy of shutil.copytree to Python 3.7 stlib version.
- Significant rework of documentation: API docs are now generated
using Sphinx; manpage and user guide now use more "standard"
markup elements (which could facilitate later conversion to a
different doc format, should that choice be made); significant
rewordings in manpage. Manpage Examples moved to an external
repository / website (scons-cookbook.readthedocs.io).
- Clean up test harness and tests' use of subdir, file_fixture and
dir_fixture.
- SubstitutionEnvironment and OverrideEnvironment now have keys()
and values() methods to better emulate a dict (already had items()).
- Rename internal Warning base class to SConsWarning to avoid any
possible confusion with Python's own Warning class.
RELEASE 3.1.2 - Mon, 17 Dec 2019 02:06:27 +0000
From Edoardo Bezzeccheri
- Added debug option "action_timestamps" which outputs to stdout the absolute start and end time for each target.
From Rob Boehne
- Fix suncxx tool (Oracle Studio compiler) when using Python 3. Previously would throw an exception.
Resolved by properly handling tool version string output as unicode.
From Tim Gates
- Resolved a typo in engine.SCons.Tool
From Adam Gross:
- Resolved a race condition in multithreaded Windows builds with Python 2
in the case where a child process is spawned while a Python action has a
file open. Original author: Ryan Beasley.
- Added memoization support for calls to Environment.Value() in order to
improve performance of repeated calls.
From Jason Kenny
- Update Command() function to accept target_scanner, source_factory, and target_factory arguments.
This makes Command act more like a one-off builder.
From Ivan Kravets
- Added support for "-imacros" to ParseFlags
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 stacktrace when using SCons with Python 3.5+ and SunOS/Solaris related tools.
From Philipp Maierhöfer:
- Avoid crash with UnicodeDecodeError on Python 3 when a Latex log file in
non-UTF-8 encoding (e.g. containing umlauts in Latin-1 encoding when
the fontenc package is included with \usepackage[T1]{fontenc}) is read.
From Mathew Robinson:
- Improved threading performance by ensuring NodeInfo is shared
across threads. Results in ~13% improvement for parallel builds
(-j# > 1) with many shared nodes.
- Improve performance of Entry.disambiguate() by making check for
most common case first, preventing unnecessary IO.
- Improved DAG walk performance by reducing unnecessary work when
there are no un-visited children.
From Mats Wichmann
- 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.
- Experimental New Feature: Enable caching MSVC configuration
If SCONS_CACHE_MSVC_CONFIG shell environment variable is set,
SCons will cache the results of past calls to vcvarsall.bat to
a file; integrates with existing memoizing of such vars.
On vs2019 saves 5+ seconds per SCons invocation, which really
helps test suite runs.
- Remove deprecated SourceSignatures, TargetSignatures
- Remove deprecated Builder keywords: overrides and scanner
- Remove deprecated env.Copy
- Remove deprecated BuildDir plus SConscript keyword build_dir
- A number of documentation improvements.
RELEASE 3.1.1 - Mon, 07 Aug 2019 20:09:12 -0500
From William Deegan:
- Remove obsoleted references to DeciderNeedsNode which could cause crash when using --debug=explain
From Jason Kenny
- Add Fix and test for crash in 3.1.0 when using Decider('MD5-timestamp') and --debug=explain
From Ben Reed:
- Added -fmerge-all-constants to flags that get included in both CCFLAGS and LINKFLAGS.
From Mathew Robinson:
- Fix issue #3415 - Update remaining usages of EnvironmentError to SConsEnvironmentError
this patch fixes issues introduced in 3.1.0 where any of the
following would cause SCons to error and exit:
- CacheDir not write-able
- JSON encoding errors for CacheDir config
- JSON decoding errors for CacheDir config
RELEASE 3.1.0 - Mon, 20 Jul 2019 16:59:23 -0700
From Joseph Brill:
- Code to supply correct version-specifier argument to vswhere for
VS version selection.
From William Deegan:
- Enhanced --debug=explain output. Now the separate components of the dependency list are split up
as follows:
scons: rebuilding `file3' because:
the dependency order changed:
->Sources
Old:xxx New:zzz
Old:yyy New:yyy
Old:zzz New:xxx
->Depends
->Implicit
Old:/usr/bin/python New:/usr/bin/python
- Fix Issue #3350 - SCons Exception EnvironmentError is conflicting with Python's EnvironmentError.
- Fix spurious rebuilds on second build for cases where builder has > 1 target and the source file
is generated. This was causing the > 1th target to not have it's implicit list cleared when the source
file was actually built, leaving an implicit list similar to follows for 2nd and higher target
['/usr/bin/python', 'xxx', 'yyy', 'zzz']
This was getting persisted to SConsign and on rebuild it would be corrected to be similar to this
['zzz', 'yyy', 'xxx', '/usr/bin/python']
Which would trigger a rebuild because the order changed.
The fix involved added logic to mark all shared targets as peers and then ensure they're implicit
list is all cleared together.
- Fix Issue #3349 - SCons Exception EnvironmentError is conflicting with Python's EnvironmentError.
Renamed to SConsEnvironmentError
- Fix Issue #3350 - mslink failing when too many objects. This is resolved by adding TEMPFILEARGJOIN variable
which specifies what character to join all the argements output into the tempfile. The default remains a space
when mslink, msvc, or mslib tools are loaded they change the TEMPFILEARGJOIN to be a line separator (\r\n on win32)
- Fix performance degradation for MD5-timestamp decider. NOTE: This changes the Decider() function arguments.
From:
def my_decider(dependency, target, prev_ni):
To:
def my_decider(dependency, target, prev_ni, repo_node):
Where repo_node is the repository (or other) node to use to check if the node is out of date instead of dependency.
From Peter Diener:
- Additional fix to issue #3135 - Also handle 'pure' and 'elemental' type bound procedures
- Fix issue #3135 - Handle Fortran submodules and type bound procedures
From Adam Gross:
- Upgraded and improved Visual Studio solution/project generation code using the MSVSProject builder.
- Added support for Visual Studio 2017 and 2019.
- Added support for the following per-variant parameters to the builder:
- cpppaths: Provides per-variant include paths.
- cppdefines: Provides per-variant preprocessor definitions.
From Michael Hartmann:
- Fix handling of Visual Studio Compilers to properly reject any unknown HOST_PLATFORM or TARGET_PLATFORM
From Bert Huijben:
- Added support for Visual Studio 2019 toolset.
From Mathew Robinson:
- Update cache debug output to include cache hit rate.
- No longer unintentionally hide exceptions in Action.py
- Allow builders and pseudo-builders to inherit from OverrideEnvironments
From Leonard de Ruijter:
- Add logic to derive correct version argument to vswhere
From Lukas Schrangl:
- Enable LaTeX scanner to find more than one include per line
From Mats Wichmann:
- scons-time takes more care closing files and uses safer mkdtemp to avoid
possible races on multi-job runs.
- Use importlib to dynamically load tool and platform modules instead of imp module
- sconsign: default to .sconsign.dblite if no filename is specified.
Be more informative in case of unsupported pickle protocol (py2 only).
- Fix issue #3336 - on Windows, paths were being added to PATH even if
tools were not found in those paths.
- More fixes for newer Java versions (since 9): handle new jdk directory
naming (jdk-X.Y instead of jdkX.Y) on Windows; handle two-digit major
version. Docstrings improved.
- Fixups for pylint: exception types, redefined functions,
globals, etc. Some old code removed to resolve issues (hashlib is
always present on modern Pythons; no longer need the code for
2.5-and-earlier optparse). cmp is not a builtin function in Py3,
drop one (unused) use; replace one. Fix another instance of
renaming to SConsEnvironmentError. Trailing whitespace.
Consistently use not is/in (if not x is y -> if x is not y).
- Add a PY3-only function for setting up the cachedir that should be less
prone to races. Add a hack to the PY2 version (from Issue #3351) to
be less prone to a race in the check for old-style cache.
- Fix coding error in docbook tool only exercised when using python lxml
- Recognize two additional GNU compiler header directory options in
ParseFlags: -iquote and -idirafter.
- Fix more re patterns that contain \ but not specified as raw strings
(affects scanners for D, LaTeX, swig)
RELEASE 3.0.5 - Mon, 26 Mar 2019 15:04:42 -0700
From William Deegan:
- Fix Issue #3283 - Handle using --config=force in combination with Decider('MD5-timestamp').
3.0.2 in fix for issue #2980 added that deciders can throw DeciderNeedsNode exception.
The Configure logic directly calls the decider when using --config=force but wasn't handling
that exception. This would yield minimally configure tests using TryLink() not running and
leaving TypeError Nonetype exception in config.log
- Fix Issue #3303 - Handle --config=force overwriting the Environment passed into Configure()'s
Decider and not clearing it when the configure context is completed.
- Add default paths for yacc tool on windows to include cygwin, mingw, and chocolatey
- Fix issue #2799 - Fix mingw tool to respect SHCCCOMSTR, SHLINKCOMSTR and LDMODULECOMSTR
- Fix Issue #3329 - Add support for MS SDK V10.0A (which is commonly installed with VS2017)
- Fix Issue #3333 - Add support for finding vswhere under 32 bit windows installs.
From Maciej Kumorek:
- Update the MSVC tool to include the nologo flag by default in RCFLAGS
From Daniel Moody:
- Change the default for AppendENVPath to delete_existing=0, so path
order will not be changed, unless explicitly set (Issue #3276)
- Fixed bug which threw error when running SCons on windows system with no MSVC installed.
- Update link tool to convert target to node before accessing node member
- Update mingw tool to remove MSVC like nologo CCFLAG
- Add default paths for lex tool on windows to include cygwin, mingw, and chocolatey
- Add lex construction variable LEXUNISTD for turning off unix headers on windows
- Update lex tool to use win_flex on windows if available
From Mats Wichmann:
- Quiet open file ResourceWarnings on Python >= 3.6 caused by
not using a context manager around Popen.stdout
- Add the textfile tool to the default tool list
- Fix syntax on is/is not clauses: should not use with a literal
- Properly retrieve exit code when catching SystemExit
- scons-time now uses context managers around file opens
- Fix regex patterns that were not specified as raw strings
From Bernhard M. Wiedemann:
- Do not store build host+user name if reproducible builds are wanted
RELEASE 3.0.4 - Mon, 20 Jan 2019 22:49:27 +0000
From Mats Wichmann:
- Improve finding of Microsoft compiler: add a 'products' wildcard
in case 2017 Build Tools only is installed as it is considered a separate
product from the default Visual Studio
- Add TEMPFILESUFFIX to allow a customizable filename extension, as
described in the patch attached to issue #2431.
- scons.py and sconsign.py stopped working if script called as a symlink
to location in scons-local location.
- Fix issue running scons using a symlink to scons.py in an scons-local dir
- Doc updates around Default(), and the various *TARGETS variables.
From Daniel Moody:
- Improved support for VC14.1 and Visual Studio 2017, as well as arm and arm64 targets.
Issues #3268 & Issue #3222
- Initial support for ARM targets with Visual Studio 2017 - Issue #3182 (You must set TARGET_ARCH for this to work)
- Update TempFileMunge class to use PRINT_CMD_LINE_FUNC
From Tobias Herzog
- Enhance cpp scanner regex logic to detect if/elif expressions without whitespaces but
parenthesis like "#if(defined FOO)" or "#elif!(BAR)" correctly.
RELEASE 3.0.3 - Mon, 07 Jan 2019 20:05:22 -0400
NOTE: 3.0.2 release was dropped because there was a packaging bug. Please consider all 3.0.2
content.
From William Deegan:
- Fixes to packaging logic. Ensuring the SCons.Tool.clangCommon module is added
to the release packages.
- Modify scons.bat script to check for scons python script without .py extension if no file
scons.py exists. This enables an all platform wheel to work.
From Mats Wichmann:
- Update doc examples to work with Python 3.5+: map() now returns an iterable instead of a list.
RELEASE 3.0.2 - Mon, 31 Dec 2018 16:00:12 -0700
From Bernard Blackham:
- Fixed handling of side-effects in task master (fixes #3013).
From William Deegan:
- Remove long deprecated SCons.Options code and tests. This removes BoolOption,EnumOption,
ListOption,PackageOption, and PathOption which have been replaced by *Variable() many years ago.
- Re-Enable parallel SCons (-j) when running via Pypy
- Move SCons test framework files to testing/framework and remove all references to QMtest.
QMTest has not been used by SCons for some time now.
- Updated logic for mingw and clang on win32 to search default tool install paths if not
found in normal SCons PATH. If the user specifies PATH or tool specific paths they
will be used and the default paths below will be ignored.
- Default path for clang/clangxx : C:\Program Files\LLVM\bin
- Default path for mingw : C:\MinGW\bin and/or C:\mingw-w64\*\mingw64\bin
- Key program to locate mingw : mingw32-make (as the gcc with mingw prefix has no fixed name)
- Fixed issue causing stack trace when python Action function contains a unicode string when being
run with Python 2.7
- Add alternate path to QT install for Centos in qt tool: /usr/lib64/qt-3.3/bin
- Fix Java tools to search reasonable default paths for Win32, Linux, macOS. Add required paths
for swig and java native interface to JAVAINCLUDES. You should add these to your CPPPATH if you need
to compile with them. This handles spaces in paths in default Java paths on windows.
- Added more java paths to match install for Centos 7 of openjdk
- Fix new logic which populates JAVAINCLUDES to handle the case where javac is not found.
- Fix GH Issue #2580 - # in FRAMEWORKPATH doesn't get properly expanded. The # is left in the
command line.
- Fix issue #2980 with credit to Piotr Bartosik (and William Blevins). This is an issue where using
TimeStamp-MD5 Decider and CacheDir can yield incorrect md5's being written into the .sconsign.
The difference between Piotr Bartosik's patch and the current code is that the more complicated
creation of file to csig map is only done when the count of children for the current node doesn't
match the previous count which is loaded from the sconsign.
- Fix issue # 3106 MSVC if using MSVC_BATCH and target dir had a space would fail due to quirk in
MSVC's handling of escaped targetdirs when batch compiling.
- Fix GH Issue #3141 unicode string in a TryAction() with python 2.7 crashes.
- Fix GH Issue #3212 - Use of Py3 and CacheDir + Configure's TryCompile (or likely and Python Value Nodes)
yielded trying to combine strings and bytes which threw exception.
- Fix GH Issue #3225 SCons.Util.Flatten() doesn't handle MappingView's produced by dictionary as return
values from dict().{items(), keys(), values()}.
- Fix GH Issue #3241 - Properly support versioned shared libraries for MacOS. We've also introduced two
new env variables APPLELINK_CURRENT_VERSION and APPLELINK_COMPATIBILITY_VERSION which will specify
what is passed to the linkers -current_version and -compatibility_version flags. If not specified
they will be derived from SHLIBVERSION as such:
- APPLELINK_CURRENT_VERSION = SHLIBVERSION
- APPLELINK_COMPATIBILITY_VERSION = all but the last digit in SHLIBVERSION with .0 appended.
Note that the values of the above will be validated. Valid format for either APPLELINK variable is
X[.Y[.Z]] where 0 <= X <= 65535, 0 <= Y <= 255, 0 <= Z <= 255.
The new variables have been added to the documents and should show up in user guide and manpage.
- Fix GH Issue #3136 no longer wrap io.{BufferedReader,BufferedWriter,BufferedRWPair,BufferedRandom,TextIOWrapper
with logic to set HANDLE_FLAG_INHERIT flag on the file handle. Python 3.4+ automatically sets this according
to Python docs: https://docs.python.org/3/library/os.html#fd-inheritance
From Ray Donnelly:
- Fix the PATH created by scons.bat (and other .bat files) to provide a normalized
PATH. Some pythons in the 3.6 series are no longer able to handle paths which
have ".." in them and end up crashing. This is done by cd'ing into the directory
we want to add to the path and then using %CD% to give us the normalized directory
See bug filed under Python 3.6: https://bugs.python.org/issue32457.
Note: On Win32 PATH's which have not been normalized may cause undefined behavior
by other executables being run by SCons (or any subprocesses of executables being run by SCons).
Resolving this issue should eliminate that possibility going forward.
From Andrew Featherstone
- Removed unused --warn options from the man page and source code.
From Arda Fu
- Fix cpp scanner regex logic to treat ifndef for py3.5+. Previously it was
not properly differentiating between if, ifdef, and ifndef.
From Philipp Maierhöfer
- Added a __hash__ method to the class SCons.Subst.Literal. Required when substituting Literal
objects when SCons runs with Python 3.
- Added missing FORTRANMODDIRPREFIX to the gfortran tool.
From Matthew Marinets:
- Fixed an issue that caused the Java emitter to incorrectly parse arguments to constructors that
implemented a class.
From Fredrik Medley:
- Fix exception when printing of EnviromentError messages.
Specifically, this fixes error reporting of the race condition when
initializing the cache which error previously was hidden.
From Daniel Moody:
- Updated Jar builder to handle nodes and directories better
- Updated Jar builder to flatten source list which could contain embedded lists
- Removed some magic numbers from jar.py on behalf of Mats Wichmann ([email protected])
- Set the pickling protocal back to highest which was causing issues
with variant dir tests. This will cause issues if reading sconsigns
pickled with the previous lower protocol.
- Updated swig to setup default paths for windows
- Updated gettext tools to setup default paths for windows with Cygwin/MinGW setups
- Add common location for default paths for cygwin and mingw in Platform modules
- Updated YACC tool to work on windows with Cygwin/MinGW setups
- Set the pickling protocal back to highest which was causing issues
with variant dir tests. This will cause issues if reading sconsigns
pickled with the previous lower protocol.
- Updated FS.py to handle removal of splitunc function from python 3.7
- Updated the vc.py to ignore MSVS versions where no compiler could be found
From Gary Oberbrunner:
- Fix bug when Installing multiple subdirs outside the source tree
- fix to_str to handle None without raising exception
- Fix -jN for python 3.7
From Jonathon Reinhart:
- Replace all instances of `int main()` in C code with `int main(void)`.
Specifically, this fixes the test cases use by Configure.CheckCC() which
would fail when using -Wstrict-prototypes.
From Zachary Tessler:
- Fix calculation of signatures for FunctionActions that contain list (or set,...)
comprehensions whose expressions involve constant literals. Those constants had
been ignored in signatures, so changing them did not cause targets to be rebuilt.
From Paweł Tomulik:
- In the testing framework, module TestCommon, fixed must_contain(),
must_not_contain(), and related methods of TestCommon class to work with
substrings located at zero offset.
- Added virtualenv support. A new function Virtualenv() determines whether
SCons runs in a virtualenv. The search PATH may also be extended to
prefer executables from the current virtualenv over the ones provided by
base environment. New option --enable-virtualenv provided to import some
virtualenv-related variables to SCons and extend every env['ENV']['PATH']
automatically. New option --ignore-virtualenv disables this. Two
environment variables, SCONS_ENABLE_VIRTUALENV and
SCONS_IGNORE_VIRTUALENV are supported for the same purpose.
From Richard West:
- Add SConstruct.py, Sconstruct.py, sconstruct.py to the search path for the root SConstruct file.
Allows easier debugging within Visual Studio
- Change setup.py to change the install directory (via pip, or setup.py install) from scons-#.#.#
to scons (Yielding <pythondir>/lib/scons/SCons/ instead of <pythondir>/lib/scons/SCons-#.#.#/).
This changes SCons to better comply with normal Python installation practices.
From Mats Wichmann:
- Recognize new java 9, 10, 11 (as 9.0 and 10.0, 11.0)
- Updated manpage scons.xml to fix a nested list problem
- Updated doc terminiology: use prepend instead of append as appropriate
- XML validity fixes from SConstruct.py change
- Update wiki links to new github location
- Update bug links to new github location
- Make it easier for SConscript() call to fail on missing script.
It was possible to call SCons.Warnings.warningAsException
(not documented as a user API) to make all warnings fail. Now
SConscript can take an optional must_exist flag which if true fails
if the script does not exist. Not failing on missing script is
now considered deprecated, and the first instance will print a
deprecation message. It is now also possible to flip the scons
behavior (which still defaults to warn, not fail) by calling
SCons.Script.set_missing_sconscript_error, which is also not a
documented interface at the moment.
- Convert TestCmd.read to use with statement on open (quiets 17 py3 warnings)
- Quiet py3 warning in UtilTests.py
- Fix tests specifying octal constants for py3
- Fix must_contain tests for py3
- RPM package generation:
- Fix supplying a build architecture
- Disable auto debug package generation on certain rpmbuild versions
- Adjust some tests to only supply build-id file on certain rpmbuild versions
- Tests now use a file fixture for the repeated (trivial) main.c program.
- Document and comment cleanup.
- Added new Environment Value X_RPM_EXTRADEFS to supply custom settings
to the specfile without adding specific logic for each one to scons.
- The test for Python.h needed by swig tests is moved to get_python_platform
so it does not have to be repeated in every test; picks up one failure
which did not make the (previously needed) check. Windows version
of get_python_platform needed some rework in case running in virtualenv.
- If test opens os.devnull, register with atexit so file opens do not leak.
- Fix bugs in Win32 process spawn logic to handle OSError exception correctly.
- Use time.perf_counter instead of time.clock if it exists.
time.clock deprecated since py3.3, due to remove in 3.8. deprecation
warnings from py3.7 were failing a bunch of tests on Windows since they
mess up expected stderr.
- Prefer Py3's inspect.getfullargspec over deprecated inspect.getargspec.
Switched to "new" (standard in Py2.7) usage of receiving a namedtuple -
we were unpacking to a four-tuple, two of the items of which were unused;
getfullargspec returns a named tuple with seven elements so it is a
cleaner drop-in replacement using the namedtuple.
- Updated the test-framework.rst documentation.
- Remove obsoleted internal implementaiton of OrderedDict.
- Test for tar packaging fixups
- Stop using deprecated unittest asserts
- messages in strip-install-dir test now os-neutral
- Add xz compression format to packaging choices.
- Syntax cleanups - trailing blanks, use "is" to compare with None, etc.
Three uses of variables not defined are changed.
- Some script changes in trying to find scons engine
- Update (pep8) configure-cache script, add a --show option.
- Fix for a couple of "what if tool not found" exceptions in framework.
- Add Textfile/Substfile to default environment. (issue #3147)
- sconsign: a couple of python3 fixes; be more tolerant of implicit
entries which have no signatures; minor PEP8 changes.
- Fix a couple of type mistakes (list-> string, filter type -> list)
- Fix a couple of type mistakes in packaging tools: list-> string in msi,
filter type -> list in ipk
From Bernhard M. Wiedemann:
- Update SCons' internal scons build logic to allow overriding build date
with SOURCE_DATE_EPOCH for SCons itself.
- Change the datestamps in SCons' docs and embedded in code use ISO 8601 format and UTC
From Hao Wu
- Typo in customized decider example in user guide
- Replace usage of unittest.TestSuite with unittest.main() (fix #3113)
RELEASE 3.0.1 - Mon, 12 Nov 2017 15:31:33 -0700
From Daniel Moody:
- Jar can take multiple targets, and will make a duplicate jar from the sources for each target
- Added some warnings in case the Jar builder makes an implicit target
- Added Jar method and changed jar build to be more specific. Jar method will take in
directories or classes as source. Added more tests to JAR to ensure the jar was
packaged with the correct compiled class files.
- Added a No result test case to handle bug which seems unrelated to java in the
swig-dependencies.py test, more info here: http://scons.tigris.org/issues/show_bug.cgi?id=2907
- Added a travis script to test on ubuntu trusty now that the project is on github
so that Continuus Integration tests can be run automatically. It tests most case and considers
no result a pass as well. Improving this script can install more dependincies allowing for more
tests to be run.
From Daniel Moody:
- Updated the Jar Builder tool in Tool/__init__.py so that is doesn't force class files as
sources, allowing directories to be passed, which was causing test/Java/JAR.py to fail.
From William Deegan:
- Fix issue where code in utility routine to_String_for_subst() had code whose result was never
properly returned.
(Found by: James Rinkevich https://pairlist4.pair.net/pipermail/scons-users/2017-October/006358.html )
- Fixed Variables.GenerateHelpText() to now use the sort parameter. Due to incorrect 2to3 fixer changes
8 years ago it was being used as a boolean parameter. Now you can specify sort to be a callable, or boolean
value. (True = normal sort). Manpage also updated.
- Fixed Tool loading logic from exploding sys.path with many site_scons/site_tools prepended on py3.
- Added additional output with time to process each SConscript file when using --debug=time.
From Thomas Berg:
- Fixed a regression in scons-3.0.0 where "from __future__ import print_function" was imposed
on the scope where SConstruct is executed, breaking existing builds using PY 2.7.
From William Deegan:
- Fix broken subst logic where a string with "$$(abc)" was being treated as "$(abc) and the
logic for removing the signature escapes was then failing because there was no closing "$)".
This was introduced by a pull request to allow recursive variable evaluations to yield a string
such as "$( $( some stuff $) $)".
From Zachary Tessler:
- Fix incorrect warning for repeated identical builder calls that use overrides
RELEASE 3.0.0 - Mon, 18 Sep 2017 08:32:04 -0700
NOTE: This is a major release. You should expect that some targets may rebuild when upgrading.
Significant changes in some python action signatures. Also switching between PY 2.7 and PY 3.5, 3.6
will cause rebuilds.
From William Blevins:
- Updated D language scanner support to latest: 2.071.1. (PR #1924)
https://dlang.org/spec/module.html accessed 11 August 2016
- Enhancements:
- Added support for selective imports: "import A : B, C;" -> A
- Added support for renamed imports. "import B = A;" -> A
- Supports valid combinations: "import A, B, CCC = C, DDD = D : EEE = FFF;" -> A, B, C, D
- Notes:
- May find new (previously missed) Dlang dependencies.
- May cause rebuild after upgrade due to dependency changes.
- Updated Fortran-related tests to pass under GCC 5/6.
- Fixed SCons.Tool.Packaging.rpm.package source nondeterminism across builds.
From William Deegan:
- Removed deprecated tools CVS, Perforce, BitKeeper, RCS, SCCS, Subversion.
- Removed deprecated module SCons.Sig
- Added prioritized list of xsltproc tools to docbook. The order will now be as
follows: xsltproc, saxon, saxon-xslt, xalan (with first being highest priority, first
tool found is used)
- Fixed MSVSProject example code (http://scons.tigris.org/issues/show_bug.cgi?id=2979)
- Defined MS SDK 10.0 and Changed VS 2015 to use SDK 10.0
- Changes to Action Function and Action Class signiture creation. NOTE: This will cause rebuilds
for many builds when upgrading to SCons 3.0
- Fixed Bug #3027 - "Cross Compiling issue: cannot override ranlib"
- Fixed Bug #3020 - "Download link in user guide wrong. python setup.py install --version-lib broken"
- Fixed Bug #2486 - Added SetOption('silent',True) - Previously this value was not allowed to be set.
- Fixed Bug #3040 - Non-unicode character in CHANGES.txt
- Fixed Bug #2622 - AlwaysBuild + MSVC regression.
- Fixed Bug #3025 - (Credit to Florian : User flow86 on tigris) - Fix typo JAVACLASSSUFIX should have been
JAVACLASSSUFFIX
From Ibrahim Esmat:
- Added the capability to build Windows Store Compatible libraries that can be used
with Universal Windows Platform (UWP) Apps and published to the store
From Daniel Holth:
- Add basic support for PyPy (by deleting __slots__ from Node with a
metaclass on PyPy); wrap most-used open() calls in 'with' statements to
avoid too many open files.
- Add __main__.py for `python -m SCons` in case it is on PYTHONPATH.
- Always use highest available pickle protocol for efficiency.
- Remove unused command line fallback for the zip tool.
From Gaurav Juvekar:
- Fix issue #2832: Expand construction variables in 'chdir' argument of builders. (PR #463)
- Fix issue #2910: Make --tree=all handle Unicode. (PR #427)
- Fix issue #2788: Fix typo in documentation example for sconf. (PR #388)
From Alexey Klimkin:
- Use memoization to optimize PATH evaluation across all dependencies per
node. (PR #345)
- Use set() where it is applicable (PR #344)
From M. Limber:
- Fixed msvs.py for Visual Studio Express editions that would report
"Error : ValueError: invalid literal for float(): 10.0Exp".
From Rick Lupton:
- Update LaTeX scanner to understand \import and related commands
From Steve Robinson:
- Add support for Visual Studio 2017. This support requires vswhere.exe a helper
tool installed with newer installs of 2017. SCons expects it to be located at
"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"
It can be downloaded separately at
https://github.com/Microsoft/vswhere
From Tom Tanner:
- Allow nested $( ... $) sections
From Paweł Tomulik:
- Fixed the issue with LDMODULEVERSIONFLAGS reported by Tim Jenness
(https://pairlist4.pair.net/pipermail/scons-users/2016-May/004893.html).
An error was causing "-Wl,Bsymbolic" being added to linker's command-line
even when there was no specified value in LDMODULEVERSION and thus no
need for the flags to be specified.
- Added LoadableModule to the list of global functions (DefaultEnvironment
builders).
From Manish Vachharajani:
- Update debian rules, compat, and control to not use features
deprecated or obsolete in later versions of debhelpers
- Update python version to 2.7 in debian/control
From Richard Viney:
- Fixed PCHPDBFLAGS causing a deprecation warning on MSVC v8 and later when
using PCHs and PDBs together.
From Richard West:
- Added nested / namespace tool support
- Added a small fix to the python3 tool loader when loading a tool as a package
- Added additional documentation to the user manual on using toolpaths with the environment
This includes the use of sys.path to search for tools installed via pip or package managers
- Added support for a PyPackageDir function for use with the toolpath
From Russel Winder:
- Reordered the default D tools from "dmd, gdc, ldc" to "dmd, ldc, gdc".
- Add a ProgramAllAtOnce builder to the dmd, ldc, and gdc tools. (PR #448)
- Remove a file name exception for very old Fedora LDC installation.
- gdc can now handle building shared objects (tested for version 6.3.0).
- Remove establishing the SharedLibrary builder in the dmd, ldc, and gdc
tools, must now include the ar tool to get this builder as is required for
other compiler tools.
- Add clang and clang++ tools based on Paweł Tomulik's work.
RELEASE 2.5.1 - Mon, 03 Nov 2016 13:37:42 -0400
From William Deegan:
- Add scons-configure-cache.py to packaging. It was omitted
From Alexey Klimkin:
- Use memoization to optimize PATH evaluation across all dependencies per
node. (PR #345)
RELEASE 2.5.0 - Mon, 09 Apr 2016 11:27:42 -0700
From Dirk Baechle:
- Removed a lot of compatibility methods and workarounds
for Python versions < 2.7, in order to prepare the work
towards a combined 2.7/3.x version. (PR #284)
Also fixed the default arguments for the print_tree and
render_tree methods. (PR #284, too)
From William Blevins:
- Added support for cross-language dependency scanning;
SCons now respects scanner keys for implicit dependencies.
- Notes for SCons users with heterogeneous systems.
- May find new (previously missed) dependencies.
- May cause rebuild after upgrade due to dependency changes.
- May find new dependency errors (EG. cycles).
- Discovered in some of the SCons QT tests.
- Resolved missing cross-language dependencies for
SWIG bindings (fixes #2264).
- Corrected typo in User Guide for Scanner keyword. (PR #2959)
- Install builder interacts with scanner found in SCANNERS differently.
- Previous: Install builder recursively scanned implicit dependencies
for scanners from SCANNER, but not for built-in (default) scanners.
- Current: Install builder will not scan for implicit dependencies via
either scanner source. This optimizes some Install builder behavior
and brings orthogonality to Install builder scanning behavior.
From William Deegan:
- Add better messaging when two environments have
different actions for the same target (Bug #2024)
- Fix issue only with MSVC and Always build where targets
marked AlwaysBuild wouldn't make it into CHANGED_SOURCES
and thus yield an empty compile command line. (Bug #2622)
- Fix posix platform escaping logic to properly handle paths
with parens in them "()". (Bug #2225)
From Jakub Pola:
- Intel Compiler 2016 (Linux/Mac) update for tool directories.
From Adarsh Sanjeev:
- Fix for issue #2494: Added string support for Chmod function.
From Tom Tanner:
- change cache to use 2 character subdirectories, rather than one character,
so as not to give huge directories for large caches, a situation which
causes issues for NFS.
For existing caches, you will need to run the scons-configure-cache.py
script to update them to the new format. You will get a warning every time
you build until you co this.
- Fix a bunch of unit tests on windows
RELEASE 2.4.1 - Mon, 07 Nov 2015 10:37:21 -0700
From Arfrever Frehtes Taifersar Arahesis:
- Fix for Bug # 2791 - Setup.py fails unnecessarily under Jython.
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 Andrew Featherstone:
- Fix for issue #2840 - Fix for two environments specifying same target with different
actions not throwing hard error. Instead SCons was incorrectly issuing a warning
and continuing.
From Hiroaki Itoh :
- Add support `Microsoft Visual C++ Compiler for Python 2.7'
Compiler can be obtained at: https://www.microsoft.com/en-us/download/details.aspx?id=44266
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.
From Paweł Tomulik:
- Reimplemented versioning for shared libraries, with the following effects
- Fixed tigris issues #3001, #3006.
- Fixed several other issues not reported to tigris, including:
issues with versioned libraries in subdirectories with tricky names,
issues with versioned libraries and variant directories,
issue with soname not being injected to library when using D linkers,
- Switched to direct symlinks instead of daisy-chained ones -- soname and
development symlinks point directly to the versioned shared library now),
for rationale see:
https://www.debian.org/doc/debian-policy/ch-sharedlibs.html
https://fedoraproject.org/wiki/Packaging:Guidelines#Devel_Packages
https://bitbucket.org/scons/scons/pull-requests/247/new-versioned-libraries-gnulink-cyglink/diff#comment-10063929
- New construction variables to allow override default behavior: SONAME,
SHLIBVERSIONFLAGS, _SHLIBVERSIONFLAGS, SHLIBNOVERSIONSYMLINKS,
LDMODULEVERSION, LDMODULEVERSIONFLAGS, _LDMODULEVERSIONFLAGS,
LDMODULENOVERSIONSYMLINKS.
- Changed logic used to configure the versioning machinery from
platform-centric to linker-oriented.
- The SHLIBVERSION/LDMODULEVERSION variables are no longer validated by
SCons (more freedom to users).
- InstallVersionedLib() doesn't use SHLIBVERSION anymore.
- Enchanced docs for the library versioning stuff.
- New tests for versioned libraries.
- Library versioning is currently implemented for the following linker
tools: 'cyglink', 'gnulink', 'sunlink'.
- Fix to swig tool - pick-up 'swig', 'swig3.0' and 'swig2.0' (in order).
- Fix to swig tool - respect env['SWIG'] provided by user.
RELEASE 2.4.0 - Mon, 21 Sep 2015 08:56:00 -0700
From Dirk Baechle:
- Switched several core classes to use "slots", to
reduce the overall memory consumption in large
projects (fixes #2180, #2178, #2198)
- Memoizer counting uses decorators now, instead of
the old metaclasses approach.
From Andrew Featherstone
- Fixed typo in SWIGPATH description