[aur-general] Please disown haskell-{funcmp, hopenssl, hsdns, hsemail, hsyslog}

Peter Simons simons at cryp.to
Thu Aug 12 12:50:18 EDT 2010


Hi Ng,

 > Wasn't there a Haskell update script that automatically did the
 > updating?

yes and no. Haskell packages have build instructions in "Cabal" files, and
there is a tool that converts Cabal files into PKGBUILD format. That
conversion in automatic, and the result of the conversion can be uploaded
to AUR more or less automatically. However, Cabal and PKGBUILD differ
quite a lot, and there is no obviously correct mapping between the two.

For example, the Haskell package manager can have any number of versions
of the same package installed simultaneously. Thus, packages can specify
fairly sophisticated dependencies that don't translate easily into
something Pacman will understand, like this one:

    base (3.*), bytestring (≥0.9), containers (≥0.1), directory (≥1),
    extensible-exceptions, filepath (≥1.1), HTTP (≥4000.0.5), mtl (≥1.1),
    network (≥2), old-time (≥1), parsec (≥2.1), pretty (≥1), process (≥1),
    random, texmath (≥0.3), utf8-string (≥0.3), xhtml (≥3000.0), xml (≥1.3.5
    & <1.4), zip-archive (≥0.1.1.4)
  or
    base (4.*), bytestring (≥0.9), containers (≥0.1), directory (≥1),
    extensible-exceptions, filepath (≥1.1), HTTP (≥4000.0.5), mtl (≥1.1),
    network (≥2), old-time (≥1), parsec (≥2.1), pretty (≥1), process (≥1),
    random, syb, texmath (≥0.3), utf8-string (≥0.3), xhtml (≥3000.0), xml
    (≥1.3.5 & <1.4), zip-archive (≥0.1.1.4)

Furthermore, it is possible to install packages that have contradicting
dependencies, i.e. a package X can depend on "foo 1.0" and Y can depend on
"foo 2.0" -- yet both X and Y can be installed at the same time. This is
not possible in ArchLinux, though.

Last but not least, Cabal files can require other non-Haskell libraries
that need to be linked to the generated executable. Now, those libraries
exist in ArchLinux, too, but it's not always possible to derive the proper
ABS package name from the name of the *.so file. One could run "pacman
-Qo" to figure that out, but this would require the person who runs the
"cabal2arch" utility to have all those libraries installed in their
system, which is not practical.

So, yes, the cabal2arch utility can generate PKGBUILD files automatically
from Cabal. However, for non-trivial builds the generated PKGBUILD will
not work without further editing by a human being. In cases where package
have contradicting dependencies, the situation is even more complicated.

Personally, I'd call the update procedure semi-automatic. Still, even that
semi-automatic procedure needs to be run. To the best of my knowledge, the
only person who can do that is Don Stewart, because he seems to be the
only one who has access to the 'arch-haskell' account on AUR. I (and other
people) have asked for access to that account so that we can help updating
AUR, but unfortunately Don appears to be too busy to do anything towards
that end.

Take care,
Peter


More information about the aur-general mailing list