[oe] RFC: Staging layout and pkgconfig sysroot support

mark gross markgross at thegnar.org
Tue Sep 18 01:41:28 UTC 2007


On Mon, Sep 17, 2007 at 12:25:56AM +0100, Richard Purdie wrote:
> The sed code in pkgconfig.bbclass has always struck me as ugly. In an
> ideal world we shouldn't have to rewrite the contents of the pkgconfig
> files to make them work with OE.
> 
> Packages like dbus and eds are starting to add paths to runtime module
> and state directories into the pkgconfig files and OE's current approach
> totally breaks these.

Then shouldn't we beet on the dbus guys to not break things?

> 
> Assuming our staging directory looked like our target systems, the paths
> in the pkgconfig files would just need a path prepending to them to make
> them work properly. Convention in other places refers to this as a
> "sysroot". I found such a patch for pkgconfig on its mailing list which
> does this for -L and -I compiler options so I thought experiment a bit
> with it.
> 
> The big question is therefore whether we want staging to look like the
> target system? It simplifies some things and complicates others. The
> creation of two lib directories means more compiler options and more
> STAGING* variables. As yet I haven't touched on the up to four bin
> directories that could result (/bin, /sbin, /usr/bin, /usb/sbin)
> although thankfully its more native binaries we're interested in. In
> theory we could keep the existing layout for native packages and just
> change the layout of target systems...
> 
> I've experimented a bit and the changes below show what needed changes
> in poky to build up to gtk+. As can be seen, assumptions about the
> staging layout are spread about the metadata quite a bit. Having said
> that I think there is scope for some valid cleanups here regardless of
> which layout we end up choosing.
> 
> As I see it, changing to match the target system structure has the
> advantages:
> 
>  * "make install" could be used more directly with staging instead of 
>    the current two step system since the autoconf bindir / libdir / 
>    includedir paths will match
>  * Less manipulation of staged files should be needed since the 
>    directory structures match more
>  * pkgconfig with a sysroot option will "just work"
>  * libtool could in theory be patched to support the idea of a sysroot
>  * Package files match the layout in staging resulting in possibly 
>    simplified packages staging in the future
>  * Eventually might allow qemu to "boot" staging

This could be cool if I can hack the staging and run a command to
re-spin a hacked target image, or PXE boot the staging directory.
Otherwise this seems like a waste of time to do.

>  * Simplifies meta-toolchain slightly
> 
> and the disadvantages:
> 
>  * Breaks compatibility with existing builds quite fundamentally
>  * Will take a while to iron out all the bugs the change will introduce
>  * The existing different layout system stresses the packages and 
>    highlights bad assumptions in them which we lose.
> 
> I'm interested in people's views on whether this would be a worthwhile
> change or not? Should we change all staging layouts or leave say native
> packages as they are?

I'm not sure what the win is.  Seems like a lot of thrash for not much
return.


--mgross


> 
> As a first step I will investigate removing some of the hardcoded layout
> assumptions I've found so far as I think they're good to remove
> regardless of whether we change staging layout or not. In theory people
> or distros could maybe then choose their own layout even!
> 
> Cheers,
> 
> Richard
> 
> 
> Index: conf/bitbake.conf
> ===================================================================
> --- conf/bitbake.conf	(revision 2734)
> +++ conf/bitbake.conf	(working copy)
> @@ -167,17 +167,26 @@
>  B = "${S}"
>  
>  STAGING_DIR = "${TMPDIR}/staging"
> -STAGING_BINDIR = "${STAGING_DIR}/${HOST_SYS}/bin"
> -STAGING_BINDIR_CROSS = "${STAGING_DIR}/${BUILD_SYS}/bin/${HOST_SYS}"
> -STAGING_BINDIR_NATIVE = "${STAGING_DIR}/${BUILD_SYS}/bin"
> -STAGING_LIBDIR = "${STAGING_DIR}/${HOST_SYS}/lib"
> -STAGING_LIBDIR_NATIVE = "${STAGING_DIR}/${BUILD_SYS}/lib"
> +
> +STAGING_BINDIR_CROSS = "${STAGING_DIR}/${BUILD_SYS}/usr/bin/${HOST_SYS}"
> +STAGING_BINDIR_NATIVE = "${STAGING_DIR}/${BUILD_SYS}/usr/bin"
> +STAGING_LIBDIR_NATIVE = "${STAGING_DIR}/${BUILD_SYS}/usr/lib"
> +STAGING_INCDIR_NATIVE = "${STAGING_DIR}/${BUILD_SYS}/usr/include"
>  STAGING_ETCDIR_NATIVE = "${STAGING_DIR}/${BUILD_SYS}/etc"
> -STAGING_INCDIR = "${STAGING_DIR}/${HOST_SYS}/include"
> -STAGING_DATADIR = "${STAGING_DIR}/${HOST_SYS}/share"
> +
> +STAGING_BASELIBDIR_TARGET = "${STAGING_DIR}/${TARGET_SYS}/lib"
> +STAGING_LIBDIR_TARGET = "${STAGING_DIR}/${TARGET_SYS}/usr/lib"
> +STAGING_INCDIR_TARGET = "${STAGING_DIR}/${TARGET_SYS}/usr/include"
> +
> +STAGING_BINDIR = "${STAGING_DIR}/${HOST_SYS}/usr/bin"
> +STAGING_BASELIBDIR = "${STAGING_DIR}/${HOST_SYS}/lib"
> +STAGING_LIBDIR = "${STAGING_DIR}/${HOST_SYS}/usr/lib"
> +STAGING_INCDIR = "${STAGING_DIR}/${HOST_SYS}/usr/include"
> +STAGING_DATADIR = "${STAGING_DIR}/${HOST_SYS}/usr/share"
> +
>  STAGING_LOADER_DIR = "${STAGING_DIR}/${HOST_SYS}/loader"
>  STAGING_FIRMWARE_DIR = "${STAGING_DIR}/${HOST_SYS}/firmware"
> -STAGING_PYDIR = "${STAGING_DIR}/lib/python2.4"
> +STAGING_PYDIR = "${STAGING_DIR}/usr/lib/python2.4"
>  
>  DEPLOY_DIR = "${TMPDIR}/deploy"
>  DEPLOY_DIR_TAR = "${DEPLOY_DIR}/tar"
> @@ -290,9 +299,9 @@
>  # Build flags and options.
>  ##################################################################
>  
> -export BUILD_CPPFLAGS = "-isystem${STAGING_DIR}/${BUILD_SYS}/include"
> +export BUILD_CPPFLAGS = "-isystem${STAGING_INCDIR_NATIVE}"
>  export CPPFLAGS = "${TARGET_CPPFLAGS}"
> -export TARGET_CPPFLAGS = "-isystem${STAGING_DIR}/${TARGET_SYS}/include"
> +export TARGET_CPPFLAGS = "-isystem${STAGING_INCDIR_TARGET}"
>  
>  export BUILD_CFLAGS = "${BUILD_CPPFLAGS} ${BUILD_OPTIMIZATION}"
>  export CFLAGS = "${TARGET_CFLAGS}"
> @@ -302,12 +311,14 @@
>  export CXXFLAGS = "${TARGET_CXXFLAGS}"
>  export TARGET_CXXFLAGS = "${TARGET_CFLAGS} -fpermissive"
>  
> -export BUILD_LDFLAGS = "-L${STAGING_DIR}/${BUILD_SYS}/lib \
> -                        -Wl,-rpath-link,${STAGING_DIR}/${BUILD_SYS}/lib \
> -                        -Wl,-rpath,${STAGING_DIR}/${BUILD_SYS}/lib -Wl,-O1"
> +export BUILD_LDFLAGS = "-L${STAGING_LIBDIR_NATIVE} \
> +                        -Wl,-rpath-link,${STAGING_LIBDIR_NATIVE} \
> +                        -Wl,-rpath,${STAGING_LIBDIR_NATIVE} -Wl,-O1"
>  export LDFLAGS = "${TARGET_LDFLAGS}"
> -export TARGET_LDFLAGS = "-L${STAGING_DIR}/${TARGET_SYS}/lib \
> -                         -Wl,-rpath-link,${STAGING_DIR}/${TARGET_SYS}/lib \
> +export TARGET_LDFLAGS = "-L${STAGING_BASELIBDIR_TARGET} \
> +                         -Wl,-rpath-link,${STAGING_BASELIBDIR_TARGET} \
> +                         -L${STAGING_LIBDIR_TARGET} \
> +                         -Wl,-rpath-link,${STAGING_LIBDIR_TARGET} \
>                           -Wl,-O1"
>  
>  # Which flags to leave by strip-flags() in bin/build/oebuild.sh ?
> @@ -437,6 +448,7 @@
>  
>  export PKG_CONFIG_DIR = "${STAGING_LIBDIR}/pkgconfig"
>  export PKG_CONFIG_PATH = "${PKG_CONFIG_DIR}:${STAGING_DATADIR}/pkgconfig"
> +export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR}/${TARGET_SYS}"
>  export PKG_CONFIG_DISABLE_UNINSTALLED = "yes"
>  
>  export QMAKE_MKSPEC_PATH = "${STAGING_DIR}/${BUILD_SYS}/share/qmake"
> Index: classes/pkgconfig.bbclass
> ===================================================================
> --- classes/pkgconfig.bbclass	(revision 2734)
> +++ classes/pkgconfig.bbclass	(working copy)
> @@ -6,19 +6,21 @@
>  def get_pkgconfig_mangle(d):
>  	import bb.data
>  	s = "-e ''"
> -	if not bb.data.inherits_class('native', d):
> -		s += " -e 's:=${libdir}:=OELIBDIR:;'"
> -		s += " -e 's:=${includedir}:=OEINCDIR:;'"
> -		s += " -e 's:=${datadir}:=OEDATADIR:'"
> -		s += " -e 's:=${prefix}:=OEPREFIX:'"
> -		s += " -e 's:=${exec_prefix}:=OEEXECPREFIX:'"
> -		s += " -e 's:OELIBDIR:${STAGING_LIBDIR}:;'"
> -		s += " -e 's:OEINCDIR:${STAGING_INCDIR}:;'"
> -		s += " -e 's:OEDATADIR:${STAGING_DATADIR}:'"
> -		s += " -e 's:OEPREFIX:${STAGING_LIBDIR}/..:'"
> -		s += " -e 's:OEEXECPREFIX:${STAGING_LIBDIR}/..:'"
>  	return s
>  
> +#	if not bb.data.inherits_class('native', d):
> +#		s += " -e 's:=${libdir}:=OELIBDIR:;'"
> +#		s += " -e 's:=${includedir}:=OEINCDIR:;'"
> +#		s += " -e 's:=${datadir}:=OEDATADIR:'"
> +#		s += " -e 's:=${prefix}:=OEPREFIX:'"
> +#		s += " -e 's:=${exec_prefix}:=OEEXECPREFIX:'"
> +#		s += " -e 's:OELIBDIR:${STAGING_LIBDIR}:;'"
> +#		s += " -e 's:OEINCDIR:${STAGING_INCDIR}:;'"
> +#		s += " -e 's:OEDATADIR:${STAGING_DATADIR}:'"
> +#		s += " -e 's:OEPREFIX:${STAGING_LIBDIR}/..:'"
> +#		s += " -e 's:OEEXECPREFIX:${STAGING_LIBDIR}/..:'"
> +
> +
>  do_stage_append () {
>  	for pc in `find ${S} -name '*.pc' -type f | grep -v -- '-uninstalled.pc$'`; do
>  		pcname=`basename $pc`
> Index: classes/base.bbclass
> ===================================================================
> --- classes/base.bbclass	(revision 2734)
> +++ classes/base.bbclass	(working copy)
> @@ -673,11 +673,9 @@
>  	:
>  }
>  
> -do_populate_staging[dirs] = "${STAGING_DIR}/${TARGET_SYS}/bin ${STAGING_DIR}/${TARGET_SYS}/lib \
> -			     ${STAGING_DIR}/${TARGET_SYS}/include \
> -			     ${STAGING_DIR}/${BUILD_SYS}/bin ${STAGING_DIR}/${BUILD_SYS}/lib \
> -			     ${STAGING_DIR}/${BUILD_SYS}/include \
> -			     ${STAGING_DATADIR} \
> +do_populate_staging[dirs] = "${STAGING_BINDIR} ${STAGING_LIBDIR} ${STAGING_INCDIR} ${STAGING_DATADIR} \
> +			     ${STAGING_BINDIR_NATIVE} ${STAGING_LIBDIR_NATIVE} \
> +			     ${STAGING_DIR}/${BUILD_SYS}/usr/include \
>  			     ${S} ${B}"
>  
>  # Could be compile but populate_staging and do_install shouldn't run at the same time
> Index: classes/autotools.bbclass
> ===================================================================
> --- classes/autotools.bbclass	(revision 2734)
> +++ classes/autotools.bbclass	(working copy)
> @@ -97,9 +97,9 @@
>  			AUTOV=`automake --version |head -n 1 |sed "s/.* //;s/\.[0-9]\+$//"`
>  			automake --version
>  			echo "AUTOV is $AUTOV"
> -			install -d ${STAGING_DIR}/${HOST_SYS}/share/aclocal
> -			install -d ${STAGING_DIR}/${HOST_SYS}/share/aclocal-$AUTOV
> -			acpaths="$acpaths -I ${STAGING_DIR}/${HOST_SYS}/share/aclocal-$AUTOV -I ${STAGING_DIR}/${HOST_SYS}/share/aclocal"
> +			install -d ${STAGING_DIR}/${HOST_SYS}/usr/share/aclocal
> +			install -d ${STAGING_DIR}/${HOST_SYS}/usr/share/aclocal-$AUTOV
> +			acpaths="$acpaths -I ${STAGING_DIR}/${HOST_SYS}/usr/share/aclocal-$AUTOV -I ${STAGING_DIR}/${HOST_SYS}/usr/share/aclocal"
>  			# autoreconf is too shy to overwrite aclocal.m4 if it doesn't look
>  			# like it was auto-generated.  Work around this by blowing it away
>  			# by hand, unless the package specifically asked not to run aclocal.
> Index: classes/native.bbclass
> ===================================================================
> --- classes/native.bbclass	(revision 2734)
> +++ classes/native.bbclass	(working copy)
> @@ -47,39 +47,38 @@
>  export RANLIB = "${HOST_PREFIX}ranlib"
>  export STRIP = "${HOST_PREFIX}strip"
>  
> -
>  # Path prefixes
> -base_prefix = "${exec_prefix}"
> -prefix = "${STAGING_DIR}"
> -exec_prefix = "${STAGING_DIR}/${BUILD_ARCH}-${BUILD_OS}"
> +base_prefix = "${STAGING_DIR}/${BUILD_ARCH}-${BUILD_OS}"
> +prefix = "${base_prefix}/usr"
> +exec_prefix = "${prefix}"
>  
>  # Base paths
> -base_bindir = "${base_prefix}/bin"
> -base_sbindir = "${base_prefix}/bin"
> -base_libdir = "${base_prefix}/lib"
> +#base_bindir = "${base_prefix}/bin"
> +#base_sbindir = "${base_prefix}/bin"
> +#base_libdir = "${base_prefix}/lib"
>  
>  # Architecture independent paths
> -sysconfdir = "${prefix}/etc"
> -sharedstatedir = "${prefix}/com"
> -localstatedir = "${prefix}/var"
> -infodir = "${datadir}/info"
> -mandir = "${datadir}/man"
> -docdir = "${datadir}/doc"
> -servicedir = "${prefix}/srv"
> +sysconfdir = "${base_prefix}/etc"
> +# sharedstatedir = "${base_prefix}/com"
> +localstatedir = "${base_prefix}/var"
> +#infodir = "${datadir}/info"
> +#mandir = "${datadir}/man"
> +#docdir = "${datadir}/doc"
> +servicedir = "${base_prefix}/srv"
>  
>  # Architecture dependent paths
> -bindir = "${exec_prefix}/bin"
> -sbindir = "${exec_prefix}/bin"
> -libexecdir = "${exec_prefix}/libexec"
> -libdir = "${exec_prefix}/lib"
> -includedir = "${exec_prefix}/include"
> -oldincludedir = "${exec_prefix}/include"
> +#bindir = "${exec_prefix}/bin"
> +#sbindir = "${exec_prefix}/bin"
> +#libexecdir = "${exec_prefix}/libexec"
> +#libdir = "${exec_prefix}/lib"
> +#includedir = "${exec_prefix}/include"
> +#oldincludedir = "${exec_prefix}/include"
>  
>  # Datadir is made arch dependent here, primarily
>  # for autoconf macros, and other things that
>  # may be manipulated to handle crosscompilation
>  # issues.
> -datadir = "${exec_prefix}/share"
> +#datadir = "${exec_prefix}/share"
>  
>  do_stage () {
>  	if [ "${INHIBIT_NATIVE_STAGE_INSTALL}" != "1" ]
> @@ -93,3 +92,4 @@
>  }
>  
>  PKG_CONFIG_PATH .= "${EXTRA_NATIVE_PKGCONFIG_PATH}"
> +export PKG_CONFIG_SYSROOT_DIR = ""
> \ No newline at end of file
> Index: packages/db/db_4.2.52.bb
> ===================================================================
> --- packages/db/db_4.2.52.bb	(revision 2734)
> +++ packages/db/db_4.2.52.bb	(working copy)
> @@ -71,7 +71,7 @@
>  CONFIG_SITE = ""
>  do_configure() {
>  	rm -f ${S}/config.sub
> -	cp ${STAGING_DIR}/${BUILD_SYS}/share/gnu-config/config.sub ${S}/config.sub 
> +	cp ${STAGING_DIR}/${BUILD_SYS}/usr/share/gnu-config/config.sub ${S}/config.sub 
>  	oe_runconf
>  }
>  
> Index: packages/fontconfig/fontconfig_2.4.2.bb
> ===================================================================
> --- packages/fontconfig/fontconfig_2.4.2.bb	(revision 2734)
> +++ packages/fontconfig/fontconfig_2.4.2.bb	(working copy)
> @@ -44,7 +44,7 @@
>  	for i in ${S}/fontconfig/*.h; do install -m 0644 $i ${STAGING_INCDIR}/fontconfig/; done
>  }
>  
> -BUILD_CFLAGS += " -I${STAGING_DIR}/${BUILD_SYS}/include/freetype2"
> +BUILD_CFLAGS += " -I${STAGING_DIR}/${BUILD_SYS}/usr/include/freetype2"
>  
>  do_configure_append () {
>  	sed -i 's|LDFLAGS =.*|LDFLAGS =|' fc-case/Makefile
> Index: packages/glibc/glibc_2.5.bb
> ===================================================================
> --- packages/glibc/glibc_2.5.bb	(revision 2734)
> +++ packages/glibc/glibc_2.5.bb	(working copy)
> @@ -154,10 +154,11 @@
>  }
>  
>  do_stage() {
> -	rm -f ${STAGING_LIBDIR}/libc.so.6
> +	STAGING_BASE_LIBDIR='${STAGING_DIR}/${HOST_SYS}${base_libdir}'
> +	rm -f $STAGING_BASE_LIBDIR/libc.so.6
>  	oe_runmake 'install_root=${STAGING_DIR}/${HOST_SYS}' \
> -		   'includedir=/include' 'libdir=/lib' 'slibdir=/lib' \
> -		   '${STAGING_LIBDIR}/libc.so.6' \
> +		   'includedir=${includedir}' 'libdir=${libdir}' 'slibdir=${base_libdir}' \
> +		   "$STAGING_BASE_LIBDIR/libc.so.6" \
>  		   install-headers install-lib
>  
>  	install -d ${STAGING_INCDIR}/gnu \
> @@ -171,10 +172,10 @@
>  		install -m 0644 ${S}/sunrpc/rpcsvc/$h ${STAGING_INCDIR}/rpcsvc/
>  	done
>  	for i in libc.a libc_pic.a libc_nonshared.a; do
> -		install -m 0644 ${B}/$i ${STAGING_LIBDIR}/ || die "failed to install $i"
> +		install -m 0644 ${B}/$i $STAGING_BASE_LIBDIR/ || die "failed to install $i"
>  	done
> -	echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > ${STAGING_LIBDIR}/libpthread.so
> -	echo 'GROUP ( libc.so.6 libc_nonshared.a )' > ${STAGING_LIBDIR}/libc.so
> +	echo 'GROUP ( libpthread.so.0 libpthread_nonshared.a )' > $STAGING_BASE_LIBDIR/libpthread.so
> +	echo 'GROUP ( libc.so.6 libc_nonshared.a )' > $STAGING_BASE_LIBDIR/libc.so
>  
>  	rm -f ${CROSS_DIR}/${TARGET_SYS}/lib/libc.so.6
>  	oe_runmake 'install_root=${CROSS_DIR}/${TARGET_SYS}' \
> Index: packages/pkgconfig/pkgconfig.inc
> ===================================================================
> --- packages/pkgconfig/pkgconfig.inc	(revision 2736)
> +++ packages/pkgconfig/pkgconfig.inc	(working copy)
> @@ -8,6 +8,7 @@
>  PR = "r1"
>  
>  SRC_URI = "http://pkgconfig.freedesktop.org/releases/pkg-config-${PV}.tar.gz \
> +           file://sysroot-support.patch;patch=1 \
>             file://glibconfig-sysdefs.h"
>  
>  S = "${WORKDIR}/pkg-config-${PV}/"
> Index: packages/pkgconfig/pkgconfig-0.22/sysroot-support.patch
> ===================================================================
> --- packages/pkgconfig/pkgconfig-0.22/sysroot-support.patch	(revision 0)
> +++ packages/pkgconfig/pkgconfig-0.22/sysroot-support.patch	(revision 0)
> @@ -0,0 +1,102 @@
> +Add support for PKG_CONFIG_SYSROOT_DIR to pkgconfig
> +
> +---
> + main.c       |    5 ++++-
> + pkg-config.1 |    9 +++++++++
> + pkg.c        |   14 +++++++++++++-
> + pkg.h        |    3 +++
> + 4 files changed, 29 insertions(+), 2 deletions(-)
> +
> +Index: pkg-config-0.22/main.c
> +===================================================================
> +--- pkg-config-0.22.orig/main.c	2007-09-14 10:20:15.000000000 +0100
> ++++ pkg-config-0.22/main.c	2007-09-14 10:22:41.000000000 +0100
> +@@ -46,6 +46,8 @@
> + static int want_debug_spew = 0;
> + static int want_verbose_errors = 0;
> + static int want_stdout_errors = 0;
> ++char *pcsysrootdir = NULL;
> ++
> + 
> + void
> + debug_spew (const char *format, ...)
> +@@ -196,7 +198,7 @@ main (int argc, char **argv)
> +   GString *str;
> +   GSList *packages = NULL;
> +   char *search_path;
> +-  char *pcbuilddir;
> ++	char *pcbuilddir;
> +   const char *pkglibdir;
> +   char **search_dirs;
> +   char **iter;
> +@@ -345,6 +347,7 @@ main (int argc, char **argv)
> +       }
> +   }
> + #endif
> ++  pcsysrootdir = getenv ("PKG_CONFIG_SYSROOT_DIR");
> + 
> +   pcbuilddir = getenv ("PKG_CONFIG_TOP_BUILD_DIR");
> +   if (pcbuilddir)
> +Index: pkg-config-0.22/pkg.c
> +===================================================================
> +--- pkg-config-0.22.orig/pkg.c	2007-09-14 10:20:15.000000000 +0100
> ++++ pkg-config-0.22/pkg.c	2007-09-14 10:22:41.000000000 +0100
> +@@ -479,11 +479,23 @@ string_list_to_string (GSList *list)
> +   GSList *tmp;
> +   GString *str = g_string_new ("");
> +   char *retval;
> ++	int offset=0;
> +   
> +   tmp = list;
> +   while (tmp != NULL)
> +     {
> +-      g_string_append (str, tmp->data);
> ++			if (pcsysrootdir != NULL)
> ++				{
> ++					if (!strncmp(tmp->data,"-I",2) ||
> ++							!strncmp(tmp->data,"-L",2))
> ++						{
> ++							offset=2;
> ++							g_string_append_c (str,((char*)tmp->data)[0]);
> ++							g_string_append_c (str,((char*)tmp->data)[1]);
> ++							g_string_append (str,pcsysrootdir);
> ++						}
> ++				}
> ++      g_string_append (str, tmp->data+offset);
> +       g_string_append_c (str, ' ');
> +       
> +       tmp = g_slist_next (tmp);
> +Index: pkg-config-0.22/pkg-config.1
> +===================================================================
> +--- pkg-config-0.22.orig/pkg-config.1	2007-09-14 10:20:15.000000000 +0100
> ++++ pkg-config-0.22/pkg-config.1	2007-09-14 10:23:08.000000000 +0100
> +@@ -260,6 +260,15 @@ Don't strip -I/usr/include out of cflags
> + Don't strip -L/usr/lib out of libs
> + 
> + .TP
> ++.I "PKG_CONFIG_SYSROOT_DIR"
> ++Modify -I and -L to use the directories located in target sysroot.
> ++this option is usefull when crosscompiling package that use pkg-config
> ++to determine CFLAGS anf LDFLAGS. -I and -L are modified to point to
> ++the new system root. this means that a -I/usr/include/libfoo will
> ++become -I/var/target/usr/include/libfoo with a PKG_CONFIG_SYSROOT_DIR
> ++equal to /var/target (same rule apply to -L)
> ++
> ++.TP
> + .I "PKG_CONFIG_LIBDIR"
> + Replaces the default \fIpkg-config\fP search directory.
> + 
> +Index: pkg-config-0.22/pkg.h
> +===================================================================
> +--- pkg-config-0.22.orig/pkg.h	2007-09-14 10:20:15.000000000 +0100
> ++++ pkg-config-0.22/pkg.h	2007-09-14 10:22:41.000000000 +0100
> +@@ -123,6 +123,9 @@ void disable_private_libs(void);
> + /* If TRUE, do not automatically prefer uninstalled versions */
> + extern gboolean disable_uninstalled;
> + 
> ++/* string that contain environment */
> ++extern char* pcsysrootdir;
> ++
> + #ifdef G_OS_WIN32
> + /* If TRUE, do not automatically define "prefix"  while
> +  * parsing each .pc file */
> Index: packages/qemu/qemu-native_20070613.bb
> ===================================================================
> --- packages/qemu/qemu-native_20070613.bb	(revision 2734)
> +++ packages/qemu/qemu-native_20070613.bb	(working copy)
> @@ -1,7 +1,7 @@
>  require qemu_${PV}.bb
>  inherit native
>  DEPENDS = "zlib-native"
> -prefix = "${STAGING_DIR}/${BUILD_SYS}"
> +#prefix = "${STAGING_DIR}/${BUILD_SYS}"
>  
>  python __anonymous() {
>      from bb import which, data
> 
> 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20070917/cc50ad69/attachment-0005.sig>


More information about the Openembedded-devel mailing list