2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-14 00:32:11 +00:00
Commit Graph

51 Commits

Author SHA1 Message Date
Vladimir Prus
2c7c99a5f7 When source resides in a subdirectory of source dir, preserve that
subdirectory in the target path.


[SVN r49714]
2008-11-13 08:26:39 +00:00
Jurko Gospodnetić
92aea5bb39 Minor stylistic changes throughout several Boost Build modules. Added several todo comments.
[SVN r48644]
2008-09-07 06:10:32 +00:00
Jurko Gospodnetić
82e59ca84d Minor stylistic changes made to Boost Build util/path.jam script and doc/src/tasks.xml documentation.
[SVN r47469]
2008-07-16 09:21:22 +00:00
Jurko Gospodnetić
a1d4134774 Minor stylistic Boost Build script changes.
[SVN r46939]
2008-07-01 06:19:33 +00:00
Jurko Gospodnetić
92cdf5bd89 Minor stylistic comment change in Boost Build's util/path.jam module.
[SVN r46455]
2008-06-17 17:47:48 +00:00
Jurko Gospodnetić
39e67e8f0d Minor stylistic Boost Build script changes.
[SVN r46254]
2008-06-08 19:41:56 +00:00
Jurko Gospodnetić
901a0a4386 Removed a duplicated test case.
[SVN r45167]
2008-05-06 09:33:53 +00:00
Jurko Gospodnetić
f6e31ac68e Patch for the NORMALIZE_PATH builtin Boost Jam rule as well as an appropriate update for the path.jam Boost Build module where that rule was being used to implement path.join and related operations.
As it was written before the rule had 'random' behavior in some borderline cases such as: not passing it a parameter, passing it a folder whose path starts with one or two backslashes (as opposed to slashes) or passing it an invalid rooted path with enough '..' path elements to take it 'before the root path'. In those cases it would cause an access violation, 'incorrectly' un-root the path (i.e. remove the leading slash) or simply remove a 'random' path modification respectively. Also the rule is now more tiny bit more efficient and much better documented.

  Invalid rooted paths with enough '..' path elements to take them 'before the root path' are now recognized and an empty list is returned.

  Due to this rule having such 'messy' behavior the path.join rule and its user make-NT rule had some twisted logic in them to work around all the problems this caused. This patch invalidates the logic in question and replaces it with a much simpler one (detailed comments added).

  Other NORMALIZE_PATH callers should not be affected since both the old and the new version work the same on 'regular' paths (i.e. those not mentioned above).

  The new functionality for recognizing Boost Jam versions has been used to make Boost Build scripts use the old path functionality when using Boost Jam older than 3.1.17 and use the new functionality otherwise. As consequence, now anyone using the trunk version of Boost Build and an older 3.1.17 version of Boost.Jam will need to recompile their Boost Jam executable.

  The patch does not cause any Boost Build or Boost Jam tests to fail.

  Added a related NORMALIZE_PATH Boost Jam test. Note that this test causes Boost Jam versions built prior to this patch to crash (access violation).

  Added additional internal Boost Build tests for the path.jam module testing how it handles some invalid Windows paths.


[SVN r45158]
2008-05-05 22:37:19 +00:00
Jurko Gospodnetić
637bbb0173 Cleaned up and better documented how the path.make-NT and path.join rules work. Corrected some minor flaws like the path.join rule returning only the initial path element in case its second path element was empty but there were more elements after it. This is the preparation for cleaning up the NORMALIZE_PATH builtin Boost Jam rule that is causing this implementation to be so messy.
[SVN r45103]
2008-05-04 02:01:52 +00:00
Jurko Gospodnetić
c4eed608ea Made it clear that Boost Build's Windows path handling does not handle paths with multiple successive path separator characters. Added several missing internal path.jam module tests. Minor stylistic changes.
[SVN r45079]
2008-05-03 17:22:08 +00:00
Jurko Gospodnetić
c36072398f Boost Build comment typo corrections and minor stylistic changes.
[SVN r44975]
2008-05-01 15:09:58 +00:00
Jurko Gospodnetić
f2a6ad5a04 Corrected outputting native Windows paths so that it works correctly for absolute paths without the drive letter being explicitly specified, e.g. \aaa\bbb or /aaa/bbb.
[SVN r43045]
2008-02-01 00:46:50 +00:00
Jurko Gospodnetić
1860d4be8b Minor stylistic spacing changes. Remove trailing spaces.
[SVN r43044]
2008-02-01 00:44:23 +00:00
Jurko Gospodnetić
9b97e0ac91 No functional changes but only stylistic changes such as: comment typo corrections, wrapping lines to 80 characters, indentations, removing trailing spaces, removing empty lines, made tests use Jamfile.jam and Jamroot.jam Boost Build script names, removed unnecessary module imports, etc.
[SVN r42506]
2008-01-06 00:25:48 +00:00
Vladimir Prus
4f5947ca91 Fix glob excludes in subdirectories.
Thanks to Norbert Unterberg for the bug report.


[SVN r39103]
2007-09-01 20:28:42 +00:00
Vladimir Prus
578f6bd326 Use SVN for nightly builds
[SVN r38968]
2007-08-26 17:15:51 +00:00
Vladimir Prus
42304753f1 Fix a bug that caused path.glob-tree to ignore exclude patterns except
for top-level names.


[SVN r36160]
2006-11-23 09:16:51 +00:00
Vladimir Prus
9fd7a6eba9 Make the 'glob' rule accept the patterns to exclude.
[SVN r36159]
2006-11-23 09:01:47 +00:00
Rene Rivera
93cd350f59 Add exclusion patterns to glob-tree to allow for exclusing things like CVS directories from scanning. This fixes the problem of invalid/unknown target for those dirs when they are hidden as they get returned as files instead of dirs by the OS. Also updated copyright and license info.
[SVN r35641]
2006-10-16 20:43:26 +00:00
Rene Rivera
7fdd3160f9 Add glob-tree which gobs complete directory trees.
[SVN r35155]
2006-09-18 05:31:51 +00:00
Vladimir Prus
f56c300b23 Revert the path for preserving relative names of sources, since it breaks
UBLAS tests. Will reconsider later.


[SVN r34233]
2006-06-08 05:31:39 +00:00
Vladimir Prus
aafe2d6065 Try to preserve relative paths in sources.
Based on a patch from Ryan Gallagher.


[SVN r34062]
2006-05-23 14:21:58 +00:00
Rene Rivera
bc3396ff68 boostbook.jam; Remove some path.make calls as they are superfluous in the path.glob case.
path.jam; Kludge path.join into working as it did before when confronted with an initial empty string on the path.


[SVN r31212]
2005-10-06 19:47:58 +00:00
Rene Rivera
eed0cf6cc3 Variety of performance improvements.
* bjam; bump to version 3.1.12
* bjam; make it possible to build in MinGW/MSYS shell
* bjam; move profile code to debug.h/c to make it available for use everywhere
* bjam; cache all filesystem query operations, Unix and Windows only, include PWD and scanning
* bjam; add memory profile info, and sprinkle throught code
* bbv2; rewrite some while() loops into for() loops to reduce time and memory
* bbv2; keep a single instance counter instead of one per type to reduce memory use
* bjam+bbv2; change NORMALIZE_PATH builtin to join path parts to reduce memory use


[SVN r31177]
2005-10-03 00:47:36 +00:00
Vladimir Prus
73b91b8537 Use caching inside path.pwd. The PWD rule on windows calls the
short_path_to_long_path function which takes a lot of time, and clearly
current directory of bjam will never change as it's running.


[SVN r31138]
2005-09-28 11:37:17 +00:00
Vladimir Prus
648a7b2970 Do no call sequence.unique on result of GLOB-RECURSIVELY.
That was an old hack which was only needed in one context -- when we
passed both Jamroot and jamroot as patterns, got back Jamroot and jamroot
(because windows is case-insensitive and reports that both exist), and get
confused.

Calling 'unique' does not harm in most cases, but in Boost Jamfiles we glob
for all headers, and O(n^2) algorithm used by unique considerably slows us.


[SVN r29187]
2005-05-25 13:51:33 +00:00
Vladimir Prus
4e9af774ce Revamp path.glob.
The problem with the previous implementation is that it would iterate
over all elements in a dir even if 'pattern' had no metacharacters. First,
that was slow -- if you handed

  /cygdrive/w/My Documents/boost/test/a.cpp

to it, it would crawl all the way to the top, listing each directory and
checking each file. Second, it would fail, because Cygwin is broken and
does not show 'cygdrive' is the list of directory elements of '/'.

Now we check if a pattern has metacharacters, and if not, just do
a simple 'timestamp' call.

The new glob is implemented as new 'GLOB-RECURSIVELY' builtin. I've decided
to use builtin since otherwise, we'd need 'does this name exist' builtin,
and if we need new builtin, why don't implement all globbing in core.


[SVN r29163]
2005-05-24 07:57:56 +00:00
Vladimir Prus
05baf3245d Fix path.glob on cygwin.
It was completely broken with absolute windows paths because /cygdrive
is valid cygwin path, but 'cygdrive' is not shown when listing the '/'
directory.


[SVN r28508]
2005-04-28 08:04:41 +00:00
Vladimir Prus
adf2fa4533 Unbreak path.glob on Windows.
[SVN r28061]
2005-04-08 11:41:47 +00:00
Vladimir Prus
5ed8231d59 Cleanup path.glob and make it handle absolute paths without infinite looping.
[SVN r28018]
2005-04-06 15:27:41 +00:00
Vladimir Prus
5b15a18ae3 * util/path.jam (glob): Call 'set.unique' on the result, to workaround
case-insensitivity of some platforms.


[SVN r26837]
2005-01-24 15:45:07 +00:00
Vladimir Prus
29bc552733 Fix a regression in the 'glob' rule -- it is broken with the current bjam.
Handle ".." correctly.


[SVN r26595]
2004-12-28 17:54:35 +00:00
Vladimir Prus
8b1b6a2d02 Expand path.glob comments.
[SVN r26485]
2004-12-10 09:24:59 +00:00
Dave Abrahams
63adbc97f6 Factored html type out of boostbook.jam and in the process created a
modular system for registering new types.


[SVN r26484]
2004-12-10 02:39:57 +00:00
Vladimir Prus
8d9bd4d70b Allow the 'path.glob' and 'glob' Jamfile rule to accept wildcards in
directory names. For example:

  exe a : [ glob */*.cpp ] ;

now works.


[SVN r26398]
2004-12-02 09:41:31 +00:00
Vladimir Prus
09f523e5c7 Support for VMS paths.
Patch from Johan Nilsson.


[SVN r25872]
2004-10-26 11:43:19 +00:00
Vladimir Prus
54f21a7bec More strict checks in make-Unix.
[SVN r24932]
2004-09-06 07:29:46 +00:00
Vladimir Prus
ee85342c25 Don't error out when 'PATH', 'Path', or 'path' has empty elements.
[SVN r24889]
2004-09-03 11:20:51 +00:00
Vladimir Prus
ded2f35dbd * utils/paths.jam
(glob): Accept several directories, like builtin GLOB does.


[SVN r22050]
2004-01-29 13:49:14 +00:00
Vladimir Prus
62aeee6f78 The 'path.exists' rule is now native.
[SVN r21201]
2003-12-10 08:27:21 +00:00
Vladimir Prus
ccb28e2feb Minor refactorings.
[SVN r21200]
2003-12-10 08:10:13 +00:00
Vladimir Prus
c354977097 New builtin NORMALIZE_PATH.
[SVN r19431]
2003-08-04 09:29:28 +00:00
Vladimir Prus
ce2b257a16 Bugfix from Michael Stevens: when directory names contained regex
metacharacters, Boost.Build misbehaved.

* new/path.jam
  (all-parents): Don't use regex to strip path prefix, use a more robust
    approach.

* test/bad_dirname.py: New test.


[SVN r18576]
2003-05-28 07:11:50 +00:00
Dave Abrahams
1722b16700 * Restored the printing of qualified names from invoked actions.
Consequently rolled back the workaround in make_rule.py

* Added new indirect rule invocation module for encoding the module to
  invoke a rule from as well as the exact name to invoke it by, and
  for subsequent invocation.

* Fixed module __test__ rules so they really do execute in a separate
  module.  Associated tweaks to __test__ in path.jam


[SVN r18427]
2003-05-16 16:30:13 +00:00
Vladimir Prus
783a7fe308 Fix path handling on Cygwin. Thanks to Andre Hentz for the patch.
[SVN r18091]
2003-03-26 12:16:01 +00:00
Rene Rivera
3e4189ef3a Add relative-to to calculate relative paths between dirs.
[SVN r17653]
2003-02-26 06:12:24 +00:00
Vladimir Prus
2782e9b785 Fix/improve the symlink rule.
* new/path.jam
    (make-NT, make-UNIX): Convert empty path into "."

* new/project.jam
    (path-relative-to-project-location): New rule.

* new/stage.jam
    (stage-target-class.construct): Use the above rule.

* new/symlink.jam
    (symlink-targets.construct): Call 'set-path' on created
    virtual targets.
    (ln): Attempts at better handling creating symlinks in
    directories.

* new/virtual-target.jam
    (abstract-file-target.actual-name): If explicit path was
    given, include it in grist.

* test/symlink.py: New test.

* test/test_all.py
    Run new test.


[SVN r16889]
2003-01-13 16:09:43 +00:00
Vladimir Prus
022ef577da Implement BB7: now there's "build-dir" project
attribute which controls where generated targets are put,
much in the same was as ALL_LOCATE_TARGET.

* new/virtual-target.jam
    (virtual-target.path): Respect build dir.
    (virtual-target.actualize-location): Don't
       compute path, but call call instead.

* new/project.jam
    (initialize): Set default value for 'build-dir'.
    (project-attributes.set): Handle 'build-dir'.

* new/path.jam
    (relative): New rule.

* test/build_dir.py: New test.


[SVN r16589]
2002-12-11 19:01:50 +00:00
Vladimir Prus
aae2ef0246 Tweak path-constant handling.
* new/path.jam (make-UNIX, make-NT): Call 'path.join' on elements,
        so that paths are normilazed.
      (join): Allow one element to be passed.
    * new/project-root.jam: Use 'path.root' when declaring path constants.


[SVN r16096]
2002-11-04 17:27:42 +00:00
Vladimir Prus
c6194960ea Make 'path.jam' documentation parsable by doc.jam and tweak them.
[SVN r14757]
2002-08-09 14:37:14 +00:00