mirror of
https://github.com/CHN-beta/nixpkgs.git
synced 2026-01-12 10:50:30 +08:00
Compare commits
1 Commits
backups/ma
...
0.5-stable
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b9686c27ed |
31
COPYING
31
COPYING
@@ -1,31 +0,0 @@
|
||||
Copyright (c) 2003-2006 Eelco Dolstra
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
======================================================================
|
||||
|
||||
Note: the license above does not apply to the packages built by the
|
||||
Nix Packages collection, merely to the package descriptions (i.e., Nix
|
||||
expressions, build scripts, etc.). Also, the license does not apply
|
||||
to some of the binaries used for bootstrapping Nixpkgs (e.g.,
|
||||
pkgs/stdenv/linux/tools/bash). It also might not apply to patches
|
||||
included in Nixpkgs, which may be derivative works of the packages to
|
||||
which they apply. The aforementioned artifacts are all covered by the
|
||||
licenses of the respective packages.
|
||||
@@ -1 +0,0 @@
|
||||
import ./pkgs/top-level/all-packages.nix
|
||||
30
doc/Makefile
30
doc/Makefile
@@ -1,30 +0,0 @@
|
||||
# You may need to override this.
|
||||
docbookxsl = $(HOME)/.nix-profile/xml/xsl/docbook
|
||||
|
||||
XMLLINT = xmllint --catalogs
|
||||
XSLTPROC = xsltproc --catalogs \
|
||||
--param section.autolabel 1 \
|
||||
--param section.label.includes.component.label 1 \
|
||||
--param html.stylesheet \'style.css\' \
|
||||
--param xref.with.number.and.title 1 \
|
||||
--param toc.section.depth 3 \
|
||||
--param admon.style \'\' \
|
||||
--param callout.graphics.extension \'.gif\'
|
||||
|
||||
NEWS_OPTS = \
|
||||
--stringparam generate.toc "article nop" \
|
||||
--stringparam section.autolabel.max.depth 0 \
|
||||
--stringparam header.rule 0
|
||||
|
||||
all: NEWS.html NEWS.txt
|
||||
|
||||
NEWS.html: release-notes.xml
|
||||
$(XSLTPROC) --nonet --xinclude --output $@ $(NEWS_OPTS) \
|
||||
$(docbookxsl)/html/docbook.xsl release-notes.xml
|
||||
|
||||
NEWS.txt: release-notes.xml
|
||||
$(XSLTPROC) --nonet --xinclude quote-literals.xsl release-notes.xml | \
|
||||
$(XSLTPROC) --nonet --output $@.tmp.html $(NEWS_OPTS) \
|
||||
$(docbookxsl)/html/docbook.xsl -
|
||||
LANG=en_US w3m -dump $@.tmp.html > $@
|
||||
rm $@.tmp.html
|
||||
@@ -1,44 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<xsl:stylesheet
|
||||
version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:str="http://exslt.org/strings"
|
||||
extension-element-prefixes="str">
|
||||
|
||||
<xsl:output method="xml"/>
|
||||
|
||||
<xsl:template match="function|command|literal|varname|filename|option|quote">`<xsl:apply-templates/>'</xsl:template>
|
||||
|
||||
<xsl:template match="token"><xsl:text> </xsl:text><xsl:apply-templates /><xsl:text>
|
||||
</xsl:text></xsl:template>
|
||||
|
||||
<xsl:template match="screen|programlisting">
|
||||
<screen><xsl:apply-templates select="str:split(., '
')" /></screen>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="section[following::section]">
|
||||
<section>
|
||||
<xsl:apply-templates />
|
||||
<screen><xsl:text>
|
||||
</xsl:text></screen>
|
||||
</section>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="*">
|
||||
<xsl:element name="{name(.)}" namespace="{namespace-uri(.)}">
|
||||
<xsl:copy-of select="namespace::*" />
|
||||
<xsl:for-each select="@*">
|
||||
<xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:attribute>
|
||||
</xsl:for-each>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:element>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="text()">
|
||||
<xsl:value-of select="translate(., '‘’“”—', concat("`'", '""-'))" />
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
@@ -1,612 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<article xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
|
||||
<title>Nixpkgs Release Notes</title>
|
||||
|
||||
|
||||
<section><title>Release 0.12 (TBA)</title>
|
||||
|
||||
<para>…</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Release 0.11 (September 11, 2007)</title>
|
||||
|
||||
<para>This release has the following improvements:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
|
||||
<listitem><para>The standard build environment
|
||||
(<literal>stdenv</literal>) is now pure on the
|
||||
<literal>x86_64-linux</literal> and <literal>powerpc-linux</literal>
|
||||
platforms, just as on <literal>i686-linux</literal>. (Purity means
|
||||
that building and using the standard environment has no dependencies
|
||||
outside of the Nix store. For instance, it doesn’t require an
|
||||
external C compiler such as <filename>/usr/bin/gcc</filename>.)
|
||||
Also, the statically linked binaries used in the bootstrap process
|
||||
are now automatically reproducible, making it easy to update the
|
||||
bootstrap tools and to add support for other Linux platforms. See
|
||||
<filename>pkgs/stdenv/linux/make-bootstrap-tools.nix</filename> for
|
||||
details.</para></listitem>
|
||||
|
||||
|
||||
<listitem><para>Hook variables in the generic builder are now
|
||||
executed using the <function>eval</function> shell command. This
|
||||
has a major advantage: you can write hooks directly in Nix
|
||||
expressions. For instance, rather than writing a builder like this:
|
||||
|
||||
<programlisting>
|
||||
source $stdenv/setup
|
||||
|
||||
postInstall=postInstall
|
||||
postInstall() {
|
||||
ln -sf gzip $out/bin/gunzip
|
||||
ln -sf gzip $out/bin/zcat
|
||||
}
|
||||
|
||||
genericBuild</programlisting>
|
||||
|
||||
(the <literal>gzip</literal> builder), you can just add this
|
||||
attribute to the derivation:
|
||||
|
||||
<programlisting>
|
||||
postInstall = "ln -sf gzip $out/bin/gunzip; ln -sf gzip $out/bin/zcat";</programlisting>
|
||||
|
||||
and so a separate build script becomes unnecessary. This should
|
||||
allow us to get rid of most builders in Nixpkgs.</para></listitem>
|
||||
|
||||
|
||||
<listitem><para>It is now possible to have the generic builder pass
|
||||
arguments to <command>configure</command> and
|
||||
<command>make</command> that contain whitespace. Previously, for
|
||||
example, you could say in a builder,
|
||||
|
||||
<programlisting>
|
||||
configureFlags="CFLAGS=-O0"</programlisting>
|
||||
|
||||
but not
|
||||
|
||||
<programlisting>
|
||||
configureFlags="CFLAGS=-O0 -g"</programlisting>
|
||||
|
||||
since the <literal>-g</literal> would be interpreted as a separate
|
||||
argument to <command>configure</command>. Now you can say
|
||||
|
||||
<programlisting>
|
||||
configureFlagsArray=("CFLAGS=-O0 -g")</programlisting>
|
||||
|
||||
or similarly
|
||||
|
||||
<programlisting>
|
||||
configureFlagsArray=("CFLAGS=-O0 -g" "LDFLAGS=-L/foo -L/bar")</programlisting>
|
||||
|
||||
which does the right thing. Idem for <literal>makeFlags</literal>,
|
||||
<literal>installFlags</literal>, <literal>checkFlags</literal> and
|
||||
<literal>distFlags</literal>.</para>
|
||||
|
||||
<para>Unfortunately you can't pass arrays to Bash through the
|
||||
environment, so you can't put the array above in a Nix expression,
|
||||
e.g.,
|
||||
|
||||
<programlisting>
|
||||
configureFlagsArray = ["CFLAGS=-O0 -g"];</programlisting>
|
||||
|
||||
since it would just be flattened to a since string. However, you
|
||||
<emphasis>can</emphasis> use the inline hooks described above:
|
||||
|
||||
<programlisting>
|
||||
preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")";</programlisting>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
|
||||
<listitem><para>The function <function>fetchurl</function> now has
|
||||
support for two different kinds of mirroring of files. First, it
|
||||
has support for <emphasis>content-addressable mirrors</emphasis>.
|
||||
For example, given the <function>fetchurl</function> call
|
||||
|
||||
<programlisting>
|
||||
fetchurl {
|
||||
url = http://releases.mozilla.org/<replaceable>...</replaceable>/firefox-2.0.0.6-source.tar.bz2;
|
||||
sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082";
|
||||
}</programlisting>
|
||||
|
||||
<function>fetchurl</function> will first try to download this file
|
||||
from <link
|
||||
xlink:href="http://nix.cs.uu.nl/dist/tarballs/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>.
|
||||
If that file doesn’t exist, it will try the original URL. In
|
||||
general, the “content-addressed” location is
|
||||
<replaceable>mirror</replaceable><literal>/</literal><replaceable>hash-type</replaceable><literal>/</literal><replaceable>hash</replaceable>.
|
||||
There is currently only one content-addressable mirror (<link
|
||||
xlink:href="http://nix.cs.uu.nl/dist/tarballs"/>), but more can be
|
||||
specified in the <varname>hashedMirrors</varname> attribute in
|
||||
<filename>pkgs/build-support/fetchurl/mirrors.nix</filename>, or by
|
||||
setting the <envar>NIX_HASHED_MIRRORS</envar> environment variable
|
||||
to a whitespace-separated list of URLs.</para>
|
||||
|
||||
<para>Second, <function>fetchurl</function> has support for
|
||||
widely-mirrored distribution sites such as SourceForge or the Linux
|
||||
kernel archives. Given a URL of the form
|
||||
<literal>mirror://<replaceable>site</replaceable>/<replaceable>path</replaceable></literal>,
|
||||
it will try to download <replaceable>path</replaceable> from a
|
||||
configurable list of mirrors for <replaceable>site</replaceable>.
|
||||
(This idea was borrowed from Gentoo Linux.) Example:
|
||||
<programlisting>
|
||||
fetchurl {
|
||||
url = mirror://gnu/gcc/gcc-4.2.0/gcc-core-4.2.0.tar.bz2;
|
||||
sha256 = "0ykhzxhr8857dr97z0j9wyybfz1kjr71xk457cfapfw5fjas4ny1";
|
||||
}</programlisting>
|
||||
Currently <replaceable>site</replaceable> can be
|
||||
<literal>sourceforge</literal>, <literal>gnu</literal> and
|
||||
<literal>kernel</literal>. The list of mirrors is defined in
|
||||
<filename>pkgs/build-support/fetchurl/mirrors.nix</filename>. You
|
||||
can override the list of mirrors for a particular site by setting
|
||||
the environment variable
|
||||
<envar>NIX_MIRRORS_<replaceable>site</replaceable></envar>, e.g.
|
||||
<programlisting>
|
||||
export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</programlisting>
|
||||
</para>
|
||||
|
||||
</listitem>
|
||||
|
||||
|
||||
<listitem><para>Important updates:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Glibc 2.5.</para></listitem>
|
||||
|
||||
<listitem><para>GCC 4.1.2.</para></listitem>
|
||||
|
||||
<listitem><para>Gnome 2.16.3.</para></listitem>
|
||||
|
||||
<listitem><para>X11R7.2.</para></listitem>
|
||||
|
||||
<listitem><para>Linux 2.6.21.7 and 2.6.22.6.</para></listitem>
|
||||
|
||||
<listitem><para>Emacs 22.1.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
|
||||
<listitem><para>Major new packages:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>KDE 3.5.6 Base.</para></listitem>
|
||||
|
||||
<listitem><para>Wine 0.9.43.</para></listitem>
|
||||
|
||||
<listitem><para>OpenOffice 2.2.1.</para></listitem>
|
||||
|
||||
<listitem><para>Many Linux system packages to support
|
||||
NixOS.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
<para>The following people contributed to this release:
|
||||
|
||||
Andres Löh,
|
||||
Arie Middelkoop,
|
||||
Armijn Hemel,
|
||||
Eelco Dolstra,
|
||||
Marc Weber,
|
||||
Mart Kolthof,
|
||||
Martin Bravenboer,
|
||||
Michael Raskin,
|
||||
Wouter den Breejen and
|
||||
Yury G. Kudryashov.
|
||||
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Release 0.10 (October 12, 2006)</title>
|
||||
|
||||
<note><para>This release of Nixpkgs requires <link
|
||||
xlink:href='http://nix.cs.uu.nl/dist/nix/nix-0.10/'>Nix
|
||||
0.10</link> or higher.</para></note>
|
||||
|
||||
<para>This release has the following improvements:</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para><filename>pkgs/system/all-packages-generic.nix</filename>
|
||||
is gone, we now just have
|
||||
<filename>pkgs/top-level/all-packages.nix</filename> that contains
|
||||
all available packages. This should cause much less confusion with
|
||||
users. <filename>all-packages.nix</filename> is a function that by
|
||||
default returns packages for the current platform, but you can
|
||||
override this by specifying a different <varname>system</varname>
|
||||
argument.</para></listitem>
|
||||
|
||||
<listitem><para>Certain packages in Nixpkgs are now
|
||||
user-configurable through a configuration file, i.e., without having
|
||||
to edit the Nix expressions in Nixpkgs. For instance, the Firefox
|
||||
provided in the Nixpkgs channel is built without the RealPlayer
|
||||
plugin (for legal reasons). Previously, you could easily enable
|
||||
RealPlayer support by editing the call to the Firefox function in
|
||||
<filename>all-packages.nix</filename>, but such changes are not
|
||||
respected when Firefox is subsequently updated through the Nixpkgs
|
||||
channel.</para>
|
||||
|
||||
<para>The Nixpkgs configuration file (found in
|
||||
<filename>~/.nixpkgs/config.nix</filename> or through the
|
||||
<envar>NIXPKGS_CONFIG</envar> environment variable) is an attribute
|
||||
set that contains configuration options that
|
||||
<filename>all-packages.nix</filename> reads and uses for certain
|
||||
packages. For instance, the following configuration file:
|
||||
|
||||
<programlisting>
|
||||
{
|
||||
firefox = {
|
||||
enableRealPlayer = true;
|
||||
};
|
||||
}</programlisting>
|
||||
|
||||
persistently enables RealPlayer support in the Firefox
|
||||
build.</para>
|
||||
|
||||
<para>(Actually, <literal>firefox.enableRealPlayer</literal> is the
|
||||
<emphasis>only</emphasis> configuration option currently available,
|
||||
but more are sure to be added.)</para></listitem>
|
||||
|
||||
<listitem><para>Support for new platforms:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para><literal>i686-cygwin</literal>, i.e., Windows
|
||||
(using <link xlink:href="http://www.cygwin.com/">Cygwin</link>).
|
||||
The standard environment on <literal>i686-cygwin</literal> by
|
||||
default builds binaries for the Cygwin environment (i.e., it
|
||||
uses Cygwin tools and produces executables that use the Cygwin
|
||||
library). However, there is also a standard environment that
|
||||
produces binaries that use <link
|
||||
xlink:href="http://www.mingw.org/">MinGW</link>. You can use it
|
||||
by calling <filename>all-package.nix</filename> with the
|
||||
<varname>stdenvType</varname> argument set to
|
||||
<literal>"i686-mingw"</literal>.</para></listitem>
|
||||
|
||||
<listitem><para><literal>i686-darwin</literal>, i.e., Mac OS X
|
||||
on Intel CPUs.</para></listitem>
|
||||
|
||||
<listitem><para><literal>powerpc-linux</literal>.</para></listitem>
|
||||
|
||||
<listitem><para><literal>x86_64-linux</literal>, i.e., Linux on
|
||||
64-bit AMD/Intel CPUs. Unlike <literal>i686-linux</literal>,
|
||||
this platform doesn’t have a pure <literal>stdenv</literal>
|
||||
yet.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
</listitem>
|
||||
|
||||
<listitem><para>The default compiler is now GCC 4.1.1.</para></listitem>
|
||||
|
||||
<listitem><para>X11 updated to X.org’s X11R7.1.</para></listitem>
|
||||
|
||||
<listitem><para>Notable new packages:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Opera.</para></listitem>
|
||||
|
||||
<listitem><para>Microsoft Visual C++ 2005 Express Edition and
|
||||
the Windows SDK.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
In total there are now around 809 packages in Nixpkgs.</para>
|
||||
|
||||
</listitem>
|
||||
|
||||
|
||||
<listitem><para>It is now <emphasis>much</emphasis> easier to
|
||||
override the default C compiler and other tools in
|
||||
<literal>stdenv</literal> for specific packages.
|
||||
<filename>all-packages.nix</filename> provides two utility
|
||||
functions for this purpose: <function>overrideGCC</function> and
|
||||
<function>overrideInStdenv</function>. Both take a
|
||||
<literal>stdenv</literal> and return an augmented
|
||||
<literal>stdenv</literal>; the formed changes the C compiler, and
|
||||
the latter adds additional packages to the front of
|
||||
<literal>stdenv</literal>’s initial <envar>PATH</envar>, allowing
|
||||
tools to be overriden.</para>
|
||||
|
||||
<para>For instance, the package <varname>strategoxt</varname>
|
||||
doesn’t build with the GNU Make in <literal>stdenv</literal>
|
||||
(version 3.81), so we call it with an augmented
|
||||
<literal>stdenv</literal> that uses GNU Make 3.80:
|
||||
|
||||
<programlisting>
|
||||
strategoxt = (import ../development/compilers/strategoxt) {
|
||||
inherit fetchurl pkgconfig sdf aterm;
|
||||
stdenv = overrideInStdenv stdenv [gnumake380];
|
||||
};
|
||||
|
||||
gnumake380 = <replaceable>...</replaceable>;</programlisting>
|
||||
|
||||
Likewise, there are many packages that don’t compile with the
|
||||
default GCC (4.1.1), but that’s easily fixed:
|
||||
|
||||
<programlisting>
|
||||
exult = import ../games/exult {
|
||||
inherit fetchurl SDL SDL_mixer zlib libpng unzip;
|
||||
stdenv = overrideGCC stdenv gcc34;
|
||||
};</programlisting>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
|
||||
<listitem><para>It has also become much easier to experiment with
|
||||
changes to the <literal>stdenv</literal> setup script (which notably
|
||||
contains the generic builder). Since edits to
|
||||
<filename>pkgs/stdenv/generic/setup.sh</filename> trigger a rebuild
|
||||
of <emphasis>everything</emphasis>, this was formerly quite painful.
|
||||
But now <literal>stdenv</literal> contains a function to
|
||||
“regenerate” <literal>stdenv</literal> with a different setup
|
||||
script, allowing the use of a different setup script for specific
|
||||
packages:
|
||||
|
||||
<programlisting>
|
||||
pkg = import <replaceable>...</replaceable> {
|
||||
stdenv = stdenv.regenerate ./my-setup.sh;
|
||||
<replaceable>...</replaceable>
|
||||
}</programlisting>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
|
||||
<listitem><para>Packages can now have a human-readable
|
||||
<emphasis>description</emphasis> field. Package descriptions are
|
||||
shown by <literal>nix-env -qa --description</literal>. In addition,
|
||||
they’re shown on the Nixpkgs release page. A description can be
|
||||
added to a package as follows:
|
||||
|
||||
<programlisting>
|
||||
stdenv.mkDerivation {
|
||||
name = "exult-1.2";
|
||||
<replaceable>...</replaceable>
|
||||
meta = {
|
||||
description = "A reimplementation of the Ultima VII game engine";
|
||||
};
|
||||
}</programlisting>
|
||||
|
||||
The <varname>meta</varname> attribute is not passed to the builder,
|
||||
so changes to the description do not trigger a rebuild. Additional
|
||||
<varname>meta</varname> attributes may be defined in the future
|
||||
(such as the URL of the package’s homepage, the license,
|
||||
etc.).</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
|
||||
<para>The following people contributed to this release:
|
||||
|
||||
Andres Löh,
|
||||
Armijn Hemel,
|
||||
Christof Douma,
|
||||
Eelco Dolstra,
|
||||
Eelco Visser,
|
||||
Mart Kolthof,
|
||||
Martin Bravenboer,
|
||||
Merijn de Jonge,
|
||||
Rob Vermaas and
|
||||
Roy van den Broek.
|
||||
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Release 0.9 (January 31, 2006)</title>
|
||||
|
||||
<para>There have been zillions of changes since the last release of
|
||||
Nixpkgs. Many packages have been added or updated. The following are
|
||||
some of the more notable changes:</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Distribution files have been moved to <link
|
||||
xlink:href="http://nix.cs.uu.nl/" />.</para></listitem>
|
||||
|
||||
<listitem><para>The C library on Linux, Glibc, has been updated to
|
||||
version 2.3.6.</para></listitem>
|
||||
|
||||
<listitem><para>The default compiler is now GCC 3.4.5. GCC 4.0.2 is
|
||||
also available.</para></listitem>
|
||||
|
||||
<listitem><para>The old, unofficial Xlibs has been replaced by the
|
||||
official modularised X11 distribution from X.org, i.e., X11R7.0.
|
||||
X11R7.0 consists of 287 (!) packages, all of which are in Nixpkgs
|
||||
though not all have been tested. It is now possible to build a
|
||||
working X server (previously we only had X client libraries). We
|
||||
use a fully Nixified X server on NixOS.</para></listitem>
|
||||
|
||||
<listitem><para>The Sun JDK 5 has been purified, i.e., it doesn’t
|
||||
require any non-Nix components such as
|
||||
<filename>/lib/ld-linux.so.2</filename>. This means that Java
|
||||
applications such as Eclipse and Azureus can run on
|
||||
NixOS.</para></listitem>
|
||||
|
||||
<listitem><para>Hardware-accelerated OpenGL support, used by games
|
||||
like Quake 3 (which is now built from source).</para></listitem>
|
||||
|
||||
<listitem><para>Improved support for FreeBSD on
|
||||
x86.</para></listitem>
|
||||
|
||||
<listitem><para>Improved Haskell support; e.g., the GHC build is now
|
||||
pure.</para></listitem>
|
||||
|
||||
<listitem><para>Some support for cross-compilation: cross-compiling
|
||||
builds of GCC and Binutils, and cross-compiled builds of the C
|
||||
library uClibc.</para></listitem>
|
||||
|
||||
<listitem><para>Notable new packages:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>teTeX, including support for building LaTeX
|
||||
documents using Nix (with automatic dependency
|
||||
determination).</para></listitem>
|
||||
|
||||
<listitem><para>Ruby.</para></listitem>
|
||||
|
||||
<listitem><para>System-level packages to support NixOS,
|
||||
e.g. Grub, GNU <literal>parted</literal> and so
|
||||
on.</para></listitem>
|
||||
|
||||
<listitem><para><literal>ecj</literal>, the Eclipse Compiler for
|
||||
Java, so we finally have a freely distributable compiler that
|
||||
supports Java 5.0.</para></listitem>
|
||||
|
||||
<listitem><para><literal>php</literal>.</para></listitem>
|
||||
|
||||
<listitem><para>The GIMP.</para></listitem>
|
||||
|
||||
<listitem><para>Inkscape.</para></listitem>
|
||||
|
||||
<listitem><para>GAIM.</para></listitem>
|
||||
|
||||
<listitem><para><literal>kdelibs</literal>. This allows us to
|
||||
add KDE-based packages (such as
|
||||
<literal>kcachegrind</literal>).</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
<para>The following people contributed to this release:
|
||||
|
||||
Andres Löh,
|
||||
Armijn Hemel,
|
||||
Bogdan Dumitriu,
|
||||
Christof Douma,
|
||||
Eelco Dolstra,
|
||||
Eelco Visser,
|
||||
Mart Kolthof,
|
||||
Martin Bravenboer,
|
||||
Rob Vermaas and
|
||||
Roy van den Broek.
|
||||
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Release 0.8 (April 11, 2005)</title>
|
||||
|
||||
<para>This release is mostly to remain synchronised with the changed
|
||||
hashing scheme in Nix 0.8.</para>
|
||||
|
||||
<para>Notable updates:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Adobe Reader 7.0</para></listitem>
|
||||
|
||||
<listitem><para>Various security updates (zlib 1.2.2, etc.)</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section><title>Release 0.7 (March 14, 2005)</title>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
|
||||
<para>The bootstrap process for the standard build
|
||||
environment on Linux (stdenv-linux) has been improved. It is no
|
||||
longer dependent in its initial bootstrap stages on the system
|
||||
Glibc, GCC, and other tools. Rather, Nixpkgs contains a statically
|
||||
linked bash and curl, and uses that to download other statically
|
||||
linked tools. These are then used to build a Glibc and dynamically
|
||||
linked versions of all other tools.</para>
|
||||
|
||||
<para>This change also makes the bootstrap process faster. For
|
||||
instance, GCC is built only once instead of three times.</para>
|
||||
|
||||
<para>(Contributed by Armijn Hemel.)</para>
|
||||
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
||||
<para>Tarballs used by Nixpkgs are now obtained from the same server
|
||||
that hosts Nixpkgs (<link
|
||||
xlink:href="http://catamaran.labs.cs.uu.nl/" />). This reduces the
|
||||
risk of packages being unbuildable due to moved or deleted files on
|
||||
various servers.</para>
|
||||
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
||||
<para>There now is a generic mechanism for building Perl modules.
|
||||
See the various Perl modules defined in
|
||||
pkgs/system/all-packages-generic.nix.</para>
|
||||
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
||||
<para>Notable new packages:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Qt 3</para></listitem>
|
||||
<listitem><para>MySQL</para></listitem>
|
||||
<listitem><para>MythTV</para></listitem>
|
||||
<listitem><para>Mono</para></listitem>
|
||||
<listitem><para>MonoDevelop (alpha)</para></listitem>
|
||||
<listitem><para>Xine</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
||||
<para>Notable updates:
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>GCC 3.4.3</para></listitem>
|
||||
<listitem><para>Glibc 2.3.4</para></listitem>
|
||||
<listitem><para>GTK 2.6</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
</article>
|
||||
283
doc/style.css
283
doc/style.css
@@ -1,283 +0,0 @@
|
||||
/* Copied from http://bakefile.sourceforge.net/, which appears
|
||||
licensed under the GNU GPL. */
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Basic headers and text:
|
||||
***************************************************************************/
|
||||
|
||||
body
|
||||
{
|
||||
font-family: sans-serif;
|
||||
background: white;
|
||||
margin: 2em 1em 2em 1em;
|
||||
}
|
||||
|
||||
h1,h2,h3
|
||||
{
|
||||
color: #005aa0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1 /* title */
|
||||
{
|
||||
font-size: 200%;
|
||||
}
|
||||
|
||||
h2 /* chapters, appendices, subtitle */
|
||||
{
|
||||
font-size: 180%;
|
||||
}
|
||||
|
||||
/* Extra space between chapters, appendices. */
|
||||
div.chapter > div.titlepage h2, div.appendix > div.titlepage h2
|
||||
{
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
|
||||
div.section > div.titlepage h2 /* sections */
|
||||
{
|
||||
font-size: 150%;
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
|
||||
h3 /* subsections */
|
||||
{
|
||||
font-size: 125%;
|
||||
}
|
||||
|
||||
div.appendix h3
|
||||
{
|
||||
font-size: 150%;
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
|
||||
div.refnamediv h2, div.refsynopsisdiv h2, div.refsection h2 /* refentry parts */
|
||||
{
|
||||
margin-top: 1.4em;
|
||||
font-size: 125%;
|
||||
}
|
||||
|
||||
div.refsection h3
|
||||
{
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Examples:
|
||||
***************************************************************************/
|
||||
|
||||
div.example
|
||||
{
|
||||
border: 1px solid #6185a0;
|
||||
padding: 6px 6px;
|
||||
margin-left: 1.5em;
|
||||
margin-right: 1.5em;
|
||||
background: #f4f4f8;
|
||||
}
|
||||
|
||||
div.example p.title
|
||||
{
|
||||
margin-top: 0em;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Screen dumps:
|
||||
***************************************************************************/
|
||||
|
||||
pre.screen, pre.programlisting
|
||||
{
|
||||
border: 1px solid #6185a0;
|
||||
padding: 3px 3px;
|
||||
margin-left: 1.5em;
|
||||
margin-right: 1.5em;
|
||||
color: #600000;
|
||||
background: #f4f4f8;
|
||||
font-family: monospace;
|
||||
/* font-size: 90%; */
|
||||
}
|
||||
|
||||
div.example pre.programlisting
|
||||
{
|
||||
border: 0px;
|
||||
padding: 0 0;
|
||||
margin: 0 0 0 0;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Notes, warnings etc:
|
||||
***************************************************************************/
|
||||
|
||||
.note, .warning
|
||||
{
|
||||
border: 1px solid #6185a0;
|
||||
padding: 3px 3px;
|
||||
margin-left: 1.5em;
|
||||
margin-right: 1.5em;
|
||||
margin-bottom: 1em;
|
||||
padding: 0.3em 0.3em 0.3em 0.3em;
|
||||
background: #fffff5;
|
||||
}
|
||||
|
||||
div.note, div.warning
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.note h3, div.warning h3
|
||||
{
|
||||
color: red;
|
||||
font-size: 100%;
|
||||
// margin: 0 0 0 0;
|
||||
padding-right: 0.5em;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
div.note p, div.warning p
|
||||
{
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
div.note h3 + p, div.warning h3 + p
|
||||
{
|
||||
display: inline;
|
||||
}
|
||||
|
||||
div.note h3
|
||||
{
|
||||
color: blue;
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
div.navfooter *
|
||||
{
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Links colors and highlighting:
|
||||
***************************************************************************/
|
||||
|
||||
a:link { color: #0048b3; }
|
||||
a:visited { color: #002a6a; }
|
||||
a:hover { background: #ffffcd; }
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Table of contents:
|
||||
***************************************************************************/
|
||||
|
||||
.toc
|
||||
{
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Special elements:
|
||||
***************************************************************************/
|
||||
|
||||
tt, code
|
||||
{
|
||||
color: #400000;
|
||||
}
|
||||
|
||||
.term
|
||||
{
|
||||
font-weight: bold;
|
||||
|
||||
}
|
||||
|
||||
div.variablelist dd p, div.glosslist dd p
|
||||
{
|
||||
margin-top: 0em;
|
||||
}
|
||||
|
||||
div.variablelist dd, div.glosslist dd
|
||||
{
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
div.glosslist dt
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.default
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.availability
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.varname
|
||||
{
|
||||
color: #400000;
|
||||
}
|
||||
|
||||
|
||||
div.informaltable table
|
||||
{
|
||||
border: 1px solid #6185a0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.informaltable td
|
||||
{
|
||||
border: 0;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
div.informaltable td.default
|
||||
{
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.informaltable th
|
||||
{
|
||||
text-align: left;
|
||||
color: #005aa0;
|
||||
border: 0;
|
||||
padding: 5px;
|
||||
background: #fffff5;
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
td.varname, td.tagname, td.paramname
|
||||
{
|
||||
font-weight: bold;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.epigraph
|
||||
{
|
||||
font-style: italic;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
table.productionset table.productionset
|
||||
{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
strong.command
|
||||
{
|
||||
// font-family: monospace;
|
||||
// font-style: italic;
|
||||
// font-weight: normal;
|
||||
color: #400000;
|
||||
}
|
||||
|
||||
div.calloutlist td
|
||||
{
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
Some conventions:
|
||||
|
||||
* 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
|
||||
}:
|
||||
@@ -1,31 +0,0 @@
|
||||
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.
|
||||
@@ -1,331 +0,0 @@
|
||||
Setting up a cross compiler with Nix
|
||||
|
||||
"Cross compilation" means compiling a program on one machine for another
|
||||
type of machine. A typical use of cross compilation is to compile programs
|
||||
for embedded devices. These devices often don't have the computing power
|
||||
and memory to compile programs natively.
|
||||
|
||||
For a fully working cross compiler the following are needed:
|
||||
|
||||
* cross binutils: assembler, archiver, linker, etcetera that understand
|
||||
the format of the target system
|
||||
|
||||
* cross compiler: a compiler that can generate binary code and object files
|
||||
for the target platform
|
||||
|
||||
* cross C library: a library to link object files with to create fully
|
||||
functional programs
|
||||
|
||||
Cross compilers are difficult to set up. A lot of people report that they
|
||||
cannot succeed in building a cross toolchain successfully. The answers
|
||||
usually consist of "download this pre-built toolchain", which is equally
|
||||
unhelpful.
|
||||
|
||||
A toolchain is set up in five steps:
|
||||
|
||||
1. build binutils to that can run on the host platform, but generate code
|
||||
for the target platform
|
||||
|
||||
2. build Linux kernel headers for the target platform
|
||||
|
||||
3. build a minimal C only version of GCC, that can run on the host platform
|
||||
and generate code for the target platform
|
||||
|
||||
4. build a C library for the target platform. This includes the dynamic
|
||||
linker, C library, etc.
|
||||
|
||||
5. build a full GCC
|
||||
|
||||
****
|
||||
NB:
|
||||
|
||||
Keep in mind that many programs are not very well suited for cross
|
||||
compilation. Either they are not intended to run on other platforms,
|
||||
because the code is highly platform specific, or the configuration proces
|
||||
is not written with cross compilation in mind.
|
||||
|
||||
Nix will not solve these problems for you!
|
||||
***
|
||||
|
||||
This document describes to set up a cross compiler to generate code for
|
||||
arm-linux with uClibc and runs on i686-linux. The "stdenv" used is the
|
||||
default from the standard Nix packages collection.
|
||||
|
||||
Step 1: build binutils for arm-linux in the stdenv for i686-linux
|
||||
|
||||
---
|
||||
{stdenv, fetchurl, noSysDirs}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "binutils-2.16.1-arm";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://ftp.nluug.nl/gnu/binutils/binutils-2.16.1.tar.bz2;
|
||||
md5 = "6a9d529efb285071dad10e1f3d2b2967";
|
||||
};
|
||||
inherit noSysDirs;
|
||||
configureFlags = "--target=arm-linux";
|
||||
}
|
||||
---
|
||||
|
||||
This will compile binutils that will run on i686-linux, but knows the
|
||||
format used by arm-linux.
|
||||
|
||||
Step 2: build kernel headers for the target architecture
|
||||
|
||||
default.nix for kernel-headers-arm:
|
||||
|
||||
---
|
||||
{stdenv, fetchurl}:
|
||||
|
||||
assert stdenv.system == "i686-linux";
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "linux-headers-2.6.13.4-arm";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.4.tar.bz2;
|
||||
md5 = "94768d7eef90a9d8174639b2a7d3f58d";
|
||||
};
|
||||
}
|
||||
---
|
||||
|
||||
builder.sh for kernel-headers-arm:
|
||||
|
||||
---
|
||||
source $stdenv/setup
|
||||
|
||||
|
||||
buildPhase() {
|
||||
make include/linux/version.h
|
||||
}
|
||||
|
||||
buildPhase=buildPhase
|
||||
|
||||
|
||||
installPhase() {
|
||||
mkdir $out
|
||||
mkdir $out/include
|
||||
#cd $out/include
|
||||
#ln -s asm-arm asm
|
||||
make include/asm ARCH=arm
|
||||
cp -prvd include/linux include/asm include/asm-arm include/asm-generic $out/include
|
||||
echo -n > $out/include/linux/autoconf.h
|
||||
}
|
||||
|
||||
installPhase=installPhase
|
||||
|
||||
|
||||
genericBuild
|
||||
---
|
||||
|
||||
Step 3: build a minimal GCC
|
||||
|
||||
Extra/different parameters include the target platform and the kernel
|
||||
headers argument (this needs a major cleanup, as well as the name, it
|
||||
needs to be different!). Profiled compilers are disabled. The tarball
|
||||
used here is just gcc-core. For some reason it doesn't install nicely
|
||||
if the whole tarball is used (or is this some braino on my side? -- AH).
|
||||
|
||||
Only C is used, because for other languages (such as C++) extra libraries
|
||||
need to be compiled, for which libraries compiled for the target system
|
||||
are needed.
|
||||
|
||||
There is a bit of evilness going on. The cross compiled utilities need
|
||||
to be either copied to or be linked from the output tree of the compiler.
|
||||
(Is this really true? Back this up with arguments! -- AH)
|
||||
|
||||
Symbolic links are not something we want inside the Nix store.
|
||||
|
||||
---
|
||||
{ stdenv, fetchurl, noSysDirs
|
||||
, langC ? true, langCC ? true, langF77 ? false
|
||||
, profiledCompiler ? false
|
||||
, binutilsArm
|
||||
, kernelHeadersArm
|
||||
}:
|
||||
|
||||
assert langC;
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "gcc-4.0.2-arm";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = ftp://ftp.nluug.nl/pub/gnu/gcc/gcc-4.0.2/gcc-core-4.0.2.tar.bz2;
|
||||
md5 = "f7781398ada62ba255486673e6274b26";
|
||||
#url = ftp://ftp.nluug.nl/pub/gnu/gcc/gcc-4.0.2/gcc-4.0.2.tar.bz2;
|
||||
#md5 = "a659b8388cac9db2b13e056e574ceeb0";
|
||||
};
|
||||
# !!! apply only if noSysDirs is set
|
||||
patches = [./no-sys-dirs.patch ./gcc-inhibit.patch];
|
||||
inherit noSysDirs langC langCC langF77 profiledCompiler;
|
||||
buildInputs = [binutilsArm];
|
||||
inherit kernelHeadersArm binutilsArm;
|
||||
platform = "arm-linux";
|
||||
}
|
||||
---
|
||||
|
||||
The builder.sh for a cross-compiler. Note that the binutils are prefixed
|
||||
with the architecture name, so arm-linux-ld instead of ld, etc. This is
|
||||
necessary because when we cross-compile a lot of programs look for these
|
||||
tools with these specific names. The standard gcc-wrapper does not take this
|
||||
into account yet.
|
||||
|
||||
---
|
||||
source $stdenv/setup
|
||||
|
||||
|
||||
export NIX_FIXINC_DUMMY=$NIX_BUILD_TOP/dummy
|
||||
mkdir $NIX_FIXINC_DUMMY
|
||||
|
||||
|
||||
if test "$noSysDirs" = "1"; then
|
||||
|
||||
if test "$noSysDirs" = "1"; then
|
||||
# Figure out what extra flags to pass to the gcc compilers
|
||||
# being generated to make sure that they use our glibc.
|
||||
if test -e $NIX_GCC/nix-support/orig-glibc; then
|
||||
glibc=$(cat $NIX_GCC/nix-support/orig-glibc)
|
||||
# Ugh. Copied from gcc-wrapper/builder.sh. We can't just
|
||||
# source in $NIX_GCC/nix-support/add-flags, since that
|
||||
# would cause *this* GCC to be linked against the
|
||||
# *previous* GCC. Need some more modularity there.
|
||||
extraCFlags="-B$glibc/lib -isystem $glibc/include"
|
||||
extraLDFlags="-B$glibc/lib -L$glibc/lib -Wl,-s \
|
||||
-Wl,-dynamic-linker,$glibc/lib/ld-linux.so.2"
|
||||
|
||||
# Oh, what a hack. I should be shot for this.
|
||||
# In stage 1, we should link against the previous GCC, but
|
||||
# not afterwards. Otherwise we retain a dependency.
|
||||
# However, ld-wrapper, which adds the linker flags for the
|
||||
# previous GCC, is also used in stage 2/3. We can prevent
|
||||
# it from adding them by NIX_GLIBC_FLAGS_SET, but then
|
||||
# gcc-wrapper will also not add them, thereby causing
|
||||
# stage 1 to fail. So we use a trick to only set the
|
||||
# flags in gcc-wrapper.
|
||||
hook=$(pwd)/ld-wrapper-hook
|
||||
echo "NIX_GLIBC_FLAGS_SET=1" > $hook
|
||||
export NIX_LD_WRAPPER_START_HOOK=$hook
|
||||
fi
|
||||
|
||||
export NIX_EXTRA_CFLAGS=$extraCFlags
|
||||
export NIX_EXTRA_LDFLAGS=$extraLDFlags
|
||||
export CFLAGS=$extraCFlags
|
||||
export CXXFLAGS=$extraCFlags
|
||||
export LDFLAGS=$extraLDFlags
|
||||
fi
|
||||
|
||||
else
|
||||
patches=""
|
||||
fi
|
||||
|
||||
|
||||
preConfigure=preConfigure
|
||||
preConfigure() {
|
||||
|
||||
# Determine the frontends to build.
|
||||
langs="c"
|
||||
if test -n "$langCC"; then
|
||||
langs="$langs,c++"
|
||||
fi
|
||||
if test -n "$langF77"; then
|
||||
langs="$langs,f77"
|
||||
fi
|
||||
|
||||
# Cross compiler evilness
|
||||
ensureDir $out
|
||||
ensureDir $out/arm-linux
|
||||
ensureDir $out/arm-linux/bin
|
||||
ln -s $binutilsArm/arm-linux/bin/as $out/arm-linux/bin/as
|
||||
ln -s $binutilsArm/arm-linux/bin/ld $out/arm-linux/bin/ld
|
||||
ln -s $binutilsArm/arm-linux/bin/ar $out/arm-linux/bin/ar
|
||||
ln -s $binutilsArm/arm-linux/bin/ranlib $out/arm-linux/bin/ranlib
|
||||
|
||||
# Perform the build in a different directory.
|
||||
mkdir ../build
|
||||
cd ../build
|
||||
|
||||
configureScript=../$sourceRoot/configure
|
||||
configureFlags="--enable-languages=$langs --target=$platform --disable-threads --disable-libmudflap --disable-shared --with-headers=$kernelHeadersArm/include --disable-multilib"
|
||||
}
|
||||
|
||||
|
||||
postInstall=postInstall
|
||||
postInstall() {
|
||||
# Remove precompiled headers for now. They are very big and
|
||||
# probably not very useful yet.
|
||||
find $out/include -name "*.gch" -exec rm -rf {} \; -prune
|
||||
|
||||
# Remove `fixincl' to prevent a retained dependency on the
|
||||
# previous gcc.
|
||||
rm -rf $out/libexec/gcc/*/*/install-tools
|
||||
}
|
||||
|
||||
|
||||
#if test -z "$profiledCompiler"; then
|
||||
#makeFlags="bootstrap"
|
||||
#else
|
||||
#makeFlags="profiledbootstrap"
|
||||
#fi
|
||||
|
||||
genericBuild
|
||||
---
|
||||
|
||||
Step 4: build a C library for the target platform.
|
||||
|
||||
The previous steps are enough to compile a C library. In our case we take
|
||||
uClibc. It's intended to be a small sized replacement for glibc. It is widely
|
||||
used in embedded environments.
|
||||
|
||||
...
|
||||
|
||||
Step 5: Build a compiler to link with the newly built C library.
|
||||
|
||||
...
|
||||
|
||||
If we restrict the compiler to just C programs it is relatively easy,
|
||||
since we only need to wrap the GCC we built in the previous step with all
|
||||
the right tools and the right C library. Successfully compiled programs with
|
||||
this compiler and verified to be working on a HP Jornada 820 running Linux
|
||||
are "patch", "make" and "wget".
|
||||
|
||||
If we want to build C++ programs it gets a lot more difficult. GCC has a
|
||||
three step compilation proces. In the first step a simple compiler, called
|
||||
xgcc, that can compile only C programs is built. With that compiler it
|
||||
compiles itself two more times: one time to build a full compiler, and another
|
||||
time to build a full compiler once again with the freshly built compiler from
|
||||
step 2. In the second and third step support for C++ is compiled, if this
|
||||
is configured.
|
||||
|
||||
One of the libraries that has to be built for C++ support step is libstdc++.
|
||||
This library uses xgcc, even when cross compiling, since libstdc++ has to be
|
||||
compiled for arm-linux.
|
||||
|
||||
One of the compiler flags that GCC uses for this compiler is called X_CFLAGS.
|
||||
This is used by the Nix build process to set the dynamic linker, glibc
|
||||
in the case of i686-linux using the default Nix packages collection.
|
||||
|
||||
Obiously, since we need to compile libstc++ for arm-linux with uClibc linking
|
||||
will not be done correctly: you can't link object files built for arm-linux
|
||||
with a glibc built for i686-linux.
|
||||
|
||||
Setting X_CFLAGS to use the uClibc libraries and dynamic linker will fail
|
||||
too. Earlier on in the build process these flags are used to compile important
|
||||
files like libgcc.a by the host system gcc, which does need to be linked
|
||||
to glibc. To make this work correctly you will need to carefully juggle
|
||||
with compilation flags. This is still work in progress for Nix.
|
||||
|
||||
|
||||
---
|
||||
|
||||
After succesfully completing the whole toolchain you can start building
|
||||
packages with the newly built tools. To make everything build correctly
|
||||
you will need a stdenv for your target platform. Setting up this platform
|
||||
will take some effort. Right now there is a very experimental setup for
|
||||
arm-linux, which needs to be cleaned up before it is production ready.
|
||||
|
||||
Please note that many packages are not well suited for cross-compilation.
|
||||
Even though the package itself might be very well portable often the
|
||||
buildscripts are not. One thing that we have seen that causes frequent
|
||||
build failures is the use of the LD variable. This is often set to 'ld'
|
||||
and not $(CROSS)-ld.
|
||||
@@ -1,35 +0,0 @@
|
||||
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.
|
||||
@@ -1,27 +0,0 @@
|
||||
Adding uClibc support for a new platform
|
||||
|
||||
Sometimes you want to cross-compile to another architecture, for example an
|
||||
embedded devices. For embedded devices the uClibc C library is popular.
|
||||
In Nixpkgs there is support for uClibc for several architectures but not
|
||||
everything is supported.
|
||||
|
||||
Adding support is not very difficult,
|
||||
|
||||
* Add your architecture to the buildfiles in
|
||||
$nixpkgs/development/tools/misc/binutils-cross
|
||||
|
||||
* Add your architecture to the buildfiles in
|
||||
$nixpkgs/development/compilers/gcc-4.0-cross
|
||||
|
||||
* Add your architecture to the buildfiles in
|
||||
$nixpkgs/os-specific/linux/kernel-headers-cross
|
||||
|
||||
* Add your architecture to the buildfiles in
|
||||
$nixpkgs/development/uclibc
|
||||
|
||||
In the latter directory you will also need a configuration file for uClibc.
|
||||
You can make these by unpacking the uClibc sources and run a "make menuconfig".
|
||||
In the configuration a few things need to be adapted:
|
||||
|
||||
- kernel sources -> need to point at our own kernel headers
|
||||
- install -> needs to point at $out
|
||||
@@ -1,83 +0,0 @@
|
||||
#! /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|nix.cs.uu.nl|.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,22 +0,0 @@
|
||||
#! /usr/bin/perl -w
|
||||
|
||||
use strict;
|
||||
|
||||
my %map;
|
||||
open LIST1, "<$ARGV[0]" or die;
|
||||
while (<LIST1>) {
|
||||
/^(\S+)\s+(.*)$/;
|
||||
$map{$1} = $2;
|
||||
}
|
||||
|
||||
open LIST1, "<$ARGV[1]" or die;
|
||||
while (<LIST1>) {
|
||||
/^(\S+)\s+(.*)$/;
|
||||
if (!defined $map{$1}) {
|
||||
print STDERR "missing file: $2\n";
|
||||
next;
|
||||
}
|
||||
print "$2\n";
|
||||
print "$map{$1}\n";
|
||||
}
|
||||
|
||||
@@ -1,146 +0,0 @@
|
||||
/* Tool to sort attribute sets. Primarily useful for keeping
|
||||
all-packages.nix tidy.
|
||||
|
||||
To compile:
|
||||
|
||||
$ strc -i ../../maintainers/scripts/sort-attrs.str -la stratego-lib
|
||||
|
||||
Typical invocation:
|
||||
|
||||
$ sglr -m -p ~/Dev/nix/src/libexpr/nix.tbl -i all-packages.nix \
|
||||
| implode-asfix --lex \
|
||||
| ../../maintainers/scripts/sort-attrs \
|
||||
| asfix-yield
|
||||
*/
|
||||
|
||||
module sort-attrs
|
||||
|
||||
imports
|
||||
libstratego-lib
|
||||
libstratego-sglr
|
||||
|
||||
|
||||
strategies
|
||||
|
||||
no-wsp = !appl(prod([], cf(opt(layout())), no-attrs()), [])
|
||||
|
||||
|
||||
rules
|
||||
|
||||
list-sep(s): [] -> []
|
||||
list-sep(s): [x | xs] -> [[x | before] | <list-sep(s)> [split | after]]
|
||||
where
|
||||
<split-fetch-keep(s)> xs => (before, split, after)
|
||||
list-sep(s): [x | xs] -> [[x | xs]]
|
||||
where
|
||||
<not(split-fetch-keep(s))> xs
|
||||
|
||||
list-sep-end(s): xs -> [<conc> (before, [split]) | <list-sep-end(s)> after]
|
||||
where
|
||||
<split-fetch-keep(s)> xs => (before, split, after)
|
||||
list-sep-end(s): xs -> [xs]
|
||||
where
|
||||
<not(split-fetch-keep(s))> xs
|
||||
|
||||
|
||||
sort-attrs:
|
||||
appl(p@prod(_, _, attrs([term(cons("Attrs"))])),
|
||||
[ lit("{")
|
||||
, ws1
|
||||
, appl(p2@list(cf(iter-star(sort("Bind")))), attrs)
|
||||
, ws2
|
||||
, lit("}")
|
||||
]
|
||||
) ->
|
||||
appl(p, [lit("{"), <no-wsp>, appl(p2, <concat> attrs'), ws2, lit("}")])
|
||||
where
|
||||
<debug> "found it";
|
||||
<attach-wsp> [ws1 | attrs] => withWSP;
|
||||
<list-sep(starts-section)> withWSP => groups;
|
||||
<length; debug> groups;
|
||||
<map({x', x'', x''', xs', starts, starts': \[x | xs] -> [x''' | xs']
|
||||
where
|
||||
<remove-section-start> x => (x', starts);
|
||||
<map(regularise-empty-lines); if !starts; debug; sortable-section; debug then qsort(compare-attrs) else id end> [x' | xs] => [x'' | xs'];
|
||||
<[] <+ \x -> ["\n\n\n" | x]\ > starts => starts';
|
||||
<prepend-layout> (starts', x'') => x'''
|
||||
\ })> groups => attrs';
|
||||
<debug> "did it"
|
||||
|
||||
|
||||
attach-wsp: [a, b | cs] -> [(a, b) | <attach-wsp> cs]
|
||||
attach-wsp: [] -> []
|
||||
|
||||
|
||||
strategies
|
||||
|
||||
starts-section =
|
||||
?x@(appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs), attr);
|
||||
<implode-string; is-substring(!"###")> cs;
|
||||
!x
|
||||
|
||||
rules
|
||||
|
||||
|
||||
sortable-section = ?[s]; !s; explode-string; not(fetch({x: ?x; !(x, 97); geq}))
|
||||
|
||||
|
||||
remove-section-start:
|
||||
(appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs), attr) ->
|
||||
((appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs'), attr), starts)
|
||||
where
|
||||
!cs;
|
||||
list-sep-end(?10); // separate into lines, keeping the \n
|
||||
map(implode-string);
|
||||
partition(where(is-substring(!"###"))) => (starts, rest);
|
||||
<map(explode-string); concat> rest => cs'
|
||||
|
||||
|
||||
regularise-empty-lines:
|
||||
(appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs), attr) ->
|
||||
(appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs''), attr)
|
||||
where
|
||||
// separate into lines, keeping the \n
|
||||
// last whitespace is significant, keep
|
||||
<list-sep-end(?10); split-init-last> cs => (init, last);
|
||||
<regularise-empty-lines'> init => cs'; // remove whitespace-only lines
|
||||
<concat> [<explode-string> "\n\n", <concat> cs', last] => cs'' // add one empty line
|
||||
|
||||
/* Dirty hack: *do* keep the first empty line following a non-empty line. !!! order matters */
|
||||
regularise-empty-lines': [] -> []
|
||||
|
||||
regularise-empty-lines': [x, y | xs] -> [x, y | <regularise-empty-lines'> xs]
|
||||
where
|
||||
<fetch-elem(not(?10 <+ ?32))> x;
|
||||
<not(fetch-elem(not(?10 <+ ?32)))> y
|
||||
|
||||
regularise-empty-lines': [x | xs] -> [x | <regularise-empty-lines'> xs]
|
||||
where <fetch-elem(not(?10 <+ ?32))> x
|
||||
|
||||
regularise-empty-lines': [x | xs] -> <regularise-empty-lines'> xs
|
||||
where <not(fetch-elem(not(?10 <+ ?32)))> x
|
||||
|
||||
|
||||
prepend-layout:
|
||||
(text, (appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs), attr)) ->
|
||||
(appl(prod([cf(layout())], cf(opt(layout())), no-attrs()), cs''), attr)
|
||||
where
|
||||
<implode-string> cs => cs';
|
||||
<conc-strings; explode-string> (<concat-strings> text, cs') => cs''
|
||||
|
||||
|
||||
compare-attrs:
|
||||
x@
|
||||
( (_, appl(p1@prod(_, _, attrs([term(cons("Bind"))])), [id1 | xs1]))
|
||||
, (_, appl(p2@prod(_, _, attrs([term(cons("Bind"))])), [id2 | xs2]))
|
||||
)
|
||||
-> x
|
||||
where
|
||||
<string-lt> (id1, id2)
|
||||
|
||||
|
||||
strategies
|
||||
|
||||
main = io-wrap(
|
||||
oncetd(sort-attrs)
|
||||
)
|
||||
@@ -1,6 +1,3 @@
|
||||
*** 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:
|
||||
|
||||
@@ -17,6 +14,22 @@
|
||||
...
|
||||
|
||||
|
||||
* Subtle problems can occur if the Nix store directory or one of its
|
||||
parents is a symlink. E.g., purity checks can barf:
|
||||
|
||||
impure path `/data/nix/store/099cd9aee7d056a9922fd6dd116a3f5c-gcc-3.3.3/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.3.3/crtbegin.o' used in link
|
||||
|
||||
(This happened because /nix was a symlink to /data/nix.) Maybe we
|
||||
should disallow this entirely, since, exactly because it is
|
||||
perfectly legal for a builder to expand a symlink, we can end up
|
||||
with derivates referring to paths that existed in the build
|
||||
environment but not in the target environment.
|
||||
|
||||
Disallowing this can be highly inconvenient, since it makes it
|
||||
harder to move the Nix store to a different file system. (On Linux,
|
||||
`bind' mounts can help here.)
|
||||
|
||||
|
||||
* 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
|
||||
@@ -34,16 +47,4 @@ 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.
|
||||
(moved to include/X11; should edit include/Makefile.am)
|
||||
@@ -53,9 +53,6 @@ ELSE IF it's a TOOL (or set of):
|
||||
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
|
||||
|
||||
@@ -99,7 +96,7 @@ ELSE IF it's an APPLICATION:
|
||||
ELSE
|
||||
./applications/misc
|
||||
|
||||
ELSE IF it's DATA (i.e., does not have a straight-forward executable semantics):
|
||||
ELSE IF it's DATA (i.e., doe not have a straight-forward executable semantics):
|
||||
|
||||
IF it's related to SGML/XML processing:
|
||||
IF it's a XML DTD:
|
||||
@@ -1,12 +1,16 @@
|
||||
* Bump freetype to 2.1.7 (but it breaks Pango 1.2.5).
|
||||
|
||||
* Patch development/tools/misc/libtool not to search standard
|
||||
directories for libraries (like setup.sh does now). [do we want
|
||||
this?]
|
||||
|
||||
* In setup.sh: add configureFlagsArray or something
|
||||
|
||||
* 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]
|
||||
* diffutils retains a dependency on coreutils/bin/pr; causes stdenv to
|
||||
depend on 2 copies of coreutils (the first one impure in
|
||||
stdenv-nix-linux!)
|
||||
1
pkgs/VERSION
Normal file
1
pkgs/VERSION
Normal file
@@ -0,0 +1 @@
|
||||
0.5.1
|
||||
@@ -1,13 +0,0 @@
|
||||
{stdenv, fetchurl, perl
|
||||
, bison, flex, glib
|
||||
, pkgconfig, libxml2}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "GStreamer-0.10.10";
|
||||
src = fetchurl {
|
||||
url = http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.10.tar.bz2;
|
||||
md5 = "6875bf0bd3cf38b9ae1362b9e644e6fc";
|
||||
};
|
||||
|
||||
buildInputs = [perl bison flex glib pkgconfig libxml2];
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
args: with args;
|
||||
let localDefs = builderDefs {
|
||||
src =
|
||||
fetchurl {
|
||||
url = mirror://sourceforge/audacity/audacity-src-1.3.3.tar.gz;
|
||||
sha256 = "17bjc2rnqspg1mbay4b1hhgg08iadapwf6w98gbv3r84rv1mhgls";
|
||||
};
|
||||
|
||||
buildInputs =[(wxGTK null) libogg libvorbis libsndfile libmad pkgconfig gtk
|
||||
gettext glib];
|
||||
} null;
|
||||
in with localDefs;
|
||||
let
|
||||
postInstall = FullDepEntry ("
|
||||
old_rpath=$(patchelf --print-rpath \$out/bin/audacity);
|
||||
patchelf --set-rpath \$old_rpath:${gtk}/lib:${glib}/lib \$out/bin/audacity;
|
||||
") [minInit];
|
||||
preBuild = FullDepEntry ("
|
||||
sed -e '/\\/usr\\/local\\/lib\\/ladspa/awxGetApp()."+
|
||||
"AddUniquePathToPathList(wxGetenv(wxT(\"HOME\"))+"+
|
||||
"wxT(\"/.ladspa-plugins\"), pathList);'
|
||||
|
||||
") [minInit];
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "audacity-1.3.3";
|
||||
|
||||
builder = writeScript "audacity-1.3.3-builder"
|
||||
(textClosure localDefs [addInputs (doDump "0") (noDepEntry "echo \$PATH; ar --version") doConfigure preBuild doMakeInstall postInstall doForceShare]);
|
||||
|
||||
meta = {
|
||||
description = "Audacity sound editor.";
|
||||
homepage = http://audacity.sourceforge.net;
|
||||
};
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
{stdenv, fetchurl, gettext, ncurses
|
||||
, gtkGUI ? false
|
||||
, pkgconfig ? null
|
||||
, gtk ? null}:
|
||||
|
||||
assert gtkGUI -> pkgconfig != null && gtk != null;
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "aumix-2.8";
|
||||
src = fetchurl {
|
||||
url = http://www.jpj.net/~trevor/aumix/aumix-2.8.tar.bz2;
|
||||
sha256 = "636eef7f400c2f3df489c0d2fa21507e88692113561e75a40a26c52bc422d7fc";
|
||||
};
|
||||
|
||||
buildInputs = [ gettext ncurses ]
|
||||
++ (if gtkGUI then [pkgconfig gtk] else []);
|
||||
|
||||
meta = {
|
||||
description = ''Aumix adjusts an audio mixer from X, the console,
|
||||
a terminal, the command line or a script.'';
|
||||
homepage = http://www.jpj.net/~trevor/aumix.html;
|
||||
license = "GPL";
|
||||
};
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
source $stdenv/setup
|
||||
|
||||
ensureDir "$out/lib/bmp/Input"
|
||||
installFlags="install libdir=$out/lib/bmp/Input"
|
||||
|
||||
genericBuild
|
||||
@@ -1,11 +0,0 @@
|
||||
{stdenv, fetchurl, pkgconfig, bmp, libmpcdec, taglib}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "bmp-plugin-musepack-1.2";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://files2.musepack.net/linux/plugins/bmp-musepack-1.2.tar.bz2;
|
||||
md5 = "5fe0c9d341ca37d05c780a478f829a5f";
|
||||
};
|
||||
buildInputs = [pkgconfig bmp libmpcdec taglib];
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
source $stdenv/setup
|
||||
|
||||
buildFlags="-f Makefile.bmp"
|
||||
|
||||
installPhase=installPhase
|
||||
installPhase() {
|
||||
ensureDir "$out/lib/bmp/Input"
|
||||
cp libwma.so "$out/lib/bmp/Input"
|
||||
}
|
||||
|
||||
genericBuild
|
||||
@@ -1,11 +0,0 @@
|
||||
{stdenv, fetchurl, pkgconfig, bmp}:
|
||||
|
||||
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];
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{ stdenv, fetchurl, pkgconfig, alsaLib, esound, libogg, libvorbis, id3lib
|
||||
, glib, gtk, libglade
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "bmp-0.9.7.1";
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/beepmp/bmp-0.9.7.1.tar.gz;
|
||||
md5 = "c25d5a8d49cc5851d13d525a20023c4c";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
pkgconfig alsaLib esound libogg libvorbis id3lib libglade
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Beep Media Player, an XMMS fork";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [glib gtk];
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{stdenv, fetchurl}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "cdparanoia-III-alpha9.8";
|
||||
src = fetchurl {
|
||||
url = http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-alpha9.8.src.tgz;
|
||||
md5 = "7218e778b5970a86c958e597f952f193";
|
||||
};
|
||||
|
||||
patches = [./fix.patch];
|
||||
|
||||
meta = {
|
||||
homepage = http://xiph.org/paranoia;
|
||||
};
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
*** cdparanoia-III-alpha9.8/interface/utils.h Thu Apr 20 00:41:04 2000
|
||||
--- cdparanoia-III-alpha9.8-old/interface/utils.h Wed Jan 19 21:44:08 2005
|
||||
***************
|
||||
*** 110,117 ****
|
||||
case CDDA_MESSAGE_LOGIT:
|
||||
d->errorbuf=catstring(d->errorbuf,s);
|
||||
break;
|
||||
- case CDDA_MESSAGE_FORGETIT:
|
||||
- default:
|
||||
}
|
||||
}
|
||||
}
|
||||
--- 110,115 ----
|
||||
***************
|
||||
*** 125,132 ****
|
||||
case CDDA_MESSAGE_LOGIT:
|
||||
d->messagebuf=catstring(d->messagebuf,s);
|
||||
break;
|
||||
- case CDDA_MESSAGE_FORGETIT:
|
||||
- default:
|
||||
}
|
||||
}
|
||||
}
|
||||
--- 123,128 ----
|
||||
***************
|
||||
*** 167,174 ****
|
||||
}
|
||||
}
|
||||
break;
|
||||
- case CDDA_MESSAGE_FORGETIT:
|
||||
- default:
|
||||
}
|
||||
}
|
||||
if(malloced)free(buffer);
|
||||
--- 163,168 ----
|
||||
***************
|
||||
*** 203,210 ****
|
||||
if(!malloced)*messages=catstring(*messages,"\n");
|
||||
}
|
||||
break;
|
||||
- case CDDA_MESSAGE_FORGETIT:
|
||||
- default:
|
||||
}
|
||||
}
|
||||
if(malloced)free(buffer);
|
||||
--- 197,202 ----
|
||||
@@ -1,19 +0,0 @@
|
||||
args: with args;
|
||||
let
|
||||
flacFun = version: hash:
|
||||
stdenv.mkDerivation rec {
|
||||
name = "flac-${version}";
|
||||
src = fetchurl ({
|
||||
url = "http://downloads.xiph.org/releases/flac/${name}.tar.gz";
|
||||
} // hash);
|
||||
buildInputs = [libogg];
|
||||
meta = {
|
||||
homepage = http://flac.sourceforge.net;
|
||||
};
|
||||
};
|
||||
in
|
||||
stdenv.lib.listOfListsToAttrs [
|
||||
[ "default" (flacFun "1.2.1" { sha256 = "1pry5lgzfg57pga1zbazzdd55fkgk3v5qy4axvrbny5lrr5s8dcn"; }) ]
|
||||
[ "1.2.1" (flacFun "1.2.1" { sha256 = "1pry5lgzfg57pga1zbazzdd55fkgk3v5qy4axvrbny5lrr5s8dcn"; }) ]
|
||||
[ "1.1.2" (flacFun "1.1.2" { md5 = "2bfc127cdda02834d0491ab531a20960"; }) ]
|
||||
]
|
||||
@@ -1,28 +0,0 @@
|
||||
args: with args;
|
||||
let localDefs = builderDefs {
|
||||
src =
|
||||
fetchurl {
|
||||
url = http://plugin.org.uk/releases/0.4.15/swh-plugins-0.4.15.tar.gz;
|
||||
sha256 = "0h462s4mmqg4iw7zdsihnrmz2vjg0fd49qxw2a284bnryjjfhpnh";
|
||||
};
|
||||
buildInputs = [fftw ladspaH pkgconfig];
|
||||
configureFlags = [];
|
||||
} null;
|
||||
in with localDefs;
|
||||
let
|
||||
postInstall = FullDepEntry ("
|
||||
ensureDir \$out/share/ladspa/
|
||||
ln -s \$out/lib/ladspa \$out/share/ladspa/lib
|
||||
") [minInit defEnsureDir];
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "swh-plugins-0.4.15";
|
||||
builder = writeScript "swh-plugins-0.4.15-builder"
|
||||
(textClosure localDefs [doConfigure doMakeInstall
|
||||
postInstall doForceShare]);
|
||||
meta = {
|
||||
description = "
|
||||
LADSPA format audio plugins.
|
||||
";
|
||||
};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
args: with args;
|
||||
let
|
||||
src =
|
||||
fetchurl {
|
||||
url = http://www.ladspa.org/ladspa_sdk/ladspa.h.txt;
|
||||
sha256 = "1b908csn85ng9sz5s5d1mqk711cmawain2z8px2ajngihdrynb67";
|
||||
};
|
||||
in
|
||||
let localDefs = builderDefs {
|
||||
buildInputs = [];
|
||||
inherit src;
|
||||
} null;
|
||||
in with localDefs;
|
||||
let
|
||||
copyFile = FullDepEntry ("
|
||||
ensureDir \$out/include
|
||||
cp ${src} \$out/include/ladspa.h
|
||||
") [minInit defEnsureDir];
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "ladspa.h";
|
||||
builder = writeScript "ladspa.h-builder"
|
||||
(textClosure localDefs [copyFile]);
|
||||
meta = {
|
||||
description = "
|
||||
LADSPA format audio plugins.
|
||||
";
|
||||
};
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{stdenv, fetchurl}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "lame-3.97";
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/lame/lame-3.97.tar.gz ;
|
||||
sha256 = "05xy9lv6m9s013lzlvhxwvr1586c239xaiiwka52k18hs6k388qa";
|
||||
};
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{stdenv, fetchurl, libao, libmad, libid3tag, zlib}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "mpg321-0.2.10";
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/mpg321/mpg321-0.2.10.tar.gz;
|
||||
sha256 = "db0c299592b8f1f704f41bd3fc3a2bf138658108588d51af61638c551af1b0d4";
|
||||
};
|
||||
|
||||
buildInputs = [libao libid3tag libmad zlib];
|
||||
|
||||
meta = {
|
||||
description = "Command-line MP3 player.";
|
||||
homepage = http://mpg321.sourceforge.net/;
|
||||
license = "GPLv2";
|
||||
};
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
args : with args;
|
||||
let localDefs = builderDefs {
|
||||
src =
|
||||
fetchurl {
|
||||
url = ftp://ccrma-ftp.stanford.edu/pub/Lisp/snd-9.4.tar.gz;
|
||||
sha256 = "0zqgfnkvkqxby1k74mwba1r4pb520glcsz5jjmpzm9m41nqnghmm";
|
||||
};
|
||||
|
||||
buildInputs = [gtk glib pkgconfig libXpm gmp gettext]
|
||||
++ (lib.optional (args ? ruby) args.ruby)
|
||||
++ (lib.optional (args ? mesa) args.mesa)
|
||||
++ (lib.optional (args ? guile) args.guile)
|
||||
++ (lib.optional (args ? libtool) args.libtool)
|
||||
++ (lib.optional (args ? sndlib) args.sndlib)
|
||||
;
|
||||
configureFlags = ["--with-gtk" "--with-xpm"]
|
||||
++ (lib.optional (args ? ruby) "--with-ruby" )
|
||||
++ (lib.optional (args ? mesa) "--with-gl" )
|
||||
++ (lib.optional (args ? guile) "--with-guile")
|
||||
++ (lib.optional (args ? sndlib) "--with-midi" )
|
||||
;
|
||||
} null; /* null is a terminator for sumArgs */
|
||||
in with localDefs;
|
||||
let preBuild = FullDepEntry ("
|
||||
cp config.log /tmp/snd-config.log
|
||||
") [minInit doUnpack];
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "Snd-9.4";
|
||||
builder = writeScript (name + "-builder")
|
||||
(textClosure localDefs [doConfigure preBuild doMakeInstall doForceShare]);
|
||||
meta = {
|
||||
description = "Snd sound editor.";
|
||||
homepage = http://ccrma.stanford.edu/software/snd;
|
||||
};
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
{stdenv, fetchurl, libogg, libvorbis, libao, pkgconfig, curl, glibc
|
||||
, speex, flac}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "vorbis-tools-1.1.1";
|
||||
src = fetchurl {
|
||||
url = http://downloads.xiph.org/releases/vorbis/vorbis-tools-1.1.1.tar.gz;
|
||||
sha256 = "617b4aa69e600c215b34fa3fd5764bc1d9d205d9d7d9fe7812bde7ec956fcaad";
|
||||
};
|
||||
|
||||
# FIXME: Vorbis-tools expects `libOggFLAC', but this library was
|
||||
# merged with `libFLAC' as of FLAC 1.1.3.
|
||||
buildInputs = [ libogg libvorbis libao pkgconfig curl speex glibc flac ];
|
||||
|
||||
patches = [ ./ogg123-curlopt-mute.patch ];
|
||||
|
||||
meta = {
|
||||
description = ''A set of command-line tools to manipulate Ogg Vorbis
|
||||
audio files, notably the `ogg123' player and the
|
||||
`oggenc' encoder.'';
|
||||
homepage = http://xiph.org/vorbis/;
|
||||
license = "GPLv2";
|
||||
};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
--- vorbis-tools-1.1.1/ogg123/http_transport.c 2005-06-13 15:11:44.000000000 +0200
|
||||
+++ vorbis-tools-1.1.1/ogg123/http_transport.c 2008-02-12 18:38:41.000000000 +0100
|
||||
@@ -116,7 +116,9 @@ void set_curl_opts (http_private_t *priv
|
||||
if (inputOpts.ProxyTunnel)
|
||||
curl_easy_setopt (handle, CURLOPT_HTTPPROXYTUNNEL, inputOpts.ProxyTunnel);
|
||||
*/
|
||||
+#ifdef CURLOPT_MUTE
|
||||
curl_easy_setopt(handle, CURLOPT_MUTE, 1);
|
||||
+#endif
|
||||
curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, private->error);
|
||||
curl_easy_setopt(handle, CURLOPT_PROGRESSFUNCTION, progress_callback);
|
||||
curl_easy_setopt(handle, CURLOPT_PROGRESSDATA, private);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,19 +0,0 @@
|
||||
{stdenv, fetchurl, alsaLib, esound, libogg, libvorbis, glib, gtk}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "xmms-1.2.10";
|
||||
src = fetchurl {
|
||||
url = http://nix.cs.uu.nl/dist/tarballs/xmms-1.2.10.tar.bz2;
|
||||
md5 = "03a85cfc5e1877a2e1f7be4fa1d3f63c";
|
||||
};
|
||||
|
||||
# Patch borrowed from SuSE 10.0 to fix pause/continue on ALSA.
|
||||
patches = [./alsa.patch];
|
||||
|
||||
buildInputs = [alsaLib esound libogg libvorbis glib gtk];
|
||||
|
||||
meta = {
|
||||
description = "A music player very similar to Winamp";
|
||||
homepage = http://www.xmms.org;
|
||||
};
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
{stdenv, fetchurl, x11, libjpeg, libpng, libXmu, freetype, pam}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "slim-1.2.6";
|
||||
src = fetchurl {
|
||||
url = http://download.berlios.de/slim/slim-1.2.6.tar.gz;
|
||||
sha256 = "0plcmm955rnv67sx67ka6dccanr4rfzwzvsj6lnr8kqdip4522jg";
|
||||
};
|
||||
patches = [
|
||||
# Allow the paths of the configuration file and theme directory to
|
||||
# be set at runtime.
|
||||
./runtime-paths.patch
|
||||
# PAM support from
|
||||
# http://developer.berlios.de/patch/?func=detailpatch&patch_id=1979&group_id=2663
|
||||
./pam.patch
|
||||
];
|
||||
buildInputs = [x11 libjpeg libpng libXmu freetype pam];
|
||||
NIX_CFLAGS_COMPILE = "-I${freetype}/include/freetype2";
|
||||
preBuild = "
|
||||
substituteInPlace Makefile --replace /usr /no-such-path
|
||||
makeFlagsArray=(CC=gcc CXX=g++ PREFIX=$out MANDIR=$out/share/man CFGDIR=$out/etc)
|
||||
";
|
||||
|
||||
meta = {
|
||||
homepage = http://slim.berlios.de;
|
||||
};
|
||||
}
|
||||
@@ -1,369 +0,0 @@
|
||||
diff -rc slim-1.2.6-orig/app.cpp slim-1.2.6/app.cpp
|
||||
*** slim-1.2.6-orig/app.cpp 2006-09-15 23:00:37.000000000 +0200
|
||||
--- slim-1.2.6/app.cpp 2007-06-05 12:45:58.000000000 +0200
|
||||
***************
|
||||
*** 25,30 ****
|
||||
--- 25,68 ----
|
||||
#include "app.h"
|
||||
#include "numlock.h"
|
||||
|
||||
+ #ifdef USE_PAM
|
||||
+ #include <security/pam_appl.h>
|
||||
+ #include <security/pam_misc.h>
|
||||
+ #include <string>
|
||||
+
|
||||
+ pam_handle_t* pamh;
|
||||
+ char const* PAM_service = "slim"; // <----- Change this, if the patch gets accepted upstream
|
||||
+ string password;
|
||||
+
|
||||
+ int conv(int num_msg, const struct pam_message **msg,
|
||||
+ struct pam_response **resp, void *appdata_ptr){
|
||||
+ *resp = (struct pam_response *) calloc(num_msg, sizeof(struct pam_response));
|
||||
+ for (int i=0; i<num_msg; i++){
|
||||
+ resp[i]->resp_retcode=0;
|
||||
+ switch(msg[i]->msg_style){
|
||||
+ case PAM_PROMPT_ECHO_ON:
|
||||
+ // We assume PAM is asking for the username
|
||||
+ // As we should have given that already, this should never happen
|
||||
+ cerr << APPNAME << ": PAM send an unexpected PAM_PROMPT_ECHO_ON" << endl;
|
||||
+ cerr << APPNAME << ": " << msg[i]->msg << endl;
|
||||
+ break;
|
||||
+
|
||||
+ case PAM_PROMPT_ECHO_OFF:
|
||||
+ // We assume PAM is asking for the password
|
||||
+ resp[i]->resp=x_strdup(password.c_str());
|
||||
+ break;
|
||||
+
|
||||
+ case PAM_ERROR_MSG:
|
||||
+ case PAM_TEXT_INFO:
|
||||
+ // We simply right these to the log
|
||||
+ // TODO: Maybe we should simply ignore them
|
||||
+ cerr << APPNAME << ": " << msg[i]->msg << endl;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ return PAM_SUCCESS;
|
||||
+ }
|
||||
+ #endif
|
||||
|
||||
extern App* LoginApp;
|
||||
|
||||
***************
|
||||
*** 133,138 ****
|
||||
--- 171,209 ----
|
||||
}
|
||||
}
|
||||
|
||||
+ #ifdef USE_PAM
|
||||
+ int last_result;
|
||||
+ struct pam_conv pam_conversation = {
|
||||
+ conv,
|
||||
+ NULL
|
||||
+ };
|
||||
+
|
||||
+ // Start the PAM session
|
||||
+ if ((last_result=pam_start(PAM_service, NULL, &pam_conversation, &pamh))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ exit(ERR_EXIT);
|
||||
+ }
|
||||
+
|
||||
+ // Setup some PAM items
|
||||
+ if ((last_result=pam_set_item(pamh, PAM_TTY, DisplayName))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ pam_end(pamh, last_result);
|
||||
+ exit(ERR_EXIT);
|
||||
+ }
|
||||
+ char* pam_ruser = "root\0"; // <---- We already checked for this in the constructor
|
||||
+ if ((last_result=pam_set_item(pamh, PAM_RUSER, pam_ruser))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ pam_end(pamh, last_result);
|
||||
+ exit(ERR_EXIT);
|
||||
+ }
|
||||
+ char* pam_rhost = "localhost\0"; // <---- This might not entirely correct
|
||||
+ if ((last_result=pam_set_item(pamh, PAM_RHOST, pam_rhost))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ pam_end(pamh, last_result);
|
||||
+ exit(ERR_EXIT);
|
||||
+ }
|
||||
+ #endif
|
||||
+
|
||||
bool loaded = false;
|
||||
while (!loaded) {
|
||||
themedir = themebase + themeName;
|
||||
***************
|
||||
*** 313,318 ****
|
||||
--- 384,421 ----
|
||||
struct passwd *pw;
|
||||
pid_t pid;
|
||||
|
||||
+ #ifdef USE_PAM
|
||||
+ int last_result;
|
||||
+ switch ((last_result=pam_setcred(pamh, PAM_ESTABLISH_CRED | PAM_SILENT))){
|
||||
+ case PAM_SUCCESS:
|
||||
+ // Credentials was established successfully
|
||||
+ break;
|
||||
+
|
||||
+ case PAM_CRED_ERR:
|
||||
+ case PAM_CRED_EXPIRED:
|
||||
+ case PAM_CRED_UNAVAIL:
|
||||
+ case PAM_USER_UNKNOWN:
|
||||
+ // Credentials couldn't be established
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ return;
|
||||
+
|
||||
+ case PAM_BUF_ERR:
|
||||
+ case PAM_SYSTEM_ERR:
|
||||
+ default:
|
||||
+ // System error -> bail out!
|
||||
+ last_result=pam_setcred(pamh, PAM_DELETE_CRED);
|
||||
+ pam_end(pamh, last_result);
|
||||
+ exit(ERR_EXIT);
|
||||
+ }
|
||||
+
|
||||
+ if ((last_result=pam_open_session(pamh, PAM_SILENT))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ pam_setcred(pamh, PAM_DELETE_CRED);
|
||||
+ // TODO: Do we need more serious actions?
|
||||
+ return;
|
||||
+ }
|
||||
+ #endif
|
||||
+
|
||||
pw = LoginPanel->GetInput()->GetPasswdStruct();
|
||||
if(pw == 0)
|
||||
return;
|
||||
***************
|
||||
*** 320,325 ****
|
||||
--- 423,433 ----
|
||||
// Create new process
|
||||
pid = fork();
|
||||
if(pid == 0) {
|
||||
+ #ifdef USE_PAM
|
||||
+ // Close the child's copy of the PAM-handle
|
||||
+ pam_end(pamh, PAM_SUCCESS | PAM_DATA_SILENT);
|
||||
+ #endif
|
||||
+
|
||||
// Login process starts here
|
||||
SwitchUser Su(pw, cfg, DisplayName);
|
||||
string session = LoginPanel->getSession();
|
||||
***************
|
||||
*** 355,361 ****
|
||||
}
|
||||
}
|
||||
|
||||
! // Close all clients
|
||||
KillAllClients(False);
|
||||
KillAllClients(True);
|
||||
|
||||
--- 463,477 ----
|
||||
}
|
||||
}
|
||||
|
||||
! #ifdef USE_PAM
|
||||
! if ((last_result=pam_close_session(pamh, PAM_SILENT))!=PAM_SUCCESS){
|
||||
! cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
! last_result=pam_setcred(pamh, PAM_DELETE_CRED);
|
||||
! // TODO: Do we need more serious actions?
|
||||
! }
|
||||
! #endif
|
||||
!
|
||||
! // Close all clients
|
||||
KillAllClients(False);
|
||||
KillAllClients(True);
|
||||
|
||||
***************
|
||||
*** 382,387 ****
|
||||
--- 498,510 ----
|
||||
// Stop alarm clock
|
||||
alarm(0);
|
||||
|
||||
+ #ifdef USE_PAM
|
||||
+ int last_result;
|
||||
+ if ((last_result=pam_end(pamh, PAM_SUCCESS))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ }
|
||||
+ #endif
|
||||
+
|
||||
// Write message
|
||||
LoginPanel->Message((char*)cfg->getOption("reboot_msg").c_str());
|
||||
sleep(3);
|
||||
***************
|
||||
*** 398,403 ****
|
||||
--- 521,533 ----
|
||||
// Stop alarm clock
|
||||
alarm(0);
|
||||
|
||||
+ #ifdef USE_PAM
|
||||
+ int last_result;
|
||||
+ if ((last_result=pam_end(pamh, PAM_SUCCESS))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ }
|
||||
+ #endif
|
||||
+
|
||||
// Write message
|
||||
LoginPanel->Message((char*)cfg->getOption("shutdown_msg").c_str());
|
||||
sleep(3);
|
||||
***************
|
||||
*** 433,438 ****
|
||||
--- 563,575 ----
|
||||
|
||||
|
||||
void App::Exit() {
|
||||
+ #ifdef USE_PAM
|
||||
+ int last_result;
|
||||
+ if ((last_result=pam_end(pamh, PAM_SUCCESS))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ }
|
||||
+ #endif
|
||||
+
|
||||
if (testing) {
|
||||
char* testmsg = "This is a test message :-)";
|
||||
LoginPanel->Message(testmsg);
|
||||
***************
|
||||
*** 453,458 ****
|
||||
--- 590,602 ----
|
||||
}
|
||||
|
||||
void App::RestartServer() {
|
||||
+ #ifdef USE_PAM
|
||||
+ int last_result;
|
||||
+ if ((last_result=pam_end(pamh, PAM_SUCCESS))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ }
|
||||
+ #endif
|
||||
+
|
||||
StopServer();
|
||||
RemoveLock();
|
||||
Run();
|
||||
Only in slim-1.2.6/: app.cpp~
|
||||
diff -rc slim-1.2.6-orig/input.cpp slim-1.2.6/input.cpp
|
||||
*** slim-1.2.6-orig/input.cpp 2006-09-15 23:00:37.000000000 +0200
|
||||
--- slim-1.2.6/input.cpp 2007-06-05 12:45:58.000000000 +0200
|
||||
***************
|
||||
*** 12,17 ****
|
||||
--- 12,25 ----
|
||||
#include "input.h"
|
||||
#include <cstdlib>
|
||||
|
||||
+ #ifdef USE_PAM
|
||||
+ #include <security/pam_appl.h>
|
||||
+ #include <string>
|
||||
+
|
||||
+ extern pam_handle_t* pamh;
|
||||
+ extern string password;
|
||||
+ #endif
|
||||
+
|
||||
Input::Input(Cfg* c) {
|
||||
NameBuffer[0] = '\0';
|
||||
PasswdBuffer[0] = '\0';
|
||||
***************
|
||||
*** 100,106 ****
|
||||
--- 108,126 ----
|
||||
|
||||
|
||||
struct passwd* Input::GetPasswdStruct() {
|
||||
+ #ifdef USE_PAM
|
||||
+ int last_result;
|
||||
+ char* username=NULL;
|
||||
+
|
||||
+ if ((last_result=pam_get_item(pamh, PAM_USER, (const void**)&username))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ pam_end(pamh, last_result);
|
||||
+ exit(ERR_EXIT);
|
||||
+ }
|
||||
+ struct passwd* pw = getpwnam(username);
|
||||
+ #else
|
||||
struct passwd* pw = getpwnam(NameBuffer);
|
||||
+ #endif
|
||||
endpwent();
|
||||
if (pw->pw_shell[0] == '\0') {
|
||||
setusershell();
|
||||
***************
|
||||
*** 183,188 ****
|
||||
--- 203,240 ----
|
||||
}
|
||||
|
||||
int Input::Correct() {
|
||||
+ #ifdef USE_PAM
|
||||
+ int last_result;
|
||||
+
|
||||
+ // Store the password in global variables accessible
|
||||
+ // by the PAM-conversation function
|
||||
+ password=PasswdBuffer;
|
||||
+
|
||||
+ // Set the username in PAM
|
||||
+ if ((last_result=pam_set_item(pamh, PAM_USER, NameBuffer))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ pam_end(pamh, last_result);
|
||||
+ exit(ERR_EXIT);
|
||||
+ }
|
||||
+
|
||||
+ // Authenticate the user
|
||||
+ if ((last_result=pam_authenticate(pamh, PAM_DISALLOW_NULL_AUTHTOK))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ if (last_result==PAM_ABORT){
|
||||
+ pam_end(pamh, last_result);
|
||||
+ exit(ERR_EXIT);
|
||||
+ }
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ // Check the health of the account
|
||||
+ if ((last_result=pam_acct_mgmt(pamh, PAM_SILENT))!=PAM_SUCCESS){
|
||||
+ cerr << APPNAME << ": " << pam_strerror(pamh, last_result) << endl;
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ return 1;
|
||||
+ #else
|
||||
char *unencrypted, *encrypted, *correct;
|
||||
struct passwd *pw;
|
||||
|
||||
***************
|
||||
*** 197,203 ****
|
||||
if(sp)
|
||||
correct = sp->sp_pwdp;
|
||||
else
|
||||
! #endif
|
||||
correct = pw->pw_passwd;
|
||||
|
||||
if(correct == 0 || correct[0] == '\0')
|
||||
--- 249,255 ----
|
||||
if(sp)
|
||||
correct = sp->sp_pwdp;
|
||||
else
|
||||
! #endif /* HAVE_SHADOW */
|
||||
correct = pw->pw_passwd;
|
||||
|
||||
if(correct == 0 || correct[0] == '\0')
|
||||
***************
|
||||
*** 207,212 ****
|
||||
--- 259,265 ----
|
||||
encrypted = crypt(unencrypted, correct);
|
||||
memset(unencrypted, 0, strlen (unencrypted));
|
||||
return (strcmp(encrypted, correct) == 0);
|
||||
+ #endif /* USE_PAM */
|
||||
}
|
||||
|
||||
|
||||
diff -rc slim-1.2.6-orig/Makefile slim-1.2.6/Makefile
|
||||
*** slim-1.2.6-orig/Makefile 2006-09-15 23:00:37.000000000 +0200
|
||||
--- slim-1.2.6/Makefile 2007-06-05 12:45:58.000000000 +0200
|
||||
***************
|
||||
*** 6,13 ****
|
||||
CXX=/usr/bin/g++
|
||||
CC=/usr/bin/gcc
|
||||
CFLAGS=-I. -I/usr/X11R6/include -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/libpng12 -I/usr/include
|
||||
! LDFLAGS=-L/usr/X11R6/lib -lXft -lX11 -lfreetype -lXrender -lfontconfig -lpng12 -lz -lm -lcrypt -lXmu -lpng -ljpeg
|
||||
! CUSTOM=-DHAVE_SHADOW
|
||||
PREFIX=/usr
|
||||
CFGDIR=/etc
|
||||
MANDIR=/usr/man
|
||||
--- 6,13 ----
|
||||
CXX=/usr/bin/g++
|
||||
CC=/usr/bin/gcc
|
||||
CFLAGS=-I. -I/usr/X11R6/include -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/include/libpng12 -I/usr/include
|
||||
! LDFLAGS=-L/usr/X11R6/lib -lXft -lX11 -lfreetype -lXrender -lfontconfig -lpng12 -lz -lm -lcrypt -lXmu -lpng -ljpeg -lpam
|
||||
! CUSTOM=-DHAVE_SHADOW -DUSE_PAM
|
||||
PREFIX=/usr
|
||||
CFGDIR=/etc
|
||||
MANDIR=/usr/man
|
||||
@@ -1,41 +0,0 @@
|
||||
diff -rc slim-1.2.6-orig/app.cpp slim-1.2.6/app.cpp
|
||||
*** slim-1.2.6-orig/app.cpp Fri Sep 15 23:00:37 2006
|
||||
--- slim-1.2.6/app.cpp Sun Feb 25 17:30:50 2007
|
||||
***************
|
||||
*** 113,119 ****
|
||||
|
||||
// Read configuration and theme
|
||||
cfg = new Cfg;
|
||||
! cfg->readConf(CFGFILE);
|
||||
string themebase = "";
|
||||
string themefile = "";
|
||||
string themedir = "";
|
||||
--- 113,121 ----
|
||||
|
||||
// Read configuration and theme
|
||||
cfg = new Cfg;
|
||||
! char *cfgfile = getenv("SLIM_CFGFILE");
|
||||
! if (!cfgfile) cfgfile = CFGFILE;
|
||||
! cfg->readConf(cfgfile);
|
||||
string themebase = "";
|
||||
string themefile = "";
|
||||
string themedir = "";
|
||||
***************
|
||||
*** 121,127 ****
|
||||
if (testing) {
|
||||
themeName = testtheme;
|
||||
} else {
|
||||
! themebase = string(THEMESDIR) + "/";
|
||||
themeName = cfg->getOption("current_theme");
|
||||
string::size_type pos;
|
||||
if ((pos = themeName.find(",")) != string::npos) {
|
||||
--- 123,131 ----
|
||||
if (testing) {
|
||||
themeName = testtheme;
|
||||
} else {
|
||||
! char *themesdir = getenv("SLIM_THEMESDIR");
|
||||
! if (!themesdir) themesdir = THEMESDIR;
|
||||
! themebase = string(themesdir) + "/";
|
||||
themeName = cfg->getOption("current_theme");
|
||||
string::size_type pos;
|
||||
if ((pos = themeName.find(",")) != string::npos) {
|
||||
@@ -1,17 +0,0 @@
|
||||
args : with args;
|
||||
stdenv.mkDerivation {
|
||||
name = "bvi-1.3.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://prdownloads.sourceforge.net/bvi/bvi-1.3.2.src.tar.gz;
|
||||
sha256 = "110wxqnyianqamxq4y53drqqxb9vp4k2fcvic45qggvlqkqhlfgz";
|
||||
};
|
||||
|
||||
buildInputs = [ncurses];
|
||||
|
||||
meta = {
|
||||
description = "hex editor with vim style keybindings";
|
||||
homepage = http://bvi.sourceforge.net/download.html;
|
||||
license = "GPL2";
|
||||
};
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
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.
|
||||
makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
|
||||
--prefix PATH ":" "$jdk/bin" \
|
||||
--prefix LD_LIBRARY_PATH ":" "$rpath"
|
||||
|
||||
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,22 +0,0 @@
|
||||
{fetchurl, stdenv, makeWrapper, jdk, gtk, glib, libXtst, plugins ? []}:
|
||||
|
||||
let {
|
||||
body =
|
||||
stdenv.mkDerivation {
|
||||
name = "eclipse-sdk-3.3.3.1";
|
||||
builder = ./builder.sh;
|
||||
src = bindist;
|
||||
buildInputs = [makeWrapper];
|
||||
inherit jdk plugins;
|
||||
libraries = [gtk glib libXtst];
|
||||
};
|
||||
|
||||
bindist =
|
||||
if (stdenv.system == "x86_64-linux") then fetchurl {
|
||||
url = "http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops/R-3.3.1.1-200710231652/eclipse-SDK-3.3.1.1-linux-gtk-x86_64.tar.gz";
|
||||
sha256 = "3fec49e95c45b56ad77b2bd15616af9d1fa6c3b338d4c70b497ecdc974c0b030";
|
||||
} else fetchurl {
|
||||
url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops/R-3.3.1.1-200710231652/eclipse-SDK-3.3.1.1-linux-gtk.tar.gz;
|
||||
sha256 = "409e47745c92ff8ea8b2037104ec90c2f8ce3edb3563fdb312d55e1bbd2ada01";
|
||||
};
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{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";
|
||||
};
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{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";
|
||||
};
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
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
|
||||
@@ -1,10 +0,0 @@
|
||||
{stdenv, unzip, plugin}:
|
||||
|
||||
let {
|
||||
body =
|
||||
stdenv.mkDerivation {
|
||||
name = "eclipse-zip-plugin-installer";
|
||||
builder = ./builder.sh;
|
||||
inherit plugin unzip;
|
||||
};
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{stdenv, fetchurl}:
|
||||
|
||||
fetchurl {
|
||||
url = http://www.ii.uib.no/~karltk/spoofax/plugins/org.spoofax.editor_0.3.0.jar;
|
||||
md5 = "ff66d229c774f840ec8285f64c0f95bc";
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{stdenv, fetchurl}:
|
||||
|
||||
fetchurl {
|
||||
url = http://nix.cs.uu.nl/dist/tarballs/org.spoofax.editor_0.3.10.jar;
|
||||
md5 = "ff77853e750e19a9b8d380c17ea27f3d";
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{stdenv, fetchurl}:
|
||||
|
||||
fetchurl {
|
||||
url = http://www.ii.uib.no/~karltk/spoofax/plugins/org.spoofax.editor_0.3.11.jar;
|
||||
md5 = "c36941afcb0e538e16fafd594eae128e";
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
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
|
||||
@@ -1,41 +0,0 @@
|
||||
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~
|
||||
@@ -1,28 +0,0 @@
|
||||
{ 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://nix.cs.uu.nl/dist/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,13 +0,0 @@
|
||||
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
|
||||
@@ -1,41 +0,0 @@
|
||||
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~
|
||||
@@ -1,31 +0,0 @@
|
||||
{ xawSupport ? true
|
||||
, xpmSupport ? true
|
||||
, xaw3dSupport ? false
|
||||
, gtkGUI ? false
|
||||
, stdenv, fetchurl, x11, libXaw ? null, libXpm ? null, Xaw3d ? null
|
||||
, pkgconfig ? null, gtk ? null
|
||||
, ncurses
|
||||
}:
|
||||
|
||||
assert xawSupport && !xaw3dSupport -> libXaw != null;
|
||||
assert xawSupport && xaw3dSupport -> Xaw3d != null;
|
||||
assert xpmSupport -> libXpm != null;
|
||||
assert gtkGUI -> pkgconfig != null && gtk != null;
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "emacs-22.1";
|
||||
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = mirror://gnu/emacs/emacs-22.1.tar.gz;
|
||||
sha256 = "1l1y3il98pq3cz464p244wz2d3nga5lq8fkw5pwp5r97f7pkpi0y";
|
||||
};
|
||||
patches = [./crt.patch ./makefile-pwd.patch];
|
||||
buildInputs = [
|
||||
ncurses x11
|
||||
(if xawSupport then if xaw3dSupport then Xaw3d else libXaw else null)
|
||||
(if xpmSupport then libXpm else null)
|
||||
] ++ (if gtkGUI then [pkgconfig gtk] else []);
|
||||
configureFlags =
|
||||
if gtkGUI then ["--with-x-toolkit=gtk"] else [];
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
--- emacs-22.1/Makefile.in 2008-02-10 23:56:29.000000000 +0100
|
||||
+++ emacs-22.1/Makefile.in 2008-02-10 23:55:55.000000000 +0100
|
||||
@@ -420,7 +420,7 @@
|
||||
-set ${COPYDESTS} ; \
|
||||
unset CDPATH; \
|
||||
for dir in ${COPYDIR} ; do \
|
||||
- if [ `(cd $$1 && /bin/pwd)` != `(cd $${dir} && /bin/pwd)` ] ; then \
|
||||
+ if [ `(cd $$1 && pwd)` != `(cd $${dir} && pwd)` ] ; then \
|
||||
rm -rf $$1 ; \
|
||||
fi ; \
|
||||
shift ; \
|
||||
@@ -432,7 +432,7 @@
|
||||
for dir in ${COPYDIR} ; do \
|
||||
dest=$$1 ; shift ; \
|
||||
[ -d $${dir} ] \
|
||||
- && [ `(cd $${dir} && /bin/pwd)` != `(cd $${dest} && /bin/pwd)` ] \
|
||||
+ && [ `(cd $${dir} && pwd)` != `(cd $${dest} && pwd)` ] \
|
||||
&& (echo "Copying $${dir} to $${dest}..." ; \
|
||||
(cd $${dir}; tar -chf - . ) \
|
||||
| (cd $${dest}; umask 022; \
|
||||
@@ -472,7 +472,7 @@
|
||||
fi
|
||||
-chmod a+r $(DESTDIR)${datadir}/emacs/site-lisp/subdirs.el
|
||||
-unset CDPATH; \
|
||||
- if [ `(cd ./etc; /bin/pwd)` != `(cd $(DESTDIR)${docdir}; /bin/pwd)` ]; \
|
||||
+ if [ `(cd ./etc; pwd)` != `(cd $(DESTDIR)${docdir}; pwd)` ]; \
|
||||
then \
|
||||
echo "Copying etc/DOC-* to $(DESTDIR)${docdir} ..." ; \
|
||||
(cd ./etc; tar -chf - DOC*) \
|
||||
@@ -483,8 +483,8 @@
|
||||
-unset CDPATH; \
|
||||
if [ -r ./lisp ] \
|
||||
&& [ -r ./lisp/simple.el ] \
|
||||
- && [ x`(cd ./lisp; /bin/pwd)` != x`(cd $(DESTDIR)${lispdir}; /bin/pwd)` ] \
|
||||
- && [ x`(cd ${srcdir}/lisp; /bin/pwd)` != x`(cd ./lisp; /bin/pwd)` ]; \
|
||||
+ && [ x`(cd ./lisp; pwd)` != x`(cd $(DESTDIR)${lispdir}; pwd)` ] \
|
||||
+ && [ x`(cd ${srcdir}/lisp; pwd)` != x`(cd ./lisp; pwd)` ]; \
|
||||
then \
|
||||
echo "Copying lisp/*.el and lisp/*.elc to $(DESTDIR)${lispdir} ..." ; \
|
||||
(cd lisp; tar -chf - *.el *.elc) \
|
||||
@@ -500,8 +500,8 @@
|
||||
done) \
|
||||
else true; fi
|
||||
-unset CDPATH; \
|
||||
- thisdir=`/bin/pwd`; \
|
||||
- if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd $(DESTDIR)${infodir} && /bin/pwd)` ]; \
|
||||
+ thisdir=`pwd`; \
|
||||
+ if [ `(cd ${srcdir}/info && pwd)` != `(cd $(DESTDIR)${infodir} && pwd)` ]; \
|
||||
then \
|
||||
(cd $(DESTDIR)${infodir}; \
|
||||
if [ -f dir ]; then true; \
|
||||
@@ -519,8 +519,8 @@
|
||||
done); \
|
||||
else true; fi
|
||||
-unset CDPATH; \
|
||||
- thisdir=`/bin/pwd`; \
|
||||
- if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd $(DESTDIR)${infodir} && /bin/pwd)` ]; \
|
||||
+ thisdir=`pwd`; \
|
||||
+ if [ `(cd ${srcdir}/info && pwd)` != `(cd $(DESTDIR)${infodir} && pwd)` ]; \
|
||||
then \
|
||||
for elt in $(INFO_FILES); do \
|
||||
(cd $${thisdir}; \
|
||||
@@ -528,7 +528,7 @@
|
||||
done; \
|
||||
else true; fi
|
||||
-chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} $(DESTDIR)${datadir}/emacs/site-lisp ${COPYDESTS} $(DESTDIR)${infodir}
|
||||
- thisdir=`/bin/pwd`; \
|
||||
+ thisdir=`pwd`; \
|
||||
cd ${srcdir}/etc; \
|
||||
for page in emacs emacsclient etags ctags ; do \
|
||||
(cd $${thisdir}; \
|
||||
@@ -575,8 +575,8 @@
|
||||
-unset CDPATH; \
|
||||
for dir in $(DESTDIR)${lispdir} $(DESTDIR)${etcdir} ; do \
|
||||
if [ -d $${dir} ]; then \
|
||||
- case `(cd $${dir} ; /bin/pwd)` in \
|
||||
- `(cd ${srcdir} ; /bin/pwd)`* ) ;; \
|
||||
+ case `(cd $${dir} ; pwd)` in \
|
||||
+ `(cd ${srcdir} ; pwd)`* ) ;; \
|
||||
* ) rm -rf $${dir} ;; \
|
||||
esac ; \
|
||||
case $${dir} in \
|
||||
--- emacs-22.1/leim/Makefile.in 2008-02-10 23:55:31.000000000 +0100
|
||||
+++ emacs-22.1/leim/Makefile.in 2008-02-10 23:55:41.000000000 +0100
|
||||
@@ -207,7 +207,7 @@
|
||||
leim-list.el: ${SUBDIRS} ${TIT-MISC} changed.tit changed.misc ${srcdir}/leim-ext.el
|
||||
${RUN-EMACS} -l ${buildlisppath}/international/quail \
|
||||
-f batch-byte-compile-if-not-done ${TIT-MISC:.elc=.el}
|
||||
- if [ x`(cd ${srcdir} && /bin/pwd)` = x`(/bin/pwd)` ] ; then \
|
||||
+ if [ x`(cd ${srcdir} && pwd)` = x`(pwd)` ] ; then \
|
||||
${RUN-EMACS} -l ${buildlisppath}/international/quail \
|
||||
--eval "(update-leim-list-file \".\")" ; \
|
||||
else \
|
||||
@@ -220,11 +220,11 @@
|
||||
if [ ! -d ${INSTALLDIR} ] ; then \
|
||||
${srcdir}/${dot}${dot}/mkinstalldirs ${INSTALLDIR}; \
|
||||
else true; fi
|
||||
- if [ x`(cd ${INSTALLDIR} && /bin/pwd)` != x`(/bin/pwd)` ] ; then \
|
||||
+ if [ x`(cd ${INSTALLDIR} && pwd)` != x`(pwd)` ] ; then \
|
||||
rm -rf ${INSTALLDIR}/leim-list.el; \
|
||||
rm -rf ${INSTALLDIR}/quail ${INSTALLDIR}/ja-dic ; \
|
||||
echo "Copying leim files to ${INSTALLDIR} ..." ; \
|
||||
- if [ x`(cd ${srcdir} && /bin/pwd)` = x`(/bin/pwd)` ] ; then \
|
||||
+ if [ x`(cd ${srcdir} && pwd)` = x`(pwd)` ] ; then \
|
||||
tar -chf - leim-list.el quail ja-dic \
|
||||
| (cd ${INSTALLDIR}; umask 0; tar -xvf - && cat > /dev/null) ;\
|
||||
else \
|
||||
--- emacs-22.1/lib-src/Makefile.in 2008-02-10 23:59:08.000000000 +0100
|
||||
+++ emacs-22.1/lib-src/Makefile.in 2008-02-10 23:59:13.000000000 +0100
|
||||
@@ -306,7 +306,7 @@
|
||||
@echo
|
||||
@echo "Installing utilities run internally by Emacs."
|
||||
$(top_srcdir)/mkinstalldirs $(DESTDIR)${archlibdir}
|
||||
- if [ `(cd $(DESTDIR)${archlibdir} && /bin/pwd)` != `/bin/pwd` ]; then \
|
||||
+ if [ `(cd $(DESTDIR)${archlibdir} && pwd)` != `pwd` ]; then \
|
||||
for file in ${UTILITIES}; do \
|
||||
$(INSTALL_PROGRAM) $(INSTALL_STRIP) $$file $(DESTDIR)${archlibdir}/$$file ; \
|
||||
done ; \
|
||||
@@ -321,8 +321,8 @@
|
||||
chown ${gameuser} $(DESTDIR)${gamedir}; \
|
||||
chmod u=rwx,g=rwx,o=rx $(DESTDIR)${gamedir}; \
|
||||
fi
|
||||
- if [ `(cd $(DESTDIR)${archlibdir} && /bin/pwd)` \
|
||||
- != `(cd ${srcdir} && /bin/pwd)` ]; then \
|
||||
+ if [ `(cd $(DESTDIR)${archlibdir} && pwd)` \
|
||||
+ != `(cd ${srcdir} && pwd)` ]; then \
|
||||
for file in ${SCRIPTS}; do \
|
||||
$(INSTALL_SCRIPT) ${srcdir}/$$file $(DESTDIR)${archlibdir}/$$file; \
|
||||
done ; \
|
||||
@@ -1,12 +0,0 @@
|
||||
source "$stdenv/setup" || exit 1
|
||||
|
||||
unpackPhase && \
|
||||
cd bbdb-*.* && patchPhase && \
|
||||
./configure --prefix="$out" \
|
||||
--with-package-dir="$out/share/emacs/site-lisp" && \
|
||||
make && make install-pkg && \
|
||||
mkdir -p "$out/info" && \
|
||||
make -C texinfo install-pkg && \
|
||||
mv "$out/share/emacs/site-lisp/lisp/bbdb/"* \
|
||||
"$out/share/emacs/site-lisp" && \
|
||||
rm -rf "$out/share/emacs/site-lisp/lisp"
|
||||
@@ -1,22 +0,0 @@
|
||||
{stdenv, fetchurl, emacs, texinfo, ctags}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "bbdb-2.35";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://bbdb.sourceforge.net/bbdb-2.35.tar.gz;
|
||||
sha256 = "3fb1316e2ed74d47ca61187fada550e58797467bd9e8ad67343ed16da769f916";
|
||||
};
|
||||
|
||||
patches = [ ./install-infodir.patch ];
|
||||
|
||||
buildInputs = [emacs texinfo ctags];
|
||||
builder = ./builder.sh;
|
||||
|
||||
meta = {
|
||||
description = ''The Insidious Big Brother Database (BBDB), a
|
||||
contact management utility for Emacs.'';
|
||||
homepage = http://bbdb.sourceforge.net/;
|
||||
license = "GPL";
|
||||
};
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
--- bbdb-2.35/texinfo/Makefile.in 2001-11-20 09:00:12.000000000 +0100
|
||||
+++ bbdb-2.35/texinfo/Makefile.in 2008-02-20 12:07:36.000000000 +0100
|
||||
@@ -27,22 +27,22 @@ all: info bbdb.dvi
|
||||
install-pkg: uninstall-pkg info
|
||||
@if test "x$(SYMLINKS)" = "xno" ; then \
|
||||
for i in `ls bbdb.info* ` ; do \
|
||||
- $(INSTALL_DATA) $$i $(PACKAGEDIR)/info/ ; \
|
||||
+ $(INSTALL_DATA) $$i $(infodir)/ ; \
|
||||
done ; \
|
||||
else \
|
||||
if test "x$(LINKPATH)" = "x" ; then \
|
||||
for i in `ls bbdb.info* ` ; do \
|
||||
- $(LN_S) `pwd`/$$i $(PACKAGEDIR)/info/$$i ; \
|
||||
+ $(LN_S) `pwd`/$$i $(infodir)/$$i ; \
|
||||
done ; \
|
||||
else \
|
||||
for i in `ls bbdb.info* ` ; do \
|
||||
- $(LN_S) $(LINKPATH)/texinfo/$$i $(PACKAGEDIR)/info/$$i ; \
|
||||
+ $(LN_S) $(LINKPATH)/texinfo/$$i $(infodir)/$$i ; \
|
||||
done ; \
|
||||
fi ; \
|
||||
fi
|
||||
|
||||
uninstall-pkg:
|
||||
- -$(RM) $(PACKAGEDIR)/info/bbdb.info*
|
||||
+ -$(RM) $(infodir)/bbdb.info*
|
||||
|
||||
info: bbdb.info
|
||||
@@ -1,4 +0,0 @@
|
||||
source $stdenv/setup
|
||||
|
||||
mkdir -p $out/emacs/site-lisp
|
||||
cp $src $out/emacs/site-lisp/cua.el
|
||||
@@ -1,8 +0,0 @@
|
||||
{stdenv, fetchurl}: stdenv.mkDerivation {
|
||||
name = "cua-mode-2.10";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://nix.cs.uu.nl/dist/tarballs/cua-mode-2.10.el;
|
||||
md5 = "5bf5e43f5f38c8383868c7c6c5baca09";
|
||||
};
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
source $stdenv/setup
|
||||
|
||||
mkdir -p $out/emacs/site-lisp
|
||||
tar zxvf $src
|
||||
cp haskell-mode*/*.el $out/emacs/site-lisp
|
||||
cp haskell-mode*/*.hs $out/emacs/site-lisp
|
||||
@@ -1,8 +0,0 @@
|
||||
{stdenv, fetchurl}: stdenv.mkDerivation {
|
||||
name = "haskell-mode-1.45";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://nix.cs.uu.nl/dist/tarballs/haskell-mode-1.45.tar.gz;
|
||||
md5 = "c609998580cdb9ca8888c7d47d22ca3b";
|
||||
};
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
source $stdenv/setup
|
||||
|
||||
mkdir -p $out/emacs/site-lisp
|
||||
cd $out/emacs/site-lisp
|
||||
tar xvfz $src
|
||||
mv nxml-mode-*/* .
|
||||
rmdir nxml-mode-*
|
||||
@@ -1,8 +0,0 @@
|
||||
{stdenv, fetchurl}: stdenv.mkDerivation {
|
||||
name = "nxml-mode-20041004";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://nix.cs.uu.nl/dist/tarballs/nxml-mode-20041004.tar.gz;
|
||||
md5 = "ac137024cf337d6f11d8ab278d39b4db";
|
||||
};
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
source $stdenv/setup
|
||||
|
||||
preConfigure=preConfigure
|
||||
preConfigure() {
|
||||
libc=$(cat ${NIX_GCC}/nix-support/orig-libc)
|
||||
echo "libc: $libc"
|
||||
|
||||
substituteInPlace src/s/gnu-linux.h \
|
||||
--replace /usr/lib/crt1.o $libc/lib/crt1.o \
|
||||
--replace /usr/lib/crti.o $libc/lib/crti.o \
|
||||
--replace /usr/lib/crtn.o $libc/lib/crtn.o
|
||||
|
||||
for i in Makefile.in ./src/Makefile.in ./lib-src/Makefile.in ./leim/Makefile.in ./admin/unidata/Makefile; do
|
||||
substituteInPlace $i --replace /bin/pwd pwd
|
||||
done
|
||||
}
|
||||
|
||||
preBuild="make bootstrap"
|
||||
|
||||
genericBuild
|
||||
@@ -1,50 +0,0 @@
|
||||
{ xawSupport ? true
|
||||
, xpmSupport ? true
|
||||
, xaw3dSupport ? false
|
||||
, gtkGUI ? false
|
||||
, xftSupport ? false
|
||||
, stdenv, fetchurl, ncurses, x11, libXaw ? null, libXpm ? null, Xaw3d ? null
|
||||
, pkgconfig ? null, gtk ? null, libXft ? null
|
||||
, libpng, libjpeg, libungif, libtiff
|
||||
}:
|
||||
|
||||
assert xawSupport -> libXaw != null;
|
||||
assert xpmSupport -> libXpm != null;
|
||||
assert xaw3dSupport -> Xaw3d != null;
|
||||
assert gtkGUI -> pkgconfig != null && gtk != null;
|
||||
assert xftSupport -> libXft != null && libpng != null; # libpng = probably a bug
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "emacs-23.0.0.1-pre20070705";
|
||||
|
||||
builder = ./builder.sh;
|
||||
|
||||
src = fetchurl {
|
||||
url = http://debs.peadrop.com/pool/edgy/backports/emacs-snapshot_20070705.orig.tar.gz;
|
||||
sha256 = "1blybacpsxha2v24kj482wl3g1z93rwddfc8rsqsk6dr6f5kdj5q";
|
||||
};
|
||||
|
||||
# patches = [
|
||||
# ./crt.patch
|
||||
# ];
|
||||
|
||||
buildInputs = [
|
||||
ncurses x11
|
||||
(if xawSupport then libXaw else null)
|
||||
(if xpmSupport then libXpm 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-gtk --enable-font-backend --with-xft" else ""}
|
||||
";
|
||||
|
||||
meta = {
|
||||
description = "Emacs with Unicode, GTK and Xft support (23.x alpha)";
|
||||
homepage = http://www.emacswiki.org/cgi-bin/wiki/XftGnuEmacs;
|
||||
license = "GPL";
|
||||
};
|
||||
}
|
||||
9
pkgs/applications/editors/emacs/modes/nxml/builder.sh
Normal file
9
pkgs/applications/editors/emacs/modes/nxml/builder.sh
Normal file
@@ -0,0 +1,9 @@
|
||||
. $stdenv/setup || exit 1
|
||||
|
||||
mkdir -p $out/emacs/site-lisp || exit 1
|
||||
cd $out/emacs/site-lisp || exit 1
|
||||
tar xvfz $src || exit 1
|
||||
mv nxml-mode-*/* . || exit 1
|
||||
rmdir nxml-mode-*
|
||||
|
||||
exit 0
|
||||
8
pkgs/applications/editors/emacs/modes/nxml/default.nix
Normal file
8
pkgs/applications/editors/emacs/modes/nxml/default.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{stdenv, fetchurl}: stdenv.mkDerivation {
|
||||
name = "nxml-mode-20031031";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://www.thaiopensource.com/download/nxml-mode-20031031.tar.gz;
|
||||
md5 = "4cbc32047183e6cc1b7a2757d1078bd2";
|
||||
};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{stdenv, fetchurl} :
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "joe-3.3";
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/joe-editor/joe-3.3.tar.gz;
|
||||
md5 = "02221716679c039c5da00c275d61dbf4";
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = http://joe-editor.sourceforge.net;
|
||||
};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
source $stdenv/setup
|
||||
source $makeWrapper
|
||||
|
||||
export MONO_GAC_PREFIX=$monodoc:$gtksharp
|
||||
|
||||
postInstall=postInstall
|
||||
postInstall() {
|
||||
mv $out/bin $out/bin-orig
|
||||
mkdir $out/bin
|
||||
|
||||
moz=$(ls $mozilla/lib/*/libgtkembedmoz.so)
|
||||
|
||||
for i in $out/bin-orig/*; do
|
||||
echo "wrapping $(basename $i)"
|
||||
# !!! TODO: figure out the MONO_GAC_PREFIX automatically
|
||||
makeWrapper "$i" "$out/bin/$(basename $i)" \
|
||||
--suffix PATH ':' "$(dirname $(type -p mono))" \
|
||||
--suffix PATH ':' "$(dirname $(type -p mono))" \
|
||||
--suffix LD_LIBRARY_PATH ':' "$gtksharp/lib" \
|
||||
--suffix MONO_GAC_PREFIX ':' "$gtksharp" \
|
||||
--suffix MONO_GAC_PREFIX ':' "$gtkmozembedsharp" \
|
||||
--suffix MONO_GAC_PREFIX ':' "$gtksourceviewsharp" \
|
||||
--suffix MONO_GAC_PREFIX ':' "$monodoc" \
|
||||
--set MOZILLA_FIVE_HOME "$(dirname $moz)"
|
||||
done
|
||||
}
|
||||
|
||||
genericBuild
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
{ stdenv, fetchurl, file, mono, gtksharp, gtksourceviewsharp
|
||||
, gtkmozembedsharp, monodoc
|
||||
, perl, perlXMLParser, pkgconfig
|
||||
, glib, gtk, GConf, gnomevfs, libbonobo, libglade, libgnome
|
||||
, mozilla
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "monodevelop-0.6-pre2315";
|
||||
builder = ./builder.sh;
|
||||
|
||||
src = fetchurl {
|
||||
url = http://nix.cs.uu.nl/dist/tarballs/monodevelop-0.6-pre2315.tar.bz2;
|
||||
md5 = "8c33df5629b0676b7ab552854c1de6fd";
|
||||
};
|
||||
|
||||
makeWrapper = ../../../build-support/make-wrapper/make-wrapper.sh;
|
||||
|
||||
patches = [./prefix.patch];
|
||||
|
||||
buildInputs = [
|
||||
file mono gtksharp gtksourceviewsharp perl perlXMLParser pkgconfig
|
||||
glib gtk GConf gnomevfs libbonobo libglade libgnome
|
||||
gtkmozembedsharp monodoc
|
||||
];
|
||||
|
||||
inherit mozilla monodoc gtksharp gtkmozembedsharp gtksourceviewsharp;
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
diff -rc MonoDevelop-orig/Makefile.in MonoDevelop/Makefile.in
|
||||
*** MonoDevelop-orig/Makefile.in 2005-03-09 17:43:58.000000000 +0100
|
||||
--- MonoDevelop/Makefile.in 2005-03-09 18:10:20.000000000 +0100
|
||||
***************
|
||||
*** 298,304 ****
|
||||
# (mkdir ../../build/bin/ hack)
|
||||
SUBDIRS = Core build po Extras
|
||||
bin_SCRIPTS = monodevelop
|
||||
! gnome_data = @gnome_prefix@/share
|
||||
desktopdir = $(gnome_data)/applications
|
||||
desktop_DATA = monodevelop.desktop
|
||||
pixmapdir = $(gnome_data)/pixmaps
|
||||
--- 298,304 ----
|
||||
# (mkdir ../../build/bin/ hack)
|
||||
SUBDIRS = Core build po Extras
|
||||
bin_SCRIPTS = monodevelop
|
||||
! gnome_data = @prefix@/share
|
||||
desktopdir = $(gnome_data)/applications
|
||||
desktop_DATA = monodevelop.desktop
|
||||
pixmapdir = $(gnome_data)/pixmaps
|
||||
***************
|
||||
*** 809,818 ****
|
||||
all:
|
||||
|
||||
install-data-hook:
|
||||
! $(UPDATE_MIME_DB) $(gnome_data)/mime
|
||||
|
||||
uninstall-hook:
|
||||
! $(UPDATE_MIME_DB) $(gnome_data)/mime
|
||||
|
||||
run: runmd
|
||||
|
||||
--- 809,818 ----
|
||||
all:
|
||||
|
||||
install-data-hook:
|
||||
! # $(UPDATE_MIME_DB) $(gnome_data)/mime
|
||||
|
||||
uninstall-hook:
|
||||
! # $(UPDATE_MIME_DB) $(gnome_data)/mime
|
||||
|
||||
run: runmd
|
||||
|
||||
Only in MonoDevelop: Makefile.in~
|
||||
@@ -1,21 +0,0 @@
|
||||
source $stdenv/setup
|
||||
source $makeWrapper
|
||||
|
||||
postInstall=postInstall
|
||||
postInstall() {
|
||||
mv $out/bin $out/bin-orig
|
||||
mkdir $out/bin
|
||||
|
||||
for i in $out/bin-orig/*; do
|
||||
echo "wrapping $(basename $i)"
|
||||
# !!! TODO: figure out the MONO_GAC_PREFIX automatically
|
||||
makeWrapper "$i" "$out/bin/$(basename $i)" \
|
||||
--suffix PATH ':' "$(dirname $(type -p mono))" \
|
||||
--suffix MONO_GAC_PREFIX ':' "$gtksharp" \
|
||||
--suffix MONO_GAC_PREFIX ':' "$out"
|
||||
done
|
||||
}
|
||||
|
||||
genericBuild
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
{stdenv, fetchurl, mono, gtksharp, pkgconfig}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "monodoc-1.0.6";
|
||||
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://nix.cs.uu.nl/dist/tarballs/monodoc-1.0.6.tar.gz;
|
||||
md5 = "f2fc27e8e4717d90dc7efa2450625693";
|
||||
};
|
||||
|
||||
makeWrapper = ../../../build-support/make-wrapper/make-wrapper.sh;
|
||||
|
||||
buildInputs = [mono gtksharp pkgconfig];
|
||||
|
||||
inherit gtksharp;
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
args: with args;
|
||||
stdenv.mkDerivation (rec {
|
||||
pname = "nano";
|
||||
version = "2.0.7";
|
||||
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnu/nano/${name}.tar.gz";
|
||||
sha256 = "5dc783c412c4d1ff463c450d2a2f9e1ea53a43d9ba1dda92bbf5182f60db532f";
|
||||
};
|
||||
buildInputs = [ncurses gettext];
|
||||
# configureFlags = "--enable-tiny";
|
||||
configureFlags = "
|
||||
--disable-browser
|
||||
--disable-help
|
||||
--disable-justify
|
||||
--disable-mouse
|
||||
--disable-operatingdir
|
||||
--disable-speller
|
||||
--disable-tabcomp
|
||||
--disable-wrapping
|
||||
";
|
||||
|
||||
meta = {
|
||||
homepage = http://www.nano-editor.org/;
|
||||
description = "A small, user-friendly console text editor";
|
||||
};
|
||||
})
|
||||
@@ -1,11 +0,0 @@
|
||||
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
|
||||
}
|
||||
|
||||
genericBuild
|
||||
@@ -1,23 +0,0 @@
|
||||
{stdenv, fetchurl, x11, motif, libXpm}:
|
||||
|
||||
assert stdenv.system == "i686-linux";
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "nedit-5.5";
|
||||
builder = ./builder.sh;
|
||||
|
||||
src = fetchurl {
|
||||
url = http://nl.nedit.org/ftp/v5_5/nedit-5.5-src.tar.bz2;
|
||||
md5 = "48cb3dce52d44988f3a4d7c6f47b6bbe";
|
||||
};
|
||||
patches = [./dynamic.patch];
|
||||
|
||||
inherit motif;
|
||||
buildInputs = [x11 motif libXpm];
|
||||
|
||||
buildFlags = if stdenv.system == "i686-linux" then "linux" else "";
|
||||
|
||||
meta = {
|
||||
homepage = http://www.nedit.org;
|
||||
};
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
diff -rc nedit-5.5-orig/makefiles/Makefile.linux nedit-5.5/makefiles/Makefile.linux
|
||||
*** nedit-5.5-orig/makefiles/Makefile.linux 2003-05-20 02:27:56.000000000 +0200
|
||||
--- nedit-5.5/makefiles/Makefile.linux 2005-12-03 00:42:23.000000000 +0100
|
||||
***************
|
||||
*** 17,27 ****
|
||||
# To test if the Motif library exports the runtime version
|
||||
# add -DHAVE__XMVERSIONSTRING to CFLAGS
|
||||
#
|
||||
! CFLAGS=-O -I/usr/X11R6/include -DUSE_DIRENT -DUSE_LPR_PRINT_CMD
|
||||
|
||||
ARFLAGS=-urs
|
||||
|
||||
! LIBS= -L/usr/X11R6/lib -Wl,-Bstatic -lXm -Wl,-Bdynamic -lXp -lXpm -lXext -lXt -lSM -lICE -lX11 -lm
|
||||
|
||||
include Makefile.common
|
||||
|
||||
--- 17,27 ----
|
||||
# To test if the Motif library exports the runtime version
|
||||
# add -DHAVE__XMVERSIONSTRING to CFLAGS
|
||||
#
|
||||
! CFLAGS=-O -DUSE_DIRENT -DUSE_LPR_PRINT_CMD
|
||||
|
||||
ARFLAGS=-urs
|
||||
|
||||
! LIBS= -lXm -lXp -lXpm -lXext -lXt -lSM -lICE -lX11 -lm
|
||||
|
||||
include Makefile.common
|
||||
@@ -1,19 +0,0 @@
|
||||
{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;
|
||||
};
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
# TODO tidy up eg The patchelf code is patching gvim even if you don't build it..
|
||||
# but I have gvim with python support now :) - Marc
|
||||
args:
|
||||
let edf = args.lib.enableDisableFeature; in
|
||||
( args.mkDerivationByConfiguration {
|
||||
# most interpreters aren't tested yet.. (see python for example how to do it)
|
||||
flagConfig = {
|
||||
mandatory = { cfgOption = "--enable-gui=auto --with-features=${args.features}";
|
||||
buildInputs = ["ncurses" "pkgconfig"];
|
||||
};
|
||||
X11 = { buildInputs = [ "libX11" "libXext" "libSM" "libXpm" "libXt" "libXaw" "libXau" "libXmu" ]; };
|
||||
|
||||
} // edf "darwin" "darwin" { } #Disable Darwin (Mac OS X) support.
|
||||
// edf "xsmp" "xsmp" { } #Disable XSMP session management
|
||||
// edf "xsmp_interact" "xsmp_interact" { } #Disable XSMP interaction
|
||||
// edf "mzscheme" "mzschemeinterp" { } #Include MzScheme interpreter.
|
||||
// edf "perl" "perlinterp" { } #Include Perl interpreter.
|
||||
// edf "python" "pythoninterp" { pass = "python"; } #Include Python interpreter.
|
||||
// edf "tcl" "tclinterp" { } #Include Tcl interpreter.
|
||||
// edf "ruby" "rubyinterp" { } #Include Ruby interpreter.
|
||||
// edf "cscope" "cscope" { } #Include cscope interface.
|
||||
// edf "workshop" "workshop" { } #Include Sun Visual Workshop support.
|
||||
// edf "netbeans" "netbeans" { } #Disable NetBeans integration support.
|
||||
// edf "sniff" "sniff" { } #Include Sniff interface.
|
||||
// edf "multibyte" "multibyte" { } #Include multibyte editing support.
|
||||
// edf "hangulinput" "hangulinput" { } #Include Hangul input support.
|
||||
// edf "xim" "xim" { pass = "xim"; } #Include XIM input support.
|
||||
// edf "fontset" "fontset" { } #Include X fontset output support.
|
||||
|
||||
#--enable-gui=OPTS X11 GUI default=auto OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon
|
||||
/*
|
||||
// edf "gtk_check" "gtk_check" { } #If auto-select GUI, check for GTK default=yes
|
||||
// edf "gtk2_check" "gtk2_check" { } #If GTK GUI, check for GTK+ 2 default=yes
|
||||
// edf "gnome_check" "gnome_check" { } #If GTK GUI, check for GNOME default=no
|
||||
// edf "motif_check" "motif_check" { } #If auto-select GUI, check for Motif default=yes
|
||||
// edf "athena_check" "athena_check" { } #If auto-select GUI, check for Athena default=yes
|
||||
// edf "nextaw_check" "nextaw_check" { } #If auto-select GUI, check for neXtaw default=yes
|
||||
// edf "carbon_check" "carbon_check" { } #If auto-select GUI, check for Carbon default=yes
|
||||
// edf "gtktest" "gtktest" { } #Do not try to compile and run a test GTK program
|
||||
*/
|
||||
// edf "acl" "acl" { } #Don't check for ACL support.
|
||||
// edf "gpm" "gpm" { } #Don't use gpm (Linux mouse daemon).
|
||||
// edf "nls" "nls" { } #Don't support NLS (gettext()).
|
||||
;
|
||||
|
||||
optionals = ["python"];
|
||||
|
||||
extraAttrs = co : {
|
||||
name = "vim_configurable-7.1";
|
||||
|
||||
src = args.fetchurl {
|
||||
url = ftp://ftp.nluug.nl/pub/editors/vim/unix/vim-7.1.tar.bz2;
|
||||
sha256 = "0w6gy49gdbw7hby5rjkjpa7cdvc0z5iajsm4j1h8108rvfam22kz";
|
||||
};
|
||||
|
||||
postInstall = "
|
||||
rpath=`patchelf --print-rpath \$out/bin/vim`;
|
||||
for i in $\buildInputs; do
|
||||
echo adding \$i/lib
|
||||
rpath=\$rpath:\$i/lib
|
||||
done
|
||||
echo \$buildInputs
|
||||
echo \$rpath
|
||||
patchelf --set-rpath \$rpath \$out/bin/{vim,gvim}
|
||||
";
|
||||
|
||||
meta = {
|
||||
description = "The most popular clone of the VI editor";
|
||||
homepage = "www.vim.org";
|
||||
};
|
||||
};
|
||||
} ) args
|
||||
@@ -1,62 +0,0 @@
|
||||
args:
|
||||
let
|
||||
defList = [];
|
||||
#stdenv and fetchurl are added automatically
|
||||
getVal = (args.lib.getValue args defList);
|
||||
check = args.lib.checkFlag args;
|
||||
reqsList = [
|
||||
["gtkGUI" "glib" "gtk" "pkgconfig" "libXpm" "libXext" "x11Support"]
|
||||
["athenaGUI" "libXau" "libXt" "libXaw" "libXpm" "libXext" "x11Support"]
|
||||
["x11Support" "libX11"]
|
||||
["hugeFeatures"]
|
||||
["pythonSupport" "python"]
|
||||
["perlSupport" "perl"]
|
||||
["tclSupport" "tcl"]
|
||||
["true" "ncurses"]
|
||||
["false" "libSM"]
|
||||
];
|
||||
nameSuffixes = [
|
||||
"hugeFeatures" "-huge"
|
||||
"x11Support" "-X11"
|
||||
"pythonSupport" "-python"
|
||||
"perlSupport" "-perl"
|
||||
"tclSupport" "-tcl"
|
||||
"ximSupport" "-xim"
|
||||
];
|
||||
configFlags = [
|
||||
"true" " "
|
||||
"x11Support" " --enable-gui=auto "
|
||||
"hugeFeatures" "--with-features=huge --enable-cscope --enable-multibyte --enable-xsmp "
|
||||
"pythonSupport" " --enable-pythoninterp "
|
||||
"perlSupport" " --enable-perlinterp "
|
||||
"tclSupport" " --enable-tclinterp "
|
||||
"ximSupport" " --enable-xim "
|
||||
];
|
||||
buildInputsNames = args.lib.filter (x: (null!=getVal x))
|
||||
(args.lib.uniqList {inputList =
|
||||
(args.lib.concatLists (map
|
||||
(x:(if (x==[]) then [] else builtins.tail x))
|
||||
reqsList));});
|
||||
in
|
||||
assert args.lib.checkReqs args defList reqsList;
|
||||
args.stdenv.mkDerivation {
|
||||
name = args.lib.condConcat "vim-7.1" nameSuffixes check;
|
||||
|
||||
src = args.fetchurl {
|
||||
url = ftp://ftp.nluug.nl/pub/editors/vim/unix/vim-7.1.tar.bz2;
|
||||
sha256 = "0w6gy49gdbw7hby5rjkjpa7cdvc0z5iajsm4j1h8108rvfam22kz";
|
||||
};
|
||||
|
||||
inherit (args) ncurses;
|
||||
|
||||
buildInputs = args.lib.filter (x: (x!=null)) (map getVal buildInputsNames);
|
||||
|
||||
postInstall = "ln -s $out/bin/vim $out/bin/vi";
|
||||
preBuild="touch src/auto/link.sed";
|
||||
configureFlags = args.lib.condConcat "" configFlags check;
|
||||
|
||||
meta = {
|
||||
description = "The most popular clone of the VI editor";
|
||||
homepage = http://www.vim.org;
|
||||
};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
args: with args;
|
||||
(stdenv.mkDerivation (rec {
|
||||
name = "ImageMagick-6.3.7-10";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://imagemagick/" + name + ".tar.bz2";
|
||||
sha256 = "c00fb0d21baa292a55bb0e30ca30ffe2571e0d3df9e692da441aa81ff1cdde10";
|
||||
};
|
||||
|
||||
configureFlags = " --with-dots --with-gs-font-dir="+ ghostscript +
|
||||
"/share/ghostscript/fonts --with-gslib " +(
|
||||
if args ? tetex then " --with-frozenpaths " else ""
|
||||
);
|
||||
|
||||
buildInputs = [bzip2 freetype ghostscript graphviz libjpeg libpng
|
||||
libtiff libX11 libxml2 zlib libtool] ++ (if args ? tetex then [args.tetex] else [])
|
||||
++ (if args ? librsvg then [args.librsvg] else []);
|
||||
|
||||
meta = {
|
||||
description = ''ImageMagick(R) is a software suite to create, edit, and compose bitmap
|
||||
images. It can read, convert and write images in a variety of
|
||||
formats (over 100).'';
|
||||
homepage = http://www.imagemagick.org;
|
||||
};
|
||||
} // (if args ? tetex then {
|
||||
preConfigure = "
|
||||
export DVIDecodeDelegate=${args.tetex}/bin/dvips
|
||||
";
|
||||
} else {})))
|
||||
@@ -1,16 +0,0 @@
|
||||
{stdenv, fetchurl, python, boost, pkgconfig, imagemagick}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "PythonMagick-0.7";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://www.imagemagick.org/download/python/PythonMagick-0.7.tar.gz;
|
||||
sha256 = "1553kyzdcysii2qhbpbgs0icmfpm6s2lp3zchgs73cxfnfym8lz1";
|
||||
};
|
||||
|
||||
buildInputs = [python boost pkgconfig imagemagick];
|
||||
|
||||
meta = {
|
||||
homepage = http://www.imagemagick.org/script/api.php;
|
||||
};
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
set -e
|
||||
|
||||
source $stdenv/setup
|
||||
|
||||
unzip $src
|
||||
mkdir $out
|
||||
mv batik-* $out/batik
|
||||
@@ -1,12 +0,0 @@
|
||||
{stdenv, fetchurl, unzip}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "batik-1.6";
|
||||
builder = ./builder.sh;
|
||||
src = fetchurl {
|
||||
url = http://nix.cs.uu.nl/dist/tarballs/batik-1.6.zip;
|
||||
md5 = "edff288fc64f968ff96ca49763d50f3c";
|
||||
};
|
||||
|
||||
buildInputs = [unzip];
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{stdenv, fetchurl, gtk, pkgconfig, glib, perl, perlXMLParser, libxml2, gettext, python, libxml2Python, docbook5, docbook_xsl, libxslt }:
|
||||
stdenv.mkDerivation {
|
||||
name = "dia-0.96";
|
||||
|
||||
src = fetchurl {
|
||||
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];
|
||||
|
||||
meta = {
|
||||
description = "Gnome Diagram drawing software.";
|
||||
homepage = http://www.gnome.org/projects/dia;
|
||||
};
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
args: with args;
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "djview4-4.1-2";
|
||||
src = fetchurl {
|
||||
url = mirror://sf/djvu/djview4-4.1-2.tar.gz;
|
||||
sha256 = "10k0h892kab3n8xypw6vsnvhwil410hvvqj375pwiss4vlm5isv1";
|
||||
};
|
||||
|
||||
buildInputs = [djvulibre qt4];
|
||||
|
||||
meta = {
|
||||
homepage = http://djvu.sourceforge.net/djview4.html;
|
||||
description = "A new portable DjVu viewer and browser plugin";
|
||||
license = "GPL2";
|
||||
};
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
args: with args;
|
||||
|
||||
assert fltk.flag_set_gl;
|
||||
stdenv.mkDerivation {
|
||||
|
||||
name ="openexr_viewers-1.0.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.savannah.nongnu.org/releases/openexr/openexr_viewers-1.0.1.tar.gz";
|
||||
sha256 = "1w5qbcdp7sw48z1wk2v07f7p14vqqb1m2ncxyxnbkm9f4ab0ymg6";
|
||||
};
|
||||
|
||||
inherit fltk mesa;
|
||||
|
||||
configurePhase = "
|
||||
# don't know why.. adding these flags it works
|
||||
#export CXXFLAGS=`fltk-config --use-gl --cxxflags --ldflags`
|
||||
./configure --prefix=\$out --with-fltk-config=\$fltk/bin/fltk-config";
|
||||
|
||||
buildInputs = [openexr fltk pkgconfig mesa which openexr_ctl];
|
||||
|
||||
meta = {
|
||||
description = "tool to view OpenEXR images";
|
||||
homepage = http://openexr.com;
|
||||
license = "BSD-like";
|
||||
};
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
source $stdenv/setup
|
||||
source $makeWrapper
|
||||
|
||||
postInstall=postInstall
|
||||
postInstall() {
|
||||
mv $out/bin $out/bin-orig
|
||||
mkdir $out/bin
|
||||
|
||||
for i in $out/bin-orig/*; do
|
||||
echo "wrapping $(basename $i)"
|
||||
# !!! TODO: figure out the MONO_GAC_PREFIX automatically
|
||||
makeWrapper "$i" "$out/bin/$(basename $i)" \
|
||||
--prefix PATH ':' "$(dirname $(type -p mono))" \
|
||||
--prefix LD_LIBRARY_PATH ':' "$sqlite/lib" \
|
||||
--prefix LD_LIBRARY_PATH ':' "$libgnomeui/lib/libglade/2.0" \
|
||||
--prefix MONO_GAC_PREFIX ':' "$gtksharp"
|
||||
done
|
||||
|
||||
# !!! hack
|
||||
export ALL_INPUTS="$out $pkgs"
|
||||
|
||||
find $out -name "*.dll.config" -o -name "*.exe.config" | while read configFile; do
|
||||
echo "modifying config file $configFile"
|
||||
$monoDLLFixer "$configFile"
|
||||
done
|
||||
}
|
||||
|
||||
genericBuild
|
||||
@@ -1,30 +0,0 @@
|
||||
{ stdenv, fetchurl, perl, perlXMLParser, pkgconfig, mono, libexif
|
||||
, libgnome, libgnomeui, gtksharp, libjpeg, sqlite, lcms, libgphoto2
|
||||
, monoDLLFixer
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "f-spot-0.0.10";
|
||||
|
||||
builder = ./builder.sh;
|
||||
makeWrapper = ../../../build-support/make-wrapper/make-wrapper.sh;
|
||||
|
||||
src = fetchurl {
|
||||
url = http://nix.cs.uu.nl/dist/tarballs/f-spot-0.0.10.tar.bz2;
|
||||
md5 = "19cc6e067ccc261b0502ff6189b79832";
|
||||
};
|
||||
|
||||
patches = [./dllmap.patch];
|
||||
|
||||
buildInputs = [
|
||||
perl perlXMLParser pkgconfig mono libexif
|
||||
libgnome libgnomeui gtksharp libjpeg sqlite
|
||||
lcms libgphoto2
|
||||
];
|
||||
|
||||
inherit monoDLLFixer gtksharp sqlite libgnomeui;
|
||||
|
||||
meta = {
|
||||
homepage = http://f-spot.org;
|
||||
};
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
diff -rc f-spot-0.0.10-orig/libgphoto2-sharp/libgphoto2-sharp.dll.config f-spot-0.0.10/libgphoto2-sharp/libgphoto2-sharp.dll.config
|
||||
*** f-spot-0.0.10-orig/libgphoto2-sharp/libgphoto2-sharp.dll.config 2005-02-27 19:25:09.000000000 +0100
|
||||
--- f-spot-0.0.10/libgphoto2-sharp/libgphoto2-sharp.dll.config 2005-03-11 12:13:12.000000000 +0100
|
||||
***************
|
||||
*** 1,3 ****
|
||||
<configuration>
|
||||
! <dllmap dll="libgphoto2.so" target="/usr/lib/libgphoto2.so.2"/>
|
||||
</configuration>
|
||||
--- 1,3 ----
|
||||
<configuration>
|
||||
! <dllmap dll="libgphoto2.so" target="libgphoto2.so.2"/>
|
||||
</configuration>
|
||||
diff -rc f-spot-0.0.10-orig/src/f-spot.exe.config.in f-spot-0.0.10/src/f-spot.exe.config.in
|
||||
*** f-spot-0.0.10-orig/src/f-spot.exe.config.in 2005-02-27 18:03:02.000000000 +0100
|
||||
--- f-spot-0.0.10/src/f-spot.exe.config.in 2005-03-11 12:48:03.000000000 +0100
|
||||
***************
|
||||
*** 9,13 ****
|
||||
<dllmap dll="libfspoteog" target="@prefix@/lib/f-spot/libfspoteog.so.0"/>
|
||||
<dllmap dll="libfspotjpeg" target="@prefix@/lib/f-spot/libfspotjpg.so.0"/>
|
||||
<dllmap dll="liblcms-1.0.0.dll" target="liblcms.so.1"/>
|
||||
! <dllmap dll="libexif.dll" target="libexif.so.@EXIF_SOVERSION@"/>
|
||||
</configuration>
|
||||
--- 9,13 ----
|
||||
<dllmap dll="libfspoteog" target="@prefix@/lib/f-spot/libfspoteog.so.0"/>
|
||||
<dllmap dll="libfspotjpeg" target="@prefix@/lib/f-spot/libfspotjpg.so.0"/>
|
||||
<dllmap dll="liblcms-1.0.0.dll" target="liblcms.so.1"/>
|
||||
! <dllmap dll="libexif.dll" target="libexif.so"/>
|
||||
</configuration>
|
||||
@@ -1,30 +0,0 @@
|
||||
{stdenv, fetchurl, x11, imlib2, libjpeg, libpng}:
|
||||
|
||||
let
|
||||
|
||||
giblib = stdenv.mkDerivation {
|
||||
name = "giblib-1.2.4";
|
||||
src = fetchurl {
|
||||
url = http://linuxbrit.co.uk/downloads/giblib-1.2.4.tar.gz;
|
||||
sha256 = "1b4bmbmj52glq0s898lppkpzxlprq9aav49r06j2wx4dv3212rhp";
|
||||
};
|
||||
buildInputs = [x11 imlib2];
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "feh-1.3.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = http://linuxbrit.co.uk/downloads/feh-1.3.4.tar.gz;
|
||||
sha256 = "091iz2id5z80vn2qxg0ipwncv5bv8i9ifw2q15ja9zazq6xz5fc1";
|
||||
};
|
||||
|
||||
buildInputs = [x11 imlib2 giblib libjpeg libpng];
|
||||
|
||||
meta = {
|
||||
description = "A light-weight image viewer";
|
||||
homepage = http://linuxbrit.co.uk/feh/;
|
||||
};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{ stdenv, fetchurl, pkgconfig, gtk, libgtkhtml, freetype
|
||||
, fontconfig, libart_lgpl, libtiff, libjpeg, libpng, libexif, zlib, perl
|
||||
, perlXMLParser, python, pygtk, gettext, xlibs
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "gimp-2.4.4";
|
||||
src = fetchurl {
|
||||
url = ftp://ftp.gtk.org/pub/gimp/v2.4/gimp-2.4.4.tar.bz2;
|
||||
sha256 = "1mnl30b4p7c2lxi68z3fhwmganhwppyiw7r0m3r90vnakcawfnfh";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
pkgconfig gtk libgtkhtml freetype fontconfig
|
||||
libart_lgpl libtiff libjpeg libpng libexif zlib perl
|
||||
perlXMLParser python pygtk gettext
|
||||
];
|
||||
|
||||
configureFlags = [ "--disable-print" ];
|
||||
|
||||
# "screenshot" needs this.
|
||||
NIX_LDFLAGS = "-rpath ${xlibs.libX11}/lib";
|
||||
|
||||
meta = {
|
||||
description = "The GNU Image Manipulation Program";
|
||||
homepage = http://www.gimp.org/;
|
||||
license = "GPL";
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
args : with args;
|
||||
let localDefs = builderDefs {
|
||||
src = /* put a fetchurl here */
|
||||
fetchurl {
|
||||
url = http://prdownloads.sourceforge.net/jocr/gocr-0.44.tar.gz;
|
||||
sha256 = "0kvb7cbk6z5n4g0hhbwpdk2f3819yfamwsmkwanj99yhni6p5mr0";
|
||||
};
|
||||
|
||||
buildInputs = [];
|
||||
configureFlags = [];
|
||||
} null; /* null is a terminator for sumArgs */
|
||||
in with localDefs;
|
||||
stdenv.mkDerivation rec {
|
||||
name = "gocr";
|
||||
builder = writeScript (name + "-builder")
|
||||
(textClosure localDefs [doConfigure doMakeInstall doForceShare doPropagate]);
|
||||
meta = {
|
||||
description = "
|
||||
GPL Optical Character Recognition
|
||||
";
|
||||
};
|
||||
}
|
||||
@@ -6,17 +6,12 @@ assert pkgconfig != null && gtk != null && libpng != null;
|
||||
# !!! assert libpng == gtk.libpng;
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "gqview-2.1.5";
|
||||
name = "gqview-1.4.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = mirror://sourceforge/gqview/gqview-2.1.5.tar.gz;
|
||||
md5 = "4644187d9b14b1dc11ac3bb146f262ea";
|
||||
url = http://heanet.dl.sourceforge.net/sourceforge/gqview/gqview-1.4.1.tar.gz;
|
||||
md5 = "d963fbb878d78e8ebf78ea8c18caa72f";
|
||||
};
|
||||
|
||||
buildInputs = [pkgconfig gtk libpng];
|
||||
|
||||
meta = {
|
||||
description = "A fast image viewer";
|
||||
homepage = http://gqview.sourceforge.net;
|
||||
};
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user