From: Michael Tremer Date: Sat, 20 Mar 2010 08:50:01 +0000 (+0100) Subject: naoki: Remove old package.py module. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e54b336efab72012377bbea49b6b92615440649c;p=ipfire-3.x.git naoki: Remove old package.py module. --- diff --git a/naoki/chroot.py b/naoki/chroot.py index caae03e14..1ff3afd39 100644 --- a/naoki/chroot.py +++ b/naoki/chroot.py @@ -6,7 +6,6 @@ import os import random import stat -import package import util from constants import * from exception import * diff --git a/naoki/package.py b/naoki/package.py deleted file mode 100644 index 5c250eafc..000000000 --- a/naoki/package.py +++ /dev/null @@ -1,449 +0,0 @@ -#!/usr/bin/python - -import os -import sys -import urlgrabber -import urlgrabber.progress - -import chroot -import terminal -import util - -from constants import * -from logger import getLog - -def list(toolchain=False): - pkgs = [] - for dir in os.listdir(PKGSDIR): - if not os.path.isdir(os.path.join(PKGSDIR, dir)): - continue - - # If we work in toolchain mode we don't return the other - # packages and if we are not, we don't return the toolchain packages. - if toolchain: - if dir != "toolchain": - continue - else: - if dir == "toolchain": - continue - - for package in os.listdir(os.path.join(PKGSDIR, dir)): - package = os.path.join(dir, package) - pkgs.append(Package(package)) - - pkgs.sort() - return pkgs - -def find(s, toolchain=False): - if not s: - return - - p = Package(s) - if p in list(toolchain): - return p - - for package in list(toolchain): - if os.path.basename(package.name) == s: - return package - -def groups(): - return [Group(name) for name in group_names()] - -def group_names(): - groups = [] - for package in list(): - group = package.group - if not group in groups: - groups.append(group) - groups.sort() - return groups - -def download(file, type): - if not file: - return - - dirs = { - "tarball" : TARBALLDIR, - } - filepath = os.path.join(dirs[type], file) - if os.path.exists(filepath): - return - - g = urlgrabber.grabber.URLGrabber( - user_agent = "%sSourceGrabber/%s" % (config["distro_name"], config["distro_version"],), - progress_obj = urlgrabber.progress.TextMeter(), - text = "Downloading %s..." % file, - ) - gobj = g.urlopen(config["download_%s_url" % type] % { "file" : file }) - - # XXX Need to check SHA1 sum here - - for dir in dirs.values(): - util.mkdir(dir) - - fobj = open(filepath, "w") - fobj.write(gobj.read()) - fobj.close() - gobj.close() - -def depsolve(packages, recursive=False): - deps = [] - for package in packages: - if not package: - continue - if package: - deps.append(package) - - if not recursive or not deps: - return deps - - while True: - length = len(deps) - for dep in deps[:]: - deps.extend(dep.deps) - - new_deps = [] - for dep in deps: - if not dep in new_deps: - new_deps.append(dep) - - deps = new_deps - - if length == len(deps): - break - - deps.sort() - return deps - -def deptree(packages): - ret = [packages] - - while True: - next = [] - stage = ret[-1][:] - for package in stage[:]: - for dep in package.getAllDeps(recursive=False): - if dep in ret[-1]: - stage.remove(package) - next.append(package) - break - - ret[-1] = stage - if next: - ret.append(next) - continue - - break - - return ret - -def depsort(packages): - ret = [] - for l1 in deptree(packages): - ret.extend(l1) - return ret - -class Package(object): - info_str = """\ -Name : %(name)s -Version : %(version)s -Release : %(release)s -Group : %(group)s - -%(summary)s - -Description : -%(description)s - -Maintainer : %(maintainer)s -License : %(license)s - -Built? : %(isBuilt)s -Can build? : %(canBuild)s - -Files : -%(objects)s - -Patches : -%(patches)s -""" - - info_wiki_str = """\ -====== %(name)s ====== -| **Version:** | %(version)s | -| **Release:** | %(release)s | -| **Group:** | %(group)s | -| **License:** | %(license)s | -| **Maintainer:** | %(maintainer)s | -| **Dependencies:** | %(deps)s | -| **Build dependencies:** | %(build_deps)s | -| %(summary)s || -| **Website:** | %(url)s | -""" - - def __init__(self, name): - self._name = name - - self.config = config - self.__fetch_data = None - - self._getAllDeps = None - - def __repr__(self): - return "" % self.name - - def __cmp__(self, other): - return cmp(self.name, other.name) - - def fetch(self, key=None): - return self.__fetch()[key] - - def __fetch(self): - if not self.__fetch_data: - env = os.environ.copy() - env.update(config.environment) - env["PKGROOT"] = PKGSDIR - output = util.do("make -f %s" % self.filename, shell=True, - cwd=os.path.join(PKGSDIR, self.name), returnOutput=1, env=env) - - ret = {} - for line in output.splitlines(): - a = line.split("=", 1) - if not len(a) == 2: continue - key, val = a - ret[key] = val.strip("\"") - - ret["FINGERPRINT"] = self.fingerprint - self.__fetch_data = ret - - return self.__fetch_data - - def download(self): - for object in self.objects: - download(object, type="tarball") - - @property - def fingerprint(self): - return str(os.stat(self.filename).st_mtime) - - @property - def filename(self): - return os.path.join(PKGSDIR, self.name, os.path.basename(self.name)) + ".nm" - - @property - def name(self): - return self._name - - @property - def version(self): - return self.fetch("PKG_VER") - - @property - def release(self): - return self.fetch("PKG_REL") - - @property - def summary(self): - return self.fetch("PKG_SUMMARY") - - @property - def description(self): - return self.fetch("PKG_DESCRIPTION") - - @property - def group(self): - return self.fetch("PKG_GROUP") - - @property - def packages(self): - return self.fetch("PKG_PACKAGES") - - @property - def package_files(self): - return sorted(self.fetch("PKG_PACKAGES_FILES").split(" ")) - - @property - def objects(self): - objects = [] - for object in sorted(self.fetch("PKG_OBJECTS").split(" ")): - if not object in self.patches: - objects.append(object) - return objects - - @property - def patches(self): - return sorted(self.fetch("PKG_PATCHES").split(" ")) - - @property - def maintainer(self): - return self.fetch("PKG_MAINTAINER") - - @property - def deps(self): - return self.getDeps() - - def getDeps(self, recursive=False): - deps = [] - for package in self.fetch("PKG_DEPENDENCIES").split(" "): - package = find(package) - if package: - deps.append(package) - return depsolve(deps, recursive) - - def getAllDeps(self, recursive=True): - if self.toolchain: - return depsolve(self.toolchain_deps, recursive) - - if not self._getAllDeps: - self._getAllDeps = depsolve(self.deps + self.build_deps, recursive) - - return self._getAllDeps - - @property - def build_deps(self): - deps = [] - for package in self.fetch("PKG_BUILD_DEPENDENCIES").split(" "): - package = find(package) - if package: - deps.append(package) - - deps.sort() - return deps - - @property - def toolchain_deps(self): - deps = [] - for package in self.fetch("PKG_TOOLCHAIN_DEPENDENCIES").split(" "): - package = find(package, toolchain=True) - if package: - deps.append(package) - - deps.sort() - return deps - - @property - def url(self): - return self.fetch("PKG_URL") - - @property - def id(self): - return "%s-%s-%s" % (self.name, self.version, self.release) - - @property - def license(self): - return self.fetch("PKG_LICENSE") - - @property - def __info(self): - return { - "name" : self.name, - "version" : self.version, - "release" : self.release, - "summary" : self.summary, - "description" : self.description, - "maintainer" : self.maintainer, - "objects" : self.objects, - "patches" : self.patches, - "group" : self.group, - "license" : self.license, - "isBuilt" : self.isBuilt, - "canBuild" : self.canBuild, - "url" : self.url, - } - - def info(self, long=False): - return self.info_str % self.__info - - def info_line(self, long=False): - if long: - s = "%-30s | %-15s | %s" % \ - (self.name, "%s-%s" % (self.version, self.release), self.summary) - - # Cut if text gets too long - columns = terminal.get_columns() - if len(s) >= columns: - s = s[:columns - 3] + "..." - - return s - - else: - return self.name - - def info_wiki(self, long=True): - if not long: - return " * [[.package:%(name)s|%(name)s]] - %(summary)s" % \ - { "name" : self.name, "summary" : self.summary, } - - __info = self.__info - __info.update({ - "deps" : "NOT IMPLEMENTED YET", - "build_deps" : "NOT IMPLEMENTED YET", - }) - - return self.info_wiki_str % __info - - @property - def isBuilt(self): - if self.toolchain: - return os.path.exists(self.toolchain_file) - - for item in self.package_files: - if not os.path.exists(os.path.join(PACKAGESDIR, item)): - return False - return True - - @property - def canBuild(self): - if self.toolchain: - for dep in self.toolchain_deps: - if not dep.isBuilt: - return False - return True - - deps = self.deps + self.build_deps - for dep in deps: - if not dep.isBuilt: - return False - - return True - - def extract(self, dest): - files = [os.path.join(PACKAGESDIR, file) for file in self.package_files] - if not files: - return - - getLog().debug("Extracting %s..." % self.name) - util.do("%s --root=%s %s" % (os.path.join(TOOLSDIR, "decompressor"), - dest, " ".join(files)), shell=True) - - @property - def toolchain(self): - if self.name.startswith("toolchain"): - return True - return False - - @property - def toolchain_file(self): - return os.path.join(TOOLCHAINSDIR, "tools_i686", "built", self.id) - - -class Group(object): - def __init__(self, name): - self.name = name - - self.__packages = [] - - def wiki_headline(self): - return "===== %s =====" % self.name - - @property - def packages(self): - if not self.__packages: - for pkg in list(): - if not pkg.group == self.name: - continue - self.__packages.append(pkg) - - self.__packages.sort() - - return self.__packages