From: Michael Tremer Date: Fri, 19 Mar 2010 17:50:38 +0000 (+0100) Subject: naoki: Fix tarball download function. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d700630830f2c5329d59951649db512f599655ed;p=ipfire-3.x.git naoki: Fix tarball download function. --- diff --git a/config/naoki.conf b/config/naoki.conf index f39182fe9..cdf8db4f2 100644 --- a/config/naoki.conf +++ b/config/naoki.conf @@ -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 diff --git a/naoki/__init__.py b/naoki/__init__.py index df7474ab9..540c8af54 100644 --- a/naoki/__init__.py +++ b/naoki/__init__.py @@ -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) diff --git a/naoki/backend.py b/naoki/backend.py index 0d3582b52..b5339b80e 100644 --- a/naoki/backend.py +++ b/naoki/backend.py @@ -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] diff --git a/naoki/constants.py b/naoki/constants.py index 0a2768844..b36a47100 100644 --- a/naoki/constants.py +++ b/naoki/constants.py @@ -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"),