diff options
| -rw-r--r-- | meta/classes/package_deb.bbclass | 73 |
1 files changed, 26 insertions, 47 deletions
diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass index 2a70b50c9f..47fcd6b8b5 100644 --- a/meta/classes/package_deb.bbclass +++ b/meta/classes/package_deb.bbclass | |||
| @@ -53,6 +53,7 @@ python do_package_deb () { | |||
| 53 | import textwrap | 53 | import textwrap |
| 54 | import subprocess | 54 | import subprocess |
| 55 | import collections | 55 | import collections |
| 56 | import codecs | ||
| 56 | 57 | ||
| 57 | oldcwd = os.getcwd() | 58 | oldcwd = os.getcwd() |
| 58 | 59 | ||
| @@ -121,12 +122,8 @@ python do_package_deb () { | |||
| 121 | controldir = os.path.join(root, 'DEBIAN') | 122 | controldir = os.path.join(root, 'DEBIAN') |
| 122 | bb.utils.mkdirhier(controldir) | 123 | bb.utils.mkdirhier(controldir) |
| 123 | os.chmod(controldir, 0o755) | 124 | os.chmod(controldir, 0o755) |
| 124 | try: | 125 | |
| 125 | import codecs | 126 | ctrlfile = codecs.open(os.path.join(controldir, 'control'), 'w', 'utf-8') |
| 126 | ctrlfile = codecs.open(os.path.join(controldir, 'control'), 'w', 'utf-8') | ||
| 127 | except OSError: | ||
| 128 | bb.utils.unlockfile(lf) | ||
| 129 | bb.fatal("unable to open control file for writing") | ||
| 130 | 127 | ||
| 131 | fields = [] | 128 | fields = [] |
| 132 | pe = d.getVar('PKGE') | 129 | pe = d.getVar('PKGE') |
| @@ -153,7 +150,7 @@ python do_package_deb () { | |||
| 153 | for i in l: | 150 | for i in l: |
| 154 | data = d.getVar(i) | 151 | data = d.getVar(i) |
| 155 | if data is None: | 152 | if data is None: |
| 156 | raise KeyError(f) | 153 | raise KeyError(i) |
| 157 | if i == 'DPKG_ARCH' and d.getVar('PACKAGE_ARCH') == 'all': | 154 | if i == 'DPKG_ARCH' and d.getVar('PACKAGE_ARCH') == 'all': |
| 158 | data = 'all' | 155 | data = 'all' |
| 159 | elif i == 'PACKAGE_ARCH' or i == 'DPKG_ARCH': | 156 | elif i == 'PACKAGE_ARCH' or i == 'DPKG_ARCH': |
| @@ -168,36 +165,26 @@ python do_package_deb () { | |||
| 168 | if d.getVar('PACKAGE_ARCH') == "all": | 165 | if d.getVar('PACKAGE_ARCH') == "all": |
| 169 | ctrlfile.write("Multi-Arch: foreign\n") | 166 | ctrlfile.write("Multi-Arch: foreign\n") |
| 170 | # check for required fields | 167 | # check for required fields |
| 171 | try: | 168 | for (c, fs) in fields: |
| 172 | for (c, fs) in fields: | 169 | # Special behavior for description... |
| 173 | for f in fs: | 170 | if 'DESCRIPTION' in fs: |
| 174 | if localdata.getVar(f, False) is None: | 171 | summary = localdata.getVar('SUMMARY') or localdata.getVar('DESCRIPTION') or "." |
| 175 | raise KeyError(f) | 172 | ctrlfile.write('Description: %s\n' % summary) |
| 176 | # Special behavior for description... | 173 | description = localdata.getVar('DESCRIPTION') or "." |
| 177 | if 'DESCRIPTION' in fs: | 174 | description = textwrap.dedent(description).strip() |
| 178 | summary = localdata.getVar('SUMMARY') or localdata.getVar('DESCRIPTION') or "." | 175 | if '\\n' in description: |
| 179 | ctrlfile.write('Description: %s\n' % summary) | 176 | # Manually indent |
| 180 | description = localdata.getVar('DESCRIPTION') or "." | 177 | for t in description.split('\\n'): |
| 181 | description = textwrap.dedent(description).strip() | 178 | # We don't limit the width when manually indent, but we do |
| 182 | if '\\n' in description: | 179 | # need the textwrap.fill() to set the initial_indent and |
| 183 | # Manually indent | 180 | # subsequent_indent, so set a large width |
| 184 | for t in description.split('\\n'): | 181 | ctrlfile.write('%s\n' % textwrap.fill(t, width=100000, initial_indent=' ', subsequent_indent=' ')) |
| 185 | # We don't limit the width when manually indent, but we do | 182 | else: |
| 186 | # need the textwrap.fill() to set the initial_indent and | 183 | # Auto indent |
| 187 | # subsequent_indent, so set a large width | 184 | ctrlfile.write('%s\n' % textwrap.fill(description.strip(), width=74, initial_indent=' ', subsequent_indent=' ')) |
| 188 | ctrlfile.write('%s\n' % textwrap.fill(t, width=100000, initial_indent=' ', subsequent_indent=' ')) | 185 | |
| 189 | else: | 186 | else: |
| 190 | # Auto indent | 187 | ctrlfile.write(c % tuple(pullData(fs, localdata))) |
| 191 | ctrlfile.write('%s\n' % textwrap.fill(description.strip(), width=74, initial_indent=' ', subsequent_indent=' ')) | ||
| 192 | |||
| 193 | else: | ||
| 194 | ctrlfile.write(c % tuple(pullData(fs, localdata))) | ||
| 195 | except KeyError: | ||
| 196 | import sys | ||
| 197 | (type, value, traceback) = sys.exc_info() | ||
| 198 | bb.utils.unlockfile(lf) | ||
| 199 | ctrlfile.close() | ||
| 200 | bb.fatal("Missing field for deb generation: %s" % value) | ||
| 201 | 188 | ||
| 202 | # more fields | 189 | # more fields |
| 203 | 190 | ||
| @@ -273,11 +260,7 @@ python do_package_deb () { | |||
| 273 | if not scriptvar: | 260 | if not scriptvar: |
| 274 | continue | 261 | continue |
| 275 | scriptvar = scriptvar.strip() | 262 | scriptvar = scriptvar.strip() |
| 276 | try: | 263 | scriptfile = open(os.path.join(controldir, script), 'w') |
| 277 | scriptfile = open(os.path.join(controldir, script), 'w') | ||
| 278 | except OSError: | ||
| 279 | bb.utils.unlockfile(lf) | ||
| 280 | bb.fatal("unable to open %s script file for writing" % script) | ||
| 281 | 264 | ||
| 282 | if scriptvar.startswith("#!"): | 265 | if scriptvar.startswith("#!"): |
| 283 | pos = scriptvar.find("\n") + 1 | 266 | pos = scriptvar.find("\n") + 1 |
| @@ -297,11 +280,7 @@ python do_package_deb () { | |||
| 297 | 280 | ||
| 298 | conffiles_str = ' '.join(get_conffiles(pkg, d)) | 281 | conffiles_str = ' '.join(get_conffiles(pkg, d)) |
| 299 | if conffiles_str: | 282 | if conffiles_str: |
| 300 | try: | 283 | conffiles = open(os.path.join(controldir, 'conffiles'), 'w') |
| 301 | conffiles = open(os.path.join(controldir, 'conffiles'), 'w') | ||
| 302 | except OSError: | ||
| 303 | bb.utils.unlockfile(lf) | ||
| 304 | bb.fatal("unable to open conffiles for writing") | ||
| 305 | for f in conffiles_str.split(): | 284 | for f in conffiles_str.split(): |
| 306 | if os.path.exists(oe.path.join(root, f)): | 285 | if os.path.exists(oe.path.join(root, f)): |
| 307 | conffiles.write('%s\n' % f) | 286 | conffiles.write('%s\n' % f) |
