Re: [OE-core] Circular dependency of do_populate_sysroot

2019-04-07 Thread Stefan Herbrechtsmeier
Hi,Am 07.04.2019 23:35 schrieb richard.pur...@linuxfoundation.org:On Sun, 2019-04-07 at 21:18 +0200, Stefan Herbrechtsmeier wrote:

> I'm working towards an integrated Node.js support without npm and

> have a  problem with a circular dependency of do_populate_sysroot for

> the native build.

> 

> I have two recipes a.bb and b.bb which have no DEPENDS but a 

> RDEPENDS_${PN} between each other. This is no problem for a cross

> build but leads to the following error for the native build:

> Task virtual:native:a.bb:do_populate_sysroot has circular dependency

> on virtual:native:b.bb:do_populate_sysroot.

> 

> It looks like the problem comes from the following lines in 

> native.bbclass and commit eea86c4f0a960d0094571a78dc0cf9d46d162a22:

> RECIPERDEPTASK = "do_populate_sysroot"

> do_populate_sysroot[rdeptask] = "${RECIPERDEPTASK}"

> 

> Is the rdeptask on the same task really needed or is it possible to

> use  an other task after do_populate_sysroot as sync task which run

> time dependency on the other do_populate_sysroot task?



You're saying A runtime depends on B and B runtime depends on A.Yes, only the run time depends on each other. This means the dependency doesn't exist during a native build of a or b.


The code is quite correctly therefore trying to install B into A's

sysroot since you might want to run it and also install A into B's

sysroot since that also depends on it and you may want to run that.I don't understand this. The package a and b don't need the other package during build only package c which depends on one of them needs both packages.Does the native build evaluates all dependencies during the individual package build?
The dependency is therefore correct and you're trying to ask the system

to do something impossible.How does it works for cross dependencies?Does the native build change rdepends into depends?


You likely need to decide that the native A doesn't really runtime

depend on native B or vice versa and break at least the native

dependency.The problem is that I generate the recipies from npm packages and webassemblyjs has a lot of runtime cross dependencies between it's own npm packages. I don't know which package is rdepends by other packages and therefore need to keep the cross dependencies.Best regards  Stefan-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH v2 1/4] update-alternatives.bbclass: Add function to get metadata

2019-04-07 Thread Mariano Lopez



On 4/7/19 4:32 PM, Richard Purdie wrote:

On Sun, 2019-04-07 at 12:15 -0500, Mariano Lopez wrote:

-
-# Default to generate shell script.. eventually we may want to 
change this...
-alt_target = os.path.normpath(alt_target)
-
-alt_setup_links  += '\tupdate-alternatives --install %s %s %s 
%s\n' % (alt_link, alt_name, alt_target, alt_priority)
-alt_remove_links += '\tupdate-alternatives --remove  %s %s\n' % 
(alt_name, alt_target)
+updates = update_alternatives_alt_targets(d, pkg)
+for alt_name, alt_link, alt_target, alt_priority in updates:
+   alt_setup_links  += '\tupdate-alternatives --install %s %s %s %s\n' 
% (alt_link, alt_name, alt_target, alt_priority)
+   alt_remove_links += '\tupdate-alternatives --remove  %s %s\n' % 
(alt_name, alt_target)

I think the above is three whitespaces, not four? I know its minor but
it jumped out as I was comparing the code before/after!

Cheers,

Richard



Good catch! I have sent the the fixed version but I messed up with the 
cover letter, you can find the correct version here:

https://patchwork.openembedded.org/patch/160236/


I think I don't even need to put that link there :)

Thanks,

Mariano

--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH] cogl: fix compile error with -Werror=maybe-uninitialized

2019-04-07 Thread Changqing Li


On 4/4/19 9:42 PM, Burton, Ross wrote:

+Upstream-Status: Submitted
[https://github.com/GNOME/cogl/pull/4/commits/be7a7b983952d3f2ce2cbaa7b89f413b92e15066]
The pull request has automatically  forwarded to GNOME gitlab,  I will 
send a V2 to fix this.


That's a GNOME mirror, note how your PR was closed.  GNOME is at
gitlab.gnome.org.

Ross

On Tue, 2 Apr 2019 at 10:37,  wrote:

From: Changqing Li 

fix below compile error with -Werror=maybe-uninitialized

| ../../cogl-1.22.2/cogl/driver/gl/gles/cogl-driver-gles.c:217:17: error: 
'gltype' may be used uninitialized in this function 
[-Werror=maybe-uninitialized]
|  *out_gltype = gltype;
|  ^~~~
| ../../cogl-1.22.2/cogl/driver/gl/gles/cogl-driver-gles.c:213:22: error: 
'glintformat' may be used uninitialized in this function 
[-Werror=maybe-uninitialized]
|  *out_glintformat = glintformat;
|  ~^

Signed-off-by: Changqing Li 
---
  ...mpile-error-with-Werror-maybe-uninitializ.patch | 40 ++
  meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb  |  4 ++-
  2 files changed, 43 insertions(+), 1 deletion(-)
  create mode 100644 
meta/recipes-graphics/cogl/cogl-1.0/0001-cogl-fix-compile-error-with-Werror-maybe-uninitializ.patch

diff --git 
a/meta/recipes-graphics/cogl/cogl-1.0/0001-cogl-fix-compile-error-with-Werror-maybe-uninitializ.patch
 
b/meta/recipes-graphics/cogl/cogl-1.0/0001-cogl-fix-compile-error-with-Werror-maybe-uninitializ.patch
new file mode 100644
index 000..3c99d25
--- /dev/null
+++ 
b/meta/recipes-graphics/cogl/cogl-1.0/0001-cogl-fix-compile-error-with-Werror-maybe-uninitializ.patch
@@ -0,0 +1,40 @@
+From e05ee89fcc978fceccab3e4724a3a37f7a338499 Mon Sep 17 00:00:00 2001
+From: Changqing Li 
+Date: Tue, 2 Apr 2019 14:48:49 +0800
+Subject: [PATCH] cogl: fix compile error with -Werror=maybe-uninitialized
+
+fix below compile error with -Werror=maybe-uninitialized
+
+| ../../cogl-1.22.2/cogl/driver/gl/gles/cogl-driver-gles.c:217:17: error: 
'gltype' may be used uninitialized in this function 
[-Werror=maybe-uninitialized]
+|  *out_gltype = gltype;
+|  ^~~~
+| ../../cogl-1.22.2/cogl/driver/gl/gles/cogl-driver-gles.c:213:22: error: 
'glintformat' may be used uninitialized in this function 
[-Werror=maybe-uninitialized]
+|  *out_glintformat = glintformat;
+|  ~^
+
+Upstream-Status: Submitted 
[https://github.com/GNOME/cogl/pull/4/commits/be7a7b983952d3f2ce2cbaa7b89f413b92e15066]
+
+Signed-off-by: Changqing Li 
+---
+ cogl/driver/gl/gles/cogl-driver-gles.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cogl/driver/gl/gles/cogl-driver-gles.c 
b/cogl/driver/gl/gles/cogl-driver-gles.c
+index e94449f..a59d815 100644
+--- a/cogl/driver/gl/gles/cogl-driver-gles.c
 b/cogl/driver/gl/gles/cogl-driver-gles.c
+@@ -74,9 +74,9 @@ _cogl_driver_pixel_format_to_gl (CoglContext *context,
+  GLenum *out_gltype)
+ {
+   CoglPixelFormat required_format;
+-  GLenum glintformat;
++  GLenum glintformat = 0;
+   GLenum glformat = 0;
+-  GLenum gltype;
++  GLenum gltype = 0;
+
+   required_format = format;
+
+--
+2.7.4
+
diff --git a/meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb 
b/meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb
index 5901062..5ddeb4a 100644
--- a/meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb
+++ b/meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb
@@ -1,7 +1,9 @@
  require cogl-1.0.inc

  SRC_URI += "file://test-backface-culling.c-fix-may-be-used-uninitialize.patch 
\
-file://0001-Fix-an-incorrect-preprocessor-conditional.patch"
+file://0001-Fix-an-incorrect-preprocessor-conditional.patch \
+
file://0001-cogl-fix-compile-error-with-Werror-maybe-uninitializ.patch \
+   "
  SRC_URI[archive.md5sum] = "d53b708ca7c4af03d7254e46945d6b33"
  SRC_URI[archive.sha256sum] = 
"39a718cdb64ea45225a7e94f88dddec1869ab37a21b339ad058a9d898782c00d"

--
2.7.4

--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


--
BRs

Sandy(Li Changqing)

--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH] cogl: fix compile error with -Werror=maybe-uninitialized

2019-04-07 Thread Changqing Li


On 4/4/19 4:11 PM, Adrian Bunk wrote:

On Thu, Apr 04, 2019 at 10:06:44AM +0800, Changqing Li wrote:

...
And also upstream have use same way to fix under
cogl/driver/gl/gl/cogl-driver-gl.c

https://gitlab.gnome.org/GNOME/cogl/commit/ca5226513eb64bceb38ca01994799c4e7cd9f5fa

Have they?

This looks like a 4 year old commit that was never merged.


Seems it merged to 1.22 branch,  I can see it switch to tag 1.22.2, but 
indeed,  it  not merge to master.


and this change also include in 
http://ftp.gnome.org/pub/GNOME/sources/cogl/1.22/cogl-1.22.2.tar.xz.





so I think we can fix same way under this
cogl/driver/gl/gles/cogl-driver-gles.c

cu
Adrian


--
BRs

Sandy(Li Changqing)

--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH] virglrenderer: remove link option -Bsymbolic

2019-04-07 Thread Kang Kai

On 2019/4/4 下午3:52, kai.k...@windriver.com wrote:

From: Kai Kang 

When gcc compile options '-O2 -fvisibility=default' are applied, it
fails to compile virglrenderer for x86:

| ld: gallium/auxiliary/.libs/libgallium.a(u_cpu_detect.o): relocation
   R_386_GOTOFF against undefined symbol `util_cpu_caps' can not be used
   when making a shared object
| ld: final link failed: bad value
| collect2: error: ld returned 1 exit status

Remove link option '-Bsymbolic' to fix the failure.



Any comments on this patch? Thank.

Kai




Signed-off-by: Kai Kang 
---
  .../0001-Remove-link-option-Bsymbolic.patch   | 34 +++
  .../virglrenderer/virglrenderer_0.7.0.bb  |  1 +
  2 files changed, 35 insertions(+)
  create mode 100644 
meta/recipes-graphics/virglrenderer/virglrenderer/0001-Remove-link-option-Bsymbolic.patch

diff --git 
a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-Remove-link-option-Bsymbolic.patch
 
b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-Remove-link-option-Bsymbolic.patch
new file mode 100644
index 00..faefa16aae
--- /dev/null
+++ 
b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-Remove-link-option-Bsymbolic.patch
@@ -0,0 +1,34 @@
+When gcc compile options '-O2 -fvisibility=default' are applied, it fails to
+compile virglrenderer for x86:
+
+| ld: gallium/auxiliary/.libs/libgallium.a(u_cpu_detect.o): relocation
+  R_386_GOTOFF against undefined symbol `util_cpu_caps' can not be used
+  when making a shared object
+| ld: final link failed: bad value
+| collect2: error: ld returned 1 exit status
+
+Remove link option '-Bsymbolic' to fix the failure.
+
+Upstream-Status: Submitted 
[https://gitlab.freedesktop.org/virgl/virglrenderer/merge_requests/213]
+
+Signed-off-by: Kai Kang 
+---
+ src/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 9b668c8..7a421b8 100644
+--- a/src/Makefile.am
 b/src/Makefile.am
+@@ -48,7 +49,7 @@ endif
+ lib_LTLIBRARIES = libvirglrenderer.la
+ noinst_LTLIBRARIES = libvrend.la
+
+-GM_LDFLAGS = -Wl,-Bsymbolic -version-number 0:2 -no-undefined
++GM_LDFLAGS = -version-number 0:2 -no-undefined
+
+ libvirglrenderer_la_SOURCES = virglrenderer.c
+ libvirglrenderer_ladir = $(libdir)
+--
+2.20.1
+
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer_0.7.0.bb 
b/meta/recipes-graphics/virglrenderer/virglrenderer_0.7.0.bb
index 225a0b8b0c..afc709bc48 100644
--- a/meta/recipes-graphics/virglrenderer/virglrenderer_0.7.0.bb
+++ b/meta/recipes-graphics/virglrenderer/virglrenderer_0.7.0.bb
@@ -9,6 +9,7 @@ SRCREV = "402c228861c9893f64cffbbcb4cb23044b8c721c"
  SRC_URI = "git://anongit.freedesktop.org/virglrenderer \
 file://0001-vtest-add-missing-includes.patch \
 file://0001-Makefile.am-explicitly-link-with-libdrm.patch \
+   file://0001-Remove-link-option-Bsymbolic.patch \
 "
  
  S = "${WORKDIR}/git"



--
Kai Kang

--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH v3 2/4] ptest.bbclass: Add feature to populate a binary directory

2019-04-07 Thread Mariano Lopez
This adds the functionality to create a binary directory within
PTEST_PATH directory. This directory will be populated with
symlinks pointing to the binaries installed by the package and
then renamed by update-alternatives. This way the ptest only needs
to source this binary directory in order to use the expected
binaries.

To enable this feature just add PTEST_BINDIR = "1" to the recipe.

[YOCTO #12597]
[YOCTO #13238]

Signed-off-by: Mariano Lopez 
---
 meta/classes/ptest.bbclass | 31 +++
 1 file changed, 31 insertions(+)

diff --git a/meta/classes/ptest.bbclass b/meta/classes/ptest.bbclass
index 97865c9338..0c37447881 100644
--- a/meta/classes/ptest.bbclass
+++ b/meta/classes/ptest.bbclass
@@ -65,6 +65,37 @@ do_install_ptest_base() {
 done
 }
 
+PTEST_BINDIR_PKGD_PATH = "${PKGD}${PTEST_PATH}/bin"
+
+# This function needs to run after apply_update_alternative_renames because the
+# aforementioned function will update the ALTERNATIVE_LINK_NAME flag. Append is
+# used here to make this function to run as late as possible.
+PACKAGE_PREPROCESS_FUNCS_append = "${@bb.utils.contains("PTEST_BINDIR", "1", " 
ptest_update_alternatives", "", d)}"
+
+python ptest_update_alternatives() {
+"""
+This function will generate the symlinks in the PTEST_BINDIR_PKGD_PATH
+to match the renamed binaries by update-alternatives.
+"""
+
+if not bb.data.inherits_class('update-alternatives', d) \
+   or not update_alternatives_enabled(d):
+return
+
+bb.note("Generating symlinks for ptest")
+bin_paths = { os.environ["bindir"], os.environ["base_bindir"],
+  os.environ["sbindir"], os.environ["base_sbindir"] }
+ptest_bindir = d.getVar("PTEST_BINDIR_PKGD_PATH")
+os.mkdir(ptest_bindir)
+for pkg in (d.getVar('PACKAGES') or "").split():
+alternatives = update_alternatives_alt_targets(d, pkg)
+for alt_name, alt_link, alt_target, _ in alternatives:
+# Some alternatives are for man pages,
+# check if the alternative is in PATH
+if os.path.dirname(alt_link) in bin_paths:
+os.symlink(alt_target, os.path.join(ptest_bindir, alt_name))
+}
+
 do_configure_ptest_base[dirs] = "${B}"
 do_compile_ptest_base[dirs] = "${B}"
 do_install_ptest_base[dirs] = "${B}"
-- 
2.19.2

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH v3 4/4] busybox: Use PTEST binary directory

2019-04-07 Thread Mariano Lopez
This will generate the symlinks in the ptest binary directory using the
ptest class functionality instead of generating them manually. Because
the ptest class uses update-alternatives to get the metadata for the
symlinks it will respect the use of BUSYBOX_SPLIT_SUID automatically.

[YOCTO #12597]

Signed-off-by: Mariano Lopez 
---
 meta/recipes-core/busybox/busybox.inc | 16 ++--
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/meta/recipes-core/busybox/busybox.inc 
b/meta/recipes-core/busybox/busybox.inc
index c9d25ff1ca..174ce5a8c0 100644
--- a/meta/recipes-core/busybox/busybox.inc
+++ b/meta/recipes-core/busybox/busybox.inc
@@ -347,24 +347,12 @@ do_install () {
fi
 }
 
+PTEST_BINDIR = "1"
+
 do_install_ptest () {
cp -r ${B}/testsuite ${D}${PTEST_PATH}/
cp ${B}/.config  ${D}${PTEST_PATH}/
ln -s /bin/busybox   ${D}${PTEST_PATH}/busybox
-
-   mkdir ${D}${PTEST_PATH}/bin
-   if [ "${BUSYBOX_SPLIT_SUID}" = "1" ]; then
-   while read link; do
-   ln -s ${base_bindir}/busybox.suid 
${D}${PTEST_PATH}/bin/$(basename $link)
-   done <${D}${sysconfdir}/busybox.links.suid
-   while read link; do
-   ln -s ${base_bindir}/busybox.nosuid 
${D}${PTEST_PATH}/bin/$(basename $link)
-   done <${D}${sysconfdir}/busybox.links.nosuid
-   else
-   while read link; do
-   ln -s ${base_bindir}/busybox 
${D}${PTEST_PATH}/bin/$(basename $link)
-   done <${D}${sysconfdir}/busybox.links
-   fi
 }
 
 inherit update-alternatives
-- 
2.19.2

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH v3 1/4] update-alternatives.bbclass: Add function to get metadata

2019-04-07 Thread Mariano Lopez
This adds update_alternatives_alt_targets function to get the metadata
for a package. This is for code reuse because the metadata would help
other classes that needs to be aware of how update-alternatives modify
the final package.

[YOCTO #12597]
[YOCTO #13238]

Signed-off-by: Mariano Lopez 
---
 meta/classes/update-alternatives.bbclass | 70 +++-
 1 file changed, 45 insertions(+), 25 deletions(-)

diff --git a/meta/classes/update-alternatives.bbclass 
b/meta/classes/update-alternatives.bbclass
index 537e85d9a3..b702e77ee5 100644
--- a/meta/classes/update-alternatives.bbclass
+++ b/meta/classes/update-alternatives.bbclass
@@ -216,42 +216,62 @@ python apply_update_alternative_renames () {
 update_files(alt_target, alt_target_rename, pkg, d)
 }
 
+def update_alternatives_alt_targets(d, pkg):
+"""
+Returns the update-alternatives metadata for a package.
+
+The returned format is a list of tuples where the tuple contains:
+alt_name: The binary name
+alt_link: The path for the binary (Shared by different packages)
+alt_target:   The path for the renamed binary (Unique per package)
+alt_priority: The priority of the alt_target
+
+All the alt_targets will be installed into the sysroot. The alt_link is
+a symlink pointing to the alt_target with the highest priority.
+"""
+
+pn = d.getVar('BPN')
+pkgdest = d.getVar('PKGD')
+updates = list()
+for alt_name in (d.getVar('ALTERNATIVE_%s' % pkg) or "").split():
+alt_link = d.getVarFlag('ALTERNATIVE_LINK_NAME', alt_name)
+alt_target   = d.getVarFlag('ALTERNATIVE_TARGET_%s' % pkg, alt_name) 
or \
+   d.getVarFlag('ALTERNATIVE_TARGET', alt_name) or \
+   d.getVar('ALTERNATIVE_TARGET_%s' % pkg) or \
+   d.getVar('ALTERNATIVE_TARGET') or \
+   alt_link
+alt_priority = d.getVarFlag('ALTERNATIVE_PRIORITY_%s' % pkg,  
alt_name) or \
+   d.getVarFlag('ALTERNATIVE_PRIORITY',  alt_name) or \
+   d.getVar('ALTERNATIVE_PRIORITY_%s' % pkg) or  \
+   d.getVar('ALTERNATIVE_PRIORITY')
+
+# This shouldn't trigger, as it should have been resolved earlier!
+if alt_link == alt_target:
+bb.note('alt_link == alt_target: %s == %s -- correcting, this 
should not happen!' % (alt_link, alt_target))
+alt_target = '%s.%s' % (alt_target, pn)
+
+if not os.path.lexists('%s/%s' % (pkgdest, alt_target)):
+bb.warn('%s: NOT adding alternative provide %s: %s does not exist' 
% (pn, alt_link, alt_target))
+continue
+
+alt_target = os.path.normpath(alt_target)
+updates.append( (alt_name, alt_link, alt_target, alt_priority) )
+
+return updates
+
 PACKAGESPLITFUNCS_prepend = "populate_packages_updatealternatives "
 
 python populate_packages_updatealternatives () {
 if not update_alternatives_enabled(d):
 return
 
-pn = d.getVar('BPN')
-
 # Do actual update alternatives processing
-pkgdest = d.getVar('PKGD')
 for pkg in (d.getVar('PACKAGES') or "").split():
 # Create post install/removal scripts
 alt_setup_links = ""
 alt_remove_links = ""
-for alt_name in (d.getVar('ALTERNATIVE_%s' % pkg) or "").split():
-alt_link = d.getVarFlag('ALTERNATIVE_LINK_NAME', alt_name)
-alt_target   = d.getVarFlag('ALTERNATIVE_TARGET_%s' % pkg, 
alt_name) or d.getVarFlag('ALTERNATIVE_TARGET', alt_name)
-alt_target   = alt_target or d.getVar('ALTERNATIVE_TARGET_%s' % 
pkg) or d.getVar('ALTERNATIVE_TARGET') or alt_link
-# Sometimes alt_target is specified as relative to the link name.
-alt_target   = os.path.join(os.path.dirname(alt_link), alt_target)
-
-alt_priority = d.getVarFlag('ALTERNATIVE_PRIORITY_%s' % pkg,  
alt_name) or d.getVarFlag('ALTERNATIVE_PRIORITY',  alt_name)
-alt_priority = alt_priority or d.getVar('ALTERNATIVE_PRIORITY_%s' 
% pkg) or d.getVar('ALTERNATIVE_PRIORITY')
-
-# This shouldn't trigger, as it should have been resolved earlier!
-if alt_link == alt_target:
-bb.note('alt_link == alt_target: %s == %s -- correcting, this 
should not happen!' % (alt_link, alt_target))
-alt_target = '%s.%s' % (alt_target, pn)
-
-if not os.path.lexists('%s/%s' % (pkgdest, alt_target)):
-bb.warn('%s: NOT adding alternative provide %s: %s does not 
exist' % (pn, alt_link, alt_target))
-continue
-
-# Default to generate shell script.. eventually we may want to 
change this...
-alt_target = os.path.normpath(alt_target)
-
+updates = update_alternatives_alt_targets(d, pkg)
+for alt_name, alt_link, alt_target, alt_priority in updates:
 alt_setup_links  += '\tupdate-alternatives --install %s %s 

[OE-core] [PATCH v3 3/4] util-linux: Use PTEST binary directory

2019-04-07 Thread Mariano Lopez
Some binaries generated by util-linux will be replaced by core-utils
in the final image by update-alternatives, so use a dedicated directory
with symlinks to avoid using a binary generated by another package.

This will solve the issue with the ptest runner timing out when
running the kill ptests for util-linux.

[YOCTO #13238]

Signed-off-by: Mariano Lopez 
---
 meta/recipes-core/util-linux/util-linux.inc   | 5 +++--
 meta/recipes-core/util-linux/util-linux/run-ptest | 4 
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-core/util-linux/util-linux.inc 
b/meta/recipes-core/util-linux/util-linux.inc
index 18c3af240e..a67318e84e 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -284,6 +284,7 @@ ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1"
 
 BBCLASSEXTEND = "native nativesdk"
 
+PTEST_BINDIR = "1"
 do_compile_ptest() {
 oe_runmake buildtest-TESTS
 }
@@ -312,8 +313,8 @@ do_install_ptest() {
 
'/^\tif[[:space:]]\[[[:space:]]![[:space:]]-x[[:space:]]"$1"/s|$1|`which $1 
2>/dev/null`|g' \
  ${D}${PTEST_PATH}/tests/functions.sh
 
-# "kill -L" behaves differently than "/bin/kill -L" so we need an 
additional fix
+# Running "kill" without the the complete path would use the shell's 
built-in kill
 sed -i -e \
- '/^TS_CMD_KILL/ s|kill|/bin/kill|g' \
+ '/^TS_CMD_KILL/ s|kill|${PTEST_PATH}/bin/kill|g' \
  ${D}${PTEST_PATH}/tests/commands.sh
 }
diff --git a/meta/recipes-core/util-linux/util-linux/run-ptest 
b/meta/recipes-core/util-linux/util-linux/run-ptest
index fbc2f9b56a..2178ab8fef 100644
--- a/meta/recipes-core/util-linux/util-linux/run-ptest
+++ b/meta/recipes-core/util-linux/util-linux/run-ptest
@@ -1,5 +1,9 @@
 #!/bin/sh
 
+current_path=$(readlink -f $0)
+export bindir=$(dirname $current_path)
+export PATH=$bindir/bin:$PATH
+
 cd tests || exit 1  
 
 comps=$(find ts/ -type f -perm -111 -regex ".*/[^\.~]*" |  sort)
-- 
2.19.2

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH] Revert "mdadm: fix gcc8 maybe-uninitialized/format-overflow warning"

2019-04-07 Thread Richard Purdie
On Sat, 2019-04-06 at 17:11 -0700, Khem Raj wrote:
> This reverts commit 630281663893cdcfa9c4323b717b415d87d5510f.
> 
> Signed-off-by: Khem Raj 

I know the answer but just for the benefit of the git logs, can we say
why please.

Cheers,

Richard

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] Circular dependency of do_populate_sysroot

2019-04-07 Thread richard . purdie
On Sun, 2019-04-07 at 21:18 +0200, Stefan Herbrechtsmeier wrote:
> I'm working towards an integrated Node.js support without npm and
> have a  problem with a circular dependency of do_populate_sysroot for
> the native build.
> 
> I have two recipes a.bb and b.bb which have no DEPENDS but a 
> RDEPENDS_${PN} between each other. This is no problem for a cross
> build but leads to the following error for the native build:
> Task virtual:native:a.bb:do_populate_sysroot has circular dependency
> on virtual:native:b.bb:do_populate_sysroot.
> 
> It looks like the problem comes from the following lines in 
> native.bbclass and commit eea86c4f0a960d0094571a78dc0cf9d46d162a22:
> RECIPERDEPTASK = "do_populate_sysroot"
> do_populate_sysroot[rdeptask] = "${RECIPERDEPTASK}"
> 
> Is the rdeptask on the same task really needed or is it possible to
> use  an other task after do_populate_sysroot as sync task which run
> time dependency on the other do_populate_sysroot task?

You're saying A runtime depends on B and B runtime depends on A.

The code is quite correctly therefore trying to install B into A's
sysroot since you might want to run it and also install A into B's
sysroot since that also depends on it and you may want to run that.

The dependency is therefore correct and you're trying to ask the system
to do something impossible.

You likely need to decide that the native A doesn't really runtime
depend on native B or vice versa and break at least the native
dependency.

Cheers,

Richard

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH v2 1/4] update-alternatives.bbclass: Add function to get metadata

2019-04-07 Thread Richard Purdie
On Sun, 2019-04-07 at 12:15 -0500, Mariano Lopez wrote:
>  python populate_packages_updatealternatives () {
>  if not update_alternatives_enabled(d):
>  return
>  
> -pn = d.getVar('BPN')
> -
>  # Do actual update alternatives processing
> -pkgdest = d.getVar('PKGD')
>  for pkg in (d.getVar('PACKAGES') or "").split():
>  # Create post install/removal scripts
>  alt_setup_links = ""
>  alt_remove_links = ""
> -for alt_name in (d.getVar('ALTERNATIVE_%s' % pkg) or "").split():
> -alt_link = d.getVarFlag('ALTERNATIVE_LINK_NAME', alt_name)
> -alt_target   = d.getVarFlag('ALTERNATIVE_TARGET_%s' % pkg, 
> alt_name) or d.getVarFlag('ALTERNATIVE_TARGET', alt_name)
> -alt_target   = alt_target or d.getVar('ALTERNATIVE_TARGET_%s' % 
> pkg) or d.getVar('ALTERNATIVE_TARGET') or alt_link
> -# Sometimes alt_target is specified as relative to the link name.
> -alt_target   = os.path.join(os.path.dirname(alt_link), 
> alt_target)
> -
> -alt_priority = d.getVarFlag('ALTERNATIVE_PRIORITY_%s' % pkg,  
> alt_name) or d.getVarFlag('ALTERNATIVE_PRIORITY',  alt_name)
> -alt_priority = alt_priority or 
> d.getVar('ALTERNATIVE_PRIORITY_%s' % pkg) or d.getVar('ALTERNATIVE_PRIORITY')
> -
> -# This shouldn't trigger, as it should have been resolved 
> earlier!
> -if alt_link == alt_target:
> -bb.note('alt_link == alt_target: %s == %s -- correcting, 
> this should not happen!' % (alt_link, alt_target))
> -alt_target = '%s.%s' % (alt_target, pn)
> -
> -if not os.path.lexists('%s/%s' % (pkgdest, alt_target)):
> -bb.warn('%s: NOT adding alternative provide %s: %s does not 
> exist' % (pn, alt_link, alt_target))
> -continue
> -
> -# Default to generate shell script.. eventually we may want to 
> change this...
> -alt_target = os.path.normpath(alt_target)
> -
> -alt_setup_links  += '\tupdate-alternatives --install %s %s %s 
> %s\n' % (alt_link, alt_name, alt_target, alt_priority)
> -alt_remove_links += '\tupdate-alternatives --remove  %s %s\n' % 
> (alt_name, alt_target)
> +updates = update_alternatives_alt_targets(d, pkg)
> +for alt_name, alt_link, alt_target, alt_priority in updates:
> +   alt_setup_links  += '\tupdate-alternatives --install %s %s %s 
> %s\n' % (alt_link, alt_name, alt_target, alt_priority)
> +   alt_remove_links += '\tupdate-alternatives --remove  %s %s\n' % 
> (alt_name, alt_target)

I think the above is three whitespaces, not four? I know its minor but
it jumped out as I was comparing the code before/after!

Cheers,

Richard


-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] Circular dependency of do_populate_sysroot

2019-04-07 Thread Stefan Herbrechtsmeier

Hi,

I'm working towards an integrated Node.js support without npm and have a 
problem with a circular dependency of do_populate_sysroot for the native 
build.


I have two recipes a.bb and b.bb which have no DEPENDS but a 
RDEPENDS_${PN} between each other. This is no problem for a cross build 
but leads to the following error for the native build:
Task virtual:native:a.bb:do_populate_sysroot has circular dependency on 
virtual:native:b.bb:do_populate_sysroot.


It looks like the problem comes from the following lines in 
native.bbclass and commit eea86c4f0a960d0094571a78dc0cf9d46d162a22:

RECIPERDEPTASK = "do_populate_sysroot"
do_populate_sysroot[rdeptask] = "${RECIPERDEPTASK}"

Is the rdeptask on the same task really needed or is it possible to use 
an other task after do_populate_sysroot as sync task which run time 
dependency on the other do_populate_sysroot task?


Best regards
  Stefan
--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 0/3] Feature to use symbolic links to binaries for ptest

2019-04-07 Thread Mariano Lopez
Thanks for pointing that out! The busybox recipe provided me
insight on how to implement this series in a cleaner way.
I refactor the code and the v2 of the series can be found here:
http://lists.openembedded.org/pipermail/openembedded-core/2019-April/280981.html

Please do not integrate this series

Thanks again Ross!

On Fri, Apr 5, 2019 at 1:49 PM Mariano Lopez 
wrote:

> Sure, can you integrate this in the while I work on the busybox one? I'll
> do it as part of bug 12597 that is also assigned to me
>
> Mariano
>
> On Fri, Apr 5, 2019 at 9:37 AM Burton, Ross  wrote:
>
>> Can you also port busybox to this instead of its own hand-coded logic?
>>
>> Ross
>>
>> On Fri, 5 Apr 2019 at 15:27, Mariano Lopez
>>  wrote:
>> >
>> > Some binaries are renamed by update-alternatives class at build time
>> > and some ptest run against a binary belonging to another package. Take
>> > for example busybox or util-linux.
>> >
>> > This series adds a directory within the ptest path with symlinks to the
>> > binaries produced by the package, so just adding this directory to the
>> > PATH will test the correct binaries.
>> >
>> > To use this feature just add PTEST_BINDIR = "1" to the recipe.
>> >
>> > This will help to solve bug 13238.
>> >
>> > [YOCTO #13238]
>> >
>> > The following changes since commit
>> ffa5a1bda6741f5dc9f1b8db1bb37b0c6f103c99:
>> >
>> >   asciidoc: specify XML catalogue to use (2019-04-03 14:56:27 +0100)
>> >
>> > are available in the Git repository at:
>> >
>> >   git://github.com/justanotherboy/poky bug12597
>> >   https://github.com/justanotherboy/poky/tree/bug12597
>> >
>> > Mariano Lopez (3):
>> >   update-alternatives.bbclass: Add function to get renamed binaries
>> >   ptest.bbclass: Add feature to populate a binary directory
>> >   util-linux: Use PTEST binary directory
>> >
>> >
>> > --
>> > 2.19.2
>> >
>> > --
>> > ___
>> > Openembedded-core mailing list
>> > Openembedded-core@lists.openembedded.org
>> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
>>
>
-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH v2 3/4] util-linux: Use PTEST binary directory

2019-04-07 Thread Mariano Lopez
Some binaries generated by util-linux will be replaced by core-utils
in the final image by update-alternatives, so use a dedicated directory
with symlinks to avoid using a binary generated by another package.

This will solve the issue with the ptest runner timing out when
running the kill ptests for util-linux.

[YOCTO #13238]

Signed-off-by: Mariano Lopez 
---
 meta/recipes-core/util-linux/util-linux.inc   | 5 +++--
 meta/recipes-core/util-linux/util-linux/run-ptest | 4 
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-core/util-linux/util-linux.inc 
b/meta/recipes-core/util-linux/util-linux.inc
index 18c3af240e..a67318e84e 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -284,6 +284,7 @@ ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1"
 
 BBCLASSEXTEND = "native nativesdk"
 
+PTEST_BINDIR = "1"
 do_compile_ptest() {
 oe_runmake buildtest-TESTS
 }
@@ -312,8 +313,8 @@ do_install_ptest() {
 
'/^\tif[[:space:]]\[[[:space:]]![[:space:]]-x[[:space:]]"$1"/s|$1|`which $1 
2>/dev/null`|g' \
  ${D}${PTEST_PATH}/tests/functions.sh
 
-# "kill -L" behaves differently than "/bin/kill -L" so we need an 
additional fix
+# Running "kill" without the the complete path would use the shell's 
built-in kill
 sed -i -e \
- '/^TS_CMD_KILL/ s|kill|/bin/kill|g' \
+ '/^TS_CMD_KILL/ s|kill|${PTEST_PATH}/bin/kill|g' \
  ${D}${PTEST_PATH}/tests/commands.sh
 }
diff --git a/meta/recipes-core/util-linux/util-linux/run-ptest 
b/meta/recipes-core/util-linux/util-linux/run-ptest
index fbc2f9b56a..2178ab8fef 100644
--- a/meta/recipes-core/util-linux/util-linux/run-ptest
+++ b/meta/recipes-core/util-linux/util-linux/run-ptest
@@ -1,5 +1,9 @@
 #!/bin/sh
 
+current_path=$(readlink -f $0)
+export bindir=$(dirname $current_path)
+export PATH=$bindir/bin:$PATH
+
 cd tests || exit 1  
 
 comps=$(find ts/ -type f -perm -111 -regex ".*/[^\.~]*" |  sort)
-- 
2.19.2

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH v2 4/4] busybox: Use PTEST binary directory

2019-04-07 Thread Mariano Lopez
This will generate the symlinks in the ptest binary directory using the
ptest class functionality instead of generating them manually. Because
the ptest class uses update-alternatives to get the metadata for the
symlinks it will respect the use of BUSYBOX_SPLIT_SUID automatically.

[YOCTO #12597]

Signed-off-by: Mariano Lopez 
---
 meta/recipes-core/busybox/busybox.inc | 16 ++--
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/meta/recipes-core/busybox/busybox.inc 
b/meta/recipes-core/busybox/busybox.inc
index c9d25ff1ca..174ce5a8c0 100644
--- a/meta/recipes-core/busybox/busybox.inc
+++ b/meta/recipes-core/busybox/busybox.inc
@@ -347,24 +347,12 @@ do_install () {
fi
 }
 
+PTEST_BINDIR = "1"
+
 do_install_ptest () {
cp -r ${B}/testsuite ${D}${PTEST_PATH}/
cp ${B}/.config  ${D}${PTEST_PATH}/
ln -s /bin/busybox   ${D}${PTEST_PATH}/busybox
-
-   mkdir ${D}${PTEST_PATH}/bin
-   if [ "${BUSYBOX_SPLIT_SUID}" = "1" ]; then
-   while read link; do
-   ln -s ${base_bindir}/busybox.suid 
${D}${PTEST_PATH}/bin/$(basename $link)
-   done <${D}${sysconfdir}/busybox.links.suid
-   while read link; do
-   ln -s ${base_bindir}/busybox.nosuid 
${D}${PTEST_PATH}/bin/$(basename $link)
-   done <${D}${sysconfdir}/busybox.links.nosuid
-   else
-   while read link; do
-   ln -s ${base_bindir}/busybox 
${D}${PTEST_PATH}/bin/$(basename $link)
-   done <${D}${sysconfdir}/busybox.links
-   fi
 }
 
 inherit update-alternatives
-- 
2.19.2

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH v2 1/4] update-alternatives.bbclass: Add function to get metadata

2019-04-07 Thread Mariano Lopez
This adds update_alternatives_alt_targets function to get the metadata
for a package. This is for code reuse because the metadata would help
other classes that needs to be aware of how update-alternatives modify
the final package.

[YOCTO #12597]
[YOCTO #13238]

Signed-off-by: Mariano Lopez 
---
 meta/classes/update-alternatives.bbclass | 74 +++-
 1 file changed, 47 insertions(+), 27 deletions(-)

diff --git a/meta/classes/update-alternatives.bbclass 
b/meta/classes/update-alternatives.bbclass
index 537e85d9a3..bc19373348 100644
--- a/meta/classes/update-alternatives.bbclass
+++ b/meta/classes/update-alternatives.bbclass
@@ -216,44 +216,64 @@ python apply_update_alternative_renames () {
 update_files(alt_target, alt_target_rename, pkg, d)
 }
 
+def update_alternatives_alt_targets(d, pkg):
+"""
+Returns the update-alternatives metadata for a package.
+
+The returned format is a list of tuples where the tuple contains:
+alt_name: The binary name
+alt_link: The path for the binary (Shared by different packages)
+alt_target:   The path for the renamed binary (Unique per package)
+alt_priority: The priority of the alt_target
+
+All the alt_targets will be installed into the sysroot. The alt_link is
+a symlink pointing to the alt_target with the highest priority.
+"""
+
+pn = d.getVar('BPN')
+pkgdest = d.getVar('PKGD')
+updates = list()
+for alt_name in (d.getVar('ALTERNATIVE_%s' % pkg) or "").split():
+alt_link = d.getVarFlag('ALTERNATIVE_LINK_NAME', alt_name)
+alt_target   = d.getVarFlag('ALTERNATIVE_TARGET_%s' % pkg, alt_name) 
or \
+   d.getVarFlag('ALTERNATIVE_TARGET', alt_name) or \
+   d.getVar('ALTERNATIVE_TARGET_%s' % pkg) or \
+   d.getVar('ALTERNATIVE_TARGET') or \
+   alt_link
+alt_priority = d.getVarFlag('ALTERNATIVE_PRIORITY_%s' % pkg,  
alt_name) or \
+   d.getVarFlag('ALTERNATIVE_PRIORITY',  alt_name) or \
+   d.getVar('ALTERNATIVE_PRIORITY_%s' % pkg) or  \
+   d.getVar('ALTERNATIVE_PRIORITY')
+
+# This shouldn't trigger, as it should have been resolved earlier!
+if alt_link == alt_target:
+bb.note('alt_link == alt_target: %s == %s -- correcting, this 
should not happen!' % (alt_link, alt_target))
+alt_target = '%s.%s' % (alt_target, pn)
+
+if not os.path.lexists('%s/%s' % (pkgdest, alt_target)):
+bb.warn('%s: NOT adding alternative provide %s: %s does not exist' 
% (pn, alt_link, alt_target))
+continue
+
+alt_target = os.path.normpath(alt_target)
+updates.append( (alt_name, alt_link, alt_target, alt_priority) )
+
+return updates
+
 PACKAGESPLITFUNCS_prepend = "populate_packages_updatealternatives "
 
 python populate_packages_updatealternatives () {
 if not update_alternatives_enabled(d):
 return
 
-pn = d.getVar('BPN')
-
 # Do actual update alternatives processing
-pkgdest = d.getVar('PKGD')
 for pkg in (d.getVar('PACKAGES') or "").split():
 # Create post install/removal scripts
 alt_setup_links = ""
 alt_remove_links = ""
-for alt_name in (d.getVar('ALTERNATIVE_%s' % pkg) or "").split():
-alt_link = d.getVarFlag('ALTERNATIVE_LINK_NAME', alt_name)
-alt_target   = d.getVarFlag('ALTERNATIVE_TARGET_%s' % pkg, 
alt_name) or d.getVarFlag('ALTERNATIVE_TARGET', alt_name)
-alt_target   = alt_target or d.getVar('ALTERNATIVE_TARGET_%s' % 
pkg) or d.getVar('ALTERNATIVE_TARGET') or alt_link
-# Sometimes alt_target is specified as relative to the link name.
-alt_target   = os.path.join(os.path.dirname(alt_link), alt_target)
-
-alt_priority = d.getVarFlag('ALTERNATIVE_PRIORITY_%s' % pkg,  
alt_name) or d.getVarFlag('ALTERNATIVE_PRIORITY',  alt_name)
-alt_priority = alt_priority or d.getVar('ALTERNATIVE_PRIORITY_%s' 
% pkg) or d.getVar('ALTERNATIVE_PRIORITY')
-
-# This shouldn't trigger, as it should have been resolved earlier!
-if alt_link == alt_target:
-bb.note('alt_link == alt_target: %s == %s -- correcting, this 
should not happen!' % (alt_link, alt_target))
-alt_target = '%s.%s' % (alt_target, pn)
-
-if not os.path.lexists('%s/%s' % (pkgdest, alt_target)):
-bb.warn('%s: NOT adding alternative provide %s: %s does not 
exist' % (pn, alt_link, alt_target))
-continue
-
-# Default to generate shell script.. eventually we may want to 
change this...
-alt_target = os.path.normpath(alt_target)
-
-alt_setup_links  += '\tupdate-alternatives --install %s %s %s 
%s\n' % (alt_link, alt_name, alt_target, alt_priority)
-alt_remove_links += '\tupdate-alternatives --remove  %s 

[OE-core] [PATCH v2 0/4] Feature to use symbolic links to binaries for ptest

2019-04-07 Thread Mariano Lopez
Some binaries are renamed by update-alternatives class at build time
and some ptest run against a binary belonging to another package. Take
for example busybox or util-linux.

This series adds a directory within the ptest with symlinks to the
binaries produced by the package, so just adding this directory to the
PATH will test the correct binaries.

v2 changes:

Add busybox recipe to use this method of symlinks generation.

Refactor the way the binary ptest directory is generated. Now the
directory will contain only symlinks to binaries that were renamed by
update-alternatives and not symlinks to all the package's binaries. This
have some advantages:
- Less lines and the code is cleaner.
- There is no need to have symlinks for every binary.
- Reuse existing update-alternatives functionality, don't need to add
  new features to the class.

To use this feature just add PTEST_BINDIR = "1" to the recipe.

The following changes since commit ffa5a1bda6741f5dc9f1b8db1bb37b0c6f103c99:

  asciidoc: specify XML catalogue to use (2019-04-03 14:56:27 +0100)

are available in the Git repository at:

  git://github.com/justanotherboy/poky bug13238
  https://github.com/justanotherboy/poky/tree/bug13238

Mariano Lopez (4):
  update-alternatives.bbclass: Add function to get metadata
  ptest.bbclass: Add feature to populate a binary directory
  util-linux: Use PTEST binary directory
  busybox: Use PTEST binary directory

 meta/classes/ptest.bbclass| 31 
 meta/classes/update-alternatives.bbclass  | 74 ---
 meta/recipes-core/busybox/busybox.inc | 16 +---
 meta/recipes-core/util-linux/util-linux.inc   |  5 +-
 .../util-linux/util-linux/run-ptest   |  4 +
 5 files changed, 87 insertions(+), 43 deletions(-)

-- 
2.19.2

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH v2 2/4] ptest.bbclass: Add feature to populate a binary directory

2019-04-07 Thread Mariano Lopez
This adds the functionality to create a binary directory within
PTEST_PATH directory. This directory will be populated with
symlinks pointing to the binaries installed by the package and
then renamed by update-alternatives. This way the ptest only needs
to source this binary directory in order to use the expected
binaries.

To enable this feature just add PTEST_BINDIR = "1" to the recipe.

[YOCTO #12597]
[YOCTO #13238]

Signed-off-by: Mariano Lopez 
---
 meta/classes/ptest.bbclass | 31 +++
 1 file changed, 31 insertions(+)

diff --git a/meta/classes/ptest.bbclass b/meta/classes/ptest.bbclass
index 97865c9338..0c37447881 100644
--- a/meta/classes/ptest.bbclass
+++ b/meta/classes/ptest.bbclass
@@ -65,6 +65,37 @@ do_install_ptest_base() {
 done
 }
 
+PTEST_BINDIR_PKGD_PATH = "${PKGD}${PTEST_PATH}/bin"
+
+# This function needs to run after apply_update_alternative_renames because the
+# aforementioned function will update the ALTERNATIVE_LINK_NAME flag. Append is
+# used here to make this function to run as late as possible.
+PACKAGE_PREPROCESS_FUNCS_append = "${@bb.utils.contains("PTEST_BINDIR", "1", " 
ptest_update_alternatives", "", d)}"
+
+python ptest_update_alternatives() {
+"""
+This function will generate the symlinks in the PTEST_BINDIR_PKGD_PATH
+to match the renamed binaries by update-alternatives.
+"""
+
+if not bb.data.inherits_class('update-alternatives', d) \
+   or not update_alternatives_enabled(d):
+return
+
+bb.note("Generating symlinks for ptest")
+bin_paths = { os.environ["bindir"], os.environ["base_bindir"],
+  os.environ["sbindir"], os.environ["base_sbindir"] }
+ptest_bindir = d.getVar("PTEST_BINDIR_PKGD_PATH")
+os.mkdir(ptest_bindir)
+for pkg in (d.getVar('PACKAGES') or "").split():
+alternatives = update_alternatives_alt_targets(d, pkg)
+for alt_name, alt_link, alt_target, _ in alternatives:
+# Some alternatives are for man pages,
+# check if the alternative is in PATH
+if os.path.dirname(alt_link) in bin_paths:
+os.symlink(alt_target, os.path.join(ptest_bindir, alt_name))
+}
+
 do_configure_ptest_base[dirs] = "${B}"
 do_compile_ptest_base[dirs] = "${B}"
 do_install_ptest_base[dirs] = "${B}"
-- 
2.19.2

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH 00/16] thud-next patch review

2019-04-07 Thread Armin Kuster
There are the commit I intend on sending a pull request for in two days. 
Tuesday my timezone (IST)

Please provide feedback by then if there are any issues. This is mostly OEQA 
changes. They have been througt the AB a-full and passed.

The following changes since commit 45032e30be70503faeee468159b216031b729309:

  build-appliance-image: Update to thud head revision (2019-03-27 23:22:49 
+)

are available in the git repository at:

  git://git.openembedded.org/openembedded-core-contrib stable/thud-nmut
  http://cgit.openembedded.org//log/?h=stable/thud-nmut

Armin Kuster (1):
  Revert "boost: update to 1.69.0"

Chen Qi (1):
  pkgdata.py: avoid target-sdk-dummy-provides to mess things up

Mazliana (1):
  oeqa/manual/bsp-hw.json: add non-IA tests

Richard Purdie (2):
  resulttool: Allow store to work on single files
  resulttool: Allow extraction of ptest data

Sudhir Sharma (1):
  oeqa/manual: Add manual runtime 'compliance' testcases to json

Yeoh Ee Peng (6):
  oeqa/manual/toaster: transfer manual toaster test cases to oeqa
  oeqa/manual/toaster: updated test id naming
  resulttool/manualexecution: Standardize input check
  resulttool/manualexecution: Enable display full steps without press
enter
  resulttool/manualexecution: Fixed step sorted by integer
  resulttool/manualexecution: Refactor and simplify codebase

sangeeta jain (4):
  oeqa/manual/sdk.json: Updated toolchain tarball to core-image-sato
  oeqa/manual/bsp-hw.json: test id updated and obsolete test cases
removed
  oeqa/manual/compliance-test.json: test id updated and missing test
cases added
  oeqa/manual/kernel-dev.json: test id updated

 meta/lib/oeqa/manual/bsp-hw.json   |  264 +-
 meta/lib/oeqa/manual/compliance-test.json  |  194 ++
 meta/lib/oeqa/manual/kernel-dev.json   |   36 +-
 meta/lib/oeqa/manual/sdk.json  |   14 +-
 meta/lib/oeqa/manual/toaster-managed-mode.json | 2572 
 meta/lib/oeqa/manual/toaster-unmanaged-mode.json   | 1170 +
 meta/lib/oeqa/selftest/cases/pkgdata.py|1 +
 ...bjam-native_1.69.0.bb => bjam-native_1.68.0.bb} |0
 .../boost/{boost-1.69.0.inc => boost-1.68.0.inc}   |4 +-
 meta/recipes-support/boost/boost.inc   |1 +
 ...-arch-instruction-set-flags-we-do-that-o.patch} |   23 +-
 ...ucibility-add-file-directive-to-assembler.patch |  243 ++
 .../boost/{boost_1.69.0.bb => boost_1.68.0.bb} |6 +-
 scripts/lib/resulttool/manualexecution.py  |   61 +-
 scripts/lib/resulttool/resultutils.py  |   39 +-
 scripts/lib/resulttool/store.py|   23 +-
 16 files changed, 4467 insertions(+), 184 deletions(-)
 create mode 100644 meta/lib/oeqa/manual/compliance-test.json
 create mode 100644 meta/lib/oeqa/manual/toaster-managed-mode.json
 create mode 100644 meta/lib/oeqa/manual/toaster-unmanaged-mode.json
 rename meta/recipes-support/boost/{bjam-native_1.69.0.bb => 
bjam-native_1.68.0.bb} (100%)
 rename meta/recipes-support/boost/{boost-1.69.0.inc => boost-1.68.0.inc} (85%)
 rename 
meta/recipes-support/boost/boost/{0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch
 => 0003-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch} (93%)
 create mode 100644 
meta/recipes-support/boost/boost/reproducibility-add-file-directive-to-assembler.patch
 rename meta/recipes-support/boost/{boost_1.69.0.bb => boost_1.68.0.bb} (56%)

-- 
2.7.4

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core