* [PATCH 0/3] siteinfo.bbclass re-merge
@ 2011-07-13 19:05 Tom Rini
2011-07-13 19:06 ` [PATCH 1/3] site/ix86-common: Fix ac_cv_sizeof_unsigned_char definition Tom Rini
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Tom Rini @ 2011-07-13 19:05 UTC (permalink / raw)
To: openembedded-core
Hey all,
This is the second of two pull requests. This doesn't depend on the first
request, it's just splitting changes up. There's three changes here. First,
site/ix86-common was setting the wrong value for unsigned int. Second,
change perl to use SITEINFO variables rather than functions. Third, bring
in the various changes in siteinfo.bbclass that have been in oe.dev. This
last part will, I hope, also make dealing with multilib-specific siteinfo
stuff easier (also alternative ABIs like x32).
My next step is to work on merging and verifying as much as possible
the site files in oe-core and oe.dev.
The following changes since commit e66c2999afa2b3efbce8bb46c89f9db5e15f35c7:
Saul Wold (1):
libx11: ensure nativesdk uses correct DEPENDS and XCB flags
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib trini/update-siteinfo
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=trini/update-siteinfo
Tom Rini (3):
site/ix86-common: Fix ac_cv_sizeof_unsigned_char definition
perl: Use SITEINFO variables not functions
siteinfo.bbclass: Port over oe.dev logic for site files
meta/classes/autotools.bbclass | 2 +-
meta/classes/siteinfo.bbclass | 202 +++++++++++++---------------
meta/classes/toolchain-scripts.bbclass | 2 +-
meta/recipes-core/meta/meta-environment.bb | 2 +-
meta/recipes-core/meta/meta-toolchain.bb | 2 +-
meta/recipes-devtools/perl/perl_5.12.3.bb | 4 +-
meta/site/ix86-common | 2 +-
7 files changed, 103 insertions(+), 113 deletions(-)
create mode 100644 meta/site/common-linux
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH 1/3] site/ix86-common: Fix ac_cv_sizeof_unsigned_char definition 2011-07-13 19:05 [PATCH 0/3] siteinfo.bbclass re-merge Tom Rini @ 2011-07-13 19:06 ` Tom Rini 2011-07-13 19:06 ` [PATCH 2/3] perl: Use SITEINFO variables not functions Tom Rini ` (3 subsequent siblings) 4 siblings, 0 replies; 9+ messages in thread From: Tom Rini @ 2011-07-13 19:06 UTC (permalink / raw) To: openembedded-core It's very not right to set this to +ac_cv_sizeof_unsigned_int=1. Signed-off-by: Tom Rini <tom_rini@mentor.com> --- meta/site/ix86-common | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/meta/site/ix86-common b/meta/site/ix86-common index 4a4442a..ae5680a 100644 --- a/meta/site/ix86-common +++ b/meta/site/ix86-common @@ -1,5 +1,5 @@ ac_cv_sizeof_char=${ac_cv_sizeof_char=1} -ac_cv_sizeof_unsigned_char=${ac_cv_sizeof_unsigned_int=1} +ac_cv_sizeof_unsigned_char=${ac_cv_sizeof_unsigned_char=1} ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p=4} ac_cv_sizeof_unsigned_char_p=${ac_cv_sizeof_unsigned_char_p=4} ac_cv_sizeof_int=${ac_cv_sizeof_int=4} -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] perl: Use SITEINFO variables not functions 2011-07-13 19:05 [PATCH 0/3] siteinfo.bbclass re-merge Tom Rini 2011-07-13 19:06 ` [PATCH 1/3] site/ix86-common: Fix ac_cv_sizeof_unsigned_char definition Tom Rini @ 2011-07-13 19:06 ` Tom Rini 2011-07-13 19:06 ` [PATCH 3/3] siteinfo.bbclass: Port over oe.dev logic for site files Tom Rini ` (2 subsequent siblings) 4 siblings, 0 replies; 9+ messages in thread From: Tom Rini @ 2011-07-13 19:06 UTC (permalink / raw) To: openembedded-core Switch from SITEINFO_BITS / SITEINFO_ENDIANESS rather than siteinfo_get... Signed-off-by: Tom Rini <tom_rini@mentor.com> --- meta/recipes-devtools/perl/perl_5.12.3.bb | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/meta/recipes-devtools/perl/perl_5.12.3.bb b/meta/recipes-devtools/perl/perl_5.12.3.bb index beb1791..105bbcc 100644 --- a/meta/recipes-devtools/perl/perl_5.12.3.bb +++ b/meta/recipes-devtools/perl/perl_5.12.3.bb @@ -116,8 +116,8 @@ do_configure() { # Generate configuration rm -f config.sh-${TARGET_ARCH}-${TARGET_OS} for i in ${WORKDIR}/config.sh \ - ${WORKDIR}/config.sh-${@siteinfo_get_bits(d)} \ - ${WORKDIR}/config.sh-${@siteinfo_get_bits(d)}-${@siteinfo_get_endianess(d)}; do + ${WORKDIR}/config.sh-${SITEINFO_BITS} \ + ${WORKDIR}/config.sh-${SITEINFO_BITS}-${SITEINFO_ENDIANESS}; do cat $i >> config.sh-${TARGET_ARCH}-${TARGET_OS} done -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] siteinfo.bbclass: Port over oe.dev logic for site files 2011-07-13 19:05 [PATCH 0/3] siteinfo.bbclass re-merge Tom Rini 2011-07-13 19:06 ` [PATCH 1/3] site/ix86-common: Fix ac_cv_sizeof_unsigned_char definition Tom Rini 2011-07-13 19:06 ` [PATCH 2/3] perl: Use SITEINFO variables not functions Tom Rini @ 2011-07-13 19:06 ` Tom Rini 2011-07-20 15:07 ` Richard Purdie 2011-07-13 19:42 ` [PATCH 0/3] siteinfo.bbclass re-merge Mark Hatle 2011-07-14 14:42 ` Richard Purdie 4 siblings, 1 reply; 9+ messages in thread From: Tom Rini @ 2011-07-13 19:06 UTC (permalink / raw) To: openembedded-core In oe.dev we have a sets to pick out hostos/hostarch/etc site files out of and include things like a common-linux site file. This should also help out with adding multilib-specific site files (ie x32). This requires a smallish change to autotools.bbclass to find the files now and changes to toolchain-scripts.bbclass, meta-toolchain.bb and meta-environment.bb to deal with how CONFIG_SITE is now. Signed-off-by: Tom Rini <tom_rini@mentor.com> --- meta/classes/autotools.bbclass | 2 +- meta/classes/siteinfo.bbclass | 202 +++++++++++++--------------- meta/classes/toolchain-scripts.bbclass | 2 +- meta/recipes-core/meta/meta-environment.bb | 2 +- meta/recipes-core/meta/meta-toolchain.bb | 2 +- 5 files changed, 100 insertions(+), 110 deletions(-) create mode 100644 meta/site/common-linux diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass index 98c871a..5e8799a 100644 --- a/meta/classes/autotools.bbclass +++ b/meta/classes/autotools.bbclass @@ -26,7 +26,7 @@ inherit siteinfo # Space separated list of shell scripts with variables defined to supply test # results for autoconf tests we cannot run at build time. -export CONFIG_SITE = "${@siteinfo_get_files(d)}" +export CONFIG_SITE = "${@' '.join(siteinfo_get_files(d))}" acpaths = "default" EXTRA_AUTORECONF = "--exclude=autopoint" diff --git a/meta/classes/siteinfo.bbclass b/meta/classes/siteinfo.bbclass index 78b7008..283ef42 100644 --- a/meta/classes/siteinfo.bbclass +++ b/meta/classes/siteinfo.bbclass @@ -15,121 +15,111 @@ # It is an error for the target not to exist. # If 'what' doesn't exist then an empty value is returned # -def get_siteinfo_list(d): - target = bb.data.getVar('HOST_ARCH', d, 1) + "-" + bb.data.getVar('HOST_OS', d, 1) +def siteinfo_data(d): + archinfo = { + "allarch": "endian-little bit-32", # bogus, but better than special-casing the checks below for allarch + "arm": "endian-little bit-32 arm-common", + "armeb": "endian-big bit-32 arm-common", + "avr32": "endian-big bit-32 avr32-common", + "bfin": "endian-little bit-32 bfin-common", + "i386": "endian-little bit-32 ix86-common", + "i486": "endian-little bit-32 ix86-common", + "i586": "endian-little bit-32 ix86-common", + "i686": "endian-little bit-32 ix86-common", + "ia64": "endian-little bit-64", + "microblaze": "endian-big bit-32 microblaze-common", + "microblazeel": "endian-little bit-32 microblaze-common", + "mips": "endian-big bit-32 mips-common", + "mips64": "endian-big bit-64 mips64-common", + "mips64el": "endian-little bit-64 mips64-common", + "mipsel": "endian-little bit-32 mips-common", + "powerpc": "endian-big bit-32 powerpc-common", + "nios2": "endian-little bit-32 nios2-common", + "powerpc64": "endian-big bit-64 powerpc-common powerpc64-linux", + "ppc": "endian-big bit-32 powerpc-common", + "ppc64": "endian-big bit-64 powerpc-common powerpc64-linux", + "sh3": "endian-little bit-32 sh-common", + "sh4": "endian-little bit-32 sh-common", + "sparc": "endian-big bit-32", + "viac3": "endian-little bit-32 ix86-common", + "x86_64": "endian-little bit-64", + } + osinfo = { + "darwin": "common-darwin", + "darwin9": "common-darwin", + "linux": "common-linux common-glibc", + "linux-gnueabi": "common-linux common-glibc", + "linux-gnuspe": "common-linux common-glibc", + "linux-uclibc": "common-linux common-uclibc", + "linux-uclibceabi": "common-linux common-uclibc", + "linux-uclibcspe": "common-linux common-uclibc", + "uclinux-uclibc": "common-uclibc", + "cygwin": "common-cygwin", + "mingw32": "common-mingw", + } + targetinfo = { + "arm-linux-gnueabi": "arm-linux", + "arm-linux-uclibceabi": "arm-linux-uclibc", + "armeb-linux-gnueabi": "armeb-linux", + "armeb-linux-uclibceabi": "armeb-linux-uclibc", + "powerpc-linux-gnuspe": "powerpc-linux", + "powerpc-linux-uclibcspe": "powerpc-linux-uclibc", + } - targetinfo = {\ - "allarch-linux": "",\ - "armeb-linux": "endian-big bit-32 common-glibc arm-common",\ - "armeb-linux-gnueabi": "endian-big bit-32 common-glibc arm-common armeb-linux",\ - "armeb-linux-uclibc": "endian-big bit-32 common-uclibc arm-common",\ - "armeb-linux-uclibceabi": "endian-big bit-32 common-uclibc arm-common armeb-linux-uclibc",\ - "arm-darwin": "endian-little bit-32 common-darwin",\ - "arm-darwin8": "endian-little bit-32 common-darwin",\ - "arm-linux": "endian-little bit-32 common-glibc arm-common",\ - "arm-linux-gnueabi": "endian-little bit-32 common-glibc arm-common arm-linux",\ - "arm-linux-uclibc": "endian-little bit-32 common-uclibc arm-common",\ - "arm-linux-uclibceabi": "endian-little bit-32 common-uclibc arm-common arm-linux-uclibc",\ - "avr32-linux": "endian-big bit-32 common-glibc avr32-common",\ - "avr32-linux-uclibc": "endian-big bit-32 common-uclibc avr32-common",\ - "bfin-uclinux-uclibc": "endian-little bit-32 common-uclibc bfin-common",\ - "i386-linux": "endian-little bit-32 common-glibc ix86-common",\ - "i486-linux": "endian-little bit-32 common-glibc ix86-common",\ - "i586-linux": "endian-little bit-32 common-glibc ix86-common",\ - "i686-linux": "endian-little bit-32 common-glibc ix86-common",\ - "i386-linux-uclibc": "endian-little bit-32 common-uclibc ix86-common",\ - "i486-linux-uclibc": "endian-little bit-32 common-uclibc ix86-common",\ - "i586-linux-uclibc": "endian-little bit-32 common-uclibc ix86-common",\ - "i686-linux-uclibc": "endian-little bit-32 common-uclibc ix86-common",\ - "microblaze-linux-gnu": "endian-big bit-32 common-glibc microblaze-common",\ - "microblazeel-linux-gnu": "endian-little bit-32 common-glibc microblaze-common",\ - "mipsel-linux": "endian-little bit-32 common-glibc mips-common",\ - "mipsel-linux-uclibc": "endian-little bit-32 common-uclibc mips-common",\ - "mips-linux": "endian-big bit-32 common-glibc mips-common",\ - "mips-linux-uclibc": "endian-big bit-32 common-uclibc mips-common",\ - "powerpc-darwin": "endian-big bit-32 common-darwin",\ - "ppc-linux": "endian-big bit-32 common-glibc powerpc-common",\ - "powerpc-linux": "endian-big bit-32 common-glibc powerpc-common",\ - "powerpc-linux-gnuspe": "endian-big bit-32 common-glibc powerpc-common",\ - "powerpc-linux-uclibc": "endian-big bit-32 common-uclibc powerpc-common",\ - "sh3-linux": "endian-little bit-32 common-glibc sh-common",\ - "sh4-linux": "endian-little bit-32 common-glibc sh-common",\ - "sh4-linux-uclibc": "endian-little bit-32 common-uclibc sh-common",\ - "sparc-linux": "endian-big bit-32 common-glibc",\ - "x86_64-linux": "endian-little bit-64 common-glibc",\ - "x86_64-linux-uclibc": "endian-little bit-64 common-uclibc"} - if target in targetinfo: - info = targetinfo[target].split() - info.append(target) - info.append("common") - return info - else: - bb.error("Information not available for target '%s'" % target) + hostarch = d.getVar("HOST_ARCH", True) + hostos = d.getVar("HOST_OS", True) + target = "%s-%s" % (hostarch, hostos) + sitedata = [] + if hostarch in archinfo: + sitedata.extend(archinfo[hostarch].split()) + if hostos in osinfo: + sitedata.extend(osinfo[hostos].split()) + if target in targetinfo: + sitedata.extend(targetinfo[target].split()) + sitedata.append(target) + sitedata.append("common") -# -# Define which site files to use. We check for several site files and -# use each one that is found, based on the list returned by get_siteinfo_list() -# -# Search for the files in the following directories: -# 1) ${BBPATH}/site (in reverse) - app specific, then site wide -# 2) ${FILE_DIRNAME}/site-${PV} - app version specific -# -def siteinfo_get_files(d): - sitefiles = "" - - # Determine which site files to look for - sites = get_siteinfo_list(d) + bb.debug(1, "SITE files %s" % sitedata); + return sitedata - # Check along bbpath for site files and append in reverse order so - # the application specific sites files are last and system site - # files first. - path_bb = bb.data.getVar('BBPATH', d, 1) - for p in (path_bb or "").split(':'): - tmp = "" - for i in sites: - fname = os.path.join(p, 'site', i) - if os.path.exists(fname): - tmp += fname + " " - sitefiles = tmp + sitefiles; +python () { + sitedata = set(siteinfo_data(d)) + if "endian-little" in sitedata: + d.setVar("SITEINFO_ENDIANESS", "le") + elif "endian-big" in sitedata: + d.setVar("SITEINFO_ENDIANESS", "be") + else: + bb.error("Unable to determine endianness for architecture '%s'" % + d.getVar("HOST_ARCH", True)) + bb.fatal("Please add your architecture to siteinfo.bbclass") - # Now check for the applications version specific site files - path_pkgv = os.path.join(bb.data.getVar('FILE_DIRNAME', d, 1), "site-" + bb.data.getVar('PV', d, 1)) - for i in sites: - fname = os.path.join(path_pkgv, i) - if os.path.exists(fname): - sitefiles += fname + " " + if "bit-32" in sitedata: + d.setVar("SITEINFO_BITS", "32") + elif "bit-64" in sitedata: + d.setVar("SITEINFO_BITS", "64") + else: + bb.error("Unable to determine bit size for architecture '%s'" % + d.getVar("HOST_ARCH", True)) + bb.fatal("Please add your architecture to siteinfo.bbclass") +} - # Now check for siteconfig cache files - path_siteconfig = bb.data.getVar('SITECONFIG_SYSROOTCACHE', d, 1) - if os.path.isdir(path_siteconfig): - for i in os.listdir(path_siteconfig): - fname = os.path.join(path_siteconfig, i) - sitefiles += fname + " " - - bb.debug(1, "SITE files " + sitefiles); - return sitefiles - -def siteinfo_get_endianess(d): - info = get_siteinfo_list(d) - if 'endian-little' in info: - return "le" - elif 'endian-big' in info: - return "be" - bb.error("Site info could not determine endianess for target") +def siteinfo_get_files(d): + sitedata = siteinfo_data(d) + for path in d.getVar("BBPATH", True).split(":"): + for element in sitedata: + filename = os.path.join(path, "site", element) + if os.path.exists(filename): + yield filename -def siteinfo_get_bits(d): - info = get_siteinfo_list(d) - if 'bit-32' in info: - return "32" - elif 'bit-64' in info: - return "64" - bb.error("Site info could not determine bit size for target") + # Now check for siteconfig cache files + path_siteconfig = bb.data.getVar('SITECONFIG_SYSROOTCACHE', d, 1) + if os.path.isdir(path_siteconfig): + for i in os.listdir(path_siteconfig): + filename = os.path.join(path_siteconfig, i) + yield filename # # Make some information available via variables # -SITEINFO_ENDIANESS = "${@siteinfo_get_endianess(d)}" -SITEINFO_BITS = "${@siteinfo_get_bits(d)}" SITECONFIG_SYSROOTCACHE = "${STAGING_DATADIR}/${TARGET_SYS}_config_site.d" - diff --git a/meta/classes/toolchain-scripts.bbclass b/meta/classes/toolchain-scripts.bbclass index 3301319..751a47e 100644 --- a/meta/classes/toolchain-scripts.bbclass +++ b/meta/classes/toolchain-scripts.bbclass @@ -42,7 +42,7 @@ toolchain_create_tree_env_script () { echo 'export PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR}' >> $script echo 'export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}' >> $script - echo 'export CONFIG_SITE="${@siteinfo_get_files(d)}"' >> $script + echo 'export CONFIG_SITE="${CONFIG_SITE}"' >> $script echo 'export CC=${TARGET_PREFIX}gcc' >> $script echo 'export CXX=${TARGET_PREFIX}g++' >> $script diff --git a/meta/recipes-core/meta/meta-environment.bb b/meta/recipes-core/meta/meta-environment.bb index 351cbf0..865dd00 100644 --- a/meta/recipes-core/meta/meta-environment.bb +++ b/meta/recipes-core/meta/meta-environment.bb @@ -8,7 +8,7 @@ EXCLUDE_FROM_WORLD = "1" inherit toolchain-scripts # get target config site before inheritting cross-canadian -TARGET_CONFIG_SITE := "${@siteinfo_get_files(d)}" +TARGET_CONFIG_SITE := "${@' '.join(siteinfo_get_files(d))}" SDK_DIR = "${WORKDIR}/sdk" SDK_OUTPUT = "${SDK_DIR}/image" diff --git a/meta/recipes-core/meta/meta-toolchain.bb b/meta/recipes-core/meta/meta-toolchain.bb index ab98bf9..3abba42 100644 --- a/meta/recipes-core/meta/meta-toolchain.bb +++ b/meta/recipes-core/meta/meta-toolchain.bb @@ -9,4 +9,4 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3 IMAGETEST ?= "dummy" inherit populate_sdk imagetest-${IMAGETEST} -CONFIG_SITE := "${@siteinfo_get_files(d)}" +CONFIG_SITE := "${@' '.join(siteinfo_get_files(d))}" diff --git a/meta/site/common-linux b/meta/site/common-linux new file mode 100644 index 0000000..e69de29 -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] siteinfo.bbclass: Port over oe.dev logic for site files 2011-07-13 19:06 ` [PATCH 3/3] siteinfo.bbclass: Port over oe.dev logic for site files Tom Rini @ 2011-07-20 15:07 ` Richard Purdie 0 siblings, 0 replies; 9+ messages in thread From: Richard Purdie @ 2011-07-20 15:07 UTC (permalink / raw) To: Patches and discussions about the oe-core layer Hi Tom, I had a chance to look at this in more detail now, I just have a couple of things to look at... On Wed, 2011-07-13 at 12:06 -0700, Tom Rini wrote: > In oe.dev we have a sets to pick out hostos/hostarch/etc site > files out of and include things like a common-linux site file. > This should also help out with adding multilib-specific site files > (ie x32). This requires a smallish change to autotools.bbclass to > find the files now and changes to toolchain-scripts.bbclass, > meta-toolchain.bb and meta-environment.bb to deal with how CONFIG_SITE > is now. > > Signed-off-by: Tom Rini <tom_rini@mentor.com> > --- > meta/classes/autotools.bbclass | 2 +- > meta/classes/siteinfo.bbclass | 202 +++++++++++++--------------- > meta/classes/toolchain-scripts.bbclass | 2 +- > meta/recipes-core/meta/meta-environment.bb | 2 +- > meta/recipes-core/meta/meta-toolchain.bb | 2 +- > 5 files changed, 100 insertions(+), 110 deletions(-) > create mode 100644 meta/site/common-linux > > diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass > index 98c871a..5e8799a 100644 > --- a/meta/classes/autotools.bbclass > +++ b/meta/classes/autotools.bbclass > @@ -26,7 +26,7 @@ inherit siteinfo > > # Space separated list of shell scripts with variables defined to supply test > # results for autoconf tests we cannot run at build time. > -export CONFIG_SITE = "${@siteinfo_get_files(d)}" > +export CONFIG_SITE = "${@' '.join(siteinfo_get_files(d))}" I'm not sure we have to change the return value of the function to become an iterator/list, or that it actually buys us much? > acpaths = "default" > EXTRA_AUTORECONF = "--exclude=autopoint" > diff --git a/meta/classes/siteinfo.bbclass b/meta/classes/siteinfo.bbclass > index 78b7008..283ef42 100644 > --- a/meta/classes/siteinfo.bbclass > +++ b/meta/classes/siteinfo.bbclass > @@ -15,121 +15,111 @@ > # It is an error for the target not to exist. > # If 'what' doesn't exist then an empty value is returned > # > -def get_siteinfo_list(d): > - target = bb.data.getVar('HOST_ARCH', d, 1) + "-" + bb.data.getVar('HOST_OS', d, 1) > +def siteinfo_data(d): > + archinfo = { > + "allarch": "endian-little bit-32", # bogus, but better than special-casing the checks below for allarch > + "arm": "endian-little bit-32 arm-common", > + "armeb": "endian-big bit-32 arm-common", > + "avr32": "endian-big bit-32 avr32-common", > + "bfin": "endian-little bit-32 bfin-common", > + "i386": "endian-little bit-32 ix86-common", > + "i486": "endian-little bit-32 ix86-common", > + "i586": "endian-little bit-32 ix86-common", > + "i686": "endian-little bit-32 ix86-common", > + "ia64": "endian-little bit-64", > + "microblaze": "endian-big bit-32 microblaze-common", > + "microblazeel": "endian-little bit-32 microblaze-common", > + "mips": "endian-big bit-32 mips-common", > + "mips64": "endian-big bit-64 mips64-common", > + "mips64el": "endian-little bit-64 mips64-common", > + "mipsel": "endian-little bit-32 mips-common", > + "powerpc": "endian-big bit-32 powerpc-common", > + "nios2": "endian-little bit-32 nios2-common", > + "powerpc64": "endian-big bit-64 powerpc-common powerpc64-linux", > + "ppc": "endian-big bit-32 powerpc-common", > + "ppc64": "endian-big bit-64 powerpc-common powerpc64-linux", > + "sh3": "endian-little bit-32 sh-common", > + "sh4": "endian-little bit-32 sh-common", > + "sparc": "endian-big bit-32", > + "viac3": "endian-little bit-32 ix86-common", > + "x86_64": "endian-little bit-64", > + } > + osinfo = { > + "darwin": "common-darwin", > + "darwin9": "common-darwin", > + "linux": "common-linux common-glibc", > + "linux-gnueabi": "common-linux common-glibc", > + "linux-gnuspe": "common-linux common-glibc", > + "linux-uclibc": "common-linux common-uclibc", > + "linux-uclibceabi": "common-linux common-uclibc", > + "linux-uclibcspe": "common-linux common-uclibc", > + "uclinux-uclibc": "common-uclibc", > + "cygwin": "common-cygwin", > + "mingw32": "common-mingw", > + } > + targetinfo = { > + "arm-linux-gnueabi": "arm-linux", > + "arm-linux-uclibceabi": "arm-linux-uclibc", > + "armeb-linux-gnueabi": "armeb-linux", > + "armeb-linux-uclibceabi": "armeb-linux-uclibc", > + "powerpc-linux-gnuspe": "powerpc-linux", > + "powerpc-linux-uclibcspe": "powerpc-linux-uclibc", > + } > > - targetinfo = {\ > - "allarch-linux": "",\ > - "armeb-linux": "endian-big bit-32 common-glibc arm-common",\ > - "armeb-linux-gnueabi": "endian-big bit-32 common-glibc arm-common armeb-linux",\ > - "armeb-linux-uclibc": "endian-big bit-32 common-uclibc arm-common",\ > - "armeb-linux-uclibceabi": "endian-big bit-32 common-uclibc arm-common armeb-linux-uclibc",\ > - "arm-darwin": "endian-little bit-32 common-darwin",\ > - "arm-darwin8": "endian-little bit-32 common-darwin",\ > - "arm-linux": "endian-little bit-32 common-glibc arm-common",\ > - "arm-linux-gnueabi": "endian-little bit-32 common-glibc arm-common arm-linux",\ > - "arm-linux-uclibc": "endian-little bit-32 common-uclibc arm-common",\ > - "arm-linux-uclibceabi": "endian-little bit-32 common-uclibc arm-common arm-linux-uclibc",\ > - "avr32-linux": "endian-big bit-32 common-glibc avr32-common",\ > - "avr32-linux-uclibc": "endian-big bit-32 common-uclibc avr32-common",\ > - "bfin-uclinux-uclibc": "endian-little bit-32 common-uclibc bfin-common",\ > - "i386-linux": "endian-little bit-32 common-glibc ix86-common",\ > - "i486-linux": "endian-little bit-32 common-glibc ix86-common",\ > - "i586-linux": "endian-little bit-32 common-glibc ix86-common",\ > - "i686-linux": "endian-little bit-32 common-glibc ix86-common",\ > - "i386-linux-uclibc": "endian-little bit-32 common-uclibc ix86-common",\ > - "i486-linux-uclibc": "endian-little bit-32 common-uclibc ix86-common",\ > - "i586-linux-uclibc": "endian-little bit-32 common-uclibc ix86-common",\ > - "i686-linux-uclibc": "endian-little bit-32 common-uclibc ix86-common",\ > - "microblaze-linux-gnu": "endian-big bit-32 common-glibc microblaze-common",\ > - "microblazeel-linux-gnu": "endian-little bit-32 common-glibc microblaze-common",\ > - "mipsel-linux": "endian-little bit-32 common-glibc mips-common",\ > - "mipsel-linux-uclibc": "endian-little bit-32 common-uclibc mips-common",\ > - "mips-linux": "endian-big bit-32 common-glibc mips-common",\ > - "mips-linux-uclibc": "endian-big bit-32 common-uclibc mips-common",\ > - "powerpc-darwin": "endian-big bit-32 common-darwin",\ > - "ppc-linux": "endian-big bit-32 common-glibc powerpc-common",\ > - "powerpc-linux": "endian-big bit-32 common-glibc powerpc-common",\ > - "powerpc-linux-gnuspe": "endian-big bit-32 common-glibc powerpc-common",\ > - "powerpc-linux-uclibc": "endian-big bit-32 common-uclibc powerpc-common",\ > - "sh3-linux": "endian-little bit-32 common-glibc sh-common",\ > - "sh4-linux": "endian-little bit-32 common-glibc sh-common",\ > - "sh4-linux-uclibc": "endian-little bit-32 common-uclibc sh-common",\ > - "sparc-linux": "endian-big bit-32 common-glibc",\ > - "x86_64-linux": "endian-little bit-64 common-glibc",\ > - "x86_64-linux-uclibc": "endian-little bit-64 common-uclibc"} > - if target in targetinfo: > - info = targetinfo[target].split() > - info.append(target) > - info.append("common") > - return info > - else: > - bb.error("Information not available for target '%s'" % target) > + hostarch = d.getVar("HOST_ARCH", True) > + hostos = d.getVar("HOST_OS", True) > + target = "%s-%s" % (hostarch, hostos) > > + sitedata = [] > + if hostarch in archinfo: > + sitedata.extend(archinfo[hostarch].split()) > + if hostos in osinfo: > + sitedata.extend(osinfo[hostos].split()) > + if target in targetinfo: > + sitedata.extend(targetinfo[target].split()) > + sitedata.append(target) > + sitedata.append("common") > > -# > -# Define which site files to use. We check for several site files and > -# use each one that is found, based on the list returned by get_siteinfo_list() > -# > -# Search for the files in the following directories: > -# 1) ${BBPATH}/site (in reverse) - app specific, then site wide > -# 2) ${FILE_DIRNAME}/site-${PV} - app version specific > -# > -def siteinfo_get_files(d): > - sitefiles = "" > - > - # Determine which site files to look for > - sites = get_siteinfo_list(d) > + bb.debug(1, "SITE files %s" % sitedata); > + return sitedata > > - # Check along bbpath for site files and append in reverse order so > - # the application specific sites files are last and system site > - # files first. > - path_bb = bb.data.getVar('BBPATH', d, 1) > - for p in (path_bb or "").split(':'): > - tmp = "" > - for i in sites: > - fname = os.path.join(p, 'site', i) > - if os.path.exists(fname): > - tmp += fname + " " > - sitefiles = tmp + sitefiles; > +python () { > + sitedata = set(siteinfo_data(d)) If we're going to do this in anonymous python, why not save out the list in a variable at this point? See below for why that might be a bad idea on the other hand... :) > + if "endian-little" in sitedata: > + d.setVar("SITEINFO_ENDIANESS", "le") > + elif "endian-big" in sitedata: > + d.setVar("SITEINFO_ENDIANESS", "be") > + else: > + bb.error("Unable to determine endianness for architecture '%s'" % > + d.getVar("HOST_ARCH", True)) > + bb.fatal("Please add your architecture to siteinfo.bbclass") > > - # Now check for the applications version specific site files > - path_pkgv = os.path.join(bb.data.getVar('FILE_DIRNAME', d, 1), "site-" + bb.data.getVar('PV', d, 1)) > - for i in sites: > - fname = os.path.join(path_pkgv, i) > - if os.path.exists(fname): > - sitefiles += fname + " " > + if "bit-32" in sitedata: > + d.setVar("SITEINFO_BITS", "32") > + elif "bit-64" in sitedata: > + d.setVar("SITEINFO_BITS", "64") > + else: > + bb.error("Unable to determine bit size for architecture '%s'" % > + d.getVar("HOST_ARCH", True)) > + bb.fatal("Please add your architecture to siteinfo.bbclass") > +} > > - # Now check for siteconfig cache files > - path_siteconfig = bb.data.getVar('SITECONFIG_SYSROOTCACHE', d, 1) > - if os.path.isdir(path_siteconfig): > - for i in os.listdir(path_siteconfig): > - fname = os.path.join(path_siteconfig, i) > - sitefiles += fname + " " > - > - bb.debug(1, "SITE files " + sitefiles); > - return sitefiles > - > -def siteinfo_get_endianess(d): > - info = get_siteinfo_list(d) > - if 'endian-little' in info: > - return "le" > - elif 'endian-big' in info: > - return "be" > - bb.error("Site info could not determine endianess for target") > +def siteinfo_get_files(d): > + sitedata = siteinfo_data(d) and then here we could just retrieve it? > + for path in d.getVar("BBPATH", True).split(":"): > + for element in sitedata: > + filename = os.path.join(path, "site", element) > + if os.path.exists(filename): > + yield filename > > -def siteinfo_get_bits(d): > - info = get_siteinfo_list(d) > - if 'bit-32' in info: > - return "32" > - elif 'bit-64' in info: > - return "64" > - bb.error("Site info could not determine bit size for target") > + # Now check for siteconfig cache files > + path_siteconfig = bb.data.getVar('SITECONFIG_SYSROOTCACHE', d, 1) > + if os.path.isdir(path_siteconfig): > + for i in os.listdir(path_siteconfig): > + filename = os.path.join(path_siteconfig, i) > + yield filename > > # > # Make some information available via variables > # > -SITEINFO_ENDIANESS = "${@siteinfo_get_endianess(d)}" > -SITEINFO_BITS = "${@siteinfo_get_bits(d)}" > SITECONFIG_SYSROOTCACHE = "${STAGING_DATADIR}/${TARGET_SYS}_config_site.d" > - > diff --git a/meta/classes/toolchain-scripts.bbclass b/meta/classes/toolchain-scripts.bbclass > index 3301319..751a47e 100644 > --- a/meta/classes/toolchain-scripts.bbclass > +++ b/meta/classes/toolchain-scripts.bbclass > @@ -42,7 +42,7 @@ toolchain_create_tree_env_script () { > echo 'export PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR}' >> $script > echo 'export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}' >> $script > > - echo 'export CONFIG_SITE="${@siteinfo_get_files(d)}"' >> $script > + echo 'export CONFIG_SITE="${CONFIG_SITE}"' >> $script This is the thing that really caught my eye when combined with the code below... > echo 'export CC=${TARGET_PREFIX}gcc' >> $script > echo 'export CXX=${TARGET_PREFIX}g++' >> $script > diff --git a/meta/recipes-core/meta/meta-environment.bb b/meta/recipes-core/meta/meta-environment.bb > index 351cbf0..865dd00 100644 > --- a/meta/recipes-core/meta/meta-environment.bb > +++ b/meta/recipes-core/meta/meta-environment.bb > @@ -8,7 +8,7 @@ EXCLUDE_FROM_WORLD = "1" > > inherit toolchain-scripts > # get target config site before inheritting cross-canadian > -TARGET_CONFIG_SITE := "${@siteinfo_get_files(d)}" > +TARGET_CONFIG_SITE := "${@' '.join(siteinfo_get_files(d))}" > > SDK_DIR = "${WORKDIR}/sdk" > SDK_OUTPUT = "${SDK_DIR}/image" > diff --git a/meta/recipes-core/meta/meta-toolchain.bb b/meta/recipes-core/meta/meta-toolchain.bb > index ab98bf9..3abba42 100644 > --- a/meta/recipes-core/meta/meta-toolchain.bb > +++ b/meta/recipes-core/meta/meta-toolchain.bb > @@ -9,4 +9,4 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3 > IMAGETEST ?= "dummy" > inherit populate_sdk imagetest-${IMAGETEST} > > -CONFIG_SITE := "${@siteinfo_get_files(d)}" > +CONFIG_SITE := "${@' '.join(siteinfo_get_files(d))}" What I'm worried about is that here, CONFIG_SITE is expanded to something using := but if this was combined with toolchain-scripts.bbclass, the value of CONFIG_SITE in that code might change. The safest thing to do would be to leave the ' '.join(....) syntax in the .bbclass since I think it was deliberate for some ordering issue. Of course my comment about caching the results in a variable are defeated by the fact we do change HOST_ARCH and other variables and expect the list we get back to update accordingly... So if we can fix these details I think this is good to go in. Cheers, Richard ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] siteinfo.bbclass re-merge 2011-07-13 19:05 [PATCH 0/3] siteinfo.bbclass re-merge Tom Rini ` (2 preceding siblings ...) 2011-07-13 19:06 ` [PATCH 3/3] siteinfo.bbclass: Port over oe.dev logic for site files Tom Rini @ 2011-07-13 19:42 ` Mark Hatle 2011-07-13 20:40 ` Tom Rini 2011-07-14 14:42 ` Richard Purdie 4 siblings, 1 reply; 9+ messages in thread From: Mark Hatle @ 2011-07-13 19:42 UTC (permalink / raw) To: openembedded-core On 7/13/11 2:05 PM, Tom Rini wrote: > Hey all, > > This is the second of two pull requests. This doesn't depend on the first > request, it's just splitting changes up. There's three changes here. First, > site/ix86-common was setting the wrong value for unsigned int. Second, > change perl to use SITEINFO variables rather than functions. Third, bring > in the various changes in siteinfo.bbclass that have been in oe.dev. This > last part will, I hope, also make dealing with multilib-specific siteinfo > stuff easier (also alternative ABIs like x32). Note, this is NOT an objection to the changes. However, one thing to keep in mind. (In fact I like the changes being suggested) We have a dynamic site-configuation mechanism already in place. So it's important that we don't duplicate things within the site/* files. Currently the recipes: glibc, zlib, eglibc, and uclibc contain dynamic site_config files. (See ./recipes-core/glibc/site_config/* for an example) The output of these files get placed into a target arch specific site config directory: ${STAGING_DATADIR}/${TARGET_SYS}_config_site.d These are automatically loaded as well as the predefined "common" items. By using the dynamically generated versions we can change the configuration options for glibc, uclibc, etc and the site config will automatically get updated based on the existing checks. So instead of updating the various site/* files, if the value can be discovered -- or is defined by a given package.. we should be using the dynamic method as it'll be safer over the long-haul. Someone might need to go over the existing ones and see if there is anything that falls under this. BTW, I did notice that ncurses is supposed to have a dynamic site_config, but it somehow got checked into the wrong location. I'll submit a pull request for that shortly. --Mark > My next step is to work on merging and verifying as much as possible > the site files in oe-core and oe.dev. > > The following changes since commit e66c2999afa2b3efbce8bb46c89f9db5e15f35c7: > Saul Wold (1): > libx11: ensure nativesdk uses correct DEPENDS and XCB flags > > are available in the git repository at: > > git://git.openembedded.org/openembedded-core-contrib trini/update-siteinfo > http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=trini/update-siteinfo > > Tom Rini (3): > site/ix86-common: Fix ac_cv_sizeof_unsigned_char definition > perl: Use SITEINFO variables not functions > siteinfo.bbclass: Port over oe.dev logic for site files > > meta/classes/autotools.bbclass | 2 +- > meta/classes/siteinfo.bbclass | 202 +++++++++++++--------------- > meta/classes/toolchain-scripts.bbclass | 2 +- > meta/recipes-core/meta/meta-environment.bb | 2 +- > meta/recipes-core/meta/meta-toolchain.bb | 2 +- > meta/recipes-devtools/perl/perl_5.12.3.bb | 4 +- > meta/site/ix86-common | 2 +- > 7 files changed, 103 insertions(+), 113 deletions(-) > create mode 100644 meta/site/common-linux > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] siteinfo.bbclass re-merge 2011-07-13 19:42 ` [PATCH 0/3] siteinfo.bbclass re-merge Mark Hatle @ 2011-07-13 20:40 ` Tom Rini 0 siblings, 0 replies; 9+ messages in thread From: Tom Rini @ 2011-07-13 20:40 UTC (permalink / raw) To: openembedded-core On 07/13/2011 12:42 PM, Mark Hatle wrote: > On 7/13/11 2:05 PM, Tom Rini wrote: >> Hey all, >> >> This is the second of two pull requests. This doesn't depend on the first >> request, it's just splitting changes up. There's three changes here. First, >> site/ix86-common was setting the wrong value for unsigned int. Second, >> change perl to use SITEINFO variables rather than functions. Third, bring >> in the various changes in siteinfo.bbclass that have been in oe.dev. This >> last part will, I hope, also make dealing with multilib-specific siteinfo >> stuff easier (also alternative ABIs like x32). > > Note, this is NOT an objection to the changes. However, one thing to keep in mind. > > (In fact I like the changes being suggested) > > We have a dynamic site-configuation mechanism already in place. So it's > important that we don't duplicate things within the site/* files. > > Currently the recipes: glibc, zlib, eglibc, and uclibc contain dynamic > site_config files. (See ./recipes-core/glibc/site_config/* for an example) > > The output of these files get placed into a target arch specific site config > directory: ${STAGING_DATADIR}/${TARGET_SYS}_config_site.d I want to confirm that these files are still generated, found and working. But maybe part 4 of my series will be talking about some of this stuff a bit more and if that's really the best method for the goal. -- Tom Rini Mentor Graphics Corporation ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] siteinfo.bbclass re-merge 2011-07-13 19:05 [PATCH 0/3] siteinfo.bbclass re-merge Tom Rini ` (3 preceding siblings ...) 2011-07-13 19:42 ` [PATCH 0/3] siteinfo.bbclass re-merge Mark Hatle @ 2011-07-14 14:42 ` Richard Purdie 2011-07-14 16:58 ` Tom Rini 4 siblings, 1 reply; 9+ messages in thread From: Richard Purdie @ 2011-07-14 14:42 UTC (permalink / raw) To: Patches and discussions about the oe-core layer On Wed, 2011-07-13 at 12:05 -0700, Tom Rini wrote: > Hey all, > > This is the second of two pull requests. This doesn't depend on the first > request, it's just splitting changes up. There's three changes here. First, > site/ix86-common was setting the wrong value for unsigned int. Second, > change perl to use SITEINFO variables rather than functions. Third, bring > in the various changes in siteinfo.bbclass that have been in oe.dev. This > last part will, I hope, also make dealing with multilib-specific siteinfo > stuff easier (also alternative ABIs like x32). > > My next step is to work on merging and verifying as much as possible > the site files in oe-core and oe.dev. > > The following changes since commit e66c2999afa2b3efbce8bb46c89f9db5e15f35c7: > Saul Wold (1): > libx11: ensure nativesdk uses correct DEPENDS and XCB flags > > are available in the git repository at: > > git://git.openembedded.org/openembedded-core-contrib trini/update-siteinfo > http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=trini/update-siteinfo > > Tom Rini (3): > site/ix86-common: Fix ac_cv_sizeof_unsigned_char definition > perl: Use SITEINFO variables not functions I've merged these two. > siteinfo.bbclass: Port over oe.dev logic for site files I'm still in the process of reviewing this as its not easy to see everything thats changing in there... Cheers, Richard ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] siteinfo.bbclass re-merge 2011-07-14 14:42 ` Richard Purdie @ 2011-07-14 16:58 ` Tom Rini 0 siblings, 0 replies; 9+ messages in thread From: Tom Rini @ 2011-07-14 16:58 UTC (permalink / raw) To: openembedded-core On 07/14/2011 07:42 AM, Richard Purdie wrote: > On Wed, 2011-07-13 at 12:05 -0700, Tom Rini wrote: >> Hey all, >> >> This is the second of two pull requests. This doesn't depend on the first >> request, it's just splitting changes up. There's three changes here. First, >> site/ix86-common was setting the wrong value for unsigned int. Second, >> change perl to use SITEINFO variables rather than functions. Third, bring >> in the various changes in siteinfo.bbclass that have been in oe.dev. This >> last part will, I hope, also make dealing with multilib-specific siteinfo >> stuff easier (also alternative ABIs like x32). >> >> My next step is to work on merging and verifying as much as possible >> the site files in oe-core and oe.dev. >> >> The following changes since commit e66c2999afa2b3efbce8bb46c89f9db5e15f35c7: >> Saul Wold (1): >> libx11: ensure nativesdk uses correct DEPENDS and XCB flags >> >> are available in the git repository at: >> >> git://git.openembedded.org/openembedded-core-contrib trini/update-siteinfo >> http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=trini/update-siteinfo >> >> Tom Rini (3): >> site/ix86-common: Fix ac_cv_sizeof_unsigned_char definition >> perl: Use SITEINFO variables not functions > > I've merged these two. > >> siteinfo.bbclass: Port over oe.dev logic for site files > > I'm still in the process of reviewing this as its not easy to see > everything thats changing in there... Yeah, sorry, I just couldn't break it down anymore. I can say I did a world before and after on qemux86, diff'd config.logs and didn't see anything other than the ix86-common bugfix in differences. -- Tom Rini Mentor Graphics Corporation ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-07-20 15:11 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-07-13 19:05 [PATCH 0/3] siteinfo.bbclass re-merge Tom Rini 2011-07-13 19:06 ` [PATCH 1/3] site/ix86-common: Fix ac_cv_sizeof_unsigned_char definition Tom Rini 2011-07-13 19:06 ` [PATCH 2/3] perl: Use SITEINFO variables not functions Tom Rini 2011-07-13 19:06 ` [PATCH 3/3] siteinfo.bbclass: Port over oe.dev logic for site files Tom Rini 2011-07-20 15:07 ` Richard Purdie 2011-07-13 19:42 ` [PATCH 0/3] siteinfo.bbclass re-merge Mark Hatle 2011-07-13 20:40 ` Tom Rini 2011-07-14 14:42 ` Richard Purdie 2011-07-14 16:58 ` Tom Rini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox