[OE-core] [PATCH v3 4/4] devtool: deploy-target: Support stripped libs and execs
Jussi Kukkonen
jussi.kukkonen at intel.com
Wed Jun 21 10:09:18 UTC 2017
On 20 June 2017 at 10:42, Tobias Hagelborn <tobias.hagelborn at axis.com>
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 <tobiasha at axis.com>
> ---
> 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
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20170621/9a1a5698/attachment-0002.html>
More information about the Openembedded-core
mailing list