diff options
Diffstat (limited to 'meta')
-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) |