diff options
| -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 | ||
