self.pool = satsolver.Pool(self.arch.name)
self.repos = repository.Repositories(self)
+ # Load default repository configuration
+ repos_dir = self.make_path(CONFIG_REPOS_DIR)
+ if repos_dir:
+ self.repos.load_configuration(repos_dir)
+
+ def make_path(self, path):
+ """
+ Returns path relative to the (base)path
+ of this Pakfire instance.
+ """
+ while path.startswith("/"):
+ path = path[1:]
+
+ return os.path.join(self.path, path)
+
def __enter__(self):
"""
Called to initialize this Pakfire instance when
# #
###############################################################################
+import glob
+import os
import re
import logging
log = logging.getLogger("pakfire")
+from .. import config
from .. import packages
from .base import RepositoryDummy
self.local_build = RepositoryBuild(self.pakfire)
self.add_repo(self.local_build)
- # Fetch all repository from the configuration files.
- for repo_name, repo_args in self.config.get_repos():
- self._parse(repo_name, repo_args)
-
def __iter__(self):
repositories = list(self.__repos.values())
repositories.sort()
for repo in self:
repo.close()
- @property
- def config(self):
- return self.pakfire.config
-
@property
def distro(self):
return self.pakfire.distro
def pool(self):
return self.pakfire.pool
+ def load_configuration(self, *paths):
+ c = config.Config()
+
+ for path in paths:
+ # Read directories
+ if os.path.isdir(path):
+ for file in glob.glob("%s/*.repo" % path):
+ c.read(file)
+
+ # Read files
+ else:
+ c.read(path)
+
+ # Add all repositories that have been found
+ for name, settings in c.get_repos():
+ self._parse(name, settings)
+
def _parse(self, name, args):
_args = {
"name" : name,
# Handle variable expansion.
replaces = {
"name" : name,
- "arch" : self.distro.arch,
+ "arch" : self.pakfire.arch.name,
}
for k, v in list(_args.items()):
def __repr__(self):
return "<%s %s>" % (self.__class__.__name__, self.name)
- def __cmp__(self, other):
- return cmp(self.priority * -1, other.priority * -1) or \
- cmp(self.name, other.name)
+ def __lt__(self, other):
+ return self.priority < other.priority
def __len__(self):
return self.solver_repo.size()
elif metadata:
self.parse(metadata)
- def __cmp__(self, other):
+ def __lt__(self, other):
"""
Compare two sets of metadata by their revision.
"""
- return cmp(self.revision, other.revision)
+ return self.revision < other.revision
def parse(self, metadata):
try: