[oe] [PATCH] python-{native}-2.6.5: Fix parallel build.

Khem Raj raj.khem at gmail.com
Sat Oct 2 18:10:07 UTC 2010


On Sat, Oct 2, 2010 at 9:48 AM, Paul Menzel
<paulepanter at users.sourceforge.net> wrote:
> Date: Sat, 2 Oct 2010 12:51:03 +0200
>
> Randomly the build failed for me with the following error message.
>
>    libpython2.6.so: undefined reference to `_PyParser_Grammar'
>
> The applied patch in [5] tried to fix this problem, but it turns out that this was due to a possible race and already known in OpenOffice too [3].
>
> R. David Murray (dmalcolm) <dmalcolm at fedoraproject.org> fixed this in Fedora [1] and I applied his patch.
>
> I reported this issue upstream [4] and this will only be fixed in Python 2.7, so we have to keep this patch for Python 2.6.
>
> [1] http://pkgs.fedoraproject.org/gitweb/?p=python.git;a=commitdiff;h=b95f6cc2ca6a009f97436c6aa16cfd70547353d9
> [2] http://www.openoffice.org/issues/show_bug.cgi?id=114866
> [3] http://doc.services.openoffice.org/wiki/RedTinderboxStatusInEIS
> [4] http://bugs.python.org/issue10013
> [5] http://patchwork.openembedded.org/patch/1899/
>
> Signed-off-by: Paul Menzel <paulepanter at users.sourceforge.net>

looks ok see small comments below

> ---
>  .../python/python-2.6.5/20-fix-parallel-make.patch |   40 ++++++++++++++++++++
>  recipes/python/python-native_2.6.5.bb              |    2 +-
>  recipes/python/python_2.6.5.bb                     |    5 +-
>  3 files changed, 44 insertions(+), 3 deletions(-)
>  create mode 100644 recipes/python/python-2.6.5/20-fix-parallel-make.patch
>
> diff --git a/recipes/python/python-2.6.5/20-fix-parallel-make.patch b/recipes/python/python-2.6.5/20-fix-parallel-make.patch
> new file mode 100644
> index 0000000..1f7b24e
> --- /dev/null
> +++ b/recipes/python/python-2.6.5/20-fix-parallel-make.patch
> @@ -0,0 +1,40 @@
> +upstream: <http://bugs.python.org/issue10013>
> +comment: As in the comment in the issue tracker this is fixed for py3k a little differently <http://svn.python.org/view?view=rev&revision=84068>. This patch is taken from Fedora.
> +
> +diff -up Python-2.7/Makefile.pre.in.fix-parallel-make Python-2.7/Makefile.pre.in
> +--- Python-2.7/Makefile.pre.in.fix-parallel-make       2010-07-22 15:01:39.567996932 -0400
> ++++ Python-2.7/Makefile.pre.in 2010-07-22 15:47:02.437998509 -0400
> +@@ -198,6 +198,7 @@ SIGNAL_OBJS=       @SIGNAL_OBJS@
> +
> + ##########################################################################
> + # Grammar
> ++GRAMMAR_STAMP=        $(srcdir)/grammar-stamp
> + GRAMMAR_H=    $(srcdir)/Include/graminit.h
> + GRAMMAR_C=    $(srcdir)/Python/graminit.c
> + GRAMMAR_INPUT=        $(srcdir)/Grammar/Grammar
> +@@ -515,10 +516,24 @@ Modules/getpath.o: $(srcdir)/Modules/get
> + Modules/python.o: $(srcdir)/Modules/python.c
> +       $(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.c
> +
> ++# GNU "make" interprets rules with two dependents as two copies of the rule.
> ++#
> ++# In a parallel build this can lead to pgen being run twice, once for each of
> ++# GRAMMAR_H and GRAMMAR_C, leading to race conditions in which the compiler
> ++# reads a partially-overwritten copy of one of these files, leading to syntax
> ++# errors (or linker errors if the fragment happens to be syntactically valid C)
> ++#
> ++# See http://www.gnu.org/software/hello/manual/automake/Multiple-Outputs.html
> ++# for more information.
> ++#
> ++# Introduce ".grammar-stamp" as a contrived single output from PGEN to avoid
> ++# this:
> ++$(GRAMMAR_H) $(GRAMMAR_C): $(GRAMMAR_STAMP)
> +
> +-$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
> ++$(GRAMMAR_STAMP): $(PGEN) $(GRAMMAR_INPUT)
> +               -@$(INSTALL) -d Include
> +               -$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
> ++              touch $(GRAMMAR_STAMP)
> +
> + $(PGEN):      $(PGENOBJS)
> +               $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
> diff --git a/recipes/python/python-native_2.6.5.bb b/recipes/python/python-native_2.6.5.bb
> index 76fbbb6..12c2252 100644
> --- a/recipes/python/python-native_2.6.5.bb
> +++ b/recipes/python/python-native_2.6.5.bb
> @@ -11,11 +11,11 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
>            file://10-distutils-fix-swig-parameter.patch \
>            file://11-distutils-never-modify-shebang-line.patch \
>            file://12-distutils-prefix-is-inside-staging-area.patch \
> +           file://20-fix-parallel-make.patch


Did you forget a '\' here ?

>            file://debug.patch \
>            file://nohostlibs.patch"
>  SRC_URI[md5sum] = "6bef0417e71a1a1737ccf5750420fdb3"
>  SRC_URI[sha256sum] = "62da62eb685621ede2be1275f11b89fa0e0be578db8daa5320d0a7855c0a9ebc"
> -
>  S = "${WORKDIR}/Python-${PV}"
>
>  inherit native
> diff --git a/recipes/python/python_2.6.5.bb b/recipes/python/python_2.6.5.bb
> index ecd9f78..2c26512 100644
> --- a/recipes/python/python_2.6.5.bb
> +++ b/recipes/python/python_2.6.5.bb
> @@ -3,7 +3,7 @@ DEPENDS = "python-native db gdbm openssl readline sqlite3 tcl zlib\
>            ${@base_contains('DISTRO_FEATURES', 'tk', 'tk', '', d)}"
>  DEPENDS_sharprom = "python-native db readline zlib gdbm openssl"
>  # set to .0 on every increase of INC_PR
> -PR = "${INC_PR}.0"
> +PR = "${INC_PR}.1"
>
>  SRC_URI = "\
>   http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
> @@ -14,8 +14,9 @@ SRC_URI = "\
>   file://04-default-is-optimized.patch \
>   file://05-enable-ctypes-cross-build.patch \
>   file://06-ctypes-libffi-fix-configure.patch \
> +  file://20-fix-parallel-make.patch \
>   file://99-ignore-optimization-flag.patch \
> -  file://sitecustomize.py \
> +  file://sitecustomize.py


you forget '\' here too

>  "
>  SRC_URI[md5sum] = "6bef0417e71a1a1737ccf5750420fdb3"
>  SRC_URI[sha256sum] = "62da62eb685621ede2be1275f11b89fa0e0be578db8daa5320d0a7855c0a9ebc"
> --
> 1.7.1
>
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
>
>




More information about the Openembedded-devel mailing list