The NetBSD Project

CVS log for src/usr.bin/make/unit-tests/varmod-indirect.exp

[BACK] Up to [cvs.NetBSD.org] / src / usr.bin / make / unit-tests

Request diff between arbitrary revisions


Keyword substitution: kv
Default branch: MAIN


Revision 1.31: download - view: text, markup, annotated - select for diffs
Thu Oct 31 09:12:13 2024 UTC (5 weeks, 4 days ago) by rillig
Branches: MAIN
CVS tags: HEAD
Diff to: previous 1.30: preferred, colored
Changes since revision 1.30: +5 -5 lines
make: in the debug log, always qualify line number with filename

Previously, to find out the filename corresponding to a line number from
a 'Parsing' line, it was necessary to find the preceding
'SetFilenameVars' line, which was unnecessarily time-consuming and
distracting.

The 'filename:line' format matches the one used in PrintStackTrace, and
it differs from the one used in PrintLocation, as the former format is
more common in other tools.

Most of the affected unit tests only use the 'Parsing' lines to give
additional context to their debug log, so no structural changes there.

Revision 1.30: download - view: text, markup, annotated - select for diffs
Thu Aug 29 20:20:36 2024 UTC (3 months, 1 week ago) by rillig
Branches: MAIN
Diff to: previous 1.29: preferred, colored
Changes since revision 1.29: +8 -4 lines
make: reduce line length in error messages

The error messages for deeply nested parse errors were hard to decipher,
due to the large amount of text.  Split these messages into individual
lines, just as in the backtrace for .include files and .for loops.  This
unified backtrace makes the output more uniform.

Revision 1.29: download - view: text, markup, annotated - select for diffs
Thu Jul 4 17:47:54 2024 UTC (5 months ago) by rillig
Branches: MAIN
Diff to: previous 1.28: preferred, colored
Changes since revision 1.28: +4 -4 lines
make: add more context information to error messages

In case of a parse error or evaluation error, print the variable value
in addition to the variable name, to see the effects of previous
expression modifiers.

In nested make calls, print the current directory at the bottom of a
stack trace, as that information is otherwise hard to get in a parallel
build spanning multiple directories.

Revision 1.28: download - view: text, markup, annotated - select for diffs
Sat Apr 20 10:18:55 2024 UTC (7 months, 2 weeks ago) by rillig
Branches: MAIN
CVS tags: perseant-exfatfs-base-20240630, perseant-exfatfs-base, perseant-exfatfs
Diff to: previous 1.27: preferred, colored
Changes since revision 1.27: +4 -4 lines
make: provide more context information for parse/evaluate errors

Revision 1.27: download - view: text, markup, annotated - select for diffs
Sun Feb 4 10:03:10 2024 UTC (10 months ago) by rillig
Branches: MAIN
Diff to: previous 1.26: preferred, colored
Changes since revision 1.26: +0 -6 lines
make: do not evaluate indirect modifiers in parse-only mode

Discovered by sjg.

Revision 1.26: download - view: text, markup, annotated - select for diffs
Sun Feb 4 09:56:24 2024 UTC (10 months ago) by rillig
Branches: MAIN
Diff to: previous 1.25: preferred, colored
Changes since revision 1.25: +4 -2 lines
make: in parse-only mode, don't evaluate modifiers

Previously, the ':S', ':ts', ':tA' and ':from=to' modifiers were
evaluated in parse-only mode, unnecessarily.  This is only noticeable
when an indirect modifier is evaluated in parse-only mode, which is
another bug that will be fixed in a follow-up commit.

Revision 1.25: download - view: text, markup, annotated - select for diffs
Sun Feb 4 09:29:50 2024 UTC (10 months ago) by rillig
Branches: MAIN
Diff to: previous 1.24: preferred, colored
Changes since revision 1.24: +4 -2 lines
tests/make: extend test for wrong evaluation in parse-only mode

Revision 1.24: download - view: text, markup, annotated - select for diffs
Sun Feb 4 08:51:57 2024 UTC (10 months ago) by rillig
Branches: MAIN
Diff to: previous 1.23: preferred, colored
Changes since revision 1.23: +2 -0 lines
tests/make: indirect modifiers are evaluated in parse-only mode

Found by sjg@.

Revision 1.23: download - view: text, markup, annotated - select for diffs
Thu Jun 1 20:56:35 2023 UTC (18 months, 1 week ago) by rillig
Branches: MAIN
Diff to: previous 1.22: preferred, colored
Changes since revision 1.22: +16 -16 lines
tests/make: force line-based diagnostics to be listed in the tests

This way, contradictions between the intended output and the actual
output are closer together and have a better chance of being spotted.

Revision 1.22: download - view: text, markup, annotated - select for diffs
Sat Mar 26 14:34:07 2022 UTC (2 years, 8 months ago) by rillig
Branches: MAIN
CVS tags: netbsd-10-base, netbsd-10-0-RELEASE, netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10
Diff to: previous 1.21: preferred, colored
Changes since revision 1.21: +1 -1 lines
make: avoid trailing whitespace in debug log for variables

Since trailing whitespace is invisible, describe the variable value in
words to make it visible.

Revision 1.21: download - view: text, markup, annotated - select for diffs
Sat Jan 8 20:21:34 2022 UTC (2 years, 11 months ago) by rillig
Branches: MAIN
Diff to: previous 1.20: preferred, colored
Changes since revision 1.20: +1 -1 lines
make: fix reported line numbers of continuation lines (since 2002)

Previously, multi-line directives like '.info' or '.error' reported the
line number of their last line instead of their first line, which is
more usual.  This also affected the debug log from '-dp'.

Revision 1.20: download - view: text, markup, annotated - select for diffs
Tue Dec 28 15:49:00 2021 UTC (2 years, 11 months ago) by rillig
Branches: MAIN
Diff to: previous 1.19: preferred, colored
Changes since revision 1.19: +5 -5 lines
make: make debug logging a bit more human-friendly

The previous log format "ParseReadLine (%d): '%s'" focused on the
implementation, it was not immediately obvious to a casual reader that
the number in parentheses was the line number.  Additionally, having
both a colon and quotes in a log message is uncommon.  The quotes have
been added in parse.c 1.127 from 2007-01-01.

The new log format "Parsing line %d: %s" is meant to be easier readable
by humans.  The quotes are not needed since ParseReadLine always strips
trailing whitespace, leaving no room for ambiguities.  The other log
messages follow common punctuation rules, which makes the beginning of
the line equally unambiguous.  Before var.c 1.911 from 2021-04-05,
variable assignments were logged with the format "%s:%s = %s", without a
space after the colon.

Revision 1.19: download - view: text, markup, annotated - select for diffs
Sat Nov 20 17:51:48 2021 UTC (3 years ago) by rillig
Branches: MAIN
Diff to: previous 1.18: preferred, colored
Changes since revision 1.18: +1 -1 lines
make: use correct plural form in debug message

Revision 1.18: download - view: text, markup, annotated - select for diffs
Sat Apr 10 22:09:54 2021 UTC (3 years, 8 months ago) by rillig
Branches: MAIN
CVS tags: cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x
Diff to: previous 1.17: preferred, colored
Changes since revision 1.17: +0 -18 lines
make: reduce debug logging and memory allocation for ${:U...}

Expressions of the form ${:U...} are often generated by .for loops.
Since these expressions are not generated knowingly by the make user, do
not fill the debug log with them since that would interrupt the normal
reading flow of the -dv log for nested expressions.

Revision 1.17: download - view: text, markup, annotated - select for diffs
Mon Apr 5 13:35:41 2021 UTC (3 years, 8 months ago) by rillig
Branches: MAIN
Diff to: previous 1.16: preferred, colored
Changes since revision 1.16: +7 -7 lines
make: in debug log, add space between scope and variable name

Without this space, the debug log looked more like line noise, even
though the only punctuation was a single innocent ':'.  From a make
user's perspective, the variable name is a word of its own and should
not be visually glued to its namespace.

Revision 1.16: download - view: text, markup, annotated - select for diffs
Mon Apr 5 13:14:55 2021 UTC (3 years, 8 months ago) by rillig
Branches: MAIN
Diff to: previous 1.15: preferred, colored
Changes since revision 1.15: +8 -8 lines
make: be more verbose in -dv debug logging

The previous log output was too brief to be understandable.  Give more
hints by describing each part of the expression when evaluating a
modifier.  Distinguish between parse-only mode and eval mode since in
parse-only mode most of the details are irrelevant.

Revision 1.15: download - view: text, markup, annotated - select for diffs
Sun Apr 4 10:13:09 2021 UTC (3 years, 8 months ago) by rillig
Branches: MAIN
Diff to: previous 1.14: preferred, colored
Changes since revision 1.14: +1 -1 lines
make: remove filler word 'Do' from function names for parsing

No functional change, except for debug logging.

Revision 1.14: download - view: text, markup, annotated - select for diffs
Sat Apr 3 22:02:59 2021 UTC (3 years, 8 months ago) by rillig
Branches: MAIN
Diff to: previous 1.13: preferred, colored
Changes since revision 1.13: +16 -16 lines
make: remove VarFlags from debug logging

Before the introduction of ExprDefined, VarFlags contained whether the
expression was defined or not, which was useful to know since the final
value of the expression depends on this information.  The other VarFlags
do not influence the evaluation, so there is no point logging them.

Revision 1.13: download - view: text, markup, annotated - select for diffs
Mon Mar 15 15:39:13 2021 UTC (3 years, 8 months ago) by rillig
Branches: MAIN
Diff to: previous 1.12: preferred, colored
Changes since revision 1.12: +26 -26 lines
make: change debug log for variable evaluation flags to lowercase

This makes them easier distinguishable from variable names since the
latter are usually uppercase.

No functional change outside debug mode.

Revision 1.12: download - view: text, markup, annotated - select for diffs
Tue Feb 23 15:19:41 2021 UTC (3 years, 9 months ago) by rillig
Branches: MAIN
Diff to: previous 1.11: preferred, colored
Changes since revision 1.11: +4 -4 lines
make: improve error message for unknown modifier

Back in 1995, the modifiers were all single-character, and it made sense
to print only the first character.  Nowadays, with ':S', ':@var@...@',
'::=' and several others, a little more context is useful to see where
the exact error is.  The actual modifier is still guessed, and the guess
may be wrong as soon as backslashes get involved, but it is still better
than before.

Revision 1.11: download - view: text, markup, annotated - select for diffs
Mon Feb 15 18:23:32 2021 UTC (3 years, 9 months ago) by rillig
Branches: MAIN
Diff to: previous 1.10: preferred, colored
Changes since revision 1.10: +16 -16 lines
make: rename ExprDefined constants for debug logging

Revision 1.10: download - view: text, markup, annotated - select for diffs
Sun Feb 14 17:24:47 2021 UTC (3 years, 9 months ago) by rillig
Branches: MAIN
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +18 -18 lines
make: update line numbers in expected test output

The documentation from the previous commit added a few lines.

Revision 1.9: download - view: text, markup, annotated - select for diffs
Sun Feb 14 16:12:46 2021 UTC (3 years, 9 months ago) by rillig
Branches: MAIN
Diff to: previous 1.8: preferred, colored
Changes since revision 1.8: +18 -16 lines
make: add more tests for edge cases in evaluating variable expressions

As a preparation for refactoring the code around variable expressions,
there need to be a few tests for indirect variable modifiers since these
were not covered before.

Indirect modifiers may include ':ts' and ':tW', which change the
interpretation of the variable expression in small details.  The scope
of these changes is limited to the indirect modifier, any evaluations
outside this indirect modifier are unaffected.

The changes to the .exp file are mostly line number changes, plus a
demonstration of a newly found bug, where an expression is evaluated
successfully despite producing a parse error.

Revision 1.8: download - view: text, markup, annotated - select for diffs
Tue Feb 2 16:18:16 2021 UTC (3 years, 10 months ago) by rillig
Branches: MAIN
Diff to: previous 1.7: preferred, colored
Changes since revision 1.7: +16 -16 lines
make: replace VarExprFlags with VarExprStatus

The combination of !VEF_UNDEF && VEF_DEF was not possible, which made it
rather strange to model this state as a bit set.

The only functional change is the renamed constants in the debug output.

Using ENUM_VALUE_RTTI_2 felt like overengineering since it's harder to
understand than a simple array of names.

Revision 1.7: download - view: text, markup, annotated - select for diffs
Mon Dec 28 00:46:24 2020 UTC (3 years, 11 months ago) by rillig
Branches: MAIN
Diff to: previous 1.6: preferred, colored
Changes since revision 1.6: +26 -26 lines
make(1): replace global preserveUndefined with VARE_KEEP_UNDEF

Controlling the expansion of variable expressions using a global
variable and a VARE flag was inconsistent.

Converting the global variable into a flag had to prerequisites:

1.  The unintended duplicate variable assignment had to be fixed, as
done in parse.c 1.520 from 2020-12-27.  Without this fix, it would have
been necessary to add more flags to Var_Exists and Var_SetWithFlags, and
this would have become too complex.

2.  There had to be a unit test demonstrating that VARE_KEEP_DOLLAR only
applies to the top-level expression and is not passed to the
subexpressions, while VARE_KEEP_UNDEF applies to all subexpressions as
well.  This test is in var-op-expand.mk 1.10 from 2020-12-28, at least
for the ':@word@' modifier.  In ParseModifierPartSubst, VARE_KEEP_UNDEF
is not passed down either, in the same way.

Revision 1.6: download - view: text, markup, annotated - select for diffs
Sun Dec 27 17:32:25 2020 UTC (3 years, 11 months ago) by rillig
Branches: MAIN
Diff to: previous 1.5: preferred, colored
Changes since revision 1.5: +6 -6 lines
make(1): split test for indirect modifiers into paragraphs

Revision 1.5: download - view: text, markup, annotated - select for diffs
Sun Dec 27 17:17:46 2020 UTC (3 years, 11 months ago) by rillig
Branches: MAIN
Diff to: previous 1.4: preferred, colored
Changes since revision 1.4: +55 -4 lines
make(1): add tests for parsing indirect modifiers in nested expressions

Revision 1.4: download - view: text, markup, annotated - select for diffs
Sun Dec 27 16:31:58 2020 UTC (3 years, 11 months ago) by rillig
Branches: MAIN
Diff to: previous 1.3: preferred, colored
Changes since revision 1.3: +4 -0 lines
make(1): remove dead code from ApplyModifiersIndirect

At that point, the expression can never be varUndefined.  At the
beginning of ParseVarnameLong, the expression is initialized to a simple
empty string, and that string is only ever converted to varUndefined at
the very end of Var_Parse.

Revision 1.3: download - view: text, markup, annotated - select for diffs
Sun Dec 20 19:47:34 2020 UTC (3 years, 11 months ago) by rillig
Branches: MAIN
Diff to: previous 1.2: preferred, colored
Changes since revision 1.2: +4 -2 lines
make(1): error out on unknown variable modifiers at parse time

Before, make printed an "error message" that did not include the word
error and thus was not easily identified as such.  This "error message"
also did not influence the exit status in the default mode but only in
-dL mode.  The error message also didn't include any line number
information and was thus rude.

Revision 1.2: download - view: text, markup, annotated - select for diffs
Sun Dec 20 19:29:06 2020 UTC (3 years, 11 months ago) by rillig
Branches: MAIN
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +1 -0 lines
make(1): move tests for indirect modifiers around

The next commit will error out on unknown modifiers and influence the
exit status.  The test modmisc.mk contains both parse time tests and run
time tests.  To prevent the latter from being run, the parse error is
moved to varmod-indirect.mk, which only contains parse time tests.

Revision 1.1: download - view: text, markup, annotated - select for diffs
Tue Dec 1 22:16:36 2020 UTC (4 years ago) by rillig
Branches: MAIN
make(1): add test and tutorial for indirect modifiers

Diff request

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

Log view options

CVSweb <webmaster@jp.NetBSD.org>