RELNOTES #2

  • //
  • guest/
  • chris_comparini/
  • guest/
  • matt_armstrong/
  • jam/
  • fix/
  • 2/
  • RELNOTES
  • Commits
# Change User Description Committed
#2 4371 Chris Comparini No longer needed in this branch.
#1 4331 Chris Comparini Branch of what I hope is _everyone's_ jam branches, if that makes
    sense.
//guest/matt_armstrong/jam/fix/2/RELNOTES
#5 3967 Matt Armstrong Integrate from //public/jam/src/...
through change 3108.
#4 3966 Matt Armstrong Ignore change 3057 from //public/jam/src/...
#3 3965 Matt Armstrong Integrate from //public/jam/src/...
through change 3056.
#2 3964 Matt Armstrong Integrate change 2614 from //public/jam/src/..., but ignore it.
#1 3963 Matt Armstrong Branch from //public/jam/src/...
up to change 2613.
//guest/perforce_software/jam/src/RELNOTES
#55 2613 rmg Fix 'actions updated' broken by 2487.

The idea was that dependents of NOTFILE targets (like "all")
shouldn't be T_FATE_NEWER (newer than their parents), but instead
left as T_FATE_STABLE.  That way the new 'jam -dc' (display
"causes") option didn't report spurious "newer" targets.  NOTFILE
targets have a 0 timestamp, making their children always look
newer, and the change was to suppress this.

But instead of checking for NOTFILE parents, the code checked
for missing parents.  And that broke 'actions updated', because
it relied on T_FATE_NEWER even if the parent was missing.

Now it checks for p->binding != T_BIND_UNBOUND (the mark of a
NOTFILE target), rather than p->binding == T_BIND_EXISTS (the
mark of an existing real target).

=== computer:1666: Change 39756 by seiwald@play-seiwald on 2003/01/03 14:53:11
#54 2612 rmg Fix three uninitialized memory reads:

    1. var_expand() wasn't checking its input length
    when testing for the "$(<)" shortcut.

    2. Solaris does a strlen() of its sscanf() input,
    and ar_hdr wasn't terminated.

    3. Solaris archive entries / and //xxx (the string
    table) generated calls to time_enter() with an
    uninitialized file name.

Bug fixes documented in RELNOTES.

=== computer:1666: Change 39713 by seiwald@play-seiwald on 2003/01/02 14:46:07
#53 2568 rmg Update the release date in the RELNOTES.
#52 2565 rmg Put .
in PATH for GenFile so jam can build itself without
. in the global PATH.

Porting change documented in RELNOTES.

=== computer:1666: Change 39602 by seiwald@play-seiwald on 2002/12/27 18:10:16
#51 2564 rmg Use MSVCDIR instead of MSVCNT if MSVCNT isn't set.
 Microsoft
changed the name to MSVCDIR in VC 6.0.

Porting change documented in RELNOTES.

=== computer:1666: Change 39600 by seiwald@play-seiwald on 2002/12/27 18:06:42
#50 2563 rmg Big AIX archive support.  Untested.

Bug fix documented in RELNOTES.

=== computer:1666: Change 39590 by seiwald@play-seiwald on 2002/12/27 16:40:07
#49 2562 rmg Grist jam temp file names with pid on NT so as to ensure
uniqueness.

Bug fix documented in RELNOTES.

=== computer:1666: Change 39577 by seiwald@tricks-seiwald on 2002/12/27 15:55:21
#48 2561 rmg RMDIR definition for NT and a default to $(RM) everywhere else.

New feature documented in RELNOTES.

=== computer:1666: Change 39570 by seiwald@play-seiwald on 2002/12/27 15:32:38
#47 2560 rmg Suppress last blank in variable expansion in actions.

I really don't think this could possibly hurt anything.

Bug fix documented in RELNOTES.

=== computer:1666: Change 39567 by seiwald@play-seiwald on 2002/12/27 15:23:10
#46 2559 rmg Fix 'var on target ?= value' so that var is only set if it
did not have a target-specific value.  Previously, it would
just overwrite the var's value.

Bug fix documented in RELNOTES.

=== computer:1666: Change 39566 by seiwald@play-seiwald on 2002/12/27 14:44:01
#45 2557 rmg Shuffle mechanism for optional Jamrules includes: now no error
message is issued for a missing include file marked with NOCARE.

Previously, we used Glob to try to find the optional Jamrules
files, but on VMS that doesn't work so well: Glob returns all
uppercase file names with .'s at the end, which doesn't match
"Jamrules" at all.

The NOCARE part is a user-visible change documented in RELNOTES.

=== computer:1666: Change 39273 by seiwald@waffle-cyg-seiwald on 2002/12/19 22:44:03
#44 2529 rmg Fix "on target" variables during header scan, from Matt Armstrong.

Setting target-specific variables while under the influence of
the target's target-specific variables caused the _global_ values
to be modified.  This happened both during header file scanning
and with the "on target statement" syntax.

The manifestation of this was if a file #included itself, HdrRule
would accidentally set HDRRULE/HDRSCAN globally, and then all
files (executables, etc) would get scanned for includes.

While this borrows from Matt's fix, it is a slightly different
implementation.

User visible fix documented in RELNOTES.

=== computer:1666: Change 39095 by seiwald@play-seiwald on 2002/12/17 14:00:58
#43 2513 rmg Set the version number and patchlevel for the 2.5rc1 release.

In RELNOTES, don't document the different behavior when a "return"
is not the last statement executed in rule definition as a
       non-backward-compatible change (in the "Compatibility"
       section).
#42 2509 rmg Fix an old typo.
#41 2508 rmg First pass edit on the RELNOTES for 2.5.
#40 2503 rmg No longer link jam with advapi32.lib -- it isn't needed
and it keeps moving.

No functional change.

=== computer:1666: Change 38674 by seiwald@tricks-seiwald on 2002/12/10 12:02:55
#39 2502 rmg Update RELNOTES to reflect the addition of history comments,
the removal of the /MR name, and the rewrite of Jam.html.

=== computer:1666: Change 38641 by seiwald@play-seiwald on 2002/12/09 22:04:15
#38 2499 rmg Fix 'includes' support so that included files aren't treated as
direct dependencies during the command execution phase.  If an
included file failed to build, make1() would bypass the including
file.

Now make0() appends each child's 'includes' onto its own 'depends'
list, eliminating 'includes'-specific code in make0() and make1().
This not only fixes the bug, but removes some complexity as well.

Bug fix documented in RELNOTES.

=== computer:1666: Change 38399 by seiwald@play-seiwald on 2002/12/03 16:00:40
#37 2497 rmg Jambase no longer announces the compiler on Windows.
 It doesn't
announce anything else.

User visible change documented in RELNOTES.

=== computer:1666: Change 38194 by seiwald@tricks-seiwald on 2002/11/25 15:02:57
#36 2494 rmg Remove bogus search() call in 'on' statement processing, as
pointed out by Ingo on the jamming mailing list.

=== computer:1666: Change 38000 by seiwald@play-seiwald on 2002/11/18 12:19:24
#35 2492 rmg Make jam on solaris sparc set OSPLAT to sparc.

This will change the build directory for solaris executables
to bin.solarissparc!

User visible change documented in RELNOTES.

=== computer:1666: Change 37638 by seiwald@play-seiwald on 2002/11/05 14:48:06
#34 2491 rmg Some consting in jam to make it more compilable by C++ compilers.

No functional change.

=== computer:1666: Change 37433 by perforce@perforce on 2002/10/30 16:08:51

Recreational const-ing of jam, for compilers that don't allow
"string" to be passed as a non-const char *.

This included a few places where we were modifying what could
possibly have been read-only storage, oddly enough.

No functional change.

=== computer:1666: Change 37602 by seiwald@play-seiwald on 2002/11/04 17:25:40
#33 2490 rmg Jam langauge work: make 'return' actually return from the rule,
rather than just setting the return value.  Introduce new
break/continue statements for managing loops.

User visible change to be documented in Jam.html.

=== computer:1666: Change 37200 by seiwald@play-seiwald on 2002/10/22 15:41:28

Gross rework of Jam.html documentation, including:

- the description of parameters for rules
- description of -g flag
- a new description of targets
- more about rules and their return values
- better separation of rules and updating actions
- putting borders around the tables

(Undocumented) change to documentation.

=== computer:1666: Change 37551 by seiwald@waffle-cyg-seiwald on 2002/11/03 23:17:12

Document jam's new and working break/continue/return statements.

=== computer:1666: Change 37574 by seiwald@play-seiwald on 2002/11/04 13:13:01
#32 2488 rmg Remove the /MR suffix from Jam.

=== computer:1666: Change 37146 by seiwald@play-seiwald on 2002/10/21 15:23:18
#31 2487 rmg Subtle jam adjustments in make0() to improve tracing output,
and some new tracing output (-dc: show 'causes').

First, make0() now takes a pointer p to the parent, rather
than just the parent time ptime.  This helps when setting the
T_FATE_NEWER: it's only set if the target is newer than the
parent _and the parent exists_.  Otherwise, T_FATE_NEWER gets
set for all dependenents of NOTFILE targets.

When determining fate, don't make the final check to see if we
need to downgrade T_FATE_NEWER to T_FATE_STABLE: fate is always
T_FATE_NEWER or T_FATE_STABLE, so we might as well just set it
to T_FATE_STABLE anyhow.

New -dc output shows what targets are causing things to get
rebuilt.

User visible change documented in RELNOTES.

=== computer:1666: Change 36605 by seiwald@play-seiwald on 2002/09/28 18:26:32
#30 2486 rmg Fooling around with jam's -d flag, to make it possible to specify
useful display output without turning on loads of debugging crud.

New -dd flag to display dependencies.

Provisional changes not yet documented in jam.html.

=== computer:1666: Change 36374 by seiwald@play-seiwald on 2002/09/19 15:17:20

Jam -d change: the message "...using xxx..." now only shows
up with -da, rather than in the default output.  It made it
hard to see what was happening when there were a lot of temp
files lying around.

User visible change documented in RELNOTES.

=== computer:1666: Change 36430 by seiwald@play-seiwald on 2002/09/23 11:34:12

Put jam -dx flags into 'jam -h'.

Change to undocumented behavior (jam -h's output).

=== computer:1666: Change 36551 by seiwald@play-seiwald on 2002/09/26 14:39:54

Document jam's new -d debug flags.

=== computer:1666: Change 37367 by seiwald@waffle-cyg-seiwald on 2002/10/28 16:03:46

jam -n now implies -dax, just as the old jam -n implied -d2.

Change to unreleased functionality.

=== computer:1666: Change 37550 by seiwald@waffle-cyg-seiwald on 2002/11/03 23:12:15
#29 2485 rmg Beos updates for jam from "Ingo Weinhold" <[email protected]>.

Porting change.

=== computer:1666: Change 35634 by seiwald@play-seiwald on 2002/08/16 11:42:39
#28 2484 rmg Rework make0() to consider headers when deciding whether to
update a temporary source file.  This makes it possible to
have generated, temporary source files that must be regened
because an included header has been updated.

=== computer:1666: Change 35018 by seiwald@play-seiwald on 2002/07/17 10:41:35

Followon to 35018: actually update a "needtmp" target (duh).

=== computer:1666: Change 35023 by seiwald@play-seiwald on 2002/07/17 11:10:16

Fix to 35018, which handled out-of-date header files built from
temporary sources.  Unfortunately, the change made circular header
dependencies (which are legion) get reported.  Now the circular
dependency reporting is done in the call to make0() rather than at
the beginning of make0(), and step 3b (the header recursion)
simply skips that check.

Change to unreleased behavior.

=== computer:1666: Change 36247 by seiwald@waffle-cyg-seiwald on 2002/09/16 16:15:10
#27 2483 rmg Jam macosx changes: use 'ar' instead of libtool, as ar can do incremental
updates.  New support for the BSD style long filenames in archives.

Porting change.

=== computer:1666: Change 34993 by seiwald@oswald-seiwald on 2002/07/16 12:01:32

Fix archive scan (solaris and FreeBSD style) broken by change
#34993.  I _think_ all three forms of archive entries now work
again (traditional, solaris string table, and macosx #1/xxxx ).

=== computer:1666: Change 35027 by seiwald@play-seiwald on 2002/07/17 11:31:20

Fix archive scan supposedly fixed in 35027 (which was to fix 34993).
Now it works on MacOSX again.

=== computer:1666: Change 35057 by perforce@cardtrick on 2002/07/17 16:11:01
#26 2481 rmg Put . in the path of jam0, at long last.

=== computer:1666: Change 34039 by seiwald@tricks on 2002/06/03 11:05:04

Jam relnote about $(EXENAME) in the Makefile.

User visible change being documented in RELNOTES.

=== computer:1666: Change 34517 by seiwald@play-seiwald on 2002/06/22 00:19:32
#25 2480 rmg Rewrite jam's SubDir rule to allow multiple roots.

Infrastructure change.

=== computer:1666: Change 33320 by seiwald@thin on 2002/05/13 10:10:50
#24 1658 rmg 2.4rc2 becomes 2.4 (final).
#23 1617 rmg Branding 2.4rc2
#22 1580 rmg Changes for 2.4beta.

Yes, Christopher, I brashly said "2.4-dev WAS the beta" at tea
yesterday, but I've since come to my better instincts (got
chicken?), so this one will say

  rmg $ jam -v
  Jam 2.4beta. OS=LINUX. Copyright 1993-2002 Christopher Seiwald.

for a week or two, at least.
#21 1572 Perforce staff Fix InstallInto to handle multiple sources properly, thanks
to Stephen Goodson.

Bug fix documented in RELNOTES.
#20 1571 Perforce staff MINGW port by Max Blagai.

Porting change documented in RELNOTES.
#19 1570 Perforce staff New SoftLink rule, courtesy of David Lindes.

User visible change documented in RELNOTES.
#18 1566 rmg Correct Michael Allard's name in the RELNOTES.

doc change only.
#17 1565 Perforce staff Suffix yyacc generated symbols with _t to ensure they don't
conflict with other symbols, as RULE was.
#16 1553 Perforce staff New -g flag to reorder targets so that they are built according
to their sources update times, rather than simply the order in
which they appear in the Jamfiles.

This flag is experimental: it isn't clear if sorting on target
time is adequate to ensure newest sources are seen first, and
it isn't clear that this is actually useful at all.

Undocumented except for a note in RELNOTES.
#15 1545 Perforce staff Handle TEMPORARY targets with multiple parents better (but not
perfectly).

Previously, a TEMPORARY target that had no timestamp of its own
(t->time == 0, due to the target being missing) took on its
parent's timestamp ptime.  The target's timestamp is used for
four things:

1. It is passed as the target's timestamp to its children,
   in case they are also TEMPORARY targets (and thus need their
   parent's timestamp).

2. It is compared against the target's children's timestamps,
   to see if the target is out of date.

3. It is compared against the target's parent time, to see if
   the target is newer than its parent (for 'actions updated').

4. It is saved as the target's timestamp, for when the target's
   parents need to see if they are out of date.

The problem was with (4) and multiple parents: the first parent's
timestamp would become the target's, which could then inadvertantly
outdate another parent older than the first but otherwise
up-to-date.

With this change a missing TEMPORARY target is left with a zero
timestamp, and the four above cases are modified for T_BIND_PARENT
targets as such:

1. The parent's timestamp is passed directly to the target's
   children.

2. The parent's timestamp is compared directly against the
   target's children's timestamps.

3. The parent's timestamp is no longer compared against the
   target's own, as it could never be older.

4. The target's timestamp remains zero (or the newest of the
   target's children's), so as not to outdate other parents.

Oddly enough, this change mostly just removes the setting of
't->time = ptime' (leaving t->time zero), and adds only a little
extra logic to use ptime directly when needed.  It also removes
the 'pbinding' parameter to make0(), as its only use (to indicate
if the parent was missing) can better be divined from !ptime.
Perfection, as they say, isn't achieved when there is nothing
more to add, but nothing more to take away.  We'll see if I
removed enough this time.

Bug fix documented in RELNOTES.
#14 1535 Perforce staff Define YYMAXDEPTH to 10000 to handle right-recursive rules.
#13 1533 Perforce staff Relnotes for Match, indirect rules, and 'actions together' fix.
#12 1374 rmg Fixed broken $(v[1-]), which always returned an empty expansion.
Thanks to Ian Godin <[email protected]>.

This change is Ian's original, "surgical-strike" fix.

We may yet replace it with something different, but this
at least gets the mainline fixed for now.
#11 1356 rmg Tweak about Glob description, as suggested by
[email protected]
#10 1346 rmg Add an option that gets Jam to exit as soon as any target
fails (as if it had received an "interrupt")

Integrates Change 233 by Peter Glasscock.

Added to Jam.html & RELNOTES - rmg
#9 1344 rmg Under NT, default $(MV) to "move /y" in Jambase.
Logically (and in the integ hhistory) integrates Change 390 by Eric Scouten.

Cc: [email protected]
#8 1319 rmg Jam 2.3 + Perforce's internal changes.

This change is a drop of the Perforce internal Jam changes
since the 2.3 public release. The individual changes
represented herein are preserved in the
//guest/richard_geiger/intjam/ branch.

The intent of this drop is to provide a base, from which other
contributors' Jam branches may be integrated into. It is not
intended to become a packaged release in this state. We will
be integrating changes from other users prior to creating the
next packaged release.

Please refer to the src/RELNOTES file for an overview of the
changes present in this integration.

  - Richard Geiger
  Open Source Engineer at Perforce
#7 556 Perforce staff Patch release jam 2.3.2: reverse NOCARE change.
 NOCARE once
again applies to targets with source and/or actions, so that
buildable header files get built.
#6 486 Perforce staff Jam 2.3.
 See RELNOTES for a list of changes from 2.2.x.

Just about every source file was touched when jam got ANSI-fied.
#5 211 Perforce staff Jeff Sickel's Mac OS X port.
#4 5 Perforce maintenance Jam/MR 2.2.4 (HDRPATTERN, JAMUNAME, JAMSHELL, plus misc tweaks)
#3 4 Perforce maintenance Jam/MR 2.2.2 (AmigaOS support)
#2 3 Perforce maintenance Jam/MR 2.2.1 (fix for NT handle leak)
#1 2 laura Add Jam/MR 2.2 source