On 06/21/2017 12:09 PM, Jussi Kukkonen wrote:


On 20 June 2017 at 10:42, Tobias Hagelborn <[email protected] <mailto:[email protected]>> wrote:
 >
 > New devtool deploy-target option --strip which enables deploying
 > stripped binaries, saving some space on target.
 >
 > * Copies the files of ${D} into a new directory and strips them in place
 > * Used oe.package.strip_execs for stripping directory
 > * Added devtool.conf option "strip" for changing default behavior
 >
 > Config example:
 > [Deploy]
 > strip = true
 >
 > [YOCTO #11227]
 >
> Signed-off-by: Tobias Hagelborn <[email protected] <mailto:[email protected]>>
 > ---
 >  scripts/lib/devtool/deploy.py | 32 ++++++++++++++++++++++++++++----
 >  1 file changed, 28 insertions(+), 4 deletions(-)
 >
> diff --git a/scripts/lib/devtool/deploy.py b/scripts/lib/devtool/deploy.py
 > index 04c34cb..96b877e 100644
 > --- a/scripts/lib/devtool/deploy.py
 > +++ b/scripts/lib/devtool/deploy.py
 > @@ -16,12 +16,16 @@
 >  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 >  """Devtool plugin containing the deploy subcommands"""
 >
 > +import logging
 >  import os
 > +import shutil
 >  import subprocess
 > -import logging
 >  import tempfile
 > -import shutil
 > +
 > +import bb.utils
 >  import argparse_oe
 > +import oe
 > +
> from devtool import exec_fakeroot, setup_tinfoil, check_workspace_recipe, DevtoolError
 >
 >  logger = logging.getLogger('devtool')
> @@ -140,9 +144,9 @@ def _prepare_remote_script(deploy, verbose=False, dryrun=False, undeployall=Fals
 >      return '\n'.join(lines)
 >
 >
 > +
 >  def deploy(args, config, basepath, workspace):
 >      """Entry point for the devtool 'deploy' subcommand"""
 > -    import re
 >      import math
 >      import oe.recipeutils
 >
 > @@ -170,6 +174,17 @@ def deploy(args, config, basepath, workspace):
> 'recipe? If so, the install step has not installed '
 >                              'any files.' % args.recipename)
 >
 > +        if args.strip and not args.dry_run:
 > +            # Fakeroot copy to new destination
 > +            srcdir = recipe_outdir
> + recipe_outdir = os.path.join(rd.getVar('WORKDIR', True), 'deploy-target-stripped')
 > +            if os.path.isdir(recipe_outdir):
 > +                bb.utils.remove(recipe_outdir, True)
> + exec_fakeroot(rd, "cp -af %s %s" % (os.path.join(srcdir, '.'), recipe_outdir), shell=True) > + os.environ['PATH'] = ':'.join([os.environ['PATH'], rd.getVar('PATH', True) or '']) > + oe.package.strip_execs(args.recipename, recipe_outdir, rd.getVar('STRIP', True), rd.getVar('libdir', True),
 > +                        rd.getVar('base_libdir', True))
 > +
 >          filelist = []
 >          ftotalsize = 0
 >          for root, _, files in os.walk(recipe_outdir):
 > @@ -189,7 +204,6 @@ def deploy(args, config, basepath, workspace):
 >                  print('  %s' % item)
 >              return 0
 >
 > -
 >          extraoptions = ''
 >          if args.no_host_check:
> extraoptions += '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
 > @@ -301,6 +315,7 @@ def undeploy(args, config, basepath, workspace):
 >
 >  def register_commands(subparsers, context):
 >      """Register devtool subcommands from the deploy plugin"""
 > +
 >      parser_deploy = subparsers.add_parser('deploy-target',
> help='Deploy recipe output files to live target machine', > description='Deploys a recipe\'s build output (i.e. the output of the do_install task) to a live target machine over ssh. By default, any existing files will be preserved instead of being overwritten and will be restored if you run devtool undeploy-target. Note: this only deploys the recipe itself and not any runtime dependencies, so it is assumed that those have been installed on the target beforehand.',
 > @@ -313,6 +328,15 @@ def register_commands(subparsers, context):
> parser_deploy.add_argument('-p', '--no-preserve', help='Do not preserve existing files', action='store_true') > parser_deploy.add_argument('--no-check-space', help='Do not check for available space before deploying', action='store_true') > parser_deploy.add_argument('-P', '--port', default='22', help='Port to use for connection to the target')
 > +
> + strip_opts = parser_deploy.add_mutually_exclusive_group(required=False)
 > +    strip_opts.add_argument('-S', '--strip',
> + help='Strip executables prior to deploying (default: %(default)s). ' > + 'The default value of this option can be controlled by setting the strip option in the [Deploy] section to True or False.', > + default=oe.types.boolean(context.config.get('Deploy', 'strip', default='0')),
 > +                               action='store_true')

Autobuilder is complaining about this:

Exception: bb.process.ExecutionError: Execution of 'devtool --bbpath /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-x86-64/build/meta-poky:/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-x86-64/build/build:/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-x86-64/build/meta:/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-x86-64/build/meta-yocto-bsp --basepath /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r0/sdk-ext/image//opt/poky/2.3 create-workspace --create-only /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-x86-64/build/build/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0-r0/sdk-ext/image//opt/poky/2.3/workspace' failed with exit code 1:
Traceback (most recent call last):
File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-x86-64/build/scripts/devtool", line 351, in <module>
     ret = main()
File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-x86-64/build/scripts/devtool", line 329, in main
     plugin.register_commands(subparsers, context)
File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-x86-64/build/scripts/lib/devtool/deploy.py", line 336, in register_commands default=oe.types.boolean(context.config.get('Deploy', 'strip', default='0')),
AttributeError: module 'oe' has no attribute 'types'

See https://autobuilder.yocto.io/builders/nightly-x86-64/builds/333/steps/BuildImages_2/logs/stdio for context.


> + strip_opts.add_argument('--no-strip', help='Do not strip executables prior to deploy', dest='strip', action='store_false')
 > +
 >      parser_deploy.set_defaults(func=deploy)
 >
 >      parser_undeploy = subparsers.add_parser('undeploy-target',
 > --
 > 2.1.4
 >
 > --
 > _______________________________________________
 > Openembedded-core mailing list
> [email protected] <mailto:[email protected]>
 > http://lists.openembedded.org/mailman/listinfo/openembedded-core

Thanks for pointing this out Jussi,

I will send an updated version.

Cheers
Tobias
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to