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.

classification
Title: when building the extensions, stdout is lost when stdout is redirected
Type: behavior Stage:
Components: Build Versions: Python 3.2, Python 3.3, Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: Arfrever, barry, benjamin.peterson, brett.cannon, christian.heimes, doko, python-dev
Priority: normal Keywords: patch

Created on 2012-08-08 10:52 by doko, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
makeflags.diff doko, 2012-08-28 16:50 review
quiet.patch christian.heimes, 2012-09-06 14:22 review
Messages (13)
msg167684 - (view) Author: Matthias Klose (doko) * (Python committer) Date: 2012-08-08 10:52
I see this on all Debian and Ubuntu releases, when stdout is redirected. I expect to see the compiler and linker invocations for the sharedmods target, but I only see stderr (compiler and linker warnings).

e.g. make 2>&1 | tee log
or   script -c 'make' log

can this be reproduced on Debian/Ubuntu, or is this seen on other Linux distributions as well?
msg169287 - (view) Author: Matthias Klose (doko) * (Python committer) Date: 2012-08-28 16:50
bah, this happens when you do a parallel build. --jobserver-fds is passed in MAKEFLAGS, and the test for sharedmods turns on the quiet mode, because it matches just *s* in MAKEFLAGS :-/

The patch tries to parse MAKEFLAGS using getopt, and if getopt is not available, falls back to MAKEFLAGS, and then tries to match -s.

The only downside is that you won't get a quiet build, if you don't have getopt, and pass MAKEFLAGS options as a combined option (e.g. -fs).
msg169288 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2012-08-28 17:03
New changeset 1a1d097b17e2 by Matthias Klose in branch '2.7':
- Issue #15591: Fix parsing MAKEFLAGS in the sharedmods target.
http://hg.python.org/cpython/rev/1a1d097b17e2

New changeset 763d188a96bb by Matthias Klose in branch '3.2':
- Issue #15591: Fix parsing MAKEFLAGS in the sharedmods target.
http://hg.python.org/cpython/rev/763d188a96bb

New changeset 3a3fd48a6ef7 by Matthias Klose in branch 'default':
- Issue #15591: Fix parsing MAKEFLAGS in the sharedmods target.
http://hg.python.org/cpython/rev/3a3fd48a6ef7
msg169289 - (view) Author: Matthias Klose (doko) * (Python committer) Date: 2012-08-28 17:04
fixed.
msg169306 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2012-08-28 21:30
This seems to have broken parallel building of modules.
msg169917 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2012-09-06 13:43
The fix doesn't work for me. With "make -s" I still see the output to stdout. Also there are much simpler ways to test for MAKEFLAGS:

ifneq (,$(findstring s,$(MAKEFLAGS)))
    QUIET="-q"
else
    QUIET=""
endif

then use $(QUIET) in the call to setup.py
msg169919 - (view) Author: Matthias Klose (doko) * (Python committer) Date: 2012-09-06 13:59
@benjamin: no, the extensions were never built in parallel

@christian: no, that again would match the `s' when you have something like --jobserver in MAKEFLAGS.
msg169920 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2012-09-06 14:22
Ah, got it. GNU sorts the arguments in MAKEFLAGS. The "s" flag is always in the first word.

$ make -j4 -s
"s --jobserver-fds=3,4 -j"

$ make --quiet -j4
"s --jobserver-fds=3,4 -j"

This make code works well for me:

ifeq (s,$(findstring s,$(word 1,$(MAKEFLAGS))))
    QUIET=-q
else
    QUIET=
endif

I've attached a patch that also fixes the quiet option for ctypes configure script.
msg169921 - (view) Author: Matthias Klose (doko) * (Python committer) Date: 2012-09-06 14:32
even if you pass other options to make, and -s not as the first flag? and does this work for other makes different than GNU make too? But maybe we already require GNU make.
msg169922 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2012-09-06 14:43
The lines under each of my examples are the content of $MAKEFLAGS. It works when I pass the option in a different order and even with alternative spellings for -s like --quiet. It's always the "s" flag:

$ make -s --jobs=4
"s --jobserver-fds=3,4 -j"

$ make  --jobs=4 --silent
"s --jobserver-fds=3,4 -j"

$ make  --jobs=4 --quiet
"s --jobserver-fds=3,4 -j"

$ make  --jobs=4 --quiet -n
echo '"sn --jobserver-fds=3,4 -j"'

With just the -j flag $MAKEFLAGS starts with a space so the first word is empty:

$ make -j4
" --jobserver-fds=3,4 -j"

I don't know if other make implementations work similar but I think we require GNU Make, too.
msg169927 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2012-09-06 16:06
New changeset 048e13546a7c by Christian Heimes in branch '3.2':
Issue #15591: run ctypes' configure in quiet mode when setup.py runs silently
http://hg.python.org/cpython/rev/048e13546a7c

New changeset e5569b03a287 by Christian Heimes in branch 'default':
Issue #15591: run ctypes' configure in quiet mode when setup.py runs silently
http://hg.python.org/cpython/rev/e5569b03a287

New changeset 962e8b2a39f3 by Christian Heimes in branch '2.7':
Issue #15591: run ctypes' configure in quiet mode when setup.py runs silently
http://hg.python.org/cpython/rev/962e8b2a39f3
msg169953 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2012-09-06 23:19
New changeset b9261dd34289 by Christian Heimes in branch '3.2':
Issue #15591 and Issue #11715: silence output of setup.py when make is run with -s option.
http://hg.python.org/cpython/rev/b9261dd34289

New changeset fcc629208842 by Christian Heimes in branch 'default':
Issue #15591 and Issue #11715: silence output of setup.py when make is run with -s option.
http://hg.python.org/cpython/rev/fcc629208842

New changeset 2587aeb616b6 by Christian Heimes in branch '2.7':
Issue #15591 and Issue #11715: silence output of setup.py when make is run with -s option.
http://hg.python.org/cpython/rev/2587aeb616b6

New changeset 4807ed8a627e by Christian Heimes in branch 'default':
Issue #15591 and Issue #11715: silence output of setup.py when make is run with -s option.
http://hg.python.org/cpython/rev/4807ed8a627e
msg169960 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2012-09-07 00:27
New changeset 8cd6acffbcb9 by Christian Heimes in branch '2.7':
Issue #15591 and Issue #11715: silence output of setup.py when make is run with -s option.
http://hg.python.org/cpython/rev/8cd6acffbcb9
History
Date User Action Args
2022-04-11 14:57:34adminsetgithub: 59796
2012-09-07 00:27:24python-devsetmessages: + msg169960
2012-09-06 23:20:46christian.heimessetstatus: open -> closed
nosy: + brett.cannon
resolution: fixed
2012-09-06 23:19:04python-devsetmessages: + msg169953
2012-09-06 16:06:54python-devsetmessages: + msg169927
2012-09-06 14:43:06christian.heimessetmessages: + msg169922
2012-09-06 14:32:41dokosetmessages: + msg169921
2012-09-06 14:22:54christian.heimessetfiles: + quiet.patch

messages: + msg169920
2012-09-06 13:59:28dokosetmessages: + msg169919
2012-09-06 13:43:13christian.heimessetstatus: closed -> open

nosy: + christian.heimes
messages: + msg169917

resolution: fixed -> (no value)
2012-08-29 15:49:23barrysetnosy: + barry
2012-08-28 21:30:14benjamin.petersonsetnosy: + benjamin.peterson
messages: + msg169306
2012-08-28 19:02:39Arfreversetnosy: + Arfrever
2012-08-28 17:04:27dokosetstatus: open -> closed
resolution: fixed
messages: + msg169289

versions: - Python 2.6
2012-08-28 17:03:04python-devsetnosy: + python-dev
messages: + msg169288
2012-08-28 16:50:26dokosetfiles: + makeflags.diff
keywords: + patch
messages: + msg169287
2012-08-08 10:52:57dokocreate