]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
naoki: Make comfortable package shell.
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 18 Sep 2010 18:03:06 +0000 (20:03 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 18 Sep 2010 18:03:06 +0000 (20:03 +0200)
naoki/build.py
naoki/environ.py

index 9bc7d927c4cb0b8d384a6e61fd5a76e5c0ebb430..259d6a00cf1113da3207879b72a03484e0fc0193 100644 (file)
@@ -105,5 +105,37 @@ class Jobs(object):
                        self.__jobs.remove(job)
 
 
-class PackageShell(environ.Shell):
-       pass
+class PackageShell(Build):
+       def __init__(self, *args, **kwargs):
+               Build.__init__(self, *args, **kwargs)
+
+               # Add shell packages to have a little bit more
+               # comfort in here...
+               for dependency in config["shell_packages"]:
+                       dependency = dependencies.Dependency(dependency)
+                       self.dependency_set.add_dependency(dependency)
+
+       def shell(self, **settings):
+               # Resolve the dependencies
+               try:
+                       self.dependency_set.resolve()
+               except DependencyResolutionError, e:
+                       if self.settings["ignore_dependency_errors"]:
+                               logging.warning("Ignoring dependency errors: %s" % e)
+                       else:
+                               raise
+
+               e = environ.Build(self.package, build_id="%s" % self.id)
+
+               # Extract all tools
+               for package in self.dependency_set.packages:
+                       e.extract(package)
+
+               # Download the source tarballs
+               self.package.source_download()
+
+               # Preparing source...
+               e.make("prepare")
+
+               # Run the shell
+               e.shell()
index ee5fc621848e4485fd4bf96e096e8512d44dbd3a..108aa7f06028acdb3e160b33e5197ceb9d2f2eb1 100644 (file)
@@ -315,12 +315,7 @@ class Build(_Environment):
                return self.doChroot("make -C %s -f %s %s" % \
                        (os.path.dirname(file), file, target), shell=True)
 
-
-class Shell(Build):
        def shell(self, args=[]):
-               # Preparing source...
-               self.make("prepare")
-
                command = "chroot %s /usr/src/tools/chroot-shell %s" % \
                        (self.chrootPath(), " ".join(args))