summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2015-09-22 17:21:24 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-09-23 09:53:14 +0100
commitae788fbd46f8a83d4c1776eeb4457ed5bb61915f (patch)
tree409a44ee48ca6b70d7bc26ea9ae3354063f82899 /scripts
parent99cd79d8be25c9dca232c3c197b09ea3961ad729 (diff)
downloadpoky-ae788fbd46f8a83d4c1776eeb4457ed5bb61915f.tar.gz
devtool: check that source tree still exists
Sometimes, particularly if you extracted the source to /tmp which is on tmpfs, the external source tree that is being pointed to may no longer exist when you come to run "devtool build" or "devtool update-recipe" etc. Make all of the commands that need to check for a recipe being in the workspace call a single function and have that function additionally check the source tree still exists where appropriate. (From OE-Core rev: 0c3f289576a2ab35b1d1d8854d6763553cc3bf09) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lib/devtool/__init__.py14
-rw-r--r--scripts/lib/devtool/build.py6
-rw-r--r--scripts/lib/devtool/deploy.py7
-rw-r--r--scripts/lib/devtool/package.py6
-rw-r--r--scripts/lib/devtool/standard.py11
5 files changed, 25 insertions, 19 deletions
diff --git a/scripts/lib/devtool/__init__.py b/scripts/lib/devtool/__init__.py
index 404d3e6645..fb699b5c61 100644
--- a/scripts/lib/devtool/__init__.py
+++ b/scripts/lib/devtool/__init__.py
@@ -136,3 +136,17 @@ def parse_recipe(config, tinfoil, pn, appends):
136 not path.startswith(config.workspace_path)] 136 not path.startswith(config.workspace_path)]
137 return oe.recipeutils.parse_recipe(recipefile, append_files, 137 return oe.recipeutils.parse_recipe(recipefile, append_files,
138 tinfoil.config_data) 138 tinfoil.config_data)
139
140def check_workspace_recipe(workspace, pn, checksrc=True):
141 """
142 Check that a recipe is in the workspace and (optionally) that source
143 is present.
144 """
145 if not pn in workspace:
146 raise DevtoolError("No recipe named '%s' in your workspace" % pn)
147 if checksrc:
148 srctree = workspace[pn]['srctree']
149 if not os.path.exists(srctree):
150 raise DevtoolError("Source tree %s for recipe %s does not exist" % (srctree, pn))
151 if not os.listdir(srctree):
152 raise DevtoolError("Source tree %s for recipe %s is empty" % (srctree, pn))
diff --git a/scripts/lib/devtool/build.py b/scripts/lib/devtool/build.py
index 335aff5491..9b58858a62 100644
--- a/scripts/lib/devtool/build.py
+++ b/scripts/lib/devtool/build.py
@@ -21,7 +21,7 @@ import bb
21import logging 21import logging
22import argparse 22import argparse
23import tempfile 23import tempfile
24from devtool import exec_build_env_command, DevtoolError 24from devtool import exec_build_env_command, check_workspace_recipe, DevtoolError
25 25
26logger = logging.getLogger('devtool') 26logger = logging.getLogger('devtool')
27 27
@@ -42,9 +42,7 @@ def _create_conf_file(values, conf_file=None):
42 42
43def build(args, config, basepath, workspace): 43def build(args, config, basepath, workspace):
44 """Entry point for the devtool 'build' subcommand""" 44 """Entry point for the devtool 'build' subcommand"""
45 if not args.recipename in workspace: 45 check_workspace_recipe(workspace, args.recipename)
46 raise DevtoolError("no recipe named %s in your workspace" %
47 args.recipename)
48 46
49 build_task = config.get('Build', 'build_task', 'populate_sysroot') 47 build_task = config.get('Build', 'build_task', 'populate_sysroot')
50 48
diff --git a/scripts/lib/devtool/deploy.py b/scripts/lib/devtool/deploy.py
index fa93adf181..41b666ff96 100644
--- a/scripts/lib/devtool/deploy.py
+++ b/scripts/lib/devtool/deploy.py
@@ -19,7 +19,7 @@
19import os 19import os
20import subprocess 20import subprocess
21import logging 21import logging
22from devtool import exec_fakeroot, setup_tinfoil, DevtoolError 22from devtool import exec_fakeroot, setup_tinfoil, check_workspace_recipe, DevtoolError
23 23
24logger = logging.getLogger('devtool') 24logger = logging.getLogger('devtool')
25 25
@@ -28,9 +28,8 @@ def deploy(args, config, basepath, workspace):
28 import re 28 import re
29 import oe.recipeutils 29 import oe.recipeutils
30 30
31 if not args.recipename in workspace: 31 check_workspace_recipe(workspace, args.recipename, checksrc=False)
32 raise DevtoolError("no recipe named %s in your workspace" % 32
33 args.recipename)
34 try: 33 try:
35 host, destdir = args.target.split(':') 34 host, destdir = args.target.split(':')
36 except ValueError: 35 except ValueError:
diff --git a/scripts/lib/devtool/package.py b/scripts/lib/devtool/package.py
index 3a7a36b600..28ecfed7a7 100644
--- a/scripts/lib/devtool/package.py
+++ b/scripts/lib/devtool/package.py
@@ -20,7 +20,7 @@ import os
20import subprocess 20import subprocess
21import logging 21import logging
22from bb.process import ExecutionError 22from bb.process import ExecutionError
23from devtool import exec_build_env_command, setup_tinfoil, DevtoolError 23from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, DevtoolError
24 24
25logger = logging.getLogger('devtool') 25logger = logging.getLogger('devtool')
26 26
@@ -30,9 +30,7 @@ def plugin_init(pluginlist):
30 30
31def package(args, config, basepath, workspace): 31def package(args, config, basepath, workspace):
32 """Entry point for the devtool 'package' subcommand""" 32 """Entry point for the devtool 'package' subcommand"""
33 if not args.recipename in workspace: 33 check_workspace_recipe(workspace, args.recipename)
34 raise DevtoolError("no recipe named %s in your workspace" %
35 args.recipename)
36 34
37 image_pkgtype = config.get('Package', 'image_pkgtype', '') 35 image_pkgtype = config.get('Package', 'image_pkgtype', '')
38 if not image_pkgtype: 36 if not image_pkgtype:
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index d5900b4f82..018ef2a987 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -25,7 +25,7 @@ import logging
25import argparse 25import argparse
26import scriptutils 26import scriptutils
27import errno 27import errno
28from devtool import exec_build_env_command, setup_tinfoil, DevtoolError 28from devtool import exec_build_env_command, setup_tinfoil, check_workspace_recipe, DevtoolError
29from devtool import parse_recipe 29from devtool import parse_recipe
30 30
31logger = logging.getLogger('devtool') 31logger = logging.getLogger('devtool')
@@ -776,9 +776,7 @@ def _guess_recipe_update_mode(srctree, rdata):
776 776
777def update_recipe(args, config, basepath, workspace): 777def update_recipe(args, config, basepath, workspace):
778 """Entry point for the devtool 'update-recipe' subcommand""" 778 """Entry point for the devtool 'update-recipe' subcommand"""
779 if not args.recipename in workspace: 779 check_workspace_recipe(workspace, args.recipename)
780 raise DevtoolError("no recipe named %s in your workspace" %
781 args.recipename)
782 780
783 if args.append: 781 if args.append:
784 if not os.path.exists(args.append): 782 if not os.path.exists(args.append):
@@ -830,9 +828,8 @@ def reset(args, config, basepath, workspace):
830 if args.recipename: 828 if args.recipename:
831 if args.all: 829 if args.all:
832 raise DevtoolError("Recipe cannot be specified if -a/--all is used") 830 raise DevtoolError("Recipe cannot be specified if -a/--all is used")
833 elif not args.recipename in workspace: 831 else:
834 raise DevtoolError("no recipe named %s in your workspace" % 832 check_workspace_recipe(workspace, args.recipename, checksrc=False)
835 args.recipename)
836 elif not args.all: 833 elif not args.all:
837 raise DevtoolError("Recipe must be specified, or specify -a/--all to " 834 raise DevtoolError("Recipe must be specified, or specify -a/--all to "
838 "reset all recipes") 835 "reset all recipes")