diff options
Diffstat (limited to 'meta/classes/package.bbclass')
-rw-r--r-- | meta/classes/package.bbclass | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 415eb326c0..21fe94e94e 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass | |||
@@ -805,44 +805,51 @@ python package_depchains() { | |||
805 | postfixes = (bb.data.getVar('DEPCHAIN_POST', d, 1) or '').split() | 805 | postfixes = (bb.data.getVar('DEPCHAIN_POST', d, 1) or '').split() |
806 | prefixes = (bb.data.getVar('DEPCHAIN_PRE', d, 1) or '').split() | 806 | prefixes = (bb.data.getVar('DEPCHAIN_PRE', d, 1) or '').split() |
807 | 807 | ||
808 | def pkg_addrrecs(pkg, base, func, d): | 808 | def pkg_addrrecs(pkg, base, getname, rdepends, d): |
809 | rdepends = explode_deps(bb.data.getVar('RDEPENDS_' + base, d, 1) or bb.data.getVar('RDEPENDS', d, 1) or "") | 809 | def packaged(pkg, d): |
810 | # bb.note('rdepends for %s is %s' % (base, rdepends)) | 810 | return os.access(bb.data.expand('${STAGING_DIR}/pkgdata/runtime/%s.packaged' % pkg, d), os.R_OK) |
811 | |||
811 | rreclist = explode_deps(bb.data.getVar('RRECOMMENDS_' + pkg, d, 1) or bb.data.getVar('RRECOMMENDS', d, 1) or "") | 812 | rreclist = explode_deps(bb.data.getVar('RRECOMMENDS_' + pkg, d, 1) or bb.data.getVar('RRECOMMENDS', d, 1) or "") |
812 | 813 | ||
813 | for depend in rdepends: | 814 | for depend in rdepends: |
814 | split_depend = depend.split(' (') | 815 | pkgname = getname(depend) |
815 | name = split_depend[0].strip() | 816 | if not pkgname in rreclist and packaged(pkgname, d): |
816 | func(rreclist, name) | 817 | rreclist.append(pkgname) |
817 | 818 | ||
819 | #bb.note('setting: RRECOMMENDS_%s=%s' % (pkg, ' '.join(rreclist))) | ||
818 | bb.data.setVar('RRECOMMENDS_%s' % pkg, ' '.join(rreclist), d) | 820 | bb.data.setVar('RRECOMMENDS_%s' % pkg, ' '.join(rreclist), d) |
819 | 821 | ||
820 | def packaged(pkg, d): | 822 | def add_dep(list, dep): |
821 | return os.access(bb.data.expand('${STAGING_DIR}/pkgdata/runtime/%s.packaged' % pkg, d), os.R_OK) | 823 | dep = dep.split(' (')[0].strip() |
824 | if dep not in list: | ||
825 | list.append(dep) | ||
826 | |||
827 | rdepends = [] | ||
828 | for dep in explode_deps(bb.data.getVar('RDEPENDS', d, 1) or ""): | ||
829 | add_dep(rdepends, dep) | ||
830 | |||
831 | for pkg in packages.split(): | ||
832 | for dep in explode_deps(bb.data.getVar('RDEPENDS_' + pkg, d, 1) or ""): | ||
833 | add_dep(rdepends, dep) | ||
834 | |||
835 | #bb.note('rdepends is %s' % rdepends) | ||
822 | 836 | ||
823 | for pkg in packages.split(): | 837 | for pkg in packages.split(): |
824 | for postfix in postfixes: | 838 | for postfix in postfixes: |
825 | def func(list, name): | 839 | def getname(name): |
826 | pkg = '%s%s' % (name, postfix) | 840 | return '%s%s' % (name, postfix) |
827 | if not pkg in list: | ||
828 | if packaged(pkg, d): | ||
829 | list.append(pkg) | ||
830 | 841 | ||
831 | base = pkg[:-len(postfix)] | 842 | base = pkg[:-len(postfix)] |
832 | if pkg.endswith(postfix): | 843 | if pkg.endswith(postfix): |
833 | pkg_addrrecs(pkg, base, func, d) | 844 | pkg_addrrecs(pkg, base, getname, rdepends, d) |
834 | continue | ||
835 | 845 | ||
836 | for prefix in prefixes: | 846 | for prefix in prefixes: |
837 | def func(list, name): | 847 | def getname(name): |
838 | pkg = '%s%s' % (prefix, name) | 848 | return '%s%s' % (prefix, name) |
839 | if not pkg in list: | ||
840 | if packaged(pkg, d): | ||
841 | list.append(pkg) | ||
842 | 849 | ||
843 | base = pkg[len(prefix):] | 850 | base = pkg[len(prefix):] |
844 | if pkg.startswith(prefix): | 851 | if pkg.startswith(prefix): |
845 | pkg_addrrecs(pkg, base, func, d) | 852 | pkg_addrrecs(pkg, base, getname, rdepends, d) |
846 | } | 853 | } |
847 | 854 | ||
848 | 855 | ||