Created by Ubuntu Package Importer on 2014-04-28 and last modified on 2014-04-28
Get this branch:
bzr branch lp:ubuntu/precise-proposed/germinate
Members of Ubuntu branches can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information

Ubuntu branches
Review team:
Ubuntu Development Team

Recent revisions

28. By Colin Watson on 2014-04-25

Bump recursion limit to 3000; apparently utopic trips over the existing
limit (LP: #1312478).

27. By Colin Watson on 2012-02-29

Build-depend on python-unittest2 so that the test suite works with
Python 2.6 (closes: #661608).

26. By Colin Watson on 2012-01-31

Explicitly specify the encoding to io.open so that tests pass even in
the C locale.

25. By Colin Watson on 2012-01-31

* Fix processing of multiple suites where there are different versions of
  a package with different Provides fields.
* Fix SeedStructure.write_seed_text to handle UTF-8 text in seeds

24. By Colin Watson on 2012-01-17

* Stop fetching Suggests from Packages; we don't use it.
* Build a cache of seed entries when analysing reverse-dependencies, so
  that we don't have to expensively call get_seed_entries once per package
  per seed (LP: #915569).
* Convert to setuptools.
* Add the beginnings of a test suite.
* Make the main bodies of scripts into modules so that they can be tested
  more easily.
* Remove private AtomicUTF8File class; just write all files as UTF-8.

* Port to Python 3:
  - Use "raise Exception(value)" syntax rather than the old-style "raise
    Exception, value".
  - Use Python 3-style print functions.
  - Use a list comprehension rather than filter (which behaves differently
    in Python 3).
  - Make GraphCycleError a subclass of Exception rather than of
  - Simplify stringiness tests in TagFile.__init__ and Seed.__init__ using
  - Implement rich comparison methods instead of __cmp__ for Seed and
    GerminatedSeed. (Seed needs all of them for interface-compatibility;
    GerminatedSeed only needs __eq__ and __ne__.)
  - Use Python 3 replacements for urllib, urllib2, and ConfigParser if
  - When decompressing tag files from the archive, explicitly treat
    everything as binary data.
  - In Python 3, decode seed data read from URLs as UTF-8.
  - Pass universal_newlines=True to subprocess.Popen to get Unicode
  - Make sure to close stdout of subprocess.Popen objects.
  - Use 2to3 to handle the few remaining 2/3 differences at build time.
  - Add a python3-germinate package.

23. By Colin Watson on 2012-01-05

Make Kernel-Version lexically scoped from the point in the seed where
it's encountered to either the end of the seed or the next
Kernel-Version entry, whichever comes first. Previously, the set of
Kernel-Version values allowed for a seed was the union of all
Kernel-Version entries in the seed, which is not what we want in

22. By Colin Watson on 2011-12-12

* Adjust AtomicFile to not rename the .new file into place if the context
  exited with an exception (thanks, Jeroen T. Vermeulen).
* Cope with an Archive implementation returning Maintainer values that are
  already unicode.

21. By Colin Watson on 2011-12-07

Fix Germinator._follow_recommends to prevent a crash while calculating
reverse-dependencies (LP: #900404).

20. By Colin Watson on 2011-12-07

* Call superclass constructor in GerminateFormatter's constructor.
* Build-depend on python-all.
* Store instances of Seed as GerminatedSeed._raw_seed, rather than
  instances of BytesIO which are transient and won't compare the way we
  need them to.
* Remove build-sources entries that also appear in sources outputs at
  output time rather than immediately, which has the effect of removing
  sources that appear in any seed in the structure rather than just those
  processed earlier. This fixes behaviour when processing multiple seed
  structures, but also seems to fit more closely with the original intent
  of build-sources as documented in README, which I think was broken all
  the way back in r70 when seed hierarchies were first allowed to fork.
* Fix inclusion/exclusion of packages from seeds other than "extra".

19. By Colin Watson on 2011-12-04

* Make sure to always close files after finishing with them. Mostly this
  is done using the 'with' statement in Python 2.6, but pychecker gets
  unhappy with contextlib.closing so I carried on using traditional
  try/finally blocks in cases that would require that.
* Remove all uses of os.system and os.popen, replacing them with uses of
  the better-designed subprocess module.
* Remove all code supporting the germinate -i/--ipv6 option; this has been
  off by default since November 2004, the service behind this was
  discontinued in March 2007
  (http://lists.debian.org/debian-ipv6/2007/02/msg00015.html), and
  germinate was never a great place to track this kind of thing anyway.
* Convert all option parsing to optparse. Consolidate defaults into a new
  Germinate.defaults module.
* Update copyright dates.
* Move canonical source location from people.canonical.com to a hosted
  branch on Launchpad.
* Slightly modernise use of dh_python2.
* Forbid seed names containing slashes.
* Eliminate most uses of list.sort() in favour of sorted(iterable).
* When promoting dependencies from lesser seeds, remove them from the
  lesser seed lists at output time rather than immediately. This is
  mostly to make it easier to process multiple seed structures, but also
  fixes a long-standing bug where promoted dependencies were only removed
  from a single arbitrary lesser seed rather than from all possible ones.
* Memoise the results of Germinator's _inner_seeds, _strictly_outer_seeds,
  and _outer_seeds methods. This saves nearly a third of germinate's
  runtime in common cases.
* Write all output files atomically.
* Change default distribution to precise.
* Update kubuntu-meta example in germinate-update-metapackage(1).
* Refer to versioned GPL file in debian/copyright.
* Policy version 3.9.2: no changes required.

* Massive API cleanup:
  - Move output-writing functions from the top-level germinate program
    into Germinator.
  - Redesign how Germinator gets Packages/Sources sections from the
    archive. This now works via an abstract interface, which should make
    it easier to plug in alternative archive sources (e.g. a database).
  - Move all apt_pkg interaction into library code. Germinator.__init__
    now takes an architecture argument so that it can set
  - Turn open_seed into a Seed class, allowing it to be a context manager.
  - Move code pertaining to the structure of seeds into a SeedStructure
    class, simplifying the interface.
  - Make all module names lower-case, per PEP-8. Remove the separate
    Germinate.Archive.tagfile module; this is now in germinate.archive
    directly. Adjust build system and pychecker handling to support this.
  - Remove unnecessary logging helper functions.
  - Don't modify level names on the root logger simply as a result of
    importing germinate.germinator; move this into a function.
  - Prefix all private methods with an underscore.
  - Remove germinate.tsort from germinate's public API.
  - Convert all method names to the PEP-8 preferred style (method_name
    rather than methodName).
  - Introduce wrapper functions for the various uses of write_list and
    write_source_list, and make the underlying methods private.
  - Make most instance variables private by prefixing an underscore,
    adding a few accessor methods.
  - Convert build system to distutils, make the germinate Python package
    public, and create a new python-germinate binary package.
  - Improve the Seed class so that seeds can be read multiple times
    without having to redownload them, and so that they remember which
    branch they came from.
  - Don't modify inner seeds when processing outer ones; filter
    build-dependencies on output instead.
  - Don't plant or grow seeds that have already had functionally-identical
    versions planted or grown respectively.
  - Automatically convert string dists/components/mirrors/source_mirrors
    arguments to lists in TagFile constructor.
  - Make it possible for a single Germinator to process multiple seed
    structures, reusing the work done on common seeds.
  - Canonicalise mirrors (by appending '/' if necessary) in TagFile rather
    than in the main germinate program.
  - Handle the extra seed entirely within Germinator rather than modifying
    SeedStructure (which doesn't fit well with processing the same seed
    structure on multiple architectures).
  - Use module-level loggers.
  - Get rid of the custom PROGRESS log level.
  - Change germinate.archive to use logging rather than print.
  - Add docstrings for all public classes and methods, and tidy up a few
    existing ones per PEP-257.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
This branch contains Public information 
Everyone can see this information.