diff options
| author | Sebastian Spaeth <Sebastian@SSpaeth.de> | 2009-11-11 09:12:43 +0100 |
|---|---|---|
| committer | Sebastian Spaeth <Sebastian@SSpaeth.de> | 2009-11-11 09:12:43 +0100 |
| commit | e29d9570bbee5d8d721517a413b9dbf1f9b6892e (patch) | |
| tree | e0040ffa4135e1b65bbdcd462b12d49ddab6a5c9 | |
| parent | 87df1cab8dd6ca28ec1fccf67e0f77f426e25e25 (diff) | |
| parent | caec0ee3d05082277c1af4863b6d653109f5714e (diff) | |
Merge branch 'org.openembedded.dev' of ssh+git://git@git.openembedded.net/openembedded into org.openembedded.dev
99 files changed, 904 insertions, 672 deletions
diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass index 45b269f4fd..a944f0ec9f 100644 --- a/classes/autotools.bbclass +++ b/classes/autotools.bbclass @@ -25,7 +25,11 @@ def autotools_dep_prepend(d): return deps + 'gnu-config-native ' EXTRA_OEMAKE = "" + DEPENDS_prepend = "${@autotools_dep_prepend(d)}" +DEPENDS_virtclass-native_prepend = "${@autotools_dep_prepend(d)}" +DEPENDS_virtclass-nativesdk_prepend = "${@autotools_dep_prepend(d)}" + acpaths = "default" EXTRA_AUTORECONF = "--exclude=autopoint" @@ -143,8 +147,10 @@ autotools_do_install() { oe_runmake 'DESTDIR=${D}' install } -do_install_append() { - for i in `find ${D} -name "*.la"` ; do \ +PACKAGE_PREPROCESS_FUNCS += "autotools_prepackage_lamangler" + +autotools_prepackage_lamangler () { + for i in `find ${PKGD} -name "*.la"` ; do \ sed -i -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${libdir}/\1,g' $i sed -i -e s:${CROSS_DIR}/${HOST_SYS}::g $i sed -i -e s:${CROSS_DIR}::g $i @@ -171,14 +177,11 @@ autotools_stage_includes() { } autotools_stage_dir() { - from="$1" - to="$2" - # This will remove empty directories so we can ignore them - rmdir "$from" 2> /dev/null || true - if [ -d "$from" ]; then - mkdir -p "$to" - cp -fpPR "$from"/* "$to" - fi + sysroot_stage_dir $1 ${STAGE_TEMP_PREFIX}$2 +} + +autotools_stage_libdir() { + sysroot_stage_libdir $1 ${STAGE_TEMP_PREFIX}$2 } autotools_stage_all() { @@ -189,55 +192,9 @@ autotools_stage_all() { rm -rf ${STAGE_TEMP} mkdir -p ${STAGE_TEMP} oe_runmake DESTDIR="${STAGE_TEMP}" install - autotools_stage_dir ${STAGE_TEMP}/${includedir} ${STAGING_INCDIR} - if [ "${BUILD_SYS}" = "${HOST_SYS}" ]; then - autotools_stage_dir ${STAGE_TEMP}/${bindir} ${STAGING_DIR_HOST}${layout_bindir} - autotools_stage_dir ${STAGE_TEMP}/${sbindir} ${STAGING_DIR_HOST}${layout_sbindir} - autotools_stage_dir ${STAGE_TEMP}/${base_bindir} ${STAGING_DIR_HOST}${layout_base_bindir} - autotools_stage_dir ${STAGE_TEMP}/${base_sbindir} ${STAGING_DIR_HOST}${layout_base_sbindir} - autotools_stage_dir ${STAGE_TEMP}/${libexecdir} ${STAGING_DIR_HOST}${layout_libexecdir} - if [ "${prefix}/lib" != "${libdir}" ]; then - # python puts its files in here, make sure they are staged as well - autotools_stage_dir ${STAGE_TEMP}/${prefix}/lib ${STAGING_DIR_HOST}${layout_prefix}/lib - fi - fi - if [ -d ${STAGE_TEMP}/${libdir} ] - then - olddir=`pwd` - cd ${STAGE_TEMP}/${libdir} - las=$(find . -name \*.la -type f) - cd $olddir - echo "Found la files: $las" - for i in $las - do - sed -e 's/^installed=yes$/installed=no/' \ - -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*.la\),${STAGING_LIBDIR}/\1,g' \ - -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${STAGING_LIBDIR},g' \ - -e "/^dependency_libs=/s,\([[:space:]']\)${libdir},\1${STAGING_LIBDIR},g" \ - -i ${STAGE_TEMP}/${libdir}/$i - done - autotools_stage_dir ${STAGE_TEMP}/${libdir} ${STAGING_LIBDIR} - fi - # Ok, this is nasty. pkgconfig.bbclass is usually used to install .pc files, - # however some packages rely on the presence of .pc files to enable/disable - # their configurataions in which case we better should not install everything - # unconditionally, but rather depend on the actual results of make install. - # The good news though: a) there are not many packages doing this and - # b) packaged staging will fix that anyways. :M: - if [ "${AUTOTOOLS_STAGE_PKGCONFIG}" = "1" ] - then - if [ -e ${STAGE_TEMP}/${libdir}/pkgconfig/ ] ; then - echo "cp -f ${STAGE_TEMP}/${libdir}/pkgconfig/*.pc ${STAGING_LIBDIR}/pkgconfig/" - cp -f ${STAGE_TEMP}/${libdir}/pkgconfig/*.pc ${STAGING_LIBDIR}/pkgconfig/ - fi - if [ -e ${STAGE_TEMP}/${datadir}/pkgconfig/ ] ; then - echo "cp -f ${STAGE_TEMP}/${datadir}/pkgconfig/*.pc ${STAGING_DATADIR}/pkgconfig/" - cp -f ${STAGE_TEMP}/${datadir}/pkgconfig/*.pc ${STAGING_DATADIR}/pkgconfig/ - fi - fi rm -rf ${STAGE_TEMP}/${mandir} || true rm -rf ${STAGE_TEMP}/${infodir} || true - autotools_stage_dir ${STAGE_TEMP}/${datadir} ${STAGING_DATADIR} + sysroot_stage_dirs ${STAGE_TEMP} ${STAGE_TEMP_PREFIX} rm -rf ${STAGE_TEMP} } diff --git a/classes/base.bbclass b/classes/base.bbclass index 9de2c67af1..aa1037e472 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -199,24 +199,16 @@ def base_both_contain(variable1, variable2, checkvalue, d): return "" DEPENDS_prepend="${@base_dep_prepend(d)} " +DEPENDS_virtclass-native_prepend="${@base_dep_prepend(d)} " +DEPENDS_virtclass-nativesdk_prepend="${@base_dep_prepend(d)} " -# Returns PN with various suffixes removed -# or PN if no matching suffix was found. -def base_package_name(d): - pn = bb.data.getVar('PN', d, 1) - if pn.endswith("-native"): - pn = pn[0:-7] - elif pn.endswith("-cross"): - pn = pn[0:-6] - elif pn.endswith("-initial"): - pn = pn[0:-8] - elif pn.endswith("-intermediate"): - pn = pn[0:-13] - elif pn.endswith("-sdk"): - pn = pn[0:-4] - - - return pn +def base_prune_suffix(var, suffixes, d): + # See if var ends with any of the suffixes listed and + # remove it if found + for suffix in suffixes: + if var.endswith(suffix): + return var.replace(suffix, "") + return var def base_set_filespath(path, d): bb.note("base_set_filespath usage is deprecated, %s should be fixed" % d.getVar("P", 1)) @@ -973,12 +965,86 @@ base_do_compile() { fi } -base_do_stage () { - : + +sysroot_stage_dir() { + src="$1" + dest="$2" + # This will remove empty directories so we can ignore them + rmdir "$src" 2> /dev/null || true + if [ -d "$src" ]; then + mkdir -p "$dest" + cp -fpPR "$src"/* "$dest" + fi +} + +sysroot_stage_libdir() { + src="$1" + dest="$2" + + olddir=`pwd` + cd $src + las=$(find . -name \*.la -type f) + cd $olddir + echo "Found la files: $las" + for i in $las + do + sed -e 's/^installed=yes$/installed=no/' \ + -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${STAGING_LIBDIR}/\1,g' \ + -e "/^dependency_libs=/s,\([[:space:]']\)${libdir},\1${STAGING_LIBDIR},g" \ + -i $src/$i + done + sysroot_stage_dir $src $dest +} + +sysroot_stage_dirs() { + from="$1" + to="$2" + + sysroot_stage_dir $from${includedir} $to${STAGING_INCDIR} + if [ "${BUILD_SYS}" = "${HOST_SYS}" ]; then + sysroot_stage_dir $from${bindir} $to${STAGING_DIR_HOST}${bindir} + sysroot_stage_dir $from${sbindir} $to${STAGING_DIR_HOST}${sbindir} + sysroot_stage_dir $from${base_bindir} $to${STAGING_DIR_HOST}${base_bindir} + sysroot_stage_dir $from${base_sbindir} $to${STAGING_DIR_HOST}${base_sbindir} + sysroot_stage_dir $from${libexecdir} $to${STAGING_DIR_HOST}${libexecdir} + if [ "${prefix}/lib" != "${libdir}" ]; then + # python puts its files in here, make sure they are staged as well + autotools_stage_dir $from/${prefix}/lib $to${STAGING_DIR_HOST}${prefix}/lib + fi + fi + if [ -d $from${libdir} ] + then + sysroot_stage_libdir $from/${libdir} $to${STAGING_LIBDIR} + fi + if [ -d $from${base_libdir} ] + then + sysroot_stage_libdir $from${base_libdir} $to${STAGING_DIR_HOST}${base_libdir} + fi + sysroot_stage_dir $from${datadir} $to${STAGING_DATADIR} +} + +sysroot_stage_all() { + sysroot_stage_dirs ${D} ${SYSROOT_DESTDIR} } -do_populate_staging[dirs] = "${STAGING_DIR_TARGET}/${layout_bindir} ${STAGING_DIR_TARGET}/${layout_libdir} \ - ${STAGING_DIR_TARGET}/${layout_includedir} \ +def is_legacy_staging(d): + import bb + stagefunc = bb.data.getVar('do_stage', d, True) + legacy = True + if stagefunc is None: + legacy = False + elif stagefunc.strip() == "autotools_stage_all": + legacy = False + elif stagefunc.strip() == "do_stage_native" and bb.data.getVar('AUTOTOOLS_NATIVE_STAGE_INSTALL', d, 1) == "1": + legacy = False + elif bb.data.getVar('NATIVE_INSTALL_WORKS', d, 1) == "1": + legacy = False + if bb.data.getVar('PSTAGE_BROKEN_DESTDIR', d, 1) == "1": + legacy = True + return legacy + +do_populate_staging[dirs] = "${STAGING_DIR_TARGET}/${bindir} ${STAGING_DIR_TARGET}/${libdir} \ + ${STAGING_DIR_TARGET}/${includedir} \ ${STAGING_BINDIR_NATIVE} ${STAGING_LIBDIR_NATIVE} \ ${STAGING_INCDIR_NATIVE} \ ${STAGING_DATADIR} \ @@ -987,8 +1053,59 @@ do_populate_staging[dirs] = "${STAGING_DIR_TARGET}/${layout_bindir} ${STAGING_DI # Could be compile but populate_staging and do_install shouldn't run at the same time addtask populate_staging after do_install +SYSROOT_PREPROCESS_FUNCS ?= "" +SYSROOT_DESTDIR = "${WORKDIR}/sysroot-destdir/" +SYSROOT_LOCK = "${STAGING_DIR}/staging.lock" + +python populate_staging_prehook () { + return +} + +python populate_staging_posthook () { + return +} + +packagedstaging_fastpath () { + : +} + python do_populate_staging () { - bb.build.exec_func('do_stage', d) + # + # if do_stage exists, we're legacy. In that case run the do_stage, + # modify the SYSROOT_DESTDIR variable and then run the staging preprocess + # functions against staging directly. + # + # Otherwise setup a destdir, copy the results from do_install + # and run the staging preprocess against that + # + pstageactive = (bb.data.getVar("PSTAGING_ACTIVE", d, True) == "1") + lockfile = bb.data.getVar("SYSROOT_LOCK", d, True) + stagefunc = bb.data.getVar('do_stage', d, True) + legacy = is_legacy_staging(d) + if legacy: |
