bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #31248] .SECONDEXPANSION: Inconsistent expansion of glob patterns i


From: anonymous
Subject: [bug #31248] .SECONDEXPANSION: Inconsistent expansion of glob patterns in pattern rule dependency lines
Date: Mon, 04 Oct 2010 22:43:48 +0000
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10

URL:
  <http://savannah.gnu.org/bugs/?31248>

                 Summary: .SECONDEXPANSION: Inconsistent expansion of glob
patterns in pattern rule dependency lines
                 Project: make
            Submitted by: None
            Submitted on: Mon 04 Oct 2010 10:43:47 PM UTC
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
       Component Version: 3.82
        Operating System: Any
           Fixed Release: None
           Triage Status: None

    _______________________________________________________

Details:

(The test case is at the end.)

In GNU Make 3.80, glob wildcards were not expanded in pattern dependency
lines.  In 3.81 they were expanded, but sometimes in the wrong directory.  In
3.82, we get the 3.81 behavior when second expansion is triggered, and
otherwise the 3.80 behavior.

Should glob expansion be suppressed for pattern dependency lines, as was
historically the case, even after second expansion?  If not, then it may be
best to prefix the stem directory before globbing, instead of after globbing.

Consider this makefile:

ifeq ($(SEC),yes)
.SECONDEXPANSION:
TRIGGER=$$(TRIGGER_SECOND_EXPANSION)
endif
all : dir/foo.x
%x : %y* $(TRIGGER) ; @echo '$@' from '$+'
foo.y% : ; @echo '$@'


(The "TRIGGER" stuff can be necessary to ensure that the second expansion
code path is followed.)  Consider also this directory tree:

.
./foo.ytop
./Makefile
./dir
./dir/foo.ybot


Linux GNU Make 3.82 and 3.80 with no command line arguments (the historical
behavior):

dir/foo.y*
dir/foo.x from dir/foo.y*


Linux GNU Make 3.82 with "SEC=yes" on the command line, and also 3.81
regardless of command line arguments:

dir/foo.ytop
dir/foo.x from dir/foo.ytop


Note that globbing matches "foo.y*" to "foo.ytop" in the top-level directory,
even though GNU Make then prefixes "dir/".  If globbing is desired, then I
think it would make more sense to match "dir/foo.y*" against "dir/foo.ybot".

(Thanks for reading this lengthy discussion.)

-- John Carey





    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?31248>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]