diff options
author | Mark Hatle <mark.hatle@windriver.com> | 2010-08-31 20:05:10 -0500 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-09-02 10:01:22 +0100 |
commit | 4b611b66743a5ec220aef34d796af63029bb5fd9 (patch) | |
tree | 8421704dc7366b6e76bf1b1eee6c2172b1a953f8 | |
parent | 379ba0e9d73a96f72982070a71532e035878fee0 (diff) | |
download | poky-4b611b66743a5ec220aef34d796af63029bb5fd9.tar.gz |
package_rpm: Enable debian style tags
Enable debian style tags including suggests, enhances, recommends
Note, these are not yet used by the dependency resolver.
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-rw-r--r-- | meta/classes/package_rpm.bbclass | 107 | ||||
-rw-r--r-- | meta/recipes-devtools/rpm/rpm_5.1.10.bb | 3 |
2 files changed, 60 insertions, 50 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index 89e8fe891a..3f0a8af72c 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass | |||
@@ -92,11 +92,18 @@ python write_specfile () { | |||
92 | 92 | ||
93 | # We need to change the style the dependency from BB to RPM | 93 | # We need to change the style the dependency from BB to RPM |
94 | # This needs to happen AFTER the mapping_rename_hook | 94 | # This needs to happen AFTER the mapping_rename_hook |
95 | def translate_deps(varname, d): | 95 | def print_deps(variable, tag, array, d): |
96 | depends = bb.data.getVar('RPM' + varname, d, True) or bb.data.getVar(varname, d, True) or "" | 96 | depends = variable |
97 | depends = depends.replace('(', '') | 97 | if depends: |
98 | depends = depends.replace(')', '') | 98 | depends_dict = bb.utils.explode_dep_versions(depends) |
99 | bb.data.setVar('RPM' + varname, depends, d) | 99 | for dep in depends_dict: |
100 | ver = depends_dict[dep] | ||
101 | if dep and ver: | ||
102 | ver = ver.replace('(', '') | ||
103 | ver = ver.replace(')', '') | ||
104 | array.append("%s: %s %s" % (tag, dep, ver)) | ||
105 | else: | ||
106 | array.append("%s: %s" % (tag, dep)) | ||
100 | 107 | ||
101 | def walk_files(walkpath, target, conffiles): | 108 | def walk_files(walkpath, target, conffiles): |
102 | import os | 109 | import os |
@@ -137,8 +144,7 @@ python write_specfile () { | |||
137 | srchomepage = bb.data.getVar('HOMEPAGE', d, True) | 144 | srchomepage = bb.data.getVar('HOMEPAGE', d, True) |
138 | srcdescription = bb.data.getVar('DESCRIPTION', d, True) | 145 | srcdescription = bb.data.getVar('DESCRIPTION', d, True) |
139 | 146 | ||
140 | translate_deps('DEPENDS', d) | 147 | srcdepends = bb.data.getVar('DEPENDS', d, True) |
141 | srcdepends = bb.data.getVar('RPMDEPENDS', d, True) | ||
142 | srcrdepends = [] | 148 | srcrdepends = [] |
143 | srcrrecommends = [] | 149 | srcrrecommends = [] |
144 | srcrsuggests = [] | 150 | srcrsuggests = [] |
@@ -201,19 +207,12 @@ python write_specfile () { | |||
201 | # Map the dependencies into their final form | 207 | # Map the dependencies into their final form |
202 | bb.build.exec_func("mapping_rename_hook", localdata) | 208 | bb.build.exec_func("mapping_rename_hook", localdata) |
203 | 209 | ||
204 | translate_deps('RDEPENDS', localdata) | 210 | splitrdepends = bb.data.getVar('RDEPENDS', localdata, True) or "" |
205 | translate_deps('RRECOMMENDS', localdata) | 211 | splitrrecommends = bb.data.getVar('RRECOMMENDS', localdata, True) or "" |
206 | translate_deps('RSUGGESTS', localdata) | 212 | splitrsuggests = bb.data.getVar('RSUGGESTS', localdata, True) or "" |
207 | translate_deps('RPROVIDES', localdata) | 213 | splitrprovides = bb.data.getVar('RPROVIDES', localdata, True) or "" |
208 | translate_deps('RREPLACES', localdata) | 214 | splitrreplaces = bb.data.getVar('RREPLACES', localdata, True) or "" |
209 | translate_deps('RCONFLICTS', localdata) | 215 | splitrconflicts = bb.data.getVar('RCONFLICTS', localdata, True) or "" |
210 | |||
211 | splitrdepends = bb.data.getVar('RPMRDEPENDS', localdata, True) | ||
212 | splitrrecommends = bb.data.getVar('RPMRRECOMMENDS', localdata, True) | ||
213 | splitrsuggests = bb.data.getVar('RPMRSUGGESTS', localdata, True) | ||
214 | splitrprovides = bb.data.getVar('RPMRPROVIDES', localdata, True) | ||
215 | splitrreplaces = bb.data.getVar('RPMRREPLACES', localdata, True) | ||
216 | splitrconflicts = bb.data.getVar('RPMRCONFLICTS', localdata, True) | ||
217 | splitrobsoletes = [] | 216 | splitrobsoletes = [] |
218 | 217 | ||
219 | # Gather special src/first package data | 218 | # Gather special src/first package data |
@@ -269,21 +268,25 @@ python write_specfile () { | |||
269 | else: | 268 | else: |
270 | splitrobsoletes = dep | 269 | splitrobsoletes = dep |
271 | 270 | ||
272 | if splitrdepends and splitrdepends.strip() != "": | 271 | print_deps(splitrdepends, "Requires", spec_preamble_bottom, d) |
273 | spec_preamble_bottom.append('Requires: %s' % splitrdepends) | 272 | print_deps(splitrrecommends, "Recommends", spec_preamble_bottom, d) |
274 | #if splitrrecommends and splitrrecommends.strip() != "": | 273 | print_deps(splitrsuggests, "Suggests", spec_preamble_bottom, d) |
275 | # spec_preamble_bottom.append('#Recommends: %s' % splitrrecommends) | 274 | print_deps(splitrprovides, "Provides", spec_preamble_bottom, d) |
276 | #if splitrsuggests and splitrsuggests.strip() != "": | 275 | print_deps(splitrobsoletes, "Obsoletes", spec_preamble_bottom, d) |
277 | # spec_preamble_bottom.append('#Suggests: %s' % splitrsuggests) | 276 | |
278 | if splitrprovides and splitrprovides.strip() != "": | 277 | # conflicts can not be in a provide! We will need to filter it. |
279 | spec_preamble_bottom.append('Provides: %s' % splitrprovides) | 278 | if splitrconflicts: |
280 | if splitrobsoletes and splitrobsoletes.strip() != "": | 279 | depends_dict = bb.utils.explode_dep_versions(splitrconflicts) |
281 | spec_preamble_bottom.append('Obsoletes: %s' % splitrobsoletes) | 280 | newdeps_dict = {} |
282 | if splitrconflicts and splitrconflicts.strip() != "": | 281 | for dep in depends_dict: |
283 | for dep in splitrconflicts.split(','): | ||
284 | # A conflict can NOT be in the provide or an internal conflict happens! | ||
285 | if dep not in splitrprovides: | 282 | if dep not in splitrprovides: |
286 | spec_preamble_bottom.append('Conflicts: %s' % dep) | 283 | newdeps_dict[dep] = depends_dict[dep] |
284 | if newdeps_dict: | ||
285 | splitrconflicts = bb.utils.join_deps(newdeps_dict) | ||
286 | else: | ||
287 | splitrconflicts = "" | ||
288 | |||
289 | print_deps(splitrconflicts, "Conflicts", spec_preamble_bottom, d) | ||
287 | 290 | ||
288 | spec_preamble_bottom.append('') | 291 | spec_preamble_bottom.append('') |
289 | 292 | ||
@@ -345,23 +348,27 @@ python write_specfile () { | |||
345 | srcrobsoletes = srcrobsoletes + ", " + dep | 348 | srcrobsoletes = srcrobsoletes + ", " + dep |
346 | else: | 349 | else: |
347 | srcrobsoletes = dep | 350 | srcrobsoletes = dep |
348 | if srcdepends and srcdepends.strip() != "": | 351 | |
349 | spec_preamble_top.append('BuildRequires: %s' % srcdepends) | 352 | print_deps(srcdepends, "BuildRequires", spec_preamble_top, d) |
350 | if srcrdepends and srcrdepends.strip() != "": | 353 | print_deps(srcrdepends, "Requires", spec_preamble_top, d) |
351 | spec_preamble_top.append('Requires: %s' % srcrdepends) | 354 | print_deps(srcrrecommends, "Recommends", spec_preamble_top, d) |
352 | #if srcrrecommends and srcrrecommends.strip() != "": | 355 | print_deps(srcrsuggests, "Suggests", spec_preamble_top, d) |
353 | # spec_preamble_top.append('#Recommends: %s' % srcrrecommends) | 356 | print_deps(srcrprovides, "Provides", spec_preamble_top, d) |
354 | #if srcrsuggests and srcrsuggests.strip() != "": | 357 | print_deps(srcrobsoletes, "Obsoletes", spec_preamble_top, d) |
355 | # spec_preamble_top.append('#Suggests: %s' % srcrsuggests) | 358 | |
356 | if srcrprovides and srcrprovides.strip() != "": | 359 | # conflicts can not be in a provide! We will need to filter it. |
357 | spec_preamble_top.append('Provides: %s' % srcrprovides) | 360 | if srcrconflicts: |
358 | if srcrobsoletes and srcrobsoletes.strip() != "": | 361 | depends_dict = bb.utils.explode_dep_versions(srcrconflicts) |
359 | spec_preamble_top.append('Obsoletes: %s' % srcrobsoletes) | 362 | newdeps_dict = {} |
360 | if srcrconflicts and srcrconflicts.strip() != "": | 363 | for dep in depends_dict: |
361 | for dep in srcrconflicts.split(','): | ||
362 | # A conflict can NOT be in the provide or an internal conflict happens! | ||
363 | if dep not in srcrprovides: | 364 | if dep not in srcrprovides: |
364 | spec_preamble_bottom.append('Conflicts: %s' % dep) | 365 | newdeps_dict[dep] = depends_dict[dep] |
366 | if newdeps_dict: | ||
367 | srcrconflicts = bb.utils.join_deps(newdeps_dict) | ||
368 | else: | ||
369 | srcrconflicts = "" | ||
370 | |||
371 | print_deps(srcrconflicts, "Conflicts", spec_preamble_top, d) | ||
365 | 372 | ||
366 | spec_preamble_top.append('') | 373 | spec_preamble_top.append('') |
367 | 374 | ||
diff --git a/meta/recipes-devtools/rpm/rpm_5.1.10.bb b/meta/recipes-devtools/rpm/rpm_5.1.10.bb index d75e48f416..d4b5a91668 100644 --- a/meta/recipes-devtools/rpm/rpm_5.1.10.bb +++ b/meta/recipes-devtools/rpm/rpm_5.1.10.bb | |||
@@ -116,6 +116,9 @@ do_install_append() { | |||
116 | sed -i -e 's,perl.prov,${HOST_SYS}-perl.prov,' ${D}/${libdir}/rpm/macros | 116 | sed -i -e 's,perl.prov,${HOST_SYS}-perl.prov,' ${D}/${libdir}/rpm/macros |
117 | sed -i -e 's,perl.req,${HOST_SYS}-perl.req,' ${D}/${libdir}/rpm/macros | 117 | sed -i -e 's,perl.req,${HOST_SYS}-perl.req,' ${D}/${libdir}/rpm/macros |
118 | 118 | ||
119 | # Enable Debian style arbitrary tags... | ||
120 | sed -i -e 's,%_arbitrary_tags[^_].*,%_arbitrary_tags %{_arbitrary_tags_debian},' ${D}/${libdir}/rpm/macros | ||
121 | |||
119 | install -m 0755 ${WORKDIR}/perfile_rpmdeps.sh ${D}/${libdir}/rpm/perfile_rpmdeps.sh | 122 | install -m 0755 ${WORKDIR}/perfile_rpmdeps.sh ${D}/${libdir}/rpm/perfile_rpmdeps.sh |
120 | 123 | ||
121 | mv ${D}/${libdir}/python$PYTHONVER/rpm/${HOST_SYS}-__init__.py \ | 124 | mv ${D}/${libdir}/python$PYTHONVER/rpm/${HOST_SYS}-__init__.py \ |