Openembedded Core Discussions
 help / color / mirror / Atom feed
* Re: [PATCH] gnupg: specify explicitly tar path
From: Burton, Ross @ 2016-12-19 11:39 UTC (permalink / raw)
  To: Wenlin Kang; +Cc: OE-core
In-Reply-To: <1482130882-148241-1-git-send-email-wenlin.kang@windriver.com>

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

On 19 December 2016 at 07:01, Wenlin Kang <wenlin.kang@windriver.com> wrote:

> +-        AC_PATH_PROG(TAR,"tar")
> +-        _mytar=$ac_cv_path_TAR
>

You don't need to patch configure.ac as you can just set pass
ac_cv_path_TAR=${base_bindir/tar in EXTRA_OECONF.

Ross

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

^ permalink raw reply

* minimal contents of a kernel config fragment
From: Robert P. J. Day @ 2016-12-19 11:31 UTC (permalink / raw)
  To: OE Core mailing list


  (ok, let's see if i can avoid embarrassing myself with an overly
simple question ...)

  reading YP kernel-dev manual, and there is an example of a kernel
config fragment:

  CONFIG_SERIAL_8250=y
  CONFIG_SERIAL_8250_CONSOLE=y
  CONFIG_SERIAL_8250_PCI=y
  CONFIG_SERIAL_8250_NR_UARTS=4
  CONFIG_SERIAL_8250_RUNTIME_UARTS=4
  CONFIG_SERIAL_CORE=y
  CONFIG_SERIAL_CORE_CONSOLE=y

all well and good, but is it clear that one can cut that down based on
the defaults in the Kconfig file? since the Kconfig file contains:

  config SERIAL_8250_NR_UARTS
        int "Maximum number of 8250/16550 serial ports"
        depends on SERIAL_8250
        default "4"
        help
          Set this to the number of serial ports you want the driver
          to support.  This includes any ports discovered via ACPI or
          PCI enumeration and any ports that may be added at run-time
          via hot-plug, or any ISA multi-port serial cards.

  config SERIAL_8250_RUNTIME_UARTS
        int "Number of 8250/16550 serial ports to register at runtime"
        depends on SERIAL_8250
        range 0 SERIAL_8250_NR_UARTS
        default "4"
        help
          Set this to the maximum number of serial ports you want
          the kernel to register at boot time.  This can be overridden
          with the module parameter "nr_uarts", or boot-time parameter
          8250.nr_uarts

is it accurate to say that the two fragment lines related to UARTs
could be omitted? (yes, it's more informative to have them there, but
technically, they're not required, correct?)

  similarly, another line could be omitted given the Kconfig lines:

  config SERIAL_8250
        tristate "8250/16550 and compatible serial support"
        select SERIAL_CORE

however, given the following in the same Kconfig file:

  config SERIAL_8250_DEPRECATED_OPTIONS
        bool "Support 8250_core.* kernel options (DEPRECATED)"
        depends on SERIAL_8250
        default y

if you didn't want deprecated options, you *would* have to explicitly
deselect that option with:

  # CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set

yes?

  just making sure i'm not overlooking any subtleties.

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================



^ permalink raw reply

* Re: 'From OE-Core rev: <commit-id>' in recent master commits
From: Andreas Müller @ 2016-12-19 11:26 UTC (permalink / raw)
  To: Burton, Ross; +Cc: Patches and discussions about the oe-core layer
In-Reply-To: <CAJTo0LawS5UMdCeXmzg=Ff0N+8H7MKGB9wwwn0iQaXwnK0stWw@mail.gmail.com>

On Mon, Dec 19, 2016 at 12:25 PM, Burton, Ross <ross.burton@intel.com> wrote:
>
> On 19 December 2016 at 11:22, Andreas Müller <schnitzeltony@googlemail.com>
> wrote:
>>
>> commit c87361fc886432a9db584712bf3e41ecd0541960
>> Author: Ross Burton <ross.burton@intel.com>
>> Date:   Thu Dec 15 17:19:46 2016 +0000
>>
>>     lib/oe/package_manager: bail if createrepo can't be found
>>
>>     If createrepo isn't found then the errors later are mysterious, so
>> explicitly
>>     check and error out early if it isn't there.
>>
>>     (From OE-Core rev: e09636bbb3ea8ec58984197fd9c691bb908efe00)
>>
>>     Signed-off-by: Ross Burton <ross.burton@intel.com>
>>     Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
>
>
> Looks like there was a bit of mess with patches going from Richard's poky
> clone's master-next to my poky clone's mut branch back to oe-core master.  I
> believe Richard generally ensures these get stripped out but obviously this
> didn't happen.  Human error, sorry!
>
Shit happens :)

Andreas


^ permalink raw reply

* Re: 'From OE-Core rev: <commit-id>' in recent master commits
From: Burton, Ross @ 2016-12-19 11:25 UTC (permalink / raw)
  To: Andreas Müller; +Cc: Patches and discussions about the oe-core layer
In-Reply-To: <CALbNGRQ+hDgM+AsRFq3YYidr4S-7yDXbx+abbfA5tpLqKTD9JQ@mail.gmail.com>

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

On 19 December 2016 at 11:22, Andreas Müller <schnitzeltony@googlemail.com>
wrote:

> commit c87361fc886432a9db584712bf3e41ecd0541960
> Author: Ross Burton <ross.burton@intel.com>
> Date:   Thu Dec 15 17:19:46 2016 +0000
>
>     lib/oe/package_manager: bail if createrepo can't be found
>
>     If createrepo isn't found then the errors later are mysterious, so
> explicitly
>     check and error out early if it isn't there.
>
>     (From OE-Core rev: e09636bbb3ea8ec58984197fd9c691bb908efe00)
>
>     Signed-off-by: Ross Burton <ross.burton@intel.com>
>     Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
>

Looks like there was a bit of mess with patches going from Richard's poky
clone's master-next to my poky clone's mut branch back to oe-core master.
I believe Richard generally ensures these get stripped out but obviously
this didn't happen.  Human error, sorry!

Ross

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

^ permalink raw reply

* Re: 'From OE-Core rev: <commit-id>' in recent master commits
From: Andreas Müller @ 2016-12-19 11:22 UTC (permalink / raw)
  To: Burton, Ross; +Cc: Patches and discussions about the oe-core layer
In-Reply-To: <CAJTo0LZbgGV9kd0bw8jGgfg0kLbJn0ANgETon7_gJxG5fWML7g@mail.gmail.com>

On Mon, Dec 19, 2016 at 12:19 PM, Burton, Ross <ross.burton@intel.com> wrote:
>
> On 19 December 2016 at 11:14, Andreas Müller <schnitzeltony@googlemail.com>
> wrote:
>>
>> just updated to latest HEAD and checked commits. Found a lot of commits
>> with
>>
>> (From OE-Core rev: <commit ID>)
>
>
> Can you point to any SHAs in particular that have this?
>
> Ross
Those and more

commit c87361fc886432a9db584712bf3e41ecd0541960
Author: Ross Burton <ross.burton@intel.com>
Date:   Thu Dec 15 17:19:46 2016 +0000

    lib/oe/package_manager: bail if createrepo can't be found

    If createrepo isn't found then the errors later are mysterious, so
explicitly
    check and error out early if it isn't there.

    (From OE-Core rev: e09636bbb3ea8ec58984197fd9c691bb908efe00)

    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit 147d7802926153ef0abb12d5e738576d8dfd02d7
Author: Armin Kuster <akuster808@gmail.com>
Date:   Thu Dec 15 07:21:45 2016 -0800

    tzdata: update to 2016j

    Briefly: Saratov, Russia moves from +03 to +04 on 2016-12-04.

      Changes to future time stamps

        Saratov, Russia switches from +03 to +04 on 2016-12-04 at 02:00.
        This hives off a new zone Europe/Saratov from Europe/Volgograd.
        (Thanks to Yuri Konotopov and Stepan Golosunov.)

      Changes to past time stamps

        The new zone Asia/Atyrau for Atyraū Region, Kazakhstan, is like
        Asia/Aqtau except it switched from +05/+06 to +04/+05 in spring
        1999, not fall 1994.  (Thanks to Stepan Golosunov.)

      Changes to past time zone abbreviations

        Asia/Gaza and Asia/Hebron now use "EEST", not "EET", to denote
    summer time before 1948. The old use of "EET" was a typo.

    (From OE-Core rev: a0b389b5f3effad5194109f9914dec6125b3569d)

    Signed-off-by: Armin Kuster <akuster808@gmail.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit f9d6b482f2275c054dff91b81ac901b612f9c9b4
Author: Armin Kuster <akuster808@gmail.com>
Date:   Thu Dec 15 07:21:44 2016 -0800

    tzcode-native: update to 2016j

    Changes to code

        zic no longer mishandles file systems that lack hard links, fixing
        bugs introduced in 2016g.  (Problems reported by Tom Lane.)
        Also, when the destination already contains symbolic links, zic
        should now work better on systems where the 'link' system call
        does not follow symbolic links.

    Changes to documentation and commentary

        tz-link.htm now documents the relationship between release version
        numbers and development-repository commit tags.  (Suggested by
        Paul Koning.)

        The 'Theory' file now documents UT.

        iso3166.tab now accents "Curaçao", and commentary now mentions
    the names "Cabo Verde" and "Czechia". (Thanks to Jiří Boháč.)

    (From OE-Core rev: 3fb5ddce97af1d4ada0dcc7f9c0ceef6ac392918)

    Signed-off-by: Armin Kuster <akuster808@gmail.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit a4111417b1b46cc852bf96a443b0edb0a525f346
Author: Nicolas Dechesne <nicolas.dechesne@linaro.org>
Date:   Thu Dec 15 15:40:11 2016 +0100

    gstreamer1.0-plugins-bad: default to using egl

    With the current set of PACKAGECONFIG, we end up building with
'gles2' and neither
    'opengl', nor 'egl'. As a result we are building -bad with neither 'glx' nor
    'egl' platform support. So let's make sure that we at least have
egl by default
    (since we default to 'gles2').

    (From OE-Core rev: 4de8447c6536385ca134866682709efebf7d4e3d)

    Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit 41061a812239dcfde2e4cd5636250ff2cd7e4cbb
Author: Mike Looijmans <mike.looijmans@topic.nl>
Date:   Thu Dec 15 14:31:57 2016 +0100

    linux-firmware: Split out Realtek chipsets rtl8188 rtl8723 rtl8821

    Add rtl8188 rtl8712 rtl8723 rtl8821 packages to install only
firmware for the
    corresponding chipset. Uses a rather blunt approach by simply
adding all firmware
    files with matching prefix, to keep the package count down a bit.

    (From OE-Core rev: 62a5c0a40d13594a0f16a01701e70dac5e492125)

    Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit c4b71ff17f630d5289a8105ec9465ff29ecd0e6c
Author: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Date:   Thu Dec 15 14:48:09 2016 +0200

    xf86-video-intel: fix upstream version check

    Even though upstream hasn't tagged new versions for a long while,
    we should not report a bogus tag as something that can be updated to.

    (From OE-Core rev: e16e4892368ec2475853d69332f3732dbf7b06cd)

    Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit 428531463574f4e7722912d1960bd288df586c14
Author: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Date:   Thu Dec 15 14:48:08 2016 +0200

    upstream-version-is-even.bbclass: exclude various alphas, betas,
pre-releases etc.

    Was a problem with perl in particular.

    (From OE-Core rev: cc40b3ad2c4a725f93d0b984f23d34d247cffb2f)

    Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit 4e8e884054b56c578d51d7b4af7150b77806368d
Author: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Date:   Thu Dec 15 14:48:07 2016 +0200

    ghostscript: fix upstream version check

    (From OE-Core rev: 10001924baf112a4556c5e85c16c482cbf435950)

    Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit 4e0e95a02a231bbdb350b1971536f4d65f4e9490
Author: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Date:   Thu Dec 15 14:48:06 2016 +0200

    vala: update to 0.34.4

    (From OE-Core rev: 798af66e2e11baf53eff6b7f0e370fb77a1c5f72)

    Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit 0c3dbaa5d62e9ce404d1203c0478512e36ab8136
Author: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Date:   Thu Dec 15 14:48:05 2016 +0200

    sysprof: update to 3.22.3

    (From OE-Core rev: 4a8ea471e386adff9b8f8b535589e599c1491fa5)

    Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit d4487c9ee54a90e2e11287d9c41dce675a65ad15
Author: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Date:   Thu Dec 15 14:48:04 2016 +0200

    iso-codes: update to 3.72

    (From OE-Core rev: 232ce36bb17643355b0b282063609147aa51bc1f)

    Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit ab43357dba96d4404a66baf7b998d81ef0b7ad1d
Author: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Date:   Thu Dec 15 14:48:03 2016 +0200

    icu: update to 58.2

    (From OE-Core rev: 68eca85201c2e15ab5c197f3cc70d863fb021493)

    Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit 84c6a3bcf44950049bba255075177a0004058a44
Author: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Date:   Thu Dec 15 14:48:02 2016 +0200

    gnutls: update to 3.5.7

    Add a 0001-Do-not-add-cli-args.h-to-cli-args.stamp-Makefile-tar.patch
    to fix a compile issue (incorrect creation of an empty header).

    Add a libunistring dependency as gnutls has gained it.

    (From OE-Core rev: b2ec343ad770c26f39f3a6d335e4bb3ccbf41aec)

    Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

commit 7c5462f5ff3303da8d7daa5f22827bd852987138
Author: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Date:   Thu Dec 15 14:48:01 2016 +0200

    ffmpeg: update to 3.2.2

    (From OE-Core rev: b9b50814dfb40f8d124be736f7af9ed4d69bc6b3)

    Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>


^ permalink raw reply

* [PATCH v6 5/5] wic: selftest: add tests for --fixed-size partition flags
From: Maciej Borzecki @ 2016-12-19 11:21 UTC (permalink / raw)
  To: openembedded-core; +Cc: Maciej Borzecki
In-Reply-To: <cover.1482145354.git.maciej.borzecki@rndity.com>

wic has a new flag for setting a fixed parition size --fixed-size. Add
tests that verify if partition is indeed sized properly and that errors
are signaled when there is not enough space to fit partition data.

Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
 meta/lib/oeqa/selftest/wic.py | 61 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
index 8efece3171db47ee622f2c0f712fff2c2fcf645b..9caf3b0b1e3d4b538fffd409b26f68f0101e78dc 100644
--- a/meta/lib/oeqa/selftest/wic.py
+++ b/meta/lib/oeqa/selftest/wic.py
@@ -29,6 +29,7 @@ import unittest
 from glob import glob
 from shutil import rmtree
 from functools import wraps
+from tempfile import NamedTemporaryFile
 
 from oeqa.selftest.base import oeSelfTest
 from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
@@ -59,6 +60,8 @@ class Wic(oeSelfTest):
 
     def setUpLocal(self):
         """This code is executed before each test method."""
+        self.native_sysroot = get_bb_var('STAGING_DIR_NATIVE', 'core-image-minimal')
+
         arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
         is_x86 = arch in ['i586', 'i686', 'x86_64']
         if is_x86:
@@ -344,3 +347,61 @@ class Wic(oeSelfTest):
         self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
                                    % image).status)
         self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
+
+    def _make_fixed_size_wks(self, size):
+        """
+        Create a wks of an image with a single partition. Size of the partition is set
+        using --fixed-size flag. Returns a tuple: (path to wks file, wks image name)
+        """
+        with NamedTemporaryFile("w", suffix=".wks", delete=False) as tf:
+            wkspath = tf.name
+            tf.write("part " \
+                     "--source rootfs --ondisk hda --align 4 --fixed-size %d "
+                     "--fstype=ext4\n" % size)
+        wksname = os.path.splitext(os.path.basename(wkspath))[0]
+
+        return wkspath, wksname
+
+    def test_fixed_size(self):
+        """
+        Test creation of a simple image with partition size controlled through
+        --fixed-size flag
+        """
+        wkspath, wksname = self._make_fixed_size_wks(200)
+
+        self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
+                                   % wkspath).status)
+        os.remove(wkspath)
+        wicout = glob(self.resultdir + "%s-*direct" % wksname)
+        self.assertEqual(1, len(wicout))
+
+        wicimg = wicout[0]
+
+        # verify partition size with wic
+        res = runCmd("parted -m %s unit mib p 2>/dev/null" % wicimg,
+                     ignore_status=True,
+                     native_sysroot=self.native_sysroot)
+        self.assertEqual(0, res.status)
+
+        # parse parted output which looks like this:
+        # BYT;\n
+        # /var/tmp/wic/build/tmpfwvjjkf_-201611101222-hda.direct:200MiB:file:512:512:msdos::;\n
+        # 1:0.00MiB:200MiB:200MiB:ext4::;\n
+        partlns = res.output.splitlines()[2:]
+
+        self.assertEqual(1, len(partlns))
+        self.assertEqual("1:0.00MiB:200MiB:200MiB:ext4::;", partlns[0])
+
+    def test_fixed_size_error(self):
+        """
+        Test creation of a simple image with partition size controlled through
+        --fixed-size flag. The size of partition is intentionally set to 1MiB
+        in order to trigger an error in wic.
+        """
+        wkspath, wksname = self._make_fixed_size_wks(1)
+
+        self.assertEqual(1, runCmd("wic create %s -e core-image-minimal" \
+                                   % wkspath, ignore_status=True).status)
+        os.remove(wkspath)
+        wicout = glob(self.resultdir + "%s-*direct" % wksname)
+        self.assertEqual(0, len(wicout))
-- 
2.5.5



^ permalink raw reply related

* [PATCH v6 4/5] wic: selftest: do not assume bzImage kernel image
From: Maciej Borzecki @ 2016-12-19 11:21 UTC (permalink / raw)
  To: openembedded-core; +Cc: Maciej Borzecki
In-Reply-To: <cover.1482145354.git.maciej.borzecki@rndity.com>

Instead of assuming that bzImage is available, query bitbake enviroment
for KERNEL_IMAGETYPE.

Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
 meta/lib/oeqa/selftest/wic.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
index 35cd14fb0c4a9b863a7a6324885f80da8e86d3eb..8efece3171db47ee622f2c0f712fff2c2fcf645b 100644
--- a/meta/lib/oeqa/selftest/wic.py
+++ b/meta/lib/oeqa/selftest/wic.py
@@ -339,7 +339,8 @@ class Wic(oeSelfTest):
     def test_sdimage_bootpart(self):
         """Test creation of sdimage-bootpart image"""
         image = "sdimage-bootpart"
-        self.write_config('IMAGE_BOOT_FILES = "bzImage"\n')
+        kimgtype = get_bb_var('KERNEL_IMAGETYPE', 'core-image-minimal')
+        self.write_config('IMAGE_BOOT_FILES = "%s"\n' % kimgtype)
         self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
                                    % image).status)
         self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
-- 
2.5.5



^ permalink raw reply related

* [PATCH v6 3/5] wic: selftest: avoid COMPATIBLE_HOST issues
From: Maciej Borzecki @ 2016-12-19 11:20 UTC (permalink / raw)
  To: openembedded-core; +Cc: Maciej Borzecki
In-Reply-To: <cover.1482145354.git.maciej.borzecki@rndity.com>

wic tests will unconditionally attempt to build syslinux and add
configuration options that may not be compatible with current machine.

Resolve this by consulting HOST_ARCH (which defaults to TARGET_ARCH) and build
recipes, add configuration options or skip tests conditionally.

A convenience decorator onlyForArch() can be used to skip test cases for
specific architectures.

Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
 meta/lib/oeqa/selftest/wic.py | 53 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 48 insertions(+), 5 deletions(-)

diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
index e652fad24ab6dd7ab1b998b60a98a4052a2f1dd7..35cd14fb0c4a9b863a7a6324885f80da8e86d3eb 100644
--- a/meta/lib/oeqa/selftest/wic.py
+++ b/meta/lib/oeqa/selftest/wic.py
@@ -24,15 +24,33 @@
 """Test cases for wic."""
 
 import os
+import unittest
 
 from glob import glob
 from shutil import rmtree
+from functools import wraps
 
 from oeqa.selftest.base import oeSelfTest
 from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
 from oeqa.utils.decorators import testcase
 
 
+class onlyForArch(object):
+
+    def __init__(self, *args):
+        self.archs = args
+
+    def __call__(self,f):
+        @wraps(f)
+        def wrapped_f(*args, **kwargs):
+            arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
+            if self.archs and arch not in self.archs :
+                raise unittest.SkipTest("Testcase arch dependency not met: %s" % arch)
+            return f(*args, **kwargs)
+        wrapped_f.__name__ = f.__name__
+        return wrapped_f
+
+
 class Wic(oeSelfTest):
     """Wic test class."""
 
@@ -41,16 +59,23 @@ class Wic(oeSelfTest):
 
     def setUpLocal(self):
         """This code is executed before each test method."""
-        self.write_config('IMAGE_FSTYPES += " hddimg"\n'
-                          'MACHINE_FEATURES_append = " efi"\n'
-                          'WKS_FILE = "wic-image-minimal"\n')
+        arch = get_bb_var('HOST_ARCH', 'core-image-minimal')
+        is_x86 = arch in ['i586', 'i686', 'x86_64']
+        if is_x86:
+            self.write_config('IMAGE_FSTYPES += " hddimg"\n' \
+                              'MACHINE_FEATURES_append = " efi"\n'
+                              'WKS_FILE = "wic-image-minimal"\n')
 
         # Do this here instead of in setUpClass as the base setUp does some
         # clean up which can result in the native tools built earlier in
         # setUpClass being unavailable.
         if not Wic.image_is_ready:
-            bitbake('syslinux syslinux-native parted-native gptfdisk-native '
-                    'dosfstools-native mtools-native bmap-tools-native')
+            tools = 'parted-native gptfdisk-native ' \
+                    'dosfstools-native mtools-native bmap-tools-native'
+            if is_x86:
+                tools += ' syslinux syslinux-native'
+            bitbake(tools)
+
             bitbake('core-image-minimal')
             Wic.image_is_ready = True
 
@@ -72,6 +97,7 @@ class Wic(oeSelfTest):
         self.assertEqual(0, runCmd('wic list --help').status)
 
     @testcase(1211)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_build_image_name(self):
         """Test wic create directdisk --image-name core-image-minimal"""
         self.assertEqual(0, runCmd("wic create directdisk "
@@ -79,6 +105,7 @@ class Wic(oeSelfTest):
         self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct")))
 
     @testcase(1212)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_build_artifacts(self):
         """Test wic create directdisk providing all artifacts."""
         bbvars = dict((var.lower(), get_bb_var(var, 'core-image-minimal')) \
@@ -93,6 +120,7 @@ class Wic(oeSelfTest):
         self.assertEqual(1, len(glob(self.resultdir + "directdisk-*.direct")))
 
     @testcase(1157)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_gpt_image(self):
         """Test creation of core-image-minimal with gpt table and UUID boot"""
         self.assertEqual(0, runCmd("wic create directdisk-gpt "
@@ -126,6 +154,7 @@ class Wic(oeSelfTest):
         self.assertEqual(0, runCmd('wic help kickstart').status)
 
     @testcase(1264)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_compress_gzip(self):
         """Test compressing an image with gzip"""
         self.assertEqual(0, runCmd("wic create directdisk "
@@ -135,6 +164,7 @@ class Wic(oeSelfTest):
                                          "directdisk-*.direct.gz")))
 
     @testcase(1265)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_compress_bzip2(self):
         """Test compressing an image with bzip2"""
         self.assertEqual(0, runCmd("wic create directdisk "
@@ -144,6 +174,7 @@ class Wic(oeSelfTest):
                                          "directdisk-*.direct.bz2")))
 
     @testcase(1266)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_compress_xz(self):
         """Test compressing an image with xz"""
         self.assertEqual(0, runCmd("wic create directdisk "
@@ -153,6 +184,7 @@ class Wic(oeSelfTest):
                                          "directdisk-*.direct.xz")))
 
     @testcase(1267)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_wrong_compressor(self):
         """Test how wic breaks if wrong compressor is provided"""
         self.assertEqual(2, runCmd("wic create directdisk "
@@ -160,6 +192,7 @@ class Wic(oeSelfTest):
                                    "-c wrong", ignore_status=True).status)
 
     @testcase(1268)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_rootfs_indirect_recipes(self):
         """Test usage of rootfs plugin with rootfs recipes"""
         wks = "directdisk-multi-rootfs"
@@ -171,6 +204,7 @@ class Wic(oeSelfTest):
         self.assertEqual(1, len(glob(self.resultdir + "%s*.direct" % wks)))
 
     @testcase(1269)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_rootfs_artifacts(self):
         """Test usage of rootfs plugin with rootfs paths"""
         bbvars = dict((var.lower(), get_bb_var(var, 'core-image-minimal')) \
@@ -189,6 +223,7 @@ class Wic(oeSelfTest):
                                      "%(wks)s-*.direct" % bbvars)))
 
     @testcase(1346)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_iso_image(self):
         """Test creation of hybrid iso image with legacy and EFI boot"""
         self.assertEqual(0, runCmd("wic create mkhybridiso "
@@ -221,6 +256,7 @@ class Wic(oeSelfTest):
                 self.assertTrue(content[var])
 
     @testcase(1351)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_wic_image_type(self):
         """Test building wic images by bitbake"""
         self.assertEqual(0, bitbake('wic-image-minimal').status)
@@ -236,6 +272,7 @@ class Wic(oeSelfTest):
             self.assertTrue(os.path.isfile(os.path.realpath(path)))
 
     @testcase(1348)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_qemux86_directdisk(self):
         """Test creation of qemux-86-directdisk image"""
         image = "qemux86-directdisk"
@@ -244,6 +281,7 @@ class Wic(oeSelfTest):
         self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
 
     @testcase(1349)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_mkgummidisk(self):
         """Test creation of mkgummidisk image"""
         image = "mkgummidisk"
@@ -252,6 +290,7 @@ class Wic(oeSelfTest):
         self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
 
     @testcase(1350)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_mkefidisk(self):
         """Test creation of mkefidisk image"""
         image = "mkefidisk"
@@ -260,6 +299,7 @@ class Wic(oeSelfTest):
         self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
 
     @testcase(1385)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_directdisk_bootloader_config(self):
         """Test creation of directdisk-bootloader-config image"""
         image = "directdisk-bootloader-config"
@@ -268,6 +308,7 @@ class Wic(oeSelfTest):
         self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
 
     @testcase(1422)
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_qemu(self):
         """Test wic-image-minimal under qemu"""
         self.assertEqual(0, bitbake('wic-image-minimal').status)
@@ -278,6 +319,7 @@ class Wic(oeSelfTest):
             self.assertEqual(1, status, 'Failed to run command "%s": %s' % (command, output))
             self.assertEqual(output, '/dev/root /\r\n/dev/vda3 /mnt')
 
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_bmap(self):
         """Test generation of .bmap file"""
         image = "directdisk"
@@ -286,6 +328,7 @@ class Wic(oeSelfTest):
         self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
         self.assertEqual(1, len(glob(self.resultdir + "%s-*direct.bmap" % image)))
 
+    @onlyForArch('i586', 'i686', 'x86_64')
     def test_systemd_bootdisk(self):
         """Test creation of systemd-bootdisk image"""
         image = "systemd-bootdisk"
-- 
2.5.5



^ permalink raw reply related

* [PATCH v6 2/5] wic: add --fixed-size wks option
From: Maciej Borzecki @ 2016-12-19 11:20 UTC (permalink / raw)
  To: openembedded-core; +Cc: Maciej Borzecki
In-Reply-To: <cover.1482145354.git.maciej.borzecki@rndity.com>

Added new option --fixed-size to wks. The option can be used to indicate
the exact size of a partition. The option cannot be added together with
--size, in which case an error will be raised. Other options that
influence automatic partition size (--extra-space, --overhead-factor),
if specifiec along with --fixed-size, will raise an error.

If it partition data is larger than the amount of space specified with
--fixed-size option wic will raise an error.

Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
 scripts/lib/wic/help.py                | 14 ++++--
 scripts/lib/wic/imager/direct.py       |  2 +-
 scripts/lib/wic/ksparser.py            | 41 ++++++++++++++--
 scripts/lib/wic/partition.py           | 88 +++++++++++++++++++++-------------
 scripts/lib/wic/utils/partitionedfs.py |  2 +-
 5 files changed, 105 insertions(+), 42 deletions(-)

diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py
index e5347ec4b7c900c68fc64351a5293e75de0672b3..daa11bf489c135627ddfe4cef968e48f8e3ad1d8 100644
--- a/scripts/lib/wic/help.py
+++ b/scripts/lib/wic/help.py
@@ -646,6 +646,12 @@ DESCRIPTION
                  not specified, the size is in MB.
                  You do not need this option if you use --source.
 
+         --fixed-size: Exact partition size. Value format is the same
+                       as for --size option. This option cannot be
+                       specified along with --size. If partition data
+                       is larger than --fixed-size and error will be
+                       raised when assembling disk image.
+
          --source: This option is a wic-specific option that names the
                    source of the data that will populate the
                    partition.  The most common value for this option
@@ -719,13 +725,15 @@ DESCRIPTION
                         space after the space filled by the content
                         of the partition. The final size can go
                         beyond the size specified by --size.
-                        By default, 10MB.
+                        By default, 10MB. This option cannot be used
+                        with --fixed-size option.
 
          --overhead-factor: This option is specific to wic. The
                             size of the partition is multiplied by
                             this factor. It has to be greater than or
-                            equal to 1.
-                            The default value is 1.3.
+                            equal to 1. The default value is 1.3.
+                            This option cannot be used with --fixed-size
+                            option.
 
          --part-type: This option is specific to wic. It specifies partition
                       type GUID for GPT partitions.
diff --git a/scripts/lib/wic/imager/direct.py b/scripts/lib/wic/imager/direct.py
index 2bedef08d6450096c786def6f75a9ee53fcd4b3b..11ec15e33f65885618c7adc83e55c6a39fedbe99 100644
--- a/scripts/lib/wic/imager/direct.py
+++ b/scripts/lib/wic/imager/direct.py
@@ -290,7 +290,7 @@ class DirectImageCreator(BaseImageCreator):
                          self.bootimg_dir, self.kernel_dir, self.native_sysroot)
 
 
-            self.__image.add_partition(int(part.size),
+            self.__image.add_partition(part.disk_size,
                                        part.disk,
                                        part.mountpoint,
                                        part.source_file,
diff --git a/scripts/lib/wic/ksparser.py b/scripts/lib/wic/ksparser.py
index 0894e2b199a299fbbed272f2e1c95e9d692e3ab1..62c490274aa92bf82aac304d9323250e3b728d0c 100644
--- a/scripts/lib/wic/ksparser.py
+++ b/scripts/lib/wic/ksparser.py
@@ -113,6 +113,9 @@ def systemidtype(arg):
 class KickStart():
     """"Kickstart parser implementation."""
 
+    DEFAULT_EXTRA_SPACE = 10*1024
+    DEFAULT_OVERHEAD_FACTOR = 1.3
+
     def __init__(self, confpath):
 
         self.partitions = []
@@ -127,16 +130,24 @@ class KickStart():
         part.add_argument('mountpoint', nargs='?')
         part.add_argument('--active', action='store_true')
         part.add_argument('--align', type=int)
-        part.add_argument("--extra-space", type=sizetype, default=10*1024)
+        part.add_argument("--extra-space", type=sizetype)
         part.add_argument('--fsoptions', dest='fsopts')
         part.add_argument('--fstype')
         part.add_argument('--label')
         part.add_argument('--no-table', action='store_true')
         part.add_argument('--ondisk', '--ondrive', dest='disk')
-        part.add_argument("--overhead-factor", type=overheadtype, default=1.3)
+        part.add_argument("--overhead-factor", type=overheadtype)
         part.add_argument('--part-type')
         part.add_argument('--rootfs-dir')
-        part.add_argument('--size', type=sizetype, default=0)
+
+        # --size and --fixed-size cannot be specified together; options
+        # ----extra-space and --overhead-factor should also raise a parser
+        # --error, but since nesting mutually exclusive groups does not work,
+        # ----extra-space/--overhead-factor are handled later
+        sizeexcl = part.add_mutually_exclusive_group()
+        sizeexcl.add_argument('--size', type=sizetype, default=0)
+        sizeexcl.add_argument('--fixed-size', type=sizetype, default=0)
+
         part.add_argument('--source')
         part.add_argument('--sourceparams')
         part.add_argument('--system-id', type=systemidtype)
@@ -170,11 +181,33 @@ class KickStart():
                 lineno += 1
                 if line and line[0] != '#':
                     try:
-                        parsed = parser.parse_args(shlex.split(line))
+                        line_args = shlex.split(line)
+                        parsed = parser.parse_args(line_args)
                     except ArgumentError as err:
                         raise KickStartError('%s:%d: %s' % \
                                              (confpath, lineno, err))
                     if line.startswith('part'):
+                        # using ArgumentParser one cannot easily tell if option
+                        # was passed as argument, if said option has a default
+                        # value; --overhead-factor/--extra-space cannot be used
+                        # with --fixed-size, so at least detect when these were
+                        # passed with non-0 values ...
+                        if parsed.fixed_size:
+                            if parsed.overhead_factor or parsed.extra_space:
+                                err = "%s:%d: arguments --overhead-factor and --extra-space not "\
+                                      "allowed with argument --fixed-size" \
+                                      % (confpath, lineno)
+                                raise KickStartError(err)
+                        else:
+                            # ... and provide defaults if not using
+                            # --fixed-size iff given option was not used
+                            # (again, one cannot tell if option was passed but
+                            # with value equal to 0)
+                            if '--overhead-factor' not in line_args:
+                                parsed.overhead_factor = self.DEFAULT_OVERHEAD_FACTOR
+                            if '--extra-space' not in line_args:
+                                parsed.extra_space = self.DEFAULT_EXTRA_SPACE
+
                         self.partnum += 1
                         self.partitions.append(Partition(parsed, self.partnum))
                     elif line.startswith('include'):
diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
index b191cdee542054956262d6c49f3ccc7cf812ee8a..aa8f8a79486b00b99fc43153fda93e654adfd1d9 100644
--- a/scripts/lib/wic/partition.py
+++ b/scripts/lib/wic/partition.py
@@ -54,6 +54,7 @@ class Partition():
         self.part_type = args.part_type
         self.rootfs_dir = args.rootfs_dir
         self.size = args.size
+        self.fixed_size = args.fixed_size
         self.source = args.source
         self.sourceparams = args.sourceparams
         self.system_id = args.system_id
@@ -87,6 +88,41 @@ class Partition():
         else:
             return 0
 
+    def get_rootfs_size(self, actual_rootfs_size=0):
+        """
+        Calculate the required size of rootfs taking into consideration
+        --size/--fixed-size flags as well as overhead and extra space, as
+        specified in kickstart file. Raises an error if the
+        `actual_rootfs_size` is larger than fixed-size rootfs.
+
+        """
+        if self.fixed_size:
+            rootfs_size = self.fixed_size
+            if actual_rootfs_size > rootfs_size:
+                msger.error("Actual rootfs size (%d kB) is larger than allowed size %d kB" \
+                            %(actual_rootfs_size, rootfs_size))
+        else:
+            extra_blocks = self.get_extra_block_count(actual_rootfs_size)
+            if extra_blocks < self.extra_space:
+                extra_blocks = self.extra_space
+
+            rootfs_size = actual_rootfs_size + extra_blocks
+            rootfs_size *= self.overhead_factor
+
+            msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
+                        (extra_blocks, self.mountpoint, rootfs_size))
+
+        return rootfs_size
+
+    @property
+    def disk_size(self):
+        """
+        Obtain on-disk size of partition taking into consideration
+        --size/--fixed-size options.
+
+        """
+        return self.fixed_size if self.fixed_size else self.size
+
     def prepare(self, creator, cr_workdir, oe_builddir, rootfs_dir,
                 bootimg_dir, kernel_dir, native_sysroot):
         """
@@ -97,9 +133,9 @@ class Partition():
             self.sourceparams_dict = parse_sourceparams(self.sourceparams)
 
         if not self.source:
-            if not self.size:
-                msger.error("The %s partition has a size of zero.  Please "
-                            "specify a non-zero --size for that partition." % \
+            if not self.size and not self.fixed_size:
+                msger.error("The %s partition has a size of zero. Please "
+                            "specify a non-zero --size/--fixed-size for that partition." % \
                             self.mountpoint)
             if self.fstype and self.fstype == "swap":
                 self.prepare_swap_partition(cr_workdir, oe_builddir,
@@ -146,6 +182,7 @@ class Partition():
                                                      oe_builddir,
                                                      bootimg_dir, kernel_dir, rootfs_dir,
                                                      native_sysroot)
+
         # further processing required Partition.size to be an integer, make
         # sure that it is one
         if type(self.size) is not int:
@@ -153,6 +190,12 @@ class Partition():
                           "This a bug in source plugin %s and needs to be fixed." \
                           % (self.mountpoint, self.source))
 
+        if self.fixed_size and self.size > self.fixed_size:
+            msger.error("File system image of partition %s is larger (%d kB) than its"\
+                        "allowed size %d kB" % (self.mountpoint,
+                                                self.size, self.fixed_size))
+
+
     def prepare_rootfs_from_fs_image(self, cr_workdir, oe_builddir,
                                      rootfs_dir):
         """
@@ -228,15 +271,7 @@ class Partition():
         out = exec_cmd(du_cmd)
         actual_rootfs_size = int(out.split()[0])
 
-        extra_blocks = self.get_extra_block_count(actual_rootfs_size)
-        if extra_blocks < self.extra_space:
-            extra_blocks = self.extra_space
-
-        rootfs_size = actual_rootfs_size + extra_blocks
-        rootfs_size *= self.overhead_factor
-
-        msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
-                    (extra_blocks, self.mountpoint, rootfs_size))
+        rootfs_size = self.get_rootfs_size(actual_rootfs_size)
 
         with open(rootfs, 'w') as sparse:
             os.ftruncate(sparse.fileno(), rootfs_size * 1024)
@@ -262,15 +297,7 @@ class Partition():
         out = exec_cmd(du_cmd)
         actual_rootfs_size = int(out.split()[0])
 
-        extra_blocks = self.get_extra_block_count(actual_rootfs_size)
-        if extra_blocks < self.extra_space:
-            extra_blocks = self.extra_space
-
-        rootfs_size = actual_rootfs_size + extra_blocks
-        rootfs_size *= self.overhead_factor
-
-        msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
-                    (extra_blocks, self.mountpoint, rootfs_size))
+        rootfs_size = self.get_rootfs_size(actual_rootfs_size)
 
         with open(rootfs, 'w') as sparse:
             os.ftruncate(sparse.fileno(), rootfs_size * 1024)
@@ -292,20 +319,13 @@ class Partition():
         out = exec_cmd(du_cmd)
         blocks = int(out.split()[0])
 
-        extra_blocks = self.get_extra_block_count(blocks)
-        if extra_blocks < self.extra_space:
-            extra_blocks = self.extra_space
-
-        blocks += extra_blocks
-
-        msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \
-                    (extra_blocks, self.mountpoint, blocks))
+        rootfs_size = self.get_rootfs_size(blocks)
 
         label_str = "-n boot"
         if self.label:
             label_str = "-n %s" % self.label
 
-        dosfs_cmd = "mkdosfs %s -S 512 -C %s %d" % (label_str, rootfs, blocks)
+        dosfs_cmd = "mkdosfs %s -S 512 -C %s %d" % (label_str, rootfs, rootfs_size)
         exec_native_cmd(dosfs_cmd, native_sysroot)
 
         mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (rootfs, rootfs_dir)
@@ -328,8 +348,9 @@ class Partition():
         """
         Prepare an empty ext2/3/4 partition.
         """
+        size = self.disk_size
         with open(rootfs, 'w') as sparse:
-            os.ftruncate(sparse.fileno(), self.size * 1024)
+            os.ftruncate(sparse.fileno(), size * 1024)
 
         extra_imagecmd = "-i 8192"
 
@@ -346,8 +367,9 @@ class Partition():
         """
         Prepare an empty btrfs partition.
         """
+        size = self.disk_size
         with open(rootfs, 'w') as sparse:
-            os.ftruncate(sparse.fileno(), self.size * 1024)
+            os.ftruncate(sparse.fileno(), size * 1024)
 
         label_str = ""
         if self.label:
@@ -362,7 +384,7 @@ class Partition():
         """
         Prepare an empty vfat partition.
         """
-        blocks = self.size
+        blocks = self.disk_size
 
         label_str = "-n boot"
         if self.label:
diff --git a/scripts/lib/wic/utils/partitionedfs.py b/scripts/lib/wic/utils/partitionedfs.py
index 9ea4a30cbb1cc66be66651653814c60b17bad2f9..68301f0b476ed48edfcb4dcad0df903474d13b50 100644
--- a/scripts/lib/wic/utils/partitionedfs.py
+++ b/scripts/lib/wic/utils/partitionedfs.py
@@ -210,7 +210,7 @@ class Image():
             msger.debug("Assigned %s to %s%d, sectors range %d-%d size %d "
                         "sectors (%d bytes)." \
                             % (part['mountpoint'], part['disk_name'], part['num'],
-                               part['start'], part['start'] + part['size'] - 1,
+                               part['start'], disk['offset'] - 1,
                                part['size'], part['size'] * self.sector_size))
 
         # Once all the partitions have been layed out, we can calculate the
-- 
2.5.5



^ permalink raw reply related

* [PATCH v6 1/5] oeqa/utils/commands.py: allow use of binaries from native sysroot
From: Maciej Borzecki @ 2016-12-19 11:20 UTC (permalink / raw)
  To: openembedded-core; +Cc: Maciej Borzecki
In-Reply-To: <cover.1482145354.git.maciej.borzecki@rndity.com>

Tests may need to run a native tool that is not available on the host
filesystem, but can be built using one of the *-native recipes. In such case,
the tool will be available in native sysroot, and running in from that location
will require adjustments to PATH.

runCmd() can now take a path to native sysroot as one of its arguments and
setup PATH accordingly.

Signed-off-by: Maciej Borzecki <maciej.borzecki@rndity.com>
---
 meta/lib/oeqa/utils/commands.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py
index 3a68b001b76ca89df17545912e2f75ca2cca6a38..0425c9fd98c7e8074ced6222156f5a1c2a393f50 100644
--- a/meta/lib/oeqa/utils/commands.py
+++ b/meta/lib/oeqa/utils/commands.py
@@ -97,9 +97,16 @@ class Result(object):
     pass
 
 
-def runCmd(command, ignore_status=False, timeout=None, assert_error=True, **options):
+def runCmd(command, ignore_status=False, timeout=None, assert_error=True, native_sysroot=None, **options):
     result = Result()
 
+    if native_sysroot:
+        extra_paths = "%s/sbin:%s/usr/sbin:%s/usr/bin" % \
+                      (native_sysroot, native_sysroot, native_sysroot)
+        nenv = dict(options.get('env', os.environ))
+        nenv['PATH'] = extra_paths + ':' + nenv.get('PATH', '')
+        options['env'] = nenv
+
     cmd = Command(command, timeout=timeout, **options)
     cmd.run()
 
-- 
2.5.5



^ permalink raw reply related

* [PATCH v6 0/5] wic: bugfixes & --fixed-size support, tests, oeqa: enhancements
From: Maciej Borzecki @ 2016-12-19 11:20 UTC (permalink / raw)
  To: openembedded-core; +Cc: Maciej Borzecki
In-Reply-To: <20161213185317.GA6550@linux.intel.com>

v6 of a patch series previously posted here [1].

Changes since v5:

* `oe-selftest: enforce en_US.UTF-8 locale` was merged to master, hence it's no
  longer part of this series

* rebased on top of master (d0d260b0b85790ceb136dd6b0445e8e33d038f5e)

[1]. http://lists.openembedded.org/pipermail/openembedded-core/2016-November/129187.html

Maciej Borzecki (5):
  oeqa/utils/commands.py: allow use of binaries from native sysroot
  wic: add --fixed-size wks option
  wic: selftest: avoid COMPATIBLE_HOST issues
  wic: selftest: do not assume bzImage kernel image
  wic: selftest: add tests for --fixed-size partition flags

 meta/lib/oeqa/selftest/wic.py          | 117 +++++++++++++++++++++++++++++++--
 meta/lib/oeqa/utils/commands.py        |   9 ++-
 scripts/lib/wic/help.py                |  14 +++-
 scripts/lib/wic/imager/direct.py       |   2 +-
 scripts/lib/wic/ksparser.py            |  41 ++++++++++--
 scripts/lib/wic/partition.py           |  88 +++++++++++++++----------
 scripts/lib/wic/utils/partitionedfs.py |   2 +-
 7 files changed, 224 insertions(+), 49 deletions(-)

-- 
2.5.5



^ permalink raw reply

* Re: 'From OE-Core rev: <commit-id>' in recent master commits
From: Burton, Ross @ 2016-12-19 11:19 UTC (permalink / raw)
  To: Andreas Müller; +Cc: Patches and discussions about the oe-core layer
In-Reply-To: <CALbNGRThWRoOfZjN1BaQpT2hAGzuRCfHUnfG89gxQcDE=6cgUw@mail.gmail.com>

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

On 19 December 2016 at 11:14, Andreas Müller <schnitzeltony@googlemail.com>
wrote:

> just updated to latest HEAD and checked commits. Found a lot of commits
> with
>
> (From OE-Core rev: <commit ID>)
>

Can you point to any SHAs in particular that have this?

Ross

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

^ permalink raw reply

* 'From OE-Core rev: <commit-id>' in recent master commits
From: Andreas Müller @ 2016-12-19 11:14 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer

Hi,

just updated to latest HEAD and checked commits. Found a lot of commits with

(From OE-Core rev: <commit ID>)

If I try to check the commit mentioned with 'git show' I get 'fatal:
bad object ..'.

I thought the tag was meant for release branches when backporting
master commits.

What am I missing - or did these tags come in by accident?

Regards

Andreas


^ permalink raw reply

* Re: [V2 02/10] gdb: Upgrade to 7.12
From: Burton, Ross @ 2016-12-19 11:14 UTC (permalink / raw)
  To: Khem Raj; +Cc: OE-core
In-Reply-To: <20161219063957.18716-2-raj.khem@gmail.com>

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

On 19 December 2016 at 06:39, Khem Raj <raj.khem@gmail.com> wrote:

> --- a/meta/conf/distro/include/tcmode-default.inc
> +++ b/meta/conf/distro/include/tcmode-default.inc
> @@ -25,7 +25,7 @@ PREFERRED_PROVIDER_virtual/gettext ??= "gettext"
>  GCCVERSION ?= "6.2%"
>  SDKGCCVERSION ?= "${GCCVERSION}"
>  BINUVERSION ?= "2.27%"
> -GDBVERSION ?= "7.11%"
> +GDBVERSION ?= "7.12%"
>  GLIBCVERSION ?= "2.25"
>

Can you rebase stuff to master before submitting it, as this patch doesn't
apply.

Ross

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

^ permalink raw reply

* Re: [V2 07/10] x264: Fix build on mips architectures
From: André Draszik @ 2016-12-19 10:40 UTC (permalink / raw)
  To: openembedded-core
In-Reply-To: <1482143598.27847.17.camel@andred.net>

On Mon, 2016-12-19 at 10:33 +0000, André Draszik wrote:
> On Sun, 2016-12-18 at 22:39 -0800, Khem Raj wrote:
> > Disable asm to fix
> > 
> > > You specified a pre-MSA CPU in your CFLAGS.
> > > If you really want to run on such a CPU, configure with --disable-asm.
> > 
> > Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > ---
> >  meta/recipes-multimedia/x264/x264_git.bb | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/meta/recipes-multimedia/x264/x264_git.bb b/meta/recipes-
> > multimedia/x264/x264_git.bb
> > index e790681ad3..240a19661f 100644
> > --- a/meta/recipes-multimedia/x264/x264_git.bb
> > +++ b/meta/recipes-multimedia/x264/x264_git.bb
> > @@ -23,6 +23,8 @@ inherit lib_package pkgconfig perlnative
> >  X264_DISABLE_ASM = ""
> >  X264_DISABLE_ASM_armv4 = "--disable-asm"
> >  X264_DISABLE_ASM_armv5 = "--disable-asm"
> > +X264_DISABLE_ASM_mips = "--disable-asm"
> > +X264_DISABLE_ASM_mipsel = "--disable-asm"
> 
> I think you can use _mipsarch these days, which covers all MIPS. Equally,
> mips32r5 and later have MSA, so I think the override should be:
> 
> X264_DISABLE_ASM_mipsarch = "--disable-asm"
> X264_DISABLE_ASM_mipsarchr6 = ""
> 
> or just
> 
> X264_DISABLE_ASM_mipsarch = "${@bb.utils.contains("AVAILTUNES", "mips32r6", "", "--disable-asm", d)}"

or

X264_DISABLE_ASM_mipsarch = "${@bb.utils.contains("TUNE_FEATURES", "r6", "", "--disable-asm", d)}"


> not sure, and completely untested.

A.



^ permalink raw reply

* Re: [V2 07/10] x264: Fix build on mips architectures
From: André Draszik @ 2016-12-19 10:33 UTC (permalink / raw)
  To: openembedded-core
In-Reply-To: <20161219063957.18716-7-raj.khem@gmail.com>

On Sun, 2016-12-18 at 22:39 -0800, Khem Raj wrote:
> Disable asm to fix
> 
> > You specified a pre-MSA CPU in your CFLAGS.
> > If you really want to run on such a CPU, configure with --disable-asm.
> 
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  meta/recipes-multimedia/x264/x264_git.bb | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/meta/recipes-multimedia/x264/x264_git.bb b/meta/recipes-
> multimedia/x264/x264_git.bb
> index e790681ad3..240a19661f 100644
> --- a/meta/recipes-multimedia/x264/x264_git.bb
> +++ b/meta/recipes-multimedia/x264/x264_git.bb
> @@ -23,6 +23,8 @@ inherit lib_package pkgconfig perlnative
>  X264_DISABLE_ASM = ""
>  X264_DISABLE_ASM_armv4 = "--disable-asm"
>  X264_DISABLE_ASM_armv5 = "--disable-asm"
> +X264_DISABLE_ASM_mips = "--disable-asm"
> +X264_DISABLE_ASM_mipsel = "--disable-asm"

I think you can use _mipsarch these days, which covers all MIPS. Equally,
mips32r5 and later have MSA, so I think the override should be:

X264_DISABLE_ASM_mipsarch = "--disable-asm"
X264_DISABLE_ASM_mipsarchr6 = ""

or just

X264_DISABLE_ASM_mipsarch = "${@bb.utils.contains("AVAILTUNES", "mips32r6",
"", "--disable-asm", d)}"

not sure, and completely untested.

Cheers,
Andre'


^ permalink raw reply

* Re: [PATCH 7/8] x264: Fix build on mips architectures
From: André Draszik @ 2016-12-19 10:30 UTC (permalink / raw)
  To: Khem Raj, openembedded-core
In-Reply-To: <20161219030600.1284-7-raj.khem@gmail.com>

On Sun, 2016-12-18 at 19:05 -0800, Khem Raj wrote:
> Disable asm to fix
> 
> > You specified a pre-MSA CPU in your CFLAGS.
> > If you really want to run on such a CPU, configure with --disable-asm.
> 
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  meta/recipes-multimedia/x264/x264_git.bb | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/meta/recipes-multimedia/x264/x264_git.bb b/meta/recipes-
> multimedia/x264/x264_git.bb
> index e790681ad3..240a19661f 100644
> --- a/meta/recipes-multimedia/x264/x264_git.bb
> +++ b/meta/recipes-multimedia/x264/x264_git.bb
> @@ -23,6 +23,8 @@ inherit lib_package pkgconfig perlnative
>  X264_DISABLE_ASM = ""
>  X264_DISABLE_ASM_armv4 = "--disable-asm"
>  X264_DISABLE_ASM_armv5 = "--disable-asm"
> +X264_DISABLE_ASM_mips = "--disable-asm"
> +X264_DISABLE_ASM_mipsel = "--disable-asm"

I think you can use _mipsarch these days, which covers all MIPS. Equally,
mips32r5 and later have MSA, so I think the override should be:

X264_DISABLE_ASM_mipsarch = "--disable-asm"
X264_DISABLE_ASM_mipsarchr6 = ""

or just

X264_DISABLE_ASM_mipsarch = "${@bb.utils.contains("AVAILTUNES", "mips32r6", "", "--disable-asm", d)}"

not sure, and completely untested.

Cheers,
Andre'



^ permalink raw reply

* Re: [V2 10/10] gdk-pixbuf: Update to 2.36.1
From: Jussi Kukkonen @ 2016-12-19  9:13 UTC (permalink / raw)
  To: Khem Raj; +Cc: Patches and discussions about the oe-core layer
In-Reply-To: <20161219063957.18716-10-raj.khem@gmail.com>

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

On 19 December 2016 at 08:39, Khem Raj <raj.khem@gmail.com> wrote:

> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  .../gdk-pixbuf/{gdk-pixbuf_2.36.0.bb => gdk-pixbuf_2.36.1.bb}      | 7
> +++----
>

I'm pretty sure this breaks debian renaming because of the added
thumbnailer binary.

I've got this upgrade (with an added ${PN}-bin package) in a branch that I
plan to send after a quick test so no need to fix.

Jussi



>  1 file changed, 3 insertions(+), 4 deletions(-)
>  rename meta/recipes-gnome/gdk-pixbuf/{gdk-pixbuf_2.36.0.bb =>
> gdk-pixbuf_2.36.1.bb} (95%)
>
> diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.0.bb
> b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.1.bb
> similarity index 95%
> rename from meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.0.bb
> rename to meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.1.bb
> index 9efe374c0d..debc2d706a 100644
> --- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.0.bb
> +++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.1.bb
> @@ -18,9 +18,8 @@ SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz
> \
>             file://run-ptest \
>             file://fatal-loader.patch \
>             "
> -
> -SRC_URI[md5sum] = "1a3baf91956c7923dab49ee3de100ce1"
> -SRC_URI[sha256sum] = "85ab52ce9f2c26327141b3dcf21cca
> 3da6a3f8de84b95fa1e727d8871a23245c"
> +SRC_URI[md5sum] = "fe30b0420e013f2c4590ae6226d895d4"
> +SRC_URI[sha256sum] = "9d5ba72070460c1b5b74115d395a3e
> 33daeb7b7b67fb256cdccc9d7187c42a38"
>
>  inherit autotools pkgconfig gettext pixbufcache ptest-gnome
> upstream-version-is-even gobject-introspection gtk-doc
>
> @@ -46,7 +45,7 @@ PACKAGES =+ "${PN}-xlib"
>  FILES_${PN}-xlib = "${libdir}/*pixbuf_xlib*${SOLIBS}"
>  ALLOW_EMPTY_${PN}-xlib = "1"
>
> -FILES_${PN} += "${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
> +FILES_${PN} += "${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders
> ${datadir}/thumbnailers"
>
>  FILES_${PN}-dev += " \
>         ${bindir}/gdk-pixbuf-csource \
> --
> 2.11.0
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>

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

^ permalink raw reply

* [PATCH v3 3/3] selftest/wic: Add tests for --exclude-dir option.
From: Kristian Amlie @ 2016-12-19  9:09 UTC (permalink / raw)
  To: Ed Bartosh; +Cc: openembedded-core
In-Reply-To: <1482138565-4120-1-git-send-email-kristian.amlie@mender.io>

Based partially on an earlier patch by Maciej Borzecki.

Signed-off-by: Kristian Amlie <kristian.amlie@mender.io>
---
 meta/lib/oeqa/selftest/wic.py | 103 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 102 insertions(+), 1 deletion(-)

diff --git a/meta/lib/oeqa/selftest/wic.py b/meta/lib/oeqa/selftest/wic.py
index faac11e..09f475c 100644
--- a/meta/lib/oeqa/selftest/wic.py
+++ b/meta/lib/oeqa/selftest/wic.py
@@ -49,7 +49,8 @@ class Wic(oeSelfTest):
         # setUpClass being unavailable.
         if not Wic.image_is_ready:
             bitbake('syslinux syslinux-native parted-native gptfdisk-native '
-                    'dosfstools-native mtools-native bmap-tools-native')
+                    'dosfstools-native mtools-native bmap-tools-native '
+                    'e2tools-native')
             bitbake('core-image-minimal')
             Wic.image_is_ready = True
 
@@ -299,3 +300,103 @@ class Wic(oeSelfTest):
         self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
                                    % image).status)
         self.assertEqual(1, len(glob(self.resultdir + "%s-*direct" % image)))
+
+    def test_exclude_path(self):
+        """Test --exclude-path wks option."""
+
+        # For using 'e2ls'.
+        old_path = os.environ['PATH']
+        os.environ['PATH'] = get_bb_var('PATH', 'core-image-minimal')
+
+        wks_file = 'temp.wks'
+        with open(wks_file, 'w') as wks:
+            rootfs_dir = get_bb_var('IMAGE_ROOTFS', 'core-image-minimal')
+            wks.write("""part / --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path usr
+part /usr --source rootfs --ondisk mmcblk0 --fstype=ext4 --rootfs-dir %s/usr
+part /etc --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path bin/ --rootfs-dir %s/usr"""
+                      % (rootfs_dir, rootfs_dir))
+        self.assertEqual(0, runCmd("wic create %s -e core-image-minimal" \
+                                   % wks_file).status)
+
+        os.remove(wks_file)
+        wicout = glob(self.resultdir + "%s-*direct" % 'temp')
+        self.assertEqual(1, len(wicout))
+
+        wicimg = wicout[0]
+
+        # verify partition size with wic
+        res = runCmd("parted -m %s unit b p 2>/dev/null" % wicimg)
+        self.assertEqual(0, res.status)
+
+        # parse parted output which looks like this:
+        # BYT;\n
+        # /var/tmp/wic/build/tmpfwvjjkf_-201611101222-hda.direct:200MiB:file:512:512:msdos::;\n
+        # 1:0.00MiB:200MiB:200MiB:ext4::;\n
+        partlns = res.output.splitlines()[2:]
+
+        self.assertEqual(3, len(partlns))
+
+        for part in [1, 2, 3]:
+            part_file = os.path.join(self.resultdir, "selftest_img.part%d" % part)
+            partln = partlns[part-1].split(":")
+            self.assertEqual(7, len(partln))
+            start = int(partln[1].rstrip("B")) / 512
+            length = int(partln[3].rstrip("B")) / 512
+            self.assertEqual(0, runCmd("dd if=%s of=%s skip=%d count=%d" %
+                                       (wicimg, part_file, start, length)).status)
+
+        # Test partition 1, should contain the normal root directories, except
+        # /usr.
+        res = runCmd("e2ls %s" % os.path.join(self.resultdir, "selftest_img.part1"))
+        self.assertEqual(0, res.status)
+        files = res.output.split()
+        self.assertIn("etc", files)
+        self.assertNotIn("usr", files)
+
+        # Partition 2, should contain common directories for /usr, not root
+        # directories.
+        res = runCmd("e2ls %s" % os.path.join(self.resultdir, "selftest_img.part2"))
+        self.assertEqual(0, res.status)
+        files = res.output.split()
+        self.assertNotIn("etc", files)
+        self.assertNotIn("usr", files)
+        self.assertIn("share", files)
+
+        # Partition 3, should contain the same as partition 2, including the bin
+        # directory, but not the files inside it.
+        res = runCmd("e2ls %s" % os.path.join(self.resultdir, "selftest_img.part3"))
+        self.assertEqual(0, res.status)
+        files = res.output.split()
+        self.assertNotIn("etc", files)
+        self.assertNotIn("usr", files)
+        self.assertIn("share", files)
+        self.assertIn("bin", files)
+        res = runCmd("e2ls %s:bin" % os.path.join(self.resultdir, "selftest_img.part3"))
+        self.assertEqual(0, res.status)
+        self.assertEqual("No files found!", res.output.strip())
+
+        for part in [1, 2, 3]:
+            part_file = os.path.join(self.resultdir, "selftest_img.part%d" % part)
+            os.remove(part_file)
+
+        os.environ['PATH'] = old_path
+
+    def test_exclude_path_errors(self):
+        """Test --exclude-path wks option error handling."""
+        wks_file = 'temp.wks'
+
+        rootfs_dir = get_bb_var('IMAGE_ROOTFS', 'core-image-minimal')
+
+        # Absolute argument.
+        with open(wks_file, 'w') as wks:
+            wks.write("part / --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path /usr")
+        self.assertNotEqual(0, runCmd("wic create %s -e core-image-minimal" \
+                                      % wks_file, ignore_status=True).status)
+        os.remove(wks_file)
+
+        # Argument pointing to parent directory.
+        with open(wks_file, 'w') as wks:
+            wks.write("part / --source rootfs --ondisk mmcblk0 --fstype=ext4 --exclude-path ././..")
+        self.assertNotEqual(0, runCmd("wic create %s -e core-image-minimal" \
+                                      % wks_file, ignore_status=True).status)
+        os.remove(wks_file)
-- 
2.7.4



^ permalink raw reply related

* [PATCH v3 2/3] Add e2tools recipe, in order to test contents of images.
From: Kristian Amlie @ 2016-12-19  9:09 UTC (permalink / raw)
  To: Ed Bartosh; +Cc: openembedded-core
In-Reply-To: <1482138565-4120-1-git-send-email-kristian.amlie@mender.io>

Signed-off-by: Kristian Amlie <kristian.amlie@mender.io>
---
 meta/recipes-devtools/e2tools/e2tools-native_0.0.16.bb | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 meta/recipes-devtools/e2tools/e2tools-native_0.0.16.bb

diff --git a/meta/recipes-devtools/e2tools/e2tools-native_0.0.16.bb b/meta/recipes-devtools/e2tools/e2tools-native_0.0.16.bb
new file mode 100644
index 0000000..5483287
--- /dev/null
+++ b/meta/recipes-devtools/e2tools/e2tools-native_0.0.16.bb
@@ -0,0 +1,17 @@
+SRC_URI = "http://home.earthlink.net/~k_sheff/sw/e2tools/e2tools-0.0.16.tar.gz;md5sum=1829b2b261e0e0d07566066769b5b28b"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fa8321a71778d26ff40690a4d371ea85"
+
+inherit native
+
+do_configure() {
+    ./configure --prefix=${prefix}
+}
+
+do_compile() {
+    oe_runmake
+}
+
+do_install() {
+    oe_runmake DESTDIR=${D} install
+}
-- 
2.7.4



^ permalink raw reply related

* [PATCH v3 1/3] wic: Add --exclude-path option to rootfs source plugin.
From: Kristian Amlie @ 2016-12-19  9:09 UTC (permalink / raw)
  To: Ed Bartosh; +Cc: openembedded-core
In-Reply-To: <1482138565-4120-1-git-send-email-kristian.amlie@mender.io>

It will omit the given path from the resulting partition, and if the
given path ends in a slash, it will only delete the content, and keep
the directory.

Since mkfs only accepts whole directories as input, we need to copy
the rootfs directory to the workdir so that we can selectively delete
files from it.

Since we want to use the copyhardlinktree() function, we need to put
the generic oe lib in the module search path.

Signed-off-by: Kristian Amlie <kristian.amlie@mender.io>
---
 scripts/lib/wic/help.py                  |  6 +++++
 scripts/lib/wic/ksparser.py              |  1 +
 scripts/lib/wic/partition.py             |  1 +
 scripts/lib/wic/plugins/source/rootfs.py | 43 +++++++++++++++++++++++++++++++-
 scripts/wic                              |  2 ++
 5 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py
index e5347ec..9dab670 100644
--- a/scripts/lib/wic/help.py
+++ b/scripts/lib/wic/help.py
@@ -715,6 +715,12 @@ DESCRIPTION
                      partition table. It may be useful for
                      bootloaders.
 
+         --exclude-path: This option is specific to wic. It excludes the given
+                         absolute path from the resulting image. If the path
+                         ends with a slash, only the content of the directory
+                         is omitted, not the directory itself. This option only
+                         has an effect with the rootfs source plugin.
+
          --extra-space: This option is specific to wic. It adds extra
                         space after the space filled by the content
                         of the partition. The final size can go
diff --git a/scripts/lib/wic/ksparser.py b/scripts/lib/wic/ksparser.py
index 0894e2b..17b97fd 100644
--- a/scripts/lib/wic/ksparser.py
+++ b/scripts/lib/wic/ksparser.py
@@ -127,6 +127,7 @@ class KickStart():
         part.add_argument('mountpoint', nargs='?')
         part.add_argument('--active', action='store_true')
         part.add_argument('--align', type=int)
+        part.add_argument('--exclude-path', nargs='+')
         part.add_argument("--extra-space", type=sizetype, default=10*1024)
         part.add_argument('--fsoptions', dest='fsopts')
         part.add_argument('--fstype')
diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
index ac4c836..cba78a5 100644
--- a/scripts/lib/wic/partition.py
+++ b/scripts/lib/wic/partition.py
@@ -45,6 +45,7 @@ class Partition():
         self.align = args.align
         self.disk = args.disk
         self.extra_space = args.extra_space
+        self.exclude_path = args.exclude_path
         self.fsopts = args.fsopts
         self.fstype = args.fstype
         self.label = args.label
diff --git a/scripts/lib/wic/plugins/source/rootfs.py b/scripts/lib/wic/plugins/source/rootfs.py
index 425da8b..794ad69 100644
--- a/scripts/lib/wic/plugins/source/rootfs.py
+++ b/scripts/lib/wic/plugins/source/rootfs.py
@@ -26,10 +26,13 @@
 #
 
 import os
+import shutil
+
+from oe.path import copyhardlinktree
 
 from wic import msger
 from wic.pluginbase import SourcePlugin
-from wic.utils.oe.misc import get_bitbake_var
+from wic.utils.oe.misc import get_bitbake_var, exec_cmd
 
 class RootfsPlugin(SourcePlugin):
     """
@@ -78,6 +81,44 @@ class RootfsPlugin(SourcePlugin):
 
         real_rootfs_dir = cls.__get_rootfs_dir(rootfs_dir)
 
+        # Handle excluded paths.
+        if part.exclude_path is not None:
+            # We need a new rootfs directory we can delete files from. Copy to
+            # workdir.
+            new_rootfs = os.path.join(cr_workdir, "rootfs")
+
+            if os.path.lexists(new_rootfs):
+                shutil.rmtree(os.path.join(new_rootfs))
+
+            copyhardlinktree(real_rootfs_dir, new_rootfs)
+
+            real_rootfs_dir = new_rootfs
+
+            for orig_path in part.exclude_path:
+                path = orig_path
+                if os.path.isabs(path):
+                    msger.error("Must be relative: --exclude-path=%s" % orig_path)
+
+                full_path = os.path.realpath(os.path.join(new_rootfs, path))
+
+                # Disallow climbing outside of parent directory using '..',
+                # because doing so could be quite disastrous (we will delete the
+                # directory).
+                if not full_path.startswith(new_rootfs):
+                    msger.error("'%s' points to a path outside the rootfs" % orig_path)
+
+                if path.endswith(os.sep):
+                    # Delete content only.
+                    for entry in os.listdir(full_path):
+                        full_entry = os.path.join(full_path, entry)
+                        if os.path.isdir(full_entry) and not os.path.islink(full_entry):
+                            shutil.rmtree(full_entry)
+                        else:
+                            os.remove(full_entry)
+                else:
+                    # Delete whole directory.
+                    shutil.rmtree(full_path)
+
         part.rootfs_dir = real_rootfs_dir
         part.prepare_rootfs(cr_workdir, oe_builddir, real_rootfs_dir, native_sysroot)
 
diff --git a/scripts/wic b/scripts/wic
index fe2c33f..f58843e 100755
--- a/scripts/wic
+++ b/scripts/wic
@@ -41,6 +41,8 @@ from distutils import spawn
 scripts_path = os.path.abspath(os.path.dirname(__file__))
 lib_path = scripts_path + '/lib'
 sys.path.insert(0, lib_path)
+oe_lib_path = os.path.join(os.path.dirname(scripts_path), 'meta', 'lib')
+sys.path.insert(0, oe_lib_path)
 
 bitbake_exe = spawn.find_executable('bitbake')
 if bitbake_exe:
-- 
2.7.4



^ permalink raw reply related

* [PATCH v2 3/3] selftest/wic: Add tests for --exclude-dir option.
From: Kristian Amlie @ 2016-12-19  9:09 UTC (permalink / raw)
  To: Ed Bartosh; +Cc: openembedded-core
In-Reply-To: <20161216144423.GB6398@linux.intel.com>


>> +    def test_exclude_path(self):
>> +        """Test --exclude-path wks option."""
>> +
>> +        # For using 'e2ls'.
>> +        old_path = os.environ['PATH']
>> +        os.environ['PATH'] = get_bb_var('PATH', 'core-image-minimal')
>> +
>> +        wks_file = 'temp.wks'
>> +        ks = open(wks_file, 'w')
> 
> I'd use more pythonic 'with open(wks_file, 'w') as wks:' here.

Done for all three blocks!

-- 
Kristian


^ permalink raw reply

* Re: [PATCH] curl: add ptest
From: Maxin B. John @ 2016-12-19  9:01 UTC (permalink / raw)
  To: Burton, Ross; +Cc: Cristian Iorga, OE-core
In-Reply-To: <CAJTo0LZ5ne934RKTZChfSx8TeuTqneZE5R7fd6JJNOSsd=9M=A@mail.gmail.com>

Hi Ross,

>On Fri, Dec 16, 2016 at 05:53:25PM +0000, Burton, Ross wrote:
>>On 12 December 2016 at 13:09, Maxin B. John <maxin.john@intel.com> wrote:
>>
>>    +                         python-argparse python-pprint diffutils openssh \
>    Sadly this dependency on openssh breaks images which pull in dropbear explicitly, such as core-image-sato-dev.

Ah, ok.

>    Why does the curl ptest needs openssh, and can it use dropbear if that is present?

Will check and take care of it in V2. Thanks!

Best Regards,
Maxin


^ permalink raw reply

* [PATCH] gnupg: specify explicitly tar path
From: Wenlin Kang @ 2016-12-19  7:01 UTC (permalink / raw)
  To: openembedded-core

On cross-compile platform, automatic check of ustar is unreliable, so we
specify explicitly tar path after check manually.

Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
---
 .../fix-ustar-and-tar-path-check-issue.patch       | 46 ++++++++++++++++++++++
 meta/recipes-support/gnupg/gnupg_1.4.7.bb          |  2 +
 2 files changed, 48 insertions(+)
 create mode 100644 meta/recipes-support/gnupg/gnupg-1.4.7/fix-ustar-and-tar-path-check-issue.patch

diff --git a/meta/recipes-support/gnupg/gnupg-1.4.7/fix-ustar-and-tar-path-check-issue.patch b/meta/recipes-support/gnupg/gnupg-1.4.7/fix-ustar-and-tar-path-check-issue.patch
new file mode 100644
index 0000000..fca8d64
--- /dev/null
+++ b/meta/recipes-support/gnupg/gnupg-1.4.7/fix-ustar-and-tar-path-check-issue.patch
@@ -0,0 +1,46 @@
+Remove automatic detection of tar path and ustar format
+
+Remove automatic detection of tar path and ustar format, because they 
+are unreliable and inappropriate for cross-compile platform.
+
+Upstream status: Inappropriate [cross-compile platform specific]
+
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+
+diff -uarN gnupg-1.4.7-org/m4/tar-ustar.m4 gnupg-1.4.7/m4/tar-ustar.m4
+--- gnupg-1.4.7-org/m4/tar-ustar.m4	2016-12-19 11:06:58.621838069 +0800
++++ gnupg-1.4.7/m4/tar-ustar.m4	2016-12-19 11:13:31.721840809 +0800
+@@ -15,22 +15,22 @@
+ 
+   if test x$_do_tar != xno ; then
+ 
+-     if test x$_do_tar = x ; then
+-        AC_PATH_PROG(TAR,"tar")
+-        _mytar=$ac_cv_path_TAR
+-     fi
+-
+      # Check if our tar is ustar format.  If so, it's good.  TODO: Add some
+      # code to check various options, etc, to try and create ustar
+      # format.
+ 
+-     if test x$_mytar != x ; then
+-        AC_MSG_CHECKING([whether $_mytar speaks USTAR])
+-        echo hithere > conftest.txt
+-        $_mytar -cf - conftest.txt | (dd skip=257 bs=1 count=5 2>/dev/null || cat) | grep ustar > /dev/null
+-        _tar_bad=$?
+-        rm conftest.txt
++     if test x$_do_tar != x ; then 
++        AC_SUBST(TAR,$_do_tar)
++        AC_MSG_CHECKING([whether $_do_tar speaks USTAR])
++
++        # Here, we ignore the check code, because it isn't indeed applicable for
++        # cross-compile platform.
++        # Now our tar support ustar, so we say directly yes, but once the tar is changed, 
++        # you should check whether it suppport ustar, and please reference the follow command:
++        # echo hithere > conftest.txt
++        # tar -cf - conftest.txt | (dd skip=257 bs=1 count=5 2>/dev/null || cat) | grep ustar > /dev/null
+ 
++        _tar_bad=0
+ 	if test x$_tar_bad = x0 ; then
+ 	   AC_MSG_RESULT([yes])
+ 	else
diff --git a/meta/recipes-support/gnupg/gnupg_1.4.7.bb b/meta/recipes-support/gnupg/gnupg_1.4.7.bb
index 6ccffd5..6ea6fe3 100644
--- a/meta/recipes-support/gnupg/gnupg_1.4.7.bb
+++ b/meta/recipes-support/gnupg/gnupg_1.4.7.bb
@@ -18,6 +18,7 @@ SRC_URI = "${GNUPG_MIRROR}/gnupg/gnupg-${PV}.tar.bz2 \
            file://CVE-2013-4351.patch \
            file://CVE-2013-4576.patch \
            file://CVE-2013-4242.patch \
+           file://fix-ustar-and-tar-path-check-issue.patch \
 	  "
 
 SRC_URI[md5sum] = "b06a141cca5cd1a55bbdd25ab833303c"
@@ -79,6 +80,7 @@ EXTRA_OECONF = "--disable-ldap \
 		--disable-selinux-support \
                 --with-readline=${STAGING_LIBDIR}/.. \
                 ac_cv_sys_symbol_underscore=no \
+                --with-tar=${base_bindir}/tar \
 		"
 
 # Force gcc's traditional handling of inline to avoid issues with gcc 5
-- 
1.9.1



^ permalink raw reply related

* [V2 10/10] gdk-pixbuf: Update to 2.36.1
From: Khem Raj @ 2016-12-19  6:39 UTC (permalink / raw)
  To: openembedded-core
In-Reply-To: <20161219063957.18716-1-raj.khem@gmail.com>

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 .../gdk-pixbuf/{gdk-pixbuf_2.36.0.bb => gdk-pixbuf_2.36.1.bb}      | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
 rename meta/recipes-gnome/gdk-pixbuf/{gdk-pixbuf_2.36.0.bb => gdk-pixbuf_2.36.1.bb} (95%)

diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.0.bb b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.1.bb
similarity index 95%
rename from meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.0.bb
rename to meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.1.bb
index 9efe374c0d..debc2d706a 100644
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.0.bb
+++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.36.1.bb
@@ -18,9 +18,8 @@ SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
            file://run-ptest \
            file://fatal-loader.patch \
            "
-
-SRC_URI[md5sum] = "1a3baf91956c7923dab49ee3de100ce1"
-SRC_URI[sha256sum] = "85ab52ce9f2c26327141b3dcf21cca3da6a3f8de84b95fa1e727d8871a23245c"
+SRC_URI[md5sum] = "fe30b0420e013f2c4590ae6226d895d4"
+SRC_URI[sha256sum] = "9d5ba72070460c1b5b74115d395a3e33daeb7b7b67fb256cdccc9d7187c42a38"
 
 inherit autotools pkgconfig gettext pixbufcache ptest-gnome upstream-version-is-even gobject-introspection gtk-doc
 
@@ -46,7 +45,7 @@ PACKAGES =+ "${PN}-xlib"
 FILES_${PN}-xlib = "${libdir}/*pixbuf_xlib*${SOLIBS}"
 ALLOW_EMPTY_${PN}-xlib = "1"
 
-FILES_${PN} += "${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
+FILES_${PN} += "${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders ${datadir}/thumbnailers"
 
 FILES_${PN}-dev += " \
 	${bindir}/gdk-pixbuf-csource \
-- 
2.11.0



^ permalink raw reply related


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