* [RFC] changing staging layout based on MULTIMACH_TARGET_SYS
@ 2008-07-24 9:14 Koen Kooi
2008-08-05 13:10 ` Florian Boor
0 siblings, 1 reply; 3+ messages in thread
From: Koen Kooi @ 2008-07-24 9:14 UTC (permalink / raw)
To: openembedded-devel
Hi,
Lately I've been encountering various build problems that are caused by
OE lumping all my ARM build together in
staging/arm-angstrom-linux-gnueabi, which isn't quite right for the
following reasons:
* it mixes hard- and softfloat when doing armv5te and armv6 builds,
which introduces subtle compilation problems. The resulting binaries
work fine together on the target, as one would expect with EABI, but
mixing them in staging leads to troubles
* In an ideal world we would use a single compiler version for all
subarchs, but for arm we use 4.2.4 for armv4, armv4t, armv5te and armv6,
but 4.3.1 for armv7a. C++ apps don't like that
* You can end up statically linking an armv6 lib into an armv5te application
The same problems exist for powerpc (ppc405 vs ppc603e).
The change basically boils down to this on bitbake.conf:
-STAGING_BINDIR_CROSS = "${STAGING_DIR_NATIVE}${layout_bindir}/${HOST_SYS}"
+STAGING_BINDIR_CROSS =
"${STAGING_DIR_NATIVE}${layout_bindir}/${MULTIMACH_HOST_SYS}"
-STAGING_DIR_HOST = "${STAGING_DIR}/${HOST_SYS}"
+STAGING_DIR_HOST = "${STAGING_DIR}/${MULTIMACH_HOST_SYS}"
-STAGING_DIR_TARGET = "${STAGING_DIR}/${TARGET_SYS}"
+STAGING_DIR_TARGET = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}"
Richard and I have been talking about this for a while now and the
change landed in Poky last week.
This is however an ABI break for staging, so we need to do this as well:
--- conf/sanity.conf 2008/07/19 11:57:00 4892
+++ conf/sanity.conf 2008/07/19 11:59:42 4893
@@ -11,7 +11,7 @@
# that breaks the format and have been previously discussed on the
mailing list
# with general agreement from the core team.
#
-SANITY_ABI = "1"
+SANITY_ABI = "2"
SANITY_ABIFILE = "${TMPDIR}/abi_version"
And as the diff points out, ABI breaks have to be discussed on the
mailinglist.
I'd like to apply this right after the toolchain build order changes to
minimize the number of full rebuilds people have to do.
Comments, objections?
regards,
Koen
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [RFC] changing staging layout based on MULTIMACH_TARGET_SYS
@ 2008-07-28 12:43 Marcin Juszkiewicz
0 siblings, 0 replies; 3+ messages in thread
From: Marcin Juszkiewicz @ 2008-07-28 12:43 UTC (permalink / raw)
To: openembedded-devel
[-- Attachment #1: Type: text/plain, Size: 983 bytes --]
On Thursday 24 of July 2008 11:14:40 Koen Kooi wrote:
> * In an ideal world we would use a single compiler version for all
> subarchs, but for arm we use 4.2.4 for armv4, armv4t, armv5te and
> armv6, but 4.3.1 for armv7a. C++ apps don't like that
I just ended Poky build for armv4t/5te/6/7a with gcc 4.3.1 and poky-
image-sato got built for each architecture.
> Richard and I have been talking about this for a while now and the
> change landed in Poky last week.
> I'd like to apply this right after the toolchain build order changes
> to minimize the number of full rebuilds people have to do.
> Comments, objections?
+1 from me as this helps to get ARM builds more sane.
It will also break some recipes which works fine now. Thats due to fact
that some stuff (like distutils from Python) use ARCH to create paths.
Attached patch is fast hack to make Python buildable after staging
changes. Would be nice if someone (Mickeyl?) would review it.
[-- Attachment #2: python-distutils-hack.patch --]
[-- Type: text/x-patch, Size: 4325 bytes --]
diff --git a/trunk/meta-extras/packages/python/python-native_2.5.1.bb b/trunk/meta-extras/packages/python/python-native_2.5.1.bb
index ea6e257..21e5c79 100644
--- a/trunk/meta-extras/packages/python/python-native_2.5.1.bb
+++ b/trunk/meta-extras/packages/python/python-native_2.5.1.bb
@@ -4,15 +4,19 @@ LICENSE = "PSF"
SECTION = "devel/python"
PRIORITY = "optional"
DEPENDS = ""
-PR = "ml1"
+PR = "ml3"
EXCLUDE_FROM_WORLD = "1"
-SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
- file://bindir-libdir.patch;patch=1 \
- file://cross-distutils.patch;patch=1 \
- file://dont-modify-shebang-line.patch;patch=1 \
- file://default-is-optimized.patch;patch=1"
+SRC_URI = "\
+ http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \
+ file://bindir-libdir.patch;patch=1 \
+ file://cross-distutils.patch;patch=1 \
+ file://dont-modify-shebang-line.patch;patch=1 \
+ file://default-is-optimized.patch;patch=1 \
+ file://catchup-with-swig.patch;patch=1 \
+ file://fix-staging.patch;patch=1 \
+"
S = "${WORKDIR}/Python-${PV}"
inherit autotools native
@@ -22,12 +26,8 @@ exec_prefix = "${STAGING_DIR_NATIVE}/${layout_exec_prefix}"
EXTRA_OECONF = "--with-threads --with-pymalloc --with-cyclic-gc \
--without-cxx --with-signal-module --with-wctype-functions"
-EXTRA_OEMAKE = 'BUILD_SYS="" HOST_SYS=""'
-
-#do_configure() {
-# # the autofoo stuff is too old to allow regenerating
-# oe_runconf
-#}
+EXTRA_OEMAKE = 'BUILD_SYS="" HOST_SYS="" STAGING_LIBDIR=${STAGING_LIBDIR} \
+ STAGING_INCDIR=${STAGING_INCDIR}'
do_stage_append() {
install -m 0755 Parser/pgen ${STAGING_BINDIR_NATIVE}/
diff --git a/trunk/meta-extras/packages/python/python-scons-native_0.97.bb b/trunk/meta-extras/packages/python/python-scons-native_0.97.bb
index 31bce55..45eeee1 100644
--- a/trunk/meta-extras/packages/python/python-scons-native_0.97.bb
+++ b/trunk/meta-extras/packages/python/python-scons-native_0.97.bb
@@ -4,6 +4,8 @@ DEPENDS = "python-native"
RDEPENDS = ""
do_stage() {
+ STAGING_LIBDIR=${STAGING_LIBDIR} \
+ STAGING_INCDIR=${STAGING_INCDIR} \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR}/python setup.py install --prefix=${STAGING_LIBDIR}/.. --install-data=${STAGING_DATADIR} || \
oefatal "python setup.py install execution failed."
diff --git a/trunk/meta/classes/distutils.bbclass b/trunk/meta/classes/distutils.bbclass
index 7a18e71..ef761be 100644
--- a/trunk/meta/classes/distutils.bbclass
+++ b/trunk/meta/classes/distutils.bbclass
@@ -1,12 +1,16 @@
inherit distutils-base
distutils_do_compile() {
+ STAGING_INCDIR=${STAGING_INCDIR} \
+ STAGING_LIBDIR=${STAGING_LIBDIR} \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR_NATIVE}/python setup.py build || \
oefatal "python setup.py build_ext execution failed."
}
distutils_stage_headers() {
+ STAGING_INCDIR=${STAGING_INCDIR} \
+ STAGING_LIBDIR=${STAGING_LIBDIR} \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR_NATIVE}/python setup.py install_headers --install-dir=${STAGING_INCDIR}/${PYTHON_DIR} || \
oefatal "python setup.py install_headers execution failed."
@@ -14,6 +18,8 @@ distutils_stage_headers() {
distutils_stage_all() {
install -d ${STAGING_DIR_HOST}${layout_prefix}/${PYTHON_DIR}/site-packages
+ STAGING_INCDIR=${STAGING_INCDIR} \
+ STAGING_LIBDIR=${STAGING_LIBDIR} \
PYTHONPATH=${STAGING_DIR_HOST}${layout_prefix}/${PYTHON_DIR}/site-packages \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR_NATIVE}/python setup.py install --prefix=${STAGING_DIR_HOST}${layout_prefix} --install-data=${STAGING_DATADIR} || \
@@ -22,6 +28,8 @@ distutils_stage_all() {
distutils_do_install() {
install -d ${D}${libdir}/${PYTHON_DIR}/site-packages
+ STAGING_INCDIR=${STAGING_INCDIR} \
+ STAGING_LIBDIR=${STAGING_LIBDIR} \
PYTHONPATH=${D}/${libdir}/${PYTHON_DIR}/site-packages \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
${STAGING_BINDIR_NATIVE}/python setup.py install --prefix=${D}/${prefix} --install-data=${D}/${datadir} || \
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-08-05 13:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-24 9:14 [RFC] changing staging layout based on MULTIMACH_TARGET_SYS Koen Kooi
2008-08-05 13:10 ` Florian Boor
-- strict thread matches above, loose matches on Subject: below --
2008-07-28 12:43 Marcin Juszkiewicz
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.