[oe] pygtksourceview-2.10.1: task compile fails, because `PYGOBJECT_DATADIR` not taken from staging directory (was: $(srcdir) not substituted with staging directory)

Paul Menzel paulepanter at users.sourceforge.net
Wed Mar 16 10:49:01 UTC 2011


Am Dienstag, den 15.03.2011, 09:22 -0700 schrieb Khem Raj:
> On Tue, Mar 15, 2011 at 6:10 AM, Paul Menzel wrote:
> > Dear OE folks,
> >
> >
> > task compile of `pygtksourceview-2.10.1.bb` fails with the following
> > error.
> >
> >        + do_compile
> >        + base_do_compile
> >        + '[' -e Makefile -o -e makefile -o -e GNUmakefile ']'
> >        + oe_runmake
> >        + oenote make -j4
> >        + echo NOTE: 'make -j4'
> >        NOTE: make -j4
> >        + make -j4
> >        make  all-recursive
> >        make[1]: Entering directory `/oe/build-angstrom-next/angstrom-dev/work/armv7a-angstrom-linux-gnueabi/python-pygtksourceview-2.10.1-r0/pygtksourceview-2.10.1'
> >        Making all in test
> >        make[2]: Entering directory `/oe/build-angstrom-next/angstrom-dev/work/armv7a-angstrom-linux-gnueabi/python-pygtksourceview-2.10.1-r0/pygtksourceview-2.10.1/test'
> >        make[2]: Nothing to be done for `all'.
> >        make[2]: Leaving directory `/oe/build-angstrom-next/angstrom-dev/work/armv7a-angstrom-linux-gnueabi/python-pygtksourceview-2.10.1-r0/pygtksourceview-2.10.1/test'
> >        Making all in docs
> >        make[2]: Entering directory `/oe/build-angstrom-next/angstrom-dev/work/armv7a-angstrom-linux-gnueabi/python-pygtksourceview-2.10.1-r0/pygtksourceview-2.10.1/docs'
> >        /oe/build-angstrom-next/angstrom-dev/sysroots/i686-linux/usr/bin/python -c 'import datetime; print datetime.date.today()' > reference/builddate.xml
> >        /oe/build-angstrom-next/angstrom-dev/sysroots/i686-linux/usr/bin/xsltproc --nonet --xinclude -o ../docs/html/ \
> >                         --path ../docs/reference:./reference \
> >                         --stringparam gtkdoc.bookname "pygtksourceview2" \
> >                         --stringparam gtkdoc.version . \
> >                         /usr/share/pygobject/xsl/ref-html-style.xsl ./reference/gtksourceview2-ref.xml
> >        warning: failed to load external entity "/usr/share/pygobject/xsl/ref-html-style.xsl"
> >        cannot parse /usr/share/pygobject/xsl/ref-html-style.xsl
> >        make[2]: *** [build_stamp] Error 4
> >        make[2]: Leaving directory `/oe/build-angstrom-next/angstrom-dev/work/armv7a-angstrom-linux-gnueabi/python-pygtksourceview-2.10.1-r0/pygtksourceview-2.10.1/docs'
> >        make[1]: *** [all-recursive] Error 1
> >        make[1]: Leaving directory `/oe/build-angstrom-next/angstrom-dev/work/armv7a-angstrom-linux-gnueabi/python-pygtksourceview-2.10.1-r0/pygtksourceview-2.10.1'
> >        make: *** [all] Error 2
> >        + die 'oe_runmake failed'
> >
> > Apparently in
> >
> >        $ more docs/Makefile.am
> >        […]
> >        build_stamp: $(REFERENCE_DEPS)reference/builddate.xml
> >                xsltproc --nonet --xinclude -o $(BUILDDIR)/html/ \
> >                         --path $(BUILDDIR)/reference:$(srcdir)/reference \
> >                         --stringparam gtkdoc.bookname "pygtksourceview2" \
> >                         --stringparam gtkdoc.version ${REF_VERSION} \
> >                         $(HTML_STYLE) $(srcdir)/reference/gtksourceview2-ref.xml
> >                $(PYGOBJECT_FIXXREF) -i $(PYGOBJECT_PYGDOCS) $(BUILDDIR)/html
> >                touch $@
> >        […]
> >
> > `$(srcdir)` is not set to the staging directory.
> >
> >        angstrom-dev/work/armv7a-angstrom-linux-gnueabi/python-pygtksourceview-2.10.1-r0/pygtksourceview-2.10.1/Makefile:srcdir = .
> >
> > How is that dealt with in OE? Or should something else be used in
> > `Makefile.am`?
> 
> EXTRA_OEMAKE += "srcdir=${S}" or something like that might help may be
> it needs a dir below $S

Thank you for your answer and help. I found that `configure` also seems
to have an option to do this

        $ ./configure --help
              --srcdir=DIR        find the sources in DIR [configure dir or `..']

which could be passed using `EXTRA_OECONF += "--srcdir=${S}"`.

Anyway reading the error message again, it turns out to be a different
problem.

`/usr/share/pygobject/xsl/ref-html-style.xsl` is the value of `
$(HTML_STYLE)` which is defined the following way.

        ./docs/Makefile.am:HTML_STYLE = $(PYGOBJECT_DATADIR)/pygobject/xsl/ref-html-style.xsl

`PYGOBJECT_DATADIR` is set in `configure.ac`.

        ./configure.ac:PYGOBJECT_DATADIR=`$PKG_CONFIG --variable=datadir pygobject-2.0`
        ./configure.ac:AC_SUBST(PYGOBJECT_DATADIR)

So it looks like a problem with pkg-config program.

        $ find angstrom-dev/ -iname pygobject*.pc
        angstrom-dev/sysroots/i686-linux/usr/lib/pkgconfig/pygobject-2.0.pc
        angstrom-dev/sysroots/armv7a-angstrom-linux-gnueabi/usr/lib/pkgconfig/pygobject-2.0.pc

The content is the following.

        $ less angstrom-dev/sysroots/i686-linux/usr/lib/pkgconfig/pygobject-2.0.pc
        prefix=/oe/build-angstrom-next/angstrom-dev/sysroots/i686-linux/usr
        prefix=/oe/build-angstrom-next/angstrom-dev/sysroots/i686-linux/usr
        exec_prefix=/oe/build-angstrom-next/angstrom-dev/sysroots/i686-linux/usr
        includedir=/oe/build-angstrom-next/angstrom-dev/sysroots/i686-linux/usr/include
        datarootdir=${prefix}/share
        datadir=/oe/build-angstrom-next/angstrom-dev/sysroots/i686-linux/usr/share
        libdir=/oe/build-angstrom-next/angstrom-dev/sysroots/i686-linux/usr/lib 
        
        # you can use the --variable=pygtkincludedir argument to
        # pkg-config to get this value.  You might want to use this to
        # install additional headers.
        pygtkincludedir=${includedir}/pygtk-2.0
        fixxref=${datadir}/pygobject/xsl/fixxref.py
        pygdocs=${datadir}/gtk-doc/html/pygobject
        defsdir=${datadir}/pygobject/2.0/defs
        codegendir=${datadir}/pygobject/2.0/codegen
        
        Name: PyGObject
        Description: Python bindings for GObject
        Requires: gobject-2.0
        Requires.private:
        Version: 2.20.0
        Cflags: -I${pygtkincludedir}

and

        $ more angstrom-dev/sysroots/armv7a-angstrom-linux-gnueabi/usr/lib/pkgconfig/pygobject-2.0.pc
        prefix=/usr
        exec_prefix=/usr
        includedir=/usr/include
        datarootdir=${prefix}/share
        datadir=/usr/share
        libdir=/usr/lib
        
        # you can use the --variable=pygtkincludedir argument to
        # pkg-config to get this value.  You might want to use this to
        # install additional headers.
        pygtkincludedir=${includedir}/pygtk-2.0
        fixxref=${datadir}/pygobject/xsl/fixxref.py
        pygdocs=${datadir}/gtk-doc/html/pygobject
        defsdir=${datadir}/pygobject/2.0/defs
        codegendir=${datadir}/pygobject/2.0/codegen
        
        Name: PyGObject
        Description: Python bindings for GObject
        Requires: gobject-2.0
        Requires.private: libffi
        Version: 2.20.0
        Cflags: -I${pygtkincludedir}

So why does not pkg-config return the value for the staging directory?
This seems to happen for a lot of GTK/GNOME programs (`git grep
'${STAGING_DATADIR}' recipes/`) and I have experienced that before
[1][2].


Thanks,

Paul


[1] http://lists.linuxtogo.org/pipermail/openembedded-devel/2010-October/025287.html
[2] Also with Evince or GNOME Games, but I cannot find the messages in
the archive, where I was told that it is no problem because if it was
there would be a lot more breakage.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20110316/fc398be3/attachment-0002.sig>


More information about the Openembedded-devel mailing list