mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-27 05:43:50 +03:00
* curl: build with OpenSSL (https) support by default.
* Some fetchurl-related refactoring. The `realCurl' attribute is gone, `curl' is the real thing. To prevent an infinite recursion in `fetchurl' (because it depends on curl and building curl needs fetchurl), curl and its dependencies (openssl, zlib, perl) use `fetchurlBoot', which is the fetchurl used by the previous bootstrap phase (e.g. the statically linked version of curl for stdenv-linux). So as a result you can use https:// urls almost everywhere. There's also some hackery to prevent a different curl from being built in every stdenv-linux bootstrap phase (namely the stdenv.fetchurl attribute which allows fetchurl to be overriden everywhere). svn path=/nixpkgs/trunk/; revision=11905
This commit is contained in:
parent
2ead4b20b5
commit
e21b6b6ee5
@ -17,7 +17,8 @@ genericStdenv {
|
|||||||
|
|
||||||
shell = "/bin/bash";
|
shell = "/bin/bash";
|
||||||
|
|
||||||
extraAttrs = {
|
fetchurlBoot = import ../../build-support/fetchurl {
|
||||||
|
inherit stdenv;
|
||||||
# Curl should be in /usr/bin or so.
|
# Curl should be in /usr/bin or so.
|
||||||
curl = null;
|
curl = null;
|
||||||
};
|
};
|
||||||
|
@ -17,7 +17,8 @@ genericStdenv {
|
|||||||
|
|
||||||
shell = "/bin/bash";
|
shell = "/bin/bash";
|
||||||
|
|
||||||
extraAttrs = {
|
fetchurlBoot = import ../../build-support/fetchurl {
|
||||||
|
inherit stdenv;
|
||||||
# Curl should be in /usr/bin or so.
|
# Curl should be in /usr/bin or so.
|
||||||
curl = null;
|
curl = null;
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{ stdenv, name, preHook ? null, postHook ? null, initialPath, gcc, shell
|
{ stdenv, name, preHook ? null, postHook ? null, initialPath, gcc, shell
|
||||||
, param1 ? "", param2 ? "", param3 ? "", param4 ? "", param5 ? ""
|
, param1 ? "", param2 ? "", param3 ? "", param4 ? "", param5 ? ""
|
||||||
, extraAttrs ? {}
|
, extraAttrs ? {}
|
||||||
|
, fetchurlBoot
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let {
|
let {
|
||||||
@ -71,6 +72,8 @@ let {
|
|||||||
# packages don't have to do that themselves.
|
# packages don't have to do that themselves.
|
||||||
lib = import ../../lib;
|
lib = import ../../lib;
|
||||||
|
|
||||||
|
inherit fetchurlBoot;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Propagate any extra attributes. For instance, we use this to
|
# Propagate any extra attributes. For instance, we use this to
|
||||||
|
@ -99,8 +99,13 @@ rec {
|
|||||||
# the bootstrap.
|
# the bootstrap.
|
||||||
stdenvBootFun =
|
stdenvBootFun =
|
||||||
{gcc, staticGlibc, extraAttrs ? {}}:
|
{gcc, staticGlibc, extraAttrs ? {}}:
|
||||||
|
|
||||||
import ../generic {
|
let
|
||||||
|
fetchurlBoot = import ../../build-support/fetchurl {
|
||||||
|
stdenv = stdenvInitial;
|
||||||
|
inherit curl;
|
||||||
|
};
|
||||||
|
in import ../generic {
|
||||||
name = "stdenv-linux-boot";
|
name = "stdenv-linux-boot";
|
||||||
param1 = if staticGlibc then "static" else "dynamic";
|
param1 = if staticGlibc then "static" else "dynamic";
|
||||||
preHook = ./scripts/prehook.sh;
|
preHook = ./scripts/prehook.sh;
|
||||||
@ -109,7 +114,9 @@ rec {
|
|||||||
initialPath = [
|
initialPath = [
|
||||||
staticTools
|
staticTools
|
||||||
];
|
];
|
||||||
inherit gcc extraAttrs;
|
inherit fetchurlBoot;
|
||||||
|
extraAttrs = extraAttrs // {fetchurl = fetchurlBoot;};
|
||||||
|
inherit gcc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -120,7 +127,6 @@ rec {
|
|||||||
# Use the statically linked, downloaded glibc/gcc/binutils.
|
# Use the statically linked, downloaded glibc/gcc/binutils.
|
||||||
gcc = wrapGCC {libc = staticGlibc; binutils = staticBinutils;};
|
gcc = wrapGCC {libc = staticGlibc; binutils = staticBinutils;};
|
||||||
staticGlibc = true;
|
staticGlibc = true;
|
||||||
extraAttrs = {inherit curl;};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -143,7 +149,7 @@ rec {
|
|||||||
stdenvLinuxBoot2 = removeAttrs (stdenvBootFun {
|
stdenvLinuxBoot2 = removeAttrs (stdenvBootFun {
|
||||||
staticGlibc = false;
|
staticGlibc = false;
|
||||||
gcc = wrapGCC {binutils = staticBinutils; libc = stdenvLinuxGlibc;};
|
gcc = wrapGCC {binutils = staticBinutils; libc = stdenvLinuxGlibc;};
|
||||||
extraAttrs = {inherit curl; glibc = stdenvLinuxGlibc;};
|
extraAttrs = {glibc = stdenvLinuxGlibc;};
|
||||||
}) ["gcc" "binutils"];
|
}) ["gcc" "binutils"];
|
||||||
|
|
||||||
|
|
||||||
@ -164,7 +170,6 @@ rec {
|
|||||||
libc = stdenvLinuxGlibc;
|
libc = stdenvLinuxGlibc;
|
||||||
gcc = stdenvLinuxBoot2Pkgs.gcc.gcc;
|
gcc = stdenvLinuxBoot2Pkgs.gcc.gcc;
|
||||||
};
|
};
|
||||||
extraAttrs = {inherit curl;};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -197,8 +202,9 @@ rec {
|
|||||||
|
|
||||||
shell = stdenvLinuxBoot3Pkgs.bash + "/bin/sh";
|
shell = stdenvLinuxBoot3Pkgs.bash + "/bin/sh";
|
||||||
|
|
||||||
|
fetchurlBoot = stdenvLinuxBoot3.fetchurlBoot;
|
||||||
|
|
||||||
extraAttrs = {
|
extraAttrs = {
|
||||||
curl = stdenvLinuxBoot3Pkgs.realCurl;
|
|
||||||
inherit (stdenvLinuxBoot2Pkgs) binutils /* gcc */ glibc;
|
inherit (stdenvLinuxBoot2Pkgs) binutils /* gcc */ glibc;
|
||||||
inherit (stdenvLinuxBoot3Pkgs)
|
inherit (stdenvLinuxBoot3Pkgs)
|
||||||
gzip bzip2 bash coreutils diffutils findutils gawk
|
gzip bzip2 bash coreutils diffutils findutils gawk
|
||||||
|
@ -28,7 +28,7 @@ let
|
|||||||
|
|
||||||
inherit (pkgsDiet)
|
inherit (pkgsDiet)
|
||||||
coreutils diffutils gnugrep
|
coreutils diffutils gnugrep
|
||||||
gzip bzip2 gnumake bash patch binutils;
|
gzip bzip2 gnumake bash patch binutils curl;
|
||||||
|
|
||||||
findutils = pkgsDiet.findutils4227; # 4.2.28 is broken
|
findutils = pkgsDiet.findutils4227; # 4.2.28 is broken
|
||||||
|
|
||||||
@ -58,8 +58,6 @@ let
|
|||||||
profiledCompiler = true;
|
profiledCompiler = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
curl = pkgsDiet.realCurl;
|
|
||||||
|
|
||||||
glibc = pkgs.glibc;
|
glibc = pkgs.glibc;
|
||||||
|
|
||||||
# The result should not contain any references (store paths) so
|
# The result should not contain any references (store paths) so
|
||||||
|
@ -22,7 +22,8 @@ import ../generic {
|
|||||||
|
|
||||||
shell = pkgs.bash + "/bin/sh";
|
shell = pkgs.bash + "/bin/sh";
|
||||||
|
|
||||||
extraAttrs = {
|
fetchurlBoot = import ../../build-support/fetchurl {
|
||||||
curl = pkgs.realCurl;
|
inherit stdenv;
|
||||||
|
curl = pkgs.curl;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,8 @@ genericStdenv {
|
|||||||
|
|
||||||
shell = "/bin/sh";
|
shell = "/bin/sh";
|
||||||
|
|
||||||
extraAttrs = {
|
fetchurlBoot = import ../../build-support/fetchurl {
|
||||||
|
inherit stdenv;
|
||||||
# Curl should be in /usr/bin or so.
|
# Curl should be in /usr/bin or so.
|
||||||
curl = null;
|
curl = null;
|
||||||
};
|
};
|
||||||
|
@ -18,7 +18,14 @@ stdenv.mkDerivation {
|
|||||||
CFLAGS = if stdenv ? isDietLibC then "-DHAVE_INET_NTOA_R_2_ARGS=1" else "";
|
CFLAGS = if stdenv ? isDietLibC then "-DHAVE_INET_NTOA_R_2_ARGS=1" else "";
|
||||||
CXX = "g++";
|
CXX = "g++";
|
||||||
CXXCPP = "g++ -E";
|
CXXCPP = "g++ -E";
|
||||||
inherit sslSupport openssl;
|
|
||||||
|
passthru = {
|
||||||
|
inherit sslSupport openssl;
|
||||||
|
};
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
substituteInPlace configure --replace /usr/bin /no-such-path
|
||||||
|
'';
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
/* Fixes broken retry support when a timeout is used. The
|
/* Fixes broken retry support when a timeout is used. The
|
||||||
|
@ -357,13 +357,22 @@ let pkgs = rec {
|
|||||||
inherit stdenv mercurial nix;
|
inherit stdenv mercurial nix;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Allow the stdenv to determine fetchurl, to cater for strange
|
# `fetchurl' downloads a file from the network. The `useFromStdenv'
|
||||||
# requirements.
|
# is there to allow stdenv to determine fetchurl. Used during the
|
||||||
|
# stdenv-linux bootstrap phases to prevent lots of different curls
|
||||||
|
# from being built.
|
||||||
fetchurl = useFromStdenv "fetchurl"
|
fetchurl = useFromStdenv "fetchurl"
|
||||||
(import ../build-support/fetchurl {
|
(import ../build-support/fetchurl {
|
||||||
inherit stdenv curl;
|
inherit stdenv curl;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
# fetchurlBoot is used for curl and its dependencies in order to
|
||||||
|
# prevent a cyclic dependency (curl depends on curl.tar.bz2,
|
||||||
|
# curl.tar.bz2 depends on fetchurl, fetchurl depends on curl). It
|
||||||
|
# uses the curl from the previous bootstrap phase (e.g. a statically
|
||||||
|
# linked curl in the case of stdenv-linux).
|
||||||
|
fetchurlBoot = stdenv.fetchurlBoot;
|
||||||
|
|
||||||
makeInitrd = {contents}: import ../build-support/kernel/make-initrd.nix {
|
makeInitrd = {contents}: import ../build-support/kernel/make-initrd.nix {
|
||||||
inherit stdenv perl cpio contents;
|
inherit stdenv perl cpio contents;
|
||||||
};
|
};
|
||||||
@ -516,7 +525,12 @@ let pkgs = rec {
|
|||||||
inherit fetchurl stdenv;
|
inherit fetchurl stdenv;
|
||||||
};
|
};
|
||||||
|
|
||||||
curl = if stdenv ? curl then (stdenv.curl) else (assert false; null);
|
curl = import ../tools/networking/curl {
|
||||||
|
fetchurl = fetchurlBoot;
|
||||||
|
inherit stdenv zlib openssl;
|
||||||
|
zlibSupport = !stdenv ? isDietLibC;
|
||||||
|
sslSupport = !stdenv ? isDietLibC;
|
||||||
|
};
|
||||||
|
|
||||||
curlftpfs = import ../tools/networking/curlftpfs {
|
curlftpfs = import ../tools/networking/curlftpfs {
|
||||||
inherit fetchurl stdenv fuse curl pkgconfig zlib;
|
inherit fetchurl stdenv fuse curl pkgconfig zlib;
|
||||||
@ -927,12 +941,6 @@ let pkgs = rec {
|
|||||||
inherit (xlibs) libX11 libXext;
|
inherit (xlibs) libX11 libXext;
|
||||||
};
|
};
|
||||||
|
|
||||||
realCurlFun = lib.sumArgs (import ../tools/networking/curl) {
|
|
||||||
inherit fetchurl stdenv zlib;
|
|
||||||
zlibSupport = !stdenv ? isDietLibC;
|
|
||||||
};
|
|
||||||
realCurl = realCurlFun null;
|
|
||||||
|
|
||||||
relfsFun = lib.sumArgs (selectVersion ../tools/misc/relfs "cvs.2008.03.05") {
|
relfsFun = lib.sumArgs (selectVersion ../tools/misc/relfs "cvs.2008.03.05") {
|
||||||
inherit fetchcvs stdenv ocaml postgresql fuse pcre
|
inherit fetchcvs stdenv ocaml postgresql fuse pcre
|
||||||
builderDefs e2fsprogs pkgconfig;
|
builderDefs e2fsprogs pkgconfig;
|
||||||
@ -1856,7 +1864,8 @@ let pkgs = rec {
|
|||||||
Qi = QiFun null;
|
Qi = QiFun null;
|
||||||
|
|
||||||
realPerl = import ../development/interpreters/perl-5.10 {
|
realPerl = import ../development/interpreters/perl-5.10 {
|
||||||
inherit fetchurl stdenv;
|
fetchurl = fetchurlBoot;
|
||||||
|
inherit stdenv;
|
||||||
};
|
};
|
||||||
|
|
||||||
ruby = import ../development/interpreters/ruby {
|
ruby = import ../development/interpreters/ruby {
|
||||||
@ -3129,7 +3138,8 @@ let pkgs = rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
openssl = import ../development/libraries/openssl {
|
openssl = import ../development/libraries/openssl {
|
||||||
inherit fetchurl stdenv perl;
|
fetchurl = fetchurlBoot;
|
||||||
|
inherit stdenv perl;
|
||||||
};
|
};
|
||||||
|
|
||||||
ortp = selectVersion ../development/libraries/ortp "0.13.1" {
|
ortp = selectVersion ../development/libraries/ortp "0.13.1" {
|
||||||
@ -3328,7 +3338,8 @@ let pkgs = rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
zlib = import ../development/libraries/zlib {
|
zlib = import ../development/libraries/zlib {
|
||||||
inherit fetchurl stdenv;
|
fetchurl = fetchurlBoot;
|
||||||
|
inherit stdenv;
|
||||||
};
|
};
|
||||||
|
|
||||||
zlibStatic = lowPrio (appendToName "static" (import ../development/libraries/zlib {
|
zlibStatic = lowPrio (appendToName "static" (import ../development/libraries/zlib {
|
||||||
|
@ -247,6 +247,7 @@ let
|
|||||||
aterm
|
aterm
|
||||||
autoconf
|
autoconf
|
||||||
#automake19x
|
#automake19x
|
||||||
|
curl
|
||||||
docbook5
|
docbook5
|
||||||
docbook_xml_dtd_42
|
docbook_xml_dtd_42
|
||||||
docbook_xml_dtd_43
|
docbook_xml_dtd_43
|
||||||
@ -256,7 +257,6 @@ let
|
|||||||
libxml2
|
libxml2
|
||||||
libxslt
|
libxslt
|
||||||
nxml
|
nxml
|
||||||
realCurl
|
|
||||||
subversion
|
subversion
|
||||||
unzip
|
unzip
|
||||||
;};
|
;};
|
||||||
|
Loading…
Reference in New Issue
Block a user