[bug #30723] implicit re-executing of subdirs breaks $(origin) with make-3.82

View: New views
8 Messages — Rating Filter:   Alert me  

[bug #30723] implicit re-executing of subdirs breaks $(origin) with make-3.82

by Aljosha Papsch-3 :: Rate this Message:

| View Threaded | Show Only this Message


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

                 Summary: implicit re-executing of subdirs breaks $(origin)
with make-3.82
                 Project: make
            Submitted by: vapier
            Submitted on: Tue 10 Aug 2010 05:22:11 AM GMT
                Severity: 3 - Normal
              Item Group: None
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
       Component Version: None
        Operating System: None
           Fixed Release: None
           Triage Status: None

    _______________________________________________________

Details:

upgrading from make-3.81 to make-3.82 seems to break the origin marking of
variables and thus command line variable overriding.  using glibc here as my
example.

to reproduce (warning: do not run as root):
  tar xf glibc-2.11.2.tar.bz2
  cd glibc-2.11.2
  mkdir build
  cd build
  ../configure --prefix=/usr -q
  sed -i '/^install_root/{h;s:.*:$(warning install_root=$(install_root)
origin=$(origin install_root)):;H;x;H;x}' config.make
  make install-headers install_root=$PWD/foo

the local config.make file has a default:
install_root =
but we're overriding it on the command line, so that should always be
ignored

glibc will basically do a `make -C ..`, and here you'll see the correct
behavior:
.../config.make:8: install_root=$PWD/foo origin=command line
.../config.make:10: install_root=$PWD/foo origin=command line

but the makefile logic in there depends on generated files.  so make will
generate those files, leave the subdir, and then re-enter it.  upon re-entry
though, we now see:
.../config.make:8: install_root=$PWD/foo origin=environment
.../config.make:10: install_root= origin=file

obviously that is incorrect ;)




    _______________________________________________________

Reply to this item at:

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

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


_______________________________________________
Bug-make mailing list
Bug-make@...
http://lists.gnu.org/mailman/listinfo/bug-make

[bug #30723] implicit re-executing of subdirs breaks $(origin) with make-3.82

by Aljosha Papsch-3 :: Rate this Message:

| View Threaded | Show Only this Message


Follow-up Comment #1, bug #30723 (project make):

Hm.  Is there any way for you to provide a smaller example?  I tried to
follow your directions but I think the build failed for some other reason,
earlier than the problem you hit:

make[2]: *** No rule to make target `.../glibc-2.11.2/build/elf/soinit.os',
needed by `.../glibc-2.11.2/build/libc.so'.  Stop.
make[2]: Leaving directory `.../glibc-2.11.2/sunrpc'
make[1]: *** [sunrpc/install-headers] Error 2
make[1]: Leaving directory `.../glibc-2.11.2'
make: *** [install-headers] Error 2

Up until that point, every invocation of config.make had shown origin=command
line.

I tried to create a little makefile to represent what I *think* you said
(when you say depends on generated files, do you mean like make include files
where make generates them and auto-re-execs itself?  Or something different?)
but I couldn't get that to fail either.

    _______________________________________________________

Reply to this item at:

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

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


_______________________________________________
Bug-make mailing list
Bug-make@...
http://lists.gnu.org/mailman/listinfo/bug-make

[bug #30723] implicit re-executing of subdirs breaks $(origin) with make-3.82

by Aljosha Papsch-3 :: Rate this Message:

| View Threaded | Show Only this Message


Follow-up Comment #2, bug #30723 (project make):

i tried to recreate a reduced test case but failed, but then i realized i was
testing on a diff machine that had make-3.81

here is a simple reduced test case ... forget about glibc ;)

$ tar xf origin-breakage.tar.bz2
$ cd origin-breakage
$ make-3.82 x=1
config.make:1: x=1 origin=command line
config.make:3: x=1 origin=command line
rm -f foo/foo
make-3.82 -C foo
make-3.82[1]: Entering directory `/home/vapier/origin-breakage/foo'
../config.make:1: x=1 origin=command line
../config.make:3: x=1 origin=command line
Makefile:2: foo: No such file or directory
touch foo
make-3.82[1]: Leaving directory `/home/vapier/origin-breakage/foo'
make-3.82[1]: Entering directory `/home/vapier/origin-breakage/foo'
../config.make:1: x=1 origin=environment
../config.make:3: x= origin=file
make-3.82[1]: `foo' is up to date.
make-3.82[1]: Leaving directory `/home/vapier/origin-breakage/foo'
rm -f foo/foo

$ make-3.81 x=1
config.make:1: x=1 origin=command line
config.make:3: x=1 origin=command line
rm -f foo/foo
make-3.81 -C foo
make-3.81[1]: Entering directory `/home/vapier/origin-breakage/foo'
../config.make:1: x=1 origin=command line
../config.make:3: x=1 origin=command line
Makefile:2: foo: No such file or directory
touch foo
make-3.81[1]: Leaving directory `/home/vapier/origin-breakage/foo'
make-3.81[1]: Entering directory `/home/vapier/origin-breakage/foo'
../config.make:1: x=1 origin=command line
../config.make:3: x=1 origin=command line
make-3.81[1]: `foo' is up to date.
make-3.81[1]: Leaving directory `/home/vapier/origin-breakage/foo'
rm -f foo/foo

    _______________________________________________________

Reply to this item at:

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

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


_______________________________________________
Bug-make mailing list
Bug-make@...
http://lists.gnu.org/mailman/listinfo/bug-make

[bug #30723] implicit re-executing of subdirs breaks $(origin) with make-3.82

by Aljosha Papsch-3 :: Rate this Message:

| View Threaded | Show Only this Message


Additional Item Attachment, bug #30723 (project make):

File name: origin-breakage.tar.bz2        Size:0 KB


    _______________________________________________________

Reply to this item at:

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

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


_______________________________________________
Bug-make mailing list
Bug-make@...
http://lists.gnu.org/mailman/listinfo/bug-make

[bug #30723] implicit re-executing of subdirs breaks $(origin) with make-3.82

by Aljosha Papsch-3 :: Rate this Message:

| View Threaded | Show Only this Message


Follow-up Comment #3, bug #30723 (project make):

Hm, I believe I found the bug.  Please try this patch:

--- main.c      19 Jul 2010 07:10:53 -0000      1.243
+++ main.c      10 Aug 2010 07:12:15 -0000
@@ -2093,6 +2093,7 @@
             const char *pv = define_makeflags (1, 1);
             char *p = alloca (sizeof ("MAKEFLAGS=") + strlen (pv) + 1);
             sprintf (p, "MAKEFLAGS=%s", pv);
+            p = allocated_variable_expand (p);
             putenv (p);
           }




    _______________________________________________________

Reply to this item at:

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

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


_______________________________________________
Bug-make mailing list
Bug-make@...
http://lists.gnu.org/mailman/listinfo/bug-make

[bug #30723] implicit re-executing of subdirs breaks $(origin) with make-3.82

by Aljosha Papsch-3 :: Rate this Message:

| View Threaded | Show Only this Message


Update of bug #30723 (project make):

              Item Group:                    None => Bug                    
                  Status:                    None => Fixed                  
             Assigned to:                    None => psmith                
             Open/Closed:                    Open => Closed                
        Operating System:                    None => Any                    
           Fixed Release:                    None => CVS                    
           Triage Status:                    None => Verified              


    _______________________________________________________

Reply to this item at:

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

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


_______________________________________________
Bug-make mailing list
Bug-make@...
http://lists.gnu.org/mailman/listinfo/bug-make

[bug #30723] implicit re-executing of subdirs breaks $(origin) with make-3.82

by Aljosha Papsch-3 :: Rate this Message:

| View Threaded | Show Only this Message


Update of bug #30723 (project make):

       Component Version:                    None => 3.82                  


    _______________________________________________________

Reply to this item at:

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

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


_______________________________________________
Bug-make mailing list
Bug-make@...
http://lists.gnu.org/mailman/listinfo/bug-make

[bug #30723] implicit re-executing of subdirs breaks $(origin) with make-3.82

by Aljosha Papsch-3 :: Rate this Message:

| View Threaded | Show Only this Message


Follow-up Comment #4, bug #30723 (project make):

yes, that patch fixes things for me.  now i get the "expected":
Makefile:240: *** mixed implicit and normal rules.  Stop.

but that is something to take up with glibc maintainers

    _______________________________________________________

Reply to this item at:

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

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


_______________________________________________
Bug-make mailing list
Bug-make@...
http://lists.gnu.org/mailman/listinfo/bug-make