Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f19e64a
commit 5574df3
Showing
2 changed files
with
123 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
{ stdenv, lib, fetchurl, pkgconfig, perl | ||
, http2Support ? true, nghttp2 | ||
, idnSupport ? false, libidn ? null | ||
, ldapSupport ? false, openldap ? null | ||
, zlibSupport ? false, zlib ? null | ||
, sslSupport ? false, openssl ? null | ||
, gnutlsSupport ? false, gnutls ? null | ||
, scpSupport ? false, libssh2 ? null | ||
, gssSupport ? false, kerberos ? null | ||
, c-aresSupport ? false, c-ares ? null | ||
, brotliSupport ? false, brotli ? null | ||
}: | ||
|
||
assert http2Support -> nghttp2 != null; | ||
assert idnSupport -> libidn != null; | ||
assert ldapSupport -> openldap != null; | ||
assert zlibSupport -> zlib != null; | ||
assert sslSupport -> openssl != null; | ||
assert !(gnutlsSupport && sslSupport); | ||
assert gnutlsSupport -> gnutls != null; | ||
assert scpSupport -> libssh2 != null; | ||
assert c-aresSupport -> c-ares != null; | ||
assert brotliSupport -> brotli != null; | ||
assert gssSupport -> kerberos != null; | ||
|
||
stdenv.mkDerivation rec { | ||
name = "curl-7.59.0"; | ||
|
||
src = fetchurl { | ||
urls = [ | ||
"https://github.com/curl/curl/releases/download/${lib.replaceStrings ["."] ["_"] name}/${name}.tar.bz2" | ||
"https://curl.haxx.se/download/${name}.tar.bz2" | ||
]; | ||
sha256 = "185mazhi4bc5mc6rvhrmnc67j8l3sg7f0w2hp5gmi5ccdbyhz4mm"; | ||
}; | ||
|
||
outputs = [ "bin" "dev" "out" "man" "devdoc" ]; | ||
separateDebugInfo = stdenv.isLinux; | ||
|
||
enableParallelBuilding = true; | ||
|
||
nativeBuildInputs = [ pkgconfig perl ]; | ||
|
||
# Zlib and OpenSSL must be propagated because `libcurl.la' contains | ||
# "-lz -lssl", which aren't necessary direct build inputs of | ||
# applications that use Curl. | ||
propagatedBuildInputs = with stdenv.lib; | ||
optional http2Support nghttp2 ++ | ||
optional idnSupport libidn ++ | ||
optional ldapSupport openldap ++ | ||
optional zlibSupport zlib ++ | ||
optional gssSupport kerberos ++ | ||
optional c-aresSupport c-ares ++ | ||
optional sslSupport openssl ++ | ||
optional gnutlsSupport gnutls ++ | ||
optional scpSupport libssh2 ++ | ||
optional brotliSupport brotli; | ||
|
||
# for the second line see https://curl.haxx.se/mail/tracker-2014-03/0087.html | ||
preConfigure = '' | ||
sed -e 's|/usr/bin|/no-such-path|g' -i.bak configure | ||
rm src/tool_hugehelp.c | ||
''; | ||
|
||
configureFlags = [ | ||
"--with-ca-fallback" | ||
"--disable-manual" | ||
( if sslSupport then "--with-ssl=${openssl.dev}" else "--without-ssl" ) | ||
( if gnutlsSupport then "--with-gnutls=${gnutls.dev}" else "--without-gnutls" ) | ||
( if scpSupport then "--with-libssh2=${libssh2.dev}" else "--without-libssh2" ) | ||
( if ldapSupport then "--enable-ldap" else "--disable-ldap" ) | ||
( if ldapSupport then "--enable-ldaps" else "--disable-ldaps" ) | ||
( if idnSupport then "--with-libidn=${libidn.dev}" else "--without-libidn" ) | ||
( if brotliSupport then "--with-brotli" else "--without-brotli" ) | ||
] | ||
++ stdenv.lib.optional c-aresSupport "--enable-ares=${c-ares}" | ||
++ stdenv.lib.optional gssSupport "--with-gssapi=${kerberos.dev}"; | ||
|
||
CXX = "${stdenv.cc.targetPrefix}c++"; | ||
CXXCPP = "${stdenv.cc.targetPrefix}c++ -E"; | ||
|
||
doCheck = false; # expensive, fails | ||
|
||
postInstall = '' | ||
moveToOutput bin/curl-config "$dev" | ||
sed '/^dependency_libs/s|${libssh2.dev}|${libssh2.out}|' -i "$out"/lib/*.la | ||
'' + stdenv.lib.optionalString gnutlsSupport '' | ||
ln $out/lib/libcurl.so $out/lib/libcurl-gnutls.so | ||
ln $out/lib/libcurl.so $out/lib/libcurl-gnutls.so.4 | ||
ln $out/lib/libcurl.so $out/lib/libcurl-gnutls.so.4.4.0 | ||
''; | ||
|
||
crossAttrs = { | ||
# We should refer to the cross built openssl | ||
# For the 'urandom', maybe it should be a cross-system option | ||
configureFlags = [ | ||
( if sslSupport then "--with-ssl=${openssl.crossDrv}" else "--without-ssl" ) | ||
( if gnutlsSupport then "--with-gnutls=${gnutls.crossDrv}" else "--without-gnutls" ) | ||
"--with-random /dev/urandom" | ||
]; | ||
}; | ||
|
||
passthru = { | ||
inherit sslSupport openssl; | ||
}; | ||
|
||
meta = with stdenv.lib; { | ||
description = "A command line tool for transferring files with URL syntax"; | ||
homepage = https://curl.haxx.se/; | ||
maintainers = with maintainers; [ lovek323 ]; | ||
platforms = platforms.all; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5574df3
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please include more context in the commit message, for people reading the git history. I went to github and found the information I was looking for in the PR message (the why part), but IMHO having this in the commit brings so much more value. Before github, git was a distributed SCM. wink wink