This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2008年07月05日 19:09 by sacha, last changed 2022年04月11日 14:56 by admin.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| python-config-filter-cflags.patch | Matthias.Braun, 2013年03月05日 00:20 | review | ||
| Messages (11) | |||
|---|---|---|---|
| msg69289 - (view) | Author: Sacha Varma (sacha) | Date: 2008年07月05日 19:09 | |
As I understand it, python-config --cflags is intended to yield the C compiler flags needed to compile a program that uses Python headers and libraries (as opposed to the C flags needed to compile python itself). However, it seems to include irrelevant options such as -Wall and -O3, which interfere with the build (for example, by enabling optimisation in a debug build): $ python-config --cflags -I/opt/Python-2.5.1/include/python2.5 -I/opt/Python-2.5.1/include/python2.5 -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -DNDEBUG -g -O3 -Wall -Wstrict-prototypes |
|||
| msg69292 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2008年07月05日 20:10 | |
Georg, what do you think? |
|||
| msg69317 - (view) | Author: Georg Brandl (georg.brandl) * (Python committer) | Date: 2008年07月06日 06:19 | |
I think you're right. However, Martin, what flags except -I can/must we keep? |
|||
| msg69320 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2008年07月06日 06:43 | |
Some flags for the compiler are really needed to compile the Python headers correctly, e.g. -fno-strict-aliasing in 2.6. So I think an explicit list of options reported would have to be maintained, either as a blacklist (e.g. -O<n>, -Wall), or as a white list. |
|||
| msg73878 - (view) | Author: Erick Tryzelaar (erickt) | Date: 2008年09月26日 18:59 | |
fyi, on the mac with gcc-4.2, distutils is erroring out because of the "- Wno-long-double" it is getting from "python-config --cflags", as it's no longer accepted as an argument. Fortunately this can be worked around by doing "CC=gcc-4.0 python setup.py". |
|||
| msg107977 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2010年06月17日 01:11 | |
Is this still an issue for current trunks? |
|||
| msg110148 - (view) | Author: Joe Neeman (Joe.Neeman) | Date: 2010年07月12日 23:35 | |
It's still an issue in Python 2.6.5 as packaged by openSUSE 11.2. |
|||
| msg183506 - (view) | Author: Matthias Braun (Matthias.Braun) * | Date: 2013年03月05日 00:20 | |
I hacked up a proof-of-concept patch which filters out the most annoying flags (warnings, -Ox and -DNDEBUG flags). (Though IMO the only really robust solution would be not having code but just declarations in the public headers, so --includes is enough. In my personal project I ended up to just use --includes and manually make sure that I don't use any of the code in the headers, but just the declarations). |
|||
| msg185435 - (view) | Author: Matthias Klose (doko) * (Python committer) | Date: 2013年03月28日 11:31 | |
I don't see the current behaviour as problematic. If you build python as a debug build, you get the -O0 included, if you do a normal build, you get the -Ox included. At least this is behaviour found in other '-config' programs too. So maybe add an option to filter out flags, but which ones? The other issue is that it's unclear what these options are used for, to build an extension module, or to build an embedded interpreter. Not a difference maybe in cflags, but for ldflags. And this should be harmonized with the pkgconfig file too. |
|||
| msg185436 - (view) | Author: Matthias Braun (Matthias.Braun) * | Date: 2013年03月28日 11:44 | |
It's less of a problem when building python extenions, where you are probably fine with using "just the same" as the installed python. However in my case I am embedding python as a scripting language into another application. So there is very few python related code and alot of other code. The python-config script "injecting" unnecessary build flags that in fact even change things (-DNDEBUG) is very annoying as it changes all the non-python code too. A simple thing like the --includes that just outputs the -I flags would be the best solution IMO. But to have this working you would need to have a guarantee that there is no actual code in the form of #define / inline functions in the headers which potentially breaks if you use different flags from the python library. In fact --includes is what I am using now, I just hope that I won't hit any of the preproc macros by accident... |
|||
| msg185437 - (view) | Author: Matthias Klose (doko) * (Python committer) | Date: 2013年03月28日 11:48 | |
> However in my case I am embedding python as a scripting language > into another application. then why not filtering out these options on your own for this use case? |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:36 | admin | set | github: 47540 |
| 2013年03月28日 13:09:59 | terry.reedy | set | nosy:
- terry.reedy |
| 2013年03月28日 11:48:18 | doko | set | messages: + msg185437 |
| 2013年03月28日 11:44:22 | Matthias.Braun | set | messages: + msg185436 |
| 2013年03月28日 11:31:34 | doko | set | messages: + msg185435 |
| 2013年03月28日 10:06:08 | georg.brandl | set | assignee: georg.brandl -> doko nosy: + doko |
| 2013年03月05日 00:20:37 | Matthias.Braun | set | files:
+ python-config-filter-cflags.patch nosy: + Matthias.Braun messages: + msg183506 keywords: + patch |
| 2010年07月12日 23:35:36 | Joe.Neeman | set | nosy:
+ Joe.Neeman messages: + msg110148 |
| 2010年06月17日 01:11:56 | terry.reedy | set | nosy:
+ terry.reedy messages: + msg107977 versions: + Python 2.7, Python 3.2, - Python 2.5 |
| 2008年09月26日 18:59:43 | erickt | set | nosy:
+ erickt messages: + msg73878 |
| 2008年07月06日 06:43:32 | loewis | set | messages: + msg69320 |
| 2008年07月06日 06:19:02 | georg.brandl | set | messages: + msg69317 |
| 2008年07月05日 20:10:50 | loewis | set | assignee: georg.brandl messages: + msg69292 nosy: + loewis, georg.brandl |
| 2008年07月05日 19:09:06 | sacha | create | |