diff options
Diffstat (limited to 'scripts/lib')
-rw-r--r-- | scripts/lib/recipetool/create.py | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py index cb1c80434c..ab265318e5 100644 --- a/scripts/lib/recipetool/create.py +++ b/scripts/lib/recipetool/create.py | |||
@@ -234,7 +234,8 @@ class RecipeHandler(object): | |||
234 | if deps: | 234 | if deps: |
235 | values['DEPENDS'] = ' '.join(deps) | 235 | values['DEPENDS'] = ' '.join(deps) |
236 | 236 | ||
237 | def genfunction(self, outlines, funcname, content, python=False, forcespace=False): | 237 | @staticmethod |
238 | def genfunction(outlines, funcname, content, python=False, forcespace=False): | ||
238 | if python: | 239 | if python: |
239 | prefix = 'python ' | 240 | prefix = 'python ' |
240 | else: | 241 | else: |
@@ -460,8 +461,8 @@ def create_recipe(args): | |||
460 | 461 | ||
461 | if pkgfile: | 462 | if pkgfile: |
462 | if pkgfile.endswith(('.deb', '.ipk')): | 463 | if pkgfile.endswith(('.deb', '.ipk')): |
463 | stdout, _ = bb.process.run('ar x %s control.tar.gz' % pkgfile, cwd=tmpfdir) | 464 | stdout, _ = bb.process.run('ar x %s' % pkgfile, cwd=tmpfdir) |
464 | stdout, _ = bb.process.run('tar xf control.tar.gz ./control', cwd=tmpfdir) | 465 | stdout, _ = bb.process.run('tar xf control.tar.gz', cwd=tmpfdir) |
465 | values = convert_debian(tmpfdir) | 466 | values = convert_debian(tmpfdir) |
466 | extravalues.update(values) | 467 | extravalues.update(values) |
467 | elif pkgfile.endswith(('.rpm', '.srpm')): | 468 | elif pkgfile.endswith(('.rpm', '.srpm')): |
@@ -722,6 +723,15 @@ def create_recipe(args): | |||
722 | if not bbclassextend: | 723 | if not bbclassextend: |
723 | lines_after.append('BBCLASSEXTEND = "native"') | 724 | lines_after.append('BBCLASSEXTEND = "native"') |
724 | 725 | ||
726 | postinst = ("postinst", extravalues.pop('postinst', None)) | ||
727 | postrm = ("postrm", extravalues.pop('postrm', None)) | ||
728 | preinst = ("preinst", extravalues.pop('preinst', None)) | ||
729 | prerm = ("prerm", extravalues.pop('prerm', None)) | ||
730 | funcs = [postinst, postrm, preinst, prerm] | ||
731 | for func in funcs: | ||
732 | if func[1]: | ||
733 | RecipeHandler.genfunction(lines_after, 'pkg_%s_${PN}' % func[0], func[1]) | ||
734 | |||
725 | outlines = [] | 735 | outlines = [] |
726 | outlines.extend(lines_before) | 736 | outlines.extend(lines_before) |
727 | if classes: | 737 | if classes: |
@@ -1058,6 +1068,25 @@ def convert_debian(debpath): | |||
1058 | varname = value_map.get(key, None) | 1068 | varname = value_map.get(key, None) |
1059 | if varname: | 1069 | if varname: |
1060 | values[varname] = value | 1070 | values[varname] = value |
1071 | postinst = os.path.join(debpath, 'postinst') | ||
1072 | postrm = os.path.join(debpath, 'postrm') | ||
1073 | preinst = os.path.join(debpath, 'preinst') | ||
1074 | prerm = os.path.join(debpath, 'prerm') | ||
1075 | sfiles = [postinst, postrm, preinst, prerm] | ||
1076 | for sfile in sfiles: | ||
1077 | if os.path.isfile(sfile): | ||
1078 | logger.info("Converting %s file to recipe function..." % | ||
1079 | os.path.basename(sfile).upper()) | ||
1080 | content = [] | ||
1081 | with open(sfile) as f: | ||
1082 | for line in f: | ||
1083 | if "#!/" in line: | ||
1084 | continue | ||
1085 | line = line.rstrip("\n") | ||
1086 | if line.strip(): | ||
1087 | content.append(line) | ||
1088 | if content: | ||
1089 | values[os.path.basename(f.name)] = content | ||
1061 | 1090 | ||
1062 | #if depends: | 1091 | #if depends: |
1063 | # values['DEPENDS'] = ' '.join(depends) | 1092 | # values['DEPENDS'] = ' '.join(depends) |