[oe-commits] [bitbake] 04/40: toaster: Remove old toaster config loading mechanism

git at git.openembedded.org git at git.openembedded.org
Wed Aug 10 23:11:47 UTC 2016


rpurdie pushed a commit to branch master
in repository bitbake.

commit 3edd33aff2b9eef82090dc4f9b5461f901aec8be
Author: Michael Wood <michael.g.wood at intel.com>
AuthorDate: Mon Aug 1 19:49:43 2016 +0100

    toaster: Remove old toaster config loading mechanism
    
    This has been replaced using django's inbuilt loaddata.
    Django command documented at:
    https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-loaddata
    
    Signed-off-by: Michael Wood <michael.g.wood at intel.com>
---
 bin/toaster                                        |  15 --
 .../management/commands/checksettings.py           |  33 ----
 .../bldcontrol/management/commands/loadconf.py     | 179 ---------------------
 3 files changed, 227 deletions(-)

diff --git a/bin/toaster b/bin/toaster
index 80d07ab..e35bfce 100755
--- a/bin/toaster
+++ b/bin/toaster
@@ -101,7 +101,6 @@ stop_system()
     fi
     webserverKillAll
     # unset exported variables
-    unset TOASTER_CONF
     unset TOASTER_DIR
     unset BITBAKE_UI
     unset BBBASEDIR
@@ -154,23 +153,9 @@ if [ -n "$TEMPLATECONF" ]; then
         if [ -d "$OEROOT/$TEMPLATECONF" ]; then
             TEMPLATECONF="$OEROOT/$TEMPLATECONF"
         fi
-        if [ ! -d "$TEMPLATECONF" ]; then
-            echo >&2 "Error: '$TEMPLATECONF' must be a directory containing toasterconf.json"
-            return 1
-        fi
     fi
 fi
 
-if [ "$TOASTER_CONF" = "" ]; then
-    TOASTER_CONF="$TEMPLATECONF/toasterconf.json"
-    export TOASTER_CONF=$(python3 -c "import os; print(os.path.realpath('$TOASTER_CONF'))")
-fi
-
-if [ ! -f $TOASTER_CONF ]; then
-    echo "$TOASTER_CONF configuration file not found. Set TOASTER_CONF to specify file or fix .templateconf"
-    return 1
-fi
-
 # this defines the dir toaster will use for
 # 1) clones of layers (in _toaster_clones )
 # 2) the build dir (in build)
diff --git a/lib/toaster/bldcontrol/management/commands/checksettings.py b/lib/toaster/bldcontrol/management/commands/checksettings.py
index fcee8b0..0dc55f6 100644
--- a/lib/toaster/bldcontrol/management/commands/checksettings.py
+++ b/lib/toaster/bldcontrol/management/commands/checksettings.py
@@ -26,39 +26,6 @@ class Command(NoArgsCommand):
         super(Command, self).__init__(*args, **kwargs)
         self.guesspath = DN(DN(DN(DN(DN(DN(DN(__file__)))))))
 
-    def _find_first_path_for_file(self, startdirectory, filename, level=0):
-        if level < 0:
-            return None
-        dirs = []
-        for i in os.listdir(startdirectory):
-            j = os.path.join(startdirectory, i)
-            if os.path.isfile(j):
-                if i == filename:
-                    return startdirectory
-            elif os.path.isdir(j):
-                dirs.append(j)
-        for j in dirs:
-            ret = self._find_first_path_for_file(j, filename, level - 1)
-            if ret is not None:
-                return ret
-        return None
-
-    def _recursive_list_directories(self, startdirectory, level=0):
-        if level < 0:
-            return []
-        dirs = []
-        try:
-            for i in os.listdir(startdirectory):
-                j = os.path.join(startdirectory, i)
-                if os.path.isdir(j):
-                    dirs.append(j)
-        except OSError:
-            pass
-        for j in dirs:
-            dirs = dirs + self._recursive_list_directories(j, level - 1)
-        return dirs
-
-
     def _verify_build_environment(self):
         # provide a local build env. This will be extended later to include non local
         if BuildEnvironment.objects.count() == 0:
diff --git a/lib/toaster/bldcontrol/management/commands/loadconf.py b/lib/toaster/bldcontrol/management/commands/loadconf.py
deleted file mode 100644
index 4f8c9c6..0000000
--- a/lib/toaster/bldcontrol/management/commands/loadconf.py
+++ /dev/null
@@ -1,179 +0,0 @@
-from django.core.management.base import BaseCommand, CommandError
-from orm.models import LayerSource, ToasterSetting, Layer, Layer_Version
-from orm.models import BitbakeVersion, Release, ReleaseDefaultLayer
-from django.db import IntegrityError
-import os
-
-from .checksettings import DN
-
-import logging
-logger = logging.getLogger("toaster")
-
-# Temporary old code to support old toasterconf.json
-def _reduce_canon_path(path):
-    components = []
-    for c in path.split("/"):
-        if c == "..":
-            del components[-1]
-        elif c == ".":
-            pass
-        else:
-            components.append(c)
-    if len(components) < 2:
-        components.append('')
-    return "/".join(components)
-# End temp code
-
-class Command(BaseCommand):
-    help = "Loads a toasterconf.json file in the database"
-    args = "filepath"
-
-
-
-    def _import_layer_config(self, filepath):
-        if not os.path.exists(filepath) or not os.path.isfile(filepath):
-            raise Exception("Failed to find toaster config file %s ." % filepath)
-
-        import json
-        data = json.loads(open(filepath, "r").read())
-
-        # verify config file validity before updating settings
-        for i in ['bitbake', 'releases', 'defaultrelease', 'config']:
-            assert i in data
-
-        def _read_git_url_from_local_repository(address):
-            url = None
-            # we detect the remote name at runtime
-            import subprocess
-            (remote, remote_name) = address.split(":", 1)
-            cmd = subprocess.Popen("git remote -v", shell=True, cwd = os.path.dirname(filepath), stdout=subprocess.PIPE, stderr = subprocess.PIPE)
-            (out,err) = cmd.communicate()
-            if cmd.returncode != 0:
-                logging.warning("Error while importing layer vcs_url: git error: %s" % err)
-            for line in out.decode('utf-8').split("\n"):
-                try:
-                    (name, path) = line.split("\t", 1)
-                    if name == remote_name:
-                        url = path.split(" ")[0]
-                        break
-                except ValueError:
-                    pass
-            if url == None:
-                logging.warning("Error while looking for remote \"%s\" in \"%s\"" % (remote_name, out))
-            return url
-
-
-        # import bitbake data
-        for bvi in data['bitbake']:
-            bvo, created = BitbakeVersion.objects.get_or_create(name=bvi['name'])
-            if bvi['giturl'].startswith("remote:"):
-                bvo.giturl = _read_git_url_from_local_repository(bvi['giturl'])
-                if bvo.giturl is None:
-                    logger.error("The toaster config file references the local git repo, but Toaster cannot detect it.\nYour local configuration for bitbake version %s is invalid. Make sure that the toasterconf.json file is correct." % bvi['name'])
-
-            if bvo.giturl is None:
-                bvo.giturl = bvi['giturl']
-            bvo.branch = bvi['branch']
-            bvo.dirpath = bvi['dirpath']
-            bvo.save()
-
-        for ri in data['releases']:
-            bvo = BitbakeVersion.objects.get(name = ri['bitbake'])
-            assert bvo is not None
-
-            ro, created = Release.objects.get_or_create(name = ri['name'], bitbake_version = bvo, branch_name = ri['branch'])
-            ro.description = ri['description']
-            ro.helptext = ri['helptext']
-            ro.save()
-
-            for dli in ri['defaultlayers']:
-                # find layers with the same name
-                ReleaseDefaultLayer.objects.get_or_create( release = ro, layer_name = dli)
-
-        # NOTE Temporary old code to handle old toasterconf.json. All this to
-        # be removed after rewrite of config loading mechanism
-        for lsi in data['layersources']:
-            assert 'sourcetype' in lsi
-            assert 'apiurl' in lsi
-            assert 'name' in lsi
-            assert 'branches' in lsi
-
-            if "local" in lsi['sourcetype']:
-                ls = LayerSource.TYPE_LOCAL
-            else:
-                ls = LayerSource.TYPE_LAYERINDEX
-
-            layer_releases = []
-            for branchname in lsi['branches']:
-                try:
-                    release = Release.objects.get(branch_name=branchname)
-                    layer_releases.append(release)
-                except Release.DoesNotExist:
-                    logger.error("Layer set for %s but no release matches this"
-                                 "in the config" % branchname)
-
-            apiurl = _reduce_canon_path(
-                os.path.join(DN(os.path.abspath(filepath)), lsi['apiurl']))
-
-            if 'layers' in lsi:
-                for layerinfo in lsi['layers']:
-                    lo, created = Layer.objects.get_or_create(
-                        name=layerinfo['name'],
-                        vcs_url=layerinfo['vcs_url'],
-                    )
-                    if layerinfo['local_path'].startswith("/"):
-                        lo.local_path = layerinfo['local_path']
-                    else:
-                        lo.local_path = _reduce_canon_path(
-                            os.path.join(apiurl, layerinfo['local_path']))
-
-                    if layerinfo['vcs_url'].startswith("remote:"):
-                        lo.vcs_url = _read_git_url_from_local_repository(
-                            layerinfo['vcs_url'])
-                        if lo.vcs_url is None:
-                            logger.error("The toaster config file references"
-                                         " the local git repo, but Toaster "
-                                         "cannot detect it.\nYour local "
-                                         "configuration for layer %s is "
-                                         "invalid. Make sure that the "
-                                         "toasterconf.json file is correct."
-                                         % layerinfo['name'])
-
-                    if lo.vcs_url is None:
-                        lo.vcs_url = layerinfo['vcs_url']
-
-                    if 'layer_index_url' in layerinfo:
-                        lo.layer_index_url = layerinfo['layer_index_url']
-                    lo.save()
-
-                    for release in layer_releases:
-                        lvo, created = Layer_Version.objects.get_or_create(
-                            layer_source=ls,
-                            release=release,
-                            commit=release.branch_name,
-                            branch=release.branch_name,
-                            layer=lo)
-                        lvo.dirpath = layerinfo['dirpath']
-                        lvo.save()
-        # END temporary code
-
-
-        # set default release
-        if ToasterSetting.objects.filter(name = "DEFAULT_RELEASE").count() > 0:
-            ToasterSetting.objects.filter(name = "DEFAULT_RELEASE").update(value = data['defaultrelease'])
-        else:
-            ToasterSetting.objects.create(name = "DEFAULT_RELEASE", value = data['defaultrelease'])
-
-        # set default config variables
-        for configname in data['config']:
-            if ToasterSetting.objects.filter(name = "DEFCONF_" + configname).count() > 0:
-                ToasterSetting.objects.filter(name = "DEFCONF_" + configname).update(value = data['config'][configname])
-            else:
-                ToasterSetting.objects.create(name = "DEFCONF_" + configname, value = data['config'][configname])
-
-
-    def handle(self, *args, **options):
-        if len(args) == 0:
-            raise CommandError("Need a path to the toasterconf.json file")
-        filepath = args[0]
-        self._import_layer_config(filepath)

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list