Commit graph

26 commits

Author SHA1 Message Date
Eelco Dolstra
3e0a348728 gcc-wrapper: Get rid of builder.sh + cleanup 2014-10-10 14:55:08 +02:00
Eelco Dolstra
289895fe2c Fix SNAFU using $NIX_LDFLAGS_AFTER 2014-07-02 14:55:44 +02:00
Eelco Dolstra
0d8014f6fc Darwin: Search for libraries in $sdk/usr/lib
This required adding a new environment variable NIX_LDFLAGS_AFTER
that ensures that the -L.../usr/lib flag happens last.
2014-07-01 15:56:09 +02:00
Eelco Dolstra
7fe89be146 gcc: Fix purity
Somewhere the no-sys-dirs.patch got disabled, so gcc was looking in
/usr/local/include and /usr/lib. Since I can't fix the patch easily,
I've borrowed the --sysroot trick from clang-wrapper. This causes
builtin paths to be prefixed with /var/empty
(e.g. /var/empty/usr/lib), which don't exist.
2014-06-30 16:43:02 +02:00
Lluís Batlle i Rossell
e930a7385b Fix about the order of -rpath and -L in the ld-wrapper
svn path=/nixpkgs/branches/stdenv-updates/; revision=25128
2010-12-14 15:22:25 +00:00
Lluís Batlle i Rossell
195a90d7ce Fixing a bug in the ld-wrapper, where the dynamic-linker path was taken as a
path worth a "-rpath" entry.

This put a problem in the bootstrap, where we built 'zlib' and wanted to link programs with it, and while they got linked well, at runtime the boostrap-tools zlib came first on rpath becaue
the ld call was done with "-dynamic-linker ..." before "-lz".

I saw this trouble on the fuloong, where the zlib in boostrap-tools is not
runtime compatible with that binutils are linked to.

svn path=/nixpkgs/branches/stdenv-updates/; revision=25107
2010-12-13 22:46:21 +00:00
Lluís Batlle i Rossell
bd9c968158 Removing any rest of the trunk's stdenv2, that has a fix in ld-wrapper to make
it properly put the rpath for directly passed .so files, and additionally it
works much faster than the old ld-wrapper.


svn path=/nixpkgs/branches/stdenv-updates/; revision=21978
2010-05-25 20:51:01 +00:00
Eelco Dolstra
116443e839 * Don't call grep from ld-wrapper (especially not O(n^2) times)
because it makes linking very slow.  Use bash's =~ operator instead
  (and only once for each argument).  We depend on bash already anyway
  because of arrays so it's not a problem.

svn path=/nixpkgs/branches/stdenv-updates/; revision=19699
2010-01-26 22:42:43 +00:00
Lluís Batlle i Rossell
193f70d887 Updating the ld-wrapper about linking of direct .so files. The previous
regexp looking for such ld arguments did not work well with "--soname=xxx.so".
Now I added the condition that the argument should not start with a hyphen, for
it to be possibly considered a .so file to link with.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18919
2009-12-13 16:18:53 +00:00
Lluís Batlle i Rossell
6bacb66dd3 Updating the gcc-wrapper with the changes done in trunk's gcc-wrapper2.
Removing any reference to the gcc-wrapper2, as now the gcc-wrapper already conveys
the changes, I created gcc-wrapper2 in trunk for.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18913
2009-12-12 18:48:07 +00:00
Eelco Dolstra
472a0d2057 * Pass -rpath flags in the same order as -L flags.
* Put the Glibc linker flags in front of the GCC linker flags.  Needed
  for the stdenv-linux bootstrap.

svn path=/nixpkgs/branches/stdenv-updates/; revision=13940
2009-02-01 21:26:28 +00:00
Eelco Dolstra
69b538fde3 * gcc-wrapper-new -> gcc-wrapper, setup-new -> setup.
svn path=/nixpkgs/branches/stdenv-updates/; revision=12991
2008-10-07 17:33:20 +00:00
Eelco Dolstra
76e8254689 svn path=/nixpkgs/branches/stdenv-updates/; revision=12990 2008-10-07 17:03:52 +00:00
Eelco Dolstra
b342dcb13b * gcc-wrapper: separately store the flags necessary to find GCC and
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
2006-10-24 18:26:23 +00:00
Eelco Dolstra
82e678362f * "." -> "source".
svn path=/nixpkgs/trunk/; revision=4335
2005-12-05 14:11:09 +00:00
Eelco Dolstra
ecd2596677 * Do the generic sed thing for Glibc.
* Remove debug stuff from ld-wrapper.

svn path=/nixpkgs/trunk/; revision=2261
2005-02-21 17:57:53 +00:00
Armijn Hemel
4b16211201 use new kernel headers
svn path=/nixpkgs/branches/nixos-pkgs/; revision=2053
2005-01-18 13:16:42 +00:00
Armijn Hemel
aad382248f add modified gcc-wrapper
svn path=/nixpkgs/branches/nixos-pkgs/; revision=1793
2004-11-22 16:36:27 +00:00
Eelco Dolstra
beaff0a892 * Ensure that when building gcc, libstdc++ is linked against the
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
2004-04-04 22:02:41 +00:00
Eelco Dolstra
1550034ac4 * Various bug fixes in setup.sh and ld-wrapper.sh.
svn path=/nixpkgs/trunk/; revision=909
2004-04-02 17:49:44 +00:00
Eelco Dolstra
01a1658c6b * Finally we have a working stdenvLinux again.
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
2004-03-30 12:46:52 +00:00
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
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
b8b4f9ce4b * Reject inputs outside of the store in ld if NIX_ENFORCE_PURITY is
set.
* Various bug fixes.

svn path=/nixpkgs/trunk/; revision=824
2004-03-09 17:08:41 +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