mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-06-07 22:03:37 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e3f729c35 |
@@ -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
|
||||
|
||||
@@ -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 it’s 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 && 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 don’t 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>Don’t 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 it’s 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 it’s used to support <emphasis>software development</emphasis>:</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s 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 it’s a <emphasis>compiler</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>development/compilers</filename> (e.g. <filename>gcc</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s an <emphasis>interpreter</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>development/interpreters</filename> (e.g. <filename>guile</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a (set of) development <emphasis>tool(s)</emphasis>:</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s 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 it’s 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 it’s 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 it’s for <emphasis>networking</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>tools/networking</filename> (e.g. <filename>wget</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s for <emphasis>text processing</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>tools/text</filename> (e.g. <filename>diffutils</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s 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 it’s 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 it’s 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 it’s 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 it’s a <emphasis>shell</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>shells</filename> (e.g. <filename>bash</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>server</emphasis>:</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s a web server:</term>
|
||||
<listitem>
|
||||
<para><filename>servers/http</filename> (e.g. <filename>apache-httpd</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s 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 it’s 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 it’s an <emphasis>application</emphasis>:</term>
|
||||
<listitem>
|
||||
<para>A (typically large) program with a distinct user
|
||||
interface, primarily used interactively.</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s 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 it’s for <emphasis>video playback / editing</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/video</filename> (e.g. <filename>vlc</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s for <emphasis>graphics viewing / editing</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/graphics</filename> (e.g. <filename>gimp</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s for <emphasis>networking</emphasis>:</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>mailreader</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/networking/mailreaders</filename> (e.g. <filename>thunderbird</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>newsreader</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>applications/networking/newsreaders</filename> (e.g. <filename>pan</filename>)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s 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 it’s <emphasis>data</emphasis> (i.e., does not have a
|
||||
straight-forward executable semantics):</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s a <emphasis>font</emphasis>:</term>
|
||||
<listitem>
|
||||
<para><filename>data/fonts</filename></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>If it’s related to <emphasis>SGML/XML processing</emphasis>:</term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>If it’s 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 it’s 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 it’s 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 don’t 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
32
doc/meta.xml
32
doc/meta.xml
@@ -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
|
||||
<alice@example.org>" "Bob <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
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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 it’s 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 it’s 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>
|
||||
@@ -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
|
||||
|
||||
@@ -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
49
maintainers/docs/bugs.txt
Normal 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.
|
||||
116
maintainers/docs/classification.txt
Normal file
116
maintainers/docs/classification.txt
Normal 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
|
||||
101
maintainers/docs/coding-conventions.txt
Normal file
101
maintainers/docs/coding-conventions.txt
Normal 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
|
||||
}:
|
||||
31
maintainers/docs/create-new-static-env
Normal file
31
maintainers/docs/create-new-static-env
Normal 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.
|
||||
35
maintainers/docs/static-initial-env
Normal file
35
maintainers/docs/static-initial-env
Normal 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
12
maintainers/docs/todo.txt
Normal 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]
|
||||
@@ -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
|
||||
@@ -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;
|
||||
83
maintainers/scripts/evacuate-urls.sh
Executable file
83
maintainers/scripts/evacuate-urls.sh
Executable 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
|
||||
@@ -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
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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 = ''
|
||||
|
||||
@@ -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";
|
||||
|
||||
11
pkgs/applications/audio/bmp-plugins/wma/builder.sh
Normal file
11
pkgs/applications/audio/bmp-plugins/wma/builder.sh
Normal 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
|
||||
@@ -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"
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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];
|
||||
|
||||
@@ -12,7 +12,7 @@ in
|
||||
};
|
||||
in with localDefs;
|
||||
let
|
||||
copyFile = fullDepEntry ("
|
||||
copyFile = FullDepEntry ("
|
||||
ensureDir \$out/include
|
||||
cp ${src} \$out/include/ladspa.h
|
||||
") [minInit defEnsureDir];
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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+";
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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){
|
||||
96
pkgs/applications/editors/eclipse-new/3.3.1.1.nix
Normal file
96
pkgs/applications/editors/eclipse-new/3.3.1.1.nix
Normal 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; });
|
||||
}
|
||||
@@ -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" />
|
||||
53
pkgs/applications/editors/eclipse-new/3.3.1.1/eclipse.nix
Normal file
53
pkgs/applications/editors/eclipse-new/3.3.1.1/eclipse.nix
Normal 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";
|
||||
};
|
||||
}
|
||||
22
pkgs/applications/editors/eclipse/build_with_jdk_compiler
Normal file
22
pkgs/applications/editors/eclipse/build_with_jdk_compiler
Normal 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" />
|
||||
40
pkgs/applications/editors/eclipse/builder.sh
Executable file
40
pkgs/applications/editors/eclipse/builder.sh
Executable 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
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
|
||||
18
pkgs/applications/editors/eclipse/eclipse-sdk-3.1.2.nix
Normal file
18
pkgs/applications/editors/eclipse/eclipse-sdk-3.1.2.nix
Normal 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";
|
||||
};
|
||||
}
|
||||
18
pkgs/applications/editors/eclipse/eclipse-sdk-3.1.nix
Normal file
18
pkgs/applications/editors/eclipse/eclipse-sdk-3.1.nix
Normal 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";
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
10
pkgs/applications/editors/eclipse/plugins/installers/zip.nix
Normal file
10
pkgs/applications/editors/eclipse/plugins/installers/zip.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{stdenv, unzip, plugin}:
|
||||
|
||||
let {
|
||||
body =
|
||||
stdenv.mkDerivation {
|
||||
name = "eclipse-zip-plugin-installer";
|
||||
builder = ./builder.sh;
|
||||
inherit plugin unzip;
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{stdenv, fetchurl}:
|
||||
|
||||
fetchurl {
|
||||
url = http://nixos.org/tarballs/org.spoofax.editor_0.3.10.jar;
|
||||
md5 = "ff77853e750e19a9b8d380c17ea27f3d";
|
||||
}
|
||||
@@ -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";
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
|
||||
13
pkgs/applications/editors/emacs-21/builder.sh
Normal file
13
pkgs/applications/editors/emacs-21/builder.sh
Normal 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
|
||||
41
pkgs/applications/editors/emacs-21/crt.patch
Normal file
41
pkgs/applications/editors/emacs-21/crt.patch
Normal 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~
|
||||
28
pkgs/applications/editors/emacs-21/default.nix
Normal file
28
pkgs/applications/editors/emacs-21/default.nix
Normal 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";
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
source $stdenv/setup
|
||||
|
||||
preConfigure=preConfigure
|
||||
preConfigure() {
|
||||
libc=$(cat ${NIX_GCC}/nix-support/orig-libc)
|
||||
echo "libc: $libc"
|
||||
|
||||
@@ -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.
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -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 editor—and 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.
|
||||
};
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
40
pkgs/applications/editors/emacs-modes/eieio/default.nix
Normal file
40
pkgs/applications/editors/emacs-modes/eieio/default.nix
Normal 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/;
|
||||
};
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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/"
|
||||
|
||||
@@ -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">
|
||||
@@ -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}")
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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)
|
||||
()
|
||||
@@ -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)
|
||||
@@ -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/";
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
7
pkgs/applications/editors/emacs-modes/quack/builder.sh
Normal file
7
pkgs/applications/editors/emacs-modes/quack/builder.sh
Normal 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"
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
52
pkgs/applications/editors/emacs-modes/semantic/default.nix
Normal file
52
pkgs/applications/editors/emacs-modes/semantic/default.nix
Normal 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/;
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
source $stdenv/setup
|
||||
|
||||
mkdir -p $out/share/emacs/site-lisp
|
||||
cp $src $out/share/emacs/site-lisp/stratego.el
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
source $stdenv/setup
|
||||
|
||||
preConfigure=preConfigure
|
||||
preConfigure() {
|
||||
libc=$(cat ${NIX_GCC}/nix-support/orig-libc)
|
||||
echo "libc: $libc"
|
||||
@@ -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.
|
||||
};
|
||||
}
|
||||
@@ -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 =
|
||||
''
|
||||
|
||||
@@ -3,6 +3,7 @@ source $makeWrapper
|
||||
|
||||
export MONO_GAC_PREFIX=$monodoc:$gtksharp
|
||||
|
||||
postInstall=postInstall
|
||||
postInstall() {
|
||||
mv $out/bin $out/bin-orig
|
||||
mkdir $out/bin
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
source $stdenv/setup
|
||||
source $makeWrapper
|
||||
|
||||
postInstall=postInstall
|
||||
postInstall() {
|
||||
mv $out/bin $out/bin-orig
|
||||
mkdir $out/bin
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
19
pkgs/applications/editors/vim-diet/default.nix
Normal file
19
pkgs/applications/editors/vim-diet/default.nix
Normal 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;
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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 ""}
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
13
pkgs/applications/graphics/cinepaint/fltk.patch
Normal file
13
pkgs/applications/graphics/cinepaint/fltk.patch
Normal 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; }
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user