fetchurl instantiations, instead of passing the mirrors to fetchurl
instantiations via environment variables. This makes the resulting
store derivations (.drv files) much smaller, which in turn makes
nix-env/nix-instantiate faster (4.8 -> 4.2 seconds on nix-env -qa
--out-path).
svn path=/nixpkgs/trunk/; revision=12695
* An attribute `stdenv_32bit' that returns a stdenv capable of
building 32-bit binaries.
* grub: build on x86_64-linux.
svn path=/nixpkgs/trunk/; revision=12211
libstdc++ headers in the header search path, otherwise libstdc++'s
use of #include_next to include Glibc headers breaks.
svn path=/nixpkgs/trunk/; revision=12195
* rss-glx: fixed the build.
* Removed the OpenGL wrapper stuff, it's no longer needed (thanks to
the RUNPATH you just need to put the appropriate libGL.so in the
LD_LIBRARY_PATH).
svn path=/nixpkgs/trunk/; revision=12093
image (i.e., it can contain any OS that obeys the interface
documented in the comment). See `testFreeBSD' for an example that
performs a build of the ATerm library on FreeBSD 7.0. This will be
used in the build farm to perform builds for platforms for which we
cannot synthesize VM images automatically.
svn path=/nixpkgs/trunk/; revision=11753
* In addition to the `diskImages' set, there now is a `diskImageFuns'
set that holds functions to build a disk image for a specific
distribution, given a list of names of top-level packages that
should be included in the image. This makes it easier to customise
an image (e.g. if you want to build an RPM in an image with some
very specific dependencies that aren't in the default image).
* Added Fedora 6.
svn path=/nixpkgs/trunk/; revision=11513
expression for a Debian closure automatically (so that we don't have
to remember to regenerate those files ourselves). The `import
<derivation>' feature generally shouldn't be used in Nixpkgs, but
since it's only used in the buildfarm it should be fine.
svn path=/nixpkgs/trunk/; revision=11512
from the "primary.xml.gz" file of Fedora and OpenSUSE distributions.
Analogous to the Deb closure generator.
* Image for Fedora 8.
svn path=/nixpkgs/trunk/; revision=11510
- fetchdarcs_2pre added
- flapjax added
- no longer used : annotatedDerivations
- added bleeding edge repos with a tiny nix repository manager which dowloads and
updates repostiries, then creates tar.gz dist files which are used by bleeding_edge_source
(darcs tested only by now)
- added experimental my_environment with example
svn path=/nixpkgs/trunk/; revision=10974
- fetchdarcs_2pre added
- flapjax added
- no longer used : annotatedDerivations
- added bleeding edge repos with a tiny nix repository manager which dowloads and
updates repostiries, then creates tar.gz dist files which are used by bleeding_edge_source
(darcs tested only by now)
- added experimental my_environment with example
svn path=/nixpkgs/branches/stdenv-updates/; revision=10973
merge cleanly right away (kde-4, kernel stuff) so it should be
merged later. But the stdenv stuff is all there.
svn path=/nixpkgs/branches/stdenv-updates-merge/; revision=10793
This is so that the Unison wrapper can be generated with
makeWrapper.
* Use makeWrapper as a buildInput everywhere.
* Updated BitTorrent, cvs2svn.
svn path=/nixpkgs/trunk/; revision=10213
a wrapper script. E.g.
wrapProgram $out/bin/prog --set FOO bar
will create a wrapper around "prog" so that the environment variable
FOO is set to bar. The original program is renamed to
$out/bin/.wrapped-prog.
* Function makeSetupHook to convert a script into a setup hook which
can be included in buildInputs. This makes it easier to use scripts
like makeWrapper.
* Added Bazaar, yet another distributed version management system.
svn path=/nixpkgs/trunk/; revision=10211
mirror:// sites through environment variables, e.g.
NIX_MIRRORS_gnu="ftp://ftp.nluug.nl/pub/gnu/ ftp://ftp.gnu.org/pub/gnu/"
or
NIX_MIRRORS_sourceforge="http://surfnet.dl.sourceforge.net/sourceforge/"
svn path=/nixpkgs/trunk/; revision=9302
fetchurl {
url = http://heanet.dl.sourceforge.net/sourceforge/zapping/zapping-0.9.6.tar.bz2;
md5 = "8306775c6a11de4d72345b5eee970ea6";
};
you can write
fetchurl {
url = mirror://sourceforge/zapping/zapping-0.9.6.tar.bz2;
md5 = "8306775c6a11de4d72345b5eee970ea6";
};
which causes fetchurl to try the SourceForge mirrors listed in the
`sourceforge' attribute in build-support/fetchurl/mirrors.nix.
(They're currently tried in sequence, and the lists of mirrors are
not configurable yet.)
The syntax for mirror URLs is mirror://site/path/to/file, where
`site' is currently one of `sourceforge', `gnu' (mirrors of
ftp://ftp.gnu.org/pub/gnu) and `kernel' (mirrors of
http://www.all.kernel.org/pub/).
svn path=/nixpkgs/trunk/; revision=9197
fetching a file with hash HASH of type TYPE, we first try to
download <base-url>/<type>/<hash>, where <base-url> is one of a list
of mirrors. For instance, given
src = fetchurl {
url = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.6/source/firefox-2.0.0.6-source.tar.bz2;
sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082";
};
and the mirror list [http://nix.cs.uu.nl/dist/tarballs], we first
try to download
eb72f55e4a
and if that fails, we use the original URL.
The list of mirrors is not yet user-configurable.
* `fetchurl' now also accepts an argument `urls' instead of `url' for
a list of alternative download locations, which fetchurl will try in
sequence.
svn path=/nixpkgs/trunk/; revision=9190
can be installed in a user environment without conflict. This is
useful if you need gcov (which isn't symlinked in the GCC wrapper).
svn path=/nixpkgs/trunk/; revision=8809
to the gcc invocation.
If we pass a flag like -Wl, then gcc will call the linker unless it
can figure out that it has to do something else (e.g., because of a
"-c" flag). So if no non-flag arguments are given, don't pass any
linker flags. This catches cases like "gcc" (should just print
"gcc: no input files") and "gcc -v" (should print the version).
svn path=/nixpkgs/trunk/; revision=8644
* Removed substitute, it's part of the generic builder now.
* stdenv-initial (Linux): use the real generic builder script. This
does require that sed is in the path of the builder of the initial
stdenv.
svn path=/nixpkgs/trunk/; revision=7498
* If the environment variable buildCommand is set, then eval that
instead of doing the build phases. This is used by the runCommand
function in all-packages.nix to allow one-lines like
foo = runCommand "foo" {} "mkdir $out; echo foo > $out/foo";
svn path=/nixpkgs/trunk/; revision=7298
`@var@' in the file `src', writing the result to $out, where `var'
is any environment variable starting with a lowercase character.
Example:
genericSubstituter {
src = ./file;
foo = "bla";
shell = bash + "/bin/sh";
};
will replace `@foo@' with `bla' and `@shell@' with
`/nix/store/...-bash-.../bin/sh'.
svn path=/nixpkgs/trunk/; revision=6928
we use the GCC wrapper in a user environment, the wrong assembler
will be called. This is not usually a problem, but sometimes it is
(e.g., when using G++ 4.1.1 with binutils 2.16 or so).
svn path=/nixpkgs/trunk/; revision=6862
Glibc. This is useful when building GCC.
* gcc-wrapper: the dynamic linker has a different name on x86_64 and
powerpc.
* gcc-wrapper: "glibc" -> "libc", because someday we might support
different C libraries.
* gcc: don't do a multilib build (e.g., 32-bit support on x86_64),
don't need it.
* gcc: merge in support for static builds.
* gcc: various simplifications in the compiler/linker flags, hope they
work.
svn path=/nixpkgs/trunk/; revision=6823
contains arbitrary information about a package, like this:
meta = {
homepage = "http://gcc.gnu.org/";
license = "GPL/LGPL";
description = "GNU Compiler Collection, 4.0.x";
};
The "meta" attribute is not passed to the actual derivation
operation, so it's not a dependency --- changes to "meta" attributes
don't trigger a recompilation.
Now we have to standardise some useful attributes ;-)
svn path=/nixpkgs/branches/usability/; revision=5024
Even though you could just inherit binutils it is conceptually cleaner (I
think) to make these tools available here.
svn path=/nixpkgs/trunk/; revision=4967
* added an experimental fetchdarcs function, based on fetchsvn
(there are no expressions yet that use this function)
svn path=/nixpkgs/trunk/; revision=4615
in /usr/lib/libGL.so.1 (which will typically load a driver in
/usr/X11R6/lib/modules/dri). This has been tested on a i915
graphics card; it should work with most open source X.org drivers.
For NVidia's proprietary drivers (which we cannot build ourselves
anyway), some more symlinks are necessary; I'll add those later.
So to get hardware-accelerated Quake 3, do:
$ nix-env -p /nix/var/nix/profiles/opengl -i xorg-sys-opengl
$ nix-env -i quake3-demo
$ quake3
svn path=/nixpkgs/trunk/; revision=4613
allow the OpenGL implementation to be overriden through the
OPENGL_DRIVER environment variable. If it is not set, we use the
implementation installed in the profile
/nix/var/nix/profiles/opengl, allowing easy late binding by the
user, e.g.,
$ nix-env -p /nix/var/nix/profiles/opengl -i nvidia-sys-opengl
might install the NVidia OpenGL implementation.
The code that does this is not specific to Quake 3: it has been
factored out into build-support/opengl/mesa-switch.sh. Presumably
any application that requires hardware-accelerated OpenGL needs it.
* Add the Quake 3 demo to the cache.
svn path=/nixpkgs/trunk/; revision=4612
server's certificate. This is perfectly safe: we don't care whether
the server is being spoofed --- only the cryptographic hash of the
output matters.
svn path=/nixpkgs/trunk/; revision=4377
right thing. This is necessary to make libtool detect g++
properly. (Fixes the `libtool: compile: unable to infer tagged
configuration' error on FreeBSD when building Berkeley DB 4.4.)
svn path=/nixpkgs/trunk/; revision=4370
* Use the system Perl on all non-i686-linux platforms.
* Don't build Python support in libxml2 on most platforms.
svn path=/nixpkgs/trunk/; revision=3019
`*.dll.config' files corresponding to CLR assemblies. I.e., the
full path to native libraries is included in the maps. In effect
this allows us to set the equivalent of an RPATH for assemblies.
* gtk-sharp: use the DLL fixer. It's not perfect yet: I still have to
set the LD_LIBRARY_PATH for monodoc to include the gtk-sharp lib
directory itself, so that it can find the `*sharpglue.so' files.
This seems to be gtk-sharp's fault; it doesn't have an entry for
those libraries in its DLL maps.
svn path=/nixpkgs/trunk/; revision=2330
this contains mostly Armijn's pure stdenv-linux.
* After unpacking the statically linked GCC, patch all store paths to
/nix/store/ffffffffffffffffffffffffffffffff. Ugly hack to prevent
undeclared references but it works.
* We don't need Glib's dynamic libraries in the first bootstrap stage;
delete them. Actually the downloaded Glibc binary is only needed
for building Glibc, since GCC needs a C compiler to build some
programs in `configure'. So static linking is fine for that. Maybe
it would be better to patch `configure' so that we don't need a
pre-built Glibc at all.
* Set the svn:executable property on `cp' and `patchelf'.
* In Glibc, revert to LinuxThreads. Maybe NPTL will work, but TLS
support is a problem.
* Delete most Glibc patches; they're no longer needed since the branch
updated it to 20050110.
* Some cleanups.
svn path=/nixpkgs/trunk/; revision=2258
files easier. Examples:
substitute inputFile outputFile \
--replace "@bindir@" "$out/bin" \
--replace "@gcc@" "$GCC/bin/gcc"
substitute inputFile outputFile --subst-var out
(this is sugar for --replace "@out@" "$out")
substituteInPlace file --replace a b
(input and output are both `file'; the execute bit is preserved)
svn path=/nixpkgs/trunk/; revision=2239
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
libgcc of the gcc being built, not the gcc building it.
* Only include a directory in the rpath of an executable/library if it
is actually used. Before, the `/lib' directory of every build input
was added to the rpath, causing many unnecessary retained
dependencies. For instance, Perl has a `/lib' directory, but most
applications whose build process uses Perl don't actually link
against Perl. (Also added a test for this.)
* After building glibc, remove glibcbug, to prevent a retained
dependency on gcc.
* Add a newline after `building X' in GNU Make.
svn path=/nixpkgs/trunk/; revision=911
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
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