Openembedded Core Discussions
 help / color / mirror / Atom feed
* [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function
@ 2013-07-06 23:13 Martin Jansa
  2013-07-06 23:13 ` [RFC][PATCH 2/4] package.bbclass: show warning when package is trying to provide already provided shlib Martin Jansa
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Martin Jansa @ 2013-07-06 23:13 UTC (permalink / raw)
  To: openembedded-core

* prepare for reading shlibs providers only from dependency tree of
  current recipe

[YOCTO #4628]

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 meta/classes/package.bbclass | 43 +++++++++++++++++++++++--------------------
 1 file changed, 23 insertions(+), 20 deletions(-)

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 5c2d1c6..d80535d 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1337,6 +1337,28 @@ python package_do_shlibs() {
     # Take shared lock since we're only reading, not writing
     lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"))
 
+    def read_shlib_providers:
+        list_re = re.compile('^(.*)\.list$')
+        # Go from least to most specific since the last one found wins
+        for dir in reversed(shlibs_dirs):
+            if not os.path.exists(dir):
+                continue
+            for file in os.listdir(dir):
+                m = list_re.match(file)
+                if m:
+                    dep_pkg = m.group(1)
+                    fd = open(os.path.join(dir, file))
+                    lines = fd.readlines()
+                    fd.close()
+                    ver_file = os.path.join(dir, dep_pkg + '.ver')
+                    lib_ver = None
+                    if os.path.exists(ver_file):
+                        fd = open(ver_file)
+                        lib_ver = fd.readline().rstrip()
+                        fd.close()
+                    for l in lines:
+                        shlib_provider[l.rstrip()] = (dep_pkg, lib_ver)
+
     def linux_so(file):
         needs_ldconfig = False
         cmd = d.getVar('OBJDUMP', True) + " -p " + pipes.quote(file) + " 2>/dev/null"
@@ -1479,26 +1501,7 @@ python package_do_shlibs() {
             postinst += d.getVar('ldconfig_postinst_fragment', True)
             d.setVar('pkg_postinst_%s' % pkg, postinst)
 
-    list_re = re.compile('^(.*)\.list$')
-    # Go from least to most specific since the last one found wins
-    for dir in reversed(shlibs_dirs):
-        if not os.path.exists(dir):
-            continue
-        for file in os.listdir(dir):
-            m = list_re.match(file)
-            if m:
-                dep_pkg = m.group(1)
-                fd = open(os.path.join(dir, file))
-                lines = fd.readlines()
-                fd.close()
-                ver_file = os.path.join(dir, dep_pkg + '.ver')
-                lib_ver = None
-                if os.path.exists(ver_file):
-                    fd = open(ver_file)
-                    lib_ver = fd.readline().rstrip()
-                    fd.close()
-                for l in lines:
-                    shlib_provider[l.rstrip()] = (dep_pkg, lib_ver)
+    read_shlib_providers()
 
     bb.utils.unlockfile(lf)
 
-- 
1.8.2.1



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

* [RFC][PATCH 2/4] package.bbclass: show warning when package is trying to provide already provided shlib
  2013-07-06 23:13 [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function Martin Jansa
@ 2013-07-06 23:13 ` Martin Jansa
  2013-07-10 11:51   ` Martin Jansa
  2013-07-06 23:13 ` [RFC][PATCH 3/4] package.bbclass: add SHLIBSSEARCHDIRS to define where to search for shlib providers Martin Jansa
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ messages in thread
From: Martin Jansa @ 2013-07-06 23:13 UTC (permalink / raw)
  To: openembedded-core

* move read_shlib_providers before registering package as provider
  and don't change provider if it already exists, show warning instead

[YOCTO #4628]

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 meta/classes/package.bbclass | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index d80535d..6c3ca56 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1341,6 +1341,7 @@ python package_do_shlibs() {
         list_re = re.compile('^(.*)\.list$')
         # Go from least to most specific since the last one found wins
         for dir in reversed(shlibs_dirs):
+            bb.debug(2, "Reading shlib providers in %s" % (dir))
             if not os.path.exists(dir):
                 continue
             for file in os.listdir(dir):
@@ -1456,6 +1457,8 @@ python package_do_shlibs() {
 
     needed = {}
     shlib_provider = {}
+    read_shlib_providers()
+
     for pkg in packages.split():
         private_libs = d.getVar('PRIVATE_LIBS_' + pkg, True) or d.getVar('PRIVATE_LIBS', True)
         needs_ldconfig = False
@@ -1487,6 +1490,12 @@ python package_do_shlibs() {
         if len(sonames):
             fd = open(shlibs_file, 'w')
             for s in sonames:
+                if s in shlib_provider:
+                    (old_pkg, old_pkgver) = shlib_provider[s]
+                    if old_pkg != pkg:
+                        bb.warn('%s-%s is already registered as shlib provider for %s, ignoring %s-%s trying to register the same' % (old_pkg, old_pkgver, s, pkg, pkgver))
+                        continue
+                bb.debug(1, 'registering %s-%s as shlib provider for %s' % (pkg, pkgver, s))
                 fd.write(s + '\n')
                 shlib_provider[s] = (pkg, pkgver)
             fd.close()
@@ -1501,8 +1510,6 @@ python package_do_shlibs() {
             postinst += d.getVar('ldconfig_postinst_fragment', True)
             d.setVar('pkg_postinst_%s' % pkg, postinst)
 
-    read_shlib_providers()
-
     bb.utils.unlockfile(lf)
 
     assumed_libs = d.getVar('ASSUME_SHLIBS', True)
-- 
1.8.2.1



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

* [RFC][PATCH 3/4] package.bbclass: add SHLIBSSEARCHDIRS to define where to search for shlib providers
  2013-07-06 23:13 [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function Martin Jansa
  2013-07-06 23:13 ` [RFC][PATCH 2/4] package.bbclass: show warning when package is trying to provide already provided shlib Martin Jansa
@ 2013-07-06 23:13 ` Martin Jansa
  2013-09-02 11:22   ` Richard Purdie
  2013-07-06 23:13 ` [RFC][PATCH 4/4] WIP: package.bbclass: add some pseudo-code to filter shlibs providers based on dependencies Martin Jansa
  2013-08-28  8:33 ` [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function Martin Jansa
  3 siblings, 1 reply; 11+ messages in thread
From: Martin Jansa @ 2013-07-06 23:13 UTC (permalink / raw)
  To: openembedded-core

* when package contains some files matching "^.*\.so", but in directory
  not default linker search paths (e.g. /opt/package/bundled-lib/libfoo.so)
  don't register it as libfoo provider, because it's possible that there
  is different package providing libfoo.so in ${libdir} and that would
  be better shlib provider for other packages to depend on
* recipes providing libs intentionally in some other directory can
  define own SHLIBSSEARCHDIRS value

[YOCTO #4628]

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 meta/classes/package.bbclass | 26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 6c3ca56..3713fd3 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1307,6 +1307,9 @@ SHLIBSDIRS = "${@getshlibsdirs(d)}"
 SHLIBSDIR = "${TMPDIR}/pkgdata/${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/shlibs"
 SHLIBSWORKDIR = "${PKGDESTWORK}/shlibs"
 
+# default search path when searching for shlibs provided by package
+SHLIBSSEARCHDIRS ?= "${baselib} ${libdir}"
+
 python package_do_shlibs() {
     import re, pipes
 
@@ -1317,6 +1320,20 @@ python package_do_shlibs() {
 
     lib_re = re.compile("^.*\.so")
     libdir_re = re.compile(".*/%s$" % d.getVar('baselib', True))
+    
+    shlibs_search_dirs = d.getVar('SHLIBSSEARCHDIRS', True)
+    shlibs_search_dirs_re_txt = ""
+    for dir in shlibs_search_dirs.split(' '):
+        # strip leading and trailing slash, it's added in regexp
+        if dir.endswith("/"):
+            dir = dir[:-1]
+        if dir.startswith("/"):
+            dir = dir[1:]
+        if shlibs_search_dirs_re_txt:
+            shlibs_search_dirs_re_txt += "|"
+        shlibs_search_dirs_re_txt += "(^.*/%s/.*$)" % dir
+    shlibs_search_dirs_re = re.compile(shlibs_search_dirs_re_txt)
+    bb.debug(2, "will use following RE to search for provides sonames %s" % shlibs_search_dirs_re_txt)
 
     packages = d.getVar('PACKAGES', True)
     targetos = d.getVar('TARGET_OS', True)
@@ -1375,9 +1392,12 @@ python package_do_shlibs() {
             if m:
                 this_soname = m.group(1)
                 if not this_soname in sonames:
-                    # if library is private (only used by package) then do not build shlib for it
-                    if not private_libs or -1 == private_libs.find(this_soname):
-                        sonames.append(this_soname)
+                    if shlibs_search_dirs_re.match(file):
+                        # if library is private (only used by package) then do not build shlib for it
+                        if not private_libs or -1 == private_libs.find(this_soname):
+                            sonames.append(this_soname)
+                    else:
+                        bb.debug(2, "ignoring soname %s from %s, because path doesn't match %s" % (this_soname, file, shlibs_search_dirs_re_txt))
                 if libdir_re.match(os.path.dirname(file)):
                     needs_ldconfig = True
                 if snap_symlinks and (os.path.basename(file) != this_soname):
-- 
1.8.2.1



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

* [RFC][PATCH 4/4] WIP: package.bbclass: add some pseudo-code to filter shlibs providers based on dependencies
  2013-07-06 23:13 [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function Martin Jansa
  2013-07-06 23:13 ` [RFC][PATCH 2/4] package.bbclass: show warning when package is trying to provide already provided shlib Martin Jansa
  2013-07-06 23:13 ` [RFC][PATCH 3/4] package.bbclass: add SHLIBSSEARCHDIRS to define where to search for shlib providers Martin Jansa
@ 2013-07-06 23:13 ` Martin Jansa
  2013-08-28  8:33 ` [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function Martin Jansa
  3 siblings, 0 replies; 11+ messages in thread
From: Martin Jansa @ 2013-07-06 23:13 UTC (permalink / raw)
  To: openembedded-core

* when library/binary in package foo created by recipe foo.bb is linked
  with library libabc.so provided by package libabc created by recipe libabc.bb
  doesn't record foo -> libabc dependency if recipe foo doesn't depend
  on libabc
* this should prevent non-deterministic shlibs providers when libabc
  metadata are changed or libabc doesn't exist anymore and foo package
  in sstate-cache still has libabc dependency. foo isn't rebuilt
  because it doesn't depend on libabc so stamps are still valid

[YOCTO #4628]

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 meta/classes/package.bbclass | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 3713fd3..72d5f43 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1354,6 +1354,25 @@ python package_do_shlibs() {
     # Take shared lock since we're only reading, not writing
     lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"))
 
+    # WIP: this is more like pseudo-code of what I would like to do if possible
+    # Should return list of packages created by recipes which have their do_package task
+    # in dependency_tree of pn.do_package
+    def get_packages_from_dependency_tree(pn):
+        deps = get_recipes_dependent_on_from_task(pn, "do_package", "do_package")
+        return get_package_list(deps)
+
+    # WIP: this is more like pseudo-code of what I would like to do if possible
+    # Walks dependency tree of pn.task and returns list of pn acumulated from pn.task_dep found there
+    def get_dependency_tree(pn, task, task_dep):
+        # this doesn't include transitive dependencies or check for 'task' name
+        deps = d.getVar('DEPENDS', True)
+        return deps
+
+    # WIP: this is more like pseudo-code of what I would like to do if possible
+    # Reads pkgdata and return list of packages created by pn
+    def get_package_list(pn_list):
+        return pn_list
+        
     def read_shlib_providers:
         list_re = re.compile('^(.*)\.list$')
         # Go from least to most specific since the last one found wins
@@ -1547,6 +1566,8 @@ python package_do_shlibs() {
         bb.debug(2, "calculating shlib requirements for %s" % pkg)
 
         deps = list()
+        pn = d.getVar('PN', True)
+        allowed_deps = get_packages_from_dependency_tree(pn)
         for n in needed[pkg]:
             if n in shlib_provider.keys():
                 (dep_pkg, ver_needed) = shlib_provider[n]
@@ -1556,6 +1577,10 @@ python package_do_shlibs() {
                 if dep_pkg == pkg:
                     continue
 
+                if dep_pkg not in allowed_deps:
+                    bb.warn("Skipping dependency on %s - shared library provider for %s, because %s doesn't have any dependency on it" % (dep_pkg, n, pn))
+                    continue
+
                 if ver_needed:
                     dep = "%s (>= %s)" % (dep_pkg, ver_needed)
                 else:
-- 
1.8.2.1



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

* Re: [RFC][PATCH 2/4] package.bbclass: show warning when package is trying to provide already provided shlib
  2013-07-06 23:13 ` [RFC][PATCH 2/4] package.bbclass: show warning when package is trying to provide already provided shlib Martin Jansa
@ 2013-07-10 11:51   ` Martin Jansa
  0 siblings, 0 replies; 11+ messages in thread
From: Martin Jansa @ 2013-07-10 11:51 UTC (permalink / raw)
  To: openembedded-core

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

On Sun, Jul 07, 2013 at 01:13:05AM +0200, Martin Jansa wrote:
> * move read_shlib_providers before registering package as provider
>   and don't change provider if it already exists, show warning instead
> 
> [YOCTO #4628]
> 
> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

List of WARNINGs about multiple providers for the same shlib from world
build follows:

I'll take care of meta-efl recipes where modules.so is always installed
in separate directory and shouldn't be included in shlibs providers at
all.

WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-engine-gl-x11-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-engine-software-16-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-engine-software-16-x11-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-engine-software-x11-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-engine-wayland-shm-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-bmp-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-eet-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-ico-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-jpeg-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-pmaps-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-png-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-psd-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-tga-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-tiff-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-wbmp-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-cserve2-xpm-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-bmp-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-generic-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-gif-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-ico-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-jpeg-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-pmaps-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-png-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-psd-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-tga-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-tiff-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-wbmp-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-loader-xpm-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-saver-jpeg-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-saver-png-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring evas-saver-tiff-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring emotion-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring elementary-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring elementary-tests-1.7.7 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring elementary-accessibility-1.7.7 trying to register the same
WARNING: gtk-immodule-am-et-2.24.18 is already registered as shlib provider for im-am-et.so, ignoring gtk3-immodule-am-et-3.8.2 trying to register the same
WARNING: gtk-immodule-cedilla-2.24.18 is already registered as shlib provider for im-cedilla.so, ignoring gtk3-immodule-cedilla-3.8.2 trying to register the same
WARNING: gtk-immodule-cyrillic-translit-2.24.18 is already registered as shlib provider for im-cyrillic-translit.so, ignoring gtk3-immodule-cyrillic-translit-3.8.2 trying to register the same
WARNING: gtk-immodule-inuktitut-2.24.18 is already registered as shlib provider for im-inuktitut.so, ignoring gtk3-immodule-inuktitut-3.8.2 trying to register the same
WARNING: gtk-immodule-ipa-2.24.18 is already registered as shlib provider for im-ipa.so, ignoring gtk3-immodule-ipa-3.8.2 trying to register the same
WARNING: gtk-immodule-multipress-2.24.18 is already registered as shlib provider for im-multipress.so, ignoring gtk3-immodule-multipress-3.8.2 trying to register the same
WARNING: gtk-immodule-thai-2.24.18 is already registered as shlib provider for im-thai.so, ignoring gtk3-immodule-thai-3.8.2 trying to register the same
WARNING: gtk-immodule-ti-er-2.24.18 is already registered as shlib provider for im-ti-er.so, ignoring gtk3-immodule-ti-er-3.8.2 trying to register the same
WARNING: gtk-immodule-ti-et-2.24.18 is already registered as shlib provider for im-ti-et.so, ignoring gtk3-immodule-ti-et-3.8.2 trying to register the same
WARNING: gtk-immodule-viqr-2.24.18 is already registered as shlib provider for im-viqr.so, ignoring gtk3-immodule-viqr-3.8.2 trying to register the same
WARNING: gtk-immodule-xim-2.24.18 is already registered as shlib provider for im-xim.so, ignoring gtk3-immodule-xim-3.8.2 trying to register the same
WARNING: gtk-printbackend-file-2.24.18 is already registered as shlib provider for libprintbackend-file.so, ignoring gtk3-printbackend-file-3.8.2 trying to register the same
WARNING: gtk-printbackend-lpr-2.24.18 is already registered as shlib provider for libprintbackend-lpr.so, ignoring gtk3-printbackend-lpr-3.8.2 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring e-wm-0.17.3 trying to register the same
WARNING: gstreamer-0.10.36 is already registered as shlib provider for libgstcoreelements.so, ignoring gstreamer1.0-1.0.7 trying to register the same
WARNING: xfce4-panel-plugin-launcher-4.10.1 is already registered as shlib provider for liblauncher.so, ignoring matchbox-panel-2-2.0+git3+26a3a67b41 trying to register the same
WARNING: xfce4-panel-plugin-systray-4.10.1 is already registered as shlib provider for libsystray.so, ignoring matchbox-panel-2-2.0+git3+26a3a67b41 trying to register the same
WARNING: xfce4-panel-plugin-clock-4.10.1 is already registered as shlib provider for libclock.so, ignoring matchbox-panel-2-2.0+git3+26a3a67b41 trying to register the same
WARNING: xfce4-panel-plugin-showdesktop-4.10.1 is already registered as shlib provider for libshowdesktop.so, ignoring matchbox-panel-2-2.0+git3+26a3a67b41 trying to register the same
WARNING: gst-plugins-base-adder-0.10.36 is already registered as shlib provider for libgstadder.so, ignoring gstreamer1.0-plugins-base-adder-1.0.7 trying to register the same
WARNING: gst-plugins-base-alsa-0.10.36 is already registered as shlib provider for libgstalsa.so, ignoring gstreamer1.0-plugins-base-alsa-1.0.7 trying to register the same
WARNING: gst-plugins-base-app-0.10.36 is already registered as shlib provider for libgstapp.so, ignoring gstreamer1.0-plugins-base-app-1.0.7 trying to register the same
WARNING: gst-plugins-base-audioconvert-0.10.36 is already registered as shlib provider for libgstaudioconvert.so, ignoring gstreamer1.0-plugins-base-audioconvert-1.0.7 trying to register the same
WARNING: gst-plugins-base-audiorate-0.10.36 is already registered as shlib provider for libgstaudiorate.so, ignoring gstreamer1.0-plugins-base-audiorate-1.0.7 trying to register the same
WARNING: gst-plugins-base-audioresample-0.10.36 is already registered as shlib provider for libgstaudioresample.so, ignoring gstreamer1.0-plugins-base-audioresample-1.0.7 trying to register the same
WARNING: gst-plugins-base-audiotestsrc-0.10.36 is already registered as shlib provider for libgstaudiotestsrc.so, ignoring gstreamer1.0-plugins-base-audiotestsrc-1.0.7 trying to register the same
WARNING: gst-plugins-base-encodebin-0.10.36 is already registered as shlib provider for libgstencodebin.so, ignoring gstreamer1.0-plugins-base-encodebin-1.0.7 trying to register the same
WARNING: gst-plugins-base-gio-0.10.36 is already registered as shlib provider for libgstgio.so, ignoring gstreamer1.0-plugins-base-gio-1.0.7 trying to register the same
WARNING: gst-plugins-base-ivorbisdec-0.10.36 is already registered as shlib provider for libgstivorbisdec.so, ignoring gstreamer1.0-plugins-base-ivorbisdec-1.0.7 trying to register the same
WARNING: gst-plugins-base-ogg-0.10.36 is already registered as shlib provider for libgstogg.so, ignoring gstreamer1.0-plugins-base-ogg-1.0.7 trying to register the same
WARNING: gst-plugins-base-subparse-0.10.36 is already registered as shlib provider for libgstsubparse.so, ignoring gstreamer1.0-plugins-base-subparse-1.0.7 trying to register the same
WARNING: gst-plugins-base-tcp-0.10.36 is already registered as shlib provider for libgsttcp.so, ignoring gstreamer1.0-plugins-base-tcp-1.0.7 trying to register the same
WARNING: gst-plugins-base-theora-0.10.36 is already registered as shlib provider for libgsttheora.so, ignoring gstreamer1.0-plugins-base-theora-1.0.7 trying to register the same
WARNING: gst-plugins-base-typefindfunctions-0.10.36 is already registered as shlib provider for libgsttypefindfunctions.so, ignoring gstreamer1.0-plugins-base-typefindfunctions-1.0.7 trying to register the same
WARNING: gst-plugins-base-videorate-0.10.36 is already registered as shlib provider for libgstvideorate.so, ignoring gstreamer1.0-plugins-base-videorate-1.0.7 trying to register the same
WARNING: gst-plugins-base-videoscale-0.10.36 is already registered as shlib provider for libgstvideoscale.so, ignoring gstreamer1.0-plugins-base-videoscale-1.0.7 trying to register the same
WARNING: gst-plugins-base-videotestsrc-0.10.36 is already registered as shlib provider for libgstvideotestsrc.so, ignoring gstreamer1.0-plugins-base-videotestsrc-1.0.7 trying to register the same
WARNING: gst-plugins-base-volume-0.10.36 is already registered as shlib provider for libgstvolume.so, ignoring gstreamer1.0-plugins-base-volume-1.0.7 trying to register the same
WARNING: gst-plugins-base-vorbis-0.10.36 is already registered as shlib provider for libgstvorbis.so, ignoring gstreamer1.0-plugins-base-vorbis-1.0.7 trying to register the same
WARNING: gst-plugins-base-ximagesink-0.10.36 is already registered as shlib provider for libgstximagesink.so, ignoring gstreamer1.0-plugins-base-ximagesink-1.0.7 trying to register the same
WARNING: gst-plugins-base-xvimagesink-0.10.36 is already registered as shlib provider for libgstxvimagesink.so, ignoring gstreamer1.0-plugins-base-xvimagesink-1.0.7 trying to register the same
WARNING: firefox-10.0.11esr is already registered as shlib provider for libnss3.so, ignoring nss-3.13.3 trying to register the same
WARNING: firefox-10.0.11esr is already registered as shlib provider for libfreebl3.so, ignoring nss-3.13.3 trying to register the same
WARNING: firefox-10.0.11esr is already registered as shlib provider for libnssutil3.so, ignoring nss-3.13.3 trying to register the same
WARNING: firefox-10.0.11esr is already registered as shlib provider for libsmime3.so, ignoring nss-3.13.3 trying to register the same
WARNING: firefox-10.0.11esr is already registered as shlib provider for libnssckbi.so, ignoring nss-3.13.3 trying to register the same
WARNING: firefox-10.0.11esr is already registered as shlib provider for libnssdbm3.so, ignoring nss-3.13.3 trying to register the same
WARNING: firefox-10.0.11esr is already registered as shlib provider for libsoftokn3.so, ignoring nss-3.13.3 trying to register the same
WARNING: firefox-10.0.11esr is already registered as shlib provider for libssl3.so, ignoring nss-3.13.3 trying to register the same
WARNING: imlib2-loaders-1.4.5+svnr82070 is already registered as shlib provider for png.so, ignoring lightmediascanner-0.4.4 trying to register the same
WARNING: imlib2-loaders-1.4.5+svnr82070 is already registered as shlib provider for jpeg.so, ignoring lightmediascanner-0.4.4 trying to register the same
WARNING: imlib2-loaders-1.4.5+svnr82070 is already registered as shlib provider for id3.so, ignoring lightmediascanner-0.4.4 trying to register the same
WARNING: python-gst-0.10.22 is already registered as shlib provider for audio.so, ignoring fsodeviced-0.12.0 trying to register the same
WARNING: fsoaudiod-0.12.0 is already registered as shlib provider for router_alsa.so, ignoring fsodeviced-0.12.0 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring elfe-0.0.1+svnr82070 trying to register the same
WARNING: fsousaged-0.12.0 is already registered as shlib provider for lowlevel_openmoko.so, ignoring fsogsmd-module-lowlevel-openmoko-0.12.0 trying to register the same
WARNING: fsousaged-0.12.0 is already registered as shlib provider for dbus_service.so, ignoring fsogsmd-0.12.0 trying to register the same
WARNING: gtk-xfce-engine-3.0.1 is already registered as shlib provider for libxfce.so, ignoring gtk3-xfce-engine-3.0.1 trying to register the same
WARNING: xfce4-session-4.10.1 is already registered as shlib provider for libsimple.so, ignoring libpurple-protocol-simple-2.7.9 trying to register the same
WARNING: apache2-2.4.4 is already registered as shlib provider for mod_alias.so, ignoring lighttpd-module-alias-1.4.32 trying to register the same
WARNING: apache2-2.4.4 is already registered as shlib provider for mod_proxy.so, ignoring lighttpd-module-proxy-1.4.32 trying to register the same
WARNING: apache2-2.4.4 is already registered as shlib provider for mod_rewrite.so, ignoring lighttpd-module-rewrite-1.4.32 trying to register the same
WARNING: apache2-2.4.4 is already registered as shlib provider for mod_status.so, ignoring lighttpd-module-status-1.4.32 trying to register the same
WARNING: apache2-2.4.4 is already registered as shlib provider for mod_userdir.so, ignoring lighttpd-module-userdir-1.4.32 trying to register the same
WARNING: matchbox-keyboard-applet-0.0+git1+b38f24036c is already registered as shlib provider for libkeyboard.so, ignoring gnome-settings-daemon-2.32.1 trying to register the same
WARNING: gnome-vfs-plugin-http-2.24.4 is already registered as shlib provider for libhttp.so, ignoring qmmp-plugin-transports-http-0.6.6 trying to register the same
WARNING: matchbox-panel-2-2.0+git3+26a3a67b41 is already registered as shlib provider for libbattery.so, ignoring xfce4-battery-plugin-1.0.5 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring shr-e-gadgets-0.0.0+gitr1+27b6c17d73 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring cpu-0.0.1+svnr82070 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring places-0.1.0+svnr82070 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring forecasts-0.2.0+svnr82070 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring uptime-0.0.2+svnr82070 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring screenshot-0.3.0+svnr82070 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring exalt-client-0.0.1+svnr82070 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring diskio-0.0.1+svnr82070 trying to register the same
WARNING: libgphoto2-camlibs-2.4.11 is already registered as shlib provider for serial.so, ignoring libfreerdp-plugin-serial-gitr1+f311acaffb trying to register the same
WARNING: libgphoto2-camlibs-2.4.11 is already registered as shlib provider for disk.so, ignoring libfreerdp-plugin-disk-gitr1+f311acaffb trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring rain-0.0.3+svnr82070 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring news-0.1.0+svnr82070 trying to register the same
WARNING: evas-engine-fb-1.7.7 is already registered as shlib provider for module.so, ignoring flame-0.0.3+svnr82070 trying to register the same
WARNING: systemd-204 is already registered as shlib provider for libnss_myhostname.so.2, ignoring nss-myhostname-0.3 trying to register the same
WARNING: gst-plugins-bad-adpcmdec-0.10.23 is already registered as shlib provider for libgstadpcmdec.so, ignoring gstreamer1.0-plugins-bad-adpcmdec-1.0.7 trying to register the same
WARNING: gst-plugins-bad-adpcmenc-0.10.23 is already registered as shlib provider for libgstadpcmenc.so, ignoring gstreamer1.0-plugins-bad-adpcmenc-1.0.7 trying to register the same
WARNING: gst-plugins-bad-asfmux-0.10.23 is already registered as shlib provider for libgstasfmux.so, ignoring gstreamer1.0-plugins-bad-asfmux-1.0.7 trying to register the same
WARNING: gst-plugins-bad-audiovisualizers-0.10.23 is already registered as shlib provider for libgstaudiovisualizers.so, ignoring gstreamer1.0-plugins-bad-audiovisualizers-1.0.7 trying to register the same
WARNING: gst-plugins-bad-autoconvert-0.10.23 is already registered as shlib provider for libgstautoconvert.so, ignoring gstreamer1.0-plugins-bad-autoconvert-1.0.7 trying to register the same
WARNING: gst-plugins-bad-bayer-0.10.23 is already registered as shlib provider for libgstbayer.so, ignoring gstreamer1.0-plugins-bad-bayer-1.0.7 trying to register the same
WARNING: gst-plugins-bad-bz2-0.10.23 is already registered as shlib provider for libgstbz2.so, ignoring gstreamer1.0-plugins-bad-bz2-1.0.7 trying to register the same
WARNING: gst-plugins-bad-camerabin2-0.10.23 is already registered as shlib provider for libgstcamerabin2.so, ignoring gstreamer1.0-plugins-bad-camerabin2-1.0.7 trying to register the same
WARNING: gst-plugins-bad-coloreffects-0.10.23 is already registered as shlib provider for libgstcoloreffects.so, ignoring gstreamer1.0-plugins-bad-coloreffects-1.0.7 trying to register the same
WARNING: gst-plugins-bad-curl-0.10.23 is already registered as shlib provider for libgstcurl.so, ignoring gstreamer1.0-plugins-bad-curl-1.0.7 trying to register the same
WARNING: gst-plugins-bad-dataurisrc-0.10.23 is already registered as shlib provider for libgstdataurisrc.so, ignoring gstreamer1.0-plugins-bad-dataurisrc-1.0.7 trying to register the same
WARNING: gst-plugins-bad-debugutilsbad-0.10.23 is already registered as shlib provider for libgstdebugutilsbad.so, ignoring gstreamer1.0-plugins-bad-debugutilsbad-1.0.7 trying to register the same
WARNING: gst-plugins-bad-dtmf-0.10.23 is already registered as shlib provider for libgstdtmf.so, ignoring gstreamer1.0-plugins-bad-dtmf-1.0.7 trying to register the same
WARNING: gst-plugins-bad-dvb-0.10.23 is already registered as shlib provider for libgstdvb.so, ignoring gstreamer1.0-plugins-bad-dvb-1.0.7 trying to register the same
WARNING: gst-plugins-bad-dvbsuboverlay-0.10.23 is already registered as shlib provider for libgstdvbsuboverlay.so, ignoring gstreamer1.0-plugins-bad-dvbsuboverlay-1.0.7 trying to register the same
WARNING: gst-plugins-bad-dvdspu-0.10.23 is already registered as shlib provider for libgstdvdspu.so, ignoring gstreamer1.0-plugins-bad-dvdspu-1.0.7 trying to register the same
WARNING: gst-plugins-bad-festival-0.10.23 is already registered as shlib provider for libgstfestival.so, ignoring gstreamer1.0-plugins-bad-festival-1.0.7 trying to register the same
WARNING: gst-plugins-bad-fieldanalysis-0.10.23 is already registered as shlib provider for libgstfieldanalysis.so, ignoring gstreamer1.0-plugins-bad-fieldanalysis-1.0.7 trying to register the same
WARNING: gst-plugins-bad-fragmented-0.10.23 is already registered as shlib provider for libgstfragmented.so, ignoring gstreamer1.0-plugins-bad-fragmented-1.0.7 trying to register the same
WARNING: gst-plugins-bad-frei0r-0.10.23 is already registered as shlib provider for libgstfrei0r.so, ignoring gstreamer1.0-plugins-bad-frei0r-1.0.7 trying to register the same
WARNING: gst-plugins-bad-gaudieffects-0.10.23 is already registered as shlib provider for libgstgaudieffects.so, ignoring gstreamer1.0-plugins-bad-gaudieffects-1.0.7 trying to register the same
WARNING: gst-plugins-base-gdp-0.10.36 is already registered as shlib provider for libgstgdp.so, ignoring gstreamer1.0-plugins-bad-gdp-1.0.7 trying to register the same
WARNING: gst-plugins-bad-geometrictransform-0.10.23 is already registered as shlib provider for libgstgeometrictransform.so, ignoring gstreamer1.0-plugins-bad-geometrictransform-1.0.7 trying to register the same
WARNING: gst-plugins-bad-id3tag-0.10.23 is already registered as shlib provider for libgstid3tag.so, ignoring gstreamer1.0-plugins-bad-id3tag-1.0.7 trying to register the same
WARNING: gst-plugins-bad-inter-0.10.23 is already registered as shlib provider for libgstinter.so, ignoring gstreamer1.0-plugins-bad-inter-1.0.7 trying to register the same
WARNING: gst-plugins-bad-interlace-0.10.23 is already registered as shlib provider for libgstinterlace.so, ignoring gstreamer1.0-plugins-bad-interlace-1.0.7 trying to register the same
WARNING: gst-plugins-bad-jpegformat-0.10.23 is already registered as shlib provider for libgstjpegformat.so, ignoring gstreamer1.0-plugins-bad-jpegformat-1.0.7 trying to register the same
WARNING: gst-plugins-bad-liveadder-0.10.23 is already registered as shlib provider for libgstliveadder.so, ignoring gstreamer1.0-plugins-bad-liveadder-1.0.7 trying to register the same
WARNING: gst-plugins-bad-mpegpsmux-0.10.23 is already registered as shlib provider for libgstmpegpsmux.so, ignoring gstreamer1.0-plugins-bad-mpegpsmux-1.0.7 trying to register the same
WARNING: gst-plugins-bad-mpegtsdemux-0.10.23 is already registered as shlib provider for libgstmpegtsdemux.so, ignoring gstreamer1.0-plugins-bad-mpegtsdemux-1.0.7 trying to register the same
WARNING: gst-plugins-bad-mpegtsmux-0.10.23 is already registered as shlib provider for libgstmpegtsmux.so, ignoring gstreamer1.0-plugins-bad-mpegtsmux-1.0.7 trying to register the same
WARNING: gst-plugins-bad-pcapparse-0.10.23 is already registered as shlib provider for libgstpcapparse.so, ignoring gstreamer1.0-plugins-bad-pcapparse-1.0.7 trying to register the same
WARNING: gst-plugins-bad-pnm-0.10.23 is already registered as shlib provider for libgstpnm.so, ignoring gstreamer1.0-plugins-bad-pnm-1.0.7 trying to register the same
WARNING: gst-plugins-bad-rawparse-0.10.23 is already registered as shlib provider for libgstrawparse.so, ignoring gstreamer1.0-plugins-bad-rawparse-1.0.7 trying to register the same
WARNING: gst-plugins-bad-removesilence-0.10.23 is already registered as shlib provider for libgstremovesilence.so, ignoring gstreamer1.0-plugins-bad-removesilence-1.0.7 trying to register the same
WARNING: gst-plugins-bad-rtpmux-0.10.23 is already registered as shlib provider for libgstrtpmux.so, ignoring gstreamer1.0-plugins-bad-rtpmux-1.0.7 trying to register the same
WARNING: gst-plugins-bad-rtpvp8-0.10.23 is already registered as shlib provider for libgstrtpvp8.so, ignoring gstreamer1.0-plugins-bad-rtpvp8-1.0.7 trying to register the same
WARNING: gst-plugins-bad-scaletempoplugin-0.10.23 is already registered as shlib provider for libgstscaletempoplugin.so, ignoring gstreamer1.0-plugins-bad-scaletempoplugin-1.0.7 trying to register the same
WARNING: gst-plugins-bad-sdpelem-0.10.23 is already registered as shlib provider for libgstsdpelem.so, ignoring gstreamer1.0-plugins-bad-sdpelem-1.0.7 trying to register the same
WARNING: gst-plugins-bad-segmentclip-0.10.23 is already registered as shlib provider for libgstsegmentclip.so, ignoring gstreamer1.0-plugins-bad-segmentclip-1.0.7 trying to register the same
WARNING: gst-plugins-bad-shm-0.10.23 is already registered as shlib provider for libgstshm.so, ignoring gstreamer1.0-plugins-bad-shm-1.0.7 trying to register the same
WARNING: gst-plugins-bad-siren-0.10.23 is already registered as shlib provider for libgstsiren.so, ignoring gstreamer1.0-plugins-bad-siren-1.0.7 trying to register the same
WARNING: gst-plugins-bad-smooth-0.10.23 is already registered as shlib provider for libgstsmooth.so, ignoring gstreamer1.0-plugins-bad-smooth-1.0.7 trying to register the same
WARNING: gst-plugins-bad-speed-0.10.23 is already registered as shlib provider for libgstspeed.so, ignoring gstreamer1.0-plugins-bad-speed-1.0.7 trying to register the same
WARNING: gst-plugins-bad-subenc-0.10.23 is already registered as shlib provider for libgstsubenc.so, ignoring gstreamer1.0-plugins-bad-subenc-1.0.7 trying to register the same
WARNING: gst-plugins-bad-videoparsersbad-0.10.23 is already registered as shlib provider for libgstvideoparsersbad.so, ignoring gstreamer1.0-plugins-bad-videoparsersbad-1.0.7 trying to register the same
WARNING: gst-plugins-bad-y4mdec-0.10.23 is already registered as shlib provider for libgsty4mdec.so, ignoring gstreamer1.0-plugins-bad-y4mdec-1.0.7 trying to register the same
WARNING: gst-plugins-good-alaw-0.10.31 is already registered as shlib provider for libgstalaw.so, ignoring gstreamer1.0-plugins-good-alaw-1.0.7 trying to register the same
WARNING: gst-plugins-good-alpha-0.10.31 is already registered as shlib provider for libgstalpha.so, ignoring gstreamer1.0-plugins-good-alpha-1.0.7 trying to register the same
WARNING: gst-plugins-good-alphacolor-0.10.31 is already registered as shlib provider for libgstalphacolor.so, ignoring gstreamer1.0-plugins-good-alphacolor-1.0.7 trying to register the same
WARNING: gst-plugins-good-apetag-0.10.31 is already registered as shlib provider for libgstapetag.so, ignoring gstreamer1.0-plugins-good-apetag-1.0.7 trying to register the same
WARNING: gst-plugins-good-audiofx-0.10.31 is already registered as shlib provider for libgstaudiofx.so, ignoring gstreamer1.0-plugins-good-audiofx-1.0.7 trying to register the same
WARNING: gst-plugins-good-audioparsers-0.10.31 is already registered as shlib provider for libgstaudioparsers.so, ignoring gstreamer1.0-plugins-good-audioparsers-1.0.7 trying to register the same
WARNING: gst-plugins-good-auparse-0.10.31 is already registered as shlib provider for libgstauparse.so, ignoring gstreamer1.0-plugins-good-auparse-1.0.7 trying to register the same
WARNING: gst-plugins-good-autodetect-0.10.31 is already registered as shlib provider for libgstautodetect.so, ignoring gstreamer1.0-plugins-good-autodetect-1.0.7 trying to register the same
WARNING: gst-plugins-good-avi-0.10.31 is already registered as shlib provider for libgstavi.so, ignoring gstreamer1.0-plugins-good-avi-1.0.7 trying to register the same
WARNING: gst-plugins-good-cairo-0.10.31 is already registered as shlib provider for libgstcairo.so, ignoring gstreamer1.0-plugins-good-cairo-1.0.7 trying to register the same
WARNING: gst-plugins-good-cutter-0.10.31 is already registered as shlib provider for libgstcutter.so, ignoring gstreamer1.0-plugins-good-cutter-1.0.7 trying to register the same
WARNING: gst-plugins-good-debug-0.10.31 is already registered as shlib provider for libgstdebug.so, ignoring gstreamer1.0-plugins-good-debug-1.0.7 trying to register the same
WARNING: gst-plugins-good-deinterlace-0.10.31 is already registered as shlib provider for libgstdeinterlace.so, ignoring gstreamer1.0-plugins-good-deinterlace-1.0.7 trying to register the same
WARNING: gst-plugins-good-effectv-0.10.31 is already registered as shlib provider for libgsteffectv.so, ignoring gstreamer1.0-plugins-good-effectv-1.0.7 trying to register the same
WARNING: gst-plugins-good-equalizer-0.10.31 is already registered as shlib provider for libgstequalizer.so, ignoring gstreamer1.0-plugins-good-equalizer-1.0.7 trying to register the same
WARNING: gst-plugins-good-flac-0.10.31 is already registered as shlib provider for libgstflac.so, ignoring gstreamer1.0-plugins-good-flac-1.0.7 trying to register the same
WARNING: gst-plugins-good-flv-0.10.31 is already registered as shlib provider for libgstflv.so, ignoring gstreamer1.0-plugins-good-flv-1.0.7 trying to register the same
WARNING: gst-plugins-good-flxdec-0.10.31 is already registered as shlib provider for libgstflxdec.so, ignoring gstreamer1.0-plugins-good-flxdec-1.0.7 trying to register the same
WARNING: gst-plugins-good-gdkpixbuf-0.10.31 is already registered as shlib provider for libgstgdkpixbuf.so, ignoring gstreamer1.0-plugins-good-gdkpixbuf-1.0.7 trying to register the same
WARNING: gst-plugins-good-goom-0.10.31 is already registered as shlib provider for libgstgoom.so, ignoring gstreamer1.0-plugins-good-goom-1.0.7 trying to register the same
WARNING: gst-plugins-good-goom2k1-0.10.31 is already registered as shlib provider for libgstgoom2k1.so, ignoring gstreamer1.0-plugins-good-goom2k1-1.0.7 trying to register the same
WARNING: gst-plugins-good-icydemux-0.10.31 is already registered as shlib provider for libgsticydemux.so, ignoring gstreamer1.0-plugins-good-icydemux-1.0.7 trying to register the same
WARNING: gst-plugins-good-id3demux-0.10.31 is already registered as shlib provider for libgstid3demux.so, ignoring gstreamer1.0-plugins-good-id3demux-1.0.7 trying to register the same
WARNING: gst-plugins-good-imagefreeze-0.10.31 is already registered as shlib provider for libgstimagefreeze.so, ignoring gstreamer1.0-plugins-good-imagefreeze-1.0.7 trying to register the same
WARNING: gst-plugins-good-interleave-0.10.31 is already registered as shlib provider for libgstinterleave.so, ignoring gstreamer1.0-plugins-good-interleave-1.0.7 trying to register the same
WARNING: gst-plugins-good-isomp4-0.10.31 is already registered as shlib provider for libgstisomp4.so, ignoring gstreamer1.0-plugins-good-isomp4-1.0.7 trying to register the same
WARNING: gst-plugins-good-jpeg-0.10.31 is already registered as shlib provider for libgstjpeg.so, ignoring gstreamer1.0-plugins-good-jpeg-1.0.7 trying to register the same
WARNING: gst-plugins-good-level-0.10.31 is already registered as shlib provider for libgstlevel.so, ignoring gstreamer1.0-plugins-good-level-1.0.7 trying to register the same
WARNING: gst-plugins-good-matroska-0.10.31 is already registered as shlib provider for libgstmatroska.so, ignoring gstreamer1.0-plugins-good-matroska-1.0.7 trying to register the same
WARNING: gst-plugins-good-mulaw-0.10.31 is already registered as shlib provider for libgstmulaw.so, ignoring gstreamer1.0-plugins-good-mulaw-1.0.7 trying to register the same
WARNING: gst-plugins-good-multifile-0.10.31 is already registered as shlib provider for libgstmultifile.so, ignoring gstreamer1.0-plugins-good-multifile-1.0.7 trying to register the same
WARNING: gst-plugins-good-multipart-0.10.31 is already registered as shlib provider for libgstmultipart.so, ignoring gstreamer1.0-plugins-good-multipart-1.0.7 trying to register the same
WARNING: gst-plugins-good-navigationtest-0.10.31 is already registered as shlib provider for libgstnavigationtest.so, ignoring gstreamer1.0-plugins-good-navigationtest-1.0.7 trying to register the same
WARNING: gst-plugins-good-png-0.10.31 is already registered as shlib provider for libgstpng.so, ignoring gstreamer1.0-plugins-good-png-1.0.7 trying to register the same
WARNING: gst-plugins-good-pulse-0.10.31 is already registered as shlib provider for libgstpulse.so, ignoring gstreamer1.0-plugins-good-pulse-1.0.7 trying to register the same
WARNING: gst-plugins-good-replaygain-0.10.31 is already registered as shlib provider for libgstreplaygain.so, ignoring gstreamer1.0-plugins-good-replaygain-1.0.7 trying to register the same
WARNING: gst-plugins-good-rtp-0.10.31 is already registered as shlib provider for libgstrtp.so, ignoring gstreamer1.0-plugins-good-rtp-1.0.7 trying to register the same
WARNING: gst-plugins-good-rtpmanager-0.10.31 is already registered as shlib provider for libgstrtpmanager.so, ignoring gstreamer1.0-plugins-good-rtpmanager-1.0.7 trying to register the same
WARNING: gst-plugins-good-rtsp-0.10.31 is already registered as shlib provider for libgstrtsp.so, ignoring gstreamer1.0-plugins-good-rtsp-1.0.7 trying to register the same
WARNING: gst-plugins-good-shapewipe-0.10.31 is already registered as shlib provider for libgstshapewipe.so, ignoring gstreamer1.0-plugins-good-shapewipe-1.0.7 trying to register the same
WARNING: gst-plugins-good-smpte-0.10.31 is already registered as shlib provider for libgstsmpte.so, ignoring gstreamer1.0-plugins-good-smpte-1.0.7 trying to register the same
WARNING: gst-plugins-good-souphttpsrc-0.10.31 is already registered as shlib provider for libgstsouphttpsrc.so, ignoring gstreamer1.0-plugins-good-souphttpsrc-1.0.7 trying to register the same
WARNING: gst-plugins-good-spectrum-0.10.31 is already registered as shlib provider for libgstspectrum.so, ignoring gstreamer1.0-plugins-good-spectrum-1.0.7 trying to register the same
WARNING: gst-plugins-good-speex-0.10.31 is already registered as shlib provider for libgstspeex.so, ignoring gstreamer1.0-plugins-good-speex-1.0.7 trying to register the same
WARNING: gst-plugins-good-udp-0.10.31 is already registered as shlib provider for libgstudp.so, ignoring gstreamer1.0-plugins-good-udp-1.0.7 trying to register the same
WARNING: gst-plugins-good-video4linux2-0.10.31 is already registered as shlib provider for libgstvideo4linux2.so, ignoring gstreamer1.0-plugins-good-video4linux2-1.0.7 trying to register the same
WARNING: gst-plugins-good-videobox-0.10.31 is already registered as shlib provider for libgstvideobox.so, ignoring gstreamer1.0-plugins-good-videobox-1.0.7 trying to register the same
WARNING: gst-plugins-good-videocrop-0.10.31 is already registered as shlib provider for libgstvideocrop.so, ignoring gstreamer1.0-plugins-good-videocrop-1.0.7 trying to register the same
WARNING: gst-plugins-good-videofilter-0.10.31 is already registered as shlib provider for libgstvideofilter.so, ignoring gstreamer1.0-plugins-good-videofilter-1.0.7 trying to register the same
WARNING: gst-plugins-good-videomixer-0.10.31 is already registered as shlib provider for libgstvideomixer.so, ignoring gstreamer1.0-plugins-good-videomixer-1.0.7 trying to register the same
WARNING: gst-plugins-good-wavenc-0.10.31 is already registered as shlib provider for libgstwavenc.so, ignoring gstreamer1.0-plugins-good-wavenc-1.0.7 trying to register the same
WARNING: gst-plugins-good-wavparse-0.10.31 is already registered as shlib provider for libgstwavparse.so, ignoring gstreamer1.0-plugins-good-wavparse-1.0.7 trying to register the same
WARNING: gst-plugins-good-ximagesrc-0.10.31 is already registered as shlib provider for libgstximagesrc.so, ignoring gstreamer1.0-plugins-good-ximagesrc-1.0.7 trying to register the same
WARNING: gst-plugins-good-y4menc-0.10.31 is already registered as shlib provider for libgsty4menc.so, ignoring gstreamer1.0-plugins-good-y4menc-1.0.7 trying to register the same
WARNING: gst-plugins-ugly-a52dec-0.10.19 is already registered as shlib provider for libgsta52dec.so, ignoring gstreamer1.0-plugins-ugly-a52dec-1.0.7 trying to register the same
WARNING: gst-plugins-ugly-asf-0.10.19 is already registered as shlib provider for libgstasf.so, ignoring gstreamer1.0-plugins-ugly-asf-1.0.7 trying to register the same
WARNING: gst-plugins-ugly-lame-0.10.19 is already registered as shlib provider for libgstlame.so, ignoring gstreamer1.0-plugins-ugly-lame-1.0.7 trying to register the same
WARNING: gst-plugins-ugly-mad-0.10.19 is already registered as shlib provider for libgstmad.so, ignoring gstreamer1.0-plugins-ugly-mad-1.0.7 trying to register the same
WARNING: gst-plugins-ugly-mpeg2dec-0.10.19 is already registered as shlib provider for libgstmpeg2dec.so, ignoring gstreamer1.0-plugins-ugly-mpeg2dec-1.0.7 trying to register the same
WARNING: gst-plugins-ugly-rmdemux-0.10.19 is already registered as shlib provider for libgstrmdemux.so, ignoring gstreamer1.0-plugins-ugly-rmdemux-1.0.7 trying to register the same
WARNING: libgphoto2-camlibs-2.4.11 is already registered as shlib provider for serial.so, ignoring collectd-5.2.2 trying to register the same
WARNING: gegl-0.2.0 is already registered as shlib provider for load.so, ignoring collectd-5.2.2 trying to register the same
WARNING: libgphoto2-camlibs-2.4.11 is already registered as shlib provider for disk.so, ignoring collectd-5.2.2 trying to register the same
WARNING: gegl-0.2.0 is already registered as shlib provider for threshold.so, ignoring collectd-5.2.2 trying to register the same
WARNING: libfsotest-0.12.0 is already registered as shlib provider for plugin.so, ignoring gnumeric-1.12.0 trying to register the same
WARNING: fsodeviced-0.12.0 is already registered as shlib provider for kernel26_firmwareloader.so, ignoring fsosystemd-0.12.0 trying to register the same
WARNING: gst-openmax-0.10.1 is already registered as shlib provider for libgstomx.so, ignoring gstreamer1.0-omx-1.0.0 trying to register the same
-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

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

* Re: [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function
  2013-07-06 23:13 [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function Martin Jansa
                   ` (2 preceding siblings ...)
  2013-07-06 23:13 ` [RFC][PATCH 4/4] WIP: package.bbclass: add some pseudo-code to filter shlibs providers based on dependencies Martin Jansa
@ 2013-08-28  8:33 ` Martin Jansa
  2013-09-02 11:19   ` Richard Purdie
  2013-09-05 11:40   ` Richard Purdie
  3 siblings, 2 replies; 11+ messages in thread
From: Martin Jansa @ 2013-08-28  8:33 UTC (permalink / raw)
  To: openembedded-core

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

On Sun, Jul 07, 2013 at 01:13:04AM +0200, Martin Jansa wrote:
> * prepare for reading shlibs providers only from dependency tree of
>   current recipe
> 
> [YOCTO #4628]

Any comment on this patchset?

I'm using first 3 commits for some time in world builds and they helped
me to discover some unexpected shlib providers (and fix them by setting
PRIVATE_LIBS).

> 
> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> ---
>  meta/classes/package.bbclass | 43 +++++++++++++++++++++++--------------------
>  1 file changed, 23 insertions(+), 20 deletions(-)
> 
> diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
> index 5c2d1c6..d80535d 100644
> --- a/meta/classes/package.bbclass
> +++ b/meta/classes/package.bbclass
> @@ -1337,6 +1337,28 @@ python package_do_shlibs() {
>      # Take shared lock since we're only reading, not writing
>      lf = bb.utils.lockfile(d.expand("${PACKAGELOCK}"))
>  
> +    def read_shlib_providers:
> +        list_re = re.compile('^(.*)\.list$')
> +        # Go from least to most specific since the last one found wins
> +        for dir in reversed(shlibs_dirs):
> +            if not os.path.exists(dir):
> +                continue
> +            for file in os.listdir(dir):
> +                m = list_re.match(file)
> +                if m:
> +                    dep_pkg = m.group(1)
> +                    fd = open(os.path.join(dir, file))
> +                    lines = fd.readlines()
> +                    fd.close()
> +                    ver_file = os.path.join(dir, dep_pkg + '.ver')
> +                    lib_ver = None
> +                    if os.path.exists(ver_file):
> +                        fd = open(ver_file)
> +                        lib_ver = fd.readline().rstrip()
> +                        fd.close()
> +                    for l in lines:
> +                        shlib_provider[l.rstrip()] = (dep_pkg, lib_ver)
> +
>      def linux_so(file):
>          needs_ldconfig = False
>          cmd = d.getVar('OBJDUMP', True) + " -p " + pipes.quote(file) + " 2>/dev/null"
> @@ -1479,26 +1501,7 @@ python package_do_shlibs() {
>              postinst += d.getVar('ldconfig_postinst_fragment', True)
>              d.setVar('pkg_postinst_%s' % pkg, postinst)
>  
> -    list_re = re.compile('^(.*)\.list$')
> -    # Go from least to most specific since the last one found wins
> -    for dir in reversed(shlibs_dirs):
> -        if not os.path.exists(dir):
> -            continue
> -        for file in os.listdir(dir):
> -            m = list_re.match(file)
> -            if m:
> -                dep_pkg = m.group(1)
> -                fd = open(os.path.join(dir, file))
> -                lines = fd.readlines()
> -                fd.close()
> -                ver_file = os.path.join(dir, dep_pkg + '.ver')
> -                lib_ver = None
> -                if os.path.exists(ver_file):
> -                    fd = open(ver_file)
> -                    lib_ver = fd.readline().rstrip()
> -                    fd.close()
> -                for l in lines:
> -                    shlib_provider[l.rstrip()] = (dep_pkg, lib_ver)
> +    read_shlib_providers()
>  
>      bb.utils.unlockfile(lf)
>  
> -- 
> 1.8.2.1
> 

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

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

* Re: [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function
  2013-08-28  8:33 ` [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function Martin Jansa
@ 2013-09-02 11:19   ` Richard Purdie
  2013-09-05 11:40   ` Richard Purdie
  1 sibling, 0 replies; 11+ messages in thread
From: Richard Purdie @ 2013-09-02 11:19 UTC (permalink / raw)
  To: Martin Jansa; +Cc: openembedded-core

On Wed, 2013-08-28 at 10:33 +0200, Martin Jansa wrote:
> On Sun, Jul 07, 2013 at 01:13:04AM +0200, Martin Jansa wrote:
> > * prepare for reading shlibs providers only from dependency tree of
> >   current recipe
> > 
> > [YOCTO #4628]
> 
> Any comment on this patchset?
> 
> I'm using first 3 commits for some time in world builds and they helped
> me to discover some unexpected shlib providers (and fix them by setting
> PRIVATE_LIBS).

It was sent as an RFC and the last patch was incomplete so it dropped
off the radar :(.

If we remove the "continue" in 2/4 and maintain existing behaviour with
a warning, it would probably seem reasonable. I'll have a further look
at them.

Cheers,

Richard





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

* Re: [RFC][PATCH 3/4] package.bbclass: add SHLIBSSEARCHDIRS to define where to search for shlib providers
  2013-07-06 23:13 ` [RFC][PATCH 3/4] package.bbclass: add SHLIBSSEARCHDIRS to define where to search for shlib providers Martin Jansa
@ 2013-09-02 11:22   ` Richard Purdie
  2013-09-02 11:27     ` Martin Jansa
  0 siblings, 1 reply; 11+ messages in thread
From: Richard Purdie @ 2013-09-02 11:22 UTC (permalink / raw)
  To: Martin Jansa; +Cc: openembedded-core

On Sun, 2013-07-07 at 01:13 +0200, Martin Jansa wrote:
> * when package contains some files matching "^.*\.so", but in directory
>   not default linker search paths (e.g. /opt/package/bundled-lib/libfoo.so)
>   don't register it as libfoo provider, because it's possible that there
>   is different package providing libfoo.so in ${libdir} and that would
>   be better shlib provider for other packages to depend on
> * recipes providing libs intentionally in some other directory can
>   define own SHLIBSSEARCHDIRS value
> 
> [YOCTO #4628]
> 
> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> ---
>  meta/classes/package.bbclass | 26 +++++++++++++++++++++++---
>  1 file changed, 23 insertions(+), 3 deletions(-)
> 
> diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
> index 6c3ca56..3713fd3 100644
> --- a/meta/classes/package.bbclass
> +++ b/meta/classes/package.bbclass
> @@ -1307,6 +1307,9 @@ SHLIBSDIRS = "${@getshlibsdirs(d)}"
>  SHLIBSDIR = "${TMPDIR}/pkgdata/${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/shlibs"
>  SHLIBSWORKDIR = "${PKGDESTWORK}/shlibs"
>  
> +# default search path when searching for shlibs provided by package
> +SHLIBSSEARCHDIRS ?= "${baselib} ${libdir}"
> +
>  python package_do_shlibs() {
>      import re, pipes

Did you end up setting SHLIBSSEARCHDIRS for many recipes out of
interest?

Cheers,

Richard



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

* Re: [RFC][PATCH 3/4] package.bbclass: add SHLIBSSEARCHDIRS to define where to search for shlib providers
  2013-09-02 11:22   ` Richard Purdie
@ 2013-09-02 11:27     ` Martin Jansa
  0 siblings, 0 replies; 11+ messages in thread
From: Martin Jansa @ 2013-09-02 11:27 UTC (permalink / raw)
  To: Richard Purdie; +Cc: openembedded-core

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

On Mon, Sep 02, 2013 at 12:22:18PM +0100, Richard Purdie wrote:
> On Sun, 2013-07-07 at 01:13 +0200, Martin Jansa wrote:
> > * when package contains some files matching "^.*\.so", but in directory
> >   not default linker search paths (e.g. /opt/package/bundled-lib/libfoo.so)
> >   don't register it as libfoo provider, because it's possible that there
> >   is different package providing libfoo.so in ${libdir} and that would
> >   be better shlib provider for other packages to depend on
> > * recipes providing libs intentionally in some other directory can
> >   define own SHLIBSSEARCHDIRS value
> > 
> > [YOCTO #4628]
> > 
> > Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> > ---
> >  meta/classes/package.bbclass | 26 +++++++++++++++++++++++---
> >  1 file changed, 23 insertions(+), 3 deletions(-)
> > 
> > diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
> > index 6c3ca56..3713fd3 100644
> > --- a/meta/classes/package.bbclass
> > +++ b/meta/classes/package.bbclass
> > @@ -1307,6 +1307,9 @@ SHLIBSDIRS = "${@getshlibsdirs(d)}"
> >  SHLIBSDIR = "${TMPDIR}/pkgdata/${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/shlibs"
> >  SHLIBSWORKDIR = "${PKGDESTWORK}/shlibs"
> >  
> > +# default search path when searching for shlibs provided by package
> > +SHLIBSSEARCHDIRS ?= "${baselib} ${libdir}"
> > +
> >  python package_do_shlibs() {
> >      import re, pipes
> 
> Did you end up setting SHLIBSSEARCHDIRS for many recipes out of
> interest?

No, but I was testing it only with world builds which won't cause any
fatal error when something is missing in shlibs providers.

Maybe I should revert it in my build and compare runtime deps after
another build (I'll do this when jenkins server is free again).

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

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

* Re: [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function
  2013-08-28  8:33 ` [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function Martin Jansa
  2013-09-02 11:19   ` Richard Purdie
@ 2013-09-05 11:40   ` Richard Purdie
  2013-09-05 12:01     ` Martin Jansa
  1 sibling, 1 reply; 11+ messages in thread
From: Richard Purdie @ 2013-09-05 11:40 UTC (permalink / raw)
  To: Martin Jansa; +Cc: openembedded-core

On Wed, 2013-08-28 at 10:33 +0200, Martin Jansa wrote:
> On Sun, Jul 07, 2013 at 01:13:04AM +0200, Martin Jansa wrote:
> > * prepare for reading shlibs providers only from dependency tree of
> >   current recipe
> > 
> > [YOCTO #4628]
> 
> Any comment on this patchset?
> 
> I'm using first 3 commits for some time in world builds and they helped
> me to discover some unexpected shlib providers (and fix them by setting
> PRIVATE_LIBS).

I've run some tests with this and I do like the patches however there
are some issues. Some are minor and easily fixed, some are more
problematic but I'll try and list them:

* Patch 1/4 is missing a () from a funciton. Easily fixed, mentioned 
  for completeness
* In 2/4, I locally removed the continue from the "ignoring xxx" loop 
  since it doesn't make the build any more deterministic, its still a 
  race over which package builds first but it is a change in 
  behaviour. We may decide to change behaviour but that should be a 
  separate patch. Also need to update the message after the change.
* In 3/4, the regexp is not anchored. Libraries places in subdirs of 
  libdir should not match this code, neither should things in /foo/lib. 
  The tweaks below ensure the regexp matches the correct things and 
  avoids modules in ${libdir}/${PN}/. This is correct but gives another 
  problem I'll come back to.
* 4/4 isn't complete. Again I like the idea but we probably need help 
  from bitbake for it. Its the wrong point in the development cycle to 
  start thinking about it.

The problem in 3/4 is clear with something like gstreamer verses
gstreamer1.0. These install into ${libdir}/PN/ so they are safe well
behaved recipes but they trigger spurious warnings with the patch :(. We
can "fix" with:

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 569599c..5fc6cda 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1337,7 +1337,7 @@ python package_do_shlibs() {
             dir = dir[1:]
         if shlibs_search_dirs_re_txt:
             shlibs_search_dirs_re_txt += "|"
-        shlibs_search_dirs_re_txt += "(^.*/%s/.*$)" % dir
+        shlibs_search_dirs_re_txt += "(^/%s/[^/]*$)" % dir
     shlibs_search_dirs_re = re.compile(shlibs_search_dirs_re_txt)
     bb.debug(2, "will use following RE to search for provides sonames %s" % shlibs_search_dirs_re_txt)
 
@@ -1398,12 +1398,13 @@ python package_do_shlibs() {
             if m:
                 this_soname = m.group(1)
                 if not this_soname in sonames:
-                    if shlibs_search_dirs_re.match(file):
+                    targetfile = file.replace(pkgdest + "/" + pkg, "")
+                    if shlibs_search_dirs_re.match(targetfile):
                         # if library is private (only used by package) then do not build shlib for it
                         if not private_libs or -1 == private_libs.find(this_soname):
                             sonames.append(this_soname)
                     else:
-                        bb.debug(2, "ignoring soname %s from %s, because path doesn't match %s" % (this_soname, file, shlibs_search_dirs_re_txt))
+                        bb.debug(2, "ignoring soname %s from %s, because path doesn't match %s" % (this_soname, targetfile, shlibs_search_dirs_re_txt))
                 if libdir_re.match(os.path.dirname(file)):
                     needs_ldconfig = True
                 if snap_symlinks and (os.path.basename(file) != this_soname):

So this is nice, however the shlibs code doesn't just handle the libs in
the default search path. Its also used when say something in
${libdir}/${PN} links against something else in that directory. Bitbake
looks up the soname and then adds in RDEPENDS on the appropriate
packages. This does assume there is a valid RPATH in the library but
that is usually the case.

So by including this code as it stands, we'd drop a number of
autogenerated RDEPENDS for more unusual libraries in the system outside
of ${libdir}. We can't do that.

So what can we do? When we process shlibs, we need to record the paths
of the things providing given sonames. They're either in the default
search path, or in specific directories. When we then process another
library, we can look at the RPATH it uses and then only match things in
the search paths (default or otherwise).

Sadly, this is fairly major surgery to the shlibs code and at the
current point of the release cycle, not something we can start.

So in summary, I do like the patchset at lot and it is showing up real
problems (emgd conflicting with mesa is something my builds are
currently corrupted with) however I don't think the patches are right
yet and we may need some more involved changes to get them there. I do
think its worth doing but its probably 1.6 material.

Cheers,

Richard




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

* Re: [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function
  2013-09-05 11:40   ` Richard Purdie
@ 2013-09-05 12:01     ` Martin Jansa
  0 siblings, 0 replies; 11+ messages in thread
From: Martin Jansa @ 2013-09-05 12:01 UTC (permalink / raw)
  To: Richard Purdie; +Cc: openembedded-core

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

On Thu, Sep 05, 2013 at 12:40:17PM +0100, Richard Purdie wrote:
> On Wed, 2013-08-28 at 10:33 +0200, Martin Jansa wrote:
> > On Sun, Jul 07, 2013 at 01:13:04AM +0200, Martin Jansa wrote:
> > > * prepare for reading shlibs providers only from dependency tree of
> > >   current recipe
> > > 
> > > [YOCTO #4628]
> > 
> > Any comment on this patchset?
> > 
> > I'm using first 3 commits for some time in world builds and they helped
> > me to discover some unexpected shlib providers (and fix them by setting
> > PRIVATE_LIBS).
> 
> I've run some tests with this and I do like the patches however there
> are some issues. Some are minor and easily fixed, some are more
> problematic but I'll try and list them:
> 
> * Patch 1/4 is missing a () from a funciton. Easily fixed, mentioned 
>   for completeness
> * In 2/4, I locally removed the continue from the "ignoring xxx" loop 
>   since it doesn't make the build any more deterministic, its still a 
>   race over which package builds first but it is a change in 
>   behaviour. We may decide to change behaviour but that should be a 
>   separate patch. Also need to update the message after the change.
> * In 3/4, the regexp is not anchored. Libraries places in subdirs of 
>   libdir should not match this code, neither should things in /foo/lib. 
>   The tweaks below ensure the regexp matches the correct things and 
>   avoids modules in ${libdir}/${PN}/. This is correct but gives another 
>   problem I'll come back to.
> * 4/4 isn't complete. Again I like the idea but we probably need help 
>   from bitbake for it. Its the wrong point in the development cycle to 
>   start thinking about it.
> 
> The problem in 3/4 is clear with something like gstreamer verses
> gstreamer1.0. These install into ${libdir}/PN/ so they are safe well
> behaved recipes but they trigger spurious warnings with the patch :(. We
> can "fix" with:
> 
> diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
> index 569599c..5fc6cda 100644
> --- a/meta/classes/package.bbclass
> +++ b/meta/classes/package.bbclass
> @@ -1337,7 +1337,7 @@ python package_do_shlibs() {
>              dir = dir[1:]
>          if shlibs_search_dirs_re_txt:
>              shlibs_search_dirs_re_txt += "|"
> -        shlibs_search_dirs_re_txt += "(^.*/%s/.*$)" % dir
> +        shlibs_search_dirs_re_txt += "(^/%s/[^/]*$)" % dir
>      shlibs_search_dirs_re = re.compile(shlibs_search_dirs_re_txt)
>      bb.debug(2, "will use following RE to search for provides sonames %s" % shlibs_search_dirs_re_txt)
>  
> @@ -1398,12 +1398,13 @@ python package_do_shlibs() {
>              if m:
>                  this_soname = m.group(1)
>                  if not this_soname in sonames:
> -                    if shlibs_search_dirs_re.match(file):
> +                    targetfile = file.replace(pkgdest + "/" + pkg, "")
> +                    if shlibs_search_dirs_re.match(targetfile):
>                          # if library is private (only used by package) then do not build shlib for it
>                          if not private_libs or -1 == private_libs.find(this_soname):
>                              sonames.append(this_soname)
>                      else:
> -                        bb.debug(2, "ignoring soname %s from %s, because path doesn't match %s" % (this_soname, file, shlibs_search_dirs_re_txt))
> +                        bb.debug(2, "ignoring soname %s from %s, because path doesn't match %s" % (this_soname, targetfile, shlibs_search_dirs_re_txt))
>                  if libdir_re.match(os.path.dirname(file)):
>                      needs_ldconfig = True
>                  if snap_symlinks and (os.path.basename(file) != this_soname):
> 
> So this is nice, however the shlibs code doesn't just handle the libs in
> the default search path. Its also used when say something in
> ${libdir}/${PN} links against something else in that directory. Bitbake
> looks up the soname and then adds in RDEPENDS on the appropriate
> packages. This does assume there is a valid RPATH in the library but
> that is usually the case.
> 
> So by including this code as it stands, we'd drop a number of
> autogenerated RDEPENDS for more unusual libraries in the system outside
> of ${libdir}. We can't do that.
> 
> So what can we do? When we process shlibs, we need to record the paths
> of the things providing given sonames. They're either in the default
> search path, or in specific directories. When we then process another
> library, we can look at the RPATH it uses and then only match things in
> the search paths (default or otherwise).
> 
> Sadly, this is fairly major surgery to the shlibs code and at the
> current point of the release cycle, not something we can start.
> 
> So in summary, I do like the patchset at lot and it is showing up real
> problems (emgd conflicting with mesa is something my builds are
> currently corrupted with) however I don't think the patches are right
> yet and we may need some more involved changes to get them there. I do
> think its worth doing but its probably 1.6 material.

Thanks for review, I'll include your changes in jansa/shlib-providers
branch and when jenkins gets less busy I'll build world with and without
these patches included to compare autogenerated RDEPENDS.

I agree it's too late for 1.5, I'll try to post updated version with
RDEPENDS-diff as soon as 1.6. window opens.

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

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

end of thread, other threads:[~2013-09-05 12:00 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-06 23:13 [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function Martin Jansa
2013-07-06 23:13 ` [RFC][PATCH 2/4] package.bbclass: show warning when package is trying to provide already provided shlib Martin Jansa
2013-07-10 11:51   ` Martin Jansa
2013-07-06 23:13 ` [RFC][PATCH 3/4] package.bbclass: add SHLIBSSEARCHDIRS to define where to search for shlib providers Martin Jansa
2013-09-02 11:22   ` Richard Purdie
2013-09-02 11:27     ` Martin Jansa
2013-07-06 23:13 ` [RFC][PATCH 4/4] WIP: package.bbclass: add some pseudo-code to filter shlibs providers based on dependencies Martin Jansa
2013-08-28  8:33 ` [RFC][PATCH 1/4] package.bbclass: move reading shlibs providers to separate function Martin Jansa
2013-09-02 11:19   ` Richard Purdie
2013-09-05 11:40   ` Richard Purdie
2013-09-05 12:01     ` Martin Jansa

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