Change Nevow, SimpleJSON, and Foolscap to use `buildPythonPackage'.

svn path=/nixpkgs/trunk/; revision=15707
This commit is contained in:
Ludovic Courtès 2009-05-24 21:08:39 +00:00
parent 7c34f5744b
commit bede9c4d50
5 changed files with 101 additions and 178 deletions

View file

@ -1,53 +0,0 @@
{ fetchurl, stdenv, python, setuptools, twisted, pyopenssl }:
stdenv.mkDerivation rec {
name = "foolscap-0.3.2";
src = fetchurl {
url = "http://foolscap.lothar.com/releases/${name}.tar.gz";
sha256 = "1wkqgm6anlxvz8dnqx7ki008255nm1mlhak5n9xy6g1yf31fn3l0";
};
buildInputs = [ python ];
propagatedBuildInputs = [ setuptools twisted pyopenssl ];
doCheck = true;
buildPhase = "python setup.py build --build-base $out";
checkPhase = "python setup.py test";
# FIXME: `$out/bin/flogtool' can't find its friends:
#
# $ ./result/bin/flogtool --help
# Traceback (most recent call last):
# File "./result/bin/flogtool", line 4, in <module>
# import pkg_resources
# ImportError: No module named pkg_resources
installPhase = ''
ensureDir "$out/lib/python2.5/site-packages"
PYTHONPATH="$out/lib/python2.5/site-packages:$PYTHONPATH" \
python setup.py install --prefix="$out"
ensureDir "$out/doc/${name}"
cp -rv "doc/"* "$out/doc/${name}"
'';
meta = {
homepage = http://foolscap.lothar.com/;
description = "Foolscap, an RPC protocol for Python that follows the distributed object-capability model";
longDescription = ''
"Foolscap" is the name for the next-generation RPC protocol,
intended to replace Perspective Broker (part of Twisted).
Foolscap is a protocol to implement a distributed
object-capabilities model in Python.
'';
# See http://foolscap.lothar.com/trac/browser/LICENSE.
license = "MIT";
};
}

View file

@ -1,80 +0,0 @@
{ fetchurl, stdenv, python, setuptools, twisted, makeWrapper, lib }:
stdenv.mkDerivation rec {
name = "nevow-0.9.33";
src = fetchurl {
url = "http://divmod.org/trac/attachment/wiki/SoftwareReleases/Nevow-0.9.33.tar.gz?format=raw";
sha256 = "1b6zhfxx247b60n1qi2hrawhiaah88v8igg37pf7rjkmvy2z1c6c";
name = "${name}.tar.gz";
};
buildInputs = [ python makeWrapper ];
propagatedBuildInputs = [ setuptools twisted ];
doCheck = true;
buildPhase = "python setup.py build --build-base $out";
checkPhase = "python runtests";
installPhase = ''
ensureDir "$out/lib/python2.5/site-packages"
PYTHONPATH="$out/lib/python2.5/site-packages:$PYTHONPATH" \
python setup.py install --prefix="$out"
ensureDir "$out/doc/${name}"
cp -rv "doc/"* "$out/doc/${name}"
${postInstall}
'';
/* FIXME: Wrapping programs like this is not enough:
$ ./result/bin/nit --help
Traceback (most recent call last):
File "/nix/store/p5a9qbdjqcfzqmaya8absvm5279l9wd0-nevow-0.9.33/bin/.wrapped-nit", line 4, in <module>
import pkg_resources
[...]
pkg_resources.DistributionNotFound: Nevow==0.9.33-r17222
Ideas welcome. */
postInstall = ''
for i in "$out/bin/"*
do
wrapProgram "$i" \
--prefix PYTHONPATH ":" \
${lib.concatStringsSep ":"
([ "$out/lib/python2.5/site-packages/src" ] ++
(map (path: path + "/lib/python2.5/site-packages")
(propagatedBuildInputs
++ twisted.propagatedBuildInputs)))}
done
'';
meta = {
description = "Nevow, a web application construction kit for Python";
longDescription = ''
Nevow - Pronounced as the French "nouveau", or "noo-voh", Nevow
is a web application construction kit written in Python. It is
designed to allow the programmer to express as much of the view
logic as desired in Python, and includes a pure Python XML
expression syntax named stan to facilitate this. However it
also provides rich support for designer-edited templates, using
a very small XML attribute language to provide bi-directional
template manipulation capability.
Nevow also includes formless, a declarative syntax for
specifying the types of method parameters and exposing these
methods to the web. Forms can be rendered automatically, and
form posts will be validated and input coerced, rendering error
pages if appropriate. Once a form post has validated
successfully, the method will be called with the coerced values.
'';
homepage = http://divmod.org/trac/wiki/DivmodNevow;
license = "BSD-style";
};
}

View file

@ -1,45 +0,0 @@
{ fetchsvn, stdenv, python, setuptools }:
stdenv.mkDerivation rec {
name = "simplejson-2.0.9";
src = fetchsvn {
url = "http://simplejson.googlecode.com/svn/tags/${name}";
sha256 = "a48d5256fdb4f258c33da3dda110ecf3c786f086dcb08a01309acde6d1ddb921";
rev = "172"; # to be on the safe side
};
buildInputs = [ python ];
propagatedBuildInputs = [ setuptools ];
doCheck = true;
buildPhase = "python setup.py build --build-base $out";
checkPhase = "python setup.py test";
installPhase = ''
ensureDir "$out/lib/python2.5/site-packages"
PYTHONPATH="$out/lib/python2.5/site-packages:$PYTHONPATH" \
python setup.py install --prefix="$out"
# Remove irrelevant directories.
rm -rvf "$out/"lib.* "$out/"temp.*
'';
meta = {
description = "simplejson is a simple, fast, extensible JSON encoder/decoder for Python";
longDescription = ''
simplejson is compatible with Python 2.4 and later with no
external dependencies. It covers the full JSON specification
for both encoding and decoding, with unicode support. By
default, encoding is done in an encoding neutral fashion (plain
ASCII with \uXXXX escapes for unicode characters).
'';
homepage = http://code.google.com/p/simplejson/;
license = "MIT";
};
}

View file

@ -4209,6 +4209,10 @@ let
inherit python setuptools makeWrapper lib;
};
pythonPackages = recurseIntoAttrs (import ./python-packages.nix {
inherit pkgs;
});
foursuite = import ../development/python-modules/4suite {
inherit fetchurl stdenv python;
};

View file

@ -0,0 +1,97 @@
{ pkgs }:
rec {
inherit (pkgs) buildPythonPackage fetchurl fetchsvn stdenv python;
nevow = buildPythonPackage (rec {
name = "nevow-0.9.33";
src = fetchurl {
url = "http://divmod.org/trac/attachment/wiki/SoftwareReleases/Nevow-0.9.33.tar.gz?format=raw";
sha256 = "1b6zhfxx247b60n1qi2hrawhiaah88v8igg37pf7rjkmvy2z1c6c";
name = "${name}.tar.gz";
};
propagatedBuildInputs = [ pkgs.twisted ];
meta = {
description = "Nevow, a web application construction kit for Python";
longDescription = ''
Nevow - Pronounced as the French "nouveau", or "noo-voh", Nevow
is a web application construction kit written in Python. It is
designed to allow the programmer to express as much of the view
logic as desired in Python, and includes a pure Python XML
expression syntax named stan to facilitate this. However it
also provides rich support for designer-edited templates, using
a very small XML attribute language to provide bi-directional
template manipulation capability.
Nevow also includes formless, a declarative syntax for
specifying the types of method parameters and exposing these
methods to the web. Forms can be rendered automatically, and
form posts will be validated and input coerced, rendering error
pages if appropriate. Once a form post has validated
successfully, the method will be called with the coerced values.
'';
homepage = http://divmod.org/trac/wiki/DivmodNevow;
license = "BSD-style";
};
});
simplejson = buildPythonPackage (rec {
name = "simplejson-2.0.9";
src = fetchsvn {
url = "http://simplejson.googlecode.com/svn/tags/${name}";
sha256 = "a48d5256fdb4f258c33da3dda110ecf3c786f086dcb08a01309acde6d1ddb921";
rev = "172"; # to be on the safe side
};
meta = {
description = "simplejson is a simple, fast, extensible JSON encoder/decoder for Python";
longDescription = ''
simplejson is compatible with Python 2.4 and later with no
external dependencies. It covers the full JSON specification
for both encoding and decoding, with unicode support. By
default, encoding is done in an encoding neutral fashion (plain
ASCII with \uXXXX escapes for unicode characters).
'';
homepage = http://code.google.com/p/simplejson/;
license = "MIT";
};
});
foolscap = buildPythonPackage (rec {
name = "foolscap-0.3.2";
src = fetchurl {
url = "http://foolscap.lothar.com/releases/${name}.tar.gz";
sha256 = "1wkqgm6anlxvz8dnqx7ki008255nm1mlhak5n9xy6g1yf31fn3l0";
};
propagatedBuildInputs = [ pkgs.twisted pkgs.pyopenssl ];
meta = {
homepage = http://foolscap.lothar.com/;
description = "Foolscap, an RPC protocol for Python that follows the distributed object-capability model";
longDescription = ''
"Foolscap" is the name for the next-generation RPC protocol,
intended to replace Perspective Broker (part of Twisted).
Foolscap is a protocol to implement a distributed
object-capabilities model in Python.
'';
# See http://foolscap.lothar.com/trac/browser/LICENSE.
license = "MIT";
};
});
}