Skip to contentSkip to conversation

populate_sdk_ext: two fixes

PATCH In review Chen Qi 3 participants 9 messages May 12, 2015 – May 13, 2015

lore
Share & tools
lore

Chen Qi

author
#0 lore raw

v3 cover populate_sdk_ext: two fixes

The following changes since commit 7ffe10df73cc20d10fcd41b121074445273bd60e:

license_class: license_create_manifest improvment (2015-05-09 22:26:02 +0100)

are available in the git repository at:

git://git.openembedded.org/openembedded-core-contrib ChenQi/populate_sdk_ext_2_fixes
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=ChenQi/populate_sdk_ext_2_fixes

Chen Qi (2):
populate_sdk_ext: install the latest buildtools-tarball
populate_sdk_ext: consider custom configuration in local.conf

 meta/classes/populate_sdk_ext.bbclass | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)
Signature · 1 line
1.9.1
author
#1 lore raw

PATCH v3 1/2 populate_sdk_ext: install the latest buildtools-tarball

If we do bitbake buildtools-tarball' and then after one day do bitbake core-image-minimal -c populate_sdk_ext', we would meet errors like below.

| install: cannot stat '/buildarea2/chenqi/poky/build-systemd/tmp/deploy/sdk/ poky-glibc-x86_64-buildtools-tarball-core2-64-buildtools-nativesdk-standalone -1.8+snapshot-20150429.sh': No such file or directory

The problem is that the output name for buildtools-tarball has ${DATE} in it. So if populate_sdk_ext task is executed but buildtools-tarball is not rebuilt, the above error appears.

Instead of hardcoding ${DISTRO_VERSION} which consists of ${DATE} in the install_tools() function, we should find the latest buildtools-tarball based on the modification time and install it.

[YOCTO #7674]

---
 meta/classes/populate_sdk_ext.bbclass | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
meta/classes/populate_sdk_ext.bbclass +3 -1
index dc2c58e..2fc4c11 100644
@@ -168,7 +168,9 @@ install_tools() {
 	ln -sr ${SDK_OUTPUT}/${SDKPATH}/${scriptrelpath}/recipetool ${SDK_OUTPUT}/${SDKPATHNATIVE}${bindir_nativesdk}/recipetool
 	touch ${SDK_OUTPUT}/${SDKPATH}/.devtoolbase
 
-	install ${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUNE_PKGARCH}-buildtools-nativesdk-standalone-${DISTRO_VERSION}.sh ${SDK_OUTPUT}/${SDKPATH}
+	# find latest buildtools-tarball and install it
+	buildtools_path=`ls -t1 ${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUNE_PKGARCH}-buildtools-nativesdk-standalone-*.sh | head -n1`
+	install $buildtools_path ${SDK_OUTPUT}/${SDKPATH}
 
 	install ${SDK_DEPLOY}/${BUILD_ARCH}-nativesdk-libc.tar.bz2 ${SDK_OUTPUT}/${SDKPATH}
 }
Signature · 1 line
1.9.1
author
#8 lore raw

PATCH v3 2/2 populate_sdk_ext: consider custom configuration in local.conf

In reply to Chen Qi

Copy the contents of local.conf under TOPDIR into the final generated local.conf. In this way, custom settings are also made into the final local.conf like IMAGE_INSTALL, DISTRO_FEATURES, VIRTUAL-RUNTIME_xxx, etc.

Before this change, installing extensible SDK would usually report failure when preparing the build system if the user has custom configuration for DISTRO_FEATURES in local.conf. Also, items in IMAGE_INSTALL_append in local.conf also don't get built correctly.

This patch solves the above problem.

A blacklist mechanism is also introduced so that we can blacklist variables that should not be copied into the final local.conf file. Currently, the blacklist contains 'TMPDIR', 'SSTATE_DIR', 'DL_DIR', 'STAMPS_DIR', 'BASE_WORKDIR' and 'DEPLOY_DIR'. What these variables have in common is that they are set in bitbake.conf using '?=' or '??='.

In addition, we check to avoid any setting that might lead to host path bleeding into SDK's configuration.

[YOCTO #7616]

---
 meta/classes/populate_sdk_ext.bbclass | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)
meta/classes/populate_sdk_ext.bbclass +23 -0
index 2fc4c11..49ba26b 100644
@@ -16,6 +16,7 @@ SDK_RDEPENDS_append_task-populate-sdk-ext = " ${SDK_TARGETS}"
 SDK_RELOCATE_AFTER_INSTALL_task-populate-sdk-ext = "0"
 
 SDK_META_CONF_WHITELIST ?= "MACHINE DISTRO PACKAGE_CLASSES"
+SDK_META_CONF_BLACKLIST ?= "TMPDIR DL_DIR SSTATE_DIR STAMPS_DIR BASE_WORKDIR DEPLOY_DIR"
 
 SDK_TARGETS ?= "${PN}"
 OE_INIT_ENV_SCRIPT ?= "oe-init-build-env"
@@ -114,6 +115,28 @@ python copy_buildsystem () {
         f.write('# this configuration provides, it is strongly suggested that you set\n')
         f.write('# up a proper instance of the full build system and use that instead.\n\n')
 
+        # Copy configurations from the current local.conf
+        builddir = d.getVar('TOPDIR', True)
+        with open(builddir + '/conf/local.conf', 'r') as lf:
+            varblacklist = d.getVar('SDK_META_CONF_BLACKLIST', True).split()
+            skip = False
+            for line in lf:
+                line = line.lstrip()
+                if line.startswith('#'):
+                    continue
+                # avoid host path bleeding into SDK configuration
+                if line.find('"/') != -1:
+                    continue
+                for varname in varblacklist:
+                    if line.startswith(varname):
+                        skip = True
+                        break
+                if not skip:
+                    f.write(line)
+                skip = False
+        f.write('\n')
+
+        # Configurations in local.conf which are specific for extensible SDK
         f.write('INHERIT += "%s"\n\n' % 'uninative')
         f.write('CONF_VERSION = "%s"\n\n' % d.getVar('CONF_VERSION'))
 
Signature · 1 line
1.9.1
#2 lore raw

Re: [PATCH V3 1/2] populate_sdk_ext: install the latest buildtools-tarball

In reply to Chen Qi

meta/classes/populate_sdk_ext.bbclass install_tools() { · line 173

Quoted 8 lines · Chen Qi
meta/classes/populate_sdk_ext.bbclass +3 -1
-	install ${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUNE_PKGARCH}-buildtools-nativesdk-standalone-${DISTRO_VERSION}.sh ${SDK_OUTPUT}/${SDKPATH}
+	# find latest buildtools-tarball and install it
+	buildtools_path=`ls -t1 ${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUNE_PKGARCH}-buildtools-nativesdk-standalone-*.sh | head -n1`
+	install $buildtools_path ${SDK_OUTPUT}/${SDKPATH}

why not create a symink instead of poking using wild chars

author
#3 lore raw

Re: [PATCH V3 1/2] populate_sdk_ext: install the latest buildtools-tarball

Quoted 8 lines · Khem Raj

meta/classes/populate_sdk_ext.bbclass install_tools() { · line 173

Quoted 7 lines · Chen Qi
meta/classes/populate_sdk_ext.bbclass +3 -1
-	install ${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUNE_PKGARCH}-buildtools-nativesdk-standalone-${DISTRO_VERSION}.sh ${SDK_OUTPUT}/${SDKPATH}
+	# find latest buildtools-tarball and install it
+	buildtools_path=`ls -t1 ${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUNE_PKGARCH}-buildtools-nativesdk-standalone-*.sh | head -n1`
+	install $buildtools_path ${SDK_OUTPUT}/${SDKPATH}

why not create a symink instead of poking using wild chars

Because it's simpler.

//Chen Qi

#4 lore raw

Re: [PATCH V3 1/2] populate_sdk_ext: install the latest buildtools-tarball

Quoted 6 lines · ChenQi
Quoted 2 lines · Khem Raj
Quoted 2 lines · Chen Qi
Quoted 8 lines
Quoted 6 lines

meta/classes/populate_sdk_ext.bbclass install_tools() { · line 173

Quoted 5 lines
meta/classes/populate_sdk_ext.bbclass +3 -1
-	install ${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUNE_PKGARCH}-buildtools-nativesdk-standalone-${DISTRO_VERSION}.sh ${SDK_OUTPUT}/${SDKPATH}
+	# find latest buildtools-tarball and install it
+	buildtools_path=`ls -t1 ${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUNE_PKGARCH}-buildtools-nativesdk-standalone-*.sh | head -n1`
+	install $buildtools_path ${SDK_OUTPUT}/${SDKPATH}

why not create a symink instead of poking using wild chars

Because it's simpler.

what happens if I touch an older installer ?

Quoted 2 lines

//Chen Qi

author
#5 lore raw

Re: [PATCH V3 1/2] populate_sdk_ext: install the latest buildtools-tarball

Quoted 5 lines · Khem Raj
Quoted 5 lines · ChenQi
Quoted 2 lines · Khem Raj
Quoted 2 lines · Chen Qi
Quoted 8 lines
Quoted 7 lines
Quoted 6 lines

meta/classes/populate_sdk_ext.bbclass install_tools() { · line 173

Quoted 5 lines
meta/classes/populate_sdk_ext.bbclass +3 -1
-	install ${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUNE_PKGARCH}-buildtools-nativesdk-standalone-${DISTRO_VERSION}.sh ${SDK_OUTPUT}/${SDKPATH}
+	# find latest buildtools-tarball and install it
+	buildtools_path=`ls -t1 ${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUNE_PKGARCH}-buildtools-nativesdk-standalone-*.sh | head -n1`
+	install $buildtools_path ${SDK_OUTPUT}/${SDKPATH}

why not create a symink instead of poking using wild chars

Because it's simpler.

what happens if I touch an older installer ?

Hi Khem,

I make this patch to avoid installing a non-existent buildools-tarball.
If we touch an old buildtools-tarball, the installation would still succeed. The touched one is installed.
What would lead to a potential problem is the following situation.
The user built buildtools-tarball, after one day, he modified key part of buildtools-tarball recipe, rebuilt it, and then he deliberately touched the old one, and then he built an ext SDK. I don't think that's a situation we need to take care of.
But if you insist that we should, you can suggest a reasonable symlink name and I would make a new patch.

Best Regards,
Chen Qi

Quoted 2 lines
Quoted 2 lines

//Chen Qi

#6 lore raw

Re: [PATCH V3 1/2] populate_sdk_ext: install the latest buildtools-tarball

Quoted 6 lines · On Wednesday 13 May 2015 10:27:34 ChenQi wrote:
Quoted 5 lines · Khem Raj
Quoted 5 lines · ChenQi
Quoted 2 lines · Khem Raj
Quoted 2 lines · Chen Qi
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
(quoted diff) +0 -1
-	install

${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUN E_PKGARCH}-buildtools-nativesdk-standalone-${DISTRO_VERSION}.sh
${SDK_OUTPUT}/${SDKPATH} + # find latest buildtools-tarball and
install it

(quoted diff) +1 -0
+	buildtools_path=`ls -t1

${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUN E_PKGARCH}-buildtools-nativesdk-standalone-*.sh | head -n1` +

install

Quoted 10 lines
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
Quoted 1 line

$buildtools_path ${SDK_OUTPUT}/${SDKPATH}

why not create a symink instead of poking using wild chars

Because it's simpler.

what happens if I touch an older installer ?

Hi Khem,

Quoted 10 lines

I make this patch to avoid installing a non-existent buildools-tarball. If we touch an old buildtools-tarball, the installation would still succeed. The touched one is installed.
What would lead to a potential problem is the following situation. The user built buildtools-tarball, after one day, he modified key part of buildtools-tarball recipe, rebuilt it, and then he deliberately touched the old one, and then he built an ext SDK.
I don't think that's a situation we need to take care of. But if you insist that we should, you can suggest a reasonable symlink name and I would make a new patch.

Honestly I don't see this is as being a problem we need to handle - who is going to touch this file during normal usage? Builds failing under the conditions described is a much more pressing issue at this point.

It could be that we should re-visit whether using buildtools-tarball rather than having its contents be part of the native portion of the SDK is the right approach. I'm not sure that we need to do that just at this moment though.

Cheers,
Paul

Signature · 2 lines
Paul Eggleton
Intel Open Source Technology Centre
#7 lore raw

Re: [PATCH V3 1/2] populate_sdk_ext: install the latest buildtools-tarball

Quoted 40 lines · Paul Eggleton
Quoted 6 lines · On Wednesday 13 May 2015 10:27:34 ChenQi wrote:
Quoted 5 lines · Khem Raj
Quoted 5 lines · ChenQi
Quoted 2 lines · Khem Raj
Quoted 2 lines · Chen Qi
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
(quoted diff) +0 -1
-	install

${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUN E_PKGARCH}-buildtools-nativesdk-standalone-${DISTRO_VERSION}.sh
${SDK_OUTPUT}/${SDKPATH} + # find latest buildtools-tarball and
install it

(quoted diff) +1 -0
+	buildtools_path=`ls -t1

${SDK_DEPLOY}/${DISTRO}-${TCLIBC}-${SDK_ARCH}-buildtools-tarball-${TUN E_PKGARCH}-buildtools-nativesdk-standalone-*.sh | head -n1` +

install

Quoted 10 lines
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
Quoted 1 line

$buildtools_path ${SDK_OUTPUT}/${SDKPATH}

why not create a symink instead of poking using wild chars

Because it's simpler.

what happens if I touch an older installer ?

Hi Khem,

Quoted 10 lines

I make this patch to avoid installing a non-existent buildools-tarball. If we touch an old buildtools-tarball, the installation would still succeed. The touched one is installed.
What would lead to a potential problem is the following situation. The user built buildtools-tarball, after one day, he modified key part of buildtools-tarball recipe, rebuilt it, and then he deliberately touched the old one, and then he built an ext SDK.
I don't think that's a situation we need to take care of. But if you insist that we should, you can suggest a reasonable symlink name and I would make a new patch.

Quoted 4 lines

Honestly I don't see this is as being a problem we need to handle - who is going to touch this file during normal usage? Builds failing under the conditions described is a much more pressing issue at this point.

It has caused issues when we used such an approach for other artifacts
and debugging it was hard since we lost trackability with wildcads I was just sharing the experience. Ofcource the issue at hand is always pressing thats why we are fixing it.

Quoted 11 lines

It could be that we should re-visit whether using buildtools-tarball rather than having its contents be part of the native portion of the SDK is the right approach. I'm not sure that we need to do that just at this moment though.

Cheers,
Paul

--

Paul Eggleton
Intel Open Source Technology Centre