]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
naoki: Fix tarball download function.
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 19 Mar 2010 17:50:38 +0000 (18:50 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 19 Mar 2010 17:50:38 +0000 (18:50 +0100)
config/naoki.conf
naoki/__init__.py
naoki/backend.py
naoki/constants.py

index f39182fe943804bbd82afda1bb3528e9626da646..cdf8db4f2c3ec93b3a90260be1e5720f492c119e 100644 (file)
@@ -25,3 +25,9 @@ slogan = "Gluttony"
 
 ; Counter of toolchain version
 version = 0
+
+
+[sources]
+
+; Where do we get the tarballs from?
+download_url = http://source.ipfire.org/source-3.x
index df7474ab9dfd389c8d8499ffb77ab7890844cb7b..540c8af54dfc3090a8600bfe1b1a4be86852205c 100644 (file)
@@ -82,7 +82,10 @@ class Naoki(object):
                        if packages_sorted == packages:
                                self.log.warn("Packages were resorted for build: %s" % packages_sorted)
                        packages = packages_sorted
-               
+
+               for package in packages:
+                       package.download()
+
                for package in packages:
                        environ = chroot.Environment(package)
                        
index 0d3582b5297602fa875efa676af1ce596dd4382c..b5339b80e9f39d53c1cf495d9826e8d9ea05a981 100644 (file)
@@ -1,6 +1,8 @@
 #!/usr/bin/python
 
 import os
+import urlgrabber
+import urllib
 
 import chroot
 import util
@@ -97,6 +99,39 @@ def depsort(packages):
                ret.extend(l1)
        return ret
 
+def download(files, logger=None):
+       for file in files:
+               filepath = os.path.join(TARBALLDIR, file)
+
+               if not os.path.exists(TARBALLDIR):
+                       os.makedirs(TARBALLDIR)
+
+               if os.path.exists(filepath):
+                       continue
+
+               url = config["sources_download_url"] + "/%s" % urllib.pathname2url(file)
+
+               if logger:
+                       logger.debug("Retrieving %s" % url)
+
+               g = urlgrabber.grabber.URLGrabber(
+                       user_agent = "%sSourceGrabber/%s" % (config["distro_name"], config["distro_version"],),
+                       progress_obj = urlgrabber.progress.TextMeter(),
+               )
+
+               try:
+                       gobj = g.urlopen(url)
+               except urlgrabber.grabber.URLGrabError, e:
+                       logger.error("Could not retrieve %s - %s" % (url, e))
+                       raise
+
+               # XXX Need to check SHA1 sum here
+
+               fobj = open(filepath, "w")
+               fobj.write(gobj.read())
+               fobj.close()
+               gobj.close()
+
 class PackageInfo(object):
        __data = {}
 
@@ -257,10 +292,7 @@ class Package(object):
                environment.build()
 
        def download(self):
-               return "TODO"
-               files = self.info.objects
-               #self.log.info("Downloading %s..." % files)
-               download(self.info.objects)
+               download(self.info.objects, logger=self.log)
 
        def extract(self, dest):
                files = [os.path.join(PACKAGESDIR, file) for file in self.info.package_files]
index 0a27688445fb4e0c8b76fba56d35f5d338c75afc..b36a4710079c4846ae3f8787bca5bc65449c4c07 100644 (file)
@@ -43,9 +43,6 @@ class Config(object):
                "distro_version"  : "unknown",
                "distro_slogan"   : "unknown",
                #
-               # Downloads
-               "download_tarball_url" : "http://source.ipfire.org/source-3.x/%(file)s",
-               #
                # Logging
                "log_config_file" : os.path.join(CONFIGDIR, "logging.ini"),
                "log_file"        : os.path.join(LOGDIR, "naoki.log"),