Commit graph

828 commits

Author SHA1 Message Date
Eelco Dolstra 8ed9ea8b51 * Use a Nix shell for gcc-wrapper and ld-wrapper.
svn path=/nixpkgs/trunk/; revision=875
2004-03-29 17:34:00 +00:00
Eelco Dolstra 12ae5363ea * Remove trivial builders.
* 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
2004-03-29 17:23:01 +00:00
Eelco Dolstra 5862e56f26 * For simple Autotools-style packages (such as the ATerm library), the
builder may now be omitted entirely; the function `mkDerivation'
  will then use a default build script.

svn path=/nixpkgs/trunk/; revision=868
2004-03-28 21:17:56 +00:00
Eelco Dolstra 892b119c9d * It is now possible to execute a builder using a shell inside the Nix
store, rather than outside (such as /bin/sh).

  For instance, the Nix expression for the ATerm library now looks
  like this:

    {stdenv, fetchurl}:

    stdenv.mkDerivation {
      name = "aterm-2.0.5";
      builder = ./builder.sh;
      ...
    }

  where `mkDerivation' is a helper function in `stdenv' that massages
  the given attribute set into using the bash shell that is part of
  the standard environment:

    mkDerivation = attrs: derivation (att s // {
      builder = pkgs.bash ~ /bin/sh;
      args = ["-e" attrs.builder];
      stdenv = (...);
      system = (...).system;
    });

  Note that this makes it unnecessary to set the `stdenv' and `system'
  attributes, since `mkDerivation' already does that.


svn path=/nixpkgs/trunk/; revision=866
2004-03-28 21:07:43 +00:00
Eelco Dolstra f45695f7fa * Use $propagatedBuildInputs to find build inputs.
* Bug fix in setup.sh.

svn path=/nixpkgs/trunk/; revision=861
2004-03-27 22:09:34 +00:00
Eelco Dolstra f0b3c89f89 * Fix all files called `ltmain.sh' in the source tree.
svn path=/nixpkgs/trunk/; revision=854
2004-03-27 15:48:46 +00:00
Eelco Dolstra cbe3e13bde * Style fix.
svn path=/nixpkgs/trunk/; revision=846
2004-03-19 17:01:46 +00:00
Eelco Dolstra 5941f66f0e * The stdenv setup script now defines a generic builder that allows
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
2004-03-19 16:53:04 +00:00
Eelco Dolstra 0fd59fd7a4 * Re-enabled purity checking: it should work now. First we only
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
2004-03-12 11:12:18 +00:00
Eelco Dolstra de13527000 * Finally got stdenv-nix-linux working again. Still not perfect,
though.
* libxml2: upgrade to latest.
* octavefront/rna: keep debug info.

svn path=/nixpkgs/trunk/; revision=830
2004-03-11 17:26:14 +00:00
Eelco Dolstra a1b3ae0c81 * stdenv-nix-linux should more-or-less work again now.
svn path=/nixpkgs/trunk/; revision=826
2004-03-09 17:16:02 +00:00
Eelco Dolstra 70d26112f2 * Set the TZ variable to UTC to prevent silly errors in date strings.
* Bug fix in PATH initialisation.

svn path=/nixpkgs/trunk/; revision=818
2004-03-09 10:27:42 +00:00
Eelco Dolstra 946a2d4a48 * gcc-wrapper now filters out -L and -I flags referring to paths
outside the store (in pure builds).

svn path=/nixpkgs/trunk/; revision=817
2004-03-08 18:29:08 +00:00
Eelco Dolstra ce50734cf0 * Started reorganising stdenv:
- 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
2004-03-08 16:02:46 +00:00
Eelco Dolstra 1999676d30 * Bug fix: don't pass -B to the linker.
svn path=/nixpkgs/trunk/; revision=811
2004-02-20 10:03:46 +00:00
Eelco Dolstra b7ad383924 * Bah. All this time gcc was linking programs against
/usr/lib/crt1.o, while it should be using $glibc/lib/crt1.o.  This
  quick hack (prepending $glibc/lib to the GCC search path using "-B")
  fixes the problem, but a better solution to prevent this sort of
  thing is to remove these static paths from gcc.

  Note: this problem was found using the pure UML Nix environment
  (where we don't have /usr/lib).

svn path=/nixpkgs/trunk/; revision=810
2004-02-19 16:55:23 +00:00
Eelco Dolstra 744c434349 * Missing semicolon.
svn path=/nixpkgs/trunk/; revision=729
2004-01-30 15:44:56 +00:00
Eelco Dolstra 480d68ece3 * Added some missing semicolons.
* Some packages needed for the Subversion server.

svn path=/nixpkgs/trunk/; revision=586
2003-12-21 20:52:13 +00:00
Eelco Dolstra 026ff9466a * Rename .fix -> .nix.
svn path=/nixpkgs/trunk/; revision=511
2003-11-18 12:12:56 +00:00
Eelco Dolstra 48c3faca51 * Renamed pkgs-ng to pkgs.
svn path=/nixpkgs/trunk/; revision=502
2003-11-14 09:59:13 +00:00
Eelco Dolstra 6b2bb22474 * Delete the old Fix packages.
svn path=/nixpkgs/trunk/; revision=501
2003-11-14 09:57:25 +00:00
Eelco Dolstra 49f7a4afd1 * Use stdenv-linux only on Linux platforms.
svn path=/nixpkgs/trunk/; revision=250
2003-08-05 13:06:06 +00:00
Eelco Dolstra 244d0b4181 * Stdenv-native uses the native build tools of the system.
svn path=/nixpkgs/trunk/; revision=242
2003-08-04 07:22:16 +00:00
Eelco Dolstra 5f248af2a0 * Renamed stdenv to stdenv-linux.
* Fix a bug that occurs when NIX_CFLAGS is empty.

svn path=/nixpkgs/trunk/; revision=241
2003-08-04 07:13:29 +00:00
Eelco Dolstra 01e38f9371 * Use rpaths to ensure that executable and dynamic libraries are automatically linked
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
2003-07-28 21:15:03 +00:00
Eelco Dolstra a7e18d28f5 * Fix a typo in the g++ wrapper.
svn path=/nixpkgs/trunk/; revision=207
2003-07-26 20:38:23 +00:00
Eelco Dolstra 7ec0df788f * Reduced the size of glibc from 130 to 50 MB.
* Adapted some more packages to use stdenv, "fixed" ld.so problems.
* Added a package for libxslt.

svn path=/nixpkgs/trunk/; revision=204
2003-07-25 14:59:22 +00:00
Eelco Dolstra 1dda526c66 * Added the GNU C Library (glibc), a big step towards full Nixification of
the build and execution environment.

  This is very useful.  For example, it allows packages built on a SuSE 
  8.2 system to run on a SuSE 8.1 system (this is because 8.2 has a newer 
  glibc; packages built against it cannot be dynamically linked against 
  older glibcs).

  Of course, Fix packages should not directly import glibc since that is 
  very system-specific.  Rather, they should import stdenv/stdenv.fix and 
  in their build scripts source in $stdenv/setup, which will setup the 
  right environment variables.  The idea is that stdenv.fix provides the 
  basic C/Unix build environment (C compiler, POSIX utilities, etc.).

  Note that only the ATerm package currently uses this.

svn path=/nixpkgs/trunk/; revision=203
2003-07-24 15:15:48 +00:00