classification
Title: Clarify successful build message
Type: enhancement Stage: resolved
Components: Build Versions: Python 3.4
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: brett.cannon Nosy List: Yogesh.Chaudhari, brett.cannon, demian.brecht, ezio.melotti, harrison.morgan, merwok, python-dev, r.david.murray
Priority: normal Keywords: easy, patch

Created on 2013-04-25 17:44 by brett.cannon, last changed 2013-07-12 15:31 by brett.cannon. This issue is now closed.

Files
File name Uploaded Description Edit
issue17845.patch Yogesh.Chaudhari, 2013-07-03 14:55 Patch modifies success message on build completion review
Messages (20)
msg187794 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2013-04-25 17:44
From:

  Python build finished, but the necessary bits to build these modules were not found:
  ossaudiodev           spwd                                    
  To find the necessary bits, look in setup.py in detect_modules() for the module's name.

To:

  Python build successfully finished, but the necessary bits to build these optional modules were not found:

Notice the addition of "successfully" and "optional". Hopefully this will cause fewer new contributors to get thrown by this message.
msg187795 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2013-04-25 17:46
And just FYI, the pre-existing sentence already extends past 80 characters (84), so the new length of 104 shouldn't be a concern. Although we could re-format it into two lines::

  Python build finished successfully!
  The necessary bits to build these optional modules were not found:
msg187796 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2013-04-25 17:46
And I would probably go with "finished successfully" instead of "successfully finished".
msg187797 - (view) Author: Éric Araujo (merwok) * (Python committer) Date: 2013-04-25 17:59
Using two lines sounds good, especially if the last one printed is the positive one (“build successful”).

Do you think there will be oppotions to backporting this?
msg187798 - (view) Author: Éric Araujo (merwok) * (Python committer) Date: 2013-04-25 18:00
opposition* :)
msg187800 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2013-04-25 18:36
Can't backport; someone might be relying on the output to verify their automated build successfully built or something.
msg187801 - (view) Author: Harrison Morgan (harrison.morgan) * Date: 2013-04-25 18:37
As someone trying to get started contributing, I think this change makes it a good deal clearer (although at this point I already know that those modules are optional). The two line version looks better to me.

However, "necessary bits" still seems unclear. Would it be going too far to suggest that it gets changed to something like this?

Python build finished successfully!
The necessary third-party packages to build these optional modules were not found:
msg187802 - (view) Author: Éric Araujo (merwok) * (Python committer) Date: 2013-04-25 18:43
Brett: You’re right, too bad.

Harrison: “third-party packages” may be ambiguous (Python distributions vs. system dependencies), and “required” may conflict with “optional”.

I propose:

Some optional modules were not built because of missing system files:
...
Python interpreter built successfully!
msg187803 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2013-04-25 18:46
I guess the question is whether all the code is third-party or simply optional on some OS? Don't know the answer off the top of my head.
msg187804 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2013-04-25 18:48
I personally don't like the message re-ordering. It feels like "oops, you didn't build everything. Hey everything built fine!" It reads like there was a bug and we accidentally interpreted it as a success.

And it isn't necessarily system files. I mean sqlite3 is not a system package, it's a DB project that we happen to support.
msg187805 - (view) Author: Éric Araujo (merwok) * (Python committer) Date: 2013-04-25 19:02
> I guess the question is whether all the code is third-party or simply
> optional on some OS? Don't know the answer off the top of my head.
In my Debian world it’s typical to use only the official repos, there are no third parties (except from the viewpoint of Python).  I used “system” instead of “third-party” in my proposition.  For me on Debian the optional deps really are “not installed at Python build time” (“not installed by default” or “optional” doesn’t really make sense, as there are multiple defaults, and 98% of the packages are not required to have a working system).

> I personally don't like the message re-ordering. It feels like "oops, you
> didn't build everything. Hey everything built fine!"
Well I distinguished “interpreter” and “optional modules” on purpose, not “everything”, but I agree it can be a fine distinction when you’re just getting started.  Let’s not reorder the messages.

> And it isn't necessarily system files. I mean sqlite3 is not a system package
Really?  If it doesn’t build because sqlite3 header files are not found, then that’s a missing system file to me.

(I used “file” instead of “package” because not everybody will install deps using the system package manager (if any), but that may be complicating things for no good reason.)
msg187806 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2013-04-25 19:06
I use homebrew on OS X and have it in a non-standard location which is not a systems directory (e.g. Developer/). When I hear "system", I think /usr, etc. which is not where people necessarily install third-party stuff.
msg187808 - (view) Author: Harrison Morgan (harrison.morgan) * Date: 2013-04-25 19:17
Would "external libraries" work better? It's clearly not referring to Python packages. And could be installed by a system package manager, or by yourself in a non-standard location.

Python build finished successfully!
The necessary external libraries to build these optional modules were not found:
msg187809 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2013-04-25 19:50
"External libraries" works for me.
msg187816 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2013-04-25 20:24
I'm afraid that "External libraries" is still misleading.  On package-manager-managed linux systems, it is often only the header files that are missing, the libraries are there.  It may well be that "necessary bits" is the most informative choice :).

With two lines I suppose you could be wordy and say "external libraries and/or header files", but that might take us beyond column 80 again.
msg187826 - (view) Author: Harrison Morgan (harrison.morgan) * Date: 2013-04-26 02:18
Perhaps "necessary bits" really is the best way to put it. Here's one more suggestion, though:

Python build finished successfully!
External libraries and/or header files needed to build these optional modules were not found:

Dropping the definite article and rearranging it to use "needed" instead of "necessary" keeps it at 93 characters, only 9 more than the current message. I'm not sure, but I think the "and/" could be dropped, too.

That, at least, gives you something to put into Google.
msg187832 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2013-04-26 06:19
See also #13472 for a related discussion.
msg192241 - (view) Author: Yogesh Chaudhari (Yogesh.Chaudhari) * Date: 2013-07-03 14:55
Patch to modify setup.py comments on successful build
msg192312 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2013-07-04 19:55
First, thanks to Yogesh for writing a patch!

Second, I still think the second line should be "The necessary bits to build these optional modules were not found:". I purposefully like the vagueness of it so we don't start going on about external vs. system, whether header files needs to be mentioned, etc. That is a perk for people who aren't C programmers and don't want to know what a header file is.
msg192948 - (view) Author: Roundup Robot (python-dev) Date: 2013-07-12 15:30
New changeset e13ff9fdfaf9 by Brett Cannon in branch 'default':
Issue #17845: Clarify the message setup.py prints upon successfully
http://hg.python.org/cpython/rev/e13ff9fdfaf9
History
Date User Action Args
2013-07-12 15:31:05brett.cannonsetstatus: open -> closed
resolution: fixed
stage: needs patch -> resolved
2013-07-12 15:30:40python-devsetnosy: + python-dev
messages: + msg192948
2013-07-04 19:55:02brett.cannonsetmessages: + msg192312
2013-07-03 14:55:06Yogesh.Chaudharisetfiles: + issue17845.patch

nosy: + Yogesh.Chaudhari
messages: + msg192241

keywords: + patch
2013-07-01 16:55:58brett.cannonsetassignee: brett.cannon
2013-06-29 19:29:19demian.brechtsetnosy: + demian.brecht
2013-04-26 06:19:29ezio.melottisetkeywords: + easy
type: enhancement
messages: + msg187832

stage: needs patch
2013-04-26 02:18:06harrison.morgansetmessages: + msg187826
2013-04-25 20:24:46r.david.murraysetnosy: + r.david.murray
messages: + msg187816
2013-04-25 19:50:43brett.cannonsetmessages: + msg187809
2013-04-25 19:17:05harrison.morgansetmessages: + msg187808
2013-04-25 19:06:55brett.cannonsetmessages: + msg187806
2013-04-25 19:02:15merwoksetmessages: + msg187805
2013-04-25 18:48:05brett.cannonsetmessages: + msg187804
2013-04-25 18:46:13brett.cannonsetmessages: + msg187803
2013-04-25 18:43:42merwoksetmessages: + msg187802
2013-04-25 18:37:43harrison.morgansetnosy: + harrison.morgan
messages: + msg187801
2013-04-25 18:36:16brett.cannonsetmessages: + msg187800
2013-04-25 18:00:44merwoksetmessages: + msg187798
2013-04-25 17:59:55merwoksetnosy: + ezio.melotti, merwok
messages: + msg187797
2013-04-25 17:46:51brett.cannonsetmessages: + msg187796
2013-04-25 17:46:24brett.cannonsetmessages: + msg187795
2013-04-25 17:44:34brett.cannoncreate