Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • jvalleroy/blends
  • georgesk/blends
  • natureshadow/blends
  • StefanKropp/blends
  • boutil/blends
  • janitor-team/proposed/blends
  • sunilmohan/blends
  • mechtilde/blends
  • blends-team/blends
  • sumpfralle/blends
10 results
Show changes
Commits on Source (5)
blends (0.6.103) UNRELEASED; urgency=medium blends (0.6.103) experimental; urgency=low
[ Andreas Tille ]
* d/control: * d/control:
- Build-Depends: dh-python, python3-all - Build-Depends: dh-python, python3-all
- blends-dev: Depends: ${python3:Depends} - blends-dev: Depends: ${python3:Depends}
...@@ -7,8 +8,12 @@ blends (0.6.103) UNRELEASED; urgency=medium ...@@ -7,8 +8,12 @@ blends (0.6.103) UNRELEASED; urgency=medium
* ignore false lintian warning binary-package-depends-on-toolchain-package * ignore false lintian warning binary-package-depends-on-toolchain-package
* cme fix dpkg-control * cme fix dpkg-control
* Take over tasks_diff from blends-gsoc to create dependency_data * Take over tasks_diff from blends-gsoc to create dependency_data
* Use Deb822List to evaluate taskprefix in tasks_diff
[ Ole Streicher ]
* Add UDD query options to blend-gen-control
-- Andreas Tille <tille@debian.org> Wed, 28 Mar 2018 16:22:10 +0200 -- Ole Streicher <olebole@debian.org> Thu, 29 Mar 2018 21:33:29 +0200
blends (0.6.102) experimental; urgency=low blends (0.6.102) experimental; urgency=low
...@@ -449,7 +454,7 @@ blends (0.6.3) unstable; urgency=low ...@@ -449,7 +454,7 @@ blends (0.6.3) unstable; urgency=low
* Section for cdd-common misc instead of devel * Section for cdd-common misc instead of devel
* Updated mailing list address of Debian Pure Blends team * Updated mailing list address of Debian Pure Blends team
* devtools/blends-gen-control: * devtools/blends-gen-control:
- If a task lists not a single package which is available in - If a task lists not a single package which is available in
the target distribution the metapackage will be suppressed the target distribution the metapackage will be suppressed
if option '-S' is set; there is one exception which is needed if option '-S' is set; there is one exception which is needed
...@@ -736,7 +741,7 @@ cdd (0.3.10) unstable; urgency=low ...@@ -736,7 +741,7 @@ cdd (0.3.10) unstable; urgency=low
* Otavio Salvador * Otavio Salvador
- cdd-gen-control: - cdd-gen-control:
o Add -D suport to cdd-gen-control to degrade dependencies to o Add -D suport to cdd-gen-control to degrade dependencies to
recommends; recommends;
o Add support for architecture dependent packages; o Add support for architecture dependent packages;
o Add fallback to architecture independent packages so allow o Add fallback to architecture independent packages so allow
backward compatibility; backward compatibility;
......
...@@ -12,7 +12,7 @@ Build-Depends-Indep: xmlto, ...@@ -12,7 +12,7 @@ Build-Depends-Indep: xmlto,
dblatex, dblatex,
w3m, w3m,
dh-python, dh-python,
python3-all python3
Standards-Version: 4.1.3 Standards-Version: 4.1.3
Vcs-Browser: https://salsa.debian.org/blends-team/blends Vcs-Browser: https://salsa.debian.org/blends-team/blends
Vcs-Git: https://salsa.debian.org/blends-team/blends.git Vcs-Git: https://salsa.debian.org/blends-team/blends.git
...@@ -21,7 +21,7 @@ Package: blends-dev ...@@ -21,7 +21,7 @@ Package: blends-dev
Architecture: all Architecture: all
Depends: debconf, Depends: debconf,
make | build-essential, make | build-essential,
debhelper (>= 9), debhelper (>= 9),python3,
${misc:Depends}, ${misc:Depends},
${python3:Depends} ${python3:Depends}
Suggests: blends-doc Suggests: blends-doc
......
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: * Files: *
Copyright: © 2003-2012 Andreas Tille <tille@debian.org> Copyright: © 2003-2012 Andreas Tille <tille@debian.org>
License: GPL-2+ License: GPL-2+
Files: devtools/blend-gen-control Files: devtools/blend-gen-control
Copyright: © 2003-2007 Petter Reinholdtsen <pere@debian.org> Copyright: © 2018 Ole Streicher <olebole@debian.org>
© 2007-2012 Andreas Tille <tille@debian.org>
License: GPL-2+ License: GPL-2+
Files: share/blends/* Files: share/blends/*
......
...@@ -100,6 +100,12 @@ class Blend: ...@@ -100,6 +100,12 @@ class Blend:
self.update(cache) self.update(cache)
return self return self
@property
def all(self):
'''All Base Dependencies of this task
'''
return list(itertools.chain(*(t.all for t in self.tasks)))
def fix_dependencies(self): def fix_dependencies(self):
'''Fix the dependencies according to available packages '''Fix the dependencies according to available packages
...@@ -122,8 +128,8 @@ class Blend: ...@@ -122,8 +128,8 @@ class Blend:
all_task = Task( all_task = Task(
self, "all", self, "all",
'''Description: Default selection of tasks for {task.title} '''Description: Default selection of tasks for {task.title}
This package is part of the {task.title} Pure Blend and installs all This package is part of the {task.title} Pure Blend and installs all
tasks for a default installation of this blend.'''.format(task=self), tasks for a default installation of this blend.'''.format(task=self),
base_deps = ['${misc:Depends}']) base_deps = ['${misc:Depends}'])
for task in tasks: for task in tasks:
if task.install: if task.install:
...@@ -458,8 +464,9 @@ class Task: ...@@ -458,8 +464,9 @@ class Task:
pkg = cache.get(dep.name) pkg = cache.get(dep.name)
if pkg is not None: if pkg is not None:
dep.target_versions += pkg.versions dep.target_versions += pkg.versions
for pkg in cache.get_providing_packages(dep.name): if hasattr(cache, 'get_providing_packages'):
dep.target_versions += pkg.versions for pkg in cache.get_providing_packages(dep.name):
dep.target_versions += pkg.versions
def __iadd__(self, cache): def __iadd__(self, cache):
self.update(cache) self.update(cache)
...@@ -699,34 +706,91 @@ class Deb822List(list): ...@@ -699,34 +706,91 @@ class Deb822List(list):
return fd.getvalue() return fd.getvalue()
def aptcache(distribution = None): def aptcache(release = None, srcdirs = [ '/etc/blends' ]):
'''Open and update a (temporary) apt cache for the specified distribution. '''Open and update a (temporary) apt cache for the specified distribution.
:param release: Distribution name
:param srcdirs: List of directories to search for ``sources.list.<<release>>``
If the distribution is not given, use the system's cache without update. If the distribution is not given, use the system's cache without update.
''' '''
import tempfile import tempfile
import apt import apt
if distribution is None: if release is None:
return apt.Cache() return apt.Cache()
d = tempfile.mkdtemp() rootdir = tempfile.mkdtemp()
os.makedirs(os.path.join(d, 'etc', 'apt')) try:
shutil.copytree('/etc/apt/trusted.gpg.d', os.makedirs(os.path.join(rootdir, 'etc', 'apt'))
os.path.join(d, 'etc', 'apt', 'trusted.gpg.d')) shutil.copytree('/etc/apt/trusted.gpg.d',
shutil.copy('/etc/blends/sources.list.{}'.format(distribution), os.path.join(rootdir, 'etc', 'apt', 'trusted.gpg.d'))
os.path.join(d, 'etc', 'apt', 'sources.list')) for src_dir in srcdirs:
c = apt.Cache(rootdir=d, memonly=True) sources_list = os.path.join(src_dir,
c.update() 'sources.list.{}'.format(release))
c.open() if os.path.exists(sources_list):
shutil.rmtree(d) shutil.copy(sources_list,
return c os.path.join(rootdir, 'etc', 'apt', 'sources.list'))
break
else:
raise OSError("sources.list not found in " + str(srcdirs))
cache = apt.Cache(rootdir=rootdir, memonly=True)
cache.update()
cache.open()
finally:
shutil.rmtree(rootdir)
return cache
def uddcache(release, packages, **db_args):
'''Create a ``dict`` from UDD that is roughly modelled after ``apt.Cache``.
The ``dict`` just resolves the version number and archs for the packages.
For performance reasons, an initial package list needs to be given.
:param release: Distribution name
:param packages: Initial package list
:param db_args: UDD connection parameters
``Provided`` dependencies are integrated in the returned ``dict``.
'''
import collections
import psycopg2
pkgtuple = tuple(set(p.name for p in packages))
Package = collections.namedtuple('Package',
('name', 'versions',))
Version = collections.namedtuple('Version',
('package', 'architecture', 'version'))
stmt = '''SELECT packages.package,
packages.provides,
packages.architecture,
packages.version
FROM packages, releases
WHERE packages.release=releases.release
AND (releases.release=%s OR releases.role=%s)
AND (packages.package IN %s OR packages.provides in %s);'''
with psycopg2.connect(**db_args) as conn:
cursor = conn.cursor()
cursor.execute(stmt, (release, release, pkgtuple, pkgtuple))
cache = dict()
for package, provides, arch, version in cursor:
p = cache.setdefault(package, Package(package, []))
p.versions.append(Version(p, arch, version))
if provides:
pp = cache.setdefault(provides, Package(package, []))
pp.versions.append(Version(p, arch, version))
return cache
if __name__ == '__main__': if __name__ == '__main__':
import sys import sys
import argparse import argparse
blend_dev_dir = "/usr/share/blends-dev/"
default_release = "testing" default_release = "testing"
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
...@@ -765,10 +829,30 @@ if __name__ == '__main__': ...@@ -765,10 +829,30 @@ if __name__ == '__main__':
action="store_true", default=False, action="store_true", default=False,
help="modify tasks desc file in case the blend uses udebs") help="modify tasks desc file in case the blend uses udebs")
parser.add_argument("-U", '--upgrade-tasks', dest="upgrade_tasks", parser.add_argument("-F", '--upgrade-task-format', dest="upgrade_tasks",
action="store_true", default=False, action="store_true", default=False,
help="Upgrade tasks files to the latest format version") help="Upgrade tasks files to the latest format version")
parser.add_argument("-U", "--udd", dest="udd",
action="store_true", default=False,
help="Query UDD instead of apt")
parser.add_argument("--udd-host", dest="udd_host",
default="udd-mirror.debian.net",
help="UDD host name (default: udd-mirror.debian.net)")
parser.add_argument("--udd-user", dest="udd_user",
default="udd-mirror",
help="UDD user (default: udd-mirror)")
parser.add_argument("--udd-password", dest="udd_password",
default="udd-mirror",
help="UDD password (default: udd-mirror)")
parser.add_argument("--udd-database", dest="udd_database",
default="udd",
help="UDD database name (default: udd)")
args = parser.parse_args() args = parser.parse_args()
if args.release == "current": if args.release == "current":
...@@ -781,7 +865,13 @@ if __name__ == '__main__': ...@@ -781,7 +865,13 @@ if __name__ == '__main__':
if not task.is_metapackage: if not task.is_metapackage:
blend.tasks.remove(task) blend.tasks.remove(task)
blend += aptcache(args.release) if args.udd:
blend += uddcache(args.release, blend.all, host=args.udd_host,
user=args.udd_user, password=args.udd_password,
database=args.udd_database)
else:
blend += aptcache(args.release, [ args.dir, '/etc/blends' ])
missing = blend.fix_dependencies() missing = blend.fix_dependencies()
if args.suppressempty: if args.suppressempty:
......