From 9e0a6b2e6f16185f8032d36b77d40802bc388987 Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Tue, 22 Sep 2015 17:21:39 +0100 Subject: devtool / recipetool: add handling for binary-only packages Add a means of creating recipes for package files or archives that contain a directory structure to be installed verbatim, for example an rpm file. (We mostly just re-use bin_package here and skip some of the normal build system checks.) This support is available in "recipetool create" and "devtool add" which wraps the former. Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- scripts/lib/recipetool/create.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'scripts/lib/recipetool/create.py') diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py index 409b255f5f..844073bf59 100644 --- a/scripts/lib/recipetool/create.py +++ b/scripts/lib/recipetool/create.py @@ -104,6 +104,10 @@ def create_recipe(args): if '://' in args.source: # Fetch a URL fetchuri = urlparse.urldefrag(args.source)[0] + if args.binary: + # Assume the archive contains the directory structure verbatim + # so we need to extract to a subdirectory + fetchuri += ';subdir=%s' % os.path.splitext(os.path.basename(urlparse.urlsplit(fetchuri).path))[0] srcuri = fetchuri rev_re = re.compile(';rev=([^;]+)') res = rev_re.search(srcuri) @@ -226,6 +230,10 @@ def create_recipe(args): lines_after.append('PACKAGE_ARCH = "%s"' % pkgarch) lines_after.append('') + if args.binary: + lines_after.append('INSANE_SKIP_${PN} += "already-stripped"') + lines_after.append('') + # Find all plugins that want to register handlers handlers = [] for plugin in plugins: @@ -235,6 +243,11 @@ def create_recipe(args): # Apply the handlers classes = [] handled = [] + + if args.binary: + classes.append('bin_package') + handled.append('buildsystem') + for handler in handlers: handler.process(srctree, classes, lines_before, lines_after, handled) @@ -426,5 +439,6 @@ def register_command(subparsers): parser_create.add_argument('-m', '--machine', help='Make recipe machine-specific as opposed to architecture-specific', action='store_true') parser_create.add_argument('-x', '--extract-to', metavar='EXTRACTPATH', help='Assuming source is a URL, fetch it and extract it to the directory specified as %(metavar)s') parser_create.add_argument('-V', '--version', help='Version to use within recipe (PV)') + parser_create.add_argument('-b', '--binary', help='Treat the source tree as something that should be installed verbatim (no compilation, same directory structure)', action='store_true') parser_create.set_defaults(func=create_recipe) -- cgit 1.2.3-korg