All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.