homepage

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: Python source code build fails with old mercurial
Type: compile error Stage: needs patch
Components: Build Versions: Python 3.3, Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: Arfrever, Graeme.Winter, Luke Erlacher, benjamin.peterson, eric.araujo, ezio.melotti, georg.brandl, r.david.murray, santoso.wijaya, schmir, vstinner
Priority: normal Keywords:

Created on 2011年06月16日 08:14 by Graeme.Winter, last changed 2022年04月11日 14:57 by admin. This issue is now closed.

Messages (15)
msg138417 - (view) Author: Graeme Winter (Graeme.Winter) Date: 2011年06月16日 08:14
Trying to build 2.7.2 from source on RHEL5 32 bit get errors:
gcc -pthread -c -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I. -IInclude -I./Include -DPy_BUILD_CORE \
 -DSVNVERSION="\"`LC_ALL=C svnversion .`\"" \
 -DHGVERSION="\"`LC_ALL=C hg id -i .`\"" \
 -DHGTAG="\"`LC_ALL=C hg id -t .`\"" \
 -DHGBRANCH="\"`LC_ALL=C hg id -b .`\"" \
 -o Modules/getbuildinfo.o ./Modules/getbuildinfo.c
hg identify: option -i not recognized
hg identify: option -t not recognized
hg identify: option -b not recognized
./Modules/getbuildinfo.c: In function ‘Py_GetBuildInfo’:
./Modules/getbuildinfo.c:45: error: missing terminating " character
./Modules/getbuildinfo.c:45: error: expected expression before ‘)’ token
./Modules/getbuildinfo.c:46: error: missing terminating " character
./Modules/getbuildinfo.c:46: error: missing terminating " character
./Modules/getbuildinfo.c:47: error: missing terminating " character
./Modules/getbuildinfo.c:47: error: missing terminating " character
./Modules/getbuildinfo.c:53: error: ‘buildinfo’ undeclared (first use in this function)
./Modules/getbuildinfo.c:53: error: (Each undeclared identifier is reported only once
./Modules/getbuildinfo.c:53: error: for each function it appears in.)
./Modules/getbuildinfo.c: In function ‘_Py_hgversion’:
./Modules/getbuildinfo.c:72: error: missing terminating " character
./Modules/getbuildinfo.c:72: warning: ‘return’ with no value, in function returning non-void
./Modules/getbuildinfo.c: In function ‘_Py_hgidentifier’:
./Modules/getbuildinfo.c:79: error: missing terminating " character
./Modules/getbuildinfo.c:79: error: expected expression before ‘;’ token
./Modules/getbuildinfo.c:83: error: missing terminating " character
./Modules/getbuildinfo.c:83: error: expected expression before ‘;’ token
make: *** [Modules/getbuildinfo.o] Error 1
gcc -pthread -c -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I. -IInclude -I./Include -DPy_BUILD_CORE \
 -DSVNVERSION="\"`LC_ALL=C svnversion .`\"" \
 -DHGVERSION="\"`LC_ALL=C hg id -i .`\"" \
 -DHGTAG="\"`LC_ALL=C hg id -t .`\"" \
 -DHGBRANCH="\"`LC_ALL=C hg id -b .`\"" \
 -o Modules/getbuildinfo.o ./Modules/getbuildinfo.c
hg identify: option -i not recognized
hg identify: option -t not recognized
hg identify: option -b not recognized
./Modules/getbuildinfo.c: In function ‘Py_GetBuildInfo’:
./Modules/getbuildinfo.c:45: error: missing terminating " character
./Modules/getbuildinfo.c:45: error: expected expression before ‘)’ token
./Modules/getbuildinfo.c:46: error: missing terminating " character
./Modules/getbuildinfo.c:46: error: missing terminating " character
./Modules/getbuildinfo.c:47: error: missing terminating " character
./Modules/getbuildinfo.c:47: error: missing terminating " character
./Modules/getbuildinfo.c:53: error: ‘buildinfo’ undeclared (first use in this function)
./Modules/getbuildinfo.c:53: error: (Each undeclared identifier is reported only once
./Modules/getbuildinfo.c:53: error: for each function it appears in.)
./Modules/getbuildinfo.c: In function ‘_Py_hgversion’:
./Modules/getbuildinfo.c:72: error: missing terminating " character
./Modules/getbuildinfo.c:72: warning: ‘return’ with no value, in function returning non-void
./Modules/getbuildinfo.c: In function ‘_Py_hgidentifier’:
./Modules/getbuildinfo.c:79: error: missing terminating " character
./Modules/getbuildinfo.c:79: error: expected expression before ‘;’ token
./Modules/getbuildinfo.c:83: error: missing terminating " character
./Modules/getbuildinfo.c:83: error: expected expression before ‘;’ token
make: *** [Modules/getbuildinfo.o] Error 1
Would assume it is bad form for a release source bundle to depend on mercurial?
Diffs against version of getbuildinfo.c from 2.7.1 indicate that this is a new dependency:
$ find . -name 'getbuildinfo.c' | xargs diff -u
--- ./Python-2.7.2/Modules/getbuildinfo.c 2011年06月11日 16:46:27.000000000 +0100
+++ ./Python-2.7.1/Modules/getbuildinfo.c 2010年05月09日 15:46:46.000000000 +0100
@@ -28,30 +28,15 @@
 #define SVNVERSION "$WCRANGE$$WCMODS?M:$"
 #endif
-/* XXX Only unix build process has been tested */
-#ifndef HGVERSION
-#define HGVERSION ""
-#endif
-#ifndef HGTAG
-#define HGTAG ""
-#endif
-#ifndef HGBRANCH
-#define HGBRANCH ""
-#endif
-
 const char *
 Py_GetBuildInfo(void)
 {
- static char buildinfo[50 + sizeof(HGVERSION) +
- ((sizeof(HGTAG) > sizeof(HGBRANCH)) ?
- sizeof(HGTAG) : sizeof(HGBRANCH))];
- const char *revision = _Py_hgversion();
+ static char buildinfo[50];
+ const char *revision = Py_SubversionRevision();
 const char *sep = *revision ? ":" : "";
- const char *hgid = _Py_hgidentifier();
- if (!(*hgid))
- hgid = "default";
+ const char *branch = Py_SubversionShortBranch();
 PyOS_snprintf(buildinfo, sizeof(buildinfo),
- "%s%s%s, %.20s, %.9s", hgid, sep, revision,
+ "%s%s%s, %.20s, %.9s", branch, sep, revision,
 DATE, TIME);
 return buildinfo;
 }
@@ -65,21 +50,3 @@
 return svnversion; /* it was interpolated, or passed on command line */
 return "Unversioned directory";
 }
-
-const char *
-_Py_hgversion(void)
-{
- return HGVERSION;
-}
-
-const char *
-_Py_hgidentifier(void)
-{
- const char *hgtag, *hgid;
- hgtag = HGTAG;
- if ((*hgtag) && strcmp(hgtag, "tip") != 0)
- hgid = hgtag;
- else
- hgid = HGBRANCH;
- return hgid;
-}
msg138420 - (view) Author: Graeme Winter (Graeme.Winter) Date: 2011年06月16日 10:41
Some more information:
It has picked up that I have mercurial installed:
[gw56@ws050 Python-2.7.2_cci]$ cat config.log | grep HG
ac_cv_prog_HAS_HG=found
HAS_HG='found'
HGBRANCH='hg id -b $(srcdir)'
HGTAG='hg id -t $(srcdir)'
HGVERSION='hg id -i $(srcdir)'
however it happens to be rather an old version:
[gw56@ws050 Python-2.7.2_cci]$ hg --version
Mercurial Distributed SCM (version 0.9.3)
Copyright (C) 2005, 2006 Matt Mackall <mpm@selenic.com>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
so does not recognise the command-line options that you are using.
msg138440 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2011年06月16日 14:22
It used to be that the svn version info was pulled from embedded constants in Makefile.pre.in. I agree that depending on having mercurial (and, presumably, a repo!) at build time is wrong. These constants need to be pre-computed when a release tarball is built and the mercurial dependency removed from the generated Makefile. I'm not sure how we make that work correctly in a development build, but I'm sure the release managers will figure something out.
msg138442 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2011年06月16日 14:34
Indeed, I just confirmed that building with a recent version of mercurial installed from the release 2.7.2 source tarball from python.org, the make results in:
abort: repository . not found!
abort: repository . not found!
abort: repository . not found!
during the build of getbuildinfo.c. Fortunately the only effect seems to be that sys._mercurial returns ('CPython, '', '') instead of the correct info.
msg138445 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2011年06月16日 14:51
Ah. For subversion there was a similar check, and the values were set to blank if the subversion binary was not found. For hg it looks like we need to add additional checks on whether or not there is a repo. (We can probably assume that if there is a repo the correct version of mercurial is installed).
msg138492 - (view) Author: Ralf Schmitt (schmir) Date: 2011年06月17日 10:17
trunk configure.in contains code that checks for the existence of a .hg repository.
See rev 435eec7b41f0 
msg138507 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2011年06月17日 13:51
That needs to be ported to the other branches, then.
Ezio, on a completely unrelated note, notice what happened to Ralf's reference. I think the regexes may need to be reordered.
msg138564 - (view) Author: Ezio Melotti (ezio.melotti) * (Python committer) Date: 2011年06月18日 01:20
The regexes are now in the right order.
msg138640 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2011年06月19日 16:24
So, it seems the problem is not actually that the build depends on mercurial, it's that it fails with ancient mercurials.
msg138642 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2011年06月19日 16:36
Only if Ralf's patch is applied to all branches. Otherwise the make step reports "abort: repository . not found!", which most users will ignore but a few will report here. It looks from Ralf's quoted changeset like it was only applied to default, but frankly I'm not comfortable enough with mercurial yet to be able to tell.
If Ralf's patch is applied, then the lack of a repository would cause the old hg to not get called. If someone *has* a repository in the build dir, I think we can assume they used a new enough hg to check it out...and if they didn't, that *is* a bug in their setup they should fix.
msg138643 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011年06月19日 16:38
Yes, it was committed to default.
> I think we can assume they used a new enough hg to check it out...and
> if they didn't, that *is* a bug in their setup they should fix.
Agreed.
msg139671 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2011年07月03日 07:17
435eec7b41f0 transplanted to 3.2 in 4e0c1128cda2.
msg154900 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2012年03月04日 15:02
Is there anything left to do here? It doesn't appear to be a release blocker anymore.
msg254886 - (view) Author: Luke Erlacher (Luke Erlacher) Date: 2015年11月19日 08:27
This is not fixed in 2.7.10.
msg256713 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2015年12月18日 23:01
Luke: since this issue is closed, please open a new 2.7 only issue with a reference to this one.
History
Date User Action Args
2022年04月11日 14:57:18adminsetgithub: 56555
2022年03月08日 05:30:02ezio.melottilinkissue2771 dependencies
2015年12月18日 23:01:28r.david.murraysetmessages: + msg256713
2015年11月19日 08:27:58Luke Erlachersetnosy: + Luke Erlacher
messages: + msg254886
2015年10月07日 02:50:51benjamin.petersonsetstatus: pending -> closed
resolution: fixed
2015年10月06日 17:44:14serhiy.storchakasetstatus: open -> pending
2012年03月04日 15:02:20georg.brandlsetpriority: release blocker -> normal

messages: + msg154900
2011年07月03日 07:17:58georg.brandlsetmessages: + msg139671
versions: - Python 3.2
2011年07月01日 16:49:57Arfreversetnosy: + Arfrever
2011年07月01日 16:26:04vstinnersetnosy: + vstinner
2011年06月19日 16:38:55eric.araujosetnosy: + eric.araujo
messages: + msg138643
2011年06月19日 16:36:45r.david.murraysetmessages: + msg138642
2011年06月19日 16:24:50benjamin.petersonsetmessages: + msg138640
title: Python source code build (release) depends on mercurial -> Python source code build fails with old mercurial
2011年06月18日 17:57:00r.david.murraysettitle: Python 2.7.2 source code build (release) depends on mercurial -> Python source code build (release) depends on mercurial
2011年06月18日 01:20:36ezio.melottisetmessages: + msg138564
2011年06月17日 18:55:59santoso.wijayasetnosy: + santoso.wijaya
2011年06月17日 13:51:55r.david.murraysetnosy: + ezio.melotti
messages: + msg138507
2011年06月17日 10:17:55schmirsetnosy: + schmir
messages: + msg138492
2011年06月16日 14:51:28r.david.murraysetmessages: + msg138445
2011年06月16日 14:34:53r.david.murraysetmessages: + msg138442
2011年06月16日 14:22:56r.david.murraysetpriority: normal -> release blocker
versions: + Python 3.2, Python 3.3
nosy: + georg.brandl, r.david.murray, benjamin.peterson

messages: + msg138440

stage: needs patch
2011年06月16日 10:41:36Graeme.Wintersetmessages: + msg138420
2011年06月16日 08:14:24Graeme.Wintercreate

AltStyle によって変換されたページ (->オリジナル) /