summaryrefslogtreecommitdiffstats
path: root/import-layers/yocto-poky/scripts/lib/devtool/export.py
diff options
context:
space:
mode:
Diffstat (limited to 'import-layers/yocto-poky/scripts/lib/devtool/export.py')
-rw-r--r--import-layers/yocto-poky/scripts/lib/devtool/export.py119
1 files changed, 0 insertions, 119 deletions
diff --git a/import-layers/yocto-poky/scripts/lib/devtool/export.py b/import-layers/yocto-poky/scripts/lib/devtool/export.py
deleted file mode 100644
index 13ee258e7..000000000
--- a/import-layers/yocto-poky/scripts/lib/devtool/export.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# Development tool - export command plugin
-#
-# Copyright (C) 2014-2017 Intel Corporation
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-"""Devtool export plugin"""
-
-import os
-import argparse
-import tarfile
-import logging
-import datetime
-import json
-
-logger = logging.getLogger('devtool')
-
-# output files
-default_arcname_prefix = "workspace-export"
-metadata = '.export_metadata'
-
-def export(args, config, basepath, workspace):
- """Entry point for the devtool 'export' subcommand"""
-
- def add_metadata(tar):
- """Archive the workspace object"""
- # finally store the workspace metadata
- with open(metadata, 'w') as fd:
- fd.write(json.dumps((config.workspace_path, workspace)))
- tar.add(metadata)
- os.unlink(metadata)
-
- def add_recipe(tar, recipe, data):
- """Archive recipe with proper arcname"""
- # Create a map of name/arcnames
- arcnames = []
- for key, name in data.items():
- if name:
- if key == 'srctree':
- # all sources, no matter where are located, goes into the sources directory
- arcname = 'sources/%s' % recipe
- else:
- arcname = name.replace(config.workspace_path, '')
- arcnames.append((name, arcname))
-
- for name, arcname in arcnames:
- tar.add(name, arcname=arcname)
-
-
- # Make sure workspace is non-empty and possible listed include/excluded recipes are in workspace
- if not workspace:
- logger.info('Workspace contains no recipes, nothing to export')
- return 0
- else:
- for param, recipes in {'include':args.include,'exclude':args.exclude}.items():
- for recipe in recipes:
- if recipe not in workspace:
- logger.error('Recipe (%s) on %s argument not in the current workspace' % (recipe, param))
- return 1
-
- name = args.file
-
- default_name = "%s-%s.tar.gz" % (default_arcname_prefix, datetime.datetime.now().strftime('%Y%m%d%H%M%S'))
- if not name:
- name = default_name
- else:
- # if name is a directory, append the default name
- if os.path.isdir(name):
- name = os.path.join(name, default_name)
-
- if os.path.exists(name) and not args.overwrite:
- logger.error('Tar archive %s exists. Use --overwrite/-o to overwrite it')
- return 1
-
- # if all workspace is excluded, quit
- if not len(set(workspace.keys()).difference(set(args.exclude))):
- logger.warn('All recipes in workspace excluded, nothing to export')
- return 0
-
- exported = []
- with tarfile.open(name, 'w:gz') as tar:
- if args.include:
- for recipe in args.include:
- add_recipe(tar, recipe, workspace[recipe])
- exported.append(recipe)
- else:
- for recipe, data in workspace.items():
- if recipe not in args.exclude:
- add_recipe(tar, recipe, data)
- exported.append(recipe)
-
- add_metadata(tar)
-
- logger.info('Tar archive created at %s with the following recipes: %s' % (name, ', '.join(exported)))
- return 0
-
-def register_commands(subparsers, context):
- """Register devtool export subcommands"""
- parser = subparsers.add_parser('export',
- help='Export workspace into a tar archive',
- description='Export one or more recipes from current workspace into a tar archive',
- group='advanced')
-
- parser.add_argument('--file', '-f', help='Output archive file name')
- parser.add_argument('--overwrite', '-o', action="store_true", help='Overwrite previous export tar archive')
- group = parser.add_mutually_exclusive_group()
- group.add_argument('--include', '-i', nargs='+', default=[], help='Include recipes into the tar archive')
- group.add_argument('--exclude', '-e', nargs='+', default=[], help='Exclude recipes into the tar archive')
- parser.set_defaults(func=export)
OpenPOWER on IntegriCloud