SDK Fixes and other Patches
Richard,
This has been built against the AB and ready for pull
There is one multilib related issue I am still tracking down related to task-core-boot, but I can seem to determin which commit here casues it yet.
Please pull this set and we will work that out.
Sau!
The following changes since commit 64422f7c5da160050a5454817c8fa9d070104b34:
package.bbclass: Add missing PKGR, PKGV, PKGE and ALTERNATIVE variables from PACKAGEVARS (2012-07-02 16:44:57 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib sgw/stage
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=sgw/stage
Darren Hart (2):
linux-yocto-custom: Remove linux-tools
core-image*sdk: Add kernel-dev to sdk images
Dennis Lan (1):
openjade-native: fix undefined Getopts error, use std namespace
Khem Raj (1):
kconfig-frontends: New recipe
Mark Hatle (9):
Fix manual log file paths
populate_sdk.bbclass: Split into two parts
populate_sdk: Allow for attempt only packages in the SDK populate_sdk_base.bbclass: Change to using task specific depends
populate_sdk: enable basic multilib support
libc-common: Allow -dbg package to append, and not just set package
variables
package.bbclass: Allow a package to skip per file dependency
generation
image.bbclass: Add support to build the SDK in parallel with the
image
base.bbclass: Add cross-canadian-${TRANSLATED_TARGET_ARCH} to the
license exclusion list
Paul Gortmaker (2):
u-boot: Don't make the -Os removal part of global settings.
u-boot: do not clobber PARALLEL_MAKE setting
Richard Purdie (1):
autotools.bbclass: When configure fails, dump the config.log files
the logs
Robert Yang (1):
icu 3.6: do_install failed: Segmentation fault
.../recipes-kernel/linux/linux-yocto-custom.bb | 2 - meta/classes/autotools.bbclass | 9 ++- meta/classes/base.bbclass | 2 +- meta/classes/image.bbclass | 7 +- meta/classes/libc-common.bbclass | 6 +- meta/classes/package.bbclass | 3 + meta/classes/package_deb.bbclass | 4 +- meta/classes/package_ipk.bbclass | 2 +- meta/classes/package_rpm.bbclass | 10 +- meta/classes/populate_sdk.bbclass | 91 +------------- meta/classes/populate_sdk_base.bbclass | 128 ++++++++++++++++++++ meta/classes/populate_sdk_deb.bbclass | 6 +- meta/classes/populate_sdk_ipk.bbclass | 5 +- meta/classes/populate_sdk_rpm.bbclass | 4 +- meta/classes/rootfs_deb.bbclass | 2 + meta/classes/rootfs_ipk.bbclass | 2 + meta/classes/toolchain-scripts.bbclass | 16 ++- meta/recipes-bsp/u-boot/u-boot.inc | 5 +- .../kconfig-frontends/kconfig-frontends_3.4.bb | 34 +++++ .../openjade/openjade-1.3.2/msggen.pl.patch | 44 +++++++ .../openjade/openjade-native_1.3.2.bb | 1 + meta/recipes-extended/images/core-image-lsb-sdk.bb | 1 + meta/recipes-rt/images/core-image-rt-sdk.bb | 2 +- meta/recipes-sato/images/core-image-sato-sdk.bb | 3 + .../icu/files/larger-cmd-size.patch | 27 ++++ meta/recipes-support/icu/icu-3.6.inc | 1 + meta/recipes-support/icu/icu_3.6.bb | 2 +- 27 files changed, 299 insertions(+), 120 deletions(-) create mode 100644 meta/classes/populate_sdk_base.bbclass create mode 100644 meta/recipes-devtools/kconfig-frontends/kconfig-frontends_3.4.bb create mode 100644 meta/recipes-devtools/openjade/openjade-1.3.2/msggen.pl.patch create mode 100644 meta/recipes-support/icu/files/larger-cmd-size.patch
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 01/17] kconfig-frontends: New recipe
From: Khem Raj <[email protected]>
kconfig-frontends provides the kconfig infrastructure thats used for linux kernel as a standalone package. Its not intended to be used for kernel itself but can be used by packages who are based on kconfig e.g. busybox uclibc or new packages who wants to use kconfig infra for the package build
kconfig-frontends names it's shared library as -3.4.0.so instead of .so.3.4.0, this causes the -dev package to grab it since it matches on *.so. This error would also have shown up with the old PACKAGE order.
--- .../kconfig-frontends/kconfig-frontends_3.4.bb | 34 ++++++++++++++++++++ 1 files changed, 34 insertions(+), 0 deletions(-) create mode 100644 meta/recipes-devtools/kconfig-frontends/kconfig-frontends_3.4.bb
meta/recipes-devtools/kconfig-frontends/kconfig-frontends_3.4.bb new file +34 -0
@@ -0,0 +1,34 @@ +# Copyright (C) 2012 Khem Raj <[email protected]> +# Released under the MIT license (see COPYING.MIT for the terms) + +DESCRIPTION = "The kconfig-frontends project aims at centralising \ +the effort of keeping an up-to-date, out-of-tree, packaging of the \ +kconfig infrastructure, ready for use by third-party projects. \ +The kconfig-frontends package provides the kconfig parser, as well as all \ +the frontends" +HOMEPAGE = "http://ymorin.is-a-geek.org/projects/kconfig-frontends" +LICENSE = "GPL-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=9b8cf60ff39767ff04b671fca8302408" +SECTION = "devel" +DEPENDS += "ncurses flex bison gperf" +PR = "r0" +PV = "3.4.0" +SPIN = "0" +SRC_URI = "http://ymorin.is-a-geek.org/download/${BPN}/${BPN}-${PV}-${SPIN}.tar.xz" +SRC_URI[md5sum] = "7eed0faf5a41d6dd0b2a886a440a972d" +SRC_URI[sha256sum] = "638006f3d1aefefdc1db3030a15b562cf3c89f2028b1cea0bf0f0629708802f2" + +S = "${WORKDIR}/${BPN}-${PV}-${SPIN}" + +inherit autotools +do_configure_prepend () { + mkdir -p scripts/.autostuff/m4 +} +EXTRA_OECONF += "--disable-gconf --disable-qconf" + +# Some packages have the version preceeding the .so instead properly +# versioned .so.<version>, so we need to reorder and repackage. +SOLIBS = "-${PV}.so" +FILES_SOLIBSDEV = "${libdir}/libkconfig-parser.so" + +BBCLASSEXTEND = "native"
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 02/17] icu 3.6: do_install failed: Segmentation fault
In reply to Saul WoldFrom: Robert Yang <[email protected]>
There is a "Segmentation fault" error when the tmpdir is longer than 470 (or less), this is because it used "char cmd[1024]" which is not enough for the command line. Allocate a larger memory size should fix this problem.
[YOCTO #2664]
--- .../icu/files/larger-cmd-size.patch | 27 ++++++++++++++++++++ meta/recipes-support/icu/icu-3.6.inc | 1 + meta/recipes-support/icu/icu_3.6.bb | 2 +- 3 files changed, 29 insertions(+), 1 deletions(-) create mode 100644 meta/recipes-support/icu/files/larger-cmd-size.patch
meta/recipes-support/icu/files/larger-cmd-size.patch new file +27 -0
@@ -0,0 +1,27 @@ +Allocate a larger memory size for cmd + +The length of the command line can be longer than 1024 sometimes, +which will cause a "Segmentation fault" error. + +Signed-off-by: Robert Yang <[email protected]> + +Upstream-Status: Pending +--- + tools/pkgdata/pkgdata.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/pkgdata/pkgdata.c b/tools/pkgdata/pkgdata.c +--- a/tools/pkgdata/pkgdata.c ++++ b/tools/pkgdata/pkgdata.c +@@ -439,7 +439,7 @@ main(int argc, char* argv[]) { + /* POSIX - execute makefile */ + static int executeMakefile(const UPKGOptions *o) + { +- char cmd[1024]; ++ char cmd[2048]; + /*char pwd[1024];*/ + const char *make; + int rc; +-- +1.7.10.2 +
meta/recipes-support/icu/icu-3.6.inc +1 -0
@@ -6,6 +6,7 @@ BASE_SRC_URI = "ftp://ftp.software.ibm.com/software/globalization/icu/3.6/icu4c- file://gccfix.patch \ file://fix-parallel-build.patch \ file://use-g++-for-linking.patch \ + file://larger-cmd-size.patch \ " SRC_URI = "${BASE_SRC_URI} \ file://noldlibpath.patch \
meta/recipes-support/icu/icu_3.6.bb +1 -1
@@ -1,6 +1,6 @@ require icu-3.6.inc -PR = "r8" +PR = "r9" SRC_URI[md5sum] = "6243f7a19e03e05403ce84e597510d4c" SRC_URI[sha256sum] = "5135e8d69d6206d320515df7aeee7027711ab1aef9d8dbf29571a97a9746b041"
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 04/17] core-image*sdk: Add kernel-dev to sdk images
In reply to Saul WoldFrom: Darren Hart <[email protected]>
While sdk images already have dev-pkgs included, the kernel-dev package is special and does not get installed. Add kernel-dev explicitly to the *sdk image recipes.
Note: We have to be careful with "IMAGE_INSTALL +=" as it must appear after "inherit core-image" which makes an "IMAGE_INSTALL ?=" assignment.
--- meta/recipes-extended/images/core-image-lsb-sdk.bb | 1 + meta/recipes-rt/images/core-image-rt-sdk.bb | 2 +- meta/recipes-sato/images/core-image-sato-sdk.bb | 3 +++ 3 files changed, 5 insertions(+), 1 deletions(-)
meta/recipes-extended/images/core-image-lsb-sdk.bb +1 -0
@@ -10,6 +10,7 @@ IMAGE_INSTALL = "\ ${CORE_IMAGE_BASE_INSTALL} \ task-core-basic \ task-core-lsb \ + kernel-dev \ " inherit core-image
meta/recipes-rt/images/core-image-rt-sdk.bb +1 -1
@@ -11,6 +11,6 @@ DEPENDS = "linux-yocto-rt" IMAGE_FEATURES += "dev-pkgs tools-sdk" EXTRA_IMAGE_FEATURES += "tools-debug tools-profile tools-testapps debug-tweaks" -IMAGE_INSTALL += "rt-tests" +IMAGE_INSTALL += "rt-tests kernel-dev" LICENSE = "MIT"
meta/recipes-sato/images/core-image-sato-sdk.bb +3 -0
@@ -11,3 +11,6 @@ EXTRA_IMAGE_FEATURES += "tools-debug tools-profile tools-testapps debug-tweaks" LICENSE = "MIT" inherit core-image + +IMAGE_INSTALL += "kernel-dev" +
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 03/17] linux-yocto-custom: Remove linux-tools
In reply to Saul WoldFrom: Darren Hart <[email protected]>
Remove the linux-tools include as perf is now packaged independently. Without this, including meta-skeleton in bblayers.conf results in a build failure as linux-tools.inc cannot be found.
--- .../recipes-kernel/linux/linux-yocto-custom.bb | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-)
meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb +0 -2
@@ -42,5 +42,3 @@ PR = "r0" PV = "${LINUX_VERSION}+git${SRCPV}" COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemux86-64)" - -require recipes-kernel/linux/linux-tools.inc
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 06/17] populate_sdk.bbclass: Split into two parts
In reply to Saul WoldFrom: Mark Hatle <[email protected]>
populate_sdk was renamed to populate_sdk_base in order to allow for changes that may break existing SDK recipes. Any such changes need an analog in populate_sdk (new version) to restore previous desired behavior.
In addition to the rename, one minor change was made. The _base version only had the do_populate_sdk as an added task, but no before or after defined.
For compatibility, populate_sdk has do_populate_sdk defined as "after" do_install and before do_build, this is identical to the original behavior.
--- meta/classes/populate_sdk.bbclass | 91 ++------------------------------ meta/classes/populate_sdk_base.bbclass | 89 +++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+), 87 deletions(-) create mode 100644 meta/classes/populate_sdk_base.bbclass
meta/classes/populate_sdk.bbclass +4 -87
@@ -1,89 +1,6 @@ -inherit meta toolchain-scripts -inherit populate_sdk_${IMAGE_PKGTYPE} +# The majority of populate_sdk is located in populate_sdk_base +# This chunk simply facilitates compatibility with SDK only recipes. -SDK_DIR = "${WORKDIR}/sdk" -SDK_OUTPUT = "${SDK_DIR}/image" -SDK_DEPLOY = "${TMPDIR}/deploy/sdk" +inherit populate_sdk_base -SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${MULTIMACH_TARGET_SYS}" - -TOOLCHAIN_HOST_TASK ?= "task-sdk-host-nativesdk task-cross-canadian-${TRANSLATED_TARGET_ARCH}" -TOOLCHAIN_TARGET_TASK ?= "task-core-standalone-sdk-target task-core-standalone-sdk-target-dbg" -TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}" - -RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}" -DEPENDS = "virtual/fakeroot-native sed-native" - -PID = "${@os.getpid()}" - -EXCLUDE_FROM_WORLD = "1" - -python () { - # If we don't do this we try and run the mapping hooks while parsing which is slow - # bitbake should really provide something to let us know this... - if bb.data.getVar('BB_WORKERCONTEXT', d, True) is not None: - runtime_mapping_rename("TOOLCHAIN_TARGET_TASK", d) -} - -fakeroot do_populate_sdk() { - rm -rf ${SDK_OUTPUT} - mkdir -p ${SDK_OUTPUT} - - # populate_sdk_<image> is required to construct two images: - # SDK_ARCH-nativesdk - contains the cross compiler and associated tooling - # target - contains a target rootfs configured for the SDK usage - # - # the output of populate_sdk_<image> should end up in ${SDK_OUTPUT} it is made - # up of: - # ${SDK_OUTPUT}/<sdk_arch-nativesdk pkgs> - # ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/<target pkgs> - - populate_sdk_${IMAGE_PKGTYPE} - - # Don't ship any libGL in the SDK - rm -rf ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/libGL* - - # Can copy pstage files here - # target_pkgs=`cat ${SDK_OUTPUT}/${SDKTARGETSYSROOT}/var/lib/opkg/status | grep Package: | cut -f 2 -d ' '` - - # Fix or remove broken .la files - #rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}/lib/*.la - rm -f ${SDK_OUTPUT}/${SDKPATHNATIVE}${libdir_nativesdk}/*.la - - # Link the ld.so.cache file into the hosts filesystem - ln -s /etc/ld.so.cache ${SDK_OUTPUT}/${SDKPATHNATIVE}/etc/ld.so.cache - - # Setup site file for external use - toolchain_create_sdk_siteconfig ${SDK_OUTPUT}/${SDKPATH}/site-config-${MULTIMACH_TARGET_SYS} - - toolchain_create_sdk_env_script - - # Add version information - toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${MULTIMACH_TARGET_SYS} - - # Package it up - mkdir -p ${SDK_DEPLOY} - cd ${SDK_OUTPUT} - tar --owner=root --group=root -cj --file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 . -} - -populate_sdk_log_check() { - for target in $* - do - lf_path="`dirname ${BB_LOGFILE}`/log.do_$target.${PID}" - - echo "log_check: Using $lf_path as logfile" - - if test -e "$lf_path" - then - ${IMAGE_PKGTYPE}_log_check $target $lf_path - else - echo "Cannot find logfile [$lf_path]" - fi - echo "Logfile is clean" - done -} - -do_populate_sdk[nostamp] = "1" -do_populate_sdk[recrdeptask] = "do_package_write" -addtask populate_sdk before do_build after do_install +addtask populate_sdk after do_install before do_build
meta/classes/populate_sdk_base.bbclass new file +89 -0
89 lines not on this page · raw message
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 07/17] populate_sdk: Allow for attempt only packages in the SDK
In reply to Saul WoldFrom: Mark Hatle <[email protected]>
We want to be able to supply attempt only packages in the SDK in order to support more advanced SDK images that more closely match specific image recipes.
--- meta/classes/populate_sdk_base.bbclass | 2 ++ meta/classes/populate_sdk_deb.bbclass | 4 ++-- meta/classes/populate_sdk_ipk.bbclass | 3 ++- meta/classes/populate_sdk_rpm.bbclass | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-)
meta/classes/populate_sdk_base.bbclass +2 -0
@@ -8,7 +8,9 @@ SDK_DEPLOY = "${TMPDIR}/deploy/sdk" SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${MULTIMACH_TARGET_SYS}" TOOLCHAIN_HOST_TASK ?= "task-sdk-host-nativesdk task-cross-canadian-${TRANSLATED_TARGET_ARCH}" +TOOLCHAIN_HOST_TASK_ATTEMPTONLY ?= "" TOOLCHAIN_TARGET_TASK ?= "task-core-standalone-sdk-target task-core-standalone-sdk-target-dbg" +TOOLCHAIN_TARGET_TASK_ATTEMPTONLY ?= "" TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}" RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
meta/classes/populate_sdk_deb.bbclass +2 -2
@@ -28,7 +28,7 @@ populate_sdk_deb () { export INSTALL_BASEARCH_DEB="${DPKG_ARCH}" export INSTALL_ARCHS_DEB="${PACKAGE_ARCHS}" export INSTALL_PACKAGES_DEB="${TOOLCHAIN_TARGET_TASK}" - export INSTALL_PACKAGES_ATTEMPTONLY_DEB="" + export INSTALL_PACKAGES_ATTEMPTONLY_DEB="${TOOLCHAIN_TARGET_TASK_ATTEMPTONLY}" export PACKAGES_LINGUAS_DEB="" export INSTALL_TASK_DEB="populate_sdk-target"
@@ -44,7 +44,7 @@ populate_sdk_deb () { export INSTALL_BASEARCH_DEB="${DEB_SDK_ARCH}" export INSTALL_ARCHS_DEB="${SDK_PACKAGE_ARCHS}" export INSTALL_PACKAGES_DEB="${TOOLCHAIN_HOST_TASK}" - export INSTALL_PACKAGES_ATTEMPTONLY_DEB="" + export INSTALL_PACKAGES_ATTEMPTONLY_DEB="${TOOLCHAIN_HOST_TASK_ATTEMPTONLY}" export PACKAGES_LINGUAS_DEB="" export INSTALL_TASK_DEB="populate_sdk-nativesdk"
meta/classes/populate_sdk_ipk.bbclass +2 -1
@@ -11,7 +11,6 @@ populate_sdk_ipk() { package_update_index_ipk package_generate_ipkg_conf - export INSTALL_PACKAGES_ATTEMPTONLY_IPK="" export INSTALL_PACKAGES_LINGUAS_IPK="" export INSTALL_TASK_IPK="populate_sdk"
@@ -19,6 +18,7 @@ populate_sdk_ipk() { export INSTALL_ROOTFS_IPK="${SDK_OUTPUT}/${SDKTARGETSYSROOT}" export INSTALL_CONF_IPK="${IPKGCONF_TARGET}" export INSTALL_PACKAGES_IPK="${TOOLCHAIN_TARGET_TASK}" + export INSTALL_PACKAGES_ATTEMPTONLY_IPK="${TOOLCHAIN_TARGET_TASK_ATTEMPTONLY}" export D=${INSTALL_ROOTFS_IPK} export OFFLINE_ROOT=${INSTALL_ROOTFS_IPK}
@@ -31,6 +31,7 @@ populate_sdk_ipk() { export INSTALL_ROOTFS_IPK="${SDK_OUTPUT}" export INSTALL_CONF_IPK="${IPKGCONF_SDK}" export INSTALL_PACKAGES_IPK="${TOOLCHAIN_HOST_TASK}" + export INSTALL_PACKAGES_ATTEMPTONLY_IPK="${TOOLCHAIN_HOST_TASK_ATTEMPTONLY}" package_install_internal_ipk
meta/classes/populate_sdk_rpm.bbclass +2 -2
@@ -33,7 +33,7 @@ populate_sdk_rpm () { export INSTALL_PLATFORM_RPM="${TARGET_ARCH}" export INSTALL_CONFBASE_RPM="${RPMCONF_TARGET_BASE}" export INSTALL_PACKAGES_RPM="${TOOLCHAIN_TARGET_TASK}" - export INSTALL_PACKAGES_ATTEMPTONLY_RPM="" + export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${TOOLCHAIN_TARGET_TASK_ATTEMPTONLY}" export INSTALL_PACKAGES_LINGUAS_RPM="" export INSTALL_PROVIDENAME_RPM="/bin/sh /bin/bash /usr/bin/env /usr/bin/perl pkgconfig pkgconfig(pkg-config)" export INSTALL_TASK_RPM="populate_sdk-target"
@@ -82,7 +82,7 @@ EOF export INSTALL_PLATFORM_RPM="${SDK_ARCH}" export INSTALL_CONFBASE_RPM="${RPMCONF_HOST_BASE}" export INSTALL_PACKAGES_RPM="${TOOLCHAIN_HOST_TASK}" - export INSTALL_PACKAGES_ATTEMPTONLY_RPM="" + export INSTALL_PACKAGES_ATTEMPTONLY_RPM="${TOOLCHAIN_TARGET_HOST_ATTEMPTONLY}" export INSTALL_PACKAGES_LINGUAS_RPM="" export INSTALL_PROVIDENAME_RPM="/bin/sh /bin/bash /usr/bin/env /usr/bin/perl pkgconfig libGL.so()(64bit) libGL.so" export INSTALL_TASK_RPM="populate_sdk_rpm-nativesdk"
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 09/17] populate_sdk: enable basic multilib support
In reply to Saul WoldFrom: Mark Hatle <[email protected]>
In order to enable basic multilib support for the export of an SDK image, a number of minor changes had to be made:
The value of MULTIMACH_TARGET_SYS needs to be variable. This way we can define the value to the appropriate multilib. (Also in some cases the default PACKAGE_ARCH is set to MACHINE_ARCH which is incorrect for the SDK.) Add a companion REAL_MULTIMACH_TARGET_SYS, based on code from meta-environment, to allow for this.
We have to convert the do_populate_sdk into a python call, and then break up the previous items into three parts.
* Image construction
* Setup of environment files
* Generation of the tarball
Then we can iterate over the multilibs to populate the environment files.
Finally, matching changes were needed in the toolchain-scripts file. And what I presume is an optimization of immediate evaluation for TOOLCHAIN_CONFIGSITE_NOCACHE and ..._SYSROOTCACHE needed to be done at runtime, otherwise the wrong values may be used.
--- meta/classes/populate_sdk_base.bbclass | 42 ++++++++++++++++++++++++++++--- meta/classes/toolchain-scripts.bbclass | 16 +++++++---- 2 files changed, 48 insertions(+), 10 deletions(-)
meta/classes/populate_sdk_base.bbclass +38 -4
@@ -16,6 +16,10 @@ TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}" SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}" SDK_DEPENDS = "virtual/fakeroot-native sed-native" +# We want the MULTIARCH_TARGET_SYS to point to the TUNE_PKGARCH, not PACKAGE_ARCH as it +# could be set to the MACHINE_ARCH +REAL_MULTIMACH_TARGET_SYS = "${TUNE_PKGARCH}${TARGET_VENDOR}-${TARGET_OS}" + PID = "${@os.getpid()}" EXCLUDE_FROM_WORLD = "1"
@@ -27,7 +31,33 @@ python () { runtime_mapping_rename("TOOLCHAIN_TARGET_TASK", d) } -fakeroot do_populate_sdk() { +fakeroot python do_populate_sdk() { + bb.build.exec_func("populate_sdk_image", d) + + # Handle multilibs in the SDK environment, siteconfig, etc files... + localdata = bb.data.createCopy(d) + + # make sure we only use the WORKDIR value from 'd', or it can change + localdata.setVar('WORKDIR', d.getVar('WORKDIR', True)) + + # make sure we only use the SDKTARGETSYSROOT value from 'd' + localdata.setVar('SDKTARGETSYSROOT', d.getVar('SDKTARGETSYSROOT', True)) + + # Process DEFAULTTUNE + bb.build.exec_func("create_sdk_files", localdata) + + variants = d.getVar("MULTILIB_VARIANTS", True) or "" + for item in variants.split(): + # Load overrides from 'd' to avoid having to reset the value... + overrides = d.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item + localdata.setVar("OVERRIDES", overrides) + bb.data.update_data(localdata) + bb.build.exec_func("create_sdk_files", localdata) + + bb.build.exec_func("tar_sdk", d) +} + +fakeroot populate_sdk_image() { rm -rf ${SDK_OUTPUT} mkdir -p ${SDK_OUTPUT}
@@ -54,15 +84,19 @@ fakeroot do_populate_sdk() { # Link the ld.so.cache file into the hosts filesystem ln -s /etc/ld.so.cache ${SDK_OUTPUT}/${SDKPATHNATIVE}/etc/ld.so.cache +} +fakeroot create_sdk_files() { # Setup site file for external use - toolchain_create_sdk_siteconfig ${SDK_OUTPUT}/${SDKPATH}/site-config-${MULTIMACH_TARGET_SYS} + toolchain_create_sdk_siteconfig ${SDK_OUTPUT}/${SDKPATH}/site-config-${REAL_MULTIMACH_TARGET_SYS} - toolchain_create_sdk_env_script + toolchain_create_sdk_env_script ${SDK_OUTPUT}/${SDKPATH}/environment-setup-${REAL_MULTIMACH_TARGET_SYS} # Add version information - toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${MULTIMACH_TARGET_SYS} + toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${REAL_MULTIMACH_TARGET_SYS} +} +fakeroot tar_sdk() { # Package it up mkdir -p ${SDK_DEPLOY} cd ${SDK_OUTPUT}
meta/classes/toolchain-scripts.bbclass +10 -6
@@ -1,15 +1,19 @@ inherit siteinfo +# We want to be able to change the value of MULTIMACH_TARGET_SYS, because it +# doesn't always match our expectations... but we default to the stock value +REAL_MULTIMACH_TARGET_SYS ?= "${MULTIMACH_TARGET_SYS}" + # This function creates an environment-setup-script for use in a deployable SDK toolchain_create_sdk_env_script () { # Create environment setup script - script=${SDK_OUTPUT}/${SDKPATH}/environment-setup-${MULTIMACH_TARGET_SYS} + script=${1:-${SDK_OUTPUT}/${SDKPATH}/environment-setup-${REAL_MULTIMACH_TARGET_SYS}} rm -f $script touch $script - echo 'export PATH=${SDKPATHNATIVE}${bindir_nativesdk}:${SDKPATHNATIVE}${bindir_nativesdk}/${MULTIMACH_TARGET_SYS}:$PATH' >> $script + echo 'export PATH=${SDKPATHNATIVE}${bindir_nativesdk}:${SDKPATHNATIVE}${bindir_nativesdk}/${REAL_MULTIMACH_TARGET_SYS}:$PATH' >> $script echo 'export PKG_CONFIG_SYSROOT_DIR=${SDKTARGETSYSROOT}' >> $script echo 'export PKG_CONFIG_PATH=${SDKTARGETSYSROOT}${libdir}/pkgconfig' >> $script - echo 'export CONFIG_SITE=${SDKPATH}/site-config-${MULTIMACH_TARGET_SYS}' >> $script + echo 'export CONFIG_SITE=${SDKPATH}/site-config-${REAL_MULTIMACH_TARGET_SYS}' >> $script echo 'export CC=${TARGET_PREFIX}gcc' >> $script echo 'export CXX=${TARGET_PREFIX}g++' >> $script echo 'export GDB=${TARGET_PREFIX}gdb' >> $script
@@ -36,7 +40,7 @@ toolchain_create_sdk_env_script () { # This function creates an environment-setup-script in the TMPDIR which enables # a OE-core IDE to integrate with the build tree toolchain_create_tree_env_script () { - script=${TMPDIR}/environment-setup-${MULTIMACH_TARGET_SYS} + script=${TMPDIR}/environment-setup-${REAL_MULTIMACH_TARGET_SYS} rm -f $script touch $script echo 'export PATH=${PATH}' >> $script
@@ -103,8 +107,8 @@ toolchain_create_sdk_env_script_for_installer () { } #we get the cached site config in the runtime -TOOLCHAIN_CONFIGSITE_NOCACHE := "${@siteinfo_get_files(d, True)}" -TOOLCHAIN_CONFIGSITE_SYSROOTCACHE := "${STAGING_DATADIR}/${TARGET_SYS}_config_site.d" +TOOLCHAIN_CONFIGSITE_NOCACHE = "${@siteinfo_get_files(d, True)}" +TOOLCHAIN_CONFIGSITE_SYSROOTCACHE = "${STAGING_DATADIR}/${TARGET_SYS}_config_site.d" TOOLCHAIN_NEED_CONFIGSITE_CACHE = "${TCLIBC} ncurses" #This function create a site config file
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 08/17] populate_sdk_base.bbclass: Change to using task specific depends
In reply to Saul WoldFrom: Mark Hatle <[email protected]>
If we combine the do_populate_sdk with the image generation, we want to avoid the dependency processing unless do_populate_sdk is run.
This requires the bitbake change to implement task based rdepends.
--- meta/classes/populate_sdk_base.bbclass | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-)
meta/classes/populate_sdk_base.bbclass +4 -2
@@ -13,8 +13,8 @@ TOOLCHAIN_TARGET_TASK ?= "task-core-standalone-sdk-target task-core-standalone-s TOOLCHAIN_TARGET_TASK_ATTEMPTONLY ?= "" TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}" -RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}" -DEPENDS = "virtual/fakeroot-native sed-native" +SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}" +SDK_DEPENDS = "virtual/fakeroot-native sed-native" PID = "${@os.getpid()}"
@@ -87,5 +87,7 @@ populate_sdk_log_check() { } do_populate_sdk[nostamp] = "1" +do_populate_sdk[depends] = "${@' '.join([x + ':do_populate_sysroot' for x in d.getVar('SDK_DEPENDS', True).split()])}" +do_populate_sdk[rdepends] = "${@' '.join([x + ':do_populate_sysroot' for x in d.getVar('SDK_RDEPENDS', True).split()])}" do_populate_sdk[recrdeptask] = "do_package_write" addtask populate_sdk
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 10/17] u-boot: Don't make the -Os removal part of global settings.
In reply to Saul WoldFrom: Paul Gortmaker <[email protected]>
We don't want to force everyone to be stripping the -Os flags from their u-boot builds. Remove it, since it pertains to an old toolchain issue that is no longer relevant, and it breaks the powerpc mpc8315.
--- meta/recipes-bsp/u-boot/u-boot.inc | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
meta/recipes-bsp/u-boot/u-boot.inc +1 -2
@@ -7,8 +7,7 @@ inherit deploy PARALLEL_MAKE="" -# GCC 4.5.1 builds unusable binaries using -Os, remove it from OPTFLAGS -EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX} OPTFLAGS='-O2'" +EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}" python () { if not d.getVar("UBOOT_MACHINE", True):
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 05/17] Fix manual log file paths
In reply to Saul WoldFrom: Mark Hatle <[email protected]>
When a recent change, the path to log files may be contained within an arbitrary directory. To generate the manual log files in the correct path we should be using the ${BB_LOGFILE}'s path instead of always assuming the logs go into ${WORKDIR}/temp.
--- meta/classes/image.bbclass | 2 +- meta/classes/package_deb.bbclass | 4 ++-- meta/classes/package_ipk.bbclass | 2 +- meta/classes/package_rpm.bbclass | 10 +++++----- meta/classes/populate_sdk.bbclass | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-)
meta/classes/image.bbclass +1 -1
@@ -220,7 +220,7 @@ insert_feed_uris () { log_check() { for target in $* do - lf_path="${WORKDIR}/temp/log.do_$target.${PID}" + lf_path="`dirname ${BB_LOGFILE}`/log.do_$target.${PID}" echo "log_check: Using $lf_path as logfile"
meta/classes/package_deb.bbclass +2 -2
@@ -167,10 +167,10 @@ package_install_internal_deb () { fi done - rm -f ${WORKDIR}/temp/log.do_${task}-attemptonly.${PID} + rm -f `dirname ${BB_LOGFILE}`/log.do_${task}-attemptonly.${PID} if [ ! -z "${package_attemptonly}" ]; then for i in ${package_attemptonly}; do - apt-get install $i --force-yes --allow-unauthenticated >> ${WORKDIR}/temp/log.do_${task}-attemptonly.${PID} 2>&1 || true + apt-get install $i --force-yes --allow-unauthenticated >> `dirname ${BB_LOGFILE}`/log.do_${task}-attemptonly.${PID} 2>&1 || true done fi
meta/classes/package_ipk.bbclass +1 -1
@@ -157,7 +157,7 @@ package_install_internal_ipk() { fi if [ ! -z "${package_attemptonly}" ]; then - opkg-cl ${ipkg_args} install ${package_attemptonly} > "${WORKDIR}/temp/log.do_${task}_attemptonly.${PID}" || true + opkg-cl ${ipkg_args} install ${package_attemptonly} > "`dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" || true fi package_tryout_install_multilib_ipk
meta/classes/package_rpm.bbclass +5 -5
@@ -342,14 +342,14 @@ package_install_internal_rpm () { echo "Note: Unable to find package $pkg ($ml_pkg) -- PACKAGE_INSTALL_ATTEMPTONLY" continue fi - echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_${task}_attemptonly.${PID}" + echo "Attempting $pkg_name..." >> "`dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ --root "${target_rootfs}/install" \ -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \ -D "__dbi_txn create nofsync private" \ -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ - $pkg_name >> "${WORKDIR}/temp/log.do_${task}_attemptonly.${PID}" || true + $pkg_name >> "`dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" || true done fi
@@ -390,17 +390,17 @@ package_install_internal_rpm () { if [ $found -eq 0 ]; then echo "Note: Unable to find package $pkg -- suggests" - echo "Unable to find package $pkg." >> "${WORKDIR}/temp/log.do_${task}_recommend.${PID}" + echo "Unable to find package $pkg." >> "`dirname ${BB_LOGFILE}`/log.do_${task}_recommend.${PID}" continue fi - echo "Attempting $pkg_name..." >> "${WORKDIR}/temp/log.do_{task}_recommend.${PID}" + echo "Attempting $pkg_name..." >> "`dirname ${BB_LOGFILE}`/log.do_{task}_recommend.${PID}" ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ --root "${target_rootfs}/install" \ -D "_dbpath ${target_rootfs}/install" -D "`cat ${confbase}.macro`" \ -D "__dbi_txn create nofsync private" \ -U --justdb --noscripts --notriggers --noparentdirs --nolinktos --ignoresize \ - $pkg_name >> "${WORKDIR}/temp/log.do_${task}_recommend.${PID}" 2>&1 || true + $pkg_name >> "`dirname ${BB_LOGFILE}`/log.do_${task}_recommend.${PID}" 2>&1 || true done cat ${target_rootfs}/install/recommend.list ${target_rootfs}/install/recommend.new | sort -u > ${target_rootfs}/install/recommend.new.list mv -f ${target_rootfs}/install/recommend.new.list ${target_rootfs}/install/recommend.list
meta/classes/populate_sdk.bbclass +1 -1
@@ -70,7 +70,7 @@ fakeroot do_populate_sdk() { populate_sdk_log_check() { for target in $* do - lf_path="${WORKDIR}/temp/log.do_$target.${PID}" + lf_path="`dirname ${BB_LOGFILE}`/log.do_$target.${PID}" echo "log_check: Using $lf_path as logfile"
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 11/17] u-boot: do not clobber PARALLEL_MAKE setting
In reply to Saul WoldFrom: Paul Gortmaker <[email protected]>
The u-boot tree is fully capable of parallel builds, so this setting should not exist as a blanket setting for all of the recipes. Going forward, if there is a parallelism issue in u-boot, it needs to be reported and fixed there, and not with the "make -j1" band-aid approach.
--- meta/recipes-bsp/u-boot/u-boot.inc | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-)
meta/recipes-bsp/u-boot/u-boot.inc +0 -2
@@ -5,8 +5,6 @@ PROVIDES = "virtual/bootloader" inherit deploy -PARALLEL_MAKE="" - EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}" python () {
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 12/17] autotools.bbclass: When configure fails, dump the config.log files the logs
In reply to Saul WoldFrom: Richard Purdie <[email protected]>
When configure fails, it usually says "see config.log" yet nobody ever shares the config.log file meaning the person trying to help invariably has to ask for more information.
This patch dumps all the config.log files into the main bitbake log files when configure fails, meaning all the information is present to help someone debug such failures. It does make the log rather larger but this is preferable to not having enough information in most cases.
[YOCTO #2463]
--- meta/classes/autotools.bbclass | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-)
meta/classes/autotools.bbclass +8 -1
@@ -74,7 +74,14 @@ oe_runconf () { cfgscript="${S}/configure" if [ -x "$cfgscript" ] ; then bbnote "Running $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} $@" - ${CACHED_CONFIGUREVARS} $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} "$@" || bbfatal "oe_runconf failed" + set +e + ${CACHED_CONFIGUREVARS} $cfgscript ${CONFIGUREOPTS} ${EXTRA_OECONF} "$@" + if [ "$?" != "0" ]; then + echo "Configure failed. The contents of all config.log files follows to aid debugging" + find ${S} -name config.log -print -exec cat {} \; + bbfatal "oe_runconf failed" + fi + set -e else bbfatal "no configure script found at $cfgscript" fi
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 14/17] package.bbclass: Allow a package to skip per file dependency generation
In reply to Saul WoldFrom: Mark Hatle <[email protected]>
Most of the time skipping per file dependency generation is a bad idea, but when building a nativesdk or similar you may be required to pickup host dependencies. These host dependencies can not always be reconciled within the scope of other nativesdk components, so if we skip them we can facilitate this unique situation.
--- meta/classes/package.bbclass | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
meta/classes/package.bbclass +3 -0
@@ -1154,6 +1154,9 @@ RPMDEPS = "${STAGING_LIBDIR_NATIVE}/rpm/bin/rpmdeps-oecore --macros ${STAGING_LI python package_do_filedeps() { import re + if d.getVar('SKIP_FILEDEPS', True) == '1': + return + pkgdest = d.getVar('PKGDEST', True) packages = d.getVar('PACKAGES', True)
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 13/17] libc-common: Allow -dbg package to append, and not just set package variables
In reply to Saul WoldFrom: Mark Hatle <[email protected]>
The libc-common attempts to rewrite the package information in a way similar to debian.bbclass. When it does this, it should be appending to the dependency variables (RPROVIDES, RREPLACES, and RCONFLICTS), instead of simply setting a hard coded value. Otherwise the lib package can not tailor the dependency variables to suite it's needs.
--- meta/classes/libc-common.bbclass | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
meta/classes/libc-common.bbclass +3 -3
@@ -29,7 +29,7 @@ python populate_packages_prepend () { d.setVar('PKG_'+bpn+'-dev', 'libc6-dev') d.setVar('PKG_'+bpn+'-dbg', 'libc6-dbg') # For backward compatibility with old -dbg package - d.setVar('RPROVIDES_' + bpn + '-dbg', 'libc-dbg') - d.setVar('RCONFLICTS_' + bpn + '-dbg', 'libc-dbg') - d.setVar('RREPLACES_' + bpn + '-dbg', 'libc-dbg') + d.appendVar('RPROVIDES_' + bpn + '-dbg', ' libc-dbg') + d.appendVar('RCONFLICTS_' + bpn + '-dbg', ' libc-dbg') + d.appendVar('RREPLACES_' + bpn + '-dbg', ' libc-dbg') }
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 16/17] base.bbclass: Add cross-canadian-${TRANSLATED_TARGET_ARCH} to the license exclusion list
In reply to Saul WoldFrom: Mark Hatle <[email protected]>
This appears to be an oversight in the original implementation. All of the host package types were being ignored except for the SDK cross-canadian type.
--- meta/classes/base.bbclass | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
meta/classes/base.bbclass +1 -1
@@ -432,7 +432,7 @@ python () { dont_want_license = d.getVar('INCOMPATIBLE_LICENSE', True) - if dont_want_license and not pn.endswith("-native") and not pn.endswith("-cross") and not pn.endswith("-cross-initial") and not pn.endswith("-cross-intermediate") and not pn.endswith("-crosssdk-intermediate") and not pn.endswith("-crosssdk") and not pn.endswith("-crosssdk-initial") and not pn.endswith("-nativesdk"): + if dont_want_license and not pn.endswith("-native") and not pn.endswith("-cross") and not pn.endswith("-cross-initial") and not pn.endswith("-cross-intermediate") and not pn.endswith("-crosssdk-intermediate") and not pn.endswith("-crosssdk") and not pn.endswith("-crosssdk-initial") and not pn.endswith("-cross-canadian-%s" % d.getVar('TRANSLATED_TARGET_ARCH', True)) and not pn.endswith("-nativesdk"): # Internally, we'll use the license mapping. This way INCOMPATIBLE_LICENSE = "GPLv2" and # INCOMPATIBLE_LICENSE = "GPLv2.0" will pick up all variations of GPL-2.0 spdx_license = return_spdx(d, dont_want_license)
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 17/17] openjade-native: fix undefined Getopts error, use std namespace
In reply to Saul WoldFrom: Dennis Lan <[email protected]>
Using Gentoo Linux as the build host, it fails without this patch Use Getopt::Std in place of getopts.pl.
https://bugs.gentoo.org/show_bug.cgi?id=420083
which following error:/usr/bin/perl -w ./../msggen.pl -l jstyleModule InterpreterMessages.msg /usr/bin/perl -w ./../msggen.pl -l jstyleModule DssslAppMessages.msg Undefined subroutine &main::Getopts called at ./../msggen.pl line 22. make[2]: *** [InterpreterMessages.h] Error 2
make[2]: *** Waiting for unfinished jobs....
Undefined subroutine &main::Getopts called at ./../msggen.pl line 22. make[2]: *** [DssslAppMessages.h] Error 2
--- .../openjade/openjade-1.3.2/msggen.pl.patch | 44 ++++++++++++++++++++ .../openjade/openjade-native_1.3.2.bb | 1 + 2 files changed, 45 insertions(+), 0 deletions(-) create mode 100644 meta/recipes-devtools/openjade/openjade-1.3.2/msggen.pl.patch
meta/recipes-devtools/openjade/openjade-1.3.2/msggen.pl.patch new file +44 -0
@@ -0,0 +1,44 @@ +commit fcc5b94f118495b1a467edcda6c6f631691c3f69 +Author: Dennis Lan <[email protected]> +Date: Tue Jul 3 09:25:42 2012 +0800 + + openjade: fix undefined Getopts error, use std namespace + + Using Gentoo Linux as the build host, it fails without this patch + Use Getopt::Std in place of getopts.pl. + + Upstream-Status: Inappropriate [no upstream] + Original-Author-By: Mike Gilbert <[email protected]> + Signed-off-by: Dennis Lan <[email protected]> + +diff --git a/msggen.pl b/msggen.pl +index 0c33968..2ee3f66 100644 +--- a/msggen.pl ++++ b/msggen.pl +@@ -4,6 +4,7 @@ + # See the file COPYING for copying permission. + + use POSIX; ++use Getopt::Std; + + # Package and version. + $package = 'openjade'; +@@ -18,8 +19,7 @@ $gen_c = 0; + undef $opt_l; + undef $opt_p; + undef $opt_t; +-do 'getopts.pl'; +-&Getopts('l:p:t:'); ++getopts('l:p:t:'); + $module = $opt_l; + $pot_file = $opt_p; + +@@ -72,7 +72,7 @@ while (<DEF>) { + else { + $field[0] =~ /^[IWQXE][0-9]$/ || &error("invalid first field");; + $type[$num] = substr($field[0], 0, 1); +- $argc = int(substr($field[0], 1, 1)); ++ $argc = substr($field[0], 1, 1); + } + $nargs[$num] = $argc; + $field[1] =~ /^[a-zA-Z_][a-zA-Z0-9_]+$/ || &error("invalid tag");
meta/recipes-devtools/openjade/openjade-native_1.3.2.bb +1 -0
@@ -14,6 +14,7 @@ RDEPENDS_${PN} = "sgml-common-native" SRC_URI = "${SOURCEFORGE_MIRROR}/openjade/openjade-${PV}.tar.gz \ file://makefile.patch \ + file://msggen.pl.patch \ file://reautoconf.patch \ file://user-declared-default-constructor.patch"
Signature · 1 line
1.7.7.6
[CONSOLIDATED PULL 15/17] image.bbclass: Add support to build the SDK in parallel with the image
In reply to Saul WoldFrom: Mark Hatle <[email protected]>
When building an image recipe, you can now build a companion SDK by calling the populate_sdk task:
bitbake -c populate_sdk core-image-minimal
Note: there are still issues w/ the SDK not working completely with multilibs.
A lock is required between rootfs and populate_sdk activities to prevent configuration file clashes and similar package management problems in ipk and deb based systems. (RPM already had a lock for a different reason.)
--- meta/classes/image.bbclass | 5 +++++ meta/classes/populate_sdk_base.bbclass | 1 + meta/classes/populate_sdk_deb.bbclass | 2 ++ meta/classes/populate_sdk_ipk.bbclass | 2 ++ meta/classes/rootfs_deb.bbclass | 2 ++ meta/classes/rootfs_ipk.bbclass | 2 ++ 6 files changed, 14 insertions(+), 0 deletions(-)
meta/classes/image.bbclass +5 -0
@@ -3,6 +3,11 @@ inherit rootfs_${IMAGE_PKGTYPE} IMAGETEST ?= "dummy" inherit imagetest-${IMAGETEST} +inherit populate_sdk_base + +TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}" +TOOLCHAIN_TARGET_TASK_ATTEMPTONLY += "${PACKAGE_INSTALL_ATTEMPTONLY} ${PACKAGE_GROUP_dev-pkgs} ${PACKAGE_GROUP_dbg-pkgs}" + inherit gzipnative LICENSE = "MIT"
meta/classes/populate_sdk_base.bbclass +1 -0
@@ -120,6 +120,7 @@ populate_sdk_log_check() { done } +do_populate_sdk[dirs] = "${TOPDIR}" do_populate_sdk[nostamp] = "1" do_populate_sdk[depends] = "${@' '.join([x + ':do_populate_sysroot' for x in d.getVar('SDK_DEPENDS', True).split()])}" do_populate_sdk[rdepends] = "${@' '.join([x + ':do_populate_sysroot' for x in d.getVar('SDK_RDEPENDS', True).split()])}"
meta/classes/populate_sdk_deb.bbclass +2 -0
@@ -6,6 +6,8 @@ DEB_SDK_ARCH = "${@[d.getVar('SDK_ARCH', True), "i386"]\ [d.getVar('SDK_ARCH', True) in \ ["x86", "i486", "i586", "i686", "pentium"]]}" +do_populate_sdk[lockfiles] += "${WORKDIR}/deb.lock" + populate_sdk_post_deb () { local target_rootfs=$1
meta/classes/populate_sdk_ipk.bbclass +2 -0
@@ -1,6 +1,8 @@ do_populate_sdk[depends] += "opkg-native:do_populate_sysroot opkg-utils-native:do_populate_sysroot" do_populate_sdk[recrdeptask] += "do_package_write_ipk" +do_populate_sdk[lockfiles] += "${WORKDIR}/ipk.lock" + populate_sdk_ipk() { rm -f ${IPKGCONF_TARGET}
meta/classes/rootfs_deb.bbclass +2 -0
@@ -8,6 +8,8 @@ ROOTFS_PKGMANAGE_BOOTSTRAP = "run-postinsts" do_rootfs[depends] += "dpkg-native:do_populate_sysroot apt-native:do_populate_sysroot" do_rootfs[recrdeptask] += "do_package_write_deb" +do_rootfs[lockfiles] += "${WORKDIR}/deb.lock" + DEB_POSTPROCESS_COMMANDS = "rootfs_install_all_locales; " opkglibdir = "${localstatedir}/lib/opkg"
meta/classes/rootfs_ipk.bbclass +2 -0
@@ -12,6 +12,8 @@ ROOTFS_PKGMANAGE_BOOTSTRAP = "run-postinsts" do_rootfs[depends] += "opkg-native:do_populate_sysroot opkg-utils-native:do_populate_sysroot" do_rootfs[recrdeptask] += "do_package_write_ipk" +do_rootfs[lockfiles] += "${WORKDIR}/ipk.lock" + IPKG_ARGS = "-f ${IPKGCONF_TARGET} -o ${IMAGE_ROOTFS} --force-overwrite" OPKG_PREPROCESS_COMMANDS = "package_update_index_ipk; package_generate_ipkg_conf"
Signature · 1 line
1.7.7.6
Re: [CONSOLIDATED PULL 17/17] openjade-native: fix undefined Getopts error, use std namespace
In reply to Saul WoldQuoted 4 lines · Saul Wold
From: Dennis Lan <[email protected]>
Using Gentoo Linux as the build host, it fails without this patch Use
Getopt::Stdin place of getopts.pl.
This looks like older version (v2 instead of v3) without PR bump.
Quoted 89 lines
https://bugs.gentoo.org/show_bug.cgi?id=420083
which following error:
/usr/bin/perl-w./../msggen.pl-l jstyleModule InterpreterMessages.msg/usr/bin/perl-w./../msggen.pl-l jstyleModule DssslAppMessages.msg Undefined subroutine&main::Getoptscalled at./../msggen.plline 22. make[2]: *** [InterpreterMessages.h] Error 2
make[2]: *** Waiting for unfinished jobs....
Undefined subroutine&main::Getoptscalled at./../msggen.plline 22. make[2]: *** [DssslAppMessages.h] Error 2Signed-off-by Dennis Lan <[email protected]>--- .../openjade/openjade-1.3.2/msggen.pl.patch | 44 ++++++++++++++++++++ .../openjade/openjade-native_1.3.2.bb | 1 + 2 files changed, 45 insertions(+), 0 deletions(-) create mode 100644 meta/recipes-devtools/openjade/openjade-1.3.2/msggen.pl.patchmeta/recipes-devtools/openjade/openjade-1.3.2/msggen.pl.patch new file +44
-0@@ -0,0 +1,44 @@ +commit fcc5b94f118495b1a467edcda6c6f631691c3f69 +Author: Dennis Lan <[email protected]> +Date: Tue Jul 3 09:25:42 2012 +0800 + + openjade: fix undefined Getopts error, use std namespace + + Using Gentoo Linux as the build host, it fails without this patch + Use Getopt::Std in place of getopts.pl. + + Upstream-Status: Inappropriate [no upstream] + Original-Author-By: Mike Gilbert <[email protected]> + Signed-off-by: Dennis Lan <[email protected]> + +diff --git a/msggen.pl b/msggen.pl +index 0c33968..2ee3f66 100644 +--- a/msggen.pl ++++ b/msggen.pl +@@ -4,6 +4,7 @@ + # See the file COPYING for copying permission. + + use POSIX; ++use Getopt::Std; + + # Package and version. + $package = 'openjade'; +@@ -18,8 +19,7 @@ $gen_c = 0; + undef $opt_l; + undef $opt_p; + undef $opt_t; +-do 'getopts.pl'; +-&Getopts('l:p:t:'); ++getopts('l:p:t:'); + $module = $opt_l; + $pot_file = $opt_p; + +@@ -72,7 +72,7 @@ while (<DEF>) { + else { + $field[0] =~ /^[IWQXE][0-9]$/ || &error("invalid first field");; + $type[$num] = substr($field[0], 0, 1); +- $argc = int(substr($field[0], 1, 1)); ++ $argc = substr($field[0], 1, 1); + } + $nargs[$num] = $argc; + $field[1] =~ /^[a-zA-Z_][a-zA-Z0-9_]+$/ || &error("invalid tag");meta/recipes-devtools/openjade/openjade-native_1.3.2.bb +1
-0@@ -14,6 +14,7 @@ RDEPENDS_${PN} = "sgml-common-native" SRC_URI = "${SOURCEFORGE_MIRROR}/openjade/openjade-${PV}.tar.gz \ file://makefile.patch \ + file://msggen.pl.patch \ file://reautoconf.patch \ file://user-declared-default-constructor.patch"Signature · 7 lines
1.7.7.6 _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Signature · 1 line
Martin 'JaMa' Jansa jabber: [email protected]
Quoted 9 lines · Saul Wold
Richard,
This has been built against the AB and ready for pull
There is one multilib related issue I am still tracking down related to task-core-boot, but I can seem to determin which commit here casues it yet.
Please pull this set and we will work that out.
I've merged this. I updated to v3 of the openjade-native patch.
Cheers,
Richard