An interesting complication is that we have to change the ELF type
of the executable from `Linux' to `SVR4', otherwise the
`ld-linux.so.2' trick to override the glibc used doesn't work
(apparently `Linux' is not a recognised ELF type!).
UT doesn't work with software Mesa, so right now we impurily use
`/usr/lib/libGL.so'. I cannot really test whether it works with
hardware Mesa, since it barfs with an error about missing OpenGL
extensions. But that's probably because I'm testing this on an
iBook over an SSH connection to a Linux machine.
svn path=/nixpkgs/trunk/; revision=1047
to deploy existing binary-only components.
We use the `ld-linux.so.2 PROGRAM' trick to force the use of our own
glibc, and set LD_LIBRARY_PATH to point to the required libraries
(X11, Mesa).
Since Mesa is software-only, Q3A is rather slow. I'll have to
figure out how to use the Mesa from XFree86 (X.Org), since it knows
how to use DRI (or at least speak the GLX protocol). Unfortunately
the xlibs people haven't modularised that part of XFree86 yet.
Also, the flag `+set s_initsound 0' has to be passed to Quake to
disable sound, otherwise it segfaults on startup. It doesn't do
this with the normal glibc, which is strange. Maybe it tries to
dynamically load some sound library or something.
svn path=/nixpkgs/trunk/; revision=1046
* Zapping/VLC/MPlayer: use libXv.
* MPlayer: upgrade to 1.0pre4.
* Zapping: add libXext to the rpath. I don't understand why this is
necessary. Zapping doesn't itself link against libXext, though some
of its dependencies do. (Maybe this is due to `--export-dynamic'?)
svn path=/nixpkgs/trunk/; revision=990
the tree being fetched from a Subversion repository. The revision
number is now optional (and defaults to HEAD).
This makes `fetchsvn' more pure. First, a URL/revision tuple does
not uniquely identify a file resource, since the repository itself
might change. Second, `svn:external' attributes can cause arbitrary
resources to be exported.
A script `nix-prefetch-svn' has been provided to determine the hash
of a URL.
svn path=/nixpkgs/trunk/; revision=938
adds all directories specified in `ACLOCAL_PATH' to the `aclocal'
command line as `-I' flags. Also, it provides a setup hook that
adds the `.../share/aclocal' directory of every build input to
`ACLOCAL_PATH'.
* Upgraded Libtool.
* Graphviz requires the X Athena widgets, which in turn requires the X
miscellaneous utilities library; added those. However it doesn't
work yet since libXt is broken.
svn path=/nixpkgs/trunk/; revision=888
On the downside, the build process of stdenvLinux builds gcc 9 times
(3 x 3 bootstrap stages). That's a bit excessive.
svn path=/nixpkgs/trunk/; revision=880
* Make builders unexecutable by removing the hash-bang line and
execute permission.
* Convert calls to `derivation' to `mkDerivation'.
* Remove `system' and `stdenv' attributes from calls to
`mkDerivation'. These transformations were all done automatically,
so it is quite possible I broke stuff.
* Put the `mkDerivation' function in stdenv/generic.
svn path=/nixpkgs/trunk/; revision=874
builders for typical Autoconf-style to be much shorten, e.g.,
. $stdenv/setup
genericBuild
The generic builder does lots of stuff automatically:
- Unpacks source archives specified by $src or $srcs (it knows about
gzip, bzip2, tar, zip, and unpacked source trees).
- Determines the source tree.
- Applies patches specified by $patches.
- Fixes libtool not to search for libraries in /lib etc.
- Runs `configure'.
- Runs `make'.
- Runs `make install'.
- Strips debug information from static libraries.
- Writes nested log information (in the format accepted by
`log2xml').
There are also lots of hooks and variables to customise the generic
builder. See `stdenv/generic/docs.txt'.
* Adapted the base packages (i.e., the ones used by stdenv) to use the
generic builder.
* We now use `curl' instead of `wget' to download files in `fetchurl'.
* Neither `curl' nor `wget' are part of stdenv. We shouldn't
encourage people to download stuff in builders (impure!).
* Updated some packages.
* `buildinputs' is now `buildInputs' (but the old name also works).
* `findInputs' in the setup script now prevents inputs from being
processed multiple times (which could happen, e.g., if an input was
a propagated input of several other inputs; this caused the size
variables like $PATH to blow up exponentially in the worst case).
* Patched GNU Make to write nested log information in the format
accepted by `log2xml'. Also, prior to writing the build command,
Make now writes a line `building X' to indicate what is being
built. This is unfortunately often obscured by the gigantic tool
invocations in many Makefiles. The actual build commands are marked
`unimportant' so that they don't clutter pages generated by
`log2html'.
svn path=/nixpkgs/trunk/; revision=845
checked whether absolute paths passed to gcc/ld refer to the store,
which is wrong: they can also refer to the build tree
(/tmp/nix-...).
* Less static composition in the construction of stdenv-nix-linux:
gcc-wrapper and generic are now passed in as arguments, rather then
referenced by relative path. This makes it easier to hack on a
specific stage of the bootstrap process (before, a change to, e.g.,
generic/setup.sh would cause all bootstrap stages to be redone).
svn path=/nixpkgs/trunk/; revision=833
- gcc/ld-wrappers have been factored out into a separate
derivation. This allows a working gcc to be installed in the user
environment. (Previously the Nix gcc didn't work because it
needed a whole bunch of flags to point to glibc.)
- Better modularity: packages can specify hooks into the setup
scripts. For instance, setup no longer knows about the
PKG_CONFIG_PATH variable; pkgconfig can set it up instead.
- gcc not longer depends on binutils. This simplifies the bootstrap
process.
svn path=/nixpkgs/trunk/; revision=816
(stdenv) on Linux. The previous 1-stage bootstrap was insufficient,
because the tools in stdenv where built by native tools. For
instance, the Nix bash had a reference to /lib/libncurses. This
doesn't happen with a 2-stage bootstrap, since the bash built in
stage 2 will be built with the gcc built in stage 1, which doesn't
search in the "standard" locations.
Motto: "Disparaging the boot is a bootable offense."
svn path=/nixpkgs/trunk/; revision=809
stages of the bootstrap process (i.e., stdenvLinuxBoot).
* Add those packages to the distribution. We didn't do that before
because it would cause them to be built twice.
svn path=/nixpkgs/trunk/; revision=753
a big problem, so I decided to require to user to get the
file and put it in some location in the file system. wget
doesn't seem to accept the file scheme however, so I had to
move the copying into the builder itself. The builder checks
the md5 hash of the downloaded file. Maybe having a separate
'fetchfile' would be useful to make a file in the outside
world pure. I tried to add this to build-support, but this
obviously did not work. I still committed it. Just remove it
if you think that it sucks.
svn path=/nixpkgs/trunk/; revision=716
and automake. Copying the files in $libtool/share/aclocal to
$autoconf/share/aclocal does not work (and causes collisions when
installing the tools in the user environment). The solution seems to
be to install the three distributions in one single $out directory,
i.e., consider them as one package.
svn path=/nixpkgs/trunk/; revision=597
aggregation in all-packages-generic: autotools
building strategoxt from svn
not complete yet since autconf cannot find libtool
svn path=/nixpkgs/trunk/; revision=596
against the right dynamic libraries. set-env.sh add the right linker flags to the
NIX_LDFLAGS environment variable, which is passed by gcc-wrapper to the linker.
(In many cases these flags could just be passed through LDFLAGS to configure
scripts; however, in many other cases this doesn't work properly.)
--This line, and those below, will be ignored--
M pkgs/atk/atk-build.sh
M pkgs/glibc/glibc-build.sh
M pkgs/expat/expat-build.sh
M pkgs/freetype/freetype-build.sh
M pkgs/system/populate-linkdirs.pl
M pkgs/sdf2/sdf2-build.sh
M pkgs/pspell/pspell-build.sh
M pkgs/subversion/subversion-build.sh
M pkgs/helpers/set-env.sh
M pkgs/pango/pango-build.sh
M pkgs/strategoxt/strategoxt-build.sh
M pkgs/aterm/aterm-build.sh
M pkgs/libxml2/libxml2-build.sh
M pkgs/glib-1/glib-build.sh
M pkgs/glib/glib-build.sh
M pkgs/pan/pan.fix
M pkgs/pan/pan-build.sh
M pkgs/libxslt/libxslt-build.sh
M pkgs/httpd/httpd-build.sh
M pkgs/openssl/openssl-build.sh
M pkgs/gtkspell/gtkspell-build.sh
M pkgs/fontconfig/fontconfig.fix
M pkgs/fontconfig/fontconfig-build.sh
M pkgs/gnet/gnet-build.sh
M pkgs/gtk+-1/gtk+-build.sh
M pkgs/gtk+/gtk+-build.sh
M pkgs/stdenv/gcc-wrapper.sh
M pkgs/stdenv/stdenv-build.sh
M pkgs/db4/db4-build.sh
M pkgs/db4/db4.fix
M pkgs/MPlayer/MPlayer-build.sh
M pkgs/swig/swig-build.sh
svn path=/nixpkgs/trunk/; revision=213
* Disabled gtkspell support in pan since it (and it alone) has a conflict with the
system glibc.
* Use CPU detection in MPlayer so that it also works on systems with different CPUs
than the build system's.
svn path=/nixpkgs/trunk/; revision=206
* A solution to the library abstraction problem (i.e., if
package X needs library Y, and library Y needs library Z,
then we do not (generally) want to declare Z as a input to X
since that would break abstraction). This was not possible
under the old Nix.
svn path=/nixpkgs/trunk/; revision=150