c9baba9212
(My OCD kicked in today...) Remove repeated package names, capitalize first word, remove trailing periods and move overlong descriptions to longDescription. I also simplified some descriptions as well, when they were particularly long or technical, often based on Arch Linux' package descriptions. I've tried to stay away from generated expressions (and I think I succeeded). Some specifics worth mentioning: * cron, has "Vixie Cron" in its description. The "Vixie" part is not mentioned anywhere else. I kept it in a parenthesis at the end of the description. * ctags description started with "Exuberant Ctags ...", and the "exuberant" part is not mentioned elsewhere. Kept it in a parenthesis at the end of description. * nix has the description "The Nix Deployment System". Since that doesn't really say much what it is/does (especially after removing the package name!), I changed that to "Powerful package manager that makes package management reliable and reproducible" (borrowed from nixos.org). * Tons of "GNU Foo, Foo is a [the important bits]" descriptions is changed to just [the important bits]. If the package name doesn't contain GNU I don't think it's needed to say it in the description either.
62 lines
1.9 KiB
Nix
62 lines
1.9 KiB
Nix
{ stdenv, fetchurl, gcc, flex, bison, texinfo, jdk, erlang, makeWrapper
|
|
, readline }:
|
|
|
|
stdenv.mkDerivation rec {
|
|
name = "mercury-${version}";
|
|
version = "14.01";
|
|
|
|
src = fetchurl {
|
|
url = "http://dl.mercurylang.org/release/mercury-srcdist-${version}.tar.gz";
|
|
sha256 = "1hgwmsaacxhgx2p2hikl5px8xf0wny9wx47gjl258dgxxasbfij4";
|
|
};
|
|
|
|
buildInputs = [ gcc flex bison texinfo jdk erlang makeWrapper
|
|
readline ];
|
|
|
|
patchPhase = ''
|
|
# Fix calls to programs in /bin
|
|
for p in uname pwd ; do
|
|
for f in $(egrep -lr /bin/$p *) ; do
|
|
sed -i 's@/bin/'$p'@'$p'@g' $f ;
|
|
done
|
|
done
|
|
'';
|
|
|
|
preConfigure = ''
|
|
mkdir -p $out/lib/mercury/cgi-bin ;
|
|
configureFlags="--enable-deep-profiler=$out/lib/mercury/cgi-bin";
|
|
'';
|
|
|
|
preBuild = ''
|
|
# Mercury buildsystem does not take -jN directly.
|
|
makeFlags="PARALLEL=-j$NIX_BUILD_CORES" ;
|
|
'';
|
|
|
|
postInstall = ''
|
|
# Wrap with compilers for the different targets.
|
|
for e in $(ls $out/bin) ; do
|
|
wrapProgram $out/bin/$e \
|
|
--prefix PATH ":" "${gcc}/bin" \
|
|
--prefix PATH ":" "${jdk}/bin" \
|
|
--prefix PATH ":" "${erlang}/bin"
|
|
done
|
|
'';
|
|
|
|
meta = {
|
|
description = "A pure logic programming language";
|
|
longDescription = ''
|
|
Mercury is a logic/functional programming language which combines the
|
|
clarity and expressiveness of declarative programming with advanced
|
|
static analysis and error detection features. Its highly optimized
|
|
execution algorithm delivers efficiency far in excess of existing logic
|
|
programming systems, and close to conventional programming systems.
|
|
Mercury addresses the problems of large-scale program development,
|
|
allowing modularity, separate compilation, and numerous optimization/time
|
|
trade-offs.
|
|
'';
|
|
homepage = "http://mercurylang.org";
|
|
license = stdenv.lib.licenses.gpl2;
|
|
platforms = stdenv.lib.platforms.linux;
|
|
maintainers = [ ];
|
|
};
|
|
}
|