From b2f2590e6c566d1ed4df87cf52279106497d584d Mon Sep 17 00:00:00 2001 From: Mark Hatle Date: Wed, 29 Sep 2010 10:11:24 -0500 Subject: Add Summary/Description support to packaging [BUGID #281] Add the ability for the deb, ipk and rpm classes to use the new summary and description fields. The Description is wrapped around 75 characters to ensure a reasonably nice, presentable description. (Summary defaults to the description if Summary is not defined.) Signed-off-by: Mark Hatle --- meta/classes/package_deb.bbclass | 14 +++++++++++++- meta/classes/package_ipk.bbclass | 11 ++++++++++- meta/classes/package_rpm.bbclass | 16 ++++++++++------ 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass index eb4df5e704..8a9cdc071d 100644 --- a/meta/classes/package_deb.bbclass +++ b/meta/classes/package_deb.bbclass @@ -69,6 +69,7 @@ python do_package_deb_install () { python do_package_deb () { import re, copy + import textwrap workdir = bb.data.getVar('WORKDIR', d, True) if not workdir: @@ -179,7 +180,18 @@ python do_package_deb () { # check for required fields try: for (c, fs) in fields: - ctrlfile.write(unicode(c % tuple(pullData(fs, localdata)))) + for f in fs: + if bb.data.getVar(f, localdata) is None: + raise KeyError(f) + # Special behavior for description... + if 'DESCRIPTION' in fs: + summary = bb.data.getVar('SUMMARY', localdata, True) or bb.data.getVar('DESCRIPTION', localdata, True) or "." + description = bb.data.getVar('DESCRIPTION', localdata, True) or "." + description = textwrap.dedent(description).strip() + ctrlfile.write('Description: %s\n' % unicode(summary)) + ctrlfile.write('%s\n' % unicode(textwrap.fill(description, width=74, initial_indent=' ', subsequent_indent=' '))) + else: + ctrlfile.write(unicode(c % tuple(pullData(fs, localdata)))) except KeyError: import sys (type, value, traceback) = sys.exc_info() diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass index 1758283f61..cac0453685 100644 --- a/meta/classes/package_ipk.bbclass +++ b/meta/classes/package_ipk.bbclass @@ -135,6 +135,7 @@ package_generate_archlist () { python do_package_ipk () { import re, copy + import textwrap workdir = bb.data.getVar('WORKDIR', d, True) outdir = bb.data.getVar('PKGWRITEDIRIPK', d, True) @@ -227,7 +228,15 @@ python do_package_ipk () { for f in fs: if bb.data.getVar(f, localdata) is None: raise KeyError(f) - ctrlfile.write(c % tuple(pullData(fs, localdata))) + # Special behavior for description... + if 'DESCRIPTION' in fs: + summary = bb.data.getVar('SUMMARY', localdata, True) or bb.data.getVar('DESCRIPTION', localdata, True) or "." + description = bb.data.getVar('DESCRIPTION', localdata, True) or "." + description = textwrap.dedent(description).strip() + ctrlfile.write('Description: %s\n' % summary) + ctrlfile.write('%s\n' % textwrap.fill(description, width=74, initial_indent=' ', subsequent_indent=' ')) + else: + ctrlfile.write(c % tuple(pullData(fs, localdata))) except KeyError: import sys (type, value, traceback) = sys.exc_info() diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index 49468bbd5a..b31830f945 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass @@ -72,6 +72,8 @@ package_generate_rpm_conf () { } python write_specfile () { + import textwrap + # We need to change '-' in a version field to '+' # This needs to be done BEFORE the mapping_rename_hook def translate_vers(varname, d): @@ -136,7 +138,7 @@ python write_specfile () { # Construct the SPEC file... srcname = bb.data.getVar('PN', d, True) - srcsummary = (bb.data.getVar('SUMMARY', d, True) or ".") + srcsummary = (bb.data.getVar('SUMMARY', d, True) or bb.data.getVar('DESCRIPTION', d, True) or ".") srcversion = bb.data.getVar('PV', d, True).replace('-', '+') srcrelease = bb.data.getVar('PR', d, True) srcepoch = (bb.data.getVar('PE', d, True) or "") @@ -144,7 +146,7 @@ python write_specfile () { srcsection = bb.data.getVar('SECTION', d, True) srcmaintainer = bb.data.getVar('MAINTAINER', d, True) srchomepage = bb.data.getVar('HOMEPAGE', d, True) - srcdescription = bb.data.getVar('DESCRIPTION', d, True) + srcdescription = bb.data.getVar('DESCRIPTION', d, True) or "." srcdepends = bb.data.getVar('DEPENDS', d, True) srcrdepends = [] @@ -191,13 +193,13 @@ python write_specfile () { splitname = pkgname - splitsummary = (bb.data.getVar('SUMMARY', d, True) or ".") + splitsummary = (bb.data.getVar('SUMMARY', d, True) or bb.data.getVar('DESCRIPTION', d, True) or ".") splitversion = (bb.data.getVar('PV', localdata, True) or "").replace('-', '+') splitrelease = (bb.data.getVar('PR', localdata, True) or "") splitepoch = (bb.data.getVar('PE', localdata, True) or "") splitlicense = (bb.data.getVar('LICENSE', localdata, True) or "") splitsection = (bb.data.getVar('SECTION', localdata, True) or "") - splitdescription = (bb.data.getVar('DESCRIPTION', localdata, True) or "") + splitdescription = (bb.data.getVar('DESCRIPTION', localdata, True) or ".") translate_vers('RDEPENDS', localdata) translate_vers('RRECOMMENDS', localdata) @@ -295,7 +297,8 @@ python write_specfile () { spec_preamble_bottom.append('') spec_preamble_bottom.append('%%description -n %s' % splitname) - spec_preamble_bottom.append('%s' % splitdescription) + dedent_text = textwrap.dedent(splitdescription).strip() + spec_preamble_bottom.append('%s' % textwrap.fill(dedent_text, width=75)) spec_preamble_bottom.append('') @@ -379,7 +382,8 @@ python write_specfile () { spec_preamble_top.append('') spec_preamble_top.append('%description') - spec_preamble_top.append('%s' % srcdescription) + dedent_text = textwrap.dedent(srcdescription).strip() + spec_preamble_top.append('%s' % textwrap.fill(dedent_text, width=75)) spec_preamble_top.append('') -- cgit 1.2.3-korg