All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] devtool: add package plugin that lets you create package via devtool
@ 2015-09-02 20:22 brendan.le.foll
  2015-09-02 21:58 ` Leonardo Sandoval
  0 siblings, 1 reply; 2+ messages in thread
From: brendan.le.foll @ 2015-09-02 20:22 UTC (permalink / raw)
  To: openembedded-core

From: Brendan Le Foll <brendan.le.foll@intel.com>

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
---
 scripts/lib/devtool/package.py | 62 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100644 scripts/lib/devtool/package.py

diff --git a/scripts/lib/devtool/package.py b/scripts/lib/devtool/package.py
new file mode 100644
index 0000000..bbc85b7
--- /dev/null
+++ b/scripts/lib/devtool/package.py
@@ -0,0 +1,62 @@
+# Development tool - package command plugin
+#
+# Copyright (C) 2014-2015 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 plugin containing the package subcommands"""
+
+import os
+import subprocess
+import logging
+from devtool import exec_build_env_command, setup_tinfoil, DevtoolError
+
+logger = logging.getLogger('devtool')
+
+def plugin_init(pluginlist):
+    """Plugin initialization"""
+    pass
+
+def package(args, config, basepath, workspace):
+    """Entry point for the devtool 'package' subcommand"""
+    import re
+    import bb
+    if not args.recipename in workspace:
+        raise DevtoolError("no recipe named %s in your workspace" %
+                           args.recipename)
+
+    try:
+        image_pkgtype = config.get('image_pkgtype', None)
+    except:
+        tinfoil = setup_tinfoil()
+        try:
+            tinfoil.prepare(config_only=True)
+            image_pkgtype = tinfoil.config_data.getVar('IMAGE_PKGTYPE', True)
+        finally:
+            tinfoil.shutdown()
+
+    package_task = config.get('Package', 'package_task', 'package_write_%s' % image_pkgtype)
+    try:
+        exec_build_env_command(config.init_path, basepath, 'bitbake -c %s %s' % (package_task, args.recipename), watch=True)
+    except bb.process.ExecutionError as e:
+        # We've already seen the output since watch=True, so just ensure we return something to the user
+        return e.exitcode
+    logger.info('Your packages are in %s/tmp/deploy/%s' % (basepath, image_pkgtype))
+
+    return 0
+
+def register_commands(subparsers, context):
+    """Register devtool subcommands from the package plugin"""
+    parser_package = subparsers.add_parser('package', help='Create packages for a recipe', description='Creates packages for a recipe\'s output files')
+    parser_package.add_argument('recipename', help='Recipe to package')
+    parser_package.set_defaults(func=package)
-- 
2.5.0



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] devtool: add package plugin that lets you create package via devtool
  2015-09-02 20:22 [PATCH v2] devtool: add package plugin that lets you create package via devtool brendan.le.foll
@ 2015-09-02 21:58 ` Leonardo Sandoval
  0 siblings, 0 replies; 2+ messages in thread
From: Leonardo Sandoval @ 2015-09-02 21:58 UTC (permalink / raw)
  To: brendan.le.foll, openembedded-core



On 09/02/2015 03:22 PM, brendan.le.foll@intel.com wrote:
> From: Brendan Le Foll <brendan.le.foll@intel.com>
>
> Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
> ---
>   scripts/lib/devtool/package.py | 62 ++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 62 insertions(+)
>   create mode 100644 scripts/lib/devtool/package.py
>
> diff --git a/scripts/lib/devtool/package.py b/scripts/lib/devtool/package.py
> new file mode 100644
> index 0000000..bbc85b7
> --- /dev/null
> +++ b/scripts/lib/devtool/package.py
> @@ -0,0 +1,62 @@
> +# Development tool - package command plugin
> +#
> +# Copyright (C) 2014-2015 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 plugin containing the package subcommands"""
> +
> +import os
> +import subprocess
> +import logging
> +from devtool import exec_build_env_command, setup_tinfoil, DevtoolError
> +
> +logger = logging.getLogger('devtool')
> +
> +def plugin_init(pluginlist):
> +    """Plugin initialization"""
> +    pass
> +
> +def package(args, config, basepath, workspace):
> +    """Entry point for the devtool 'package' subcommand"""
> +    import re

just some minor details: the regex library is not being used, so it can 
be removed. Also, the import bb can be moved to the file's head, and 
just include what you need from it

from bb.process import ExecutionError

> +    import bb
> +    if not args.recipename in workspace:
> +        raise DevtoolError("no recipe named %s in your workspace" %
> +                           args.recipename)
> +
> +    try:
> +        image_pkgtype = config.get('image_pkgtype', None)
> +    except:
> +        tinfoil = setup_tinfoil()
> +        try:
> +            tinfoil.prepare(config_only=True)
> +            image_pkgtype = tinfoil.config_data.getVar('IMAGE_PKGTYPE', True)
> +        finally:
> +            tinfoil.shutdown()
> +
> +    package_task = config.get('Package', 'package_task', 'package_write_%s' % image_pkgtype)
> +    try:
> +        exec_build_env_command(config.init_path, basepath, 'bitbake -c %s %s' % (package_task, args.recipename), watch=True)
> +    except bb.process.ExecutionError as e:
> +        # We've already seen the output since watch=True, so just ensure we return something to the user
> +        return e.exitcode
> +    logger.info('Your packages are in %s/tmp/deploy/%s' % (basepath, image_pkgtype))
> +
> +    return 0
> +
> +def register_commands(subparsers, context):
> +    """Register devtool subcommands from the package plugin"""
> +    parser_package = subparsers.add_parser('package', help='Create packages for a recipe', description='Creates packages for a recipe\'s output files')
> +    parser_package.add_argument('recipename', help='Recipe to package')
> +    parser_package.set_defaults(func=package)
>


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-09-02 21:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-02 20:22 [PATCH v2] devtool: add package plugin that lets you create package via devtool brendan.le.foll
2015-09-02 21:58 ` Leonardo Sandoval

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.