Merge branch 'org.openembedded.dev' of git://git.openembedded.net/openembedded into...
[vuplus_openembedded] / classes / package.bbclass
index 4079e11..e3be9c4 100644 (file)
@@ -21,7 +21,7 @@ def legitimize_package_name(s):
        # Remaining package name validity fixes
        return s.lower().replace('_', '-').replace('@', '+').replace(',', '+').replace('/', '-')
 
-def do_split_packages(d, root, file_regex, output_pattern, description, postinst=None, recursive=False, hook=None, extra_depends=None, aux_files_pattern=None, postrm=None, allow_dirs=False, prepend=False, match_path=False, aux_files_pattern_verbatim=None):
+def do_split_packages(d, root, file_regex, output_pattern, description, postinst=None, recursive=False, hook=None, extra_depends=None, aux_files_pattern=None, postrm=None, allow_dirs=False, prepend=False, match_path=False, aux_files_pattern_verbatim=None, allow_links=False):
        """
        Used in .bb files to split up dynamically generated subpackages of a 
        given package, usually plugins or modules.
@@ -70,7 +70,7 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
                        continue
                f = os.path.join(dvar + root, o)
                mode = os.lstat(f).st_mode
-               if not (stat.S_ISREG(mode) or (allow_dirs and stat.S_ISDIR(mode))):
+               if not (stat.S_ISREG(mode) or (allow_links and stat.S_ISLNK(mode)) or (allow_dirs and stat.S_ISDIR(mode))):
                        continue
                on = legitimize_package_name(m.group(1))
                pkg = output_pattern % on
@@ -365,6 +365,8 @@ python populate_packages () {
        os.system('rm -rf %s' % pkgdest)
 
        seen = []
+       main_is_empty = 1
+       main_pkg = bb.data.getVar('PN', d, 1)
 
        for pkg in package_list:
                localdata = bb.data.createCopy(d)
@@ -396,6 +398,8 @@ python populate_packages () {
                                        continue
                        if (not os.path.islink(file)) and (not os.path.exists(file)):
                                continue
+                       if file[-4:] == '.pyo':
+                               continue
                        if file in seen:
                                continue
                        seen.append(file)
@@ -409,6 +413,8 @@ python populate_packages () {
                        ret = bb.copyfile(file, fpath)
                        if ret is False or ret == 0:
                                raise bb.build.FuncFailed("File population failed")
+                       if pkg == main_pkg and main_is_empty:
+                               main_is_empty = 0
                del localdata
        os.chdir(workdir)
 
@@ -453,7 +459,11 @@ python populate_packages () {
                                        dangling_links[pkg].append(os.path.normpath(target))
 
        for pkg in package_list:
-               rdepends = explode_deps(bb.data.getVar('RDEPENDS_' + pkg, d, 1) or bb.data.getVar('RDEPENDS', d, 1) or "")
+               rdepends = explode_deps(bb.data.getVar('RDEPENDS_' + pkg, d, 0) or bb.data.getVar('RDEPENDS', d, 0) or "")
+
+               remstr = "${PN} (= ${DEBPV})"
+               if main_is_empty and remstr in rdepends:
+                       rdepends.remove(remstr)
                for l in dangling_links[pkg]:
                        found = False
                        bb.debug(1, "%s contains dangling link %s" % (pkg, l))
@@ -543,7 +553,9 @@ emit_pkgdata[dirs] = "${PKGDATA_DIR}/runtime"
 
 ldconfig_postinst_fragment() {
 if [ x"$D" = "x" ]; then
-       [ -x /sbin/ldconfig ] && /sbin/ldconfig
+       if [ -e /etc/ld.so.conf ] ; then
+               [ -x /sbin/ldconfig ] && /sbin/ldconfig
+       fi
 fi
 }
 
@@ -586,6 +598,11 @@ python package_do_shlibs() {
        else:
                snap_symlinks = False
 
+       if (bb.data.getVar('USE_LDCONFIG', d, True) or "1") == "1":
+               use_ldconfig = True
+       else:
+               use_ldconfig = False
+
        needed = {}
        private_libs = bb.data.getVar('PRIVATE_LIBS', d, 1)
        for pkg in packages.split():
@@ -639,7 +656,7 @@ python package_do_shlibs() {
                        fd.write(ver + '\n')
                        fd.close()
                        package_stagefile(shver_file, d)
-               if needs_ldconfig:
+               if needs_ldconfig and use_ldconfig:
                        bb.debug(1, 'adding ldconfig call to postinst for %s' % pkg)
                        postinst = bb.data.getVar('pkg_postinst_%s' % pkg, d, 1) or bb.data.getVar('pkg_postinst', d, 1)
                        if not postinst: