Compare commits

..

1 Commits
0.13 ... 0.12

Author SHA1 Message Date
Eelco Dolstra
9e3f729c35 svn path=/nixpkgs/branches/0.12-release/; revision=15292 2009-04-24 21:26:21 +00:00
2089 changed files with 88609 additions and 61857 deletions

2
STABLE
View File

@@ -1 +1 @@
0
1

View File

@@ -1 +1 @@
0.13
0.12

View File

@@ -1,6 +1,5 @@
# You may need to override this.
docbookxsl = $(HOME)/.nix-profile/xml/xsl/docbook
dblatex = dblatex
XMLLINT = xmllint --catalogs
XSLTPROC = xsltproc --catalogs \
@@ -17,7 +16,7 @@ NEWS_OPTS = \
--stringparam section.autolabel.max.depth 0 \
--stringparam header.rule 0
all: NEWS.html NEWS.txt manual.html manual.pdf
all: NEWS.html NEWS.txt manual.html
NEWS.html: release-notes.xml
$(XSLTPROC) --nonet --xinclude --output $@ $(NEWS_OPTS) \
@@ -35,7 +34,4 @@ manual.html: *.xml
$(docbookxsl)/html/docbook.xsl manual.xml
manual.pdf: *.xml
$(dblatex) \
-P doc.collab.show=0 \
-P latex.output.revhistory=0 \
manual.xml
dblatex manual.xml

View File

@@ -1,605 +0,0 @@
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="chap-conventions">
<title>Coding conventions</title>
<section><title>Syntax</title>
<itemizedlist>
<listitem><para>Use 2 spaces of indentation per indentation level in
Nix expressions, 4 spaces in shell scripts.</para></listitem>
<listitem><para>Do not use tab characters, i.e. configure your
editor to use soft tabs. For instance, use <literal>(setq-default
indent-tabs-mode nil)</literal> in Emacs. Everybody has different
tab settings so its asking for trouble.</para></listitem>
<listitem><para>Use <literal>lowerCamelCase</literal> for variable
names, not <literal>UpperCamelCase</literal>. TODO: naming of
attributes in
<filename>all-packages.nix</filename>?</para></listitem>
<listitem><para>Function calls with attribute set arguments are
written as
<programlisting>
foo {
arg = ...;
}
</programlisting>
not
<programlisting>
foo
{
arg = ...;
}
</programlisting>
Also fine is
<programlisting>
foo { arg = ...; }
</programlisting>
if it's a short call.</para></listitem>
<listitem><para>In attribute sets or lists that span multiple lines,
the attribute names or list elements should be aligned:
<programlisting>
# A long list.
list =
[ elem1
elem2
elem3
];
# A long attribute set.
attrs =
{ attr1 = short_expr;
attr2 =
if true then big_expr else big_expr;
};
# Alternatively:
attrs = {
attr1 = short_expr;
attr2 =
if true then big_expr else big_expr;
};
</programlisting>
</para></listitem>
<listitem><para>Short lists or attribute sets can be written on one
line:
<programlisting>
# A short list.
list = [ elem1 elem2 elem3 ];
# A short set.
attrs = { x = 1280; y = 1024; };
</programlisting>
</para></listitem>
<listitem><para>Breaking in the middle of a function argument can
give hard-to-read code, like
<programlisting>
someFunction { x = 1280;
y = 1024; } otherArg
yetAnotherArg
</programlisting>
(especially if the argument is very large, spanning multiple
lines).</para>
<para>Better:
<programlisting>
someFunction
{ x = 1280; y = 1024; }
otherArg
yetAnotherArg
</programlisting>
or
<programlisting>
let res = { x = 1280; y = 1024; };
in someFunction res otherArg yetAnotherArg
</programlisting>
</para></listitem>
<listitem><para>The bodies of functions, asserts, and withs are not
indented to prevent a lot of superfluous indentation levels, i.e.
<programlisting>
{ arg1, arg2 }:
assert system == "i686-linux";
stdenv.mkDerivation { ...
</programlisting>
not
<programlisting>
{ arg1, arg2 }:
assert system == "i686-linux";
stdenv.mkDerivation { ...
</programlisting>
</para></listitem>
<listitem><para>Function formal arguments are written as:
<programlisting>
{ arg1, arg2, arg3 }:
</programlisting>
but if they don't fit on one line they're written as:
<programlisting>
{ arg1, arg2, arg3
, arg4, ...
, # Some comment...
argN
}:
</programlisting>
</para></listitem>
<listitem><para>Functions should list their expected arguments as
precisely as possible. That is, write
<programlisting>
{ stdenv, fetchurl, perl }: <replaceable>...</replaceable>
</programlisting>
instead of
<programlisting>
args: with args; <replaceable>...</replaceable>
</programlisting>
or
<programlisting>
{ stdenv, fetchurl, perl, ... }: <replaceable>...</replaceable>
</programlisting>
</para>
<para>For functions that are truly generic in the number of
arguments (such as wrappers around <varname>mkDerivation</varname>)
that have some required arguments, you should write them using an
<literal>@</literal>-pattern:
<programlisting>
{ stdenv, doCoverageAnalysis ? false, ... } @ args:
stdenv.mkDerivation (args // {
<replaceable>...</replaceable> if doCoverageAnalysis then "bla" else "" <replaceable>...</replaceable>
})
</programlisting>
instead of
<programlisting>
args:
args.stdenv.mkDerivation (args // {
<replaceable>...</replaceable> if args ? doCoverageAnalysis &amp;&amp; args.doCoverageAnalysis then "bla" else "" <replaceable>...</replaceable>
})
</programlisting>
</para></listitem>
</itemizedlist>
</section>
<section><title>Package naming</title>
<para>In Nixpkgs, there are generally three different names associated with a package:
<itemizedlist>
<listitem><para>The <varname>name</varname> attribute of the
derivation (excluding the version part). This is what most users
see, in particular when using
<command>nix-env</command>.</para></listitem>
<listitem><para>The variable name used for the instantiated package
in <filename>all-packages.nix</filename>, and when passing it as a
dependency to other functions. This is what Nix expression authors
see. It can also be used when installing using <command>nix-env
-iA</command>.</para></listitem>
<listitem><para>The filename for (the directory containing) the Nix
expression.</para></listitem>
</itemizedlist>
Most of the time, these are the same. For instance, the package
<literal>e2fsprogs</literal> has a <varname>name</varname> attribute
<literal>"e2fsprogs-<replaceable>version</replaceable>"</literal>, is
bound to the variable name <varname>e2fsprogs</varname> in
<filename>all-packages.nix</filename>, and the Nix expression is in
<filename>pkgs/os-specific/linux/e2fsprogs/default.nix</filename>.
However, identifiers in the Nix language dont allow certain
characters (e.g. dashes), so sometimes a different variable name
should be used. For instance, the
<literal>module-init-tools</literal> package is bound to the
<literal>module_init_tools</literal> variable in
<filename>all-packages.nix</filename>.</para>
<para>There are a few naming guidelines:
<itemizedlist>
<listitem><para>Generally, try to stick to the upstream package
name.</para></listitem>
<listitem><para>Dont use uppercase letters in the
<literal>name</literal> attribute — e.g.,
<literal>"mplayer-1.0rc2"</literal> instead of
<literal>"MPlayer-1.0rc2"</literal>.</para></listitem>
<listitem><para>The version part of the <literal>name</literal>
attribute <emphasis>must</emphasis> start with a digit (following a
dash) — e.g., <literal>"hello-0.3-pre-r3910"</literal> instead of
<literal>"hello-svn-r3910"</literal>, as the latter would be seen as
a package named <literal>hello-svn</literal> by
<command>nix-env</command>.</para></listitem>
<listitem><para>Dashes in the package name should be changed to
underscores in variable names, rather than to camel case — e.g.,
<varname>module_init_tools</varname> instead of
<varname>moduleInitTools</varname>.</para></listitem>
<listitem><para>If there are multiple versions of a package, this
should be reflected in the variable names in
<filename>all-packages.nix</filename>,
e.g. <varname>hello_0_3</varname> and <varname>hello_0_4</varname>.
If there is an obvious “default” version, make an attribute like
<literal>hello = hello_0_4;</literal>.</para></listitem>
</itemizedlist>
</para>
</section>
<section xml:id="sec-organisation"><title>File naming and organisation</title>
<para>Names of files and directories should be in lowercase, with
dashes between words — not in camel case. For instance, it should be
<filename>all-packages.nix</filename>, not
<filename>allPackages.nix</filename> or
<filename>AllPackages.nix</filename>.</para>
<section><title>Hierachy</title>
<para>Each package should be stored in its own directory somewhere in
the <filename>pkgs/</filename> tree, i.e. in
<filename>pkgs/<replaceable>category</replaceable>/<replaceable>subcategory</replaceable>/<replaceable>...</replaceable>/<replaceable>pkgname</replaceable></filename>.
Below are some rules for picking the right category for a package.
Many packages fall under several categories; what matters is the
<emphasis>primary</emphasis> purpose of a package. For example, the
<literal>libxml2</literal> package builds both a library and some
tools; but its a library foremost, so it goes under
<filename>pkgs/development/libraries</filename>.</para>
<para>When in doubt, consider refactoring the
<filename>pkgs/</filename> tree, e.g. creating new categories or
splitting up an existing category.</para>
<variablelist>
<varlistentry>
<term>If its used to support <emphasis>software development</emphasis>:</term>
<listitem>
<variablelist>
<varlistentry>
<term>If its a <emphasis>library</emphasis> used by other packages:</term>
<listitem>
<para><filename>development/libraries</filename> (e.g. <filename>libxml2</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>compiler</emphasis>:</term>
<listitem>
<para><filename>development/compilers</filename> (e.g. <filename>gcc</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its an <emphasis>interpreter</emphasis>:</term>
<listitem>
<para><filename>development/interpreters</filename> (e.g. <filename>guile</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a (set of) development <emphasis>tool(s)</emphasis>:</term>
<listitem>
<variablelist>
<varlistentry>
<term>If its a <emphasis>parser generator</emphasis> (including lexers):</term>
<listitem>
<para><filename>development/tools/parsing</filename> (e.g. <filename>bison</filename>, <filename>flex</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>build manager</emphasis>:</term>
<listitem>
<para><filename>development/tools/build-managers</filename> (e.g. <filename>gnumake</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Else:</term>
<listitem>
<para><filename>development/tools/misc</filename> (e.g. <filename>binutils</filename>)</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>Else:</term>
<listitem>
<para><filename>development/misc</filename></para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a (set of) <emphasis>tool(s)</emphasis>:</term>
<listitem>
<para>(A tool is a relatively small program, especially one intented
to be used non-interactively.)</para>
<variablelist>
<varlistentry>
<term>If its for <emphasis>networking</emphasis>:</term>
<listitem>
<para><filename>tools/networking</filename> (e.g. <filename>wget</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its for <emphasis>text processing</emphasis>:</term>
<listitem>
<para><filename>tools/text</filename> (e.g. <filename>diffutils</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>system utility</emphasis>, i.e.,
something related or essential to the operation of a
system:</term>
<listitem>
<para><filename>tools/system</filename> (e.g. <filename>cron</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its an <emphasis>archiver</emphasis> (which may
include a compression function):</term>
<listitem>
<para><filename>tools/archivers</filename> (e.g. <filename>zip</filename>, <filename>tar</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>compression</emphasis> program:</term>
<listitem>
<para><filename>tools/compression</filename> (e.g. <filename>gzip</filename>, <filename>bzip2</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>security</emphasis>-related program:</term>
<listitem>
<para><filename>tools/security</filename> (e.g. <filename>nmap</filename>, <filename>gnupg</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Else:</term>
<listitem>
<para><filename>tools/misc</filename></para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>shell</emphasis>:</term>
<listitem>
<para><filename>shells</filename> (e.g. <filename>bash</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>server</emphasis>:</term>
<listitem>
<variablelist>
<varlistentry>
<term>If its a web server:</term>
<listitem>
<para><filename>servers/http</filename> (e.g. <filename>apache-httpd</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its an implementation of the X Windowing System:</term>
<listitem>
<para><filename>servers/x11</filename> (e.g. <filename>xorg</filename> — this includes the client libraries and programs)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Else:</term>
<listitem>
<para><filename>servers/misc</filename></para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>desktop environment</emphasis>
(including <emphasis>window managers</emphasis>):</term>
<listitem>
<para><filename>desktops</filename> (e.g. <filename>kde</filename>, <filename>gnome</filename>, <filename>enlightenment</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its an <emphasis>application</emphasis>:</term>
<listitem>
<para>A (typically large) program with a distinct user
interface, primarily used interactively.</para>
<variablelist>
<varlistentry>
<term>If its a <emphasis>version management system</emphasis>:</term>
<listitem>
<para><filename>applications/version-management</filename> (e.g. <filename>subversion</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its for <emphasis>video playback / editing</emphasis>:</term>
<listitem>
<para><filename>applications/video</filename> (e.g. <filename>vlc</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its for <emphasis>graphics viewing / editing</emphasis>:</term>
<listitem>
<para><filename>applications/graphics</filename> (e.g. <filename>gimp</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its for <emphasis>networking</emphasis>:</term>
<listitem>
<variablelist>
<varlistentry>
<term>If its a <emphasis>mailreader</emphasis>:</term>
<listitem>
<para><filename>applications/networking/mailreaders</filename> (e.g. <filename>thunderbird</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>newsreader</emphasis>:</term>
<listitem>
<para><filename>applications/networking/newsreaders</filename> (e.g. <filename>pan</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>web browser</emphasis>:</term>
<listitem>
<para><filename>applications/networking/browsers</filename> (e.g. <filename>firefox</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Else:</term>
<listitem>
<para><filename>applications/networking/misc</filename></para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>Else:</term>
<listitem>
<para><filename>applications/misc</filename></para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>If its <emphasis>data</emphasis> (i.e., does not have a
straight-forward executable semantics):</term>
<listitem>
<variablelist>
<varlistentry>
<term>If its a <emphasis>font</emphasis>:</term>
<listitem>
<para><filename>data/fonts</filename></para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its related to <emphasis>SGML/XML processing</emphasis>:</term>
<listitem>
<variablelist>
<varlistentry>
<term>If its an <emphasis>XML DTD</emphasis>:</term>
<listitem>
<para><filename>data/sgml+xml/schemas/xml-dtd</filename> (e.g. <filename>docbook</filename>)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>If its an <emphasis>XSLT stylesheet</emphasis>:</term>
<listitem>
<para>(Okay, these are executable...)</para>
<para><filename>data/sgml+xml/stylesheets/xslt</filename> (e.g. <filename>docbook-xsl</filename>)</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>If its a <emphasis>game</emphasis>:</term>
<listitem>
<para><filename>games</filename></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Else:</term>
<listitem>
<para><filename>misc</filename></para>
</listitem>
</varlistentry>
</variablelist>
</section>
<section><title>Versioning</title>
<para>Because every version of a package in Nixpkgs creates a
potential maintenance burden, old versions of a package should not be
kept unless there is a good reason to do so. For instance, Nixpkgs
contains several versions of GCC because other packages dont build
with the latest version of GCC. Other examples are having both the
latest stable and latest pre-release version of a package, or to keep
several major releases of an application that differ significantly in
functionality.</para>
<para>If there is only one version of a package, its Nix expression
should be named <filename>e2fsprogs/default.nix</filename>. If there
are multiple versions, this should be reflected in the filename,
e.g. <filename>e2fsprogs/1.41.8.nix</filename> and
<filename>e2fsprogs/1.41.9.nix</filename>. The version in the
filename should leave out unnecessary detail. For instance, if we
keep the latest Firefox 2.0.x and 3.5.x versions in Nixpkgs, they
should be named <filename>firefox/2.0.nix</filename> and
<filename>firefox/3.5.nix</filename>, respectively (which, at a given
point, might contain versions <literal>2.0.0.20</literal> and
<literal>3.5.4</literal>). If a version requires many auxiliary
files, you can use a subdirectory for each version,
e.g. <filename>firefox/2.0/default.nix</filename> and
<filename>firefox/3.5/default.nix</filename>.</para>
<para>All versions of a package <emphasis>must</emphasis> be included
in <filename>all-packages.nix</filename> to make sure that they
evaluate correctly.</para>
</section>
</section>
</chapter>

View File

@@ -1,6 +1,6 @@
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="chap-language-support">
xml:id="chap-meta">
<title>Support for specific programming languages</title>
@@ -13,7 +13,7 @@ in Nixpkgs to easily build packages for other programming languages,
such as Perl or Haskell. These are described in this chapter.</para>
<section xml:id="ssec-language-perl"><title>Perl</title>
<section><title>Perl</title>
<para>Nixpkgs provides a function <varname>buildPerlPackage</varname>,
a generic package builder function for any Perl package that has a
@@ -156,42 +156,7 @@ ClassC3Componentised = buildPerlPackage rec {
<section><title>Python</title>
<para>
Python packages that
use <link xlink:href="http://pypi.python.org/pypi/setuptools/"><literal>setuptools</literal></link>,
which many Python packages do nowadays, can be built very simply using
the <varname>buildPythonPackage</varname> function. This function is
implemented
in <link xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/development/python-modules/generic/default.nix"><filename>pkgs/development/python-modules/generic/default.nix</filename></link>
and works similarly to <varname>buildPerlPackage</varname>. (See
<xref linkend="ssec-language-perl"/> for details.)
</para>
<para>
Python packages that use <varname>buildPythonPackage</varname> are
defined
in <link xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/top-level/python-packages.nix"><filename>pkgs/top-level/python-packages.nix</filename></link>.
Most of them are simple. For example:
<programlisting>
twisted = buildPythonPackage {
name = "twisted-8.1.0";
src = fetchurl {
url = http://tmrc.mit.edu/mirror/twisted/Twisted/8.1/Twisted-8.1.0.tar.bz2;
sha256 = "0q25zbr4xzknaghha72mq57kh53qw1bf8csgp63pm9sfi72qhirl";
};
propagatedBuildInputs = [ pkgs.ZopeInterface ];
meta = {
homepage = http://twistedmatrix.com/;
description = "Twisted, an event-driven networking engine written in Python";
license = "MIT";
};
};
</programlisting>
</para>
<para>TODO</para>
</section>
@@ -217,4 +182,4 @@ twisted = buildPythonPackage {
</section>
</chapter>
</chapter>

View File

@@ -21,10 +21,11 @@
<copyright>
<year>2008</year>
<year>2009</year>
<holder>Eelco Dolstra</holder>
</copyright>
<date>June 2008</date>
</info>
<xi:include href="introduction.xml" />
@@ -33,7 +34,6 @@
<xi:include href="meta.xml" />
<xi:include href="language-support.xml" />
<xi:include href="package-notes.xml" />
<xi:include href="coding-conventions.xml" />
</book>

View File

@@ -96,18 +96,6 @@ interpretation:</para>
allowed values.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>maintainers</varname></term>
<listitem><para>A list of names and e-mail addresses of the
maintainers of this Nix expression, e.g. <literal>["Alice
&lt;alice@example.org>" "Bob &lt;bob@example.com>"]</literal>. If
you are the maintainer of multiple packages, you may want to add
yourself to <link
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/lib/maintainers.nix"><filename>pkgs/lib/maintainers.nix</filename></link>
and write something like <literal>[stdenv.lib.maintainers.alice
stdenv.lib.maintainers.bob]</literal>.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>priority</varname></term>
<listitem><para>The <emphasis>priority</emphasis> of the package,
@@ -124,7 +112,7 @@ interpretation:</para>
</section>
<section xml:id="sec-meta-license"><title>Licenses</title>
<section><title>Licenses</title>
<note><para>This is just a first attempt at standardising the license
attribute.</para></note>
@@ -164,18 +152,6 @@ following:
3 or higher.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>bsd</varname></term>
<listitem><para>Catch-all for licenses that are essentially
similar to <link
xlink:href="http://www.gnu.org/licenses/license-list.html#ModifiedBSD">the
original BSD license with the advertising clause removed</link>,
i.e. permissive non-copyleft free software licenses. This
includes the <link
xlink:href="http://www.gnu.org/licenses/license-list.html#X11License">X11
(“MIT”) License</link>.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>free</varname></term>
<listitem><para>Catch-all for free software licenses not listed
@@ -188,12 +164,6 @@ following:
listed above.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>free-non-copyleft</varname></term>
<listitem><para>Catch-all for free, non-copyleft software licenses
not listed above.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>unfree-redistributable</varname></term>
<listitem><para>Unfree package that can be redistributed in binary

View File

@@ -11,7 +11,7 @@ Linux kernel or X.org.</para>
<!--============================================================-->
<section xml:id="sec-linux-kernel">
<section>
<title>Linux kernel</title>
@@ -170,18 +170,15 @@ splashutils_15 = ...;</programlisting>
<para>The Nix expressions for the X.org packages reside in
<filename>pkgs/servers/x11/xorg/default.nix</filename>. This file is
automatically generated from lists of tarballs in an X.org release.
As such it should not be modified directly; rather, you should modify
the lists, the generator script or the file
<filename>pkgs/servers/x11/xorg/overrides.nix</filename>, in which you
can override or add to the derivations produced by the
generator.</para>
automatically generated from lists of tarballs in an X.org
release. As such it should not be modified directly; rather, you
should modify the lists or the generator script.</para>
<para>The generator is invoked as follows:
<screen>
$ cd pkgs/servers/x11/xorg
$ cat tarballs-7.5.list extra.list old.list \
$ cat tarballs-7.4.list extra.list old.list \
| perl ./generate-expr-from-tarballs.pl
</screen>
@@ -195,7 +192,7 @@ tarballs between runs. Pay close attention to the <literal>NOT FOUND:
run, since they may indicate missing dependencies. (Some might be
optional dependencies, however.)</para>
<para>A file like <filename>tarballs-7.5.list</filename> contains all
<para>A file like <filename>tarballs-7.4.list</filename> contains all
tarballs in a X.org release. It can be generated like this:
<screen>
@@ -215,8 +212,8 @@ some people or by other packages (such as
<para>If the expression for a package requires derivation attributes
that the generator cannot figure out automatically (say,
<varname>patches</varname> or a <varname>postInstall</varname> hook),
you should modify
<filename>pkgs/servers/x11/xorg/overrides.nix</filename>.</para>
you should modify the generator script
(<varname>generate-expr-from-tarballs.pl</varname>).</para>
</section>

View File

@@ -1,6 +1,6 @@
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="chap-quick-start">
xml:id="chap-overvie">
<title>Quick Start to Adding a Package</title>
@@ -25,8 +25,8 @@ $ cd nixpkgs</screen>
<filename>pkgs/development/libraries/<replaceable>pkgname</replaceable></filename>,
while a web browser goes into
<filename>pkgs/applications/networking/browsers/<replaceable>pkgname</replaceable></filename>.
See <xref linkend="sec-organisation" /> for some hints on the tree
organisation. Create a directory for your package, e.g.
See Section XXX for some hints on the tree organisation. Create a
directory for your package, e.g.
<screen>
$ svn mkdir pkgs/development/libraries/libfoo</screen>
@@ -104,8 +104,8 @@ $ svn add pkgs/development/libraries/libfoo/default.nix</screen>
</listitem>
<listitem>
<para>Thunderbird: <link
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/applications/networking/mailreaders/thunderbird-2.x/default.nix"><filename>pkgs/applications/networking/mailreaders/thunderbird-2.x/default.nix</filename></link>.
<para>Firefox: <link
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/applications/networking/browsers/firefox-3/default.nix"><filename>pkgs/applications/networking/browsers/firefox-3/default.nix</filename></link>.
Lots of dependencies.</para>
</listitem>
@@ -120,19 +120,20 @@ $ svn add pkgs/development/libraries/libfoo/default.nix</screen>
<listitem>
<para>XML::Simple, a Perl module: <link
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/top-level/perl-packages.nix"><filename>pkgs/top-level/perl-packages.nix</filename></link>
(search for the <varname>XMLSimple</varname> attribute).
Most Perl modules are so simple to build that they are
defined directly in <filename>perl-packages.nix</filename>;
no need to make a separate file for them.</para>
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/top-level/all-packages.nix"><filename>pkgs/top-level/all-packages.nix</filename></link>
(search for the <varname>perlXMLSimple</varname>
attribute). Most Perl modules are so simple to build that
they are defined directly in
<filename>all-packages.nix</filename>, no need to make a
separate file for them.</para>
</listitem>
<listitem>
<para>Adobe Reader: <link
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/applications/misc/adobe-reader/default.nix"><filename>pkgs/applications/misc/adobe-reader/default.nix</filename></link>.
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/applications/misc/acrobat-reader/default.nix"><filename>pkgs/applications/misc/acrobat-reader/default.nix</filename></link>.
Shows how binary-only packages can be supported. In
particular the <link
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/applications/misc/adobe-reader/builder.sh">builder</link>
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/applications/misc/acrobat-reader/builder.sh">builder</link>
uses <command>patchelf</command> to set the RUNPATH and ELF
interpreter of the executables so that the right libraries
are found at runtime.</para>
@@ -147,11 +148,10 @@ $ svn add pkgs/development/libraries/libfoo/default.nix</screen>
<itemizedlist>
<listitem>
<para>All <varname linkend="chap-meta">meta</varname>
attributes are optional, but its still a good idea to
provide at least the <varname>description</varname>,
<varname>homepage</varname> and <varname
linkend="sec-meta-license">license</varname>.</para>
<para>All <varname>meta</varname> attributes are optional,
but its still a good idea to provide at least the
<varname>description</varname> and
<varname>homepage</varname>.</para>
</listitem>
<listitem>
@@ -230,11 +230,11 @@ $ nix-env -f . -iA libfoo</screen>
package and make them available in the <link
xlink:href="http://nixos.org/releases/nixpkgs/channels/nixpkgs-unstable/"><literal>nixpkgs</literal>
channel</link>, add it to <link
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/top-level/release.nix"><filename>pkgs/top-level/release.nix</filename></link>.</para>
xlink:href="https://svn.nixos.org/repos/nix/nixpkgs/trunk/pkgs/top-level/build-for-release.nix"><filename>pkgs/top-level/build-for-release.nix</filename></link>.</para>
</listitem>
</orderedlist>
</para>
</chapter>
</chapter>

View File

@@ -5,31 +5,6 @@
<title>Nixpkgs Release Notes</title>
<section><title>Release 0.13 (February 5, 2010)</title>
<para>As always, there are many changes. Some of the most important
updates are:
<itemizedlist>
<listitem><para>Glibc 2.9.</para></listitem>
<listitem><para>GCC 4.3.3.</para></listitem>
<listitem><para>Linux 2.6.32.</para></listitem>
<listitem><para>X.org 7.5.</para></listitem>
<listitem><para>KDE 4.3.4.</para></listitem>
</itemizedlist>
</para>
</section>
<section><title>Release 0.12 (April 24, 2009)</title>
<para>There are way too many additions to Nixpkgs since the last

View File

@@ -879,7 +879,7 @@ distribution of the package. The default
<function>distPhase</function> first calls <command>make
dist</command>, then it copies the resulting source tarballs to
<filename>$out/tarballs/</filename>. This phase is only executed if
the attribute <varname>doDist</varname> is not set.</para>
the <varname>doDist</varname> is not set.</para>
<variablelist>
<title>Variables controlling the distribution phase</title>

49
maintainers/docs/bugs.txt Normal file
View File

@@ -0,0 +1,49 @@
*** All these bugs should be moved to JIRA (if they still exist) ***
* If NIX_DEBUG is turned on (set to "1"), autoconf configure scripts
may fail to find the correct preprocessor:
checking how to run the C preprocessor... /lib/cpp
* When building gcc using a Nix gcc, generated libraries link against
the libraries of the latter:
$ ldd /nix/store/3b1d3995c4edbf026be5c73f66f69245-gcc-3.3.3/lib/libstdc++.so
...
libgcc_s.so.1 => /nix/store/1f19e61d1b7051f1131f78b41b2a0e7e-gcc-3.3.2/lib/libgcc_s.so.1 (0x400de000)
(wrong! should be .../3b1d.../lib/libgcc_s...)
...
* In libXt:
/bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DXTHREADS -DXUSE_MTSAFE_API -I/nix/store/aadf0bd4a908da11d14f6538503b8408-libX11-6.2.1/include -I/nix/store/ba366e3b944ead64ec9b0490bb615874-xproto-6.6.1/include -I./include/X11 -g -O2 -c -o ActionHook.lo `test -f 'ActionHook.c' || echo './'`ActionHook.c
mkdir .libs
gcc -DHAVE_CONFIG_H -I. -I. -I. -DXTHREADS -DXUSE_MTSAFE_API -I/nix/store/aadf0bd4a908da11d14f6538503b8408-libX11-6.2.1/include -I/nix/store/ba366e3b944ead64ec9b0490bb615874-xproto-6.6.1/include -I./include/X11 -g -O2 -c ActionHook.c -fPIC -DPIC -o .libs/ActionHook.o
In file included from IntrinsicI.h:55,
from ActionHook.c:69:
include/X11/IntrinsicP.h:54:27: X11/Intrinsic.h: No such file or directory
* Then:
gcc -DHAVE_CONFIG_H -I. -I. -I. -DXTHREADS -DXUSE_MTSAFE_API -I/nix/store/aadf0bd4a908da11d14f6538503b8408-libX11-6.2.1/include -I/nix/store/ba366e3b944ead64ec9b0490bb615874-xproto-6.6.1/include -I./include -I./include/X11 -g -O2 -c ActionHook.c -fPIC -DPIC -o .libs/ActionHook.o
In file included from IntrinsicI.h:55,
from ActionHook.c:69:
include/X11/IntrinsicP.h:202:25: X11/ObjectP.h: No such file or directory
(moved to include/X11; should edit include/Makefile.am)
* In gtksourceview-sharp: does the prefix patch cause problems (e.g.,
makefile.am says "mimeinfodir should be the same as the gnome
prefix")?
* fgrep/egrep: these fail if grep is not in the $PATH.
* teTeX: some programs (such as epstopdf) depend on /usr/bin/env, and
expect perl to be in the environment.

View File

@@ -0,0 +1,116 @@
* Classification scheme for packages
- many packages fall under several categories; what matters is the
*primary* purpose of a package. For example, the libxml2 package
builds both a library and some tools; but it's a library foremost,
so it goes under ./development/libraries.
- when in doubt, refactor.
IF it's used to support SOFTWARE DEVELOPMENT:
IF it's a LIBRARY used by other packages:
IF it's directly related to GTK:
./development/libraries/gtk+
ELSE
./development/libraries
(e.g., libxml2)
ELSE IF it's a COMPILER:
./development/compilers
(e.g., gcc)
ELSE IF it's an INTERPRETER:
./development/interpreters
ELSE IF it's a development TOOL (or set of):
IF it's a PARSER GENERATOR (incl. lexers):
./development/tools/parsing
(e.g., bison, flex)
ELSE IF it's a BUILD MANAGER:
./development/tools/build-managers
(e.g., gnumake
ELSE
./development/tools/misc
(e.g., binutils)
ELSE
./development/misc
ELSE IF it's a TOOL (or set of):
# a tool is a relatively *small* program, esp. one intented to be
# used non-interactively
IF it's for NETWORKING:
./tools/networking
(e.g., wget)
ELSE IF it's for TEXT PROCESSING:
./tools/text
(e.g., diffutils)
ELSE IF it's a SYSTEM utility, i.e., something related or essential
to the operation of a system:
./tools/system
(e.g., init)
ELSE IF it's an ARCHIVER (which may include a compression function):
./tools/archivers
(e.g., zip, tar)
ELSE IF it's a COMPRESSION program:
./tools/compression
(e.g., gzip, bzip2)
ELSE IF it's a SECURITY program:
./tools/security
(e.g., nmap, gnupg)
ELSE
./tools/misc
ELSE IF it's a SHELL:
./shells
ELSE IF it's a SERVER:
IF it's a HTTP server:
./servers/http
(e.g., apache)
IF it's a X11 server:
./servers/x11
(e.g., xfree86)
ELSE
./servers/misc
ELSE IF it's a DESKTOP ENVIRONMENT (incl. WINDOW MANAGERS):
./desktops
(e.g., kde, gnome, fvwm)
ELSE IF it's an APPLICATION:
# a (typically large) program with a distinct user interface,
# primarily used interactively
IF it's a VERSION MANAGEMENT system:
./applications/version-management
ELSE IF it's for VIDEO playback/etc:
./applications/video
ELSE IF it's for GRAPHICS viewing/editing/etc:
./applications/graphics
ELSE IF it's for NETWORKING:
IF it's a MAILREADER:
./applications/networking/mailreaders
IF it's a NEWSREADER:
./applications/networking/newsreaders
ELSE
./applications/networking/misc
ELSE
./applications/misc
ELSE IF it's DATA (i.e., does not have a straight-forward executable semantics):
IF it's related to SGML/XML processing:
IF it's a XML DTD:
./data/sgml+xml/schemas/xml-dtd
ELSE IF it's an XSLT stylesheet (okay, these are executable...):
./data/sgml+xml/stylesheets/xslt
ELSE IF it's a GAME:
./games
ELSE:
./misc

View File

@@ -0,0 +1,101 @@
Some conventions:
* Directories / file names: lowercase, and use dashes between words,
no camel case. I.e., all-packages.nix, not all allPackages.nix or
AllPackages.nix.
* Don't use TABs. Everybody has different TAB settings so it's asking
for trouble.
* Use 2 spaces of indentation per indentation level in Nix
expressions, 4 spaces in shell scripts. (Maybe 2 is too low, but
for consistency's sake it should be the same. Certainly indentation
should be consistent within a single file.)
* Use lowerCamelCase for variable names, not UpperCamelCase.
* Function calls with attribute set arguments are written as
foo {
arg = ...;
}
not
foo
{
arg = ...;
}
Also fine is
foo { arg = ...; }
if it's a short call.
* In attribute sets or lists that span multiple lines, the attribute
names or list elements should be aligned:
# A long list.
list = [
elem1
elem2
elem3
];
# A long attribute set.
attrs = {
attr1 = short_expr;
attr2 =
if true then big_expr else big_expr;
};
* Short lists or attribute sets can be written on one line:
# A short list.
list = [ elem1 elem2 elem3 ];
# A short set.
attrs = { x = 1280; y = 1024; };
* Breaking in the middle of a function argument can give hard-to-read
code, like
someFunction { x = 1280;
y = 1024; } otherArg
yetAnotherArg
(especially if the argument is very large, spanning multiple lines).
Better:
someFunction
{ x = 1280; y = 1024; }
otherArg
yetAnotherArg
or
let res = { x = 1280; y = 1024; };
in someFunction res otherArg yetAnotherArg
* The bodies of functions, asserts, and withs are not indented, so
assert system == "i686-linux";
stdenv.mkDerivation { ...
not
assert system == "i686-linux";
stdenv.mkDerivation { ...
* Function formal arguments are written as:
{arg1, arg2, arg3}:
but if they don't fit on one line they're written as:
{ arg1, arg2, arg3
, arg4, ...
, argN
}:

View File

@@ -0,0 +1,31 @@
Creating a new static stdenv
----------------------------
When Nix is ported to a new (Linux) platform and you want to have a completely
pure setup for the stdenv (for example for NixOS) it is necessary to rebuild
the static tools.
The challenge is that there is no Nix environment yet, for bootstrapping.
The first task is to create all the tools that are necessary. For most tools
there are ready made Nix expressions.
GCC
There is an expression gcc-static-3.4. Depending on whether or not you already
have an environment built with Nix (x86-linux: yes, rest: not yet) you should
set the noSysDirs parameter in all-packages.nix. If there is an environment,
leave it, but if the system is still impure (like most systems), set noSysDirs
to false.
bash
There is an expression for bash-static. Simply build it.
bzip2
There is an expression for bzip2-static. Simply build it.
findutils
There is an expression for findutils-static. Simply build it.

View File

@@ -0,0 +1,35 @@
Upgrading the standard initial environment
For Nix on i686-linux we make use of an environment of statically linked
tools (see $nixpkgs/stdenv/linux). The first version of these tools were
compiled outside of Nix, in an impure environment. They are used as some
magical ingredient to make everything work. To keep these tools more in
synchronization with the rest of nixpkgs and to make porting of nixpkgs
to other platforms easier the static versions are now also built with Nix
and nixpkgs.
The tools can be found in nixpkgs in:
- shells/bash-static
- tools/networking/curl-diet
- tools/archivers/gnutar-diet
- tools/compression/gzip-diet
- tools/compression/bzip2-static
- tools/text/gnused-diet
- tools/text/diffutils-diet
- tools/text/gnupatch-diet
- tools/misc/findutils-static
and
- development/compilers/gcc-static-3.4
Most packages are compiled with dietlibc, an alternate C library, apart
from bash and findutils, which are statically linked to glibc. The reason
we chose dietlibc has various reasons. First of all, curl cannot be built
statically with glibc. If we do, we get a static binary, but it cannot resolve
hostnames to IP addresses. glibc dynamically loads functionality at runtime
to do resolving. When linking with dietlibc this doesn't happen.
The static tools are not used as part of the input hashing (see Eelco's
PhD thesis, paragraph 5.4.1), so changing them does not change anything and
will not force a massive rebuild.

12
maintainers/docs/todo.txt Normal file
View File

@@ -0,0 +1,12 @@
* Patch development/tools/misc/libtool not to search standard
directories for libraries (like setup.sh does now). [do we want
this?]
* Inform freedesktop people that Xaw requires Xpm.
* After building gcc, filter out references to /tmp/nix... in
.../lib/libsupc++.la and .../lib/libstdc++.la
* Add gettext to glib propagatedBuildInputs? Glib's `gi18n.h' doesn't
seem to like Glibc `libintl.h'; needs the gettext one instead.
[Move from libbonoboui]

View File

@@ -1,57 +0,0 @@
#! /bin/sh -e
distDir=/data/webserver/tarballs
urls=$(nix-instantiate --eval-only --xml --strict ./eval-release.nix \
| grep -A2 'name="urls"' \
| grep '<string value=' \
| sed 's/.*"\(.*\)".*/\1/' \
| sort | uniq)
for url in $urls; do
if echo "$url" | grep -q -E "www.cs.uu.nl|nixos.org|.stratego-language.org|java.sun.com|ut2004|linuxq3a|RealPlayer|Adbe|belastingdienst|microsoft|armijn/.nix|sun.com|archive.eclipse.org"; then continue; fi
base="$(basename "$url")"
newPath="$distDir/$base"
if ! test -e "$newPath"; then
#if echo $url | grep -q 'mirror://'; then
# echo "$fn: skipping mirrored $url"
# continue
#fi
echo "downloading $url to $newPath"
if test -n "$doCopy"; then
declare -a res
if ! res=($(PRINT_PATH=1 nix-prefetch-url "$url")); then
continue
fi
storePath=${res[1]}
cp $storePath "$newPath.tmp.$$"
mv -f "$newPath.tmp.$$" "$newPath"
fi
fi
if test -n "$doCopy" -a -e "$newPath"; then
echo "hashing $newPath"
md5=$(nix-hash --flat --type md5 "$newPath")
ln -sfn "../$base" $distDir/md5/$md5
sha1=$(nix-hash --flat --type sha1 "$newPath")
ln -sfn "../$base" $distDir/sha1/$sha1
sha256=$(nix-hash --flat --type sha256 "$newPath")
ln -sfn "../$base" $distDir/sha256/$sha256
ln -sfn "../$base" $distDir/sha256/$(nix-hash --type sha256 --to-base32 "$sha256")
fi
done
echo DONE

View File

@@ -1,57 +0,0 @@
#!/bin/sh
attr=$1
: ${NIXPKGS=/etc/nixos/nixpkgs}
tmp=$(mktemp --tmpdir -d nixpkgs-dep-license.XXXXXX)
exitHandler() {
exitCode=$?
rm -rf "$tmp"
exit $exitCode
}
trap "exitHandler" EXIT
# fetch the trace and the drvPath of the attribute.
nix-instantiate $NIXPKGS -A $attr --show-trace > "$tmp/drvPath" 2> "$tmp/trace" || {
cat 1>&2 - "$tmp/trace" <<EOF
An error occured while evaluating $attr.
EOF
exit 1
}
# generate a sed script based on the trace output.
sed '
\,@:.*:@, {
# \1 *.drv file
# \2 License terms
s,.*@:drv:\(.*\):\(.*\):@.*,s!\1!\1: \2!; t;,
s!Str(\\\"\([^,]*\)\\\",\[\])!\1!g
b
}
d
' "$tmp/trace" > "$tmp/filter.sed"
if test $(wc -l "$tmp/filter.sed" | sed 's/ .*//') == 0; then
echo 1>&2 "
No derivation mentionned in the stack trace. Either your derivation does
not use stdenv.mkDerivation or you forgot to use the stdenv adapter named
traceDrvLicenses.
- defaultStdenv = allStdenvs.stdenv;
+ defaultStdenv = traceDrvLicenses allStdenvs.stdenv;
"
exit 1
fi
# remove all dependencies which are using stdenv.mkDerivation
echo '
d
' >> "$tmp/filter.sed"
nix-store -q --tree $(cat "$tmp/drvPath") | sed -f "$tmp/filter.sed"
exit 0;

View File

@@ -0,0 +1,83 @@
#! /bin/sh -e
distDir=/data/webserver/dist/tarballs
find "$1" -name "*.nix" | while read fn; do
grep -E '^ *url = ' "$fn" | while read line; do
if url=$(echo "$line" | sed 's^url = \(.*\);^\1^'); then
if ! echo "$url" | grep -q -E "www.cs.uu.nl|nixos.org|.stratego-language.org|java.sun.com|ut2004|linuxq3a|RealPlayer|Adbe|belastingdienst|microsoft|armijn/.nix|sun.com|archive.eclipse.org"; then
base="$(basename "$url")"
newPath="$distDir/$base"
if test -e "$newPath"; then
#echo "$fn: checking hash of existing $newPath"
hash=$(fgrep -A 1 "$url" "$fn" | grep md5 | sed 's^.*md5 = \"\(.*\)\";.*^\1^')
hashType=md5
if test -z "$hash"; then
hash=$(fgrep -A 1 "$url" "$fn" | grep sha256 | sed 's^.*sha256 = \"\(.*\)\";.*^\1^')
hashType="sha256 --base32"
if test -n "$hash"; then
if test "${#hash}" = 64; then
hash=$(nix-hash --to-base32 --type sha256 $hash)
fi
else
hash=$(fgrep -A 1 "$url" "$fn" | grep sha1 | sed 's^.*sha1 = \"\(.*\)\";.*^\1^')
hashType="sha1"
if test -z "$hash"; then
echo "WARNING: $fn: cannot figure out the hash for $url"
continue
fi
fi
fi
#echo "HASH = $hash"
if ! test "$(nix-hash --type $hashType --flat "$newPath")" = "$hash"; then
echo "WARNING: $fn: $newPath exists and differs, hash should be $hash!"
continue
fi
else
if echo $url | grep -q 'mirror://'; then
#echo "$fn: skipping mirrored $url"
continue
fi
echo "$fn: $url -> $newPath"
if test -n "$doCopy"; then
if ! curl --disable-epsv --fail --location --max-redirs 20 --remote-time \
"$url" --output "$newPath".tmp; then
continue
fi
mv -f "$newPath".tmp "$newPath"
fi
fi
if test -n "$doCopy" -a -e "$newPath"; then
md5=$(nix-hash --flat --type md5 "$newPath")
ln -sfn "../$base" $distDir/md5/$md5
sha1=$(nix-hash --flat --type sha1 "$newPath")
ln -sfn "../$base" $distDir/sha1/$sha1
sha256=$(nix-hash --flat --type sha256 "$newPath")
ln -sfn "../$base" $distDir/sha256/$sha256
ln -sfn "../$base" $distDir/sha256/$(nix-hash --type sha256 --to-base32 "$sha256")
fi
fi
fi
done
done
echo DONE

View File

@@ -1,20 +0,0 @@
# Evaluate `release.nix' like Hydra would (i.e. call each job
# attribute with the expected `system' argument). Too bad
# nix-instantiate can't to do this.
let
lib = (import ../.. {}).lib;
rel = removeAttrs (import ../../pkgs/top-level/release.nix) ["tarball"];
maybe = x: let y = builtins.tryEval x; in if y.success then y.value else null;
call = attrs: lib.flip lib.mapAttrs attrs
(n: v: builtins.trace n (
if builtins.isFunction v then maybe (v { system = "i686-linux"; })
else if builtins.isAttrs v then call v
else null
));
in call rel

View File

@@ -1,84 +0,0 @@
usage() {
echo "
$0 <path to unpacked binary distribution directory>
This program return the list of libraries and where to find them based on
your currently installed programs.
";
exit 1
}
if test $# -ne 1; then
usage
fi
binaryDist=$1
hasBinaries=false
for bin in $(find $binaryDist -executable -type f) :; do
if test $bin = ":"; then
$hasBinaries || \
echo "No patchable found in this directory."
break
fi
hasBinaries=true
echo ""
echo "$bin:"
hasLibraries=false
unset interpreter
unset addRPath
for lib in $(strings $bin | grep '^\(/\|\)lib.*\.so' | sort | uniq) :; do
if test $lib = ":"; then
$hasLibraries || \
echo " This program is a script or it is statically linked."
break
fi
hasLibraries=true
echo " $lib:";
libPath=$lib
lib=$(basename $lib)
#versionLessLib=$(echo $lib | sed 's,[.][.0-9]*$,,')
libs="$(
find /nix/store/*/lib* \( -type f -or -type l \) -name $lib |
grep -v '\(bootstrap-tools\|system-path\|user-environment\|extra-utils\)'
)"
echo "$libs" |
sed 's,^/nix/store/[a-z0-9]*-\([^/]*\)/.*/\([^/]*\)$, \1 -> \2,' |
sort |
uniq;
names=$(
echo "$libs" |
sed 's,^/nix/store/[a-z0-9]*-\([^/]*\)-[.0-9]*/.*$,\1,' |
sort |
uniq;
)
if test "$names" = "glibc"; then names="stdenv.glibc"; fi
if echo $names | grep -c "gcc" &> /dev/null; then names="stdenv.gcc.gcc"; fi
if test $lib != $libPath; then
interpreter="--interpreter \${$names}/lib/$lib"
elif echo $addRPath | grep -c "$names" &> /dev/null; then
:
else
addRPath=${addRPath+$addRPath:}"\${$names}/lib"
fi
done;
$hasLibraries && \
echo "
Patchelf command:
patchelf $interpreter \\
${addRPath+--set-rpath $addRPath \\
} \$out/$bin
"
done;

View File

@@ -1,260 +0,0 @@
#!/bin/sh
usage () {
echo 1>&2 "
usage:
$0
[--git commit..commit | --git commit]
[--svn rev:rev | --svn rev]
[--path path[:path]*]
[--help]
This program is used to investigate how any changes inside your nixpkgs
repository may hurt. With these kind of information you may choose wisely
where you should commit your changes.
This program adapts it-self to your versionning system to avoid too much
effort on your Internet bandwidth. If you need to check more than one
commits / revisions, you may use the following commands:
--git remotes/trunk..master
--svn 17670:17677
Check the differences between each commit separating the first and the
last commit.
--path /etc/nixos/nixpkgs:/tmp/nixpkgs_1:/tmp/nixpkgs_2
Check the differences between multiple directories containing different
versions of nixpkgs.
All these options exist with one commit / revision argument. Such options
are used to compare your \$NIXPKGS path with the specified version.
If you omit to mention any other commit / revision, then your \$NIXPKGS path
is compared with its last update. This command is useful to test code from
a dirty repository.
"
exit 1;
}
#####################
# Process Arguments #
#####################
: ${NIXPKGS=/etc/nixos/nixpkgs/}
vcs=""
gitCommits=""
svnRevisions=""
pathLocations=""
verbose=false
argfun=""
for arg; do
if test -z "$argfun"; then
case $arg in
--git) vcs="git"; argfun="set_gitCommits";;
--svn) vcs="svn"; argfun="set_svnRevisions";;
--path) vcs="path"; argfun="set_pathLocations";;
--verbose) verbose=true;;
--help) usage;;
*) usage;;
esac
else
case $argfun in
set_*)
var=$(echo $argfun | sed 's,^set_,,')
eval $var=$arg
;;
esac
argfun=""
fi
done
if $verbose; then
set -x
else
set +x
fi
############################
# Find the repository type #
############################
if test -z "$vcs"; then
if test -x "$NIXPKGS/.git"; then
if git --git-dir="$NIXPKGS/.git" branch > /dev/null 2>&1; then
vcs="git"
gitCommits=$(git --git-dir="$NIXPKGS/.git" log -n 1 --pretty=format:%H 2> /dev/null)
fi
elif test -x "$NIXPKGS/.svn"; then
cd "$NIXPKGS"
if svn info > /dev/null 2>&1; then
vcs="svn";
svnRevisions=$(svn info | sed -n 's,Revision: ,,p')
fi
cd -
else
usage
fi
fi
###############################
# Define a storage directory. #
###############################
pkgListDir=""
exitCode=1
cleanup(){
test -e "$pkgListDir" && rm -rf "$pkgListDir"
exit $exitCode;
}
trap cleanup EXIT SIGINT SIGQUIT ERR
pkgListDir=$(mktemp --tmpdir -d rebuild-amount-XXXXXXXX)
vcsDir="$pkgListDir/.vcs"
###########################
# Versionning for Dummies #
###########################
path_init() {
if test "${pathLocations#*:}" = "$pathLocations"; then
pathLocations="$NIXPKGS:$pathLocations"
fi
pathLocations="${pathLocations}:"
}
path_getNext() {
pathLoc="${pathLocations%%:*}"
pathLocations="${pathLocations#*:}"
}
path_setPath() {
path="$pathLoc"
}
path_setName() {
name=$(echo "$pathLoc" | tr '/' '_')
}
################
# Git Commands #
################
git_init() {
git clone "$NIXPKGS/.git" "$vcsDir" > /dev/null 2>&1
if echo "gitCommits" | grep -c "\.\." > /dev/null 2>&1; then
gitCommits=$(git --git-dir="$vcsDir/.git" log --reverse --pretty=format:%H $gitCommits 2> /dev/null)
else
pathLocations="$vcsDir:$NIXPKGS"
vcs="path"
path_init
fi
}
git_getNext() {
git --git-dir="$vcsDir/.git" checkout $(echo "$gitCommits" | head -n 1) > /dev/null 2>&1
gitCommits=$(echo "$gitCommits" | sed '1 d')
}
git_setPath() {
path="$vcsDir"
}
git_setName() {
name=$(git --git-dir="$vcsDir/.git" log -n 1 --pretty=format:%H 2> /dev/null)
}
#######################
# Subversion Commands #
#######################
svn_init() {
cp -r "$NIXPKGS" "$vcsDir" > /dev/null 2>&1
if echo "svnRevisions" | grep -c ":" > /dev/null 2>&1; then
svnRevisions=$(seq ${svnRevisions%:*} ${svnRevisions#*:})
else
pathLocations="$vcsDir:$NIXPKGS"
vcs="path"
path_init
fi
}
svn_getNext() {
cd "$vcsDir"
svn checkout $(echo "$svnRevisions" | head -n 1) > /dev/null 2>&1
cd -
svnRevisions=$(echo "$svnRevisions" | sed '1 d')
}
svn_setPath() {
path="$vcsDir"
}
svn_setName() {
name=$(svn info 2> /dev/null | sed -n 's,Revision: ,,p')
}
####################
# Logical Commands #
####################
init () { ${vcs}_init; }
getNext () { ${vcs}_getNext; }
setPath () { ${vcs}_setPath; }
setName () { ${vcs}_setName; }
#####################
# Check for Rebuild #
#####################
# Generate the list of all derivations that could be build from a nixpkgs
# respository. This list of derivation hashes is compared with previous
# lists and a brief summary is produced on the output.
compareNames () {
nb=$(diff -y --suppress-common-lines --speed-large-files "$pkgListDir/$1.drvs" "$pkgListDir/$2.drvs" 2> /dev/null | wc -l)
echo "$1 -> $2: $nb"
}
echo "Please wait, this may take some minutes ..."
init
first=""
oldPrev=""
prev=""
curr=""
while true; do
getNext
setPath # set path=...
setName # set name=...
curr="$name"
test -z "$curr" && break || true
nix-instantiate "$path" > "$pkgListDir/$curr.drvs" > /dev/null 2>&1 || true
if test -n "$prev"; then
compareNames "$prev" "$curr"
else
echo "Number of package to rebuild:"
first="$curr"
fi
oldPrev="$prev"
prev="$curr"
done
if test "$first" != "$oldPrev"; then
echo "Number of package to rebuild (first -> last):"
compareNames "$first" "$curr"
fi
exitCode=0

View File

@@ -1,40 +0,0 @@
args: with args;
stdenv.mkDerivation {
name = "ardour-2.8.2";
# svn is the source to get official releases from their site?
# alternative: wget --data-urlencode 'key=7c4b2e1df903aae5ff5cc4077cda801e' http://ardour.org/downloader
# but hash is changing ?
src = fetchurl {
url = http://mawercer.de/~nix/ardour-2.8.2.tar.bz2;
sha256 = "1igwv1r6rlybdac24qady5asaf34f9k7kawkkgyvsifhl984m735";
};
buildInputs = [
scons boost
pkgconfig fftw redland librdf_raptor librdf_rasqal jackaudio flac
libsamplerate alsaLib libxml2 libxslt libsndfile libsigcxx libusb cairomm
glib pango gtk glibmm gtkmm libgnomecanvas fftw librdf liblo aubio
fftw fftwSinglePrec libmad
];
buildPhase = ''
ensureDir $out
export CXX=g++
scons PREFIX=$out install
'';
installPhase = ":";
meta = {
description = "multi-track hard disk recording software";
longDescription = ''
Also read "the importance of Paying Something on their homepage, pelase!"
'';
homepage = http://ardour.org/;
license = "GPLv2";
maintainers = [args.lib.maintainers.marcweber];
platforms = args.lib.platforms.linux;
};
}

View File

@@ -1,6 +1,6 @@
{ stdenv, fetchurl, pkgconfig, audacious, dbus_glib, gettext
, libmad, xlibs, alsaLib, taglib, libmpcdec, libogg, libvorbis
, libcdio, libcddb, libxml2
, libcdio, libcddb
}:
stdenv.mkDerivation {
@@ -14,7 +14,7 @@ stdenv.mkDerivation {
buildInputs = [
pkgconfig audacious dbus_glib gettext libmad
xlibs.libXcomposite alsaLib taglib libmpcdec
libogg libvorbis libcdio libcddb libxml2
libogg libvorbis libcdio libcddb
];
preBuild = ''

View File

@@ -1,6 +1,4 @@
{ stdenv, fetchurl, wxGTK, pkgconfig, gettext, gtk, glib, zlib, perl, intltool,
libogg, libvorbis, libmad
}:
{ stdenv, fetchurl, wxGTK, pkgconfig, gettext, gtk, glib, zlib }:
stdenv.mkDerivation {
name = "audacity-1.3.7";
@@ -9,10 +7,9 @@ stdenv.mkDerivation {
src = fetchurl {
url = mirror://sourceforge/audacity/audacity-fullsrc-1.3.7.tar.bz2;
sha256 = "0b4arafpdyjjk52l6n7aw518hzm65iv9w5g39jqr2bmvn6a9qivi";
sha256 = "1kashc6cc6d5g6i59nqcrl795x1jqdh0lpg3msa1wckfj3hpljmy";
};
buildInputs = [ wxGTK pkgconfig gettext gtk glib zlib intltool perl
libogg libvorbis libmad];
buildInputs = [ wxGTK pkgconfig gettext gtk glib zlib ];
meta = {
description = "Sound editor with graphical UI";

View File

@@ -0,0 +1,11 @@
source $stdenv/setup
buildFlags="-f Makefile.bmp"
installPhase=installPhase
installPhase() {
ensureDir "$out/lib/bmp/Input"
cp libwma.so "$out/lib/bmp/Input"
}
genericBuild

View File

@@ -2,18 +2,10 @@
stdenv.mkDerivation {
name = "bmp-plugin-wma-1.0.5";
builder = ./builder.sh;
src = fetchurl {
url = http://mcmcc.bat.ru/xmms-wma/xmms-wma-1.0.5.tar.bz2;
md5 = "5d62a0f969617aeb40096362c7a8a506";
};
buildInputs = [pkgconfig bmp];
buildFlags = "-f Makefile.bmp";
installPhase = ''
ensureDir "$out/lib/bmp/Input"
cp libwma.so "$out/lib/bmp/Input"
'';
}

View File

@@ -9,14 +9,6 @@ stdenv.mkDerivation rec {
};
buildInputs = [libogg];
patches = [
# Fix for building on GCC 4.3.
(fetchurl {
url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/media-libs/flac/files/flac-1.2.1-gcc-4.3-includes.patch?rev=1.1";
sha256 = "1m6ql5vyjb2jlp5qiqp6w0drq1m6x6y3i1dnl5ywywl3zd36k0mr";
})
];
meta = {
homepage = http://flac.sourceforge.net;

View File

@@ -1,4 +1,4 @@
{ stdenv, fetchurl, pkgconfig, libgpod, gtk, glib, gettext, perl, perlXMLParser, libglade, flex, libid3tag, libvorbis }:
{ stdenv, fetchurl, pkgconfig, libgpod, gtk, glib, gettext, perl, perlXMLParser, libglade, flex, libid3tag }:
stdenv.mkDerivation {
name = "gtkpod-0.99.14";
@@ -7,12 +7,7 @@ stdenv.mkDerivation {
url = mirror://sourceforge/gtkpod/gtkpod-0.99.14.tar.gz;
sha256 = "0ggcfyhcdlf3br88csdki215k4clxixa192afz6f16k7h8s2iqbk";
};
buildInputs = [ pkgconfig libgpod gettext perl perlXMLParser gtk libglade flex libid3tag libvorbis ];
patchPhase = ''
sed -i 's/which/type -P/' scripts/*.sh
'';
buildInputs = [ pkgconfig libgpod gettext perl perlXMLParser gtk libglade flex libid3tag];
meta = {
description = "GTK Manager for an Apple ipod";

View File

@@ -1,23 +0,0 @@
args: with args;
let name = "jackmeter-0.3";
in
stdenv.mkDerivation {
inherit name;
src = fetchurl {
url = "http://www.aelius.com/njh/jackmeter/${name}.tar.gz";
sha256 = "03siznnq3f0nnqyighgw9qdq1y4bfrrxs0mk6394pza3sz4b6sgp";
};
buildInputs = [jackaudio pkgconfig];
meta = {
description = "console jack loudness meter";
homepage = http://www.aelius.com/njh/jackmeter/;
license = "GPLv2";
maintainers = [args.lib.maintainers.marcweber];
platforms = args.lib.platforms.linux;
};
}

View File

@@ -10,7 +10,7 @@ args: with args;
};
in with localDefs;
let
postInstall = fullDepEntry ("
postInstall = FullDepEntry ("
ensureDir \$out/share/ladspa/
ln -s \$out/lib/ladspa \$out/share/ladspa/lib
") [minInit defEnsureDir];

View File

@@ -12,7 +12,7 @@ in
};
in with localDefs;
let
copyFile = fullDepEntry ("
copyFile = FullDepEntry ("
ensureDir \$out/include
cp ${src} \$out/include/ladspa.h
") [minInit defEnsureDir];

View File

@@ -1,13 +1,9 @@
{stdenv, fetchurl}:
stdenv.mkDerivation {
name = "lame-3.98.2";
name = "lame-3.97";
src = fetchurl {
url = mirror://sourceforge/lame/lame-398-2.tar.gz;
sha256 = "0cmgr515szd9kd19mpzvwl3cbnpfyjyi47swj4afblcfkmb2hym1";
url = mirror://sourceforge/lame/lame-3.97.tar.gz ;
sha256 = "05xy9lv6m9s013lzlvhxwvr1586c239xaiiwka52k18hs6k388qa";
};
# Either disable static, or fix the rpath of 'lame' for it to point
# properly to the libmp3lame shared object.
dontDisableStatic = true;
}

View File

@@ -1,32 +0,0 @@
{ fetchurl, stdenv, gettext, libmpcdec, libao }:
let version = "0.2.4"; in
stdenv.mkDerivation rec {
name = "mpc123-${version}";
src = fetchurl {
url = "mirror://sourceforge/mpc123/version%20${version}/${name}.tar.gz";
sha256 = "0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1";
};
patches = [ ./use-gcc.patch ];
buildInputs = [ gettext libmpcdec libao ];
installPhase =
# XXX: Should install locales too (though there's only 1 available).
'' ensureDir "$out/bin"
cp -v mpc123 "$out/bin"
'';
meta = {
homepage = http://mpc123.sourceforge.net/;
description = "mpc123, a Musepack (.mpc) audio player";
license = "GPLv2+";
maintainers = [ stdenv.lib.maintainers.ludo ];
platforms = stdenv.lib.platforms.gnu; # arbitrary choice
};
}

View File

@@ -1,13 +0,0 @@
Don't worry, just use GCC and everything's gonna be alright.
--- mpc123-0.2.4/Makefile 2008-03-21 22:14:38.000000000 +0100
+++ mpc123-0.2.4/Makefile 2010-01-28 23:26:49.000000000 +0100
@@ -17,7 +17,7 @@
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-CC := $(shell which colorgcc || which cc)
+CC := gcc
TAGSPRG := ctags

View File

@@ -1,30 +0,0 @@
{ fetchurl, stdenv, pkgconfig, pulseaudio, gtkmm, libsigcxx
, libglademm, libcanberra, intltool, gettext }:
stdenv.mkDerivation rec {
name = "pavucontrol-0.9.7";
src = fetchurl {
url = "http://0pointer.de/lennart/projects/pavucontrol/${name}.tar.gz";
sha256 = "1a1v06hbl1j78ryqy5aiccg6w5hf1yzday2b9h31kx7vr42ir1w0";
};
buildInputs = [ pkgconfig pulseaudio gtkmm libsigcxx libglademm libcanberra
intltool gettext ];
configureFlags = "--disable-lynx";
meta = {
description = "PulseAudio Volume Control";
longDescription = ''
PulseAudio Volume Control (pavucontrol) provides a GTK+
graphical user interface to connect to a PulseAudio server and
easily control the volume of all clients, sinks, etc.
'';
homepage = http://0pointer.de/lennart/projects/pavucontrol/;
license = "GPLv2+";
};
}

View File

@@ -2,9 +2,9 @@ args :
let
lib = args.lib;
fetchurl = args.fetchurl;
fullDepEntry = args.fullDepEntry;
FullDepEntry = args.FullDepEntry;
version = lib.attrByPath ["version"] "9.4" args;
version = lib.getAttr ["version"] "9.4" args;
buildInputs = with args; [gtk glib pkgconfig
libXpm gmp gettext libX11 fftw]
++ (lib.optional (args ? ruby) args.ruby)
@@ -38,18 +38,20 @@ rec {
phaseNames = ["doConfigure" "preBuild" "makeDocsWork"
"doMakeInstall" "doForceShare"];
makeDocsWork = fullDepEntry ''
makeDocsWork = FullDepEntry ''
# hackish way to make html docs work
h="$out/share/snd/html"; ensureDir "$h"; cp *.html "$h"
patch -p1 < ${./doc.patch}
sed "s@HTML-DIR@$h@" -i index.scm snd-help.c
'' ["defEnsureDir"];
preBuild = fullDepEntry (''
preBuild = FullDepEntry (''
cp config.log /tmp/snd-config.log
export NIX_LDFLAGS="$NIX_LDFLAGS -L${args.libX11}/lib -lX11"
'') ["minInit" "doUnpack" "makeDocsWork"];
name = "snd-" + version;
name = "Snd-" + version;
meta = {
description = "Snd sound editor.";
homepage = http://ccrma.stanford.edu/software/snd;

View File

@@ -1,45 +0,0 @@
# TODO add plugins having various licenses, see http://www.vamp-plugins.org/download.html
args: with args;
stdenv.mkDerivation {
#TODO add plugins!
name = "sonic-visualizer-1.6";
src = fetchurl {
url = http://downloads.sourceforge.net/sv1/sonic-visualiser-1.6.tar.bz2;
sha256 = "1dbqqa7anii2jnjpfwm4sr83nn4bwmz68xw4n6clycsz5iqk52f5";
};
buildInputs = [libsndfile qt fftw /* should be fftw3f ??*/ bzip2 librdf rubberband
libsamplerate vampSDK alsaLib librdf_raptor librdf_rasqal redland
# optional
jackaudio
# portaudio
pulseaudio
libmad
libogg # ?
# fishsound
liblo
];
buildPhase = ''
qmake -makefile PREFIX=$out && make
'';
installPhase = ''
ensureDir $out/{bin,share/sv}
cp sv/sonic-visualiser $out/bin
cp -r sv/samples $out/share/sv/samples
'';
meta = {
description = "View and analyse contents of music audio files";
homepage = http://www.sonicvisualiser.org/;
license = "GPLv2";
maintainers = [args.lib.maintainers.marcweber];
platforms = args.lib.platforms.linux;
};
}

View File

@@ -2,7 +2,6 @@
stdenv.mkDerivation {
name = "xmms-1.2.10";
src = fetchurl {
url = http://nixos.org/tarballs/xmms-1.2.10.tar.bz2;
md5 = "03a85cfc5e1877a2e1f7be4fa1d3f63c";
@@ -16,6 +15,5 @@ stdenv.mkDerivation {
meta = {
description = "A music player very similar to Winamp";
homepage = http://www.xmms.org;
platforms = stdenv.lib.platforms.linux;
};
}

View File

@@ -18,10 +18,6 @@ stdenv.mkDerivation rec {
# pam_response structures, not a pointer to an array of pointers to
# pam_response structures. Of course C can't tell the difference...
./pam.patch
# Don't set PAM_RHOST to "localhost", it confuses ConsoleKit
# (which assumes that a non-empty string means a remote session).
./pam2.patch
];
buildInputs = [x11 libjpeg libpng libXmu freetype pam];

View File

@@ -1,20 +0,0 @@
diff -rc slim-1.3.1-orig/app.cpp slim-1.3.1/app.cpp
*** slim-1.3.1-orig/app.cpp 2008-09-26 02:54:15.000000000 +0200
--- slim-1.3.1/app.cpp 2009-08-17 02:59:37.000000000 +0200
***************
*** 226,232 ****
pam.start("slim");
pam.set_item(PAM::Authenticator::TTY, DisplayName);
pam.set_item(PAM::Authenticator::Requestor, "root");
! pam.set_item(PAM::Authenticator::Host, "localhost");
}
catch(PAM::Exception& e){
--- 226,232 ----
pam.start("slim");
pam.set_item(PAM::Authenticator::TTY, DisplayName);
pam.set_item(PAM::Authenticator::Requestor, "root");
! pam.set_item(PAM::Authenticator::Host, "");
}
catch(PAM::Exception& e){

View File

@@ -0,0 +1,96 @@
args: with args; let
# hint: eclipse -data <dir to save global eclipse settings>
eclipsePlugin = name : src : stdenv.mkDerivation {
inherit src;
name = "${name}-eclipse-plugin";
phases = "unpackPhase";
buildInputs = [ args.unzip ];
unpackPhase = ''
mkdir tmp; cd tmp
unpackFile "$src"
[ -d ./eclipse ] || { # if plugin doesn't contain the eclipse directory itself create it (eg viPlugin)
mkdir "$TMP/eclipse"
mv * "$TMP/eclipse"
cd "$TMP"
}
ensureDir $out;
mv eclipse "$out"
'';
};
eclipseEnv = {name, eclipse, links}: runCommand name { inherit links eclipse; } ''
ensureDir $out/eclipse/links;
cp -r "$eclipse/bin" "$out/bin"
for f in $eclipse/eclipse/*; do
# using ln eclipse doesn't take the correct link folder :-( (TODO)
# ln -s "$f" "$out/eclipse/$(basename "$f")"
cp -r "$f" "$out/eclipse/$(basename "$f")"
done
# create links
for link in $links; do
echo "path=$link" >> "$out/eclipse/links/$(basename "$link").link"
done
'';
# mmh, this derivation is superfluous. We could also create them directly
# instead of symlinking them into the final env build by buildEnv
linkFile = deriv : writeTextFile {
name = "${deriv.name}-eclipse-feature-link";
destination = "/eclipse/links/${deriv.name}.link";
};
attr = rec {
eclipse = import ( ../eclipse-new + "/${version}/eclipse.nix") args; # without any additional plugins, why can't I use ./ instead of ../eclipse-new ?
plugins = rec {
viPlugin = { # see its license!
plugin = eclipsePlugin "viPlugin_1.15.6" (fetchurl {
url = http://www.satokar.com/viplugin/files/viPlugin_1.15.6.zip;
sha256 = "0p53q45a754j143pnnp51rjwj7lzawcxfy9xzpjasdic4a2l0f96";
# license = "Other/Proprietary License with Free Trial";
});
};
# PHP developement
emfSdoXsdSDK232 = {
plugin = eclipsePlugin "emf-sdo-xsd-SDK-2.3.2" (fetchurl {
url = http://eclipsemirror.yoxos.com/eclipse.org/modeling/emf/emf/downloads/drops/2.3.2/R200802051830/emf-sdo-xsd-SDK-2.3.2.zip;
sha256 = "1k20fn47x1giwhc80rzkqaw3mn0p3861sjp7aw39842lv2hjwn1c";
});
};
gefSDK332 = {
plugin = eclipsePlugin "GEF-SDK-3.3.2" (fetchurl {
url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/tools/gef/downloads/drops/3.3.2/R200802211602/GEF-SDK-3.3.2.zip;
sha256 = "1pk5qlwk0iyvs85s966y96ks8vq1g81fivvbf4lh43155rg0z037";
});
};
wtpSdkR202X = {
plugin = eclipsePlugin "wtp-sdk-R-2.0.2-20080223205547" (fetchurl {
url = http://ftp.wh2.tu-dresden.de/pub/mirrors/eclipse/webtools/downloads/drops/R2.0/R-2.0.2-20080223205547/wtp-sdk-R-2.0.2-20080223205547.zip;
sha256 = "0hmmmqzcd67jir2gmjd0xri5w2434xb2dk21hpgcv2qp0h9hhx0f";
});
};
pdt = {
deps = [ wtpSdkR202X gefSDK332 emfSdoXsdSDK232 ];
plugin = eclipsePlugin "pdt-runtime-1.0.3" (fetchurl {
url = http://sunsite.informatik.rwth-aachen.de:3080/eclipse/tools/pdt/downloads/drops/1.0.3/R200806030000/pdt-runtime-1.0.3.zip;
sha256 = "0wd2vc9bqrk5mqj5al2ichm8lxlf7gwifsb9lzv1d896j04ilm96";
});
};
};
};
pluginToList = a : [ a.plugin ] ++ lib.optionals (a ? deps ) (lib.concatMap pluginToList a.deps);
in
eclipseEnv {
name = "eclipse-${version}-with-plugins";
inherit (attr) eclipse;
links =
# example custom config: eclipse = { plugins = {eclipse, version, plugins } : let p = plugins; in [p.pdt]; };
let userChosenPlugins = (getConfig [ "eclipse" "plugins" ] ( {eclipse, version, plugins} : [] ))
{ inherit (attr) eclipse plugins; inherit version; };
in # concatenate plugins and plugin dependencies
(lib.uniqList { inputList = lib.concatMap pluginToList userChosenPlugins; });
}

View File

@@ -0,0 +1,22 @@
--- a/build.xml 2008-03-02 14:34:05.000000000 +0100
+++ b/build.xml 2008-03-02 14:34:57.000000000 +0100
@@ -291,19 +291,6 @@
</condition>
<property name="bootclasspath" refid="default.bootclasspath" />
- <!--set the compiler and compiler arguments-->
- <!--the default compiler is set to the one used by eclipse rel. eng. -->
- <condition property="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter">
- <available file="${basedir}/ecj.jar" />
- </condition>
- <fail message="The Eclipse compiler (ecj.jar) cannot be found.">
- <condition>
- <not>
- <equals arg1="${build.compiler}" arg2="org.eclipse.jdt.core.JDTCompilerAdapter" />
- </not>
- </condition>
- </fail>
-
<property name="compilerArg" value="-enableJavadoc -encoding ISO-8859-1" />
<property name="javacSource" value="1.6" />
<property name="javacTarget" value="1.6" />

View File

@@ -0,0 +1,53 @@
# Note, if you want to install plugins using the update manager you should
# copy the store path to a local directory and chown -R $USER yourcopy
# Then start your local copy
args: with args;
let arch = if stdenv.system == "x86_64-linux" then "x86_64"
else if stdenv.system == "i686-linux" then "x86"
else throw "not supported system";
in
args.stdenv.mkDerivation rec {
name = "eclipse-classic-3.3.1.1";
unpackPhase = "unzip \$src; set -x ";
buildInputs = [ unzip jdk gtk glib libXtst ant makeWrapper];
patches=./build-with-jdk-compiler.patch;
buildPhase = "./build -os linux -ws gtk -arch ${arch}";
libraries = [gtk glib libXtst];
installPhase = "
t=\$out/share/${name}
ensureDir \$t \$out/bin
cd result
tar xfz linux-gtk-*.tar.gz
mv eclipse \$out
"
#copied from other eclipse expressions
+" rpath=
for i in \$libraries; do
rpath=\$rpath\${rpath:+:}\$i/lib
done
find \$out \\( -type f -a -perm +0100 \\) \\
-print \\
-exec patchelf --interpreter \"$(cat \$NIX_GCC/nix-support/dynamic-linker)\" \\
--set-rpath \"\$rpath\" {} \\;
# Make a wrapper script so that the proper JDK is found.
makeWrapper \$out/eclipse/eclipse \$out/bin/eclipse \\
--prefix PATH \":\" \"\$jdk/bin\" \\
--prefix LD_LIBRARY_PATH \":\" \"\$rpath\"
sed -e 's=exec.*=exec \$(dirname $0)/../eclipse/eclipse $@=' -i \$out/bin/eclipse
";
# using dirname so that eclipse still runs after copying the whole store
# directory somewhere else (so that you can use the update manager
src = args.fetchurl {
url = http://mawercer.de/~nix/iyyx4hs1mgh1b1wa78j07pgq9k882m2k-eclipse-sourceBuild-srcIncluded-3.3.1.1.zip;
sha256 = "0n56i7ml816f839704qlkgs5ahl0iqgwc80kjq7n7g5rl9a4vhp4";
};
}

View File

@@ -0,0 +1,22 @@
--- a/build.xml 2008-03-02 14:34:05.000000000 +0100
+++ b/build.xml 2008-03-02 14:34:57.000000000 +0100
@@ -291,19 +291,6 @@
</condition>
<property name="bootclasspath" refid="default.bootclasspath" />
- <!--set the compiler and compiler arguments-->
- <!--the default compiler is set to the one used by eclipse rel. eng. -->
- <condition property="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter">
- <available file="${basedir}/ecj.jar" />
- </condition>
- <fail message="The Eclipse compiler (ecj.jar) cannot be found.">
- <condition>
- <not>
- <equals arg1="${build.compiler}" arg2="org.eclipse.jdt.core.JDTCompilerAdapter" />
- </not>
- </condition>
- </fail>
-
<property name="compilerArg" value="-enableJavadoc -encoding ISO-8859-1" />
<property name="javacSource" value="1.6" />
<property name="javacTarget" value="1.6" />

View File

@@ -0,0 +1,40 @@
source $stdenv/setup
unpackFile $src
ensureDir $out
mv eclipse $out/
# Set the dynamic linker and RPATH.
rpath=
for i in $libraries; do
rpath=$rpath${rpath:+:}$i/lib
done
find $out \( -type f -a -perm +0100 \) \
-print \
-exec patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
--set-rpath "$rpath" {} \;
# Make a wrapper script so that the proper JDK is found.
# don't use makeWrapper in order to change the last line.
ensureDir $out/bin
cat >> $out/bin/eclipse << EOF
#! /bin/sh -e
export PATH=${jdk}/bin\${PATH:+:}\$PATH
export LD_LIBRARY_PATH=$rpath\${LD_LIBRARY_PATH:+:}\$LD_LIBRARY_PATH
exec \$(dirname $0)/../eclipse/eclipse $@
EOF
chmod +x $out/bin/eclipse
ensureDir plugin-working-dir
workingdir="$(pwd)/plugin-working-dir"
for plugin in $plugins; do
if test -e $plugin/install; then
cd $workingdir
$plugin/install "$out/eclipse"
rm -rf $workingdir/*
else
# assume that it is a file
cp $plugin $out/eclipse/plugins
fi
done

View File

@@ -1,59 +1,33 @@
{ stdenv, fetchurl, patchelf, makeDesktopItem, makeWrapper
, freetype, fontconfig, libX11, libXext, libXrender, zlib
, glib, gtk, libXtst, jre
}:
# recommended installation:
# nix-build -A eclipsesdk
# then cp -r $store-path ~/my-eclipse; chmod -R 777 ~/my-eclipse # ugh! I'm to lazy to assign permissions properly
# maybe also using a wrapper such as this (lower values should suffice for most needs)
# eclipseWrapper () {
# "$@" -vmargs -Xms2048m -Xmx2048m -XX:MaxPermSize=2048m
# }
#
# Why use a local copy? This way it's easier to use the update manager to get plugins :-)
assert stdenv ? glibc;
stdenv.mkDerivation rec {
name = "eclipse-3.5.1";
src =
if stdenv.system == "x86_64-linux" then
fetchurl {
url = http://ftp.ing.umu.se/mirror/eclipse/eclipse/downloads/drops/R-3.5.1-200909170800/eclipse-SDK-3.5.1-linux-gtk-x86_64.tar.gz;
sha256 = "132zd7q9q29h978wnlsfbrlszc85r1wj30yqs2aqbv3l5xgny1kk";
}
else
fetchurl {
url = http://mirrors.linux-bg.org/eclipse/eclipse/downloads/drops/R-3.5.1-200909170800/eclipse-SDK-3.5.1-linux-gtk.tar.gz;
sha256 = "0a0lpa7gxg91zswpahi6fvg3csl4csvlym4z2ad5cc1d4yvicp56";
};
{fetchurl, stdenv, jdk, gtk, glib, libXtst, plugins ? []}:
desktopItem = makeDesktopItem {
name = "Eclipse";
exec = "eclipse";
icon = "eclipse";
comment = "Integrated Development Environment";
desktopName = "Eclipse IDE";
genericName = "Integrated Development Environment";
categories = "Application;Development;";
};
let {
body =
stdenv.mkDerivation {
name = "eclipse-sdk-3.5M6";
builder = ./builder.sh;
src = bindist;
buildInputs = [];
inherit jdk plugins;
libraries = [gtk glib libXtst];
};
buildInputs = [ makeWrapper patchelf ];
buildCommand = ''
# Unpack tarball
ensureDir $out
tar xfvz $src -C $out
# Patch binaries
interpreter=$(echo ${stdenv.glibc}/lib/ld-linux*.so.2)
patchelf --set-interpreter $interpreter $out/eclipse/eclipse
patchelf --set-rpath ${freetype}/lib:${fontconfig}/lib:${libX11}/lib:${libXrender}/lib:${zlib}/lib $out/eclipse/libcairo-swt.so
# Create wrapper script
makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
--prefix PATH : ${jre}/bin \
--prefix LD_LIBRARY_PATH : ${glib}/lib:${gtk}/lib:${libXtst}/lib
# Create desktop item
ensureDir $out/share/applications
cp ${desktopItem}/share/applications/* $out/share/applications
'';
meta = {
homepage = http://www.eclipse.org/;
description = "A extensible multi-language software development environment";
};
bindist =
if (stdenv.system == "x86_64-linux") then fetchurl {
url = ftp://sunsite.informatik.rwth-aachen.de/pub/mirror/eclipse/S-3.5M6-200903130100/eclipse-SDK-3.5M6-linux-gtk-x86_64.tar.gz;
sha256 = "10p4idp5rcdf7xqwfk3kvmjxhi8x1v835m0y4pn9q4nhfb5643pi";
} else fetchurl {
url = ftp://mirror.micromata.de/eclipse/eclipse/downloads/drops/S-3.5M6-200903130100/eclipse-SDK-3.5M6-linux-gtk.tar.gz;
sha256 = "1z8j26b632ydhqrmwgbcqgiq7f1a542jam06z2h62mcbqazrcyah";
};
}

View File

@@ -0,0 +1,18 @@
{fetchurl, stdenv, makeWrapper, jdk, gtk, glib, libXtst, plugins ? []}:
let {
body =
stdenv.mkDerivation {
name = "eclipse-sdk-3.1.2";
builder = ./builder.sh;
src = bindist;
inherit makeWrapper jdk plugins;
libraries = [gtk glib libXtst];
};
bindist =
fetchurl {
url = http://archive.eclipse.org/eclipse/downloads/drops/R-3.1.2-200601181600/eclipse-SDK-3.1.2-linux-gtk.tar.gz;
md5 = "ece50ed4d6d48dac839bfe8fa719fcff";
};
}

View File

@@ -0,0 +1,18 @@
{fetchurl, stdenv, makeWrapper, jdk, gtk, glib, libXtst}:
let {
body =
stdenv.mkDerivation {
name = "eclipse-sdk-3.1";
builder = ./builder.sh;
src = bindist;
inherit makeWrapper jdk;
libraries = [gtk glib libXtst];
};
bindist =
fetchurl {
url = http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.1-200506271435/eclipse-SDK-3.1-linux-gtk.tar.gz;
md5 = "0441c11cc5af1e84ed3be322929899e8";
};
}

View File

@@ -0,0 +1,21 @@
source $stdenv/setup
ensureDir $out
cat >> $out/install <<EOF
#! /bin/sh
PLUGIN=$plugin
UNZIP=$unzip/bin/unzip
ECLIPSE=\$1
\$UNZIP \$PLUGIN
if test -e plugins; then
cp -prd * \$ECLIPSE
else
cd *
cp -prd * \$ECLIPSE
fi
EOF
chmod u+x $out/install

View File

@@ -0,0 +1,10 @@
{stdenv, unzip, plugin}:
let {
body =
stdenv.mkDerivation {
name = "eclipse-zip-plugin-installer";
builder = ./builder.sh;
inherit plugin unzip;
};
}

View File

@@ -0,0 +1,6 @@
{stdenv, fetchurl}:
fetchurl {
url = http://www.ii.uib.no/~karltk/spoofax/plugins/org.spoofax.editor_0.3.0.jar;
md5 = "ff66d229c774f840ec8285f64c0f95bc";
}

View File

@@ -0,0 +1,6 @@
{stdenv, fetchurl}:
fetchurl {
url = http://nixos.org/tarballs/org.spoofax.editor_0.3.10.jar;
md5 = "ff77853e750e19a9b8d380c17ea27f3d";
}

View File

@@ -0,0 +1,6 @@
{stdenv, fetchurl}:
fetchurl {
url = http://www.ii.uib.no/~karltk/spoofax/plugins/org.spoofax.editor_0.3.11.jar;
md5 = "c36941afcb0e538e16fafd594eae128e";
}

View File

@@ -1,11 +1,10 @@
{ fetchurl, stdenv }:
stdenv.mkDerivation rec {
name = "ed-1.4";
name = "ed-1.2";
src = fetchurl {
url = "mirror://gnu/ed/${name}.tar.gz";
sha256 = "1njgcghms1377csldi1yqjhcpghiii6bshdhnjpqp78sxs2xldnv";
sha256 = "1jhw050fzaffjf5qdj1ccn7alngam7yhd5zpzyxvrjphwmkd46kx";
};
doCheck = true;
@@ -27,7 +26,5 @@ stdenv.mkDerivation rec {
license = "GPLv3+";
homepage = http://www.gnu.org/software/ed/;
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}

View File

@@ -0,0 +1,13 @@
source $stdenv/setup
myglibc=`cat ${NIX_GCC}/nix-support/orig-libc`
echo "glibc: $myglibc"
postConfigure() {
cp $myglibc/lib/crt1.o src
cp $myglibc/lib/crti.o src
cp $myglibc/lib/crtn.o src
}
postConfigure=postConfigure
genericBuild

View File

@@ -0,0 +1,41 @@
Only in emacs-21.3: configure.in~
Only in emacs-21.3: patchfile
Only in emacs-21.3/src: Makefile.in~
diff -rc emacs-orig/src/s/gnu-linux.h emacs-21.3/src/s/gnu-linux.h
*** emacs-orig/src/s/gnu-linux.h 2001-09-28 17:50:04.000000000 +0200
--- emacs-21.3/src/s/gnu-linux.h 2004-10-06 13:13:19.000000000 +0200
***************
*** 173,179 ****
/* GNU/Linux usually has crt0.o in a non-standard place */
#define START_FILES pre-crt0.o /usr/lib/crt0.o
#else
! #define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
#endif
#ifdef __ELF__
--- 173,179 ----
/* GNU/Linux usually has crt0.o in a non-standard place */
#define START_FILES pre-crt0.o /usr/lib/crt0.o
#else
! #define START_FILES pre-crt0.o crt1.o crti.o
#endif
#ifdef __ELF__
***************
*** 225,231 ****
#else
#undef LIB_GCC
#define LIB_GCC
! #define LIB_STANDARD -lgcc -lc -lgcc /usr/lib/crtn.o
#endif
/* Don't use -g in test compiles in configure.
--- 225,231 ----
#else
#undef LIB_GCC
#define LIB_GCC
! #define LIB_STANDARD -lgcc -lc -lgcc crtn.o
#endif
/* Don't use -g in test compiles in configure.
Only in emacs-21.3/src/s: gnu-linux.h~

View File

@@ -0,0 +1,28 @@
{ xawSupport ? true
, xpmSupport ? true
, xaw3dSupport ? false
, stdenv, fetchurl, ncurses, x11, libXaw ? null, libXpm ? null, Xaw3d ? null
}:
assert xawSupport && !xaw3dSupport -> libXaw != null;
assert xawSupport && xaw3dSupport -> Xaw3d != null;
assert xpmSupport -> libXpm != null;
stdenv.mkDerivation {
name = "emacs-21.4a";
builder = ./builder.sh;
src = fetchurl {
url = http://nixos.org/tarballs/emacs-21.4a.tar.gz;
md5 = "8f9d97cbd126121bd5d97e5e31168a87";
};
patches = [./crt.patch];
buildInputs = [
ncurses x11
(if xawSupport then if xaw3dSupport then Xaw3d else libXaw else null)
(if xpmSupport then libXpm else null)
];
meta = {
description = "All Hail Emacs, the ultimate editor";
};
}

View File

@@ -1,5 +1,6 @@
source $stdenv/setup
preConfigure=preConfigure
preConfigure() {
libc=$(cat ${NIX_GCC}/nix-support/orig-libc)
echo "libc: $libc"

View File

@@ -42,7 +42,5 @@ stdenv.mkDerivation rec {
homepage = http://www.gnu.org/software/emacs/;
license = "GPLv3+";
platforms = stdenv.lib.platforms.linux; # GTK & co. are needed.
};
}

View File

@@ -1,34 +0,0 @@
source $stdenv/setup
# This hook is supposed to be run on Linux. It patches the proper locations of
# the crt{1,i,n}.o files into the build to ensure that Emacs is linked with
# *our* versions, not the ones found in the system, as it would do by default.
# On other platforms, this appears to be unnecessary.
preConfigure() {
case "${system}" in
x86_64-linux) glibclibdir=lib64 ;;
i686-linux) glibclibdir=lib ;;
*) return;
esac
libc=$(cat ${NIX_GCC}/nix-support/orig-libc)
echo "libc: $libc"
for i in src/s/*.h src/m/*.h; do
substituteInPlace $i \
--replace /usr/${glibclibdir}/crt1.o $libc/${glibclibdir}/crt1.o \
--replace /usr/${glibclibdir}/crti.o $libc/${glibclibdir}/crti.o \
--replace /usr/${glibclibdir}/crtn.o $libc/${glibclibdir}/crtn.o \
--replace /usr/lib/crt1.o $libc/${glibclibdir}/crt1.o \
--replace /usr/lib/crti.o $libc/${glibclibdir}/crti.o \
--replace /usr/lib/crtn.o $libc/${glibclibdir}/crtn.o
done
for i in Makefile.in ./src/Makefile.in ./lib-src/Makefile.in ./leim/Makefile.in; do
substituteInPlace $i --replace /bin/pwd pwd
done
}
preBuild="make bootstrap"
genericBuild

View File

@@ -1,73 +0,0 @@
{ xawSupport ? true
, xpmSupport ? true
, dbusSupport ? true
, xaw3dSupport ? false
, gtkGUI ? false
, xftSupport ? false
, stdenv, fetchurl, ncurses, x11, libXaw ? null, libXpm ? null, Xaw3d ? null
, pkgconfig ? null, gtk ? null, libXft ? null, dbus ? null
, libpng, libjpeg, libungif, libtiff, texinfo
}:
assert xawSupport -> libXaw != null;
assert xpmSupport -> libXpm != null;
assert dbusSupport -> dbus != null;
assert xaw3dSupport -> Xaw3d != null;
assert gtkGUI -> pkgconfig != null && gtk != null;
assert xftSupport -> libXft != null && libpng != null; # libpng = probably a bug
assert stdenv.system == "i686-darwin" -> xawSupport; # fails to link otherwise
stdenv.mkDerivation rec {
name = "emacs-23.1";
builder = ./builder.sh;
src = fetchurl {
url = "mirror://gnu/emacs/${name}.tar.bz2";
sha256 = "076b4ixdp29l4c02bwic26d14gxlj0lcqyam33wyj3ksgi2z8d9b";
};
buildInputs = [
ncurses x11 texinfo
(if xawSupport then libXaw else null)
(if xpmSupport then libXpm else null)
(if dbusSupport then dbus else null)
(if xaw3dSupport then Xaw3d else null)
libpng libjpeg libungif libtiff # maybe not strictly required?
]
++ (if gtkGUI then [pkgconfig gtk] else [])
++ (if xftSupport then [libXft] else []);
configureFlags = "
${if gtkGUI then "--with-x-toolkit=gtk --enable-font-backend --with-xft" else ""}
";
doCheck = true;
meta = {
description = "GNU Emacs 23.x, the extensible, customizable text editor";
longDescription = ''
GNU Emacs is an extensible, customizable text editorand more. At its
core is an interpreter for Emacs Lisp, a dialect of the Lisp
programming language with extensions to support text editing.
The features of GNU Emacs include: content-sensitive editing modes,
including syntax coloring, for a wide variety of file types including
plain text, source code, and HTML; complete built-in documentation,
including a tutorial for new users; full Unicode support for nearly all
human languages and their scripts; highly customizable, using Emacs
Lisp code or a graphical interface; a large number of extensions that
add other functionality, including a project planner, mail and news
reader, debugger interface, calendar, and more. Many of these
extensions are distributed with GNU Emacs; others are available
separately.
'';
homepage = http://www.gnu.org/software/emacs/;
license = "GPLv3+";
maintainers = [ stdenv.lib.maintainers.ludo ];
platforms = stdenv.lib.platforms.linux; # GTK & co. are needed.
};
}

View File

@@ -1,48 +0,0 @@
{ fetchurl, stdenv, emacs, cedet, jdee, texinfo }:
stdenv.mkDerivation rec {
name = "ecb-2.40";
src = fetchurl {
url = "mirror://sourceforge/ecb/${name}.tar.gz";
sha256 = "0gp56ixfgnyk2j1fps4mk1yv1vpz81kivb3gq9f56jw4kdlhjrjs";
};
buildInputs = [ emacs ];
propagatedBuildInputs = [ cedet jdee ];
propagatedUserEnvPkgs = propagatedBuildInputs;
patchPhase = ''
sed -i "Makefile" \
-e 's|CEDET[[:blank:]]*=.*$|CEDET = ${cedet}/share/emacs/site-lisp|g ;
s|INSTALLINFO[[:blank:]]*=.*$|INSTALLINFO = ${texinfo}/bin/install-info|g ;
s|MAKEINFO[[:blank:]]*=.*$|MAKEINFO = ${texinfo}/bin/makeinfo|g ;
s|common/cedet.el|cedet.el|g'
'';
installPhase = ''
ensureDir "$out/share/emacs/site-lisp"
cp -rv *.el *.elc ecb-images "$out/share/emacs/site-lisp"
ensureDir "$out/share/info"
cp -v info-help/*.info* "$out/share/info"
'';
meta = {
description = "ECB, the Emacs Code browser";
longDescription = ''
ECB stands for "Emacs Code Browser". While Emacs already has
good editing support for many modes, its browsing support is
somewhat lacking. That's where ECB comes in: it displays a
number of informational windows that allow for easy source code
navigation and overview.
'';
license = "GPLv2+";
homepage = http://ecb.sourceforge.net/;
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}

View File

@@ -0,0 +1,40 @@
{ fetchurl, stdenv, emacs }:
stdenv.mkDerivation rec {
name = "eieio-0.17";
src = fetchurl {
url = "mirror://sourceforge/cedet/${name}.tar.gz";
sha256 = "0n31z9d47ar10g9xrnzz3nl4pmixw1nkk0kpxaillls7xvjd1zy2";
};
buildInputs = [ emacs ];
doCheck = false;
checkPhase = "make test";
installPhase = ''
ensureDir "$out/share/emacs/site-lisp"
cp -v *.el *.elc "$out/share/emacs/site-lisp"
chmod a-x "$out/share/emacs/site-lisp/"*
ensureDir "$out/share/info"
cp -v *.info* "$out/share/info"
'';
meta = {
description = "EIEIO: Enhanced Implementation of Emacs Interpreted Objects";
longDescription = ''
This package is now part of CEDET, please upgrade.
EIEIO is a package which implements a CLOS subset for Emacs. It
includes examples which can draw simple tree graphs, and bar
charts.
'';
license = "GPLv2+";
homepage = http://cedet.sourceforge.net/;
};
}

View File

@@ -1,61 +0,0 @@
{ fetchcvs, stdenv, emacs, w3m, imagemagick, texinfo, autoconf }:
let date = "2009-07-09"; in
stdenv.mkDerivation rec {
name = "emacs-w3m-cvs${date}";
# Get the source from CVS because the previous release (1.4.4) is old and
# doesn't work with GNU Emacs 23.
src = fetchcvs {
inherit date;
cvsRoot = ":pserver:anonymous@cvs.namazu.org:/storage/cvsroot";
module = "emacs-w3m";
sha256 = "ad46592d4fe3cdaadc02ce6d3fb1ac237e200beecd2ad11a04c1395a38a70a0a";
};
buildInputs = [ emacs w3m texinfo autoconf ];
# XXX: Should we do the same for xpdf/evince, gv, gs, etc.?
patchPhase = ''
sed -i "w3m.el" \
-e 's|defcustom w3m-command nil|defcustom w3m-command "${w3m}/bin/w3m"|g ;
s|(w3m-which-command "display")|"${imagemagick}/bin/display"|g'
sed -i "w3m-image.el" \
-e 's|(w3m-which-command "convert")|"${imagemagick}/bin/convert"|g ;
s|(w3m-which-command "identify")|"${imagemagick}/bin/identify"|g'
'';
configurePhase = ''
autoreconf -vfi && \
./configure --prefix="$out" --with-lispdir="$out/share/emacs/site-lisp" \
--with-icondir="$out/share/emacs/site-lisp/images/w3m"
'';
postInstall = ''
cd "$out/share/emacs/site-lisp"
for i in ChangeLog*
do
mv -v "$i" "w3m-$i"
done
'';
meta = {
description = "Emacs-w3m, a simple Emacs interface to the w3m web browser";
longDescription = ''
Emacs/W3 used to be known as the most popular WEB browser on Emacs, but
it worked so slowly that we wanted a simple and speedy alternative.
w3m is a pager with WWW capability, developed by Akinori ITO. Although
it is a pager, it can be used as a text-mode WWW browser. Then we
developed a simple Emacs interface to w3m.
'';
license = "GPLv2+";
homepage = http://emacs-w3m.namazu.org/;
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}

View File

@@ -1,15 +1,15 @@
{stdenv, fetchurl, emacs}:
stdenv.mkDerivation rec {
name = "haskell-mode-2.6.1";
name = "haskell-mode-2.4";
src = fetchurl {
url = "http://projects.haskell.org/haskellmode-emacs/${name}.tar.gz";
sha256 = "cc33fd0d4692667a6eb56fea3dc549de3897d8dbb7b71818489760f45d564a76";
url = "http://www.iro.umontreal.ca/~monnier/elisp/${name}.tar.gz";
sha256 = "1s2dd0clwm0qaq7z43vxx437l48c88yrd3z1a6qhbq8aak9y8jc5";
};
buildInputs = [emacs];
installPhase = ''
ensureDir "$out/share/emacs/site-lisp"
cp *.el *.elc *.hs "$out/share/emacs/site-lisp/"

View File

@@ -1,12 +0,0 @@
Make sure `build.properties' is honored.
--- jde/build.xml
+++ jde/build.xml
@@ -14,6 +14,7 @@
<property name="project.version" value="2.4.0"/>
<property name="config.dir" location="./config"/>
+ <property file="build.properties"/>
<!-- everything depends on this initialization target -->
<target name="init">

View File

@@ -1,18 +0,0 @@
JDE insists on seeing CEDET's source tree layout, with various
sub-directories (`common', `eieio', etc.). However, the installed CEDET
is flat, with everything under ${cedet}/share/emacs/site-lisp.
--- jde/config/build.el (revision 90)
+++ jde/config/build.el (working copy)
@@ -50,10 +50,5 @@ PATHS are sub directories under CEDET-DI
(jde-make-autoloads-and-compile (expand-file-name "@{build.lisp.dir}")
"@{src.lisp.dir}"
"@{cedet.dir}"
- '("common"
- "eieio"
- "semantic"
- "semantic/bovine"
- "speedbar"
- )
+ '(".")
"@{build.lisp.autoload.libname}")

View File

@@ -1,95 +0,0 @@
{ fetchsvn, stdenv, emacs, cedet, ant }:
let
revision = "137";
in
stdenv.mkDerivation rec {
name = "jdee-svn${revision}";
# Last release is too old, so use SVN.
# See http://www.emacswiki.org/emacs/JavaDevelopmentEnvironment .
src = fetchsvn {
# Looks like they're not sure whether to put one or two `e'...
url = "https://jdee.svn.sourceforge.net/svnroot/jdee/trunk/jde";
rev = revision;
sha256 = "0pjkbr1srx2m428xkky1csf97fr5219prs4dif7njlydyrwp0gnn";
};
patches = [
./build-properties.patch
./cedet-paths.patch ./elib-avltree.patch
./java-directory.patch
];
configurePhase = ''
ensureDir "dist"
cat > build.properties <<EOF
dist.lisp.dir = dist/share/emacs/site-lisp
dist.java.lib.dir = dist/lib/java
dist.jar.jde.file = dist/lib/java/jde.jar
dist.java.src.dir = dist/src/${name}/java
dist.doc.dir dist/doc/${name}
prefix.dir = $out
cedet.dir = ${cedet}/share/emacs/site-lisp
elib.dir = /nowhere
build.bin.emacs = ${emacs}/bin/emacs
EOF
# Substitute variables, à la Autoconf.
for i in "lisp/"*.el
do
sed -i "$i" -e "s|@out@|$out|g ;
s|@javadir@|$out/lib/java|g ;
s|@datadir@|$out/share/${name}|g"
done
'';
buildPhase = "ant dist";
installPhase = ''
ant install
ensureDir "$out/share/${name}"
cp -rv java/bsh-commands "$out/share/${name}"
# Move everything that's not a JAR to $datadir. This includes
# `sun_checks.xml', license files, etc.
cd "$out/lib/java"
for i in *
do
if echo $i | grep -qv '\.jar''$'
then
mv -v "$i" "$out/share/${name}"
fi
done
'';
buildInputs = [ emacs ant ];
propagatedBuildInputs = [ cedet ];
propagatedUserEnvPkgs = propagatedBuildInputs; # FIXME: Not honored
meta = {
description = "JDEE, a Java development environment for Emacs";
longDescription = ''
The JDEE is a software package that interfaces Emacs to
command-line Java development tools (for example, JavaSoft's
JDK). JDEE features include:
* JDEE menu with compile, run, debug, build, browse, project,
and help commands
* syntax coloring
* auto indentation
* compile error to source links
* source-level debugging
* source code browsing
* make file support
* automatic code generation
* Java source interpreter (Pat Neimeyer's BeanShell)
'';
license = "GPLv2+";
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}

View File

@@ -1,105 +0,0 @@
JDEE refers to the `avltree' module from GNU Elib, but GNU Elib
no longer exists (see http://www.gnu.org/software/elib/). This
patch updates the module names to what's current in Emacs.
--- jde/config/build.el
+++ jde/config/build.el
@@ -33,11 +33,10 @@ compile.
CEDET-DIR is the cedet lisp code base directory (see PATHS).
PATHS are sub directories under CEDET-DIR we use to compile."
- (dolist (path (list dir lisp-src-dir elib-dir cedet-dir))
+ (dolist (path (list dir lisp-src-dir cedet-dir))
(if (not (file-directory-p path))
(error "Doesn't exist or not a directory: %s" path)))
(let ((autoload-buf (jde-make-autoloads dir autoload-libname)))
- (add-to-list 'load-path elib-dir t)
(dolist (path paths)
(add-to-list 'load-path (expand-file-name path cedet-dir) t))
(add-to-list 'load-path lisp-src-dir t)
--- jde/lisp/jde-parse.el (revision 90)
+++ jde/lisp/jde-parse.el (working copy)
@@ -24,7 +24,7 @@
(require 'semantic-sb)
(require 'semantic-ctxt)
-(require 'avltree)
+(require 'avl-tree)
(require 'thingatpt)
(require 'eieio)
(require 'jde-imenu) ; All the imenu stuff is here now!
@@ -869,7 +869,8 @@ in a method; otherwise, nil."
(defclass jde-avl-tree ()
((tree :initarg tree
- :type list
+ ;; FIXME: Emacs 23 `avl-tree' objects are not lists.
+ ;;:type list
:documentation
"The tree")
(compare-fcn :initarg compare-fcn
@@ -887,51 +887,51 @@ in a method; otherwise, nil."
(assert (typep (oref this compare-fcn) 'function))
- (oset this tree (avltree-create (oref this compare-fcn))))
+ (oset this tree (avl-tree-create (oref this compare-fcn))))
(defmethod jde-avl-tree-add ((this jde-avl-tree) item)
"Inserts ITEM in this tree."
- (avltree-enter (oref this tree) item))
+ (avl-tree-enter (oref this tree) item))
(defmethod jde-avl-tree-delete ((this jde-avl-tree) item)
"Deletes ITEM from THIS tree."
- (avltree-delete (oref this tree) item))
+ (avl-tree-delete (oref this tree) item))
(defmethod jde-avl-tree-is-empty ((this jde-avl-tree))
"Return t if THIS tree is empty, otherwise return nil."
- (avltree-empty (oref this tree)))
+ (avl-tree-empty (oref this tree)))
(defmethod jde-avl-tree-find ((this jde-avl-tree) item)
"Return the element in THIS tree that matches item."
- (avltree-member (oref this tree) item))
+ (avl-tree-member (oref this tree) item))
(defmethod jde-avl-tree-map ((this jde-avl-tree) map-function)
"Applies MAP-FUNCTION to all elements of THIS tree."
- (avltree-map map-function (oref this tree)))
+ (avl-tree-map map-function (oref this tree)))
(defmethod jde-avl-tree-first ((this jde-avl-tree))
"Return the first item in THIS tree."
- (avltree-first (oref this tree)))
+ (avl-tree-first (oref this tree)))
(defmethod jde-avl-tree-last ((this jde-avl-tree))
"Return the last item in THIS tree."
- (avltree-last (oref this tree)))
+ (avl-tree-last (oref this tree)))
(defmethod jde-avl-tree-copy ((this jde-avl-tree))
"Return a copy of THIS tree."
- (avltree-copy (oref this tree)))
+ (avl-tree-copy (oref this tree)))
(defmethod jde-avl-tree-flatten ((this jde-avl-tree))
"Return a sorted list containing all elements of THIS tree."
- (avltree-flatten (oref this tree)))
+ (avl-tree-flatten (oref this tree)))
(defmethod jde-avl-tree-size ((this jde-avl-tree))
"Return the number of elements in THIS tree."
- (avltree-size (oref this tree)))
+ (avl-tree-size (oref this tree)))
(defmethod jde-avl-tree-clear ((this jde-avl-tree))
"Delete all elements of THIS tree."
- (avltree-clear (oref this tree)))
+ (avl-tree-clear (oref this tree)))
(defclass jde-parse-method-map (jde-avl-tree)
()

View File

@@ -1,82 +0,0 @@
Tell the elisp code about the right Java directory.
--- jde/lisp/jde.el (revision 90)
+++ jde/lisp/jde.el (working copy)
@@ -2448,17 +2448,14 @@ environment variable."
(defmethod initialize-instance ((this jde-bsh) &rest fields)
"Constructor for the JDEE BeanShell instance."
(call-next-method)
- (let* ((jde-java-directory
- (concat
- (jde-find-jde-data-directory)
- "java/")))
-
- (oset this bsh-cmd-dir (expand-file-name "bsh-commands" jde-java-directory))
- (oset this checkstyle-jar (expand-file-name "lib/checkstyle-all.jar" jde-java-directory))
- (oset this regexp-jar (expand-file-name "lib/jakarta-regexp.jar" jde-java-directory))
+ (let ((jde-java-directory "@out@/lib/java"))
+
+ (oset this bsh-cmd-dir "@datadir@/bsh-commands")
+ (oset this checkstyle-jar (expand-file-name "checkstyle-all.jar" jde-java-directory))
+ (oset this regexp-jar (expand-file-name "jakarta-regexp.jar" jde-java-directory))
(oset this jde-classes-dir (expand-file-name "classes" jde-java-directory))
- (oset this jde-jar (expand-file-name "lib/jde.jar" jde-java-directory))
- (oset this jar (expand-file-name "lib/bsh.jar" jde-java-directory))
+ (oset this jde-jar (expand-file-name "jde.jar" jde-java-directory))
+ (oset this jar (expand-file-name "bsh.jar" jde-java-directory))
(oset-default 'jde-bsh the-bsh this)))
(defmethod bsh-create-buffer ((this jde-bsh))
--- jde/lisp/jde-checkstyle.el (revision 90)
+++ jde/lisp/jde-checkstyle.el (working copy)
@@ -316,10 +316,7 @@ string describing how the compilation fi
(vm-path (oref (jde-run-get-vm) :path))
(source-file
(concat (file-name-nondirectory buffer-file-name)))
- (jde-java-directory
- (concat
- (jde-find-jde-data-directory)
- "java/"))
+ (jde-java-directory "@out@/lib/java")
(args (append
(unless jde-checkstyle-expanded-properties-file
(jde-checkstyle-get-property-args this))
@@ -328,12 +325,12 @@ string describing how the compilation fi
(if jde-checkstyle-classpath
(jde-build-classpath jde-checkstyle-classpath)
(jde-normalize-path
- (expand-file-name "lib/checkstyle-all.jar" jde-java-directory))))
+ (expand-file-name "checkstyle-all.jar" jde-java-directory))))
(list jde-checkstyle-class)
(list "-c"
(if jde-checkstyle-style
(jde-normalize-path jde-checkstyle-style)
- (concat (jde-find-jde-data-directory) "java/lib/sun_checks.xml")))
+ "@datadir@/sun_checks.xml"))
(if jde-checkstyle-expanded-properties-file
(list "-p" (jde-normalize-path jde-checkstyle-expanded-properties-file)))
(if jde-checkstyle-module-package-names-file
--- jde/lisp/jde-dbs.el (revision 90)
+++ jde/lisp/jde-dbs.el (working copy)
@@ -899,9 +899,7 @@ for the breakpoint."
(jde-normalize-path 'jde-run-working-directory)
source-directory))
(vm (oref (jde-run-get-vm) :path))
- (jde-java-directory
- (expand-file-name "java"
- (jde-find-jde-data-directory)))
+ (jde-java-directory "@out@/lib/java")
(vm-args
(let (args)
(setq args
@@ -912,7 +910,7 @@ for the breakpoint."
(jde-build-classpath
(list
(expand-file-name
- (if jde-bug-debug "classes" "lib/jde.jar")
+ (if jde-bug-debug "classes" "jde.jar")
jde-java-directory)
(if (jde-bug-vm-includes-jpda-p)
(jde-get-tools-jar)

View File

@@ -1,31 +0,0 @@
{stdenv, fetchurl, emacs, texinfo}:
stdenv.mkDerivation {
name = "magit-0.7";
src = fetchurl {
url = "http://zagadka.vm.bytemark.co.uk/magit/magit-0.7.tar.gz";
sha256 = "0qry1vj41pycwkf71sqrz3zgzh85zdg5acq26asscq4s7jksrjiz";
};
buildInputs = [emacs texinfo];
meta = {
description = "An an interface to Git, implemented as an extension to Emacs.";
longDescription = ''
With Magit, you can inspect and modify your Git repositories with
Emacs. You can review and commit the changes you have made to the
tracked files, for example, and you can browse the history of past
changes. There is support for cherry picking, reverting, merging,
rebasing, and other common Git operations.
Magit is not a complete interface to Git; it just aims to make the
most common Git operations convenient. Thus, Magit will likely not
save you from learning Git itself.
'';
license = "GPLv3+";
homepage = "http://zagadka.vm.bytemark.co.uk/magit/";
};
}

View File

@@ -1,19 +0,0 @@
{stdenv, fetchurl}:
stdenv.mkDerivation
{
name = "prolog-mode-1.22";
src = fetchurl
{
url = "http://bruda.ca/emacs-prolog/prolog.el";
sha256 = "f46915b2436642bb3302cb38cc457d3c121d0c3e95aecdf128fedc2ae5ea0c87";
};
buildCommand = "install -v -D -m644 $src $out/share/emacs/site-lisp/prolog.el";
meta = {
homepage = "http://turing.ubishops.ca/home/bruda/emacs-prolog/";
description = "Prolog mode for Emacs";
license = "GPL";
};
}

View File

@@ -1,42 +0,0 @@
{ stdenv, fetchurl, emacs, perl }:
let
pname = "ProofGeneral";
version = "3.7.1.1";
name = "${pname}-${version}";
website = "http://proofgeneral.inf.ed.ac.uk";
in
stdenv.mkDerivation {
inherit name;
src = fetchurl {
url = "http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/contrib/${name}.tar.gz";
sha256 = "ae430590d6763618df50a662a37f0627d3c3c8f31372f6f0bb2116b738fc92d8";
};
buildInputs = [ emacs perl ];
sourceRoot = name;
postPatch = "EMACS=emacs make clean";
# Skip building ...
buildPhase = "true";
installPhase = ''
DEST=$out/share/emacs/site-lisp/ProofGeneral
ensureDir $DEST
cp -a * $DEST
'';
meta = {
description = "A generic front-end for proof assistants";
longDescription = ''
Proof General is a generic front-end for proof assistants (also known as
interactive theorem provers), based on the customizable text editor Emacs.
'';
homepage = website;
license = "GPL";
};
}

View File

@@ -0,0 +1,7 @@
source "$stdenv/setup" || exit 1
emacsDir="$out/share/emacs/site-lisp"
ensureDir "$emacsDir" && \
cp "$src" "$emacsDir/quack.el" && \
emacs --batch -f batch-byte-compile "$emacsDir/quack.el"

View File

@@ -1,32 +1,21 @@
{ fetchurl, stdenv, emacs }:
stdenv.mkDerivation {
name = "quack-0.37";
name = "quack-0.30";
src = fetchurl {
# XXX: Upstream URL is not versioned, which might eventually break this.
url = "http://www.neilvandyke.org/quack/quack.el";
sha256 = "1q5442cpvw2i0qhmhn7mh45jnmzg0cmd01k5zp4gvg1526c0hbcc";
sha256 = "1xmpbdb064s3l3cv4agf03ir1g7xfzyvlqayr3yy5f8z3i6pf7mi";
};
buildInputs = [ emacs ];
unpackPhase = "true";
configurePhase = "true";
installPhase = "true";
buildPhase = ''
emacsDir="$out/share/emacs/site-lisp"
ensureDir "$emacsDir"
cp -v "$src" "$emacsDir/quack.el"
emacs --batch -f batch-byte-compile "$emacsDir/quack.el"
'';
builder = ./builder.sh;
meta = {
description = "Enhanced Emacs support for editing and running Scheme code";
homepage = http://www.neilvandyke.org/quack/;
license = "GPLv2+";
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}

View File

@@ -1,30 +0,0 @@
{ fetchsvn, stdenv, emacs }:
let revision = "17339"; in
stdenv.mkDerivation rec {
name = "scala-mode-r${revision}";
src = fetchsvn {
url = "http://lampsvn.epfl.ch/svn-repos/scala/scala-tool-support/trunk/src/emacs";
rev = revision;
sha256 = "05g3xk2mxkqwdnyvxklnrdyhppkvhfs2fd21blhzbhf474cgqlyh";
};
buildInputs = [ emacs ];
installPhase =
'' ensureDir "$out/share/emacs/site-lisp"
cp -v *.el *.elc "$out/share/emacs/site-lisp"
'';
meta = {
description = "An Emacs mode for editing Scala code";
homepage = http://www.scala-lang.org/node/354;
# non-copyleft, BSD-style
license = "permissive";
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}

View File

@@ -0,0 +1,52 @@
{ fetchurl, stdenv, emacs, eieio }:
stdenv.mkDerivation rec {
name = "semantic-1.4.4";
src = fetchurl {
url = "mirror://sourceforge/cedet/${name}.tar.gz";
sha256 = "0j50dqdy5bl35vqfbgxp93grs11llg9i4398044br73lvvif9n5f";
};
buildInputs = [ emacs eieio ];
doCheck = true;
checkPhase = "make Tests";
preConfigure = ''
sed -i "Makefile" -es'|^LOADPATH[[:blank:]]*=.*$|LOADPATH = ${eieio}/share/emacs/site-lisp|g'
'';
installPhase = ''
ensureDir "$out/share/emacs/site-lisp"
cp -v *.el *.elc "$out/share/emacs/site-lisp"
chmod a-x "$out/share/emacs/site-lisp/"*
ensureDir "$out/share/info"
cp -v *.info* "$out/share/info"
'';
meta = {
description = "Semantic, infrastructure for parser based text analysis in Emacs";
longDescription = ''
This package is now part of CEDET, please upgrade.
Semantic is an infrastructure for parser based text analysis in
Emacs. It is a lexer, parser-generator, and parser. It is
written in Emacs Lisp and is customized to the way Emacs thinks
about language files, and is optimized to use Emacs' parsing
capabilities.
Semantic's goal is to provide an intermediate API for authors of
language agnostic tools who want to deal with languages in a
generic way. It also provides a simple way for Mode Authors who
are experts in their language, to provide a parser for those
tool authors, without knowing anything about those tools.
'';
license = "GPLv2+";
homepage = http://cedet.sourceforge.net/;
};
}

View File

@@ -1,27 +0,0 @@
{stdenv, fetchurl, emacs}:
stdenv.mkDerivation rec {
name = "session-management-for-emacs-2.2a";
src = fetchurl {
url = "mirror://sourceforge.net/sourceforge/emacs-session/session-2.2a.tar.gz";
sha256 = "0i01dnkizs349ahyybzy0mjzgj52z65rxynsj2mlw5mm41sbmprp";
};
buildInputs = [emacs];
installPhase = ''
ensureDir "$out/share/emacs/site-lisp"
cp lisp/*.el "$out/share/emacs/site-lisp/"
'';
meta = {
/* installation: add to your ~/.emacs
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
*/
description = "small session management for emacs";
homepage = http://emacs-session.sourceforge.net/;
license = "GPL";
};
}

View File

@@ -1,4 +0,0 @@
source $stdenv/setup
mkdir -p $out/share/emacs/site-lisp
cp $src $out/share/emacs/site-lisp/stratego.el

View File

@@ -1,10 +0,0 @@
{stdenv, fetchsvn}:
stdenv.mkDerivation {
name = "stratego-mode";
builder = ./builder.sh;
src = fetchsvn {
url = https://svn.strategoxt.org/repos/StrategoXT/stratego-editors/trunk/emacs/stratego.el;
rev = 12678;
sha256 = "4ab4ec587550233f29ca08b82fa0a9f7e5b33fc178348037e3ab1816bd60f538";
};
}

View File

@@ -1,5 +1,6 @@
source $stdenv/setup
preConfigure=preConfigure
preConfigure() {
libc=$(cat ${NIX_GCC}/nix-support/orig-libc)
echo "libc: $libc"

View File

@@ -17,7 +17,7 @@ assert xaw3dSupport -> Xaw3d != null;
assert gtkGUI -> pkgconfig != null && gtk != null;
assert xftSupport -> libXft != null && libpng != null; # libpng = probably a bug
let date = "2009-06-26"; in
let date = "2009-02-16"; in
stdenv.mkDerivation {
name = "emacs-snapshot-23-${date}";
@@ -27,7 +27,7 @@ stdenv.mkDerivation {
inherit date;
cvsRoot = ":pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs";
module = "emacs";
sha256 = "bf9b21a0634f45474a1ce91e6153ced69194f1e9c0acd6626a931198f4a5972f";
sha256 = "6ec63da94a199c5f95bf4a9aa578cf14b3d85800fd37b3562d9a446b144b0d47";
};
preConfigure = "autoreconf -vfi";
@@ -52,7 +52,5 @@ stdenv.mkDerivation {
description = "GNU Emacs with Unicode, GTK and Xft support (23.x alpha)";
homepage = http://www.emacswiki.org/cgi-bin/wiki/XftGnuEmacs;
license = "GPLv3+";
maintainers = [ stdenv.lib.maintainers.ludo ];
platforms = stdenv.lib.platforms.linux; # GTK & co. are needed.
};
}

View File

@@ -1,12 +1,12 @@
{cabal, gtk2hs, binary, parsec, regexPosix, regexCompat, utf8String, libedit, makeWrapper}:
{cabal, gtk2hs, binary, parsec, regexPosix, utf8String, libedit, makeWrapper}:
cabal.mkDerivation (self : {
pname = "leksah";
version = "0.6.1";
sha256 = "de4e0974be3df0e58fd26bfbb76594d81514f1e1d898b9f47881b42084bacf35";
version = "0.4.4.1";
sha256 = "092a8gi73jhalgs4ppg8ki761vwk3gdnjwlyd4chnahbv5i1wrjw";
# !!! The explicit libedit dependency shouldn't be necessary.
extraBuildInputs = [gtk2hs binary parsec regexPosix regexCompat utf8String libedit makeWrapper];
extraBuildInputs = [gtk2hs binary parsec regexPosix utf8String libedit makeWrapper];
preConfigure =
''

View File

@@ -3,6 +3,7 @@ source $makeWrapper
export MONO_GAC_PREFIX=$monodoc:$gtksharp
postInstall=postInstall
postInstall() {
mv $out/bin $out/bin-orig
mkdir $out/bin

View File

@@ -1,6 +1,7 @@
source $stdenv/setup
source $makeWrapper
postInstall=postInstall
postInstall() {
mv $out/bin $out/bin-orig
mkdir $out/bin

View File

@@ -1,13 +1,13 @@
args: with args;
stdenv.mkDerivation (rec {
pname = "nano";
version = "2.2.1";
version = "2.0.7";
name = "${pname}-${version}";
src = fetchurl {
url = "mirror://gnu/nano/${name}.tar.gz";
sha256 = "1xqldl7ipsmz5x8q3fw9s6yshxfp39kly96kb15l1kawng1wfcfq";
sha256 = "5dc783c412c4d1ff463c450d2a2f9e1ea53a43d9ba1dda92bbf5182f60db532f";
};
buildInputs = [ncurses gettext];
# configureFlags = "--enable-tiny";

View File

@@ -2,6 +2,7 @@ source $stdenv/setup
export NIX_CFLAGS_COMPILE="-DBUILD_UNTESTED_NEDIT -L$motif/lib $NIX_CFLAGS_COMPILE"
installPhase=installPhase
installPhase() {
ensureDir $out/bin
cp -p source/nedit source/nc $out/bin

View File

@@ -39,7 +39,6 @@ stdenv.mkDerivation rec {
ln -s $out/share/man/man1/nvi.1 $out/share/man/man1/vi
ln -s $out/share/man/man1/nvi.1 $out/share/man/man1/ex
ln -s $out/share/man/man1/nvi.1 $out/share/man/man1/view
ln -s $out/bin/{,vi-}nvi # create a symlink so that all vi(m) users will find it
'';
meta = {

View File

@@ -0,0 +1,19 @@
{stdenv, fetchurl, ncurses}:
stdenv.mkDerivation {
name = "vim-7.0";
src = fetchurl {
url = ftp://ftp.vim.org/pub/vim/unix/vim-7.0.tar.bz2;
md5 = "4ca69757678272f718b1041c810d82d8";
};
inherit ncurses;
buildInputs = [ncurses];
NIX_CFLAGS_COMPILE="-D_BSD_SOURCE=1";
meta = {
homepage = http://www.vim.org;
};
}

View File

@@ -24,9 +24,9 @@ let
"ximSupport" "-xim"
];
configFlags = [
"true" " --enable-multibyte "
"true" " "
"x11Support" " --enable-gui=auto "
"hugeFeatures" "--with-features=huge --enable-cscope --enable-xsmp "
"hugeFeatures" "--with-features=huge --enable-cscope --enable-multibyte --enable-xsmp "
"pythonSupport" " --enable-pythoninterp "
"perlSupport" " --enable-perlinterp "
"tclSupport" " --enable-tclinterp "
@@ -44,7 +44,7 @@ args.stdenv.mkDerivation {
src = args.fetchurl {
url = ftp://ftp.vim.org/pub/vim/unix/vim-7.2.tar.bz2;
sha256 = "11hxkb6r2550c4n13nwr0d8afvh30qjyr5c2hw16zgay43rb0kci";
sha256 = "076ydlfcmlnldjzarahg58vflawn083y90is6sz2j4klg9mj2iim";
};
inherit (args) ncurses;

View File

@@ -1,11 +1,11 @@
{ fetchurl, stdenv, ncurses, help2man }:
stdenv.mkDerivation rec {
name = "zile-2.3.13";
name = "zile-2.3.7";
src = fetchurl {
url = "mirror://gnu/zile/${name}.tar.gz";
sha256 = "13nvrlns4vjngwjwg110r3djmpwq34q22crr4x8wpzf9c0chp8i4";
sha256 = "04fiqy4nwhm42pdl839av7xgmpps9wfm4srpmhgwaydvjv79dgs1";
};
buildInputs = [ ncurses help2man ];
@@ -39,7 +39,5 @@ stdenv.mkDerivation rec {
homepage = http://www.gnu.org/software/zile/;
license = "GPLv3+";
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}

View File

@@ -1,16 +1,17 @@
args: with args;
let version = "6.5.9-1"; in
let version = "6.4.8-9"; in
stdenv.mkDerivation (rec {
name = "ImageMagick-${version}";
src = fetchurl {
url = "mirror://imagemagick/${name}.tar.bz2";
sha256 = "0a4yhhfqagz28yccydngi31050101jfmq5ljln61g69yy6m47ifg";
sha256 = "1ngfs99wryrc7v5pqrjbcrvhsilc29iaj6zplzxm450f49xmpidq";
};
configureFlags = ''
--with-dots
--with-gs-font-dir=${ghostscript}/share/ghostscript/fonts
--with-gslib
${if args ? tetex then "--with-frozenpaths" else ""}

View File

@@ -10,6 +10,27 @@ stdenv.mkDerivation {
buildInputs = [ cmake libpng libtiff libjpeg panotools libxml2 ];
# I added these flags to get all the rpaths right, which I guess they are
# taken from the qt4 sources. Not very nice.
cmakeFlags = "-DCMAKE_SHARED_LINKER_FLAGS=\"-Wl,-rpath,$out/lib\"" +
" -DCMAKE_EXE_LINKER_FLAGS=\"-Wl,-rpath,$out/lib" +
" -lpng12 -lpano13 -ljpeg -ltiff -lz -lxml2 \"" +
" -DCMAKE_SKIP_BUILD_RPATH=ON" +
" -DCMAKE_BUILD_TYPE=Release" +
" -DCMAKE_INSTALL_PREFIX=$out";
dontUseCmakeConfigure = true;
# I rewrote the configure phase to get the $out references evaluated in
# cmakeFlags
configurePhase = ''
set -x
mkdir -p build;
cd build
eval -- "cmake .. $cmakeFlags"
set +x
'';
meta = {
homepage = http://hugin.sourceforge.net/;
description = "Implementation in C of the autopano-sift algorithm for automatically stitching panoramas";

View File

@@ -1,41 +1,39 @@
{ stdenv, fetchcvs, cmake, pkgconfig, gtk, freetype, fontconfig, lcms, fltk,
{ stdenv, fetchurl, pkgconfig, gtk, freetype, fontconfig, lcms, fltk,
flex, libtiff, libjpeg, libpng, libexif, zlib, perl, libX11,
perlXMLParser, python, pygtk, gettext, intltool, babl, gegl,
glib, makedepend, xf86vidmodeproto, xineramaproto, libXmu, openexr,
mesa, libXext, libXpm, libXxf86vm, automake, autoconf, libtool } :
mesa, libXext, libXpm, libXxf86vm } :
stdenv.mkDerivation {
name = "cinepaint-0.25.0";
name = "cinepaint-0.22-1";
# The developer told me this cvs fetch is 0.25.0
src = fetchcvs {
cvsRoot = ":pserver:anonymous@cinepaint.cvs.sourceforge.net:/cvsroot/cinepaint";
module = "cinepaint-project";
date = "2008-11-06";
sha256 = "f5ac249628ffe04349d1bb3b1e078be0cda7575dd71d12ae74143baa006acb6d";
src = fetchurl {
url = mirror://sourceforge/cinepaint/cinepaint-0.22-1.tar.gz;
sha256 = "bb08a9210658959772df12408769d660999ede168b7431514e1f3cead07c0fea";
};
buildInputs = [ cmake pkgconfig gtk freetype fontconfig lcms fltk flex libtiff
buildInputs = [ pkgconfig gtk freetype fontconfig lcms fltk flex libtiff
libjpeg libpng libexif zlib perl libX11 perlXMLParser python pygtk gettext
intltool babl gegl glib makedepend xf86vidmodeproto xineramaproto libXmu
openexr mesa libXext libXpm libXxf86vm automake autoconf libtool ];
openexr mesa libXext libXpm libXxf86vm ];
dontUseCmakeConfigure = 1;
patches = [ ./fltk.patch ];
NIX_CFLAGS_COMPILE = "-I.";
configurePhase = ''
cd cinepaint
chmod 0777 autogen.sh
./autogen.sh
./configure --prefix=$out
prePatch = ''
sed -i -e s@/usr/X11R6/bin/makedepend@${makedepend}/bin/makedepend@ \
-e s@/usr/X11R6/include/X11/extensions/xf86vmode@${xf86vidmodeproto}/include/X11/extensions/xf86vmode@ \
-e s@/usr/X11R6/include/X11/Xlib.h@${libX11}/include/X11/Xlib.h@ \
-e s@/usr/X11R6/include/X11/extensions/Xinerama.h@${xineramaproto}/include/X11/extensions/Xinerama.h@ \
-e s@/usr/X11R6/lib/libfreetype.a@${freetype}/lib/libfreetype.a@ \
plug-ins/icc_examin/icc_examin/configure \
plug-ins/icc_examin/icc_examin/configure.sh
'';
configureFlags = [ "--disable-print" "--enable-gtk2" ];
meta = {
homepage = http://www.cinepaint.org/;
license = "free";
description = "Image editor which supports images over 8bpp and ICC profiles";
maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux;
};
}

View File

@@ -0,0 +1,13 @@
diff --git a/plug-ins/icc_examin/icc_examin/icc_helfer_fltk.cpp b/plug-ins/icc_examin/icc_examin/icc_helfer_fltk.cpp
index b507454..85f4441 100644
--- a/plug-ins/icc_examin/icc_examin/icc_helfer_fltk.cpp
+++ b/plug-ins/icc_examin/icc_examin/icc_helfer_fltk.cpp
@@ -226,7 +226,7 @@ namespace icc_examin_ns {
int awake(void)
{
- Fl::awake(0);
+ Fl::awake((void *)0);
return 0;
}
int leerWait(void) { return 0; }

View File

@@ -19,7 +19,5 @@ stdenv.mkDerivation {
description = "Viewer of CBR and CBZ files, often used to store scanned comics";
homepage = http://comical.sourceforge.net/;
license = "GPLv2+";
maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux;
};
}

View File

@@ -1,19 +1,16 @@
{stdenv, fetchurl, gtk, pkgconfig, glib, perl, perlXMLParser, libxml2, gettext, python, libxml2Python, docbook5, docbook_xsl, libxslt, intltool }:
{stdenv, fetchurl, gtk, pkgconfig, glib, perl, perlXMLParser, libxml2, gettext, python, libxml2Python, docbook5, docbook_xsl, libxslt }:
stdenv.mkDerivation {
name = "dia-0.97";
name = "dia-0.96";
src = fetchurl {
url = mirror://gnome/sources/dia/0.97/dia-0.97.tar.bz2;
sha256 = "0nngdjklap3x1b7cxnwawh29axbwk8siyq7w4iinsns3slmki0wh";
url = http://ftp.gnome.org.nyud.net:8080/pub/gnome/sources/dia/0.96/dia-0.96.1.tar.bz2;
md5 = "7b81b22baa2df55efe4845865dddc7b6";
};
buildInputs = [gtk glib perl pkgconfig perlXMLParser libxml2 gettext python libxml2Python docbook5 libxslt docbook_xsl intltool];
buildInputs = [gtk glib perl pkgconfig perlXMLParser libxml2 gettext python libxml2Python docbook5 libxslt docbook_xsl];
meta = {
description = "Gnome Diagram drawing software.";
homepage = http://live.gnome.org/Dia;
maintainers = [stdenv.lib.maintainers.raskin];
platforms = with stdenv.lib.platforms;
linux;
homepage = http://www.gnome.org/projects/dia;
};
}

View File

@@ -1,25 +0,0 @@
{stdenv, fetchurl, kdelibs, exiv2, libXt, libXext, zlib, libjpeg, perl, qt3,
libpng, expat, cmake }:
stdenv.mkDerivation {
name = "digikam-1.0.0";
src = fetchurl {
url = mirror://sourceforge/digikam/digikam-1.0.0.tar.bz2;
sha256 = "0qblqyjn0vas8hyqn5s9rr401d93cagk53y3j8kch0mr0bk706bk";
};
/*
configurePhase = ''
LDFLAGS="$LDFLAGS -ljpeg" ./configure --without-arts --prefix=$out
'';
*/
buildInputs = [ kdelibs exiv2 libXt libXext zlib libjpeg perl qt3 libpng expat cmake ];
meta = {
homepage = http://digikam.sourceforge.net/;
description = "KDE 3.x photo viewer";
# license = "GPLv2+";
};
}

Some files were not shown because too many files have changed in this diff Show More