silkapp / rest

Packages for defining APIs, running them, generating client code and documentation.
http://silkapp.github.io/rest
390 stars 52 forks source link

Bump aeson dependency version #57

Closed Fuuzetsu closed 10 years ago

Fuuzetsu commented 10 years ago

This package compiles just fine with latest aeson (0.8.0.0).

Fuuzetsu commented 10 years ago

Sorry, I should note that this is for the rest-types package.

bergmark commented 10 years ago

Already done, see https://github.com/haskell/hackage-server/issues/252

Fuuzetsu commented 10 years ago

OK, I'll watch that issue instead, thanks!

You might want to consider a minor release with just the bounds bumped.

bergmark commented 10 years ago

The whole point of revisions is that we don't have to upload new releases, and it would mean bumping a lot of our packages so it just seems like a lot of work for little gain.

We had another nix user report the same thing for another package.

Can you work around it by using this cabal file instead? http://hackage.haskell.org/package/rest-types-1.10.1/rest-types.cabal

Fuuzetsu commented 10 years ago

I don't think we can do that, we just fetch what's on Hackage. I think we'll just have to jailbreak until latest release unless @peti knows a better way.

I imagien the reason why haskell/hackage-server#252 exists is because if you changed the tarball contents then the package hash changes (bad, super bad!). I'm pretty sure the in-place revision stuff is just magic handled by cabal itself.

hesselink commented 10 years ago

I'm not a huge fan of updating the package dependencies in-place myself (for one, the changelog doesn't get updated). But I guess this is a feature of hackage now, and many other packages are also using it, some of them quite large. So I guess nix will have to find some way to deal with this.

The revision stuff isn't quite magic. The cabal file that hackage serves in the index (and is also linked directly from the package page) always contains the latest revision. So a simple workaround might be to grab the tarball, and then overwrite the cabal file with the one linked from the package page.

peti commented 10 years ago

@hesselink if you change the checksum of a previously released tarball, then that will cause trouble for every distribution that ships your software -- not just NixOS.

Why exactly don't you release a new version when your software changes? We are maintaining literay thousands of packages, and you packages are the only ones we've ever come across that have adopted this strange practice.

bergmark commented 10 years ago

If you object to hackage allowing this you should mention it here: https://github.com/haskell/hackage-server/issues/52

Afaik the feature was put in place because old packages (notably ones without upper bounds) caused a lot of invalid build plans to be created. For the case where a bound needs to be relaxed a new version can just be released, but this is not an option for bounds that need to be restricted.

It also has the advantage that apart from the version bounds in the package description it's impossible to change anything in the package between revisions.

I would hate for this to go away, but I'm open to uploading new versions when it actually fixes a problem.

hesselink commented 10 years ago

@peti I think the argument is that 'the software' doesn't change, only the metadata. I'm not sure I agree, but that was some of the reasoning behind haskell/hackage-server#52. This feature was only turned on relatively recently, and not everybody knows about it yet, so I guess that's why you haven't seen it. I think there are two things you can do: find a way to deal with it in nix, or argue against it and get the feature turned off.

By the way, we're hardly the only one using this. I've grepped through my local package index, and got these packages:

./aeson/0.7.0.0/aeson.cabal:x-revision: 1
./aeson/0.7.0.1/aeson.cabal:x-revision: 1
./aeson/0.7.0.2/aeson.cabal:x-revision: 1
./aeson/0.7.0.3/aeson.cabal:x-revision: 1
./aeson-qq/0.4.0/aeson-qq.cabal:x-revision: 1
./aeson-qq/0.4.1/aeson-qq.cabal:x-revision: 1
./aeson-qq/0.7.2/aeson-qq.cabal:x-revision: 1
./aeson-utils/0.2.2.1/aeson-utils.cabal:x-revision: 1
./Allure/0.4.14/Allure.cabal:x-revision: 1
./apiary/0.1.0.1/apiary.cabal:x-revision:          1
./apiary/0.2.0.0/apiary.cabal:x-revision:          1
./apiary/0.3.0.0/apiary.cabal:x-revision:          1
./apiary/0.3.1.0/apiary.cabal:x-revision:          1
./apiary/0.3.2.0/apiary.cabal:x-revision:          1
./apiary/0.4.0.0/apiary.cabal:x-revision:          1
./apiary/0.4.0.1/apiary.cabal:x-revision:          1
./apiary/0.4.0.2/apiary.cabal:x-revision:          1
./apiary/0.4.2.0/apiary.cabal:x-revision:          1
./apiary/0.4.3.0/apiary.cabal:x-revision:          1
./apiary/0.4.3.1/apiary.cabal:x-revision:          1
./apiary/0.4.3.2/apiary.cabal:x-revision:          1
./apiary/0.5.0.0/apiary.cabal:x-revision:          1
./apiary/0.5.1.0/apiary.cabal:x-revision:          1
./apiary-cookie/0.3.1.0/apiary-cookie.cabal:x-revision:          1
./apiary-cookie/0.4.0.0/apiary-cookie.cabal:x-revision:          1
./apiary-cookie/0.4.1.0/apiary-cookie.cabal:x-revision:          1
./apiary-cookie/0.4.2.0/apiary-cookie.cabal:x-revision:          1
./apiary-cookie/0.4.3.1/apiary-cookie.cabal:x-revision:          1
./apiary-cookie/0.4.3.2/apiary-cookie.cabal:x-revision:          1
./apiary-cookie/0.4.3.3/apiary-cookie.cabal:x-revision:          1
./apiary-cookie/0.5.1.0/apiary-cookie.cabal:x-revision:          1
./apiary-persistent/0.4.2.0/apiary-persistent.cabal:x-revision:          1
./apiary-persistent/0.4.3.1/apiary-persistent.cabal:x-revision:          1
./apiary-persistent/0.4.3.2/apiary-persistent.cabal:x-revision:          1
./apiary-websockets/0.4.2.0/apiary-websockets.cabal:x-revision:          1
./apiary-websockets/0.4.3.1/apiary-websockets.cabal:x-revision:          1
./apiary-websockets/0.4.3.2/apiary-websockets.cabal:x-revision:          1
./apiary-websockets/0.4.3.3/apiary-websockets.cabal:x-revision:          1
./Baggins/1.0/Baggins.cabal:x-revision: 1
./cabal-file-th/0.2.3/cabal-file-th.cabal:x-revision: 1
./Chart-diagrams/1.0/Chart-diagrams.cabal:x-revision: 1
./csv-to-qif/0.3/csv-to-qif.cabal:x-revision: 1
./data-reify/0.6/data-reify.cabal:x-revision: 1
./definitive-base/1.2.1/definitive-base.cabal:x-revision: 1
./definitive-filesystem/1.2/definitive-filesystem.cabal:x-revision: 1
./definitive-graphics/1.2/definitive-graphics.cabal:x-revision: 1
./definitive-parser/1.2/definitive-parser.cabal:x-revision: 1
./definitive-reactive/1.0/definitive-reactive.cabal:x-revision: 1
./definitive-sound/1.0/definitive-sound.cabal:x-revision: 1
./diagrams-cairo/1.2/diagrams-cairo.cabal:x-revision: 1
./diagrams-contrib/1.1.2/diagrams-contrib.cabal:x-revision: 1
./diagrams-core/1.2.0.1/diagrams-core.cabal:x-revision: 1
./diagrams-lib/1.2.0.1/diagrams-lib.cabal:x-revision: 1
./diagrams-postscript/1.1/diagrams-postscript.cabal:x-revision: 2
./diagrams-rasterific/0.1/diagrams-rasterific.cabal:x-revision: 1
./diagrams-svg/1.1/diagrams-svg.cabal:x-revision: 1
./dockercook/0.1.2.0/dockercook.cabal:x-revision: 1
./edentv/4.4.0/edentv.cabal:x-revision: 1
./exposed-containers/0.5.5.1/exposed-containers.cabal:x-revision: 1
./fay/0.20.1.1/fay.cabal:x-revision: 1
./flippers/1.0.1/flippers.cabal:x-revision: 1
./generic-aeson/0.1.0.3/generic-aeson.cabal:x-revision: 1
./ghc-events-parallel/0.5.0.0/ghc-events-parallel.cabal:x-revision: 1
./Grow/1.1.0.3/Grow.cabal:x-revision: 3
./haddock/0.8/haddock.cabal:x-revision: 1
./haddock/0.9/haddock.cabal:x-revision: 1
./haddock/2.14.1/haddock.cabal:x-revision: 2
./haddock/2.14.2/haddock.cabal:x-revision: 2
./haddock/2.14.3/haddock.cabal:x-revision: 1
./hakaru/0.1.2/hakaru.cabal:x-revision: 1
./hashable/1.2.0.0/hashable.cabal:x-revision: 1
./hashable/1.2.0.1/hashable.cabal:x-revision: 1
./hashable/1.2.0.10/hashable.cabal:x-revision: 1
./hashable/1.2.0.2/hashable.cabal:x-revision: 1
./hashable/1.2.0.3/hashable.cabal:x-revision: 1
./hashable/1.2.0.4/hashable.cabal:x-revision: 1
./hashable/1.2.0.5/hashable.cabal:x-revision: 1
./hashable/1.2.0.6/hashable.cabal:x-revision: 1
./hashable/1.2.0.7/hashable.cabal:x-revision: 1
./hashable/1.2.0.8/hashable.cabal:x-revision: 1
./hashable/1.2.0.9/hashable.cabal:x-revision: 1
./hashable/1.2.1.0/hashable.cabal:x-revision: 1
./hashable/1.2.2.0/hashable.cabal:x-revision: 1
./haste-compiler/0.3/haste-compiler.cabal:x-revision: 1
./heist/0.13.1.2/heist.cabal:x-revision: 2
./hnetcdf/0.2.1.0/hnetcdf.cabal:x-revision: 2
./HROOT/0.8/HROOT.cabal:x-revision: 1
./Hsmtlib/0.2.0.6/Hsmtlib.cabal:x-revision: 1
./Hsmtlib/2.8.8.8/Hsmtlib.cabal:x-revision: 1
./HTTP/4000.2.4/HTTP.cabal:x-revision: 1
./image-type/0.1.0.0/image-type.cabal:x-revision: 1
./LambdaHack/0.2.14/LambdaHack.cabal:x-revision: 1
./lens/3.10/lens.cabal:x-revision: 1
./lens/3.10.0.1/lens.cabal:x-revision: 1
./lens/3.10.1/lens.cabal:x-revision: 1
./lens/3.10.2/lens.cabal:x-revision: 1
./lens/3.10.3/lens.cabal:x-revision: 2
./lens/4.0/lens.cabal:x-revision: 1
./lens/4.0.1/lens.cabal:x-revision: 1
./lens/4.0.2/lens.cabal:x-revision: 1
./lens/4.0.3/lens.cabal:x-revision: 1
./lens/4.0.4/lens.cabal:x-revision: 1
./lens/4.0.5/lens.cabal:x-revision: 1
./lens/4.0.6/lens.cabal:x-revision: 1
./lens/4.0.7/lens.cabal:x-revision: 1
./lens/4.1/lens.cabal:x-revision: 1
./lens/4.1.1/lens.cabal:x-revision: 1
./lens/4.1.2/lens.cabal:x-revision: 1
./lens/4.1.2.1/lens.cabal:x-revision: 1
./lens/4.2/lens.cabal:x-revision: 1
./lens/4.3/lens.cabal:x-revision: 1
./lens/4.3.1/lens.cabal:x-revision: 1
./lens/4.3.2/lens.cabal:x-revision: 1
./linklater/2.0.0.2/linklater.cabal:x-revision: 1
./messagepack-rpc/0.1.0.0/messagepack-rpc.cabal:x-revision: 1
./MonadCatchIO-transformers/0.3.1.2/MonadCatchIO-transformers.cabal:x-revision: 1
./mtl/2.0.0.0/mtl.cabal:x-revision: 1
./mtl/2.0.1.0/mtl.cabal:x-revision: 1
./mtl/2.1/mtl.cabal:x-revision: 1
./mtl/2.1.1/mtl.cabal:x-revision: 1
./parsers/0.11.0.2/parsers.cabal:x-revision: 1
./peyotls/0.0.0.0/peyotls.cabal:x-revision: 1
./primitive/0.1/primitive.cabal:x-revision: 1
./primitive/0.2/primitive.cabal:x-revision: 1
./primitive/0.2.1/primitive.cabal:x-revision: 1
./primitive/0.3/primitive.cabal:x-revision: 1
./primitive/0.3.1/primitive.cabal:x-revision: 1
./primitive/0.4/primitive.cabal:x-revision: 1
./primitive/0.4.0.1/primitive.cabal:x-revision: 1
./primitive/0.4.1/primitive.cabal:x-revision: 1
./primitive/0.5/primitive.cabal:x-revision: 1
./primitive/0.5.0.1/primitive.cabal:x-revision: 1
./primitive/0.5.1.0/primitive.cabal:x-revision: 1
./references/0.1.0.0/references.cabal:x-revision: 3
./rest-core/0.31.1/rest-core.cabal:x-revision: 1
./rest-gen/0.14.1/rest-gen.cabal:x-revision: 1
./rest-gen/0.14.2/rest-gen.cabal:x-revision: 1
./rest-stringmap/0.2.0.2/rest-stringmap.cabal:x-revision: 1
./rest-types/1.10.1/rest-types.cabal:x-revision: 1
./servant/0.1/servant.cabal:x-revision: 3
./snap/0.13.2.8/snap.cabal:x-revision: 2
./snaplet-fay/0.3.3.7/snaplet-fay.cabal:x-revision: 2
./snaplet-postgresql-simple/0.5/snaplet-postgresql-simple.cabal:x-revision: 1
./soap/0.2.2.4/soap.cabal:x-revision: 2
./spoon/0.3.1/spoon.cabal:x-revision: 1
./STL/0.2/STL.cabal:x-revision: 2
./stm/2.1/stm.cabal:x-revision: 1
./stm/2.1.1.0/stm.cabal:x-revision: 2
./stm/2.1.1.2/stm.cabal:x-revision: 1
./stm/2.1.2.0/stm.cabal:x-revision: 1
./taggy/0.1/taggy.cabal:x-revision: 1
./taggy-lens/0.1/taggy-lens.cabal:x-revision: 3
./template-haskell/2.2.0.0/template-haskell.cabal:x-revision: 1
./template-haskell/2.3.0.0/template-haskell.cabal:x-revision: 1
./template-haskell/2.3.0.1/template-haskell.cabal:x-revision: 1
./template-haskell/2.4.0.0/template-haskell.cabal:x-revision: 1
./template-haskell/2.4.0.1/template-haskell.cabal:x-revision: 1
./template-haskell/2.5.0.0/template-haskell.cabal:x-revision: 1
./template-haskell/2.6.0.0/template-haskell.cabal:x-revision: 1
./template-haskell/2.7.0.0/template-haskell.cabal:x-revision: 1
./template-haskell/2.8.0.0/template-haskell.cabal:x-revision: 1
./these/0.4.2/these.cabal:x-revision: 1
./trifecta/1.4.2/trifecta.cabal:x-revision: 1
./tsession/0.1/tsession.cabal:x-revision: 2
./twitter-conduit/0.0.5.1/twitter-conduit.cabal:x-revision: 1
./tz/0.0.0.5/tz.cabal:x-revision: 1
./unix/2.7.0.1/unix.cabal:x-revision: 1
./vado/0.0.1/vado.cabal:x-revision: 1
./vector/0.1/vector.cabal:x-revision: 1
./vector/0.2/vector.cabal:x-revision: 1
./vector/0.4/vector.cabal:x-revision: 1
./vector/0.4.1/vector.cabal:x-revision: 1
./vinyl/0.4.1/vinyl.cabal:x-revision: 1
./warp/3.0.0.2/warp.cabal:x-revision: 1
./xxhash/0.0.1/xxhash.cabal:x-revision: 1