Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH 0/3] Extensible SDK: 3 fixes
@ 2015-05-27  6:09 Chen Qi
  2015-05-27  6:09 ` [PATCH 1/3] populate_sdk_ext: install the latest buildtools-tarball Chen Qi
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Chen Qi @ 2015-05-27  6:09 UTC (permalink / raw)
  To: openembedded-core

The first two have been sent before.

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/ext-sdk-3-fixes
  http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=ChenQi/ext-sdk-3-fixes

Chen Qi (3):
  populate_sdk_ext: install the latest buildtools-tarball
  populate_sdk_ext: consider custom configuration in local.conf
  copy_buildsystem: make sure bitbake directory is copied

 meta/classes/populate_sdk_ext.bbclass | 27 ++++++++++++++++++++++++++-
 meta/lib/oe/copy_buildsystem.py       |  7 +++----
 2 files changed, 29 insertions(+), 5 deletions(-)

-- 
1.9.1



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/3] populate_sdk_ext: install the latest buildtools-tarball
  2015-05-27  6:09 [PATCH 0/3] Extensible SDK: 3 fixes Chen Qi
@ 2015-05-27  6:09 ` Chen Qi
  2015-05-27 18:54   ` Christopher Larson
  2015-05-27  6:09 ` [PATCH 2/3] populate_sdk_ext: consider custom configuration in local.conf Chen Qi
  2015-05-27  6:09 ` [PATCH 3/3] copy_buildsystem: make sure bitbake directory is copied Chen Qi
  2 siblings, 1 reply; 10+ messages in thread
From: Chen Qi @ 2015-05-27  6:09 UTC (permalink / raw)
  To: openembedded-core

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]

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 meta/classes/populate_sdk_ext.bbclass | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
index dc2c58e..2fc4c11 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -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}
 }
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/3] populate_sdk_ext: consider custom configuration in local.conf
  2015-05-27  6:09 [PATCH 0/3] Extensible SDK: 3 fixes Chen Qi
  2015-05-27  6:09 ` [PATCH 1/3] populate_sdk_ext: install the latest buildtools-tarball Chen Qi
@ 2015-05-27  6:09 ` Chen Qi
  2015-06-04 14:11   ` Paul Eggleton
  2015-05-27  6:09 ` [PATCH 3/3] copy_buildsystem: make sure bitbake directory is copied Chen Qi
  2 siblings, 1 reply; 10+ messages in thread
From: Chen Qi @ 2015-05-27  6:09 UTC (permalink / raw)
  To: openembedded-core

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]

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 meta/classes/populate_sdk_ext.bbclass | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
index 2fc4c11..49ba26b 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -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'))
 
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/3] copy_buildsystem: make sure bitbake directory is copied
  2015-05-27  6:09 [PATCH 0/3] Extensible SDK: 3 fixes Chen Qi
  2015-05-27  6:09 ` [PATCH 1/3] populate_sdk_ext: install the latest buildtools-tarball Chen Qi
  2015-05-27  6:09 ` [PATCH 2/3] populate_sdk_ext: consider custom configuration in local.conf Chen Qi
@ 2015-05-27  6:09 ` Chen Qi
  2 siblings, 0 replies; 10+ messages in thread
From: Chen Qi @ 2015-05-27  6:09 UTC (permalink / raw)
  To: openembedded-core

The previous code assumes that bitbake/ directory is under the core layer.
This is the case for Yocto project. But users might clone oe-core and bitbake
separately. So we use bb.__file__ to locate the bitbake directory to make sure
it's copied into the extensible SDK.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 meta/lib/oe/copy_buildsystem.py | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/meta/lib/oe/copy_buildsystem.py b/meta/lib/oe/copy_buildsystem.py
index cf7fada..979578c 100644
--- a/meta/lib/oe/copy_buildsystem.py
+++ b/meta/lib/oe/copy_buildsystem.py
@@ -28,11 +28,10 @@ class BuildSystem(object):
         layers.append(corebase)
 
         corebase_files = self.d.getVar('COREBASE_FILES', True).split()
-
-        # bitbake belongs in corebase so make sure it goes there
-        if "bitbake" not in corebase_files:
-            corebase_files.append("bitbake")
         corebase_files = [corebase + '/' +x for x in corebase_files]
+        # Make sure bitbake goes in
+        bitbake_dir = bb.__file__.rsplit('/', 3)[0]
+        corebase_files.append(bitbake_dir)
 
         for layer in layers:
             layerconf = os.path.join(layer, 'conf', 'layer.conf')
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] populate_sdk_ext: install the latest buildtools-tarball
  2015-05-27  6:09 ` [PATCH 1/3] populate_sdk_ext: install the latest buildtools-tarball Chen Qi
@ 2015-05-27 18:54   ` Christopher Larson
  2015-05-27 21:26     ` Randy Witt
  0 siblings, 1 reply; 10+ messages in thread
From: Christopher Larson @ 2015-05-27 18:54 UTC (permalink / raw)
  To: Chen Qi; +Cc: Patches and discussions about the oe-core layer

[-- Attachment #1: Type: text/plain, Size: 1277 bytes --]

On Tue, May 26, 2015 at 11:09 PM, Chen Qi <Qi.Chen@windriver.com> wrote:

> 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]
>
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>

Hmm, if buildtools-tarball is required, why not just pull it in via
dependencies and build a current one, rather than assuming/forcing the user
to have done so themselves?
-- 
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics

[-- Attachment #2: Type: text/html, Size: 1803 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] populate_sdk_ext: install the latest buildtools-tarball
  2015-05-27 18:54   ` Christopher Larson
@ 2015-05-27 21:26     ` Randy Witt
  2015-05-27 22:13       ` Christopher Larson
  0 siblings, 1 reply; 10+ messages in thread
From: Randy Witt @ 2015-05-27 21:26 UTC (permalink / raw)
  To: Christopher Larson, Chen Qi
  Cc: Patches and discussions about the oe-core layer

On 05/27/2015 11:54 AM, Christopher Larson wrote:
> On Tue, May 26, 2015 at 11:09 PM, Chen Qi <Qi.Chen@windriver.com> wrote:
>
>> 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]
>>
>> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>>
>
> Hmm, if buildtools-tarball is required, why not just pull it in via
> dependencies and build a current one, rather than assuming/forcing the user
> to have done so themselves?

It is a dependency and will be built if it hasn't been built. But since

TOOLCHAIN_OUTPUTNAME ?= 
"${SDK_NAME}-buildtools-nativesdk-standalone-${DISTRO_VERSION}"

in buildtools-tarball.bb the filename will be different each time we try to copy 
it, unless we force buildtools-tarball to be rebuilt each time the sdk is 
constructed.

${DATE} being used in DISTRO_VERSION is misleading in my opinion because 
different dates don't necessarily mean different contents. So we could change 
DISTRO_VERSION to not use date, or buildtools-tarball.bb to not use DISTRO_VERSION.

>
>



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] populate_sdk_ext: install the latest buildtools-tarball
  2015-05-27 21:26     ` Randy Witt
@ 2015-05-27 22:13       ` Christopher Larson
  0 siblings, 0 replies; 10+ messages in thread
From: Christopher Larson @ 2015-05-27 22:13 UTC (permalink / raw)
  To: Randy Witt; +Cc: Patches and discussions about the oe-core layer

[-- Attachment #1: Type: text/plain, Size: 2492 bytes --]

On Wed, May 27, 2015 at 2:26 PM, Randy Witt <randy.e.witt@linux.intel.com>
wrote:

> On 05/27/2015 11:54 AM, Christopher Larson wrote:
>
>> On Tue, May 26, 2015 at 11:09 PM, Chen Qi <Qi.Chen@windriver.com> wrote:
>>
>>  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]
>>>
>>> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>>>
>>>
>> Hmm, if buildtools-tarball is required, why not just pull it in via
>> dependencies and build a current one, rather than assuming/forcing the
>> user
>> to have done so themselves?
>>
>
> It is a dependency and will be built if it hasn't been built. But since
>
> TOOLCHAIN_OUTPUTNAME ?=
> "${SDK_NAME}-buildtools-nativesdk-standalone-${DISTRO_VERSION}"
>
> in buildtools-tarball.bb the filename will be different each time we try
> to copy it, unless we force buildtools-tarball to be rebuilt each time the
> sdk is constructed.
>
> ${DATE} being used in DISTRO_VERSION is misleading in my opinion because
> different dates don't necessarily mean different contents. So we could
> change DISTRO_VERSION to not use date, or buildtools-tarball.bb to not
> use DISTRO_VERSION.


I expect it’d be good if in this case DATE wasn’t whitelisted, so recipes
which use a DISTRO_VERSION which includes a date get rebuilt for a new day,
and if you don’t want that, you can remove DATE from DISTRO_VERSION.

Actually, it’d be interesting to try to rig some form of auto-incrementing
distro version based on distro metadata checksum changes or something.. Hmm.
-- 
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics

[-- Attachment #2: Type: text/html, Size: 3434 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] populate_sdk_ext: consider custom configuration in local.conf
  2015-05-27  6:09 ` [PATCH 2/3] populate_sdk_ext: consider custom configuration in local.conf Chen Qi
@ 2015-06-04 14:11   ` Paul Eggleton
  2015-06-09  6:41     ` ChenQi
  0 siblings, 1 reply; 10+ messages in thread
From: Paul Eggleton @ 2015-06-04 14:11 UTC (permalink / raw)
  To: Chen Qi; +Cc: openembedded-core

Hi Qi,

On Wednesday 27 May 2015 14:09:39 Chen Qi wrote:
> 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]
> 
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>  meta/classes/populate_sdk_ext.bbclass | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/meta/classes/populate_sdk_ext.bbclass
> b/meta/classes/populate_sdk_ext.bbclass index 2fc4c11..49ba26b 100644
> --- a/meta/classes/populate_sdk_ext.bbclass
> +++ b/meta/classes/populate_sdk_ext.bbclass
> @@ -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'))

I've been thinking about this; since I've recently added edit_metadata() in 
bitbake's lib/bb/utils.py, it would make sense to use that rather than adding 
another piece of code that effectively parses bitbake configuration files (though 
I know this isn't adding much). I know this series has been going back and 
forth for a while now and the delays have largely been my fault, so I'd be 
happy to make this change and resend the series - it's up to you.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] populate_sdk_ext: consider custom configuration in local.conf
  2015-06-04 14:11   ` Paul Eggleton
@ 2015-06-09  6:41     ` ChenQi
  2015-06-09  8:59       ` Paul Eggleton
  0 siblings, 1 reply; 10+ messages in thread
From: ChenQi @ 2015-06-09  6:41 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: openembedded-core

On 06/04/2015 10:11 PM, Paul Eggleton wrote:
> Hi Qi,
>
> On Wednesday 27 May 2015 14:09:39 Chen Qi wrote:
>> 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]
>>
>> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>> ---
>>   meta/classes/populate_sdk_ext.bbclass | 23 +++++++++++++++++++++++
>>   1 file changed, 23 insertions(+)
>>
>> diff --git a/meta/classes/populate_sdk_ext.bbclass
>> b/meta/classes/populate_sdk_ext.bbclass index 2fc4c11..49ba26b 100644
>> --- a/meta/classes/populate_sdk_ext.bbclass
>> +++ b/meta/classes/populate_sdk_ext.bbclass
>> @@ -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'))
> I've been thinking about this; since I've recently added edit_metadata() in
> bitbake's lib/bb/utils.py, it would make sense to use that rather than adding
> another piece of code that effectively parses bitbake configuration files (though
> I know this isn't adding much). I know this series has been going back and
> forth for a while now and the delays have largely been my fault, so I'd be
> happy to make this change and resend the series - it's up to you.
>
> Cheers,
> Paul
>

Hi Paul,

Thanks for your suggestion.
I've been looking into edit_metadata(). But it seems that it's used to 
modify *specific* variables.
In this case, we don't know which variables we are going to skip in 
local.conf. We just know that they start with '/'. So I don't see how to 
do it.
I'm not sure if I understand things wrong. Please point it out directly 
if I've missed something.

Best Regards,
Chen Qi


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] populate_sdk_ext: consider custom configuration in local.conf
  2015-06-09  6:41     ` ChenQi
@ 2015-06-09  8:59       ` Paul Eggleton
  0 siblings, 0 replies; 10+ messages in thread
From: Paul Eggleton @ 2015-06-09  8:59 UTC (permalink / raw)
  To: ChenQi; +Cc: openembedded-core

On Tuesday 09 June 2015 14:41:53 ChenQi wrote:
> On 06/04/2015 10:11 PM, Paul Eggleton wrote:
> > On Wednesday 27 May 2015 14:09:39 Chen Qi wrote:
> >> 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]
> >> 
> >> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> >> ---
> >> 
> >>   meta/classes/populate_sdk_ext.bbclass | 23 +++++++++++++++++++++++
> >>   1 file changed, 23 insertions(+)
> >> 
> >> diff --git a/meta/classes/populate_sdk_ext.bbclass
> >> b/meta/classes/populate_sdk_ext.bbclass index 2fc4c11..49ba26b 100644
> >> --- a/meta/classes/populate_sdk_ext.bbclass
> >> +++ b/meta/classes/populate_sdk_ext.bbclass
> >> @@ -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'))
> > 
> > I've been thinking about this; since I've recently added edit_metadata()
> > in
> > bitbake's lib/bb/utils.py, it would make sense to use that rather than
> > adding another piece of code that effectively parses bitbake
> > configuration files (though I know this isn't adding much). I know this
> > series has been going back and forth for a while now and the delays have
> > largely been my fault, so I'd be happy to make this change and resend the
> > series - it's up to you.
> > 
> > Cheers,
> > Paul
> 
> Hi Paul,
> 
> Thanks for your suggestion.
> I've been looking into edit_metadata(). But it seems that it's used to
> modify *specific* variables.
> In this case, we don't know which variables we are going to skip in
> local.conf. We just know that they start with '/'. So I don't see how to
> do it.

Well, what you pass in actually goes into a regex, so you can just match
any variable with it - you just need to take care that it doesn't match
characters it shouldn't. Here's an example I just tested - you can place
it in scripts/ in order to try it out:

------------- snip ------------
import sys
import os

scripts_path = os.path.dirname(os.path.realpath(__file__))
lib_path = scripts_path + '/lib'
sys.path = sys.path + [lib_path]

import scriptpath
bitbakepath = scriptpath.add_bitbake_lib_path()

import bb.utils

whitelist = ['BBMASK']
def handle_var(varname, origvalue, op, newlines):
    print '%s "%s"' % (varname, origvalue)
    if '/' in origvalue and (not ':/' in value or varname in whitelist):
        newlines.append('# Removed original setting of %s\n' % varname)
        return None, op, 0, True
    else:
        return origvalue, op, 0, True

varlist = ['[^#=+ ]*']
with open('conf/local.conf', 'r') as f:
    oldlines = f.readlines()
(updated, newlines) = bb.utils.edit_metadata(oldlines, varlist, handle_var)

with open('conf/local.conf.newedit', 'w') as f:
    for line in newlines:
        f.write(line)

------------- snip ------------

We really ought not to have to care about matching #, that's probably
a bug in edit_metadata().  While looking at my own local.conf I noticed that
BBMASK might have / in it and we'd probably want to allow it through; I
don't know if there are other reasonable examples. I suspect we ought
to have a variable for this to allow for some flexibility. As in the example
we probably also want to default to allowing variable values that contain
URLs as well.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-06-09  8:59 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-27  6:09 [PATCH 0/3] Extensible SDK: 3 fixes Chen Qi
2015-05-27  6:09 ` [PATCH 1/3] populate_sdk_ext: install the latest buildtools-tarball Chen Qi
2015-05-27 18:54   ` Christopher Larson
2015-05-27 21:26     ` Randy Witt
2015-05-27 22:13       ` Christopher Larson
2015-05-27  6:09 ` [PATCH 2/3] populate_sdk_ext: consider custom configuration in local.conf Chen Qi
2015-06-04 14:11   ` Paul Eggleton
2015-06-09  6:41     ` ChenQi
2015-06-09  8:59       ` Paul Eggleton
2015-05-27  6:09 ` [PATCH 3/3] copy_buildsystem: make sure bitbake directory is copied Chen Qi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox