diff options
Diffstat (limited to 'import-layers/yocto-poky/meta/classes/package_deb.bbclass')
-rw-r--r-- | import-layers/yocto-poky/meta/classes/package_deb.bbclass | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/import-layers/yocto-poky/meta/classes/package_deb.bbclass b/import-layers/yocto-poky/meta/classes/package_deb.bbclass index e1d05a74c..fb6034cab 100644 --- a/import-layers/yocto-poky/meta/classes/package_deb.bbclass +++ b/import-layers/yocto-poky/meta/classes/package_deb.bbclass @@ -52,6 +52,9 @@ python do_package_deb () { import re, copy import textwrap import subprocess + import collections + + oldcwd = os.getcwd() workdir = d.getVar('WORKDIR', True) if not workdir: @@ -117,13 +120,13 @@ python do_package_deb () { controldir = os.path.join(root, 'DEBIAN') bb.utils.mkdirhier(controldir) - os.chmod(controldir, 0755) + os.chmod(controldir, 0o755) try: import codecs ctrlfile = codecs.open(os.path.join(controldir, 'control'), 'w', 'utf-8') except OSError: bb.utils.unlockfile(lf) - raise bb.build.FuncFailed("unable to open control file for writing.") + bb.fatal("unable to open control file for writing") fields = [] pe = d.getVar('PKGE', True) @@ -173,7 +176,7 @@ python do_package_deb () { # Special behavior for description... if 'DESCRIPTION' in fs: summary = localdata.getVar('SUMMARY', True) or localdata.getVar('DESCRIPTION', True) or "." - ctrlfile.write('Description: %s\n' % unicode(summary,'utf-8')) + ctrlfile.write('Description: %s\n' % summary) description = localdata.getVar('DESCRIPTION', True) or "." description = textwrap.dedent(description).strip() if '\\n' in description: @@ -182,29 +185,25 @@ python do_package_deb () { # We don't limit the width when manually indent, but we do # need the textwrap.fill() to set the initial_indent and # subsequent_indent, so set a large width - ctrlfile.write('%s\n' % unicode(textwrap.fill(t, width=100000, initial_indent=' ', subsequent_indent=' '),'utf-8')) + ctrlfile.write('%s\n' % textwrap.fill(t, width=100000, initial_indent=' ', subsequent_indent=' ')) else: # Auto indent - ctrlfile.write('%s\n' % unicode(textwrap.fill(description.strip(), width=74, initial_indent=' ', subsequent_indent=' '),'utf-8')) + ctrlfile.write('%s\n' % textwrap.fill(description.strip(), width=74, initial_indent=' ', subsequent_indent=' ')) else: - ctrlfile.write(unicode(c % tuple(pullData(fs, localdata)),'utf-8')) + ctrlfile.write(c % tuple(pullData(fs, localdata))) except KeyError: import sys (type, value, traceback) = sys.exc_info() bb.utils.unlockfile(lf) ctrlfile.close() - raise bb.build.FuncFailed("Missing field for deb generation: %s" % value) - except UnicodeDecodeError: - bb.utils.unlockfile(lf) - ctrlfile.close() - raise bb.build.FuncFailed("Non UTF-8 characters found in one of the fields") + bb.fatal("Missing field for deb generation: %s" % value) # more fields custom_fields_chunk = get_package_additional_metadata("deb", localdata) if custom_fields_chunk is not None: - ctrlfile.write(unicode(custom_fields_chunk)) + ctrlfile.write(custom_fields_chunk) ctrlfile.write("\n") mapping_rename_hook(localdata) @@ -234,7 +233,7 @@ python do_package_deb () { rdepends = bb.utils.explode_dep_versions2(localdata.getVar("RDEPENDS", True) or "") debian_cmp_remap(rdepends) - for dep in rdepends.keys(): + for dep in list(rdepends.keys()): if dep == pkg: del rdepends[dep] continue @@ -242,30 +241,31 @@ python do_package_deb () { del rdepends[dep] rrecommends = bb.utils.explode_dep_versions2(localdata.getVar("RRECOMMENDS", True) or "") debian_cmp_remap(rrecommends) - for dep in rrecommends.keys(): + for dep in list(rrecommends.keys()): if '*' in dep: del rrecommends[dep] rsuggests = bb.utils.explode_dep_versions2(localdata.getVar("RSUGGESTS", True) or "") debian_cmp_remap(rsuggests) # Deliberately drop version information here, not wanted/supported by deb rprovides = dict.fromkeys(bb.utils.explode_dep_versions2(localdata.getVar("RPROVIDES", True) or ""), []) + rprovides = collections.OrderedDict(sorted(rprovides.items(), key=lambda x: x[0])) debian_cmp_remap(rprovides) rreplaces = bb.utils.explode_dep_versions2(localdata.getVar("RREPLACES", True) or "") debian_cmp_remap(rreplaces) rconflicts = bb.utils.explode_dep_versions2(localdata.getVar("RCONFLICTS", True) or "") debian_cmp_remap(rconflicts) if rdepends: - ctrlfile.write("Depends: %s\n" % unicode(bb.utils.join_deps(rdepends))) + ctrlfile.write("Depends: %s\n" % bb.utils.join_deps(rdepends)) if rsuggests: - ctrlfile.write("Suggests: %s\n" % unicode(bb.utils.join_deps(rsuggests))) + ctrlfile.write("Suggests: %s\n" % bb.utils.join_deps(rsuggests)) if rrecommends: - ctrlfile.write("Recommends: %s\n" % unicode(bb.utils.join_deps(rrecommends))) + ctrlfile.write("Recommends: %s\n" % bb.utils.join_deps(rrecommends)) if rprovides: - ctrlfile.write("Provides: %s\n" % unicode(bb.utils.join_deps(rprovides))) + ctrlfile.write("Provides: %s\n" % bb.utils.join_deps(rprovides)) if rreplaces: - ctrlfile.write("Replaces: %s\n" % unicode(bb.utils.join_deps(rreplaces))) + ctrlfile.write("Replaces: %s\n" % bb.utils.join_deps(rreplaces)) if rconflicts: - ctrlfile.write("Conflicts: %s\n" % unicode(bb.utils.join_deps(rconflicts))) + ctrlfile.write("Conflicts: %s\n" % bb.utils.join_deps(rconflicts)) ctrlfile.close() for script in ["preinst", "postinst", "prerm", "postrm"]: @@ -277,7 +277,7 @@ python do_package_deb () { scriptfile = open(os.path.join(controldir, script), 'w') except OSError: bb.utils.unlockfile(lf) - raise bb.build.FuncFailed("unable to open %s script file for writing." % script) + bb.fatal("unable to open %s script file for writing" % script) if scriptvar.startswith("#!"): pos = scriptvar.find("\n") + 1 @@ -293,7 +293,7 @@ python do_package_deb () { scriptfile.write(scriptvar[pos:]) scriptfile.write('\n') scriptfile.close() - os.chmod(os.path.join(controldir, script), 0755) + os.chmod(os.path.join(controldir, script), 0o755) conffiles_str = ' '.join(get_conffiles(pkg, d)) if conffiles_str: @@ -301,7 +301,7 @@ python do_package_deb () { conffiles = open(os.path.join(controldir, 'conffiles'), 'w') except OSError: bb.utils.unlockfile(lf) - raise bb.build.FuncFailed("unable to open conffiles for writing.") + bb.fatal("unable to open conffiles for writing") for f in conffiles_str.split(): if os.path.exists(oe.path.join(root, f)): conffiles.write('%s\n' % f) @@ -311,10 +311,11 @@ python do_package_deb () { ret = subprocess.call("PATH=\"%s\" dpkg-deb -b %s %s" % (localdata.getVar("PATH", True), root, pkgoutdir), shell=True) if ret != 0: bb.utils.unlockfile(lf) - raise bb.build.FuncFailed("dpkg-deb execution failed") + bb.fatal("dpkg-deb execution failed") cleanupcontrol(root) bb.utils.unlockfile(lf) + os.chdir(oldcwd) } # Indirect references to these vars do_package_write_deb[vardeps] += "PKGV PKGR PKGV DESCRIPTION SECTION PRIORITY MAINTAINER DPKG_ARCH PN HOMEPAGE" |