patch applied (hackage-server): "Remove dependency of PackageContents on PackageCandidates" and 2 others

devnull at devnull at
Tue Jan 22 18:16:32 CET 2013

Tue Jan 22 14:40:39 GMT 2013  Edsko de Vries <edsko at>
  * Remove dependency of PackageContents on PackageCandidates
  Ignore-this: f6eb56b31f5e55cd3078dfdd0e4560c3
  This means there is a bit of duplication between PackageCandidates and
  PackageCandidates (serveTarball and friends), but we can factor that out later.
  Importantly, both PackageContents and PackageCandidates can now maintain their
  own state (cached TarIndexes) so that we can start to get rid of the stuff in
  Util/ChangeLog (which reconstructs the TarIndex on every request). 

    M ./Distribution/Server/Features.hs -7 +6
    M ./Distribution/Server/Features/PackageCandidates.hs -11 +61
    M ./Distribution/Server/Features/PackageContents.hs -32 +11
    M ./Distribution/Server/Packages/Render.hs -36 +40
    M ./Distribution/Server/Pages/Package.hs -19 +28

Tue Jan 22 15:12:00 GMT 2013  Edsko de Vries <edsko at>
  * Merge Util/Changelog with PackageContents and PackageCandidates
  Ignore-this: 60d1c81c483ec093a9decadbb266528d
  This paves the way for making lookupTarball and co stateful (that is, find the
  cached tarindex rather than reconstructing it). We need to do this separately
  for PackageContents and PackageCandidates because they will each maintain their
  own state.
  This introduces more duplication, but we can separate that out later.

    M ./Distribution/Server/Features/PackageCandidates.hs -7 +45
    M ./Distribution/Server/Features/PackageContents.hs -5 +43
    M ./Distribution/Server/Features/RecentPackages.hs -1 +1
    R ./Distribution/Server/Util/ChangeLog.hs
    M ./hackage-server.cabal -1

Tue Jan 22 17:14:36 GMT 2013  Edsko de Vries <edsko at>
  * Add packageTarball and packageChangeLog to PackageContents
  Ignore-this: 667d26a05a81cbec3e10c75cb2d8c86c
  At the moment these are simply defined in terms of
  lookupTarballAndConstructTarIndex and lookupChangeLog, but those functions are
  now no longer exported (RecentPackages now depends on the PackageContents
  feature to get a handle on a package changelog). This means that we are now
  finally in a position that we can actually start caching these tar indices.

    M ./Distribution/Server/Features.hs -3 +4
    A ./Distribution/Server/Features/PackageContents/
    M ./Distribution/Server/Features/PackageContents.hs -8 +32
    A ./Distribution/Server/Features/PackageContents/State.hs
    M ./Distribution/Server/Features/RecentPackages.hs -13 +22

More information about the cabal-devel mailing list