Commit graph

413 commits

Author SHA1 Message Date
Lluís Batlle i Rossell
585ba8c27f Big fixes in the cross build:
- Before this changes, cflags and ldflags for the native and the cross compiler
  got mixed. Not all the gcc-wrapper/gcc-cross-wrapper variables are
  independant now, but enough, I think.
- Fixed the generic stdenv expression, which did a big mess on buildInputs and
  buildNativeInputs. Now it distinguishes when there is a stdenvCross or not.
  Maybe we should have a single stdenv and forget about the stdenvCross
  adapter - this could end in a stdenv a bit complex, but simpler than the
  generic stdenv + adapter.
- Added basic support in pkgconfig for cross-builds: a single PKG_CONFIG_PATH
  now works for both the cross and the native compilers, but I think this
  should work well for most cases I can think of.
- I tried to fix the guile expression to cross-biuld; guile is built, but not
  its manual, so the derivation still fails. Guile requires patching to
  cross-build, as far as I understnad.
- Made the glibcCross build to be done through the usage of a
  gcc-cross-wrapper over the gcc-cross-stage-static, instead of using it
  directly.
- Trying to make physfs (a neverball dependency) cross build.
- Updated the gcc expression to support building a cross compiler without getting
  derivation variables mixed with those of the stdenvCross.

svn path=/nixpkgs/branches/stdenv-updates/; revision=18534
2009-11-22 19:51:45 +00:00
Ludovic Courtès
ab61e5b40d stdenv: Let GNU tar select the decompression method.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18492
2009-11-20 17:10:00 +00:00
Lluís Batlle i Rossell
e10632e7d5 Trying to fix the stdenv used on i686-darwin, which stopped working after my
statement of the gcc-wrapper coreutils dependency on r17867.
I don't have i686-darwin to try this.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18490
2009-11-20 16:56:11 +00:00
Lluís Batlle i Rossell
28d9e73d34 Adding a new mkDerivation flag for the cross stdenv, selfNativeBuildInput =
true/false, which tells whether the derivation needs itself as
buildNativeInput.
For example, in order to build cross ncurses, we need the a native build
ncurses.
(As libtool does not work in stdenv, I have not tested this change, to check
whether finally ncurses cross-build)


svn path=/nixpkgs/branches/stdenv-updates/; revision=18489
2009-11-20 16:38:01 +00:00
Lluís Batlle i Rossell
4497215410 Allowing in the cross stdenv adapter the calls to mkDerivation without name.
I don't know why there are such calls, but there are.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18482
2009-11-20 12:33:43 +00:00
Lluís Batlle i Rossell
6f3630e128 Attention, people who care on the builders for native builds. In the stdenv
derivation, the "buildInputs" in every stdenv mkDerivation don't map now
directly to the environment
variable "buildInputs" in the builder, but "buildNativeInputs". So, the inputs
build by the native compiler.
When cross compiling, they will map to the environment variable "buildInputs"
(yes, now the same name), which means does to be built with the cross compiler.

I think I improved the naming of variables a bit. There was a big mess,
specially in the stdenv adapter for cross building, and also in the default
builder script.

I also tried to add proper manager of propagatedInputBuilds, these being
propagated considering the host or build origin of that input build (so, at the
end, being those propagatedInputBuilds being propagated properly to the native
or the cross compiler.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18477
2009-11-19 23:05:11 +00:00
Lluís Batlle i Rossell
e85500987b Merging from trunk. I had to do two manual merges, quite trivial I think.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18472
2009-11-19 19:09:10 +00:00
Lluís Batlle i Rossell
7ade207f6b - Removed all *NoCross expressions I dupilcated in nixpkgs, while maintaining
the cross compilation functionality.
- I renamed some expected stdenv.mkDerivation parameter attributes so we can
  keep this branch properly updated from trunk. We agreed with Nicolas Pierron
  doing a massive renaming, so all current buildInputs become hostInputs (input
  as build for the host machine, in autotools terminology) , and
  then buildInputs would mean "input as for the build machine".
  By now, the specific "input as for the build machine" is specified through
  buildNativeInputs. We should fix this in the merge to trunk.
- I made the generic stdenv understand the buildNativeInputs, otherwise if
  we start changing nixpkgs expressions so they distinguish the current
  buildInputs into buildInputs and buildNativeInputs, we could break even more
  nixpkgs for other platforms.
- I changed the default result of mkDerivation so it becomes the derivation for
  to be run in the build machine. This allows, without any special rewriting,
  "fetchurl" derivations to be always results for the build machine to use
  them.
- The change above implies that, for anyone wanting to cross-compile, has to
  build the hostDrv of the wanted derivation. For example, after this commit,
  the usual test of "nix-build -A bison.hostDrv arm.nix" works. I described
  the contents of this arm.nix in r18398.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18471
2009-11-19 19:03:34 +00:00
Nicolas Pierron
6ba27ab552 * Add file support in the runHook function.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18467
2009-11-19 17:19:32 +00:00
Lluís Batlle i Rossell
8c638e5e68 Fixing what I broke in the last commit in setup.sh.
I made the stdenvCross adapter simpler, according to Nicolas Pierron comments,
and I commented it a bit.

There are still jobs to do. At least:
- Plan for the general renaming from buildInputs to hostInputs
  - We should not break merges from trunk.
- Make the generic stdenv understand about host/buildInputs, at least for
  native builds, because it is used in the always-native building of
  stdenvLinux. This should allow us to remove all duplications of "*NoCross" in
  nixpkgs.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18449
2009-11-18 19:25:57 +00:00
Lluís Batlle i Rossell
4c09cfc8a3 Adding generic builder management of cross compilation: envHooksHost, pkgsHost, ...
svn path=/nixpkgs/branches/stdenv-updates/; revision=18446
2009-11-18 18:16:35 +00:00
Lluís Batlle i Rossell
e7c8e8da4f I made the whole nixpkgs dependencies available to the cross compiler, no
needing to keep a new tree of expressions apart for the expressions to get
cross-compiled.

I changed the whole way of using cross compilation with nixpkgs, which before
was done through a simple adapter.

Now the adapter became complex, and I've tried to avoid the most obvious
recursivities. For example, the fetchurl expression should
never be cross-compiled, as the gmp, mpfr, and some others, like
some ncurses, perl, ... I made overrided copies of those necessary as
perlNoCross, ncursesNoCross, as stdenvNoCross, keeping in mind that
the stdenv (capable of cross compilation) is built upon stdenvNoCross using
an adapter.

So, to cross compile, instead of building using "nixpkgs/default.nix",
you should build with your
own "myarchiteture.nix", which should have contents like these, for example:

import /etc/nixos/nixpkgs/default.nix
{
    crossSystem = {
        config = "armv5tel-unknown-linux-gnueabi";
        bigEndian = false;
        arch = "arm";
        float = "soft";
    };
}


svn path=/nixpkgs/branches/stdenv-updates/; revision=18398
2009-11-17 22:58:48 +00:00
Lluís Batlle i Rossell
0c631f6181 Trying to move all stdenv cross-compiling details out of the stdenv expression,
into a stdenv adapater.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18397
2009-11-17 21:14:57 +00:00
Lluís Batlle i Rossell
2c7fa189fb Making the definition of the cross compiling target an attribute set.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18378
2009-11-16 23:21:13 +00:00
Nicolas Pierron
01e98e49b1 * Add a stdenv adapter which can remove all maintainers fields. This can
be used to remove error reports from development branches.

svn path=/nixpkgs/trunk/; revision=18377
2009-11-16 22:23:11 +00:00
Rob Vermaas
94a659596b ln issue mingw
svn path=/nixpkgs/trunk/; revision=18372
2009-11-16 12:22:55 +00:00
Rob Vermaas
4e50b362f7 svn path=/nixpkgs/trunk/; revision=18371 2009-11-16 11:24:49 +00:00
Rob Vermaas
e0389e41f0 different behaviour of ln on mingw
svn path=/nixpkgs/trunk/; revision=18370
2009-11-16 11:22:11 +00:00
Rob Vermaas
b7ebd57d93 mingw related stuff
svn path=/nixpkgs/trunk/; revision=18369
2009-11-16 08:47:31 +00:00
Lluís Batlle i Rossell
d06dce4e42 Fixing some conflict on the variable 'cross'.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18357
2009-11-15 19:07:21 +00:00
Lluís Batlle i Rossell
307cbd7b3b First attempt for the full stdenvCross. I think that it should work. The
toolchain for arm built.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18355
2009-11-15 16:48:36 +00:00
Lluís Batlle i Rossell
9b977f5c60 Fixing many things related to the cross compilation in stdenvCross.
It still does not work, but I think I already get glibc cross compiled.
Next: gcc and g++, and set some setup script hooks on stdenvCross.

It took quite enough hours for this commit.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18351
2009-11-15 05:28:35 +00:00
Lluís Batlle i Rossell
2aba922d30 My first attempt at getting cross compilers in nixpkgs.
My idea is to provide special stdenv expressions that will contain in the path
additional cross compilers. As most expressions for programs accept a stdenv parameter, 
we could substitute this parameter with the special stdenv, which will have a
generic builder that attempts the usual "--target=..." and can additionally
have an env variable like "cross" with the target architecture set.
So, finally we could have additional expressions like this:

bashRealArm = makeOverridable (import ../shells/bash) {
    inherit fetchurl bison;
    stdenv = stdenvCross "armv5tel-unknown-linux-gnueabi";
};

Meanwhile it does not work - I still cannot get the cross-gcc to build.

I think it does not fill the previous expressions with a lot of noise, so I
think it may be a good path to follow.

I only touched some files of the current stdenv: gcc-4.3, kernel headers
2.6.28, glibc 2.9, ...

I tried to use the gcc-cross-wrapper, that may be very outdated. Maybe I will
update it, or update the gcc-wrapper expression to make it fit the cross tools,
but meanwhile I even cannot build gcc, so I have not tested the wrapper.

This new idea on cross compiling is not similar to that of the
nixpkgs/branches/cross-compilation, which mostly added bare new expressions for
anything to be cross compiled, if I understood it correctly.

I cared not to break anything of the usual stdenv in all this work.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18343
2009-11-14 08:11:30 +00:00
Lluís Batlle i Rossell
6864119104 Updating from trunk.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18341
2009-11-13 19:19:34 +00:00
Rob Vermaas
f26614bb78 stuff for mingw
svn path=/nixpkgs/trunk/; revision=18339
2009-11-13 11:58:17 +00:00
Rob Vermaas
079451fa9e other location for msys
svn path=/nixpkgs/trunk/; revision=18338
2009-11-13 11:41:56 +00:00
Rob Vermaas
290d47d0f3 trying to fix mingw setup
svn path=/nixpkgs/trunk/; revision=18337
2009-11-13 10:30:29 +00:00
Lluís Batlle i Rossell
6675f0a52c Adding a check in the generic builder so it halts on the existence of
/homeless-shelter


svn path=/nixpkgs/branches/stdenv-updates/; revision=18302
2009-11-08 22:50:27 +00:00
Lluís Batlle i Rossell
9c79d69710 curl.bz2 should be executable, to keep the same stdenv working as it worked in stdenv-updates
svn path=/nixpkgs/branches/stdenv-updates2/; revision=18276
2009-11-08 00:47:46 +00:00
Lluís Batlle i Rossell
b78e001b52 Adding the binary files from stdenv that did not came with the recent 'diff | patch'
I did to get the stdenv-updates changes.


svn path=/nixpkgs/branches/stdenv-updates2/; revision=18275
2009-11-08 00:45:09 +00:00
Lluís Batlle i Rossell
4b27d28701 Porting changes from stdenv-updates into this branch.
This comes from:
svn diff  ^/nixpkgs/trunk/@18255 ^/nixpkgs/branches/stdenv-updates/ > diff
patch -p0 < diff
and then adding into svn all files new from the patch.

trunk@18255 comes from the last time I updated stdenv-updates from trunk.


svn path=/nixpkgs/stdenv-updates2/; revision=18272
2009-11-08 00:32:12 +00:00
Sander van der Burg
fef5fcc47b Added empty line
svn path=/nixpkgs/trunk/; revision=17850
2009-10-16 10:21:27 +00:00
Sander van der Burg
1ca15d18f4 FreeBSD uses GNU sed now
svn path=/nixpkgs/trunk/; revision=17849
2009-10-16 10:18:55 +00:00
Sander van der Burg
18f8aa9a91 The BSD platforms now use GNU tar by default
svn path=/nixpkgs/trunk/; revision=17848
2009-10-16 10:09:33 +00:00
Sander van der Burg
4756054e17 Added some NetBSD support to the native stdenv component
svn path=/nixpkgs/trunk/; revision=17847
2009-10-16 10:03:27 +00:00
Sander van der Burg
068b2158f5 Added Solaris support to the stdenv
svn path=/nixpkgs/trunk/; revision=17559
2009-09-30 15:19:25 +00:00
Sander van der Burg
b08cf58c59 Added more aliases to GNU tools, since the BSD userspace is sometimes too poor (i.e. lacks certain options to commands) to deal with our scripts
svn path=/nixpkgs/trunk/; revision=17363
2009-09-23 13:54:45 +00:00
Sander van der Burg
4fafee1555 Added initial OpenBSD support to the stdenv
svn path=/nixpkgs/trunk/; revision=17362
2009-09-23 13:30:04 +00:00
Eelco Dolstra
f782f14e58 * Factor out an adapter to clean up the build tree.
svn path=/nixpkgs/trunk/; revision=16920
2009-09-02 06:31:13 +00:00
Eelco Dolstra
58e6161768 * addCoverageInstrumentation: factor out the code that keeps the build
tree under $out into a separate stdenv adapter named keepBuildTree.
* makeModulesClosure: support building an initrd for a kernel that has
  been compiled with coverage instrumentation.

svn path=/nixpkgs/trunk/; revision=16916
2009-09-01 21:56:46 +00:00
Eelco Dolstra
0fd5ed507e * A stdenv adapter to build a package with coverage instrumentation.
svn path=/nixpkgs/trunk/; revision=16890
2009-08-28 16:45:56 +00:00
Lluís Batlle i Rossell
d4aedd92cc I revert my changes to get nixpkgs working on armv5tel-linux.
I thought I didn't change stdenv, but I did. This will go soon into the stdenv
branch then.
Reverse-merging r16467 through r16465.


svn path=/nixpkgs/trunk/; revision=16468
2009-07-26 22:47:33 +00:00
Lluís Batlle i Rossell
532fc4a05d Adding armv5tel to the 'if' checks in stdenv, gcc-wrapper and kernel headers
svn path=/nixpkgs/trunk/; revision=16466
2009-07-26 21:48:10 +00:00
Lluís Batlle i Rossell
dcf0a95a72 Updating to allow ld-linux.so.? interpreters, instead of always .so.2
svn path=/nixpkgs/trunk/; revision=16465
2009-07-26 21:48:00 +00:00
Eelco Dolstra
ae03990f6a * setup-new -> setup.
svn path=/nixpkgs/branches/stdenv-updates/; revision=16133
2009-07-02 09:01:37 +00:00
Eelco Dolstra
cdf4cf5c23 * Sync with the trunk.
svn path=/nixpkgs/branches/stdenv-updates/; revision=16094
2009-06-30 11:42:15 +00:00
Eelco Dolstra
a830968c53 * New bootstrap binaries (from r16022 in the trunk). Don't set
LD_LIBRARY_PATH since it breaks /bin/sh on non-NixOS platforms (and
  reverted the previous "fix" in r15470).

svn path=/nixpkgs/branches/stdenv-updates/; revision=16029
2009-06-22 19:49:42 +00:00
Eelco Dolstra
ef83c754f6 * Updated the function that builds the bootstrap binaries.
* Use patchelf 0.5 and use the --force-rpath flag.  This removes the
  need for setting LD_LIBRARY_PATH and so should fix bootstrapping
  Nixpkgs on non-NixOS platforms.

svn path=/nixpkgs/trunk/; revision=16022
2009-06-22 14:28:07 +00:00
Eelco Dolstra
a40dbf619d * Fix duplication of the version in dietlibc's gcc wrapper.
svn path=/nixpkgs/trunk/; revision=16021
2009-06-22 14:26:14 +00:00
Eelco Dolstra
16fef1d9d6 * dontMakeSourcesWritable: should be a variable. Caught by Marc
Weber.

svn path=/nixpkgs/trunk/; revision=15961
2009-06-15 13:39:09 +00:00