[Python-bugs-list] [ python-Bugs-459423 ] setup.py ignores OPT make variable

noreply@sourceforge.net noreply@sourceforge.net
Thu, 18 Oct 2001 18:03:32 -0700


Bugs item #459423, was opened at 2001-09-06 23:23
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=459423&group_id=5470

Category: None
>Group: Not a Bug
>Status: Closed
Resolution: None
Priority: 5
Submitted By: Skip Montanaro (montanaro)
Assigned to: Nobody/Anonymous (nobody)
Summary: setup.py ignores OPT make variable

Initial Comment:
If you build Python using something like

    make OPT=-O6

when it gets around to building the extension modules
it's forgotten (or it ignores) OPT:

    $ make OPT=-O3
    PYTHONPATH= ./python ../setup.py build
    running build
    running build_ext
    building 'struct' extension
    gcc -g -O2 -Wall -Wstrict-prototypes -fPIC -I.
-I/home/skip/src/Python-2.1.1/./Include
-I/usr/local/include -IInclude/ -c
/home/skip/src/Python-2.1.1/Modules/structmodule.c -o
build/temp.linux-i686-2.1/structmodule.o
    gcc -shared
build/temp.linux-i686-2.1/structmodule.o
-L/usr/local/lib -o build/lib.linux-i686-2.1/struct.so
    ...

Shouldn't setup.py recognize and use the value of OPT?


----------------------------------------------------------------------

>Comment By: Skip Montanaro (montanaro)
Date: 2001-10-18 18:03

Message:
Logged In: YES 
user_id=44345

I think I finally concluded (probably after getting beat up about something similar by the Gtk folks) that the correct thing to do is to pass the desired OPT setting to the configure script.  That way the Makefile is generated with the correct settings that setup.py then extracts.

Marking as not-a-bug and closing...

(Can you add "it's a feature" to the list of possible groups? ;-)



----------------------------------------------------------------------

Comment By: Guido van Rossum (gvanrossum)
Date: 2001-10-18 17:48

Message:
Logged In: YES 
user_id=6380

Apparently setup.py doesn't pull OPT out of the environment;
I added OPT='$(OPT)' to the command that invokes setup.py
build, but it still built with the default OPT values.

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2001-09-07 17:04

Message:
Logged In: YES 
user_id=21627

GNU make does indeed pass all make variables to 
subprocesses. According to the recent POSIX drafts, this 
behaviour is in clear violation to POSIX make behaviour, 
see #438786 for details.

So if anything is done to get OPT from the environment, 
you also need to pass it from the make variable to the 
environment of the subprocess, for it to work on all 
systems.



----------------------------------------------------------------------

Comment By: Skip Montanaro (montanaro)
Date: 2001-09-07 09:32

Message:
Logged In: YES 
user_id=44345

I recall that GNU make at least passes variables to sub-makes
in the environment.  Perhaps it does that for all programs
it forks.  If so, then setup.py should be able to read OPT
and other interesting bits from the environment.  Also, 
perhaps configure can be made to set OPT in the Makefile if 
it's found when it runs.

I don't have time to look into this today but if it's not
taken care of by the weekend I'll try to fix it.


----------------------------------------------------------------------

Comment By: Guido van Rossum (gvanrossum)
Date: 2001-09-07 05:34

Message:
Logged In: YES 
user_id=6380

The setup.py script reads the Makefile but has no access to
the options you pass dynamically to Make.  I'm not sure it's
worth fixing.
You can edit the Makefile instead.

But I'm not setup.py's maintainer, so I'll shut up now. :-)

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=459423&group_id=5470