
On Tue, Nov 2, 2010 at 11:02 AM, Claus Reinke
I often find myself writing example code that I'd like to distribute via cabal, but without further burdening hackage with not generally useful packages.
1. The simplest approach would be if cabal could expose its internal 'unpackPackage' as a command, so that
author: cabal sdist user: cabal unpackPackage Example.tar.gz
This is possible with cabal-dev (http://goo.gl/RkLGx), but it's somewhat of an accidental feature, so it's not quite as simple as your ideal: Author: $ cabal sdist The user's side of things changes a bit depending on what the package is. If it's an executable, this works: User: $ cabal-dev add-source Example.tar.gz $ cabal-dev install Example $ ./cabal-dev/bin/example-program If you're distributing a binary, then the add-source is really all it takes, if you're happy using cabal-dev for the whole build. It will create a local sandbox with the new library, and subsequent cabal-dev commands can use that sandbox for all non-global packages. --Rogan
would work (the point being that cabal handles .tar.gz, which not all users have installed separately; distributing the .tar.gz would be handled via the usual channels; and after unpacking, cabal can build the source package).
Note that 'cabal unpack' does not seem helpful here, as it touches the package index instead of just looking at the tarball.
Could this be made possible, please? Or is it already?
2. Failing that, I remembered that cabal used to be designed without a fixed package repo address, and a little digging found options --remote-repo and --local-repo, as well as the directory layout for package repositories:
http://hackage.haskell.org/trac/hackage/wiki/HackageDB
So this scenario seems possible, in principle:
author: expose a package repo http://myrepo user: cabal --remote-repo=http://myrepo fetch Example
Is it possible to add a (temporary) repo location like this, especially for 'cabal fetch'/'cabal unpack'? I've managed to get 'cabal --local-repo=myrepo list Example' to work (needs uncompressed 00-index.tar), but not the remote variant, and fetching from the local repo doesn't work, either.
Are there any usage examples of these features?
Claus
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe