diff --git a/nixos/doc/manual/release-notes/rl-1909.xml b/nixos/doc/manual/release-notes/rl-1909.xml index 7d2d98ddfee1..37346948b289 100644 --- a/nixos/doc/manual/release-notes/rl-1909.xml +++ b/nixos/doc/manual/release-notes/rl-1909.xml @@ -237,6 +237,12 @@ + + The shibboleth-sp package has been updated to version 3. + It is largely backward compatible, for further information refer to the + release notes + and upgrade guide. + Nodejs 8 is scheduled EOL under the lifetime of 19.09 and has been dropped. @@ -273,6 +279,11 @@ The module has been removed from nixpkgs due to lack of maintainer. + + + Squid 3 has been removed and the derivation now refers to Squid 4. + + diff --git a/pkgs/applications/altcoins/bitcoin-unlimited-const-comparators.patch b/pkgs/applications/altcoins/bitcoin-unlimited-const-comparators.patch deleted file mode 100644 index 1b74a48a84aa..000000000000 --- a/pkgs/applications/altcoins/bitcoin-unlimited-const-comparators.patch +++ /dev/null @@ -1,38 +0,0 @@ ---- a/src/txmempool.h -+++ b/src/txmempool.h -@@ -204,7 +204,7 @@ - class CompareTxMemPoolEntryByDescendantScore - { - public: -- bool operator()(const CTxMemPoolEntry& a, const CTxMemPoolEntry& b) -+ bool operator()(const CTxMemPoolEntry& a, const CTxMemPoolEntry& b) const - { - bool fUseADescendants = UseDescendantScore(a); - bool fUseBDescendants = UseDescendantScore(b); -@@ -226,7 +226,7 @@ - } - - // Calculate which score to use for an entry (avoiding division). -- bool UseDescendantScore(const CTxMemPoolEntry &a) -+ bool UseDescendantScore(const CTxMemPoolEntry &a) const - { - double f1 = (double)a.GetModifiedFee() * a.GetSizeWithDescendants(); - double f2 = (double)a.GetModFeesWithDescendants() * a.GetTxSize(); -@@ -241,7 +241,7 @@ - class CompareTxMemPoolEntryByScore - { - public: -- bool operator()(const CTxMemPoolEntry& a, const CTxMemPoolEntry& b) -+ bool operator()(const CTxMemPoolEntry& a, const CTxMemPoolEntry& b) const - { - double f1 = (double)a.GetModifiedFee() * b.GetTxSize(); - double f2 = (double)b.GetModifiedFee() * a.GetTxSize(); -@@ -255,7 +255,7 @@ - class CompareTxMemPoolEntryByEntryTime - { - public: -- bool operator()(const CTxMemPoolEntry& a, const CTxMemPoolEntry& b) -+ bool operator()(const CTxMemPoolEntry& a, const CTxMemPoolEntry& b) const - { - return a.GetTime() < b.GetTime(); - } diff --git a/pkgs/applications/altcoins/bitcoin-unlimited.nix b/pkgs/applications/altcoins/bitcoin-unlimited.nix index 13ec55bb589d..a75b20b39109 100644 --- a/pkgs/applications/altcoins/bitcoin-unlimited.nix +++ b/pkgs/applications/altcoins/bitcoin-unlimited.nix @@ -1,34 +1,32 @@ { stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, openssl, db48, boost -, zlib, miniupnpc, qt4, utillinux, protobuf, qrencode, libevent -, withGui +, zlib, miniupnpc, utillinux, protobuf, qrencode, libevent, python3 +, withGui, wrapQtAppsHook ? null, qtbase ? null, qttools ? null , Foundation, ApplicationServices, AppKit }: with stdenv.lib; stdenv.mkDerivation rec { - name = "bitcoin" + (toString (optional (!withGui) "d")) + "-unlimited-" + version; - version = "1.0.3.0"; + version = "1.6.0.1"; src = fetchFromGitHub { owner = "bitcoinunlimited"; repo = "bitcoinunlimited"; - rev = "v${version}"; - sha256 = "0l02a7h502msrp4c02wgm7f3159ap8l61k4890vas99gq7ywxkcx"; + rev = "bucash${version}"; + sha256 = "0f0mnal4jf8xdj7w5m4rdlcqkrkbpxi88c006m5k45lmjmj141zr"; }; - nativeBuildInputs = [ pkgconfig autoreconfHook ]; + nativeBuildInputs = [ pkgconfig autoreconfHook python3 ] + ++ optionals withGui [ wrapQtAppsHook qttools ]; buildInputs = [ openssl db48 boost zlib miniupnpc utillinux protobuf libevent ] - ++ optionals withGui [ qt4 qrencode ] + ++ optionals withGui [ qtbase qttools qrencode ] ++ optionals stdenv.isDarwin [ Foundation ApplicationServices AppKit ]; - patches = [ - ./bitcoin-unlimited-const-comparators.patch - ]; - configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ] - ++ optionals withGui [ "--with-gui=qt4" ]; + ++ optionals withGui [ "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; enableParallelBuilding = true; meta = { diff --git a/pkgs/applications/altcoins/bitcoin-xt.nix b/pkgs/applications/altcoins/bitcoin-xt.nix deleted file mode 100644 index 499bc4be4c83..000000000000 --- a/pkgs/applications/altcoins/bitcoin-xt.nix +++ /dev/null @@ -1,51 +0,0 @@ -{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, openssl, db48, boost -, zlib, miniupnpc, qt4, utillinux, protobuf, qrencode, curl, libevent -, withGui -, Foundation, ApplicationServices, AppKit }: - -with stdenv.lib; -stdenv.mkDerivation rec{ - - name = "bitcoin" + (toString (optional (!withGui) "d")) + "-xt-" + version; - version = "0.11H"; - - src = fetchFromGitHub { - owner = "bitcoinxt"; - repo = "bitcoinxt"; - rev = "v${version}"; - sha256 = "1v43bynmidn2zdpky939km721x3ks91bzyh4200gji61qzsmyg62"; - }; - - nativeBuildInputs = [ pkgconfig autoreconfHook ]; - buildInputs = [ openssl db48 boost zlib libevent - miniupnpc utillinux protobuf curl ] - ++ optionals withGui [ qt4 qrencode ] - ++ optionals stdenv.isDarwin [ Foundation ApplicationServices AppKit ]; - - configureFlags = [ - "--with-boost-libdir=${boost.out}/lib" - "--with-libcurl-headers=${curl.dev}/include" - ] ++ optionals withGui [ "--with-gui=qt4" ]; - - enableParallelBuilding = true; - - meta = { - description = "Peer-to-peer electronic cash system (XT client)"; - longDescription= '' - Bitcoin is a free open source peer-to-peer electronic cash system that is - completely decentralized, without the need for a central server or trusted - parties. Users hold the crypto keys to their own money and transact directly - with each other, with the help of a P2P network to check for double-spending. - - Bitcoin XT is an implementation of a Bitcoin full node, based upon the - source code of Bitcoin Core. It is built by taking the latest stable - Core release, applying a series of patches, and then doing deterministic - builds so anyone can check the downloads correspond to the source code. - ''; - homepage = https://bitcoinxt.software/; - maintainers = with maintainers; [ jefdaj ]; - license = licenses.mit; - broken = stdenv.isDarwin; - platforms = platforms.unix; - }; -} diff --git a/pkgs/applications/altcoins/default.nix b/pkgs/applications/altcoins/default.nix index 5293c1eefa36..5b5bfb897cf3 100644 --- a/pkgs/applications/altcoins/default.nix +++ b/pkgs/applications/altcoins/default.nix @@ -1,4 +1,4 @@ -{ callPackage, boost155, boost165, openssl_1_1, darwin, libsForQt5, libsForQt59, miniupnpc_2, python3, buildGo110Package }: +{ callPackage, boost155, boost165, darwin, libsForQt5, libsForQt59, miniupnpc_2, python3, buildGo110Package }: rec { @@ -11,7 +11,7 @@ rec { bitcoin-abc = libsForQt5.callPackage ./bitcoin-abc.nix { boost = boost165; withGui = true; }; bitcoind-abc = callPackage ./bitcoin-abc.nix { boost = boost165; withGui = false; }; - bitcoin-unlimited = callPackage ./bitcoin-unlimited.nix { + bitcoin-unlimited = libsForQt5.callPackage ./bitcoin-unlimited.nix { inherit (darwin.apple_sdk.frameworks) Foundation ApplicationServices AppKit; withGui = true; }; @@ -23,15 +23,6 @@ rec { bitcoin-classic = libsForQt5.callPackage ./bitcoin-classic.nix { boost = boost165; withGui = true; }; bitcoind-classic = callPackage ./bitcoin-classic.nix { boost = boost165; withGui = false; }; - bitcoin-xt = callPackage ./bitcoin-xt.nix { - inherit (darwin.apple_sdk.frameworks) Foundation ApplicationServices AppKit; - boost = boost165; withGui = true; - }; - bitcoind-xt = callPackage ./bitcoin-xt.nix { - inherit (darwin.apple_sdk.frameworks) Foundation ApplicationServices AppKit; - boost = boost165; withGui = false; - }; - btc1 = callPackage ./btc1.nix { inherit (darwin.apple_sdk.frameworks) AppKit; boost = boost165; @@ -69,9 +60,6 @@ rec { masari = callPackage ./masari.nix { boost = boost165; }; - memorycoin = callPackage ./memorycoin.nix { boost = boost165; withGui = true; }; - memorycoind = callPackage ./memorycoin.nix { boost = boost165; withGui = false; }; - mist = callPackage ./mist.nix { }; namecoin = callPackage ./namecoin.nix { withGui = true; }; @@ -90,7 +78,6 @@ rec { zcash = callPackage ./zcash { withGui = false; - openssl = openssl_1_1; }; parity = callPackage ./parity { }; diff --git a/pkgs/applications/altcoins/dogecoin.nix b/pkgs/applications/altcoins/dogecoin.nix index 1332e53964b8..e5f149a0efe7 100644 --- a/pkgs/applications/altcoins/dogecoin.nix +++ b/pkgs/applications/altcoins/dogecoin.nix @@ -1,8 +1,8 @@ { stdenv , fetchFromGitHub , pkgconfig, autoreconfHook -, db5, openssl, boost, zlib, miniupnpc +, db5, openssl, boost, zlib, miniupnpc, libevent , protobuf, utillinux, qt4, qrencode -, withGui, libevent }: +, withGui }: with stdenv.lib; stdenv.mkDerivation rec { diff --git a/pkgs/applications/altcoins/freicoin.nix b/pkgs/applications/altcoins/freicoin.nix index 78ce074eafd3..664159be2013 100644 --- a/pkgs/applications/altcoins/freicoin.nix +++ b/pkgs/applications/altcoins/freicoin.nix @@ -34,5 +34,8 @@ stdenv.mkDerivation rec { license = licenses.mit; maintainers = [ maintainers.viric ]; platforms = platforms.linux; + + # upstream doesn't support newer openssl versions, use 1.0.1 for testing + broken = true; }; } diff --git a/pkgs/applications/altcoins/memorycoin.nix b/pkgs/applications/altcoins/memorycoin.nix deleted file mode 100644 index 944c82250d47..000000000000 --- a/pkgs/applications/altcoins/memorycoin.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, openssl, db48, boost -, zlib, qt4, qmake4Hook, utillinux, protobuf, qrencode -, withGui }: - -with stdenv.lib; -stdenv.mkDerivation rec{ - - name = "memorycoin" + (toString (optional (!withGui) "d")) + "-" + version; - version = "0.8.5"; - - src = fetchurl { - url = "https://github.com/memorycoin/memorycoin/archive/v${version}.tar.gz"; - sha256 = "1iyh6dqrg0mirwci5br5n5qw3ghp2cs23wd8ygr56bh9ml4dr1m8"; - }; - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ openssl db48 boost zlib utillinux protobuf ] - ++ optionals withGui [ qt4 qmake4Hook qrencode ]; - - qmakeFlags = ["USE_UPNP=-"]; - makeFlags = ["USE_UPNP=-"]; - - configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ] - ++ optionals withGui [ "--with-gui=qt4" ]; - - preBuild = "unset AR;" - + (toString (optional (!withGui) "cd src; cp makefile.unix Makefile")); - - installPhase = - if withGui - then "install -D bitcoin-qt $out/bin/memorycoin-qt" - else "install -D bitcoind $out/bin/memorycoind"; - - # `make build/version.o`: - # make: *** No rule to make target 'build/build.h', needed by 'build/version.o'. Stop. - enableParallelBuilding = false; - - meta = { - description = "Peer-to-peer, CPU-based electronic cash system"; - longDescription= '' - Memorycoin is a cryptocurrency that aims to empower the - economically and financially marginalized. It allows individuals - to participate in the internet economy even when they live in - countries where credit card companies and PayPal(R) refuse to - operate. Individuals can store and transfer wealth with just a - memorized pass phrase. - - Memorycoin is based on the Bitcoin code, but with some key - differences. - ''; - homepage = http://www.bitcoin.org/; - maintainers = with maintainers; [ AndersonTorres ]; - license = licenses.mit; - platforms = [ "x86_64-linux" ]; - }; -} diff --git a/pkgs/applications/altcoins/pivx.nix b/pkgs/applications/altcoins/pivx.nix index 995b8deccd95..e2cf8aa182f3 100644 --- a/pkgs/applications/altcoins/pivx.nix +++ b/pkgs/applications/altcoins/pivx.nix @@ -50,5 +50,12 @@ stdenv.mkDerivation rec { homepage = https://www.dash.org; maintainers = with maintainers; [ wucke13 ]; platforms = platforms.unix; + + # upstream doesn't support newer openssl versions + # https://github.com/PIVX-Project/PIVX/issues/748 + # "Your system is most probably using openssl 1.1 which is not the + # officialy supported version. Either use 1.0.1 or run again configure + # with the given option." + broken = true; }; } diff --git a/pkgs/applications/altcoins/wasabiwallet/default.nix b/pkgs/applications/altcoins/wasabiwallet/default.nix index 9eef471adad2..7185b3510601 100644 --- a/pkgs/applications/altcoins/wasabiwallet/default.nix +++ b/pkgs/applications/altcoins/wasabiwallet/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, makeDesktopItem, openssl_1_1, xorg, curl, fontconfig, krb5, zlib, dotnet-sdk }: +{ stdenv, fetchurl, makeDesktopItem, openssl, xorg, curl, fontconfig, krb5, zlib, dotnet-sdk }: stdenv.mkDerivation rec { pname = "wasabiwallet"; @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { cd $out/opt/${pname} for i in $(find . -type f -name '*.so') wassabee do - patchelf --set-rpath ${stdenv.lib.makeLibraryPath [ openssl_1_1 stdenv.cc.cc.lib xorg.libX11 curl fontconfig.lib krb5 zlib dotnet-sdk ]} $i + patchelf --set-rpath ${stdenv.lib.makeLibraryPath [ openssl stdenv.cc.cc.lib xorg.libX11 curl fontconfig.lib krb5 zlib dotnet-sdk ]} $i done patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" wassabee ln -s $out/opt/${pname}/wassabee $out/bin/${pname} diff --git a/pkgs/applications/misc/getxbook/default.nix b/pkgs/applications/misc/getxbook/default.nix index a77f87f6f1f1..2fadc89c48d9 100644 --- a/pkgs/applications/misc/getxbook/default.nix +++ b/pkgs/applications/misc/getxbook/default.nix @@ -13,6 +13,8 @@ stdenv.mkDerivation rec { makeFlags = [ "PREFIX=$(out)" ]; + NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; + meta = with stdenv.lib; { description = "A collection of tools to download books from Google Books"; homepage = https://njw.me.uk/getxbook/; diff --git a/pkgs/applications/misc/golden-cheetah/default.nix b/pkgs/applications/misc/golden-cheetah/default.nix index d4ff7269987c..0af84365158e 100644 --- a/pkgs/applications/misc/golden-cheetah/default.nix +++ b/pkgs/applications/misc/golden-cheetah/default.nix @@ -1,5 +1,6 @@ -{ stdenv, mkDerivation, fetchurl -, qtbase, qtsvg, qtserialport, qtwebkit, qtmultimedia, qttools, qtconnectivity +{ stdenv, fetchFromGitHub, mkDerivation +, qtbase, qtsvg, qtserialport, qtwebkit, qtmultimedia, qttools +, qtconnectivity, qtcharts , yacc, flex, zlib, qmake, makeDesktopItem, makeWrapper }: @@ -15,20 +16,22 @@ let }; in mkDerivation rec { name = "golden-cheetah-${version}"; - version = "3.4"; - src = fetchurl { - name = "${name}.tar.gz"; - url = "https://github.com/GoldenCheetah/GoldenCheetah/archive/V${version}.tar.gz"; - sha256 = "0fiz2pj155cd357kph50lc6rjyzwp045glfv4y68qls9j7m9ayaf"; + version = "3.5-DEV1903"; + + src = fetchFromGitHub { + owner = "GoldenCheetah"; + repo = "GoldenCheetah"; + rev = "v${version}"; + sha256 = "130b0hm04i0hf97rs1xrdfhbal5vjsknj3x4cdxjh7rgbg2p1sm3"; }; + buildInputs = [ qtbase qtsvg qtserialport qtwebkit qtmultimedia qttools zlib - qtconnectivity + qtconnectivity qtcharts ]; nativeBuildInputs = [ flex makeWrapper qmake yacc ]; - NIX_LDFLAGS = [ - "-lz" - ]; + + NIX_LDFLAGS = [ "-lz" ]; qtWrapperArgs = [ "--set LD_LIBRARY_PATH ${zlib.out}/lib" ]; @@ -38,6 +41,7 @@ in mkDerivation rec { echo 'QMAKE_LRELEASE = ${qttools.dev}/bin/lrelease' >> src/gcconfig.pri sed -i -e '21,23d' qwt/qwtconfig.pri # Removed forced installation to /usr/local ''; + installPhase = '' runHook preInstall diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index bc1678335947..c643139ef3a5 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -6,7 +6,6 @@ , jrePlugin, icedtea_web , bluejeans, djview4, adobe-reader , google_talk_plugin, fribid, gnome3/*.gnome-shell*/ -, esteidfirefoxplugin , browserpass, chrome-gnome-shell, uget-integrator, plasma-browser-integration, bukubrow , tridactyl-native , udev @@ -61,7 +60,6 @@ let ++ lib.optional (cfg.enableGnomeExtensions or false) gnome3.gnome-shell ++ lib.optional (cfg.enableBluejeans or false) bluejeans ++ lib.optional (cfg.enableAdobeReader or false) adobe-reader - ++ lib.optional (cfg.enableEsteid or false) esteidfirefoxplugin ++ extraPlugins ); nativeMessagingHosts = diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/esteidfirefoxplugin/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/esteidfirefoxplugin/default.nix deleted file mode 100644 index 48d06d644dda..000000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/esteidfirefoxplugin/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ stdenv, fetchurl, gtk2, openssl, pcsclite, pkgconfig, opensc }: - -stdenv.mkDerivation rec { - version = "3.12.1.1142"; - name = "esteidfirefoxplugin-${version}"; - - src = fetchurl { - url = "https://installer.id.ee/media/ubuntu/pool/main/e/esteidfirefoxplugin/esteidfirefoxplugin_3.12.1.1142.orig.tar.xz"; - sha256 = "0y7759x1xr00p5r3c5wpllcqqnnxh2zi74cmy4m9m690z3ywn0fx"; - }; - - unpackPhase = '' - mkdir src - tar xf $src -C src - cd src - ''; - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ gtk2 openssl pcsclite opensc ]; - - buildPhase = '' - sed -i "s|opensc-pkcs11.so|${opensc}/lib/pkcs11/opensc-pkcs11.so|" Makefile - make plugin - ''; - - installPhase = '' - plugins=$out/lib/mozilla/plugins - mkdir -p $plugins - cp -a npesteid-firefox-plugin.so $plugins/ - rp=$(patchelf --print-rpath $plugins/npesteid-firefox-plugin.so) - patchelf --set-rpath "$rp:${opensc}/lib:${opensc}/lib/pkcs11" $plugins/npesteid-firefox-plugin.so - ''; - - passthru.mozillaPlugin = "/lib/mozilla/plugins"; - - dontStrip = true; - dontPatchELF = true; - - meta = with stdenv.lib; { - description = "Firefox ID card signing plugin"; - homepage = http://www.id.ee/; - license = licenses.lgpl2; - platforms = platforms.linux; - maintainers = [ maintainers.jagajaga ]; - }; -} diff --git a/pkgs/applications/networking/cluster/hadoop/default.nix b/pkgs/applications/networking/cluster/hadoop/default.nix index 42c043d0007f..376f8113b23a 100644 --- a/pkgs/applications/networking/cluster/hadoop/default.nix +++ b/pkgs/applications/networking/cluster/hadoop/default.nix @@ -1,7 +1,9 @@ -{ stdenv, fetchurl, makeWrapper, pkgconfig, which, maven, cmake, jre, bash, coreutils, glibc, protobuf2_5, fuse, snappy, zlib, bzip2, openssl }: +{ stdenv, fetchurl, makeWrapper, pkgconfig, which, maven, cmake, jre, bash +, coreutils, glibc, protobuf2_5, fuse, snappy, zlib, bzip2, openssl, openssl_1_0_2 +}: let - common = { version, sha256, dependencies-sha256, tomcat }: + common = { version, sha256, dependencies-sha256, tomcat, opensslPkg ? openssl }: let # compile the hadoop tarball from sources, it requires some patches binary-distributon = stdenv.mkDerivation rec { @@ -33,7 +35,7 @@ let }; nativeBuildInputs = [ maven cmake pkgconfig ]; - buildInputs = [ fuse snappy zlib bzip2 openssl protobuf2_5 ]; + buildInputs = [ fuse snappy zlib bzip2 opensslPkg protobuf2_5 ]; # most of the hardcoded pathes are fixed in 2.9.x and 3.0.0, this list of patched files might be reduced when 2.7.x and 2.8.x will be deprecated postPatch = '' for file in hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/HardLink.java \ @@ -84,7 +86,7 @@ let mv $n $out/bin.wrapped/ makeWrapper $out/bin.wrapped/$(basename $n) $n \ --prefix PATH : "${stdenv.lib.makeBinPath [ which jre bash coreutils ]}" \ - --prefix JAVA_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ openssl snappy zlib bzip2 ]}" \ + --prefix JAVA_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ opensslPkg snappy zlib bzip2 ]}" \ --set JAVA_HOME "${jre}" \ --set HADOOP_PREFIX "$out" fi @@ -127,18 +129,21 @@ in { sha256 = "1ahv67f3lwak3kbjvnk1gncq56z6dksbajj872iqd0awdsj3p5rf"; dependencies-sha256 = "1lsr9nvrynzspxqcamb10d596zlnmnfpxhkd884gdiva0frm0b1r"; tomcat = tomcat_6_0_48; + opensslPkg = openssl_1_0_2; }; hadoop_2_8 = common { version = "2.8.4"; sha256 = "16c3ljhrzibkjn3y1bmjxdgf0kn60l23ay5hqpp7vpbnqx52x68w"; dependencies-sha256 = "1j4f461487fydgr5978nnm245ksv4xbvskfr8pbmfhcyss6b7w03"; tomcat = tomcat_6_0_48; + opensslPkg = openssl_1_0_2; }; hadoop_2_9 = common { version = "2.9.1"; sha256 = "0qgmpfbpv7f521fkjy5ldzdb4lwiblhs0hyl8qy041ws17y5x7d7"; dependencies-sha256 = "1d5i8jj5y746rrqb9lscycnd7acmxlkz64ydsiyqsh5cdqgy2x7x"; tomcat = tomcat_6_0_48; + opensslPkg = openssl_1_0_2; }; hadoop_3_0 = common { version = "3.0.3"; diff --git a/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix b/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix deleted file mode 100644 index 77a8d57f8b6f..000000000000 --- a/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ stdenv, fetchgit -, qtbase, qtmultimedia, qtquick1, qtquickcontrols -, qtimageformats, qtgraphicaleffects, qtwebkit -, telegram-qml, libqtelegram-aseman-edition -, gst_all_1 -, makeWrapper, qmake }: - -stdenv.mkDerivation rec { - name = "cutegram-${meta.version}"; - - src = fetchgit { - url = "https://github.com/Aseman-Land/Cutegram.git"; - rev = "1dbe2792fb5a1760339379907f906e236c09db84"; - sha256 = "146vd3ri05da2asxjjxibnqmb685lgwl2kaz7mwb7ja7vi4149f0"; - }; - - buildInputs = - [ qtbase qtmultimedia qtquick1 qtquickcontrols - qtimageformats qtgraphicaleffects qtwebkit - telegram-qml libqtelegram-aseman-edition - ] ++ (with gst_all_1; [ gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly ]); - - - enableParallelBuilding = true; - nativeBuildInputs = [ makeWrapper qmake ]; - - fixupPhase = '' - wrapProgram $out/bin/cutegram \ - --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" - ''; - - meta = with stdenv.lib; { - version = "2.7.1"; - description = "Telegram client forked from sigram"; - homepage = http://aseman.co/en/products/cutegram/; - license = licenses.gpl3; - maintainers = with maintainers; [ AndersonTorres ]; - platforms = platforms.linux; - }; -} -#TODO: appindicator, for system tray plugin diff --git a/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix b/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix deleted file mode 100644 index 49368da708e9..000000000000 --- a/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ stdenv, fetchFromGitHub -, qtbase, qtmultimedia, qtquick1, qmake }: - -stdenv.mkDerivation rec { - name = "libqtelegram-aseman-edition-${meta.version}"; - - src = fetchFromGitHub { - owner = "Aseman-Land"; - repo = "libqtelegram-aseman-edition"; - rev = "v${meta.version}-stable"; - sha256 = "1pfd4pvh51639zk9shv1s4f6pf0ympnhar8a302vhrkga9i4cbx6"; - }; - - buildInputs = [ qtbase qtmultimedia qtquick1 ]; - enableParallelBuilding = true; - nativeBuildInputs = [ qmake ]; - - patchPhase = '' - substituteInPlace libqtelegram-ae.pro --replace "/libqtelegram-ae" "" - substituteInPlace libqtelegram-ae.pro --replace "/\$\$LIB_PATH" "" - ''; - - meta = with stdenv.lib; { - version = "6.1"; - description = "A fork of libqtelegram by Aseman, using qmake"; - homepage = src.meta.homepage; - license = licenses.gpl3; - maintainers = [ maintainers.Profpatsch ]; - platforms = platforms.linux; - }; - -} diff --git a/pkgs/applications/networking/instant-messengers/telegram/telegram-cli/default.nix b/pkgs/applications/networking/instant-messengers/telegram/telegram-cli/default.nix deleted file mode 100644 index c0b1de893c73..000000000000 --- a/pkgs/applications/networking/instant-messengers/telegram/telegram-cli/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ stdenv, fetchgit, libconfig, libevent, openssl -, readline, zlib, lua5_2, python, pkgconfig, jansson -, runtimeShell -}: - -stdenv.mkDerivation rec { - name = "telegram-cli-2016-03-23"; - - src = fetchgit { - url = "https://github.com/vysheng/tg.git"; - sha256 = "07sss5cnw2ygd7mp8f5532lmj7qm6ywqf4cjaq5g13i8igzqzwzj"; - rev = "6547c0b21b977b327b3c5e8142963f4bc246187a"; - }; - - buildInputs = [ - libconfig libevent openssl readline zlib - lua5_2 python pkgconfig jansson - ]; - installPhase = '' - mkdir -p $out/bin - cp ./bin/telegram-cli $out/bin/telegram-wo-key - cp ./tg-server.pub $out/ - cat > $out/bin/telegram-cli < @@ -26,7 +27,7 @@ stdenv.mkDerivation rec { glib libxml2 gtk3 gtk-vnc gmp libgcrypt gnupg cyrus_sasl shared-mime-info libvirt yajl gsettings-desktop-schemas libvirt-glib libcap_ng numactl libapparmor - ] ++ optionals stdenv.isx86_64 [ + ] ++ optionals xenSupport [ xen ] ++ optionals spiceSupport [ spice-gtk spice-protocol libcap gdbm diff --git a/pkgs/desktops/enlightenment/default.nix b/pkgs/desktops/enlightenment/default.nix index a8b5e08abd65..8d0fed6b3d85 100644 --- a/pkgs/desktops/enlightenment/default.nix +++ b/pkgs/desktops/enlightenment/default.nix @@ -1,7 +1,9 @@ { callPackage, pkgs }: rec { #### CORE EFL - efl = callPackage ./efl.nix { openjpeg = pkgs.openjpeg_1; }; + efl = callPackage ./efl.nix { + openjpeg = pkgs.openjpeg_1; + }; #### WINDOW MANAGER enlightenment = callPackage ./enlightenment.nix { }; diff --git a/pkgs/desktops/gnome-2/default.nix b/pkgs/desktops/gnome-2/default.nix index 95e6d0f12b03..16828f08bc27 100644 --- a/pkgs/desktops/gnome-2/default.nix +++ b/pkgs/desktops/gnome-2/default.nix @@ -37,7 +37,9 @@ lib.makeScope pkgs.newScope (self: with self; { gnome_python_desktop = callPackage ./bindings/gnome-python-desktop { }; - gnome_vfs = callPackage ./platform/gnome-vfs { }; + gnome_vfs = callPackage ./platform/gnome-vfs { + openssl = pkgs.openssl_1_0_2; + }; libgnome = callPackage ./platform/libgnome { }; diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix index 0f4157cde28e..d920baa0dafb 100644 --- a/pkgs/development/haskell-modules/configuration-common.nix +++ b/pkgs/development/haskell-modules/configuration-common.nix @@ -1285,4 +1285,7 @@ self: super: { # QuickCheck >=2.3 && <2.13, hspec >=2.1 && <2.7 graphviz = dontCheck super.graphviz; + # https://github.com/elliottt/hsopenid/issues/15 + openid = markBroken super.openid; + } // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super diff --git a/pkgs/development/interpreters/python/pypy/default.nix b/pkgs/development/interpreters/python/pypy/default.nix index 7ec476b1ea49..3e86ddef4ed4 100644 --- a/pkgs/development/interpreters/python/pypy/default.nix +++ b/pkgs/development/interpreters/python/pypy/default.nix @@ -1,6 +1,6 @@ { stdenv, substituteAll, fetchurl , zlib ? null, zlibSupport ? true, bzip2, pkgconfig, libffi -, sqlite, openssl, ncurses, python, expat, tcl, tk, tix, xlibsWrapper, libX11 +, sqlite, openssl_1_0_2, ncurses, python, expat, tcl, tk, tix, xlibsWrapper, libX11 , self, gdbm, db, lzma , python-setup-hook # For the Python package set @@ -40,7 +40,7 @@ in with passthru; stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig ]; buildInputs = [ - bzip2 openssl pythonForPypy libffi ncurses expat sqlite tk tcl xlibsWrapper libX11 gdbm db + bzip2 openssl_1_0_2 pythonForPypy libffi ncurses expat sqlite tk tcl xlibsWrapper libX11 gdbm db ] ++ optionals isPy3k [ lzma ] ++ optionals (stdenv ? cc && stdenv.cc.libc != null) [ diff --git a/pkgs/development/libraries/aacskeys/default.nix b/pkgs/development/libraries/aacskeys/default.nix deleted file mode 100644 index 9e28bfd4fe2c..000000000000 --- a/pkgs/development/libraries/aacskeys/default.nix +++ /dev/null @@ -1,47 +0,0 @@ -{stdenv, fetchurl, openssl, jdk, premake3}: - -# Info on how to use / obtain aacs keys: -# http://vlc-bluray.whoknowsmy.name/ -# https://wiki.archlinux.org/index.php/BluRay - - -let baseName = "aacskeys"; - version = "0.4.0e"; -in - -stdenv.mkDerivation { - name = "${baseName}-${version}"; - - patchPhase = '' - substituteInPlace "premake.lua" \ - --replace "/usr/lib/jvm/java-6-sun/include" "${jdk}/include" - ''; - - src = fetchurl { - url = "http://deb-multimedia.org/pool/main/a/${baseName}/${baseName}_${version}.orig.tar.gz"; - sha256 = "0d3zvwixpkixfkkc16wj37h2xbcq5hsqqhqngzqr6pslmqr67vnr"; - }; - - buildInputs = [openssl jdk premake3]; - - installPhase = '' - mkdir -p $out/{bin,lib,share/${baseName}} - - # Install lib - install -Dm444 lib/linux/libaacskeys.so $out/lib - - # Install program - install -Dm555 bin/linux/aacskeys $out/bin - - # Install resources - install -Dm444 HostKeyCertificate.txt $out/share/${baseName} - install -Dm444 ProcessingDeviceKeysSimple.txt $out/share/${baseName} - ''; - - meta = with stdenv.lib; { - homepage = http://forum.doom9.org/showthread.php?t=123311; - description = "A library and program to retrieve decryption keys for HD discs"; - platforms = platforms.linux; - license = licenses.publicDomain; - }; -} diff --git a/pkgs/development/libraries/exosip/default.nix b/pkgs/development/libraries/exosip/default.nix index 240f3c136ef5..332504e46b54 100644 --- a/pkgs/development/libraries/exosip/default.nix +++ b/pkgs/development/libraries/exosip/default.nix @@ -1,20 +1,27 @@ -{stdenv, fetchurl, libosip, openssl, pkgconfig }: +{ stdenv, fetchurl, libosip, openssl, pkgconfig, fetchpatch }: stdenv.mkDerivation rec { name = "libexosip2-${version}"; version = "4.1.0"; - + src = fetchurl { url = "mirror://savannah/exosip/libeXosip2-${version}.tar.gz"; sha256 = "17cna8kpc8nk1si419vgr6r42k2lda0rdk50vlxrw8rzg0xp2xrw"; }; - + nativeBuildInputs = [ pkgconfig ]; buildInputs = [ libosip openssl ]; - + + patches = [ + (fetchpatch { + url = "https://sources.debian.net/data/main/libe/libexosip2/4.1.0-2.1/debian/patches/openssl110.patch"; + sha256 = "01q2dax7pwh197mn18r22y38mrsky85mvs9vbkn9fpcilrdayal6"; + }) + ]; + meta = with stdenv.lib; { license = licenses.gpl2Plus; description = "Library that hides the complexity of using the SIP protocol"; - platforms =platforms.linux; + platforms = platforms.linux; }; } diff --git a/pkgs/development/libraries/globalplatform/default.nix b/pkgs/development/libraries/globalplatform/default.nix index 3ef279616f75..f01fb13c3c3e 100644 --- a/pkgs/development/libraries/globalplatform/default.nix +++ b/pkgs/development/libraries/globalplatform/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, zlib, openssl, pcsclite }: +{ stdenv, fetchurl, pkgconfig, zlib, openssl_1_0_2, pcsclite }: stdenv.mkDerivation rec { name = "globalplatform-${version}"; @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ zlib openssl pcsclite ]; + buildInputs = [ zlib openssl_1_0_2 pcsclite ]; meta = with stdenv.lib; { homepage = https://sourceforge.net/p/globalplatform/wiki/Home/; diff --git a/pkgs/development/libraries/globalplatform/gppcscconnectionplugin.nix b/pkgs/development/libraries/globalplatform/gppcscconnectionplugin.nix index 10df82196c2e..87addaa99919 100644 --- a/pkgs/development/libraries/globalplatform/gppcscconnectionplugin.nix +++ b/pkgs/development/libraries/globalplatform/gppcscconnectionplugin.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, globalplatform, openssl, pcsclite }: +{ stdenv, fetchurl, pkgconfig, globalplatform, openssl_1_0_2, pcsclite }: stdenv.mkDerivation rec { name = "gppcscconnectionplugin-${version}"; @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ globalplatform openssl pcsclite ]; + buildInputs = [ globalplatform openssl_1_0_2 pcsclite ]; meta = with stdenv.lib; { homepage = https://sourceforge.net/p/globalplatform/wiki/Home/; diff --git a/pkgs/development/libraries/libvirt-glib/default.nix b/pkgs/development/libraries/libvirt-glib/default.nix index 74c3d24560cd..9dd89133f4b9 100644 --- a/pkgs/development/libraries/libvirt-glib/default.nix +++ b/pkgs/development/libraries/libvirt-glib/default.nix @@ -1,6 +1,7 @@ { stdenv, fetchurl, pkgconfig, libvirt, glib, libxml2, intltool, libtool, yajl , nettle, libgcrypt, pythonPackages, gobject-introspection, libcap_ng, numactl -, xen, libapparmor, vala +, libapparmor, vala +, xenSupport ? false, xen ? null }: let @@ -19,7 +20,7 @@ in stdenv.mkDerivation rec { buildInputs = [ libvirt glib libxml2 intltool libtool yajl nettle libgcrypt python pygobject2 gobject-introspection libcap_ng numactl libapparmor - ] ++ stdenv.lib.optionals stdenv.isx86_64 [ + ] ++ stdenv.lib.optionals xenSupport [ xen ]; diff --git a/pkgs/development/libraries/opendkim/default.nix b/pkgs/development/libraries/opendkim/default.nix index 3d110910b159..71885ba46f10 100644 --- a/pkgs/development/libraries/opendkim/default.nix +++ b/pkgs/development/libraries/opendkim/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, pkgconfig, libbsd, openssl, libmilter -, perl, makeWrapper }: +, autoreconfHook, perl, makeWrapper }: stdenv.mkDerivation rec { name = "opendkim-${version}"; @@ -16,10 +16,12 @@ stdenv.mkDerivation rec { "ac_cv_func_realloc_0_nonnull=yes" ]; - nativeBuildInputs = [ pkgconfig makeWrapper ]; + nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper ]; buildInputs = [ libbsd openssl libmilter perl ]; + patches = [ ./openssl-1.1.patch ]; + postInstall = '' wrapProgram $out/sbin/opendkim-genkey \ --prefix PATH : ${openssl.bin}/bin diff --git a/pkgs/development/libraries/opendkim/openssl-1.1.patch b/pkgs/development/libraries/opendkim/openssl-1.1.patch new file mode 100644 index 000000000000..c36559cf16cd --- /dev/null +++ b/pkgs/development/libraries/opendkim/openssl-1.1.patch @@ -0,0 +1,81 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -864,26 +864,28 @@ + AC_SEARCH_LIBS([ERR_peek_error], [crypto], , + AC_MSG_ERROR([libcrypto not found])) + +- AC_SEARCH_LIBS([SSL_library_init], [ssl], , +- [ +- if test x"$enable_shared" = x"yes" +- then +- AC_MSG_ERROR([Cannot build shared opendkim +- against static openssl libraries. +- Configure with --disable-shared +- to get this working or obtain a +- shared libssl library for +- opendkim to use.]) +- fi +- +- # avoid caching issue - last result of SSL_library_init +- # shouldn't be cached for this next check +- unset ac_cv_search_SSL_library_init +- LIBCRYPTO_LIBS="$LIBCRYPTO_LIBS -ldl" +- AC_SEARCH_LIBS([SSL_library_init], [ssl], , +- AC_MSG_ERROR([libssl not found]), [-ldl]) +- ] +- ) ++ ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([[#include ]], ++ [[SSL_library_init();]])], ++ [od_have_ossl="yes";], ++ [od_have_ossl="no";]) ++ if test x"$od_have_ossl" = x"no" ++ then ++ if test x"$enable_shared" = x"yes" ++ then ++ AC_MSG_ERROR([Cannot build shared opendkim ++ against static openssl libraries. ++ Configure with --disable-shared ++ to get this working or obtain a ++ shared libssl library for ++ opendkim to use.]) ++ fi ++ ++ LIBCRYPTO_LIBS="$LIBCRYPTO_LIBS -ldl" ++ AC_SEARCH_LIBS([SSL_library_init], [ssl], , ++ AC_MSG_ERROR([libssl not found]), [-ldl]) ++ fi + + AC_CHECK_DECL([SHA256_DIGEST_LENGTH], + AC_DEFINE([HAVE_SHA256], 1, +--- a/opendkim/opendkim-crypto.c ++++ b/opendkim/opendkim-crypto.c +@@ -222,7 +222,11 @@ + { + assert(pthread_setspecific(id_key, ptr) == 0); + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000 ++ OPENSSL_thread_stop(); ++#else + ERR_remove_state(0); ++#endif + + free(ptr); + +@@ -392,11 +396,15 @@ + { + if (crypto_init_done) + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000 ++ OPENSSL_thread_stop(); ++#else + CRYPTO_cleanup_all_ex_data(); + CONF_modules_free(); + EVP_cleanup(); + ERR_free_strings(); + ERR_remove_state(0); ++#endif + + if (nmutexes > 0) + { diff --git a/pkgs/development/libraries/opensaml-cpp/default.nix b/pkgs/development/libraries/opensaml-cpp/default.nix index 659c4fb7cff6..9488ef484c6f 100644 --- a/pkgs/development/libraries/opensaml-cpp/default.nix +++ b/pkgs/development/libraries/opensaml-cpp/default.nix @@ -1,17 +1,21 @@ -{ stdenv, fetchgit, autoreconfHook, boost, openssl, log4shib, xercesc, xml-security-c, xml-tooling-c, zlib }: +{ stdenv, fetchgit, autoreconfHook, pkgconfig +, boost, openssl, log4shib, xercesc, xml-security-c, xml-tooling-c, zlib +}: stdenv.mkDerivation rec { name = "opensaml-cpp-${version}"; - version = "2.6.1"; + version = "3.0.1"; src = fetchgit { url = "https://git.shibboleth.net/git/cpp-opensaml.git"; rev = version; - sha256 = "0wjb6jyvh4hwpy1pvhh63i821746nqijysrd4vasbirkf4h6z7nx"; + sha256 = "0ms3sqmwqkrqb92d7jy2hqwnz5yd7cbrz73n321jik0jilrwl5w8"; }; - buildInputs = [ boost openssl log4shib xercesc xml-security-c xml-tooling-c zlib ]; - nativeBuildInputs = [ autoreconfHook ]; + buildInputs = [ + boost openssl log4shib xercesc xml-security-c xml-tooling-c zlib + ]; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; configureFlags = [ "--with-xmltooling=${xml-tooling-c}" ]; diff --git a/pkgs/development/libraries/ptlib/default.nix b/pkgs/development/libraries/ptlib/default.nix index d1dcc5fdb97a..e7abedf31214 100644 --- a/pkgs/development/libraries/ptlib/default.nix +++ b/pkgs/development/libraries/ptlib/default.nix @@ -25,6 +25,11 @@ stdenv.mkDerivation rec { (fetchpatch { url = http://sources.debian.net/data/main/p/ptlib/2.10.11~dfsg-2.1/debian/patches/no-sslv3; sha256 = "172s1dnnrl54p9sf1nl7s475sm78rpw3p8jxi0pdx6izzl8hcdr0"; }) + (fetchpatch { + name = "openssl-1.1.patch"; + url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/openssl-1.1.0.patch?h=packages/ptlib&id=1dfa9f55e7e030d261228fca27dda82979ca7f30"; + sha256 = "11hdgyyibycg0wf5ls0wk9hksa4jd434i86xqiccbyg17n4l6lc1"; + }) ./ptlib-2.10.11-glibc-2.26.patch ]; diff --git a/pkgs/development/libraries/qca2/default.nix b/pkgs/development/libraries/qca2/default.nix index ec32c44a91fc..885b7b378cc3 100644 --- a/pkgs/development/libraries/qca2/default.nix +++ b/pkgs/development/libraries/qca2/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, cmake, pkgconfig, qt, darwin }: +{ stdenv, fetchurl, openssl_1_0_2, cmake, pkgconfig, qt, darwin }: stdenv.mkDerivation rec { name = "qca-${version}"; @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ cmake pkgconfig ]; - buildInputs = [ qt ] + buildInputs = [ openssl_1_0_2 qt ] ++ stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security; enableParallelBuilding = true; diff --git a/pkgs/development/libraries/qt-4.x/4.8/default.nix b/pkgs/development/libraries/qt-4.x/4.8/default.nix index f833d130fbba..8c1c76db8f47 100644 --- a/pkgs/development/libraries/qt-4.x/4.8/default.nix +++ b/pkgs/development/libraries/qt-4.x/4.8/default.nix @@ -83,13 +83,14 @@ stdenv.mkDerivation rec { + "21b342d71c19e6d68b649947f913410fe6129ea4/debian/patches/kubuntu_39_fix_medium_font.diff"; sha256 = "0bli44chn03c2y70w1n8l7ss4ya0b40jqqav8yxrykayi01yf95j"; }) - # Patch is no longer available from here, so vendoring it for now. + # Patches are no longer available from here, so vendoring it for now. #(fetchpatch { # name = "qt4-gcc6.patch"; # url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/qt4-gcc6.patch?h=packages/qt4&id=ca773a144f5abb244ac4f2749eeee9333cac001f"; # sha256 = "07lrva7bjh6i40p7b3ml26a2jlznri8bh7y7iyx5zmvb1gfxmj34"; #}) ./qt4-gcc6.patch + ./qt4-openssl-1.1.patch ] ++ lib.optional gtkStyle (substituteAll ({ src = ./dlopen-gtkstyle.diff; diff --git a/pkgs/development/libraries/qt-4.x/4.8/qt4-openssl-1.1.patch b/pkgs/development/libraries/qt-4.x/4.8/qt4-openssl-1.1.patch new file mode 100644 index 000000000000..1931ceb0c749 --- /dev/null +++ b/pkgs/development/libraries/qt-4.x/4.8/qt4-openssl-1.1.patch @@ -0,0 +1,398 @@ +--- a/src/network/ssl/qsslcertificate.cpp ++++ b/src/network/ssl/qsslcertificate.cpp +@@ -259,10 +259,10 @@ + QByteArray QSslCertificate::version() const + { + QMutexLocker lock(QMutexPool::globalInstanceGet(d.data())); +- if (d->versionString.isEmpty() && d->x509) ++ if (d->versionString.isEmpty() && d->x509) { + d->versionString = +- QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1); +- ++ QByteArray::number(qlonglong(q_X509_get_version(d->x509)) + 1); ++ } + return d->versionString; + } + +@@ -276,7 +276,7 @@ + { + QMutexLocker lock(QMutexPool::globalInstanceGet(d.data())); + if (d->serialNumberString.isEmpty() && d->x509) { +- ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber; ++ ASN1_INTEGER *serialNumber = q_X509_get_serialNumber(d->x509); + // if we cannot convert to a long, just output the hexadecimal number + if (serialNumber->length > 4) { + QByteArray hexString; +@@ -489,24 +489,33 @@ + QSslKey key; + + key.d->type = QSsl::PublicKey; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + X509_PUBKEY *xkey = d->x509->cert_info->key; ++#else ++ X509_PUBKEY *xkey = q_X509_get_X509_PUBKEY(d->x509); ++#endif + EVP_PKEY *pkey = q_X509_PUBKEY_get(xkey); + Q_ASSERT(pkey); + +- if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) { ++ int key_id; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ key_id = q_EVP_PKEY_type(pkey->type); ++#else ++ key_id = q_EVP_PKEY_base_id(pkey); ++#endif ++ if (key_id == EVP_PKEY_RSA) { + key.d->rsa = q_EVP_PKEY_get1_RSA(pkey); + key.d->algorithm = QSsl::Rsa; + key.d->isNull = false; +- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) { ++ } else if (key_id == EVP_PKEY_DSA) { + key.d->dsa = q_EVP_PKEY_get1_DSA(pkey); + key.d->algorithm = QSsl::Dsa; + key.d->isNull = false; +- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) { ++ } else if (key_id == EVP_PKEY_DH) { + // DH unsupported + } else { + // error? + } +- + q_EVP_PKEY_free(pkey); + return key; + } +--- a/src/network/ssl/qsslkey.cpp ++++ b/src/network/ssl/qsslkey.cpp +@@ -321,8 +321,19 @@ + { + if (d->isNull) + return -1; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + return (d->algorithm == QSsl::Rsa) + ? q_BN_num_bits(d->rsa->n) : q_BN_num_bits(d->dsa->p); ++#else ++ if (d->algorithm == QSsl::Rsa) { ++ return q_RSA_bits(d->rsa); ++ }else{ ++ BIGNUM *p = NULL; ++ q_DSA_get0_pqg(d->dsa, &p, NULL, NULL); ++ return q_BN_num_bits(p); ++ } ++#endif ++ + } + + /*! +--- a/src/network/ssl/qsslsocket_openssl.cpp ++++ b/src/network/ssl/qsslsocket_openssl.cpp +@@ -93,6 +93,7 @@ + bool QSslSocketPrivate::s_loadedCiphersAndCerts = false; + bool QSslSocketPrivate::s_loadRootCertsOnDemand = false; + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + /* \internal + + From OpenSSL's thread(3) manual page: +@@ -174,6 +175,8 @@ + } + } // extern "C" + ++#endif //OPENSSL_VERSION_NUMBER >= 0x10100000L ++ + QSslSocketBackendPrivate::QSslSocketBackendPrivate() + : ssl(0), + ctx(0), +@@ -222,9 +225,12 @@ + ciph.d->encryptionMethod = descriptionList.at(4).mid(4); + ciph.d->exportable = (descriptionList.size() > 6 && descriptionList.at(6) == QLatin1String("export")); + ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + ciph.d->bits = cipher->strength_bits; + ciph.d->supportedBits = cipher->alg_bits; +- ++#else ++ ciph.d->bits = q_SSL_CIPHER_get_bits(cipher, &ciph.d->supportedBits); ++#endif + } + return ciph; + } +@@ -367,7 +373,7 @@ + // + // See also: QSslContext::fromConfiguration() + if (caCertificate.expiryDate() >= QDateTime::currentDateTime()) { +- q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle()); ++ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(ctx), (X509 *)caCertificate.handle()); + } + } + +@@ -504,8 +510,10 @@ + */ + void QSslSocketPrivate::deinitialize() + { ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + q_CRYPTO_set_id_callback(0); + q_CRYPTO_set_locking_callback(0); ++#endif + } + + /*! +@@ -526,13 +534,17 @@ + return false; + + // Check if the library itself needs to be initialized. ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + QMutexLocker locker(openssl_locks()->initLock()); ++#endif + if (!s_libraryLoaded) { + s_libraryLoaded = true; + + // Initialize OpenSSL. ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + q_CRYPTO_set_id_callback(id_function); + q_CRYPTO_set_locking_callback(locking_function); ++#endif + if (q_SSL_library_init() != 1) + return false; + q_SSL_load_error_strings(); +@@ -571,7 +583,9 @@ + + void QSslSocketPrivate::ensureCiphersAndCertsLoaded() + { +- QMutexLocker locker(openssl_locks()->initLock()); ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ QMutexLocker locker(openssl_locks()->initLock()); ++#endif + if (s_loadedCiphersAndCerts) + return; + s_loadedCiphersAndCerts = true; +@@ -663,13 +677,18 @@ + STACK_OF(SSL_CIPHER) *supportedCiphers = q_SSL_get_ciphers(mySsl); + for (int i = 0; i < q_sk_SSL_CIPHER_num(supportedCiphers); ++i) { + if (SSL_CIPHER *cipher = q_sk_SSL_CIPHER_value(supportedCiphers, i)) { +- if (cipher->valid) { ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ if (cipher->valid) { ++#endif + QSslCipher ciph = QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(cipher); + if (!ciph.isNull()) { + if (!ciph.name().toLower().startsWith(QLatin1String("adh"))) + ciphers << ciph; + } ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + } ++#endif + } + } + +--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp ++++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp +@@ -290,6 +290,22 @@ + DEFINEFUNC(void, OPENSSL_add_all_algorithms_conf, void, DUMMYARG, return, DUMMYARG) + DEFINEFUNC3(int, SSL_CTX_load_verify_locations, SSL_CTX *ctx, ctx, const char *CAfile, CAfile, const char *CApath, CApath, return 0, return) + DEFINEFUNC(long, SSLeay, void, DUMMYARG, return 0, return) ++DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *ctx, ctx, return 0, return) ++ ++DEFINEFUNC(ASN1_INTEGER *, X509_get_serialNumber, X509 *x, x, return 0, return) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++DEFINEFUNC(int, EVP_PKEY_id, const EVP_PKEY *pkey, pkey, return 0, return) ++DEFINEFUNC(int, EVP_PKEY_base_id, const EVP_PKEY *pkey, pkey, return 0, return) ++DEFINEFUNC2(int, SSL_CIPHER_get_bits, const SSL_CIPHER *cipher, cipher, int *alg_bits, alg_bits, return 0, return) ++DEFINEFUNC2(long, SSL_CTX_set_options, SSL_CTX *ctx, ctx, long options, options, return 0, return) ++DEFINEFUNC(long, X509_get_version, X509 *x, x, return 0, return) ++DEFINEFUNC(X509_PUBKEY *, X509_get_X509_PUBKEY, X509 *x, x, return 0, return) ++DEFINEFUNC(int, RSA_bits, const RSA *rsa, rsa, return 0, return) ++DEFINEFUNC(int, DSA_security_bits, const DSA *dsa, dsa, return 0, return) ++DEFINEFUNC(ASN1_TIME *, X509_get_notAfter, X509 *x, x, return 0, return) ++DEFINEFUNC(ASN1_TIME *, X509_get_notBefore, X509 *x, x, return 0, return) ++DEFINEFUNC4(void, DSA_get0_pqg, const DSA *d, d, BIGNUM **p, p, BIGNUM **q, q, BIGNUM **g, g, return, return) ++#endif + + #ifdef Q_OS_SYMBIAN + #define RESOLVEFUNC(func, ordinal, lib) \ +@@ -801,6 +817,7 @@ + RESOLVEFUNC(SSL_CTX_use_PrivateKey) + RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey) + RESOLVEFUNC(SSL_CTX_use_PrivateKey_file) ++ RESOLVEFUNC(SSL_CTX_get_cert_store) + RESOLVEFUNC(SSL_accept) + RESOLVEFUNC(SSL_clear) + RESOLVEFUNC(SSL_connect) +@@ -823,6 +840,23 @@ + RESOLVEFUNC(SSL_set_connect_state) + RESOLVEFUNC(SSL_shutdown) + RESOLVEFUNC(SSL_write) ++ ++ RESOLVEFUNC(X509_get_serialNumber) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ RESOLVEFUNC(SSL_CTX_ctrl) ++ RESOLVEFUNC(EVP_PKEY_id) ++ RESOLVEFUNC(EVP_PKEY_base_id) ++ RESOLVEFUNC(SSL_CIPHER_get_bits) ++ RESOLVEFUNC(SSL_CTX_set_options) ++ RESOLVEFUNC(X509_get_version) ++ RESOLVEFUNC(X509_get_X509_PUBKEY) ++ RESOLVEFUNC(RSA_bits) ++ RESOLVEFUNC(DSA_security_bits) ++ RESOLVEFUNC(DSA_get0_pqg) ++ RESOLVEFUNC(X509_get_notAfter) ++ RESOLVEFUNC(X509_get_notBefore) ++#endif ++ + #ifndef OPENSSL_NO_SSL2 + RESOLVEFUNC(SSLv2_client_method) + #endif +--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h ++++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h +@@ -399,7 +399,25 @@ + PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\ + bp,(char *)x,enc,kstr,klen,cb,u) + #endif ++ ++X509_STORE * q_SSL_CTX_get_cert_store(const SSL_CTX *ctx); ++ASN1_INTEGER * q_X509_get_serialNumber(X509 *x); ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + #define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) ++#define q_X509_get_version(x) X509_get_version(x) ++#else ++int q_EVP_PKEY_id(const EVP_PKEY *pkey); ++int q_EVP_PKEY_base_id(const EVP_PKEY *pkey); ++int q_SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits); ++long q_SSL_CTX_set_options(SSL_CTX *ctx, long options); ++long q_X509_get_version(X509 *x); ++X509_PUBKEY * q_X509_get_X509_PUBKEY(X509 *x); ++int q_RSA_bits(const RSA *rsa); ++int q_DSA_security_bits(const DSA *dsa); ++void q_DSA_get0_pqg(const DSA *d, BIGNUM **p, BIGNUM **q, BIGNUM **g); ++#endif ++ + #define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st) + #define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i) + #define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st)) +@@ -410,8 +428,15 @@ + #define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i)) + #define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \ + q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + #define q_X509_get_notAfter(x) X509_get_notAfter(x) + #define q_X509_get_notBefore(x) X509_get_notBefore(x) ++#else ++ASN1_TIME *q_X509_get_notAfter(X509 *x); ++ASN1_TIME *q_X509_get_notBefore(X509 *x); ++#endif ++ + #define q_EVP_PKEY_assign_RSA(pkey,rsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) + #define q_EVP_PKEY_assign_DSA(pkey,dsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ +--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslcertificate.cpp.omv~ 2017-03-15 02:27:18.143322736 +0100 ++++ qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslcertificate.cpp 2017-03-15 02:29:56.215819741 +0100 +@@ -696,7 +696,7 @@ + unsigned char *data = 0; + int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e)); + info[QString::fromUtf8(obj)] = QString::fromUtf8((char*)data, size); +- q_CRYPTO_free(data); ++ q_OPENSSL_free(data); + } + return info; + } +--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslkey.cpp.0131~ 2017-03-15 02:22:37.053244125 +0100 ++++ qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslkey.cpp 2017-03-15 02:22:37.055244057 +0100 +@@ -328,7 +328,7 @@ + if (d->algorithm == QSsl::Rsa) { + return q_RSA_bits(d->rsa); + }else{ +- BIGNUM *p = NULL; ++ const BIGNUM *p = NULL; + q_DSA_get0_pqg(d->dsa, &p, NULL, NULL); + return q_BN_num_bits(p); + } +--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols.cpp.0131~ 2017-03-15 02:22:37.054244091 +0100 ++++ qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols.cpp 2017-03-15 02:29:41.155236836 +0100 +@@ -111,16 +111,16 @@ + DEFINEFUNC2(int, ASN1_STRING_to_UTF8, unsigned char **a, a, ASN1_STRING *b, b, return 0, return); + DEFINEFUNC4(long, BIO_ctrl, BIO *a, a, int b, b, long c, c, void *d, d, return -1, return) + DEFINEFUNC(int, BIO_free, BIO *a, a, return 0, return) +-DEFINEFUNC(BIO *, BIO_new, BIO_METHOD *a, a, return 0, return) ++DEFINEFUNC(BIO *, BIO_new, const BIO_METHOD *a, a, return 0, return) + DEFINEFUNC2(BIO *, BIO_new_mem_buf, void *a, a, int b, b, return 0, return) + DEFINEFUNC3(int, BIO_read, BIO *a, a, void *b, b, int c, c, return -1, return) +-DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return) ++DEFINEFUNC(const BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return) + DEFINEFUNC3(int, BIO_write, BIO *a, a, const void *b, b, int c, c, return -1, return) + DEFINEFUNC(int, BN_num_bits, const BIGNUM *a, a, return 0, return) + DEFINEFUNC(int, CRYPTO_num_locks, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG) + DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG) +-DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG) ++DEFINEFUNC(void, OPENSSL_free, void *a, a, return, DUMMYARG) + DEFINEFUNC(void, DSA_free, DSA *a, a, return, DUMMYARG) + #if OPENSSL_VERSION_NUMBER < 0x00908000L + DEFINEFUNC3(X509 *, d2i_X509, X509 **a, a, unsigned char **b, b, long c, c, return 0, return) +@@ -300,7 +300,7 @@ + DEFINEFUNC(int, DSA_security_bits, const DSA *dsa, dsa, return 0, return) + DEFINEFUNC(ASN1_TIME *, X509_get_notAfter, X509 *x, x, return 0, return) + DEFINEFUNC(ASN1_TIME *, X509_get_notBefore, X509 *x, x, return 0, return) +-DEFINEFUNC4(void, DSA_get0_pqg, const DSA *d, d, BIGNUM **p, p, BIGNUM **q, q, BIGNUM **g, g, return, return) ++DEFINEFUNC4(void, DSA_get0_pqg, const DSA *d, d, const BIGNUM **p, p, const BIGNUM **q, q, const BIGNUM **g, g, return, return) + #endif + + #ifdef Q_OS_SYMBIAN +--- qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols_p.h.0131~ 2017-03-15 02:22:37.054244091 +0100 ++++ qt-everywhere-opensource-src-4.8.7/src/network/ssl/qsslsocket_openssl_symbols_p.h 2017-03-15 02:29:50.192986268 +0100 +@@ -59,6 +59,9 @@ + QT_BEGIN_NAMESPACE + + #define DUMMYARG ++#ifndef OPENSSL_NO_SSL2 ++#define OPENSSL_NO_SSL2 1 ++#endif + + #if !defined QT_LINKED_OPENSSL + // **************** Shared declarations ****************** +@@ -207,16 +210,16 @@ + int q_ASN1_STRING_to_UTF8(unsigned char **a, ASN1_STRING *b); + long q_BIO_ctrl(BIO *a, int b, long c, void *d); + int q_BIO_free(BIO *a); +-BIO *q_BIO_new(BIO_METHOD *a); ++BIO *q_BIO_new(const BIO_METHOD *a); + BIO *q_BIO_new_mem_buf(void *a, int b); + int q_BIO_read(BIO *a, void *b, int c); +-BIO_METHOD *q_BIO_s_mem(); ++const BIO_METHOD *q_BIO_s_mem(); + int q_BIO_write(BIO *a, const void *b, int c); + int q_BN_num_bits(const BIGNUM *a); + int q_CRYPTO_num_locks(); + void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int)); + void q_CRYPTO_set_id_callback(unsigned long (*a)()); +-void q_CRYPTO_free(void *a); ++void q_OPENSSL_free(void *a); + void q_DSA_free(DSA *a); + #if OPENSSL_VERSION_NUMBER >= 0x00908000L + // 0.9.8 broke SC and BC by changing this function's signature. +@@ -326,7 +329,6 @@ + void q_SSL_set_connect_state(SSL *a); + int q_SSL_shutdown(SSL *a); + #if OPENSSL_VERSION_NUMBER >= 0x10000000L +-const SSL_METHOD *q_SSLv2_client_method(); + const SSL_METHOD *q_SSLv3_client_method(); + const SSL_METHOD *q_SSLv23_client_method(); + const SSL_METHOD *q_TLSv1_client_method(); +@@ -335,7 +337,6 @@ + const SSL_METHOD *q_SSLv23_server_method(); + const SSL_METHOD *q_TLSv1_server_method(); + #else +-SSL_METHOD *q_SSLv2_client_method(); + SSL_METHOD *q_SSLv3_client_method(); + SSL_METHOD *q_SSLv23_client_method(); + SSL_METHOD *q_TLSv1_client_method(); +@@ -415,7 +416,7 @@ + X509_PUBKEY * q_X509_get_X509_PUBKEY(X509 *x); + int q_RSA_bits(const RSA *rsa); + int q_DSA_security_bits(const DSA *dsa); +-void q_DSA_get0_pqg(const DSA *d, BIGNUM **p, BIGNUM **q, BIGNUM **g); ++void q_DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); + #endif + + #define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st) diff --git a/pkgs/development/libraries/qt-5/5.6/default.nix b/pkgs/development/libraries/qt-5/5.6/default.nix deleted file mode 100644 index d45b014b765e..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/default.nix +++ /dev/null @@ -1,193 +0,0 @@ -/* - -# New packages - -READ THIS FIRST - -This module is for official packages in Qt 5. All available packages are listed -in `./srcs.nix`, although a few are not yet packaged in Nixpkgs (see below). - -IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE. - -Many of the packages released upstream are not yet built in Nixpkgs due to lack -of demand. To add a Nixpkgs build for an upstream package, copy one of the -existing packages here and modify it as necessary. - -# Updates - -1. Update the URL in `./fetch.sh`. -2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/development/libraries/qt-5/$VERSION/` - from the top of the Nixpkgs tree. -3. Check that the new packages build correctly. -4. Commit the changes and open a pull request. - -*/ - -{ - newScope, - stdenv, fetchurl, fetchpatch, makeSetupHook, makeWrapper, - bison, cups ? null, harfbuzz, libGL, perl, - gstreamer, gst-plugins-base, - - # options - developerBuild ? false, - decryptSslTraffic ? false, - debug ? false, -}: - -with stdenv.lib; - -let - - qtCompatVersion = srcs.qtbase.version; - - mirror = "http://download.qt.io"; - srcs = import ./srcs.nix { inherit fetchurl; inherit mirror; }; - - patches = { - qtbase = [ - ./qtbase.patch - ./qtbase-fixguicmake.patch - (fetchpatch { - name = "CVE-2018-15518.patch"; - url = "https://codereview.qt-project.org/gitweb?p=qt/qtbase.git;a=patch;h=28a6e642af2ccb454dd019f551c2908753f76f08"; - sha256 = "0nyssg7d0br7qgzp481f1w8b4p1bj2ggv9iyfrm1mng5v9fypdd7"; - }) - (fetchpatch { - name = "CVE-2018-19873.patch"; - url = "https://codereview.qt-project.org/gitweb?p=qt/qtbase.git;a=patch;h=c9b9f663d7243988bcb5fee9180ea9cb3a321a86"; - sha256 = "1q01cafy92c1j8cgrv4sk133mi3d48x8kbg3glbnnbijpc4k6di5"; - }) - (fetchpatch { - name = "CVE-2018-19870.patch"; - url = "http://code.qt.io/cgit/qt/qtbase.git/patch/?id=ac0a910756f91726e03c0e6a89d213bdb4f48fec"; - sha256 = "00qb9yqwvwnp202am3lqirkjxln1cj8v4wvmlyqya6hna176lj2l"; - }) - ]; - qtdeclarative = [ ./qtdeclarative.patch ]; - qtscript = [ ./qtscript.patch ]; - qtserialport = [ ./qtserialport.patch ]; - qttools = [ ./qttools.patch ]; - qtwebengine = [ ./qtwebengine-seccomp.patch ]; - qtwebkit = [ ./qtwebkit.patch ]; - qtvirtualkeyboard = [ - (fetchpatch { - name = "CVE-2018-19865-A.patch"; - url = "https://codereview.qt-project.org/gitweb?p=qt/qtvirtualkeyboard.git;a=patch;h=c02115db1de1f3aba81e109043766d600f886522"; - sha256 = "0ncnyl8f3ypi1kcb9z2i8j33snix111h28njrx8rb49ny01ap8x2"; - }) - (fetchpatch { - name = "CVE-2018-19865-B.patch"; - url = "https://codereview.qt-project.org/gitweb?p=qt/qtvirtualkeyboard.git;a=patch;h=01fc537adc74d5e102c8cc93384cdf5cb08b4442"; - sha256 = "19z8kxqf2lpjqr8189ingrpadch4niviw3p5v93zgx24v7950q27"; - }) - (fetchpatch { - name = "CVE-2018-19865-C.patch"; - url = "https://codereview.qt-project.org/gitweb?p=qt/qtvirtualkeyboard.git;a=patch;h=993a21ba03534b172d5354405cc9d50a2a822e24"; - sha256 = "1bipqxr9bvy8z402pv9kj2w1yzcsj1v03l09pg5jyg1xh6jbgiky"; - }) - ]; - qtimageformats = [ - (fetchpatch { - name = "CVE-2018-19871.patch"; - url = "https://codereview.qt-project.org/gitweb?p=qt/qtimageformats.git;a=patch;h=9299ab07df61c56b70e047f1fe5f06b6ff541aa3"; - sha256 = "0fd3mxdlc0s405j02bc0g72fvdfvpi31a837xfwf40m5j4jbyndr"; - }) - ]; - qtsvg = [ - (fetchpatch { - name = "CVE-2018-19869.patch"; - url = "http://code.qt.io/cgit/qt/qtsvg.git/patch/?id=c5f1dd14098d1cc2cb52448fb44f53966d331443"; - sha256 = "1kgyfsxw2f0qv5fx9y7wysjsvqikam0qc7wzhklf0406zz6rhxbl"; - }) - ]; - }; - - qtModule = - import ../qtModule.nix - { - inherit perl; - inherit (stdenv) lib; - # Use a variant of mkDerivation that does not include wrapQtApplications - # to avoid cyclic dependencies between Qt modules. - mkDerivation = - import ../mkDerivation.nix - { inherit (stdenv) lib; inherit debug; wrapQtAppsHook = null; } - stdenv.mkDerivation; - } - { inherit self srcs patches; }; - - addPackages = self: with self; - let - callPackage = self.newScope { inherit qtCompatVersion qtModule srcs; }; - in { - - mkDerivationWith = - import ../mkDerivation.nix - { inherit (stdenv) lib; inherit debug; inherit (self) wrapQtAppsHook; }; - - mkDerivation = mkDerivationWith stdenv.mkDerivation; - - qtbase = callPackage ../modules/qtbase.nix { - inherit bison cups harfbuzz libGL; - inherit (srcs.qtbase) src version; - patches = patches.qtbase; - inherit developerBuild decryptSslTraffic; - }; - - /* qt3d = not packaged */ - /* qtactiveqt = not packaged */ - /* qtandroidextras = not packaged */ - /* qtcanvas3d = not packaged */ - qtconnectivity = callPackage ../modules/qtconnectivity.nix {}; - qtdeclarative = callPackage ../modules/qtdeclarative.nix {}; - qtdoc = callPackage ../modules/qtdoc.nix {}; - qtgraphicaleffects = callPackage ../modules/qtgraphicaleffects.nix {}; - qtimageformats = callPackage ../modules/qtimageformats.nix {}; - qtlocation = callPackage ../modules/qtlocation.nix {}; - /* qtmacextras = not packaged */ - qtmultimedia = callPackage ../modules/qtmultimedia.nix { - inherit gstreamer gst-plugins-base; - }; - qtquick1 = null; - qtquickcontrols = callPackage ../modules/qtquickcontrols.nix {}; - qtquickcontrols2 = callPackage ../modules/qtquickcontrols2.nix {}; - qtscript = callPackage ../modules/qtscript.nix {}; - qtsensors = callPackage ../modules/qtsensors.nix {}; - qtserialport = callPackage ../modules/qtserialport.nix {}; - qtsvg = callPackage ../modules/qtsvg.nix {}; - qttools = callPackage ../modules/qttools.nix {}; - qttranslations = callPackage ../modules/qttranslations.nix {}; - qtwayland = callPackage ../modules/qtwayland.nix {}; - qtwebchannel = callPackage ../modules/qtwebchannel.nix {}; - qtwebengine = callPackage ../modules/qtwebengine.nix {}; - qtwebkit = callPackage ../modules/qtwebkit.nix {}; - qtwebsockets = callPackage ../modules/qtwebsockets.nix {}; - /* qtwinextras = not packaged */ - qtx11extras = callPackage ../modules/qtx11extras.nix {}; - qtxmlpatterns = callPackage ../modules/qtxmlpatterns.nix {}; - qtvirtualkeyboard = callPackage ../modules/qtvirtualkeyboard.nix {}; - - env = callPackage ../qt-env.nix {}; - full = env "qt-full-${qtbase.version}" [ - qtconnectivity qtdeclarative qtdoc qtgraphicaleffects qtimageformats - qtlocation qtmultimedia qtquickcontrols qtquickcontrols2 qtscript - qtsensors qtserialport qtsvg qttools qttranslations qtwayland - qtwebchannel qtwebengine qtwebkit qtwebsockets qtx11extras qtxmlpatterns - ]; - - qmake = makeSetupHook { - deps = [ self.qtbase.dev ]; - substitutions = { inherit (stdenv) isDarwin; }; - } ../hooks/qmake-hook.sh; - - wrapQtAppsHook = makeSetupHook { - deps = - [ self.qtbase.dev makeWrapper ] - ++ optional stdenv.isLinux self.qtwayland.dev; - } ../hooks/wrap-qt-apps-hook.sh; - }; - - self = makeScope newScope addPackages; - -in self diff --git a/pkgs/development/libraries/qt-5/5.6/fetch.sh b/pkgs/development/libraries/qt-5/5.6/fetch.sh deleted file mode 100644 index bb9eb66a01dc..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/fetch.sh +++ /dev/null @@ -1,2 +0,0 @@ -WGET_ARGS=( http://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/ \ - http://download.qt.io/community_releases/5.6/5.6.3/ ) diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase-fixguicmake.patch b/pkgs/development/libraries/qt-5/5.6/qtbase-fixguicmake.patch deleted file mode 100644 index 8b46d432812a..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/qtbase-fixguicmake.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -index 0bbc871..3673634 100644 ---- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -@@ -286,7 +286,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) - macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION) - set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) - -- set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") -+ set(imported_location \"${PLUGIN_LOCATION}\") - _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) - set_target_properties(Qt5::${Plugin} PROPERTIES - \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} -diff --git a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in -index 5baf0fd..3583745 100644 ---- a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in -+++ b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in -@@ -2,10 +2,10 @@ - add_library(Qt5::$$CMAKE_PLUGIN_NAME MODULE IMPORTED) - - !!IF !isEmpty(CMAKE_RELEASE_TYPE) --_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\") -+_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_DIR}$${CMAKE_PLUGIN_LOCATION_RELEASE}\") - !!ENDIF - !!IF !isEmpty(CMAKE_DEBUG_TYPE) --_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\") -+_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_DIR}$${CMAKE_PLUGIN_LOCATION_DEBUG}\") - !!ENDIF - - list(APPEND Qt5$${CMAKE_MODULE_NAME}_PLUGINS Qt5::$$CMAKE_PLUGIN_NAME) diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase.patch b/pkgs/development/libraries/qt-5/5.6/qtbase.patch deleted file mode 100644 index d8322cbc1997..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/qtbase.patch +++ /dev/null @@ -1,795 +0,0 @@ -diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf -index 11fb52a0b1..614fdbb046 100644 ---- a/mkspecs/features/create_cmake.prf -+++ b/mkspecs/features/create_cmake.prf -@@ -21,7 +21,7 @@ load(cmake_functions) - # at cmake time whether package has been found via a symlink, and correct - # that to an absolute path. This is only done for installations to - # the /usr or / prefix. --CMAKE_INSTALL_LIBS_DIR = $$cmakeTargetPath($$[QT_INSTALL_LIBS]) -+CMAKE_INSTALL_LIBS_DIR = $$cmakeTargetPath($$NIX_OUTPUT_OUT/lib/) - contains(CMAKE_INSTALL_LIBS_DIR, ^(/usr)?/lib(64)?.*): CMAKE_USR_MOVE_WORKAROUND = $$CMAKE_INSTALL_LIBS_DIR - - CMAKE_OUT_DIR = $$MODULE_BASE_OUTDIR/lib/cmake -@@ -47,47 +47,22 @@ split_incpath { - $$cmake_extra_source_includes.output - } - --CMAKE_INCLUDE_DIR = $$cmakeRelativePath($$[QT_INSTALL_HEADERS], $$[QT_INSTALL_PREFIX]) --contains(CMAKE_INCLUDE_DIR, "^\\.\\./.*") { -- CMAKE_INCLUDE_DIR = $$[QT_INSTALL_HEADERS]/ -- CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True --} -+CMAKE_INCLUDE_DIR = $$NIX_OUTPUT_DEV/include/ -+CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True - - !exists($$first(QT.$${MODULE}_private.includes)): CMAKE_NO_PRIVATE_INCLUDES = true - --CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) --contains(CMAKE_LIB_DIR,"^\\.\\./.*") { -- CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/ -- CMAKE_LIB_DIR_IS_ABSOLUTE = True --} else { -- CMAKE_RELATIVE_INSTALL_LIBS_DIR = $$cmakeRelativePath($$[QT_INSTALL_PREFIX], $$[QT_INSTALL_LIBS]) -- # We need to go up another two levels because the CMake files are -- # installed in $${CMAKE_LIB_DIR}/cmake/Qt5$${CMAKE_MODULE_NAME} -- CMAKE_RELATIVE_INSTALL_DIR = "$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}../../" --} -+CMAKE_LIB_DIR = $$NIX_OUTPUT_OUT/lib/ -+CMAKE_LIB_DIR_IS_ABSOLUTE = True - --CMAKE_BIN_DIR = $$cmakeRelativePath($$[QT_HOST_BINS], $$[QT_INSTALL_PREFIX]) --contains(CMAKE_BIN_DIR, "^\\.\\./.*") { -- CMAKE_BIN_DIR = $$[QT_HOST_BINS]/ -- CMAKE_BIN_DIR_IS_ABSOLUTE = True --} -+CMAKE_BIN_DIR = $$NIX_OUTPUT_BIN/bin/ -+CMAKE_BIN_DIR_IS_ABSOLUTE = True - --CMAKE_PLUGIN_DIR = $$cmakeRelativePath($$[QT_INSTALL_PLUGINS], $$[QT_INSTALL_PREFIX]) --contains(CMAKE_PLUGIN_DIR, "^\\.\\./.*") { -- CMAKE_PLUGIN_DIR = $$[QT_INSTALL_PLUGINS]/ -- CMAKE_PLUGIN_DIR_IS_ABSOLUTE = True --} -+CMAKE_PLUGIN_DIR = $$NIX_OUTPUT_PLUGIN/ -+CMAKE_PLUGIN_DIR_IS_ABSOLUTE = True - --win32:!wince:!static:!staticlib { -- CMAKE_DLL_DIR = $$cmakeRelativePath($$[QT_INSTALL_BINS], $$[QT_INSTALL_PREFIX]) -- contains(CMAKE_DLL_DIR, "^\\.\\./.*") { -- CMAKE_DLL_DIR = $$[QT_INSTALL_BINS]/ -- CMAKE_DLL_DIR_IS_ABSOLUTE = True -- } --} else { -- CMAKE_DLL_DIR = $$CMAKE_LIB_DIR -- CMAKE_DLL_DIR_IS_ABSOLUTE = $$CMAKE_LIB_DIR_IS_ABSOLUTE --} -+CMAKE_DLL_DIR = $$NIX_OUTPUT_OUT/lib/ -+CMAKE_DLL_DIR_IS_ABSOLUTE = True - - static|staticlib:CMAKE_STATIC_TYPE = true - -@@ -167,7 +142,7 @@ contains(CONFIG, plugin) { - cmake_target_file - - cmake_qt5_plugin_file.files = $$cmake_target_file.output -- cmake_qt5_plugin_file.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} -+ cmake_qt5_plugin_file.path = $$NIX_OUTPUT_OUT/lib/cmake/Qt5$${CMAKE_MODULE_NAME} - INSTALLS += cmake_qt5_plugin_file - - return() -@@ -314,7 +289,7 @@ exists($$cmake_macros_file.input) { - cmake_qt5_module_files.files += $$cmake_macros_file.output - } - --cmake_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} -+cmake_qt5_module_files.path = $$NIX_OUTPUT_OUT/lib/cmake/Qt5$${CMAKE_MODULE_NAME} - - # We are generating cmake files. Most developers of Qt are not aware of cmake, - # so we require automatic tests to be available. The only module which should -diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -index d2358cae4b..61d8cc0471 100644 ---- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in -@@ -9,30 +9,6 @@ if (CMAKE_VERSION VERSION_LESS 3.0.0) - endif() - !!ENDIF - --!!IF !isEmpty(CMAKE_USR_MOVE_WORKAROUND) --!!IF !isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) --set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") --!!ELSE --get_filename_component(_IMPORT_PREFIX \"${CMAKE_CURRENT_LIST_FILE}\" PATH) --# Use original install prefix when loaded through a --# cross-prefix symbolic link such as /lib -> /usr/lib. --get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH) --get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5$${CMAKE_MODULE_NAME}\" REALPATH) --if(_realCurr STREQUAL _realOrig) -- get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE) --else() -- get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) --endif() --unset(_realOrig) --unset(_realCurr) --unset(_IMPORT_PREFIX) --!!ENDIF --!!ELIF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) --get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) --!!ELSE --set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") --!!ENDIF -- - !!IF !equals(TEMPLATE, aux) - # For backwards compatibility only. Use Qt5$${CMAKE_MODULE_NAME}_VERSION instead. - set(Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING "$$eval(QT.$${MODULE}.MAJOR_VERSION).$$eval(QT.$${MODULE}.MINOR_VERSION).$$eval(QT.$${MODULE}.PATCH_VERSION)") -@@ -58,11 +34,7 @@ endmacro() - macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION) - set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) - --!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") --!!ELSE - set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") --!!ENDIF - _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) - set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES - \"INTERFACE_LINK_LIBRARIES\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" -@@ -75,11 +47,7 @@ macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATI - ) - - !!IF !isEmpty(CMAKE_WINDOWS_BUILD) --!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") --!!ELSE - set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") --!!ENDIF - _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_implib}) - if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\") - set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES -@@ -95,24 +63,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) - !!IF !no_module_headers - !!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) - set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" -+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" -+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" - ) - !!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) - set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" -- ) --!!ELSE -- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") --!!ENDIF --!!ELSE --!!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) -- set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\") --!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) -- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\" -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\" -+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" -+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" - ) - !!ELSE - set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") -@@ -128,7 +85,6 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) - set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") - !!ENDIF - !!ENDIF --!!ENDIF - !!IF !isEmpty(CMAKE_ADD_SOURCE_INCLUDE_DIRS) - include(\"${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake\" OPTIONAL) - !!ENDIF -@@ -254,25 +210,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) - !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) - !!IF isEmpty(CMAKE_DEBUG_TYPE) - !!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) --!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE - if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE - _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) - !!ELSE // CMAKE_STATIC_WINDOWS_BUILD - if (EXISTS --!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" --!!ELSE - \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" --!!ENDIF - AND EXISTS --!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ELSE - \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) --!!ENDIF - _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) - !!ENDIF // CMAKE_STATIC_WINDOWS_BUILD - endif() -@@ -291,25 +235,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) - !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) - !!IF isEmpty(CMAKE_RELEASE_TYPE) - !!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) --!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) --!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE - if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) --!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE - _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" ) - !!ELSE // CMAKE_STATIC_WINDOWS_BUILD - if (EXISTS --!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" --!!ELSE - \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" --!!ENDIF - AND EXISTS --!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) --!!ELSE - \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) --!!ENDIF - _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) - !!ENDIF // CMAKE_STATIC_WINDOWS_BUILD - endif() -@@ -328,11 +260,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) - macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION) - set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) - --!!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") --!!ELSE - set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") --!!ENDIF - _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) - set_target_properties(Qt5::${Plugin} PROPERTIES - \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} -diff --git a/mkspecs/features/qml_module.prf b/mkspecs/features/qml_module.prf -index 47ebe78400..25aa2b93e7 100644 ---- a/mkspecs/features/qml_module.prf -+++ b/mkspecs/features/qml_module.prf -@@ -17,10 +17,7 @@ fq_qml_files = $$_PRO_FILE_PWD_/qmldir - - for(qmlf, QML_FILES): fq_qml_files += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_) - --qml1_target: \ -- instbase = $$[QT_INSTALL_IMPORTS] --else: \ -- instbase = $$[QT_INSTALL_QML] -+instbase = $$NIX_OUTPUT_QML - - # Install rules - qmldir.base = $$_PRO_FILE_PWD_ -diff --git a/mkspecs/features/qml_plugin.prf b/mkspecs/features/qml_plugin.prf -index ebec1db8da..62ace84a6c 100644 ---- a/mkspecs/features/qml_plugin.prf -+++ b/mkspecs/features/qml_plugin.prf -@@ -46,13 +46,8 @@ exists($$QMLTYPEFILE): QML_FILES += $$QMLTYPEFILE - - load(qt_build_paths) - --qml1_target { -- DESTDIR = $$MODULE_BASE_OUTDIR/imports/$$TARGETPATH -- instbase = $$[QT_INSTALL_IMPORTS] --} else { -- DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH -- instbase = $$[QT_INSTALL_QML] --} -+DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH -+instbase = $$NIX_OUTPUT_QML - - target.path = $$instbase/$$TARGETPATH - INSTALLS += target -diff --git a/mkspecs/features/qt_app.prf b/mkspecs/features/qt_app.prf -index 46aca50cc2..4f4e634724 100644 ---- a/mkspecs/features/qt_app.prf -+++ b/mkspecs/features/qt_app.prf -@@ -29,7 +29,7 @@ host_build:force_bootstrap { - target.path = $$[QT_HOST_BINS] - } else { - !build_pass:contains(QT_CONFIG, debug_and_release): CONFIG += release -- target.path = $$[QT_INSTALL_BINS] -+ target.path = $$NIX_OUTPUT_BIN/bin - CONFIG += relative_qt_rpath # Qt's tools and apps should be relocatable - } - INSTALLS += target -diff --git a/mkspecs/features/qt_build_paths.prf b/mkspecs/features/qt_build_paths.prf -index 1848f00e90..2af93675c5 100644 ---- a/mkspecs/features/qt_build_paths.prf -+++ b/mkspecs/features/qt_build_paths.prf -@@ -23,6 +23,6 @@ exists($$MODULE_BASE_INDIR/.git): \ - !force_independent { - # If the module is not built independently, everything ends up in qtbase. - # This is the case in non-prefix builds, except for selected modules. -- MODULE_BASE_OUTDIR = $$[QT_HOST_PREFIX] -- MODULE_QMAKE_OUTDIR = $$[QT_HOST_PREFIX] -+ MODULE_BASE_OUTDIR = $$NIX_OUTPUT_OUT -+ MODULE_QMAKE_OUTDIR = $$NIX_OUTPUT_OUT - } -diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf -index 08b3f3e5af..5ffeafd9d8 100644 ---- a/mkspecs/features/qt_common.prf -+++ b/mkspecs/features/qt_common.prf -@@ -30,8 +30,8 @@ contains(TEMPLATE, .*lib) { - qqt_libdir = \$\$\$\$[QT_HOST_LIBS] - qt_libdir = $$[QT_HOST_LIBS] - } else { -- qqt_libdir = \$\$\$\$[QT_INSTALL_LIBS] -- qt_libdir = $$[QT_INSTALL_LIBS] -+ qqt_libdir = \$\$\$\$NIX_OUTPUT_OUT/lib -+ qt_libdir = $$NIX_OUTPUT_OUT/lib - } - contains(QMAKE_DEFAULT_LIBDIRS, $$qt_libdir) { - lib_replace.match = "[^ ']*$$rplbase/lib" -diff --git a/mkspecs/features/qt_docs.prf b/mkspecs/features/qt_docs.prf -index 183d0c9502..17982b04ec 100644 ---- a/mkspecs/features/qt_docs.prf -+++ b/mkspecs/features/qt_docs.prf -@@ -41,7 +41,7 @@ QMAKE_DOCS_OUTPUTDIR = $$QMAKE_DOCS_BASE_OUTDIR/$$QMAKE_DOCS_TARGETDIR - - QDOC += -outputdir $$shell_quote($$QMAKE_DOCS_OUTPUTDIR) - !build_online_docs: \ -- QDOC += -installdir $$shell_quote($$[QT_INSTALL_DOCS]) -+ QDOC += -installdir $$shell_quote($$NIX_OUTPUT_DOC) - PREP_DOC_INDEXES = - DOC_INDEXES = - !isEmpty(QTREPOS) { -@@ -60,8 +60,8 @@ DOC_INDEXES = - DOC_INDEXES += -indexdir $$shell_quote($$qrep/doc) - } else { - prepare_docs: \ -- PREP_DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get]) -- DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get]) -+ PREP_DOC_INDEXES += -indexdir $$shell_quote($$NIX_OUTPUT_DOC) -+ DOC_INDEXES += -indexdir $$shell_quote($$NIX_OUTPUT_DOC) - } - doc_command = $$QDOC $$QMAKE_DOCS - prepare_docs { -@@ -75,12 +75,12 @@ prepare_docs { - qch_docs.commands = $$QHELPGENERATOR $$shell_quote($$QMAKE_DOCS_OUTPUTDIR/$${QMAKE_DOCS_TARGET}.qhp) -o $$shell_quote($$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch) - - inst_html_docs.files = $$QMAKE_DOCS_OUTPUTDIR -- inst_html_docs.path = $$[QT_INSTALL_DOCS] -+ inst_html_docs.path = $$NIX_OUTPUT_DOC - inst_html_docs.CONFIG += no_check_exist directory no_default_install no_build - INSTALLS += inst_html_docs - - inst_qch_docs.files = $$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch -- inst_qch_docs.path = $$[QT_INSTALL_DOCS] -+ inst_qch_docs.path = $$NIX_OUTPUT_DOC - inst_qch_docs.CONFIG += no_check_exist no_default_install no_build - INSTALLS += inst_qch_docs - -diff --git a/mkspecs/features/qt_example_installs.prf b/mkspecs/features/qt_example_installs.prf -index 4c68cfd72f..f422f18266 100644 ---- a/mkspecs/features/qt_example_installs.prf -+++ b/mkspecs/features/qt_example_installs.prf -@@ -70,7 +70,7 @@ probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples) - $$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \ - $$DBUS_ADAPTORS $$DBUS_INTERFACES - addInstallFiles(sources.files, $$sourcefiles) -- sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase -+ sources.path = $$NIX_OUTPUT_DEV/share/examples/$$probase - INSTALLS += sources - - check_examples { -diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf -index 4a1d265a8b..d346424b5b 100644 ---- a/mkspecs/features/qt_functions.prf -+++ b/mkspecs/features/qt_functions.prf -@@ -70,7 +70,7 @@ defineTest(qtHaveModule) { - defineTest(qtPrepareTool) { - cmd = $$eval(QT_TOOL.$${2}.binary) - isEmpty(cmd) { -- cmd = $$[QT_HOST_BINS]/$$2 -+ cmd = $$system("command -v $$2") - exists($${cmd}.pl) { - cmd = perl -w $$system_path($${cmd}.pl) - } else: contains(QMAKE_HOST.os, Windows) { -diff --git a/mkspecs/features/qt_installs.prf b/mkspecs/features/qt_installs.prf -index 3a5dbb6274..24f321bd82 100644 ---- a/mkspecs/features/qt_installs.prf -+++ b/mkspecs/features/qt_installs.prf -@@ -12,16 +12,10 @@ - #library - !qt_no_install_library { - win32 { -- host_build: \ -- dlltarget.path = $$[QT_HOST_BINS] -- else: \ -- dlltarget.path = $$[QT_INSTALL_BINS] -+ dlltarget.path = $$NIX_OUTPUT_BIN/bin - INSTALLS += dlltarget - } -- host_build: \ -- target.path = $$[QT_HOST_LIBS] -- else: \ -- target.path = $$[QT_INSTALL_LIBS] -+ target.path = $$NIX_OUTPUT_OUT/lib - !static: target.CONFIG = no_dll - INSTALLS += target - } -@@ -29,33 +23,33 @@ - #headers - qt_install_headers { - class_headers.files = $$SYNCQT.HEADER_CLASSES -- class_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME -+ class_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME - INSTALLS += class_headers - - targ_headers.files = $$SYNCQT.HEADER_FILES -- targ_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME -+ targ_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME - INSTALLS += targ_headers - - private_headers.files = $$SYNCQT.PRIVATE_HEADER_FILES -- private_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private -+ private_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private - INSTALLS += private_headers - - qpa_headers.files = $$SYNCQT.QPA_HEADER_FILES -- qpa_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa -+ qpa_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa - INSTALLS += qpa_headers - } - - #module - qt_install_module { - !isEmpty(MODULE_PRI) { -- pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules -+ pritarget.path = $$NIX_OUTPUT_DEV/mkspecs/modules - pritarget.files = $$MODULE_PRI - INSTALLS += pritarget - } else: isEmpty(MODULE_PRIVATE_PRI) { - warning("Project $$basename(_PRO_FILE_) is a module, but has not defined MODULE_PRI, which is required for Qt to expose the module to other projects.") - } - !isEmpty(MODULE_PRIVATE_PRI) { -- privpritarget.path = $$[QT_HOST_DATA]/mkspecs/modules -+ privpritarget.path = $$NIX_OUTPUT_DEV/mkspecs/modules - privpritarget.files = $$MODULE_PRIVATE_PRI - INSTALLS += privpritarget - } -diff --git a/mkspecs/features/qt_plugin.prf b/mkspecs/features/qt_plugin.prf -index 3cf6c7349c..83e68025a5 100644 ---- a/mkspecs/features/qt_plugin.prf -+++ b/mkspecs/features/qt_plugin.prf -@@ -82,7 +82,7 @@ CONFIG(static, static|shared)|prefix_build { - } - } - --target.path = $$[QT_INSTALL_PLUGINS]/$$PLUGIN_TYPE -+target.path = $$NIX_OUTPUT_PLUGIN/$$PLUGIN_TYPE - INSTALLS += target - - TARGET = $$qt5LibraryTarget($$TARGET) -diff --git a/src/corelib/Qt5CoreConfigExtras.cmake.in b/src/corelib/Qt5CoreConfigExtras.cmake.in -index 91a4eb619a..08b533e69c 100644 ---- a/src/corelib/Qt5CoreConfigExtras.cmake.in -+++ b/src/corelib/Qt5CoreConfigExtras.cmake.in -@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qmake) - add_executable(Qt5::qmake IMPORTED) - - !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") -+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") - !!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") - !!ENDIF -@@ -18,7 +18,7 @@ if (NOT TARGET Qt5::moc) - add_executable(Qt5::moc IMPORTED) - - !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") -+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") - !!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") - !!ENDIF -@@ -35,7 +35,7 @@ if (NOT TARGET Qt5::rcc) - add_executable(Qt5::rcc IMPORTED) - - !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") -+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") - !!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") - !!ENDIF -@@ -131,7 +131,7 @@ if (NOT TARGET Qt5::WinMain) - !!IF !isEmpty(CMAKE_RELEASE_TYPE) - set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) - !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") -+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") - !!ELSE - set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") - !!ENDIF -@@ -145,7 +145,7 @@ if (NOT TARGET Qt5::WinMain) - set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) - - !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") -+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") - !!ELSE - set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") - !!ENDIF -diff --git a/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in b/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in -index c357237d0e..6f0c75de3c 100644 ---- a/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in -+++ b/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in -@@ -1,6 +1,6 @@ - - !!IF isEmpty(CMAKE_HOST_DATA_DIR_IS_ABSOLUTE) --set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") -+set(_qt5_corelib_extra_includes \"$$NIX_OUTPUT_DEV/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") - !!ELSE - set(_qt5_corelib_extra_includes \"$${CMAKE_HOST_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") - !!ENDIF -diff --git a/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in b/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in -index 706304cf34..546420f6ad 100644 ---- a/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in -+++ b/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in -@@ -1,6 +1,6 @@ - - !!IF isEmpty(CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE) --set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") -+set(_qt5_corelib_extra_includes \"$$NIX_OUTPUT_DEV/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") - !!ELSE - set(_qt5_corelib_extra_includes \"$${CMAKE_INSTALL_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") - !!ENDIF -diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp -index bd3c12ce97..a796775970 100644 ---- a/src/corelib/kernel/qcoreapplication.cpp -+++ b/src/corelib/kernel/qcoreapplication.cpp -@@ -2533,6 +2533,15 @@ QStringList QCoreApplication::libraryPaths() - QStringList *app_libpaths = new QStringList; - coreappdata()->app_libpaths.reset(app_libpaths); - -+ // Add library paths derived from PATH -+ const QStringList paths = QFile::decodeName(qgetenv("PATH")).split(':'); -+ const QString plugindir = QStringLiteral("../" NIXPKGS_QT_PLUGIN_PREFIX); -+ for (const QString &path: paths) { -+ if (!path.isEmpty()) { -+ app_libpaths->append(QDir::cleanPath(path + QDir::separator() + plugindir)); -+ } -+ } -+ - const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH"); - if (!libPathEnv.isEmpty()) { - QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts); -diff --git a/src/corelib/tools/qtimezoneprivate_tz.cpp b/src/corelib/tools/qtimezoneprivate_tz.cpp -index c13c9a5223..6936851511 100644 ---- a/src/corelib/tools/qtimezoneprivate_tz.cpp -+++ b/src/corelib/tools/qtimezoneprivate_tz.cpp -@@ -64,7 +64,11 @@ typedef QHash QTzTimeZoneHash; - // Parse zone.tab table, assume lists all installed zones, if not will need to read directories - static QTzTimeZoneHash loadTzTimeZones() - { -- QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); -+ // Try TZDIR first, in case we're running on NixOS. -+ QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab"); -+ // Fallback to traditional paths in case we are not on NixOS. -+ if (!QFile::exists(path)) -+ path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); - if (!QFile::exists(path)) - path = QStringLiteral("/usr/lib/zoneinfo/zone.tab"); - -@@ -636,12 +640,16 @@ void QTzTimeZonePrivate::init(const QByteArray &ianaId) - if (!tzif.open(QIODevice::ReadOnly)) - return; - } else { -- // Open named tz, try modern path first, if fails try legacy path -- tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); -+ // Try TZDIR first, in case we're running on NixOS -+ tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId)); - if (!tzif.open(QIODevice::ReadOnly)) { -- tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); -- if (!tzif.open(QIODevice::ReadOnly)) -- return; -+ // Open named tz, try modern path first, if fails try legacy path -+ tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); -+ if (!tzif.open(QIODevice::ReadOnly)) { -+ tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); -+ if (!tzif.open(QIODevice::ReadOnly)) -+ return; -+ } - } - } - -diff --git a/src/dbus/Qt5DBusConfigExtras.cmake.in b/src/dbus/Qt5DBusConfigExtras.cmake.in -index 1d947159e2..b36865fc48 100644 ---- a/src/dbus/Qt5DBusConfigExtras.cmake.in -+++ b/src/dbus/Qt5DBusConfigExtras.cmake.in -@@ -2,11 +2,7 @@ - if (NOT TARGET Qt5::qdbuscpp2xml) - add_executable(Qt5::qdbuscpp2xml IMPORTED) - --!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") --!!ELSE -- set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") --!!ENDIF -+ set(imported_location \"$$NIX_OUTPUT_DEV/bin/qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") - _qt5_DBus_check_file_exists(${imported_location}) - - set_target_properties(Qt5::qdbuscpp2xml PROPERTIES -@@ -17,11 +13,7 @@ endif() - if (NOT TARGET Qt5::qdbusxml2cpp) - add_executable(Qt5::qdbusxml2cpp IMPORTED) - --!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") --!!ELSE -- set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") --!!ENDIF -+ set(imported_location \"$$NIX_OUTPUT_DEV/bin/qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") - _qt5_DBus_check_file_exists(${imported_location}) - - set_target_properties(Qt5::qdbusxml2cpp PROPERTIES -diff --git a/src/gui/Qt5GuiConfigExtras.cmake.in b/src/gui/Qt5GuiConfigExtras.cmake.in -index 07869efd7d..fb4183bada 100644 ---- a/src/gui/Qt5GuiConfigExtras.cmake.in -+++ b/src/gui/Qt5GuiConfigExtras.cmake.in -@@ -2,7 +2,7 @@ - !!IF !isEmpty(CMAKE_ANGLE_EGL_DLL_RELEASE) - - !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) --set(Qt5Gui_EGL_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR/QtANGLE\") -+set(Qt5Gui_EGL_INCLUDE_DIRS \"$$NIX_OUTPUT_DEV/$$CMAKE_INCLUDE_DIR/QtANGLE\") - !!ELSE - set(Qt5Gui_EGL_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR/QtANGLE\") - !!ENDIF -@@ -17,13 +17,13 @@ macro(_populate_qt5gui_gl_target_properties TargetName Configuration LIB_LOCATIO - set_property(TARGET Qt5::${TargetName} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) - - !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Gui_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") -+ set(imported_location \"$$NIX_OUTPUT_OUT/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") - !!ELSE - set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") - !!ENDIF - - !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) -- set(imported_implib \"${_qt5Gui_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") -+ set(imported_implib \"$$NIX_OUTPUT_OUT/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") - !!ELSE - set(imported_implib \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") - !!ENDIF -diff --git a/src/network/kernel/qdnslookup_unix.cpp b/src/network/kernel/qdnslookup_unix.cpp -index 584f0b0f0e..24d80063f2 100644 ---- a/src/network/kernel/qdnslookup_unix.cpp -+++ b/src/network/kernel/qdnslookup_unix.cpp -@@ -83,7 +83,7 @@ static bool resolveLibraryInternal() - if (!lib.load()) - #endif - { -- lib.setFileName(QLatin1String("resolv")); -+ lib.setFileName(QLatin1String(NIXPKGS_LIBRESOLV)); - if (!lib.load()) - return false; - } -diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp -index dabf1913cc..53bb867e07 100644 ---- a/src/network/kernel/qhostinfo_unix.cpp -+++ b/src/network/kernel/qhostinfo_unix.cpp -@@ -94,7 +94,7 @@ static bool resolveLibraryInternal() - if (!lib.load()) - #endif - { -- lib.setFileName(QLatin1String("resolv")); -+ lib.setFileName(QLatin1String(NIXPKGS_LIBRESOLV)); - if (!lib.load()) - return false; - } -diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp -index 68caaeb6dc..fef4a81474 100644 ---- a/src/network/ssl/qsslcontext_openssl.cpp -+++ b/src/network/ssl/qsslcontext_openssl.cpp -@@ -340,7 +340,7 @@ init_context: - - const QVector qcurves = sslContext->sslConfiguration.ellipticCurves(); - if (!qcurves.isEmpty()) { --#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) -+#if OPENSSL_VERSION_NUMBER >= 0x10002000L && defined(SSL_CTRL_SET_CURVES) && !defined(OPENSSL_NO_EC) - // Set the curves to be used - if (q_SSLeay() >= 0x10002000L) { - // SSL_CTX_ctrl wants a non-const pointer as last argument, -@@ -354,7 +354,7 @@ init_context: - return sslContext; - } - } else --#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) -+#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && defined(SSL_CTRL_SET_CURVES) && !defined(OPENSSL_NO_EC) - { - // specific curves requested, but not possible to set -> error - sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version too old, need at least v1.0.2")); -diff --git a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp -index 338c7ca3be..dd52114bac 100644 ---- a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp -+++ b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp -@@ -251,12 +251,9 @@ void TableGenerator::initPossibleLocations() - // the QTCOMPOSE environment variable - if (qEnvironmentVariableIsSet("QTCOMPOSE")) - m_possibleLocations.append(QString::fromLocal8Bit(qgetenv("QTCOMPOSE"))); -- m_possibleLocations.append(QStringLiteral("/usr/share/X11/locale")); -- m_possibleLocations.append(QStringLiteral("/usr/local/share/X11/locale")); -- m_possibleLocations.append(QStringLiteral("/usr/lib/X11/locale")); -- m_possibleLocations.append(QStringLiteral("/usr/local/lib/X11/locale")); - m_possibleLocations.append(QStringLiteral(X11_PREFIX "/share/X11/locale")); - m_possibleLocations.append(QStringLiteral(X11_PREFIX "/lib/X11/locale")); -+ m_possibleLocations.append(QLatin1String(NIXPKGS_QTCOMPOSE)); - } - - QString TableGenerator::findComposeFile() -diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp -index c2b7a562a9..4fa5f6d6a5 100644 ---- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp -+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp -@@ -570,7 +570,14 @@ void (*QGLXContext::getProcAddress(const QByteArray &procName)) () - #ifndef QT_NO_LIBRARY - extern const QString qt_gl_library_name(); - // QLibrary lib(qt_gl_library_name()); -+ // Check system library paths first - QLibrary lib(QLatin1String("GL")); -+#ifdef NIXPKGS_MESA_GL -+ if (!lib.load()) { -+ // Fallback to Mesa driver -+ lib.setFileName(QLatin1String(NIXPKGS_MESA_GL)); -+ } -+#endif // NIXPKGS_MESA_GL - glXGetProcAddressARB = (qt_glXGetProcAddressARB) lib.resolve("glXGetProcAddressARB"); - #endif - } -diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp -index 4646ced954..ff3111f393 100644 ---- a/src/plugins/platforms/xcb/qxcbcursor.cpp -+++ b/src/plugins/platforms/xcb/qxcbcursor.cpp -@@ -303,10 +303,10 @@ QXcbCursor::QXcbCursor(QXcbConnection *conn, QXcbScreen *screen) - #if defined(XCB_USE_XLIB) && !defined(QT_NO_LIBRARY) - static bool function_ptrs_not_initialized = true; - if (function_ptrs_not_initialized) { -- QLibrary xcursorLib(QLatin1String("Xcursor"), 1); -+ QLibrary xcursorLib(QLatin1String(NIXPKGS_LIBXCURSOR), 1); - bool xcursorFound = xcursorLib.load(); - if (!xcursorFound) { // try without the version number -- xcursorLib.setFileName(QLatin1String("Xcursor")); -+ xcursorLib.setFileName(QLatin1String(NIXPKGS_LIBXCURSOR)); - xcursorFound = xcursorLib.load(); - } - if (xcursorFound) { -diff --git a/src/testlib/qtestassert.h b/src/testlib/qtestassert.h -index ca3e02ca06..28dd73d772 100644 ---- a/src/testlib/qtestassert.h -+++ b/src/testlib/qtestassert.h -@@ -38,10 +38,13 @@ - - QT_BEGIN_NAMESPACE - -- --#define QTEST_ASSERT(cond) do { if (!(cond)) qt_assert(#cond,__FILE__,__LINE__); } while (0) -- --#define QTEST_ASSERT_X(cond, where, what) do { if (!(cond)) qt_assert_x(where, what,__FILE__,__LINE__); } while (0) -+#if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) -+#define QTEST_ASSERT(cond) do { } while ((false) && (cond)) -+#define QTEST_ASSERT_X(cond, where, what) do { } while ((false) && (cond)) -+#else -+#define QTEST_ASSERT(cond) do { if (!(cond)) qt_assert(#cond,__FILE__,__LINE__); } while (false) -+#define QTEST_ASSERT_X(cond, where, what) do { if (!(cond)) qt_assert_x(where, what,__FILE__,__LINE__); } while (false) -+#endif - - QT_END_NAMESPACE - -diff --git a/src/widgets/Qt5WidgetsConfigExtras.cmake.in b/src/widgets/Qt5WidgetsConfigExtras.cmake.in -index 99d87e2e46..a4eab2aa72 100644 ---- a/src/widgets/Qt5WidgetsConfigExtras.cmake.in -+++ b/src/widgets/Qt5WidgetsConfigExtras.cmake.in -@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::uic) - add_executable(Qt5::uic IMPORTED) - - !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") -+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") - !!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") - !!ENDIF diff --git a/pkgs/development/libraries/qt-5/5.6/qtdeclarative.patch b/pkgs/development/libraries/qt-5/5.6/qtdeclarative.patch deleted file mode 100644 index dbddaa2a1d60..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/qtdeclarative.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/src/qml/qml/qqmlimport.cpp b/src/qml/qml/qqmlimport.cpp -index dfdf2edbe..7ee96049d 100644 ---- a/src/qml/qml/qqmlimport.cpp -+++ b/src/qml/qml/qqmlimport.cpp -@@ -1568,6 +1568,15 @@ QQmlImportDatabase::QQmlImportDatabase(QQmlEngine *e) - QString installImportsPath = QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath); - addImportPath(installImportsPath); - -+ // Add import paths derived from PATH -+ const QStringList paths = QFile::decodeName(qgetenv("PATH")).split(':'); -+ const QString qmldir = QStringLiteral("../" NIXPKGS_QML2_IMPORT_PREFIX); -+ for (const QString &path: paths) { -+ if (!path.isEmpty()) { -+ addImportPath(QDir::cleanPath(path + QDir::separator() + qmldir)); -+ } -+ } -+ - // env import paths - if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty("QML2_IMPORT_PATH"))) { - const QByteArray envImportPath = qgetenv("QML2_IMPORT_PATH"); diff --git a/pkgs/development/libraries/qt-5/5.6/qtscript.patch b/pkgs/development/libraries/qt-5/5.6/qtscript.patch deleted file mode 100644 index 5508dec1280e..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/qtscript.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h -index 1f6d25e..087c3fb 100644 ---- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h -+++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h -@@ -81,7 +81,7 @@ - #include - #elif PLATFORM(GTK) - #include --typedef struct _GMutex GMutex; -+typedef union _GMutex GMutex; - typedef struct _GCond GCond; - #endif - diff --git a/pkgs/development/libraries/qt-5/5.6/qtserialport.patch b/pkgs/development/libraries/qt-5/5.6/qtserialport.patch deleted file mode 100644 index b2cffbe4f39b..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/qtserialport.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/src/serialport/qtudev_p.h b/src/serialport/qtudev_p.h -index 6f2cabd..cd3c0ed 100644 ---- a/src/serialport/qtudev_p.h -+++ b/src/serialport/qtudev_p.h -@@ -105,9 +105,17 @@ inline QFunctionPointer resolveSymbol(QLibrary *udevLibrary, const char *symbolN - inline bool resolveSymbols(QLibrary *udevLibrary) - { - if (!udevLibrary->isLoaded()) { -+#ifdef NIXPKGS_LIBUDEV -+ udevLibrary->setFileNameAndVersion(QLatin1String(NIXPKGS_LIBUDEV), 1); -+#else - udevLibrary->setFileNameAndVersion(QStringLiteral("udev"), 1); -+#endif - if (!udevLibrary->load()) { -+#ifdef NIXPKGS_LIBUDEV -+ udevLibrary->setFileNameAndVersion(QLatin1String(NIXPKGS_LIBUDEV), 0); -+#else - udevLibrary->setFileNameAndVersion(QStringLiteral("udev"), 0); -+#endif - if (!udevLibrary->load()) { - qWarning("Failed to load the library: %s, supported version(s): %i and %i", qPrintable(udevLibrary->fileName()), 1, 0); - return false; diff --git a/pkgs/development/libraries/qt-5/5.6/qttools.patch b/pkgs/development/libraries/qt-5/5.6/qttools.patch deleted file mode 100644 index dcb15e0e55a6..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/qttools.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff --git a/src/assistant/help/Qt5HelpConfigExtras.cmake.in b/src/assistant/help/Qt5HelpConfigExtras.cmake.in -index 5a5bd5ce..1c6727d4 100644 ---- a/src/assistant/help/Qt5HelpConfigExtras.cmake.in -+++ b/src/assistant/help/Qt5HelpConfigExtras.cmake.in -@@ -2,14 +2,13 @@ - if (NOT TARGET Qt5::qcollectiongenerator) - add_executable(Qt5::qcollectiongenerator IMPORTED) - --!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5Help_install_prefix}/$${CMAKE_BIN_DIR}qcollectiongenerator$$CMAKE_BIN_SUFFIX\") --!!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}qcollectiongenerator$$CMAKE_BIN_SUFFIX\") --!!ENDIF -+ if(NOT EXISTS \"${imported_location}\") -+ set(imported_location \"$${CMAKE_BIN_DIR}qcollectiongenerator$$CMAKE_BIN_SUFFIX\") -+ endif() - _qt5_Help_check_file_exists(${imported_location}) - - set_target_properties(Qt5::qcollectiongenerator PROPERTIES - IMPORTED_LOCATION ${imported_location} - ) --endif() -+endif() -\ No newline at end of file -diff --git a/src/linguist/Qt5LinguistToolsConfig.cmake.in b/src/linguist/Qt5LinguistToolsConfig.cmake.in -index 4318b16f..d60db4ff 100644 ---- a/src/linguist/Qt5LinguistToolsConfig.cmake.in -+++ b/src/linguist/Qt5LinguistToolsConfig.cmake.in -@@ -44,11 +44,7 @@ endmacro() - if (NOT TARGET Qt5::lrelease) - add_executable(Qt5::lrelease IMPORTED) - --!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5_linguisttools_install_prefix}/$${CMAKE_BIN_DIR}lrelease$$CMAKE_BIN_SUFFIX\") --!!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}lrelease$$CMAKE_BIN_SUFFIX\") --!!ENDIF - _qt5_LinguistTools_check_file_exists(${imported_location}) - - set_target_properties(Qt5::lrelease PROPERTIES -@@ -59,11 +55,7 @@ endif() - if (NOT TARGET Qt5::lupdate) - add_executable(Qt5::lupdate IMPORTED) - --!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5_linguisttools_install_prefix}/$${CMAKE_BIN_DIR}lupdate$$CMAKE_BIN_SUFFIX\") --!!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}lupdate$$CMAKE_BIN_SUFFIX\") --!!ENDIF - _qt5_LinguistTools_check_file_exists(${imported_location}) - - set_target_properties(Qt5::lupdate PROPERTIES -@@ -74,11 +66,7 @@ endif() - if (NOT TARGET Qt5::lconvert) - add_executable(Qt5::lconvert IMPORTED) - --!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) -- set(imported_location \"${_qt5_linguisttools_install_prefix}/$${CMAKE_BIN_DIR}lconvert$$CMAKE_BIN_SUFFIX\") --!!ELSE - set(imported_location \"$${CMAKE_BIN_DIR}lconvert$$CMAKE_BIN_SUFFIX\") --!!ENDIF - _qt5_LinguistTools_check_file_exists(${imported_location}) - - set_target_properties(Qt5::lconvert PROPERTIES diff --git a/pkgs/development/libraries/qt-5/5.6/qtwebengine-seccomp.patch b/pkgs/development/libraries/qt-5/5.6/qtwebengine-seccomp.patch deleted file mode 100644 index bf6af8059823..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/qtwebengine-seccomp.patch +++ /dev/null @@ -1,24 +0,0 @@ -Backported to Qt 5.6 for epoll_pwait fix on newer glibc -Part of upstream Chromium's 4e8083b4ab953ba298aedfc4e79d464be15e4012 -Review URL: https://codereview.chromium.org/1613883002 ---- -diff --git a/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc b/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -index 10278dc5fc9b..b30b3e6acef6 100644 ---- a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -+++ b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -@@ -414,6 +414,7 @@ bool SyscallSets::IsAllowedEpoll(int sysno) { - case __NR_epoll_create: - case __NR_epoll_wait: - #endif -+ case __NR_epoll_pwait: - case __NR_epoll_create1: - case __NR_epoll_ctl: - return true; -@@ -421,7 +422,6 @@ bool SyscallSets::IsAllowedEpoll(int sysno) { - #if defined(__x86_64__) - case __NR_epoll_ctl_old: - #endif -- case __NR_epoll_pwait: - #if defined(__x86_64__) - case __NR_epoll_wait_old: - #endif diff --git a/pkgs/development/libraries/qt-5/5.6/qtwebkit.patch b/pkgs/development/libraries/qt-5/5.6/qtwebkit.patch deleted file mode 100644 index da1658554e44..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/qtwebkit.patch +++ /dev/null @@ -1,149 +0,0 @@ -diff --git a/Source/JavaScriptCore/API/JSStringRef.cpp b/Source/JavaScriptCore/API/JSStringRef.cpp -index 812f3d413..77a3fd0f4 100644 ---- a/Source/JavaScriptCore/API/JSStringRef.cpp -+++ b/Source/JavaScriptCore/API/JSStringRef.cpp -@@ -37,7 +37,7 @@ using namespace WTF::Unicode; - JSStringRef JSStringCreateWithCharacters(const JSChar* chars, size_t numChars) - { - initializeThreading(); -- return OpaqueJSString::create(chars, numChars).leakRef(); -+ return OpaqueJSString::create(reinterpret_cast(chars), numChars).leakRef(); - } - - JSStringRef JSStringCreateWithUTF8CString(const char* string) -@@ -62,7 +62,7 @@ JSStringRef JSStringCreateWithUTF8CString(const char* string) - JSStringRef JSStringCreateWithCharactersNoCopy(const JSChar* chars, size_t numChars) - { - initializeThreading(); -- return OpaqueJSString::create(StringImpl::createWithoutCopying(chars, numChars, WTF::DoesNotHaveTerminatingNullCharacter)).leakRef(); -+ return OpaqueJSString::create(StringImpl::createWithoutCopying(reinterpret_cast(chars), numChars, WTF::DoesNotHaveTerminatingNullCharacter)).leakRef(); - } - - JSStringRef JSStringRetain(JSStringRef string) -@@ -83,7 +83,7 @@ size_t JSStringGetLength(JSStringRef string) - - const JSChar* JSStringGetCharactersPtr(JSStringRef string) - { -- return string->characters(); -+ return reinterpret_cast(string->characters()); - } - - size_t JSStringGetMaximumUTF8CStringSize(JSStringRef string) -diff --git a/Source/JavaScriptCore/runtime/DateConversion.cpp b/Source/JavaScriptCore/runtime/DateConversion.cpp -index 0b57f012d..05e27338b 100644 ---- a/Source/JavaScriptCore/runtime/DateConversion.cpp -+++ b/Source/JavaScriptCore/runtime/DateConversion.cpp -@@ -107,7 +107,8 @@ String formatDateTime(const GregorianDateTime& t, DateTimeFormat format, bool as - #if OS(WINDOWS) - TIME_ZONE_INFORMATION timeZoneInformation; - GetTimeZoneInformation(&timeZoneInformation); -- const WCHAR* timeZoneName = t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName; -+ const WCHAR* winTimeZoneName = t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName; -+ String timeZoneName(reinterpret_cast(winTimeZoneName)); - #else - struct tm gtm = t; - char timeZoneName[70]; -diff --git a/Source/WTF/WTF.pri b/Source/WTF/WTF.pri -index 1f4866d66..bb61e4ba3 100644 ---- a/Source/WTF/WTF.pri -+++ b/Source/WTF/WTF.pri -@@ -12,7 +12,7 @@ mac { - # Mac OS does ship libicu but not the associated header files. - # Therefore WebKit provides adequate header files. - INCLUDEPATH = $${ROOT_WEBKIT_DIR}/Source/WTF/icu $$INCLUDEPATH -- LIBS += -licucore -+ LIBS += /usr/lib/libicucore.dylib - } else:!use?(wchar_unicode): { - win32 { - CONFIG(static, static|shared) { -diff --git a/Source/WTF/wtf/TypeTraits.h b/Source/WTF/wtf/TypeTraits.h -index 9df2c95cf..f5d6121fd 100644 ---- a/Source/WTF/wtf/TypeTraits.h -+++ b/Source/WTF/wtf/TypeTraits.h -@@ -72,6 +72,9 @@ namespace WTF { - template<> struct IsInteger { static const bool value = true; }; - template<> struct IsInteger { static const bool value = true; }; - template<> struct IsInteger { static const bool value = true; }; -+#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__) || (defined(_HAS_CHAR16_T_LANGUAGE_SUPPORT) && _HAS_CHAR16_T_LANGUAGE_SUPPORT) -+ template<> struct IsInteger { static const bool value = true; }; -+#endif - #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED) - template<> struct IsInteger { static const bool value = true; }; - #endif -diff --git a/Source/WebCore/plugins/qt/PluginPackageQt.cpp b/Source/WebCore/plugins/qt/PluginPackageQt.cpp -index a923d49aa..46772a4bb 100644 ---- a/Source/WebCore/plugins/qt/PluginPackageQt.cpp -+++ b/Source/WebCore/plugins/qt/PluginPackageQt.cpp -@@ -136,7 +136,11 @@ static void initializeGtk(QLibrary* module = 0) - } - } - -+#ifdef NIXPKGS_LIBGTK2 -+ QLibrary library(QLatin1String(NIXPKGS_LIBGTK2), 0); -+#else - QLibrary library(QLatin1String("libgtk-x11-2.0"), 0); -+#endif - if (library.load()) { - typedef void *(*gtk_init_check_ptr)(int*, char***); - gtk_init_check_ptr gtkInitCheck = (gtk_init_check_ptr)library.resolve("gtk_init_check"); -diff --git a/Source/WebCore/plugins/qt/PluginViewQt.cpp b/Source/WebCore/plugins/qt/PluginViewQt.cpp -index de06a2fea..86fe39ef1 100644 ---- a/Source/WebCore/plugins/qt/PluginViewQt.cpp -+++ b/Source/WebCore/plugins/qt/PluginViewQt.cpp -@@ -697,7 +697,11 @@ static Display *getPluginDisplay() - // support gdk based plugins (like flash) that use a different X connection. - // The code below has the same effect as this one: - // Display *gdkDisplay = gdk_x11_display_get_xdisplay(gdk_display_get_default()); -+#ifdef NIXPKGS_LIBGDK2 -+ QLibrary library(QLatin1String(NIXPKGS_LIBGDK2), 0); -+#else - QLibrary library(QLatin1String("libgdk-x11-2.0"), 0); -+#endif - if (!library.load()) - return 0; - -diff --git a/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp b/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp -index 8de65216b..38f5c05e5 100644 ---- a/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp -+++ b/Source/WebKit2/PluginProcess/qt/PluginProcessMainQt.cpp -@@ -53,7 +53,11 @@ static void messageHandler(QtMsgType type, const QMessageLogContext&, const QStr - - static bool initializeGtk() - { -+#ifdef NIXPKGS_LIBGTK2 -+ QLibrary gtkLibrary(QLatin1String(NIXPKGS_LIBGTK2), 0); -+#else - QLibrary gtkLibrary(QLatin1String("libgtk-x11-2.0"), 0); -+#endif - if (!gtkLibrary.load()) - return false; - typedef void* (*gtk_init_ptr)(void*, void*); -diff --git a/Source/WebKit2/Shared/API/c/WKString.cpp b/Source/WebKit2/Shared/API/c/WKString.cpp -index cbac67dd8..23400a64e 100644 ---- a/Source/WebKit2/Shared/API/c/WKString.cpp -+++ b/Source/WebKit2/Shared/API/c/WKString.cpp -@@ -55,7 +55,7 @@ size_t WKStringGetLength(WKStringRef stringRef) - size_t WKStringGetCharacters(WKStringRef stringRef, WKChar* buffer, size_t bufferLength) - { - COMPILE_ASSERT(sizeof(WKChar) == sizeof(UChar), WKStringGetCharacters_sizeof_WKChar_matches_UChar); -- return (toImpl(stringRef)->getCharacters(static_cast(buffer), bufferLength)); -+ return (toImpl(stringRef)->getCharacters(reinterpret_cast(buffer), bufferLength)); - } - - size_t WKStringGetMaximumUTF8CStringSize(WKStringRef stringRef) -diff --git a/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp b/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp -index d734ff684..0f6ff63d1 100644 ---- a/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp -+++ b/Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp -@@ -64,7 +64,11 @@ static Display* getPluginDisplay() - // The code below has the same effect as this one: - // Display *gdkDisplay = gdk_x11_display_get_xdisplay(gdk_display_get_default()); - -+#ifdef NIXPKGS_LIBGDK2 -+ QLibrary library(QLatin1String(NIXPKGS_LIBGDK2), 0); -+#else - QLibrary library(QLatin1String("libgdk-x11-2.0"), 0); -+#endif - if (!library.load()) - return 0; - diff --git a/pkgs/development/libraries/qt-5/5.6/srcs.nix b/pkgs/development/libraries/qt-5/5.6/srcs.nix deleted file mode 100644 index 87d35a43d86b..000000000000 --- a/pkgs/development/libraries/qt-5/5.6/srcs.nix +++ /dev/null @@ -1,309 +0,0 @@ -# DO NOT EDIT! This file is generated automatically by fetch-kde-qt.sh -{ fetchurl, mirror }: - -{ - qt3d = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qt3d-opensource-src-5.6.3.tar.xz"; - sha256 = "1zkzc3wh2i89nacb55mbgl09zhrjbrxg9ir626bsvz15x4q5ml0h"; - name = "qt3d-opensource-src-5.6.3.tar.xz"; - }; - }; - qtactiveqt = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtactiveqt-opensource-src-5.6.3.tar.xz"; - sha256 = "00qscqjpkv5ssrjdwwcjp9q1rqgp8lsdjjksjpyyg4v6knd74s0i"; - name = "qtactiveqt-opensource-src-5.6.3.tar.xz"; - }; - }; - qtandroidextras = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtandroidextras-opensource-src-5.6.3.tar.xz"; - sha256 = "1v19p1pqcdicylj3hd2lbm5swqddydlv9aqmws3qwsc2vwh15d4n"; - name = "qtandroidextras-opensource-src-5.6.3.tar.xz"; - }; - }; - qtbase = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtbase-opensource-src-5.6.3.tar.xz"; - sha256 = "18ad7cxln61276cm8h8hzm0y6svw6b5m5nbm1niif9pwlqlqbx7y"; - name = "qtbase-opensource-src-5.6.3.tar.xz"; - }; - }; - qtcanvas3d = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtcanvas3d-opensource-src-5.6.3.tar.xz"; - sha256 = "1zsn3xbsqapivfg80cldjlh7z07nf88958a7g6dm7figkwahx7p9"; - name = "qtcanvas3d-opensource-src-5.6.3.tar.xz"; - }; - }; - qtcharts = { - version = "2.1.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtcharts-opensource-src-2.1.3.tar.xz"; - sha256 = "0bvxmqx7094mq1svrv1i1jp6vl87r2mp7k9n3gqpixjmqaqsjdpn"; - name = "qtcharts-opensource-src-2.1.3.tar.xz"; - }; - }; - qtconnectivity = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtconnectivity-opensource-src-5.6.3.tar.xz"; - sha256 = "1pnc0zmps5iw5yhn2w0wl8cnyxhcy88d3rnaiv62ljpsccynwh7s"; - name = "qtconnectivity-opensource-src-5.6.3.tar.xz"; - }; - }; - qtdatavis3d = { - version = "1.2.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtdatavis3d-opensource-src-1.2.3.tar.xz"; - sha256 = "0rqhr6s3fic91r6r1g2ws57j6ixvkh4zhcwh7savs1risx374vya"; - name = "qtdatavis3d-opensource-src-1.2.3.tar.xz"; - }; - }; - qtdeclarative = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtdeclarative-opensource-src-5.6.3.tar.xz"; - sha256 = "1z4ih5jbydnk5dz0arhvwc54fjw7fynqx3rhm6f8lsyis19w0gzn"; - name = "qtdeclarative-opensource-src-5.6.3.tar.xz"; - }; - }; - qtdeclarative-render2d = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtdeclarative-render2d-opensource-src-5.6.3.tar.xz"; - sha256 = "0r2qn8l3wh73cj75rq34zmc6rgl7v11c31pjdcsybad76nw5wb2p"; - name = "qtdeclarative-render2d-opensource-src-5.6.3.tar.xz"; - }; - }; - qtdoc = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtdoc-opensource-src-5.6.3.tar.xz"; - sha256 = "11zhlry8hlql1q3pm4mf7qyky9i2irxqdrr9nr5m93wjyfsjbh7f"; - name = "qtdoc-opensource-src-5.6.3.tar.xz"; - }; - }; - qtenginio = { - version = "1.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtenginio-opensource-src-1.6.3.tar.xz"; - sha256 = "04ir5pa8wpkc7cq08s0b69a0vhkr7479ixn3m2vww4jm6l5hc1yr"; - name = "qtenginio-opensource-src-1.6.3.tar.xz"; - }; - }; - qtgraphicaleffects = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtgraphicaleffects-opensource-src-5.6.3.tar.xz"; - sha256 = "1vcrm4jfmxjlw23dnwf45mzq2z5s4fz6j2znknr25ca5bqnmjhn7"; - name = "qtgraphicaleffects-opensource-src-5.6.3.tar.xz"; - }; - }; - qtimageformats = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtimageformats-opensource-src-5.6.3.tar.xz"; - sha256 = "1hs8b258xsbc4xb4844mas9ka54f5cfhhszblawwjxn9j0ydmr7g"; - name = "qtimageformats-opensource-src-5.6.3.tar.xz"; - }; - }; - qtlocation = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtlocation-opensource-src-5.6.3.tar.xz"; - sha256 = "0rhlmyi5kkhl1bimaj1fmp36v7x5r79j3flgx9dv27rkric1ra5p"; - name = "qtlocation-opensource-src-5.6.3.tar.xz"; - }; - }; - qtmacextras = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtmacextras-opensource-src-5.6.3.tar.xz"; - sha256 = "10v2a058yv6k76gg9dgpy4fc0xd652dknzsw5432gm8d9391382i"; - name = "qtmacextras-opensource-src-5.6.3.tar.xz"; - }; - }; - qtmultimedia = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtmultimedia-opensource-src-5.6.3.tar.xz"; - sha256 = "0ihvbv0ldravbrx6406ps0z8y6521iz6h58n5ws44xq3m2g06dmf"; - name = "qtmultimedia-opensource-src-5.6.3.tar.xz"; - }; - }; - qtpurchasing = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtpurchasing-opensource-src-5.6.3.tar.xz"; - sha256 = "0lf269jzd6y4x5bxjwgz9dpw7hxmc6sp39qpxwlswd505cf0wgd7"; - name = "qtpurchasing-opensource-src-5.6.3.tar.xz"; - }; - }; - qtquickcontrols = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtquickcontrols-opensource-src-5.6.3.tar.xz"; - sha256 = "13nvn0d2i4lf4igc1xqf7m98n4j66az1bi02zzv5m18vyb40zfri"; - name = "qtquickcontrols-opensource-src-5.6.3.tar.xz"; - }; - }; - qtquickcontrols2 = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtquickcontrols2-opensource-src-5.6.3.tar.xz"; - sha256 = "1jw1zykrx8aa9p781hc74h9za7lnnm4ifpdyqa4ahbdy193phl7c"; - name = "qtquickcontrols2-opensource-src-5.6.3.tar.xz"; - }; - }; - qtscript = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtscript-opensource-src-5.6.3.tar.xz"; - sha256 = "12dkf2s1l9y9cwdyayg2mpnwvx14kq93pymp3iy3fw1s1vfj11zh"; - name = "qtscript-opensource-src-5.6.3.tar.xz"; - }; - }; - qtsensors = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtsensors-opensource-src-5.6.3.tar.xz"; - sha256 = "0ws96fmk5zz9szrw9x1dwa6gnv9rpv1q0h9ax9z5m1kiapfd80km"; - name = "qtsensors-opensource-src-5.6.3.tar.xz"; - }; - }; - qtserialbus = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtserialbus-opensource-src-5.6.3.tar.xz"; - sha256 = "17lskz4r549hc02riv0a3jdjbyaq4y4a94xd3jhy454lhzirpj3i"; - name = "qtserialbus-opensource-src-5.6.3.tar.xz"; - }; - }; - qtserialport = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtserialport-opensource-src-5.6.3.tar.xz"; - sha256 = "06mfkd88rcn4p8pfzsyqbfg956vwwcql0khchjgx3bh34zp1yb88"; - name = "qtserialport-opensource-src-5.6.3.tar.xz"; - }; - }; - qtsvg = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtsvg-opensource-src-5.6.3.tar.xz"; - sha256 = "1v6wz8fcgsh4lfv68bhavms0l1z3mcn8vggakc3m8rdl2wsih3qh"; - name = "qtsvg-opensource-src-5.6.3.tar.xz"; - }; - }; - qttools = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qttools-opensource-src-5.6.3.tar.xz"; - sha256 = "09krlrgcglylsv7xx4r681v7zmyy6nr8j18482skrmsqh21vlqqs"; - name = "qttools-opensource-src-5.6.3.tar.xz"; - }; - }; - qttranslations = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qttranslations-opensource-src-5.6.3.tar.xz"; - sha256 = "1avcfymi9bxk02i1rqh89c6hnvf4bg9qry94z29g1r62c80lxvbd"; - name = "qttranslations-opensource-src-5.6.3.tar.xz"; - }; - }; - qtvirtualkeyboard = { - version = "2.0"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtvirtualkeyboard-opensource-src-2.0.tar.xz"; - sha256 = "1v0saqz76h9gnb13b8mri4jq93i7f1gr7hj81zj3vz433s2klm0x"; - name = "qtvirtualkeyboard-opensource-src-2.0.tar.xz"; - }; - }; - qtwayland = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtwayland-opensource-src-5.6.3.tar.xz"; - sha256 = "18ys14fzjybx02aj85vyqzsp89ypv2c6vfpklxzslwyvn9w54iss"; - name = "qtwayland-opensource-src-5.6.3.tar.xz"; - }; - }; - qtwebchannel = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtwebchannel-opensource-src-5.6.3.tar.xz"; - sha256 = "04q7wmdnv4pskah2s5nnrzbsb207fvkj333m69wkqrc64anb1ccf"; - name = "qtwebchannel-opensource-src-5.6.3.tar.xz"; - }; - }; - qtwebengine = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtwebengine-opensource-src-5.6.3.tar.xz"; - sha256 = "19xpvnjwrjpj6wx7sy1cs1r1ibnh5hqfk9w9rnqf5h7n77xnk780"; - name = "qtwebengine-opensource-src-5.6.3.tar.xz"; - }; - }; - qtwebkit = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/community_releases/5.6/5.6.3/qtwebkit-opensource-src-5.6.3.tar.xz"; - sha256 = "15iqgaw3jznfq1mdg1mmr7pn8w3qhw964h5m36vg3ywqayr6p309"; - name = "qtwebkit-opensource-src-5.6.3.tar.xz"; - }; - }; - qtwebkit-examples = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/community_releases/5.6/5.6.3/qtwebkit-examples-opensource-src-5.6.3.tar.xz"; - sha256 = "17hnls8j4wz0kyzzq7m3105lqz71zsxr0hya7i23pl4qc8affv1d"; - name = "qtwebkit-examples-opensource-src-5.6.3.tar.xz"; - }; - }; - qtwebsockets = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtwebsockets-opensource-src-5.6.3.tar.xz"; - sha256 = "1sr8q0wqw4xwcdl6nvnv04pcjxb0fbs4ywrkcghdz2bcc52r0hx2"; - name = "qtwebsockets-opensource-src-5.6.3.tar.xz"; - }; - }; - qtwebview = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtwebview-opensource-src-5.6.3.tar.xz"; - sha256 = "076q9g2ca41v8lyhn7354rs8w2ca0wp2hsxc76zprzghi5p4b2kn"; - name = "qtwebview-opensource-src-5.6.3.tar.xz"; - }; - }; - qtwinextras = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtwinextras-opensource-src-5.6.3.tar.xz"; - sha256 = "0nmhvd1g18w12q6i8s87aq7rwikcn1m8m9m0a02l3p22xvimkxzf"; - name = "qtwinextras-opensource-src-5.6.3.tar.xz"; - }; - }; - qtx11extras = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtx11extras-opensource-src-5.6.3.tar.xz"; - sha256 = "0zv70z5z48wlg0q2zd7nbp7i0wimdcalns6yg0mjp7v2w2b8wyhy"; - name = "qtx11extras-opensource-src-5.6.3.tar.xz"; - }; - }; - qtxmlpatterns = { - version = "5.6.3"; - src = fetchurl { - url = "${mirror}/official_releases/qt/5.6/5.6.3/submodules/qtxmlpatterns-opensource-src-5.6.3.tar.xz"; - sha256 = "1xjimf88j2s5jrqgr9ki82zmis8r979rrzq4k6dxw43k1ngzyqd4"; - name = "qtxmlpatterns-opensource-src-5.6.3.tar.xz"; - }; - }; -} diff --git a/pkgs/development/libraries/qt-5/5.9/default.nix b/pkgs/development/libraries/qt-5/5.9/default.nix index 52c763263b53..b27c5d3eb58c 100644 --- a/pkgs/development/libraries/qt-5/5.9/default.nix +++ b/pkgs/development/libraries/qt-5/5.9/default.nix @@ -36,7 +36,11 @@ let srcs = import ./srcs.nix { inherit fetchurl; inherit mirror; }; patches = { - qtbase = [ ./qtbase.patch ./qtbase-fixguicmake.patch ]; + qtbase = [ + ./qtbase.patch + ./qtbase-fixguicmake.patch + ./qtbase-openssl_1_1.patch + ]; qtdeclarative = [ ./qtdeclarative.patch ]; qtscript = [ ./qtscript.patch ]; qtserialport = [ ./qtserialport.patch ]; diff --git a/pkgs/development/libraries/qt-5/5.9/qtbase-openssl_1_1.patch b/pkgs/development/libraries/qt-5/5.9/qtbase-openssl_1_1.patch new file mode 100644 index 000000000000..d5f4d7527cb4 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.9/qtbase-openssl_1_1.patch @@ -0,0 +1,3985 @@ +commit 2d88fc0ce4ac76924a65ffd797183de9422ba672 +Author: Andreas Rammhold +Date: Wed Mar 6 00:18:51 2019 +0100 + + openssl1.1 compat + +diff --git a/config.tests/openssl/openssl.cpp b/config.tests/openssl/openssl.cpp +index 6c8a9e8f19..d33b62389c 100644 +--- a/config.tests/openssl/openssl.cpp ++++ b/config.tests/openssl/openssl.cpp +@@ -39,8 +39,8 @@ + + #include + +-#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x0090700fL || OPENSSL_VERSION_NUMBER-0 >= 0x10100000L +-# error "OpenSSL >= 0.9.7, and < 1.1.0 is required" ++#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x0090700fL ++# error "OpenSSL >= 0.9.7 is required" + #endif + + #include +diff --git a/config.tests/openssl11/openssl.cpp b/config.tests/openssl11/openssl.cpp +new file mode 100644 +index 0000000000..c20cc59deb +--- /dev/null ++++ b/config.tests/openssl11/openssl.cpp +@@ -0,0 +1,48 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2017 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include ++ ++#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10100000L ++# error "OpenSSL >= 1.1 is required" ++#endif ++ ++int main() ++{ ++} +diff --git a/config.tests/openssl11/openssl11.pro b/config.tests/openssl11/openssl11.pro +new file mode 100644 +index 0000000000..a023aee4aa +--- /dev/null ++++ b/config.tests/openssl11/openssl11.pro +@@ -0,0 +1,2 @@ ++SOURCES = openssl.cpp ++CONFIG -= x11 qt +diff --git a/src/network/configure.json b/src/network/configure.json +index 2cf90ed94b..a021c0734b 100644 +--- a/src/network/configure.json ++++ b/src/network/configure.json +@@ -77,6 +77,17 @@ + }, + { "libs": "-lssl -lcrypto", "condition": "!config.win32" } + ] ++ }, ++ "openssl11": { ++ "label": "OpenSSL v. 1.1 support", ++ "type": "compile", ++ "test": "openssl11", ++ "sources": [ ++ { ++ "comment": "placeholder for OPENSSL_PATH", ++ "libs": "" ++ } ++ ] + } + }, + +@@ -182,7 +193,7 @@ + "enable": "input.openssl == 'yes' || input.openssl == 'linked' || input.openssl == 'runtime'", + "disable": "input.openssl == 'no' || input.ssl == 'no'", + "autoDetect": "!config.winrt", +- "condition": "!features.securetransport && (features.openssl-linked || libs.openssl_headers)", ++ "condition": "!features.securetransport && (features.openssl-linked || libs.openssl_headers || feature.opensslv11)", + "output": [ + "privateFeature", + { "type": "publicQtConfig", "condition": "!features.openssl-linked" }, +@@ -193,7 +204,7 @@ + "label": " Qt directly linked to OpenSSL", + "enable": "input.openssl == 'linked'", + "disable": "input.openssl != 'linked'", +- "condition": "!features.securetransport && libs.openssl", ++ "condition": "!features.securetransport && (libs.openssl || feature.opensslv11)", + "output": [ + "privateFeature", + { "type": "define", "name": "QT_LINKED_OPENSSL" } +@@ -213,6 +224,11 @@ + "condition": "config.winrt || features.securetransport || features.openssl", + "output": [ "publicFeature", "feature" ] + }, ++ "opensslv11": { ++ "label": "OpenSSL v. 1.1", ++ "condition": "libs.openssl11", ++ "output": ["publicFeature", "feature"] ++ }, + "sctp": { + "label": "SCTP", + "autoDetect": false, +diff --git a/src/network/ssl/qsslcertificate_openssl.cpp b/src/network/ssl/qsslcertificate_openssl.cpp +index 28b7eda54a..71e514a025 100644 +--- a/src/network/ssl/qsslcertificate_openssl.cpp ++++ b/src/network/ssl/qsslcertificate_openssl.cpp +@@ -1,6 +1,7 @@ + /**************************************************************************** + ** +-** Copyright (C) 2016 The Qt Company Ltd. ++** Copyright (C) 2017 The Qt Company Ltd. ++** Copyright (C) 2016 Richard J. Moore + ** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtNetwork module of the Qt Toolkit. +@@ -64,12 +65,14 @@ bool QSslCertificate::operator==(const QSslCertificate &other) const + uint qHash(const QSslCertificate &key, uint seed) Q_DECL_NOTHROW + { + if (X509 * const x509 = key.d->x509) { +- (void)q_X509_cmp(x509, x509); // populate x509->sha1_hash +- // (if someone knows a better way...) +- return qHashBits(x509->sha1_hash, SHA_DIGEST_LENGTH, seed); +- } else { +- return seed; ++ const EVP_MD *sha1 = q_EVP_sha1(); ++ unsigned int len = 0; ++ unsigned char md[EVP_MAX_MD_SIZE]; ++ q_X509_digest(x509, sha1, md, &len); ++ return qHashBits(md, len, seed); + } ++ ++ return seed; + } + + bool QSslCertificate::isNull() const +@@ -89,8 +92,7 @@ QByteArray QSslCertificate::version() const + { + QMutexLocker lock(QMutexPool::globalInstanceGet(d.data())); + if (d->versionString.isEmpty() && d->x509) +- d->versionString = +- QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1); ++ d->versionString = QByteArray::number(qlonglong(q_X509_get_version(d->x509)) + 1); + + return d->versionString; + } +@@ -99,7 +101,7 @@ QByteArray QSslCertificate::serialNumber() const + { + QMutexLocker lock(QMutexPool::globalInstanceGet(d.data())); + if (d->serialNumberString.isEmpty() && d->x509) { +- ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber; ++ ASN1_INTEGER *serialNumber = q_X509_get_serialNumber(d->x509); + QByteArray hexString; + hexString.reserve(serialNumber->length * 3); + for (int a = 0; a < serialNumber->length; ++a) { +@@ -199,14 +201,15 @@ QMultiMap QSslCertificate::subjectAlter + continue; + } + +- const char *altNameStr = reinterpret_cast(q_ASN1_STRING_data(genName->d.ia5)); ++ const char *altNameStr = reinterpret_cast(q_ASN1_STRING_get0_data(genName->d.ia5)); + const QString altName = QString::fromLatin1(altNameStr, len); + if (genName->type == GEN_DNS) + result.insert(QSsl::DnsEntry, altName); + else if (genName->type == GEN_EMAIL) + result.insert(QSsl::EmailEntry, altName); + } +- q_sk_pop_free((STACK*)altNames, reinterpret_cast(q_sk_free)); ++ ++ q_OPENSSL_sk_pop_free((OPENSSL_STACK*)altNames, reinterpret_cast(q_OPENSSL_sk_free)); + } + + return result; +@@ -235,25 +238,26 @@ QSslKey QSslCertificate::publicKey() const + QSslKey key; + + key.d->type = QSsl::PublicKey; +- X509_PUBKEY *xkey = d->x509->cert_info->key; +- EVP_PKEY *pkey = q_X509_PUBKEY_get(xkey); ++ ++ EVP_PKEY *pkey = q_X509_get_pubkey(d->x509); + Q_ASSERT(pkey); ++ const int keyType = q_EVP_PKEY_type(q_EVP_PKEY_base_id(pkey)); + +- if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) { ++ if (keyType == EVP_PKEY_RSA) { + key.d->rsa = q_EVP_PKEY_get1_RSA(pkey); + key.d->algorithm = QSsl::Rsa; + key.d->isNull = false; +- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) { ++ } else if (keyType == EVP_PKEY_DSA) { + key.d->dsa = q_EVP_PKEY_get1_DSA(pkey); + key.d->algorithm = QSsl::Dsa; + key.d->isNull = false; + #ifndef OPENSSL_NO_EC +- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_EC) { ++ } else if (keyType == EVP_PKEY_EC) { + key.d->ec = q_EVP_PKEY_get1_EC_KEY(pkey); + key.d->algorithm = QSsl::Ec; + key.d->isNull = false; + #endif +- } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) { ++ } else if (keyType == EVP_PKEY_DH) { + // DH unsupported + } else { + // error? +@@ -275,7 +279,7 @@ static QVariant x509UnknownExtensionToValue(X509_EXTENSION *ext) + X509V3_EXT_METHOD *meth = const_cast(q_X509V3_EXT_get(ext)); + if (!meth) { + ASN1_OCTET_STRING *value = q_X509_EXTENSION_get_data(ext); +- QByteArray result( reinterpret_cast(q_ASN1_STRING_data(value)), ++ QByteArray result( reinterpret_cast(q_ASN1_STRING_get0_data(value)), + q_ASN1_STRING_length(value)); + return result; + } +@@ -371,7 +375,7 @@ static QVariant x509ExtensionToValue(X509_EXTENSION *ext) + continue; + } + +- const char *uriStr = reinterpret_cast(q_ASN1_STRING_data(name->d.uniformResourceIdentifier)); ++ const char *uriStr = reinterpret_cast(q_ASN1_STRING_get0_data(name->d.uniformResourceIdentifier)); + const QString uri = QString::fromUtf8(uriStr, len); + + result[QString::fromUtf8(QSslCertificatePrivate::asn1ObjectName(ad->method))] = uri; +@@ -380,11 +384,7 @@ static QVariant x509ExtensionToValue(X509_EXTENSION *ext) + } + } + +-#if OPENSSL_VERSION_NUMBER >= 0x10000000L +- q_sk_pop_free((_STACK*)info, reinterpret_cast(q_sk_free)); +-#else +- q_sk_pop_free((STACK*)info, reinterpret_cast(q_sk_free)); +-#endif ++ q_OPENSSL_sk_pop_free((OPENSSL_STACK*)info, reinterpret_cast(q_OPENSSL_sk_free)); + return result; + } + break; +@@ -607,7 +607,11 @@ static QMap _q_mapFromX509Name(X509_NAME *name) + unsigned char *data = 0; + int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e)); + info.insertMulti(name, QString::fromUtf8((char*)data, size)); ++#if QT_CONFIG(opensslv11) ++ q_CRYPTO_free(data, 0, 0); ++#else + q_CRYPTO_free(data); ++#endif + } + + return info; +@@ -619,8 +623,9 @@ QSslCertificate QSslCertificatePrivate::QSslCertificate_from_X509(X509 *x509) + if (!x509 || !QSslSocket::supportsSsl()) + return certificate; + +- ASN1_TIME *nbef = q_X509_get_notBefore(x509); +- ASN1_TIME *naft = q_X509_get_notAfter(x509); ++ ASN1_TIME *nbef = q_X509_getm_notBefore(x509); ++ ASN1_TIME *naft = q_X509_getm_notAfter(x509); ++ + certificate.d->notValidBefore = q_getTimeFromASN1(nbef); + certificate.d->notValidAfter = q_getTimeFromASN1(naft); + certificate.d->null = false; +diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp +index c92d8fc3f8..cef503710c 100644 +--- a/src/network/ssl/qsslcontext_openssl.cpp ++++ b/src/network/ssl/qsslcontext_openssl.cpp +@@ -1,6 +1,6 @@ + /**************************************************************************** + ** +-** Copyright (C) 2016 The Qt Company Ltd. ++** Copyright (C) 2017 The Qt Company Ltd. + ** Copyright (C) 2014 BlackBerry Limited. All rights reserved. + ** Copyright (C) 2014 Governikus GmbH & Co. KG. + ** Contact: https://www.qt.io/licensing/ +@@ -41,22 +41,14 @@ + + + #include +-#include +-#include + + #include "private/qssl_p.h" + #include "private/qsslcontext_openssl_p.h" +-#include "private/qsslsocket_p.h" + #include "private/qsslsocket_openssl_p.h" + #include "private/qsslsocket_openssl_symbols_p.h" +-#include "private/qssldiffiehellmanparameters_p.h" + + QT_BEGIN_NAMESPACE + +-// defined in qsslsocket_openssl.cpp: +-extern int q_X509Callback(int ok, X509_STORE_CTX *ctx); +-extern QString getErrorsFromOpenSsl(); +- + QSslContext::QSslContext() + : ctx(0), + pkey(0), +@@ -78,301 +70,6 @@ QSslContext::~QSslContext() + q_SSL_SESSION_free(session); + } + +-static inline QString msgErrorSettingEllipticCurves(const QString &why) +-{ +- return QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(why); +-} +- +-// static +-void QSslContext::initSslContext(QSslContext *sslContext, QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading) +-{ +- sslContext->sslConfiguration = configuration; +- sslContext->errorCode = QSslError::NoError; +- +- bool client = (mode == QSslSocket::SslClientMode); +- +- bool reinitialized = false; +- bool unsupportedProtocol = false; +-init_context: +- switch (sslContext->sslConfiguration.protocol()) { +- case QSsl::SslV2: +-#ifndef OPENSSL_NO_SSL2 +- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv2_client_method() : q_SSLv2_server_method()); +-#else +- // SSL 2 not supported by the system, but chosen deliberately -> error +- sslContext->ctx = 0; +- unsupportedProtocol = true; +-#endif +- break; +- case QSsl::SslV3: +-#ifndef OPENSSL_NO_SSL3_METHOD +- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv3_client_method() : q_SSLv3_server_method()); +-#else +- // SSL 3 not supported by the system, but chosen deliberately -> error +- sslContext->ctx = 0; +- unsupportedProtocol = true; +-#endif +- break; +- case QSsl::SecureProtocols: +- // SSLv2 and SSLv3 will be disabled by SSL options +- // But we need q_SSLv23_server_method() otherwise AnyProtocol will be unable to connect on Win32. +- case QSsl::TlsV1SslV3: +- // SSLv2 will will be disabled by SSL options +- case QSsl::AnyProtocol: +- default: +- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method()); +- break; +- case QSsl::TlsV1_0: +- sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_client_method() : q_TLSv1_server_method()); +- break; +- case QSsl::TlsV1_1: +-#if OPENSSL_VERSION_NUMBER >= 0x10001000L +- sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_1_client_method() : q_TLSv1_1_server_method()); +-#else +- // TLS 1.1 not supported by the system, but chosen deliberately -> error +- sslContext->ctx = 0; +- unsupportedProtocol = true; +-#endif +- break; +- case QSsl::TlsV1_2: +-#if OPENSSL_VERSION_NUMBER >= 0x10001000L +- sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_2_client_method() : q_TLSv1_2_server_method()); +-#else +- // TLS 1.2 not supported by the system, but chosen deliberately -> error +- sslContext->ctx = 0; +- unsupportedProtocol = true; +-#endif +- break; +- case QSsl::TlsV1_0OrLater: +- // Specific protocols will be specified via SSL options. +- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method()); +- break; +- case QSsl::TlsV1_1OrLater: +- case QSsl::TlsV1_2OrLater: +-#if OPENSSL_VERSION_NUMBER >= 0x10001000L +- // Specific protocols will be specified via SSL options. +- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method()); +-#else +- // TLS 1.1/1.2 not supported by the system, but chosen deliberately -> error +- sslContext->ctx = 0; +- unsupportedProtocol = true; +-#endif +- break; +- } +- +- if (!sslContext->ctx) { +- // After stopping Flash 10 the SSL library looses its ciphers. Try re-adding them +- // by re-initializing the library. +- if (!reinitialized) { +- reinitialized = true; +- if (q_SSL_library_init() == 1) +- goto init_context; +- } +- +- sslContext->errorStr = QSslSocket::tr("Error creating SSL context (%1)").arg( +- unsupportedProtocol ? QSslSocket::tr("unsupported protocol") : QSslSocketBackendPrivate::getErrorsFromOpenSsl() +- ); +- sslContext->errorCode = QSslError::UnspecifiedError; +- return; +- } +- +- // Enable bug workarounds. +- long options = QSslSocketBackendPrivate::setupOpenSslOptions(configuration.protocol(), configuration.d->sslOptions); +- q_SSL_CTX_set_options(sslContext->ctx, options); +- +-#if OPENSSL_VERSION_NUMBER >= 0x10000000L +- // Tell OpenSSL to release memory early +- // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html +- if (q_SSLeay() >= 0x10000000L) +- q_SSL_CTX_set_mode(sslContext->ctx, SSL_MODE_RELEASE_BUFFERS); +-#endif +- +- // Initialize ciphers +- QByteArray cipherString; +- bool first = true; +- QList ciphers = sslContext->sslConfiguration.ciphers(); +- if (ciphers.isEmpty()) +- ciphers = QSslSocketPrivate::defaultCiphers(); +- for (const QSslCipher &cipher : qAsConst(ciphers)) { +- if (first) +- first = false; +- else +- cipherString.append(':'); +- cipherString.append(cipher.name().toLatin1()); +- } +- +- if (!q_SSL_CTX_set_cipher_list(sslContext->ctx, cipherString.data())) { +- sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); +- sslContext->errorCode = QSslError::UnspecifiedError; +- return; +- } +- +- const QDateTime now = QDateTime::currentDateTimeUtc(); +- +- // Add all our CAs to this store. +- const auto caCertificates = sslContext->sslConfiguration.caCertificates(); +- for (const QSslCertificate &caCertificate : caCertificates) { +- // From https://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html: +- // +- // If several CA certificates matching the name, key identifier, and +- // serial number condition are available, only the first one will be +- // examined. This may lead to unexpected results if the same CA +- // certificate is available with different expiration dates. If a +- // ``certificate expired'' verification error occurs, no other +- // certificate will be searched. Make sure to not have expired +- // certificates mixed with valid ones. +- // +- // See also: QSslSocketBackendPrivate::verify() +- if (caCertificate.expiryDate() >= now) { +- q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(sslContext->ctx), (X509 *)caCertificate.handle()); +- } +- } +- +- if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) { +- // tell OpenSSL the directories where to look up the root certs on demand +- const QList unixDirs = QSslSocketPrivate::unixRootCertDirectories(); +- for (const QByteArray &unixDir : unixDirs) +- q_SSL_CTX_load_verify_locations(sslContext->ctx, 0, unixDir.constData()); +- } +- +- if (!sslContext->sslConfiguration.localCertificate().isNull()) { +- // Require a private key as well. +- if (sslContext->sslConfiguration.privateKey().isNull()) { +- sslContext->errorStr = QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); +- sslContext->errorCode = QSslError::UnspecifiedError; +- return; +- } +- +- // Load certificate +- if (!q_SSL_CTX_use_certificate(sslContext->ctx, (X509 *)sslContext->sslConfiguration.localCertificate().handle())) { +- sslContext->errorStr = QSslSocket::tr("Error loading local certificate, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); +- sslContext->errorCode = QSslError::UnspecifiedError; +- return; +- } +- +- if (configuration.d->privateKey.algorithm() == QSsl::Opaque) { +- sslContext->pkey = reinterpret_cast(configuration.d->privateKey.handle()); +- } else { +- // Load private key +- sslContext->pkey = q_EVP_PKEY_new(); +- // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free. +- // this lead to a memory leak. Now we use the *_set1_* functions which do not +- // take ownership of the RSA/DSA key instance because the QSslKey already has ownership. +- if (configuration.d->privateKey.algorithm() == QSsl::Rsa) +- q_EVP_PKEY_set1_RSA(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); +- else if (configuration.d->privateKey.algorithm() == QSsl::Dsa) +- q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); +-#ifndef OPENSSL_NO_EC +- else if (configuration.d->privateKey.algorithm() == QSsl::Ec) +- q_EVP_PKEY_set1_EC_KEY(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); +-#endif +- } +- +- if (!q_SSL_CTX_use_PrivateKey(sslContext->ctx, sslContext->pkey)) { +- sslContext->errorStr = QSslSocket::tr("Error loading private key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); +- sslContext->errorCode = QSslError::UnspecifiedError; +- return; +- } +- if (configuration.d->privateKey.algorithm() == QSsl::Opaque) +- sslContext->pkey = 0; // Don't free the private key, it belongs to QSslKey +- +- // Check if the certificate matches the private key. +- if (!q_SSL_CTX_check_private_key(sslContext->ctx)) { +- sslContext->errorStr = QSslSocket::tr("Private key does not certify public key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); +- sslContext->errorCode = QSslError::UnspecifiedError; +- return; +- } +- +- // If we have any intermediate certificates then we need to add them to our chain +- bool first = true; +- for (const QSslCertificate &cert : qAsConst(configuration.d->localCertificateChain)) { +- if (first) { +- first = false; +- continue; +- } +- q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, +- q_X509_dup(reinterpret_cast(cert.handle()))); +- } +- } +- +- // Initialize peer verification. +- if (sslContext->sslConfiguration.peerVerifyMode() == QSslSocket::VerifyNone) { +- q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_NONE, 0); +- } else { +- q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_PEER, q_X509Callback); +- } +- +- // Set verification depth. +- if (sslContext->sslConfiguration.peerVerifyDepth() != 0) +- q_SSL_CTX_set_verify_depth(sslContext->ctx, sslContext->sslConfiguration.peerVerifyDepth()); +- +- // set persisted session if the user set it +- if (!configuration.sessionTicket().isEmpty()) +- sslContext->setSessionASN1(configuration.sessionTicket()); +- +- // Set temp DH params +- QSslDiffieHellmanParameters dhparams = configuration.diffieHellmanParameters(); +- +- if (!dhparams.isValid()) { +- sslContext->errorStr = QSslSocket::tr("Diffie-Hellman parameters are not valid"); +- sslContext->errorCode = QSslError::UnspecifiedError; +- return; +- } +- +- if (!dhparams.isEmpty()) { +- const QByteArray ¶ms = dhparams.d->derData; +- const char *ptr = params.constData(); +- DH *dh = q_d2i_DHparams(NULL, reinterpret_cast(&ptr), params.length()); +- if (dh == NULL) +- qFatal("q_d2i_DHparams failed to convert QSslDiffieHellmanParameters to DER form"); +- q_SSL_CTX_set_tmp_dh(sslContext->ctx, dh); +- q_DH_free(dh); +- } +- +-#ifndef OPENSSL_NO_EC +-#if OPENSSL_VERSION_NUMBER >= 0x10002000L +- if (q_SSLeay() >= 0x10002000L) { +- q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_SET_ECDH_AUTO, 1, NULL); +- } else +-#endif +- { +- // Set temp ECDH params +- EC_KEY *ecdh = 0; +- ecdh = q_EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); +- q_SSL_CTX_set_tmp_ecdh(sslContext->ctx, ecdh); +- q_EC_KEY_free(ecdh); +- } +-#endif // OPENSSL_NO_EC +- +-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK) +- if (!client) +- q_SSL_CTX_use_psk_identity_hint(sslContext->ctx, sslContext->sslConfiguration.preSharedKeyIdentityHint().constData()); +-#endif // OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK) +- +- const QVector qcurves = sslContext->sslConfiguration.ellipticCurves(); +- if (!qcurves.isEmpty()) { +-#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) +- // Set the curves to be used +- if (q_SSLeay() >= 0x10002000L) { +- // SSL_CTX_ctrl wants a non-const pointer as last argument, +- // but let's avoid a copy into a temporary array +- if (!q_SSL_CTX_ctrl(sslContext->ctx, +- SSL_CTRL_SET_CURVES, +- qcurves.size(), +- const_cast(reinterpret_cast(qcurves.data())))) { +- sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); +- sslContext->errorCode = QSslError::UnspecifiedError; +- } +- } else +-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) +- { +- // specific curves requested, but not possible to set -> error +- sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version too old, need at least v1.0.2")); +- sslContext->errorCode = QSslError::UnspecifiedError; +- } +- } +-} +- + QSslContext* QSslContext::fromConfiguration(QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading) + { + QSslContext *sslContext = new QSslContext(); +@@ -463,7 +160,7 @@ SSL* QSslContext::createSsl() + m_npnContext.len = m_supportedNPNVersions.count(); + m_npnContext.status = QSslConfiguration::NextProtocolNegotiationNone; + #if OPENSSL_VERSION_NUMBER >= 0x10002000L +- if (q_SSLeay() >= 0x10002000L) { ++ if (QSslSocket::sslLibraryVersionNumber() >= 0x10002000L) { + // Callback's type has a parameter 'const unsigned char ** out' + // since it was introduced in 1.0.2. Internally, OpenSSL's own code + // (tests/examples) cast it to unsigned char * (since it's 'out'). +@@ -508,7 +205,7 @@ bool QSslContext::cacheSession(SSL* ssl) + unsigned char *data = reinterpret_cast(m_sessionASN1.data()); + if (!q_i2d_SSL_SESSION(session, &data)) + qCWarning(lcSsl, "could not store persistent version of SSL session"); +- m_sessionTicketLifeTimeHint = session->tlsext_tick_lifetime_hint; ++ m_sessionTicketLifeTimeHint = q_SSL_SESSION_get_ticket_lifetime_hint(session); + } + } + +diff --git a/src/network/ssl/qsslcontext_openssl11.cpp b/src/network/ssl/qsslcontext_openssl11.cpp +new file mode 100644 +index 0000000000..787b6ae3f5 +--- /dev/null ++++ b/src/network/ssl/qsslcontext_openssl11.cpp +@@ -0,0 +1,277 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2017 The Qt Company Ltd. ++** Copyright (C) 2014 BlackBerry Limited. All rights reserved. ++** Copyright (C) 2014 Governikus GmbH & Co. KG. ++** Copyright (C) 2016 Richard J. Moore ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the QtNetwork module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++ ++#include ++#include ++ ++#include "private/qssl_p.h" ++#include "private/qsslcontext_openssl_p.h" ++#include "private/qsslsocket_p.h" ++#include "private/qsslsocket_openssl_p.h" ++#include "private/qsslsocket_openssl_symbols_p.h" ++#include "private/qssldiffiehellmanparameters_p.h" ++ ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++// defined in qsslsocket_openssl.cpp: ++extern int q_X509Callback(int ok, X509_STORE_CTX *ctx); ++extern QString getErrorsFromOpenSsl(); ++ ++static inline QString msgErrorSettingEllipticCurves(const QString &why) ++{ ++ return QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(why); ++} ++ ++// static ++void QSslContext::initSslContext(QSslContext *sslContext, QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading) ++{ ++ sslContext->sslConfiguration = configuration; ++ sslContext->errorCode = QSslError::NoError; ++ ++ bool client = (mode == QSslSocket::SslClientMode); ++ ++ bool reinitialized = false; ++ bool unsupportedProtocol = false; ++init_context: ++ if (sslContext->sslConfiguration.protocol() == QSsl::SslV2) { ++ // SSL 2 is no longer supported, but chosen deliberately -> error ++ sslContext->ctx = nullptr; ++ unsupportedProtocol = true; ++ } else { ++ // The ssl options will actually control the supported methods ++ sslContext->ctx = q_SSL_CTX_new(client ? q_TLS_client_method() : q_TLS_server_method()); ++ } ++ ++ if (!sslContext->ctx) { ++ // After stopping Flash 10 the SSL library loses its ciphers. Try re-adding them ++ // by re-initializing the library. ++ if (!reinitialized) { ++ reinitialized = true; ++ if (q_OPENSSL_init_ssl(0, nullptr) == 1) ++ goto init_context; ++ } ++ ++ sslContext->errorStr = QSslSocket::tr("Error creating SSL context (%1)").arg( ++ unsupportedProtocol ? QSslSocket::tr("unsupported protocol") : QSslSocketBackendPrivate::getErrorsFromOpenSsl() ++ ); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ // Enable bug workarounds. ++ long options = QSslSocketBackendPrivate::setupOpenSslOptions(configuration.protocol(), configuration.d->sslOptions); ++ q_SSL_CTX_set_options(sslContext->ctx, options); ++ ++ // Tell OpenSSL to release memory early ++ // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html ++ q_SSL_CTX_set_mode(sslContext->ctx, SSL_MODE_RELEASE_BUFFERS); ++ ++ // Initialize ciphers ++ QByteArray cipherString; ++ bool first = true; ++ QList ciphers = sslContext->sslConfiguration.ciphers(); ++ if (ciphers.isEmpty()) ++ ciphers = QSslSocketPrivate::defaultCiphers(); ++ for (const QSslCipher &cipher : qAsConst(ciphers)) { ++ if (first) ++ first = false; ++ else ++ cipherString.append(':'); ++ cipherString.append(cipher.name().toLatin1()); ++ } ++ ++ if (!q_SSL_CTX_set_cipher_list(sslContext->ctx, cipherString.data())) { ++ sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ const QDateTime now = QDateTime::currentDateTimeUtc(); ++ ++ // Add all our CAs to this store. ++ const auto caCertificates = sslContext->sslConfiguration.caCertificates(); ++ for (const QSslCertificate &caCertificate : caCertificates) { ++ // From https://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html: ++ // ++ // If several CA certificates matching the name, key identifier, and ++ // serial number condition are available, only the first one will be ++ // examined. This may lead to unexpected results if the same CA ++ // certificate is available with different expiration dates. If a ++ // ``certificate expired'' verification error occurs, no other ++ // certificate will be searched. Make sure to not have expired ++ // certificates mixed with valid ones. ++ // ++ // See also: QSslSocketBackendPrivate::verify() ++ if (caCertificate.expiryDate() >= now) { ++ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(sslContext->ctx), (X509 *)caCertificate.handle()); ++ } ++ } ++ ++ if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) { ++ // tell OpenSSL the directories where to look up the root certs on demand ++ const QList unixDirs = QSslSocketPrivate::unixRootCertDirectories(); ++ for (const QByteArray &unixDir : unixDirs) ++ q_SSL_CTX_load_verify_locations(sslContext->ctx, nullptr, unixDir.constData()); ++ } ++ ++ if (!sslContext->sslConfiguration.localCertificate().isNull()) { ++ // Require a private key as well. ++ if (sslContext->sslConfiguration.privateKey().isNull()) { ++ sslContext->errorStr = QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ // Load certificate ++ if (!q_SSL_CTX_use_certificate(sslContext->ctx, (X509 *)sslContext->sslConfiguration.localCertificate().handle())) { ++ sslContext->errorStr = QSslSocket::tr("Error loading local certificate, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ if (configuration.d->privateKey.algorithm() == QSsl::Opaque) { ++ sslContext->pkey = reinterpret_cast(configuration.d->privateKey.handle()); ++ } else { ++ // Load private key ++ sslContext->pkey = q_EVP_PKEY_new(); ++ // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free. ++ // this lead to a memory leak. Now we use the *_set1_* functions which do not ++ // take ownership of the RSA/DSA key instance because the QSslKey already has ownership. ++ if (configuration.d->privateKey.algorithm() == QSsl::Rsa) ++ q_EVP_PKEY_set1_RSA(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); ++ else if (configuration.d->privateKey.algorithm() == QSsl::Dsa) ++ q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); ++#ifndef OPENSSL_NO_EC ++ else if (configuration.d->privateKey.algorithm() == QSsl::Ec) ++ q_EVP_PKEY_set1_EC_KEY(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); ++#endif ++ } ++ ++ if (!q_SSL_CTX_use_PrivateKey(sslContext->ctx, sslContext->pkey)) { ++ sslContext->errorStr = QSslSocket::tr("Error loading private key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ if (configuration.d->privateKey.algorithm() == QSsl::Opaque) ++ sslContext->pkey = nullptr; // Don't free the private key, it belongs to QSslKey ++ ++ // Check if the certificate matches the private key. ++ if (!q_SSL_CTX_check_private_key(sslContext->ctx)) { ++ sslContext->errorStr = QSslSocket::tr("Private key does not certify public key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ // If we have any intermediate certificates then we need to add them to our chain ++ bool first = true; ++ for (const QSslCertificate &cert : qAsConst(configuration.d->localCertificateChain)) { ++ if (first) { ++ first = false; ++ continue; ++ } ++ q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, ++ q_X509_dup(reinterpret_cast(cert.handle()))); ++ } ++ } ++ ++ // Initialize peer verification. ++ if (sslContext->sslConfiguration.peerVerifyMode() == QSslSocket::VerifyNone) { ++ q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_NONE, nullptr); ++ } else { ++ q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_PEER, q_X509Callback); ++ } ++ ++ // Set verification depth. ++ if (sslContext->sslConfiguration.peerVerifyDepth() != 0) ++ q_SSL_CTX_set_verify_depth(sslContext->ctx, sslContext->sslConfiguration.peerVerifyDepth()); ++ ++ // set persisted session if the user set it ++ if (!configuration.sessionTicket().isEmpty()) ++ sslContext->setSessionASN1(configuration.sessionTicket()); ++ ++ // Set temp DH params ++ QSslDiffieHellmanParameters dhparams = configuration.diffieHellmanParameters(); ++ ++ if (!dhparams.isValid()) { ++ sslContext->errorStr = QSslSocket::tr("Diffie-Hellman parameters are not valid"); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ if (!dhparams.isEmpty()) { ++ const QByteArray ¶ms = dhparams.d->derData; ++ const char *ptr = params.constData(); ++ DH *dh = q_d2i_DHparams(NULL, reinterpret_cast(&ptr), params.length()); ++ if (dh == NULL) ++ qFatal("q_d2i_DHparams failed to convert QSslDiffieHellmanParameters to DER form"); ++ q_SSL_CTX_set_tmp_dh(sslContext->ctx, dh); ++ q_DH_free(dh); ++ } ++ ++#ifndef OPENSSL_NO_PSK ++ if (!client) ++ q_SSL_CTX_use_psk_identity_hint(sslContext->ctx, sslContext->sslConfiguration.preSharedKeyIdentityHint().constData()); ++#endif // !OPENSSL_NO_PSK ++ ++ const QVector qcurves = sslContext->sslConfiguration.ellipticCurves(); ++ if (!qcurves.isEmpty()) { ++#ifdef OPENSSL_NO_EC ++ sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version with disabled elliptic curves")); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++#else ++ // Set the curves to be used. ++ std::vector curves; ++ curves.reserve(qcurves.size()); ++ for (const auto &sslCurve : qcurves) ++ curves.push_back(sslCurve.id); ++ if (!q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_SET_CURVES, long(curves.size()), &curves[0])) { ++ sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ } ++#endif ++ } ++} ++ ++QT_END_NAMESPACE +diff --git a/src/network/ssl/qsslcontext_opensslpre11.cpp b/src/network/ssl/qsslcontext_opensslpre11.cpp +new file mode 100644 +index 0000000000..9c01c2f2dc +--- /dev/null ++++ b/src/network/ssl/qsslcontext_opensslpre11.cpp +@@ -0,0 +1,354 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2017 The Qt Company Ltd. ++** Copyright (C) 2014 BlackBerry Limited. All rights reserved. ++** Copyright (C) 2014 Governikus GmbH & Co. KG. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the QtNetwork module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++ ++#include ++#include ++ ++#include "private/qssl_p.h" ++#include "private/qsslcontext_openssl_p.h" ++#include "private/qsslsocket_p.h" ++#include "private/qsslsocket_openssl_p.h" ++#include "private/qsslsocket_openssl_symbols_p.h" ++#include "private/qssldiffiehellmanparameters_p.h" ++ ++QT_BEGIN_NAMESPACE ++ ++// defined in qsslsocket_openssl.cpp: ++extern int q_X509Callback(int ok, X509_STORE_CTX *ctx); ++extern QString getErrorsFromOpenSsl(); ++ ++static inline QString msgErrorSettingEllipticCurves(const QString &why) ++{ ++ return QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(why); ++} ++ ++// static ++void QSslContext::initSslContext(QSslContext *sslContext, QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading) ++{ ++ sslContext->sslConfiguration = configuration; ++ sslContext->errorCode = QSslError::NoError; ++ ++ bool client = (mode == QSslSocket::SslClientMode); ++ ++ bool reinitialized = false; ++ bool unsupportedProtocol = false; ++init_context: ++ switch (sslContext->sslConfiguration.protocol()) { ++ case QSsl::SslV2: ++#ifndef OPENSSL_NO_SSL2 ++ sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv2_client_method() : q_SSLv2_server_method()); ++#else ++ // SSL 2 not supported by the system, but chosen deliberately -> error ++ sslContext->ctx = 0; ++ unsupportedProtocol = true; ++#endif ++ break; ++ case QSsl::SslV3: ++#ifndef OPENSSL_NO_SSL3_METHOD ++ sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv3_client_method() : q_SSLv3_server_method()); ++#else ++ // SSL 3 not supported by the system, but chosen deliberately -> error ++ sslContext->ctx = 0; ++ unsupportedProtocol = true; ++#endif ++ break; ++ case QSsl::SecureProtocols: ++ // SSLv2 and SSLv3 will be disabled by SSL options ++ // But we need q_SSLv23_server_method() otherwise AnyProtocol will be unable to connect on Win32. ++ case QSsl::TlsV1SslV3: ++ // SSLv2 will will be disabled by SSL options ++ case QSsl::AnyProtocol: ++ default: ++ sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method()); ++ break; ++ case QSsl::TlsV1_0: ++ sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_client_method() : q_TLSv1_server_method()); ++ break; ++ case QSsl::TlsV1_1: ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L ++ sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_1_client_method() : q_TLSv1_1_server_method()); ++#else ++ // TLS 1.1 not supported by the system, but chosen deliberately -> error ++ sslContext->ctx = 0; ++ unsupportedProtocol = true; ++#endif ++ break; ++ case QSsl::TlsV1_2: ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L ++ sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_2_client_method() : q_TLSv1_2_server_method()); ++#else ++ // TLS 1.2 not supported by the system, but chosen deliberately -> error ++ sslContext->ctx = 0; ++ unsupportedProtocol = true; ++#endif ++ break; ++ case QSsl::TlsV1_0OrLater: ++ // Specific protocols will be specified via SSL options. ++ sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method()); ++ break; ++ case QSsl::TlsV1_1OrLater: ++ case QSsl::TlsV1_2OrLater: ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L ++ // Specific protocols will be specified via SSL options. ++ sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method()); ++#else ++ // TLS 1.1/1.2 not supported by the system, but chosen deliberately -> error ++ sslContext->ctx = 0; ++ unsupportedProtocol = true; ++#endif ++ break; ++ } ++ ++ if (!sslContext->ctx) { ++ // After stopping Flash 10 the SSL library loses its ciphers. Try re-adding them ++ // by re-initializing the library. ++ if (!reinitialized) { ++ reinitialized = true; ++ if (q_SSL_library_init() == 1) ++ goto init_context; ++ } ++ ++ sslContext->errorStr = QSslSocket::tr("Error creating SSL context (%1)").arg( ++ unsupportedProtocol ? QSslSocket::tr("unsupported protocol") : QSslSocketBackendPrivate::getErrorsFromOpenSsl() ++ ); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ // Enable bug workarounds. ++ long options = QSslSocketBackendPrivate::setupOpenSslOptions(configuration.protocol(), configuration.d->sslOptions); ++ q_SSL_CTX_set_options(sslContext->ctx, options); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10000000L ++ // Tell OpenSSL to release memory early ++ // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html ++ if (q_SSLeay() >= 0x10000000L) ++ q_SSL_CTX_set_mode(sslContext->ctx, SSL_MODE_RELEASE_BUFFERS); ++#endif ++ ++ // Initialize ciphers ++ QByteArray cipherString; ++ bool first = true; ++ QList ciphers = sslContext->sslConfiguration.ciphers(); ++ if (ciphers.isEmpty()) ++ ciphers = QSslSocketPrivate::defaultCiphers(); ++ for (const QSslCipher &cipher : qAsConst(ciphers)) { ++ if (first) ++ first = false; ++ else ++ cipherString.append(':'); ++ cipherString.append(cipher.name().toLatin1()); ++ } ++ ++ if (!q_SSL_CTX_set_cipher_list(sslContext->ctx, cipherString.data())) { ++ sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ const QDateTime now = QDateTime::currentDateTimeUtc(); ++ ++ // Add all our CAs to this store. ++ const auto caCertificates = sslContext->sslConfiguration.caCertificates(); ++ for (const QSslCertificate &caCertificate : caCertificates) { ++ // From https://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html: ++ // ++ // If several CA certificates matching the name, key identifier, and ++ // serial number condition are available, only the first one will be ++ // examined. This may lead to unexpected results if the same CA ++ // certificate is available with different expiration dates. If a ++ // ``certificate expired'' verification error occurs, no other ++ // certificate will be searched. Make sure to not have expired ++ // certificates mixed with valid ones. ++ // ++ // See also: QSslSocketBackendPrivate::verify() ++ if (caCertificate.expiryDate() >= now) { ++ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(sslContext->ctx), (X509 *)caCertificate.handle()); ++ } ++ } ++ ++ if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) { ++ // tell OpenSSL the directories where to look up the root certs on demand ++ const QList unixDirs = QSslSocketPrivate::unixRootCertDirectories(); ++ for (const QByteArray &unixDir : unixDirs) ++ q_SSL_CTX_load_verify_locations(sslContext->ctx, 0, unixDir.constData()); ++ } ++ ++ if (!sslContext->sslConfiguration.localCertificate().isNull()) { ++ // Require a private key as well. ++ if (sslContext->sslConfiguration.privateKey().isNull()) { ++ sslContext->errorStr = QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ // Load certificate ++ if (!q_SSL_CTX_use_certificate(sslContext->ctx, (X509 *)sslContext->sslConfiguration.localCertificate().handle())) { ++ sslContext->errorStr = QSslSocket::tr("Error loading local certificate, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ if (configuration.d->privateKey.algorithm() == QSsl::Opaque) { ++ sslContext->pkey = reinterpret_cast(configuration.d->privateKey.handle()); ++ } else { ++ // Load private key ++ sslContext->pkey = q_EVP_PKEY_new(); ++ // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free. ++ // this lead to a memory leak. Now we use the *_set1_* functions which do not ++ // take ownership of the RSA/DSA key instance because the QSslKey already has ownership. ++ if (configuration.d->privateKey.algorithm() == QSsl::Rsa) ++ q_EVP_PKEY_set1_RSA(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); ++ else if (configuration.d->privateKey.algorithm() == QSsl::Dsa) ++ q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); ++#ifndef OPENSSL_NO_EC ++ else if (configuration.d->privateKey.algorithm() == QSsl::Ec) ++ q_EVP_PKEY_set1_EC_KEY(sslContext->pkey, reinterpret_cast(configuration.d->privateKey.handle())); ++#endif ++ } ++ ++ if (!q_SSL_CTX_use_PrivateKey(sslContext->ctx, sslContext->pkey)) { ++ sslContext->errorStr = QSslSocket::tr("Error loading private key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ if (configuration.d->privateKey.algorithm() == QSsl::Opaque) ++ sslContext->pkey = 0; // Don't free the private key, it belongs to QSslKey ++ ++ // Check if the certificate matches the private key. ++ if (!q_SSL_CTX_check_private_key(sslContext->ctx)) { ++ sslContext->errorStr = QSslSocket::tr("Private key does not certify public key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ // If we have any intermediate certificates then we need to add them to our chain ++ bool first = true; ++ for (const QSslCertificate &cert : qAsConst(configuration.d->localCertificateChain)) { ++ if (first) { ++ first = false; ++ continue; ++ } ++ q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, ++ q_X509_dup(reinterpret_cast(cert.handle()))); ++ } ++ } ++ ++ // Initialize peer verification. ++ if (sslContext->sslConfiguration.peerVerifyMode() == QSslSocket::VerifyNone) { ++ q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_NONE, 0); ++ } else { ++ q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_PEER, q_X509Callback); ++ } ++ ++ // Set verification depth. ++ if (sslContext->sslConfiguration.peerVerifyDepth() != 0) ++ q_SSL_CTX_set_verify_depth(sslContext->ctx, sslContext->sslConfiguration.peerVerifyDepth()); ++ ++ // set persisted session if the user set it ++ if (!configuration.sessionTicket().isEmpty()) ++ sslContext->setSessionASN1(configuration.sessionTicket()); ++ ++ // Set temp DH params ++ QSslDiffieHellmanParameters dhparams = configuration.diffieHellmanParameters(); ++ ++ if (!dhparams.isValid()) { ++ sslContext->errorStr = QSslSocket::tr("Diffie-Hellman parameters are not valid"); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ return; ++ } ++ ++ if (!dhparams.isEmpty()) { ++ const QByteArray ¶ms = dhparams.d->derData; ++ const char *ptr = params.constData(); ++ DH *dh = q_d2i_DHparams(NULL, reinterpret_cast(&ptr), params.length()); ++ if (dh == NULL) ++ qFatal("q_d2i_DHparams failed to convert QSslDiffieHellmanParameters to DER form"); ++ q_SSL_CTX_set_tmp_dh(sslContext->ctx, dh); ++ q_DH_free(dh); ++ } ++ ++#ifndef OPENSSL_NO_EC ++#if OPENSSL_VERSION_NUMBER >= 0x10002000L ++ if (q_SSLeay() >= 0x10002000L) { ++ q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_SET_ECDH_AUTO, 1, NULL); ++ } else ++#endif ++ { ++ // Set temp ECDH params ++ EC_KEY *ecdh = 0; ++ ecdh = q_EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); ++ q_SSL_CTX_set_tmp_ecdh(sslContext->ctx, ecdh); ++ q_EC_KEY_free(ecdh); ++ } ++#endif // OPENSSL_NO_EC ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK) ++ if (!client) ++ q_SSL_CTX_use_psk_identity_hint(sslContext->ctx, sslContext->sslConfiguration.preSharedKeyIdentityHint().constData()); ++#endif // OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK) ++ ++ const QVector qcurves = sslContext->sslConfiguration.ellipticCurves(); ++ if (!qcurves.isEmpty()) { ++#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) ++ // Set the curves to be used ++ if (q_SSLeay() >= 0x10002000L) { ++ // SSL_CTX_ctrl wants a non-const pointer as last argument, ++ // but let's avoid a copy into a temporary array ++ if (!q_SSL_CTX_ctrl(sslContext->ctx, ++ SSL_CTRL_SET_CURVES, ++ qcurves.size(), ++ const_cast(reinterpret_cast(qcurves.data())))) { ++ sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ } ++ } else ++#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) ++ { ++ // specific curves requested, but not possible to set -> error ++ sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version too old, need at least v1.0.2")); ++ sslContext->errorCode = QSslError::UnspecifiedError; ++ } ++ } ++} ++ ++QT_END_NAMESPACE +diff --git a/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp b/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp +index 90687b05c5..5ebad822f1 100644 +--- a/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp ++++ b/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp +@@ -1,6 +1,7 @@ + /**************************************************************************** + ** + ** Copyright (C) 2015 Mikkel Krautz ++** Copyright (C) 2016 Richard J. Moore + ** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtNetwork module of the Qt Toolkit. +@@ -50,8 +51,8 @@ + #include + #endif + +-// For q_BN_is_word. + #include ++#include + + QT_BEGIN_NAMESPACE + +@@ -62,13 +63,6 @@ static bool isSafeDH(DH *dh) + + QSslSocketPrivate::ensureInitialized(); + +- // Mark p < 1024 bits as unsafe. +- if (q_BN_num_bits(dh->p) < 1024) { +- return false; +- } +- +- if (q_DH_check(dh, &status) != 1) +- return false; + + // From https://wiki.openssl.org/index.php/Diffie-Hellman_parameters: + // +@@ -81,11 +75,39 @@ static bool isSafeDH(DH *dh) + // Without the test, the IETF parameters would + // fail validation. For details, see Diffie-Hellman + // Parameter Check (when g = 2, must p mod 24 == 11?). ++#if QT_CONFIG(opensslv11) ++ // Mark p < 1024 bits as unsafe. ++ if (q_DH_bits(dh) < 1024) ++ return false; ++ ++ if (q_DH_check(dh, &status) != 1) ++ return false; ++ ++ const BIGNUM *p = nullptr; ++ const BIGNUM *q = nullptr; ++ const BIGNUM *g = nullptr; ++ q_DH_get0_pqg(dh, &p, &q, &g); ++ ++ if (q_BN_is_word(const_cast(g), DH_GENERATOR_2)) { ++ long residue = q_BN_mod_word(p, 24); ++ if (residue == 11 || residue == 23) ++ status &= ~DH_NOT_SUITABLE_GENERATOR; ++ } ++ ++#else ++ // Mark p < 1024 bits as unsafe. ++ if (q_BN_num_bits(dh->p) < 1024) ++ return false; ++ ++ if (q_DH_check(dh, &status) != 1) ++ return false; ++ + if (q_BN_is_word(dh->g, DH_GENERATOR_2)) { + long residue = q_BN_mod_word(dh->p, 24); + if (residue == 11 || residue == 23) + status &= ~DH_NOT_SUITABLE_GENERATOR; + } ++#endif + + bad |= DH_CHECK_P_NOT_PRIME; + bad |= DH_CHECK_P_NOT_SAFE_PRIME; +diff --git a/src/network/ssl/qsslellipticcurve.h b/src/network/ssl/qsslellipticcurve.h +index 231566063e..57dda19bad 100644 +--- a/src/network/ssl/qsslellipticcurve.h ++++ b/src/network/ssl/qsslellipticcurve.h +@@ -80,6 +80,7 @@ private: + friend Q_DECL_CONSTEXPR bool operator==(QSslEllipticCurve lhs, QSslEllipticCurve rhs) Q_DECL_NOTHROW; + friend Q_DECL_CONSTEXPR uint qHash(QSslEllipticCurve curve, uint seed) Q_DECL_NOTHROW; + ++ friend class QSslContext; + friend class QSslSocketPrivate; + friend class QSslSocketBackendPrivate; + }; +diff --git a/src/network/ssl/qsslellipticcurve_openssl.cpp b/src/network/ssl/qsslellipticcurve_openssl.cpp +index e18197b703..8cd14837f0 100644 +--- a/src/network/ssl/qsslellipticcurve_openssl.cpp ++++ b/src/network/ssl/qsslellipticcurve_openssl.cpp +@@ -1,6 +1,7 @@ + /**************************************************************************** + ** + ** Copyright (C) 2014 Governikus GmbH & Co. KG. ++** Copyright (C) 2016 Richard J. Moore + ** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtNetwork module of the Qt Toolkit. +@@ -78,17 +79,18 @@ QSslEllipticCurve QSslEllipticCurve::fromShortName(const QString &name) + QSslEllipticCurve result; + + #ifndef OPENSSL_NO_EC +- const QByteArray curveNameLatin1 = name.toLatin1(); + ++ const QByteArray curveNameLatin1 = name.toLatin1(); + int nid = q_OBJ_sn2nid(curveNameLatin1.data()); + + #if OPENSSL_VERSION_NUMBER >= 0x10002000L +- if (nid == 0 && q_SSLeay() >= 0x10002000L) ++ if (nid == 0 && QSslSocket::sslLibraryVersionNumber() >= 0x10002000L) + nid = q_EC_curve_nist2nid(curveNameLatin1.data()); + #endif // OPENSSL_VERSION_NUMBER >= 0x10002000L + + result.id = nid; +-#endif ++ ++#endif // !OPENSSL_NO_EC + + return result; + } +diff --git a/src/network/ssl/qsslkey_openssl.cpp b/src/network/ssl/qsslkey_openssl.cpp +index 26119023d1..2b03af9441 100644 +--- a/src/network/ssl/qsslkey_openssl.cpp ++++ b/src/network/ssl/qsslkey_openssl.cpp +@@ -1,6 +1,7 @@ + /**************************************************************************** + ** +-** Copyright (C) 2016 The Qt Company Ltd. ++** Copyright (C) 2017 The Qt Company Ltd. ++** Copyright (C) 2016 Richard J. Moore + ** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtNetwork module of the Qt Toolkit. +@@ -87,33 +88,32 @@ bool QSslKeyPrivate::fromEVP_PKEY(EVP_PKEY *pkey) + if (pkey == nullptr) + return false; + +- if (pkey->type == EVP_PKEY_RSA) { ++#if QT_CONFIG(opensslv11) ++ const int keyType = q_EVP_PKEY_type(q_EVP_PKEY_base_id(pkey)); ++#else ++ const int keyType = pkey->type; ++#endif ++ if (keyType == EVP_PKEY_RSA) { + isNull = false; + algorithm = QSsl::Rsa; + type = QSsl::PrivateKey; + +- rsa = q_RSA_new(); +- memcpy(rsa, q_EVP_PKEY_get1_RSA(pkey), sizeof(RSA)); +- ++ rsa = q_EVP_PKEY_get1_RSA(pkey); + return true; +- } +- else if (pkey->type == EVP_PKEY_DSA) { ++ } else if (keyType == EVP_PKEY_DSA) { + isNull = false; + algorithm = QSsl::Dsa; + type = QSsl::PrivateKey; + +- dsa = q_DSA_new(); +- memcpy(dsa, q_EVP_PKEY_get1_DSA(pkey), sizeof(DSA)); +- ++ dsa = q_EVP_PKEY_get1_DSA(pkey); + return true; + } + #ifndef OPENSSL_NO_EC +- else if (pkey->type == EVP_PKEY_EC) { ++ else if (keyType == EVP_PKEY_EC) { + isNull = false; + algorithm = QSsl::Ec; + type = QSsl::PrivateKey; +- ec = q_EC_KEY_dup(q_EVP_PKEY_get1_EC_KEY(pkey)); +- ++ ec = q_EVP_PKEY_get1_EC_KEY(pkey); + return true; + } + #endif +@@ -181,8 +181,8 @@ int QSslKeyPrivate::length() const + return -1; + + switch (algorithm) { +- case QSsl::Rsa: return q_BN_num_bits(rsa->n); +- case QSsl::Dsa: return q_BN_num_bits(dsa->p); ++ case QSsl::Rsa: return q_RSA_bits(rsa); ++ case QSsl::Dsa: return q_DSA_bits(dsa); + #ifndef OPENSSL_NO_EC + case QSsl::Ec: return q_EC_GROUP_get_degree(q_EC_KEY_get0_group(ec)); + #endif +@@ -276,7 +276,13 @@ Qt::HANDLE QSslKeyPrivate::handle() const + + static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data, const QByteArray &key, const QByteArray &iv, int enc) + { +- EVP_CIPHER_CTX ctx; ++#if QT_CONFIG(opensslv11) ++ EVP_CIPHER_CTX *ctx = q_EVP_CIPHER_CTX_new(); ++#else ++ EVP_CIPHER_CTX evpCipherContext; ++ EVP_CIPHER_CTX *ctx = &evpCipherContext; ++#endif ++ + const EVP_CIPHER* type = 0; + int i = 0, len = 0; + +@@ -294,21 +300,44 @@ static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data, + + QByteArray output; + output.resize(data.size() + EVP_MAX_BLOCK_LENGTH); +- q_EVP_CIPHER_CTX_init(&ctx); +- q_EVP_CipherInit(&ctx, type, NULL, NULL, enc); +- q_EVP_CIPHER_CTX_set_key_length(&ctx, key.size()); ++ ++#if QT_CONFIG(opensslv11) ++ q_EVP_CIPHER_CTX_reset(ctx); ++#else ++ q_EVP_CIPHER_CTX_init(ctx); ++#endif ++ ++ q_EVP_CipherInit(ctx, type, NULL, NULL, enc); ++ q_EVP_CIPHER_CTX_set_key_length(ctx, key.size()); + if (cipher == QSslKeyPrivate::Rc2Cbc) +- q_EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_SET_RC2_KEY_BITS, 8 * key.size(), NULL); +- q_EVP_CipherInit(&ctx, NULL, ++ q_EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_RC2_KEY_BITS, 8 * key.size(), NULL); ++ ++#if QT_CONFIG(opensslv11) ++ // EVP_CipherInit in 1.1 resets the context thus making the calls above useless. ++ // We call EVP_CipherInit_ex instead. ++ q_EVP_CipherInit_ex(ctx, nullptr, nullptr, ++ reinterpret_cast(key.constData()), ++ reinterpret_cast(iv.constData()), ++ enc); ++#else ++ q_EVP_CipherInit(ctx, NULL, + reinterpret_cast(key.constData()), + reinterpret_cast(iv.constData()), enc); +- q_EVP_CipherUpdate(&ctx, ++#endif // opensslv11 ++ ++ q_EVP_CipherUpdate(ctx, + reinterpret_cast(output.data()), &len, + reinterpret_cast(data.constData()), data.size()); +- q_EVP_CipherFinal(&ctx, ++ q_EVP_CipherFinal(ctx, + reinterpret_cast(output.data()) + len, &i); + len += i; +- q_EVP_CIPHER_CTX_cleanup(&ctx); ++ ++#if QT_CONFIG(opensslv11) ++ q_EVP_CIPHER_CTX_reset(ctx); ++ q_EVP_CIPHER_CTX_free(ctx); ++#else ++ q_EVP_CIPHER_CTX_cleanup(ctx); ++#endif + + return output.left(len); + } +diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp +index f5b493897e..45cea490fc 100644 +--- a/src/network/ssl/qsslsocket_openssl.cpp ++++ b/src/network/ssl/qsslsocket_openssl.cpp +@@ -1,6 +1,6 @@ + /**************************************************************************** + ** +-** Copyright (C) 2016 The Qt Company Ltd. ++** Copyright (C) 2017 The Qt Company Ltd. + ** Copyright (C) 2014 Governikus GmbH & Co. KG + ** Contact: https://www.qt.io/licensing/ + ** +@@ -97,70 +97,6 @@ bool QSslSocketPrivate::s_loadRootCertsOnDemand = false; + int QSslSocketBackendPrivate::s_indexForSSLExtraData = -1; + #endif + +-/* \internal +- +- From OpenSSL's thread(3) manual page: +- +- OpenSSL can safely be used in multi-threaded applications provided that at +- least two callback functions are set. +- +- locking_function(int mode, int n, const char *file, int line) is needed to +- perform locking on shared data structures. (Note that OpenSSL uses a +- number of global data structures that will be implicitly shared +- whenever multiple threads use OpenSSL.) Multi-threaded +- applications will crash at random if it is not set. ... +- ... +- id_function(void) is a function that returns a thread ID. It is not +- needed on Windows nor on platforms where getpid() returns a different +- ID for each thread (most notably Linux) +-*/ +-class QOpenSslLocks +-{ +-public: +- inline QOpenSslLocks() +- : initLocker(QMutex::Recursive), +- locksLocker(QMutex::Recursive) +- { +- QMutexLocker locker(&locksLocker); +- int numLocks = q_CRYPTO_num_locks(); +- locks = new QMutex *[numLocks]; +- memset(locks, 0, numLocks * sizeof(QMutex *)); +- } +- inline ~QOpenSslLocks() +- { +- QMutexLocker locker(&locksLocker); +- for (int i = 0; i < q_CRYPTO_num_locks(); ++i) +- delete locks[i]; +- delete [] locks; +- +- QSslSocketPrivate::deinitialize(); +- } +- inline QMutex *lock(int num) +- { +- QMutexLocker locker(&locksLocker); +- QMutex *tmp = locks[num]; +- if (!tmp) +- tmp = locks[num] = new QMutex(QMutex::Recursive); +- return tmp; +- } +- +- QMutex *globalLock() +- { +- return &locksLocker; +- } +- +- QMutex *initLock() +- { +- return &initLocker; +- } +- +-private: +- QMutex initLocker; +- QMutex locksLocker; +- QMutex **locks; +-}; +-Q_GLOBAL_STATIC(QOpenSslLocks, openssl_locks) +- + QString QSslSocketBackendPrivate::getErrorsFromOpenSsl() + { + QString errorString; +@@ -175,20 +111,6 @@ QString QSslSocketBackendPrivate::getErrorsFromOpenSsl() + } + + extern "C" { +-static void locking_function(int mode, int lockNumber, const char *, int) +-{ +- QMutex *mutex = openssl_locks()->lock(lockNumber); +- +- // Lock or unlock it +- if (mode & CRYPTO_LOCK) +- mutex->lock(); +- else +- mutex->unlock(); +-} +-static unsigned long id_function() +-{ +- return (quintptr)QThread::currentThreadId(); +-} + + #if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK) + static unsigned int q_ssl_psk_client_callback(SSL *ssl, +@@ -227,7 +149,7 @@ QSslSocketBackendPrivate::~QSslSocketBackendPrivate() + destroySslContext(); + } + +-QSslCipher QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(SSL_CIPHER *cipher) ++QSslCipher QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(const SSL_CIPHER *cipher) + { + QSslCipher ciph; + +@@ -283,6 +205,7 @@ struct QSslErrorList + QMutex mutex; + QVector errors; + }; ++ + Q_GLOBAL_STATIC(QSslErrorList, _q_sslErrorList) + + int q_X509Callback(int ok, X509_STORE_CTX *ctx) +@@ -312,7 +235,7 @@ int q_X509Callback(int ok, X509_STORE_CTX *ctx) + } + #endif + } +- // Always return OK to allow verification to continue. We're handle the ++ // Always return OK to allow verification to continue. We handle the + // errors gracefully after collecting all errors, after verification has + // completed. + return 1; +@@ -397,7 +320,7 @@ bool QSslSocketBackendPrivate::initSslContext() + if (configuration.protocol != QSsl::SslV2 && + configuration.protocol != QSsl::SslV3 && + configuration.protocol != QSsl::UnknownProtocol && +- mode == QSslSocket::SslClientMode && q_SSLeay() >= 0x00090806fL) { ++ mode == QSslSocket::SslClientMode && QSslSocket::sslLibraryVersionNumber() >= 0x00090806fL) { + // Set server hostname on TLS extension. RFC4366 section 3.1 requires it in ACE format. + QString tlsHostName = verificationPeerName.isEmpty() ? q->peerName() : verificationPeerName; + if (tlsHostName.isEmpty()) +@@ -438,13 +361,13 @@ bool QSslSocketBackendPrivate::initSslContext() + + #if OPENSSL_VERSION_NUMBER >= 0x10001000L + // Save a pointer to this object into the SSL structure. +- if (q_SSLeay() >= 0x10001000L) ++ if (QSslSocket::sslLibraryVersionNumber() >= 0x10001000L) + q_SSL_set_ex_data(ssl, s_indexForSSLExtraData, this); + #endif + + #if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK) + // Set the client callback for PSK +- if (q_SSLeay() >= 0x10001000L) { ++ if (QSslSocket::sslLibraryVersionNumber() >= 0x10001000L) { + if (mode == QSslSocket::SslClientMode) + q_SSL_set_psk_client_callback(ssl, &q_ssl_psk_client_callback); + else if (mode == QSslSocket::SslServerMode) +@@ -464,16 +387,6 @@ void QSslSocketBackendPrivate::destroySslContext() + sslContextPointer.clear(); + } + +-/*! +- \internal +-*/ +-void QSslSocketPrivate::deinitialize() +-{ +- q_CRYPTO_set_id_callback(0); +- q_CRYPTO_set_locking_callback(0); +- q_ERR_free_strings(); +-} +- + /*! + \internal + +@@ -486,91 +399,6 @@ bool QSslSocketPrivate::supportsSsl() + return ensureLibraryLoaded(); + } + +-bool QSslSocketPrivate::ensureLibraryLoaded() +-{ +- if (!q_resolveOpenSslSymbols()) +- return false; +- +- // Check if the library itself needs to be initialized. +- QMutexLocker locker(openssl_locks()->initLock()); +- +- if (!s_libraryLoaded) { +- s_libraryLoaded = true; +- +- // Initialize OpenSSL. +- q_CRYPTO_set_id_callback(id_function); +- q_CRYPTO_set_locking_callback(locking_function); +- if (q_SSL_library_init() != 1) +- return false; +- q_SSL_load_error_strings(); +- q_OpenSSL_add_all_algorithms(); +- +-#if OPENSSL_VERSION_NUMBER >= 0x10001000L +- if (q_SSLeay() >= 0x10001000L) +- QSslSocketBackendPrivate::s_indexForSSLExtraData = q_SSL_get_ex_new_index(0L, NULL, NULL, NULL, NULL); +-#endif +- +- // Initialize OpenSSL's random seed. +- if (!q_RAND_status()) { +- qWarning("Random number generator not seeded, disabling SSL support"); +- return false; +- } +- } +- return true; +-} +- +-void QSslSocketPrivate::ensureCiphersAndCertsLoaded() +-{ +- QMutexLocker locker(openssl_locks()->initLock()); +- if (s_loadedCiphersAndCerts) +- return; +- s_loadedCiphersAndCerts = true; +- +- resetDefaultCiphers(); +- resetDefaultEllipticCurves(); +- +-#if QT_CONFIG(library) +- //load symbols needed to receive certificates from system store +-#if defined(Q_OS_WIN) +- HINSTANCE hLib = LoadLibraryW(L"Crypt32"); +- if (hLib) { +- ptrCertOpenSystemStoreW = (PtrCertOpenSystemStoreW)GetProcAddress(hLib, "CertOpenSystemStoreW"); +- ptrCertFindCertificateInStore = (PtrCertFindCertificateInStore)GetProcAddress(hLib, "CertFindCertificateInStore"); +- ptrCertCloseStore = (PtrCertCloseStore)GetProcAddress(hLib, "CertCloseStore"); +- if (!ptrCertOpenSystemStoreW || !ptrCertFindCertificateInStore || !ptrCertCloseStore) +- qCWarning(lcSsl, "could not resolve symbols in crypt32 library"); // should never happen +- } else { +- qCWarning(lcSsl, "could not load crypt32 library"); // should never happen +- } +-#elif defined(Q_OS_QNX) +- s_loadRootCertsOnDemand = true; +-#elif defined(Q_OS_UNIX) && !defined(Q_OS_MAC) +- // check whether we can enable on-demand root-cert loading (i.e. check whether the sym links are there) +- QList dirs = unixRootCertDirectories(); +- QStringList symLinkFilter; +- symLinkFilter << QLatin1String("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]"); +- for (int a = 0; a < dirs.count(); ++a) { +- QDirIterator iterator(QLatin1String(dirs.at(a)), symLinkFilter, QDir::Files); +- if (iterator.hasNext()) { +- s_loadRootCertsOnDemand = true; +- break; +- } +- } +-#endif +-#endif // QT_CONFIG(library) +- // if on-demand loading was not enabled, load the certs now +- if (!s_loadRootCertsOnDemand) +- setDefaultCaCertificates(systemCaCertificates()); +-#ifdef Q_OS_WIN +- //Enabled for fetching additional root certs from windows update on windows 6+ +- //This flag is set false by setDefaultCaCertificates() indicating the app uses +- //its own cert bundle rather than the system one. +- //Same logic that disables the unix on demand cert loading. +- //Unlike unix, we do preload the certificates from the cert store. +- if ((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) >= QSysInfo::WV_6_0) +- s_loadRootCertsOnDemand = true; +-#endif +-} + + /*! + \internal +@@ -587,26 +415,6 @@ void QSslSocketPrivate::ensureInitialized() + ensureCiphersAndCertsLoaded(); + } + +-long QSslSocketPrivate::sslLibraryVersionNumber() +-{ +- if (!supportsSsl()) +- return 0; +- +- return q_SSLeay(); +-} +- +-QString QSslSocketPrivate::sslLibraryVersionString() +-{ +- if (!supportsSsl()) +- return QString(); +- +- const char *versionString = q_SSLeay_version(SSLEAY_VERSION); +- if (!versionString) +- return QString(); +- +- return QString::fromLatin1(versionString); +-} +- + long QSslSocketPrivate::sslLibraryBuildVersionNumber() + { + return OPENSSL_VERSION_NUMBER; +@@ -628,7 +436,11 @@ QString QSslSocketPrivate::sslLibraryBuildVersionString() + */ + void QSslSocketPrivate::resetDefaultCiphers() + { ++#if QT_CONFIG(opensslv11) ++ SSL_CTX *myCtx = q_SSL_CTX_new(q_TLS_client_method()); ++#else + SSL_CTX *myCtx = q_SSL_CTX_new(q_SSLv23_client_method()); ++#endif + SSL *mySsl = q_SSL_new(myCtx); + + QList ciphers; +@@ -664,7 +476,7 @@ void QSslSocketPrivate::resetDefaultEllipticCurves() + QVector curves; + + #ifndef OPENSSL_NO_EC +- const size_t curveCount = q_EC_get_builtin_curves(NULL, 0); ++ const size_t curveCount = q_EC_get_builtin_curves(nullptr, 0); + + QVarLengthArray builtinCurves(static_cast(curveCount)); + +@@ -698,13 +510,14 @@ QList QSslSocketPrivate::systemCaCertificates() + if (ptrCertOpenSystemStoreW && ptrCertFindCertificateInStore && ptrCertCloseStore) { + HCERTSTORE hSystemStore; + hSystemStore = ptrCertOpenSystemStoreW(0, L"ROOT"); +- if(hSystemStore) { +- PCCERT_CONTEXT pc = NULL; +- while(1) { +- pc = ptrCertFindCertificateInStore( hSystemStore, X509_ASN_ENCODING, 0, CERT_FIND_ANY, NULL, pc); +- if(!pc) ++ if (hSystemStore) { ++ PCCERT_CONTEXT pc = nullptr; ++ while (1) { ++ pc = ptrCertFindCertificateInStore(hSystemStore, X509_ASN_ENCODING, 0, CERT_FIND_ANY, nullptr, pc); ++ if (!pc) + break; +- QByteArray der((const char *)(pc->pbCertEncoded), static_cast(pc->cbCertEncoded)); ++ QByteArray der(reinterpret_cast(pc->pbCertEncoded), ++ static_cast(pc->cbCertEncoded)); + QSslCertificate cert(der, QSsl::Der); + systemCerts.append(cert); + } +@@ -1504,14 +1317,8 @@ QSslCipher QSslSocketBackendPrivate::sessionCipher() const + { + if (!ssl) + return QSslCipher(); +-#if OPENSSL_VERSION_NUMBER >= 0x10000000L +- // FIXME This is fairly evil, but needed to keep source level compatibility +- // with the OpenSSL 0.9.x implementation at maximum -- some other functions +- // don't take a const SSL_CIPHER* when they should +- SSL_CIPHER *sessionCipher = const_cast(q_SSL_get_current_cipher(ssl)); +-#else +- SSL_CIPHER *sessionCipher = q_SSL_get_current_cipher(ssl); +-#endif ++ ++ const SSL_CIPHER *sessionCipher = q_SSL_get_current_cipher(ssl); + return sessionCipher ? QSslCipher_from_SSL_CIPHER(sessionCipher) : QSslCipher(); + } + +@@ -1537,112 +1344,6 @@ QSsl::SslProtocol QSslSocketBackendPrivate::sessionProtocol() const + return QSsl::UnknownProtocol; + } + +-void QSslSocketBackendPrivate::continueHandshake() +-{ +- Q_Q(QSslSocket); +- // if we have a max read buffer size, reset the plain socket's to match +- if (readBufferMaxSize) +- plainSocket->setReadBufferSize(readBufferMaxSize); +- +- if (q_SSL_ctrl((ssl), SSL_CTRL_GET_SESSION_REUSED, 0, NULL)) +- configuration.peerSessionShared = true; +- +-#ifdef QT_DECRYPT_SSL_TRAFFIC +- if (ssl->session && ssl->s3) { +- const char *mk = reinterpret_cast(ssl->session->master_key); +- QByteArray masterKey(mk, ssl->session->master_key_length); +- const char *random = reinterpret_cast(ssl->s3->client_random); +- QByteArray clientRandom(random, SSL3_RANDOM_SIZE); +- +- // different format, needed for e.g. older Wireshark versions: +-// const char *sid = reinterpret_cast(ssl->session->session_id); +-// QByteArray sessionID(sid, ssl->session->session_id_length); +-// QByteArray debugLineRSA("RSA Session-ID:"); +-// debugLineRSA.append(sessionID.toHex().toUpper()); +-// debugLineRSA.append(" Master-Key:"); +-// debugLineRSA.append(masterKey.toHex().toUpper()); +-// debugLineRSA.append("\n"); +- +- QByteArray debugLineClientRandom("CLIENT_RANDOM "); +- debugLineClientRandom.append(clientRandom.toHex().toUpper()); +- debugLineClientRandom.append(" "); +- debugLineClientRandom.append(masterKey.toHex().toUpper()); +- debugLineClientRandom.append("\n"); +- +- QString sslKeyFile = QDir::tempPath() + QLatin1String("/qt-ssl-keys"); +- QFile file(sslKeyFile); +- if (!file.open(QIODevice::Append)) +- qCWarning(lcSsl) << "could not open file" << sslKeyFile << "for appending"; +- if (!file.write(debugLineClientRandom)) +- qCWarning(lcSsl) << "could not write to file" << sslKeyFile; +- file.close(); +- } else { +- qCWarning(lcSsl, "could not decrypt SSL traffic"); +- } +-#endif +- +- // Cache this SSL session inside the QSslContext +- if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionSharing)) { +- if (!sslContextPointer->cacheSession(ssl)) { +- sslContextPointer.clear(); // we could not cache the session +- } else { +- // Cache the session for permanent usage as well +- if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionPersistence)) { +- if (!sslContextPointer->sessionASN1().isEmpty()) +- configuration.sslSession = sslContextPointer->sessionASN1(); +- configuration.sslSessionTicketLifeTimeHint = sslContextPointer->sessionTicketLifeTimeHint(); +- } +- } +- } +- +-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG) +- +- configuration.nextProtocolNegotiationStatus = sslContextPointer->npnContext().status; +- if (sslContextPointer->npnContext().status == QSslConfiguration::NextProtocolNegotiationUnsupported) { +- // we could not agree -> be conservative and use HTTP/1.1 +- configuration.nextNegotiatedProtocol = QByteArrayLiteral("http/1.1"); +- } else { +- const unsigned char *proto = 0; +- unsigned int proto_len = 0; +-#if OPENSSL_VERSION_NUMBER >= 0x10002000L +- if (q_SSLeay() >= 0x10002000L) { +- q_SSL_get0_alpn_selected(ssl, &proto, &proto_len); +- if (proto_len && mode == QSslSocket::SslClientMode) { +- // Client does not have a callback that sets it ... +- configuration.nextProtocolNegotiationStatus = QSslConfiguration::NextProtocolNegotiationNegotiated; +- } +- } +- +- if (!proto_len) { // Test if NPN was more lucky ... +-#else +- { +-#endif +- q_SSL_get0_next_proto_negotiated(ssl, &proto, &proto_len); +- } +- +- if (proto_len) +- configuration.nextNegotiatedProtocol = QByteArray(reinterpret_cast(proto), proto_len); +- else +- configuration.nextNegotiatedProtocol.clear(); +- } +-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ... +- +-#if OPENSSL_VERSION_NUMBER >= 0x10002000L +- if (q_SSLeay() >= 0x10002000L && mode == QSslSocket::SslClientMode) { +- EVP_PKEY *key; +- if (q_SSL_get_server_tmp_key(ssl, &key)) +- configuration.ephemeralServerKey = QSslKey(key, QSsl::PublicKey); +- } +-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ... +- +- connectionEncrypted = true; +- emit q->encrypted(); +- if (autoStartHandshake && pendingClose) { +- pendingClose = false; +- q->disconnectFromHost(); +- } +-} +- + QList QSslSocketBackendPrivate::STACKOFX509_to_QSslCertificates(STACK_OF(X509) *x509) + { + ensureInitialized(); +@@ -1696,12 +1397,12 @@ QList QSslSocketBackendPrivate::verify(const QList & + QMutexLocker sslErrorListMutexLocker(&_q_sslErrorList()->mutex); + + // Register a custom callback to get all verification errors. +- X509_STORE_set_verify_cb_func(certStore, q_X509Callback); ++ q_X509_STORE_set_verify_cb(certStore, q_X509Callback); + + // Build the chain of intermediate certificates + STACK_OF(X509) *intermediates = 0; + if (certificateChain.length() > 1) { +- intermediates = (STACK_OF(X509) *) q_sk_new_null(); ++ intermediates = (STACK_OF(X509) *) q_OPENSSL_sk_new_null(); + + if (!intermediates) { + q_X509_STORE_free(certStore); +@@ -1715,11 +1416,8 @@ QList QSslSocketBackendPrivate::verify(const QList & + first = false; + continue; + } +-#if OPENSSL_VERSION_NUMBER >= 0x10000000L +- q_sk_push( (_STACK *)intermediates, reinterpret_cast(cert.handle())); +-#else +- q_sk_push( (STACK *)intermediates, reinterpret_cast(cert.handle())); +-#endif ++ ++ q_OPENSSL_sk_push((OPENSSL_STACK *)intermediates, reinterpret_cast(cert.handle())); + } + } + +@@ -1743,11 +1441,7 @@ QList QSslSocketBackendPrivate::verify(const QList & + (void) q_X509_verify_cert(storeContext); + + q_X509_STORE_CTX_free(storeContext); +-#if OPENSSL_VERSION_NUMBER >= 0x10000000L +- q_sk_free( (_STACK *) intermediates); +-#else +- q_sk_free( (STACK *) intermediates); +-#endif ++ q_OPENSSL_sk_free((OPENSSL_STACK *)intermediates); + + // Now process the errors + const auto errorList = std::move(_q_sslErrorList()->errors); +@@ -1821,7 +1515,8 @@ bool QSslSocketBackendPrivate::importPkcs12(QIODevice *device, + // Convert to Qt types + if (!key->d->fromEVP_PKEY(pkey)) { + qCWarning(lcSsl, "Unable to convert private key"); +- q_sk_pop_free(reinterpret_cast(ca), reinterpret_cast(q_sk_free)); ++ q_OPENSSL_sk_pop_free(reinterpret_cast(ca), ++ reinterpret_cast(q_OPENSSL_sk_free)); + q_X509_free(x509); + q_EVP_PKEY_free(pkey); + q_PKCS12_free(p12); +@@ -1836,7 +1531,11 @@ bool QSslSocketBackendPrivate::importPkcs12(QIODevice *device, + *caCertificates = QSslSocketBackendPrivate::STACKOFX509_to_QSslCertificates(ca); + + // Clean up +- q_sk_pop_free(reinterpret_cast(ca), reinterpret_cast(q_sk_free)); ++ // TODO: verify ASAP, in the past we had sk_pop_free with q_OPENSSL_sk_free ++ // which seems to be blatantly wrong and even crashes with 1.1. ++ q_OPENSSL_sk_pop_free(reinterpret_cast(ca), ++ reinterpret_cast(q_X509_free)); ++ + q_X509_free(x509); + q_EVP_PKEY_free(pkey); + q_PKCS12_free(p12); +diff --git a/src/network/ssl/qsslsocket_openssl11.cpp b/src/network/ssl/qsslsocket_openssl11.cpp +new file mode 100644 +index 0000000000..b6d18943a5 +--- /dev/null ++++ b/src/network/ssl/qsslsocket_openssl11.cpp +@@ -0,0 +1,285 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2017 The Qt Company Ltd. ++** Copyright (C) 2014 Governikus GmbH & Co. KG ++** Copyright (C) 2016 Richard J. Moore ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the QtNetwork module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++/**************************************************************************** ++** ++** In addition, as a special exception, the copyright holders listed above give ++** permission to link the code of its release of Qt with the OpenSSL project's ++** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the ++** same license as the original version), and distribute the linked executables. ++** ++** You must comply with the GNU General Public License version 2 in all ++** respects for all of the code used other than the "OpenSSL" code. If you ++** modify this file, you may extend this exception to your version of the file, ++** but you are not obligated to do so. If you do not wish to do so, delete ++** this exception statement from your version of this file. ++** ++****************************************************************************/ ++ ++//#define QT_DECRYPT_SSL_TRAFFIC ++ ++#include "qssl_p.h" ++#include "qsslsocket_openssl_p.h" ++#include "qsslsocket_openssl_symbols_p.h" ++#include "qsslsocket.h" ++#include "qsslkey.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++Q_GLOBAL_STATIC_WITH_ARGS(QMutex, qt_opensslInitMutex, (QMutex::Recursive)) ++ ++/*! ++ \internal ++*/ ++void QSslSocketPrivate::deinitialize() ++{ ++ // This function exists only for compatibility with the pre-11 code, ++ // where deinitialize() actually does some cleanup. To be discarded ++ // once we retire < 1.1. ++} ++ ++bool QSslSocketPrivate::ensureLibraryLoaded() ++{ ++ if (!q_resolveOpenSslSymbols()) ++ return false; ++ ++ const QMutexLocker locker(qt_opensslInitMutex); ++ ++ if (!s_libraryLoaded) { ++ s_libraryLoaded = true; ++ ++ // Initialize OpenSSL. ++ if (q_OPENSSL_init_ssl(0, nullptr) != 1) ++ return false; ++ q_SSL_load_error_strings(); ++ q_OpenSSL_add_all_algorithms(); ++ ++ QSslSocketBackendPrivate::s_indexForSSLExtraData ++ = q_CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, 0L, nullptr, nullptr, ++ nullptr, nullptr); ++ ++ // Initialize OpenSSL's random seed. ++ if (!q_RAND_status()) { ++ qWarning("Random number generator not seeded, disabling SSL support"); ++ return false; ++ } ++ } ++ return true; ++} ++ ++void QSslSocketPrivate::ensureCiphersAndCertsLoaded() ++{ ++ const QMutexLocker locker(qt_opensslInitMutex); ++ ++ if (s_loadedCiphersAndCerts) ++ return; ++ s_loadedCiphersAndCerts = true; ++ ++ resetDefaultCiphers(); ++ resetDefaultEllipticCurves(); ++ ++#if QT_CONFIG(library) ++ //load symbols needed to receive certificates from system store ++#if defined(Q_OS_WIN) ++ HINSTANCE hLib = LoadLibraryW(L"Crypt32"); ++ if (hLib) { ++ ptrCertOpenSystemStoreW = (PtrCertOpenSystemStoreW)GetProcAddress(hLib, "CertOpenSystemStoreW"); ++ ptrCertFindCertificateInStore = (PtrCertFindCertificateInStore)GetProcAddress(hLib, "CertFindCertificateInStore"); ++ ptrCertCloseStore = (PtrCertCloseStore)GetProcAddress(hLib, "CertCloseStore"); ++ if (!ptrCertOpenSystemStoreW || !ptrCertFindCertificateInStore || !ptrCertCloseStore) ++ qCWarning(lcSsl, "could not resolve symbols in crypt32 library"); // should never happen ++ } else { ++ qCWarning(lcSsl, "could not load crypt32 library"); // should never happen ++ } ++#elif defined(Q_OS_QNX) ++ s_loadRootCertsOnDemand = true; ++#elif defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) ++ // check whether we can enable on-demand root-cert loading (i.e. check whether the sym links are there) ++ QList dirs = unixRootCertDirectories(); ++ QStringList symLinkFilter; ++ symLinkFilter << QLatin1String("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]"); ++ for (int a = 0; a < dirs.count(); ++a) { ++ QDirIterator iterator(QLatin1String(dirs.at(a)), symLinkFilter, QDir::Files); ++ if (iterator.hasNext()) { ++ s_loadRootCertsOnDemand = true; ++ break; ++ } ++ } ++#endif ++#endif // QT_CONFIG(library) ++ // if on-demand loading was not enabled, load the certs now ++ if (!s_loadRootCertsOnDemand) ++ setDefaultCaCertificates(systemCaCertificates()); ++#ifdef Q_OS_WIN ++ //Enabled for fetching additional root certs from windows update on windows 6+ ++ //This flag is set false by setDefaultCaCertificates() indicating the app uses ++ //its own cert bundle rather than the system one. ++ //Same logic that disables the unix on demand cert loading. ++ //Unlike unix, we do preload the certificates from the cert store. ++ if ((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) >= QSysInfo::WV_6_0) ++ s_loadRootCertsOnDemand = true; ++#endif ++} ++ ++long QSslSocketPrivate::sslLibraryVersionNumber() ++{ ++ if (!supportsSsl()) ++ return 0; ++ ++ return q_OpenSSL_version_num(); ++} ++ ++QString QSslSocketPrivate::sslLibraryVersionString() ++{ ++ if (!supportsSsl()) ++ return QString(); ++ ++ const char *versionString = q_OpenSSL_version(OPENSSL_VERSION); ++ if (!versionString) ++ return QString(); ++ ++ return QString::fromLatin1(versionString); ++} ++ ++void QSslSocketBackendPrivate::continueHandshake() ++{ ++ Q_Q(QSslSocket); ++ // if we have a max read buffer size, reset the plain socket's to match ++ if (readBufferMaxSize) ++ plainSocket->setReadBufferSize(readBufferMaxSize); ++ ++ if (q_SSL_session_reused(ssl)) ++ configuration.peerSessionShared = true; ++ ++#ifdef QT_DECRYPT_SSL_TRAFFIC ++ if (q_SSL_get_session(ssl)) { ++ size_t master_key_len = q_SSL_SESSION_get_master_key(q_SSL_get_session(ssl), 0, 0); ++ size_t client_random_len = q_SSL_get_client_random(ssl, 0, 0); ++ QByteArray masterKey(int(master_key_len), 0); // Will not overflow ++ QByteArray clientRandom(int(client_random_len), 0); // Will not overflow ++ ++ q_SSL_SESSION_get_master_key(q_SSL_get_session(ssl), ++ reinterpret_cast(masterKey.data()), ++ masterKey.size()); ++ q_SSL_get_client_random(ssl, reinterpret_cast(clientRandom.data()), ++ clientRandom.size()); ++ ++ QByteArray debugLineClientRandom("CLIENT_RANDOM "); ++ debugLineClientRandom.append(clientRandom.toHex().toUpper()); ++ debugLineClientRandom.append(" "); ++ debugLineClientRandom.append(masterKey.toHex().toUpper()); ++ debugLineClientRandom.append("\n"); ++ ++ QString sslKeyFile = QDir::tempPath() + QLatin1String("/qt-ssl-keys"); ++ QFile file(sslKeyFile); ++ if (!file.open(QIODevice::Append)) ++ qCWarning(lcSsl) << "could not open file" << sslKeyFile << "for appending"; ++ if (!file.write(debugLineClientRandom)) ++ qCWarning(lcSsl) << "could not write to file" << sslKeyFile; ++ file.close(); ++ } else { ++ qCWarning(lcSsl, "could not decrypt SSL traffic"); ++ } ++#endif ++ ++ // Cache this SSL session inside the QSslContext ++ if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionSharing)) { ++ if (!sslContextPointer->cacheSession(ssl)) { ++ sslContextPointer.clear(); // we could not cache the session ++ } else { ++ // Cache the session for permanent usage as well ++ if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionPersistence)) { ++ if (!sslContextPointer->sessionASN1().isEmpty()) ++ configuration.sslSession = sslContextPointer->sessionASN1(); ++ configuration.sslSessionTicketLifeTimeHint = sslContextPointer->sessionTicketLifeTimeHint(); ++ } ++ } ++ } ++ ++#if !defined(OPENSSL_NO_NEXTPROTONEG) ++ ++ configuration.nextProtocolNegotiationStatus = sslContextPointer->npnContext().status; ++ if (sslContextPointer->npnContext().status == QSslConfiguration::NextProtocolNegotiationUnsupported) { ++ // we could not agree -> be conservative and use HTTP/1.1 ++ configuration.nextNegotiatedProtocol = QByteArrayLiteral("http/1.1"); ++ } else { ++ const unsigned char *proto = 0; ++ unsigned int proto_len = 0; ++ ++ q_SSL_get0_alpn_selected(ssl, &proto, &proto_len); ++ if (proto_len && mode == QSslSocket::SslClientMode) { ++ // Client does not have a callback that sets it ... ++ configuration.nextProtocolNegotiationStatus = QSslConfiguration::NextProtocolNegotiationNegotiated; ++ } ++ ++ if (!proto_len) { // Test if NPN was more lucky ... ++ q_SSL_get0_next_proto_negotiated(ssl, &proto, &proto_len); ++ } ++ ++ if (proto_len) ++ configuration.nextNegotiatedProtocol = QByteArray(reinterpret_cast(proto), proto_len); ++ else ++ configuration.nextNegotiatedProtocol.clear(); ++ } ++#endif // !defined(OPENSSL_NO_NEXTPROTONEG) ++ ++ if (mode == QSslSocket::SslClientMode) { ++ EVP_PKEY *key; ++ if (q_SSL_get_server_tmp_key(ssl, &key)) ++ configuration.ephemeralServerKey = QSslKey(key, QSsl::PublicKey); ++ } ++ ++ connectionEncrypted = true; ++ emit q->encrypted(); ++ if (autoStartHandshake && pendingClose) { ++ pendingClose = false; ++ q->disconnectFromHost(); ++ } ++} ++ ++QT_END_NAMESPACE +diff --git a/src/network/ssl/qsslsocket_openssl11_symbols_p.h b/src/network/ssl/qsslsocket_openssl11_symbols_p.h +new file mode 100644 +index 0000000000..2980b3d23e +--- /dev/null ++++ b/src/network/ssl/qsslsocket_openssl11_symbols_p.h +@@ -0,0 +1,132 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2017 The Qt Company Ltd. ++** Copyright (C) 2014 BlackBerry Limited. All rights reserved. ++** Copyright (C) 2016 Richard J. Moore ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the QtNetwork module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++/**************************************************************************** ++** ++** In addition, as a special exception, the copyright holders listed above give ++** permission to link the code of its release of Qt with the OpenSSL project's ++** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the ++** same license as the original version), and distribute the linked executables. ++** ++** You must comply with the GNU General Public License version 2 in all ++** respects for all of the code used other than the "OpenSSL" code. If you ++** modify this file, you may extend this exception to your version of the file, ++** but you are not obligated to do so. If you do not wish to do so, delete ++** this exception statement from your version of this file. ++** ++****************************************************************************/ ++ ++#ifndef QSSLSOCKET_OPENSSL11_SYMBOLS_P_H ++#define QSSLSOCKET_OPENSSL11_SYMBOLS_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists purely as an ++// implementation detail. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++// Note: this file does not have QT_BEGIN_NAMESPACE/QT_END_NAMESPACE, it's done ++// in qsslsocket_openssl_symbols_p.h. ++ ++#ifndef QSSLSOCKET_OPENSSL_SYMBOLS_P_H ++#error "You are not supposed to use this header file, include qsslsocket_openssl_symbols_p.h instead" ++#endif ++ ++const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x); ++ ++Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a); ++Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem(); ++ ++int q_DSA_bits(DSA *a); ++int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); ++int q_EVP_PKEY_base_id(EVP_PKEY *a); ++int q_RSA_bits(RSA *a); ++int q_OPENSSL_sk_num(OPENSSL_STACK *a); ++void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *)); ++OPENSSL_STACK *q_OPENSSL_sk_new_null(); ++void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data); ++void q_OPENSSL_sk_free(OPENSSL_STACK *a); ++void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b); ++int q_SSL_session_reused(SSL *a); ++unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op); ++int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); ++size_t q_SSL_get_client_random(SSL *a, unsigned char *out, size_t outlen); ++size_t q_SSL_SESSION_get_master_key(const SSL_SESSION *session, unsigned char *out, size_t outlen); ++int q_CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); ++const SSL_METHOD *q_TLS_method(); ++const SSL_METHOD *q_TLS_client_method(); ++const SSL_METHOD *q_TLS_server_method(); ++ASN1_TIME *q_X509_getm_notBefore(X509 *a); ++ASN1_TIME *q_X509_getm_notAfter(X509 *a); ++ ++long q_X509_get_version(X509 *a); ++EVP_PKEY *q_X509_get_pubkey(X509 *a); ++void q_X509_STORE_set_verify_cb(X509_STORE *ctx, X509_STORE_CTX_verify_cb verify_cb); ++STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx); ++void q_DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); ++int q_DH_bits(DH *dh); ++ ++# define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ ++ | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) ++ ++#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st) ++#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i) ++ ++#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ ++ | OPENSSL_INIT_ADD_ALL_DIGESTS \ ++ | OPENSSL_INIT_LOAD_CONFIG, NULL) ++#define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ ++ | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) ++ ++int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); ++void q_CRYPTO_free(void *str, const char *file, int line); ++ ++long q_OpenSSL_version_num(); ++const char *q_OpenSSL_version(int type); ++ ++unsigned long q_SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *session); ++ ++#endif +diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h +index b2adb3e547..7f9e884045 100644 +--- a/src/network/ssl/qsslsocket_openssl_p.h ++++ b/src/network/ssl/qsslsocket_openssl_p.h +@@ -1,6 +1,6 @@ + /**************************************************************************** + ** +-** Copyright (C) 2016 The Qt Company Ltd. ++** Copyright (C) 2017 The Qt Company Ltd. + ** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtNetwork module of the Qt Toolkit. +@@ -98,8 +98,8 @@ + #include + #include + +-#if OPENSSL_VERSION_NUMBER >= 0x10000000L +-typedef _STACK STACK; ++#if QT_CONFIG(opensslv11) ++#include + #endif + + QT_BEGIN_NAMESPACE +@@ -151,7 +151,7 @@ public: + #endif + + Q_AUTOTEST_EXPORT static long setupOpenSslOptions(QSsl::SslProtocol protocol, QSsl::SslOptions sslOptions); +- static QSslCipher QSslCipher_from_SSL_CIPHER(SSL_CIPHER *cipher); ++ static QSslCipher QSslCipher_from_SSL_CIPHER(const SSL_CIPHER *cipher); + static QList STACKOFX509_to_QSslCertificates(STACK_OF(X509) *x509); + static QList verify(const QList &certificateChain, const QString &hostName); + static QString getErrorsFromOpenSsl(); +diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp +index c344a94427..0ef8bf6b5e 100644 +--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp ++++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp +@@ -1,7 +1,8 @@ + /**************************************************************************** + ** +-** Copyright (C) 2016 The Qt Company Ltd. ++** Copyright (C) 2017 The Qt Company Ltd. + ** Copyright (C) 2014 BlackBerry Limited. All rights reserved. ++** Copyright (C) 2016 Richard J. Moore + ** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtNetwork module of the Qt Toolkit. +@@ -136,49 +137,195 @@ void qsslSocketCannotResolveSymbolWarning(const char *functionName) + + #endif // QT_LINKED_OPENSSL + ++#if QT_CONFIG(opensslv11) ++ ++// Below are the functions first introduced in version 1.1: ++ ++DEFINEFUNC(const unsigned char *, ASN1_STRING_get0_data, const ASN1_STRING *a, a, return 0, return) ++DEFINEFUNC2(int, OPENSSL_init_ssl, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return 0, return) ++DEFINEFUNC2(int, OPENSSL_init_crypto, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return 0, return) ++DEFINEFUNC(BIO *, BIO_new, const BIO_METHOD *a, a, return 0, return) ++DEFINEFUNC(const BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return) ++DEFINEFUNC2(int, BN_is_word, BIGNUM *a, a, BN_ULONG w, w, return 0, return) ++DEFINEFUNC(int, EVP_CIPHER_CTX_reset, EVP_CIPHER_CTX *c, c, return 0, return) ++DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return) ++DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return) ++DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return) ++DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return) ++DEFINEFUNC2(void, OPENSSL_sk_pop_free, OPENSSL_STACK *a, a, void (*b)(void*), b, return, DUMMYARG) ++DEFINEFUNC(OPENSSL_STACK *, OPENSSL_sk_new_null, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC2(void, OPENSSL_sk_push, OPENSSL_STACK *a, a, void *b, b, return, DUMMYARG) ++DEFINEFUNC(void, OPENSSL_sk_free, OPENSSL_STACK *a, a, return, DUMMYARG) ++DEFINEFUNC2(void *, OPENSSL_sk_value, OPENSSL_STACK *a, a, int b, b, return 0, return) ++DEFINEFUNC(int, SSL_session_reused, SSL *a, a, return 0, return) ++DEFINEFUNC2(unsigned long, SSL_CTX_set_options, SSL_CTX *ctx, ctx, unsigned long op, op, return 0, return) ++DEFINEFUNC3(size_t, SSL_get_client_random, SSL *a, a, unsigned char *out, out, size_t outlen, outlen, return 0, return) ++DEFINEFUNC3(size_t, SSL_SESSION_get_master_key, const SSL_SESSION *ses, ses, unsigned char *out, out, size_t outlen, outlen, return 0, return) ++DEFINEFUNC6(int, CRYPTO_get_ex_new_index, int class_index, class_index, long argl, argl, void *argp, argp, CRYPTO_EX_new *new_func, new_func, CRYPTO_EX_dup *dup_func, dup_func, CRYPTO_EX_free *free_func, free_func, return -1, return) ++ ++DEFINEFUNC(const SSL_METHOD *, TLS_method, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(const SSL_METHOD *, TLS_client_method, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(const SSL_METHOD *, TLS_server_method, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(ASN1_TIME *, X509_getm_notBefore, X509 *a, a, return 0, return) ++DEFINEFUNC(ASN1_TIME *, X509_getm_notAfter, X509 *a, a, return 0, return) ++DEFINEFUNC(long, X509_get_version, X509 *a, a, return -1, return) ++DEFINEFUNC(EVP_PKEY *, X509_get_pubkey, X509 *a, a, return 0, return) ++DEFINEFUNC2(void, X509_STORE_set_verify_cb, X509_STORE *a, a, X509_STORE_CTX_verify_cb verify_cb, verify_cb, return, DUMMYARG) ++DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get0_chain, X509_STORE_CTX *a, a, return 0, return) ++DEFINEFUNC3(void, CRYPTO_free, void *str, str, const char *file, file, int line, line, return, DUMMYARG) ++DEFINEFUNC(long, OpenSSL_version_num, void, DUMMYARG, return 0, return) ++DEFINEFUNC(const char *, OpenSSL_version, int a, a, return 0, return) ++DEFINEFUNC(unsigned long, SSL_SESSION_get_ticket_lifetime_hint, const SSL_SESSION *session, session, return 0, return) ++DEFINEFUNC4(void, DH_get0_pqg, const DH *dh, dh, const BIGNUM **p, p, const BIGNUM **q, q, const BIGNUM **g, g, return, DUMMYARG) ++DEFINEFUNC(int, DH_bits, DH *dh, dh, return 0, return) ++ ++#else // QT_CONFIG(opensslv11) ++ ++// Functions below are either deprecated or removed in OpenSSL >= 1.1: ++ ++DEFINEFUNC(unsigned char *, ASN1_STRING_data, ASN1_STRING *a, a, return 0, return) ++ + #ifdef SSLEAY_MACROS + DEFINEFUNC3(void *, ASN1_dup, i2d_of_void *a, a, d2i_of_void *b, b, char *c, c, return 0, return) + #endif ++DEFINEFUNC2(BIO *, BIO_new_file, const char *filename, filename, const char *mode, mode, return 0, return) ++DEFINEFUNC(void, ERR_clear_error, DUMMYARG, DUMMYARG, return, DUMMYARG) ++DEFINEFUNC(BIO *, BIO_new, BIO_METHOD *a, a, return 0, return) ++DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return) ++DEFINEFUNC(int, CRYPTO_num_locks, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG) ++DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG) ++DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG) ++DEFINEFUNC(unsigned long, ERR_peek_last_error, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(void, ERR_free_strings, void, DUMMYARG, return, DUMMYARG) ++DEFINEFUNC(void, EVP_CIPHER_CTX_cleanup, EVP_CIPHER_CTX *a, a, return, DUMMYARG) ++DEFINEFUNC(void, EVP_CIPHER_CTX_init, EVP_CIPHER_CTX *a, a, return, DUMMYARG) ++ ++#ifdef SSLEAY_MACROS ++DEFINEFUNC6(void *, PEM_ASN1_read_bio, d2i_of_void *a, a, const char *b, b, BIO *c, c, void **d, d, pem_password_cb *e, e, void *f, f, return 0, return) ++DEFINEFUNC6(void *, PEM_ASN1_write_bio, d2i_of_void *a, a, const char *b, b, BIO *c, c, void **d, d, pem_password_cb *e, e, void *f, f, return 0, return) ++#endif // SSLEAY_MACROS ++ ++DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return) ++DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG) ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10000000L ++DEFINEFUNC(_STACK *, sk_new_null, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC2(void, sk_push, _STACK *a, a, void *b, b, return, DUMMYARG) ++DEFINEFUNC(void, sk_free, _STACK *a, a, return, DUMMYARG) ++DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return 0, return) ++#else ++DEFINEFUNC(STACK *, sk_new_null, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC2(void, sk_push, STACK *a, a, char *b, b, return, DUMMYARG) ++DEFINEFUNC(void, sk_free, STACK *a, a, return, DUMMYARG) ++DEFINEFUNC2(char *, sk_value, STACK *a, a, int b, b, return 0, return) ++#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L ++ ++DEFINEFUNC(int, SSL_library_init, void, DUMMYARG, return -1, return) ++DEFINEFUNC(void, SSL_load_error_strings, void, DUMMYARG, return, DUMMYARG) ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L ++DEFINEFUNC5(int, SSL_get_ex_new_index, long argl, argl, void *argp, argp, CRYPTO_EX_new *new_func, new_func, CRYPTO_EX_dup *dup_func, dup_func, CRYPTO_EX_free *free_func, free_func, return -1, return) ++#endif // OPENSSL_VERSION_NUMBER >= 0x10001000L ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10000000L ++#ifndef OPENSSL_NO_SSL2 ++DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++#ifndef OPENSSL_NO_SSL3_METHOD ++DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L ++DEFINEFUNC(const SSL_METHOD *, TLSv1_1_client_method, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(const SSL_METHOD *, TLSv1_2_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++#ifndef OPENSSL_NO_SSL2 ++DEFINEFUNC(const SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++#ifndef OPENSSL_NO_SSL3_METHOD ++DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L ++DEFINEFUNC(const SSL_METHOD *, TLSv1_1_server_method, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(const SSL_METHOD *, TLSv1_2_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++#else ++#ifndef OPENSSL_NO_SSL2 ++DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++#ifndef OPENSSL_NO_SSL3_METHOD ++DEFINEFUNC(SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++DEFINEFUNC(SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) ++#ifndef OPENSSL_NO_SSL2 ++DEFINEFUNC(SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++#ifndef OPENSSL_NO_SSL3_METHOD ++DEFINEFUNC(SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++DEFINEFUNC(SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) ++#endif ++ ++DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get_chain, X509_STORE_CTX *a, a, return 0, return) ++ ++#ifdef SSLEAY_MACROS ++DEFINEFUNC2(int, i2d_DSAPrivateKey, const DSA *a, a, unsigned char **b, b, return -1, return) ++DEFINEFUNC2(int, i2d_RSAPrivateKey, const RSA *a, a, unsigned char **b, b, return -1, return) ++#ifndef OPENSSL_NO_EC ++DEFINEFUNC2(int, i2d_ECPrivateKey, const EC_KEY *a, a, unsigned char **b, b, return -1, return) ++#endif ++DEFINEFUNC3(RSA *, d2i_RSAPrivateKey, RSA **a, a, unsigned char **b, b, long c, c, return 0, return) ++DEFINEFUNC3(DSA *, d2i_DSAPrivateKey, DSA **a, a, unsigned char **b, b, long c, c, return 0, return) ++#ifndef OPENSSL_NO_EC ++DEFINEFUNC3(EC_KEY *, d2i_ECPrivateKey, EC_KEY **a, a, unsigned char **b, b, long c, c, return 0, return) ++#endif ++#endif ++DEFINEFUNC(char *, CONF_get1_default_config_file, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(void, OPENSSL_add_all_algorithms_noconf, void, DUMMYARG, return, DUMMYARG) ++DEFINEFUNC(void, OPENSSL_add_all_algorithms_conf, void, DUMMYARG, return, DUMMYARG) ++DEFINEFUNC(long, SSLeay, void, DUMMYARG, return 0, return) ++DEFINEFUNC(const char *, SSLeay_version, int a, a, return 0, return) ++ ++#endif // QT_CONFIG(opensslv11) ++ + DEFINEFUNC(long, ASN1_INTEGER_get, ASN1_INTEGER *a, a, return 0, return) +-DEFINEFUNC(unsigned char *, ASN1_STRING_data, ASN1_STRING *a, a, return 0, return) + DEFINEFUNC(int, ASN1_STRING_length, ASN1_STRING *a, a, return 0, return) +-DEFINEFUNC2(int, ASN1_STRING_to_UTF8, unsigned char **a, a, ASN1_STRING *b, b, return 0, return); ++DEFINEFUNC2(int, ASN1_STRING_to_UTF8, unsigned char **a, a, ASN1_STRING *b, b, return 0, return) + DEFINEFUNC4(long, BIO_ctrl, BIO *a, a, int b, b, long c, c, void *d, d, return -1, return) + DEFINEFUNC(int, BIO_free, BIO *a, a, return 0, return) +-DEFINEFUNC(BIO *, BIO_new, BIO_METHOD *a, a, return 0, return) + DEFINEFUNC2(BIO *, BIO_new_mem_buf, void *a, a, int b, b, return 0, return) + DEFINEFUNC3(int, BIO_read, BIO *a, a, void *b, b, int c, c, return -1, return) +-DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return) ++ + DEFINEFUNC3(int, BIO_write, BIO *a, a, const void *b, b, int c, c, return -1, return) + DEFINEFUNC(int, BN_num_bits, const BIGNUM *a, a, return 0, return) +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L +-DEFINEFUNC2(int, BN_is_word, BIGNUM *a, a, BN_ULONG w, w, return 0, return) +-#endif + DEFINEFUNC2(BN_ULONG, BN_mod_word, const BIGNUM *a, a, BN_ULONG w, w, return static_cast(-1), return) + #ifndef OPENSSL_NO_EC + DEFINEFUNC(const EC_GROUP*, EC_KEY_get0_group, const EC_KEY* k, k, return 0, return) + DEFINEFUNC(int, EC_GROUP_get_degree, const EC_GROUP* g, g, return 0, return) + #endif +-DEFINEFUNC(int, CRYPTO_num_locks, DUMMYARG, DUMMYARG, return 0, return) +-DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG) +-DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG) +-DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG) + DEFINEFUNC(DSA *, DSA_new, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(void, DSA_free, DSA *a, a, return, DUMMYARG) + DEFINEFUNC3(X509 *, d2i_X509, X509 **a, a, const unsigned char **b, b, long c, c, return 0, return) + DEFINEFUNC2(char *, ERR_error_string, unsigned long a, a, char *b, b, return 0, return) + DEFINEFUNC(unsigned long, ERR_get_error, DUMMYARG, DUMMYARG, return 0, return) +-DEFINEFUNC(void, ERR_free_strings, void, DUMMYARG, return, DUMMYARG) +-DEFINEFUNC(void, EVP_CIPHER_CTX_cleanup, EVP_CIPHER_CTX *a, a, return, DUMMYARG) +-DEFINEFUNC(void, EVP_CIPHER_CTX_init, EVP_CIPHER_CTX *a, a, return, DUMMYARG) +-DEFINEFUNC4(int, EVP_CIPHER_CTX_ctrl, EVP_CIPHER_CTX *ctx, ctx, int type, type, int arg, arg, void *ptr, ptr, return 0, return); ++DEFINEFUNC(EVP_CIPHER_CTX *, EVP_CIPHER_CTX_new, void, DUMMYARG, return 0, return) ++DEFINEFUNC(void, EVP_CIPHER_CTX_free, EVP_CIPHER_CTX *a, a, return, DUMMYARG) ++DEFINEFUNC4(int, EVP_CIPHER_CTX_ctrl, EVP_CIPHER_CTX *ctx, ctx, int type, type, int arg, arg, void *ptr, ptr, return 0, return) + DEFINEFUNC2(int, EVP_CIPHER_CTX_set_key_length, EVP_CIPHER_CTX *ctx, ctx, int keylen, keylen, return 0, return) +-DEFINEFUNC5(int, EVP_CipherInit, EVP_CIPHER_CTX *ctx, ctx, const EVP_CIPHER *type, type, const unsigned char *key, key, const unsigned char *iv, iv, int enc, enc, return 0, return); +-DEFINEFUNC5(int, EVP_CipherUpdate, EVP_CIPHER_CTX *ctx, ctx, unsigned char *out, out, int *outl, outl, const unsigned char *in, in, int inl, inl, return 0, return); +-DEFINEFUNC3(int, EVP_CipherFinal, EVP_CIPHER_CTX *ctx, ctx, unsigned char *out, out, int *outl, outl, return 0, return); ++DEFINEFUNC5(int, EVP_CipherInit, EVP_CIPHER_CTX *ctx, ctx, const EVP_CIPHER *type, type, const unsigned char *key, key, const unsigned char *iv, iv, int enc, enc, return 0, return) ++DEFINEFUNC6(int, EVP_CipherInit_ex, EVP_CIPHER_CTX *ctx, ctx, const EVP_CIPHER *cipher, cipher, ENGINE *impl, impl, const unsigned char *key, key, const unsigned char *iv, iv, int enc, enc, return 0, return) ++DEFINEFUNC5(int, EVP_CipherUpdate, EVP_CIPHER_CTX *ctx, ctx, unsigned char *out, out, int *outl, outl, const unsigned char *in, in, int inl, inl, return 0, return) ++DEFINEFUNC3(int, EVP_CipherFinal, EVP_CIPHER_CTX *ctx, ctx, unsigned char *out, out, int *outl, outl, return 0, return) + DEFINEFUNC(const EVP_CIPHER *, EVP_des_cbc, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(const EVP_CIPHER *, EVP_des_ede3_cbc, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(const EVP_CIPHER *, EVP_rc2_cbc, DUMMYARG, DUMMYARG, return 0, return) ++DEFINEFUNC(const EVP_MD *, EVP_sha1, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC3(int, EVP_PKEY_assign, EVP_PKEY *a, a, int b, b, char *c, c, return -1, return) + DEFINEFUNC2(int, EVP_PKEY_set1_RSA, EVP_PKEY *a, a, RSA *b, b, return -1, return) + DEFINEFUNC2(int, EVP_PKEY_set1_DSA, EVP_PKEY *a, a, DSA *b, b, return -1, return) +@@ -202,10 +349,8 @@ DEFINEFUNC3(int, i2t_ASN1_OBJECT, char *a, a, int b, b, ASN1_OBJECT *c, c, retur + DEFINEFUNC4(int, OBJ_obj2txt, char *a, a, int b, b, ASN1_OBJECT *c, c, int d, d, return -1, return) + + DEFINEFUNC(int, OBJ_obj2nid, const ASN1_OBJECT *a, a, return NID_undef, return) +-#ifdef SSLEAY_MACROS +-DEFINEFUNC6(void *, PEM_ASN1_read_bio, d2i_of_void *a, a, const char *b, b, BIO *c, c, void **d, d, pem_password_cb *e, e, void *f, f, return 0, return) +-DEFINEFUNC6(void *, PEM_ASN1_write_bio, d2i_of_void *a, a, const char *b, b, BIO *c, c, void **d, d, pem_password_cb *e, e, void *f, f, return 0, return) +-#else ++ ++#ifndef SSLEAY_MACROS + DEFINEFUNC4(EVP_PKEY *, PEM_read_bio_PrivateKey, BIO *a, a, EVP_PKEY **b, b, pem_password_cb *c, c, void *d, d, return 0, return) + DEFINEFUNC4(DSA *, PEM_read_bio_DSAPrivateKey, BIO *a, a, DSA **b, b, pem_password_cb *c, c, void *d, d, return 0, return) + DEFINEFUNC4(RSA *, PEM_read_bio_RSAPrivateKey, BIO *a, a, RSA **b, b, pem_password_cb *c, c, void *d, d, return 0, return) +@@ -218,7 +363,7 @@ DEFINEFUNC7(int, PEM_write_bio_RSAPrivateKey, BIO *a, a, RSA *b, b, const EVP_CI + #ifndef OPENSSL_NO_EC + DEFINEFUNC7(int, PEM_write_bio_ECPrivateKey, BIO *a, a, EC_KEY *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return) + #endif +-#endif ++#endif // !SSLEAY_MACROS + DEFINEFUNC4(EVP_PKEY *, PEM_read_bio_PUBKEY, BIO *a, a, EVP_PKEY **b, b, pem_password_cb *c, c, void *d, d, return 0, return) + DEFINEFUNC4(DSA *, PEM_read_bio_DSA_PUBKEY, BIO *a, a, DSA **b, b, pem_password_cb *c, c, void *d, d, return 0, return) + DEFINEFUNC4(RSA *, PEM_read_bio_RSA_PUBKEY, BIO *a, a, RSA **b, b, pem_password_cb *c, c, void *d, d, return 0, return) +@@ -234,23 +379,10 @@ DEFINEFUNC2(void, RAND_seed, const void *a, a, int b, b, return, DUMMYARG) + DEFINEFUNC(int, RAND_status, void, DUMMYARG, return -1, return) + DEFINEFUNC(RSA *, RSA_new, DUMMYARG, DUMMYARG, return 0, return) + DEFINEFUNC(void, RSA_free, RSA *a, a, return, DUMMYARG) +-DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return) +-DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG) +-#if OPENSSL_VERSION_NUMBER >= 0x10000000L +-DEFINEFUNC(_STACK *, sk_new_null, DUMMYARG, DUMMYARG, return 0, return) +-DEFINEFUNC2(void, sk_push, _STACK *a, a, void *b, b, return, DUMMYARG) +-DEFINEFUNC(void, sk_free, _STACK *a, a, return, DUMMYARG) +-DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return 0, return) +-#else +-DEFINEFUNC(STACK *, sk_new_null, DUMMYARG, DUMMYARG, return 0, return) +-DEFINEFUNC2(void, sk_push, STACK *a, a, char *b, b, return, DUMMYARG) +-DEFINEFUNC(void, sk_free, STACK *a, a, return, DUMMYARG) +-DEFINEFUNC2(char *, sk_value, STACK *a, a, int b, b, return 0, return) +-#endif + DEFINEFUNC(int, SSL_accept, SSL *a, a, return -1, return) + DEFINEFUNC(int, SSL_clear, SSL *a, a, return -1, return) +-DEFINEFUNC3(char *, SSL_CIPHER_description, SSL_CIPHER *a, a, char *b, b, int c, c, return 0, return) +-DEFINEFUNC2(int, SSL_CIPHER_get_bits, SSL_CIPHER *a, a, int *b, b, return 0, return) ++DEFINEFUNC3(char *, SSL_CIPHER_description, const SSL_CIPHER *a, a, char *b, b, int c, c, return 0, return) ++DEFINEFUNC2(int, SSL_CIPHER_get_bits, const SSL_CIPHER *a, a, int *b, b, return 0, return) + DEFINEFUNC(int, SSL_connect, SSL *a, a, return -1, return) + DEFINEFUNC(int, SSL_CTX_check_private_key, const SSL_CTX *a, a, return -1, return) + DEFINEFUNC4(long, SSL_CTX_ctrl, SSL_CTX *a, a, int b, b, long c, c, void *d, d, return -1, return) +@@ -287,8 +419,6 @@ DEFINEFUNC(long, SSL_get_verify_result, const SSL *a, a, return -1, return) + #else + DEFINEFUNC(long, SSL_get_verify_result, SSL *a, a, return -1, return) + #endif +-DEFINEFUNC(int, SSL_library_init, void, DUMMYARG, return -1, return) +-DEFINEFUNC(void, SSL_load_error_strings, void, DUMMYARG, return, DUMMYARG) + DEFINEFUNC(SSL *, SSL_new, SSL_CTX *a, a, return 0, return) + DEFINEFUNC4(long, SSL_ctrl, SSL *a, a, int cmd, cmd, long larg, larg, void *parg, parg, return -1, return) + DEFINEFUNC3(int, SSL_read, SSL *a, a, void *b, b, int c, c, return -1, return) +@@ -301,7 +431,6 @@ DEFINEFUNC(void, SSL_SESSION_free, SSL_SESSION *ses, ses, return, DUMMYARG) + DEFINEFUNC(SSL_SESSION*, SSL_get1_session, SSL *ssl, ssl, return 0, return) + DEFINEFUNC(SSL_SESSION*, SSL_get_session, const SSL *ssl, ssl, return 0, return) + #if OPENSSL_VERSION_NUMBER >= 0x10001000L +-DEFINEFUNC5(int, SSL_get_ex_new_index, long argl, argl, void *argp, argp, CRYPTO_EX_new *new_func, new_func, CRYPTO_EX_dup *dup_func, dup_func, CRYPTO_EX_free *free_func, free_func, return -1, return) + DEFINEFUNC3(int, SSL_set_ex_data, SSL *ssl, ssl, int idx, idx, void *arg, arg, return 0, return) + DEFINEFUNC2(void *, SSL_get_ex_data, const SSL *ssl, ssl, int idx, idx, return NULL, return) + #endif +@@ -310,51 +439,9 @@ DEFINEFUNC2(void, SSL_set_psk_client_callback, SSL* ssl, ssl, q_psk_client_callb + DEFINEFUNC2(void, SSL_set_psk_server_callback, SSL* ssl, ssl, q_psk_server_callback_t callback, callback, return, DUMMYARG) + DEFINEFUNC2(int, SSL_CTX_use_psk_identity_hint, SSL_CTX* ctx, ctx, const char *hint, hint, return 0, return) + #endif +-#if OPENSSL_VERSION_NUMBER >= 0x10000000L +-#ifndef OPENSSL_NO_SSL2 +-DEFINEFUNC(const SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif +-#ifndef OPENSSL_NO_SSL3_METHOD +-DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif +-DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) +-DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) +-#if OPENSSL_VERSION_NUMBER >= 0x10001000L +-DEFINEFUNC(const SSL_METHOD *, TLSv1_1_client_method, DUMMYARG, DUMMYARG, return 0, return) +-DEFINEFUNC(const SSL_METHOD *, TLSv1_2_client_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif +-#ifndef OPENSSL_NO_SSL2 +-DEFINEFUNC(const SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif +-#ifndef OPENSSL_NO_SSL3_METHOD +-DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif +-DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) +-DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) +-#if OPENSSL_VERSION_NUMBER >= 0x10001000L +-DEFINEFUNC(const SSL_METHOD *, TLSv1_1_server_method, DUMMYARG, DUMMYARG, return 0, return) +-DEFINEFUNC(const SSL_METHOD *, TLSv1_2_server_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif +-#else +-#ifndef OPENSSL_NO_SSL2 +-DEFINEFUNC(SSL_METHOD *, SSLv2_client_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif +-#ifndef OPENSSL_NO_SSL3_METHOD +-DEFINEFUNC(SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif +-DEFINEFUNC(SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return 0, return) +-DEFINEFUNC(SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return) +-#ifndef OPENSSL_NO_SSL2 +-DEFINEFUNC(SSL_METHOD *, SSLv2_server_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif +-#ifndef OPENSSL_NO_SSL3_METHOD +-DEFINEFUNC(SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif +-DEFINEFUNC(SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return 0, return) +-DEFINEFUNC(SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return) +-#endif + DEFINEFUNC3(int, SSL_write, SSL *a, a, const void *b, b, int c, c, return -1, return) + DEFINEFUNC2(int, X509_cmp, X509 *a, a, X509 *b, b, return -1, return) ++DEFINEFUNC4(int, X509_digest, const X509 *x509, x509, const EVP_MD *type, type, unsigned char *md, md, unsigned int *len, len, return -1, return) + #ifndef SSLEAY_MACROS + DEFINEFUNC(X509 *, X509_dup, X509 *a, a, return 0, return) + #endif +@@ -378,6 +465,7 @@ DEFINEFUNC2(int, ASN1_STRING_print, BIO *a, a, ASN1_STRING *b, b, return 0, retu + DEFINEFUNC2(int, X509_check_issued, X509 *a, a, X509 *b, b, return -1, return) + DEFINEFUNC(X509_NAME *, X509_get_issuer_name, X509 *a, a, return 0, return) + DEFINEFUNC(X509_NAME *, X509_get_subject_name, X509 *a, a, return 0, return) ++DEFINEFUNC(ASN1_INTEGER *, X509_get_serialNumber, X509 *a, a, return 0, return) + DEFINEFUNC(int, X509_verify_cert, X509_STORE_CTX *a, a, return -1, return) + DEFINEFUNC(int, X509_NAME_entry_count, X509_NAME *a, a, return 0, return) + DEFINEFUNC2(X509_NAME_ENTRY *, X509_NAME_get_entry, X509_NAME *a, a, int b, b, return 0, return) +@@ -393,25 +481,8 @@ DEFINEFUNC2(int, X509_STORE_CTX_set_purpose, X509_STORE_CTX *a, a, int b, b, ret + DEFINEFUNC(int, X509_STORE_CTX_get_error, X509_STORE_CTX *a, a, return -1, return) + DEFINEFUNC(int, X509_STORE_CTX_get_error_depth, X509_STORE_CTX *a, a, return -1, return) + DEFINEFUNC(X509 *, X509_STORE_CTX_get_current_cert, X509_STORE_CTX *a, a, return 0, return) +-DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get_chain, X509_STORE_CTX *a, a, return 0, return) + DEFINEFUNC(X509_STORE_CTX *, X509_STORE_CTX_new, DUMMYARG, DUMMYARG, return 0, return) +-#ifdef SSLEAY_MACROS +-DEFINEFUNC2(int, i2d_DSAPrivateKey, const DSA *a, a, unsigned char **b, b, return -1, return) +-DEFINEFUNC2(int, i2d_RSAPrivateKey, const RSA *a, a, unsigned char **b, b, return -1, return) +-#ifndef OPENSSL_NO_EC +-DEFINEFUNC2(int, i2d_ECPrivateKey, const EC_KEY *a, a, unsigned char **b, b, return -1, return) +-#endif +-DEFINEFUNC3(RSA *, d2i_RSAPrivateKey, RSA **a, a, unsigned char **b, b, long c, c, return 0, return) +-DEFINEFUNC3(DSA *, d2i_DSAPrivateKey, DSA **a, a, unsigned char **b, b, long c, c, return 0, return) +-#ifndef OPENSSL_NO_EC +-DEFINEFUNC3(EC_KEY *, d2i_ECPrivateKey, EC_KEY **a, a, unsigned char **b, b, long c, c, return 0, return) +-#endif +-#endif +-DEFINEFUNC(void, OPENSSL_add_all_algorithms_noconf, void, DUMMYARG, return, DUMMYARG) +-DEFINEFUNC(void, OPENSSL_add_all_algorithms_conf, void, DUMMYARG, return, DUMMYARG) + DEFINEFUNC3(int, SSL_CTX_load_verify_locations, SSL_CTX *ctx, ctx, const char *CAfile, CAfile, const char *CApath, CApath, return 0, return) +-DEFINEFUNC(long, SSLeay, void, DUMMYARG, return 0, return) +-DEFINEFUNC(const char *, SSLeay_version, int a, a, return 0, return) + DEFINEFUNC2(int, i2d_SSL_SESSION, SSL_SESSION *in, in, unsigned char **pp, pp, return 0, return) + DEFINEFUNC3(SSL_SESSION *, d2i_SSL_SESSION, SSL_SESSION **a, a, const unsigned char **pp, pp, long length, length, return 0, return) + #if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG) +@@ -694,8 +765,8 @@ static QPair loadOpenSsl() + #ifndef Q_OS_DARWIN + // second attempt: find the development files libssl.so and libcrypto.so + // +- // disabled on OS X/iOS: +- // OS X's /usr/lib/libssl.dylib, /usr/lib/libcrypto.dylib will be picked up in the third ++ // disabled on macOS/iOS: ++ // macOS's /usr/lib/libssl.dylib, /usr/lib/libcrypto.dylib will be picked up in the third + // attempt, _after_ /Contents/Frameworks has been searched. + // iOS does not ship a system libssl.dylib, libcrypto.dylib in the first place. + libssl->setFileNameAndVersion(QLatin1String("ssl"), -1); +@@ -754,7 +825,11 @@ bool q_resolveOpenSslSymbols() + static bool symbolsResolved = false; + static bool triedToResolveSymbols = false; + #ifndef QT_NO_THREAD ++#if QT_CONFIG(opensslv11) ++ QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&q_OPENSSL_init_ssl)); ++#else + QMutexLocker locker(QMutexPool::globalInstanceGet((void *)&q_SSL_library_init)); ++#endif + #endif + if (symbolsResolved) + return true; +@@ -771,11 +846,145 @@ bool q_resolveOpenSslSymbols() + // failed to load them + return false; + ++#if QT_CONFIG(opensslv11) ++ ++ RESOLVEFUNC(OPENSSL_init_ssl) ++ RESOLVEFUNC(OPENSSL_init_crypto) ++ RESOLVEFUNC(ASN1_STRING_get0_data) ++ RESOLVEFUNC(EVP_CIPHER_CTX_reset) ++ RESOLVEFUNC(EVP_PKEY_base_id) ++ RESOLVEFUNC(RSA_bits) ++ RESOLVEFUNC(OPENSSL_sk_new_null) ++ RESOLVEFUNC(OPENSSL_sk_push) ++ RESOLVEFUNC(OPENSSL_sk_free) ++ RESOLVEFUNC(OPENSSL_sk_num) ++ RESOLVEFUNC(OPENSSL_sk_pop_free) ++ RESOLVEFUNC(OPENSSL_sk_value) ++ RESOLVEFUNC(DH_get0_pqg) ++ RESOLVEFUNC(SSL_CTX_set_options) ++ RESOLVEFUNC(SSL_get_client_random) ++ RESOLVEFUNC(SSL_SESSION_get_master_key) ++ RESOLVEFUNC(SSL_session_reused) ++ RESOLVEFUNC(SSL_get_session) ++ RESOLVEFUNC(CRYPTO_get_ex_new_index) ++ RESOLVEFUNC(TLS_method) ++ RESOLVEFUNC(TLS_client_method) ++ RESOLVEFUNC(TLS_server_method) ++ RESOLVEFUNC(X509_STORE_CTX_get0_chain) ++ RESOLVEFUNC(X509_getm_notBefore) ++ RESOLVEFUNC(X509_getm_notAfter) ++ RESOLVEFUNC(X509_get_version) ++ RESOLVEFUNC(X509_get_pubkey) ++ RESOLVEFUNC(X509_STORE_set_verify_cb) ++ RESOLVEFUNC(CRYPTO_free) ++ RESOLVEFUNC(OpenSSL_version_num) ++ RESOLVEFUNC(OpenSSL_version) ++ if (!_q_OpenSSL_version) { ++ // Apparently, we were built with OpenSSL 1.1 enabled but are now using ++ // a wrong library. ++ delete libs.first; ++ delete libs.second; ++ qCWarning(lcSsl, "Incompatible version of OpenSSL"); ++ return false; ++ } ++ ++ RESOLVEFUNC(SSL_SESSION_get_ticket_lifetime_hint) ++ RESOLVEFUNC(DH_bits) ++ RESOLVEFUNC(DSA_bits) ++ ++#else // !opensslv11 ++ ++ RESOLVEFUNC(ASN1_STRING_data) ++ + #ifdef SSLEAY_MACROS + RESOLVEFUNC(ASN1_dup) ++#endif // SSLEAY_MACROS ++ RESOLVEFUNC(BIO_new_file) ++ RESOLVEFUNC(ERR_clear_error) ++ RESOLVEFUNC(CRYPTO_free) ++ RESOLVEFUNC(CRYPTO_num_locks) ++ RESOLVEFUNC(CRYPTO_set_id_callback) ++ RESOLVEFUNC(CRYPTO_set_locking_callback) ++ RESOLVEFUNC(ERR_peek_last_error) ++ RESOLVEFUNC(ERR_free_strings) ++ RESOLVEFUNC(EVP_CIPHER_CTX_cleanup) ++ RESOLVEFUNC(EVP_CIPHER_CTX_init) ++ ++#ifdef SSLEAY_MACROS // ### verify ++ RESOLVEFUNC(PEM_ASN1_read_bio) ++#endif // SSLEAY_MACROS ++ ++ RESOLVEFUNC(sk_new_null) ++ RESOLVEFUNC(sk_push) ++ RESOLVEFUNC(sk_free) ++ RESOLVEFUNC(sk_num) ++ RESOLVEFUNC(sk_pop_free) ++ RESOLVEFUNC(sk_value) ++ RESOLVEFUNC(SSL_library_init) ++ RESOLVEFUNC(SSL_load_error_strings) ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L ++ RESOLVEFUNC(SSL_get_ex_new_index) ++#endif ++#ifndef OPENSSL_NO_SSL2 ++ RESOLVEFUNC(SSLv2_client_method) + #endif ++#ifndef OPENSSL_NO_SSL3_METHOD ++ RESOLVEFUNC(SSLv3_client_method) ++#endif ++ RESOLVEFUNC(SSLv23_client_method) ++ RESOLVEFUNC(TLSv1_client_method) ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L ++ RESOLVEFUNC(TLSv1_1_client_method) ++ RESOLVEFUNC(TLSv1_2_client_method) ++#endif ++#ifndef OPENSSL_NO_SSL2 ++ RESOLVEFUNC(SSLv2_server_method) ++#endif ++#ifndef OPENSSL_NO_SSL3_METHOD ++ RESOLVEFUNC(SSLv3_server_method) ++#endif ++ RESOLVEFUNC(SSLv23_server_method) ++ RESOLVEFUNC(TLSv1_server_method) ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L ++ RESOLVEFUNC(TLSv1_1_server_method) ++ RESOLVEFUNC(TLSv1_2_server_method) ++#endif ++ RESOLVEFUNC(X509_STORE_CTX_get_chain) ++#ifdef SSLEAY_MACROS ++ RESOLVEFUNC(i2d_DSAPrivateKey) ++ RESOLVEFUNC(i2d_RSAPrivateKey) ++ RESOLVEFUNC(d2i_DSAPrivateKey) ++ RESOLVEFUNC(d2i_RSAPrivateKey) ++#endif ++ RESOLVEFUNC(CONF_get1_default_config_file) ++ RESOLVEFUNC(OPENSSL_add_all_algorithms_noconf) ++ RESOLVEFUNC(OPENSSL_add_all_algorithms_conf) ++ RESOLVEFUNC(SSLeay) ++ ++ if (!_q_SSLeay || q_SSLeay() >= 0x10100000L) { ++ // OpenSSL 1.1 has deprecated and removed SSLeay. We consider a failure to ++ // resolve this symbol as a failure to resolve symbols. ++ // The right operand of '||' above is ... a bit of paranoia. ++ delete libs.first; ++ delete libs.second; ++ qCWarning(lcSsl, "Incompatible version of OpenSSL"); ++ return false; ++ } ++ ++ ++ RESOLVEFUNC(SSLeay_version) ++ ++#ifndef OPENSSL_NO_EC ++#if OPENSSL_VERSION_NUMBER >= 0x10002000L ++ if (q_SSLeay() >= 0x10002000L) ++ RESOLVEFUNC(EC_curve_nist2nid) ++#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ++#endif // OPENSSL_NO_EC ++ ++ ++#endif // !opensslv11 ++ + RESOLVEFUNC(ASN1_INTEGER_get) +- RESOLVEFUNC(ASN1_STRING_data) + RESOLVEFUNC(ASN1_STRING_length) + RESOLVEFUNC(ASN1_STRING_to_UTF8) + RESOLVEFUNC(BIO_ctrl) +@@ -794,25 +1003,22 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(BN_is_word) + #endif + RESOLVEFUNC(BN_mod_word) +- RESOLVEFUNC(CRYPTO_free) +- RESOLVEFUNC(CRYPTO_num_locks) +- RESOLVEFUNC(CRYPTO_set_id_callback) +- RESOLVEFUNC(CRYPTO_set_locking_callback) + RESOLVEFUNC(DSA_new) + RESOLVEFUNC(DSA_free) + RESOLVEFUNC(ERR_error_string) + RESOLVEFUNC(ERR_get_error) +- RESOLVEFUNC(ERR_free_strings) +- RESOLVEFUNC(EVP_CIPHER_CTX_cleanup) +- RESOLVEFUNC(EVP_CIPHER_CTX_init) ++ RESOLVEFUNC(EVP_CIPHER_CTX_new) ++ RESOLVEFUNC(EVP_CIPHER_CTX_free) + RESOLVEFUNC(EVP_CIPHER_CTX_ctrl) + RESOLVEFUNC(EVP_CIPHER_CTX_set_key_length) + RESOLVEFUNC(EVP_CipherInit) ++ RESOLVEFUNC(EVP_CipherInit_ex) + RESOLVEFUNC(EVP_CipherUpdate) + RESOLVEFUNC(EVP_CipherFinal) + RESOLVEFUNC(EVP_des_cbc) + RESOLVEFUNC(EVP_des_ede3_cbc) + RESOLVEFUNC(EVP_rc2_cbc) ++ RESOLVEFUNC(EVP_sha1) + RESOLVEFUNC(EVP_PKEY_assign) + RESOLVEFUNC(EVP_PKEY_set1_RSA) + RESOLVEFUNC(EVP_PKEY_set1_DSA) +@@ -834,9 +1040,8 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(i2t_ASN1_OBJECT) + RESOLVEFUNC(OBJ_obj2txt) + RESOLVEFUNC(OBJ_obj2nid) +-#ifdef SSLEAY_MACROS // ### verify +- RESOLVEFUNC(PEM_ASN1_read_bio) +-#else ++ ++#ifndef SSLEAY_MACROS + RESOLVEFUNC(PEM_read_bio_PrivateKey) + RESOLVEFUNC(PEM_read_bio_DSAPrivateKey) + RESOLVEFUNC(PEM_read_bio_RSAPrivateKey) +@@ -849,7 +1054,8 @@ bool q_resolveOpenSslSymbols() + #ifndef OPENSSL_NO_EC + RESOLVEFUNC(PEM_write_bio_ECPrivateKey) + #endif +-#endif ++#endif // !SSLEAY_MACROS ++ + RESOLVEFUNC(PEM_read_bio_PUBKEY) + RESOLVEFUNC(PEM_read_bio_DSA_PUBKEY) + RESOLVEFUNC(PEM_read_bio_RSA_PUBKEY) +@@ -865,12 +1071,6 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(RAND_status) + RESOLVEFUNC(RSA_new) + RESOLVEFUNC(RSA_free) +- RESOLVEFUNC(sk_new_null) +- RESOLVEFUNC(sk_push) +- RESOLVEFUNC(sk_free) +- RESOLVEFUNC(sk_num) +- RESOLVEFUNC(sk_pop_free) +- RESOLVEFUNC(sk_value) + RESOLVEFUNC(SSL_CIPHER_description) + RESOLVEFUNC(SSL_CIPHER_get_bits) + RESOLVEFUNC(SSL_CTX_check_private_key) +@@ -898,8 +1098,6 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(SSL_get_peer_cert_chain) + RESOLVEFUNC(SSL_get_peer_certificate) + RESOLVEFUNC(SSL_get_verify_result) +- RESOLVEFUNC(SSL_library_init) +- RESOLVEFUNC(SSL_load_error_strings) + RESOLVEFUNC(SSL_new) + RESOLVEFUNC(SSL_ctrl) + RESOLVEFUNC(SSL_read) +@@ -912,7 +1110,6 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(SSL_get1_session) + RESOLVEFUNC(SSL_get_session) + #if OPENSSL_VERSION_NUMBER >= 0x10001000L +- RESOLVEFUNC(SSL_get_ex_new_index) + RESOLVEFUNC(SSL_set_ex_data) + RESOLVEFUNC(SSL_get_ex_data) + #endif +@@ -922,30 +1119,6 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(SSL_CTX_use_psk_identity_hint) + #endif + RESOLVEFUNC(SSL_write) +-#ifndef OPENSSL_NO_SSL2 +- RESOLVEFUNC(SSLv2_client_method) +-#endif +-#ifndef OPENSSL_NO_SSL3_METHOD +- RESOLVEFUNC(SSLv3_client_method) +-#endif +- RESOLVEFUNC(SSLv23_client_method) +- RESOLVEFUNC(TLSv1_client_method) +-#if OPENSSL_VERSION_NUMBER >= 0x10001000L +- RESOLVEFUNC(TLSv1_1_client_method) +- RESOLVEFUNC(TLSv1_2_client_method) +-#endif +-#ifndef OPENSSL_NO_SSL2 +- RESOLVEFUNC(SSLv2_server_method) +-#endif +-#ifndef OPENSSL_NO_SSL3_METHOD +- RESOLVEFUNC(SSLv3_server_method) +-#endif +- RESOLVEFUNC(SSLv23_server_method) +- RESOLVEFUNC(TLSv1_server_method) +-#if OPENSSL_VERSION_NUMBER >= 0x10001000L +- RESOLVEFUNC(TLSv1_1_server_method) +- RESOLVEFUNC(TLSv1_2_server_method) +-#endif + RESOLVEFUNC(X509_NAME_entry_count) + RESOLVEFUNC(X509_NAME_get_entry) + RESOLVEFUNC(X509_NAME_ENTRY_get_data) +@@ -961,12 +1134,12 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(X509_STORE_CTX_get_error) + RESOLVEFUNC(X509_STORE_CTX_get_error_depth) + RESOLVEFUNC(X509_STORE_CTX_get_current_cert) +- RESOLVEFUNC(X509_STORE_CTX_get_chain) + RESOLVEFUNC(X509_cmp) + #ifndef SSLEAY_MACROS + RESOLVEFUNC(X509_dup) + #endif + RESOLVEFUNC(X509_print) ++ RESOLVEFUNC(X509_digest) + RESOLVEFUNC(X509_EXTENSION_get_object) + RESOLVEFUNC(X509_free) + RESOLVEFUNC(X509_get_ext) +@@ -982,20 +1155,11 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(X509_check_issued) + RESOLVEFUNC(X509_get_issuer_name) + RESOLVEFUNC(X509_get_subject_name) ++ RESOLVEFUNC(X509_get_serialNumber) + RESOLVEFUNC(X509_verify_cert) + RESOLVEFUNC(d2i_X509) + RESOLVEFUNC(i2d_X509) +-#ifdef SSLEAY_MACROS +- RESOLVEFUNC(i2d_DSAPrivateKey) +- RESOLVEFUNC(i2d_RSAPrivateKey) +- RESOLVEFUNC(d2i_DSAPrivateKey) +- RESOLVEFUNC(d2i_RSAPrivateKey) +-#endif +- RESOLVEFUNC(OPENSSL_add_all_algorithms_noconf) +- RESOLVEFUNC(OPENSSL_add_all_algorithms_conf) + RESOLVEFUNC(SSL_CTX_load_verify_locations) +- RESOLVEFUNC(SSLeay) +- RESOLVEFUNC(SSLeay_version) + RESOLVEFUNC(i2d_SSL_SESSION) + RESOLVEFUNC(d2i_SSL_SESSION) + #if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG) +@@ -1019,27 +1183,14 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(EC_KEY_new_by_curve_name) + RESOLVEFUNC(EC_KEY_free) + RESOLVEFUNC(EC_get_builtin_curves) +-#if OPENSSL_VERSION_NUMBER >= 0x10002000L +- if (q_SSLeay() >= 0x10002000L) +- RESOLVEFUNC(EC_curve_nist2nid) +-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L + #endif // OPENSSL_NO_EC + RESOLVEFUNC(PKCS12_parse) + RESOLVEFUNC(d2i_PKCS12_bio) + RESOLVEFUNC(PKCS12_free) + ++ symbolsResolved = true; + delete libs.first; + delete libs.second; +- if (!_q_SSLeay || q_SSLeay() >= 0x10100000L) { +- // OpenSSL 1.1 deprecated and removed SSLeay. We consider a failure to +- // resolve this symbol as a failure to resolve symbols. +- // The right operand of '||' above ... a bit of paranoia. +- qCWarning(lcSsl, "Incompatible version of OpenSSL"); +- return false; +- } +- +- symbolsResolved = true; +- + return true; + } + #endif // QT_CONFIG(library) +diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h +index b35a895d38..796bf2d4f5 100644 +--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h ++++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h +@@ -1,6 +1,6 @@ + /**************************************************************************** + ** +-** Copyright (C) 2016 The Qt Company Ltd. ++** Copyright (C) 2017 The Qt Company Ltd. + ** Copyright (C) 2014 BlackBerry Limited. All rights reserved. + ** Contact: https://www.qt.io/licensing/ + ** +@@ -56,6 +56,7 @@ + #ifndef QSSLSOCKET_OPENSSL_SYMBOLS_P_H + #define QSSLSOCKET_OPENSSL_SYMBOLS_P_H + ++ + // + // W A R N I N G + // ------------- +@@ -215,17 +216,20 @@ QT_BEGIN_NAMESPACE + + #endif // !defined QT_LINKED_OPENSSL + ++#if QT_CONFIG(opensslv11) ++#include "qsslsocket_openssl11_symbols_p.h" ++#else ++#include "qsslsocket_opensslpre11_symbols_p.h" ++#endif // QT_CONFIG ++ + bool q_resolveOpenSslSymbols(); + long q_ASN1_INTEGER_get(ASN1_INTEGER *a); +-unsigned char * q_ASN1_STRING_data(ASN1_STRING *a); + int q_ASN1_STRING_length(ASN1_STRING *a); + int q_ASN1_STRING_to_UTF8(unsigned char **a, ASN1_STRING *b); + long q_BIO_ctrl(BIO *a, int b, long c, void *d); + Q_AUTOTEST_EXPORT int q_BIO_free(BIO *a); +-Q_AUTOTEST_EXPORT BIO *q_BIO_new(BIO_METHOD *a); + BIO *q_BIO_new_mem_buf(void *a, int b); + int q_BIO_read(BIO *a, void *b, int c); +-Q_AUTOTEST_EXPORT BIO_METHOD *q_BIO_s_mem(); + Q_AUTOTEST_EXPORT int q_BIO_write(BIO *a, const void *b, int c); + int q_BN_num_bits(const BIGNUM *a); + #if OPENSSL_VERSION_NUMBER >= 0x10100000L +@@ -247,26 +251,23 @@ BN_ULONG q_BN_mod_word(const BIGNUM *a, BN_ULONG w); + const EC_GROUP* q_EC_KEY_get0_group(const EC_KEY* k); + int q_EC_GROUP_get_degree(const EC_GROUP* g); + #endif +-int q_CRYPTO_num_locks(); +-void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int)); +-void q_CRYPTO_set_id_callback(unsigned long (*a)()); +-void q_CRYPTO_free(void *a); + DSA *q_DSA_new(); + void q_DSA_free(DSA *a); + X509 *q_d2i_X509(X509 **a, const unsigned char **b, long c); + char *q_ERR_error_string(unsigned long a, char *b); + unsigned long q_ERR_get_error(); +-void q_ERR_free_strings(); +-void q_EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a); +-void q_EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a); ++EVP_CIPHER_CTX *q_EVP_CIPHER_CTX_new(); ++void q_EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a); + int q_EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); + int q_EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); + int q_EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, const unsigned char *key, const unsigned char *iv, int enc); ++int q_EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv, int enc); + int q_EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl); + int q_EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + const EVP_CIPHER *q_EVP_des_cbc(); + const EVP_CIPHER *q_EVP_des_ede3_cbc(); + const EVP_CIPHER *q_EVP_rc2_cbc(); ++const EVP_MD *q_EVP_sha1(); + int q_EVP_PKEY_assign(EVP_PKEY *a, int b, char *c); + Q_AUTOTEST_EXPORT int q_EVP_PKEY_set1_RSA(EVP_PKEY *a, RSA *b); + int q_EVP_PKEY_set1_DSA(EVP_PKEY *a, DSA *b); +@@ -310,7 +311,7 @@ int q_PEM_write_bio_RSAPrivateKey(BIO *a, RSA *b, const EVP_CIPHER *c, unsigned + int q_PEM_write_bio_ECPrivateKey(BIO *a, EC_KEY *b, const EVP_CIPHER *c, unsigned char *d, + int e, pem_password_cb *f, void *g); + #endif +-#endif ++#endif // SSLEAY_MACROS + Q_AUTOTEST_EXPORT EVP_PKEY *q_PEM_read_bio_PUBKEY(BIO *a, EVP_PKEY **b, pem_password_cb *c, void *d); + DSA *q_PEM_read_bio_DSA_PUBKEY(BIO *a, DSA **b, pem_password_cb *c, void *d); + RSA *q_PEM_read_bio_RSA_PUBKEY(BIO *a, RSA **b, pem_password_cb *c, void *d); +@@ -326,23 +327,10 @@ void q_RAND_seed(const void *a, int b); + int q_RAND_status(); + RSA *q_RSA_new(); + void q_RSA_free(RSA *a); +-int q_sk_num(STACK *a); +-void q_sk_pop_free(STACK *a, void (*b)(void *)); +-#if OPENSSL_VERSION_NUMBER >= 0x10000000L +-_STACK *q_sk_new_null(); +-void q_sk_push(_STACK *st, void *data); +-void q_sk_free(_STACK *a); +-void * q_sk_value(STACK *a, int b); +-#else +-STACK *q_sk_new_null(); +-void q_sk_push(STACK *st, char *data); +-void q_sk_free(STACK *a); +-char * q_sk_value(STACK *a, int b); +-#endif + int q_SSL_accept(SSL *a); + int q_SSL_clear(SSL *a); +-char *q_SSL_CIPHER_description(SSL_CIPHER *a, char *b, int c); +-int q_SSL_CIPHER_get_bits(SSL_CIPHER *a, int *b); ++char *q_SSL_CIPHER_description(const SSL_CIPHER *a, char *b, int c); ++int q_SSL_CIPHER_get_bits(const SSL_CIPHER *a, int *b); + int q_SSL_connect(SSL *a); + int q_SSL_CTX_check_private_key(const SSL_CTX *a); + long q_SSL_CTX_ctrl(SSL_CTX *a, int b, long c, void *d); +@@ -374,8 +362,6 @@ int q_SSL_get_error(SSL *a, int b); + STACK_OF(X509) *q_SSL_get_peer_cert_chain(SSL *a); + X509 *q_SSL_get_peer_certificate(SSL *a); + long q_SSL_get_verify_result(const SSL *a); +-int q_SSL_library_init(); +-void q_SSL_load_error_strings(); + SSL *q_SSL_new(SSL_CTX *a); + long q_SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg); + int q_SSL_read(SSL *a, void *b, int c); +@@ -388,7 +374,6 @@ void q_SSL_SESSION_free(SSL_SESSION *ses); + SSL_SESSION *q_SSL_get1_session(SSL *ssl); + SSL_SESSION *q_SSL_get_session(const SSL *ssl); + #if OPENSSL_VERSION_NUMBER >= 0x10001000L +-int q_SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); + int q_SSL_set_ex_data(SSL *ssl, int idx, void *arg); + void *q_SSL_get_ex_data(const SSL *ssl, int idx); + #endif +@@ -399,49 +384,6 @@ typedef unsigned int (*q_psk_server_callback_t)(SSL *ssl, const char *identity, + void q_SSL_set_psk_server_callback(SSL *ssl, q_psk_server_callback_t callback); + int q_SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *hint); + #endif // OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK) +-#if OPENSSL_VERSION_NUMBER >= 0x10000000L +-#ifndef OPENSSL_NO_SSL2 +-const SSL_METHOD *q_SSLv2_client_method(); +-#endif +-#ifndef OPENSSL_NO_SSL3_METHOD +-const SSL_METHOD *q_SSLv3_client_method(); +-#endif +-const SSL_METHOD *q_SSLv23_client_method(); +-const SSL_METHOD *q_TLSv1_client_method(); +-const SSL_METHOD *q_TLSv1_1_client_method(); +-const SSL_METHOD *q_TLSv1_2_client_method(); +-#ifndef OPENSSL_NO_SSL2 +-const SSL_METHOD *q_SSLv2_server_method(); +-#endif +-#ifndef OPENSSL_NO_SSL3_METHOD +-const SSL_METHOD *q_SSLv3_server_method(); +-#endif +-const SSL_METHOD *q_SSLv23_server_method(); +-const SSL_METHOD *q_TLSv1_server_method(); +-const SSL_METHOD *q_TLSv1_1_server_method(); +-const SSL_METHOD *q_TLSv1_2_server_method(); +-#else +-#ifndef OPENSSL_NO_SSL2 +-SSL_METHOD *q_SSLv2_client_method(); +-#endif +-#ifndef OPENSSL_NO_SSL3_METHOD +-SSL_METHOD *q_SSLv3_client_method(); +-#endif +-SSL_METHOD *q_SSLv23_client_method(); +-SSL_METHOD *q_TLSv1_client_method(); +-SSL_METHOD *q_TLSv1_1_client_method(); +-SSL_METHOD *q_TLSv1_2_client_method(); +-#ifndef OPENSSL_NO_SSL2 +-SSL_METHOD *q_SSLv2_server_method(); +-#endif +-#ifndef OPENSSL_NO_SSL3_METHOD +-SSL_METHOD *q_SSLv3_server_method(); +-#endif +-SSL_METHOD *q_SSLv23_server_method(); +-SSL_METHOD *q_TLSv1_server_method(); +-SSL_METHOD *q_TLSv1_1_server_method(); +-SSL_METHOD *q_TLSv1_2_server_method(); +-#endif + int q_SSL_write(SSL *a, const void *b, int c); + int q_X509_cmp(X509 *a, X509 *b); + #ifdef SSLEAY_MACROS +@@ -452,6 +394,7 @@ void *q_ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x); + X509 *q_X509_dup(X509 *a); + #endif + void q_X509_print(BIO *a, X509*b); ++int q_X509_digest(const X509 *x509, const EVP_MD *type, unsigned char *md, unsigned int *len); + ASN1_OBJECT *q_X509_EXTENSION_get_object(X509_EXTENSION *a); + void q_X509_free(X509 *a); + X509_EXTENSION *q_X509_get_ext(X509 *a, int b); +@@ -471,6 +414,7 @@ int q_ASN1_STRING_print(BIO *a, ASN1_STRING *b); + int q_X509_check_issued(X509 *a, X509 *b); + X509_NAME *q_X509_get_issuer_name(X509 *a); + X509_NAME *q_X509_get_subject_name(X509 *a); ++ASN1_INTEGER *q_X509_get_serialNumber(X509 *a); + int q_X509_verify_cert(X509_STORE_CTX *ctx); + int q_X509_NAME_entry_count(X509_NAME *a); + X509_NAME_ENTRY *q_X509_NAME_get_entry(X509_NAME *a,int b); +@@ -488,7 +432,6 @@ int q_X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); + int q_X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); + int q_X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); + X509 *q_X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +-STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx); + + // Diffie-Hellman support + DH *q_DH_new(); +@@ -522,34 +465,9 @@ int q_PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, + PKCS12 *q_d2i_PKCS12_bio(BIO *bio, PKCS12 **pkcs12); + void q_PKCS12_free(PKCS12 *pkcs12); + +- + #define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp) + #define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +-#ifdef SSLEAY_MACROS +-int q_i2d_DSAPrivateKey(const DSA *a, unsigned char **pp); +-int q_i2d_RSAPrivateKey(const RSA *a, unsigned char **pp); +-RSA *q_d2i_RSAPrivateKey(RSA **a, unsigned char **pp, long length); +-DSA *q_d2i_DSAPrivateKey(DSA **a, unsigned char **pp, long length); +-#define q_PEM_read_bio_RSAPrivateKey(bp, x, cb, u) \ +- (RSA *)q_PEM_ASN1_read_bio( \ +- (void *(*)(void**, const unsigned char**, long int))q_d2i_RSAPrivateKey, PEM_STRING_RSA, bp, (void **)x, cb, u) +-#define q_PEM_read_bio_DSAPrivateKey(bp, x, cb, u) \ +- (DSA *)q_PEM_ASN1_read_bio( \ +- (void *(*)(void**, const unsigned char**, long int))q_d2i_DSAPrivateKey, PEM_STRING_DSA, bp, (void **)x, cb, u) +-#define q_PEM_write_bio_RSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \ +- PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_RSAPrivateKey,PEM_STRING_RSA,\ +- bp,(char *)x,enc,kstr,klen,cb,u) +-#define q_PEM_write_bio_DSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \ +- PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\ +- bp,(char *)x,enc,kstr,klen,cb,u) +-#define q_PEM_read_bio_DHparams(bp, dh, cb, u) \ +- (DH *)q_PEM_ASN1_read_bio( \ +- (void *(*)(void**, const unsigned char**, long int))q_d2i_DHparams, PEM_STRING_DHPARAMS, bp, (void **)x, cb, u) +-#endif +-#define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) + #define q_SSL_CTX_set_mode(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) +-#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st) +-#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i) + #define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st)) + #define q_sk_GENERAL_NAME_value(st, i) q_SKM_sk_value(GENERAL_NAME, (st), (i)) + #define q_sk_X509_num(st) q_SKM_sk_num(X509, (st)) +@@ -558,18 +476,12 @@ DSA *q_d2i_DSAPrivateKey(DSA **a, unsigned char **pp, long length); + #define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i)) + #define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \ + q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509) +-#define q_X509_get_notAfter(x) X509_get_notAfter(x) +-#define q_X509_get_notBefore(x) X509_get_notBefore(x) + #define q_EVP_PKEY_assign_RSA(pkey,rsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) + #define q_EVP_PKEY_assign_DSA(pkey,dsa) q_EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (char *)(dsa)) + #define q_OpenSSL_add_all_algorithms() q_OPENSSL_add_all_algorithms_conf() +-void q_OPENSSL_add_all_algorithms_noconf(); +-void q_OPENSSL_add_all_algorithms_conf(); + int q_SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char *CApath); +-long q_SSLeay(); +-const char *q_SSLeay_version(int type); + int q_i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); + SSL_SESSION *q_d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); + +diff --git a/src/network/ssl/qsslsocket_opensslpre11.cpp b/src/network/ssl/qsslsocket_opensslpre11.cpp +new file mode 100644 +index 0000000000..e51888c5f2 +--- /dev/null ++++ b/src/network/ssl/qsslsocket_opensslpre11.cpp +@@ -0,0 +1,424 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2017 The Qt Company Ltd. ++** Copyright (C) 2014 Governikus GmbH & Co. KG ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the QtNetwork module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++/**************************************************************************** ++** ++** In addition, as a special exception, the copyright holders listed above give ++** permission to link the code of its release of Qt with the OpenSSL project's ++** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the ++** same license as the original version), and distribute the linked executables. ++** ++** You must comply with the GNU General Public License version 2 in all ++** respects for all of the code used other than the "OpenSSL" code. If you ++** modify this file, you may extend this exception to your version of the file, ++** but you are not obligated to do so. If you do not wish to do so, delete ++** this exception statement from your version of this file. ++** ++****************************************************************************/ ++ ++//#define QT_DECRYPT_SSL_TRAFFIC ++ ++#include "qssl_p.h" ++#include "qsslsocket_openssl_p.h" ++#include "qsslsocket_openssl_symbols_p.h" ++#include "qsslsocket.h" ++#include "qsslkey.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++/* \internal ++ ++ From OpenSSL's thread(3) manual page: ++ ++ OpenSSL can safely be used in multi-threaded applications provided that at ++ least two callback functions are set. ++ ++ locking_function(int mode, int n, const char *file, int line) is needed to ++ perform locking on shared data structures. (Note that OpenSSL uses a ++ number of global data structures that will be implicitly shared ++ whenever multiple threads use OpenSSL.) Multi-threaded ++ applications will crash at random if it is not set. ... ++ ... ++ id_function(void) is a function that returns a thread ID. It is not ++ needed on Windows nor on platforms where getpid() returns a different ++ ID for each thread (most notably Linux) ++*/ ++ ++class QOpenSslLocks ++{ ++public: ++ QOpenSslLocks() ++ : initLocker(QMutex::Recursive), ++ locksLocker(QMutex::Recursive) ++ { ++ QMutexLocker locker(&locksLocker); ++ int numLocks = q_CRYPTO_num_locks(); ++ locks = new QMutex *[numLocks]; ++ memset(locks, 0, numLocks * sizeof(QMutex *)); ++ } ++ ~QOpenSslLocks() ++ { ++ QMutexLocker locker(&locksLocker); ++ for (int i = 0; i < q_CRYPTO_num_locks(); ++i) ++ delete locks[i]; ++ delete [] locks; ++ ++ QSslSocketPrivate::deinitialize(); ++ } ++ QMutex *lock(int num) ++ { ++ QMutexLocker locker(&locksLocker); ++ QMutex *tmp = locks[num]; ++ if (!tmp) ++ tmp = locks[num] = new QMutex(QMutex::Recursive); ++ return tmp; ++ } ++ ++ QMutex *globalLock() ++ { ++ return &locksLocker; ++ } ++ ++ QMutex *initLock() ++ { ++ return &initLocker; ++ } ++ ++private: ++ QMutex initLocker; ++ QMutex locksLocker; ++ QMutex **locks; ++}; ++ ++Q_GLOBAL_STATIC(QOpenSslLocks, openssl_locks) ++ ++extern "C" { ++static void locking_function(int mode, int lockNumber, const char *, int) ++{ ++ QMutex *mutex = openssl_locks()->lock(lockNumber); ++ ++ // Lock or unlock it ++ if (mode & CRYPTO_LOCK) ++ mutex->lock(); ++ else ++ mutex->unlock(); ++} ++static unsigned long id_function() ++{ ++ return (quintptr)QThread::currentThreadId(); ++} ++ ++} // extern "C" ++ ++static void q_OpenSSL_add_all_algorithms_safe() ++{ ++#ifdef Q_OS_WIN ++ // Prior to version 1.0.1m an attempt to call OpenSSL_add_all_algorithms on ++ // Windows could result in 'exit' call from OPENSSL_config (QTBUG-43843). ++ // We can predict this and avoid OPENSSL_add_all_algorithms call. ++ // From OpenSSL docs: ++ // "An application does not need to add algorithms to use them explicitly, ++ // for example by EVP_sha1(). It just needs to add them if it (or any of ++ // the functions it calls) needs to lookup algorithms. ++ // The cipher and digest lookup functions are used in many parts of the ++ // library. If the table is not initialized several functions will ++ // misbehave and complain they cannot find algorithms. This includes the ++ // PEM, PKCS#12, SSL and S/MIME libraries. This is a common query in ++ // the OpenSSL mailing lists." ++ // ++ // Anyway, as a result, we chose not to call this function if it would exit. ++ ++ if (q_SSLeay() < 0x100010DFL) ++ { ++ // Now, before we try to call it, check if an attempt to open config file ++ // will result in exit: ++ if (char *confFileName = q_CONF_get1_default_config_file()) { ++ BIO *confFile = q_BIO_new_file(confFileName, "r"); ++ const auto lastError = q_ERR_peek_last_error(); ++ q_CRYPTO_free(confFileName); ++ if (confFile) { ++ q_BIO_free(confFile); ++ } else { ++ q_ERR_clear_error(); ++ if (ERR_GET_REASON(lastError) == ERR_R_SYS_LIB) { ++ qCWarning(lcSsl, "failed to open openssl.conf file"); ++ return; ++ } ++ } ++ } ++ } ++#endif // Q_OS_WIN ++ ++ q_OpenSSL_add_all_algorithms(); ++} ++ ++ ++/*! ++ \internal ++*/ ++void QSslSocketPrivate::deinitialize() ++{ ++ q_CRYPTO_set_id_callback(0); ++ q_CRYPTO_set_locking_callback(0); ++ q_ERR_free_strings(); ++} ++ ++ ++bool QSslSocketPrivate::ensureLibraryLoaded() ++{ ++ if (!q_resolveOpenSslSymbols()) ++ return false; ++ ++ // Check if the library itself needs to be initialized. ++ QMutexLocker locker(openssl_locks()->initLock()); ++ ++ if (!s_libraryLoaded) { ++ s_libraryLoaded = true; ++ ++ // Initialize OpenSSL. ++ q_CRYPTO_set_id_callback(id_function); ++ q_CRYPTO_set_locking_callback(locking_function); ++ if (q_SSL_library_init() != 1) ++ return false; ++ q_SSL_load_error_strings(); ++ q_OpenSSL_add_all_algorithms_safe(); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10001000L ++ if (q_SSLeay() >= 0x10001000L) ++ QSslSocketBackendPrivate::s_indexForSSLExtraData = q_SSL_get_ex_new_index(0L, NULL, NULL, NULL, NULL); ++#endif ++ ++ // Initialize OpenSSL's random seed. ++ if (!q_RAND_status()) { ++ qWarning("Random number generator not seeded, disabling SSL support"); ++ return false; ++ } ++ } ++ return true; ++} ++ ++void QSslSocketPrivate::ensureCiphersAndCertsLoaded() ++{ ++ QMutexLocker locker(openssl_locks()->initLock()); ++ if (s_loadedCiphersAndCerts) ++ return; ++ s_loadedCiphersAndCerts = true; ++ ++ resetDefaultCiphers(); ++ resetDefaultEllipticCurves(); ++ ++#if QT_CONFIG(library) ++ //load symbols needed to receive certificates from system store ++#if defined(Q_OS_WIN) ++ HINSTANCE hLib = LoadLibraryW(L"Crypt32"); ++ if (hLib) { ++ ptrCertOpenSystemStoreW = (PtrCertOpenSystemStoreW)GetProcAddress(hLib, "CertOpenSystemStoreW"); ++ ptrCertFindCertificateInStore = (PtrCertFindCertificateInStore)GetProcAddress(hLib, "CertFindCertificateInStore"); ++ ptrCertCloseStore = (PtrCertCloseStore)GetProcAddress(hLib, "CertCloseStore"); ++ if (!ptrCertOpenSystemStoreW || !ptrCertFindCertificateInStore || !ptrCertCloseStore) ++ qCWarning(lcSsl, "could not resolve symbols in crypt32 library"); // should never happen ++ } else { ++ qCWarning(lcSsl, "could not load crypt32 library"); // should never happen ++ } ++#elif defined(Q_OS_QNX) ++ s_loadRootCertsOnDemand = true; ++#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) ++ // check whether we can enable on-demand root-cert loading (i.e. check whether the sym links are there) ++ QList dirs = unixRootCertDirectories(); ++ QStringList symLinkFilter; ++ symLinkFilter << QLatin1String("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]"); ++ for (int a = 0; a < dirs.count(); ++a) { ++ QDirIterator iterator(QLatin1String(dirs.at(a)), symLinkFilter, QDir::Files); ++ if (iterator.hasNext()) { ++ s_loadRootCertsOnDemand = true; ++ break; ++ } ++ } ++#endif ++#endif // QT_CONFIG(library) ++ // if on-demand loading was not enabled, load the certs now ++ if (!s_loadRootCertsOnDemand) ++ setDefaultCaCertificates(systemCaCertificates()); ++#ifdef Q_OS_WIN ++ //Enabled for fetching additional root certs from windows update on windows 6+ ++ //This flag is set false by setDefaultCaCertificates() indicating the app uses ++ //its own cert bundle rather than the system one. ++ //Same logic that disables the unix on demand cert loading. ++ //Unlike unix, we do preload the certificates from the cert store. ++ if ((QSysInfo::windowsVersion() & QSysInfo::WV_NT_based) >= QSysInfo::WV_6_0) ++ s_loadRootCertsOnDemand = true; ++#endif ++} ++ ++long QSslSocketPrivate::sslLibraryVersionNumber() ++{ ++ if (!supportsSsl()) ++ return 0; ++ ++ return q_SSLeay(); ++} ++ ++QString QSslSocketPrivate::sslLibraryVersionString() ++{ ++ if (!supportsSsl()) ++ return QString(); ++ ++ const char *versionString = q_SSLeay_version(SSLEAY_VERSION); ++ if (!versionString) ++ return QString(); ++ ++ return QString::fromLatin1(versionString); ++} ++ ++void QSslSocketBackendPrivate::continueHandshake() ++{ ++ Q_Q(QSslSocket); ++ // if we have a max read buffer size, reset the plain socket's to match ++ if (readBufferMaxSize) ++ plainSocket->setReadBufferSize(readBufferMaxSize); ++ ++ if (q_SSL_ctrl((ssl), SSL_CTRL_GET_SESSION_REUSED, 0, NULL)) ++ configuration.peerSessionShared = true; ++ ++#ifdef QT_DECRYPT_SSL_TRAFFIC ++ if (ssl->session && ssl->s3) { ++ const char *mk = reinterpret_cast(ssl->session->master_key); ++ QByteArray masterKey(mk, ssl->session->master_key_length); ++ const char *random = reinterpret_cast(ssl->s3->client_random); ++ QByteArray clientRandom(random, SSL3_RANDOM_SIZE); ++ ++ // different format, needed for e.g. older Wireshark versions: ++// const char *sid = reinterpret_cast(ssl->session->session_id); ++// QByteArray sessionID(sid, ssl->session->session_id_length); ++// QByteArray debugLineRSA("RSA Session-ID:"); ++// debugLineRSA.append(sessionID.toHex().toUpper()); ++// debugLineRSA.append(" Master-Key:"); ++// debugLineRSA.append(masterKey.toHex().toUpper()); ++// debugLineRSA.append("\n"); ++ ++ QByteArray debugLineClientRandom("CLIENT_RANDOM "); ++ debugLineClientRandom.append(clientRandom.toHex().toUpper()); ++ debugLineClientRandom.append(" "); ++ debugLineClientRandom.append(masterKey.toHex().toUpper()); ++ debugLineClientRandom.append("\n"); ++ ++ QString sslKeyFile = QDir::tempPath() + QLatin1String("/qt-ssl-keys"); ++ QFile file(sslKeyFile); ++ if (!file.open(QIODevice::Append)) ++ qCWarning(lcSsl) << "could not open file" << sslKeyFile << "for appending"; ++ if (!file.write(debugLineClientRandom)) ++ qCWarning(lcSsl) << "could not write to file" << sslKeyFile; ++ file.close(); ++ } else { ++ qCWarning(lcSsl, "could not decrypt SSL traffic"); ++ } ++#endif ++ ++ // Cache this SSL session inside the QSslContext ++ if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionSharing)) { ++ if (!sslContextPointer->cacheSession(ssl)) { ++ sslContextPointer.clear(); // we could not cache the session ++ } else { ++ // Cache the session for permanent usage as well ++ if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionPersistence)) { ++ if (!sslContextPointer->sessionASN1().isEmpty()) ++ configuration.sslSession = sslContextPointer->sessionASN1(); ++ configuration.sslSessionTicketLifeTimeHint = sslContextPointer->sessionTicketLifeTimeHint(); ++ } ++ } ++ } ++ ++#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG) ++ ++ configuration.nextProtocolNegotiationStatus = sslContextPointer->npnContext().status; ++ if (sslContextPointer->npnContext().status == QSslConfiguration::NextProtocolNegotiationUnsupported) { ++ // we could not agree -> be conservative and use HTTP/1.1 ++ configuration.nextNegotiatedProtocol = QByteArrayLiteral("http/1.1"); ++ } else { ++ const unsigned char *proto = 0; ++ unsigned int proto_len = 0; ++#if OPENSSL_VERSION_NUMBER >= 0x10002000L ++ if (q_SSLeay() >= 0x10002000L) { ++ q_SSL_get0_alpn_selected(ssl, &proto, &proto_len); ++ if (proto_len && mode == QSslSocket::SslClientMode) { ++ // Client does not have a callback that sets it ... ++ configuration.nextProtocolNegotiationStatus = QSslConfiguration::NextProtocolNegotiationNegotiated; ++ } ++ } ++ ++ if (!proto_len) { // Test if NPN was more lucky ... ++#else ++ { ++#endif ++ q_SSL_get0_next_proto_negotiated(ssl, &proto, &proto_len); ++ } ++ ++ if (proto_len) ++ configuration.nextNegotiatedProtocol = QByteArray(reinterpret_cast(proto), proto_len); ++ else ++ configuration.nextNegotiatedProtocol.clear(); ++ } ++#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ... ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10002000L ++ if (q_SSLeay() >= 0x10002000L && mode == QSslSocket::SslClientMode) { ++ EVP_PKEY *key; ++ if (q_SSL_get_server_tmp_key(ssl, &key)) ++ configuration.ephemeralServerKey = QSslKey(key, QSsl::PublicKey); ++ } ++#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ... ++ ++ connectionEncrypted = true; ++ emit q->encrypted(); ++ if (autoStartHandshake && pendingClose) { ++ pendingClose = false; ++ q->disconnectFromHost(); ++ } ++} ++ ++QT_END_NAMESPACE +diff --git a/src/network/ssl/ssl.pri b/src/network/ssl/ssl.pri +index d2b0c2d60d..2783effaf1 100644 +--- a/src/network/ssl/ssl.pri ++++ b/src/network/ssl/ssl.pri +@@ -60,13 +60,25 @@ qtConfig(ssl) { + HEADERS += ssl/qsslcontext_openssl_p.h \ + ssl/qsslsocket_openssl_p.h \ + ssl/qsslsocket_openssl_symbols_p.h +- SOURCES += ssl/qsslcertificate_openssl.cpp \ +- ssl/qsslcontext_openssl.cpp \ ++ SOURCES += ssl/qsslsocket_openssl_symbols.cpp \ + ssl/qssldiffiehellmanparameters_openssl.cpp \ ++ ssl/qsslcertificate_openssl.cpp \ + ssl/qsslellipticcurve_openssl.cpp \ + ssl/qsslkey_openssl.cpp \ + ssl/qsslsocket_openssl.cpp \ +- ssl/qsslsocket_openssl_symbols.cpp ++ ssl/qsslcontext_openssl.cpp ++ ++ qtConfig(opensslv11) { ++ HEADERS += ssl/qsslsocket_openssl11_symbols_p.h ++ SOURCES += ssl/qsslsocket_openssl11.cpp \ ++ ssl/qsslcontext_openssl11.cpp ++ ++ QMAKE_CXXFLAGS += -DOPENSSL_API_COMPAT=0x10100000L ++ } else { ++ HEADERS += ssl/qsslsocket_opensslpre11_symbols_p.h ++ SOURCES += ssl/qsslsocket_opensslpre11.cpp \ ++ ssl/qsslcontext_opensslpre11.cpp ++ } + + darwin:SOURCES += ssl/qsslsocket_mac_shared.cpp + diff --git a/pkgs/development/libraries/qt-5/5.9/qtbase.patch b/pkgs/development/libraries/qt-5/5.9/qtbase.patch index 086ddf4fe3e7..f87c508a3800 100644 --- a/pkgs/development/libraries/qt-5/5.9/qtbase.patch +++ b/pkgs/development/libraries/qt-5/5.9/qtbase.patch @@ -994,28 +994,6 @@ index 9a24938284..74962b4ae2 100644 if (!lib.load()) return false; } -diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp -index c92d8fc3f8..6008063bcf 100644 ---- a/src/network/ssl/qsslcontext_openssl.cpp -+++ b/src/network/ssl/qsslcontext_openssl.cpp -@@ -351,7 +351,7 @@ init_context: - - const QVector qcurves = sslContext->sslConfiguration.ellipticCurves(); - if (!qcurves.isEmpty()) { --#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) -+#if OPENSSL_VERSION_NUMBER >= 0x10002000L && defined(SSL_CTRL_SET_CURVES) && !defined(OPENSSL_NO_EC) - // Set the curves to be used - if (q_SSLeay() >= 0x10002000L) { - // SSL_CTX_ctrl wants a non-const pointer as last argument, -@@ -364,7 +364,7 @@ init_context: - sslContext->errorCode = QSslError::UnspecifiedError; - } - } else --#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) -+#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && defined(SSL_CTRL_SET_CURVES) && !defined(OPENSSL_NO_EC) - { - // specific curves requested, but not possible to set -> error - sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version too old, need at least v1.0.2")); diff --git a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp index b5a0a5bbeb..6c20305f4d 100644 --- a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp diff --git a/pkgs/development/libraries/qt-5/modules/qtwebengine.nix b/pkgs/development/libraries/qt-5/modules/qtwebengine.nix index 07fd048d6538..357c81fa4f61 100644 --- a/pkgs/development/libraries/qt-5/modules/qtwebengine.nix +++ b/pkgs/development/libraries/qt-5/modules/qtwebengine.nix @@ -20,8 +20,6 @@ with stdenv.lib; -let qt56 = qtCompatVersion == "5.6"; in - qtModule { name = "qtwebengine"; qtInputs = [ qtdeclarative qtquickcontrols qtlocation qtwebchannel ]; @@ -48,9 +46,9 @@ qtModule { # Patch Chromium build files + optionalString (lib.versionOlder qtCompatVersion "5.12") '' substituteInPlace ./src/3rdparty/chromium/build/common.gypi --replace /bin/echo ${coreutils}/bin/echo - substituteInPlace ./src/3rdparty/chromium/v8/${if qt56 then "build" else "gypfiles"}/toolchain.gypi \ + substituteInPlace ./src/3rdparty/chromium/v8/gypfiles/toolchain.gypi \ --replace /bin/echo ${coreutils}/bin/echo - substituteInPlace ./src/3rdparty/chromium/v8/${if qt56 then "build" else "gypfiles"}/standalone.gypi \ + substituteInPlace ./src/3rdparty/chromium/v8/gypfiles/standalone.gypi \ --replace /bin/echo ${coreutils}/bin/echo '' # Patch library paths in Qt sources @@ -219,7 +217,6 @@ EOF description = "A web engine based on the Chromium web browser"; maintainers = with maintainers; [ matthewbauer ]; platforms = platforms.unix; - broken = qt56; # 2018-09-13, no successful build since 2018-04-25 }; } diff --git a/pkgs/development/libraries/shibboleth-sp/default.nix b/pkgs/development/libraries/shibboleth-sp/default.nix index 74f861297d1a..dd9b01a0a01e 100644 --- a/pkgs/development/libraries/shibboleth-sp/default.nix +++ b/pkgs/development/libraries/shibboleth-sp/default.nix @@ -2,12 +2,12 @@ stdenv.mkDerivation rec { name = "shibboleth-sp-${version}"; - version = "2.6.1"; + version = "3.0.4.1"; src = fetchgit { url = "https://git.shibboleth.net/git/cpp-sp.git"; rev = version; - sha256 = "01q13p7gc0janjfml6zs46na8qnval8hc833fk2wrnmi4w9xw4fd"; + sha256 = "1qb4dbz5gk10b9w1rf6f4vv7c2wb3a8bfzif6yiaq96ilqad7gdr"; }; nativeBuildInputs = [ autoreconfHook pkgconfig ]; diff --git a/pkgs/development/libraries/xml-security-c/cxx11.patch b/pkgs/development/libraries/xml-security-c/cxx11.patch deleted file mode 100644 index bc87d4c1411e..000000000000 --- a/pkgs/development/libraries/xml-security-c/cxx11.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- xml-security-c-1.6.1/xsec/tools/checksig/InteropResolver.cpp.orig 2016-02-02 23:57:26.204655144 +0000 -+++ xml-security-c-1.6.1/xsec/tools/checksig/InteropResolver.cpp 2016-02-02 23:57:35.796692305 +0000 -@@ -645,7 +645,7 @@ - - } - -- return false; -+ return NULL; - - } - diff --git a/pkgs/development/libraries/xml-security-c/default.nix b/pkgs/development/libraries/xml-security-c/default.nix index fec4bbe8efe2..35ae93e79392 100644 --- a/pkgs/development/libraries/xml-security-c/default.nix +++ b/pkgs/development/libraries/xml-security-c/default.nix @@ -2,20 +2,13 @@ stdenv.mkDerivation rec { name = "xml-security-c-${version}"; - version = "1.7.3"; + version = "2.0.2"; src = fetchurl { url = "https://www.apache.org/dist/santuario/c-library/${name}.tar.gz"; - sha256 = "e5226e7319d44f6fd9147a13fb853f5c711b9e75bf60ec273a0ef8a190592583"; + sha256 = "1prh5sxzipkqglpsh53iblbr7rxi54wbijxdjiahzjmrijqa40y3"; }; - patches = [ ./cxx11.patch ]; - - postPatch = '' - mkdir -p xsec/yes/lib - sed -i -e 's/-O2 -DNDEBUG/-DNDEBUG/g' configure - ''; - configureFlags = [ "--with-openssl" "--with-xerces" diff --git a/pkgs/development/libraries/xml-tooling-c/default.nix b/pkgs/development/libraries/xml-tooling-c/default.nix index 8e1d71fab3fa..fbe515f6217f 100644 --- a/pkgs/development/libraries/xml-tooling-c/default.nix +++ b/pkgs/development/libraries/xml-tooling-c/default.nix @@ -1,17 +1,19 @@ -{ stdenv, fetchgit, autoreconfHook, boost, curl, openssl, log4shib, xercesc, xml-security-c }: +{ stdenv, fetchgit, autoreconfHook, pkgconfig +, boost, curl, openssl, log4shib, xercesc, xml-security-c +}: stdenv.mkDerivation rec { name = "xml-tooling-c-${version}"; - version = "1.6.3"; + version = "3.0.4"; src = fetchgit { url = "https://git.shibboleth.net/git/cpp-xmltooling.git"; rev = version; - sha256 = "09z2pp3yy3kqx22vwgxyi3s0vlpdv9camw8dpi3q8piff6zxak3q"; + sha256 = "0frj4w70l06nva6dvdcivgm1ax69rqbjdzzbgp0sxhiqhddslbas"; }; buildInputs = [ boost curl openssl log4shib xercesc xml-security-c ]; - nativeBuildInputs = [ autoreconfHook ]; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; enableParallelBuilding = true; diff --git a/pkgs/development/mobile/xpwn/default.nix b/pkgs/development/mobile/xpwn/default.nix index d62902e4f6e4..9ec5977d5947 100644 --- a/pkgs/development/mobile/xpwn/default.nix +++ b/pkgs/development/mobile/xpwn/default.nix @@ -1,12 +1,14 @@ -{ stdenv, fetchgit, cmake, zlib, libpng, bzip2, libusb, openssl }: +{ stdenv, fetchFromGitHub, cmake, zlib, libpng, bzip2, libusb, openssl }: -stdenv.mkDerivation { - name = "xpwn-0.5.8git"; +stdenv.mkDerivation rec { + pname = "xpwn"; + version = "0.5.8git"; - src = fetchgit { - url = "git://github.com/dborca/xpwn.git"; - rev = "4534da88d4e8a32cdc9da9b5326e2cc482c95ef0"; - sha256 = "1h1ak40fg5bym0hifpii9q2hqdp2m387cwfzb4bl6qq36xpkd6wv"; + src = fetchFromGitHub { + owner = "planetbeing"; + repo = pname; + rev = "ac362d4ffe4d0489a26144a1483ebf3b431da899"; + sha256 = "1qw9vbk463fpnvvvfgzxmn9add2p30k832s09mlycr7z1hrh3wyf"; }; preConfigure = '' @@ -18,7 +20,9 @@ stdenv.mkDerivation { sed -i -e '/install/d' CMakeLists.txt ''; - buildInputs = [ cmake zlib libpng bzip2 libusb openssl ]; + strictDeps = true; + nativeBuildInputs = [ cmake ]; + buildInputs = [ zlib libpng bzip2 libusb openssl ]; meta = with stdenv.lib; { homepage = "http://planetbeing.lighthouseapp.com/projects/15246-xpwn"; diff --git a/pkgs/development/python-modules/cheroot/default.nix b/pkgs/development/python-modules/cheroot/default.nix index 96602c624a47..8c55c3ac8bbb 100644 --- a/pkgs/development/python-modules/cheroot/default.nix +++ b/pkgs/development/python-modules/cheroot/default.nix @@ -1,18 +1,22 @@ -{ stdenv, fetchPypi, buildPythonPackage +{ stdenv, fetchPypi, buildPythonPackage, pythonAtLeast , more-itertools, six, setuptools_scm, setuptools-scm-git-archive , pytest, pytestcov, portend, pytest-testmon, pytest-mock , backports_unittest-mock, pyopenssl, requests, trustme, requests-unixsocket , backports_functools_lru_cache }: +let inherit (stdenv) lib; in + buildPythonPackage rec { pname = "cheroot"; - version = "6.5.5"; + version = "6.5.6"; src = fetchPypi { inherit pname version; - sha256 = "f6a85e005adb5bc5f3a92b998ff0e48795d4d98a0fbb7edde47a7513d4100601"; + sha256 = "b824f9961eb447809badeb051820a05770354e2f9ae5c355eecc21f22633c217"; }; + patches = [ ./tests.patch ]; + nativeBuildInputs = [ setuptools_scm setuptools-scm-git-archive ]; propagatedBuildInputs = [ more-itertools six backports_functools_lru_cache ]; @@ -20,14 +24,17 @@ buildPythonPackage rec { checkInputs = [ pytest pytestcov portend backports_unittest-mock pytest-mock pytest-testmon pyopenssl requests trustme requests-unixsocket ]; # Disable doctest plugin because times out + # Disable xdist (-n arg) because it's incompatible with testmon # Deselect test_bind_addr_unix on darwin because times out # Deselect test_http_over_https_error on darwin because builtin cert fails + # Disable warnings-as-errors because of deprecation warnings from socks on python 3.7 checkPhase = '' - substituteInPlace pytest.ini --replace "--doctest-modules" "" - pytest ${stdenv.lib.optionalString stdenv.isDarwin "--deselect=cheroot/test/test_ssl.py::test_http_over_https_error --deselect=cheroot/test/test_server.py::test_bind_addr_unix"} + substituteInPlace pytest.ini --replace "--doctest-modules" "" --replace "-n auto" "" + ${lib.optionalString (pythonAtLeast "3.7") "sed -i '/warnings/,+2d' pytest.ini"} + pytest ${lib.optionalString stdenv.isDarwin "--deselect=cheroot/test/test_ssl.py::test_http_over_https_error --deselect=cheroot/test/test_server.py::test_bind_addr_unix"} ''; - meta = with stdenv.lib; { + meta = with lib; { description = "High-performance, pure-Python HTTP"; homepage = https://github.com/cherrypy/cheroot; license = licenses.mit; diff --git a/pkgs/development/python-modules/cheroot/tests.patch b/pkgs/development/python-modules/cheroot/tests.patch new file mode 100644 index 000000000000..3de48a5a4684 --- /dev/null +++ b/pkgs/development/python-modules/cheroot/tests.patch @@ -0,0 +1,45 @@ +diff --git a/cheroot/test/test_ssl.py b/cheroot/test/test_ssl.py +index fe8a0a0..92a77c1 100644 +--- a/cheroot/test/test_ssl.py ++++ b/cheroot/test/test_ssl.py +@@ -316,11 +316,9 @@ def test_tls_client_auth( + expected_ssl_errors = ( + requests.exceptions.SSLError, + OpenSSL.SSL.Error, +- ) if PY34 else ( +- requests.exceptions.SSLError, ++ requests.exceptions.ConnectionError, + ) +- if IS_WINDOWS: +- expected_ssl_errors += requests.exceptions.ConnectionError, ++ + with pytest.raises(expected_ssl_errors) as ssl_err: + make_https_request() + +@@ -335,7 +333,7 @@ def test_tls_client_auth( + except AttributeError: + if PY34: + pytest.xfail('OpenSSL behaves wierdly under Python 3.4') +- elif six.PY3 and IS_WINDOWS: ++ elif six.PY3: + err_text = str(ssl_err.value) + else: + raise +@@ -348,8 +346,7 @@ def test_tls_client_auth( + if IS_MACOS and IS_PYPY and adapter_type == 'pyopenssl': + expected_substrings = ('tlsv1 alert unknown ca', ) + if ( +- IS_WINDOWS +- and tls_verify_mode in ( ++ tls_verify_mode in ( + ssl.CERT_REQUIRED, + ssl.CERT_OPTIONAL, + ) +@@ -361,6 +358,7 @@ def test_tls_client_auth( + "SysCallError(10054, 'WSAECONNRESET')", + "('Connection aborted.', " + 'OSError("(10054, \'WSAECONNRESET\')"))', ++ 'OSError("(104, \'ECONNRESET\')"))', + ) + assert any(e in err_text for e in expected_substrings) + diff --git a/pkgs/development/python-modules/pysocks/default.nix b/pkgs/development/python-modules/pysocks/default.nix index 0f4b2b688cd9..ae17ed351050 100644 --- a/pkgs/development/python-modules/pysocks/default.nix +++ b/pkgs/development/python-modules/pysocks/default.nix @@ -5,12 +5,12 @@ buildPythonPackage rec { pname = "pysocks"; - version = "1.6.8"; + version = "1.7.0"; src = fetchPypi { pname = "PySocks"; inherit version; - sha256 = "3fe52c55890a248676fd69dc9e3c4e811718b777834bcaab7a8125cf9deac672"; + sha256 = "0z4p31bpqm893cf87qqgb30k7nwd8kqfjwwjm5cvxb6zbyj1w0yr"; }; doCheck = false; diff --git a/pkgs/development/python-modules/sipsimple/default.nix b/pkgs/development/python-modules/sipsimple/default.nix index bf76166d73b4..7839a77f9f5e 100644 --- a/pkgs/development/python-modules/sipsimple/default.nix +++ b/pkgs/development/python-modules/sipsimple/default.nix @@ -1,6 +1,6 @@ -{ stdenv +{ lib , buildPythonPackage -, fetchdarcs +, fetchFromGitHub , isPy3k , pkgs , cython @@ -14,13 +14,14 @@ buildPythonPackage rec { pname = "sipsimple"; - version = "3.1.1"; + version = "3.4.2"; disabled = isPy3k; - src = fetchdarcs { - url = http://devel.ag-projects.com/repositories/python-sipsimple; + src = fetchFromGitHub { + owner = "AGProjects"; + repo = "python-sipsimple"; rev = "release-${version}"; - sha256 = "0jdilm11f5aahxrzrkxrfx9sgjgkbla1r0wayc5dzd2wmjrdjyrg"; + sha256 = "094xf343d6zjhg9jwbm3dr74zq264cyqnn22byvm2m88lnagmhmr"; }; preConfigure = '' @@ -32,7 +33,7 @@ buildPythonPackage rec { buildInputs = with pkgs; [ alsaLib ffmpeg libv4l sqlite libvpx ]; propagatedBuildInputs = [ cython pkgs.openssl dnspython dateutil xcaplib msrplib lxml python-otr ]; - meta = with stdenv.lib; { + meta = with lib; { description = "SIP SIMPLE implementation for Python"; homepage = http://sipsimpleclient.org/; license = licenses.gpl3; diff --git a/pkgs/development/tools/git-series/default.nix b/pkgs/development/tools/git-series/default.nix index 442ae4d15ec9..70fa18ceddb5 100644 --- a/pkgs/development/tools/git-series/default.nix +++ b/pkgs/development/tools/git-series/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, fetchpatch, rustPlatform, openssl, cmake, perl, pkgconfig, zlib }: +{ stdenv, fetchFromGitHub, fetchpatch, rustPlatform, openssl_1_0_2, cmake, perl, pkgconfig, zlib }: with rustPlatform; @@ -27,7 +27,7 @@ buildRustPackage rec { ''; nativeBuildInputs = [ cmake pkgconfig perl ]; - buildInputs = [ openssl zlib ]; + buildInputs = [ openssl_1_0_2 zlib ]; postBuild = '' install -D "$src/git-series.1" "$out/man/man1/git-series.1" diff --git a/pkgs/development/tools/osslsigncode/default.nix b/pkgs/development/tools/osslsigncode/default.nix index d49f649d18be..a867e3850e2e 100644 --- a/pkgs/development/tools/osslsigncode/default.nix +++ b/pkgs/development/tools/osslsigncode/default.nix @@ -3,7 +3,7 @@ , autoreconfHook , libgsf , pkgconfig -, openssl_1_1 +, openssl , curl }: @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { sha256 = "02jnbr3xdsb5dpll3k65080ryrfr7agawmjavwxd0v40w0an5yq8"; }; - nativeBuildInputs = [ autoreconfHook libgsf pkgconfig openssl_1_1 curl ]; + nativeBuildInputs = [ autoreconfHook libgsf pkgconfig openssl curl ]; meta = with stdenv.lib; { homepage = "https://github.com/mtrojnar/osslsigncode"; diff --git a/pkgs/misc/tw-rs/default.nix b/pkgs/misc/tw-rs/default.nix deleted file mode 100644 index 50fa1a9ef0ee..000000000000 --- a/pkgs/misc/tw-rs/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ stdenv, fetchFromGitHub, rustPlatform, perl, zlib, openssl, curl }: - -rustPlatform.buildRustPackage rec { - name = "tw-rs-${version}"; - version = "0.1.26"; - - src = fetchFromGitHub { - owner = "vmchale"; - repo = "tw-rs"; - rev = "${version}"; - sha256 = "1s1gk2wcs3792gdzrngksczz3gma5kv02ni2jqrhib8l6z8mg9ia"; - }; - - buildInputs = [ perl zlib openssl ] - ++ stdenv.lib.optional stdenv.isDarwin curl; - - cargoSha256 = "00v0b2vjal1dar4kwqk246k44mjyi1zp18hyj15dsww2972bm3b7"; - - meta = with stdenv.lib; { - description = "Twitter command-line interface written in rust"; - homepage = https://github.com/vmchale/tw-rs; - license = licenses.bsd3; - maintainers = with maintainers; [ vmchale ]; - platforms = platforms.all; - }; -} diff --git a/pkgs/servers/computing/torque/default.nix b/pkgs/servers/computing/torque/default.nix index 35c830dff8a5..5e78fe742ac3 100644 --- a/pkgs/servers/computing/torque/default.nix +++ b/pkgs/servers/computing/torque/default.nix @@ -1,46 +1,62 @@ -{ stdenv, fetchurl, openssl, flex, bison, pkgconfig, groff, libxml2, utillinux -, file, libtool, which }: +{ stdenv, fetchFromGitHub, openssl, flex, bison, pkgconfig, groff, libxml2, utillinux +, file, libtool, which, boost, autoreconfHook +}: stdenv.mkDerivation rec { - name = "torque-4.2.10"; + pname = "torque"; + version = "6.1.3h2"; - src = fetchurl { - name = "${name}.tar.gz"; - url = "http://www.adaptivecomputing.com/index.php?wpfb_dl=2880"; - sha256 = "1qpsk3bla6b6m7m0i1xpr183yj79liy3p34xhnz1grgq0776wg5l"; + src = fetchFromGitHub { + owner = "adaptivecomputing"; + repo = pname; + # branch 6.1.3h2, as they aren't pushing tags + # https://github.com/adaptivecomputing/torque/issues/467 + rev = "458883319157cfc5c509046d09f9eb8e68e8d398"; + sha256 = "1b56bc5j9wg87kcywzmhf7234byyrwax9v1pqsr9xmv2x7saakrr"; }; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ openssl flex bison groff libxml2 utillinux libtool - which ]; + strictDeps = true; + nativeBuildInputs = [ autoreconfHook pkgconfig flex bison libxml2 ]; + buildInputs = [ + openssl groff libxml2 utillinux libtool + which boost + ]; enableParallelBuilding = true; # added to fix build with gcc7 - NIX_CFLAGS_COMPILE = [ "-fpermissive" ]; + NIX_CFLAGS_COMPILE = [ + "-Wno-error" "-fpermissive" + ]; + + postPatch = '' + substituteInPlace Makefile.am \ + --replace "contrib/init.d contrib/systemd" "" + substituteInPlace src/cmds/Makefile.am \ + --replace "/etc/" "$out/etc/" + ''; preConfigure = '' - substituteInPlace ./configure \ - --replace '/usr/bin/file' '${file}/bin/file' + substituteInPlace ./configure \ + --replace '/usr/bin/file' '${file}/bin/file' - # fix broken libxml2 detection - sed -i '/xmlLib\=/c\xmlLib=xml2' ./configure + # fix broken libxml2 detection + sed -i '/xmlLib\=/c\xmlLib=xml2' ./configure - for s in fifo cray_t3e dec_cluster msic_cluster sgi_origin umn_cluster; do - substituteInPlace src/scheduler.cc/samples/$s/Makefile.in \ - --replace "schedprivdir = " "schedprivdir = $out/" - done + for s in fifo cray_t3e dec_cluster msic_cluster sgi_origin umn_cluster; do + substituteInPlace src/scheduler.cc/samples/$s/Makefile.in \ + --replace "schedprivdir = " "schedprivdir = $out/" + done - for f in $(find ./ -name Makefile.in); do - echo patching $f... - sed -i $f -e '/PBS_MKDIRS/d' -e '/chmod u+s/d' - done + for f in $(find ./ -name Makefile.in); do + echo patching $f... + sed -i $f -e '/PBS_MKDIRS/d' -e '/chmod u+s/d' + done + patchShebangs buildutils ''; postInstall = '' - mv $out/sbin/* $out/bin/ - rmdir $out/sbin cp -v buildutils/pbs_mkdirs $out/bin/ cp -v torque.setup $out/bin/ chmod +x $out/bin/pbs_mkdirs $out/bin/torque.setup @@ -50,5 +66,6 @@ stdenv.mkDerivation rec { homepage = http://www.adaptivecomputing.com/products/open-source/torque; description = "Resource management system for submitting and controlling jobs on supercomputers, clusters, and grids"; platforms = platforms.linux; + license = "TORQUEv1.1"; }; } diff --git a/pkgs/servers/dns/powerdns/default.nix b/pkgs/servers/dns/powerdns/default.nix index 105e9f232c16..3c63b6d8eb75 100644 --- a/pkgs/servers/dns/powerdns/default.nix +++ b/pkgs/servers/dns/powerdns/default.nix @@ -5,11 +5,11 @@ stdenv.mkDerivation rec { name = "powerdns-${version}"; - version = "4.1.10"; + version = "4.1.13"; src = fetchurl { url = "https://downloads.powerdns.com/releases/pdns-${version}.tar.bz2"; - sha256 = "1iqmrg0dhf39gr2mq9d8r3s5c6yqkb5mm8grbbla5anajbgcyijs"; + sha256 = "09az5yp5d9wvzw8faifyzsljhmmc8ifm4j70m4n2sr83i9i9rsp7"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/servers/nosql/rethinkdb/default.nix b/pkgs/servers/nosql/rethinkdb/default.nix index d6ee407e3418..a1a9072f5cab 100644 --- a/pkgs/servers/nosql/rethinkdb/default.nix +++ b/pkgs/servers/nosql/rethinkdb/default.nix @@ -61,5 +61,6 @@ stdenv.mkDerivation rec { license = stdenv.lib.licenses.agpl3; platforms = stdenv.lib.platforms.linux; maintainers = with stdenv.lib.maintainers; [ thoughtpolice bluescreen303 ]; + broken = true; # broken with openssl 1.1 }; } diff --git a/pkgs/servers/openxpki/default.nix b/pkgs/servers/openxpki/default.nix index 05ee7f343523..7bd0ee2eede1 100644 --- a/pkgs/servers/openxpki/default.nix +++ b/pkgs/servers/openxpki/default.nix @@ -78,5 +78,6 @@ perlPackages.buildPerlPackage { license = stdenv.lib.licenses.asl20; maintainers = with stdenv.lib.maintainers; [ tstrobel ]; platforms = with stdenv.lib.platforms; linux; + broken = true; # broken with openssl 1.1 (v2.x might fix this) }; } diff --git a/pkgs/servers/sql/postgresql/default.nix b/pkgs/servers/sql/postgresql/default.nix index 5421bfb0f2f6..7e536e22d947 100644 --- a/pkgs/servers/sql/postgresql/default.nix +++ b/pkgs/servers/sql/postgresql/default.nix @@ -3,7 +3,7 @@ let generic = # dependencies { stdenv, lib, fetchurl, makeWrapper - , glibc, zlib, readline, openssl, icu, systemd, libossp_uuid + , glibc, zlib, readline, openssl, openssl_1_0_2, icu, systemd, libossp_uuid , pkgconfig, libxml2, tzdata # This is important to obtain a version of `libpq` that does not depend on systemd. @@ -32,9 +32,10 @@ let setOutputFlags = false; # $out retains configureFlags :-/ buildInputs = - [ zlib readline openssl libxml2 makeWrapper ] + [ zlib readline libxml2 makeWrapper ] ++ lib.optionals icuEnabled [ icu ] ++ lib.optionals enableSystemd [ systemd ] + ++ [ (if atLeast "9.5" then openssl else openssl_1_0_2) ] ++ lib.optionals (!stdenv.isDarwin) [ libossp_uuid ]; nativeBuildInputs = lib.optionals icuEnabled [ pkgconfig ]; diff --git a/pkgs/servers/squid/4.nix b/pkgs/servers/squid/4.nix deleted file mode 100644 index 69a46533ba5d..000000000000 --- a/pkgs/servers/squid/4.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ stdenv, fetchurl, perl, openldap, pam, db, cyrus_sasl, libcap -, expat, libxml2, openssl }: - -stdenv.mkDerivation rec { - name = "squid-4.8"; - - src = fetchurl { - url = "http://www.squid-cache.org/Versions/v4/${name}.tar.xz"; - sha256 = "0432m0ix046rkja7r7qpydgsm2kf1w393xym15nx6h9kv4jb7kbq"; - }; - - buildInputs = [ - perl openldap db cyrus_sasl expat libxml2 openssl - ] ++ stdenv.lib.optionals stdenv.isLinux [ libcap pam ]; - - prePatch = '' - substituteInPlace configure --replace "/usr/local/include/libxml2" "${libxml2.dev}/include/libxml2" - ''; - - configureFlags = [ - "--enable-ipv6" - "--disable-strict-error-checking" - "--disable-arch-native" - "--with-openssl" - "--enable-ssl-crtd" - "--enable-storeio=ufs,aufs,diskd,rock" - "--enable-removal-policies=lru,heap" - "--enable-delay-pools" - "--enable-x-accelerator-vary" - ] ++ stdenv.lib.optional (stdenv.isLinux && !stdenv.hostPlatform.isMusl) "--enable-linux-netfilter"; - - meta = with stdenv.lib; { - description = "A caching proxy for the Web supporting HTTP, HTTPS, FTP, and more"; - homepage = http://www.squid-cache.org; - license = licenses.gpl2; - platforms = platforms.linux; - maintainers = with maintainers; [ fpletz raskin ]; - }; -} diff --git a/pkgs/servers/squid/default.nix b/pkgs/servers/squid/default.nix index fde29dc7e80c..72a7fff7c475 100644 --- a/pkgs/servers/squid/default.nix +++ b/pkgs/servers/squid/default.nix @@ -1,22 +1,16 @@ { stdenv, fetchurl, perl, openldap, pam, db, cyrus_sasl, libcap -, expat, libxml2, openssl, fetchpatch }: +, expat, libxml2, openssl, pkgconfig +}: stdenv.mkDerivation rec { - name = "squid-3.5.28"; + name = "squid-4.8"; src = fetchurl { - url = "http://www.squid-cache.org/Versions/v3/3.5/${name}.tar.xz"; - sha256 = "1n4f55g56b11qz4fazrnvgzx5wp6b6637c4qkbd1lrjwwqibchgx"; + url = "http://www.squid-cache.org/Versions/v4/${name}.tar.xz"; + sha256 = "0432m0ix046rkja7r7qpydgsm2kf1w393xym15nx6h9kv4jb7kbq"; }; - patches = [ - (fetchpatch { - name = "3.5-CVE-2019-13345.patch"; - url = "https://github.com/squid-cache/squid/commit/5730c2b5cb56e7639dc423dd62651c8736a54e35.patch"; - sha256 = "0955432g9a00vwxzcrwpjzx6vywspx1cxhr7bknr7jzbzam5sxi3"; - }) - ]; - + nativeBuildInputs = [ pkgconfig ]; buildInputs = [ perl openldap db cyrus_sasl expat libxml2 openssl ] ++ stdenv.lib.optionals stdenv.isLinux [ libcap pam ]; @@ -38,6 +32,6 @@ stdenv.mkDerivation rec { homepage = http://www.squid-cache.org; license = licenses.gpl2; platforms = platforms.linux; - maintainers = with maintainers; [ fpletz ]; + maintainers = with maintainers; [ fpletz raskin ]; }; } diff --git a/pkgs/shells/powershell/default.nix b/pkgs/shells/powershell/default.nix index a434ef7e4fb4..3a6eb6378f0a 100644 --- a/pkgs/shells/powershell/default.nix +++ b/pkgs/shells/powershell/default.nix @@ -1,5 +1,5 @@ { stdenv, autoPatchelfHook, fetchzip, libunwind, libuuid, icu, curl -, darwin, makeWrapper, less, openssl, pam, lttng-ust }: +, darwin, makeWrapper, less, openssl_1_0_2, pam, lttng-ust }: let platformString = if stdenv.isDarwin then "osx" else if stdenv.isLinux then "linux" @@ -10,7 +10,7 @@ let platformString = if stdenv.isDarwin then "osx" platformLdLibraryPath = if stdenv.isDarwin then "DYLD_FALLBACK_LIBRARY_PATH" else if stdenv.isLinux then "LD_LIBRARY_PATH" else throw "unsupported platform"; - libraries = [ libunwind libuuid icu curl openssl ] ++ + libraries = [ libunwind libuuid icu curl openssl_1_0_2 ] ++ (if stdenv.isLinux then [ pam lttng-ust ] else [ darwin.Libsystem ]); in stdenv.mkDerivation rec { diff --git a/pkgs/tools/backup/partimage/default.nix b/pkgs/tools/backup/partimage/default.nix index a2e962d7f855..4a18deeb57c8 100644 --- a/pkgs/tools/backup/partimage/default.nix +++ b/pkgs/tools/backup/partimage/default.nix @@ -1,4 +1,13 @@ -{stdenv, fetchurl, fetchpatch, bzip2, zlib, newt, openssl, pkgconfig, slang +{stdenv +, fetchurl +, fetchpatch +, bzip2 +, zlib +, newt +, openssl +, pkgconfig +, slang +, autoreconfHook }: stdenv.mkDerivation { name = "partimage-0.6.9"; @@ -8,20 +17,19 @@ stdenv.mkDerivation { url = mirror://sourceforge/partimage/partimage-0.6.9.tar.bz2; sha256 = "0db6xiphk6xnlpbxraiy31c5xzj0ql6k4rfkmqzh665yyj0nqfkm"; }; + configureFlags = [ "--with-ssl-headers=${openssl.dev}/include/openssl" ]; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [bzip2 zlib newt newt openssl slang - # automake autoconf libtool gettext - ]; + nativeBuildInputs = [ pkgconfig autoreconfHook ]; + buildInputs = [ bzip2 zlib newt newt openssl slang ]; patches = [ ./gentoos-zlib.patch (fetchpatch { - name = "no-SSLv2.patch"; - url = "https://projects.archlinux.org/svntogit/community.git/plain/trunk" - + "/use-SSLv3-by-default.patch?h=packages/partimage&id=7e95d1c6614e"; - sha256 = "17dfqwvwnkinz8vs0l3bjjbmfx3a7y8nv3wn67gjsqpmggcpdnd6"; + name = "openssl-1.1.patch"; + url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/sys-block/partimage/files/" + + "partimage-0.6.9-openssl-1.1-compatibility.patch?id=3fe8e9910002b6523d995512a646b063565d0447"; + sha256 = "1hs0krxrncxq1w36bhad02yk8yx71zcfs35cw87c82sl2sfwasjg"; }) ]; diff --git a/pkgs/tools/compression/xar/default.nix b/pkgs/tools/compression/xar/default.nix index 3421045fe4c6..a794296bfd95 100644 --- a/pkgs/tools/compression/xar/default.nix +++ b/pkgs/tools/compression/xar/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, libxml2, lzma, openssl, zlib, bzip2, fts }: +{ stdenv, fetchurl, libxml2, lzma, openssl, zlib, bzip2, fts, autoconf }: stdenv.mkDerivation rec { version = "1.6.1"; @@ -9,7 +9,15 @@ stdenv.mkDerivation rec { sha256 = "0ghmsbs6xwg1092v7pjcibmk5wkyifwxw6ygp08gfz25d2chhipf"; }; - buildInputs = [ libxml2 lzma openssl zlib bzip2 fts ]; + buildInputs = [ libxml2 lzma openssl zlib bzip2 fts autoconf ]; + + prePatch = '' + substituteInPlace configure.ac \ + --replace 'OpenSSL_add_all_ciphers' 'OPENSSL_init_crypto' \ + --replace 'openssl/evp.h' 'openssl/crypto.h' + ''; + + preConfigure = "./autogen.sh"; meta = { homepage = https://mackyle.github.io/xar/; diff --git a/pkgs/tools/misc/shallot/default.nix b/pkgs/tools/misc/shallot/default.nix index 6c757ca224a9..ced15038b0c1 100644 --- a/pkgs/tools/misc/shallot/default.nix +++ b/pkgs/tools/misc/shallot/default.nix @@ -1,12 +1,10 @@ -{ - stdenv, fetchFromGitHub, - openssl +{ stdenv, fetchFromGitHub, fetchpatch +, openssl }: -let +stdenv.mkDerivation rec { + pname = "shallot"; version = "0.0.3"; -in stdenv.mkDerivation { - name = "shallot-${version}"; src = fetchFromGitHub { owner = "katmagic"; @@ -17,6 +15,21 @@ in stdenv.mkDerivation { buildInputs = [ openssl ]; + patches = [ + (fetchpatch { + url = "https://github.com/katmagic/Shallot/commit/c913088dfaaaf249494514f20a62f2a17b5c6606.patch"; + sha256 = "19l1ppbxpdb0736f7plhybj08wh6rqk1lr3bxsp8jpzpnkh114b2"; + }) + (fetchpatch { + url = "https://github.com/katmagic/Shallot/commit/cd6628d97b981325e700a38f408a43df426fd569.patch"; + sha256 = "1gaffp5wp1l5p2qdk0ix3i5fhzpx4xphl0haa6ajhqn8db7hbr9y"; + }) + (fetchpatch { + url = "https://github.com/katmagic/Shallot/commit/5c7c1ccecbbad5a121c50ba7153cbbee7ee0ebf9.patch"; + sha256 = "1zmll4iqz39zwk8vj40n1dpvyq3403l64p2127gsjgh2l2v91s4k"; + }) + ]; + installPhase = '' mkdir -p $out/bin cp ./shallot $out/bin/ diff --git a/pkgs/tools/misc/vfdecrypt/default.nix b/pkgs/tools/misc/vfdecrypt/default.nix deleted file mode 100644 index 83b91f6203ed..000000000000 --- a/pkgs/tools/misc/vfdecrypt/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ stdenv, fetchFromGitHub, openssl }: - -stdenv.mkDerivation rec { - name = "vfdecrypt-${version}"; - version = "unstable-2010-08-13"; - - src = fetchFromGitHub { - owner = "Tomer1510"; - repo = "VFDecrypt"; - rev = "4e2fa32816254907e82886b936afcae9859a876c"; - sha256 = "0b945805f7f60bf48556c2db45c9ab26485fb05acbc6160a563d529b20cb56a3"; - }; - - buildInputs = [ openssl ]; - - installPhase = '' - mkdir -p $out/bin - cp vfdecrypt $out/bin - ''; - - meta = with stdenv.lib; { - description = "A cross platform dmg decryption tool"; - license = licenses.mit; - inherit (src.meta) homepage; - }; -} diff --git a/pkgs/tools/networking/dsniff/default.nix b/pkgs/tools/networking/dsniff/default.nix index 50a3c98af0f7..9ddc1a35ce37 100644 --- a/pkgs/tools/networking/dsniff/default.nix +++ b/pkgs/tools/networking/dsniff/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitLab, autoreconfHook, libpcap, db, glib, libnet, libnids, symlinkJoin, openssl_1_1 }: +{ stdenv, fetchFromGitLab, autoreconfHook, libpcap, db, glib, libnet, libnids, symlinkJoin, openssl }: let /* dsniff's build system unconditionnaly wants static libraries and does not @@ -33,8 +33,8 @@ let dontDisableStatic = true; }); ssl = symlinkJoin { - inherit (openssl_1_1) name; - paths = with openssl_1_1.override { static = true; }; [ out dev ]; + inherit (openssl) name; + paths = with openssl.override { static = true; }; [ out dev ]; }; in stdenv.mkDerivation { pname = "dsniff"; diff --git a/pkgs/tools/networking/mailsend/default.nix b/pkgs/tools/networking/mailsend/default.nix index 642fd739335a..c888f354eae7 100644 --- a/pkgs/tools/networking/mailsend/default.nix +++ b/pkgs/tools/networking/mailsend/default.nix @@ -22,6 +22,13 @@ stdenv.mkDerivation { configureFlags = [ "--with-openssl=${openssl.dev}" ]; + + patches = [ + (fetchurl { + url = https://github.com/muquit/mailsend/commit/960df6d7a11eef90128dc2ae660866b27f0e4336.patch; + sha256 = "0vz373zcfl19inflybfjwshcq06rvhx0i5g0f4b021cxfhyb1sm0"; + }) + ]; meta = { inherit (s) version; description = ''CLI email sending tool''; diff --git a/pkgs/tools/networking/p2p/libtorrent/default.nix b/pkgs/tools/networking/p2p/libtorrent/default.nix index 524b75d5582d..f750e3b1bfe1 100644 --- a/pkgs/tools/networking/p2p/libtorrent/default.nix +++ b/pkgs/tools/networking/p2p/libtorrent/default.nix @@ -1,8 +1,8 @@ # NOTE: this is rakshava's version of libtorrent, used mainly by rtorrent # This is NOT libtorrent-rasterbar, used by Deluge, qbitttorent, and others -{ stdenv, fetchFromGitHub, pkgconfig -, libtool, autoconf, automake, cppunit -, openssl, libsigcxx, zlib }: +{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook +, cppunit, openssl, libsigcxx, zlib +}: stdenv.mkDerivation rec { pname = "libtorrent"; @@ -15,10 +15,8 @@ stdenv.mkDerivation rec { sha256 = "1h5y6ab3gs20yyprdfwcw8fh1c6czs4yrdj0kf54d2vp9qwz685r"; }; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ libtool autoconf automake cppunit openssl libsigcxx zlib ]; - - preConfigure = "./autogen.sh"; + nativeBuildInputs = [ pkgconfig autoreconfHook ]; + buildInputs = [ cppunit openssl libsigcxx zlib ]; meta = with stdenv.lib; { homepage = "https://github.com/rakshasa/libtorrent"; diff --git a/pkgs/tools/networking/radsecproxy/default.nix b/pkgs/tools/networking/radsecproxy/default.nix index 0ed1150159d2..9901194f3c62 100644 --- a/pkgs/tools/networking/radsecproxy/default.nix +++ b/pkgs/tools/networking/radsecproxy/default.nix @@ -1,15 +1,18 @@ -{ stdenv, fetchurl, openssl }: +{ stdenv, fetchFromGitHub, openssl, autoreconfHook, nettle }: stdenv.mkDerivation rec { - name = "radsecproxy-${version}"; - version = "1.6.9"; + pname = "radsecproxy"; + version = "1.8.0"; - src = fetchurl { - url = "https://software.nordu.net/radsecproxy/radsecproxy-${version}.tar.xz"; - sha256 = "6f2c7030236c222782c9ac2c52778baa63540a1865b75a7a6d8c1280ce6ad816"; + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = version; + sha256 = "1268lbysa82b6h0101jzs0v6ixvmy3x0d0a8hw37sy95filsjmia"; }; - buildInputs = [ openssl ]; + nativeBuildInputs = [ autoreconfHook ]; + buildInputs = [ openssl nettle ]; configureFlags = [ "--with-ssl=${openssl.dev}" diff --git a/pkgs/tools/networking/socat/2.x.nix b/pkgs/tools/networking/socat/2.x.nix index 11af161893fb..99f0301c7c86 100644 --- a/pkgs/tools/networking/socat/2.x.nix +++ b/pkgs/tools/networking/socat/2.x.nix @@ -19,5 +19,6 @@ stdenv.mkDerivation rec { platforms = platforms.unix; license = licenses.gpl2; maintainers = [ maintainers.eelco ]; + broken = true; # broken with openssl 1.1 }; } diff --git a/pkgs/tools/networking/uwimap/default.nix b/pkgs/tools/networking/uwimap/default.nix index 7cb489a3f213..ad9eea0ecedd 100644 --- a/pkgs/tools/networking/uwimap/default.nix +++ b/pkgs/tools/networking/uwimap/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, pam, openssl}: +{ stdenv, fetchurl, fetchpatch, pam, openssl }: stdenv.mkDerivation { name = "uw-imap-2007f"; @@ -19,7 +19,12 @@ stdenv.mkDerivation { buildInputs = [ openssl ] ++ stdenv.lib.optional (!stdenv.isDarwin) pam; - patchPhase = '' + patches = [ (fetchpatch { + url = "https://anonscm.debian.org/cgit/collab-maint/uw-imap.git/plain/debian/patches/1006_openssl1.1_autoverify.patch?id=b4df81d246a6cdbfd035c21f43e844effda3582b"; + sha256 = "09xb58awvkhzmmjhrkqgijzgv7ia381ablf0y7i1rvhcqkb5wga7"; + }) ]; + + postPatch = '' sed -i src/osdep/unix/Makefile -e 's,/usr/local/ssl,${openssl.dev},' sed -i src/osdep/unix/Makefile -e 's,^SSLCERTS=.*,SSLCERTS=/etc/ssl/certs,' sed -i src/osdep/unix/Makefile -e 's,^SSLLIB=.*,SSLLIB=${openssl.out}/lib,' diff --git a/pkgs/tools/package-management/cargo-download/Cargo.nix b/pkgs/tools/package-management/cargo-download/Cargo.nix index 9735bde199dc..21740ce2ead1 100644 --- a/pkgs/tools/package-management/cargo-download/Cargo.nix +++ b/pkgs/tools/package-management/cargo-download/Cargo.nix @@ -1,3138 +1,675 @@ -# Generated by carnix 0.7.2: carnix nix -{ lib, buildPlatform, buildRustCrate, fetchgit }: -let kernel = buildPlatform.parsed.kernel.name; - abi = buildPlatform.parsed.abi.name; - include = includedFiles: src: builtins.filterSource (path: type: - lib.lists.any (f: - let p = toString (src + ("/" + f)); in - (path == p) || (type == "directory" && lib.strings.hasPrefix path p) - ) includedFiles - ) src; - updateFeatures = f: up: functions: builtins.deepSeq f (lib.lists.foldl' (features: fun: fun features) (lib.attrsets.recursiveUpdate f up) functions); - mapFeatures = features: map (fun: fun { features = features; }); - mkFeatures = feat: lib.lists.foldl (features: featureName: - if feat.${featureName} or false then - [ featureName ] ++ features - else - features - ) [] (builtins.attrNames feat); +# Generated by carnix 0.10.0: carnix generate-nix +{ lib, buildPlatform, buildRustCrate, buildRustCrateHelpers, cratesIO, fetchgit }: +with buildRustCrateHelpers; +let inherit (lib.lists) fold; + inherit (lib.attrsets) recursiveUpdate; in rec { - cargo_download = f: cargo_download_0_1_1 { features = cargo_download_0_1_1_features { cargo_download_0_1_1 = f; }; }; + crates = cratesIO; + cargo_download = crates.crates.cargo_download."0.1.2" deps; __all = [ (cargo_download {}) ]; - adler32_1_0_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "adler32"; - version = "1.0.3"; - authors = [ "Remi Rampin " ]; - sha256 = "1z3mvjgw02mbqk98kizzibrca01d5wfkpazsrp3vkkv3i56pn6fb"; - inherit dependencies buildDependencies features; - }; - aho_corasick_0_5_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "aho-corasick"; - version = "0.5.3"; - authors = [ "Andrew Gallant " ]; - sha256 = "1igab46mvgknga3sxkqc917yfff0wsjxjzabdigmh240p5qxqlnn"; - libName = "aho_corasick"; - crateBin = [ { name = "aho-corasick-dot"; } ]; - inherit dependencies buildDependencies features; - }; - ansi_term_0_9_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "ansi_term"; - version = "0.9.0"; - authors = [ "ogham@bsago.me" "Ryan Scheel (Havvy) " ]; - sha256 = "1vcd8m2hglrdi4zmqnkkz5zy3c73ifgii245k7vj6qr5dzpn9hij"; - inherit dependencies buildDependencies features; - }; - ansi_term_0_11_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "ansi_term"; - version = "0.11.0"; - authors = [ "ogham@bsago.me" "Ryan Scheel (Havvy) " "Josh Triplett " ]; - sha256 = "08fk0p2xvkqpmz3zlrwnf6l8sj2vngw464rvzspzp31sbgxbwm4v"; - inherit dependencies buildDependencies features; - }; - arrayvec_0_4_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "arrayvec"; - version = "0.4.7"; - authors = [ "bluss" ]; - sha256 = "0fzgv7z1x1qnyd7j32vdcadk4k9wfx897y06mr3bw1yi52iqf4z4"; - inherit dependencies buildDependencies features; - }; - atty_0_2_11_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "atty"; - version = "0.2.11"; - authors = [ "softprops " ]; - sha256 = "0by1bj2km9jxi4i4g76zzi76fc2rcm9934jpnyrqd95zw344pb20"; - inherit dependencies buildDependencies features; - }; - base64_0_9_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "base64"; - version = "0.9.2"; - authors = [ "Alice Maz " "Marshall Pierce " ]; - sha256 = "0g4xxl8jhwjhvr69qlxdmbzd521xcn5j67lhkr20nh7ajvl6k0l1"; - inherit dependencies buildDependencies features; - }; - bitflags_0_9_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "bitflags"; - version = "0.9.1"; - authors = [ "The Rust Project Developers" ]; - sha256 = "18h073l5jd88rx4qdr95fjddr9rk79pb1aqnshzdnw16cfmb9rws"; - inherit dependencies buildDependencies features; - }; - bitflags_1_0_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "bitflags"; - version = "1.0.3"; - authors = [ "The Rust Project Developers" ]; - sha256 = "162p4w4h1ad76awq6b5yivmls3d50m9cl27d8g588lsps6g8s5rw"; - inherit dependencies buildDependencies features; - }; - build_const_0_2_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "build_const"; - version = "0.2.1"; - authors = [ "Garrett Berg " ]; - sha256 = "15249xzi3qlm72p4glxgavwyq70fx2sp4df6ii0sdlrixrrp77pl"; - inherit dependencies buildDependencies features; - }; - byteorder_1_2_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "byteorder"; - version = "1.2.3"; - authors = [ "Andrew Gallant " ]; - sha256 = "1xghv5f5rydzsam8lnfqhfk090i8a1knb77ikbs0ik44bvrw2ij3"; - inherit dependencies buildDependencies features; - }; - bytes_0_4_9_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "bytes"; - version = "0.4.9"; - authors = [ "Carl Lerche " ]; - sha256 = "1jiqc94j85la9vs165vqpf6s1sah8n3ivnhsfapcjrvbhjawi6i6"; - inherit dependencies buildDependencies features; - }; - cargo_download_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "cargo-download"; - version = "0.1.1"; - authors = [ "Karol Kuczmarski " ]; - sha256 = "1xiffk4df6i9cvwimzwyf1finv6w8f8gr0zjp21fzbiz5c0ksx65"; - crateBin = [ { name = "cargo-download"; } ]; - inherit dependencies buildDependencies features; - }; - case_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "case"; - version = "0.1.0"; - authors = [ "Skyler Lipthay " ]; - sha256 = "06i1x3wqv30rkvlgj134qf9vzxhzz28bz41mm0rgki0i0f7gf96n"; - inherit dependencies buildDependencies features; - }; - cc_1_0_18_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "cc"; - version = "1.0.18"; - authors = [ "Alex Crichton " ]; - sha256 = "0wcnpa54qvm5921wwrrkn8cwxd5y0p5f4gb1qgyh5imii7rdhpjx"; - inherit dependencies buildDependencies features; - }; - cfg_if_0_1_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "cfg-if"; - version = "0.1.4"; - authors = [ "Alex Crichton " ]; - sha256 = "0n5baxk53dvqjymzwynq55wb805b24390qx1n16zi8fjzq90j7k4"; - inherit dependencies buildDependencies features; - }; - chrono_0_2_25_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "chrono"; - version = "0.2.25"; - authors = [ "Kang Seonghoon " ]; - sha256 = "0gsvqk8cnmm43qj3xyngqvfqh50cbdbqas7ik0wjgnvknirmmca7"; - inherit dependencies buildDependencies features; - }; - clap_2_32_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "clap"; - version = "2.32.0"; - authors = [ "Kevin K. " ]; - sha256 = "1hdjf0janvpjkwrjdjx1mm2aayzr54k72w6mriyr0n5anjkcj1lx"; - inherit dependencies buildDependencies features; - }; - conv_0_3_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "conv"; - version = "0.3.3"; - authors = [ "Daniel Keep " ]; - sha256 = "08rl72k1a48xah0ar5l9v1bw19pp8jdw2pdkd3vvj9ijsyyg9yik"; - inherit dependencies buildDependencies features; - }; - core_foundation_0_2_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "core-foundation"; - version = "0.2.3"; - authors = [ "The Servo Project Developers" ]; - sha256 = "1g0vpya5h2wa0nlz4a74jar6y8z09f0p76zbzfqrm3dbfsrld1pm"; - inherit dependencies buildDependencies features; - }; - core_foundation_sys_0_2_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "core-foundation-sys"; - version = "0.2.3"; - authors = [ "The Servo Project Developers" ]; - sha256 = "19s0d03294m9s5j8cvy345db3gkhs2y02j5268ap0c6ky5apl53s"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - crc_1_8_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "crc"; - version = "1.8.1"; - authors = [ "Rui Hu " ]; - sha256 = "00m9jjqrddp3bqyanvyxv0hf6s56bx1wy51vcdcxg4n2jdhg109s"; - inherit dependencies buildDependencies features; - }; - crossbeam_0_2_12_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "crossbeam"; - version = "0.2.12"; - authors = [ "Aaron Turon " ]; - sha256 = "0jkm95is7bwv4parwfq4aim6cigiwd4w9hz09cpild4hp5ry625i"; - inherit dependencies buildDependencies features; - }; - crossbeam_deque_0_3_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "crossbeam-deque"; - version = "0.3.1"; - authors = [ "The Crossbeam Project Developers" ]; - sha256 = "1km0mavyp9ddwb7k7kcdmyryi3bwxf0nmr6jqcpyjzvzmxjlkqap"; - inherit dependencies buildDependencies features; - }; - crossbeam_epoch_0_4_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "crossbeam-epoch"; - version = "0.4.3"; - authors = [ "The Crossbeam Project Developers" ]; - sha256 = "18xfgi7h9aq4lqqrqzy366xg885z1hlkbhvycl2i3zhkhkvadhv3"; - inherit dependencies buildDependencies features; - }; - crossbeam_utils_0_3_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "crossbeam-utils"; - version = "0.3.2"; - authors = [ "The Crossbeam Project Developers" ]; - sha256 = "1byx31nkxl48la58571h40ssk94faky26jwz15w40v2gba3v4fql"; - inherit dependencies buildDependencies features; - }; - custom_derive_0_1_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "custom_derive"; - version = "0.1.7"; - authors = [ "Daniel Keep " ]; - sha256 = "160q3pzri2fgrr6czfdkwy1sbddki2za96r7ivvyii52qp1523zs"; - inherit dependencies buildDependencies features; - }; - derive_error_0_0_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "derive-error"; - version = "0.0.3"; - authors = [ "rushmorem " ]; - sha256 = "0239vzxn5xr9nm3i4d6hmqy7dv8llcjblgh1xixfk5dcgcqan77y"; - procMacro = true; - inherit dependencies buildDependencies features; - }; - dtoa_0_4_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "dtoa"; - version = "0.4.3"; - authors = [ "David Tolnay " ]; - sha256 = "1xysdxdm24sk5ysim7lps4r2qaxfnj0sbakhmps4d42yssx30cw8"; - inherit dependencies buildDependencies features; - }; - either_1_5_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "either"; - version = "1.5.0"; - authors = [ "bluss" ]; - sha256 = "1f7kl2ln01y02m8fpd2zrdjiwqmgfvl9nxxrfry3k19d1gd2bsvz"; - inherit dependencies buildDependencies features; - }; - encoding_rs_0_7_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "encoding_rs"; - version = "0.7.2"; - authors = [ "Henri Sivonen " ]; - sha256 = "1c23bi3q4qmi2ci8g7p5j4b4i5abyggvyg6hkl7w4p4r527c9g3q"; - inherit dependencies buildDependencies features; - }; - exitcode_1_1_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "exitcode"; - version = "1.1.2"; - authors = [ "Ben Wilber " ]; - sha256 = "1cw9p4vzbscvyrbzv7z68gv2cairrns2d4wcb4nkahkcjk25phip"; - inherit dependencies buildDependencies features; - }; - filetime_0_2_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "filetime"; - version = "0.2.1"; - authors = [ "Alex Crichton " ]; - sha256 = "1wmbj3jnpl39851lymw64j9ac1nmy1z96h1wymvlvypspl68w5y0"; - inherit dependencies buildDependencies features; - }; - flate2_0_2_20_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "flate2"; - version = "0.2.20"; - authors = [ "Alex Crichton " ]; - sha256 = "1am0d2vmqym1vcg7rvv516vpcrbhdn1jisy0q03r3nbzdzh54ppl"; - inherit dependencies buildDependencies features; - }; - foreign_types_0_3_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "foreign-types"; - version = "0.3.2"; - authors = [ "Steven Fackler " ]; - sha256 = "105n8sp2djb1s5lzrw04p7ss3dchr5qa3canmynx396nh3vwm2p8"; - inherit dependencies buildDependencies features; - }; - foreign_types_shared_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "foreign-types-shared"; - version = "0.1.1"; - authors = [ "Steven Fackler " ]; - sha256 = "0b6cnvqbflws8dxywk4589vgbz80049lz4x1g9dfy4s1ppd3g4z5"; - inherit dependencies buildDependencies features; - }; - fuchsia_zircon_0_3_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "fuchsia-zircon"; - version = "0.3.3"; - authors = [ "Raph Levien " ]; - sha256 = "0jrf4shb1699r4la8z358vri8318w4mdi6qzfqy30p2ymjlca4gk"; - inherit dependencies buildDependencies features; - }; - fuchsia_zircon_sys_0_3_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "fuchsia-zircon-sys"; - version = "0.3.3"; - authors = [ "Raph Levien " ]; - sha256 = "08jp1zxrm9jbrr6l26bjal4dbm8bxfy57ickdgibsqxr1n9j3hf5"; - inherit dependencies buildDependencies features; - }; - futures_0_1_23_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "futures"; - version = "0.1.23"; - authors = [ "Alex Crichton " ]; - sha256 = "075s7sv1iqzf2r3lvb4hk81k5c9xzfcyb8q92h2s35fnypxyqd21"; - inherit dependencies buildDependencies features; - }; - futures_cpupool_0_1_8_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "futures-cpupool"; - version = "0.1.8"; - authors = [ "Alex Crichton " ]; - sha256 = "0ficd31n5ljiixy6x0vjglhq4fp0v1p4qzxm3v6ymsrb3z080l5c"; - inherit dependencies buildDependencies features; - }; - httparse_1_3_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "httparse"; - version = "1.3.2"; - authors = [ "Sean McArthur " ]; - sha256 = "1mm10m2hv1inxzzvm85s6fdmwl9a3q9vik0nzh5qrx2hx5x8fcwl"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - hyper_0_11_27_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "hyper"; - version = "0.11.27"; - authors = [ "Sean McArthur " ]; - sha256 = "0q5as4lhvh31bzk4qm7j84snrmxyxyaqk040rfk72b42dn98mryi"; - inherit dependencies buildDependencies features; - }; - hyper_tls_0_1_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "hyper-tls"; - version = "0.1.3"; - authors = [ "Sean McArthur " ]; - sha256 = "1dr5arj79pdyz9f2jggqmna1qpc578f9pdgsf2ana5amjpsp0j89"; - inherit dependencies buildDependencies features; - }; - idna_0_1_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "idna"; - version = "0.1.5"; - authors = [ "The rust-url developers" ]; - sha256 = "1gwgl19rz5vzi67rrhamczhxy050f5ynx4ybabfapyalv7z1qmjy"; - inherit dependencies buildDependencies features; - }; - iovec_0_1_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "iovec"; - version = "0.1.2"; - authors = [ "Carl Lerche " ]; - sha256 = "0vjymmb7wj4v4kza5jjn48fcdb85j3k37y7msjl3ifz0p9yiyp2r"; - inherit dependencies buildDependencies features; - }; - isatty_0_1_8_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "isatty"; - version = "0.1.8"; - authors = [ "David Tolnay " ]; - sha256 = "1n5wzzkb1kxkfbcyv5vfrsybika0a1k01sp06ngad73ljx4kwj5h"; - inherit dependencies buildDependencies features; - }; - itertools_0_6_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "itertools"; - version = "0.6.5"; - authors = [ "bluss" ]; - sha256 = "0gbhgn7s8qkxxw10i514fzpqnc3aissn4kcgylm2cvnv9zmg8mw1"; - inherit dependencies buildDependencies features; - }; - itoa_0_4_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "itoa"; - version = "0.4.2"; - authors = [ "David Tolnay " ]; - sha256 = "193a744yd74rmk13hl8xvd9p2hqhdkyf8xkvi1mxm5s10bby0h8v"; - inherit dependencies buildDependencies features; - }; - kernel32_sys_0_2_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "kernel32-sys"; - version = "0.2.2"; - authors = [ "Peter Atashian " ]; - sha256 = "1lrw1hbinyvr6cp28g60z97w32w8vsk6pahk64pmrv2fmby8srfj"; - libName = "kernel32"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - language_tags_0_2_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "language-tags"; - version = "0.2.2"; - authors = [ "Pyfisch " ]; - sha256 = "1zkrdzsqzzc7509kd7nngdwrp461glm2g09kqpzaqksp82frjdvy"; - inherit dependencies buildDependencies features; - }; - lazy_static_0_2_11_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "lazy_static"; - version = "0.2.11"; - authors = [ "Marvin Löbel " ]; - sha256 = "1x6871cvpy5b96yv4c7jvpq316fp5d4609s9py7qk6cd6x9k34vm"; - inherit dependencies buildDependencies features; - }; - lazy_static_1_0_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "lazy_static"; - version = "1.0.2"; - authors = [ "Marvin Löbel " ]; - sha256 = "0ix4dmy6zb4v3m75l4alg84fk06y145z52z9pyysc9labw2x5r3r"; - inherit dependencies buildDependencies features; - }; - lazycell_0_6_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "lazycell"; - version = "0.6.0"; - authors = [ "Alex Crichton " "Nikita Pekin " ]; - sha256 = "1ax148clinbvp6alxcih8s5i2bg3mc5mi69n3hvzvzbwlm6k532r"; - inherit dependencies buildDependencies features; - }; - libc_0_2_42_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "libc"; - version = "0.2.42"; - authors = [ "The Rust Project Developers" ]; - sha256 = "064v49hz1zpl081w8c4vwikrkhaxp06y4i9l7x7wx6bjpwp19pjx"; - inherit dependencies buildDependencies features; - }; - libflate_0_1_16_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "libflate"; - version = "0.1.16"; - authors = [ "Takeru Ohta " ]; - sha256 = "0l15g61h10bznxsjirwq9c43w17mjpqx6wz0357agskardkdh14n"; - inherit dependencies buildDependencies features; - }; - log_0_3_9_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "log"; - version = "0.3.9"; - authors = [ "The Rust Project Developers" ]; - sha256 = "19i9pwp7lhaqgzangcpw00kc3zsgcqcx84crv07xgz3v7d3kvfa2"; - inherit dependencies buildDependencies features; - }; - log_0_4_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "log"; - version = "0.4.3"; - authors = [ "The Rust Project Developers" ]; - sha256 = "1gdmwrbm7s18zcdz4lcdhz975m4gwhi854c7j1rvj1gsr8aca250"; - inherit dependencies buildDependencies features; - }; - maplit_0_1_6_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "maplit"; - version = "0.1.6"; - authors = [ "bluss" ]; - sha256 = "1f8kf5v7xra8ssvh5c10qlacbk4l0z2817pkscflx5s5q6y7925h"; - inherit dependencies buildDependencies features; - }; - matches_0_1_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "matches"; - version = "0.1.7"; - authors = [ "Simon Sapin " ]; - sha256 = "0zx9gi5flyzkh9nx52fyc3k2zz08b9ww1c4yndlfrw72kr8m7yfy"; - libPath = "lib.rs"; - inherit dependencies buildDependencies features; - }; - memchr_0_1_11_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "memchr"; - version = "0.1.11"; - authors = [ "Andrew Gallant " "bluss" ]; - sha256 = "0x73jghamvxxq5fsw9wb0shk5m6qp3q6fsf0nibn0i6bbqkw91s8"; - inherit dependencies buildDependencies features; - }; - memoffset_0_2_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "memoffset"; - version = "0.2.1"; - authors = [ "Gilad Naaman " ]; - sha256 = "00vym01jk9slibq2nsiilgffp7n6k52a4q3n4dqp0xf5kzxvffcf"; - inherit dependencies buildDependencies features; - }; - mime_0_3_8_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "mime"; - version = "0.3.8"; - authors = [ "Sean McArthur " ]; - sha256 = "1577adg9zvkd1qdb2nqqg1ryap33p5r4qsw01n9pw162xpisqjm3"; - inherit dependencies buildDependencies features; - }; - mime_guess_2_0_0_alpha_6_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "mime_guess"; - version = "2.0.0-alpha.6"; - authors = [ "Austin Bonander " ]; - sha256 = "1k2mdq43gi2qr63b7m5zs624rfi40ysk33cay49jlhq97jwnk9db"; - inherit dependencies buildDependencies features; - }; - miniz_sys_0_1_10_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "miniz-sys"; - version = "0.1.10"; - authors = [ "Alex Crichton " ]; - sha256 = "11vg6phafxil87nbxgrlhcx5hjr3145wsbwwkfmibvnmzxfdmvln"; - libPath = "lib.rs"; - libName = "miniz_sys"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - mio_0_6_15_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "mio"; - version = "0.6.15"; - authors = [ "Carl Lerche " ]; - sha256 = "0a93wxsmkh8x38wxivhn6qdj08pj9f0j3y46p4wv3xclbq8i4aaa"; - inherit dependencies buildDependencies features; - }; - miow_0_2_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "miow"; - version = "0.2.1"; - authors = [ "Alex Crichton " ]; - sha256 = "14f8zkc6ix7mkyis1vsqnim8m29b6l55abkba3p2yz7j1ibcvrl0"; - inherit dependencies buildDependencies features; - }; - native_tls_0_1_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "native-tls"; - version = "0.1.5"; - authors = [ "Steven Fackler " ]; - sha256 = "11f75qmbny5pnn6zp0vlvadrvc9ph9qsxiyn4n6q02xyd93pxxlf"; - inherit dependencies buildDependencies features; - }; - net2_0_2_33_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "net2"; - version = "0.2.33"; - authors = [ "Alex Crichton " ]; - sha256 = "1qnmajafgybj5wyxz9iffa8x5wgbwd2znfklmhqj7vl6lw1m65mq"; - inherit dependencies buildDependencies features; - }; - nodrop_0_1_12_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "nodrop"; - version = "0.1.12"; - authors = [ "bluss" ]; - sha256 = "1b9rxvdg8061gxjc239l9slndf0ds3m6fy2sf3gs8f9kknqgl49d"; - inherit dependencies buildDependencies features; - }; - num_0_1_42_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "num"; - version = "0.1.42"; - authors = [ "The Rust Project Developers" ]; - sha256 = "1632gczzrmmxdsj3jignwcr793jq8vxw3qkdzpdvbip3vaf1ljgq"; - inherit dependencies buildDependencies features; - }; - num_integer_0_1_39_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "num-integer"; - version = "0.1.39"; - authors = [ "The Rust Project Developers" ]; - sha256 = "1f42ls46cghs13qfzgbd7syib2zc6m7hlmv1qlar6c9mdxapvvbg"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - num_iter_0_1_37_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "num-iter"; - version = "0.1.37"; - authors = [ "The Rust Project Developers" ]; - sha256 = "1rglyvi4yjfxfvfm2s7i60g1dkl5xmsyi77g6vy53jb11r6wl8ly"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - num_traits_0_2_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "num-traits"; - version = "0.2.5"; - authors = [ "The Rust Project Developers" ]; - sha256 = "0ql203ca6lzppksy4fsfnpz3kq96vwlwvyn3ahvnd9g6k9f5ncj0"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - num_cpus_1_8_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "num_cpus"; - version = "1.8.0"; - authors = [ "Sean McArthur " ]; - sha256 = "1y6qnd9r8ga6y8mvlabdrr73nc8cshjjlzbvnanzyj9b8zzkfwk2"; - inherit dependencies buildDependencies features; - }; - openssl_0_9_24_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "openssl"; - version = "0.9.24"; - authors = [ "Steven Fackler " ]; - sha256 = "0wzm3c11g3ndaqyzq36mcdcm1q4a8pmsyi33ibybhjz28g2z0f79"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - openssl_sys_0_9_33_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "openssl-sys"; - version = "0.9.33"; - authors = [ "Alex Crichton " "Steven Fackler " ]; - sha256 = "1q5f7ykkxgniwjrqifx1ssrqjzcf8fi4fzh770xrbyp8n6v14qr6"; - build = "build/main.rs"; - inherit dependencies buildDependencies features; - }; - percent_encoding_1_0_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "percent-encoding"; - version = "1.0.1"; - authors = [ "The rust-url developers" ]; - sha256 = "04ahrp7aw4ip7fmadb0bknybmkfav0kk0gw4ps3ydq5w6hr0ib5i"; - libPath = "lib.rs"; - inherit dependencies buildDependencies features; - }; - phf_0_7_22_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "phf"; - version = "0.7.22"; - authors = [ "Steven Fackler " ]; - sha256 = "0b58l863rhmqyqsfj2d89nmdzc21g9yvvvq1m4c3a615zpcykb3i"; - libPath = "src/lib.rs"; - inherit dependencies buildDependencies features; - }; - phf_codegen_0_7_22_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "phf_codegen"; - version = "0.7.22"; - authors = [ "Steven Fackler " ]; - sha256 = "0k8yx4gr9m6cfrvh21s6bhnh1azz13j4xih88bvm06r6blfl89fs"; - inherit dependencies buildDependencies features; - }; - phf_generator_0_7_22_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "phf_generator"; - version = "0.7.22"; - authors = [ "Steven Fackler " ]; - sha256 = "093gla320qb6rbk8z7wqqxl79zrh874sa7sxir31q2p7mrw4b70k"; - inherit dependencies buildDependencies features; - }; - phf_shared_0_7_22_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "phf_shared"; - version = "0.7.22"; - authors = [ "Steven Fackler " ]; - sha256 = "0ij9flicfi0ab5vpzdwbizpdyxhk891qxa8nxsqlv4sg4abqang6"; - libPath = "src/lib.rs"; - inherit dependencies buildDependencies features; - }; - pkg_config_0_3_12_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "pkg-config"; - version = "0.3.12"; - authors = [ "Alex Crichton " ]; - sha256 = "0k343rlyv9qmplxwxn8clzkyx1zbplhnvm0psjl6s111fjqmgsgh"; - inherit dependencies buildDependencies features; - }; - quote_0_3_15_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "quote"; - version = "0.3.15"; - authors = [ "David Tolnay " ]; - sha256 = "09il61jv4kd1360spaj46qwyl21fv1qz18fsv2jra8wdnlgl5jsg"; - inherit dependencies buildDependencies features; - }; - rand_0_3_22_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "rand"; - version = "0.3.22"; - authors = [ "The Rust Project Developers" ]; - sha256 = "0wrj12acx7l4hr7ag3nz8b50yhp8ancyq988bzmnnsxln67rsys0"; - inherit dependencies buildDependencies features; - }; - rand_0_4_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "rand"; - version = "0.4.2"; - authors = [ "The Rust Project Developers" ]; - sha256 = "0h8pkg23wb67i8904sm76iyr1jlmhklb85vbpz9c9191a24xzkfm"; - inherit dependencies buildDependencies features; - }; - redox_syscall_0_1_40_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "redox_syscall"; - version = "0.1.40"; - authors = [ "Jeremy Soller " ]; - sha256 = "132rnhrq49l3z7gjrwj2zfadgw6q0355s6a7id7x7c0d7sk72611"; - libName = "syscall"; - inherit dependencies buildDependencies features; - }; - redox_termios_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "redox_termios"; - version = "0.1.1"; - authors = [ "Jeremy Soller " ]; - sha256 = "04s6yyzjca552hdaqlvqhp3vw0zqbc304md5czyd3axh56iry8wh"; - libPath = "src/lib.rs"; - inherit dependencies buildDependencies features; - }; - regex_0_1_80_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "regex"; - version = "0.1.80"; - authors = [ "The Rust Project Developers" ]; - sha256 = "0y4s8ghhx6sgzb35irwivm3w0l2hhqhmdcd2px9hirqnkagal9l6"; - inherit dependencies buildDependencies features; - }; - regex_syntax_0_3_9_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "regex-syntax"; - version = "0.3.9"; - authors = [ "The Rust Project Developers" ]; - sha256 = "1mzhphkbwppwd1zam2jkgjk550cqgf6506i87bw2yzrvcsraiw7m"; - inherit dependencies buildDependencies features; - }; - relay_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "relay"; - version = "0.1.1"; - authors = [ "Sean McArthur " ]; - sha256 = "16csfaslbmj25iaxs88p8wcfh2zfpkh9isg9adid0nxjxvknh07r"; - inherit dependencies buildDependencies features; - }; - remove_dir_all_0_5_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "remove_dir_all"; - version = "0.5.1"; - authors = [ "Aaronepower " ]; - sha256 = "1chx3yvfbj46xjz4bzsvps208l46hfbcy0sm98gpiya454n4rrl7"; - inherit dependencies buildDependencies features; - }; - reqwest_0_8_6_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "reqwest"; - version = "0.8.6"; - authors = [ "Sean McArthur " ]; - sha256 = "0ka9ndgybhf65fn44badnjbasn1fi0mvjfa3sfiw485mgg21n3a0"; - inherit dependencies buildDependencies features; - }; - safemem_0_2_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "safemem"; - version = "0.2.0"; - authors = [ "Austin Bonander " ]; - sha256 = "058m251q202n479ip1h6s91yw3plg66vsk5mpaflssn6rs5hijdm"; - inherit dependencies buildDependencies features; - }; - schannel_0_1_13_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "schannel"; - version = "0.1.13"; - authors = [ "Steven Fackler " "Steffen Butzer " ]; - sha256 = "033zavvq2k6z5akk38vzaglzbxzljaixgmhj9am27nr21dgaj6b3"; - inherit dependencies buildDependencies features; - }; - scoped_tls_0_1_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "scoped-tls"; - version = "0.1.2"; - authors = [ "Alex Crichton " ]; - sha256 = "0nblksgki698cqsclsnd6f1pq4yy34350dn2slaah9dlmx9z5xla"; - inherit dependencies buildDependencies features; - }; - scopeguard_0_3_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "scopeguard"; - version = "0.3.3"; - authors = [ "bluss" ]; - sha256 = "0i1l013csrqzfz6c68pr5pi01hg5v5yahq8fsdmaxy6p8ygsjf3r"; - inherit dependencies buildDependencies features; - }; - security_framework_0_1_16_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "security-framework"; - version = "0.1.16"; - authors = [ "Steven Fackler " ]; - sha256 = "1kxczsaj8gz4922jl5af2gkxh71rasb6khaf3dp7ldlnw9qf2sbm"; - inherit dependencies buildDependencies features; - }; - security_framework_sys_0_1_16_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "security-framework-sys"; - version = "0.1.16"; - authors = [ "Steven Fackler " ]; - sha256 = "0ai2pivdr5fyc7czbkpcrwap0imyy0r8ndarrl3n5kiv0jha1js3"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - semver_0_9_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "semver"; - version = "0.9.0"; - authors = [ "Steve Klabnik " "The Rust Project Developers" ]; - sha256 = "0azak2lb2wc36s3x15az886kck7rpnksrw14lalm157rg9sc9z63"; - inherit dependencies buildDependencies features; - }; - semver_parser_0_7_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "semver-parser"; - version = "0.7.0"; - authors = [ "Steve Klabnik " ]; - sha256 = "1da66c8413yakx0y15k8c055yna5lyb6fr0fw9318kdwkrk5k12h"; - inherit dependencies buildDependencies features; - }; - serde_1_0_70_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "serde"; - version = "1.0.70"; - authors = [ "Erick Tryzelaar " "David Tolnay " ]; - sha256 = "1z1gyjf5rrs1k3j1civfzqjqs790651bwf8m31bw2pagclhnazs4"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - serde_json_1_0_24_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "serde_json"; - version = "1.0.24"; - authors = [ "Erick Tryzelaar " "David Tolnay " ]; - sha256 = "1wvvc3y0202my2p00ah8ygl1794nspar9pf39fz1525jd6m6k8a1"; - inherit dependencies buildDependencies features; - }; - serde_urlencoded_0_5_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "serde_urlencoded"; - version = "0.5.2"; - authors = [ "Anthony Ramine " ]; - sha256 = "0m5pigng0665qrk4ii1z84pb4lchbsswhgb863yglljskmm056m0"; - inherit dependencies buildDependencies features; - }; - siphasher_0_2_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "siphasher"; - version = "0.2.2"; - authors = [ "Frank Denis " ]; - sha256 = "0iyx7nlzfny9ly1634a6zcq0yvrinhxhypwas4p8ry3zqnn76qqr"; - inherit dependencies buildDependencies features; - }; - slab_0_3_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "slab"; - version = "0.3.0"; - authors = [ "Carl Lerche " ]; - sha256 = "0y6lhjggksh57hyfd3l6p9wgv5nhvw9c6djrysq7jnalz8fih21k"; - inherit dependencies buildDependencies features; - }; - slab_0_4_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "slab"; - version = "0.4.0"; - authors = [ "Carl Lerche " ]; - sha256 = "1qy2vkgwqgj5z4ygdkh040n9yh1vz80v5flxb1xrvw3i4wxs7yx0"; - inherit dependencies buildDependencies features; - }; - slog_1_7_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "slog"; - version = "1.7.1"; - authors = [ "Dawid Ciężarkiewicz " ]; - sha256 = "1qhnwv2gbxmnwasaa0vlhddq6cdhq6n3l8d6h3ql73367h7aav65"; - inherit dependencies buildDependencies features; - }; - slog_envlogger_0_5_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "slog-envlogger"; - version = "0.5.0"; - authors = [ "The Rust Project Developers" "Dawid Ciężarkiewicz " ]; - sha256 = "0ry9k2ppj7z6prdz2kf924w7l9y2kbysrigca6shni1kz2j163qb"; - libPath = "src/lib.rs"; - inherit dependencies buildDependencies features; - }; - slog_extra_0_1_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "slog-extra"; - version = "0.1.2"; - authors = [ "Dawid Ciężarkiewicz " ]; - sha256 = "0jrw0xcc81wwcl59xx9qglfcv5l3ad5kbpcyp6ygk94p9kxfrhyj"; - libPath = "lib.rs"; - inherit dependencies buildDependencies features; - }; - slog_stdlog_1_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "slog-stdlog"; - version = "1.1.0"; - authors = [ "Dawid Ciężarkiewicz " ]; - sha256 = "0ig4mjixr4y3dn3s53rlnrpplwkqb8b0z2zkaiiiwyv7nhjxdg46"; - libPath = "lib.rs"; - inherit dependencies buildDependencies features; - }; - slog_stream_1_2_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "slog-stream"; - version = "1.2.1"; - authors = [ "Dawid Ciężarkiewicz " ]; - sha256 = "03dwzbydaamfzjpr16gm065i696lk86gqcpspv5qaqyv938fm2yj"; - libPath = "lib.rs"; - inherit dependencies buildDependencies features; - }; - slog_term_1_5_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "slog-term"; - version = "1.5.0"; - authors = [ "Dawid Ciężarkiewicz " ]; - sha256 = "0zq2kyvm7jhqj6sc09w540wqfrrpa46yxf9sgzq7jqpkr66wsiar"; - libPath = "lib.rs"; - inherit dependencies buildDependencies features; - }; - smallvec_0_2_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "smallvec"; - version = "0.2.1"; - authors = [ "Simon Sapin " ]; - sha256 = "0rnsll9af52bpjngz0067dpm1ndqmh76i64a58fc118l4lvnjxw2"; - libPath = "lib.rs"; - inherit dependencies buildDependencies features; - }; - strsim_0_7_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "strsim"; - version = "0.7.0"; - authors = [ "Danny Guo " ]; - sha256 = "0fy0k5f2705z73mb3x9459bpcvrx4ky8jpr4zikcbiwan4bnm0iv"; - inherit dependencies buildDependencies features; - }; - syn_0_11_11_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "syn"; - version = "0.11.11"; - authors = [ "David Tolnay " ]; - sha256 = "0yw8ng7x1dn5a6ykg0ib49y7r9nhzgpiq2989rqdp7rdz3n85502"; - inherit dependencies buildDependencies features; - }; - synom_0_11_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "synom"; - version = "0.11.3"; - authors = [ "David Tolnay " ]; - sha256 = "1l6d1s9qjfp6ng2s2z8219igvlv7gyk8gby97sdykqc1r93d8rhc"; - inherit dependencies buildDependencies features; - }; - take_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "take"; - version = "0.1.0"; - authors = [ "Carl Lerche " ]; - sha256 = "17rfh39di5n8w9aghpic2r94cndi3dr04l60nkjylmxfxr3iwlhd"; - inherit dependencies buildDependencies features; - }; - tar_0_4_16_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tar"; - version = "0.4.16"; - authors = [ "Alex Crichton " ]; - sha256 = "0s36d0nzn2hs20y805wpmpc4asd1jhrpabqwcpqf5ha442fa7f3b"; - inherit dependencies buildDependencies features; - }; - tempdir_0_3_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tempdir"; - version = "0.3.7"; - authors = [ "The Rust Project Developers" ]; - sha256 = "0y53sxybyljrr7lh0x0ysrsa7p7cljmwv9v80acy3rc6n97g67vy"; - inherit dependencies buildDependencies features; - }; - termion_1_5_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "termion"; - version = "1.5.1"; - authors = [ "ticki " "gycos " "IGI-111 " ]; - sha256 = "02gq4vd8iws1f3gjrgrgpajsk2bk43nds5acbbb4s8dvrdvr8nf1"; - inherit dependencies buildDependencies features; - }; - textwrap_0_10_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "textwrap"; - version = "0.10.0"; - authors = [ "Martin Geisler " ]; - sha256 = "1s8d5cna12smhgj0x2y1xphklyk2an1yzbadnj89p1vy5vnjpsas"; - inherit dependencies buildDependencies features; - }; - thread_id_2_0_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "thread-id"; - version = "2.0.0"; - authors = [ "Ruud van Asseldonk " ]; - sha256 = "06i3c8ckn97i5rp16civ2vpqbknlkx66dkrl070iw60nawi0kjc3"; - inherit dependencies buildDependencies features; - }; - thread_local_0_2_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "thread_local"; - version = "0.2.7"; - authors = [ "Amanieu d'Antras " ]; - sha256 = "19p0zrs24rdwjvpi10jig5ms3sxj00pv8shkr9cpddri8cdghqp7"; - inherit dependencies buildDependencies features; - }; - thread_local_0_3_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "thread_local"; - version = "0.3.5"; - authors = [ "Amanieu d'Antras " ]; - sha256 = "0mkp0sp91aqsk7brgygai4igv751r1754rsxn37mig3ag5rx8np6"; - inherit dependencies buildDependencies features; - }; - time_0_1_40_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "time"; - version = "0.1.40"; - authors = [ "The Rust Project Developers" ]; - sha256 = "0wgnbjamljz6bqxsd5axc4p2mmhkqfrryj4gf2yswjaxiw5dd01m"; - inherit dependencies buildDependencies features; - }; - tokio_0_1_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio"; - version = "0.1.7"; - authors = [ "Carl Lerche " ]; - sha256 = "0d5fj90wk05m5vbd924irg1pl1d4fn86jjw5napzanh6vbwsnr66"; - inherit dependencies buildDependencies features; - }; - tokio_codec_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-codec"; - version = "0.1.0"; - authors = [ "Carl Lerche " "Bryan Burgers " ]; - sha256 = "0347ygccbj05yn9krjk4ifcy5xbv41xk7yyi9cl2cnxrc285xnm7"; - inherit dependencies buildDependencies features; - }; - tokio_core_0_1_17_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-core"; - version = "0.1.17"; - authors = [ "Carl Lerche " ]; - sha256 = "1j6c5q3aakvb1hjx4r95xwl5ms8rp19k4qsr6v6ngwbvr6f9z6rs"; - inherit dependencies buildDependencies features; - }; - tokio_executor_0_1_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-executor"; - version = "0.1.2"; - authors = [ "Carl Lerche " ]; - sha256 = "1y4mwqjw438x6jskigz1knvfbpbinxfv6h43s60w6wdb80xmyg48"; - inherit dependencies buildDependencies features; - }; - tokio_fs_0_1_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-fs"; - version = "0.1.2"; - authors = [ "Carl Lerche " ]; - sha256 = "18rxwslv2hdmij6alpqfcm8aywcd28vw12s826ajgvkskh8jsdh2"; - inherit dependencies buildDependencies features; - }; - tokio_io_0_1_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-io"; - version = "0.1.7"; - authors = [ "Carl Lerche " ]; - sha256 = "08r46b5lp7929agwal1iaabdhfv309wyvd6cld1g39x5ml8x7hp2"; - inherit dependencies buildDependencies features; - }; - tokio_proto_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-proto"; - version = "0.1.1"; - authors = [ "Carl Lerche " ]; - sha256 = "030q9h8pn1ngm80klff5irglxxki60hf5maw0mppmmr46k773z66"; - inherit dependencies buildDependencies features; - }; - tokio_reactor_0_1_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-reactor"; - version = "0.1.2"; - authors = [ "Carl Lerche " ]; - sha256 = "11yx7fvyv1c5h097lspfrim1r67axl8y8m22y5mgny8nhly56s4m"; - inherit dependencies buildDependencies features; - }; - tokio_service_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-service"; - version = "0.1.0"; - authors = [ "Carl Lerche " ]; - sha256 = "0c85wm5qz9fabg0k6k763j89m43n6max72d3a8sxcs940id6qmih"; - inherit dependencies buildDependencies features; - }; - tokio_tcp_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-tcp"; - version = "0.1.0"; - authors = [ "Carl Lerche " ]; - sha256 = "19cyajkqvvbn3qqnak0qzivdq6amfjymbc30k7bbqhx4y1pcgqvh"; - inherit dependencies buildDependencies features; - }; - tokio_threadpool_0_1_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-threadpool"; - version = "0.1.5"; - authors = [ "Carl Lerche " ]; - sha256 = "04nzjdjlir33s0z5nh3vh2h4v3vb1rwzv45jdjridrk92rqpb2vc"; - inherit dependencies buildDependencies features; - }; - tokio_timer_0_2_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-timer"; - version = "0.2.4"; - authors = [ "Carl Lerche " ]; - sha256 = "0imv1k4g583hh61qkh6mpx06ik9accyl4582vq0z61rr484050gi"; - inherit dependencies buildDependencies features; - }; - tokio_tls_0_1_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-tls"; - version = "0.1.4"; - authors = [ "Carl Lerche " "Alex Crichton " ]; - sha256 = "07rwv3q6jbg65ln1ahzb4g648l8lcn4hvc0ax3r12bnsi1py7agp"; - inherit dependencies buildDependencies features; - }; - tokio_udp_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "tokio-udp"; - version = "0.1.1"; - authors = [ "Carl Lerche " ]; - sha256 = "1zsq3bny959dq7cnhdjrlaglrdcm63zn82jpkjs6nrrcfhb9l6z9"; - inherit dependencies buildDependencies features; - }; - try_lock_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "try-lock"; - version = "0.1.0"; - authors = [ "Sean McArthur " ]; - sha256 = "0kfrqrb2xkjig54s3qfy80dpldknr19p3rmp0n82yk5929j879k3"; - inherit dependencies buildDependencies features; - }; - unicase_1_4_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "unicase"; - version = "1.4.2"; - authors = [ "Sean McArthur " ]; - sha256 = "0rbnhw2mnhcwrij3vczp0sl8zdfmvf2dlh8hly81kj7132kfj0mf"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - unicase_2_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "unicase"; - version = "2.1.0"; - authors = [ "Sean McArthur " ]; - sha256 = "1zzn16hh8fdx5pnbbnl32q8m2mh4vpd1jm9pdcv969ik83dw4byp"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - unicode_bidi_0_3_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "unicode-bidi"; - version = "0.3.4"; - authors = [ "The Servo Project Developers" ]; - sha256 = "0lcd6jasrf8p9p0q20qyf10c6xhvw40m2c4rr105hbk6zy26nj1q"; - libName = "unicode_bidi"; - inherit dependencies buildDependencies features; - }; - unicode_normalization_0_1_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "unicode-normalization"; - version = "0.1.7"; - authors = [ "kwantam " ]; - sha256 = "1da2hv800pd0wilmn4idwpgv5p510hjxizjcfv6xzb40xcsjd8gs"; - inherit dependencies buildDependencies features; - }; - unicode_width_0_1_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "unicode-width"; - version = "0.1.5"; - authors = [ "kwantam " ]; - sha256 = "0886lc2aymwgy0lhavwn6s48ik3c61ykzzd3za6prgnw51j7bi4w"; - inherit dependencies buildDependencies features; - }; - unicode_xid_0_0_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "unicode-xid"; - version = "0.0.4"; - authors = [ "erick.tryzelaar " "kwantam " ]; - sha256 = "1dc8wkkcd3s6534s5aw4lbjn8m67flkkbnajp5bl8408wdg8rh9v"; - inherit dependencies buildDependencies features; - }; - unreachable_1_0_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "unreachable"; - version = "1.0.0"; - authors = [ "Jonathan Reem " ]; - sha256 = "1am8czbk5wwr25gbp2zr007744fxjshhdqjz9liz7wl4pnv3whcf"; - inherit dependencies buildDependencies features; - }; - url_1_7_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "url"; - version = "1.7.1"; - authors = [ "The rust-url developers" ]; - sha256 = "1l36pbvlwdnh3zqz4wp5n6jg332wkis9pi2g3vy12xr8k4nfyk8i"; - inherit dependencies buildDependencies features; - }; - utf8_ranges_0_1_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "utf8-ranges"; - version = "0.1.3"; - authors = [ "Andrew Gallant " ]; - sha256 = "1cj548a91a93j8375p78qikaiam548xh84cb0ck8y119adbmsvbp"; - inherit dependencies buildDependencies features; - }; - uuid_0_6_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "uuid"; - version = "0.6.5"; - authors = [ "Ashley Mannix" "Christopher Armstrong" "Dylan DPC" "Hunar Roop Kahlon" ]; - sha256 = "1jy15m4yxxwma0jsy070garhbgfprky23i77rawjkk75vqhnnhlf"; - inherit dependencies buildDependencies features; - }; - vcpkg_0_2_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "vcpkg"; - version = "0.2.4"; - authors = [ "Jim McGrath " ]; - sha256 = "0xgk5axv1qhj4rfn2rca7768wnvzihccnajkgc6im8ndsx371nml"; - inherit dependencies buildDependencies features; - }; - vec_map_0_8_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "vec_map"; - version = "0.8.1"; - authors = [ "Alex Crichton " "Jorge Aparicio " "Alexis Beingessner " "Brian Anderson <>" "tbu- <>" "Manish Goregaokar <>" "Aaron Turon " "Adolfo Ochagavía <>" "Niko Matsakis <>" "Steven Fackler <>" "Chase Southwood " "Eduard Burtescu <>" "Florian Wilkens <>" "Félix Raimundo <>" "Tibor Benke <>" "Markus Siemens " "Josh Branchaud " "Huon Wilson " "Corey Farwell " "Aaron Liblong <>" "Nick Cameron " "Patrick Walton " "Felix S Klock II <>" "Andrew Paseltiner " "Sean McArthur " "Vadim Petrochenkov <>" ]; - sha256 = "1jj2nrg8h3l53d43rwkpkikq5a5x15ms4rf1rw92hp5lrqhi8mpi"; - inherit dependencies buildDependencies features; - }; - version_check_0_1_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "version_check"; - version = "0.1.4"; - authors = [ "Sergio Benitez " ]; - sha256 = "1ghi6bw2qsj53x2vyprs883dbrq8cjzmshlamjsxvmwd2zp13bck"; - inherit dependencies buildDependencies features; - }; - void_1_0_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "void"; - version = "1.0.2"; - authors = [ "Jonathan Reem " ]; - sha256 = "0h1dm0dx8dhf56a83k68mijyxigqhizpskwxfdrs1drwv2cdclv3"; - inherit dependencies buildDependencies features; - }; - want_0_0_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "want"; - version = "0.0.4"; - authors = [ "Sean McArthur " ]; - sha256 = "1l1qy4pvg5q71nrzfjldw9xzqhhgicj4slly1bal89hr2aaibpy0"; - inherit dependencies buildDependencies features; - }; - winapi_0_2_8_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "winapi"; - version = "0.2.8"; - authors = [ "Peter Atashian " ]; - sha256 = "0a45b58ywf12vb7gvj6h3j264nydynmzyqz8d8rqxsj6icqv82as"; - inherit dependencies buildDependencies features; - }; - winapi_0_3_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "winapi"; - version = "0.3.5"; - authors = [ "Peter Atashian " ]; - sha256 = "0cfdsxa5yf832r5i2z7dhdvnryyvhfp3nb32gpcaq502zgjdm3w6"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - winapi_build_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "winapi-build"; - version = "0.1.1"; - authors = [ "Peter Atashian " ]; - sha256 = "1lxlpi87rkhxcwp2ykf1ldw3p108hwm24nywf3jfrvmff4rjhqga"; - libName = "build"; - inherit dependencies buildDependencies features; - }; - winapi_i686_pc_windows_gnu_0_4_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "winapi-i686-pc-windows-gnu"; - version = "0.4.0"; - authors = [ "Peter Atashian " ]; - sha256 = "05ihkij18r4gamjpxj4gra24514can762imjzlmak5wlzidplzrp"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - winapi_x86_64_pc_windows_gnu_0_4_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "winapi-x86_64-pc-windows-gnu"; - version = "0.4.0"; - authors = [ "Peter Atashian " ]; - sha256 = "0n1ylmlsb8yg1v583i4xy0qmqg42275flvbc51hdqjjfjcl9vlbj"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - ws2_32_sys_0_2_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "ws2_32-sys"; - version = "0.2.1"; - authors = [ "Peter Atashian " ]; - sha256 = "1zpy9d9wk11sj17fczfngcj28w4xxjs3b4n036yzpy38dxp4f7kc"; - libName = "ws2_32"; - build = "build.rs"; - inherit dependencies buildDependencies features; - }; - xattr_0_2_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate { - crateName = "xattr"; - version = "0.2.2"; - authors = [ "Steven Allen " ]; - sha256 = "01zqnn6bhrd58hvpj3y1nqnbmlswrvsdapn2zbi7h1bh5lspiyk5"; - inherit dependencies buildDependencies features; - }; - adler32_1_0_3 = { features?(adler32_1_0_3_features {}) }: adler32_1_0_3_ {}; - adler32_1_0_3_features = f: updateFeatures f (rec { - adler32_1_0_3.default = (f.adler32_1_0_3.default or true); - }) []; - aho_corasick_0_5_3 = { features?(aho_corasick_0_5_3_features {}) }: aho_corasick_0_5_3_ { - dependencies = mapFeatures features ([ memchr_0_1_11 ]); - }; - aho_corasick_0_5_3_features = f: updateFeatures f (rec { - aho_corasick_0_5_3.default = (f.aho_corasick_0_5_3.default or true); - memchr_0_1_11.default = true; - }) [ memchr_0_1_11_features ]; - ansi_term_0_9_0 = { features?(ansi_term_0_9_0_features {}) }: ansi_term_0_9_0_ {}; - ansi_term_0_9_0_features = f: updateFeatures f (rec { - ansi_term_0_9_0.default = (f.ansi_term_0_9_0.default or true); - }) []; - ansi_term_0_11_0 = { features?(ansi_term_0_11_0_features {}) }: ansi_term_0_11_0_ { - dependencies = (if kernel == "windows" then mapFeatures features ([ winapi_0_3_5 ]) else []); - }; - ansi_term_0_11_0_features = f: updateFeatures f (rec { - ansi_term_0_11_0.default = (f.ansi_term_0_11_0.default or true); - winapi_0_3_5.consoleapi = true; - winapi_0_3_5.default = true; - winapi_0_3_5.errhandlingapi = true; - winapi_0_3_5.processenv = true; - }) [ winapi_0_3_5_features ]; - arrayvec_0_4_7 = { features?(arrayvec_0_4_7_features {}) }: arrayvec_0_4_7_ { - dependencies = mapFeatures features ([ nodrop_0_1_12 ]); - features = mkFeatures (features.arrayvec_0_4_7 or {}); - }; - arrayvec_0_4_7_features = f: updateFeatures f (rec { - arrayvec_0_4_7.default = (f.arrayvec_0_4_7.default or true); - arrayvec_0_4_7.serde = - (f.arrayvec_0_4_7.serde or false) || - (f.arrayvec_0_4_7.serde-1 or false) || - (arrayvec_0_4_7.serde-1 or false); - arrayvec_0_4_7.std = - (f.arrayvec_0_4_7.std or false) || - (f.arrayvec_0_4_7.default or false) || - (arrayvec_0_4_7.default or false); - nodrop_0_1_12.default = (f.nodrop_0_1_12.default or false); - }) [ nodrop_0_1_12_features ]; - atty_0_2_11 = { features?(atty_0_2_11_features {}) }: atty_0_2_11_ { - dependencies = (if kernel == "redox" then mapFeatures features ([ termion_1_5_1 ]) else []) - ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_42 ]) else []) - ++ (if kernel == "windows" then mapFeatures features ([ winapi_0_3_5 ]) else []); - }; - atty_0_2_11_features = f: updateFeatures f (rec { - atty_0_2_11.default = (f.atty_0_2_11.default or true); - libc_0_2_42.default = (f.libc_0_2_42.default or false); - termion_1_5_1.default = true; - winapi_0_3_5.consoleapi = true; - winapi_0_3_5.default = true; - winapi_0_3_5.minwinbase = true; - winapi_0_3_5.minwindef = true; - winapi_0_3_5.processenv = true; - winapi_0_3_5.winbase = true; - }) [ termion_1_5_1_features libc_0_2_42_features winapi_0_3_5_features ]; - base64_0_9_2 = { features?(base64_0_9_2_features {}) }: base64_0_9_2_ { - dependencies = mapFeatures features ([ byteorder_1_2_3 safemem_0_2_0 ]); - }; - base64_0_9_2_features = f: updateFeatures f (rec { - base64_0_9_2.default = (f.base64_0_9_2.default or true); - byteorder_1_2_3.default = true; - safemem_0_2_0.default = true; - }) [ byteorder_1_2_3_features safemem_0_2_0_features ]; - bitflags_0_9_1 = { features?(bitflags_0_9_1_features {}) }: bitflags_0_9_1_ { - features = mkFeatures (features.bitflags_0_9_1 or {}); - }; - bitflags_0_9_1_features = f: updateFeatures f (rec { - bitflags_0_9_1.default = (f.bitflags_0_9_1.default or true); - bitflags_0_9_1.example_generated = - (f.bitflags_0_9_1.example_generated or false) || - (f.bitflags_0_9_1.default or false) || - (bitflags_0_9_1.default or false); - }) []; - bitflags_1_0_3 = { features?(bitflags_1_0_3_features {}) }: bitflags_1_0_3_ { - features = mkFeatures (features.bitflags_1_0_3 or {}); - }; - bitflags_1_0_3_features = f: updateFeatures f (rec { - bitflags_1_0_3.default = (f.bitflags_1_0_3.default or true); - }) []; - build_const_0_2_1 = { features?(build_const_0_2_1_features {}) }: build_const_0_2_1_ { - features = mkFeatures (features.build_const_0_2_1 or {}); - }; - build_const_0_2_1_features = f: updateFeatures f (rec { - build_const_0_2_1.default = (f.build_const_0_2_1.default or true); - build_const_0_2_1.std = - (f.build_const_0_2_1.std or false) || - (f.build_const_0_2_1.default or false) || - (build_const_0_2_1.default or false); - }) []; - byteorder_1_2_3 = { features?(byteorder_1_2_3_features {}) }: byteorder_1_2_3_ { - features = mkFeatures (features.byteorder_1_2_3 or {}); - }; - byteorder_1_2_3_features = f: updateFeatures f (rec { - byteorder_1_2_3.default = (f.byteorder_1_2_3.default or true); - byteorder_1_2_3.std = - (f.byteorder_1_2_3.std or false) || - (f.byteorder_1_2_3.default or false) || - (byteorder_1_2_3.default or false); - }) []; - bytes_0_4_9 = { features?(bytes_0_4_9_features {}) }: bytes_0_4_9_ { - dependencies = mapFeatures features ([ byteorder_1_2_3 iovec_0_1_2 ]); - features = mkFeatures (features.bytes_0_4_9 or {}); - }; - bytes_0_4_9_features = f: updateFeatures f (rec { - byteorder_1_2_3.default = true; - byteorder_1_2_3.i128 = - (f.byteorder_1_2_3.i128 or false) || - (bytes_0_4_9.i128 or false) || - (f.bytes_0_4_9.i128 or false); - bytes_0_4_9.default = (f.bytes_0_4_9.default or true); - iovec_0_1_2.default = true; - }) [ byteorder_1_2_3_features iovec_0_1_2_features ]; - cargo_download_0_1_1 = { features?(cargo_download_0_1_1_features {}) }: cargo_download_0_1_1_ { - dependencies = mapFeatures features ([ ansi_term_0_9_0 clap_2_32_0 conv_0_3_3 derive_error_0_0_3 exitcode_1_1_2 flate2_0_2_20 isatty_0_1_8 itertools_0_6_5 lazy_static_0_2_11 log_0_3_9 maplit_0_1_6 reqwest_0_8_6 semver_0_9_0 serde_json_1_0_24 slog_1_7_1 slog_envlogger_0_5_0 slog_stdlog_1_1_0 slog_stream_1_2_1 tar_0_4_16 time_0_1_40 ]); - }; - cargo_download_0_1_1_features = f: updateFeatures f (rec { - ansi_term_0_9_0.default = true; - cargo_download_0_1_1.default = (f.cargo_download_0_1_1.default or true); - clap_2_32_0.default = true; - conv_0_3_3.default = true; - derive_error_0_0_3.default = true; - exitcode_1_1_2.default = true; - flate2_0_2_20.default = true; - isatty_0_1_8.default = true; - itertools_0_6_5.default = true; - lazy_static_0_2_11.default = true; - log_0_3_9.default = true; - maplit_0_1_6.default = true; - reqwest_0_8_6.default = true; - semver_0_9_0.default = true; - serde_json_1_0_24.default = true; - slog_1_7_1.default = true; - slog_envlogger_0_5_0.default = true; - slog_stdlog_1_1_0.default = true; - slog_stream_1_2_1.default = true; - tar_0_4_16.default = true; - time_0_1_40.default = true; - }) [ ansi_term_0_9_0_features clap_2_32_0_features conv_0_3_3_features derive_error_0_0_3_features exitcode_1_1_2_features flate2_0_2_20_features isatty_0_1_8_features itertools_0_6_5_features lazy_static_0_2_11_features log_0_3_9_features maplit_0_1_6_features reqwest_0_8_6_features semver_0_9_0_features serde_json_1_0_24_features slog_1_7_1_features slog_envlogger_0_5_0_features slog_stdlog_1_1_0_features slog_stream_1_2_1_features tar_0_4_16_features time_0_1_40_features ]; - case_0_1_0 = { features?(case_0_1_0_features {}) }: case_0_1_0_ {}; - case_0_1_0_features = f: updateFeatures f (rec { - case_0_1_0.default = (f.case_0_1_0.default or true); - }) []; - cc_1_0_18 = { features?(cc_1_0_18_features {}) }: cc_1_0_18_ { - dependencies = mapFeatures features ([]); - features = mkFeatures (features.cc_1_0_18 or {}); - }; - cc_1_0_18_features = f: updateFeatures f (rec { - cc_1_0_18.default = (f.cc_1_0_18.default or true); - cc_1_0_18.rayon = - (f.cc_1_0_18.rayon or false) || - (f.cc_1_0_18.parallel or false) || - (cc_1_0_18.parallel or false); - }) []; - cfg_if_0_1_4 = { features?(cfg_if_0_1_4_features {}) }: cfg_if_0_1_4_ {}; - cfg_if_0_1_4_features = f: updateFeatures f (rec { - cfg_if_0_1_4.default = (f.cfg_if_0_1_4.default or true); - }) []; - chrono_0_2_25 = { features?(chrono_0_2_25_features {}) }: chrono_0_2_25_ { - dependencies = mapFeatures features ([ num_0_1_42 time_0_1_40 ]); - }; - chrono_0_2_25_features = f: updateFeatures f (rec { - chrono_0_2_25.default = (f.chrono_0_2_25.default or true); - num_0_1_42.default = (f.num_0_1_42.default or false); - time_0_1_40.default = true; - }) [ num_0_1_42_features time_0_1_40_features ]; - clap_2_32_0 = { features?(clap_2_32_0_features {}) }: clap_2_32_0_ { - dependencies = mapFeatures features ([ bitflags_1_0_3 textwrap_0_10_0 unicode_width_0_1_5 ] - ++ (if features.clap_2_32_0.atty or false then [ atty_0_2_11 ] else []) - ++ (if features.clap_2_32_0.strsim or false then [ strsim_0_7_0 ] else []) - ++ (if features.clap_2_32_0.vec_map or false then [ vec_map_0_8_1 ] else [])) - ++ (if !(kernel == "windows") then mapFeatures features ([ ] - ++ (if features.clap_2_32_0.ansi_term or false then [ ansi_term_0_11_0 ] else [])) else []); - features = mkFeatures (features.clap_2_32_0 or {}); - }; - clap_2_32_0_features = f: updateFeatures f (rec { - ansi_term_0_11_0.default = true; - atty_0_2_11.default = true; - bitflags_1_0_3.default = true; - clap_2_32_0.ansi_term = - (f.clap_2_32_0.ansi_term or false) || - (f.clap_2_32_0.color or false) || - (clap_2_32_0.color or false); - clap_2_32_0.atty = - (f.clap_2_32_0.atty or false) || - (f.clap_2_32_0.color or false) || - (clap_2_32_0.color or false); - clap_2_32_0.clippy = - (f.clap_2_32_0.clippy or false) || - (f.clap_2_32_0.lints or false) || - (clap_2_32_0.lints or false); - clap_2_32_0.color = - (f.clap_2_32_0.color or false) || - (f.clap_2_32_0.default or false) || - (clap_2_32_0.default or false); - clap_2_32_0.default = (f.clap_2_32_0.default or true); - clap_2_32_0.strsim = - (f.clap_2_32_0.strsim or false) || - (f.clap_2_32_0.suggestions or false) || - (clap_2_32_0.suggestions or false); - clap_2_32_0.suggestions = - (f.clap_2_32_0.suggestions or false) || - (f.clap_2_32_0.default or false) || - (clap_2_32_0.default or false); - clap_2_32_0.term_size = - (f.clap_2_32_0.term_size or false) || - (f.clap_2_32_0.wrap_help or false) || - (clap_2_32_0.wrap_help or false); - clap_2_32_0.vec_map = - (f.clap_2_32_0.vec_map or false) || - (f.clap_2_32_0.default or false) || - (clap_2_32_0.default or false); - clap_2_32_0.yaml = - (f.clap_2_32_0.yaml or false) || - (f.clap_2_32_0.doc or false) || - (clap_2_32_0.doc or false); - clap_2_32_0.yaml-rust = - (f.clap_2_32_0.yaml-rust or false) || - (f.clap_2_32_0.yaml or false) || - (clap_2_32_0.yaml or false); - strsim_0_7_0.default = true; - textwrap_0_10_0.default = true; - textwrap_0_10_0.term_size = - (f.textwrap_0_10_0.term_size or false) || - (clap_2_32_0.wrap_help or false) || - (f.clap_2_32_0.wrap_help or false); - unicode_width_0_1_5.default = true; - vec_map_0_8_1.default = true; - }) [ atty_0_2_11_features bitflags_1_0_3_features strsim_0_7_0_features textwrap_0_10_0_features unicode_width_0_1_5_features vec_map_0_8_1_features ansi_term_0_11_0_features ]; - conv_0_3_3 = { features?(conv_0_3_3_features {}) }: conv_0_3_3_ { - dependencies = mapFeatures features ([ custom_derive_0_1_7 ]); - }; - conv_0_3_3_features = f: updateFeatures f (rec { - conv_0_3_3.default = (f.conv_0_3_3.default or true); - custom_derive_0_1_7.default = true; - }) [ custom_derive_0_1_7_features ]; - core_foundation_0_2_3 = { features?(core_foundation_0_2_3_features {}) }: core_foundation_0_2_3_ { - dependencies = mapFeatures features ([ core_foundation_sys_0_2_3 libc_0_2_42 ]); - }; - core_foundation_0_2_3_features = f: updateFeatures f (rec { - core_foundation_0_2_3.default = (f.core_foundation_0_2_3.default or true); - core_foundation_sys_0_2_3.default = true; - libc_0_2_42.default = true; - }) [ core_foundation_sys_0_2_3_features libc_0_2_42_features ]; - core_foundation_sys_0_2_3 = { features?(core_foundation_sys_0_2_3_features {}) }: core_foundation_sys_0_2_3_ { - dependencies = mapFeatures features ([ libc_0_2_42 ]); - }; - core_foundation_sys_0_2_3_features = f: updateFeatures f (rec { - core_foundation_sys_0_2_3.default = (f.core_foundation_sys_0_2_3.default or true); - libc_0_2_42.default = true; - }) [ libc_0_2_42_features ]; - crc_1_8_1 = { features?(crc_1_8_1_features {}) }: crc_1_8_1_ { - buildDependencies = mapFeatures features ([ build_const_0_2_1 ]); - features = mkFeatures (features.crc_1_8_1 or {}); - }; - crc_1_8_1_features = f: updateFeatures f (rec { - build_const_0_2_1.default = true; - crc_1_8_1.default = (f.crc_1_8_1.default or true); - crc_1_8_1.std = - (f.crc_1_8_1.std or false) || - (f.crc_1_8_1.default or false) || - (crc_1_8_1.default or false); - }) [ build_const_0_2_1_features ]; - crossbeam_0_2_12 = { features?(crossbeam_0_2_12_features {}) }: crossbeam_0_2_12_ { - features = mkFeatures (features.crossbeam_0_2_12 or {}); - }; - crossbeam_0_2_12_features = f: updateFeatures f (rec { - crossbeam_0_2_12.default = (f.crossbeam_0_2_12.default or true); - }) []; - crossbeam_deque_0_3_1 = { features?(crossbeam_deque_0_3_1_features {}) }: crossbeam_deque_0_3_1_ { - dependencies = mapFeatures features ([ crossbeam_epoch_0_4_3 crossbeam_utils_0_3_2 ]); - }; - crossbeam_deque_0_3_1_features = f: updateFeatures f (rec { - crossbeam_deque_0_3_1.default = (f.crossbeam_deque_0_3_1.default or true); - crossbeam_epoch_0_4_3.default = true; - crossbeam_utils_0_3_2.default = true; - }) [ crossbeam_epoch_0_4_3_features crossbeam_utils_0_3_2_features ]; - crossbeam_epoch_0_4_3 = { features?(crossbeam_epoch_0_4_3_features {}) }: crossbeam_epoch_0_4_3_ { - dependencies = mapFeatures features ([ arrayvec_0_4_7 cfg_if_0_1_4 crossbeam_utils_0_3_2 memoffset_0_2_1 scopeguard_0_3_3 ] - ++ (if features.crossbeam_epoch_0_4_3.lazy_static or false then [ lazy_static_1_0_2 ] else [])); - features = mkFeatures (features.crossbeam_epoch_0_4_3 or {}); - }; - crossbeam_epoch_0_4_3_features = f: updateFeatures f (rec { - arrayvec_0_4_7.default = (f.arrayvec_0_4_7.default or false); - arrayvec_0_4_7.use_union = - (f.arrayvec_0_4_7.use_union or false) || - (crossbeam_epoch_0_4_3.nightly or false) || - (f.crossbeam_epoch_0_4_3.nightly or false); - cfg_if_0_1_4.default = true; - crossbeam_epoch_0_4_3.default = (f.crossbeam_epoch_0_4_3.default or true); - crossbeam_epoch_0_4_3.lazy_static = - (f.crossbeam_epoch_0_4_3.lazy_static or false) || - (f.crossbeam_epoch_0_4_3.use_std or false) || - (crossbeam_epoch_0_4_3.use_std or false); - crossbeam_epoch_0_4_3.use_std = - (f.crossbeam_epoch_0_4_3.use_std or false) || - (f.crossbeam_epoch_0_4_3.default or false) || - (crossbeam_epoch_0_4_3.default or false); - crossbeam_utils_0_3_2.default = (f.crossbeam_utils_0_3_2.default or false); - crossbeam_utils_0_3_2.use_std = - (f.crossbeam_utils_0_3_2.use_std or false) || - (crossbeam_epoch_0_4_3.use_std or false) || - (f.crossbeam_epoch_0_4_3.use_std or false); - lazy_static_1_0_2.default = true; - memoffset_0_2_1.default = true; - scopeguard_0_3_3.default = (f.scopeguard_0_3_3.default or false); - }) [ arrayvec_0_4_7_features cfg_if_0_1_4_features crossbeam_utils_0_3_2_features lazy_static_1_0_2_features memoffset_0_2_1_features scopeguard_0_3_3_features ]; - crossbeam_utils_0_3_2 = { features?(crossbeam_utils_0_3_2_features {}) }: crossbeam_utils_0_3_2_ { - dependencies = mapFeatures features ([ cfg_if_0_1_4 ]); - features = mkFeatures (features.crossbeam_utils_0_3_2 or {}); - }; - crossbeam_utils_0_3_2_features = f: updateFeatures f (rec { - cfg_if_0_1_4.default = true; - crossbeam_utils_0_3_2.default = (f.crossbeam_utils_0_3_2.default or true); - crossbeam_utils_0_3_2.use_std = - (f.crossbeam_utils_0_3_2.use_std or false) || - (f.crossbeam_utils_0_3_2.default or false) || - (crossbeam_utils_0_3_2.default or false); - }) [ cfg_if_0_1_4_features ]; - custom_derive_0_1_7 = { features?(custom_derive_0_1_7_features {}) }: custom_derive_0_1_7_ { - features = mkFeatures (features.custom_derive_0_1_7 or {}); - }; - custom_derive_0_1_7_features = f: updateFeatures f (rec { - custom_derive_0_1_7.default = (f.custom_derive_0_1_7.default or true); - custom_derive_0_1_7.std = - (f.custom_derive_0_1_7.std or false) || - (f.custom_derive_0_1_7.default or false) || - (custom_derive_0_1_7.default or false); - }) []; - derive_error_0_0_3 = { features?(derive_error_0_0_3_features {}) }: derive_error_0_0_3_ { - dependencies = mapFeatures features ([ case_0_1_0 quote_0_3_15 syn_0_11_11 ]); - }; - derive_error_0_0_3_features = f: updateFeatures f (rec { - case_0_1_0.default = true; - derive_error_0_0_3.default = (f.derive_error_0_0_3.default or true); - quote_0_3_15.default = true; - syn_0_11_11.default = true; - }) [ case_0_1_0_features quote_0_3_15_features syn_0_11_11_features ]; - dtoa_0_4_3 = { features?(dtoa_0_4_3_features {}) }: dtoa_0_4_3_ {}; - dtoa_0_4_3_features = f: updateFeatures f (rec { - dtoa_0_4_3.default = (f.dtoa_0_4_3.default or true); - }) []; - either_1_5_0 = { features?(either_1_5_0_features {}) }: either_1_5_0_ { - dependencies = mapFeatures features ([]); - features = mkFeatures (features.either_1_5_0 or {}); - }; - either_1_5_0_features = f: updateFeatures f (rec { - either_1_5_0.default = (f.either_1_5_0.default or true); - either_1_5_0.use_std = - (f.either_1_5_0.use_std or false) || - (f.either_1_5_0.default or false) || - (either_1_5_0.default or false); - }) []; - encoding_rs_0_7_2 = { features?(encoding_rs_0_7_2_features {}) }: encoding_rs_0_7_2_ { - dependencies = mapFeatures features ([ cfg_if_0_1_4 ]); - features = mkFeatures (features.encoding_rs_0_7_2 or {}); - }; - encoding_rs_0_7_2_features = f: updateFeatures f (rec { - cfg_if_0_1_4.default = true; - encoding_rs_0_7_2.default = (f.encoding_rs_0_7_2.default or true); - encoding_rs_0_7_2.simd = - (f.encoding_rs_0_7_2.simd or false) || - (f.encoding_rs_0_7_2.simd-accel or false) || - (encoding_rs_0_7_2.simd-accel or false); - }) [ cfg_if_0_1_4_features ]; - exitcode_1_1_2 = { features?(exitcode_1_1_2_features {}) }: exitcode_1_1_2_ {}; - exitcode_1_1_2_features = f: updateFeatures f (rec { - exitcode_1_1_2.default = (f.exitcode_1_1_2.default or true); - }) []; - filetime_0_2_1 = { features?(filetime_0_2_1_features {}) }: filetime_0_2_1_ { - dependencies = mapFeatures features ([ cfg_if_0_1_4 ]) - ++ (if kernel == "redox" then mapFeatures features ([ redox_syscall_0_1_40 ]) else []) - ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_42 ]) else []); - }; - filetime_0_2_1_features = f: updateFeatures f (rec { - cfg_if_0_1_4.default = true; - filetime_0_2_1.default = (f.filetime_0_2_1.default or true); - libc_0_2_42.default = true; - redox_syscall_0_1_40.default = true; - }) [ cfg_if_0_1_4_features redox_syscall_0_1_40_features libc_0_2_42_features ]; - flate2_0_2_20 = { features?(flate2_0_2_20_features {}) }: flate2_0_2_20_ { - dependencies = mapFeatures features ([ libc_0_2_42 ] - ++ (if features.flate2_0_2_20.miniz-sys or false then [ miniz_sys_0_1_10 ] else [])); - features = mkFeatures (features.flate2_0_2_20 or {}); - }; - flate2_0_2_20_features = f: updateFeatures f (rec { - flate2_0_2_20.default = (f.flate2_0_2_20.default or true); - flate2_0_2_20.futures = - (f.flate2_0_2_20.futures or false) || - (f.flate2_0_2_20.tokio or false) || - (flate2_0_2_20.tokio or false); - flate2_0_2_20.libz-sys = - (f.flate2_0_2_20.libz-sys or false) || - (f.flate2_0_2_20.zlib or false) || - (flate2_0_2_20.zlib or false); - flate2_0_2_20.miniz-sys = - (f.flate2_0_2_20.miniz-sys or false) || - (f.flate2_0_2_20.default or false) || - (flate2_0_2_20.default or false); - flate2_0_2_20.tokio-io = - (f.flate2_0_2_20.tokio-io or false) || - (f.flate2_0_2_20.tokio or false) || - (flate2_0_2_20.tokio or false); - libc_0_2_42.default = true; - miniz_sys_0_1_10.default = true; - }) [ libc_0_2_42_features miniz_sys_0_1_10_features ]; - foreign_types_0_3_2 = { features?(foreign_types_0_3_2_features {}) }: foreign_types_0_3_2_ { - dependencies = mapFeatures features ([ foreign_types_shared_0_1_1 ]); - }; - foreign_types_0_3_2_features = f: updateFeatures f (rec { - foreign_types_0_3_2.default = (f.foreign_types_0_3_2.default or true); - foreign_types_shared_0_1_1.default = true; - }) [ foreign_types_shared_0_1_1_features ]; - foreign_types_shared_0_1_1 = { features?(foreign_types_shared_0_1_1_features {}) }: foreign_types_shared_0_1_1_ {}; - foreign_types_shared_0_1_1_features = f: updateFeatures f (rec { - foreign_types_shared_0_1_1.default = (f.foreign_types_shared_0_1_1.default or true); - }) []; - fuchsia_zircon_0_3_3 = { features?(fuchsia_zircon_0_3_3_features {}) }: fuchsia_zircon_0_3_3_ { - dependencies = mapFeatures features ([ bitflags_1_0_3 fuchsia_zircon_sys_0_3_3 ]); - }; - fuchsia_zircon_0_3_3_features = f: updateFeatures f (rec { - bitflags_1_0_3.default = true; - fuchsia_zircon_0_3_3.default = (f.fuchsia_zircon_0_3_3.default or true); - fuchsia_zircon_sys_0_3_3.default = true; - }) [ bitflags_1_0_3_features fuchsia_zircon_sys_0_3_3_features ]; - fuchsia_zircon_sys_0_3_3 = { features?(fuchsia_zircon_sys_0_3_3_features {}) }: fuchsia_zircon_sys_0_3_3_ {}; - fuchsia_zircon_sys_0_3_3_features = f: updateFeatures f (rec { - fuchsia_zircon_sys_0_3_3.default = (f.fuchsia_zircon_sys_0_3_3.default or true); - }) []; - futures_0_1_23 = { features?(futures_0_1_23_features {}) }: futures_0_1_23_ { - features = mkFeatures (features.futures_0_1_23 or {}); - }; - futures_0_1_23_features = f: updateFeatures f (rec { - futures_0_1_23.default = (f.futures_0_1_23.default or true); - futures_0_1_23.use_std = - (f.futures_0_1_23.use_std or false) || - (f.futures_0_1_23.default or false) || - (futures_0_1_23.default or false); - futures_0_1_23.with-deprecated = - (f.futures_0_1_23.with-deprecated or false) || - (f.futures_0_1_23.default or false) || - (futures_0_1_23.default or false); - }) []; - futures_cpupool_0_1_8 = { features?(futures_cpupool_0_1_8_features {}) }: futures_cpupool_0_1_8_ { - dependencies = mapFeatures features ([ futures_0_1_23 num_cpus_1_8_0 ]); - features = mkFeatures (features.futures_cpupool_0_1_8 or {}); - }; - futures_cpupool_0_1_8_features = f: updateFeatures f (rec { - futures_0_1_23.default = (f.futures_0_1_23.default or false); - futures_0_1_23.use_std = true; - futures_0_1_23.with-deprecated = - (f.futures_0_1_23.with-deprecated or false) || - (futures_cpupool_0_1_8.with-deprecated or false) || - (f.futures_cpupool_0_1_8.with-deprecated or false); - futures_cpupool_0_1_8.default = (f.futures_cpupool_0_1_8.default or true); - futures_cpupool_0_1_8.with-deprecated = - (f.futures_cpupool_0_1_8.with-deprecated or false) || - (f.futures_cpupool_0_1_8.default or false) || - (futures_cpupool_0_1_8.default or false); - num_cpus_1_8_0.default = true; - }) [ futures_0_1_23_features num_cpus_1_8_0_features ]; - httparse_1_3_2 = { features?(httparse_1_3_2_features {}) }: httparse_1_3_2_ { - features = mkFeatures (features.httparse_1_3_2 or {}); - }; - httparse_1_3_2_features = f: updateFeatures f (rec { - httparse_1_3_2.default = (f.httparse_1_3_2.default or true); - httparse_1_3_2.std = - (f.httparse_1_3_2.std or false) || - (f.httparse_1_3_2.default or false) || - (httparse_1_3_2.default or false); - }) []; - hyper_0_11_27 = { features?(hyper_0_11_27_features {}) }: hyper_0_11_27_ { - dependencies = mapFeatures features ([ base64_0_9_2 bytes_0_4_9 futures_0_1_23 futures_cpupool_0_1_8 httparse_1_3_2 iovec_0_1_2 language_tags_0_2_2 log_0_4_3 mime_0_3_8 net2_0_2_33 percent_encoding_1_0_1 relay_0_1_1 time_0_1_40 tokio_core_0_1_17 tokio_io_0_1_7 tokio_service_0_1_0 unicase_2_1_0 want_0_0_4 ] - ++ (if features.hyper_0_11_27.tokio-proto or false then [ tokio_proto_0_1_1 ] else [])); - features = mkFeatures (features.hyper_0_11_27 or {}); - }; - hyper_0_11_27_features = f: updateFeatures f (rec { - base64_0_9_2.default = true; - bytes_0_4_9.default = true; - futures_0_1_23.default = true; - futures_cpupool_0_1_8.default = true; - httparse_1_3_2.default = true; - hyper_0_11_27.default = (f.hyper_0_11_27.default or true); - hyper_0_11_27.http = - (f.hyper_0_11_27.http or false) || - (f.hyper_0_11_27.compat or false) || - (hyper_0_11_27.compat or false); - hyper_0_11_27.server-proto = - (f.hyper_0_11_27.server-proto or false) || - (f.hyper_0_11_27.default or false) || - (hyper_0_11_27.default or false); - hyper_0_11_27.tokio-proto = - (f.hyper_0_11_27.tokio-proto or false) || - (f.hyper_0_11_27.server-proto or false) || - (hyper_0_11_27.server-proto or false); - iovec_0_1_2.default = true; - language_tags_0_2_2.default = true; - log_0_4_3.default = true; - mime_0_3_8.default = true; - net2_0_2_33.default = true; - percent_encoding_1_0_1.default = true; - relay_0_1_1.default = true; - time_0_1_40.default = true; - tokio_core_0_1_17.default = true; - tokio_io_0_1_7.default = true; - tokio_proto_0_1_1.default = true; - tokio_service_0_1_0.default = true; - unicase_2_1_0.default = true; - want_0_0_4.default = true; - }) [ base64_0_9_2_features bytes_0_4_9_features futures_0_1_23_features futures_cpupool_0_1_8_features httparse_1_3_2_features iovec_0_1_2_features language_tags_0_2_2_features log_0_4_3_features mime_0_3_8_features net2_0_2_33_features percent_encoding_1_0_1_features relay_0_1_1_features time_0_1_40_features tokio_core_0_1_17_features tokio_io_0_1_7_features tokio_proto_0_1_1_features tokio_service_0_1_0_features unicase_2_1_0_features want_0_0_4_features ]; - hyper_tls_0_1_3 = { features?(hyper_tls_0_1_3_features {}) }: hyper_tls_0_1_3_ { - dependencies = mapFeatures features ([ futures_0_1_23 hyper_0_11_27 native_tls_0_1_5 tokio_core_0_1_17 tokio_io_0_1_7 tokio_service_0_1_0 tokio_tls_0_1_4 ]); - }; - hyper_tls_0_1_3_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - hyper_0_11_27.default = true; - hyper_tls_0_1_3.default = (f.hyper_tls_0_1_3.default or true); - native_tls_0_1_5.default = true; - tokio_core_0_1_17.default = true; - tokio_io_0_1_7.default = true; - tokio_service_0_1_0.default = true; - tokio_tls_0_1_4.default = true; - }) [ futures_0_1_23_features hyper_0_11_27_features native_tls_0_1_5_features tokio_core_0_1_17_features tokio_io_0_1_7_features tokio_service_0_1_0_features tokio_tls_0_1_4_features ]; - idna_0_1_5 = { features?(idna_0_1_5_features {}) }: idna_0_1_5_ { - dependencies = mapFeatures features ([ matches_0_1_7 unicode_bidi_0_3_4 unicode_normalization_0_1_7 ]); - }; - idna_0_1_5_features = f: updateFeatures f (rec { - idna_0_1_5.default = (f.idna_0_1_5.default or true); - matches_0_1_7.default = true; - unicode_bidi_0_3_4.default = true; - unicode_normalization_0_1_7.default = true; - }) [ matches_0_1_7_features unicode_bidi_0_3_4_features unicode_normalization_0_1_7_features ]; - iovec_0_1_2 = { features?(iovec_0_1_2_features {}) }: iovec_0_1_2_ { - dependencies = (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_42 ]) else []) - ++ (if kernel == "windows" then mapFeatures features ([ winapi_0_2_8 ]) else []); - }; - iovec_0_1_2_features = f: updateFeatures f (rec { - iovec_0_1_2.default = (f.iovec_0_1_2.default or true); - libc_0_2_42.default = true; - winapi_0_2_8.default = true; - }) [ libc_0_2_42_features winapi_0_2_8_features ]; - isatty_0_1_8 = { features?(isatty_0_1_8_features {}) }: isatty_0_1_8_ { - dependencies = (if kernel == "redox" then mapFeatures features ([ redox_syscall_0_1_40 ]) else []) - ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_42 ]) else []) - ++ (if kernel == "windows" then mapFeatures features ([ winapi_0_3_5 ]) else []); - }; - isatty_0_1_8_features = f: updateFeatures f (rec { - isatty_0_1_8.default = (f.isatty_0_1_8.default or true); - libc_0_2_42.default = true; - redox_syscall_0_1_40.default = true; - winapi_0_3_5.consoleapi = true; - winapi_0_3_5.default = true; - winapi_0_3_5.fileapi = true; - winapi_0_3_5.minwinbase = true; - winapi_0_3_5.minwindef = true; - winapi_0_3_5.processenv = true; - winapi_0_3_5.winbase = true; - winapi_0_3_5.winnt = true; - }) [ redox_syscall_0_1_40_features libc_0_2_42_features winapi_0_3_5_features ]; - itertools_0_6_5 = { features?(itertools_0_6_5_features {}) }: itertools_0_6_5_ { - dependencies = mapFeatures features ([ either_1_5_0 ]); - }; - itertools_0_6_5_features = f: updateFeatures f (rec { - either_1_5_0.default = (f.either_1_5_0.default or false); - itertools_0_6_5.default = (f.itertools_0_6_5.default or true); - }) [ either_1_5_0_features ]; - itoa_0_4_2 = { features?(itoa_0_4_2_features {}) }: itoa_0_4_2_ { - features = mkFeatures (features.itoa_0_4_2 or {}); - }; - itoa_0_4_2_features = f: updateFeatures f (rec { - itoa_0_4_2.default = (f.itoa_0_4_2.default or true); - itoa_0_4_2.std = - (f.itoa_0_4_2.std or false) || - (f.itoa_0_4_2.default or false) || - (itoa_0_4_2.default or false); - }) []; - kernel32_sys_0_2_2 = { features?(kernel32_sys_0_2_2_features {}) }: kernel32_sys_0_2_2_ { - dependencies = mapFeatures features ([ winapi_0_2_8 ]); - buildDependencies = mapFeatures features ([ winapi_build_0_1_1 ]); - }; - kernel32_sys_0_2_2_features = f: updateFeatures f (rec { - kernel32_sys_0_2_2.default = (f.kernel32_sys_0_2_2.default or true); - winapi_0_2_8.default = true; - winapi_build_0_1_1.default = true; - }) [ winapi_0_2_8_features winapi_build_0_1_1_features ]; - language_tags_0_2_2 = { features?(language_tags_0_2_2_features {}) }: language_tags_0_2_2_ { - dependencies = mapFeatures features ([]); - features = mkFeatures (features.language_tags_0_2_2 or {}); - }; - language_tags_0_2_2_features = f: updateFeatures f (rec { - language_tags_0_2_2.default = (f.language_tags_0_2_2.default or true); - language_tags_0_2_2.heapsize = - (f.language_tags_0_2_2.heapsize or false) || - (f.language_tags_0_2_2.heap_size or false) || - (language_tags_0_2_2.heap_size or false); - language_tags_0_2_2.heapsize_plugin = - (f.language_tags_0_2_2.heapsize_plugin or false) || - (f.language_tags_0_2_2.heap_size or false) || - (language_tags_0_2_2.heap_size or false); - }) []; - lazy_static_0_2_11 = { features?(lazy_static_0_2_11_features {}) }: lazy_static_0_2_11_ { - dependencies = mapFeatures features ([]); - features = mkFeatures (features.lazy_static_0_2_11 or {}); - }; - lazy_static_0_2_11_features = f: updateFeatures f (rec { - lazy_static_0_2_11.compiletest_rs = - (f.lazy_static_0_2_11.compiletest_rs or false) || - (f.lazy_static_0_2_11.compiletest or false) || - (lazy_static_0_2_11.compiletest or false); - lazy_static_0_2_11.default = (f.lazy_static_0_2_11.default or true); - lazy_static_0_2_11.nightly = - (f.lazy_static_0_2_11.nightly or false) || - (f.lazy_static_0_2_11.spin_no_std or false) || - (lazy_static_0_2_11.spin_no_std or false); - lazy_static_0_2_11.spin = - (f.lazy_static_0_2_11.spin or false) || - (f.lazy_static_0_2_11.spin_no_std or false) || - (lazy_static_0_2_11.spin_no_std or false); - }) []; - lazy_static_1_0_2 = { features?(lazy_static_1_0_2_features {}) }: lazy_static_1_0_2_ { - dependencies = mapFeatures features ([]); - features = mkFeatures (features.lazy_static_1_0_2 or {}); - }; - lazy_static_1_0_2_features = f: updateFeatures f (rec { - lazy_static_1_0_2.default = (f.lazy_static_1_0_2.default or true); - lazy_static_1_0_2.nightly = - (f.lazy_static_1_0_2.nightly or false) || - (f.lazy_static_1_0_2.spin_no_std or false) || - (lazy_static_1_0_2.spin_no_std or false); - lazy_static_1_0_2.spin = - (f.lazy_static_1_0_2.spin or false) || - (f.lazy_static_1_0_2.spin_no_std or false) || - (lazy_static_1_0_2.spin_no_std or false); - }) []; - lazycell_0_6_0 = { features?(lazycell_0_6_0_features {}) }: lazycell_0_6_0_ { - dependencies = mapFeatures features ([]); - features = mkFeatures (features.lazycell_0_6_0 or {}); - }; - lazycell_0_6_0_features = f: updateFeatures f (rec { - lazycell_0_6_0.clippy = - (f.lazycell_0_6_0.clippy or false) || - (f.lazycell_0_6_0.nightly-testing or false) || - (lazycell_0_6_0.nightly-testing or false); - lazycell_0_6_0.default = (f.lazycell_0_6_0.default or true); - lazycell_0_6_0.nightly = - (f.lazycell_0_6_0.nightly or false) || - (f.lazycell_0_6_0.nightly-testing or false) || - (lazycell_0_6_0.nightly-testing or false); - }) []; - libc_0_2_42 = { features?(libc_0_2_42_features {}) }: libc_0_2_42_ { - features = mkFeatures (features.libc_0_2_42 or {}); - }; - libc_0_2_42_features = f: updateFeatures f (rec { - libc_0_2_42.default = (f.libc_0_2_42.default or true); - libc_0_2_42.use_std = - (f.libc_0_2_42.use_std or false) || - (f.libc_0_2_42.default or false) || - (libc_0_2_42.default or false); - }) []; - libflate_0_1_16 = { features?(libflate_0_1_16_features {}) }: libflate_0_1_16_ { - dependencies = mapFeatures features ([ adler32_1_0_3 byteorder_1_2_3 crc_1_8_1 ]); - }; - libflate_0_1_16_features = f: updateFeatures f (rec { - adler32_1_0_3.default = true; - byteorder_1_2_3.default = true; - crc_1_8_1.default = true; - libflate_0_1_16.default = (f.libflate_0_1_16.default or true); - }) [ adler32_1_0_3_features byteorder_1_2_3_features crc_1_8_1_features ]; - log_0_3_9 = { features?(log_0_3_9_features {}) }: log_0_3_9_ { - dependencies = mapFeatures features ([ log_0_4_3 ]); - features = mkFeatures (features.log_0_3_9 or {}); - }; - log_0_3_9_features = f: updateFeatures f (rec { - log_0_3_9.default = (f.log_0_3_9.default or true); - log_0_3_9.use_std = - (f.log_0_3_9.use_std or false) || - (f.log_0_3_9.default or false) || - (log_0_3_9.default or false); - log_0_4_3.default = true; - log_0_4_3.max_level_debug = - (f.log_0_4_3.max_level_debug or false) || - (log_0_3_9.max_level_debug or false) || - (f.log_0_3_9.max_level_debug or false); - log_0_4_3.max_level_error = - (f.log_0_4_3.max_level_error or false) || - (log_0_3_9.max_level_error or false) || - (f.log_0_3_9.max_level_error or false); - log_0_4_3.max_level_info = - (f.log_0_4_3.max_level_info or false) || - (log_0_3_9.max_level_info or false) || - (f.log_0_3_9.max_level_info or false); - log_0_4_3.max_level_off = - (f.log_0_4_3.max_level_off or false) || - (log_0_3_9.max_level_off or false) || - (f.log_0_3_9.max_level_off or false); - log_0_4_3.max_level_trace = - (f.log_0_4_3.max_level_trace or false) || - (log_0_3_9.max_level_trace or false) || - (f.log_0_3_9.max_level_trace or false); - log_0_4_3.max_level_warn = - (f.log_0_4_3.max_level_warn or false) || - (log_0_3_9.max_level_warn or false) || - (f.log_0_3_9.max_level_warn or false); - log_0_4_3.release_max_level_debug = - (f.log_0_4_3.release_max_level_debug or false) || - (log_0_3_9.release_max_level_debug or false) || - (f.log_0_3_9.release_max_level_debug or false); - log_0_4_3.release_max_level_error = - (f.log_0_4_3.release_max_level_error or false) || - (log_0_3_9.release_max_level_error or false) || - (f.log_0_3_9.release_max_level_error or false); - log_0_4_3.release_max_level_info = - (f.log_0_4_3.release_max_level_info or false) || - (log_0_3_9.release_max_level_info or false) || - (f.log_0_3_9.release_max_level_info or false); - log_0_4_3.release_max_level_off = - (f.log_0_4_3.release_max_level_off or false) || - (log_0_3_9.release_max_level_off or false) || - (f.log_0_3_9.release_max_level_off or false); - log_0_4_3.release_max_level_trace = - (f.log_0_4_3.release_max_level_trace or false) || - (log_0_3_9.release_max_level_trace or false) || - (f.log_0_3_9.release_max_level_trace or false); - log_0_4_3.release_max_level_warn = - (f.log_0_4_3.release_max_level_warn or false) || - (log_0_3_9.release_max_level_warn or false) || - (f.log_0_3_9.release_max_level_warn or false); - log_0_4_3.std = - (f.log_0_4_3.std or false) || - (log_0_3_9.use_std or false) || - (f.log_0_3_9.use_std or false); - }) [ log_0_4_3_features ]; - log_0_4_3 = { features?(log_0_4_3_features {}) }: log_0_4_3_ { - dependencies = mapFeatures features ([ cfg_if_0_1_4 ]); - features = mkFeatures (features.log_0_4_3 or {}); - }; - log_0_4_3_features = f: updateFeatures f (rec { - cfg_if_0_1_4.default = true; - log_0_4_3.default = (f.log_0_4_3.default or true); - }) [ cfg_if_0_1_4_features ]; - maplit_0_1_6 = { features?(maplit_0_1_6_features {}) }: maplit_0_1_6_ {}; - maplit_0_1_6_features = f: updateFeatures f (rec { - maplit_0_1_6.default = (f.maplit_0_1_6.default or true); - }) []; - matches_0_1_7 = { features?(matches_0_1_7_features {}) }: matches_0_1_7_ {}; - matches_0_1_7_features = f: updateFeatures f (rec { - matches_0_1_7.default = (f.matches_0_1_7.default or true); - }) []; - memchr_0_1_11 = { features?(memchr_0_1_11_features {}) }: memchr_0_1_11_ { - dependencies = mapFeatures features ([ libc_0_2_42 ]); - }; - memchr_0_1_11_features = f: updateFeatures f (rec { - libc_0_2_42.default = true; - memchr_0_1_11.default = (f.memchr_0_1_11.default or true); - }) [ libc_0_2_42_features ]; - memoffset_0_2_1 = { features?(memoffset_0_2_1_features {}) }: memoffset_0_2_1_ {}; - memoffset_0_2_1_features = f: updateFeatures f (rec { - memoffset_0_2_1.default = (f.memoffset_0_2_1.default or true); - }) []; - mime_0_3_8 = { features?(mime_0_3_8_features {}) }: mime_0_3_8_ { - dependencies = mapFeatures features ([ unicase_2_1_0 ]); - }; - mime_0_3_8_features = f: updateFeatures f (rec { - mime_0_3_8.default = (f.mime_0_3_8.default or true); - unicase_2_1_0.default = true; - }) [ unicase_2_1_0_features ]; - mime_guess_2_0_0_alpha_6 = { features?(mime_guess_2_0_0_alpha_6_features {}) }: mime_guess_2_0_0_alpha_6_ { - dependencies = mapFeatures features ([ mime_0_3_8 phf_0_7_22 unicase_1_4_2 ]); - buildDependencies = mapFeatures features ([ phf_codegen_0_7_22 unicase_1_4_2 ]); - features = mkFeatures (features.mime_guess_2_0_0_alpha_6 or {}); - }; - mime_guess_2_0_0_alpha_6_features = f: updateFeatures f (rec { - mime_0_3_8.default = true; - mime_guess_2_0_0_alpha_6.default = (f.mime_guess_2_0_0_alpha_6.default or true); - phf_0_7_22.default = true; - phf_0_7_22.unicase = true; - phf_codegen_0_7_22.default = true; - unicase_1_4_2.default = true; - }) [ mime_0_3_8_features phf_0_7_22_features unicase_1_4_2_features phf_codegen_0_7_22_features unicase_1_4_2_features ]; - miniz_sys_0_1_10 = { features?(miniz_sys_0_1_10_features {}) }: miniz_sys_0_1_10_ { - dependencies = mapFeatures features ([ libc_0_2_42 ]); - buildDependencies = mapFeatures features ([ cc_1_0_18 ]); - }; - miniz_sys_0_1_10_features = f: updateFeatures f (rec { - cc_1_0_18.default = true; - libc_0_2_42.default = true; - miniz_sys_0_1_10.default = (f.miniz_sys_0_1_10.default or true); - }) [ libc_0_2_42_features cc_1_0_18_features ]; - mio_0_6_15 = { features?(mio_0_6_15_features {}) }: mio_0_6_15_ { - dependencies = mapFeatures features ([ iovec_0_1_2 lazycell_0_6_0 log_0_4_3 net2_0_2_33 slab_0_4_0 ]) - ++ (if kernel == "fuchsia" then mapFeatures features ([ fuchsia_zircon_0_3_3 fuchsia_zircon_sys_0_3_3 ]) else []) - ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_42 ]) else []) - ++ (if kernel == "windows" then mapFeatures features ([ kernel32_sys_0_2_2 miow_0_2_1 winapi_0_2_8 ]) else []); - features = mkFeatures (features.mio_0_6_15 or {}); - }; - mio_0_6_15_features = f: updateFeatures f (rec { - fuchsia_zircon_0_3_3.default = true; - fuchsia_zircon_sys_0_3_3.default = true; - iovec_0_1_2.default = true; - kernel32_sys_0_2_2.default = true; - lazycell_0_6_0.default = true; - libc_0_2_42.default = true; - log_0_4_3.default = true; - mio_0_6_15.default = (f.mio_0_6_15.default or true); - mio_0_6_15.with-deprecated = - (f.mio_0_6_15.with-deprecated or false) || - (f.mio_0_6_15.default or false) || - (mio_0_6_15.default or false); - miow_0_2_1.default = true; - net2_0_2_33.default = true; - slab_0_4_0.default = true; - winapi_0_2_8.default = true; - }) [ iovec_0_1_2_features lazycell_0_6_0_features log_0_4_3_features net2_0_2_33_features slab_0_4_0_features fuchsia_zircon_0_3_3_features fuchsia_zircon_sys_0_3_3_features libc_0_2_42_features kernel32_sys_0_2_2_features miow_0_2_1_features winapi_0_2_8_features ]; - miow_0_2_1 = { features?(miow_0_2_1_features {}) }: miow_0_2_1_ { - dependencies = mapFeatures features ([ kernel32_sys_0_2_2 net2_0_2_33 winapi_0_2_8 ws2_32_sys_0_2_1 ]); - }; - miow_0_2_1_features = f: updateFeatures f (rec { - kernel32_sys_0_2_2.default = true; - miow_0_2_1.default = (f.miow_0_2_1.default or true); - net2_0_2_33.default = (f.net2_0_2_33.default or false); - winapi_0_2_8.default = true; - ws2_32_sys_0_2_1.default = true; - }) [ kernel32_sys_0_2_2_features net2_0_2_33_features winapi_0_2_8_features ws2_32_sys_0_2_1_features ]; - native_tls_0_1_5 = { features?(native_tls_0_1_5_features {}) }: native_tls_0_1_5_ { - dependencies = mapFeatures features ([ lazy_static_0_2_11 ]) - ++ (if kernel == "darwin" || kernel == "ios" then mapFeatures features ([ libc_0_2_42 security_framework_0_1_16 security_framework_sys_0_1_16 tempdir_0_3_7 ]) else []) - ++ (if !(kernel == "windows" || kernel == "darwin" || kernel == "ios") then mapFeatures features ([ openssl_0_9_24 ]) else []) - ++ (if kernel == "windows" then mapFeatures features ([ schannel_0_1_13 ]) else []); - }; - native_tls_0_1_5_features = f: updateFeatures f (rec { - lazy_static_0_2_11.default = true; - libc_0_2_42.default = true; - native_tls_0_1_5.default = (f.native_tls_0_1_5.default or true); - openssl_0_9_24.default = true; - schannel_0_1_13.default = true; - security_framework_0_1_16.OSX_10_8 = true; - security_framework_0_1_16.default = true; - security_framework_sys_0_1_16.default = true; - tempdir_0_3_7.default = true; - }) [ lazy_static_0_2_11_features libc_0_2_42_features security_framework_0_1_16_features security_framework_sys_0_1_16_features tempdir_0_3_7_features openssl_0_9_24_features schannel_0_1_13_features ]; - net2_0_2_33 = { features?(net2_0_2_33_features {}) }: net2_0_2_33_ { - dependencies = mapFeatures features ([ cfg_if_0_1_4 ]) - ++ (if kernel == "redox" || (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_42 ]) else []) - ++ (if kernel == "windows" then mapFeatures features ([ winapi_0_3_5 ]) else []); - features = mkFeatures (features.net2_0_2_33 or {}); - }; - net2_0_2_33_features = f: updateFeatures f (rec { - cfg_if_0_1_4.default = true; - libc_0_2_42.default = true; - net2_0_2_33.default = (f.net2_0_2_33.default or true); - net2_0_2_33.duration = - (f.net2_0_2_33.duration or false) || - (f.net2_0_2_33.default or false) || - (net2_0_2_33.default or false); - winapi_0_3_5.default = true; - winapi_0_3_5.handleapi = true; - winapi_0_3_5.winsock2 = true; - winapi_0_3_5.ws2def = true; - winapi_0_3_5.ws2ipdef = true; - winapi_0_3_5.ws2tcpip = true; - }) [ cfg_if_0_1_4_features libc_0_2_42_features winapi_0_3_5_features ]; - nodrop_0_1_12 = { features?(nodrop_0_1_12_features {}) }: nodrop_0_1_12_ { - dependencies = mapFeatures features ([]); - features = mkFeatures (features.nodrop_0_1_12 or {}); - }; - nodrop_0_1_12_features = f: updateFeatures f (rec { - nodrop_0_1_12.default = (f.nodrop_0_1_12.default or true); - nodrop_0_1_12.nodrop-union = - (f.nodrop_0_1_12.nodrop-union or false) || - (f.nodrop_0_1_12.use_union or false) || - (nodrop_0_1_12.use_union or false); - nodrop_0_1_12.std = - (f.nodrop_0_1_12.std or false) || - (f.nodrop_0_1_12.default or false) || - (nodrop_0_1_12.default or false); - }) []; - num_0_1_42 = { features?(num_0_1_42_features {}) }: num_0_1_42_ { - dependencies = mapFeatures features ([ num_integer_0_1_39 num_iter_0_1_37 num_traits_0_2_5 ]); - features = mkFeatures (features.num_0_1_42 or {}); - }; - num_0_1_42_features = f: updateFeatures f (rec { - num_0_1_42.bigint = - (f.num_0_1_42.bigint or false) || - (f.num_0_1_42.default or false) || - (num_0_1_42.default or false); - num_0_1_42.complex = - (f.num_0_1_42.complex or false) || - (f.num_0_1_42.default or false) || - (num_0_1_42.default or false); - num_0_1_42.default = (f.num_0_1_42.default or true); - num_0_1_42.num-bigint = - (f.num_0_1_42.num-bigint or false) || - (f.num_0_1_42.bigint or false) || - (num_0_1_42.bigint or false); - num_0_1_42.num-complex = - (f.num_0_1_42.num-complex or false) || - (f.num_0_1_42.complex or false) || - (num_0_1_42.complex or false); - num_0_1_42.num-rational = - (f.num_0_1_42.num-rational or false) || - (f.num_0_1_42.rational or false) || - (num_0_1_42.rational or false); - num_0_1_42.rational = - (f.num_0_1_42.rational or false) || - (f.num_0_1_42.default or false) || - (num_0_1_42.default or false); - num_0_1_42.rustc-serialize = - (f.num_0_1_42.rustc-serialize or false) || - (f.num_0_1_42.default or false) || - (num_0_1_42.default or false); - num_integer_0_1_39.default = true; - num_iter_0_1_37.default = true; - num_traits_0_2_5.default = true; - }) [ num_integer_0_1_39_features num_iter_0_1_37_features num_traits_0_2_5_features ]; - num_integer_0_1_39 = { features?(num_integer_0_1_39_features {}) }: num_integer_0_1_39_ { - dependencies = mapFeatures features ([ num_traits_0_2_5 ]); - features = mkFeatures (features.num_integer_0_1_39 or {}); - }; - num_integer_0_1_39_features = f: updateFeatures f (rec { - num_integer_0_1_39.default = (f.num_integer_0_1_39.default or true); - num_integer_0_1_39.std = - (f.num_integer_0_1_39.std or false) || - (f.num_integer_0_1_39.default or false) || - (num_integer_0_1_39.default or false); - num_traits_0_2_5.default = (f.num_traits_0_2_5.default or false); - num_traits_0_2_5.i128 = - (f.num_traits_0_2_5.i128 or false) || - (num_integer_0_1_39.i128 or false) || - (f.num_integer_0_1_39.i128 or false); - num_traits_0_2_5.std = - (f.num_traits_0_2_5.std or false) || - (num_integer_0_1_39.std or false) || - (f.num_integer_0_1_39.std or false); - }) [ num_traits_0_2_5_features ]; - num_iter_0_1_37 = { features?(num_iter_0_1_37_features {}) }: num_iter_0_1_37_ { - dependencies = mapFeatures features ([ num_integer_0_1_39 num_traits_0_2_5 ]); - features = mkFeatures (features.num_iter_0_1_37 or {}); - }; - num_iter_0_1_37_features = f: updateFeatures f (rec { - num_integer_0_1_39.default = (f.num_integer_0_1_39.default or false); - num_integer_0_1_39.i128 = - (f.num_integer_0_1_39.i128 or false) || - (num_iter_0_1_37.i128 or false) || - (f.num_iter_0_1_37.i128 or false); - num_integer_0_1_39.std = - (f.num_integer_0_1_39.std or false) || - (num_iter_0_1_37.std or false) || - (f.num_iter_0_1_37.std or false); - num_iter_0_1_37.default = (f.num_iter_0_1_37.default or true); - num_iter_0_1_37.std = - (f.num_iter_0_1_37.std or false) || - (f.num_iter_0_1_37.default or false) || - (num_iter_0_1_37.default or false); - num_traits_0_2_5.default = (f.num_traits_0_2_5.default or false); - num_traits_0_2_5.i128 = - (f.num_traits_0_2_5.i128 or false) || - (num_iter_0_1_37.i128 or false) || - (f.num_iter_0_1_37.i128 or false); - num_traits_0_2_5.std = - (f.num_traits_0_2_5.std or false) || - (num_iter_0_1_37.std or false) || - (f.num_iter_0_1_37.std or false); - }) [ num_integer_0_1_39_features num_traits_0_2_5_features ]; - num_traits_0_2_5 = { features?(num_traits_0_2_5_features {}) }: num_traits_0_2_5_ { - features = mkFeatures (features.num_traits_0_2_5 or {}); - }; - num_traits_0_2_5_features = f: updateFeatures f (rec { - num_traits_0_2_5.default = (f.num_traits_0_2_5.default or true); - num_traits_0_2_5.std = - (f.num_traits_0_2_5.std or false) || - (f.num_traits_0_2_5.default or false) || - (num_traits_0_2_5.default or false); - }) []; - num_cpus_1_8_0 = { features?(num_cpus_1_8_0_features {}) }: num_cpus_1_8_0_ { - dependencies = mapFeatures features ([ libc_0_2_42 ]); - }; - num_cpus_1_8_0_features = f: updateFeatures f (rec { - libc_0_2_42.default = true; - num_cpus_1_8_0.default = (f.num_cpus_1_8_0.default or true); - }) [ libc_0_2_42_features ]; - openssl_0_9_24 = { features?(openssl_0_9_24_features {}) }: openssl_0_9_24_ { - dependencies = mapFeatures features ([ bitflags_0_9_1 foreign_types_0_3_2 lazy_static_1_0_2 libc_0_2_42 openssl_sys_0_9_33 ]); - features = mkFeatures (features.openssl_0_9_24 or {}); - }; - openssl_0_9_24_features = f: updateFeatures f (rec { - bitflags_0_9_1.default = true; - foreign_types_0_3_2.default = true; - lazy_static_1_0_2.default = true; - libc_0_2_42.default = true; - openssl_0_9_24.default = (f.openssl_0_9_24.default or true); - openssl_sys_0_9_33.default = true; - }) [ bitflags_0_9_1_features foreign_types_0_3_2_features lazy_static_1_0_2_features libc_0_2_42_features openssl_sys_0_9_33_features ]; - openssl_sys_0_9_33 = { features?(openssl_sys_0_9_33_features {}) }: openssl_sys_0_9_33_ { - dependencies = mapFeatures features ([ libc_0_2_42 ]) - ++ (if abi == "msvc" then mapFeatures features ([]) else []); - buildDependencies = mapFeatures features ([ cc_1_0_18 pkg_config_0_3_12 ]); - }; - openssl_sys_0_9_33_features = f: updateFeatures f (rec { - cc_1_0_18.default = true; - libc_0_2_42.default = true; - openssl_sys_0_9_33.default = (f.openssl_sys_0_9_33.default or true); - pkg_config_0_3_12.default = true; - }) [ libc_0_2_42_features cc_1_0_18_features pkg_config_0_3_12_features ]; - percent_encoding_1_0_1 = { features?(percent_encoding_1_0_1_features {}) }: percent_encoding_1_0_1_ {}; - percent_encoding_1_0_1_features = f: updateFeatures f (rec { - percent_encoding_1_0_1.default = (f.percent_encoding_1_0_1.default or true); - }) []; - phf_0_7_22 = { features?(phf_0_7_22_features {}) }: phf_0_7_22_ { - dependencies = mapFeatures features ([ phf_shared_0_7_22 ]); - features = mkFeatures (features.phf_0_7_22 or {}); - }; - phf_0_7_22_features = f: updateFeatures f (rec { - phf_0_7_22.default = (f.phf_0_7_22.default or true); - phf_shared_0_7_22.core = - (f.phf_shared_0_7_22.core or false) || - (phf_0_7_22.core or false) || - (f.phf_0_7_22.core or false); - phf_shared_0_7_22.default = true; - phf_shared_0_7_22.unicase = - (f.phf_shared_0_7_22.unicase or false) || - (phf_0_7_22.unicase or false) || - (f.phf_0_7_22.unicase or false); - }) [ phf_shared_0_7_22_features ]; - phf_codegen_0_7_22 = { features?(phf_codegen_0_7_22_features {}) }: phf_codegen_0_7_22_ { - dependencies = mapFeatures features ([ phf_generator_0_7_22 phf_shared_0_7_22 ]); - }; - phf_codegen_0_7_22_features = f: updateFeatures f (rec { - phf_codegen_0_7_22.default = (f.phf_codegen_0_7_22.default or true); - phf_generator_0_7_22.default = true; - phf_shared_0_7_22.default = true; - }) [ phf_generator_0_7_22_features phf_shared_0_7_22_features ]; - phf_generator_0_7_22 = { features?(phf_generator_0_7_22_features {}) }: phf_generator_0_7_22_ { - dependencies = mapFeatures features ([ phf_shared_0_7_22 rand_0_4_2 ]); - }; - phf_generator_0_7_22_features = f: updateFeatures f (rec { - phf_generator_0_7_22.default = (f.phf_generator_0_7_22.default or true); - phf_shared_0_7_22.default = true; - rand_0_4_2.default = true; - }) [ phf_shared_0_7_22_features rand_0_4_2_features ]; - phf_shared_0_7_22 = { features?(phf_shared_0_7_22_features {}) }: phf_shared_0_7_22_ { - dependencies = mapFeatures features ([ siphasher_0_2_2 ] - ++ (if features.phf_shared_0_7_22.unicase or false then [ unicase_1_4_2 ] else [])); - features = mkFeatures (features.phf_shared_0_7_22 or {}); - }; - phf_shared_0_7_22_features = f: updateFeatures f (rec { - phf_shared_0_7_22.default = (f.phf_shared_0_7_22.default or true); - siphasher_0_2_2.default = true; - unicase_1_4_2.default = true; - }) [ siphasher_0_2_2_features unicase_1_4_2_features ]; - pkg_config_0_3_12 = { features?(pkg_config_0_3_12_features {}) }: pkg_config_0_3_12_ {}; - pkg_config_0_3_12_features = f: updateFeatures f (rec { - pkg_config_0_3_12.default = (f.pkg_config_0_3_12.default or true); - }) []; - quote_0_3_15 = { features?(quote_0_3_15_features {}) }: quote_0_3_15_ {}; - quote_0_3_15_features = f: updateFeatures f (rec { - quote_0_3_15.default = (f.quote_0_3_15.default or true); - }) []; - rand_0_3_22 = { features?(rand_0_3_22_features {}) }: rand_0_3_22_ { - dependencies = mapFeatures features ([ libc_0_2_42 rand_0_4_2 ]) - ++ (if kernel == "fuchsia" then mapFeatures features ([ fuchsia_zircon_0_3_3 ]) else []); - features = mkFeatures (features.rand_0_3_22 or {}); - }; - rand_0_3_22_features = f: updateFeatures f (rec { - fuchsia_zircon_0_3_3.default = true; - libc_0_2_42.default = true; - rand_0_3_22.default = (f.rand_0_3_22.default or true); - rand_0_3_22.i128_support = - (f.rand_0_3_22.i128_support or false) || - (f.rand_0_3_22.nightly or false) || - (rand_0_3_22.nightly or false); - rand_0_4_2.default = true; - }) [ libc_0_2_42_features rand_0_4_2_features fuchsia_zircon_0_3_3_features ]; - rand_0_4_2 = { features?(rand_0_4_2_features {}) }: rand_0_4_2_ { - dependencies = (if kernel == "fuchsia" then mapFeatures features ([ fuchsia_zircon_0_3_3 ]) else []) - ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ ] - ++ (if features.rand_0_4_2.libc or false then [ libc_0_2_42 ] else [])) else []) - ++ (if kernel == "windows" then mapFeatures features ([ winapi_0_3_5 ]) else []); - features = mkFeatures (features.rand_0_4_2 or {}); - }; - rand_0_4_2_features = f: updateFeatures f (rec { - fuchsia_zircon_0_3_3.default = true; - libc_0_2_42.default = true; - rand_0_4_2.default = (f.rand_0_4_2.default or true); - rand_0_4_2.i128_support = - (f.rand_0_4_2.i128_support or false) || - (f.rand_0_4_2.nightly or false) || - (rand_0_4_2.nightly or false); - rand_0_4_2.libc = - (f.rand_0_4_2.libc or false) || - (f.rand_0_4_2.std or false) || - (rand_0_4_2.std or false); - rand_0_4_2.std = - (f.rand_0_4_2.std or false) || - (f.rand_0_4_2.default or false) || - (rand_0_4_2.default or false); - winapi_0_3_5.default = true; - winapi_0_3_5.minwindef = true; - winapi_0_3_5.ntsecapi = true; - winapi_0_3_5.profileapi = true; - winapi_0_3_5.winnt = true; - }) [ fuchsia_zircon_0_3_3_features libc_0_2_42_features winapi_0_3_5_features ]; - redox_syscall_0_1_40 = { features?(redox_syscall_0_1_40_features {}) }: redox_syscall_0_1_40_ {}; - redox_syscall_0_1_40_features = f: updateFeatures f (rec { - redox_syscall_0_1_40.default = (f.redox_syscall_0_1_40.default or true); - }) []; - redox_termios_0_1_1 = { features?(redox_termios_0_1_1_features {}) }: redox_termios_0_1_1_ { - dependencies = mapFeatures features ([ redox_syscall_0_1_40 ]); - }; - redox_termios_0_1_1_features = f: updateFeatures f (rec { - redox_syscall_0_1_40.default = true; - redox_termios_0_1_1.default = (f.redox_termios_0_1_1.default or true); - }) [ redox_syscall_0_1_40_features ]; - regex_0_1_80 = { features?(regex_0_1_80_features {}) }: regex_0_1_80_ { - dependencies = mapFeatures features ([ aho_corasick_0_5_3 memchr_0_1_11 regex_syntax_0_3_9 thread_local_0_2_7 utf8_ranges_0_1_3 ]); - features = mkFeatures (features.regex_0_1_80 or {}); - }; - regex_0_1_80_features = f: updateFeatures f (rec { - aho_corasick_0_5_3.default = true; - memchr_0_1_11.default = true; - regex_0_1_80.default = (f.regex_0_1_80.default or true); - regex_0_1_80.simd = - (f.regex_0_1_80.simd or false) || - (f.regex_0_1_80.simd-accel or false) || - (regex_0_1_80.simd-accel or false); - regex_syntax_0_3_9.default = true; - thread_local_0_2_7.default = true; - utf8_ranges_0_1_3.default = true; - }) [ aho_corasick_0_5_3_features memchr_0_1_11_features regex_syntax_0_3_9_features thread_local_0_2_7_features utf8_ranges_0_1_3_features ]; - regex_syntax_0_3_9 = { features?(regex_syntax_0_3_9_features {}) }: regex_syntax_0_3_9_ {}; - regex_syntax_0_3_9_features = f: updateFeatures f (rec { - regex_syntax_0_3_9.default = (f.regex_syntax_0_3_9.default or true); - }) []; - relay_0_1_1 = { features?(relay_0_1_1_features {}) }: relay_0_1_1_ { - dependencies = mapFeatures features ([ futures_0_1_23 ]); - }; - relay_0_1_1_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - relay_0_1_1.default = (f.relay_0_1_1.default or true); - }) [ futures_0_1_23_features ]; - remove_dir_all_0_5_1 = { features?(remove_dir_all_0_5_1_features {}) }: remove_dir_all_0_5_1_ { - dependencies = (if kernel == "windows" then mapFeatures features ([ winapi_0_3_5 ]) else []); - }; - remove_dir_all_0_5_1_features = f: updateFeatures f (rec { - remove_dir_all_0_5_1.default = (f.remove_dir_all_0_5_1.default or true); - winapi_0_3_5.default = true; - winapi_0_3_5.errhandlingapi = true; - winapi_0_3_5.fileapi = true; - winapi_0_3_5.std = true; - winapi_0_3_5.winbase = true; - winapi_0_3_5.winerror = true; - }) [ winapi_0_3_5_features ]; - reqwest_0_8_6 = { features?(reqwest_0_8_6_features {}) }: reqwest_0_8_6_ { - dependencies = mapFeatures features ([ bytes_0_4_9 encoding_rs_0_7_2 futures_0_1_23 hyper_0_11_27 hyper_tls_0_1_3 libflate_0_1_16 log_0_4_3 mime_guess_2_0_0_alpha_6 native_tls_0_1_5 serde_1_0_70 serde_json_1_0_24 serde_urlencoded_0_5_2 tokio_core_0_1_17 tokio_io_0_1_7 tokio_tls_0_1_4 url_1_7_1 uuid_0_6_5 ]); - features = mkFeatures (features.reqwest_0_8_6 or {}); - }; - reqwest_0_8_6_features = f: updateFeatures f (rec { - bytes_0_4_9.default = true; - encoding_rs_0_7_2.default = true; - futures_0_1_23.default = true; - hyper_0_11_27.default = true; - hyper_tls_0_1_3.default = true; - libflate_0_1_16.default = true; - log_0_4_3.default = true; - mime_guess_2_0_0_alpha_6.default = true; - native_tls_0_1_5.default = true; - reqwest_0_8_6.default = (f.reqwest_0_8_6.default or true); - serde_1_0_70.default = true; - serde_json_1_0_24.default = true; - serde_urlencoded_0_5_2.default = true; - tokio_core_0_1_17.default = true; - tokio_io_0_1_7.default = true; - tokio_tls_0_1_4.default = true; - url_1_7_1.default = true; - uuid_0_6_5.default = true; - uuid_0_6_5.v4 = true; - }) [ bytes_0_4_9_features encoding_rs_0_7_2_features futures_0_1_23_features hyper_0_11_27_features hyper_tls_0_1_3_features libflate_0_1_16_features log_0_4_3_features mime_guess_2_0_0_alpha_6_features native_tls_0_1_5_features serde_1_0_70_features serde_json_1_0_24_features serde_urlencoded_0_5_2_features tokio_core_0_1_17_features tokio_io_0_1_7_features tokio_tls_0_1_4_features url_1_7_1_features uuid_0_6_5_features ]; - safemem_0_2_0 = { features?(safemem_0_2_0_features {}) }: safemem_0_2_0_ {}; - safemem_0_2_0_features = f: updateFeatures f (rec { - safemem_0_2_0.default = (f.safemem_0_2_0.default or true); - }) []; - schannel_0_1_13 = { features?(schannel_0_1_13_features {}) }: schannel_0_1_13_ { - dependencies = mapFeatures features ([ lazy_static_1_0_2 winapi_0_3_5 ]); - }; - schannel_0_1_13_features = f: updateFeatures f (rec { - lazy_static_1_0_2.default = true; - schannel_0_1_13.default = (f.schannel_0_1_13.default or true); - winapi_0_3_5.default = true; - winapi_0_3_5.lmcons = true; - winapi_0_3_5.minschannel = true; - winapi_0_3_5.schannel = true; - winapi_0_3_5.securitybaseapi = true; - winapi_0_3_5.sysinfoapi = true; - winapi_0_3_5.timezoneapi = true; - winapi_0_3_5.winbase = true; - winapi_0_3_5.wincrypt = true; - winapi_0_3_5.winerror = true; - }) [ lazy_static_1_0_2_features winapi_0_3_5_features ]; - scoped_tls_0_1_2 = { features?(scoped_tls_0_1_2_features {}) }: scoped_tls_0_1_2_ { - features = mkFeatures (features.scoped_tls_0_1_2 or {}); - }; - scoped_tls_0_1_2_features = f: updateFeatures f (rec { - scoped_tls_0_1_2.default = (f.scoped_tls_0_1_2.default or true); - }) []; - scopeguard_0_3_3 = { features?(scopeguard_0_3_3_features {}) }: scopeguard_0_3_3_ { - features = mkFeatures (features.scopeguard_0_3_3 or {}); - }; - scopeguard_0_3_3_features = f: updateFeatures f (rec { - scopeguard_0_3_3.default = (f.scopeguard_0_3_3.default or true); - scopeguard_0_3_3.use_std = - (f.scopeguard_0_3_3.use_std or false) || - (f.scopeguard_0_3_3.default or false) || - (scopeguard_0_3_3.default or false); - }) []; - security_framework_0_1_16 = { features?(security_framework_0_1_16_features {}) }: security_framework_0_1_16_ { - dependencies = mapFeatures features ([ core_foundation_0_2_3 core_foundation_sys_0_2_3 libc_0_2_42 security_framework_sys_0_1_16 ]); - features = mkFeatures (features.security_framework_0_1_16 or {}); - }; - security_framework_0_1_16_features = f: updateFeatures f (rec { - core_foundation_0_2_3.default = true; - core_foundation_sys_0_2_3.default = true; - libc_0_2_42.default = true; - security_framework_0_1_16.OSX_10_10 = - (f.security_framework_0_1_16.OSX_10_10 or false) || - (f.security_framework_0_1_16.OSX_10_11 or false) || - (security_framework_0_1_16.OSX_10_11 or false); - security_framework_0_1_16.OSX_10_11 = - (f.security_framework_0_1_16.OSX_10_11 or false) || - (f.security_framework_0_1_16.OSX_10_12 or false) || - (security_framework_0_1_16.OSX_10_12 or false); - security_framework_0_1_16.OSX_10_8 = - (f.security_framework_0_1_16.OSX_10_8 or false) || - (f.security_framework_0_1_16.OSX_10_9 or false) || - (security_framework_0_1_16.OSX_10_9 or false); - security_framework_0_1_16.OSX_10_9 = - (f.security_framework_0_1_16.OSX_10_9 or false) || - (f.security_framework_0_1_16.OSX_10_10 or false) || - (security_framework_0_1_16.OSX_10_10 or false); - security_framework_0_1_16.default = (f.security_framework_0_1_16.default or true); - security_framework_sys_0_1_16.OSX_10_10 = - (f.security_framework_sys_0_1_16.OSX_10_10 or false) || - (security_framework_0_1_16.OSX_10_10 or false) || - (f.security_framework_0_1_16.OSX_10_10 or false); - security_framework_sys_0_1_16.OSX_10_11 = - (f.security_framework_sys_0_1_16.OSX_10_11 or false) || - (security_framework_0_1_16.OSX_10_11 or false) || - (f.security_framework_0_1_16.OSX_10_11 or false) || - (security_framework_0_1_16.OSX_10_12 or false) || - (f.security_framework_0_1_16.OSX_10_12 or false); - security_framework_sys_0_1_16.OSX_10_8 = - (f.security_framework_sys_0_1_16.OSX_10_8 or false) || - (security_framework_0_1_16.OSX_10_8 or false) || - (f.security_framework_0_1_16.OSX_10_8 or false); - security_framework_sys_0_1_16.OSX_10_9 = - (f.security_framework_sys_0_1_16.OSX_10_9 or false) || - (security_framework_0_1_16.OSX_10_9 or false) || - (f.security_framework_0_1_16.OSX_10_9 or false); - security_framework_sys_0_1_16.default = true; - }) [ core_foundation_0_2_3_features core_foundation_sys_0_2_3_features libc_0_2_42_features security_framework_sys_0_1_16_features ]; - security_framework_sys_0_1_16 = { features?(security_framework_sys_0_1_16_features {}) }: security_framework_sys_0_1_16_ { - dependencies = mapFeatures features ([ core_foundation_sys_0_2_3 libc_0_2_42 ]); - features = mkFeatures (features.security_framework_sys_0_1_16 or {}); - }; - security_framework_sys_0_1_16_features = f: updateFeatures f (rec { - core_foundation_sys_0_2_3.default = true; - libc_0_2_42.default = true; - security_framework_sys_0_1_16.OSX_10_10 = - (f.security_framework_sys_0_1_16.OSX_10_10 or false) || - (f.security_framework_sys_0_1_16.OSX_10_11 or false) || - (security_framework_sys_0_1_16.OSX_10_11 or false); - security_framework_sys_0_1_16.OSX_10_11 = - (f.security_framework_sys_0_1_16.OSX_10_11 or false) || - (f.security_framework_sys_0_1_16.OSX_10_12 or false) || - (security_framework_sys_0_1_16.OSX_10_12 or false); - security_framework_sys_0_1_16.OSX_10_8 = - (f.security_framework_sys_0_1_16.OSX_10_8 or false) || - (f.security_framework_sys_0_1_16.OSX_10_9 or false) || - (security_framework_sys_0_1_16.OSX_10_9 or false); - security_framework_sys_0_1_16.OSX_10_9 = - (f.security_framework_sys_0_1_16.OSX_10_9 or false) || - (f.security_framework_sys_0_1_16.OSX_10_10 or false) || - (security_framework_sys_0_1_16.OSX_10_10 or false); - security_framework_sys_0_1_16.default = (f.security_framework_sys_0_1_16.default or true); - }) [ core_foundation_sys_0_2_3_features libc_0_2_42_features ]; - semver_0_9_0 = { features?(semver_0_9_0_features {}) }: semver_0_9_0_ { - dependencies = mapFeatures features ([ semver_parser_0_7_0 ]); - features = mkFeatures (features.semver_0_9_0 or {}); - }; - semver_0_9_0_features = f: updateFeatures f (rec { - semver_0_9_0.default = (f.semver_0_9_0.default or true); - semver_0_9_0.serde = - (f.semver_0_9_0.serde or false) || - (f.semver_0_9_0.ci or false) || - (semver_0_9_0.ci or false); - semver_parser_0_7_0.default = true; - }) [ semver_parser_0_7_0_features ]; - semver_parser_0_7_0 = { features?(semver_parser_0_7_0_features {}) }: semver_parser_0_7_0_ {}; - semver_parser_0_7_0_features = f: updateFeatures f (rec { - semver_parser_0_7_0.default = (f.semver_parser_0_7_0.default or true); - }) []; - serde_1_0_70 = { features?(serde_1_0_70_features {}) }: serde_1_0_70_ { - dependencies = mapFeatures features ([]); - features = mkFeatures (features.serde_1_0_70 or {}); - }; - serde_1_0_70_features = f: updateFeatures f (rec { - serde_1_0_70.default = (f.serde_1_0_70.default or true); - serde_1_0_70.serde_derive = - (f.serde_1_0_70.serde_derive or false) || - (f.serde_1_0_70.derive or false) || - (serde_1_0_70.derive or false); - serde_1_0_70.std = - (f.serde_1_0_70.std or false) || - (f.serde_1_0_70.default or false) || - (serde_1_0_70.default or false); - serde_1_0_70.unstable = - (f.serde_1_0_70.unstable or false) || - (f.serde_1_0_70.alloc or false) || - (serde_1_0_70.alloc or false); - }) []; - serde_json_1_0_24 = { features?(serde_json_1_0_24_features {}) }: serde_json_1_0_24_ { - dependencies = mapFeatures features ([ dtoa_0_4_3 itoa_0_4_2 serde_1_0_70 ]); - features = mkFeatures (features.serde_json_1_0_24 or {}); - }; - serde_json_1_0_24_features = f: updateFeatures f (rec { - dtoa_0_4_3.default = true; - itoa_0_4_2.default = true; - serde_1_0_70.default = true; - serde_json_1_0_24.default = (f.serde_json_1_0_24.default or true); - serde_json_1_0_24.indexmap = - (f.serde_json_1_0_24.indexmap or false) || - (f.serde_json_1_0_24.preserve_order or false) || - (serde_json_1_0_24.preserve_order or false); - }) [ dtoa_0_4_3_features itoa_0_4_2_features serde_1_0_70_features ]; - serde_urlencoded_0_5_2 = { features?(serde_urlencoded_0_5_2_features {}) }: serde_urlencoded_0_5_2_ { - dependencies = mapFeatures features ([ dtoa_0_4_3 itoa_0_4_2 serde_1_0_70 url_1_7_1 ]); - }; - serde_urlencoded_0_5_2_features = f: updateFeatures f (rec { - dtoa_0_4_3.default = true; - itoa_0_4_2.default = true; - serde_1_0_70.default = true; - serde_urlencoded_0_5_2.default = (f.serde_urlencoded_0_5_2.default or true); - url_1_7_1.default = true; - }) [ dtoa_0_4_3_features itoa_0_4_2_features serde_1_0_70_features url_1_7_1_features ]; - siphasher_0_2_2 = { features?(siphasher_0_2_2_features {}) }: siphasher_0_2_2_ { - dependencies = mapFeatures features ([]); - }; - siphasher_0_2_2_features = f: updateFeatures f (rec { - siphasher_0_2_2.default = (f.siphasher_0_2_2.default or true); - }) []; - slab_0_3_0 = { features?(slab_0_3_0_features {}) }: slab_0_3_0_ {}; - slab_0_3_0_features = f: updateFeatures f (rec { - slab_0_3_0.default = (f.slab_0_3_0.default or true); - }) []; - slab_0_4_0 = { features?(slab_0_4_0_features {}) }: slab_0_4_0_ {}; - slab_0_4_0_features = f: updateFeatures f (rec { - slab_0_4_0.default = (f.slab_0_4_0.default or true); - }) []; - slog_1_7_1 = { features?(slog_1_7_1_features {}) }: slog_1_7_1_ { - features = mkFeatures (features.slog_1_7_1 or {}); - }; - slog_1_7_1_features = f: updateFeatures f (rec { - slog_1_7_1.default = (f.slog_1_7_1.default or true); - slog_1_7_1.std = - (f.slog_1_7_1.std or false) || - (f.slog_1_7_1.default or false) || - (slog_1_7_1.default or false); - }) []; - slog_envlogger_0_5_0 = { features?(slog_envlogger_0_5_0_features {}) }: slog_envlogger_0_5_0_ { - dependencies = mapFeatures features ([ log_0_3_9 regex_0_1_80 slog_1_7_1 slog_stdlog_1_1_0 slog_term_1_5_0 ]); - }; - slog_envlogger_0_5_0_features = f: updateFeatures f (rec { - log_0_3_9.default = true; - regex_0_1_80.default = true; - slog_1_7_1.default = true; - slog_envlogger_0_5_0.default = (f.slog_envlogger_0_5_0.default or true); - slog_stdlog_1_1_0.default = true; - slog_term_1_5_0.default = true; - }) [ log_0_3_9_features regex_0_1_80_features slog_1_7_1_features slog_stdlog_1_1_0_features slog_term_1_5_0_features ]; - slog_extra_0_1_2 = { features?(slog_extra_0_1_2_features {}) }: slog_extra_0_1_2_ { - dependencies = mapFeatures features ([ slog_1_7_1 thread_local_0_3_5 ]); - }; - slog_extra_0_1_2_features = f: updateFeatures f (rec { - slog_1_7_1.default = true; - slog_extra_0_1_2.default = (f.slog_extra_0_1_2.default or true); - thread_local_0_3_5.default = true; - }) [ slog_1_7_1_features thread_local_0_3_5_features ]; - slog_stdlog_1_1_0 = { features?(slog_stdlog_1_1_0_features {}) }: slog_stdlog_1_1_0_ { - dependencies = mapFeatures features ([ crossbeam_0_2_12 lazy_static_0_2_11 log_0_3_9 slog_1_7_1 slog_term_1_5_0 ]); - }; - slog_stdlog_1_1_0_features = f: updateFeatures f (rec { - crossbeam_0_2_12.default = true; - lazy_static_0_2_11.default = true; - log_0_3_9.default = true; - slog_1_7_1.default = true; - slog_stdlog_1_1_0.default = (f.slog_stdlog_1_1_0.default or true); - slog_term_1_5_0.default = true; - }) [ crossbeam_0_2_12_features lazy_static_0_2_11_features log_0_3_9_features slog_1_7_1_features slog_term_1_5_0_features ]; - slog_stream_1_2_1 = { features?(slog_stream_1_2_1_features {}) }: slog_stream_1_2_1_ { - dependencies = mapFeatures features ([ slog_1_7_1 slog_extra_0_1_2 thread_local_0_3_5 ]); - }; - slog_stream_1_2_1_features = f: updateFeatures f (rec { - slog_1_7_1.default = true; - slog_extra_0_1_2.default = true; - slog_stream_1_2_1.default = (f.slog_stream_1_2_1.default or true); - thread_local_0_3_5.default = true; - }) [ slog_1_7_1_features slog_extra_0_1_2_features thread_local_0_3_5_features ]; - slog_term_1_5_0 = { features?(slog_term_1_5_0_features {}) }: slog_term_1_5_0_ { - dependencies = mapFeatures features ([ chrono_0_2_25 isatty_0_1_8 slog_1_7_1 slog_stream_1_2_1 thread_local_0_3_5 ]); - }; - slog_term_1_5_0_features = f: updateFeatures f (rec { - chrono_0_2_25.default = true; - isatty_0_1_8.default = true; - slog_1_7_1.default = true; - slog_stream_1_2_1.default = true; - slog_term_1_5_0.default = (f.slog_term_1_5_0.default or true); - thread_local_0_3_5.default = true; - }) [ chrono_0_2_25_features isatty_0_1_8_features slog_1_7_1_features slog_stream_1_2_1_features thread_local_0_3_5_features ]; - smallvec_0_2_1 = { features?(smallvec_0_2_1_features {}) }: smallvec_0_2_1_ {}; - smallvec_0_2_1_features = f: updateFeatures f (rec { - smallvec_0_2_1.default = (f.smallvec_0_2_1.default or true); - }) []; - strsim_0_7_0 = { features?(strsim_0_7_0_features {}) }: strsim_0_7_0_ {}; - strsim_0_7_0_features = f: updateFeatures f (rec { - strsim_0_7_0.default = (f.strsim_0_7_0.default or true); - }) []; - syn_0_11_11 = { features?(syn_0_11_11_features {}) }: syn_0_11_11_ { - dependencies = mapFeatures features ([ ] - ++ (if features.syn_0_11_11.quote or false then [ quote_0_3_15 ] else []) - ++ (if features.syn_0_11_11.synom or false then [ synom_0_11_3 ] else []) - ++ (if features.syn_0_11_11.unicode-xid or false then [ unicode_xid_0_0_4 ] else [])); - features = mkFeatures (features.syn_0_11_11 or {}); - }; - syn_0_11_11_features = f: updateFeatures f (rec { - quote_0_3_15.default = true; - syn_0_11_11.default = (f.syn_0_11_11.default or true); - syn_0_11_11.parsing = - (f.syn_0_11_11.parsing or false) || - (f.syn_0_11_11.default or false) || - (syn_0_11_11.default or false); - syn_0_11_11.printing = - (f.syn_0_11_11.printing or false) || - (f.syn_0_11_11.default or false) || - (syn_0_11_11.default or false); - syn_0_11_11.quote = - (f.syn_0_11_11.quote or false) || - (f.syn_0_11_11.printing or false) || - (syn_0_11_11.printing or false); - syn_0_11_11.synom = - (f.syn_0_11_11.synom or false) || - (f.syn_0_11_11.parsing or false) || - (syn_0_11_11.parsing or false); - syn_0_11_11.unicode-xid = - (f.syn_0_11_11.unicode-xid or false) || - (f.syn_0_11_11.parsing or false) || - (syn_0_11_11.parsing or false); - synom_0_11_3.default = true; - unicode_xid_0_0_4.default = true; - }) [ quote_0_3_15_features synom_0_11_3_features unicode_xid_0_0_4_features ]; - synom_0_11_3 = { features?(synom_0_11_3_features {}) }: synom_0_11_3_ { - dependencies = mapFeatures features ([ unicode_xid_0_0_4 ]); - }; - synom_0_11_3_features = f: updateFeatures f (rec { - synom_0_11_3.default = (f.synom_0_11_3.default or true); - unicode_xid_0_0_4.default = true; - }) [ unicode_xid_0_0_4_features ]; - take_0_1_0 = { features?(take_0_1_0_features {}) }: take_0_1_0_ {}; - take_0_1_0_features = f: updateFeatures f (rec { - take_0_1_0.default = (f.take_0_1_0.default or true); - }) []; - tar_0_4_16 = { features?(tar_0_4_16_features {}) }: tar_0_4_16_ { - dependencies = mapFeatures features ([ filetime_0_2_1 ]) - ++ (if kernel == "redox" then mapFeatures features ([ redox_syscall_0_1_40 ]) else []) - ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_42 ] - ++ (if features.tar_0_4_16.xattr or false then [ xattr_0_2_2 ] else [])) else []); - features = mkFeatures (features.tar_0_4_16 or {}); - }; - tar_0_4_16_features = f: updateFeatures f (rec { - filetime_0_2_1.default = true; - libc_0_2_42.default = true; - redox_syscall_0_1_40.default = true; - tar_0_4_16.default = (f.tar_0_4_16.default or true); - tar_0_4_16.xattr = - (f.tar_0_4_16.xattr or false) || - (f.tar_0_4_16.default or false) || - (tar_0_4_16.default or false); - xattr_0_2_2.default = true; - }) [ filetime_0_2_1_features redox_syscall_0_1_40_features libc_0_2_42_features xattr_0_2_2_features ]; - tempdir_0_3_7 = { features?(tempdir_0_3_7_features {}) }: tempdir_0_3_7_ { - dependencies = mapFeatures features ([ rand_0_4_2 remove_dir_all_0_5_1 ]); - }; - tempdir_0_3_7_features = f: updateFeatures f (rec { - rand_0_4_2.default = true; - remove_dir_all_0_5_1.default = true; - tempdir_0_3_7.default = (f.tempdir_0_3_7.default or true); - }) [ rand_0_4_2_features remove_dir_all_0_5_1_features ]; - termion_1_5_1 = { features?(termion_1_5_1_features {}) }: termion_1_5_1_ { - dependencies = (if !(kernel == "redox") then mapFeatures features ([ libc_0_2_42 ]) else []) - ++ (if kernel == "redox" then mapFeatures features ([ redox_syscall_0_1_40 redox_termios_0_1_1 ]) else []); - }; - termion_1_5_1_features = f: updateFeatures f (rec { - libc_0_2_42.default = true; - redox_syscall_0_1_40.default = true; - redox_termios_0_1_1.default = true; - termion_1_5_1.default = (f.termion_1_5_1.default or true); - }) [ libc_0_2_42_features redox_syscall_0_1_40_features redox_termios_0_1_1_features ]; - textwrap_0_10_0 = { features?(textwrap_0_10_0_features {}) }: textwrap_0_10_0_ { - dependencies = mapFeatures features ([ unicode_width_0_1_5 ]); - }; - textwrap_0_10_0_features = f: updateFeatures f (rec { - textwrap_0_10_0.default = (f.textwrap_0_10_0.default or true); - unicode_width_0_1_5.default = true; - }) [ unicode_width_0_1_5_features ]; - thread_id_2_0_0 = { features?(thread_id_2_0_0_features {}) }: thread_id_2_0_0_ { - dependencies = mapFeatures features ([ kernel32_sys_0_2_2 libc_0_2_42 ]); - }; - thread_id_2_0_0_features = f: updateFeatures f (rec { - kernel32_sys_0_2_2.default = true; - libc_0_2_42.default = true; - thread_id_2_0_0.default = (f.thread_id_2_0_0.default or true); - }) [ kernel32_sys_0_2_2_features libc_0_2_42_features ]; - thread_local_0_2_7 = { features?(thread_local_0_2_7_features {}) }: thread_local_0_2_7_ { - dependencies = mapFeatures features ([ thread_id_2_0_0 ]); - }; - thread_local_0_2_7_features = f: updateFeatures f (rec { - thread_id_2_0_0.default = true; - thread_local_0_2_7.default = (f.thread_local_0_2_7.default or true); - }) [ thread_id_2_0_0_features ]; - thread_local_0_3_5 = { features?(thread_local_0_3_5_features {}) }: thread_local_0_3_5_ { - dependencies = mapFeatures features ([ lazy_static_1_0_2 unreachable_1_0_0 ]); - }; - thread_local_0_3_5_features = f: updateFeatures f (rec { - lazy_static_1_0_2.default = true; - thread_local_0_3_5.default = (f.thread_local_0_3_5.default or true); - unreachable_1_0_0.default = true; - }) [ lazy_static_1_0_2_features unreachable_1_0_0_features ]; - time_0_1_40 = { features?(time_0_1_40_features {}) }: time_0_1_40_ { - dependencies = mapFeatures features ([ libc_0_2_42 ]) - ++ (if kernel == "redox" then mapFeatures features ([ redox_syscall_0_1_40 ]) else []) - ++ (if kernel == "windows" then mapFeatures features ([ winapi_0_3_5 ]) else []); - }; - time_0_1_40_features = f: updateFeatures f (rec { - libc_0_2_42.default = true; - redox_syscall_0_1_40.default = true; - time_0_1_40.default = (f.time_0_1_40.default or true); - winapi_0_3_5.default = true; - winapi_0_3_5.minwinbase = true; - winapi_0_3_5.minwindef = true; - winapi_0_3_5.ntdef = true; - winapi_0_3_5.profileapi = true; - winapi_0_3_5.std = true; - winapi_0_3_5.sysinfoapi = true; - winapi_0_3_5.timezoneapi = true; - }) [ libc_0_2_42_features redox_syscall_0_1_40_features winapi_0_3_5_features ]; - tokio_0_1_7 = { features?(tokio_0_1_7_features {}) }: tokio_0_1_7_ { - dependencies = mapFeatures features ([ futures_0_1_23 mio_0_6_15 tokio_executor_0_1_2 tokio_fs_0_1_2 tokio_io_0_1_7 tokio_reactor_0_1_2 tokio_tcp_0_1_0 tokio_threadpool_0_1_5 tokio_timer_0_2_4 tokio_udp_0_1_1 ]); - }; - tokio_0_1_7_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - mio_0_6_15.default = true; - tokio_0_1_7.default = (f.tokio_0_1_7.default or true); - tokio_executor_0_1_2.default = true; - tokio_fs_0_1_2.default = true; - tokio_io_0_1_7.default = true; - tokio_reactor_0_1_2.default = true; - tokio_tcp_0_1_0.default = true; - tokio_threadpool_0_1_5.default = true; - tokio_timer_0_2_4.default = true; - tokio_udp_0_1_1.default = true; - }) [ futures_0_1_23_features mio_0_6_15_features tokio_executor_0_1_2_features tokio_fs_0_1_2_features tokio_io_0_1_7_features tokio_reactor_0_1_2_features tokio_tcp_0_1_0_features tokio_threadpool_0_1_5_features tokio_timer_0_2_4_features tokio_udp_0_1_1_features ]; - tokio_codec_0_1_0 = { features?(tokio_codec_0_1_0_features {}) }: tokio_codec_0_1_0_ { - dependencies = mapFeatures features ([ bytes_0_4_9 futures_0_1_23 tokio_io_0_1_7 ]); - }; - tokio_codec_0_1_0_features = f: updateFeatures f (rec { - bytes_0_4_9.default = true; - futures_0_1_23.default = true; - tokio_codec_0_1_0.default = (f.tokio_codec_0_1_0.default or true); - tokio_io_0_1_7.default = true; - }) [ bytes_0_4_9_features futures_0_1_23_features tokio_io_0_1_7_features ]; - tokio_core_0_1_17 = { features?(tokio_core_0_1_17_features {}) }: tokio_core_0_1_17_ { - dependencies = mapFeatures features ([ bytes_0_4_9 futures_0_1_23 iovec_0_1_2 log_0_4_3 mio_0_6_15 scoped_tls_0_1_2 tokio_0_1_7 tokio_executor_0_1_2 tokio_io_0_1_7 tokio_reactor_0_1_2 tokio_timer_0_2_4 ]); - }; - tokio_core_0_1_17_features = f: updateFeatures f (rec { - bytes_0_4_9.default = true; - futures_0_1_23.default = true; - iovec_0_1_2.default = true; - log_0_4_3.default = true; - mio_0_6_15.default = true; - scoped_tls_0_1_2.default = true; - tokio_0_1_7.default = true; - tokio_core_0_1_17.default = (f.tokio_core_0_1_17.default or true); - tokio_executor_0_1_2.default = true; - tokio_io_0_1_7.default = true; - tokio_reactor_0_1_2.default = true; - tokio_timer_0_2_4.default = true; - }) [ bytes_0_4_9_features futures_0_1_23_features iovec_0_1_2_features log_0_4_3_features mio_0_6_15_features scoped_tls_0_1_2_features tokio_0_1_7_features tokio_executor_0_1_2_features tokio_io_0_1_7_features tokio_reactor_0_1_2_features tokio_timer_0_2_4_features ]; - tokio_executor_0_1_2 = { features?(tokio_executor_0_1_2_features {}) }: tokio_executor_0_1_2_ { - dependencies = mapFeatures features ([ futures_0_1_23 ]); - features = mkFeatures (features.tokio_executor_0_1_2 or {}); - }; - tokio_executor_0_1_2_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - tokio_executor_0_1_2.default = (f.tokio_executor_0_1_2.default or true); - tokio_executor_0_1_2.futures2 = - (f.tokio_executor_0_1_2.futures2 or false) || - (f.tokio_executor_0_1_2.unstable-futures or false) || - (tokio_executor_0_1_2.unstable-futures or false); - }) [ futures_0_1_23_features ]; - tokio_fs_0_1_2 = { features?(tokio_fs_0_1_2_features {}) }: tokio_fs_0_1_2_ { - dependencies = mapFeatures features ([ futures_0_1_23 tokio_io_0_1_7 tokio_threadpool_0_1_5 ]); - }; - tokio_fs_0_1_2_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - tokio_fs_0_1_2.default = (f.tokio_fs_0_1_2.default or true); - tokio_io_0_1_7.default = true; - tokio_threadpool_0_1_5.default = true; - }) [ futures_0_1_23_features tokio_io_0_1_7_features tokio_threadpool_0_1_5_features ]; - tokio_io_0_1_7 = { features?(tokio_io_0_1_7_features {}) }: tokio_io_0_1_7_ { - dependencies = mapFeatures features ([ bytes_0_4_9 futures_0_1_23 log_0_4_3 ]); - }; - tokio_io_0_1_7_features = f: updateFeatures f (rec { - bytes_0_4_9.default = true; - futures_0_1_23.default = true; - log_0_4_3.default = true; - tokio_io_0_1_7.default = (f.tokio_io_0_1_7.default or true); - }) [ bytes_0_4_9_features futures_0_1_23_features log_0_4_3_features ]; - tokio_proto_0_1_1 = { features?(tokio_proto_0_1_1_features {}) }: tokio_proto_0_1_1_ { - dependencies = mapFeatures features ([ futures_0_1_23 log_0_3_9 net2_0_2_33 rand_0_3_22 slab_0_3_0 smallvec_0_2_1 take_0_1_0 tokio_core_0_1_17 tokio_io_0_1_7 tokio_service_0_1_0 ]); - }; - tokio_proto_0_1_1_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - log_0_3_9.default = true; - net2_0_2_33.default = true; - rand_0_3_22.default = true; - slab_0_3_0.default = true; - smallvec_0_2_1.default = true; - take_0_1_0.default = true; - tokio_core_0_1_17.default = true; - tokio_io_0_1_7.default = true; - tokio_proto_0_1_1.default = (f.tokio_proto_0_1_1.default or true); - tokio_service_0_1_0.default = true; - }) [ futures_0_1_23_features log_0_3_9_features net2_0_2_33_features rand_0_3_22_features slab_0_3_0_features smallvec_0_2_1_features take_0_1_0_features tokio_core_0_1_17_features tokio_io_0_1_7_features tokio_service_0_1_0_features ]; - tokio_reactor_0_1_2 = { features?(tokio_reactor_0_1_2_features {}) }: tokio_reactor_0_1_2_ { - dependencies = mapFeatures features ([ futures_0_1_23 log_0_4_3 mio_0_6_15 slab_0_4_0 tokio_executor_0_1_2 tokio_io_0_1_7 ]); - }; - tokio_reactor_0_1_2_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - log_0_4_3.default = true; - mio_0_6_15.default = true; - slab_0_4_0.default = true; - tokio_executor_0_1_2.default = true; - tokio_io_0_1_7.default = true; - tokio_reactor_0_1_2.default = (f.tokio_reactor_0_1_2.default or true); - }) [ futures_0_1_23_features log_0_4_3_features mio_0_6_15_features slab_0_4_0_features tokio_executor_0_1_2_features tokio_io_0_1_7_features ]; - tokio_service_0_1_0 = { features?(tokio_service_0_1_0_features {}) }: tokio_service_0_1_0_ { - dependencies = mapFeatures features ([ futures_0_1_23 ]); - }; - tokio_service_0_1_0_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - tokio_service_0_1_0.default = (f.tokio_service_0_1_0.default or true); - }) [ futures_0_1_23_features ]; - tokio_tcp_0_1_0 = { features?(tokio_tcp_0_1_0_features {}) }: tokio_tcp_0_1_0_ { - dependencies = mapFeatures features ([ bytes_0_4_9 futures_0_1_23 iovec_0_1_2 mio_0_6_15 tokio_io_0_1_7 tokio_reactor_0_1_2 ]); - features = mkFeatures (features.tokio_tcp_0_1_0 or {}); - }; - tokio_tcp_0_1_0_features = f: updateFeatures f (rec { - bytes_0_4_9.default = true; - futures_0_1_23.default = true; - iovec_0_1_2.default = true; - mio_0_6_15.default = true; - tokio_io_0_1_7.default = true; - tokio_reactor_0_1_2.default = true; - tokio_tcp_0_1_0.default = (f.tokio_tcp_0_1_0.default or true); - tokio_tcp_0_1_0.futures2 = - (f.tokio_tcp_0_1_0.futures2 or false) || - (f.tokio_tcp_0_1_0.unstable-futures or false) || - (tokio_tcp_0_1_0.unstable-futures or false); - }) [ bytes_0_4_9_features futures_0_1_23_features iovec_0_1_2_features mio_0_6_15_features tokio_io_0_1_7_features tokio_reactor_0_1_2_features ]; - tokio_threadpool_0_1_5 = { features?(tokio_threadpool_0_1_5_features {}) }: tokio_threadpool_0_1_5_ { - dependencies = mapFeatures features ([ crossbeam_deque_0_3_1 futures_0_1_23 log_0_4_3 num_cpus_1_8_0 rand_0_4_2 tokio_executor_0_1_2 ]); - }; - tokio_threadpool_0_1_5_features = f: updateFeatures f (rec { - crossbeam_deque_0_3_1.default = true; - futures_0_1_23.default = true; - log_0_4_3.default = true; - num_cpus_1_8_0.default = true; - rand_0_4_2.default = true; - tokio_executor_0_1_2.default = true; - tokio_threadpool_0_1_5.default = (f.tokio_threadpool_0_1_5.default or true); - }) [ crossbeam_deque_0_3_1_features futures_0_1_23_features log_0_4_3_features num_cpus_1_8_0_features rand_0_4_2_features tokio_executor_0_1_2_features ]; - tokio_timer_0_2_4 = { features?(tokio_timer_0_2_4_features {}) }: tokio_timer_0_2_4_ { - dependencies = mapFeatures features ([ futures_0_1_23 tokio_executor_0_1_2 ]); - }; - tokio_timer_0_2_4_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - tokio_executor_0_1_2.default = true; - tokio_timer_0_2_4.default = (f.tokio_timer_0_2_4.default or true); - }) [ futures_0_1_23_features tokio_executor_0_1_2_features ]; - tokio_tls_0_1_4 = { features?(tokio_tls_0_1_4_features {}) }: tokio_tls_0_1_4_ { - dependencies = mapFeatures features ([ futures_0_1_23 native_tls_0_1_5 tokio_core_0_1_17 tokio_io_0_1_7 ]) - ++ (if !(kernel == "darwin") && !(kernel == "windows") && !(kernel == "ios") then mapFeatures features ([]) else []) - ++ (if kernel == "darwin" || kernel == "ios" then mapFeatures features ([]) else []) - ++ (if kernel == "windows" then mapFeatures features ([]) else []); - }; - tokio_tls_0_1_4_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - native_tls_0_1_5.default = true; - tokio_core_0_1_17.default = true; - tokio_io_0_1_7.default = true; - tokio_tls_0_1_4.default = (f.tokio_tls_0_1_4.default or true); - }) [ futures_0_1_23_features native_tls_0_1_5_features tokio_core_0_1_17_features tokio_io_0_1_7_features ]; - tokio_udp_0_1_1 = { features?(tokio_udp_0_1_1_features {}) }: tokio_udp_0_1_1_ { - dependencies = mapFeatures features ([ bytes_0_4_9 futures_0_1_23 log_0_4_3 mio_0_6_15 tokio_codec_0_1_0 tokio_io_0_1_7 tokio_reactor_0_1_2 ]); - }; - tokio_udp_0_1_1_features = f: updateFeatures f (rec { - bytes_0_4_9.default = true; - futures_0_1_23.default = true; - log_0_4_3.default = true; - mio_0_6_15.default = true; - tokio_codec_0_1_0.default = true; - tokio_io_0_1_7.default = true; - tokio_reactor_0_1_2.default = true; - tokio_udp_0_1_1.default = (f.tokio_udp_0_1_1.default or true); - }) [ bytes_0_4_9_features futures_0_1_23_features log_0_4_3_features mio_0_6_15_features tokio_codec_0_1_0_features tokio_io_0_1_7_features tokio_reactor_0_1_2_features ]; - try_lock_0_1_0 = { features?(try_lock_0_1_0_features {}) }: try_lock_0_1_0_ {}; - try_lock_0_1_0_features = f: updateFeatures f (rec { - try_lock_0_1_0.default = (f.try_lock_0_1_0.default or true); - }) []; - unicase_1_4_2 = { features?(unicase_1_4_2_features {}) }: unicase_1_4_2_ { - dependencies = mapFeatures features ([]); - buildDependencies = mapFeatures features ([ version_check_0_1_4 ]); - features = mkFeatures (features.unicase_1_4_2 or {}); - }; - unicase_1_4_2_features = f: updateFeatures f (rec { - unicase_1_4_2.default = (f.unicase_1_4_2.default or true); - unicase_1_4_2.heapsize = - (f.unicase_1_4_2.heapsize or false) || - (f.unicase_1_4_2.heap_size or false) || - (unicase_1_4_2.heap_size or false); - unicase_1_4_2.heapsize_plugin = - (f.unicase_1_4_2.heapsize_plugin or false) || - (f.unicase_1_4_2.heap_size or false) || - (unicase_1_4_2.heap_size or false); - version_check_0_1_4.default = true; - }) [ version_check_0_1_4_features ]; - unicase_2_1_0 = { features?(unicase_2_1_0_features {}) }: unicase_2_1_0_ { - buildDependencies = mapFeatures features ([ version_check_0_1_4 ]); - features = mkFeatures (features.unicase_2_1_0 or {}); - }; - unicase_2_1_0_features = f: updateFeatures f (rec { - unicase_2_1_0.default = (f.unicase_2_1_0.default or true); - version_check_0_1_4.default = true; - }) [ version_check_0_1_4_features ]; - unicode_bidi_0_3_4 = { features?(unicode_bidi_0_3_4_features {}) }: unicode_bidi_0_3_4_ { - dependencies = mapFeatures features ([ matches_0_1_7 ]); - features = mkFeatures (features.unicode_bidi_0_3_4 or {}); - }; - unicode_bidi_0_3_4_features = f: updateFeatures f (rec { - matches_0_1_7.default = true; - unicode_bidi_0_3_4.default = (f.unicode_bidi_0_3_4.default or true); - unicode_bidi_0_3_4.flame = - (f.unicode_bidi_0_3_4.flame or false) || - (f.unicode_bidi_0_3_4.flame_it or false) || - (unicode_bidi_0_3_4.flame_it or false); - unicode_bidi_0_3_4.flamer = - (f.unicode_bidi_0_3_4.flamer or false) || - (f.unicode_bidi_0_3_4.flame_it or false) || - (unicode_bidi_0_3_4.flame_it or false); - unicode_bidi_0_3_4.serde = - (f.unicode_bidi_0_3_4.serde or false) || - (f.unicode_bidi_0_3_4.with_serde or false) || - (unicode_bidi_0_3_4.with_serde or false); - }) [ matches_0_1_7_features ]; - unicode_normalization_0_1_7 = { features?(unicode_normalization_0_1_7_features {}) }: unicode_normalization_0_1_7_ {}; - unicode_normalization_0_1_7_features = f: updateFeatures f (rec { - unicode_normalization_0_1_7.default = (f.unicode_normalization_0_1_7.default or true); - }) []; - unicode_width_0_1_5 = { features?(unicode_width_0_1_5_features {}) }: unicode_width_0_1_5_ { - features = mkFeatures (features.unicode_width_0_1_5 or {}); - }; - unicode_width_0_1_5_features = f: updateFeatures f (rec { - unicode_width_0_1_5.default = (f.unicode_width_0_1_5.default or true); - }) []; - unicode_xid_0_0_4 = { features?(unicode_xid_0_0_4_features {}) }: unicode_xid_0_0_4_ { - features = mkFeatures (features.unicode_xid_0_0_4 or {}); - }; - unicode_xid_0_0_4_features = f: updateFeatures f (rec { - unicode_xid_0_0_4.default = (f.unicode_xid_0_0_4.default or true); - }) []; - unreachable_1_0_0 = { features?(unreachable_1_0_0_features {}) }: unreachable_1_0_0_ { - dependencies = mapFeatures features ([ void_1_0_2 ]); - }; - unreachable_1_0_0_features = f: updateFeatures f (rec { - unreachable_1_0_0.default = (f.unreachable_1_0_0.default or true); - void_1_0_2.default = (f.void_1_0_2.default or false); - }) [ void_1_0_2_features ]; - url_1_7_1 = { features?(url_1_7_1_features {}) }: url_1_7_1_ { - dependencies = mapFeatures features ([ idna_0_1_5 matches_0_1_7 percent_encoding_1_0_1 ]); - features = mkFeatures (features.url_1_7_1 or {}); - }; - url_1_7_1_features = f: updateFeatures f (rec { - idna_0_1_5.default = true; - matches_0_1_7.default = true; - percent_encoding_1_0_1.default = true; - url_1_7_1.default = (f.url_1_7_1.default or true); - url_1_7_1.encoding = - (f.url_1_7_1.encoding or false) || - (f.url_1_7_1.query_encoding or false) || - (url_1_7_1.query_encoding or false); - url_1_7_1.heapsize = - (f.url_1_7_1.heapsize or false) || - (f.url_1_7_1.heap_size or false) || - (url_1_7_1.heap_size or false); - }) [ idna_0_1_5_features matches_0_1_7_features percent_encoding_1_0_1_features ]; - utf8_ranges_0_1_3 = { features?(utf8_ranges_0_1_3_features {}) }: utf8_ranges_0_1_3_ {}; - utf8_ranges_0_1_3_features = f: updateFeatures f (rec { - utf8_ranges_0_1_3.default = (f.utf8_ranges_0_1_3.default or true); - }) []; - uuid_0_6_5 = { features?(uuid_0_6_5_features {}) }: uuid_0_6_5_ { - dependencies = mapFeatures features ([ cfg_if_0_1_4 ] - ++ (if features.uuid_0_6_5.rand or false then [ rand_0_4_2 ] else [])); - features = mkFeatures (features.uuid_0_6_5 or {}); - }; - uuid_0_6_5_features = f: updateFeatures f (rec { - cfg_if_0_1_4.default = true; - rand_0_4_2.default = true; - uuid_0_6_5.byteorder = - (f.uuid_0_6_5.byteorder or false) || - (f.uuid_0_6_5.u128 or false) || - (uuid_0_6_5.u128 or false); - uuid_0_6_5.default = (f.uuid_0_6_5.default or true); - uuid_0_6_5.md5 = - (f.uuid_0_6_5.md5 or false) || - (f.uuid_0_6_5.v3 or false) || - (uuid_0_6_5.v3 or false); - uuid_0_6_5.nightly = - (f.uuid_0_6_5.nightly or false) || - (f.uuid_0_6_5.const_fn or false) || - (uuid_0_6_5.const_fn or false); - uuid_0_6_5.rand = - (f.uuid_0_6_5.rand or false) || - (f.uuid_0_6_5.v3 or false) || - (uuid_0_6_5.v3 or false) || - (f.uuid_0_6_5.v4 or false) || - (uuid_0_6_5.v4 or false) || - (f.uuid_0_6_5.v5 or false) || - (uuid_0_6_5.v5 or false); - uuid_0_6_5.sha1 = - (f.uuid_0_6_5.sha1 or false) || - (f.uuid_0_6_5.v5 or false) || - (uuid_0_6_5.v5 or false); - uuid_0_6_5.std = - (f.uuid_0_6_5.std or false) || - (f.uuid_0_6_5.default or false) || - (uuid_0_6_5.default or false) || - (f.uuid_0_6_5.use_std or false) || - (uuid_0_6_5.use_std or false); - }) [ cfg_if_0_1_4_features rand_0_4_2_features ]; - vcpkg_0_2_4 = { features?(vcpkg_0_2_4_features {}) }: vcpkg_0_2_4_ {}; - vcpkg_0_2_4_features = f: updateFeatures f (rec { - vcpkg_0_2_4.default = (f.vcpkg_0_2_4.default or true); - }) []; - vec_map_0_8_1 = { features?(vec_map_0_8_1_features {}) }: vec_map_0_8_1_ { - dependencies = mapFeatures features ([]); - features = mkFeatures (features.vec_map_0_8_1 or {}); - }; - vec_map_0_8_1_features = f: updateFeatures f (rec { - vec_map_0_8_1.default = (f.vec_map_0_8_1.default or true); - vec_map_0_8_1.serde = - (f.vec_map_0_8_1.serde or false) || - (f.vec_map_0_8_1.eders or false) || - (vec_map_0_8_1.eders or false); - }) []; - version_check_0_1_4 = { features?(version_check_0_1_4_features {}) }: version_check_0_1_4_ {}; - version_check_0_1_4_features = f: updateFeatures f (rec { - version_check_0_1_4.default = (f.version_check_0_1_4.default or true); - }) []; - void_1_0_2 = { features?(void_1_0_2_features {}) }: void_1_0_2_ { - features = mkFeatures (features.void_1_0_2 or {}); - }; - void_1_0_2_features = f: updateFeatures f (rec { - void_1_0_2.default = (f.void_1_0_2.default or true); - void_1_0_2.std = - (f.void_1_0_2.std or false) || - (f.void_1_0_2.default or false) || - (void_1_0_2.default or false); - }) []; - want_0_0_4 = { features?(want_0_0_4_features {}) }: want_0_0_4_ { - dependencies = mapFeatures features ([ futures_0_1_23 log_0_4_3 try_lock_0_1_0 ]); - }; - want_0_0_4_features = f: updateFeatures f (rec { - futures_0_1_23.default = true; - log_0_4_3.default = true; - try_lock_0_1_0.default = true; - want_0_0_4.default = (f.want_0_0_4.default or true); - }) [ futures_0_1_23_features log_0_4_3_features try_lock_0_1_0_features ]; - winapi_0_2_8 = { features?(winapi_0_2_8_features {}) }: winapi_0_2_8_ {}; - winapi_0_2_8_features = f: updateFeatures f (rec { - winapi_0_2_8.default = (f.winapi_0_2_8.default or true); - }) []; - winapi_0_3_5 = { features?(winapi_0_3_5_features {}) }: winapi_0_3_5_ { - dependencies = (if kernel == "i686-pc-windows-gnu" then mapFeatures features ([ winapi_i686_pc_windows_gnu_0_4_0 ]) else []) - ++ (if kernel == "x86_64-pc-windows-gnu" then mapFeatures features ([ winapi_x86_64_pc_windows_gnu_0_4_0 ]) else []); - features = mkFeatures (features.winapi_0_3_5 or {}); - }; - winapi_0_3_5_features = f: updateFeatures f (rec { - winapi_0_3_5.default = (f.winapi_0_3_5.default or true); - winapi_i686_pc_windows_gnu_0_4_0.default = true; - winapi_x86_64_pc_windows_gnu_0_4_0.default = true; - }) [ winapi_i686_pc_windows_gnu_0_4_0_features winapi_x86_64_pc_windows_gnu_0_4_0_features ]; - winapi_build_0_1_1 = { features?(winapi_build_0_1_1_features {}) }: winapi_build_0_1_1_ {}; - winapi_build_0_1_1_features = f: updateFeatures f (rec { - winapi_build_0_1_1.default = (f.winapi_build_0_1_1.default or true); - }) []; - winapi_i686_pc_windows_gnu_0_4_0 = { features?(winapi_i686_pc_windows_gnu_0_4_0_features {}) }: winapi_i686_pc_windows_gnu_0_4_0_ {}; - winapi_i686_pc_windows_gnu_0_4_0_features = f: updateFeatures f (rec { - winapi_i686_pc_windows_gnu_0_4_0.default = (f.winapi_i686_pc_windows_gnu_0_4_0.default or true); - }) []; - winapi_x86_64_pc_windows_gnu_0_4_0 = { features?(winapi_x86_64_pc_windows_gnu_0_4_0_features {}) }: winapi_x86_64_pc_windows_gnu_0_4_0_ {}; - winapi_x86_64_pc_windows_gnu_0_4_0_features = f: updateFeatures f (rec { - winapi_x86_64_pc_windows_gnu_0_4_0.default = (f.winapi_x86_64_pc_windows_gnu_0_4_0.default or true); - }) []; - ws2_32_sys_0_2_1 = { features?(ws2_32_sys_0_2_1_features {}) }: ws2_32_sys_0_2_1_ { - dependencies = mapFeatures features ([ winapi_0_2_8 ]); - buildDependencies = mapFeatures features ([ winapi_build_0_1_1 ]); - }; - ws2_32_sys_0_2_1_features = f: updateFeatures f (rec { - winapi_0_2_8.default = true; - winapi_build_0_1_1.default = true; - ws2_32_sys_0_2_1.default = (f.ws2_32_sys_0_2_1.default or true); - }) [ winapi_0_2_8_features winapi_build_0_1_1_features ]; - xattr_0_2_2 = { features?(xattr_0_2_2_features {}) }: xattr_0_2_2_ { - dependencies = mapFeatures features ([ libc_0_2_42 ]); - features = mkFeatures (features.xattr_0_2_2 or {}); - }; - xattr_0_2_2_features = f: updateFeatures f (rec { - libc_0_2_42.default = true; - xattr_0_2_2.default = (f.xattr_0_2_2.default or true); - xattr_0_2_2.unsupported = - (f.xattr_0_2_2.unsupported or false) || - (f.xattr_0_2_2.default or false) || - (xattr_0_2_2.default or false); - }) [ libc_0_2_42_features ]; + deps.adler32."1.0.2" = {}; + deps.aho_corasick."0.5.3" = { + memchr = "0.1.11"; + }; + deps.ansi_term."0.9.0" = {}; + deps.arrayvec."0.4.8" = { + nodrop = "0.1.13"; + }; + deps.atty."0.2.3" = { + termion = "1.5.1"; + libc = "0.2.44"; + kernel32_sys = "0.2.2"; + winapi = "0.2.8"; + }; + deps.base64."0.9.3" = { + byteorder = "1.1.0"; + safemem = "0.3.0"; + }; + deps.bitflags."0.7.0" = {}; + deps.bitflags."0.9.1" = {}; + deps.bitflags."1.0.4" = {}; + deps.byteorder."1.1.0" = {}; + deps.bytes."0.4.11" = { + byteorder = "1.1.0"; + iovec = "0.1.1"; + }; + deps.cargo_download."0.1.2" = { + ansi_term = "0.9.0"; + clap = "2.27.1"; + conv = "0.3.3"; + derive_error = "0.0.3"; + exitcode = "1.1.2"; + flate2 = "0.2.20"; + isatty = "0.1.5"; + itertools = "0.6.5"; + lazy_static = "0.2.10"; + log = "0.3.8"; + maplit = "0.1.6"; + reqwest = "0.9.5"; + semver = "0.9.0"; + serde_json = "1.0.6"; + slog = "1.7.1"; + slog_envlogger = "0.5.0"; + slog_stdlog = "1.1.0"; + slog_stream = "1.2.1"; + tar = "0.4.13"; + time = "0.1.38"; + }; + deps.case."0.1.0" = {}; + deps.cc."1.0.3" = {}; + deps.cfg_if."0.1.2" = {}; + deps.chrono."0.2.25" = { + num = "0.1.40"; + time = "0.1.38"; + }; + deps.clap."2.27.1" = { + ansi_term = "0.9.0"; + atty = "0.2.3"; + bitflags = "0.9.1"; + strsim = "0.6.0"; + textwrap = "0.9.0"; + unicode_width = "0.1.4"; + vec_map = "0.8.0"; + }; + deps.cloudabi."0.0.3" = { + bitflags = "1.0.4"; + }; + deps.conv."0.3.3" = { + custom_derive = "0.1.7"; + }; + deps.core_foundation."0.5.1" = { + core_foundation_sys = "0.5.1"; + libc = "0.2.44"; + }; + deps.core_foundation_sys."0.5.1" = { + libc = "0.2.44"; + }; + deps.crc32fast."1.1.1" = {}; + deps.crossbeam."0.2.10" = {}; + deps.crossbeam_deque."0.6.2" = { + crossbeam_epoch = "0.6.1"; + crossbeam_utils = "0.6.1"; + }; + deps.crossbeam_epoch."0.6.1" = { + arrayvec = "0.4.8"; + cfg_if = "0.1.2"; + crossbeam_utils = "0.6.1"; + lazy_static = "1.2.0"; + memoffset = "0.2.1"; + scopeguard = "0.3.3"; + }; + deps.crossbeam_utils."0.6.1" = { + cfg_if = "0.1.2"; + }; + deps.custom_derive."0.1.7" = {}; + deps.derive_error."0.0.3" = { + case = "0.1.0"; + quote = "0.3.15"; + syn = "0.11.11"; + }; + deps.dtoa."0.4.2" = {}; + deps.either."1.4.0" = {}; + deps.encoding_rs."0.8.13" = { + cfg_if = "0.1.2"; + }; + deps.exitcode."1.1.2" = {}; + deps.filetime."0.1.14" = { + cfg_if = "0.1.2"; + redox_syscall = "0.1.31"; + libc = "0.2.44"; + }; + deps.flate2."0.2.20" = { + libc = "0.2.44"; + miniz_sys = "0.1.10"; + }; + deps.fnv."1.0.6" = {}; + deps.foreign_types."0.3.2" = { + foreign_types_shared = "0.1.1"; + }; + deps.foreign_types_shared."0.1.1" = {}; + deps.fuchsia_zircon."0.2.1" = { + fuchsia_zircon_sys = "0.2.0"; + }; + deps.fuchsia_zircon."0.3.3" = { + bitflags = "1.0.4"; + fuchsia_zircon_sys = "0.3.3"; + }; + deps.fuchsia_zircon_sys."0.2.0" = { + bitflags = "0.7.0"; + }; + deps.fuchsia_zircon_sys."0.3.3" = {}; + deps.futures."0.1.25" = {}; + deps.futures_cpupool."0.1.7" = { + futures = "0.1.25"; + num_cpus = "1.8.0"; + }; + deps.h2."0.1.13" = { + byteorder = "1.1.0"; + bytes = "0.4.11"; + fnv = "1.0.6"; + futures = "0.1.25"; + http = "0.1.14"; + indexmap = "1.0.2"; + log = "0.4.6"; + slab = "0.4.0"; + string = "0.1.2"; + tokio_io = "0.1.10"; + }; + deps.http."0.1.14" = { + bytes = "0.4.11"; + fnv = "1.0.6"; + itoa = "0.4.3"; + }; + deps.httparse."1.2.3" = {}; + deps.hyper."0.12.16" = { + bytes = "0.4.11"; + futures = "0.1.25"; + futures_cpupool = "0.1.7"; + h2 = "0.1.13"; + http = "0.1.14"; + httparse = "1.2.3"; + iovec = "0.1.1"; + itoa = "0.4.3"; + log = "0.4.6"; + net2 = "0.2.33"; + time = "0.1.38"; + tokio = "0.1.7"; + tokio_executor = "0.1.5"; + tokio_io = "0.1.10"; + tokio_reactor = "0.1.7"; + tokio_tcp = "0.1.2"; + tokio_threadpool = "0.1.9"; + tokio_timer = "0.2.5"; + want = "0.0.6"; + }; + deps.hyper_tls."0.3.1" = { + bytes = "0.4.11"; + futures = "0.1.25"; + hyper = "0.12.16"; + native_tls = "0.2.2"; + tokio_io = "0.1.10"; + }; + deps.idna."0.1.4" = { + matches = "0.1.6"; + unicode_bidi = "0.3.4"; + unicode_normalization = "0.1.5"; + }; + deps.indexmap."1.0.2" = {}; + deps.iovec."0.1.1" = { + libc = "0.2.44"; + winapi = "0.2.8"; + }; + deps.isatty."0.1.5" = { + libc = "0.2.44"; + kernel32_sys = "0.2.2"; + winapi = "0.2.8"; + }; + deps.itertools."0.6.5" = { + either = "1.4.0"; + }; + deps.itoa."0.3.4" = {}; + deps.itoa."0.4.3" = {}; + deps.kernel32_sys."0.2.2" = { + winapi = "0.2.8"; + winapi_build = "0.1.1"; + }; + deps.lazy_static."0.2.10" = {}; + deps.lazy_static."1.2.0" = {}; + deps.lazycell."1.2.0" = {}; + deps.libc."0.2.44" = {}; + deps.libflate."0.1.19" = { + adler32 = "1.0.2"; + byteorder = "1.1.0"; + crc32fast = "1.1.1"; + }; + deps.lock_api."0.1.5" = { + owning_ref = "0.4.0"; + scopeguard = "0.3.3"; + }; + deps.log."0.3.8" = {}; + deps.log."0.4.6" = { + cfg_if = "0.1.2"; + }; + deps.maplit."0.1.6" = {}; + deps.matches."0.1.6" = {}; + deps.memchr."0.1.11" = { + libc = "0.2.44"; + }; + deps.memoffset."0.2.1" = {}; + deps.mime."0.3.12" = { + unicase = "2.1.0"; + }; + deps.mime_guess."2.0.0-alpha.6" = { + mime = "0.3.12"; + phf = "0.7.21"; + unicase = "1.4.2"; + phf_codegen = "0.7.21"; + }; + deps.miniz_sys."0.1.10" = { + libc = "0.2.44"; + cc = "1.0.3"; + }; + deps.mio."0.6.16" = { + iovec = "0.1.1"; + lazycell = "1.2.0"; + log = "0.4.6"; + net2 = "0.2.33"; + slab = "0.4.0"; + fuchsia_zircon = "0.3.3"; + fuchsia_zircon_sys = "0.3.3"; + libc = "0.2.44"; + kernel32_sys = "0.2.2"; + miow = "0.2.1"; + winapi = "0.2.8"; + }; + deps.miow."0.2.1" = { + kernel32_sys = "0.2.2"; + net2 = "0.2.33"; + winapi = "0.2.8"; + ws2_32_sys = "0.2.1"; + }; + deps.native_tls."0.2.2" = { + lazy_static = "1.2.0"; + libc = "0.2.44"; + security_framework = "0.2.1"; + security_framework_sys = "0.2.1"; + tempfile = "3.0.5"; + openssl = "0.10.15"; + openssl_probe = "0.1.2"; + openssl_sys = "0.9.39"; + log = "0.4.6"; + schannel = "0.1.14"; + }; + deps.net2."0.2.33" = { + cfg_if = "0.1.2"; + libc = "0.2.44"; + winapi = "0.3.6"; + }; + deps.nodrop."0.1.13" = {}; + deps.num."0.1.40" = { + num_integer = "0.1.35"; + num_iter = "0.1.34"; + num_traits = "0.1.40"; + }; + deps.num_integer."0.1.35" = { + num_traits = "0.1.40"; + }; + deps.num_iter."0.1.34" = { + num_integer = "0.1.35"; + num_traits = "0.1.40"; + }; + deps.num_traits."0.1.40" = {}; + deps.num_cpus."1.8.0" = { + libc = "0.2.44"; + }; + deps.openssl."0.10.15" = { + bitflags = "1.0.4"; + cfg_if = "0.1.2"; + foreign_types = "0.3.2"; + lazy_static = "1.2.0"; + libc = "0.2.44"; + openssl_sys = "0.9.39"; + }; + deps.openssl_probe."0.1.2" = {}; + deps.openssl_sys."0.9.39" = { + libc = "0.2.44"; + cc = "1.0.3"; + pkg_config = "0.3.9"; + }; + deps.owning_ref."0.4.0" = { + stable_deref_trait = "1.1.1"; + }; + deps.parking_lot."0.6.4" = { + lock_api = "0.1.5"; + parking_lot_core = "0.3.1"; + }; + deps.parking_lot_core."0.3.1" = { + rand = "0.5.5"; + smallvec = "0.6.7"; + rustc_version = "0.2.3"; + libc = "0.2.44"; + winapi = "0.3.6"; + }; + deps.percent_encoding."1.0.1" = {}; + deps.phf."0.7.21" = { + phf_shared = "0.7.21"; + }; + deps.phf_codegen."0.7.21" = { + phf_generator = "0.7.21"; + phf_shared = "0.7.21"; + }; + deps.phf_generator."0.7.21" = { + phf_shared = "0.7.21"; + rand = "0.3.18"; + }; + deps.phf_shared."0.7.21" = { + siphasher = "0.2.2"; + unicase = "1.4.2"; + }; + deps.pkg_config."0.3.9" = {}; + deps.quote."0.3.15" = {}; + deps.rand."0.3.18" = { + libc = "0.2.44"; + fuchsia_zircon = "0.2.1"; + }; + deps.rand."0.5.5" = { + rand_core = "0.2.2"; + cloudabi = "0.0.3"; + fuchsia_zircon = "0.3.3"; + libc = "0.2.44"; + winapi = "0.3.6"; + }; + deps.rand."0.6.1" = { + rand_chacha = "0.1.0"; + rand_core = "0.3.0"; + rand_hc = "0.1.0"; + rand_isaac = "0.1.1"; + rand_pcg = "0.1.1"; + rand_xorshift = "0.1.0"; + rustc_version = "0.2.3"; + cloudabi = "0.0.3"; + fuchsia_zircon = "0.3.3"; + libc = "0.2.44"; + winapi = "0.3.6"; + }; + deps.rand_chacha."0.1.0" = { + rand_core = "0.3.0"; + rustc_version = "0.2.3"; + }; + deps.rand_core."0.2.2" = { + rand_core = "0.3.0"; + }; + deps.rand_core."0.3.0" = {}; + deps.rand_hc."0.1.0" = { + rand_core = "0.3.0"; + }; + deps.rand_isaac."0.1.1" = { + rand_core = "0.3.0"; + }; + deps.rand_pcg."0.1.1" = { + rand_core = "0.3.0"; + rustc_version = "0.2.3"; + }; + deps.rand_xorshift."0.1.0" = { + rand_core = "0.3.0"; + }; + deps.redox_syscall."0.1.31" = {}; + deps.redox_termios."0.1.1" = { + redox_syscall = "0.1.31"; + }; + deps.regex."0.1.80" = { + aho_corasick = "0.5.3"; + memchr = "0.1.11"; + regex_syntax = "0.3.9"; + thread_local = "0.2.7"; + utf8_ranges = "0.1.3"; + }; + deps.regex_syntax."0.3.9" = {}; + deps.remove_dir_all."0.5.1" = { + winapi = "0.3.6"; + }; + deps.reqwest."0.9.5" = { + base64 = "0.9.3"; + bytes = "0.4.11"; + encoding_rs = "0.8.13"; + futures = "0.1.25"; + http = "0.1.14"; + hyper = "0.12.16"; + hyper_tls = "0.3.1"; + libflate = "0.1.19"; + log = "0.4.6"; + mime = "0.3.12"; + mime_guess = "2.0.0-alpha.6"; + native_tls = "0.2.2"; + serde = "1.0.21"; + serde_json = "1.0.6"; + serde_urlencoded = "0.5.1"; + tokio = "0.1.7"; + tokio_io = "0.1.10"; + url = "1.6.0"; + uuid = "0.7.1"; + }; + deps.rustc_version."0.2.3" = { + semver = "0.9.0"; + }; + deps.safemem."0.3.0" = {}; + deps.schannel."0.1.14" = { + lazy_static = "1.2.0"; + winapi = "0.3.6"; + }; + deps.scopeguard."0.3.3" = {}; + deps.security_framework."0.2.1" = { + core_foundation = "0.5.1"; + core_foundation_sys = "0.5.1"; + libc = "0.2.44"; + security_framework_sys = "0.2.1"; + }; + deps.security_framework_sys."0.2.1" = { + core_foundation_sys = "0.5.1"; + libc = "0.2.44"; + }; + deps.semver."0.9.0" = { + semver_parser = "0.7.0"; + }; + deps.semver_parser."0.7.0" = {}; + deps.serde."1.0.21" = {}; + deps.serde_json."1.0.6" = { + dtoa = "0.4.2"; + itoa = "0.3.4"; + num_traits = "0.1.40"; + serde = "1.0.21"; + }; + deps.serde_urlencoded."0.5.1" = { + dtoa = "0.4.2"; + itoa = "0.3.4"; + serde = "1.0.21"; + url = "1.6.0"; + }; + deps.siphasher."0.2.2" = {}; + deps.slab."0.4.0" = {}; + deps.slog."1.7.1" = {}; + deps.slog_envlogger."0.5.0" = { + log = "0.3.8"; + regex = "0.1.80"; + slog = "1.7.1"; + slog_stdlog = "1.1.0"; + slog_term = "1.5.0"; + }; + deps.slog_extra."0.1.2" = { + slog = "1.7.1"; + thread_local = "0.3.4"; + }; + deps.slog_stdlog."1.1.0" = { + crossbeam = "0.2.10"; + lazy_static = "0.2.10"; + log = "0.3.8"; + slog = "1.7.1"; + slog_term = "1.5.0"; + }; + deps.slog_stream."1.2.1" = { + slog = "1.7.1"; + slog_extra = "0.1.2"; + thread_local = "0.3.4"; + }; + deps.slog_term."1.5.0" = { + chrono = "0.2.25"; + isatty = "0.1.5"; + slog = "1.7.1"; + slog_stream = "1.2.1"; + thread_local = "0.3.4"; + }; + deps.smallvec."0.6.7" = { + unreachable = "1.0.0"; + }; + deps.stable_deref_trait."1.1.1" = {}; + deps.string."0.1.2" = {}; + deps.strsim."0.6.0" = {}; + deps.syn."0.11.11" = { + quote = "0.3.15"; + synom = "0.11.3"; + unicode_xid = "0.0.4"; + }; + deps.synom."0.11.3" = { + unicode_xid = "0.0.4"; + }; + deps.tar."0.4.13" = { + filetime = "0.1.14"; + libc = "0.2.44"; + xattr = "0.1.11"; + }; + deps.tempfile."3.0.5" = { + cfg_if = "0.1.2"; + rand = "0.6.1"; + remove_dir_all = "0.5.1"; + redox_syscall = "0.1.31"; + libc = "0.2.44"; + winapi = "0.3.6"; + }; + deps.termion."1.5.1" = { + libc = "0.2.44"; + redox_syscall = "0.1.31"; + redox_termios = "0.1.1"; + }; + deps.textwrap."0.9.0" = { + unicode_width = "0.1.4"; + }; + deps.thread_id."2.0.0" = { + kernel32_sys = "0.2.2"; + libc = "0.2.44"; + }; + deps.thread_local."0.2.7" = { + thread_id = "2.0.0"; + }; + deps.thread_local."0.3.4" = { + lazy_static = "0.2.10"; + unreachable = "1.0.0"; + }; + deps.time."0.1.38" = { + libc = "0.2.44"; + redox_syscall = "0.1.31"; + kernel32_sys = "0.2.2"; + winapi = "0.2.8"; + }; + deps.tokio."0.1.7" = { + futures = "0.1.25"; + mio = "0.6.16"; + tokio_executor = "0.1.5"; + tokio_fs = "0.1.4"; + tokio_io = "0.1.10"; + tokio_reactor = "0.1.7"; + tokio_tcp = "0.1.2"; + tokio_threadpool = "0.1.9"; + tokio_timer = "0.2.5"; + tokio_udp = "0.1.3"; + }; + deps.tokio_codec."0.1.1" = { + bytes = "0.4.11"; + futures = "0.1.25"; + tokio_io = "0.1.10"; + }; + deps.tokio_executor."0.1.5" = { + futures = "0.1.25"; + }; + deps.tokio_fs."0.1.4" = { + futures = "0.1.25"; + tokio_io = "0.1.10"; + tokio_threadpool = "0.1.9"; + }; + deps.tokio_io."0.1.10" = { + bytes = "0.4.11"; + futures = "0.1.25"; + log = "0.4.6"; + }; + deps.tokio_reactor."0.1.7" = { + crossbeam_utils = "0.6.1"; + futures = "0.1.25"; + lazy_static = "1.2.0"; + log = "0.4.6"; + mio = "0.6.16"; + num_cpus = "1.8.0"; + parking_lot = "0.6.4"; + slab = "0.4.0"; + tokio_executor = "0.1.5"; + tokio_io = "0.1.10"; + }; + deps.tokio_tcp."0.1.2" = { + bytes = "0.4.11"; + futures = "0.1.25"; + iovec = "0.1.1"; + mio = "0.6.16"; + tokio_io = "0.1.10"; + tokio_reactor = "0.1.7"; + }; + deps.tokio_threadpool."0.1.9" = { + crossbeam_deque = "0.6.2"; + crossbeam_utils = "0.6.1"; + futures = "0.1.25"; + log = "0.4.6"; + num_cpus = "1.8.0"; + rand = "0.6.1"; + tokio_executor = "0.1.5"; + }; + deps.tokio_timer."0.2.5" = { + futures = "0.1.25"; + tokio_executor = "0.1.5"; + }; + deps.tokio_udp."0.1.3" = { + bytes = "0.4.11"; + futures = "0.1.25"; + log = "0.4.6"; + mio = "0.6.16"; + tokio_codec = "0.1.1"; + tokio_io = "0.1.10"; + tokio_reactor = "0.1.7"; + }; + deps.try_lock."0.2.2" = {}; + deps.unicase."1.4.2" = { + version_check = "0.1.3"; + }; + deps.unicase."2.1.0" = { + version_check = "0.1.3"; + }; + deps.unicode_bidi."0.3.4" = { + matches = "0.1.6"; + }; + deps.unicode_normalization."0.1.5" = {}; + deps.unicode_width."0.1.4" = {}; + deps.unicode_xid."0.0.4" = {}; + deps.unreachable."1.0.0" = { + void = "1.0.2"; + }; + deps.url."1.6.0" = { + idna = "0.1.4"; + matches = "0.1.6"; + percent_encoding = "1.0.1"; + }; + deps.utf8_ranges."0.1.3" = {}; + deps.uuid."0.7.1" = { + rand = "0.5.5"; + }; + deps.vcpkg."0.2.2" = {}; + deps.vec_map."0.8.0" = {}; + deps.version_check."0.1.3" = {}; + deps.void."1.0.2" = {}; + deps.want."0.0.6" = { + futures = "0.1.25"; + log = "0.4.6"; + try_lock = "0.2.2"; + }; + deps.winapi."0.2.8" = {}; + deps.winapi."0.3.6" = { + winapi_i686_pc_windows_gnu = "0.4.0"; + winapi_x86_64_pc_windows_gnu = "0.4.0"; + }; + deps.winapi_build."0.1.1" = {}; + deps.winapi_i686_pc_windows_gnu."0.4.0" = {}; + deps.winapi_x86_64_pc_windows_gnu."0.4.0" = {}; + deps.ws2_32_sys."0.2.1" = { + winapi = "0.2.8"; + winapi_build = "0.1.1"; + }; + deps.xattr."0.1.11" = { + libc = "0.2.44"; + }; } diff --git a/pkgs/tools/package-management/cargo-download/crates-io.nix b/pkgs/tools/package-management/cargo-download/crates-io.nix new file mode 100644 index 000000000000..d120a05e00d7 --- /dev/null +++ b/pkgs/tools/package-management/cargo-download/crates-io.nix @@ -0,0 +1,5289 @@ +{ lib, buildRustCrate, buildRustCrateHelpers }: +with buildRustCrateHelpers; +let inherit (lib.lists) fold; + inherit (lib.attrsets) recursiveUpdate; +in +rec { + +# adler32-1.0.2 + + crates.adler32."1.0.2" = deps: { features?(features_.adler32."1.0.2" deps {}) }: buildRustCrate { + crateName = "adler32"; + version = "1.0.2"; + description = "Minimal Adler32 implementation for Rust."; + authors = [ "Remi Rampin " ]; + sha256 = "1974q3nysai026zhz24df506cxwi09jdzqksll4h7ibpb5n9g1d4"; + }; + features_.adler32."1.0.2" = deps: f: updateFeatures f (rec { + adler32."1.0.2".default = (f.adler32."1.0.2".default or true); + }) []; + + +# end +# aho-corasick-0.5.3 + + crates.aho_corasick."0.5.3" = deps: { features?(features_.aho_corasick."0.5.3" deps {}) }: buildRustCrate { + crateName = "aho-corasick"; + version = "0.5.3"; + description = "Fast multiple substring searching with finite state machines."; + authors = [ "Andrew Gallant " ]; + sha256 = "1igab46mvgknga3sxkqc917yfff0wsjxjzabdigmh240p5qxqlnn"; + libName = "aho_corasick"; + crateBin = + [{ name = "aho-corasick-dot"; }]; + dependencies = mapFeatures features ([ + (crates."memchr"."${deps."aho_corasick"."0.5.3"."memchr"}" deps) + ]); + }; + features_.aho_corasick."0.5.3" = deps: f: updateFeatures f (rec { + aho_corasick."0.5.3".default = (f.aho_corasick."0.5.3".default or true); + memchr."${deps.aho_corasick."0.5.3".memchr}".default = true; + }) [ + (features_.memchr."${deps."aho_corasick"."0.5.3"."memchr"}" deps) + ]; + + +# end +# ansi_term-0.9.0 + + crates.ansi_term."0.9.0" = deps: { features?(features_.ansi_term."0.9.0" deps {}) }: buildRustCrate { + crateName = "ansi_term"; + version = "0.9.0"; + description = "Library for ANSI terminal colours and styles (bold, underline)"; + authors = [ "ogham@bsago.me" "Ryan Scheel (Havvy) " ]; + sha256 = "1vcd8m2hglrdi4zmqnkkz5zy3c73ifgii245k7vj6qr5dzpn9hij"; + }; + features_.ansi_term."0.9.0" = deps: f: updateFeatures f (rec { + ansi_term."0.9.0".default = (f.ansi_term."0.9.0".default or true); + }) []; + + +# end +# arrayvec-0.4.8 + + crates.arrayvec."0.4.8" = deps: { features?(features_.arrayvec."0.4.8" deps {}) }: buildRustCrate { + crateName = "arrayvec"; + version = "0.4.8"; + description = "A vector with fixed capacity, backed by an array (it can be stored on the stack too). Implements fixed capacity ArrayVec and ArrayString."; + authors = [ "bluss" ]; + sha256 = "0zwpjdxgr0a11h9x7mkrif4wyx3c81b90paxjf326i86s13kib1g"; + dependencies = mapFeatures features ([ + (crates."nodrop"."${deps."arrayvec"."0.4.8"."nodrop"}" deps) + ]); + features = mkFeatures (features."arrayvec"."0.4.8" or {}); + }; + features_.arrayvec."0.4.8" = deps: f: updateFeatures f (rec { + arrayvec = fold recursiveUpdate {} [ + { "0.4.8"."serde" = + (f.arrayvec."0.4.8"."serde" or false) || + (f.arrayvec."0.4.8".serde-1 or false) || + (arrayvec."0.4.8"."serde-1" or false); } + { "0.4.8"."std" = + (f.arrayvec."0.4.8"."std" or false) || + (f.arrayvec."0.4.8".default or false) || + (arrayvec."0.4.8"."default" or false); } + { "0.4.8".default = (f.arrayvec."0.4.8".default or true); } + ]; + nodrop."${deps.arrayvec."0.4.8".nodrop}".default = (f.nodrop."${deps.arrayvec."0.4.8".nodrop}".default or false); + }) [ + (features_.nodrop."${deps."arrayvec"."0.4.8"."nodrop"}" deps) + ]; + + +# end +# atty-0.2.3 + + crates.atty."0.2.3" = deps: { features?(features_.atty."0.2.3" deps {}) }: buildRustCrate { + crateName = "atty"; + version = "0.2.3"; + description = "A simple interface for querying atty"; + authors = [ "softprops " ]; + sha256 = "0zl0cjfgarp5y78nd755lpki5bbkj4hgmi88v265m543yg29i88f"; + dependencies = (if kernel == "redox" then mapFeatures features ([ + (crates."termion"."${deps."atty"."0.2.3"."termion"}" deps) + ]) else []) + ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + (crates."libc"."${deps."atty"."0.2.3"."libc"}" deps) + ]) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + (crates."kernel32_sys"."${deps."atty"."0.2.3"."kernel32_sys"}" deps) + (crates."winapi"."${deps."atty"."0.2.3"."winapi"}" deps) + ]) else []); + }; + features_.atty."0.2.3" = deps: f: updateFeatures f (rec { + atty."0.2.3".default = (f.atty."0.2.3".default or true); + kernel32_sys."${deps.atty."0.2.3".kernel32_sys}".default = true; + libc."${deps.atty."0.2.3".libc}".default = (f.libc."${deps.atty."0.2.3".libc}".default or false); + termion."${deps.atty."0.2.3".termion}".default = true; + winapi."${deps.atty."0.2.3".winapi}".default = true; + }) [ + (features_.termion."${deps."atty"."0.2.3"."termion"}" deps) + (features_.libc."${deps."atty"."0.2.3"."libc"}" deps) + (features_.kernel32_sys."${deps."atty"."0.2.3"."kernel32_sys"}" deps) + (features_.winapi."${deps."atty"."0.2.3"."winapi"}" deps) + ]; + + +# end +# base64-0.9.3 + + crates.base64."0.9.3" = deps: { features?(features_.base64."0.9.3" deps {}) }: buildRustCrate { + crateName = "base64"; + version = "0.9.3"; + description = "encodes and decodes base64 as bytes or utf8"; + authors = [ "Alice Maz " "Marshall Pierce " ]; + sha256 = "11hhz8ln4zbpn2h2gm9fbbb9j254wrd4fpmddlyah2rrnqsmmqkd"; + dependencies = mapFeatures features ([ + (crates."byteorder"."${deps."base64"."0.9.3"."byteorder"}" deps) + (crates."safemem"."${deps."base64"."0.9.3"."safemem"}" deps) + ]); + }; + features_.base64."0.9.3" = deps: f: updateFeatures f (rec { + base64."0.9.3".default = (f.base64."0.9.3".default or true); + byteorder."${deps.base64."0.9.3".byteorder}".default = true; + safemem."${deps.base64."0.9.3".safemem}".default = true; + }) [ + (features_.byteorder."${deps."base64"."0.9.3"."byteorder"}" deps) + (features_.safemem."${deps."base64"."0.9.3"."safemem"}" deps) + ]; + + +# end +# bitflags-0.7.0 + + crates.bitflags."0.7.0" = deps: { features?(features_.bitflags."0.7.0" deps {}) }: buildRustCrate { + crateName = "bitflags"; + version = "0.7.0"; + description = "A macro to generate structures which behave like bitflags.\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "1hr72xg5slm0z4pxs2hiy4wcyx3jva70h58b7mid8l0a4c8f7gn5"; + }; + features_.bitflags."0.7.0" = deps: f: updateFeatures f (rec { + bitflags."0.7.0".default = (f.bitflags."0.7.0".default or true); + }) []; + + +# end +# bitflags-0.9.1 + + crates.bitflags."0.9.1" = deps: { features?(features_.bitflags."0.9.1" deps {}) }: buildRustCrate { + crateName = "bitflags"; + version = "0.9.1"; + description = "A macro to generate structures which behave like bitflags.\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "18h073l5jd88rx4qdr95fjddr9rk79pb1aqnshzdnw16cfmb9rws"; + features = mkFeatures (features."bitflags"."0.9.1" or {}); + }; + features_.bitflags."0.9.1" = deps: f: updateFeatures f (rec { + bitflags = fold recursiveUpdate {} [ + { "0.9.1"."example_generated" = + (f.bitflags."0.9.1"."example_generated" or false) || + (f.bitflags."0.9.1".default or false) || + (bitflags."0.9.1"."default" or false); } + { "0.9.1".default = (f.bitflags."0.9.1".default or true); } + ]; + }) []; + + +# end +# bitflags-1.0.4 + + crates.bitflags."1.0.4" = deps: { features?(features_.bitflags."1.0.4" deps {}) }: buildRustCrate { + crateName = "bitflags"; + version = "1.0.4"; + description = "A macro to generate structures which behave like bitflags.\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "1g1wmz2001qmfrd37dnd5qiss5njrw26aywmg6yhkmkbyrhjxb08"; + features = mkFeatures (features."bitflags"."1.0.4" or {}); + }; + features_.bitflags."1.0.4" = deps: f: updateFeatures f (rec { + bitflags."1.0.4".default = (f.bitflags."1.0.4".default or true); + }) []; + + +# end +# byteorder-1.1.0 + + crates.byteorder."1.1.0" = deps: { features?(features_.byteorder."1.1.0" deps {}) }: buildRustCrate { + crateName = "byteorder"; + version = "1.1.0"; + description = "Library for reading/writing numbers in big-endian and little-endian."; + authors = [ "Andrew Gallant " ]; + sha256 = "1i2n0161jm00zvzh4bncgv9zrwa6ydbxdn5j4bx0wwn7rvi9zycp"; + features = mkFeatures (features."byteorder"."1.1.0" or {}); + }; + features_.byteorder."1.1.0" = deps: f: updateFeatures f (rec { + byteorder = fold recursiveUpdate {} [ + { "1.1.0"."std" = + (f.byteorder."1.1.0"."std" or false) || + (f.byteorder."1.1.0".default or false) || + (byteorder."1.1.0"."default" or false); } + { "1.1.0".default = (f.byteorder."1.1.0".default or true); } + ]; + }) []; + + +# end +# bytes-0.4.11 + + crates.bytes."0.4.11" = deps: { features?(features_.bytes."0.4.11" deps {}) }: buildRustCrate { + crateName = "bytes"; + version = "0.4.11"; + description = "Types and traits for working with bytes"; + authors = [ "Carl Lerche " ]; + sha256 = "1lk8bnxcd8shiizarf0n6ljmj1542n90jw6lz6i270gxl7rzplmh"; + dependencies = mapFeatures features ([ + (crates."byteorder"."${deps."bytes"."0.4.11"."byteorder"}" deps) + (crates."iovec"."${deps."bytes"."0.4.11"."iovec"}" deps) + ]); + features = mkFeatures (features."bytes"."0.4.11" or {}); + }; + features_.bytes."0.4.11" = deps: f: updateFeatures f (rec { + byteorder = fold recursiveUpdate {} [ + { "${deps.bytes."0.4.11".byteorder}"."i128" = + (f.byteorder."${deps.bytes."0.4.11".byteorder}"."i128" or false) || + (bytes."0.4.11"."i128" or false) || + (f."bytes"."0.4.11"."i128" or false); } + { "${deps.bytes."0.4.11".byteorder}".default = true; } + ]; + bytes."0.4.11".default = (f.bytes."0.4.11".default or true); + iovec."${deps.bytes."0.4.11".iovec}".default = true; + }) [ + (features_.byteorder."${deps."bytes"."0.4.11"."byteorder"}" deps) + (features_.iovec."${deps."bytes"."0.4.11"."iovec"}" deps) + ]; + + +# end +# cargo-download-0.1.2 + + crates.cargo_download."0.1.2" = deps: { features?(features_.cargo_download."0.1.2" deps {}) }: buildRustCrate { + crateName = "cargo-download"; + version = "0.1.2"; + description = "Cargo subcommand for downloading crate sources"; + authors = [ "Karol Kuczmarski " ]; + sha256 = "1gfn0iabiriq0n9sqkyp2g73rw12mr9ng61fx198xaffflxk7g36"; + crateBin = + [{ name = "cargo-download"; }]; + dependencies = mapFeatures features ([ + (crates."ansi_term"."${deps."cargo_download"."0.1.2"."ansi_term"}" deps) + (crates."clap"."${deps."cargo_download"."0.1.2"."clap"}" deps) + (crates."conv"."${deps."cargo_download"."0.1.2"."conv"}" deps) + (crates."derive_error"."${deps."cargo_download"."0.1.2"."derive_error"}" deps) + (crates."exitcode"."${deps."cargo_download"."0.1.2"."exitcode"}" deps) + (crates."flate2"."${deps."cargo_download"."0.1.2"."flate2"}" deps) + (crates."isatty"."${deps."cargo_download"."0.1.2"."isatty"}" deps) + (crates."itertools"."${deps."cargo_download"."0.1.2"."itertools"}" deps) + (crates."lazy_static"."${deps."cargo_download"."0.1.2"."lazy_static"}" deps) + (crates."log"."${deps."cargo_download"."0.1.2"."log"}" deps) + (crates."maplit"."${deps."cargo_download"."0.1.2"."maplit"}" deps) + (crates."reqwest"."${deps."cargo_download"."0.1.2"."reqwest"}" deps) + (crates."semver"."${deps."cargo_download"."0.1.2"."semver"}" deps) + (crates."serde_json"."${deps."cargo_download"."0.1.2"."serde_json"}" deps) + (crates."slog"."${deps."cargo_download"."0.1.2"."slog"}" deps) + (crates."slog_envlogger"."${deps."cargo_download"."0.1.2"."slog_envlogger"}" deps) + (crates."slog_stdlog"."${deps."cargo_download"."0.1.2"."slog_stdlog"}" deps) + (crates."slog_stream"."${deps."cargo_download"."0.1.2"."slog_stream"}" deps) + (crates."tar"."${deps."cargo_download"."0.1.2"."tar"}" deps) + (crates."time"."${deps."cargo_download"."0.1.2"."time"}" deps) + ]); + }; + features_.cargo_download."0.1.2" = deps: f: updateFeatures f (rec { + ansi_term."${deps.cargo_download."0.1.2".ansi_term}".default = true; + cargo_download."0.1.2".default = (f.cargo_download."0.1.2".default or true); + clap."${deps.cargo_download."0.1.2".clap}".default = true; + conv."${deps.cargo_download."0.1.2".conv}".default = true; + derive_error."${deps.cargo_download."0.1.2".derive_error}".default = true; + exitcode."${deps.cargo_download."0.1.2".exitcode}".default = true; + flate2."${deps.cargo_download."0.1.2".flate2}".default = true; + isatty."${deps.cargo_download."0.1.2".isatty}".default = true; + itertools."${deps.cargo_download."0.1.2".itertools}".default = true; + lazy_static."${deps.cargo_download."0.1.2".lazy_static}".default = true; + log."${deps.cargo_download."0.1.2".log}".default = true; + maplit."${deps.cargo_download."0.1.2".maplit}".default = true; + reqwest."${deps.cargo_download."0.1.2".reqwest}".default = true; + semver."${deps.cargo_download."0.1.2".semver}".default = true; + serde_json."${deps.cargo_download."0.1.2".serde_json}".default = true; + slog."${deps.cargo_download."0.1.2".slog}".default = true; + slog_envlogger."${deps.cargo_download."0.1.2".slog_envlogger}".default = true; + slog_stdlog."${deps.cargo_download."0.1.2".slog_stdlog}".default = true; + slog_stream."${deps.cargo_download."0.1.2".slog_stream}".default = true; + tar."${deps.cargo_download."0.1.2".tar}".default = true; + time."${deps.cargo_download."0.1.2".time}".default = true; + }) [ + (features_.ansi_term."${deps."cargo_download"."0.1.2"."ansi_term"}" deps) + (features_.clap."${deps."cargo_download"."0.1.2"."clap"}" deps) + (features_.conv."${deps."cargo_download"."0.1.2"."conv"}" deps) + (features_.derive_error."${deps."cargo_download"."0.1.2"."derive_error"}" deps) + (features_.exitcode."${deps."cargo_download"."0.1.2"."exitcode"}" deps) + (features_.flate2."${deps."cargo_download"."0.1.2"."flate2"}" deps) + (features_.isatty."${deps."cargo_download"."0.1.2"."isatty"}" deps) + (features_.itertools."${deps."cargo_download"."0.1.2"."itertools"}" deps) + (features_.lazy_static."${deps."cargo_download"."0.1.2"."lazy_static"}" deps) + (features_.log."${deps."cargo_download"."0.1.2"."log"}" deps) + (features_.maplit."${deps."cargo_download"."0.1.2"."maplit"}" deps) + (features_.reqwest."${deps."cargo_download"."0.1.2"."reqwest"}" deps) + (features_.semver."${deps."cargo_download"."0.1.2"."semver"}" deps) + (features_.serde_json."${deps."cargo_download"."0.1.2"."serde_json"}" deps) + (features_.slog."${deps."cargo_download"."0.1.2"."slog"}" deps) + (features_.slog_envlogger."${deps."cargo_download"."0.1.2"."slog_envlogger"}" deps) + (features_.slog_stdlog."${deps."cargo_download"."0.1.2"."slog_stdlog"}" deps) + (features_.slog_stream."${deps."cargo_download"."0.1.2"."slog_stream"}" deps) + (features_.tar."${deps."cargo_download"."0.1.2"."tar"}" deps) + (features_.time."${deps."cargo_download"."0.1.2"."time"}" deps) + ]; + + +# end +# case-0.1.0 + + crates.case."0.1.0" = deps: { features?(features_.case."0.1.0" deps {}) }: buildRustCrate { + crateName = "case"; + version = "0.1.0"; + description = "A set of letter case string helpers"; + authors = [ "Skyler Lipthay " ]; + sha256 = "06i1x3wqv30rkvlgj134qf9vzxhzz28bz41mm0rgki0i0f7gf96n"; + }; + features_.case."0.1.0" = deps: f: updateFeatures f (rec { + case."0.1.0".default = (f.case."0.1.0".default or true); + }) []; + + +# end +# cc-1.0.3 + + crates.cc."1.0.3" = deps: { features?(features_.cc."1.0.3" deps {}) }: buildRustCrate { + crateName = "cc"; + version = "1.0.3"; + description = "A build-time dependency for Cargo build scripts to assist in invoking the native\nC compiler to compile native C code into a static archive to be linked into Rust\ncode.\n"; + authors = [ "Alex Crichton " ]; + sha256 = "193pwqgh79w6k0k29svyds5nnlrwx44myqyrw605d5jj4yk2zmpr"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."cc"."1.0.3" or {}); + }; + features_.cc."1.0.3" = deps: f: updateFeatures f (rec { + cc = fold recursiveUpdate {} [ + { "1.0.3"."rayon" = + (f.cc."1.0.3"."rayon" or false) || + (f.cc."1.0.3".parallel or false) || + (cc."1.0.3"."parallel" or false); } + { "1.0.3".default = (f.cc."1.0.3".default or true); } + ]; + }) []; + + +# end +# cfg-if-0.1.2 + + crates.cfg_if."0.1.2" = deps: { features?(features_.cfg_if."0.1.2" deps {}) }: buildRustCrate { + crateName = "cfg-if"; + version = "0.1.2"; + description = "A macro to ergonomically define an item depending on a large number of #[cfg]\nparameters. Structured like an if-else chain, the first matching branch is the\nitem that gets emitted.\n"; + authors = [ "Alex Crichton " ]; + sha256 = "0x06hvrrqy96m97593823vvxcgvjaxckghwyy2jcyc8qc7c6cyhi"; + }; + features_.cfg_if."0.1.2" = deps: f: updateFeatures f (rec { + cfg_if."0.1.2".default = (f.cfg_if."0.1.2".default or true); + }) []; + + +# end +# chrono-0.2.25 + + crates.chrono."0.2.25" = deps: { features?(features_.chrono."0.2.25" deps {}) }: buildRustCrate { + crateName = "chrono"; + version = "0.2.25"; + description = "Date and time library for Rust"; + authors = [ "Kang Seonghoon " ]; + sha256 = "0gsvqk8cnmm43qj3xyngqvfqh50cbdbqas7ik0wjgnvknirmmca7"; + dependencies = mapFeatures features ([ + (crates."num"."${deps."chrono"."0.2.25"."num"}" deps) + (crates."time"."${deps."chrono"."0.2.25"."time"}" deps) + ]); + }; + features_.chrono."0.2.25" = deps: f: updateFeatures f (rec { + chrono."0.2.25".default = (f.chrono."0.2.25".default or true); + num."${deps.chrono."0.2.25".num}".default = (f.num."${deps.chrono."0.2.25".num}".default or false); + time."${deps.chrono."0.2.25".time}".default = true; + }) [ + (features_.num."${deps."chrono"."0.2.25"."num"}" deps) + (features_.time."${deps."chrono"."0.2.25"."time"}" deps) + ]; + + +# end +# clap-2.27.1 + + crates.clap."2.27.1" = deps: { features?(features_.clap."2.27.1" deps {}) }: buildRustCrate { + crateName = "clap"; + version = "2.27.1"; + description = "A simple to use, efficient, and full featured Command Line Argument Parser\n"; + authors = [ "Kevin K. " ]; + sha256 = "0zx8rskqfl3iqn3vlyxzyd99hpifa7bm871akhxpz9wvrm688zaj"; + dependencies = mapFeatures features ([ + (crates."bitflags"."${deps."clap"."2.27.1"."bitflags"}" deps) + (crates."textwrap"."${deps."clap"."2.27.1"."textwrap"}" deps) + (crates."unicode_width"."${deps."clap"."2.27.1"."unicode_width"}" deps) + ] + ++ (if features.clap."2.27.1".ansi_term or false then [ (crates.ansi_term."${deps."clap"."2.27.1".ansi_term}" deps) ] else []) + ++ (if features.clap."2.27.1".atty or false then [ (crates.atty."${deps."clap"."2.27.1".atty}" deps) ] else []) + ++ (if features.clap."2.27.1".strsim or false then [ (crates.strsim."${deps."clap"."2.27.1".strsim}" deps) ] else []) + ++ (if features.clap."2.27.1".vec_map or false then [ (crates.vec_map."${deps."clap"."2.27.1".vec_map}" deps) ] else [])); + features = mkFeatures (features."clap"."2.27.1" or {}); + }; + features_.clap."2.27.1" = deps: f: updateFeatures f (rec { + ansi_term."${deps.clap."2.27.1".ansi_term}".default = true; + atty."${deps.clap."2.27.1".atty}".default = true; + bitflags."${deps.clap."2.27.1".bitflags}".default = true; + clap = fold recursiveUpdate {} [ + { "2.27.1"."ansi_term" = + (f.clap."2.27.1"."ansi_term" or false) || + (f.clap."2.27.1".color or false) || + (clap."2.27.1"."color" or false); } + { "2.27.1"."atty" = + (f.clap."2.27.1"."atty" or false) || + (f.clap."2.27.1".color or false) || + (clap."2.27.1"."color" or false); } + { "2.27.1"."clippy" = + (f.clap."2.27.1"."clippy" or false) || + (f.clap."2.27.1".lints or false) || + (clap."2.27.1"."lints" or false); } + { "2.27.1"."color" = + (f.clap."2.27.1"."color" or false) || + (f.clap."2.27.1".default or false) || + (clap."2.27.1"."default" or false); } + { "2.27.1"."strsim" = + (f.clap."2.27.1"."strsim" or false) || + (f.clap."2.27.1".suggestions or false) || + (clap."2.27.1"."suggestions" or false); } + { "2.27.1"."suggestions" = + (f.clap."2.27.1"."suggestions" or false) || + (f.clap."2.27.1".default or false) || + (clap."2.27.1"."default" or false); } + { "2.27.1"."term_size" = + (f.clap."2.27.1"."term_size" or false) || + (f.clap."2.27.1".wrap_help or false) || + (clap."2.27.1"."wrap_help" or false); } + { "2.27.1"."vec_map" = + (f.clap."2.27.1"."vec_map" or false) || + (f.clap."2.27.1".default or false) || + (clap."2.27.1"."default" or false); } + { "2.27.1"."yaml" = + (f.clap."2.27.1"."yaml" or false) || + (f.clap."2.27.1".doc or false) || + (clap."2.27.1"."doc" or false); } + { "2.27.1"."yaml-rust" = + (f.clap."2.27.1"."yaml-rust" or false) || + (f.clap."2.27.1".yaml or false) || + (clap."2.27.1"."yaml" or false); } + { "2.27.1".default = (f.clap."2.27.1".default or true); } + ]; + strsim."${deps.clap."2.27.1".strsim}".default = true; + textwrap = fold recursiveUpdate {} [ + { "${deps.clap."2.27.1".textwrap}"."term_size" = + (f.textwrap."${deps.clap."2.27.1".textwrap}"."term_size" or false) || + (clap."2.27.1"."wrap_help" or false) || + (f."clap"."2.27.1"."wrap_help" or false); } + { "${deps.clap."2.27.1".textwrap}".default = true; } + ]; + unicode_width."${deps.clap."2.27.1".unicode_width}".default = true; + vec_map."${deps.clap."2.27.1".vec_map}".default = true; + }) [ + (features_.ansi_term."${deps."clap"."2.27.1"."ansi_term"}" deps) + (features_.atty."${deps."clap"."2.27.1"."atty"}" deps) + (features_.bitflags."${deps."clap"."2.27.1"."bitflags"}" deps) + (features_.strsim."${deps."clap"."2.27.1"."strsim"}" deps) + (features_.textwrap."${deps."clap"."2.27.1"."textwrap"}" deps) + (features_.unicode_width."${deps."clap"."2.27.1"."unicode_width"}" deps) + (features_.vec_map."${deps."clap"."2.27.1"."vec_map"}" deps) + ]; + + +# end +# cloudabi-0.0.3 + + crates.cloudabi."0.0.3" = deps: { features?(features_.cloudabi."0.0.3" deps {}) }: buildRustCrate { + crateName = "cloudabi"; + version = "0.0.3"; + description = "Low level interface to CloudABI. Contains all syscalls and related types."; + authors = [ "Nuxi (https://nuxi.nl/) and contributors" ]; + sha256 = "1z9lby5sr6vslfd14d6igk03s7awf91mxpsfmsp3prxbxlk0x7h5"; + libPath = "cloudabi.rs"; + dependencies = mapFeatures features ([ + ] + ++ (if features.cloudabi."0.0.3".bitflags or false then [ (crates.bitflags."${deps."cloudabi"."0.0.3".bitflags}" deps) ] else [])); + features = mkFeatures (features."cloudabi"."0.0.3" or {}); + }; + features_.cloudabi."0.0.3" = deps: f: updateFeatures f (rec { + bitflags."${deps.cloudabi."0.0.3".bitflags}".default = true; + cloudabi = fold recursiveUpdate {} [ + { "0.0.3"."bitflags" = + (f.cloudabi."0.0.3"."bitflags" or false) || + (f.cloudabi."0.0.3".default or false) || + (cloudabi."0.0.3"."default" or false); } + { "0.0.3".default = (f.cloudabi."0.0.3".default or true); } + ]; + }) [ + (features_.bitflags."${deps."cloudabi"."0.0.3"."bitflags"}" deps) + ]; + + +# end +# conv-0.3.3 + + crates.conv."0.3.3" = deps: { features?(features_.conv."0.3.3" deps {}) }: buildRustCrate { + crateName = "conv"; + version = "0.3.3"; + description = "This crate provides a number of conversion traits with more specific semantics than those provided by 'as' or 'From'/'Into'."; + authors = [ "Daniel Keep " ]; + sha256 = "08rl72k1a48xah0ar5l9v1bw19pp8jdw2pdkd3vvj9ijsyyg9yik"; + dependencies = mapFeatures features ([ + (crates."custom_derive"."${deps."conv"."0.3.3"."custom_derive"}" deps) + ]); + }; + features_.conv."0.3.3" = deps: f: updateFeatures f (rec { + conv."0.3.3".default = (f.conv."0.3.3".default or true); + custom_derive."${deps.conv."0.3.3".custom_derive}".default = true; + }) [ + (features_.custom_derive."${deps."conv"."0.3.3"."custom_derive"}" deps) + ]; + + +# end +# core-foundation-0.5.1 + + crates.core_foundation."0.5.1" = deps: { features?(features_.core_foundation."0.5.1" deps {}) }: buildRustCrate { + crateName = "core-foundation"; + version = "0.5.1"; + description = "Bindings to Core Foundation for OS X"; + authors = [ "The Servo Project Developers" ]; + sha256 = "03s11z23rb1kk325c34rmsbd7k0l5rkzk4q6id55n174z28zqln1"; + dependencies = mapFeatures features ([ + (crates."core_foundation_sys"."${deps."core_foundation"."0.5.1"."core_foundation_sys"}" deps) + (crates."libc"."${deps."core_foundation"."0.5.1"."libc"}" deps) + ]); + features = mkFeatures (features."core_foundation"."0.5.1" or {}); + }; + features_.core_foundation."0.5.1" = deps: f: updateFeatures f (rec { + core_foundation = fold recursiveUpdate {} [ + { "0.5.1"."chrono" = + (f.core_foundation."0.5.1"."chrono" or false) || + (f.core_foundation."0.5.1".with-chrono or false) || + (core_foundation."0.5.1"."with-chrono" or false); } + { "0.5.1"."uuid" = + (f.core_foundation."0.5.1"."uuid" or false) || + (f.core_foundation."0.5.1".with-uuid or false) || + (core_foundation."0.5.1"."with-uuid" or false); } + { "0.5.1".default = (f.core_foundation."0.5.1".default or true); } + ]; + core_foundation_sys = fold recursiveUpdate {} [ + { "${deps.core_foundation."0.5.1".core_foundation_sys}"."mac_os_10_7_support" = + (f.core_foundation_sys."${deps.core_foundation."0.5.1".core_foundation_sys}"."mac_os_10_7_support" or false) || + (core_foundation."0.5.1"."mac_os_10_7_support" or false) || + (f."core_foundation"."0.5.1"."mac_os_10_7_support" or false); } + { "${deps.core_foundation."0.5.1".core_foundation_sys}"."mac_os_10_8_features" = + (f.core_foundation_sys."${deps.core_foundation."0.5.1".core_foundation_sys}"."mac_os_10_8_features" or false) || + (core_foundation."0.5.1"."mac_os_10_8_features" or false) || + (f."core_foundation"."0.5.1"."mac_os_10_8_features" or false); } + { "${deps.core_foundation."0.5.1".core_foundation_sys}".default = true; } + ]; + libc."${deps.core_foundation."0.5.1".libc}".default = true; + }) [ + (features_.core_foundation_sys."${deps."core_foundation"."0.5.1"."core_foundation_sys"}" deps) + (features_.libc."${deps."core_foundation"."0.5.1"."libc"}" deps) + ]; + + +# end +# core-foundation-sys-0.5.1 + + crates.core_foundation_sys."0.5.1" = deps: { features?(features_.core_foundation_sys."0.5.1" deps {}) }: buildRustCrate { + crateName = "core-foundation-sys"; + version = "0.5.1"; + description = "Bindings to Core Foundation for OS X"; + authors = [ "The Servo Project Developers" ]; + sha256 = "0qbrasll5nw1bgr071i8s8jc975d0y4qfysf868bh9xp0f6vcypa"; + build = "build.rs"; + dependencies = mapFeatures features ([ + (crates."libc"."${deps."core_foundation_sys"."0.5.1"."libc"}" deps) + ]); + features = mkFeatures (features."core_foundation_sys"."0.5.1" or {}); + }; + features_.core_foundation_sys."0.5.1" = deps: f: updateFeatures f (rec { + core_foundation_sys."0.5.1".default = (f.core_foundation_sys."0.5.1".default or true); + libc."${deps.core_foundation_sys."0.5.1".libc}".default = true; + }) [ + (features_.libc."${deps."core_foundation_sys"."0.5.1"."libc"}" deps) + ]; + + +# end +# crc32fast-1.1.1 + + crates.crc32fast."1.1.1" = deps: { features?(features_.crc32fast."1.1.1" deps {}) }: buildRustCrate { + crateName = "crc32fast"; + version = "1.1.1"; + description = "Fast, SIMD-accelerated CRC32 (IEEE) checksum computation"; + authors = [ "Sam Rijs " "Alex Crichton " ]; + sha256 = "1rwvhb98w41mk5phr84mryally58f68h0v933772gdxqvqbcayqy"; + }; + features_.crc32fast."1.1.1" = deps: f: updateFeatures f (rec { + crc32fast."1.1.1".default = (f.crc32fast."1.1.1".default or true); + }) []; + + +# end +# crossbeam-0.2.10 + + crates.crossbeam."0.2.10" = deps: { features?(features_.crossbeam."0.2.10" deps {}) }: buildRustCrate { + crateName = "crossbeam"; + version = "0.2.10"; + description = "Support for lock-free data structures, synchronizers, and parallel programming"; + authors = [ "Aaron Turon " ]; + sha256 = "1k1a4q5gy7zakiw39hdzrblnw3kk4nsqmkdp1dpzh8h558140rhq"; + features = mkFeatures (features."crossbeam"."0.2.10" or {}); + }; + features_.crossbeam."0.2.10" = deps: f: updateFeatures f (rec { + crossbeam."0.2.10".default = (f.crossbeam."0.2.10".default or true); + }) []; + + +# end +# crossbeam-deque-0.6.2 + + crates.crossbeam_deque."0.6.2" = deps: { features?(features_.crossbeam_deque."0.6.2" deps {}) }: buildRustCrate { + crateName = "crossbeam-deque"; + version = "0.6.2"; + description = "Concurrent work-stealing deque"; + authors = [ "The Crossbeam Project Developers" ]; + sha256 = "0qjdpq03snj6xp5gydgy1bdd5zzwpdxa57vhky3mf4djxiq81ara"; + dependencies = mapFeatures features ([ + (crates."crossbeam_epoch"."${deps."crossbeam_deque"."0.6.2"."crossbeam_epoch"}" deps) + (crates."crossbeam_utils"."${deps."crossbeam_deque"."0.6.2"."crossbeam_utils"}" deps) + ]); + }; + features_.crossbeam_deque."0.6.2" = deps: f: updateFeatures f (rec { + crossbeam_deque."0.6.2".default = (f.crossbeam_deque."0.6.2".default or true); + crossbeam_epoch."${deps.crossbeam_deque."0.6.2".crossbeam_epoch}".default = true; + crossbeam_utils."${deps.crossbeam_deque."0.6.2".crossbeam_utils}".default = true; + }) [ + (features_.crossbeam_epoch."${deps."crossbeam_deque"."0.6.2"."crossbeam_epoch"}" deps) + (features_.crossbeam_utils."${deps."crossbeam_deque"."0.6.2"."crossbeam_utils"}" deps) + ]; + + +# end +# crossbeam-epoch-0.6.1 + + crates.crossbeam_epoch."0.6.1" = deps: { features?(features_.crossbeam_epoch."0.6.1" deps {}) }: buildRustCrate { + crateName = "crossbeam-epoch"; + version = "0.6.1"; + description = "Epoch-based garbage collection"; + authors = [ "The Crossbeam Project Developers" ]; + sha256 = "0qlwzsf2xmdjbh6pv9bxra2qdq72cmywq4fq1q114zw2s06zr039"; + dependencies = mapFeatures features ([ + (crates."arrayvec"."${deps."crossbeam_epoch"."0.6.1"."arrayvec"}" deps) + (crates."cfg_if"."${deps."crossbeam_epoch"."0.6.1"."cfg_if"}" deps) + (crates."crossbeam_utils"."${deps."crossbeam_epoch"."0.6.1"."crossbeam_utils"}" deps) + (crates."memoffset"."${deps."crossbeam_epoch"."0.6.1"."memoffset"}" deps) + (crates."scopeguard"."${deps."crossbeam_epoch"."0.6.1"."scopeguard"}" deps) + ] + ++ (if features.crossbeam_epoch."0.6.1".lazy_static or false then [ (crates.lazy_static."${deps."crossbeam_epoch"."0.6.1".lazy_static}" deps) ] else [])); + features = mkFeatures (features."crossbeam_epoch"."0.6.1" or {}); + }; + features_.crossbeam_epoch."0.6.1" = deps: f: updateFeatures f (rec { + arrayvec = fold recursiveUpdate {} [ + { "${deps.crossbeam_epoch."0.6.1".arrayvec}"."use_union" = + (f.arrayvec."${deps.crossbeam_epoch."0.6.1".arrayvec}"."use_union" or false) || + (crossbeam_epoch."0.6.1"."nightly" or false) || + (f."crossbeam_epoch"."0.6.1"."nightly" or false); } + { "${deps.crossbeam_epoch."0.6.1".arrayvec}".default = (f.arrayvec."${deps.crossbeam_epoch."0.6.1".arrayvec}".default or false); } + ]; + cfg_if."${deps.crossbeam_epoch."0.6.1".cfg_if}".default = true; + crossbeam_epoch = fold recursiveUpdate {} [ + { "0.6.1"."lazy_static" = + (f.crossbeam_epoch."0.6.1"."lazy_static" or false) || + (f.crossbeam_epoch."0.6.1".std or false) || + (crossbeam_epoch."0.6.1"."std" or false); } + { "0.6.1"."std" = + (f.crossbeam_epoch."0.6.1"."std" or false) || + (f.crossbeam_epoch."0.6.1".default or false) || + (crossbeam_epoch."0.6.1"."default" or false); } + { "0.6.1".default = (f.crossbeam_epoch."0.6.1".default or true); } + ]; + crossbeam_utils = fold recursiveUpdate {} [ + { "${deps.crossbeam_epoch."0.6.1".crossbeam_utils}"."std" = + (f.crossbeam_utils."${deps.crossbeam_epoch."0.6.1".crossbeam_utils}"."std" or false) || + (crossbeam_epoch."0.6.1"."std" or false) || + (f."crossbeam_epoch"."0.6.1"."std" or false); } + { "${deps.crossbeam_epoch."0.6.1".crossbeam_utils}".default = (f.crossbeam_utils."${deps.crossbeam_epoch."0.6.1".crossbeam_utils}".default or false); } + ]; + lazy_static."${deps.crossbeam_epoch."0.6.1".lazy_static}".default = true; + memoffset."${deps.crossbeam_epoch."0.6.1".memoffset}".default = true; + scopeguard."${deps.crossbeam_epoch."0.6.1".scopeguard}".default = (f.scopeguard."${deps.crossbeam_epoch."0.6.1".scopeguard}".default or false); + }) [ + (features_.arrayvec."${deps."crossbeam_epoch"."0.6.1"."arrayvec"}" deps) + (features_.cfg_if."${deps."crossbeam_epoch"."0.6.1"."cfg_if"}" deps) + (features_.crossbeam_utils."${deps."crossbeam_epoch"."0.6.1"."crossbeam_utils"}" deps) + (features_.lazy_static."${deps."crossbeam_epoch"."0.6.1"."lazy_static"}" deps) + (features_.memoffset."${deps."crossbeam_epoch"."0.6.1"."memoffset"}" deps) + (features_.scopeguard."${deps."crossbeam_epoch"."0.6.1"."scopeguard"}" deps) + ]; + + +# end +# crossbeam-utils-0.6.1 + + crates.crossbeam_utils."0.6.1" = deps: { features?(features_.crossbeam_utils."0.6.1" deps {}) }: buildRustCrate { + crateName = "crossbeam-utils"; + version = "0.6.1"; + description = "Utilities for concurrent programming"; + authors = [ "The Crossbeam Project Developers" ]; + sha256 = "031lk6ls49yvwkdxhjm4fvg81iww01h108jq1cnlh88yzbcnwn2c"; + dependencies = mapFeatures features ([ + (crates."cfg_if"."${deps."crossbeam_utils"."0.6.1"."cfg_if"}" deps) + ]); + features = mkFeatures (features."crossbeam_utils"."0.6.1" or {}); + }; + features_.crossbeam_utils."0.6.1" = deps: f: updateFeatures f (rec { + cfg_if."${deps.crossbeam_utils."0.6.1".cfg_if}".default = true; + crossbeam_utils = fold recursiveUpdate {} [ + { "0.6.1"."std" = + (f.crossbeam_utils."0.6.1"."std" or false) || + (f.crossbeam_utils."0.6.1".default or false) || + (crossbeam_utils."0.6.1"."default" or false); } + { "0.6.1".default = (f.crossbeam_utils."0.6.1".default or true); } + ]; + }) [ + (features_.cfg_if."${deps."crossbeam_utils"."0.6.1"."cfg_if"}" deps) + ]; + + +# end +# custom_derive-0.1.7 + + crates.custom_derive."0.1.7" = deps: { features?(features_.custom_derive."0.1.7" deps {}) }: buildRustCrate { + crateName = "custom_derive"; + version = "0.1.7"; + description = "(Note: superseded by `macro-attr`) This crate provides a macro that enables the use of custom derive attributes."; + authors = [ "Daniel Keep " ]; + sha256 = "160q3pzri2fgrr6czfdkwy1sbddki2za96r7ivvyii52qp1523zs"; + features = mkFeatures (features."custom_derive"."0.1.7" or {}); + }; + features_.custom_derive."0.1.7" = deps: f: updateFeatures f (rec { + custom_derive = fold recursiveUpdate {} [ + { "0.1.7"."std" = + (f.custom_derive."0.1.7"."std" or false) || + (f.custom_derive."0.1.7".default or false) || + (custom_derive."0.1.7"."default" or false); } + { "0.1.7".default = (f.custom_derive."0.1.7".default or true); } + ]; + }) []; + + +# end +# derive-error-0.0.3 + + crates.derive_error."0.0.3" = deps: { features?(features_.derive_error."0.0.3" deps {}) }: buildRustCrate { + crateName = "derive-error"; + version = "0.0.3"; + description = "Derive macro for Error using macros 1.1"; + authors = [ "rushmorem " ]; + sha256 = "0239vzxn5xr9nm3i4d6hmqy7dv8llcjblgh1xixfk5dcgcqan77y"; + procMacro = true; + dependencies = mapFeatures features ([ + (crates."case"."${deps."derive_error"."0.0.3"."case"}" deps) + (crates."quote"."${deps."derive_error"."0.0.3"."quote"}" deps) + (crates."syn"."${deps."derive_error"."0.0.3"."syn"}" deps) + ]); + }; + features_.derive_error."0.0.3" = deps: f: updateFeatures f (rec { + case."${deps.derive_error."0.0.3".case}".default = true; + derive_error."0.0.3".default = (f.derive_error."0.0.3".default or true); + quote."${deps.derive_error."0.0.3".quote}".default = true; + syn."${deps.derive_error."0.0.3".syn}".default = true; + }) [ + (features_.case."${deps."derive_error"."0.0.3"."case"}" deps) + (features_.quote."${deps."derive_error"."0.0.3"."quote"}" deps) + (features_.syn."${deps."derive_error"."0.0.3"."syn"}" deps) + ]; + + +# end +# dtoa-0.4.2 + + crates.dtoa."0.4.2" = deps: { features?(features_.dtoa."0.4.2" deps {}) }: buildRustCrate { + crateName = "dtoa"; + version = "0.4.2"; + description = "Fast functions for printing floating-point primitives to an io::Write"; + authors = [ "David Tolnay " ]; + sha256 = "1bxsh6fags7nr36vlz07ik2a1rzyipc8x1y30kjk832hf2pzadmw"; + }; + features_.dtoa."0.4.2" = deps: f: updateFeatures f (rec { + dtoa."0.4.2".default = (f.dtoa."0.4.2".default or true); + }) []; + + +# end +# either-1.4.0 + + crates.either."1.4.0" = deps: { features?(features_.either."1.4.0" deps {}) }: buildRustCrate { + crateName = "either"; + version = "1.4.0"; + description = "The enum [`Either`] with variants `Left` and `Right` is a general purpose sum type with two cases.\n"; + authors = [ "bluss" ]; + sha256 = "04kpfd84lvyrkb2z4sljlz2d3d5qczd0sb1yy37fgijq2yx3vb37"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."either"."1.4.0" or {}); + }; + features_.either."1.4.0" = deps: f: updateFeatures f (rec { + either = fold recursiveUpdate {} [ + { "1.4.0"."use_std" = + (f.either."1.4.0"."use_std" or false) || + (f.either."1.4.0".default or false) || + (either."1.4.0"."default" or false); } + { "1.4.0".default = (f.either."1.4.0".default or true); } + ]; + }) []; + + +# end +# encoding_rs-0.8.13 + + crates.encoding_rs."0.8.13" = deps: { features?(features_.encoding_rs."0.8.13" deps {}) }: buildRustCrate { + crateName = "encoding_rs"; + version = "0.8.13"; + description = "A Gecko-oriented implementation of the Encoding Standard"; + authors = [ "Henri Sivonen " ]; + sha256 = "1a91x1cnw1iz3hc32mvdmwhbqcfx36kk04pnil17mcii1ni6xyy5"; + dependencies = mapFeatures features ([ + (crates."cfg_if"."${deps."encoding_rs"."0.8.13"."cfg_if"}" deps) + ]); + features = mkFeatures (features."encoding_rs"."0.8.13" or {}); + }; + features_.encoding_rs."0.8.13" = deps: f: updateFeatures f (rec { + cfg_if."${deps.encoding_rs."0.8.13".cfg_if}".default = true; + encoding_rs = fold recursiveUpdate {} [ + { "0.8.13"."fast-big5-hanzi-encode" = + (f.encoding_rs."0.8.13"."fast-big5-hanzi-encode" or false) || + (f.encoding_rs."0.8.13".fast-legacy-encode or false) || + (encoding_rs."0.8.13"."fast-legacy-encode" or false); } + { "0.8.13"."fast-gb-hanzi-encode" = + (f.encoding_rs."0.8.13"."fast-gb-hanzi-encode" or false) || + (f.encoding_rs."0.8.13".fast-legacy-encode or false) || + (encoding_rs."0.8.13"."fast-legacy-encode" or false); } + { "0.8.13"."fast-hangul-encode" = + (f.encoding_rs."0.8.13"."fast-hangul-encode" or false) || + (f.encoding_rs."0.8.13".fast-legacy-encode or false) || + (encoding_rs."0.8.13"."fast-legacy-encode" or false); } + { "0.8.13"."fast-hanja-encode" = + (f.encoding_rs."0.8.13"."fast-hanja-encode" or false) || + (f.encoding_rs."0.8.13".fast-legacy-encode or false) || + (encoding_rs."0.8.13"."fast-legacy-encode" or false); } + { "0.8.13"."fast-kanji-encode" = + (f.encoding_rs."0.8.13"."fast-kanji-encode" or false) || + (f.encoding_rs."0.8.13".fast-legacy-encode or false) || + (encoding_rs."0.8.13"."fast-legacy-encode" or false); } + { "0.8.13"."simd" = + (f.encoding_rs."0.8.13"."simd" or false) || + (f.encoding_rs."0.8.13".simd-accel or false) || + (encoding_rs."0.8.13"."simd-accel" or false); } + { "0.8.13".default = (f.encoding_rs."0.8.13".default or true); } + ]; + }) [ + (features_.cfg_if."${deps."encoding_rs"."0.8.13"."cfg_if"}" deps) + ]; + + +# end +# exitcode-1.1.2 + + crates.exitcode."1.1.2" = deps: { features?(features_.exitcode."1.1.2" deps {}) }: buildRustCrate { + crateName = "exitcode"; + version = "1.1.2"; + description = "Preferred system exit codes as defined by sysexits.h"; + authors = [ "Ben Wilber " ]; + sha256 = "1cw9p4vzbscvyrbzv7z68gv2cairrns2d4wcb4nkahkcjk25phip"; + }; + features_.exitcode."1.1.2" = deps: f: updateFeatures f (rec { + exitcode."1.1.2".default = (f.exitcode."1.1.2".default or true); + }) []; + + +# end +# filetime-0.1.14 + + crates.filetime."0.1.14" = deps: { features?(features_.filetime."0.1.14" deps {}) }: buildRustCrate { + crateName = "filetime"; + version = "0.1.14"; + description = "Platform-agnostic accessors of timestamps in File metadata\n"; + authors = [ "Alex Crichton " ]; + sha256 = "0i6dvc3ba7vl1iccc91k7c9bv9j5md98mbvlmfy0kicikx0ffn08"; + dependencies = mapFeatures features ([ + (crates."cfg_if"."${deps."filetime"."0.1.14"."cfg_if"}" deps) + ]) + ++ (if kernel == "redox" then mapFeatures features ([ + (crates."redox_syscall"."${deps."filetime"."0.1.14"."redox_syscall"}" deps) + ]) else []) + ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + (crates."libc"."${deps."filetime"."0.1.14"."libc"}" deps) + ]) else []); + }; + features_.filetime."0.1.14" = deps: f: updateFeatures f (rec { + cfg_if."${deps.filetime."0.1.14".cfg_if}".default = true; + filetime."0.1.14".default = (f.filetime."0.1.14".default or true); + libc."${deps.filetime."0.1.14".libc}".default = true; + redox_syscall."${deps.filetime."0.1.14".redox_syscall}".default = true; + }) [ + (features_.cfg_if."${deps."filetime"."0.1.14"."cfg_if"}" deps) + (features_.redox_syscall."${deps."filetime"."0.1.14"."redox_syscall"}" deps) + (features_.libc."${deps."filetime"."0.1.14"."libc"}" deps) + ]; + + +# end +# flate2-0.2.20 + + crates.flate2."0.2.20" = deps: { features?(features_.flate2."0.2.20" deps {}) }: buildRustCrate { + crateName = "flate2"; + version = "0.2.20"; + description = "Bindings to miniz.c for DEFLATE compression and decompression exposed as\nReader/Writer streams. Contains bindings for zlib, deflate, and gzip-based\nstreams.\n"; + authors = [ "Alex Crichton " ]; + sha256 = "1am0d2vmqym1vcg7rvv516vpcrbhdn1jisy0q03r3nbzdzh54ppl"; + dependencies = mapFeatures features ([ + (crates."libc"."${deps."flate2"."0.2.20"."libc"}" deps) + ] + ++ (if features.flate2."0.2.20".miniz-sys or false then [ (crates.miniz_sys."${deps."flate2"."0.2.20".miniz_sys}" deps) ] else [])); + features = mkFeatures (features."flate2"."0.2.20" or {}); + }; + features_.flate2."0.2.20" = deps: f: updateFeatures f (rec { + flate2 = fold recursiveUpdate {} [ + { "0.2.20"."futures" = + (f.flate2."0.2.20"."futures" or false) || + (f.flate2."0.2.20".tokio or false) || + (flate2."0.2.20"."tokio" or false); } + { "0.2.20"."libz-sys" = + (f.flate2."0.2.20"."libz-sys" or false) || + (f.flate2."0.2.20".zlib or false) || + (flate2."0.2.20"."zlib" or false); } + { "0.2.20"."miniz-sys" = + (f.flate2."0.2.20"."miniz-sys" or false) || + (f.flate2."0.2.20".default or false) || + (flate2."0.2.20"."default" or false); } + { "0.2.20"."tokio-io" = + (f.flate2."0.2.20"."tokio-io" or false) || + (f.flate2."0.2.20".tokio or false) || + (flate2."0.2.20"."tokio" or false); } + { "0.2.20".default = (f.flate2."0.2.20".default or true); } + ]; + libc."${deps.flate2."0.2.20".libc}".default = true; + miniz_sys."${deps.flate2."0.2.20".miniz_sys}".default = true; + }) [ + (features_.libc."${deps."flate2"."0.2.20"."libc"}" deps) + (features_.miniz_sys."${deps."flate2"."0.2.20"."miniz_sys"}" deps) + ]; + + +# end +# fnv-1.0.6 + + crates.fnv."1.0.6" = deps: { features?(features_.fnv."1.0.6" deps {}) }: buildRustCrate { + crateName = "fnv"; + version = "1.0.6"; + description = "Fowler–Noll–Vo hash function"; + authors = [ "Alex Crichton " ]; + sha256 = "128mlh23y3gg6ag5h8iiqlcbl59smisdzraqy88ldrf75kbw27ip"; + libPath = "lib.rs"; + }; + features_.fnv."1.0.6" = deps: f: updateFeatures f (rec { + fnv."1.0.6".default = (f.fnv."1.0.6".default or true); + }) []; + + +# end +# foreign-types-0.3.2 + + crates.foreign_types."0.3.2" = deps: { features?(features_.foreign_types."0.3.2" deps {}) }: buildRustCrate { + crateName = "foreign-types"; + version = "0.3.2"; + description = "A framework for Rust wrappers over C APIs"; + authors = [ "Steven Fackler " ]; + sha256 = "105n8sp2djb1s5lzrw04p7ss3dchr5qa3canmynx396nh3vwm2p8"; + dependencies = mapFeatures features ([ + (crates."foreign_types_shared"."${deps."foreign_types"."0.3.2"."foreign_types_shared"}" deps) + ]); + }; + features_.foreign_types."0.3.2" = deps: f: updateFeatures f (rec { + foreign_types."0.3.2".default = (f.foreign_types."0.3.2".default or true); + foreign_types_shared."${deps.foreign_types."0.3.2".foreign_types_shared}".default = true; + }) [ + (features_.foreign_types_shared."${deps."foreign_types"."0.3.2"."foreign_types_shared"}" deps) + ]; + + +# end +# foreign-types-shared-0.1.1 + + crates.foreign_types_shared."0.1.1" = deps: { features?(features_.foreign_types_shared."0.1.1" deps {}) }: buildRustCrate { + crateName = "foreign-types-shared"; + version = "0.1.1"; + description = "An internal crate used by foreign-types"; + authors = [ "Steven Fackler " ]; + sha256 = "0b6cnvqbflws8dxywk4589vgbz80049lz4x1g9dfy4s1ppd3g4z5"; + }; + features_.foreign_types_shared."0.1.1" = deps: f: updateFeatures f (rec { + foreign_types_shared."0.1.1".default = (f.foreign_types_shared."0.1.1".default or true); + }) []; + + +# end +# fuchsia-zircon-0.2.1 + + crates.fuchsia_zircon."0.2.1" = deps: { features?(features_.fuchsia_zircon."0.2.1" deps {}) }: buildRustCrate { + crateName = "fuchsia-zircon"; + version = "0.2.1"; + description = "Rust bindings for the Zircon kernel"; + authors = [ "Raph Levien " ]; + sha256 = "0yd4rd7ql1vdr349p6vgq2dnwmpylky1kjp8g1zgvp250jxrhddb"; + dependencies = mapFeatures features ([ + (crates."fuchsia_zircon_sys"."${deps."fuchsia_zircon"."0.2.1"."fuchsia_zircon_sys"}" deps) + ]); + }; + features_.fuchsia_zircon."0.2.1" = deps: f: updateFeatures f (rec { + fuchsia_zircon."0.2.1".default = (f.fuchsia_zircon."0.2.1".default or true); + fuchsia_zircon_sys."${deps.fuchsia_zircon."0.2.1".fuchsia_zircon_sys}".default = true; + }) [ + (features_.fuchsia_zircon_sys."${deps."fuchsia_zircon"."0.2.1"."fuchsia_zircon_sys"}" deps) + ]; + + +# end +# fuchsia-zircon-0.3.3 + + crates.fuchsia_zircon."0.3.3" = deps: { features?(features_.fuchsia_zircon."0.3.3" deps {}) }: buildRustCrate { + crateName = "fuchsia-zircon"; + version = "0.3.3"; + description = "Rust bindings for the Zircon kernel"; + authors = [ "Raph Levien " ]; + sha256 = "0jrf4shb1699r4la8z358vri8318w4mdi6qzfqy30p2ymjlca4gk"; + dependencies = mapFeatures features ([ + (crates."bitflags"."${deps."fuchsia_zircon"."0.3.3"."bitflags"}" deps) + (crates."fuchsia_zircon_sys"."${deps."fuchsia_zircon"."0.3.3"."fuchsia_zircon_sys"}" deps) + ]); + }; + features_.fuchsia_zircon."0.3.3" = deps: f: updateFeatures f (rec { + bitflags."${deps.fuchsia_zircon."0.3.3".bitflags}".default = true; + fuchsia_zircon."0.3.3".default = (f.fuchsia_zircon."0.3.3".default or true); + fuchsia_zircon_sys."${deps.fuchsia_zircon."0.3.3".fuchsia_zircon_sys}".default = true; + }) [ + (features_.bitflags."${deps."fuchsia_zircon"."0.3.3"."bitflags"}" deps) + (features_.fuchsia_zircon_sys."${deps."fuchsia_zircon"."0.3.3"."fuchsia_zircon_sys"}" deps) + ]; + + +# end +# fuchsia-zircon-sys-0.2.0 + + crates.fuchsia_zircon_sys."0.2.0" = deps: { features?(features_.fuchsia_zircon_sys."0.2.0" deps {}) }: buildRustCrate { + crateName = "fuchsia-zircon-sys"; + version = "0.2.0"; + description = "Low-level Rust bindings for the Zircon kernel"; + authors = [ "Raph Levien " ]; + sha256 = "1yrqsrjwlhl3di6prxf5xmyd82gyjaysldbka5wwk83z11mpqh4w"; + dependencies = mapFeatures features ([ + (crates."bitflags"."${deps."fuchsia_zircon_sys"."0.2.0"."bitflags"}" deps) + ]); + }; + features_.fuchsia_zircon_sys."0.2.0" = deps: f: updateFeatures f (rec { + bitflags."${deps.fuchsia_zircon_sys."0.2.0".bitflags}".default = true; + fuchsia_zircon_sys."0.2.0".default = (f.fuchsia_zircon_sys."0.2.0".default or true); + }) [ + (features_.bitflags."${deps."fuchsia_zircon_sys"."0.2.0"."bitflags"}" deps) + ]; + + +# end +# fuchsia-zircon-sys-0.3.3 + + crates.fuchsia_zircon_sys."0.3.3" = deps: { features?(features_.fuchsia_zircon_sys."0.3.3" deps {}) }: buildRustCrate { + crateName = "fuchsia-zircon-sys"; + version = "0.3.3"; + description = "Low-level Rust bindings for the Zircon kernel"; + authors = [ "Raph Levien " ]; + sha256 = "08jp1zxrm9jbrr6l26bjal4dbm8bxfy57ickdgibsqxr1n9j3hf5"; + }; + features_.fuchsia_zircon_sys."0.3.3" = deps: f: updateFeatures f (rec { + fuchsia_zircon_sys."0.3.3".default = (f.fuchsia_zircon_sys."0.3.3".default or true); + }) []; + + +# end +# futures-0.1.25 + + crates.futures."0.1.25" = deps: { features?(features_.futures."0.1.25" deps {}) }: buildRustCrate { + crateName = "futures"; + version = "0.1.25"; + description = "An implementation of futures and streams featuring zero allocations,\ncomposability, and iterator-like interfaces.\n"; + authors = [ "Alex Crichton " ]; + sha256 = "1gdn9z3mi3jjzbxgvawqh90895130c3ydks55rshja0ncpn985q3"; + features = mkFeatures (features."futures"."0.1.25" or {}); + }; + features_.futures."0.1.25" = deps: f: updateFeatures f (rec { + futures = fold recursiveUpdate {} [ + { "0.1.25"."use_std" = + (f.futures."0.1.25"."use_std" or false) || + (f.futures."0.1.25".default or false) || + (futures."0.1.25"."default" or false); } + { "0.1.25"."with-deprecated" = + (f.futures."0.1.25"."with-deprecated" or false) || + (f.futures."0.1.25".default or false) || + (futures."0.1.25"."default" or false); } + { "0.1.25".default = (f.futures."0.1.25".default or true); } + ]; + }) []; + + +# end +# futures-cpupool-0.1.7 + + crates.futures_cpupool."0.1.7" = deps: { features?(features_.futures_cpupool."0.1.7" deps {}) }: buildRustCrate { + crateName = "futures-cpupool"; + version = "0.1.7"; + description = "An implementation of thread pools which hand out futures to the results of the\ncomputation on the threads themselves.\n"; + authors = [ "Alex Crichton " ]; + sha256 = "1m0z5d54q1zr687acb4fh5fb3x692vr5ais6135lvp7vxap6p0xb"; + dependencies = mapFeatures features ([ + (crates."futures"."${deps."futures_cpupool"."0.1.7"."futures"}" deps) + (crates."num_cpus"."${deps."futures_cpupool"."0.1.7"."num_cpus"}" deps) + ]); + features = mkFeatures (features."futures_cpupool"."0.1.7" or {}); + }; + features_.futures_cpupool."0.1.7" = deps: f: updateFeatures f (rec { + futures = fold recursiveUpdate {} [ + { "${deps.futures_cpupool."0.1.7".futures}"."use_std" = true; } + { "${deps.futures_cpupool."0.1.7".futures}"."with-deprecated" = + (f.futures."${deps.futures_cpupool."0.1.7".futures}"."with-deprecated" or false) || + (futures_cpupool."0.1.7"."with-deprecated" or false) || + (f."futures_cpupool"."0.1.7"."with-deprecated" or false); } + { "${deps.futures_cpupool."0.1.7".futures}".default = (f.futures."${deps.futures_cpupool."0.1.7".futures}".default or false); } + ]; + futures_cpupool = fold recursiveUpdate {} [ + { "0.1.7"."with-deprecated" = + (f.futures_cpupool."0.1.7"."with-deprecated" or false) || + (f.futures_cpupool."0.1.7".default or false) || + (futures_cpupool."0.1.7"."default" or false); } + { "0.1.7".default = (f.futures_cpupool."0.1.7".default or true); } + ]; + num_cpus."${deps.futures_cpupool."0.1.7".num_cpus}".default = true; + }) [ + (features_.futures."${deps."futures_cpupool"."0.1.7"."futures"}" deps) + (features_.num_cpus."${deps."futures_cpupool"."0.1.7"."num_cpus"}" deps) + ]; + + +# end +# h2-0.1.13 + + crates.h2."0.1.13" = deps: { features?(features_.h2."0.1.13" deps {}) }: buildRustCrate { + crateName = "h2"; + version = "0.1.13"; + description = "An HTTP/2.0 client and server"; + authors = [ "Carl Lerche " ]; + sha256 = "1nmbr5i1ssqbnfwmkgsfzghzr4m8676z38s2dmzs9gchha7n8wv7"; + dependencies = mapFeatures features ([ + (crates."byteorder"."${deps."h2"."0.1.13"."byteorder"}" deps) + (crates."bytes"."${deps."h2"."0.1.13"."bytes"}" deps) + (crates."fnv"."${deps."h2"."0.1.13"."fnv"}" deps) + (crates."futures"."${deps."h2"."0.1.13"."futures"}" deps) + (crates."http"."${deps."h2"."0.1.13"."http"}" deps) + (crates."indexmap"."${deps."h2"."0.1.13"."indexmap"}" deps) + (crates."log"."${deps."h2"."0.1.13"."log"}" deps) + (crates."slab"."${deps."h2"."0.1.13"."slab"}" deps) + (crates."string"."${deps."h2"."0.1.13"."string"}" deps) + (crates."tokio_io"."${deps."h2"."0.1.13"."tokio_io"}" deps) + ]); + features = mkFeatures (features."h2"."0.1.13" or {}); + }; + features_.h2."0.1.13" = deps: f: updateFeatures f (rec { + byteorder."${deps.h2."0.1.13".byteorder}".default = true; + bytes."${deps.h2."0.1.13".bytes}".default = true; + fnv."${deps.h2."0.1.13".fnv}".default = true; + futures."${deps.h2."0.1.13".futures}".default = true; + h2."0.1.13".default = (f.h2."0.1.13".default or true); + http."${deps.h2."0.1.13".http}".default = true; + indexmap."${deps.h2."0.1.13".indexmap}".default = true; + log."${deps.h2."0.1.13".log}".default = true; + slab."${deps.h2."0.1.13".slab}".default = true; + string."${deps.h2."0.1.13".string}".default = true; + tokio_io."${deps.h2."0.1.13".tokio_io}".default = true; + }) [ + (features_.byteorder."${deps."h2"."0.1.13"."byteorder"}" deps) + (features_.bytes."${deps."h2"."0.1.13"."bytes"}" deps) + (features_.fnv."${deps."h2"."0.1.13"."fnv"}" deps) + (features_.futures."${deps."h2"."0.1.13"."futures"}" deps) + (features_.http."${deps."h2"."0.1.13"."http"}" deps) + (features_.indexmap."${deps."h2"."0.1.13"."indexmap"}" deps) + (features_.log."${deps."h2"."0.1.13"."log"}" deps) + (features_.slab."${deps."h2"."0.1.13"."slab"}" deps) + (features_.string."${deps."h2"."0.1.13"."string"}" deps) + (features_.tokio_io."${deps."h2"."0.1.13"."tokio_io"}" deps) + ]; + + +# end +# http-0.1.14 + + crates.http."0.1.14" = deps: { features?(features_.http."0.1.14" deps {}) }: buildRustCrate { + crateName = "http"; + version = "0.1.14"; + description = "A set of types for representing HTTP requests and responses.\n"; + authors = [ "Alex Crichton " "Carl Lerche " "Sean McArthur " ]; + sha256 = "1828cz2fh25nmp9rca0yzr548phsvkmzsqhspjnscqg1l9yc1557"; + dependencies = mapFeatures features ([ + (crates."bytes"."${deps."http"."0.1.14"."bytes"}" deps) + (crates."fnv"."${deps."http"."0.1.14"."fnv"}" deps) + (crates."itoa"."${deps."http"."0.1.14"."itoa"}" deps) + ]); + }; + features_.http."0.1.14" = deps: f: updateFeatures f (rec { + bytes."${deps.http."0.1.14".bytes}".default = true; + fnv."${deps.http."0.1.14".fnv}".default = true; + http."0.1.14".default = (f.http."0.1.14".default or true); + itoa."${deps.http."0.1.14".itoa}".default = true; + }) [ + (features_.bytes."${deps."http"."0.1.14"."bytes"}" deps) + (features_.fnv."${deps."http"."0.1.14"."fnv"}" deps) + (features_.itoa."${deps."http"."0.1.14"."itoa"}" deps) + ]; + + +# end +# httparse-1.2.3 + + crates.httparse."1.2.3" = deps: { features?(features_.httparse."1.2.3" deps {}) }: buildRustCrate { + crateName = "httparse"; + version = "1.2.3"; + description = "A tiny, safe, speedy, zero-copy HTTP/1.x parser."; + authors = [ "Sean McArthur " ]; + sha256 = "13x17y9bip0bija06y4vwpgh8jdmdi2gsvjq02kyfy0fbp5cqa93"; + features = mkFeatures (features."httparse"."1.2.3" or {}); + }; + features_.httparse."1.2.3" = deps: f: updateFeatures f (rec { + httparse = fold recursiveUpdate {} [ + { "1.2.3"."std" = + (f.httparse."1.2.3"."std" or false) || + (f.httparse."1.2.3".default or false) || + (httparse."1.2.3"."default" or false); } + { "1.2.3".default = (f.httparse."1.2.3".default or true); } + ]; + }) []; + + +# end +# hyper-0.12.16 + + crates.hyper."0.12.16" = deps: { features?(features_.hyper."0.12.16" deps {}) }: buildRustCrate { + crateName = "hyper"; + version = "0.12.16"; + description = "A fast and correct HTTP library."; + authors = [ "Sean McArthur " ]; + sha256 = "1h5h9swxh02jcg1m4cvwb5nmkb8z9g4b0p4wfbhfvsd7wf14qr0y"; + dependencies = mapFeatures features ([ + (crates."bytes"."${deps."hyper"."0.12.16"."bytes"}" deps) + (crates."futures"."${deps."hyper"."0.12.16"."futures"}" deps) + (crates."h2"."${deps."hyper"."0.12.16"."h2"}" deps) + (crates."http"."${deps."hyper"."0.12.16"."http"}" deps) + (crates."httparse"."${deps."hyper"."0.12.16"."httparse"}" deps) + (crates."iovec"."${deps."hyper"."0.12.16"."iovec"}" deps) + (crates."itoa"."${deps."hyper"."0.12.16"."itoa"}" deps) + (crates."log"."${deps."hyper"."0.12.16"."log"}" deps) + (crates."time"."${deps."hyper"."0.12.16"."time"}" deps) + (crates."tokio_io"."${deps."hyper"."0.12.16"."tokio_io"}" deps) + (crates."want"."${deps."hyper"."0.12.16"."want"}" deps) + ] + ++ (if features.hyper."0.12.16".futures-cpupool or false then [ (crates.futures_cpupool."${deps."hyper"."0.12.16".futures_cpupool}" deps) ] else []) + ++ (if features.hyper."0.12.16".net2 or false then [ (crates.net2."${deps."hyper"."0.12.16".net2}" deps) ] else []) + ++ (if features.hyper."0.12.16".tokio or false then [ (crates.tokio."${deps."hyper"."0.12.16".tokio}" deps) ] else []) + ++ (if features.hyper."0.12.16".tokio-executor or false then [ (crates.tokio_executor."${deps."hyper"."0.12.16".tokio_executor}" deps) ] else []) + ++ (if features.hyper."0.12.16".tokio-reactor or false then [ (crates.tokio_reactor."${deps."hyper"."0.12.16".tokio_reactor}" deps) ] else []) + ++ (if features.hyper."0.12.16".tokio-tcp or false then [ (crates.tokio_tcp."${deps."hyper"."0.12.16".tokio_tcp}" deps) ] else []) + ++ (if features.hyper."0.12.16".tokio-threadpool or false then [ (crates.tokio_threadpool."${deps."hyper"."0.12.16".tokio_threadpool}" deps) ] else []) + ++ (if features.hyper."0.12.16".tokio-timer or false then [ (crates.tokio_timer."${deps."hyper"."0.12.16".tokio_timer}" deps) ] else [])); + features = mkFeatures (features."hyper"."0.12.16" or {}); + }; + features_.hyper."0.12.16" = deps: f: updateFeatures f (rec { + bytes."${deps.hyper."0.12.16".bytes}".default = true; + futures."${deps.hyper."0.12.16".futures}".default = true; + futures_cpupool."${deps.hyper."0.12.16".futures_cpupool}".default = true; + h2."${deps.hyper."0.12.16".h2}".default = true; + http."${deps.hyper."0.12.16".http}".default = true; + httparse."${deps.hyper."0.12.16".httparse}".default = true; + hyper = fold recursiveUpdate {} [ + { "0.12.16"."__internal_flaky_tests" = + (f.hyper."0.12.16"."__internal_flaky_tests" or false) || + (f.hyper."0.12.16".default or false) || + (hyper."0.12.16"."default" or false); } + { "0.12.16"."futures-cpupool" = + (f.hyper."0.12.16"."futures-cpupool" or false) || + (f.hyper."0.12.16".runtime or false) || + (hyper."0.12.16"."runtime" or false); } + { "0.12.16"."net2" = + (f.hyper."0.12.16"."net2" or false) || + (f.hyper."0.12.16".runtime or false) || + (hyper."0.12.16"."runtime" or false); } + { "0.12.16"."runtime" = + (f.hyper."0.12.16"."runtime" or false) || + (f.hyper."0.12.16".default or false) || + (hyper."0.12.16"."default" or false); } + { "0.12.16"."tokio" = + (f.hyper."0.12.16"."tokio" or false) || + (f.hyper."0.12.16".runtime or false) || + (hyper."0.12.16"."runtime" or false); } + { "0.12.16"."tokio-executor" = + (f.hyper."0.12.16"."tokio-executor" or false) || + (f.hyper."0.12.16".runtime or false) || + (hyper."0.12.16"."runtime" or false); } + { "0.12.16"."tokio-reactor" = + (f.hyper."0.12.16"."tokio-reactor" or false) || + (f.hyper."0.12.16".runtime or false) || + (hyper."0.12.16"."runtime" or false); } + { "0.12.16"."tokio-tcp" = + (f.hyper."0.12.16"."tokio-tcp" or false) || + (f.hyper."0.12.16".runtime or false) || + (hyper."0.12.16"."runtime" or false); } + { "0.12.16"."tokio-threadpool" = + (f.hyper."0.12.16"."tokio-threadpool" or false) || + (f.hyper."0.12.16".runtime or false) || + (hyper."0.12.16"."runtime" or false); } + { "0.12.16"."tokio-timer" = + (f.hyper."0.12.16"."tokio-timer" or false) || + (f.hyper."0.12.16".runtime or false) || + (hyper."0.12.16"."runtime" or false); } + { "0.12.16".default = (f.hyper."0.12.16".default or true); } + ]; + iovec."${deps.hyper."0.12.16".iovec}".default = true; + itoa."${deps.hyper."0.12.16".itoa}".default = true; + log."${deps.hyper."0.12.16".log}".default = true; + net2."${deps.hyper."0.12.16".net2}".default = true; + time."${deps.hyper."0.12.16".time}".default = true; + tokio."${deps.hyper."0.12.16".tokio}".default = true; + tokio_executor."${deps.hyper."0.12.16".tokio_executor}".default = true; + tokio_io."${deps.hyper."0.12.16".tokio_io}".default = true; + tokio_reactor."${deps.hyper."0.12.16".tokio_reactor}".default = true; + tokio_tcp."${deps.hyper."0.12.16".tokio_tcp}".default = true; + tokio_threadpool."${deps.hyper."0.12.16".tokio_threadpool}".default = true; + tokio_timer."${deps.hyper."0.12.16".tokio_timer}".default = true; + want."${deps.hyper."0.12.16".want}".default = true; + }) [ + (features_.bytes."${deps."hyper"."0.12.16"."bytes"}" deps) + (features_.futures."${deps."hyper"."0.12.16"."futures"}" deps) + (features_.futures_cpupool."${deps."hyper"."0.12.16"."futures_cpupool"}" deps) + (features_.h2."${deps."hyper"."0.12.16"."h2"}" deps) + (features_.http."${deps."hyper"."0.12.16"."http"}" deps) + (features_.httparse."${deps."hyper"."0.12.16"."httparse"}" deps) + (features_.iovec."${deps."hyper"."0.12.16"."iovec"}" deps) + (features_.itoa."${deps."hyper"."0.12.16"."itoa"}" deps) + (features_.log."${deps."hyper"."0.12.16"."log"}" deps) + (features_.net2."${deps."hyper"."0.12.16"."net2"}" deps) + (features_.time."${deps."hyper"."0.12.16"."time"}" deps) + (features_.tokio."${deps."hyper"."0.12.16"."tokio"}" deps) + (features_.tokio_executor."${deps."hyper"."0.12.16"."tokio_executor"}" deps) + (features_.tokio_io."${deps."hyper"."0.12.16"."tokio_io"}" deps) + (features_.tokio_reactor."${deps."hyper"."0.12.16"."tokio_reactor"}" deps) + (features_.tokio_tcp."${deps."hyper"."0.12.16"."tokio_tcp"}" deps) + (features_.tokio_threadpool."${deps."hyper"."0.12.16"."tokio_threadpool"}" deps) + (features_.tokio_timer."${deps."hyper"."0.12.16"."tokio_timer"}" deps) + (features_.want."${deps."hyper"."0.12.16"."want"}" deps) + ]; + + +# end +# hyper-tls-0.3.1 + + crates.hyper_tls."0.3.1" = deps: { features?(features_.hyper_tls."0.3.1" deps {}) }: buildRustCrate { + crateName = "hyper-tls"; + version = "0.3.1"; + description = "Default TLS implementation for use with hyper"; + authors = [ "Sean McArthur " ]; + sha256 = "0sk46mmnccxgxwn62rl5m58c2ivwgxgd590cjwg60pjkhx9qn5r7"; + dependencies = mapFeatures features ([ + (crates."bytes"."${deps."hyper_tls"."0.3.1"."bytes"}" deps) + (crates."futures"."${deps."hyper_tls"."0.3.1"."futures"}" deps) + (crates."hyper"."${deps."hyper_tls"."0.3.1"."hyper"}" deps) + (crates."native_tls"."${deps."hyper_tls"."0.3.1"."native_tls"}" deps) + (crates."tokio_io"."${deps."hyper_tls"."0.3.1"."tokio_io"}" deps) + ]); + features = mkFeatures (features."hyper_tls"."0.3.1" or {}); + }; + features_.hyper_tls."0.3.1" = deps: f: updateFeatures f (rec { + bytes."${deps.hyper_tls."0.3.1".bytes}".default = true; + futures."${deps.hyper_tls."0.3.1".futures}".default = true; + hyper."${deps.hyper_tls."0.3.1".hyper}".default = true; + hyper_tls."0.3.1".default = (f.hyper_tls."0.3.1".default or true); + native_tls = fold recursiveUpdate {} [ + { "${deps.hyper_tls."0.3.1".native_tls}"."vendored" = + (f.native_tls."${deps.hyper_tls."0.3.1".native_tls}"."vendored" or false) || + (hyper_tls."0.3.1"."vendored" or false) || + (f."hyper_tls"."0.3.1"."vendored" or false); } + { "${deps.hyper_tls."0.3.1".native_tls}".default = true; } + ]; + tokio_io."${deps.hyper_tls."0.3.1".tokio_io}".default = true; + }) [ + (features_.bytes."${deps."hyper_tls"."0.3.1"."bytes"}" deps) + (features_.futures."${deps."hyper_tls"."0.3.1"."futures"}" deps) + (features_.hyper."${deps."hyper_tls"."0.3.1"."hyper"}" deps) + (features_.native_tls."${deps."hyper_tls"."0.3.1"."native_tls"}" deps) + (features_.tokio_io."${deps."hyper_tls"."0.3.1"."tokio_io"}" deps) + ]; + + +# end +# idna-0.1.4 + + crates.idna."0.1.4" = deps: { features?(features_.idna."0.1.4" deps {}) }: buildRustCrate { + crateName = "idna"; + version = "0.1.4"; + description = "IDNA (Internationalizing Domain Names in Applications) and Punycode."; + authors = [ "The rust-url developers" ]; + sha256 = "15j44qgjx1skwg9i7f4cm36ni4n99b1ayx23yxx7axxcw8vjf336"; + dependencies = mapFeatures features ([ + (crates."matches"."${deps."idna"."0.1.4"."matches"}" deps) + (crates."unicode_bidi"."${deps."idna"."0.1.4"."unicode_bidi"}" deps) + (crates."unicode_normalization"."${deps."idna"."0.1.4"."unicode_normalization"}" deps) + ]); + }; + features_.idna."0.1.4" = deps: f: updateFeatures f (rec { + idna."0.1.4".default = (f.idna."0.1.4".default or true); + matches."${deps.idna."0.1.4".matches}".default = true; + unicode_bidi."${deps.idna."0.1.4".unicode_bidi}".default = true; + unicode_normalization."${deps.idna."0.1.4".unicode_normalization}".default = true; + }) [ + (features_.matches."${deps."idna"."0.1.4"."matches"}" deps) + (features_.unicode_bidi."${deps."idna"."0.1.4"."unicode_bidi"}" deps) + (features_.unicode_normalization."${deps."idna"."0.1.4"."unicode_normalization"}" deps) + ]; + + +# end +# indexmap-1.0.2 + + crates.indexmap."1.0.2" = deps: { features?(features_.indexmap."1.0.2" deps {}) }: buildRustCrate { + crateName = "indexmap"; + version = "1.0.2"; + description = "A hash table with consistent order and fast iteration.\n\nThe indexmap is a hash table where the iteration order of the key-value\npairs is independent of the hash values of the keys. It has the usual\nhash table functionality, it preserves insertion order except after\nremovals, and it allows lookup of its elements by either hash table key\nor numerical index. A corresponding hash set type is also provided.\n\nThis crate was initially published under the name ordermap, but it was renamed to\nindexmap.\n"; + authors = [ "bluss" "Josh Stone " ]; + sha256 = "18a0cn5xy3a7wswxg5lwfg3j4sh5blk28ykw0ysgr486djd353gf"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."indexmap"."1.0.2" or {}); + }; + features_.indexmap."1.0.2" = deps: f: updateFeatures f (rec { + indexmap = fold recursiveUpdate {} [ + { "1.0.2"."serde" = + (f.indexmap."1.0.2"."serde" or false) || + (f.indexmap."1.0.2".serde-1 or false) || + (indexmap."1.0.2"."serde-1" or false); } + { "1.0.2".default = (f.indexmap."1.0.2".default or true); } + ]; + }) []; + + +# end +# iovec-0.1.1 + + crates.iovec."0.1.1" = deps: { features?(features_.iovec."0.1.1" deps {}) }: buildRustCrate { + crateName = "iovec"; + version = "0.1.1"; + description = "Portable buffer type for scatter/gather I/O operations\n"; + authors = [ "Carl Lerche " ]; + sha256 = "14fns3g3arbql6lkczf2gbbzaqh22mfv7y1wq5rr2y8jhh5m8jmm"; + dependencies = (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + (crates."libc"."${deps."iovec"."0.1.1"."libc"}" deps) + ]) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + (crates."winapi"."${deps."iovec"."0.1.1"."winapi"}" deps) + ]) else []); + }; + features_.iovec."0.1.1" = deps: f: updateFeatures f (rec { + iovec."0.1.1".default = (f.iovec."0.1.1".default or true); + libc."${deps.iovec."0.1.1".libc}".default = true; + winapi."${deps.iovec."0.1.1".winapi}".default = true; + }) [ + (features_.libc."${deps."iovec"."0.1.1"."libc"}" deps) + (features_.winapi."${deps."iovec"."0.1.1"."winapi"}" deps) + ]; + + +# end +# isatty-0.1.5 + + crates.isatty."0.1.5" = deps: { features?(features_.isatty."0.1.5" deps {}) }: buildRustCrate { + crateName = "isatty"; + version = "0.1.5"; + description = "libc::isatty that also works on Windows"; + authors = [ "David Tolnay " ]; + sha256 = "0gp781mgqmvsp6a3iyhwk2sqis2ys8jfg3grq40m135zgb4d2cvj"; + dependencies = (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + (crates."libc"."${deps."isatty"."0.1.5"."libc"}" deps) + ]) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + (crates."kernel32_sys"."${deps."isatty"."0.1.5"."kernel32_sys"}" deps) + (crates."winapi"."${deps."isatty"."0.1.5"."winapi"}" deps) + ]) else []); + }; + features_.isatty."0.1.5" = deps: f: updateFeatures f (rec { + isatty."0.1.5".default = (f.isatty."0.1.5".default or true); + kernel32_sys."${deps.isatty."0.1.5".kernel32_sys}".default = true; + libc."${deps.isatty."0.1.5".libc}".default = true; + winapi."${deps.isatty."0.1.5".winapi}".default = true; + }) [ + (features_.libc."${deps."isatty"."0.1.5"."libc"}" deps) + (features_.kernel32_sys."${deps."isatty"."0.1.5"."kernel32_sys"}" deps) + (features_.winapi."${deps."isatty"."0.1.5"."winapi"}" deps) + ]; + + +# end +# itertools-0.6.5 + + crates.itertools."0.6.5" = deps: { features?(features_.itertools."0.6.5" deps {}) }: buildRustCrate { + crateName = "itertools"; + version = "0.6.5"; + description = "Extra iterator adaptors, iterator methods, free functions, and macros."; + authors = [ "bluss" ]; + sha256 = "0gbhgn7s8qkxxw10i514fzpqnc3aissn4kcgylm2cvnv9zmg8mw1"; + dependencies = mapFeatures features ([ + (crates."either"."${deps."itertools"."0.6.5"."either"}" deps) + ]); + }; + features_.itertools."0.6.5" = deps: f: updateFeatures f (rec { + either."${deps.itertools."0.6.5".either}".default = (f.either."${deps.itertools."0.6.5".either}".default or false); + itertools."0.6.5".default = (f.itertools."0.6.5".default or true); + }) [ + (features_.either."${deps."itertools"."0.6.5"."either"}" deps) + ]; + + +# end +# itoa-0.3.4 + + crates.itoa."0.3.4" = deps: { features?(features_.itoa."0.3.4" deps {}) }: buildRustCrate { + crateName = "itoa"; + version = "0.3.4"; + description = "Fast functions for printing integer primitives to an io::Write"; + authors = [ "David Tolnay " ]; + sha256 = "1nfkzz6vrgj0d9l3yzjkkkqzdgs68y294fjdbl7jq118qi8xc9d9"; + features = mkFeatures (features."itoa"."0.3.4" or {}); + }; + features_.itoa."0.3.4" = deps: f: updateFeatures f (rec { + itoa."0.3.4".default = (f.itoa."0.3.4".default or true); + }) []; + + +# end +# itoa-0.4.3 + + crates.itoa."0.4.3" = deps: { features?(features_.itoa."0.4.3" deps {}) }: buildRustCrate { + crateName = "itoa"; + version = "0.4.3"; + description = "Fast functions for printing integer primitives to an io::Write"; + authors = [ "David Tolnay " ]; + sha256 = "0zadimmdgvili3gdwxqg7ljv3r4wcdg1kkdfp9nl15vnm23vrhy1"; + features = mkFeatures (features."itoa"."0.4.3" or {}); + }; + features_.itoa."0.4.3" = deps: f: updateFeatures f (rec { + itoa = fold recursiveUpdate {} [ + { "0.4.3"."std" = + (f.itoa."0.4.3"."std" or false) || + (f.itoa."0.4.3".default or false) || + (itoa."0.4.3"."default" or false); } + { "0.4.3".default = (f.itoa."0.4.3".default or true); } + ]; + }) []; + + +# end +# kernel32-sys-0.2.2 + + crates.kernel32_sys."0.2.2" = deps: { features?(features_.kernel32_sys."0.2.2" deps {}) }: buildRustCrate { + crateName = "kernel32-sys"; + version = "0.2.2"; + description = "Contains function definitions for the Windows API library kernel32. See winapi for types and constants."; + authors = [ "Peter Atashian " ]; + sha256 = "1lrw1hbinyvr6cp28g60z97w32w8vsk6pahk64pmrv2fmby8srfj"; + libName = "kernel32"; + build = "build.rs"; + dependencies = mapFeatures features ([ + (crates."winapi"."${deps."kernel32_sys"."0.2.2"."winapi"}" deps) + ]); + + buildDependencies = mapFeatures features ([ + (crates."winapi_build"."${deps."kernel32_sys"."0.2.2"."winapi_build"}" deps) + ]); + }; + features_.kernel32_sys."0.2.2" = deps: f: updateFeatures f (rec { + kernel32_sys."0.2.2".default = (f.kernel32_sys."0.2.2".default or true); + winapi."${deps.kernel32_sys."0.2.2".winapi}".default = true; + winapi_build."${deps.kernel32_sys."0.2.2".winapi_build}".default = true; + }) [ + (features_.winapi."${deps."kernel32_sys"."0.2.2"."winapi"}" deps) + (features_.winapi_build."${deps."kernel32_sys"."0.2.2"."winapi_build"}" deps) + ]; + + +# end +# lazy_static-0.2.10 + + crates.lazy_static."0.2.10" = deps: { features?(features_.lazy_static."0.2.10" deps {}) }: buildRustCrate { + crateName = "lazy_static"; + version = "0.2.10"; + description = "A macro for declaring lazily evaluated statics in Rust."; + authors = [ "Marvin Löbel " ]; + sha256 = "0ylwjvppsm56fpv32l4br7zw0pwn81wbfb1abalyyr1d9c94vg8r"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."lazy_static"."0.2.10" or {}); + }; + features_.lazy_static."0.2.10" = deps: f: updateFeatures f (rec { + lazy_static = fold recursiveUpdate {} [ + { "0.2.10"."compiletest_rs" = + (f.lazy_static."0.2.10"."compiletest_rs" or false) || + (f.lazy_static."0.2.10".compiletest or false) || + (lazy_static."0.2.10"."compiletest" or false); } + { "0.2.10"."nightly" = + (f.lazy_static."0.2.10"."nightly" or false) || + (f.lazy_static."0.2.10".spin_no_std or false) || + (lazy_static."0.2.10"."spin_no_std" or false); } + { "0.2.10"."spin" = + (f.lazy_static."0.2.10"."spin" or false) || + (f.lazy_static."0.2.10".spin_no_std or false) || + (lazy_static."0.2.10"."spin_no_std" or false); } + { "0.2.10".default = (f.lazy_static."0.2.10".default or true); } + ]; + }) []; + + +# end +# lazy_static-1.2.0 + + crates.lazy_static."1.2.0" = deps: { features?(features_.lazy_static."1.2.0" deps {}) }: buildRustCrate { + crateName = "lazy_static"; + version = "1.2.0"; + description = "A macro for declaring lazily evaluated statics in Rust."; + authors = [ "Marvin Löbel " ]; + sha256 = "07p3b30k2akyr6xw08ggd5qiz5nw3vd3agggj360fcc1njz7d0ss"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."lazy_static"."1.2.0" or {}); + }; + features_.lazy_static."1.2.0" = deps: f: updateFeatures f (rec { + lazy_static = fold recursiveUpdate {} [ + { "1.2.0"."spin" = + (f.lazy_static."1.2.0"."spin" or false) || + (f.lazy_static."1.2.0".spin_no_std or false) || + (lazy_static."1.2.0"."spin_no_std" or false); } + { "1.2.0".default = (f.lazy_static."1.2.0".default or true); } + ]; + }) []; + + +# end +# lazycell-1.2.0 + + crates.lazycell."1.2.0" = deps: { features?(features_.lazycell."1.2.0" deps {}) }: buildRustCrate { + crateName = "lazycell"; + version = "1.2.0"; + description = "A library providing a lazily filled Cell struct"; + authors = [ "Alex Crichton " "Nikita Pekin " ]; + sha256 = "1lzdb3q17yjihw9hksynxgyg8wbph1h791wff8rrf1c2aqjwhmax"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."lazycell"."1.2.0" or {}); + }; + features_.lazycell."1.2.0" = deps: f: updateFeatures f (rec { + lazycell = fold recursiveUpdate {} [ + { "1.2.0"."clippy" = + (f.lazycell."1.2.0"."clippy" or false) || + (f.lazycell."1.2.0".nightly-testing or false) || + (lazycell."1.2.0"."nightly-testing" or false); } + { "1.2.0"."nightly" = + (f.lazycell."1.2.0"."nightly" or false) || + (f.lazycell."1.2.0".nightly-testing or false) || + (lazycell."1.2.0"."nightly-testing" or false); } + { "1.2.0".default = (f.lazycell."1.2.0".default or true); } + ]; + }) []; + + +# end +# libc-0.2.44 + + crates.libc."0.2.44" = deps: { features?(features_.libc."0.2.44" deps {}) }: buildRustCrate { + crateName = "libc"; + version = "0.2.44"; + description = "A library for types and bindings to native C functions often found in libc or\nother common platform libraries.\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "17a7p0lcf3qwl1pcxffdflgnx8zr2659mgzzg4zi5fnv1mlj3q6z"; + build = "build.rs"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."libc"."0.2.44" or {}); + }; + features_.libc."0.2.44" = deps: f: updateFeatures f (rec { + libc = fold recursiveUpdate {} [ + { "0.2.44"."align" = + (f.libc."0.2.44"."align" or false) || + (f.libc."0.2.44".rustc-dep-of-std or false) || + (libc."0.2.44"."rustc-dep-of-std" or false); } + { "0.2.44"."rustc-std-workspace-core" = + (f.libc."0.2.44"."rustc-std-workspace-core" or false) || + (f.libc."0.2.44".rustc-dep-of-std or false) || + (libc."0.2.44"."rustc-dep-of-std" or false); } + { "0.2.44"."use_std" = + (f.libc."0.2.44"."use_std" or false) || + (f.libc."0.2.44".default or false) || + (libc."0.2.44"."default" or false); } + { "0.2.44".default = (f.libc."0.2.44".default or true); } + ]; + }) []; + + +# end +# libflate-0.1.19 + + crates.libflate."0.1.19" = deps: { features?(features_.libflate."0.1.19" deps {}) }: buildRustCrate { + crateName = "libflate"; + version = "0.1.19"; + description = "A Rust implementation of DEFLATE algorithm and related formats (ZLIB, GZIP)"; + authors = [ "Takeru Ohta " ]; + sha256 = "1klhvys9541xrwspyyv41qbr37xnwx4bdaspk6gbiprhrsqqkjp0"; + dependencies = mapFeatures features ([ + (crates."adler32"."${deps."libflate"."0.1.19"."adler32"}" deps) + (crates."byteorder"."${deps."libflate"."0.1.19"."byteorder"}" deps) + (crates."crc32fast"."${deps."libflate"."0.1.19"."crc32fast"}" deps) + ]); + }; + features_.libflate."0.1.19" = deps: f: updateFeatures f (rec { + adler32."${deps.libflate."0.1.19".adler32}".default = true; + byteorder."${deps.libflate."0.1.19".byteorder}".default = true; + crc32fast."${deps.libflate."0.1.19".crc32fast}".default = true; + libflate."0.1.19".default = (f.libflate."0.1.19".default or true); + }) [ + (features_.adler32."${deps."libflate"."0.1.19"."adler32"}" deps) + (features_.byteorder."${deps."libflate"."0.1.19"."byteorder"}" deps) + (features_.crc32fast."${deps."libflate"."0.1.19"."crc32fast"}" deps) + ]; + + +# end +# lock_api-0.1.5 + + crates.lock_api."0.1.5" = deps: { features?(features_.lock_api."0.1.5" deps {}) }: buildRustCrate { + crateName = "lock_api"; + version = "0.1.5"; + description = "Wrappers to create fully-featured Mutex and RwLock types. Compatible with no_std."; + authors = [ "Amanieu d'Antras " ]; + sha256 = "132sidr5hvjfkaqm3l95zpcpi8yk5ddd0g79zf1ad4v65sxirqqm"; + dependencies = mapFeatures features ([ + (crates."scopeguard"."${deps."lock_api"."0.1.5"."scopeguard"}" deps) + ] + ++ (if features.lock_api."0.1.5".owning_ref or false then [ (crates.owning_ref."${deps."lock_api"."0.1.5".owning_ref}" deps) ] else [])); + features = mkFeatures (features."lock_api"."0.1.5" or {}); + }; + features_.lock_api."0.1.5" = deps: f: updateFeatures f (rec { + lock_api."0.1.5".default = (f.lock_api."0.1.5".default or true); + owning_ref."${deps.lock_api."0.1.5".owning_ref}".default = true; + scopeguard."${deps.lock_api."0.1.5".scopeguard}".default = (f.scopeguard."${deps.lock_api."0.1.5".scopeguard}".default or false); + }) [ + (features_.owning_ref."${deps."lock_api"."0.1.5"."owning_ref"}" deps) + (features_.scopeguard."${deps."lock_api"."0.1.5"."scopeguard"}" deps) + ]; + + +# end +# log-0.3.8 + + crates.log."0.3.8" = deps: { features?(features_.log."0.3.8" deps {}) }: buildRustCrate { + crateName = "log"; + version = "0.3.8"; + description = "A lightweight logging facade for Rust\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "1c43z4z85sxrsgir4s1hi84558ab5ic7jrn5qgmsiqcv90vvn006"; + features = mkFeatures (features."log"."0.3.8" or {}); + }; + features_.log."0.3.8" = deps: f: updateFeatures f (rec { + log = fold recursiveUpdate {} [ + { "0.3.8"."use_std" = + (f.log."0.3.8"."use_std" or false) || + (f.log."0.3.8".default or false) || + (log."0.3.8"."default" or false); } + { "0.3.8".default = (f.log."0.3.8".default or true); } + ]; + }) []; + + +# end +# log-0.4.6 + + crates.log."0.4.6" = deps: { features?(features_.log."0.4.6" deps {}) }: buildRustCrate { + crateName = "log"; + version = "0.4.6"; + description = "A lightweight logging facade for Rust\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "1nd8dl9mvc9vd6fks5d4gsxaz990xi6rzlb8ymllshmwi153vngr"; + dependencies = mapFeatures features ([ + (crates."cfg_if"."${deps."log"."0.4.6"."cfg_if"}" deps) + ]); + features = mkFeatures (features."log"."0.4.6" or {}); + }; + features_.log."0.4.6" = deps: f: updateFeatures f (rec { + cfg_if."${deps.log."0.4.6".cfg_if}".default = true; + log."0.4.6".default = (f.log."0.4.6".default or true); + }) [ + (features_.cfg_if."${deps."log"."0.4.6"."cfg_if"}" deps) + ]; + + +# end +# maplit-0.1.6 + + crates.maplit."0.1.6" = deps: { features?(features_.maplit."0.1.6" deps {}) }: buildRustCrate { + crateName = "maplit"; + version = "0.1.6"; + description = "Container / collection literal macros for HashMap, HashSet, BTreeMap, BTreeSet."; + authors = [ "bluss" ]; + sha256 = "1f8kf5v7xra8ssvh5c10qlacbk4l0z2817pkscflx5s5q6y7925h"; + }; + features_.maplit."0.1.6" = deps: f: updateFeatures f (rec { + maplit."0.1.6".default = (f.maplit."0.1.6".default or true); + }) []; + + +# end +# matches-0.1.6 + + crates.matches."0.1.6" = deps: { features?(features_.matches."0.1.6" deps {}) }: buildRustCrate { + crateName = "matches"; + version = "0.1.6"; + description = "A macro to evaluate, as a boolean, whether an expression matches a pattern."; + authors = [ "Simon Sapin " ]; + sha256 = "1zlrqlbvzxdil8z8ial2ihvxjwvlvg3g8dr0lcdpsjclkclasjan"; + libPath = "lib.rs"; + }; + features_.matches."0.1.6" = deps: f: updateFeatures f (rec { + matches."0.1.6".default = (f.matches."0.1.6".default or true); + }) []; + + +# end +# memchr-0.1.11 + + crates.memchr."0.1.11" = deps: { features?(features_.memchr."0.1.11" deps {}) }: buildRustCrate { + crateName = "memchr"; + version = "0.1.11"; + description = "Safe interface to memchr."; + authors = [ "Andrew Gallant " "bluss" ]; + sha256 = "0x73jghamvxxq5fsw9wb0shk5m6qp3q6fsf0nibn0i6bbqkw91s8"; + dependencies = mapFeatures features ([ + (crates."libc"."${deps."memchr"."0.1.11"."libc"}" deps) + ]); + }; + features_.memchr."0.1.11" = deps: f: updateFeatures f (rec { + libc."${deps.memchr."0.1.11".libc}".default = true; + memchr."0.1.11".default = (f.memchr."0.1.11".default or true); + }) [ + (features_.libc."${deps."memchr"."0.1.11"."libc"}" deps) + ]; + + +# end +# memoffset-0.2.1 + + crates.memoffset."0.2.1" = deps: { features?(features_.memoffset."0.2.1" deps {}) }: buildRustCrate { + crateName = "memoffset"; + version = "0.2.1"; + description = "offset_of functionality for Rust structs."; + authors = [ "Gilad Naaman " ]; + sha256 = "00vym01jk9slibq2nsiilgffp7n6k52a4q3n4dqp0xf5kzxvffcf"; + }; + features_.memoffset."0.2.1" = deps: f: updateFeatures f (rec { + memoffset."0.2.1".default = (f.memoffset."0.2.1".default or true); + }) []; + + +# end +# mime-0.3.12 + + crates.mime."0.3.12" = deps: { features?(features_.mime."0.3.12" deps {}) }: buildRustCrate { + crateName = "mime"; + version = "0.3.12"; + description = "Strongly Typed Mimes"; + authors = [ "Sean McArthur " ]; + sha256 = "0lmcwkmxwbla9457w9ak13cfgqxfyn5wa1syjy1kll2ras5xifvh"; + dependencies = mapFeatures features ([ + (crates."unicase"."${deps."mime"."0.3.12"."unicase"}" deps) + ]); + }; + features_.mime."0.3.12" = deps: f: updateFeatures f (rec { + mime."0.3.12".default = (f.mime."0.3.12".default or true); + unicase."${deps.mime."0.3.12".unicase}".default = true; + }) [ + (features_.unicase."${deps."mime"."0.3.12"."unicase"}" deps) + ]; + + +# end +# mime_guess-2.0.0-alpha.6 + + crates.mime_guess."2.0.0-alpha.6" = deps: { features?(features_.mime_guess."2.0.0-alpha.6" deps {}) }: buildRustCrate { + crateName = "mime_guess"; + version = "2.0.0-alpha.6"; + description = "A simple crate for detection of a file's MIME type by its extension."; + authors = [ "Austin Bonander " ]; + sha256 = "1k2mdq43gi2qr63b7m5zs624rfi40ysk33cay49jlhq97jwnk9db"; + dependencies = mapFeatures features ([ + (crates."mime"."${deps."mime_guess"."2.0.0-alpha.6"."mime"}" deps) + (crates."phf"."${deps."mime_guess"."2.0.0-alpha.6"."phf"}" deps) + (crates."unicase"."${deps."mime_guess"."2.0.0-alpha.6"."unicase"}" deps) + ]); + + buildDependencies = mapFeatures features ([ + (crates."phf_codegen"."${deps."mime_guess"."2.0.0-alpha.6"."phf_codegen"}" deps) + (crates."unicase"."${deps."mime_guess"."2.0.0-alpha.6"."unicase"}" deps) + ]); + features = mkFeatures (features."mime_guess"."2.0.0-alpha.6" or {}); + }; + features_.mime_guess."2.0.0-alpha.6" = deps: f: updateFeatures f (rec { + mime."${deps.mime_guess."2.0.0-alpha.6".mime}".default = true; + mime_guess."2.0.0-alpha.6".default = (f.mime_guess."2.0.0-alpha.6".default or true); + phf = fold recursiveUpdate {} [ + { "${deps.mime_guess."2.0.0-alpha.6".phf}"."unicase" = true; } + { "${deps.mime_guess."2.0.0-alpha.6".phf}".default = true; } + ]; + phf_codegen."${deps.mime_guess."2.0.0-alpha.6".phf_codegen}".default = true; + unicase."${deps.mime_guess."2.0.0-alpha.6".unicase}".default = true; + }) [ + (features_.mime."${deps."mime_guess"."2.0.0-alpha.6"."mime"}" deps) + (features_.phf."${deps."mime_guess"."2.0.0-alpha.6"."phf"}" deps) + (features_.unicase."${deps."mime_guess"."2.0.0-alpha.6"."unicase"}" deps) + (features_.phf_codegen."${deps."mime_guess"."2.0.0-alpha.6"."phf_codegen"}" deps) + (features_.unicase."${deps."mime_guess"."2.0.0-alpha.6"."unicase"}" deps) + ]; + + +# end +# miniz-sys-0.1.10 + + crates.miniz_sys."0.1.10" = deps: { features?(features_.miniz_sys."0.1.10" deps {}) }: buildRustCrate { + crateName = "miniz-sys"; + version = "0.1.10"; + description = "Bindings to the miniz.c library.\n"; + authors = [ "Alex Crichton " ]; + sha256 = "11vg6phafxil87nbxgrlhcx5hjr3145wsbwwkfmibvnmzxfdmvln"; + libPath = "lib.rs"; + libName = "miniz_sys"; + build = "build.rs"; + dependencies = mapFeatures features ([ + (crates."libc"."${deps."miniz_sys"."0.1.10"."libc"}" deps) + ]); + + buildDependencies = mapFeatures features ([ + (crates."cc"."${deps."miniz_sys"."0.1.10"."cc"}" deps) + ]); + }; + features_.miniz_sys."0.1.10" = deps: f: updateFeatures f (rec { + cc."${deps.miniz_sys."0.1.10".cc}".default = true; + libc."${deps.miniz_sys."0.1.10".libc}".default = true; + miniz_sys."0.1.10".default = (f.miniz_sys."0.1.10".default or true); + }) [ + (features_.libc."${deps."miniz_sys"."0.1.10"."libc"}" deps) + (features_.cc."${deps."miniz_sys"."0.1.10"."cc"}" deps) + ]; + + +# end +# mio-0.6.16 + + crates.mio."0.6.16" = deps: { features?(features_.mio."0.6.16" deps {}) }: buildRustCrate { + crateName = "mio"; + version = "0.6.16"; + description = "Lightweight non-blocking IO"; + authors = [ "Carl Lerche " ]; + sha256 = "14vyrlmf0w984pi7ad9qvmlfj6vrb0wn6i8ik9j87w5za2r3rban"; + dependencies = mapFeatures features ([ + (crates."iovec"."${deps."mio"."0.6.16"."iovec"}" deps) + (crates."lazycell"."${deps."mio"."0.6.16"."lazycell"}" deps) + (crates."log"."${deps."mio"."0.6.16"."log"}" deps) + (crates."net2"."${deps."mio"."0.6.16"."net2"}" deps) + (crates."slab"."${deps."mio"."0.6.16"."slab"}" deps) + ]) + ++ (if kernel == "fuchsia" then mapFeatures features ([ + (crates."fuchsia_zircon"."${deps."mio"."0.6.16"."fuchsia_zircon"}" deps) + (crates."fuchsia_zircon_sys"."${deps."mio"."0.6.16"."fuchsia_zircon_sys"}" deps) + ]) else []) + ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + (crates."libc"."${deps."mio"."0.6.16"."libc"}" deps) + ]) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + (crates."kernel32_sys"."${deps."mio"."0.6.16"."kernel32_sys"}" deps) + (crates."miow"."${deps."mio"."0.6.16"."miow"}" deps) + (crates."winapi"."${deps."mio"."0.6.16"."winapi"}" deps) + ]) else []); + features = mkFeatures (features."mio"."0.6.16" or {}); + }; + features_.mio."0.6.16" = deps: f: updateFeatures f (rec { + fuchsia_zircon."${deps.mio."0.6.16".fuchsia_zircon}".default = true; + fuchsia_zircon_sys."${deps.mio."0.6.16".fuchsia_zircon_sys}".default = true; + iovec."${deps.mio."0.6.16".iovec}".default = true; + kernel32_sys."${deps.mio."0.6.16".kernel32_sys}".default = true; + lazycell."${deps.mio."0.6.16".lazycell}".default = true; + libc."${deps.mio."0.6.16".libc}".default = true; + log."${deps.mio."0.6.16".log}".default = true; + mio = fold recursiveUpdate {} [ + { "0.6.16"."with-deprecated" = + (f.mio."0.6.16"."with-deprecated" or false) || + (f.mio."0.6.16".default or false) || + (mio."0.6.16"."default" or false); } + { "0.6.16".default = (f.mio."0.6.16".default or true); } + ]; + miow."${deps.mio."0.6.16".miow}".default = true; + net2."${deps.mio."0.6.16".net2}".default = true; + slab."${deps.mio."0.6.16".slab}".default = true; + winapi."${deps.mio."0.6.16".winapi}".default = true; + }) [ + (features_.iovec."${deps."mio"."0.6.16"."iovec"}" deps) + (features_.lazycell."${deps."mio"."0.6.16"."lazycell"}" deps) + (features_.log."${deps."mio"."0.6.16"."log"}" deps) + (features_.net2."${deps."mio"."0.6.16"."net2"}" deps) + (features_.slab."${deps."mio"."0.6.16"."slab"}" deps) + (features_.fuchsia_zircon."${deps."mio"."0.6.16"."fuchsia_zircon"}" deps) + (features_.fuchsia_zircon_sys."${deps."mio"."0.6.16"."fuchsia_zircon_sys"}" deps) + (features_.libc."${deps."mio"."0.6.16"."libc"}" deps) + (features_.kernel32_sys."${deps."mio"."0.6.16"."kernel32_sys"}" deps) + (features_.miow."${deps."mio"."0.6.16"."miow"}" deps) + (features_.winapi."${deps."mio"."0.6.16"."winapi"}" deps) + ]; + + +# end +# miow-0.2.1 + + crates.miow."0.2.1" = deps: { features?(features_.miow."0.2.1" deps {}) }: buildRustCrate { + crateName = "miow"; + version = "0.2.1"; + description = "A zero overhead I/O library for Windows, focusing on IOCP and Async I/O\nabstractions.\n"; + authors = [ "Alex Crichton " ]; + sha256 = "14f8zkc6ix7mkyis1vsqnim8m29b6l55abkba3p2yz7j1ibcvrl0"; + dependencies = mapFeatures features ([ + (crates."kernel32_sys"."${deps."miow"."0.2.1"."kernel32_sys"}" deps) + (crates."net2"."${deps."miow"."0.2.1"."net2"}" deps) + (crates."winapi"."${deps."miow"."0.2.1"."winapi"}" deps) + (crates."ws2_32_sys"."${deps."miow"."0.2.1"."ws2_32_sys"}" deps) + ]); + }; + features_.miow."0.2.1" = deps: f: updateFeatures f (rec { + kernel32_sys."${deps.miow."0.2.1".kernel32_sys}".default = true; + miow."0.2.1".default = (f.miow."0.2.1".default or true); + net2."${deps.miow."0.2.1".net2}".default = (f.net2."${deps.miow."0.2.1".net2}".default or false); + winapi."${deps.miow."0.2.1".winapi}".default = true; + ws2_32_sys."${deps.miow."0.2.1".ws2_32_sys}".default = true; + }) [ + (features_.kernel32_sys."${deps."miow"."0.2.1"."kernel32_sys"}" deps) + (features_.net2."${deps."miow"."0.2.1"."net2"}" deps) + (features_.winapi."${deps."miow"."0.2.1"."winapi"}" deps) + (features_.ws2_32_sys."${deps."miow"."0.2.1"."ws2_32_sys"}" deps) + ]; + + +# end +# native-tls-0.2.2 + + crates.native_tls."0.2.2" = deps: { features?(features_.native_tls."0.2.2" deps {}) }: buildRustCrate { + crateName = "native-tls"; + version = "0.2.2"; + description = "A wrapper over a platform's native TLS implementation"; + authors = [ "Steven Fackler " ]; + sha256 = "0vl2hmmnrcjfylzjfsbnav20ri2n1qjgxn7bklb4mk3fyxfqm1m9"; + dependencies = (if kernel == "darwin" || kernel == "ios" then mapFeatures features ([ + (crates."lazy_static"."${deps."native_tls"."0.2.2"."lazy_static"}" deps) + (crates."libc"."${deps."native_tls"."0.2.2"."libc"}" deps) + (crates."security_framework"."${deps."native_tls"."0.2.2"."security_framework"}" deps) + (crates."security_framework_sys"."${deps."native_tls"."0.2.2"."security_framework_sys"}" deps) + (crates."tempfile"."${deps."native_tls"."0.2.2"."tempfile"}" deps) + ]) else []) + ++ (if !(kernel == "windows" || kernel == "darwin" || kernel == "ios") then mapFeatures features ([ + (crates."openssl"."${deps."native_tls"."0.2.2"."openssl"}" deps) + (crates."openssl_probe"."${deps."native_tls"."0.2.2"."openssl_probe"}" deps) + (crates."openssl_sys"."${deps."native_tls"."0.2.2"."openssl_sys"}" deps) + ]) else []) + ++ (if kernel == "android" then mapFeatures features ([ + (crates."log"."${deps."native_tls"."0.2.2"."log"}" deps) + ]) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + (crates."schannel"."${deps."native_tls"."0.2.2"."schannel"}" deps) + ]) else []); + features = mkFeatures (features."native_tls"."0.2.2" or {}); + }; + features_.native_tls."0.2.2" = deps: f: updateFeatures f (rec { + lazy_static."${deps.native_tls."0.2.2".lazy_static}".default = true; + libc."${deps.native_tls."0.2.2".libc}".default = true; + log."${deps.native_tls."0.2.2".log}".default = true; + native_tls."0.2.2".default = (f.native_tls."0.2.2".default or true); + openssl."${deps.native_tls."0.2.2".openssl}".default = true; + openssl_probe."${deps.native_tls."0.2.2".openssl_probe}".default = true; + openssl_sys."${deps.native_tls."0.2.2".openssl_sys}".default = true; + schannel."${deps.native_tls."0.2.2".schannel}".default = true; + security_framework."${deps.native_tls."0.2.2".security_framework}".default = true; + security_framework_sys."${deps.native_tls."0.2.2".security_framework_sys}".default = true; + tempfile."${deps.native_tls."0.2.2".tempfile}".default = true; + }) [ + (features_.lazy_static."${deps."native_tls"."0.2.2"."lazy_static"}" deps) + (features_.libc."${deps."native_tls"."0.2.2"."libc"}" deps) + (features_.security_framework."${deps."native_tls"."0.2.2"."security_framework"}" deps) + (features_.security_framework_sys."${deps."native_tls"."0.2.2"."security_framework_sys"}" deps) + (features_.tempfile."${deps."native_tls"."0.2.2"."tempfile"}" deps) + (features_.openssl."${deps."native_tls"."0.2.2"."openssl"}" deps) + (features_.openssl_probe."${deps."native_tls"."0.2.2"."openssl_probe"}" deps) + (features_.openssl_sys."${deps."native_tls"."0.2.2"."openssl_sys"}" deps) + (features_.log."${deps."native_tls"."0.2.2"."log"}" deps) + (features_.schannel."${deps."native_tls"."0.2.2"."schannel"}" deps) + ]; + + +# end +# net2-0.2.33 + + crates.net2."0.2.33" = deps: { features?(features_.net2."0.2.33" deps {}) }: buildRustCrate { + crateName = "net2"; + version = "0.2.33"; + description = "Extensions to the standard library's networking types as proposed in RFC 1158.\n"; + authors = [ "Alex Crichton " ]; + sha256 = "1qnmajafgybj5wyxz9iffa8x5wgbwd2znfklmhqj7vl6lw1m65mq"; + dependencies = mapFeatures features ([ + (crates."cfg_if"."${deps."net2"."0.2.33"."cfg_if"}" deps) + ]) + ++ (if kernel == "redox" || (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + (crates."libc"."${deps."net2"."0.2.33"."libc"}" deps) + ]) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + (crates."winapi"."${deps."net2"."0.2.33"."winapi"}" deps) + ]) else []); + features = mkFeatures (features."net2"."0.2.33" or {}); + }; + features_.net2."0.2.33" = deps: f: updateFeatures f (rec { + cfg_if."${deps.net2."0.2.33".cfg_if}".default = true; + libc."${deps.net2."0.2.33".libc}".default = true; + net2 = fold recursiveUpdate {} [ + { "0.2.33"."duration" = + (f.net2."0.2.33"."duration" or false) || + (f.net2."0.2.33".default or false) || + (net2."0.2.33"."default" or false); } + { "0.2.33".default = (f.net2."0.2.33".default or true); } + ]; + winapi = fold recursiveUpdate {} [ + { "${deps.net2."0.2.33".winapi}"."handleapi" = true; } + { "${deps.net2."0.2.33".winapi}"."winsock2" = true; } + { "${deps.net2."0.2.33".winapi}"."ws2def" = true; } + { "${deps.net2."0.2.33".winapi}"."ws2ipdef" = true; } + { "${deps.net2."0.2.33".winapi}"."ws2tcpip" = true; } + { "${deps.net2."0.2.33".winapi}".default = true; } + ]; + }) [ + (features_.cfg_if."${deps."net2"."0.2.33"."cfg_if"}" deps) + (features_.libc."${deps."net2"."0.2.33"."libc"}" deps) + (features_.winapi."${deps."net2"."0.2.33"."winapi"}" deps) + ]; + + +# end +# nodrop-0.1.13 + + crates.nodrop."0.1.13" = deps: { features?(features_.nodrop."0.1.13" deps {}) }: buildRustCrate { + crateName = "nodrop"; + version = "0.1.13"; + description = "A wrapper type to inhibit drop (destructor). Use std::mem::ManuallyDrop instead!"; + authors = [ "bluss" ]; + sha256 = "0gkfx6wihr9z0m8nbdhma5pyvbipznjpkzny2d4zkc05b0vnhinb"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."nodrop"."0.1.13" or {}); + }; + features_.nodrop."0.1.13" = deps: f: updateFeatures f (rec { + nodrop = fold recursiveUpdate {} [ + { "0.1.13"."nodrop-union" = + (f.nodrop."0.1.13"."nodrop-union" or false) || + (f.nodrop."0.1.13".use_union or false) || + (nodrop."0.1.13"."use_union" or false); } + { "0.1.13"."std" = + (f.nodrop."0.1.13"."std" or false) || + (f.nodrop."0.1.13".default or false) || + (nodrop."0.1.13"."default" or false); } + { "0.1.13".default = (f.nodrop."0.1.13".default or true); } + ]; + }) []; + + +# end +# num-0.1.40 + + crates.num."0.1.40" = deps: { features?(features_.num."0.1.40" deps {}) }: buildRustCrate { + crateName = "num"; + version = "0.1.40"; + description = "A collection of numeric types and traits for Rust, including bigint,\ncomplex, rational, range iterators, generic integers, and more!\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "0b29c25n9mpf6a921khj7a6y3hz5va4vgwppcd2if975qq1shakg"; + dependencies = mapFeatures features ([ + (crates."num_integer"."${deps."num"."0.1.40"."num_integer"}" deps) + (crates."num_iter"."${deps."num"."0.1.40"."num_iter"}" deps) + (crates."num_traits"."${deps."num"."0.1.40"."num_traits"}" deps) + ]); + features = mkFeatures (features."num"."0.1.40" or {}); + }; + features_.num."0.1.40" = deps: f: updateFeatures f (rec { + num = fold recursiveUpdate {} [ + { "0.1.40"."bigint" = + (f.num."0.1.40"."bigint" or false) || + (f.num."0.1.40".default or false) || + (num."0.1.40"."default" or false); } + { "0.1.40"."complex" = + (f.num."0.1.40"."complex" or false) || + (f.num."0.1.40".default or false) || + (num."0.1.40"."default" or false); } + { "0.1.40"."num-bigint" = + (f.num."0.1.40"."num-bigint" or false) || + (f.num."0.1.40".bigint or false) || + (num."0.1.40"."bigint" or false); } + { "0.1.40"."num-complex" = + (f.num."0.1.40"."num-complex" or false) || + (f.num."0.1.40".complex or false) || + (num."0.1.40"."complex" or false); } + { "0.1.40"."num-rational" = + (f.num."0.1.40"."num-rational" or false) || + (f.num."0.1.40".rational or false) || + (num."0.1.40"."rational" or false); } + { "0.1.40"."rational" = + (f.num."0.1.40"."rational" or false) || + (f.num."0.1.40".default or false) || + (num."0.1.40"."default" or false); } + { "0.1.40"."rustc-serialize" = + (f.num."0.1.40"."rustc-serialize" or false) || + (f.num."0.1.40".default or false) || + (num."0.1.40"."default" or false); } + { "0.1.40".default = (f.num."0.1.40".default or true); } + ]; + num_integer."${deps.num."0.1.40".num_integer}".default = true; + num_iter."${deps.num."0.1.40".num_iter}".default = true; + num_traits."${deps.num."0.1.40".num_traits}".default = true; + }) [ + (features_.num_integer."${deps."num"."0.1.40"."num_integer"}" deps) + (features_.num_iter."${deps."num"."0.1.40"."num_iter"}" deps) + (features_.num_traits."${deps."num"."0.1.40"."num_traits"}" deps) + ]; + + +# end +# num-integer-0.1.35 + + crates.num_integer."0.1.35" = deps: { features?(features_.num_integer."0.1.35" deps {}) }: buildRustCrate { + crateName = "num-integer"; + version = "0.1.35"; + description = "Integer traits and functions"; + authors = [ "The Rust Project Developers" ]; + sha256 = "0xybj8isi9b6wc646d5rc043i8l8j6wy0vrl4pn995qms9fxbbcc"; + dependencies = mapFeatures features ([ + (crates."num_traits"."${deps."num_integer"."0.1.35"."num_traits"}" deps) + ]); + }; + features_.num_integer."0.1.35" = deps: f: updateFeatures f (rec { + num_integer."0.1.35".default = (f.num_integer."0.1.35".default or true); + num_traits."${deps.num_integer."0.1.35".num_traits}".default = true; + }) [ + (features_.num_traits."${deps."num_integer"."0.1.35"."num_traits"}" deps) + ]; + + +# end +# num-iter-0.1.34 + + crates.num_iter."0.1.34" = deps: { features?(features_.num_iter."0.1.34" deps {}) }: buildRustCrate { + crateName = "num-iter"; + version = "0.1.34"; + description = "External iterators for generic mathematics"; + authors = [ "The Rust Project Developers" ]; + sha256 = "02cld7x9dzbqbs6sxxzq1i22z3awlcd6ljkgvhkfr9rsnaxphzl9"; + dependencies = mapFeatures features ([ + (crates."num_integer"."${deps."num_iter"."0.1.34"."num_integer"}" deps) + (crates."num_traits"."${deps."num_iter"."0.1.34"."num_traits"}" deps) + ]); + }; + features_.num_iter."0.1.34" = deps: f: updateFeatures f (rec { + num_integer."${deps.num_iter."0.1.34".num_integer}".default = true; + num_iter."0.1.34".default = (f.num_iter."0.1.34".default or true); + num_traits."${deps.num_iter."0.1.34".num_traits}".default = true; + }) [ + (features_.num_integer."${deps."num_iter"."0.1.34"."num_integer"}" deps) + (features_.num_traits."${deps."num_iter"."0.1.34"."num_traits"}" deps) + ]; + + +# end +# num-traits-0.1.40 + + crates.num_traits."0.1.40" = deps: { features?(features_.num_traits."0.1.40" deps {}) }: buildRustCrate { + crateName = "num-traits"; + version = "0.1.40"; + description = "Numeric traits for generic mathematics"; + authors = [ "The Rust Project Developers" ]; + sha256 = "1fr8ghp4i97q3agki54i0hpmqxv3s65i2mqd1pinc7w7arc3fplw"; + }; + features_.num_traits."0.1.40" = deps: f: updateFeatures f (rec { + num_traits."0.1.40".default = (f.num_traits."0.1.40".default or true); + }) []; + + +# end +# num_cpus-1.8.0 + + crates.num_cpus."1.8.0" = deps: { features?(features_.num_cpus."1.8.0" deps {}) }: buildRustCrate { + crateName = "num_cpus"; + version = "1.8.0"; + description = "Get the number of CPUs on a machine."; + authors = [ "Sean McArthur " ]; + sha256 = "1y6qnd9r8ga6y8mvlabdrr73nc8cshjjlzbvnanzyj9b8zzkfwk2"; + dependencies = mapFeatures features ([ + (crates."libc"."${deps."num_cpus"."1.8.0"."libc"}" deps) + ]); + }; + features_.num_cpus."1.8.0" = deps: f: updateFeatures f (rec { + libc."${deps.num_cpus."1.8.0".libc}".default = true; + num_cpus."1.8.0".default = (f.num_cpus."1.8.0".default or true); + }) [ + (features_.libc."${deps."num_cpus"."1.8.0"."libc"}" deps) + ]; + + +# end +# openssl-0.10.15 + + crates.openssl."0.10.15" = deps: { features?(features_.openssl."0.10.15" deps {}) }: buildRustCrate { + crateName = "openssl"; + version = "0.10.15"; + description = "OpenSSL bindings"; + authors = [ "Steven Fackler " ]; + sha256 = "0fj5g66ibkyb6vfdfjgaypfn45vpj2cdv7d7qpq653sv57glcqri"; + dependencies = mapFeatures features ([ + (crates."bitflags"."${deps."openssl"."0.10.15"."bitflags"}" deps) + (crates."cfg_if"."${deps."openssl"."0.10.15"."cfg_if"}" deps) + (crates."foreign_types"."${deps."openssl"."0.10.15"."foreign_types"}" deps) + (crates."lazy_static"."${deps."openssl"."0.10.15"."lazy_static"}" deps) + (crates."libc"."${deps."openssl"."0.10.15"."libc"}" deps) + (crates."openssl_sys"."${deps."openssl"."0.10.15"."openssl_sys"}" deps) + ]); + features = mkFeatures (features."openssl"."0.10.15" or {}); + }; + features_.openssl."0.10.15" = deps: f: updateFeatures f (rec { + bitflags."${deps.openssl."0.10.15".bitflags}".default = true; + cfg_if."${deps.openssl."0.10.15".cfg_if}".default = true; + foreign_types."${deps.openssl."0.10.15".foreign_types}".default = true; + lazy_static."${deps.openssl."0.10.15".lazy_static}".default = true; + libc."${deps.openssl."0.10.15".libc}".default = true; + openssl."0.10.15".default = (f.openssl."0.10.15".default or true); + openssl_sys = fold recursiveUpdate {} [ + { "${deps.openssl."0.10.15".openssl_sys}"."vendored" = + (f.openssl_sys."${deps.openssl."0.10.15".openssl_sys}"."vendored" or false) || + (openssl."0.10.15"."vendored" or false) || + (f."openssl"."0.10.15"."vendored" or false); } + { "${deps.openssl."0.10.15".openssl_sys}".default = true; } + ]; + }) [ + (features_.bitflags."${deps."openssl"."0.10.15"."bitflags"}" deps) + (features_.cfg_if."${deps."openssl"."0.10.15"."cfg_if"}" deps) + (features_.foreign_types."${deps."openssl"."0.10.15"."foreign_types"}" deps) + (features_.lazy_static."${deps."openssl"."0.10.15"."lazy_static"}" deps) + (features_.libc."${deps."openssl"."0.10.15"."libc"}" deps) + (features_.openssl_sys."${deps."openssl"."0.10.15"."openssl_sys"}" deps) + ]; + + +# end +# openssl-probe-0.1.2 + + crates.openssl_probe."0.1.2" = deps: { features?(features_.openssl_probe."0.1.2" deps {}) }: buildRustCrate { + crateName = "openssl-probe"; + version = "0.1.2"; + description = "Tool for helping to find SSL certificate locations on the system for OpenSSL\n"; + authors = [ "Alex Crichton " ]; + sha256 = "1a89fznx26vvaxyrxdvgf6iwai5xvs6xjvpjin68fgvrslv6n15a"; + }; + features_.openssl_probe."0.1.2" = deps: f: updateFeatures f (rec { + openssl_probe."0.1.2".default = (f.openssl_probe."0.1.2".default or true); + }) []; + + +# end +# openssl-sys-0.9.39 + + crates.openssl_sys."0.9.39" = deps: { features?(features_.openssl_sys."0.9.39" deps {}) }: buildRustCrate { + crateName = "openssl-sys"; + version = "0.9.39"; + description = "FFI bindings to OpenSSL"; + authors = [ "Alex Crichton " "Steven Fackler " ]; + sha256 = "1lraqg3xz4jxrc99na17kn6srfhsgnj1yjk29mgsh803w40s2056"; + build = "build/main.rs"; + dependencies = mapFeatures features ([ + (crates."libc"."${deps."openssl_sys"."0.9.39"."libc"}" deps) + ]) + ++ (if abi == "msvc" then mapFeatures features ([ +]) else []); + + buildDependencies = mapFeatures features ([ + (crates."cc"."${deps."openssl_sys"."0.9.39"."cc"}" deps) + (crates."pkg_config"."${deps."openssl_sys"."0.9.39"."pkg_config"}" deps) + ]); + features = mkFeatures (features."openssl_sys"."0.9.39" or {}); + }; + features_.openssl_sys."0.9.39" = deps: f: updateFeatures f (rec { + cc."${deps.openssl_sys."0.9.39".cc}".default = true; + libc."${deps.openssl_sys."0.9.39".libc}".default = true; + openssl_sys = fold recursiveUpdate {} [ + { "0.9.39"."openssl-src" = + (f.openssl_sys."0.9.39"."openssl-src" or false) || + (f.openssl_sys."0.9.39".vendored or false) || + (openssl_sys."0.9.39"."vendored" or false); } + { "0.9.39".default = (f.openssl_sys."0.9.39".default or true); } + ]; + pkg_config."${deps.openssl_sys."0.9.39".pkg_config}".default = true; + }) [ + (features_.libc."${deps."openssl_sys"."0.9.39"."libc"}" deps) + (features_.cc."${deps."openssl_sys"."0.9.39"."cc"}" deps) + (features_.pkg_config."${deps."openssl_sys"."0.9.39"."pkg_config"}" deps) + ]; + + +# end +# owning_ref-0.4.0 + + crates.owning_ref."0.4.0" = deps: { features?(features_.owning_ref."0.4.0" deps {}) }: buildRustCrate { + crateName = "owning_ref"; + version = "0.4.0"; + description = "A library for creating references that carry their owner with them."; + authors = [ "Marvin Löbel " ]; + sha256 = "1m95qpc3hamkw9wlbfzqkzk7h6skyj40zr6sa3ps151slcfnnchm"; + dependencies = mapFeatures features ([ + (crates."stable_deref_trait"."${deps."owning_ref"."0.4.0"."stable_deref_trait"}" deps) + ]); + }; + features_.owning_ref."0.4.0" = deps: f: updateFeatures f (rec { + owning_ref."0.4.0".default = (f.owning_ref."0.4.0".default or true); + stable_deref_trait."${deps.owning_ref."0.4.0".stable_deref_trait}".default = true; + }) [ + (features_.stable_deref_trait."${deps."owning_ref"."0.4.0"."stable_deref_trait"}" deps) + ]; + + +# end +# parking_lot-0.6.4 + + crates.parking_lot."0.6.4" = deps: { features?(features_.parking_lot."0.6.4" deps {}) }: buildRustCrate { + crateName = "parking_lot"; + version = "0.6.4"; + description = "More compact and efficient implementations of the standard synchronization primitives."; + authors = [ "Amanieu d'Antras " ]; + sha256 = "0qwfysx8zfkj72sfcrqvd6pp7lgjmklyixsi3y0g6xjspw876rax"; + dependencies = mapFeatures features ([ + (crates."lock_api"."${deps."parking_lot"."0.6.4"."lock_api"}" deps) + (crates."parking_lot_core"."${deps."parking_lot"."0.6.4"."parking_lot_core"}" deps) + ]); + features = mkFeatures (features."parking_lot"."0.6.4" or {}); + }; + features_.parking_lot."0.6.4" = deps: f: updateFeatures f (rec { + lock_api = fold recursiveUpdate {} [ + { "${deps.parking_lot."0.6.4".lock_api}"."nightly" = + (f.lock_api."${deps.parking_lot."0.6.4".lock_api}"."nightly" or false) || + (parking_lot."0.6.4"."nightly" or false) || + (f."parking_lot"."0.6.4"."nightly" or false); } + { "${deps.parking_lot."0.6.4".lock_api}"."owning_ref" = + (f.lock_api."${deps.parking_lot."0.6.4".lock_api}"."owning_ref" or false) || + (parking_lot."0.6.4"."owning_ref" or false) || + (f."parking_lot"."0.6.4"."owning_ref" or false); } + { "${deps.parking_lot."0.6.4".lock_api}".default = true; } + ]; + parking_lot = fold recursiveUpdate {} [ + { "0.6.4"."owning_ref" = + (f.parking_lot."0.6.4"."owning_ref" or false) || + (f.parking_lot."0.6.4".default or false) || + (parking_lot."0.6.4"."default" or false); } + { "0.6.4".default = (f.parking_lot."0.6.4".default or true); } + ]; + parking_lot_core = fold recursiveUpdate {} [ + { "${deps.parking_lot."0.6.4".parking_lot_core}"."deadlock_detection" = + (f.parking_lot_core."${deps.parking_lot."0.6.4".parking_lot_core}"."deadlock_detection" or false) || + (parking_lot."0.6.4"."deadlock_detection" or false) || + (f."parking_lot"."0.6.4"."deadlock_detection" or false); } + { "${deps.parking_lot."0.6.4".parking_lot_core}"."nightly" = + (f.parking_lot_core."${deps.parking_lot."0.6.4".parking_lot_core}"."nightly" or false) || + (parking_lot."0.6.4"."nightly" or false) || + (f."parking_lot"."0.6.4"."nightly" or false); } + { "${deps.parking_lot."0.6.4".parking_lot_core}".default = true; } + ]; + }) [ + (features_.lock_api."${deps."parking_lot"."0.6.4"."lock_api"}" deps) + (features_.parking_lot_core."${deps."parking_lot"."0.6.4"."parking_lot_core"}" deps) + ]; + + +# end +# parking_lot_core-0.3.1 + + crates.parking_lot_core."0.3.1" = deps: { features?(features_.parking_lot_core."0.3.1" deps {}) }: buildRustCrate { + crateName = "parking_lot_core"; + version = "0.3.1"; + description = "An advanced API for creating custom synchronization primitives."; + authors = [ "Amanieu d'Antras " ]; + sha256 = "0h5p7dys8cx9y6ii4i57ampf7qdr8zmkpn543kd3h7nkhml8bw72"; + dependencies = mapFeatures features ([ + (crates."rand"."${deps."parking_lot_core"."0.3.1"."rand"}" deps) + (crates."smallvec"."${deps."parking_lot_core"."0.3.1"."smallvec"}" deps) + ]) + ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + (crates."libc"."${deps."parking_lot_core"."0.3.1"."libc"}" deps) + ]) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + (crates."winapi"."${deps."parking_lot_core"."0.3.1"."winapi"}" deps) + ]) else []); + + buildDependencies = mapFeatures features ([ + (crates."rustc_version"."${deps."parking_lot_core"."0.3.1"."rustc_version"}" deps) + ]); + features = mkFeatures (features."parking_lot_core"."0.3.1" or {}); + }; + features_.parking_lot_core."0.3.1" = deps: f: updateFeatures f (rec { + libc."${deps.parking_lot_core."0.3.1".libc}".default = true; + parking_lot_core = fold recursiveUpdate {} [ + { "0.3.1"."backtrace" = + (f.parking_lot_core."0.3.1"."backtrace" or false) || + (f.parking_lot_core."0.3.1".deadlock_detection or false) || + (parking_lot_core."0.3.1"."deadlock_detection" or false); } + { "0.3.1"."petgraph" = + (f.parking_lot_core."0.3.1"."petgraph" or false) || + (f.parking_lot_core."0.3.1".deadlock_detection or false) || + (parking_lot_core."0.3.1"."deadlock_detection" or false); } + { "0.3.1"."thread-id" = + (f.parking_lot_core."0.3.1"."thread-id" or false) || + (f.parking_lot_core."0.3.1".deadlock_detection or false) || + (parking_lot_core."0.3.1"."deadlock_detection" or false); } + { "0.3.1".default = (f.parking_lot_core."0.3.1".default or true); } + ]; + rand."${deps.parking_lot_core."0.3.1".rand}".default = true; + rustc_version."${deps.parking_lot_core."0.3.1".rustc_version}".default = true; + smallvec."${deps.parking_lot_core."0.3.1".smallvec}".default = true; + winapi = fold recursiveUpdate {} [ + { "${deps.parking_lot_core."0.3.1".winapi}"."errhandlingapi" = true; } + { "${deps.parking_lot_core."0.3.1".winapi}"."handleapi" = true; } + { "${deps.parking_lot_core."0.3.1".winapi}"."minwindef" = true; } + { "${deps.parking_lot_core."0.3.1".winapi}"."ntstatus" = true; } + { "${deps.parking_lot_core."0.3.1".winapi}"."winbase" = true; } + { "${deps.parking_lot_core."0.3.1".winapi}"."winerror" = true; } + { "${deps.parking_lot_core."0.3.1".winapi}"."winnt" = true; } + { "${deps.parking_lot_core."0.3.1".winapi}".default = true; } + ]; + }) [ + (features_.rand."${deps."parking_lot_core"."0.3.1"."rand"}" deps) + (features_.smallvec."${deps."parking_lot_core"."0.3.1"."smallvec"}" deps) + (features_.rustc_version."${deps."parking_lot_core"."0.3.1"."rustc_version"}" deps) + (features_.libc."${deps."parking_lot_core"."0.3.1"."libc"}" deps) + (features_.winapi."${deps."parking_lot_core"."0.3.1"."winapi"}" deps) + ]; + + +# end +# percent-encoding-1.0.1 + + crates.percent_encoding."1.0.1" = deps: { features?(features_.percent_encoding."1.0.1" deps {}) }: buildRustCrate { + crateName = "percent-encoding"; + version = "1.0.1"; + description = "Percent encoding and decoding"; + authors = [ "The rust-url developers" ]; + sha256 = "04ahrp7aw4ip7fmadb0bknybmkfav0kk0gw4ps3ydq5w6hr0ib5i"; + libPath = "lib.rs"; + }; + features_.percent_encoding."1.0.1" = deps: f: updateFeatures f (rec { + percent_encoding."1.0.1".default = (f.percent_encoding."1.0.1".default or true); + }) []; + + +# end +# phf-0.7.21 + + crates.phf."0.7.21" = deps: { features?(features_.phf."0.7.21" deps {}) }: buildRustCrate { + crateName = "phf"; + version = "0.7.21"; + description = "Runtime support for perfect hash function data structures"; + authors = [ "Steven Fackler " ]; + sha256 = "11m2rzm2s8s35m0s97gjxxb181xz352kjlhr387xj5c8q3qp5afg"; + libPath = "src/lib.rs"; + dependencies = mapFeatures features ([ + (crates."phf_shared"."${deps."phf"."0.7.21"."phf_shared"}" deps) + ]); + features = mkFeatures (features."phf"."0.7.21" or {}); + }; + features_.phf."0.7.21" = deps: f: updateFeatures f (rec { + phf."0.7.21".default = (f.phf."0.7.21".default or true); + phf_shared = fold recursiveUpdate {} [ + { "${deps.phf."0.7.21".phf_shared}"."core" = + (f.phf_shared."${deps.phf."0.7.21".phf_shared}"."core" or false) || + (phf."0.7.21"."core" or false) || + (f."phf"."0.7.21"."core" or false); } + { "${deps.phf."0.7.21".phf_shared}"."unicase" = + (f.phf_shared."${deps.phf."0.7.21".phf_shared}"."unicase" or false) || + (phf."0.7.21"."unicase" or false) || + (f."phf"."0.7.21"."unicase" or false); } + { "${deps.phf."0.7.21".phf_shared}".default = true; } + ]; + }) [ + (features_.phf_shared."${deps."phf"."0.7.21"."phf_shared"}" deps) + ]; + + +# end +# phf_codegen-0.7.21 + + crates.phf_codegen."0.7.21" = deps: { features?(features_.phf_codegen."0.7.21" deps {}) }: buildRustCrate { + crateName = "phf_codegen"; + version = "0.7.21"; + description = "Codegen library for PHF types"; + authors = [ "Steven Fackler " ]; + sha256 = "0kgy8s2q4zr0iqcm21mgq4ppc45wy6z7b5wn98xyfsrcad6lwmmj"; + dependencies = mapFeatures features ([ + (crates."phf_generator"."${deps."phf_codegen"."0.7.21"."phf_generator"}" deps) + (crates."phf_shared"."${deps."phf_codegen"."0.7.21"."phf_shared"}" deps) + ]); + }; + features_.phf_codegen."0.7.21" = deps: f: updateFeatures f (rec { + phf_codegen."0.7.21".default = (f.phf_codegen."0.7.21".default or true); + phf_generator."${deps.phf_codegen."0.7.21".phf_generator}".default = true; + phf_shared."${deps.phf_codegen."0.7.21".phf_shared}".default = true; + }) [ + (features_.phf_generator."${deps."phf_codegen"."0.7.21"."phf_generator"}" deps) + (features_.phf_shared."${deps."phf_codegen"."0.7.21"."phf_shared"}" deps) + ]; + + +# end +# phf_generator-0.7.21 + + crates.phf_generator."0.7.21" = deps: { features?(features_.phf_generator."0.7.21" deps {}) }: buildRustCrate { + crateName = "phf_generator"; + version = "0.7.21"; + description = "PHF generation logic"; + authors = [ "Steven Fackler " ]; + sha256 = "1jxjfzc6d6d4l9nv0r2bb66if5brk9lnncmg4dpjjifn6zhhqd9g"; + dependencies = mapFeatures features ([ + (crates."phf_shared"."${deps."phf_generator"."0.7.21"."phf_shared"}" deps) + (crates."rand"."${deps."phf_generator"."0.7.21"."rand"}" deps) + ]); + }; + features_.phf_generator."0.7.21" = deps: f: updateFeatures f (rec { + phf_generator."0.7.21".default = (f.phf_generator."0.7.21".default or true); + phf_shared."${deps.phf_generator."0.7.21".phf_shared}".default = true; + rand."${deps.phf_generator."0.7.21".rand}".default = true; + }) [ + (features_.phf_shared."${deps."phf_generator"."0.7.21"."phf_shared"}" deps) + (features_.rand."${deps."phf_generator"."0.7.21"."rand"}" deps) + ]; + + +# end +# phf_shared-0.7.21 + + crates.phf_shared."0.7.21" = deps: { features?(features_.phf_shared."0.7.21" deps {}) }: buildRustCrate { + crateName = "phf_shared"; + version = "0.7.21"; + description = "Support code shared by PHF libraries"; + authors = [ "Steven Fackler " ]; + sha256 = "0lxpg3wgxfhzfalmf9ha9my1lsvfjy74ah9f6mfw88xlp545jlln"; + libPath = "src/lib.rs"; + dependencies = mapFeatures features ([ + (crates."siphasher"."${deps."phf_shared"."0.7.21"."siphasher"}" deps) + ] + ++ (if features.phf_shared."0.7.21".unicase or false then [ (crates.unicase."${deps."phf_shared"."0.7.21".unicase}" deps) ] else [])); + features = mkFeatures (features."phf_shared"."0.7.21" or {}); + }; + features_.phf_shared."0.7.21" = deps: f: updateFeatures f (rec { + phf_shared."0.7.21".default = (f.phf_shared."0.7.21".default or true); + siphasher."${deps.phf_shared."0.7.21".siphasher}".default = true; + unicase."${deps.phf_shared."0.7.21".unicase}".default = true; + }) [ + (features_.siphasher."${deps."phf_shared"."0.7.21"."siphasher"}" deps) + (features_.unicase."${deps."phf_shared"."0.7.21"."unicase"}" deps) + ]; + + +# end +# pkg-config-0.3.9 + + crates.pkg_config."0.3.9" = deps: { features?(features_.pkg_config."0.3.9" deps {}) }: buildRustCrate { + crateName = "pkg-config"; + version = "0.3.9"; + description = "A library to run the pkg-config system tool at build time in order to be used in\nCargo build scripts.\n"; + authors = [ "Alex Crichton " ]; + sha256 = "06k8fxgrsrxj8mjpjcq1n7mn2p1shpxif4zg9y5h09c7vy20s146"; + }; + features_.pkg_config."0.3.9" = deps: f: updateFeatures f (rec { + pkg_config."0.3.9".default = (f.pkg_config."0.3.9".default or true); + }) []; + + +# end +# quote-0.3.15 + + crates.quote."0.3.15" = deps: { features?(features_.quote."0.3.15" deps {}) }: buildRustCrate { + crateName = "quote"; + version = "0.3.15"; + description = "Quasi-quoting macro quote!(...)"; + authors = [ "David Tolnay " ]; + sha256 = "09il61jv4kd1360spaj46qwyl21fv1qz18fsv2jra8wdnlgl5jsg"; + }; + features_.quote."0.3.15" = deps: f: updateFeatures f (rec { + quote."0.3.15".default = (f.quote."0.3.15".default or true); + }) []; + + +# end +# rand-0.3.18 + + crates.rand."0.3.18" = deps: { features?(features_.rand."0.3.18" deps {}) }: buildRustCrate { + crateName = "rand"; + version = "0.3.18"; + description = "Random number generators and other randomness functionality.\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "15d7c3myn968dzjs0a2pgv58hzdavxnq6swgj032lw2v966ir4xv"; + dependencies = mapFeatures features ([ + (crates."libc"."${deps."rand"."0.3.18"."libc"}" deps) + ]) + ++ (if kernel == "fuchsia" then mapFeatures features ([ + (crates."fuchsia_zircon"."${deps."rand"."0.3.18"."fuchsia_zircon"}" deps) + ]) else []); + features = mkFeatures (features."rand"."0.3.18" or {}); + }; + features_.rand."0.3.18" = deps: f: updateFeatures f (rec { + fuchsia_zircon."${deps.rand."0.3.18".fuchsia_zircon}".default = true; + libc."${deps.rand."0.3.18".libc}".default = true; + rand = fold recursiveUpdate {} [ + { "0.3.18"."i128_support" = + (f.rand."0.3.18"."i128_support" or false) || + (f.rand."0.3.18".nightly or false) || + (rand."0.3.18"."nightly" or false); } + { "0.3.18".default = (f.rand."0.3.18".default or true); } + ]; + }) [ + (features_.libc."${deps."rand"."0.3.18"."libc"}" deps) + (features_.fuchsia_zircon."${deps."rand"."0.3.18"."fuchsia_zircon"}" deps) + ]; + + +# end +# rand-0.5.5 + + crates.rand."0.5.5" = deps: { features?(features_.rand."0.5.5" deps {}) }: buildRustCrate { + crateName = "rand"; + version = "0.5.5"; + description = "Random number generators and other randomness functionality.\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "0d7pnsh57qxhz1ghrzk113ddkn13kf2g758ffnbxq4nhwjfzhlc9"; + dependencies = mapFeatures features ([ + (crates."rand_core"."${deps."rand"."0.5.5"."rand_core"}" deps) + ]) + ++ (if kernel == "cloudabi" then mapFeatures features ([ + ] + ++ (if features.rand."0.5.5".cloudabi or false then [ (crates.cloudabi."${deps."rand"."0.5.5".cloudabi}" deps) ] else [])) else []) + ++ (if kernel == "fuchsia" then mapFeatures features ([ + ] + ++ (if features.rand."0.5.5".fuchsia-zircon or false then [ (crates.fuchsia_zircon."${deps."rand"."0.5.5".fuchsia_zircon}" deps) ] else [])) else []) + ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + ] + ++ (if features.rand."0.5.5".libc or false then [ (crates.libc."${deps."rand"."0.5.5".libc}" deps) ] else [])) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + ] + ++ (if features.rand."0.5.5".winapi or false then [ (crates.winapi."${deps."rand"."0.5.5".winapi}" deps) ] else [])) else []) + ++ (if kernel == "wasm32-unknown-unknown" then mapFeatures features ([ +]) else []); + features = mkFeatures (features."rand"."0.5.5" or {}); + }; + features_.rand."0.5.5" = deps: f: updateFeatures f (rec { + cloudabi."${deps.rand."0.5.5".cloudabi}".default = true; + fuchsia_zircon."${deps.rand."0.5.5".fuchsia_zircon}".default = true; + libc."${deps.rand."0.5.5".libc}".default = true; + rand = fold recursiveUpdate {} [ + { "0.5.5"."alloc" = + (f.rand."0.5.5"."alloc" or false) || + (f.rand."0.5.5".std or false) || + (rand."0.5.5"."std" or false); } + { "0.5.5"."cloudabi" = + (f.rand."0.5.5"."cloudabi" or false) || + (f.rand."0.5.5".std or false) || + (rand."0.5.5"."std" or false); } + { "0.5.5"."fuchsia-zircon" = + (f.rand."0.5.5"."fuchsia-zircon" or false) || + (f.rand."0.5.5".std or false) || + (rand."0.5.5"."std" or false); } + { "0.5.5"."i128_support" = + (f.rand."0.5.5"."i128_support" or false) || + (f.rand."0.5.5".nightly or false) || + (rand."0.5.5"."nightly" or false); } + { "0.5.5"."libc" = + (f.rand."0.5.5"."libc" or false) || + (f.rand."0.5.5".std or false) || + (rand."0.5.5"."std" or false); } + { "0.5.5"."serde" = + (f.rand."0.5.5"."serde" or false) || + (f.rand."0.5.5".serde1 or false) || + (rand."0.5.5"."serde1" or false); } + { "0.5.5"."serde_derive" = + (f.rand."0.5.5"."serde_derive" or false) || + (f.rand."0.5.5".serde1 or false) || + (rand."0.5.5"."serde1" or false); } + { "0.5.5"."std" = + (f.rand."0.5.5"."std" or false) || + (f.rand."0.5.5".default or false) || + (rand."0.5.5"."default" or false); } + { "0.5.5"."winapi" = + (f.rand."0.5.5"."winapi" or false) || + (f.rand."0.5.5".std or false) || + (rand."0.5.5"."std" or false); } + { "0.5.5".default = (f.rand."0.5.5".default or true); } + ]; + rand_core = fold recursiveUpdate {} [ + { "${deps.rand."0.5.5".rand_core}"."alloc" = + (f.rand_core."${deps.rand."0.5.5".rand_core}"."alloc" or false) || + (rand."0.5.5"."alloc" or false) || + (f."rand"."0.5.5"."alloc" or false); } + { "${deps.rand."0.5.5".rand_core}"."serde1" = + (f.rand_core."${deps.rand."0.5.5".rand_core}"."serde1" or false) || + (rand."0.5.5"."serde1" or false) || + (f."rand"."0.5.5"."serde1" or false); } + { "${deps.rand."0.5.5".rand_core}"."std" = + (f.rand_core."${deps.rand."0.5.5".rand_core}"."std" or false) || + (rand."0.5.5"."std" or false) || + (f."rand"."0.5.5"."std" or false); } + { "${deps.rand."0.5.5".rand_core}".default = (f.rand_core."${deps.rand."0.5.5".rand_core}".default or false); } + ]; + winapi = fold recursiveUpdate {} [ + { "${deps.rand."0.5.5".winapi}"."minwindef" = true; } + { "${deps.rand."0.5.5".winapi}"."ntsecapi" = true; } + { "${deps.rand."0.5.5".winapi}"."profileapi" = true; } + { "${deps.rand."0.5.5".winapi}"."winnt" = true; } + { "${deps.rand."0.5.5".winapi}".default = true; } + ]; + }) [ + (features_.rand_core."${deps."rand"."0.5.5"."rand_core"}" deps) + (features_.cloudabi."${deps."rand"."0.5.5"."cloudabi"}" deps) + (features_.fuchsia_zircon."${deps."rand"."0.5.5"."fuchsia_zircon"}" deps) + (features_.libc."${deps."rand"."0.5.5"."libc"}" deps) + (features_.winapi."${deps."rand"."0.5.5"."winapi"}" deps) + ]; + + +# end +# rand-0.6.1 + + crates.rand."0.6.1" = deps: { features?(features_.rand."0.6.1" deps {}) }: buildRustCrate { + crateName = "rand"; + version = "0.6.1"; + description = "Random number generators and other randomness functionality.\n"; + authors = [ "The Rand Project Developers" "The Rust Project Developers" ]; + sha256 = "123s3w165iiifmf475lisqkd0kbr7nwnn3k4b1zg2cwap5v9m9bz"; + build = "build.rs"; + dependencies = mapFeatures features ([ + (crates."rand_chacha"."${deps."rand"."0.6.1"."rand_chacha"}" deps) + (crates."rand_core"."${deps."rand"."0.6.1"."rand_core"}" deps) + (crates."rand_hc"."${deps."rand"."0.6.1"."rand_hc"}" deps) + (crates."rand_isaac"."${deps."rand"."0.6.1"."rand_isaac"}" deps) + (crates."rand_pcg"."${deps."rand"."0.6.1"."rand_pcg"}" deps) + (crates."rand_xorshift"."${deps."rand"."0.6.1"."rand_xorshift"}" deps) + ]) + ++ (if kernel == "cloudabi" then mapFeatures features ([ + ] + ++ (if features.rand."0.6.1".cloudabi or false then [ (crates.cloudabi."${deps."rand"."0.6.1".cloudabi}" deps) ] else [])) else []) + ++ (if kernel == "fuchsia" then mapFeatures features ([ + ] + ++ (if features.rand."0.6.1".fuchsia-zircon or false then [ (crates.fuchsia_zircon."${deps."rand"."0.6.1".fuchsia_zircon}" deps) ] else [])) else []) + ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + ] + ++ (if features.rand."0.6.1".libc or false then [ (crates.libc."${deps."rand"."0.6.1".libc}" deps) ] else [])) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + ] + ++ (if features.rand."0.6.1".winapi or false then [ (crates.winapi."${deps."rand"."0.6.1".winapi}" deps) ] else [])) else []) + ++ (if kernel == "wasm32-unknown-unknown" then mapFeatures features ([ +]) else []); + + buildDependencies = mapFeatures features ([ + (crates."rustc_version"."${deps."rand"."0.6.1"."rustc_version"}" deps) + ]); + features = mkFeatures (features."rand"."0.6.1" or {}); + }; + features_.rand."0.6.1" = deps: f: updateFeatures f (rec { + cloudabi."${deps.rand."0.6.1".cloudabi}".default = true; + fuchsia_zircon."${deps.rand."0.6.1".fuchsia_zircon}".default = true; + libc."${deps.rand."0.6.1".libc}".default = (f.libc."${deps.rand."0.6.1".libc}".default or false); + rand = fold recursiveUpdate {} [ + { "0.6.1"."alloc" = + (f.rand."0.6.1"."alloc" or false) || + (f.rand."0.6.1".std or false) || + (rand."0.6.1"."std" or false); } + { "0.6.1"."cloudabi" = + (f.rand."0.6.1"."cloudabi" or false) || + (f.rand."0.6.1".std or false) || + (rand."0.6.1"."std" or false); } + { "0.6.1"."fuchsia-zircon" = + (f.rand."0.6.1"."fuchsia-zircon" or false) || + (f.rand."0.6.1".std or false) || + (rand."0.6.1"."std" or false); } + { "0.6.1"."libc" = + (f.rand."0.6.1"."libc" or false) || + (f.rand."0.6.1".std or false) || + (rand."0.6.1"."std" or false); } + { "0.6.1"."packed_simd" = + (f.rand."0.6.1"."packed_simd" or false) || + (f.rand."0.6.1".simd_support or false) || + (rand."0.6.1"."simd_support" or false); } + { "0.6.1"."simd_support" = + (f.rand."0.6.1"."simd_support" or false) || + (f.rand."0.6.1".nightly or false) || + (rand."0.6.1"."nightly" or false); } + { "0.6.1"."std" = + (f.rand."0.6.1"."std" or false) || + (f.rand."0.6.1".default or false) || + (rand."0.6.1"."default" or false); } + { "0.6.1"."winapi" = + (f.rand."0.6.1"."winapi" or false) || + (f.rand."0.6.1".std or false) || + (rand."0.6.1"."std" or false); } + { "0.6.1".default = (f.rand."0.6.1".default or true); } + ]; + rand_chacha."${deps.rand."0.6.1".rand_chacha}".default = true; + rand_core = fold recursiveUpdate {} [ + { "${deps.rand."0.6.1".rand_core}"."alloc" = + (f.rand_core."${deps.rand."0.6.1".rand_core}"."alloc" or false) || + (rand."0.6.1"."alloc" or false) || + (f."rand"."0.6.1"."alloc" or false); } + { "${deps.rand."0.6.1".rand_core}"."serde1" = + (f.rand_core."${deps.rand."0.6.1".rand_core}"."serde1" or false) || + (rand."0.6.1"."serde1" or false) || + (f."rand"."0.6.1"."serde1" or false); } + { "${deps.rand."0.6.1".rand_core}"."std" = + (f.rand_core."${deps.rand."0.6.1".rand_core}"."std" or false) || + (rand."0.6.1"."std" or false) || + (f."rand"."0.6.1"."std" or false); } + { "${deps.rand."0.6.1".rand_core}".default = (f.rand_core."${deps.rand."0.6.1".rand_core}".default or false); } + ]; + rand_hc."${deps.rand."0.6.1".rand_hc}".default = true; + rand_isaac = fold recursiveUpdate {} [ + { "${deps.rand."0.6.1".rand_isaac}"."serde1" = + (f.rand_isaac."${deps.rand."0.6.1".rand_isaac}"."serde1" or false) || + (rand."0.6.1"."serde1" or false) || + (f."rand"."0.6.1"."serde1" or false); } + { "${deps.rand."0.6.1".rand_isaac}".default = true; } + ]; + rand_pcg."${deps.rand."0.6.1".rand_pcg}".default = true; + rand_xorshift = fold recursiveUpdate {} [ + { "${deps.rand."0.6.1".rand_xorshift}"."serde1" = + (f.rand_xorshift."${deps.rand."0.6.1".rand_xorshift}"."serde1" or false) || + (rand."0.6.1"."serde1" or false) || + (f."rand"."0.6.1"."serde1" or false); } + { "${deps.rand."0.6.1".rand_xorshift}".default = true; } + ]; + rustc_version."${deps.rand."0.6.1".rustc_version}".default = true; + winapi = fold recursiveUpdate {} [ + { "${deps.rand."0.6.1".winapi}"."minwindef" = true; } + { "${deps.rand."0.6.1".winapi}"."ntsecapi" = true; } + { "${deps.rand."0.6.1".winapi}"."profileapi" = true; } + { "${deps.rand."0.6.1".winapi}"."winnt" = true; } + { "${deps.rand."0.6.1".winapi}".default = true; } + ]; + }) [ + (features_.rand_chacha."${deps."rand"."0.6.1"."rand_chacha"}" deps) + (features_.rand_core."${deps."rand"."0.6.1"."rand_core"}" deps) + (features_.rand_hc."${deps."rand"."0.6.1"."rand_hc"}" deps) + (features_.rand_isaac."${deps."rand"."0.6.1"."rand_isaac"}" deps) + (features_.rand_pcg."${deps."rand"."0.6.1"."rand_pcg"}" deps) + (features_.rand_xorshift."${deps."rand"."0.6.1"."rand_xorshift"}" deps) + (features_.rustc_version."${deps."rand"."0.6.1"."rustc_version"}" deps) + (features_.cloudabi."${deps."rand"."0.6.1"."cloudabi"}" deps) + (features_.fuchsia_zircon."${deps."rand"."0.6.1"."fuchsia_zircon"}" deps) + (features_.libc."${deps."rand"."0.6.1"."libc"}" deps) + (features_.winapi."${deps."rand"."0.6.1"."winapi"}" deps) + ]; + + +# end +# rand_chacha-0.1.0 + + crates.rand_chacha."0.1.0" = deps: { features?(features_.rand_chacha."0.1.0" deps {}) }: buildRustCrate { + crateName = "rand_chacha"; + version = "0.1.0"; + description = "ChaCha random number generator\n"; + authors = [ "The Rand Project Developers" "The Rust Project Developers" ]; + sha256 = "0q5pq34cqv1mnibgzd1cmx9q49vkr2lvalkkvizmlld217jmlqc6"; + build = "build.rs"; + dependencies = mapFeatures features ([ + (crates."rand_core"."${deps."rand_chacha"."0.1.0"."rand_core"}" deps) + ]); + + buildDependencies = mapFeatures features ([ + (crates."rustc_version"."${deps."rand_chacha"."0.1.0"."rustc_version"}" deps) + ]); + }; + features_.rand_chacha."0.1.0" = deps: f: updateFeatures f (rec { + rand_chacha."0.1.0".default = (f.rand_chacha."0.1.0".default or true); + rand_core."${deps.rand_chacha."0.1.0".rand_core}".default = (f.rand_core."${deps.rand_chacha."0.1.0".rand_core}".default or false); + rustc_version."${deps.rand_chacha."0.1.0".rustc_version}".default = true; + }) [ + (features_.rand_core."${deps."rand_chacha"."0.1.0"."rand_core"}" deps) + (features_.rustc_version."${deps."rand_chacha"."0.1.0"."rustc_version"}" deps) + ]; + + +# end +# rand_core-0.2.2 + + crates.rand_core."0.2.2" = deps: { features?(features_.rand_core."0.2.2" deps {}) }: buildRustCrate { + crateName = "rand_core"; + version = "0.2.2"; + description = "Core random number generator traits and tools for implementation.\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "1cxnaxmsirz2wxsajsjkd1wk6lqfqbcprqkha4bq3didznrl22sc"; + dependencies = mapFeatures features ([ + (crates."rand_core"."${deps."rand_core"."0.2.2"."rand_core"}" deps) + ]); + features = mkFeatures (features."rand_core"."0.2.2" or {}); + }; + features_.rand_core."0.2.2" = deps: f: updateFeatures f (rec { + rand_core = fold recursiveUpdate {} [ + { "${deps.rand_core."0.2.2".rand_core}"."alloc" = + (f.rand_core."${deps.rand_core."0.2.2".rand_core}"."alloc" or false) || + (rand_core."0.2.2"."alloc" or false) || + (f."rand_core"."0.2.2"."alloc" or false); } + { "${deps.rand_core."0.2.2".rand_core}"."serde1" = + (f.rand_core."${deps.rand_core."0.2.2".rand_core}"."serde1" or false) || + (rand_core."0.2.2"."serde1" or false) || + (f."rand_core"."0.2.2"."serde1" or false); } + { "${deps.rand_core."0.2.2".rand_core}"."std" = + (f.rand_core."${deps.rand_core."0.2.2".rand_core}"."std" or false) || + (rand_core."0.2.2"."std" or false) || + (f."rand_core"."0.2.2"."std" or false); } + { "${deps.rand_core."0.2.2".rand_core}".default = (f.rand_core."${deps.rand_core."0.2.2".rand_core}".default or false); } + { "0.2.2".default = (f.rand_core."0.2.2".default or true); } + ]; + }) [ + (features_.rand_core."${deps."rand_core"."0.2.2"."rand_core"}" deps) + ]; + + +# end +# rand_core-0.3.0 + + crates.rand_core."0.3.0" = deps: { features?(features_.rand_core."0.3.0" deps {}) }: buildRustCrate { + crateName = "rand_core"; + version = "0.3.0"; + description = "Core random number generator traits and tools for implementation.\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "1vafw316apjys9va3j987s02djhqp7y21v671v3ix0p5j9bjq339"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."rand_core"."0.3.0" or {}); + }; + features_.rand_core."0.3.0" = deps: f: updateFeatures f (rec { + rand_core = fold recursiveUpdate {} [ + { "0.3.0"."alloc" = + (f.rand_core."0.3.0"."alloc" or false) || + (f.rand_core."0.3.0".std or false) || + (rand_core."0.3.0"."std" or false); } + { "0.3.0"."serde" = + (f.rand_core."0.3.0"."serde" or false) || + (f.rand_core."0.3.0".serde1 or false) || + (rand_core."0.3.0"."serde1" or false); } + { "0.3.0"."serde_derive" = + (f.rand_core."0.3.0"."serde_derive" or false) || + (f.rand_core."0.3.0".serde1 or false) || + (rand_core."0.3.0"."serde1" or false); } + { "0.3.0"."std" = + (f.rand_core."0.3.0"."std" or false) || + (f.rand_core."0.3.0".default or false) || + (rand_core."0.3.0"."default" or false); } + { "0.3.0".default = (f.rand_core."0.3.0".default or true); } + ]; + }) []; + + +# end +# rand_hc-0.1.0 + + crates.rand_hc."0.1.0" = deps: { features?(features_.rand_hc."0.1.0" deps {}) }: buildRustCrate { + crateName = "rand_hc"; + version = "0.1.0"; + description = "HC128 random number generator\n"; + authors = [ "The Rand Project Developers" ]; + sha256 = "05agb75j87yp7y1zk8yf7bpm66hc0673r3dlypn0kazynr6fdgkz"; + dependencies = mapFeatures features ([ + (crates."rand_core"."${deps."rand_hc"."0.1.0"."rand_core"}" deps) + ]); + }; + features_.rand_hc."0.1.0" = deps: f: updateFeatures f (rec { + rand_core."${deps.rand_hc."0.1.0".rand_core}".default = (f.rand_core."${deps.rand_hc."0.1.0".rand_core}".default or false); + rand_hc."0.1.0".default = (f.rand_hc."0.1.0".default or true); + }) [ + (features_.rand_core."${deps."rand_hc"."0.1.0"."rand_core"}" deps) + ]; + + +# end +# rand_isaac-0.1.1 + + crates.rand_isaac."0.1.1" = deps: { features?(features_.rand_isaac."0.1.1" deps {}) }: buildRustCrate { + crateName = "rand_isaac"; + version = "0.1.1"; + description = "ISAAC random number generator\n"; + authors = [ "The Rand Project Developers" "The Rust Project Developers" ]; + sha256 = "10hhdh5b5sa03s6b63y9bafm956jwilx41s71jbrzl63ccx8lxdq"; + dependencies = mapFeatures features ([ + (crates."rand_core"."${deps."rand_isaac"."0.1.1"."rand_core"}" deps) + ]); + features = mkFeatures (features."rand_isaac"."0.1.1" or {}); + }; + features_.rand_isaac."0.1.1" = deps: f: updateFeatures f (rec { + rand_core = fold recursiveUpdate {} [ + { "${deps.rand_isaac."0.1.1".rand_core}"."serde1" = + (f.rand_core."${deps.rand_isaac."0.1.1".rand_core}"."serde1" or false) || + (rand_isaac."0.1.1"."serde1" or false) || + (f."rand_isaac"."0.1.1"."serde1" or false); } + { "${deps.rand_isaac."0.1.1".rand_core}".default = (f.rand_core."${deps.rand_isaac."0.1.1".rand_core}".default or false); } + ]; + rand_isaac = fold recursiveUpdate {} [ + { "0.1.1"."serde" = + (f.rand_isaac."0.1.1"."serde" or false) || + (f.rand_isaac."0.1.1".serde1 or false) || + (rand_isaac."0.1.1"."serde1" or false); } + { "0.1.1"."serde_derive" = + (f.rand_isaac."0.1.1"."serde_derive" or false) || + (f.rand_isaac."0.1.1".serde1 or false) || + (rand_isaac."0.1.1"."serde1" or false); } + { "0.1.1".default = (f.rand_isaac."0.1.1".default or true); } + ]; + }) [ + (features_.rand_core."${deps."rand_isaac"."0.1.1"."rand_core"}" deps) + ]; + + +# end +# rand_pcg-0.1.1 + + crates.rand_pcg."0.1.1" = deps: { features?(features_.rand_pcg."0.1.1" deps {}) }: buildRustCrate { + crateName = "rand_pcg"; + version = "0.1.1"; + description = "Selected PCG random number generators\n"; + authors = [ "The Rand Project Developers" ]; + sha256 = "0x6pzldj0c8c7gmr67ni5i7w2f7n7idvs3ckx0fc3wkhwl7wrbza"; + build = "build.rs"; + dependencies = mapFeatures features ([ + (crates."rand_core"."${deps."rand_pcg"."0.1.1"."rand_core"}" deps) + ]); + + buildDependencies = mapFeatures features ([ + (crates."rustc_version"."${deps."rand_pcg"."0.1.1"."rustc_version"}" deps) + ]); + features = mkFeatures (features."rand_pcg"."0.1.1" or {}); + }; + features_.rand_pcg."0.1.1" = deps: f: updateFeatures f (rec { + rand_core."${deps.rand_pcg."0.1.1".rand_core}".default = (f.rand_core."${deps.rand_pcg."0.1.1".rand_core}".default or false); + rand_pcg = fold recursiveUpdate {} [ + { "0.1.1"."serde" = + (f.rand_pcg."0.1.1"."serde" or false) || + (f.rand_pcg."0.1.1".serde1 or false) || + (rand_pcg."0.1.1"."serde1" or false); } + { "0.1.1"."serde_derive" = + (f.rand_pcg."0.1.1"."serde_derive" or false) || + (f.rand_pcg."0.1.1".serde1 or false) || + (rand_pcg."0.1.1"."serde1" or false); } + { "0.1.1".default = (f.rand_pcg."0.1.1".default or true); } + ]; + rustc_version."${deps.rand_pcg."0.1.1".rustc_version}".default = true; + }) [ + (features_.rand_core."${deps."rand_pcg"."0.1.1"."rand_core"}" deps) + (features_.rustc_version."${deps."rand_pcg"."0.1.1"."rustc_version"}" deps) + ]; + + +# end +# rand_xorshift-0.1.0 + + crates.rand_xorshift."0.1.0" = deps: { features?(features_.rand_xorshift."0.1.0" deps {}) }: buildRustCrate { + crateName = "rand_xorshift"; + version = "0.1.0"; + description = "Xorshift random number generator\n"; + authors = [ "The Rand Project Developers" "The Rust Project Developers" ]; + sha256 = "063vxb678ki8gq4rx9w7yg5f9i29ig1zwykl67mfsxn0kxlkv2ih"; + dependencies = mapFeatures features ([ + (crates."rand_core"."${deps."rand_xorshift"."0.1.0"."rand_core"}" deps) + ]); + features = mkFeatures (features."rand_xorshift"."0.1.0" or {}); + }; + features_.rand_xorshift."0.1.0" = deps: f: updateFeatures f (rec { + rand_core."${deps.rand_xorshift."0.1.0".rand_core}".default = (f.rand_core."${deps.rand_xorshift."0.1.0".rand_core}".default or false); + rand_xorshift = fold recursiveUpdate {} [ + { "0.1.0"."serde" = + (f.rand_xorshift."0.1.0"."serde" or false) || + (f.rand_xorshift."0.1.0".serde1 or false) || + (rand_xorshift."0.1.0"."serde1" or false); } + { "0.1.0"."serde_derive" = + (f.rand_xorshift."0.1.0"."serde_derive" or false) || + (f.rand_xorshift."0.1.0".serde1 or false) || + (rand_xorshift."0.1.0"."serde1" or false); } + { "0.1.0".default = (f.rand_xorshift."0.1.0".default or true); } + ]; + }) [ + (features_.rand_core."${deps."rand_xorshift"."0.1.0"."rand_core"}" deps) + ]; + + +# end +# redox_syscall-0.1.31 + + crates.redox_syscall."0.1.31" = deps: { features?(features_.redox_syscall."0.1.31" deps {}) }: buildRustCrate { + crateName = "redox_syscall"; + version = "0.1.31"; + description = "A Rust library to access raw Redox system calls"; + authors = [ "Jeremy Soller " ]; + sha256 = "0kipd9qslzin4fgj4jrxv6yz5l3l71gnbd7fq1jhk2j7f2sq33j4"; + libName = "syscall"; + }; + features_.redox_syscall."0.1.31" = deps: f: updateFeatures f (rec { + redox_syscall."0.1.31".default = (f.redox_syscall."0.1.31".default or true); + }) []; + + +# end +# redox_termios-0.1.1 + + crates.redox_termios."0.1.1" = deps: { features?(features_.redox_termios."0.1.1" deps {}) }: buildRustCrate { + crateName = "redox_termios"; + version = "0.1.1"; + description = "A Rust library to access Redox termios functions"; + authors = [ "Jeremy Soller " ]; + sha256 = "04s6yyzjca552hdaqlvqhp3vw0zqbc304md5czyd3axh56iry8wh"; + libPath = "src/lib.rs"; + dependencies = mapFeatures features ([ + (crates."redox_syscall"."${deps."redox_termios"."0.1.1"."redox_syscall"}" deps) + ]); + }; + features_.redox_termios."0.1.1" = deps: f: updateFeatures f (rec { + redox_syscall."${deps.redox_termios."0.1.1".redox_syscall}".default = true; + redox_termios."0.1.1".default = (f.redox_termios."0.1.1".default or true); + }) [ + (features_.redox_syscall."${deps."redox_termios"."0.1.1"."redox_syscall"}" deps) + ]; + + +# end +# regex-0.1.80 + + crates.regex."0.1.80" = deps: { features?(features_.regex."0.1.80" deps {}) }: buildRustCrate { + crateName = "regex"; + version = "0.1.80"; + description = "An implementation of regular expressions for Rust. This implementation uses\nfinite automata and guarantees linear time matching on all inputs.\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "0y4s8ghhx6sgzb35irwivm3w0l2hhqhmdcd2px9hirqnkagal9l6"; + dependencies = mapFeatures features ([ + (crates."aho_corasick"."${deps."regex"."0.1.80"."aho_corasick"}" deps) + (crates."memchr"."${deps."regex"."0.1.80"."memchr"}" deps) + (crates."regex_syntax"."${deps."regex"."0.1.80"."regex_syntax"}" deps) + (crates."thread_local"."${deps."regex"."0.1.80"."thread_local"}" deps) + (crates."utf8_ranges"."${deps."regex"."0.1.80"."utf8_ranges"}" deps) + ]); + features = mkFeatures (features."regex"."0.1.80" or {}); + }; + features_.regex."0.1.80" = deps: f: updateFeatures f (rec { + aho_corasick."${deps.regex."0.1.80".aho_corasick}".default = true; + memchr."${deps.regex."0.1.80".memchr}".default = true; + regex = fold recursiveUpdate {} [ + { "0.1.80"."simd" = + (f.regex."0.1.80"."simd" or false) || + (f.regex."0.1.80".simd-accel or false) || + (regex."0.1.80"."simd-accel" or false); } + { "0.1.80".default = (f.regex."0.1.80".default or true); } + ]; + regex_syntax."${deps.regex."0.1.80".regex_syntax}".default = true; + thread_local."${deps.regex."0.1.80".thread_local}".default = true; + utf8_ranges."${deps.regex."0.1.80".utf8_ranges}".default = true; + }) [ + (features_.aho_corasick."${deps."regex"."0.1.80"."aho_corasick"}" deps) + (features_.memchr."${deps."regex"."0.1.80"."memchr"}" deps) + (features_.regex_syntax."${deps."regex"."0.1.80"."regex_syntax"}" deps) + (features_.thread_local."${deps."regex"."0.1.80"."thread_local"}" deps) + (features_.utf8_ranges."${deps."regex"."0.1.80"."utf8_ranges"}" deps) + ]; + + +# end +# regex-syntax-0.3.9 + + crates.regex_syntax."0.3.9" = deps: { features?(features_.regex_syntax."0.3.9" deps {}) }: buildRustCrate { + crateName = "regex-syntax"; + version = "0.3.9"; + description = "A regular expression parser."; + authors = [ "The Rust Project Developers" ]; + sha256 = "1mzhphkbwppwd1zam2jkgjk550cqgf6506i87bw2yzrvcsraiw7m"; + }; + features_.regex_syntax."0.3.9" = deps: f: updateFeatures f (rec { + regex_syntax."0.3.9".default = (f.regex_syntax."0.3.9".default or true); + }) []; + + +# end +# remove_dir_all-0.5.1 + + crates.remove_dir_all."0.5.1" = deps: { features?(features_.remove_dir_all."0.5.1" deps {}) }: buildRustCrate { + crateName = "remove_dir_all"; + version = "0.5.1"; + description = "A safe, reliable implementation of remove_dir_all for Windows"; + authors = [ "Aaronepower " ]; + sha256 = "1chx3yvfbj46xjz4bzsvps208l46hfbcy0sm98gpiya454n4rrl7"; + dependencies = (if kernel == "windows" then mapFeatures features ([ + (crates."winapi"."${deps."remove_dir_all"."0.5.1"."winapi"}" deps) + ]) else []); + }; + features_.remove_dir_all."0.5.1" = deps: f: updateFeatures f (rec { + remove_dir_all."0.5.1".default = (f.remove_dir_all."0.5.1".default or true); + winapi = fold recursiveUpdate {} [ + { "${deps.remove_dir_all."0.5.1".winapi}"."errhandlingapi" = true; } + { "${deps.remove_dir_all."0.5.1".winapi}"."fileapi" = true; } + { "${deps.remove_dir_all."0.5.1".winapi}"."std" = true; } + { "${deps.remove_dir_all."0.5.1".winapi}"."winbase" = true; } + { "${deps.remove_dir_all."0.5.1".winapi}"."winerror" = true; } + { "${deps.remove_dir_all."0.5.1".winapi}".default = true; } + ]; + }) [ + (features_.winapi."${deps."remove_dir_all"."0.5.1"."winapi"}" deps) + ]; + + +# end +# reqwest-0.9.5 + + crates.reqwest."0.9.5" = deps: { features?(features_.reqwest."0.9.5" deps {}) }: buildRustCrate { + crateName = "reqwest"; + version = "0.9.5"; + description = "higher level HTTP client library"; + authors = [ "Sean McArthur " ]; + sha256 = "1y0fq8ifhbgn6bfvjq831svirqszszj7f73ykbd28inwc0xiv2ix"; + dependencies = mapFeatures features ([ + (crates."base64"."${deps."reqwest"."0.9.5"."base64"}" deps) + (crates."bytes"."${deps."reqwest"."0.9.5"."bytes"}" deps) + (crates."encoding_rs"."${deps."reqwest"."0.9.5"."encoding_rs"}" deps) + (crates."futures"."${deps."reqwest"."0.9.5"."futures"}" deps) + (crates."http"."${deps."reqwest"."0.9.5"."http"}" deps) + (crates."hyper"."${deps."reqwest"."0.9.5"."hyper"}" deps) + (crates."libflate"."${deps."reqwest"."0.9.5"."libflate"}" deps) + (crates."log"."${deps."reqwest"."0.9.5"."log"}" deps) + (crates."mime"."${deps."reqwest"."0.9.5"."mime"}" deps) + (crates."mime_guess"."${deps."reqwest"."0.9.5"."mime_guess"}" deps) + (crates."serde"."${deps."reqwest"."0.9.5"."serde"}" deps) + (crates."serde_json"."${deps."reqwest"."0.9.5"."serde_json"}" deps) + (crates."serde_urlencoded"."${deps."reqwest"."0.9.5"."serde_urlencoded"}" deps) + (crates."tokio"."${deps."reqwest"."0.9.5"."tokio"}" deps) + (crates."tokio_io"."${deps."reqwest"."0.9.5"."tokio_io"}" deps) + (crates."url"."${deps."reqwest"."0.9.5"."url"}" deps) + (crates."uuid"."${deps."reqwest"."0.9.5"."uuid"}" deps) + ] + ++ (if features.reqwest."0.9.5".hyper-tls or false then [ (crates.hyper_tls."${deps."reqwest"."0.9.5".hyper_tls}" deps) ] else []) + ++ (if features.reqwest."0.9.5".native-tls or false then [ (crates.native_tls."${deps."reqwest"."0.9.5".native_tls}" deps) ] else [])); + features = mkFeatures (features."reqwest"."0.9.5" or {}); + }; + features_.reqwest."0.9.5" = deps: f: updateFeatures f (rec { + base64."${deps.reqwest."0.9.5".base64}".default = true; + bytes."${deps.reqwest."0.9.5".bytes}".default = true; + encoding_rs."${deps.reqwest."0.9.5".encoding_rs}".default = true; + futures."${deps.reqwest."0.9.5".futures}".default = true; + http."${deps.reqwest."0.9.5".http}".default = true; + hyper."${deps.reqwest."0.9.5".hyper}".default = true; + hyper_tls."${deps.reqwest."0.9.5".hyper_tls}".default = true; + libflate."${deps.reqwest."0.9.5".libflate}".default = true; + log."${deps.reqwest."0.9.5".log}".default = true; + mime."${deps.reqwest."0.9.5".mime}".default = true; + mime_guess."${deps.reqwest."0.9.5".mime_guess}".default = true; + native_tls."${deps.reqwest."0.9.5".native_tls}".default = true; + reqwest = fold recursiveUpdate {} [ + { "0.9.5"."default-tls" = + (f.reqwest."0.9.5"."default-tls" or false) || + (f.reqwest."0.9.5".default or false) || + (reqwest."0.9.5"."default" or false); } + { "0.9.5"."hyper-old-types" = + (f.reqwest."0.9.5"."hyper-old-types" or false) || + (f.reqwest."0.9.5".hyper-011 or false) || + (reqwest."0.9.5"."hyper-011" or false); } + { "0.9.5"."hyper-tls" = + (f.reqwest."0.9.5"."hyper-tls" or false) || + (f.reqwest."0.9.5".default-tls or false) || + (reqwest."0.9.5"."default-tls" or false); } + { "0.9.5"."native-tls" = + (f.reqwest."0.9.5"."native-tls" or false) || + (f.reqwest."0.9.5".default-tls or false) || + (reqwest."0.9.5"."default-tls" or false); } + { "0.9.5".default = (f.reqwest."0.9.5".default or true); } + ]; + serde."${deps.reqwest."0.9.5".serde}".default = true; + serde_json."${deps.reqwest."0.9.5".serde_json}".default = true; + serde_urlencoded."${deps.reqwest."0.9.5".serde_urlencoded}".default = true; + tokio."${deps.reqwest."0.9.5".tokio}".default = true; + tokio_io."${deps.reqwest."0.9.5".tokio_io}".default = true; + url."${deps.reqwest."0.9.5".url}".default = true; + uuid = fold recursiveUpdate {} [ + { "${deps.reqwest."0.9.5".uuid}"."v4" = true; } + { "${deps.reqwest."0.9.5".uuid}".default = true; } + ]; + }) [ + (features_.base64."${deps."reqwest"."0.9.5"."base64"}" deps) + (features_.bytes."${deps."reqwest"."0.9.5"."bytes"}" deps) + (features_.encoding_rs."${deps."reqwest"."0.9.5"."encoding_rs"}" deps) + (features_.futures."${deps."reqwest"."0.9.5"."futures"}" deps) + (features_.http."${deps."reqwest"."0.9.5"."http"}" deps) + (features_.hyper."${deps."reqwest"."0.9.5"."hyper"}" deps) + (features_.hyper_tls."${deps."reqwest"."0.9.5"."hyper_tls"}" deps) + (features_.libflate."${deps."reqwest"."0.9.5"."libflate"}" deps) + (features_.log."${deps."reqwest"."0.9.5"."log"}" deps) + (features_.mime."${deps."reqwest"."0.9.5"."mime"}" deps) + (features_.mime_guess."${deps."reqwest"."0.9.5"."mime_guess"}" deps) + (features_.native_tls."${deps."reqwest"."0.9.5"."native_tls"}" deps) + (features_.serde."${deps."reqwest"."0.9.5"."serde"}" deps) + (features_.serde_json."${deps."reqwest"."0.9.5"."serde_json"}" deps) + (features_.serde_urlencoded."${deps."reqwest"."0.9.5"."serde_urlencoded"}" deps) + (features_.tokio."${deps."reqwest"."0.9.5"."tokio"}" deps) + (features_.tokio_io."${deps."reqwest"."0.9.5"."tokio_io"}" deps) + (features_.url."${deps."reqwest"."0.9.5"."url"}" deps) + (features_.uuid."${deps."reqwest"."0.9.5"."uuid"}" deps) + ]; + + +# end +# rustc_version-0.2.3 + + crates.rustc_version."0.2.3" = deps: { features?(features_.rustc_version."0.2.3" deps {}) }: buildRustCrate { + crateName = "rustc_version"; + version = "0.2.3"; + description = "A library for querying the version of a installed rustc compiler"; + authors = [ "Marvin Löbel " ]; + sha256 = "0rgwzbgs3i9fqjm1p4ra3n7frafmpwl29c8lw85kv1rxn7n2zaa7"; + dependencies = mapFeatures features ([ + (crates."semver"."${deps."rustc_version"."0.2.3"."semver"}" deps) + ]); + }; + features_.rustc_version."0.2.3" = deps: f: updateFeatures f (rec { + rustc_version."0.2.3".default = (f.rustc_version."0.2.3".default or true); + semver."${deps.rustc_version."0.2.3".semver}".default = true; + }) [ + (features_.semver."${deps."rustc_version"."0.2.3"."semver"}" deps) + ]; + + +# end +# safemem-0.3.0 + + crates.safemem."0.3.0" = deps: { features?(features_.safemem."0.3.0" deps {}) }: buildRustCrate { + crateName = "safemem"; + version = "0.3.0"; + description = "Safe wrappers for memory-accessing functions, like `std::ptr::copy()`."; + authors = [ "Austin Bonander " ]; + sha256 = "0pr39b468d05f6m7m4alsngmj5p7an8df21apsxbi57k0lmwrr18"; + features = mkFeatures (features."safemem"."0.3.0" or {}); + }; + features_.safemem."0.3.0" = deps: f: updateFeatures f (rec { + safemem = fold recursiveUpdate {} [ + { "0.3.0"."std" = + (f.safemem."0.3.0"."std" or false) || + (f.safemem."0.3.0".default or false) || + (safemem."0.3.0"."default" or false); } + { "0.3.0".default = (f.safemem."0.3.0".default or true); } + ]; + }) []; + + +# end +# schannel-0.1.14 + + crates.schannel."0.1.14" = deps: { features?(features_.schannel."0.1.14" deps {}) }: buildRustCrate { + crateName = "schannel"; + version = "0.1.14"; + description = "Schannel bindings for rust, allowing SSL/TLS (e.g. https) without openssl"; + authors = [ "Steven Fackler " "Steffen Butzer " ]; + sha256 = "1g0a88jknns1kwn3x1k3ci5y5zvg58pwdg1xrxkrw3cwd2hynm9k"; + dependencies = mapFeatures features ([ + (crates."lazy_static"."${deps."schannel"."0.1.14"."lazy_static"}" deps) + (crates."winapi"."${deps."schannel"."0.1.14"."winapi"}" deps) + ]); + }; + features_.schannel."0.1.14" = deps: f: updateFeatures f (rec { + lazy_static."${deps.schannel."0.1.14".lazy_static}".default = true; + schannel."0.1.14".default = (f.schannel."0.1.14".default or true); + winapi = fold recursiveUpdate {} [ + { "${deps.schannel."0.1.14".winapi}"."lmcons" = true; } + { "${deps.schannel."0.1.14".winapi}"."minschannel" = true; } + { "${deps.schannel."0.1.14".winapi}"."schannel" = true; } + { "${deps.schannel."0.1.14".winapi}"."securitybaseapi" = true; } + { "${deps.schannel."0.1.14".winapi}"."sspi" = true; } + { "${deps.schannel."0.1.14".winapi}"."sysinfoapi" = true; } + { "${deps.schannel."0.1.14".winapi}"."timezoneapi" = true; } + { "${deps.schannel."0.1.14".winapi}"."winbase" = true; } + { "${deps.schannel."0.1.14".winapi}"."wincrypt" = true; } + { "${deps.schannel."0.1.14".winapi}"."winerror" = true; } + { "${deps.schannel."0.1.14".winapi}".default = true; } + ]; + }) [ + (features_.lazy_static."${deps."schannel"."0.1.14"."lazy_static"}" deps) + (features_.winapi."${deps."schannel"."0.1.14"."winapi"}" deps) + ]; + + +# end +# scopeguard-0.3.3 + + crates.scopeguard."0.3.3" = deps: { features?(features_.scopeguard."0.3.3" deps {}) }: buildRustCrate { + crateName = "scopeguard"; + version = "0.3.3"; + description = "A RAII scope guard that will run a given closure when it goes out of scope,\neven if the code between panics (assuming unwinding panic).\n\nDefines the macros `defer!` and `defer_on_unwind!`; the latter only runs\nif the scope is extited through unwinding on panic.\n"; + authors = [ "bluss" ]; + sha256 = "0i1l013csrqzfz6c68pr5pi01hg5v5yahq8fsdmaxy6p8ygsjf3r"; + features = mkFeatures (features."scopeguard"."0.3.3" or {}); + }; + features_.scopeguard."0.3.3" = deps: f: updateFeatures f (rec { + scopeguard = fold recursiveUpdate {} [ + { "0.3.3"."use_std" = + (f.scopeguard."0.3.3"."use_std" or false) || + (f.scopeguard."0.3.3".default or false) || + (scopeguard."0.3.3"."default" or false); } + { "0.3.3".default = (f.scopeguard."0.3.3".default or true); } + ]; + }) []; + + +# end +# security-framework-0.2.1 + + crates.security_framework."0.2.1" = deps: { features?(features_.security_framework."0.2.1" deps {}) }: buildRustCrate { + crateName = "security-framework"; + version = "0.2.1"; + description = "Security Framework bindings"; + authors = [ "Steven Fackler " ]; + sha256 = "0qia5g66zmjn57m9swhrkz3cll3bs4061qim6w72v08c2w0pkvsw"; + dependencies = mapFeatures features ([ + (crates."core_foundation"."${deps."security_framework"."0.2.1"."core_foundation"}" deps) + (crates."core_foundation_sys"."${deps."security_framework"."0.2.1"."core_foundation_sys"}" deps) + (crates."libc"."${deps."security_framework"."0.2.1"."libc"}" deps) + (crates."security_framework_sys"."${deps."security_framework"."0.2.1"."security_framework_sys"}" deps) + ]); + features = mkFeatures (features."security_framework"."0.2.1" or {}); + }; + features_.security_framework."0.2.1" = deps: f: updateFeatures f (rec { + core_foundation."${deps.security_framework."0.2.1".core_foundation}".default = true; + core_foundation_sys."${deps.security_framework."0.2.1".core_foundation_sys}".default = true; + libc."${deps.security_framework."0.2.1".libc}".default = true; + security_framework = fold recursiveUpdate {} [ + { "0.2.1"."OSX_10_10" = + (f.security_framework."0.2.1"."OSX_10_10" or false) || + (f.security_framework."0.2.1".OSX_10_11 or false) || + (security_framework."0.2.1"."OSX_10_11" or false); } + { "0.2.1"."OSX_10_11" = + (f.security_framework."0.2.1"."OSX_10_11" or false) || + (f.security_framework."0.2.1".OSX_10_12 or false) || + (security_framework."0.2.1"."OSX_10_12" or false); } + { "0.2.1"."OSX_10_9" = + (f.security_framework."0.2.1"."OSX_10_9" or false) || + (f.security_framework."0.2.1".OSX_10_10 or false) || + (security_framework."0.2.1"."OSX_10_10" or false); } + { "0.2.1".default = (f.security_framework."0.2.1".default or true); } + ]; + security_framework_sys = fold recursiveUpdate {} [ + { "${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_10" = + (f.security_framework_sys."${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_10" or false) || + (security_framework."0.2.1"."OSX_10_10" or false) || + (f."security_framework"."0.2.1"."OSX_10_10" or false); } + { "${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_11" = + (f.security_framework_sys."${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_11" or false) || + (security_framework."0.2.1"."OSX_10_11" or false) || + (f."security_framework"."0.2.1"."OSX_10_11" or false) || + (security_framework."0.2.1"."OSX_10_12" or false) || + (f."security_framework"."0.2.1"."OSX_10_12" or false); } + { "${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_9" = + (f.security_framework_sys."${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_9" or false) || + (security_framework."0.2.1"."OSX_10_9" or false) || + (f."security_framework"."0.2.1"."OSX_10_9" or false); } + { "${deps.security_framework."0.2.1".security_framework_sys}".default = true; } + ]; + }) [ + (features_.core_foundation."${deps."security_framework"."0.2.1"."core_foundation"}" deps) + (features_.core_foundation_sys."${deps."security_framework"."0.2.1"."core_foundation_sys"}" deps) + (features_.libc."${deps."security_framework"."0.2.1"."libc"}" deps) + (features_.security_framework_sys."${deps."security_framework"."0.2.1"."security_framework_sys"}" deps) + ]; + + +# end +# security-framework-sys-0.2.1 + + crates.security_framework_sys."0.2.1" = deps: { features?(features_.security_framework_sys."0.2.1" deps {}) }: buildRustCrate { + crateName = "security-framework-sys"; + version = "0.2.1"; + description = "Security Framework bindings"; + authors = [ "Steven Fackler " ]; + sha256 = "0ijxy7bdi4am092hrhm645hcv36xprdx1gjcjmnyw6n78x8sv2iz"; + build = "build.rs"; + dependencies = mapFeatures features ([ + (crates."core_foundation_sys"."${deps."security_framework_sys"."0.2.1"."core_foundation_sys"}" deps) + (crates."libc"."${deps."security_framework_sys"."0.2.1"."libc"}" deps) + ]); + features = mkFeatures (features."security_framework_sys"."0.2.1" or {}); + }; + features_.security_framework_sys."0.2.1" = deps: f: updateFeatures f (rec { + core_foundation_sys."${deps.security_framework_sys."0.2.1".core_foundation_sys}".default = true; + libc."${deps.security_framework_sys."0.2.1".libc}".default = true; + security_framework_sys = fold recursiveUpdate {} [ + { "0.2.1"."OSX_10_10" = + (f.security_framework_sys."0.2.1"."OSX_10_10" or false) || + (f.security_framework_sys."0.2.1".OSX_10_11 or false) || + (security_framework_sys."0.2.1"."OSX_10_11" or false); } + { "0.2.1"."OSX_10_11" = + (f.security_framework_sys."0.2.1"."OSX_10_11" or false) || + (f.security_framework_sys."0.2.1".OSX_10_12 or false) || + (security_framework_sys."0.2.1"."OSX_10_12" or false); } + { "0.2.1"."OSX_10_9" = + (f.security_framework_sys."0.2.1"."OSX_10_9" or false) || + (f.security_framework_sys."0.2.1".OSX_10_10 or false) || + (security_framework_sys."0.2.1"."OSX_10_10" or false); } + { "0.2.1".default = (f.security_framework_sys."0.2.1".default or true); } + ]; + }) [ + (features_.core_foundation_sys."${deps."security_framework_sys"."0.2.1"."core_foundation_sys"}" deps) + (features_.libc."${deps."security_framework_sys"."0.2.1"."libc"}" deps) + ]; + + +# end +# semver-0.9.0 + + crates.semver."0.9.0" = deps: { features?(features_.semver."0.9.0" deps {}) }: buildRustCrate { + crateName = "semver"; + version = "0.9.0"; + description = "Semantic version parsing and comparison.\n"; + authors = [ "Steve Klabnik " "The Rust Project Developers" ]; + sha256 = "0azak2lb2wc36s3x15az886kck7rpnksrw14lalm157rg9sc9z63"; + dependencies = mapFeatures features ([ + (crates."semver_parser"."${deps."semver"."0.9.0"."semver_parser"}" deps) + ]); + features = mkFeatures (features."semver"."0.9.0" or {}); + }; + features_.semver."0.9.0" = deps: f: updateFeatures f (rec { + semver = fold recursiveUpdate {} [ + { "0.9.0"."serde" = + (f.semver."0.9.0"."serde" or false) || + (f.semver."0.9.0".ci or false) || + (semver."0.9.0"."ci" or false); } + { "0.9.0".default = (f.semver."0.9.0".default or true); } + ]; + semver_parser."${deps.semver."0.9.0".semver_parser}".default = true; + }) [ + (features_.semver_parser."${deps."semver"."0.9.0"."semver_parser"}" deps) + ]; + + +# end +# semver-parser-0.7.0 + + crates.semver_parser."0.7.0" = deps: { features?(features_.semver_parser."0.7.0" deps {}) }: buildRustCrate { + crateName = "semver-parser"; + version = "0.7.0"; + description = "Parsing of the semver spec.\n"; + authors = [ "Steve Klabnik " ]; + sha256 = "1da66c8413yakx0y15k8c055yna5lyb6fr0fw9318kdwkrk5k12h"; + }; + features_.semver_parser."0.7.0" = deps: f: updateFeatures f (rec { + semver_parser."0.7.0".default = (f.semver_parser."0.7.0".default or true); + }) []; + + +# end +# serde-1.0.21 + + crates.serde."1.0.21" = deps: { features?(features_.serde."1.0.21" deps {}) }: buildRustCrate { + crateName = "serde"; + version = "1.0.21"; + description = "A generic serialization/deserialization framework"; + authors = [ "Erick Tryzelaar " "David Tolnay " ]; + sha256 = "10almq7pvx8s4ryiqk8gf7fj5igl0yq6dcjknwc67rkmxd8q50w3"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."serde"."1.0.21" or {}); + }; + features_.serde."1.0.21" = deps: f: updateFeatures f (rec { + serde = fold recursiveUpdate {} [ + { "1.0.21"."serde_derive" = + (f.serde."1.0.21"."serde_derive" or false) || + (f.serde."1.0.21".derive or false) || + (serde."1.0.21"."derive" or false) || + (f.serde."1.0.21".playground or false) || + (serde."1.0.21"."playground" or false); } + { "1.0.21"."std" = + (f.serde."1.0.21"."std" or false) || + (f.serde."1.0.21".default or false) || + (serde."1.0.21"."default" or false); } + { "1.0.21"."unstable" = + (f.serde."1.0.21"."unstable" or false) || + (f.serde."1.0.21".alloc or false) || + (serde."1.0.21"."alloc" or false); } + { "1.0.21".default = (f.serde."1.0.21".default or true); } + ]; + }) []; + + +# end +# serde_json-1.0.6 + + crates.serde_json."1.0.6" = deps: { features?(features_.serde_json."1.0.6" deps {}) }: buildRustCrate { + crateName = "serde_json"; + version = "1.0.6"; + description = "A JSON serialization file format"; + authors = [ "Erick Tryzelaar " "David Tolnay " ]; + sha256 = "1kacyc59splwbg8gr7qs32pp9smgy1khq0ggnv07yxhs7h355vjz"; + dependencies = mapFeatures features ([ + (crates."dtoa"."${deps."serde_json"."1.0.6"."dtoa"}" deps) + (crates."itoa"."${deps."serde_json"."1.0.6"."itoa"}" deps) + (crates."num_traits"."${deps."serde_json"."1.0.6"."num_traits"}" deps) + (crates."serde"."${deps."serde_json"."1.0.6"."serde"}" deps) + ]); + features = mkFeatures (features."serde_json"."1.0.6" or {}); + }; + features_.serde_json."1.0.6" = deps: f: updateFeatures f (rec { + dtoa."${deps.serde_json."1.0.6".dtoa}".default = true; + itoa."${deps.serde_json."1.0.6".itoa}".default = true; + num_traits."${deps.serde_json."1.0.6".num_traits}".default = true; + serde."${deps.serde_json."1.0.6".serde}".default = true; + serde_json = fold recursiveUpdate {} [ + { "1.0.6"."linked-hash-map" = + (f.serde_json."1.0.6"."linked-hash-map" or false) || + (f.serde_json."1.0.6".preserve_order or false) || + (serde_json."1.0.6"."preserve_order" or false); } + { "1.0.6".default = (f.serde_json."1.0.6".default or true); } + ]; + }) [ + (features_.dtoa."${deps."serde_json"."1.0.6"."dtoa"}" deps) + (features_.itoa."${deps."serde_json"."1.0.6"."itoa"}" deps) + (features_.num_traits."${deps."serde_json"."1.0.6"."num_traits"}" deps) + (features_.serde."${deps."serde_json"."1.0.6"."serde"}" deps) + ]; + + +# end +# serde_urlencoded-0.5.1 + + crates.serde_urlencoded."0.5.1" = deps: { features?(features_.serde_urlencoded."0.5.1" deps {}) }: buildRustCrate { + crateName = "serde_urlencoded"; + version = "0.5.1"; + description = "`x-www-form-urlencoded` meets Serde"; + authors = [ "Anthony Ramine " ]; + sha256 = "0zh2wlnapmcwqhxnnq1mdlmg8vily7j54wvj01s7cvapzg5jphdl"; + dependencies = mapFeatures features ([ + (crates."dtoa"."${deps."serde_urlencoded"."0.5.1"."dtoa"}" deps) + (crates."itoa"."${deps."serde_urlencoded"."0.5.1"."itoa"}" deps) + (crates."serde"."${deps."serde_urlencoded"."0.5.1"."serde"}" deps) + (crates."url"."${deps."serde_urlencoded"."0.5.1"."url"}" deps) + ]); + }; + features_.serde_urlencoded."0.5.1" = deps: f: updateFeatures f (rec { + dtoa."${deps.serde_urlencoded."0.5.1".dtoa}".default = true; + itoa."${deps.serde_urlencoded."0.5.1".itoa}".default = true; + serde."${deps.serde_urlencoded."0.5.1".serde}".default = true; + serde_urlencoded."0.5.1".default = (f.serde_urlencoded."0.5.1".default or true); + url."${deps.serde_urlencoded."0.5.1".url}".default = true; + }) [ + (features_.dtoa."${deps."serde_urlencoded"."0.5.1"."dtoa"}" deps) + (features_.itoa."${deps."serde_urlencoded"."0.5.1"."itoa"}" deps) + (features_.serde."${deps."serde_urlencoded"."0.5.1"."serde"}" deps) + (features_.url."${deps."serde_urlencoded"."0.5.1"."url"}" deps) + ]; + + +# end +# siphasher-0.2.2 + + crates.siphasher."0.2.2" = deps: { features?(features_.siphasher."0.2.2" deps {}) }: buildRustCrate { + crateName = "siphasher"; + version = "0.2.2"; + description = "SipHash functions from rust-core < 1.13"; + authors = [ "Frank Denis " ]; + sha256 = "0iyx7nlzfny9ly1634a6zcq0yvrinhxhypwas4p8ry3zqnn76qqr"; + dependencies = mapFeatures features ([ +]); + }; + features_.siphasher."0.2.2" = deps: f: updateFeatures f (rec { + siphasher."0.2.2".default = (f.siphasher."0.2.2".default or true); + }) []; + + +# end +# slab-0.4.0 + + crates.slab."0.4.0" = deps: { features?(features_.slab."0.4.0" deps {}) }: buildRustCrate { + crateName = "slab"; + version = "0.4.0"; + description = "Pre-allocated storage for a uniform data type"; + authors = [ "Carl Lerche " ]; + sha256 = "1qy2vkgwqgj5z4ygdkh040n9yh1vz80v5flxb1xrvw3i4wxs7yx0"; + }; + features_.slab."0.4.0" = deps: f: updateFeatures f (rec { + slab."0.4.0".default = (f.slab."0.4.0".default or true); + }) []; + + +# end +# slog-1.7.1 + + crates.slog."1.7.1" = deps: { features?(features_.slog."1.7.1" deps {}) }: buildRustCrate { + crateName = "slog"; + version = "1.7.1"; + description = "Structured, composable logging for Rust"; + authors = [ "Dawid Ciężarkiewicz " ]; + sha256 = "1qhnwv2gbxmnwasaa0vlhddq6cdhq6n3l8d6h3ql73367h7aav65"; + features = mkFeatures (features."slog"."1.7.1" or {}); + }; + features_.slog."1.7.1" = deps: f: updateFeatures f (rec { + slog = fold recursiveUpdate {} [ + { "1.7.1"."std" = + (f.slog."1.7.1"."std" or false) || + (f.slog."1.7.1".default or false) || + (slog."1.7.1"."default" or false); } + { "1.7.1".default = (f.slog."1.7.1".default or true); } + ]; + }) []; + + +# end +# slog-envlogger-0.5.0 + + crates.slog_envlogger."0.5.0" = deps: { features?(features_.slog_envlogger."0.5.0" deps {}) }: buildRustCrate { + crateName = "slog-envlogger"; + version = "0.5.0"; + description = "Port of de facto standard logger implementation for Rust, to `slog-rs` framework.\n"; + authors = [ "The Rust Project Developers" "Dawid Ciężarkiewicz " ]; + sha256 = "0ry9k2ppj7z6prdz2kf924w7l9y2kbysrigca6shni1kz2j163qb"; + libPath = "src/lib.rs"; + dependencies = mapFeatures features ([ + (crates."log"."${deps."slog_envlogger"."0.5.0"."log"}" deps) + (crates."regex"."${deps."slog_envlogger"."0.5.0"."regex"}" deps) + (crates."slog"."${deps."slog_envlogger"."0.5.0"."slog"}" deps) + (crates."slog_stdlog"."${deps."slog_envlogger"."0.5.0"."slog_stdlog"}" deps) + (crates."slog_term"."${deps."slog_envlogger"."0.5.0"."slog_term"}" deps) + ]); + }; + features_.slog_envlogger."0.5.0" = deps: f: updateFeatures f (rec { + log."${deps.slog_envlogger."0.5.0".log}".default = true; + regex."${deps.slog_envlogger."0.5.0".regex}".default = true; + slog."${deps.slog_envlogger."0.5.0".slog}".default = true; + slog_envlogger."0.5.0".default = (f.slog_envlogger."0.5.0".default or true); + slog_stdlog."${deps.slog_envlogger."0.5.0".slog_stdlog}".default = true; + slog_term."${deps.slog_envlogger."0.5.0".slog_term}".default = true; + }) [ + (features_.log."${deps."slog_envlogger"."0.5.0"."log"}" deps) + (features_.regex."${deps."slog_envlogger"."0.5.0"."regex"}" deps) + (features_.slog."${deps."slog_envlogger"."0.5.0"."slog"}" deps) + (features_.slog_stdlog."${deps."slog_envlogger"."0.5.0"."slog_stdlog"}" deps) + (features_.slog_term."${deps."slog_envlogger"."0.5.0"."slog_term"}" deps) + ]; + + +# end +# slog-extra-0.1.2 + + crates.slog_extra."0.1.2" = deps: { features?(features_.slog_extra."0.1.2" deps {}) }: buildRustCrate { + crateName = "slog-extra"; + version = "0.1.2"; + description = "Standard slog-rs extensions"; + authors = [ "Dawid Ciężarkiewicz " ]; + sha256 = "0jrw0xcc81wwcl59xx9qglfcv5l3ad5kbpcyp6ygk94p9kxfrhyj"; + libPath = "lib.rs"; + dependencies = mapFeatures features ([ + (crates."slog"."${deps."slog_extra"."0.1.2"."slog"}" deps) + (crates."thread_local"."${deps."slog_extra"."0.1.2"."thread_local"}" deps) + ]); + }; + features_.slog_extra."0.1.2" = deps: f: updateFeatures f (rec { + slog."${deps.slog_extra."0.1.2".slog}".default = true; + slog_extra."0.1.2".default = (f.slog_extra."0.1.2".default or true); + thread_local."${deps.slog_extra."0.1.2".thread_local}".default = true; + }) [ + (features_.slog."${deps."slog_extra"."0.1.2"."slog"}" deps) + (features_.thread_local."${deps."slog_extra"."0.1.2"."thread_local"}" deps) + ]; + + +# end +# slog-stdlog-1.1.0 + + crates.slog_stdlog."1.1.0" = deps: { features?(features_.slog_stdlog."1.1.0" deps {}) }: buildRustCrate { + crateName = "slog-stdlog"; + version = "1.1.0"; + description = "Standard Rust log crate adapter to slog-rs"; + authors = [ "Dawid Ciężarkiewicz " ]; + sha256 = "0ig4mjixr4y3dn3s53rlnrpplwkqb8b0z2zkaiiiwyv7nhjxdg46"; + libPath = "lib.rs"; + dependencies = mapFeatures features ([ + (crates."crossbeam"."${deps."slog_stdlog"."1.1.0"."crossbeam"}" deps) + (crates."lazy_static"."${deps."slog_stdlog"."1.1.0"."lazy_static"}" deps) + (crates."log"."${deps."slog_stdlog"."1.1.0"."log"}" deps) + (crates."slog"."${deps."slog_stdlog"."1.1.0"."slog"}" deps) + (crates."slog_term"."${deps."slog_stdlog"."1.1.0"."slog_term"}" deps) + ]); + }; + features_.slog_stdlog."1.1.0" = deps: f: updateFeatures f (rec { + crossbeam."${deps.slog_stdlog."1.1.0".crossbeam}".default = true; + lazy_static."${deps.slog_stdlog."1.1.0".lazy_static}".default = true; + log."${deps.slog_stdlog."1.1.0".log}".default = true; + slog."${deps.slog_stdlog."1.1.0".slog}".default = true; + slog_stdlog."1.1.0".default = (f.slog_stdlog."1.1.0".default or true); + slog_term."${deps.slog_stdlog."1.1.0".slog_term}".default = true; + }) [ + (features_.crossbeam."${deps."slog_stdlog"."1.1.0"."crossbeam"}" deps) + (features_.lazy_static."${deps."slog_stdlog"."1.1.0"."lazy_static"}" deps) + (features_.log."${deps."slog_stdlog"."1.1.0"."log"}" deps) + (features_.slog."${deps."slog_stdlog"."1.1.0"."slog"}" deps) + (features_.slog_term."${deps."slog_stdlog"."1.1.0"."slog_term"}" deps) + ]; + + +# end +# slog-stream-1.2.1 + + crates.slog_stream."1.2.1" = deps: { features?(features_.slog_stream."1.2.1" deps {}) }: buildRustCrate { + crateName = "slog-stream"; + version = "1.2.1"; + description = "`io::Write` streamer for slog-rs"; + authors = [ "Dawid Ciężarkiewicz " ]; + sha256 = "03dwzbydaamfzjpr16gm065i696lk86gqcpspv5qaqyv938fm2yj"; + libPath = "lib.rs"; + dependencies = mapFeatures features ([ + (crates."slog"."${deps."slog_stream"."1.2.1"."slog"}" deps) + (crates."slog_extra"."${deps."slog_stream"."1.2.1"."slog_extra"}" deps) + (crates."thread_local"."${deps."slog_stream"."1.2.1"."thread_local"}" deps) + ]); + }; + features_.slog_stream."1.2.1" = deps: f: updateFeatures f (rec { + slog."${deps.slog_stream."1.2.1".slog}".default = true; + slog_extra."${deps.slog_stream."1.2.1".slog_extra}".default = true; + slog_stream."1.2.1".default = (f.slog_stream."1.2.1".default or true); + thread_local."${deps.slog_stream."1.2.1".thread_local}".default = true; + }) [ + (features_.slog."${deps."slog_stream"."1.2.1"."slog"}" deps) + (features_.slog_extra."${deps."slog_stream"."1.2.1"."slog_extra"}" deps) + (features_.thread_local."${deps."slog_stream"."1.2.1"."thread_local"}" deps) + ]; + + +# end +# slog-term-1.5.0 + + crates.slog_term."1.5.0" = deps: { features?(features_.slog_term."1.5.0" deps {}) }: buildRustCrate { + crateName = "slog-term"; + version = "1.5.0"; + description = "Unix terminal drain and formatter for slog-rs"; + authors = [ "Dawid Ciężarkiewicz " ]; + sha256 = "0zq2kyvm7jhqj6sc09w540wqfrrpa46yxf9sgzq7jqpkr66wsiar"; + libPath = "lib.rs"; + dependencies = mapFeatures features ([ + (crates."chrono"."${deps."slog_term"."1.5.0"."chrono"}" deps) + (crates."isatty"."${deps."slog_term"."1.5.0"."isatty"}" deps) + (crates."slog"."${deps."slog_term"."1.5.0"."slog"}" deps) + (crates."slog_stream"."${deps."slog_term"."1.5.0"."slog_stream"}" deps) + (crates."thread_local"."${deps."slog_term"."1.5.0"."thread_local"}" deps) + ]); + }; + features_.slog_term."1.5.0" = deps: f: updateFeatures f (rec { + chrono."${deps.slog_term."1.5.0".chrono}".default = true; + isatty."${deps.slog_term."1.5.0".isatty}".default = true; + slog."${deps.slog_term."1.5.0".slog}".default = true; + slog_stream."${deps.slog_term."1.5.0".slog_stream}".default = true; + slog_term."1.5.0".default = (f.slog_term."1.5.0".default or true); + thread_local."${deps.slog_term."1.5.0".thread_local}".default = true; + }) [ + (features_.chrono."${deps."slog_term"."1.5.0"."chrono"}" deps) + (features_.isatty."${deps."slog_term"."1.5.0"."isatty"}" deps) + (features_.slog."${deps."slog_term"."1.5.0"."slog"}" deps) + (features_.slog_stream."${deps."slog_term"."1.5.0"."slog_stream"}" deps) + (features_.thread_local."${deps."slog_term"."1.5.0"."thread_local"}" deps) + ]; + + +# end +# smallvec-0.6.7 + + crates.smallvec."0.6.7" = deps: { features?(features_.smallvec."0.6.7" deps {}) }: buildRustCrate { + crateName = "smallvec"; + version = "0.6.7"; + description = "'Small vector' optimization: store up to a small number of items on the stack"; + authors = [ "Simon Sapin " ]; + sha256 = "08ql2yi7ry08cqjl9n6vpb6x6zgqzwllzzk9pxj1143xwg503qcx"; + libPath = "lib.rs"; + dependencies = mapFeatures features ([ + (crates."unreachable"."${deps."smallvec"."0.6.7"."unreachable"}" deps) + ]); + features = mkFeatures (features."smallvec"."0.6.7" or {}); + }; + features_.smallvec."0.6.7" = deps: f: updateFeatures f (rec { + smallvec = fold recursiveUpdate {} [ + { "0.6.7"."std" = + (f.smallvec."0.6.7"."std" or false) || + (f.smallvec."0.6.7".default or false) || + (smallvec."0.6.7"."default" or false); } + { "0.6.7".default = (f.smallvec."0.6.7".default or true); } + ]; + unreachable."${deps.smallvec."0.6.7".unreachable}".default = true; + }) [ + (features_.unreachable."${deps."smallvec"."0.6.7"."unreachable"}" deps) + ]; + + +# end +# stable_deref_trait-1.1.1 + + crates.stable_deref_trait."1.1.1" = deps: { features?(features_.stable_deref_trait."1.1.1" deps {}) }: buildRustCrate { + crateName = "stable_deref_trait"; + version = "1.1.1"; + description = "An unsafe marker trait for types like Box and Rc that dereference to a stable address even when moved, and hence can be used with libraries such as owning_ref and rental.\n"; + authors = [ "Robert Grosse " ]; + sha256 = "1xy9slzslrzr31nlnw52sl1d820b09y61b7f13lqgsn8n7y0l4g8"; + features = mkFeatures (features."stable_deref_trait"."1.1.1" or {}); + }; + features_.stable_deref_trait."1.1.1" = deps: f: updateFeatures f (rec { + stable_deref_trait = fold recursiveUpdate {} [ + { "1.1.1"."std" = + (f.stable_deref_trait."1.1.1"."std" or false) || + (f.stable_deref_trait."1.1.1".default or false) || + (stable_deref_trait."1.1.1"."default" or false); } + { "1.1.1".default = (f.stable_deref_trait."1.1.1".default or true); } + ]; + }) []; + + +# end +# string-0.1.2 + + crates.string."0.1.2" = deps: { features?(features_.string."0.1.2" deps {}) }: buildRustCrate { + crateName = "string"; + version = "0.1.2"; + description = "A UTF-8 encoded string with configurable byte storage."; + authors = [ "Carl Lerche " ]; + sha256 = "1120qvf02aydqj0k3kpr8d7zybq0y5arnmgmfsdw75r8qwz75wc6"; + }; + features_.string."0.1.2" = deps: f: updateFeatures f (rec { + string."0.1.2".default = (f.string."0.1.2".default or true); + }) []; + + +# end +# strsim-0.6.0 + + crates.strsim."0.6.0" = deps: { features?(features_.strsim."0.6.0" deps {}) }: buildRustCrate { + crateName = "strsim"; + version = "0.6.0"; + description = "Implementations of string similarity metrics.\nIncludes Hamming, Levenshtein, Damerau-Levenshtein, Jaro, and Jaro-Winkler.\n"; + authors = [ "Danny Guo " ]; + sha256 = "1lz85l6y68hr62lv4baww29yy7g8pg20dlr0lbaswxmmcb0wl7gd"; + }; + features_.strsim."0.6.0" = deps: f: updateFeatures f (rec { + strsim."0.6.0".default = (f.strsim."0.6.0".default or true); + }) []; + + +# end +# syn-0.11.11 + + crates.syn."0.11.11" = deps: { features?(features_.syn."0.11.11" deps {}) }: buildRustCrate { + crateName = "syn"; + version = "0.11.11"; + description = "Nom parser for Rust source code"; + authors = [ "David Tolnay " ]; + sha256 = "0yw8ng7x1dn5a6ykg0ib49y7r9nhzgpiq2989rqdp7rdz3n85502"; + dependencies = mapFeatures features ([ + ] + ++ (if features.syn."0.11.11".quote or false then [ (crates.quote."${deps."syn"."0.11.11".quote}" deps) ] else []) + ++ (if features.syn."0.11.11".synom or false then [ (crates.synom."${deps."syn"."0.11.11".synom}" deps) ] else []) + ++ (if features.syn."0.11.11".unicode-xid or false then [ (crates.unicode_xid."${deps."syn"."0.11.11".unicode_xid}" deps) ] else [])); + features = mkFeatures (features."syn"."0.11.11" or {}); + }; + features_.syn."0.11.11" = deps: f: updateFeatures f (rec { + quote."${deps.syn."0.11.11".quote}".default = true; + syn = fold recursiveUpdate {} [ + { "0.11.11"."parsing" = + (f.syn."0.11.11"."parsing" or false) || + (f.syn."0.11.11".default or false) || + (syn."0.11.11"."default" or false); } + { "0.11.11"."printing" = + (f.syn."0.11.11"."printing" or false) || + (f.syn."0.11.11".default or false) || + (syn."0.11.11"."default" or false); } + { "0.11.11"."quote" = + (f.syn."0.11.11"."quote" or false) || + (f.syn."0.11.11".printing or false) || + (syn."0.11.11"."printing" or false); } + { "0.11.11"."synom" = + (f.syn."0.11.11"."synom" or false) || + (f.syn."0.11.11".parsing or false) || + (syn."0.11.11"."parsing" or false); } + { "0.11.11"."unicode-xid" = + (f.syn."0.11.11"."unicode-xid" or false) || + (f.syn."0.11.11".parsing or false) || + (syn."0.11.11"."parsing" or false); } + { "0.11.11".default = (f.syn."0.11.11".default or true); } + ]; + synom."${deps.syn."0.11.11".synom}".default = true; + unicode_xid."${deps.syn."0.11.11".unicode_xid}".default = true; + }) [ + (features_.quote."${deps."syn"."0.11.11"."quote"}" deps) + (features_.synom."${deps."syn"."0.11.11"."synom"}" deps) + (features_.unicode_xid."${deps."syn"."0.11.11"."unicode_xid"}" deps) + ]; + + +# end +# synom-0.11.3 + + crates.synom."0.11.3" = deps: { features?(features_.synom."0.11.3" deps {}) }: buildRustCrate { + crateName = "synom"; + version = "0.11.3"; + description = "Stripped-down Nom parser used by Syn"; + authors = [ "David Tolnay " ]; + sha256 = "1l6d1s9qjfp6ng2s2z8219igvlv7gyk8gby97sdykqc1r93d8rhc"; + dependencies = mapFeatures features ([ + (crates."unicode_xid"."${deps."synom"."0.11.3"."unicode_xid"}" deps) + ]); + }; + features_.synom."0.11.3" = deps: f: updateFeatures f (rec { + synom."0.11.3".default = (f.synom."0.11.3".default or true); + unicode_xid."${deps.synom."0.11.3".unicode_xid}".default = true; + }) [ + (features_.unicode_xid."${deps."synom"."0.11.3"."unicode_xid"}" deps) + ]; + + +# end +# tar-0.4.13 + + crates.tar."0.4.13" = deps: { features?(features_.tar."0.4.13" deps {}) }: buildRustCrate { + crateName = "tar"; + version = "0.4.13"; + description = "A Rust implementation of a TAR file reader and writer. This library does not\ncurrently handle compression, but it is abstract over all I/O readers and\nwriters. Additionally, great lengths are taken to ensure that the entire\ncontents are never required to be entirely resident in memory all at once.\n"; + authors = [ "Alex Crichton " ]; + sha256 = "1m425d07h0i6h2vbpxnh067zmc16l9yr9bii17zxw4z2inkfyfc4"; + dependencies = mapFeatures features ([ + (crates."filetime"."${deps."tar"."0.4.13"."filetime"}" deps) + (crates."libc"."${deps."tar"."0.4.13"."libc"}" deps) + ]) + ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + ] + ++ (if features.tar."0.4.13".xattr or false then [ (crates.xattr."${deps."tar"."0.4.13".xattr}" deps) ] else [])) else []); + features = mkFeatures (features."tar"."0.4.13" or {}); + }; + features_.tar."0.4.13" = deps: f: updateFeatures f (rec { + filetime."${deps.tar."0.4.13".filetime}".default = true; + libc."${deps.tar."0.4.13".libc}".default = true; + tar = fold recursiveUpdate {} [ + { "0.4.13"."xattr" = + (f.tar."0.4.13"."xattr" or false) || + (f.tar."0.4.13".default or false) || + (tar."0.4.13"."default" or false); } + { "0.4.13".default = (f.tar."0.4.13".default or true); } + ]; + xattr."${deps.tar."0.4.13".xattr}".default = true; + }) [ + (features_.filetime."${deps."tar"."0.4.13"."filetime"}" deps) + (features_.libc."${deps."tar"."0.4.13"."libc"}" deps) + (features_.xattr."${deps."tar"."0.4.13"."xattr"}" deps) + ]; + + +# end +# tempfile-3.0.5 + + crates.tempfile."3.0.5" = deps: { features?(features_.tempfile."3.0.5" deps {}) }: buildRustCrate { + crateName = "tempfile"; + version = "3.0.5"; + description = "A library for managing temporary files and directories.\n"; + authors = [ "Steven Allen " "The Rust Project Developers" "Ashley Mannix " "Jason White " ]; + sha256 = "11xc89br78ypk4g27v51lm2baz57gp6v555i3sxhrj9qlas2iqfl"; + dependencies = mapFeatures features ([ + (crates."cfg_if"."${deps."tempfile"."3.0.5"."cfg_if"}" deps) + (crates."rand"."${deps."tempfile"."3.0.5"."rand"}" deps) + (crates."remove_dir_all"."${deps."tempfile"."3.0.5"."remove_dir_all"}" deps) + ]) + ++ (if kernel == "redox" then mapFeatures features ([ + (crates."redox_syscall"."${deps."tempfile"."3.0.5"."redox_syscall"}" deps) + ]) else []) + ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ + (crates."libc"."${deps."tempfile"."3.0.5"."libc"}" deps) + ]) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + (crates."winapi"."${deps."tempfile"."3.0.5"."winapi"}" deps) + ]) else []); + }; + features_.tempfile."3.0.5" = deps: f: updateFeatures f (rec { + cfg_if."${deps.tempfile."3.0.5".cfg_if}".default = true; + libc."${deps.tempfile."3.0.5".libc}".default = true; + rand."${deps.tempfile."3.0.5".rand}".default = true; + redox_syscall."${deps.tempfile."3.0.5".redox_syscall}".default = true; + remove_dir_all."${deps.tempfile."3.0.5".remove_dir_all}".default = true; + tempfile."3.0.5".default = (f.tempfile."3.0.5".default or true); + winapi = fold recursiveUpdate {} [ + { "${deps.tempfile."3.0.5".winapi}"."fileapi" = true; } + { "${deps.tempfile."3.0.5".winapi}"."handleapi" = true; } + { "${deps.tempfile."3.0.5".winapi}"."winbase" = true; } + { "${deps.tempfile."3.0.5".winapi}".default = true; } + ]; + }) [ + (features_.cfg_if."${deps."tempfile"."3.0.5"."cfg_if"}" deps) + (features_.rand."${deps."tempfile"."3.0.5"."rand"}" deps) + (features_.remove_dir_all."${deps."tempfile"."3.0.5"."remove_dir_all"}" deps) + (features_.redox_syscall."${deps."tempfile"."3.0.5"."redox_syscall"}" deps) + (features_.libc."${deps."tempfile"."3.0.5"."libc"}" deps) + (features_.winapi."${deps."tempfile"."3.0.5"."winapi"}" deps) + ]; + + +# end +# termion-1.5.1 + + crates.termion."1.5.1" = deps: { features?(features_.termion."1.5.1" deps {}) }: buildRustCrate { + crateName = "termion"; + version = "1.5.1"; + description = "A bindless library for manipulating terminals."; + authors = [ "ticki " "gycos " "IGI-111 " ]; + sha256 = "02gq4vd8iws1f3gjrgrgpajsk2bk43nds5acbbb4s8dvrdvr8nf1"; + dependencies = (if !(kernel == "redox") then mapFeatures features ([ + (crates."libc"."${deps."termion"."1.5.1"."libc"}" deps) + ]) else []) + ++ (if kernel == "redox" then mapFeatures features ([ + (crates."redox_syscall"."${deps."termion"."1.5.1"."redox_syscall"}" deps) + (crates."redox_termios"."${deps."termion"."1.5.1"."redox_termios"}" deps) + ]) else []); + }; + features_.termion."1.5.1" = deps: f: updateFeatures f (rec { + libc."${deps.termion."1.5.1".libc}".default = true; + redox_syscall."${deps.termion."1.5.1".redox_syscall}".default = true; + redox_termios."${deps.termion."1.5.1".redox_termios}".default = true; + termion."1.5.1".default = (f.termion."1.5.1".default or true); + }) [ + (features_.libc."${deps."termion"."1.5.1"."libc"}" deps) + (features_.redox_syscall."${deps."termion"."1.5.1"."redox_syscall"}" deps) + (features_.redox_termios."${deps."termion"."1.5.1"."redox_termios"}" deps) + ]; + + +# end +# textwrap-0.9.0 + + crates.textwrap."0.9.0" = deps: { features?(features_.textwrap."0.9.0" deps {}) }: buildRustCrate { + crateName = "textwrap"; + version = "0.9.0"; + description = "Textwrap is a small library for word wrapping, indenting, and\ndedenting strings.\n\nYou can use it to format strings (such as help and error messages) for\ndisplay in commandline applications. It is designed to be efficient\nand handle Unicode characters correctly.\n"; + authors = [ "Martin Geisler " ]; + sha256 = "18jg79ndjlwndz01mlbh82kkr2arqm658yn5kwp65l5n1hz8w4yb"; + dependencies = mapFeatures features ([ + (crates."unicode_width"."${deps."textwrap"."0.9.0"."unicode_width"}" deps) + ]); + }; + features_.textwrap."0.9.0" = deps: f: updateFeatures f (rec { + textwrap."0.9.0".default = (f.textwrap."0.9.0".default or true); + unicode_width."${deps.textwrap."0.9.0".unicode_width}".default = true; + }) [ + (features_.unicode_width."${deps."textwrap"."0.9.0"."unicode_width"}" deps) + ]; + + +# end +# thread-id-2.0.0 + + crates.thread_id."2.0.0" = deps: { features?(features_.thread_id."2.0.0" deps {}) }: buildRustCrate { + crateName = "thread-id"; + version = "2.0.0"; + description = "Get a unique thread ID"; + authors = [ "Ruud van Asseldonk " ]; + sha256 = "06i3c8ckn97i5rp16civ2vpqbknlkx66dkrl070iw60nawi0kjc3"; + dependencies = mapFeatures features ([ + (crates."kernel32_sys"."${deps."thread_id"."2.0.0"."kernel32_sys"}" deps) + (crates."libc"."${deps."thread_id"."2.0.0"."libc"}" deps) + ]); + }; + features_.thread_id."2.0.0" = deps: f: updateFeatures f (rec { + kernel32_sys."${deps.thread_id."2.0.0".kernel32_sys}".default = true; + libc."${deps.thread_id."2.0.0".libc}".default = true; + thread_id."2.0.0".default = (f.thread_id."2.0.0".default or true); + }) [ + (features_.kernel32_sys."${deps."thread_id"."2.0.0"."kernel32_sys"}" deps) + (features_.libc."${deps."thread_id"."2.0.0"."libc"}" deps) + ]; + + +# end +# thread_local-0.2.7 + + crates.thread_local."0.2.7" = deps: { features?(features_.thread_local."0.2.7" deps {}) }: buildRustCrate { + crateName = "thread_local"; + version = "0.2.7"; + description = "Per-object thread-local storage"; + authors = [ "Amanieu d'Antras " ]; + sha256 = "19p0zrs24rdwjvpi10jig5ms3sxj00pv8shkr9cpddri8cdghqp7"; + dependencies = mapFeatures features ([ + (crates."thread_id"."${deps."thread_local"."0.2.7"."thread_id"}" deps) + ]); + }; + features_.thread_local."0.2.7" = deps: f: updateFeatures f (rec { + thread_id."${deps.thread_local."0.2.7".thread_id}".default = true; + thread_local."0.2.7".default = (f.thread_local."0.2.7".default or true); + }) [ + (features_.thread_id."${deps."thread_local"."0.2.7"."thread_id"}" deps) + ]; + + +# end +# thread_local-0.3.4 + + crates.thread_local."0.3.4" = deps: { features?(features_.thread_local."0.3.4" deps {}) }: buildRustCrate { + crateName = "thread_local"; + version = "0.3.4"; + description = "Per-object thread-local storage"; + authors = [ "Amanieu d'Antras " ]; + sha256 = "1y6cwyhhx2nkz4b3dziwhqdvgq830z8wjp32b40pjd8r0hxqv2jr"; + dependencies = mapFeatures features ([ + (crates."lazy_static"."${deps."thread_local"."0.3.4"."lazy_static"}" deps) + (crates."unreachable"."${deps."thread_local"."0.3.4"."unreachable"}" deps) + ]); + }; + features_.thread_local."0.3.4" = deps: f: updateFeatures f (rec { + lazy_static."${deps.thread_local."0.3.4".lazy_static}".default = true; + thread_local."0.3.4".default = (f.thread_local."0.3.4".default or true); + unreachable."${deps.thread_local."0.3.4".unreachable}".default = true; + }) [ + (features_.lazy_static."${deps."thread_local"."0.3.4"."lazy_static"}" deps) + (features_.unreachable."${deps."thread_local"."0.3.4"."unreachable"}" deps) + ]; + + +# end +# time-0.1.38 + + crates.time."0.1.38" = deps: { features?(features_.time."0.1.38" deps {}) }: buildRustCrate { + crateName = "time"; + version = "0.1.38"; + description = "Utilities for working with time-related functions in Rust.\n"; + authors = [ "The Rust Project Developers" ]; + sha256 = "1ws283vvz7c6jfiwn53rmc6kybapr4pjaahfxxrz232b0qzw7gcp"; + dependencies = mapFeatures features ([ + (crates."libc"."${deps."time"."0.1.38"."libc"}" deps) + ]) + ++ (if kernel == "redox" then mapFeatures features ([ + (crates."redox_syscall"."${deps."time"."0.1.38"."redox_syscall"}" deps) + ]) else []) + ++ (if kernel == "windows" then mapFeatures features ([ + (crates."kernel32_sys"."${deps."time"."0.1.38"."kernel32_sys"}" deps) + (crates."winapi"."${deps."time"."0.1.38"."winapi"}" deps) + ]) else []); + }; + features_.time."0.1.38" = deps: f: updateFeatures f (rec { + kernel32_sys."${deps.time."0.1.38".kernel32_sys}".default = true; + libc."${deps.time."0.1.38".libc}".default = true; + redox_syscall."${deps.time."0.1.38".redox_syscall}".default = true; + time."0.1.38".default = (f.time."0.1.38".default or true); + winapi."${deps.time."0.1.38".winapi}".default = true; + }) [ + (features_.libc."${deps."time"."0.1.38"."libc"}" deps) + (features_.redox_syscall."${deps."time"."0.1.38"."redox_syscall"}" deps) + (features_.kernel32_sys."${deps."time"."0.1.38"."kernel32_sys"}" deps) + (features_.winapi."${deps."time"."0.1.38"."winapi"}" deps) + ]; + + +# end +# tokio-0.1.7 + + crates.tokio."0.1.7" = deps: { features?(features_.tokio."0.1.7" deps {}) }: buildRustCrate { + crateName = "tokio"; + version = "0.1.7"; + description = "An event-driven, non-blocking I/O platform for writing asynchronous I/O\nbacked applications.\n"; + authors = [ "Carl Lerche " ]; + sha256 = "0d5fj90wk05m5vbd924irg1pl1d4fn86jjw5napzanh6vbwsnr66"; + dependencies = mapFeatures features ([ + (crates."futures"."${deps."tokio"."0.1.7"."futures"}" deps) + (crates."mio"."${deps."tokio"."0.1.7"."mio"}" deps) + (crates."tokio_executor"."${deps."tokio"."0.1.7"."tokio_executor"}" deps) + (crates."tokio_fs"."${deps."tokio"."0.1.7"."tokio_fs"}" deps) + (crates."tokio_io"."${deps."tokio"."0.1.7"."tokio_io"}" deps) + (crates."tokio_reactor"."${deps."tokio"."0.1.7"."tokio_reactor"}" deps) + (crates."tokio_tcp"."${deps."tokio"."0.1.7"."tokio_tcp"}" deps) + (crates."tokio_threadpool"."${deps."tokio"."0.1.7"."tokio_threadpool"}" deps) + (crates."tokio_timer"."${deps."tokio"."0.1.7"."tokio_timer"}" deps) + (crates."tokio_udp"."${deps."tokio"."0.1.7"."tokio_udp"}" deps) + ]); + }; + features_.tokio."0.1.7" = deps: f: updateFeatures f (rec { + futures."${deps.tokio."0.1.7".futures}".default = true; + mio."${deps.tokio."0.1.7".mio}".default = true; + tokio."0.1.7".default = (f.tokio."0.1.7".default or true); + tokio_executor."${deps.tokio."0.1.7".tokio_executor}".default = true; + tokio_fs."${deps.tokio."0.1.7".tokio_fs}".default = true; + tokio_io."${deps.tokio."0.1.7".tokio_io}".default = true; + tokio_reactor."${deps.tokio."0.1.7".tokio_reactor}".default = true; + tokio_tcp."${deps.tokio."0.1.7".tokio_tcp}".default = true; + tokio_threadpool."${deps.tokio."0.1.7".tokio_threadpool}".default = true; + tokio_timer."${deps.tokio."0.1.7".tokio_timer}".default = true; + tokio_udp."${deps.tokio."0.1.7".tokio_udp}".default = true; + }) [ + (features_.futures."${deps."tokio"."0.1.7"."futures"}" deps) + (features_.mio."${deps."tokio"."0.1.7"."mio"}" deps) + (features_.tokio_executor."${deps."tokio"."0.1.7"."tokio_executor"}" deps) + (features_.tokio_fs."${deps."tokio"."0.1.7"."tokio_fs"}" deps) + (features_.tokio_io."${deps."tokio"."0.1.7"."tokio_io"}" deps) + (features_.tokio_reactor."${deps."tokio"."0.1.7"."tokio_reactor"}" deps) + (features_.tokio_tcp."${deps."tokio"."0.1.7"."tokio_tcp"}" deps) + (features_.tokio_threadpool."${deps."tokio"."0.1.7"."tokio_threadpool"}" deps) + (features_.tokio_timer."${deps."tokio"."0.1.7"."tokio_timer"}" deps) + (features_.tokio_udp."${deps."tokio"."0.1.7"."tokio_udp"}" deps) + ]; + + +# end +# tokio-codec-0.1.1 + + crates.tokio_codec."0.1.1" = deps: { features?(features_.tokio_codec."0.1.1" deps {}) }: buildRustCrate { + crateName = "tokio-codec"; + version = "0.1.1"; + description = "Utilities for encoding and decoding frames.\n"; + authors = [ "Carl Lerche " "Bryan Burgers " ]; + sha256 = "0jc9lik540zyj4chbygg1rjh37m3zax8pd4bwcrwjmi1v56qwi4h"; + dependencies = mapFeatures features ([ + (crates."bytes"."${deps."tokio_codec"."0.1.1"."bytes"}" deps) + (crates."futures"."${deps."tokio_codec"."0.1.1"."futures"}" deps) + (crates."tokio_io"."${deps."tokio_codec"."0.1.1"."tokio_io"}" deps) + ]); + }; + features_.tokio_codec."0.1.1" = deps: f: updateFeatures f (rec { + bytes."${deps.tokio_codec."0.1.1".bytes}".default = true; + futures."${deps.tokio_codec."0.1.1".futures}".default = true; + tokio_codec."0.1.1".default = (f.tokio_codec."0.1.1".default or true); + tokio_io."${deps.tokio_codec."0.1.1".tokio_io}".default = true; + }) [ + (features_.bytes."${deps."tokio_codec"."0.1.1"."bytes"}" deps) + (features_.futures."${deps."tokio_codec"."0.1.1"."futures"}" deps) + (features_.tokio_io."${deps."tokio_codec"."0.1.1"."tokio_io"}" deps) + ]; + + +# end +# tokio-executor-0.1.5 + + crates.tokio_executor."0.1.5" = deps: { features?(features_.tokio_executor."0.1.5" deps {}) }: buildRustCrate { + crateName = "tokio-executor"; + version = "0.1.5"; + description = "Future execution primitives\n"; + authors = [ "Carl Lerche " ]; + sha256 = "15j2ybs8w38gncgbxkvp2qsp6wl62ibi3rns0vlwggx7svmx4bf3"; + dependencies = mapFeatures features ([ + (crates."futures"."${deps."tokio_executor"."0.1.5"."futures"}" deps) + ]); + }; + features_.tokio_executor."0.1.5" = deps: f: updateFeatures f (rec { + futures."${deps.tokio_executor."0.1.5".futures}".default = true; + tokio_executor."0.1.5".default = (f.tokio_executor."0.1.5".default or true); + }) [ + (features_.futures."${deps."tokio_executor"."0.1.5"."futures"}" deps) + ]; + + +# end +# tokio-fs-0.1.4 + + crates.tokio_fs."0.1.4" = deps: { features?(features_.tokio_fs."0.1.4" deps {}) }: buildRustCrate { + crateName = "tokio-fs"; + version = "0.1.4"; + description = "Filesystem API for Tokio.\n"; + authors = [ "Carl Lerche " ]; + sha256 = "05bpc1p1apb4jfw18i84agwwar57zn07d7smqvslpzagd9b3sd31"; + dependencies = mapFeatures features ([ + (crates."futures"."${deps."tokio_fs"."0.1.4"."futures"}" deps) + (crates."tokio_io"."${deps."tokio_fs"."0.1.4"."tokio_io"}" deps) + (crates."tokio_threadpool"."${deps."tokio_fs"."0.1.4"."tokio_threadpool"}" deps) + ]); + }; + features_.tokio_fs."0.1.4" = deps: f: updateFeatures f (rec { + futures."${deps.tokio_fs."0.1.4".futures}".default = true; + tokio_fs."0.1.4".default = (f.tokio_fs."0.1.4".default or true); + tokio_io."${deps.tokio_fs."0.1.4".tokio_io}".default = true; + tokio_threadpool."${deps.tokio_fs."0.1.4".tokio_threadpool}".default = true; + }) [ + (features_.futures."${deps."tokio_fs"."0.1.4"."futures"}" deps) + (features_.tokio_io."${deps."tokio_fs"."0.1.4"."tokio_io"}" deps) + (features_.tokio_threadpool."${deps."tokio_fs"."0.1.4"."tokio_threadpool"}" deps) + ]; + + +# end +# tokio-io-0.1.10 + + crates.tokio_io."0.1.10" = deps: { features?(features_.tokio_io."0.1.10" deps {}) }: buildRustCrate { + crateName = "tokio-io"; + version = "0.1.10"; + description = "Core I/O primitives for asynchronous I/O in Rust.\n"; + authors = [ "Carl Lerche " ]; + sha256 = "14d65rqa5rb2msgkz2xn40cavs4m7f4qyi7vnfv98v7f10l9wlay"; + dependencies = mapFeatures features ([ + (crates."bytes"."${deps."tokio_io"."0.1.10"."bytes"}" deps) + (crates."futures"."${deps."tokio_io"."0.1.10"."futures"}" deps) + (crates."log"."${deps."tokio_io"."0.1.10"."log"}" deps) + ]); + }; + features_.tokio_io."0.1.10" = deps: f: updateFeatures f (rec { + bytes."${deps.tokio_io."0.1.10".bytes}".default = true; + futures."${deps.tokio_io."0.1.10".futures}".default = true; + log."${deps.tokio_io."0.1.10".log}".default = true; + tokio_io."0.1.10".default = (f.tokio_io."0.1.10".default or true); + }) [ + (features_.bytes."${deps."tokio_io"."0.1.10"."bytes"}" deps) + (features_.futures."${deps."tokio_io"."0.1.10"."futures"}" deps) + (features_.log."${deps."tokio_io"."0.1.10"."log"}" deps) + ]; + + +# end +# tokio-reactor-0.1.7 + + crates.tokio_reactor."0.1.7" = deps: { features?(features_.tokio_reactor."0.1.7" deps {}) }: buildRustCrate { + crateName = "tokio-reactor"; + version = "0.1.7"; + description = "Event loop that drives Tokio I/O resources.\n"; + authors = [ "Carl Lerche " ]; + sha256 = "1ssrc6gic43lachv7jk97jxzw609sgcsrkwi7chf96sn7nqrhj0z"; + dependencies = mapFeatures features ([ + (crates."crossbeam_utils"."${deps."tokio_reactor"."0.1.7"."crossbeam_utils"}" deps) + (crates."futures"."${deps."tokio_reactor"."0.1.7"."futures"}" deps) + (crates."lazy_static"."${deps."tokio_reactor"."0.1.7"."lazy_static"}" deps) + (crates."log"."${deps."tokio_reactor"."0.1.7"."log"}" deps) + (crates."mio"."${deps."tokio_reactor"."0.1.7"."mio"}" deps) + (crates."num_cpus"."${deps."tokio_reactor"."0.1.7"."num_cpus"}" deps) + (crates."parking_lot"."${deps."tokio_reactor"."0.1.7"."parking_lot"}" deps) + (crates."slab"."${deps."tokio_reactor"."0.1.7"."slab"}" deps) + (crates."tokio_executor"."${deps."tokio_reactor"."0.1.7"."tokio_executor"}" deps) + (crates."tokio_io"."${deps."tokio_reactor"."0.1.7"."tokio_io"}" deps) + ]); + }; + features_.tokio_reactor."0.1.7" = deps: f: updateFeatures f (rec { + crossbeam_utils."${deps.tokio_reactor."0.1.7".crossbeam_utils}".default = true; + futures."${deps.tokio_reactor."0.1.7".futures}".default = true; + lazy_static."${deps.tokio_reactor."0.1.7".lazy_static}".default = true; + log."${deps.tokio_reactor."0.1.7".log}".default = true; + mio."${deps.tokio_reactor."0.1.7".mio}".default = true; + num_cpus."${deps.tokio_reactor."0.1.7".num_cpus}".default = true; + parking_lot."${deps.tokio_reactor."0.1.7".parking_lot}".default = true; + slab."${deps.tokio_reactor."0.1.7".slab}".default = true; + tokio_executor."${deps.tokio_reactor."0.1.7".tokio_executor}".default = true; + tokio_io."${deps.tokio_reactor."0.1.7".tokio_io}".default = true; + tokio_reactor."0.1.7".default = (f.tokio_reactor."0.1.7".default or true); + }) [ + (features_.crossbeam_utils."${deps."tokio_reactor"."0.1.7"."crossbeam_utils"}" deps) + (features_.futures."${deps."tokio_reactor"."0.1.7"."futures"}" deps) + (features_.lazy_static."${deps."tokio_reactor"."0.1.7"."lazy_static"}" deps) + (features_.log."${deps."tokio_reactor"."0.1.7"."log"}" deps) + (features_.mio."${deps."tokio_reactor"."0.1.7"."mio"}" deps) + (features_.num_cpus."${deps."tokio_reactor"."0.1.7"."num_cpus"}" deps) + (features_.parking_lot."${deps."tokio_reactor"."0.1.7"."parking_lot"}" deps) + (features_.slab."${deps."tokio_reactor"."0.1.7"."slab"}" deps) + (features_.tokio_executor."${deps."tokio_reactor"."0.1.7"."tokio_executor"}" deps) + (features_.tokio_io."${deps."tokio_reactor"."0.1.7"."tokio_io"}" deps) + ]; + + +# end +# tokio-tcp-0.1.2 + + crates.tokio_tcp."0.1.2" = deps: { features?(features_.tokio_tcp."0.1.2" deps {}) }: buildRustCrate { + crateName = "tokio-tcp"; + version = "0.1.2"; + description = "TCP bindings for tokio.\n"; + authors = [ "Carl Lerche " ]; + sha256 = "0yvfwybqnyca24aj9as8rgydamjq0wrd9xbxxkjcasvsdmsv6z1d"; + dependencies = mapFeatures features ([ + (crates."bytes"."${deps."tokio_tcp"."0.1.2"."bytes"}" deps) + (crates."futures"."${deps."tokio_tcp"."0.1.2"."futures"}" deps) + (crates."iovec"."${deps."tokio_tcp"."0.1.2"."iovec"}" deps) + (crates."mio"."${deps."tokio_tcp"."0.1.2"."mio"}" deps) + (crates."tokio_io"."${deps."tokio_tcp"."0.1.2"."tokio_io"}" deps) + (crates."tokio_reactor"."${deps."tokio_tcp"."0.1.2"."tokio_reactor"}" deps) + ]); + }; + features_.tokio_tcp."0.1.2" = deps: f: updateFeatures f (rec { + bytes."${deps.tokio_tcp."0.1.2".bytes}".default = true; + futures."${deps.tokio_tcp."0.1.2".futures}".default = true; + iovec."${deps.tokio_tcp."0.1.2".iovec}".default = true; + mio."${deps.tokio_tcp."0.1.2".mio}".default = true; + tokio_io."${deps.tokio_tcp."0.1.2".tokio_io}".default = true; + tokio_reactor."${deps.tokio_tcp."0.1.2".tokio_reactor}".default = true; + tokio_tcp."0.1.2".default = (f.tokio_tcp."0.1.2".default or true); + }) [ + (features_.bytes."${deps."tokio_tcp"."0.1.2"."bytes"}" deps) + (features_.futures."${deps."tokio_tcp"."0.1.2"."futures"}" deps) + (features_.iovec."${deps."tokio_tcp"."0.1.2"."iovec"}" deps) + (features_.mio."${deps."tokio_tcp"."0.1.2"."mio"}" deps) + (features_.tokio_io."${deps."tokio_tcp"."0.1.2"."tokio_io"}" deps) + (features_.tokio_reactor."${deps."tokio_tcp"."0.1.2"."tokio_reactor"}" deps) + ]; + + +# end +# tokio-threadpool-0.1.9 + + crates.tokio_threadpool."0.1.9" = deps: { features?(features_.tokio_threadpool."0.1.9" deps {}) }: buildRustCrate { + crateName = "tokio-threadpool"; + version = "0.1.9"; + description = "A task scheduler backed by a work-stealing thread pool.\n"; + authors = [ "Carl Lerche " ]; + sha256 = "0ipr0j79mhjjsvc0ma95sj07m0aiyq6rkwgvlalqwhinivl5d39g"; + dependencies = mapFeatures features ([ + (crates."crossbeam_deque"."${deps."tokio_threadpool"."0.1.9"."crossbeam_deque"}" deps) + (crates."crossbeam_utils"."${deps."tokio_threadpool"."0.1.9"."crossbeam_utils"}" deps) + (crates."futures"."${deps."tokio_threadpool"."0.1.9"."futures"}" deps) + (crates."log"."${deps."tokio_threadpool"."0.1.9"."log"}" deps) + (crates."num_cpus"."${deps."tokio_threadpool"."0.1.9"."num_cpus"}" deps) + (crates."rand"."${deps."tokio_threadpool"."0.1.9"."rand"}" deps) + (crates."tokio_executor"."${deps."tokio_threadpool"."0.1.9"."tokio_executor"}" deps) + ]); + }; + features_.tokio_threadpool."0.1.9" = deps: f: updateFeatures f (rec { + crossbeam_deque."${deps.tokio_threadpool."0.1.9".crossbeam_deque}".default = true; + crossbeam_utils."${deps.tokio_threadpool."0.1.9".crossbeam_utils}".default = true; + futures."${deps.tokio_threadpool."0.1.9".futures}".default = true; + log."${deps.tokio_threadpool."0.1.9".log}".default = true; + num_cpus."${deps.tokio_threadpool."0.1.9".num_cpus}".default = true; + rand."${deps.tokio_threadpool."0.1.9".rand}".default = true; + tokio_executor."${deps.tokio_threadpool."0.1.9".tokio_executor}".default = true; + tokio_threadpool."0.1.9".default = (f.tokio_threadpool."0.1.9".default or true); + }) [ + (features_.crossbeam_deque."${deps."tokio_threadpool"."0.1.9"."crossbeam_deque"}" deps) + (features_.crossbeam_utils."${deps."tokio_threadpool"."0.1.9"."crossbeam_utils"}" deps) + (features_.futures."${deps."tokio_threadpool"."0.1.9"."futures"}" deps) + (features_.log."${deps."tokio_threadpool"."0.1.9"."log"}" deps) + (features_.num_cpus."${deps."tokio_threadpool"."0.1.9"."num_cpus"}" deps) + (features_.rand."${deps."tokio_threadpool"."0.1.9"."rand"}" deps) + (features_.tokio_executor."${deps."tokio_threadpool"."0.1.9"."tokio_executor"}" deps) + ]; + + +# end +# tokio-timer-0.2.5 + + crates.tokio_timer."0.2.5" = deps: { features?(features_.tokio_timer."0.2.5" deps {}) }: buildRustCrate { + crateName = "tokio-timer"; + version = "0.2.5"; + description = "Timer facilities for Tokio\n"; + authors = [ "Carl Lerche " ]; + sha256 = "0jyhizvnpldkbqvqygrg0zd5zvfj9p0ywvjzf47iy632vq3qnwzm"; + dependencies = mapFeatures features ([ + (crates."futures"."${deps."tokio_timer"."0.2.5"."futures"}" deps) + (crates."tokio_executor"."${deps."tokio_timer"."0.2.5"."tokio_executor"}" deps) + ]); + }; + features_.tokio_timer."0.2.5" = deps: f: updateFeatures f (rec { + futures."${deps.tokio_timer."0.2.5".futures}".default = true; + tokio_executor."${deps.tokio_timer."0.2.5".tokio_executor}".default = true; + tokio_timer."0.2.5".default = (f.tokio_timer."0.2.5".default or true); + }) [ + (features_.futures."${deps."tokio_timer"."0.2.5"."futures"}" deps) + (features_.tokio_executor."${deps."tokio_timer"."0.2.5"."tokio_executor"}" deps) + ]; + + +# end +# tokio-udp-0.1.3 + + crates.tokio_udp."0.1.3" = deps: { features?(features_.tokio_udp."0.1.3" deps {}) }: buildRustCrate { + crateName = "tokio-udp"; + version = "0.1.3"; + description = "UDP bindings for tokio.\n"; + authors = [ "Carl Lerche " ]; + sha256 = "1g1x499vqvzwy7xfccr32vwymlx25zpmkx8ppqgifzqwrjnncajf"; + dependencies = mapFeatures features ([ + (crates."bytes"."${deps."tokio_udp"."0.1.3"."bytes"}" deps) + (crates."futures"."${deps."tokio_udp"."0.1.3"."futures"}" deps) + (crates."log"."${deps."tokio_udp"."0.1.3"."log"}" deps) + (crates."mio"."${deps."tokio_udp"."0.1.3"."mio"}" deps) + (crates."tokio_codec"."${deps."tokio_udp"."0.1.3"."tokio_codec"}" deps) + (crates."tokio_io"."${deps."tokio_udp"."0.1.3"."tokio_io"}" deps) + (crates."tokio_reactor"."${deps."tokio_udp"."0.1.3"."tokio_reactor"}" deps) + ]); + }; + features_.tokio_udp."0.1.3" = deps: f: updateFeatures f (rec { + bytes."${deps.tokio_udp."0.1.3".bytes}".default = true; + futures."${deps.tokio_udp."0.1.3".futures}".default = true; + log."${deps.tokio_udp."0.1.3".log}".default = true; + mio."${deps.tokio_udp."0.1.3".mio}".default = true; + tokio_codec."${deps.tokio_udp."0.1.3".tokio_codec}".default = true; + tokio_io."${deps.tokio_udp."0.1.3".tokio_io}".default = true; + tokio_reactor."${deps.tokio_udp."0.1.3".tokio_reactor}".default = true; + tokio_udp."0.1.3".default = (f.tokio_udp."0.1.3".default or true); + }) [ + (features_.bytes."${deps."tokio_udp"."0.1.3"."bytes"}" deps) + (features_.futures."${deps."tokio_udp"."0.1.3"."futures"}" deps) + (features_.log."${deps."tokio_udp"."0.1.3"."log"}" deps) + (features_.mio."${deps."tokio_udp"."0.1.3"."mio"}" deps) + (features_.tokio_codec."${deps."tokio_udp"."0.1.3"."tokio_codec"}" deps) + (features_.tokio_io."${deps."tokio_udp"."0.1.3"."tokio_io"}" deps) + (features_.tokio_reactor."${deps."tokio_udp"."0.1.3"."tokio_reactor"}" deps) + ]; + + +# end +# try-lock-0.2.2 + + crates.try_lock."0.2.2" = deps: { features?(features_.try_lock."0.2.2" deps {}) }: buildRustCrate { + crateName = "try-lock"; + version = "0.2.2"; + description = "A lightweight atomic lock."; + authors = [ "Sean McArthur " ]; + sha256 = "1k8xc0jpbrmzp0fwghdh6pwzjb9xx2p8yy0xxnnb8065smc5fsrv"; + }; + features_.try_lock."0.2.2" = deps: f: updateFeatures f (rec { + try_lock."0.2.2".default = (f.try_lock."0.2.2".default or true); + }) []; + + +# end +# unicase-1.4.2 + + crates.unicase."1.4.2" = deps: { features?(features_.unicase."1.4.2" deps {}) }: buildRustCrate { + crateName = "unicase"; + version = "1.4.2"; + description = "A case-insensitive wrapper around strings."; + authors = [ "Sean McArthur " ]; + sha256 = "0rbnhw2mnhcwrij3vczp0sl8zdfmvf2dlh8hly81kj7132kfj0mf"; + build = "build.rs"; + dependencies = mapFeatures features ([ +]); + + buildDependencies = mapFeatures features ([ + (crates."version_check"."${deps."unicase"."1.4.2"."version_check"}" deps) + ]); + features = mkFeatures (features."unicase"."1.4.2" or {}); + }; + features_.unicase."1.4.2" = deps: f: updateFeatures f (rec { + unicase = fold recursiveUpdate {} [ + { "1.4.2"."heapsize" = + (f.unicase."1.4.2"."heapsize" or false) || + (f.unicase."1.4.2".heap_size or false) || + (unicase."1.4.2"."heap_size" or false); } + { "1.4.2"."heapsize_plugin" = + (f.unicase."1.4.2"."heapsize_plugin" or false) || + (f.unicase."1.4.2".heap_size or false) || + (unicase."1.4.2"."heap_size" or false); } + { "1.4.2".default = (f.unicase."1.4.2".default or true); } + ]; + version_check."${deps.unicase."1.4.2".version_check}".default = true; + }) [ + (features_.version_check."${deps."unicase"."1.4.2"."version_check"}" deps) + ]; + + +# end +# unicase-2.1.0 + + crates.unicase."2.1.0" = deps: { features?(features_.unicase."2.1.0" deps {}) }: buildRustCrate { + crateName = "unicase"; + version = "2.1.0"; + description = "A case-insensitive wrapper around strings."; + authors = [ "Sean McArthur " ]; + sha256 = "1zzn16hh8fdx5pnbbnl32q8m2mh4vpd1jm9pdcv969ik83dw4byp"; + build = "build.rs"; + + buildDependencies = mapFeatures features ([ + (crates."version_check"."${deps."unicase"."2.1.0"."version_check"}" deps) + ]); + features = mkFeatures (features."unicase"."2.1.0" or {}); + }; + features_.unicase."2.1.0" = deps: f: updateFeatures f (rec { + unicase."2.1.0".default = (f.unicase."2.1.0".default or true); + version_check."${deps.unicase."2.1.0".version_check}".default = true; + }) [ + (features_.version_check."${deps."unicase"."2.1.0"."version_check"}" deps) + ]; + + +# end +# unicode-bidi-0.3.4 + + crates.unicode_bidi."0.3.4" = deps: { features?(features_.unicode_bidi."0.3.4" deps {}) }: buildRustCrate { + crateName = "unicode-bidi"; + version = "0.3.4"; + description = "Implementation of the Unicode Bidirectional Algorithm"; + authors = [ "The Servo Project Developers" ]; + sha256 = "0lcd6jasrf8p9p0q20qyf10c6xhvw40m2c4rr105hbk6zy26nj1q"; + libName = "unicode_bidi"; + dependencies = mapFeatures features ([ + (crates."matches"."${deps."unicode_bidi"."0.3.4"."matches"}" deps) + ]); + features = mkFeatures (features."unicode_bidi"."0.3.4" or {}); + }; + features_.unicode_bidi."0.3.4" = deps: f: updateFeatures f (rec { + matches."${deps.unicode_bidi."0.3.4".matches}".default = true; + unicode_bidi = fold recursiveUpdate {} [ + { "0.3.4"."flame" = + (f.unicode_bidi."0.3.4"."flame" or false) || + (f.unicode_bidi."0.3.4".flame_it or false) || + (unicode_bidi."0.3.4"."flame_it" or false); } + { "0.3.4"."flamer" = + (f.unicode_bidi."0.3.4"."flamer" or false) || + (f.unicode_bidi."0.3.4".flame_it or false) || + (unicode_bidi."0.3.4"."flame_it" or false); } + { "0.3.4"."serde" = + (f.unicode_bidi."0.3.4"."serde" or false) || + (f.unicode_bidi."0.3.4".with_serde or false) || + (unicode_bidi."0.3.4"."with_serde" or false); } + { "0.3.4".default = (f.unicode_bidi."0.3.4".default or true); } + ]; + }) [ + (features_.matches."${deps."unicode_bidi"."0.3.4"."matches"}" deps) + ]; + + +# end +# unicode-normalization-0.1.5 + + crates.unicode_normalization."0.1.5" = deps: { features?(features_.unicode_normalization."0.1.5" deps {}) }: buildRustCrate { + crateName = "unicode-normalization"; + version = "0.1.5"; + description = "This crate provides functions for normalization of\nUnicode strings, including Canonical and Compatible\nDecomposition and Recomposition, as described in\nUnicode Standard Annex #15.\n"; + authors = [ "kwantam " ]; + sha256 = "0hg29g86fca7b65mwk4sm5s838js6bqrl0gabadbazvbsgjam0j5"; + }; + features_.unicode_normalization."0.1.5" = deps: f: updateFeatures f (rec { + unicode_normalization."0.1.5".default = (f.unicode_normalization."0.1.5".default or true); + }) []; + + +# end +# unicode-width-0.1.4 + + crates.unicode_width."0.1.4" = deps: { features?(features_.unicode_width."0.1.4" deps {}) }: buildRustCrate { + crateName = "unicode-width"; + version = "0.1.4"; + description = "Determine displayed width of `char` and `str` types\naccording to Unicode Standard Annex #11 rules.\n"; + authors = [ "kwantam " ]; + sha256 = "1rp7a04icn9y5c0lm74nrd4py0rdl0af8bhdwq7g478n1xifpifl"; + features = mkFeatures (features."unicode_width"."0.1.4" or {}); + }; + features_.unicode_width."0.1.4" = deps: f: updateFeatures f (rec { + unicode_width."0.1.4".default = (f.unicode_width."0.1.4".default or true); + }) []; + + +# end +# unicode-xid-0.0.4 + + crates.unicode_xid."0.0.4" = deps: { features?(features_.unicode_xid."0.0.4" deps {}) }: buildRustCrate { + crateName = "unicode-xid"; + version = "0.0.4"; + description = "Determine whether characters have the XID_Start\nor XID_Continue properties according to\nUnicode Standard Annex #31.\n"; + authors = [ "erick.tryzelaar " "kwantam " ]; + sha256 = "1dc8wkkcd3s6534s5aw4lbjn8m67flkkbnajp5bl8408wdg8rh9v"; + features = mkFeatures (features."unicode_xid"."0.0.4" or {}); + }; + features_.unicode_xid."0.0.4" = deps: f: updateFeatures f (rec { + unicode_xid."0.0.4".default = (f.unicode_xid."0.0.4".default or true); + }) []; + + +# end +# unreachable-1.0.0 + + crates.unreachable."1.0.0" = deps: { features?(features_.unreachable."1.0.0" deps {}) }: buildRustCrate { + crateName = "unreachable"; + version = "1.0.0"; + description = "An unreachable code optimization hint in stable rust."; + authors = [ "Jonathan Reem " ]; + sha256 = "1am8czbk5wwr25gbp2zr007744fxjshhdqjz9liz7wl4pnv3whcf"; + dependencies = mapFeatures features ([ + (crates."void"."${deps."unreachable"."1.0.0"."void"}" deps) + ]); + }; + features_.unreachable."1.0.0" = deps: f: updateFeatures f (rec { + unreachable."1.0.0".default = (f.unreachable."1.0.0".default or true); + void."${deps.unreachable."1.0.0".void}".default = (f.void."${deps.unreachable."1.0.0".void}".default or false); + }) [ + (features_.void."${deps."unreachable"."1.0.0"."void"}" deps) + ]; + + +# end +# url-1.6.0 + + crates.url."1.6.0" = deps: { features?(features_.url."1.6.0" deps {}) }: buildRustCrate { + crateName = "url"; + version = "1.6.0"; + description = "URL library for Rust, based on the WHATWG URL Standard"; + authors = [ "The rust-url developers" ]; + sha256 = "1bvzl4dvjj84h46ai3x23wyafa2wwhchj08vr2brf25dxwc7mg18"; + dependencies = mapFeatures features ([ + (crates."idna"."${deps."url"."1.6.0"."idna"}" deps) + (crates."matches"."${deps."url"."1.6.0"."matches"}" deps) + (crates."percent_encoding"."${deps."url"."1.6.0"."percent_encoding"}" deps) + ]); + features = mkFeatures (features."url"."1.6.0" or {}); + }; + features_.url."1.6.0" = deps: f: updateFeatures f (rec { + idna."${deps.url."1.6.0".idna}".default = true; + matches."${deps.url."1.6.0".matches}".default = true; + percent_encoding."${deps.url."1.6.0".percent_encoding}".default = true; + url = fold recursiveUpdate {} [ + { "1.6.0"."encoding" = + (f.url."1.6.0"."encoding" or false) || + (f.url."1.6.0".query_encoding or false) || + (url."1.6.0"."query_encoding" or false); } + { "1.6.0"."heapsize" = + (f.url."1.6.0"."heapsize" or false) || + (f.url."1.6.0".heap_size or false) || + (url."1.6.0"."heap_size" or false); } + { "1.6.0".default = (f.url."1.6.0".default or true); } + ]; + }) [ + (features_.idna."${deps."url"."1.6.0"."idna"}" deps) + (features_.matches."${deps."url"."1.6.0"."matches"}" deps) + (features_.percent_encoding."${deps."url"."1.6.0"."percent_encoding"}" deps) + ]; + + +# end +# utf8-ranges-0.1.3 + + crates.utf8_ranges."0.1.3" = deps: { features?(features_.utf8_ranges."0.1.3" deps {}) }: buildRustCrate { + crateName = "utf8-ranges"; + version = "0.1.3"; + description = "Convert ranges of Unicode codepoints to UTF-8 byte ranges."; + authors = [ "Andrew Gallant " ]; + sha256 = "1cj548a91a93j8375p78qikaiam548xh84cb0ck8y119adbmsvbp"; + }; + features_.utf8_ranges."0.1.3" = deps: f: updateFeatures f (rec { + utf8_ranges."0.1.3".default = (f.utf8_ranges."0.1.3".default or true); + }) []; + + +# end +# uuid-0.7.1 + + crates.uuid."0.7.1" = deps: { features?(features_.uuid."0.7.1" deps {}) }: buildRustCrate { + crateName = "uuid"; + version = "0.7.1"; + description = "A library to generate and parse UUIDs."; + authors = [ "Ashley Mannix" "Christopher Armstrong" "Dylan DPC" "Hunar Roop Kahlon" ]; + sha256 = "1wh5izr7bssf1j8y3cawj4yfr5pz4cfxgsjlk2gs1vccc848qpbj"; + dependencies = mapFeatures features ([ + ] + ++ (if features.uuid."0.7.1".rand or false then [ (crates.rand."${deps."uuid"."0.7.1".rand}" deps) ] else [])); + features = mkFeatures (features."uuid"."0.7.1" or {}); + }; + features_.uuid."0.7.1" = deps: f: updateFeatures f (rec { + rand."${deps.uuid."0.7.1".rand}".default = true; + uuid = fold recursiveUpdate {} [ + { "0.7.1"."byteorder" = + (f.uuid."0.7.1"."byteorder" or false) || + (f.uuid."0.7.1".u128 or false) || + (uuid."0.7.1"."u128" or false); } + { "0.7.1"."md5" = + (f.uuid."0.7.1"."md5" or false) || + (f.uuid."0.7.1".v3 or false) || + (uuid."0.7.1"."v3" or false); } + { "0.7.1"."nightly" = + (f.uuid."0.7.1"."nightly" or false) || + (f.uuid."0.7.1".const_fn or false) || + (uuid."0.7.1"."const_fn" or false); } + { "0.7.1"."rand" = + (f.uuid."0.7.1"."rand" or false) || + (f.uuid."0.7.1".v3 or false) || + (uuid."0.7.1"."v3" or false) || + (f.uuid."0.7.1".v4 or false) || + (uuid."0.7.1"."v4" or false) || + (f.uuid."0.7.1".v5 or false) || + (uuid."0.7.1"."v5" or false); } + { "0.7.1"."sha1" = + (f.uuid."0.7.1"."sha1" or false) || + (f.uuid."0.7.1".v5 or false) || + (uuid."0.7.1"."v5" or false); } + { "0.7.1"."std" = + (f.uuid."0.7.1"."std" or false) || + (f.uuid."0.7.1".default or false) || + (uuid."0.7.1"."default" or false); } + { "0.7.1".default = (f.uuid."0.7.1".default or true); } + ]; + }) [ + (features_.rand."${deps."uuid"."0.7.1"."rand"}" deps) + ]; + + +# end +# vcpkg-0.2.2 + + crates.vcpkg."0.2.2" = deps: { features?(features_.vcpkg."0.2.2" deps {}) }: buildRustCrate { + crateName = "vcpkg"; + version = "0.2.2"; + description = "A library to find native dependencies in a vcpkg tree at build\ntime in order to be used in Cargo build scripts.\n"; + authors = [ "Jim McGrath " ]; + sha256 = "1fl5j0ksnwrnsrf1b1a9lqbjgnajdipq0030vsbhx81mb7d9478a"; + }; + features_.vcpkg."0.2.2" = deps: f: updateFeatures f (rec { + vcpkg."0.2.2".default = (f.vcpkg."0.2.2".default or true); + }) []; + + +# end +# vec_map-0.8.0 + + crates.vec_map."0.8.0" = deps: { features?(features_.vec_map."0.8.0" deps {}) }: buildRustCrate { + crateName = "vec_map"; + version = "0.8.0"; + description = "A simple map based on a vector for small integer keys"; + authors = [ "Alex Crichton " "Jorge Aparicio " "Alexis Beingessner " "Brian Anderson <>" "tbu- <>" "Manish Goregaokar <>" "Aaron Turon " "Adolfo Ochagavía <>" "Niko Matsakis <>" "Steven Fackler <>" "Chase Southwood " "Eduard Burtescu <>" "Florian Wilkens <>" "Félix Raimundo <>" "Tibor Benke <>" "Markus Siemens " "Josh Branchaud " "Huon Wilson " "Corey Farwell " "Aaron Liblong <>" "Nick Cameron " "Patrick Walton " "Felix S Klock II <>" "Andrew Paseltiner " "Sean McArthur " "Vadim Petrochenkov <>" ]; + sha256 = "07sgxp3cf1a4cxm9n3r27fcvqmld32bl2576mrcahnvm34j11xay"; + dependencies = mapFeatures features ([ +]); + features = mkFeatures (features."vec_map"."0.8.0" or {}); + }; + features_.vec_map."0.8.0" = deps: f: updateFeatures f (rec { + vec_map = fold recursiveUpdate {} [ + { "0.8.0"."serde" = + (f.vec_map."0.8.0"."serde" or false) || + (f.vec_map."0.8.0".eders or false) || + (vec_map."0.8.0"."eders" or false); } + { "0.8.0"."serde_derive" = + (f.vec_map."0.8.0"."serde_derive" or false) || + (f.vec_map."0.8.0".eders or false) || + (vec_map."0.8.0"."eders" or false); } + { "0.8.0".default = (f.vec_map."0.8.0".default or true); } + ]; + }) []; + + +# end +# version_check-0.1.3 + + crates.version_check."0.1.3" = deps: { features?(features_.version_check."0.1.3" deps {}) }: buildRustCrate { + crateName = "version_check"; + version = "0.1.3"; + description = "Tiny crate to check the version of the installed/running rustc."; + authors = [ "Sergio Benitez " ]; + sha256 = "0z635wdclv9bvafj11fpgndn7y79ibpsnc364pm61i1m4wwg8msg"; + }; + features_.version_check."0.1.3" = deps: f: updateFeatures f (rec { + version_check."0.1.3".default = (f.version_check."0.1.3".default or true); + }) []; + + +# end +# void-1.0.2 + + crates.void."1.0.2" = deps: { features?(features_.void."1.0.2" deps {}) }: buildRustCrate { + crateName = "void"; + version = "1.0.2"; + description = "The uninhabited void type for use in statically impossible cases."; + authors = [ "Jonathan Reem " ]; + sha256 = "0h1dm0dx8dhf56a83k68mijyxigqhizpskwxfdrs1drwv2cdclv3"; + features = mkFeatures (features."void"."1.0.2" or {}); + }; + features_.void."1.0.2" = deps: f: updateFeatures f (rec { + void = fold recursiveUpdate {} [ + { "1.0.2"."std" = + (f.void."1.0.2"."std" or false) || + (f.void."1.0.2".default or false) || + (void."1.0.2"."default" or false); } + { "1.0.2".default = (f.void."1.0.2".default or true); } + ]; + }) []; + + +# end +# want-0.0.6 + + crates.want."0.0.6" = deps: { features?(features_.want."0.0.6" deps {}) }: buildRustCrate { + crateName = "want"; + version = "0.0.6"; + description = "Detect when another Future wants a result."; + authors = [ "Sean McArthur " ]; + sha256 = "03cc2lndz531a4kgql1v9kppyb1yz2abcz5l52j1gg2nypmy3lh8"; + dependencies = mapFeatures features ([ + (crates."futures"."${deps."want"."0.0.6"."futures"}" deps) + (crates."log"."${deps."want"."0.0.6"."log"}" deps) + (crates."try_lock"."${deps."want"."0.0.6"."try_lock"}" deps) + ]); + }; + features_.want."0.0.6" = deps: f: updateFeatures f (rec { + futures."${deps.want."0.0.6".futures}".default = true; + log."${deps.want."0.0.6".log}".default = true; + try_lock."${deps.want."0.0.6".try_lock}".default = true; + want."0.0.6".default = (f.want."0.0.6".default or true); + }) [ + (features_.futures."${deps."want"."0.0.6"."futures"}" deps) + (features_.log."${deps."want"."0.0.6"."log"}" deps) + (features_.try_lock."${deps."want"."0.0.6"."try_lock"}" deps) + ]; + + +# end +# winapi-0.2.8 + + crates.winapi."0.2.8" = deps: { features?(features_.winapi."0.2.8" deps {}) }: buildRustCrate { + crateName = "winapi"; + version = "0.2.8"; + description = "Types and constants for WinAPI bindings. See README for list of crates providing function bindings."; + authors = [ "Peter Atashian " ]; + sha256 = "0a45b58ywf12vb7gvj6h3j264nydynmzyqz8d8rqxsj6icqv82as"; + }; + features_.winapi."0.2.8" = deps: f: updateFeatures f (rec { + winapi."0.2.8".default = (f.winapi."0.2.8".default or true); + }) []; + + +# end +# winapi-0.3.6 + + crates.winapi."0.3.6" = deps: { features?(features_.winapi."0.3.6" deps {}) }: buildRustCrate { + crateName = "winapi"; + version = "0.3.6"; + description = "Raw FFI bindings for all of Windows API."; + authors = [ "Peter Atashian " ]; + sha256 = "1d9jfp4cjd82sr1q4dgdlrkvm33zhhav9d7ihr0nivqbncr059m4"; + build = "build.rs"; + dependencies = (if kernel == "i686-pc-windows-gnu" then mapFeatures features ([ + (crates."winapi_i686_pc_windows_gnu"."${deps."winapi"."0.3.6"."winapi_i686_pc_windows_gnu"}" deps) + ]) else []) + ++ (if kernel == "x86_64-pc-windows-gnu" then mapFeatures features ([ + (crates."winapi_x86_64_pc_windows_gnu"."${deps."winapi"."0.3.6"."winapi_x86_64_pc_windows_gnu"}" deps) + ]) else []); + features = mkFeatures (features."winapi"."0.3.6" or {}); + }; + features_.winapi."0.3.6" = deps: f: updateFeatures f (rec { + winapi."0.3.6".default = (f.winapi."0.3.6".default or true); + winapi_i686_pc_windows_gnu."${deps.winapi."0.3.6".winapi_i686_pc_windows_gnu}".default = true; + winapi_x86_64_pc_windows_gnu."${deps.winapi."0.3.6".winapi_x86_64_pc_windows_gnu}".default = true; + }) [ + (features_.winapi_i686_pc_windows_gnu."${deps."winapi"."0.3.6"."winapi_i686_pc_windows_gnu"}" deps) + (features_.winapi_x86_64_pc_windows_gnu."${deps."winapi"."0.3.6"."winapi_x86_64_pc_windows_gnu"}" deps) + ]; + + +# end +# winapi-build-0.1.1 + + crates.winapi_build."0.1.1" = deps: { features?(features_.winapi_build."0.1.1" deps {}) }: buildRustCrate { + crateName = "winapi-build"; + version = "0.1.1"; + description = "Common code for build.rs in WinAPI -sys crates."; + authors = [ "Peter Atashian " ]; + sha256 = "1lxlpi87rkhxcwp2ykf1ldw3p108hwm24nywf3jfrvmff4rjhqga"; + libName = "build"; + }; + features_.winapi_build."0.1.1" = deps: f: updateFeatures f (rec { + winapi_build."0.1.1".default = (f.winapi_build."0.1.1".default or true); + }) []; + + +# end +# winapi-i686-pc-windows-gnu-0.4.0 + + crates.winapi_i686_pc_windows_gnu."0.4.0" = deps: { features?(features_.winapi_i686_pc_windows_gnu."0.4.0" deps {}) }: buildRustCrate { + crateName = "winapi-i686-pc-windows-gnu"; + version = "0.4.0"; + description = "Import libraries for the i686-pc-windows-gnu target. Please don't use this crate directly, depend on winapi instead."; + authors = [ "Peter Atashian " ]; + sha256 = "05ihkij18r4gamjpxj4gra24514can762imjzlmak5wlzidplzrp"; + build = "build.rs"; + }; + features_.winapi_i686_pc_windows_gnu."0.4.0" = deps: f: updateFeatures f (rec { + winapi_i686_pc_windows_gnu."0.4.0".default = (f.winapi_i686_pc_windows_gnu."0.4.0".default or true); + }) []; + + +# end +# winapi-x86_64-pc-windows-gnu-0.4.0 + + crates.winapi_x86_64_pc_windows_gnu."0.4.0" = deps: { features?(features_.winapi_x86_64_pc_windows_gnu."0.4.0" deps {}) }: buildRustCrate { + crateName = "winapi-x86_64-pc-windows-gnu"; + version = "0.4.0"; + description = "Import libraries for the x86_64-pc-windows-gnu target. Please don't use this crate directly, depend on winapi instead."; + authors = [ "Peter Atashian " ]; + sha256 = "0n1ylmlsb8yg1v583i4xy0qmqg42275flvbc51hdqjjfjcl9vlbj"; + build = "build.rs"; + }; + features_.winapi_x86_64_pc_windows_gnu."0.4.0" = deps: f: updateFeatures f (rec { + winapi_x86_64_pc_windows_gnu."0.4.0".default = (f.winapi_x86_64_pc_windows_gnu."0.4.0".default or true); + }) []; + + +# end +# ws2_32-sys-0.2.1 + + crates.ws2_32_sys."0.2.1" = deps: { features?(features_.ws2_32_sys."0.2.1" deps {}) }: buildRustCrate { + crateName = "ws2_32-sys"; + version = "0.2.1"; + description = "Contains function definitions for the Windows API library ws2_32. See winapi for types and constants."; + authors = [ "Peter Atashian " ]; + sha256 = "1zpy9d9wk11sj17fczfngcj28w4xxjs3b4n036yzpy38dxp4f7kc"; + libName = "ws2_32"; + build = "build.rs"; + dependencies = mapFeatures features ([ + (crates."winapi"."${deps."ws2_32_sys"."0.2.1"."winapi"}" deps) + ]); + + buildDependencies = mapFeatures features ([ + (crates."winapi_build"."${deps."ws2_32_sys"."0.2.1"."winapi_build"}" deps) + ]); + }; + features_.ws2_32_sys."0.2.1" = deps: f: updateFeatures f (rec { + winapi."${deps.ws2_32_sys."0.2.1".winapi}".default = true; + winapi_build."${deps.ws2_32_sys."0.2.1".winapi_build}".default = true; + ws2_32_sys."0.2.1".default = (f.ws2_32_sys."0.2.1".default or true); + }) [ + (features_.winapi."${deps."ws2_32_sys"."0.2.1"."winapi"}" deps) + (features_.winapi_build."${deps."ws2_32_sys"."0.2.1"."winapi_build"}" deps) + ]; + + +# end +# xattr-0.1.11 + + crates.xattr."0.1.11" = deps: { features?(features_.xattr."0.1.11" deps {}) }: buildRustCrate { + crateName = "xattr"; + version = "0.1.11"; + description = "unix extended filesystem attributes"; + authors = [ "Steven Allen " ]; + sha256 = "0v8wad18pdxv7242a7xs18i9hy00ih3vwajz7my05zbxx2ss01nx"; + dependencies = mapFeatures features ([ + (crates."libc"."${deps."xattr"."0.1.11"."libc"}" deps) + ]); + features = mkFeatures (features."xattr"."0.1.11" or {}); + }; + features_.xattr."0.1.11" = deps: f: updateFeatures f (rec { + libc."${deps.xattr."0.1.11".libc}".default = true; + xattr = fold recursiveUpdate {} [ + { "0.1.11"."unsupported" = + (f.xattr."0.1.11"."unsupported" or false) || + (f.xattr."0.1.11".default or false) || + (xattr."0.1.11"."default" or false); } + { "0.1.11".default = (f.xattr."0.1.11".default or true); } + ]; + }) [ + (features_.libc."${deps."xattr"."0.1.11"."libc"}" deps) + ]; + + +# end +} diff --git a/pkgs/tools/package-management/cargo-download/default.nix b/pkgs/tools/package-management/cargo-download/default.nix index 398e007c3702..1cb53a4b6c8d 100644 --- a/pkgs/tools/package-management/cargo-download/default.nix +++ b/pkgs/tools/package-management/cargo-download/default.nix @@ -1,7 +1,10 @@ { stdenv, lib, fetchgit, darwin, buildPlatform -, buildRustCrate, defaultCrateOverrides }: +, buildRustCrate, buildRustCrateHelpers, defaultCrateOverrides }: -((import ./Cargo.nix { inherit lib buildPlatform buildRustCrate fetchgit; }).cargo_download {}).override { +((import ./Cargo.nix { + inherit lib buildPlatform buildRustCrate buildRustCrateHelpers fetchgit; + cratesIO = import ./crates-io.nix { inherit lib buildRustCrate buildRustCrateHelpers; }; +}).cargo_download {}).override { crateOverrides = defaultCrateOverrides // { cargo-download = attrs: { buildInputs = lib.optional stdenv.isDarwin diff --git a/pkgs/tools/package-management/xbps/default.nix b/pkgs/tools/package-management/xbps/default.nix index 6a96e5b43b50..5954ca4959b6 100644 --- a/pkgs/tools/package-management/xbps/default.nix +++ b/pkgs/tools/package-management/xbps/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, pkgconfig, which, zlib, openssl_1_1, libarchive }: +{ stdenv, fetchFromGitHub, pkgconfig, which, zlib, openssl, libarchive }: stdenv.mkDerivation rec { pname = "xbps"; @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig which ]; - buildInputs = [ zlib openssl_1_1 libarchive ]; + buildInputs = [ zlib openssl libarchive ]; patches = [ ./cert-paths.patch ]; diff --git a/pkgs/tools/security/chaps/default.nix b/pkgs/tools/security/chaps/default.nix index 3c6f52a4c7f6..1270423e9285 100644 --- a/pkgs/tools/security/chaps/default.nix +++ b/pkgs/tools/security/chaps/default.nix @@ -80,5 +80,6 @@ stdenv.mkDerivation rec { maintainers = [ maintainers.tstrobel ]; platforms = [ "x86_64-linux" ]; license = licenses.bsd3; + broken = true; # build failure withn openssl 1.1 }; } diff --git a/pkgs/tools/security/tpm-luks/default.nix b/pkgs/tools/security/tpm-luks/default.nix index 7d0ff797336d..e7a82f6089e7 100644 --- a/pkgs/tools/security/tpm-luks/default.nix +++ b/pkgs/tools/security/tpm-luks/default.nix @@ -10,6 +10,11 @@ stdenv.mkDerivation rec { sha256 = "1ms2v57f13r9km6mvf9rha5ndmlmjvrz3mcikai6nzhpj0nrjz0w"; }; + patches = [ + ./openssl-1.1.patch + ./signed-ptr.patch + ]; + nativeBuildInputs = [ autoreconfHook ]; buildInputs = [ gawk trousers cryptsetup openssl ]; diff --git a/pkgs/tools/security/tpm-luks/openssl-1.1.patch b/pkgs/tools/security/tpm-luks/openssl-1.1.patch new file mode 100644 index 000000000000..10132242b345 --- /dev/null +++ b/pkgs/tools/security/tpm-luks/openssl-1.1.patch @@ -0,0 +1,63 @@ +diff --git a/swtpm-utils/lib/hmac.c b/swtpm-utils/lib/hmac.c +index 5545375..f9bedea 100644 +--- a/swtpm-utils/lib/hmac.c ++++ b/swtpm-utils/lib/hmac.c +@@ -381,15 +381,19 @@ uint32_t TSS_authhmac(unsigned char *digest, unsigned char *key, unsigned int ke + /****************************************************************************/ + uint32_t TSS_rawhmac(unsigned char *digest, const unsigned char *key, unsigned int keylen, ...) + { +- HMAC_CTX hmac; ++ HMAC_CTX* hmac; + unsigned int dlen; + unsigned char *data; + va_list argp; +- +-#ifdef HAVE_HMAC_CTX_CLEANUP +- HMAC_CTX_init(&hmac); +-#endif +- HMAC_Init(&hmac,key,keylen,EVP_sha1()); ++ ++ hmac = HMAC_CTX_new(); ++ ++ if (hmac == NULL) ++ { ++ return ERR_MEM_ERR; ++ } ++ ++ HMAC_Init_ex(hmac,key,keylen,EVP_sha1(),NULL); + + va_start(argp,keylen); + for (;;) +@@ -398,15 +402,11 @@ uint32_t TSS_rawhmac(unsigned char *digest, const unsigned char *key, unsigned i + if (dlen == 0) break; + data = (unsigned char *)va_arg(argp,unsigned char *); + if (data == NULL) return ERR_NULL_ARG; +- HMAC_Update(&hmac,data,dlen); ++ HMAC_Update(hmac,data,dlen); + } +- HMAC_Final(&hmac,digest,&dlen); ++ HMAC_Final(hmac,digest,&dlen); + +-#ifdef HAVE_HMAC_CTX_CLEANUP +- HMAC_CTX_cleanup(&hmac); +-#else +- HMAC_cleanup(&hmac); +-#endif ++ HMAC_CTX_free(hmac); + va_end(argp); + return 0; + } +diff --git a/swtpm-utils/lib/keys.c b/swtpm-utils/lib/keys.c +index 99691b6..6627a1f 100644 +--- a/swtpm-utils/lib/keys.c ++++ b/swtpm-utils/lib/keys.c +@@ -1249,8 +1249,7 @@ RSA *TSS_convpubkey(pubkeydata *k) + exp); + } + /* set up the RSA public key structure */ +- rsa->n = mod; +- rsa->e = exp; ++ RSA_set0_key(rsa, mod, exp, NULL); + return rsa; + } + diff --git a/pkgs/tools/security/tpm-luks/signed-ptr.patch b/pkgs/tools/security/tpm-luks/signed-ptr.patch new file mode 100644 index 000000000000..83e356a4ef9e --- /dev/null +++ b/pkgs/tools/security/tpm-luks/signed-ptr.patch @@ -0,0 +1,15 @@ +diff --git a/swtpm-utils/getcapability.c b/swtpm-utils/getcapability.c +index 7359ba3..17b4324 100644 +--- a/swtpm-utils/getcapability.c ++++ b/swtpm-utils/getcapability.c +@@ -480,7 +480,8 @@ int main(int argc, char *argv[]) + } + + if (c) { +- char pcrmap[4], *pf; ++ char pcrmap[4]; ++ unsigned char *pf; + + memcpy(pcrmap, ndp.pcrInfoRead.pcrSelection.pcrSelect, + ndp.pcrInfoRead.pcrSelection.sizeOfSelect); + diff --git a/pkgs/tools/security/tpm-tools/default.nix b/pkgs/tools/security/tpm-tools/default.nix index 1944cf236e1e..5a2dc6652ddc 100644 --- a/pkgs/tools/security/tpm-tools/default.nix +++ b/pkgs/tools/security/tpm-tools/default.nix @@ -13,6 +13,13 @@ stdenv.mkDerivation rec { sourceRoot = "."; + patches = [ + (fetchurl { + url = https://sources.debian.org/data/main/t/tpm-tools/1.3.9.1-0.1/debian/patches/05-openssl1.1_fix_data_mgmt.patch; + sha256 = "161yysw4wgy3spsz6p1d0ib0h5pnrqm8bdh1l71c4hz6a6wpcyxj"; + }) + ]; + nativeBuildInputs = [ perl ]; buildInputs = [ trousers openssl opencryptoki ]; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index a7bf2722341b..0ed990dab8ed 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -332,6 +332,7 @@ mapAliases ({ spice_protocol = spice-protocol; # added 2018-02-25 sqlite3_analyzer = sqlite-analyzer; # added 2018-05-22 sqliteInteractive = sqlite-interactive; # added 2014-12-06 + squid4 = squid; # added 2019-08-22 sshfsFuse = sshfs-fuse; # added 2016-09 suil-qt5 = suil; # added 2018-05-01 surf-webkit2 = surf; # added 2017-04-02 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f5b28b71e8ad..f2975e0946e2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1189,7 +1189,9 @@ in brltty = callPackage ../tools/misc/brltty { }; - bro = callPackage ../applications/networking/ids/bro { }; + bro = callPackage ../applications/networking/ids/bro { + openssl = openssl_1_0_2; + }; brook = callPackage ../tools/networking/brook { }; @@ -2116,7 +2118,9 @@ in cabextract = callPackage ../tools/archivers/cabextract { }; - cadaver = callPackage ../tools/networking/cadaver { }; + cadaver = callPackage ../tools/networking/cadaver { + openssl = openssl_1_0_2; + }; davix = callPackage ../tools/networking/davix { }; @@ -2640,7 +2644,9 @@ in dmd = callPackage ../development/compilers/dmd { }; - dmg2img = callPackage ../tools/misc/dmg2img { }; + dmg2img = callPackage ../tools/misc/dmg2img { + openssl = openssl_1_0_2; + }; docbook2odf = callPackage ../tools/typesetting/docbook2odf { }; @@ -2927,7 +2933,9 @@ in ethtool = callPackage ../tools/misc/ethtool { }; - ettercap = callPackage ../applications/networking/sniffers/ettercap { }; + ettercap = callPackage ../applications/networking/sniffers/ettercap { + openssl = openssl_1_0_2; + }; euca2ools = callPackage ../tools/virtualization/euca2ools { }; @@ -3629,7 +3637,9 @@ in gtk-vnc = callPackage ../tools/admin/gtk-vnc {}; - gtmess = callPackage ../applications/networking/instant-messengers/gtmess { }; + gtmess = callPackage ../applications/networking/instant-messengers/gtmess { + openssl = openssl_1_0_2; + }; gup = callPackage ../development/tools/build-managers/gup {}; @@ -3643,7 +3653,9 @@ in gupnp-tools = callPackage ../tools/networking/gupnp-tools {}; - gvpe = callPackage ../tools/networking/gvpe { }; + gvpe = callPackage ../tools/networking/gvpe { + openssl = openssl_1_0_2; + }; gvolicon = callPackage ../tools/audio/gvolicon {}; @@ -3908,7 +3920,9 @@ in packages = config.ihaskell.packages or (self: []); }; - imapproxy = callPackage ../tools/networking/imapproxy { }; + imapproxy = callPackage ../tools/networking/imapproxy { + openssl = openssl_1_0_2; + }; imapsync = callPackage ../tools/networking/imapsync { }; @@ -3972,7 +3986,9 @@ in buildGoPackage = buildGo110Package; }; - ipmitool = callPackage ../tools/system/ipmitool { }; + ipmitool = callPackage ../tools/system/ipmitool { + openssl = openssl_1_0_2; + }; ipmiutil = callPackage ../tools/system/ipmiutil {}; @@ -4386,26 +4402,18 @@ in nodejs-slim = nodejs-slim-10_x; - nodejs-10_x = callPackage ../development/web/nodejs/v10.nix { - openssl = openssl_1_1; - }; + + nodejs-10_x = callPackage ../development/web/nodejs/v10.nix { }; nodejs-slim-10_x = callPackage ../development/web/nodejs/v10.nix { enableNpm = false; - openssl = openssl_1_1; - }; - nodejs-11_x = callPackage ../development/web/nodejs/v11.nix { - openssl = openssl_1_1; }; + nodejs-11_x = callPackage ../development/web/nodejs/v11.nix { }; nodejs-slim-11_x = callPackage ../development/web/nodejs/v11.nix { enableNpm = false; - openssl = openssl_1_1; - }; - nodejs-12_x = callPackage ../development/web/nodejs/v12.nix { - openssl = openssl_1_1; }; + nodejs-12_x = callPackage ../development/web/nodejs/v12.nix { }; nodejs-slim-12_x = callPackage ../development/web/nodejs/v12.nix { enableNpm = false; - openssl = openssl_1_1; }; # Update this when adding the newest nodejs major version! @@ -4444,9 +4452,7 @@ in ldapvi = callPackage ../tools/misc/ldapvi { }; - ldns = callPackage ../development/libraries/ldns { - openssl = openssl_1_1; - }; + ldns = callPackage ../development/libraries/ldns { }; leafpad = callPackage ../applications/editors/leafpad { }; @@ -4520,7 +4526,7 @@ in libmongo-client = callPackage ../development/libraries/libmongo-client { }; - libmesode = callPackage ../development/libraries/libmesode { }; + libmesode = callPackage ../development/libraries/libmesode {}; libnabo = callPackage ../development/libraries/libnabo { }; @@ -5196,7 +5202,12 @@ in pam = if stdenv.isLinux then pam else null; }; - openssh_hpn = pkgs.appendToName "with-hpn" (openssh.override { hpnSupport = true; }); + openssh_hpn = pkgs.appendToName "with-hpn" (openssh.override { + hpnSupport = true; + # the hpn patchset does not yet support openssl>1.0.2 + # https://github.com/rapier1/openssh-portable/issues/14 + openssl = openssl_1_0_2; + }); openssh_gssapi = pkgs.appendToName "with-gssapi" (openssh.override { withGssapiPatches = true; @@ -5208,7 +5219,7 @@ in opentsdb = callPackage ../tools/misc/opentsdb {}; - openvpn = callPackage ../tools/networking/openvpn { }; + openvpn = callPackage ../tools/networking/openvpn {}; openvpn_learnaddress = callPackage ../tools/networking/openvpn/openvpn_learnaddress.nix { }; @@ -5226,7 +5237,9 @@ in opentracing-cpp = callPackage ../development/libraries/opentracing-cpp { }; - openvswitch = callPackage ../os-specific/linux/openvswitch { }; + openvswitch = callPackage ../os-specific/linux/openvswitch { + openssl = openssl_1_0_2; + }; optipng = callPackage ../tools/graphics/optipng { libpng = libpng12; @@ -5333,7 +5346,10 @@ in pngout = callPackage ../tools/graphics/pngout { }; - ipsecTools = callPackage ../os-specific/linux/ipsec-tools { flex = flex_2_5_35; }; + ipsecTools = callPackage ../os-specific/linux/ipsec-tools { + flex = flex_2_5_35; + openssl = openssl_1_0_2; + }; patch = gnupatch; @@ -5394,7 +5410,9 @@ in libusb = libusb1; }; - bully = callPackage ../tools/networking/bully { }; + bully = callPackage ../tools/networking/bully { + openssl = openssl_1_0_2; + }; pcapc = callPackage ../tools/networking/pcapc { }; @@ -5567,7 +5585,9 @@ in proxychains = callPackage ../tools/networking/proxychains { }; - proxytunnel = callPackage ../tools/misc/proxytunnel { }; + proxytunnel = callPackage ../tools/misc/proxytunnel { + openssl = openssl_1_0_2; + }; pws = callPackage ../tools/misc/pws { }; @@ -5659,7 +5679,6 @@ in qesteidutil = libsForQt5.callPackage ../tools/security/qesteidutil { } ; qdigidoc = libsForQt5.callPackage ../tools/security/qdigidoc { } ; - esteidfirefoxplugin = callPackage ../applications/networking/browsers/mozilla-plugins/esteidfirefoxplugin { }; qgrep = callPackage ../tools/text/qgrep {}; @@ -5743,7 +5762,9 @@ in rt = callPackage ../servers/rt { }; - rtmpdump = callPackage ../tools/video/rtmpdump { }; + rtmpdump = callPackage ../tools/video/rtmpdump { + openssl = openssl_1_0_2; + }; rtmpdump_gnutls = rtmpdump.override { gnutlsSupport = true; opensslSupport = false; }; reaverwps = callPackage ../tools/networking/reaver-wps {}; @@ -6029,7 +6050,9 @@ in shout = nodePackages.shout; - shellinabox = callPackage ../servers/shellinabox { }; + shellinabox = callPackage ../servers/shellinabox { + openssl = openssl_1_0_2; + }; shrikhand = callPackage ../data/fonts/shrikhand { }; @@ -6346,7 +6369,9 @@ in tcpdump = callPackage ../tools/networking/tcpdump { }; - tcpflow = callPackage ../tools/networking/tcpflow { }; + tcpflow = callPackage ../tools/networking/tcpflow { + openssl = openssl_1_0_2; + }; tcpkali = callPackage ../applications/networking/tcpkali { }; @@ -6420,7 +6445,7 @@ in tilix = callPackage ../applications/misc/tilix { }; - tinc_pre = callPackage ../tools/networking/tinc/pre.nix { }; + tinc_pre = callPackage ../tools/networking/tinc/pre.nix {}; tiny8086 = callPackage ../applications/virtualization/8086tiny { }; @@ -6463,7 +6488,6 @@ in toml2nix = (callPackage ../tools/toml2nix { }).toml2nix { }; tor = callPackage ../tools/security/tor { - openssl = openssl_1_1; # remove this, when libevent's openssl is upgraded to 1_1_0 or newer. libevent = libevent.override { sslSupport = false; @@ -6533,7 +6557,9 @@ in trilium = callPackage ../applications/office/trilium { }; - trousers = callPackage ../tools/security/trousers { }; + trousers = callPackage ../tools/security/trousers { + openssl = openssl_1_0_2; + }; trx = callPackage ../tools/audio/trx { }; @@ -6646,9 +6672,11 @@ in vbetool = callPackage ../tools/system/vbetool { }; - vde2 = callPackage ../tools/networking/vde2 { }; + vde2 = callPackage ../tools/networking/vde2 { + openssl = openssl_1_0_2; + }; - vboot_reference = callPackage ../tools/system/vboot_reference { }; + vboot_reference = callPackage ../tools/system/vboot_reference {}; vcftools = callPackage ../applications/science/biology/vcftools { }; @@ -6662,8 +6690,6 @@ in verilog = callPackage ../applications/science/electronics/verilog {}; - vfdecrypt = callPackage ../tools/misc/vfdecrypt { }; - video2midi = callPackage ../tools/audio/video2midi { pythonPackages = python3Packages; }; @@ -6734,7 +6760,9 @@ in inherit (python27Packages) ldap; }; - vtun = callPackage ../tools/networking/vtun { }; + vtun = callPackage ../tools/networking/vtun { + openssl = openssl_1_0_2; + }; waifu2x-converter-cpp = callPackage ../tools/graphics/waifu2x-converter-cpp { }; @@ -6853,7 +6881,7 @@ in uemacs = callPackage ../applications/editors/uemacs { }; - uftp = callPackage ../servers/uftp { }; + uftp = callPackage ../servers/uftp {}; uhttpmock = callPackage ../development/libraries/uhttpmock { }; @@ -10134,8 +10162,6 @@ in a52dec = callPackage ../development/libraries/a52dec { }; - aacskeys = callPackage ../development/libraries/aacskeys { }; - aalib = callPackage ../development/libraries/aalib { }; abseil-cpp = callPackage ../development/libraries/abseil-cpp { }; @@ -10296,7 +10322,7 @@ in boost_process = callPackage ../development/libraries/boost-process { }; - botan = callPackage ../development/libraries/botan { }; + botan = callPackage ../development/libraries/botan { openssl = openssl_1_0_2; }; botan2 = callPackage ../development/libraries/botan/2.0.nix { }; box2d = callPackage ../development/libraries/box2d { }; @@ -10424,7 +10450,9 @@ in cpp-ipfs-api = callPackage ../development/libraries/cpp-ipfs-api { }; - cpp-netlib = callPackage ../development/libraries/cpp-netlib { }; + cpp-netlib = callPackage ../development/libraries/cpp-netlib { + openssl = openssl_1_0_2; + }; uri = callPackage ../development/libraries/uri { }; cppcms = callPackage ../development/libraries/cppcms { }; @@ -12048,7 +12076,9 @@ in libksba = callPackage ../development/libraries/libksba { }; - libksi = callPackage ../development/libraries/libksi { }; + libksi = callPackage ../development/libraries/libksi { + openssl = openssl_1_0_2; + }; liblinear = callPackage ../development/libraries/liblinear { }; @@ -12645,7 +12675,9 @@ in ogre = ogre1_9; }; - mysocketw = callPackage ../development/libraries/mysocketw { }; + mysocketw = callPackage ../development/libraries/mysocketw { + openssl = openssl_1_0_2; + }; mythes = callPackage ../development/libraries/mythes { }; @@ -12674,7 +12706,9 @@ in neon = callPackage ../development/libraries/neon { }; - neon_0_29 = callPackage ../development/libraries/neon/0.29.nix { }; + neon_0_29 = callPackage ../development/libraries/neon/0.29.nix { + openssl = openssl_1_0_2; + }; nettle = callPackage ../development/libraries/nettle { }; @@ -12838,7 +12872,7 @@ in wolfssl = callPackage ../development/libraries/wolfssl { }; - openssl = openssl_1_0_2; + openssl = openssl_1_1; inherit (callPackages ../development/libraries/openssl { }) openssl_1_0_2 @@ -13047,20 +13081,6 @@ in developerBuild = true; }); - qt56 = recurseIntoAttrs (makeOverridable - (import ../development/libraries/qt-5/5.6) { - inherit newScope; - inherit stdenv fetchurl fetchpatch makeSetupHook makeWrapper; - bison = bison2; # error: too few arguments to function 'int yylex(... - inherit cups; - harfbuzz = harfbuzzFull; - inherit libGL; - inherit perl; - inherit (gst_all_1) gstreamer gst-plugins-base; - }); - - libsForQt56 = lib.makeScope qt56.newScope mkLibsForQt5; - qt59 = recurseIntoAttrs (makeOverridable (import ../development/libraries/qt-5/5.9) { inherit newScope; @@ -13695,7 +13715,9 @@ in tcllib = callPackage ../development/libraries/tcllib { }; - tcltls = callPackage ../development/libraries/tcltls { }; + tcltls = callPackage ../development/libraries/tcltls { + openssl = openssl_1_0_2; + }; tclx = callPackage ../development/libraries/tclx { }; @@ -13820,6 +13842,7 @@ in ucommon_openssl = callPackage ../development/libraries/ucommon { gnutls = null; + openssl = openssl_1_0_2; }; ucommon_gnutls = lowPrio (ucommon.override { @@ -14494,7 +14517,7 @@ in dico = callPackage ../servers/dico { }; dict = callPackage ../servers/dict { - libmaa = callPackage ../servers/dict/libmaa.nix {}; + libmaa = callPackage ../servers/dict/libmaa.nix {}; }; dictdDBs = recurseIntoAttrs (callPackages ../servers/dict/dictd-db.nix {}); @@ -14557,7 +14580,6 @@ in freeradius = callPackage ../servers/freeradius { }; freeswitch = callPackage ../servers/sip/freeswitch { - openssl = openssl_1_0_2; inherit (darwin.apple_sdk.frameworks) SystemConfiguration; }; @@ -14694,14 +14716,12 @@ in # We don't use `with` statement here on purpose! # See https://github.com/NixOS/nixpkgs/pull/10474/files#r42369334 modules = [ nginxModules.rtmp nginxModules.dav nginxModules.moreheaders ]; - openssl = openssl_1_1; }; nginxMainline = callPackage ../servers/http/nginx/mainline.nix { # We don't use `with` statement here on purpose! # See https://github.com/NixOS/nixpkgs/pull/10474/files#r42369334 modules = [ nginxModules.dav nginxModules.moreheaders ]; - openssl = openssl_1_1; }; nginxModules = callPackage ../servers/http/nginx/modules.nix { }; @@ -14817,6 +14837,7 @@ in mongodb = callPackage ../servers/nosql/mongodb { sasl = cyrus_sasl; boost = boost160; + openssl = openssl_1_0_2; inherit (darwin.apple_sdk.frameworks) Security; }; @@ -14891,7 +14912,7 @@ in oracleXE = callPackage ../servers/sql/oracle-xe { }; - softether_4_25 = callPackage ../servers/softether/4.25.nix { }; + softether_4_25 = callPackage ../servers/softether/4.25.nix { openssl = openssl_1_0_2; }; softether_4_29 = callPackage ../servers/softether/4.29.nix { }; softether = softether_4_29; @@ -15129,7 +15150,6 @@ in spawn_fcgi = callPackage ../servers/http/spawn-fcgi { }; squid = callPackage ../servers/squid { }; - squid4 = callPackage ../servers/squid/4.nix { }; sslh = callPackage ../servers/sslh { }; @@ -15183,9 +15203,13 @@ in virtlyst = libsForQt5.callPackage ../servers/web-apps/virtlyst { }; - virtuoso6 = callPackage ../servers/sql/virtuoso/6.x.nix { }; + virtuoso6 = callPackage ../servers/sql/virtuoso/6.x.nix { + openssl = openssl_1_0_2; + }; - virtuoso7 = callPackage ../servers/sql/virtuoso/7.x.nix { }; + virtuoso7 = callPackage ../servers/sql/virtuoso/7.x.nix { + openssl = openssl_1_0_2; + }; virtuoso = virtuoso6; @@ -15500,7 +15524,9 @@ in pcm = callPackage ../os-specific/linux/pcm { }; - ima-evm-utils = callPackage ../os-specific/linux/ima-evm-utils { }; + ima-evm-utils = callPackage ../os-specific/linux/ima-evm-utils { + openssl = openssl_1_0_2; + }; intel2200BGFirmware = callPackage ../os-specific/linux/firmware/intel2200BGFirmware { }; @@ -16127,7 +16153,9 @@ in quicktemplate = callPackage ../development/tools/quicktemplate { }; - gogoclient = callPackage ../os-specific/linux/gogoclient { }; + gogoclient = callPackage ../os-specific/linux/gogoclient { + openssl = openssl_1_0_2; + }; linux-pam = callPackage ../os-specific/linux/pam { }; @@ -16161,7 +16189,9 @@ in pam_pgsql = callPackage ../os-specific/linux/pam_pgsql { }; - pam_ssh_agent_auth = callPackage ../os-specific/linux/pam_ssh_agent_auth { }; + pam_ssh_agent_auth = callPackage ../os-specific/linux/pam_ssh_agent_auth { + openssl = openssl_1_0_2; + }; pam_u2f = callPackage ../os-specific/linux/pam_u2f { }; @@ -16914,7 +16944,6 @@ in powerline-rs = callPackage ../tools/misc/powerline-rs { inherit (darwin.apple_sdk.frameworks) Security; - openssl = openssl_1_1; }; profont = callPackage ../data/fonts/profont { }; @@ -17275,7 +17304,6 @@ in clightning = altcoins.clightning; lnd = altcoins.lnd; - bitcoin-xt = altcoins.bitcoin-xt; cryptop = altcoins.cryptop; jnetmap = callPackage ../applications/networking/jnetmap {}; @@ -17640,15 +17668,6 @@ in cutecom = libsForQt5.callPackage ../tools/misc/cutecom { }; - cutegram = - let callpkg = libsForQt56.callPackage; - in callpkg ../applications/networking/instant-messengers/telegram/cutegram rec { - libqtelegram-aseman-edition = callpkg ../applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition { }; - telegram-qml = callpkg ../applications/networking/instant-messengers/telegram/telegram-qml { - inherit libqtelegram-aseman-edition; - }; - }; - cvs = callPackage ../applications/version-management/cvs { }; cvsps = callPackage ../applications/version-management/cvsps { }; @@ -17850,7 +17869,9 @@ in electrum-ltc = callPackage ../applications/misc/electrum/ltc.nix { }; - elinks = callPackage ../applications/networking/browsers/elinks { }; + elinks = callPackage ../applications/networking/browsers/elinks { + openssl = openssl_1_0_2; + }; elvis = callPackage ../applications/editors/elvis { }; @@ -18157,7 +18178,9 @@ in fehlstart = callPackage ../applications/misc/fehlstart { }; - fetchmail = callPackage ../applications/misc/fetchmail { }; + fetchmail = callPackage ../applications/misc/fetchmail { + openssl = openssl_1_0_2; + }; fff = callPackage ../applications/misc/fff { }; @@ -18205,7 +18228,9 @@ in freewheeling = callPackage ../applications/audio/freewheeling { }; - fribid = callPackage ../applications/networking/browsers/mozilla-plugins/fribid { }; + fribid = callPackage ../applications/networking/browsers/mozilla-plugins/fribid { + openssl = openssl_1_0_2; + }; fritzing = libsForQt5.callPackage ../applications/science/electronics/fritzing { }; @@ -18489,7 +18514,7 @@ in get_iplayer = callPackage ../applications/misc/get_iplayer {}; - getxbook = callPackage ../applications/misc/getxbook {}; + getxbook = callPackage ../applications/misc/getxbook { }; ghq = gitAndTools.ghq; @@ -19473,7 +19498,6 @@ in monero = callPackage ../applications/altcoins/monero { inherit (darwin.apple_sdk.frameworks) CoreData IOKit PCSC; - boost = boost16x; }; monero-gui = libsForQt5.callPackage ../applications/altcoins/monero-gui { @@ -20346,10 +20370,6 @@ in rdup = callPackage ../tools/backup/rdup { }; - realpine = callPackage ../applications/networking/mailreaders/realpine { - tcl = tcl-8_5; - }; - reaper = callPackage ../applications/audio/reaper { }; recode = callPackage ../tools/text/recode { }; @@ -20520,8 +20540,6 @@ in ncurses = ncurses5; }; - ssvnc = callPackage ../applications/networking/remote/ssvnc { }; - stupidterm = callPackage ../applications/misc/stupidterm { gtk = gtk3; }; @@ -20820,8 +20838,6 @@ in ''; tdesktop = qt5.callPackage ../applications/networking/instant-messengers/telegram/tdesktop { }; - telegram-cli = callPackage ../applications/networking/instant-messengers/telegram/telegram-cli { }; - telepathy-gabble = callPackage ../applications/networking/instant-messengers/telepathy/gabble { }; telepathy-haze = callPackage ../applications/networking/instant-messengers/telepathy/haze {}; @@ -24474,7 +24490,9 @@ in wordpress = callPackage ../servers/web-apps/wordpress { }; - wraith = callPackage ../applications/networking/irc/wraith { }; + wraith = callPackage ../applications/networking/irc/wraith { + openssl = openssl_1_0_2; + }; wxmupen64plus = callPackage ../misc/emulators/wxmupen64plus { }; @@ -24634,7 +24652,7 @@ in inherit pkgs; }; - golden-cheetah = libsForQt56.callPackage ../applications/misc/golden-cheetah {}; + golden-cheetah = libsForQt5.callPackage ../applications/misc/golden-cheetah {}; linkchecker = callPackage ../tools/networking/linkchecker { }; @@ -24673,8 +24691,6 @@ in fpm2 = callPackage ../tools/security/fpm2 { }; - tw-rs = callPackage ../misc/tw-rs { }; - simplenote = callPackage ../applications/misc/simplenote { }; hy = callPackage ../development/interpreters/hy {}; diff --git a/pkgs/top-level/beam-packages.nix b/pkgs/top-level/beam-packages.nix index ef43f8784ae9..df9d3dbcff5b 100644 --- a/pkgs/top-level/beam-packages.nix +++ b/pkgs/top-level/beam-packages.nix @@ -1,4 +1,4 @@ -{ callPackage, wxGTK30 }: +{ callPackage, wxGTK30, openssl_1_0_2 }: rec { lib = callPackage ../development/beam-modules/lib.nix {}; @@ -16,6 +16,7 @@ rec { # These are standard Erlang versions, using the generic builder. erlangR18 = lib.callErlang ../development/interpreters/erlang/R18.nix { wxGTK = wxGTK30; + openssl = openssl_1_0_2; }; erlangR18_odbc = erlangR18.override { odbcSupport = true; }; erlangR18_javac = erlangR18.override { javacSupport = true; }; @@ -25,6 +26,7 @@ rec { erlangR18_nox = erlangR18.override { wxSupport = false; }; erlangR19 = lib.callErlang ../development/interpreters/erlang/R19.nix { wxGTK = wxGTK30; + openssl = openssl_1_0_2; }; erlangR19_odbc = erlangR19.override { odbcSupport = true; }; erlangR19_javac = erlangR19.override { javacSupport = true; }; diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 44fa8639516e..cd9d49364912 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -734,6 +734,8 @@ let propagatedBuildInputs = [ pkgs.openssl IPCRun3 ]; patchPhase = '' sed -i 's|my $openssl_bin = "openssl";|my $openssl_bin = "${pkgs.openssl}/bin/openssl";|' lib/Authen/ModAuthPubTkt.pm + # -dss1 doesn't exist for dgst in openssl 1.1, -sha1 can also handle DSA keys now + sed -i 's|-dss1|-sha1|' lib/Authen/ModAuthPubTkt.pm ''; meta = { description = "Generate Tickets (Signed HTTP Cookies) for mod_auth_pubtkt protected websites"; @@ -3405,8 +3407,8 @@ let url = mirror://cpan/authors/id/T/TT/TTAR/Crypt-OpenSSL-AES-0.02.tar.gz; sha256 = "b66fab514edf97fc32f58da257582704a210c2b35e297d5c31b7fa2ffd08e908"; }; - NIX_CFLAGS_COMPILE = "-I${pkgs.openssl.dev}/include"; - NIX_CFLAGS_LINK = "-L${pkgs.openssl.out}/lib -lcrypto"; + NIX_CFLAGS_COMPILE = "-I${pkgs.openssl_1_0_2.dev}/include"; + NIX_CFLAGS_LINK = "-L${pkgs.openssl_1_0_2.out}/lib -lcrypto"; meta = with stdenv.lib; { description = "Perl wrapper around OpenSSL's AES library"; license = with licenses; [ artistic1 gpl1Plus ]; @@ -3420,8 +3422,8 @@ let url = mirror://cpan/authors/id/K/KM/KMX/Crypt-OpenSSL-Bignum-0.09.tar.gz; sha256 = "1p22znbajq91lbk2k3yg12ig7hy5b4vy8igxwqkmbm4nhgxp4ki3"; }; - NIX_CFLAGS_COMPILE = "-I${pkgs.openssl.dev}/include"; - NIX_CFLAGS_LINK = "-L${pkgs.openssl.out}/lib -lcrypto"; + NIX_CFLAGS_COMPILE = "-I${pkgs.openssl_1_0_2.dev}/include"; + NIX_CFLAGS_LINK = "-L${pkgs.openssl_1_0_2.out}/lib -lcrypto"; }; CryptOpenSSLGuess = buildPerlPackage { @@ -3458,8 +3460,8 @@ let sha256 = "4173403ad4cf76732192099f833fbfbf3cd8104e0246b3844187ae384d2c5436"; }; propagatedBuildInputs = [ CryptOpenSSLRandom ]; - NIX_CFLAGS_COMPILE = "-I${pkgs.openssl.dev}/include"; - NIX_CFLAGS_LINK = "-L${pkgs.openssl.out}/lib -lcrypto"; + NIX_CFLAGS_COMPILE = "-I${pkgs.openssl_1_0_2.dev}/include"; + NIX_CFLAGS_LINK = "-L${pkgs.openssl_1_0_2.out}/lib -lcrypto"; buildInputs = [ CryptOpenSSLGuess ]; }; @@ -3488,7 +3490,7 @@ let url = mirror://cpan/authors/id/N/NA/NANIS/Crypt-SSLeay-0.72.tar.gz; sha256 = "1s7zm6ph37kg8jzaxnhi4ff4snxl7mi5h14arxbri0kp6s0lzlzm"; }; - makeMakerFlags = "--libpath=${pkgs.openssl.out}/lib --incpath=${pkgs.openssl.dev}/include"; + makeMakerFlags = "--libpath=${pkgs.openssl_1_0_2.out}/lib --incpath=${pkgs.openssl_1_0_2.dev}/include"; buildInputs = [ PathClass ]; propagatedBuildInputs = [ LWPProtocolHttps ]; }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a0914b0a5e29..4d7ac4075e5b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4130,11 +4130,7 @@ in { pgspecial = callPackage ../development/python-modules/pgspecial { }; - pgpy = callPackage ../development/python-modules/pgpy { - cryptography = self.cryptography.override { - openssl = pkgs.openssl_1_1; - }; - }; + pgpy = callPackage ../development/python-modules/pgpy { }; pickleshare = callPackage ../development/python-modules/pickleshare { };