Merge staging into staging-next

This commit is contained in:
Frederik Rietdijk 2020-02-11 07:59:53 +01:00
commit 1a6c3cb06b
33 changed files with 264 additions and 128 deletions

View File

@ -37,7 +37,7 @@ rustPlatform.buildRustPackage rec {
}; };
cargoSha256 = "17ldqr3asrdcsh4l29m3b5r37r5d0b3npq1lrgjmxb6vlx6a36qh"; cargoSha256 = "17ldqr3asrdcsh4l29m3b5r37r5d0b3npq1lrgjmxb6vlx6a36qh";
verifyCargoDeps = true; legacyCargoFetcher = false;
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "A fast line-oriented regex search tool, similar to ag and ack"; description = "A fast line-oriented regex search tool, similar to ag and ack";
@ -59,12 +59,19 @@ When the `Cargo.lock`, provided by upstream, is not in sync with the
added in `cargoPatches` will also be prepended to the patches in `patches` at added in `cargoPatches` will also be prepended to the patches in `patches` at
build-time. build-time.
When `verifyCargoDeps` is set to `true`, the build will also verify that the Setting `legacyCargoFetcher` to `false` enables the following behavior:
`cargoSha256` is not out of date by comparing the `Cargo.lock` file in both the
`cargoDeps` and `src`. Note that this option changes the value of `cargoSha256` 1. The `Cargo.lock` file is copied into the cargo vendor directory.
since it also copies the `Cargo.lock` in it. To avoid breaking 2. At buildtime, `buildRustPackage` will ensure that the `src` and `cargoSha256`
backward-compatibility this option is not enabled by default but hopefully will are consistent. This avoids errors where one but not the other is updated.
be in the future. 3. The builder will compress the vendored cargo src directory into a tar.gz file
for storage after vendoring, and decompress it before the build. This saves
disk space and enables hashed mirrors for Rust dependencies.
Note that this option changes the value of `cargoSha256`, so it is currently
defaulted to `false`. When updating a Rust package, please set it to `true`;
eventually we will default this to true and update the remaining Rust packages,
then delete the option from all individual Rust package expressions.
### Building a crate for a different target ### Building a crate for a different target

View File

@ -2,11 +2,11 @@
mkDerivation rec { mkDerivation rec {
pname = "drumkv1"; pname = "drumkv1";
version = "0.9.11"; version = "0.9.12";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/drumkv1/${pname}-${version}.tar.gz"; url = "mirror://sourceforge/drumkv1/${pname}-${version}.tar.gz";
sha256 = "1wnjn175l0mz51k9pjf3pdzv54c4jlh63saavld9lm6zfgfs13d7"; sha256 = "0hmnmk9vvi43wl6say0dg7j088h7mmwmfdwjhsq89c7i7cpg78da";
}; };
buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ]; buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];

View File

@ -105,5 +105,7 @@ mkDerivation rec {
license = lib.licenses.mit; license = lib.licenses.mit;
maintainers = with lib.maintainers; [ Phlogistique kamilchm ]; maintainers = with lib.maintainers; [ Phlogistique kamilchm ];
platforms = lib.platforms.linux; platforms = lib.platforms.linux;
# sonic-pi depends on ruby 2.4 which we don't support anymore
broken = true;
}; };
} }

View File

@ -11,8 +11,8 @@ rustPlatform.buildRustPackage {
sha256 = "11mz07735gxqfamjcjjmxya6swlvr1p77sgd377zjcmd6z54gwyf"; sha256 = "11mz07735gxqfamjcjjmxya6swlvr1p77sgd377zjcmd6z54gwyf";
}; };
cargoSha256 = "0qa8ypp5a7sf1gic482zh3i6s94w6k6bgmk5ynfvwi7g49ql7c4z"; cargoSha256 = "06ghcd4j751mdkzwb88nqwk8la4zdb137y0iqrkpykkfx0as43x3";
verifyCargoDeps = true; legacyCargoFetcher = false;
buildInputs = [ ncurses ]; buildInputs = [ ncurses ];

View File

@ -15,9 +15,9 @@ rustPlatform.buildRustPackage rec {
sha256 = "0pl5z0gx2ypkrgq7vj1cxj5iwj06vcd06x3b3nh0g7w7q7nl8pr4"; sha256 = "0pl5z0gx2ypkrgq7vj1cxj5iwj06vcd06x3b3nh0g7w7q7nl8pr4";
}; };
cargoSha256 = "0jbsz7r9n3jcgb9sd6pdjwzjf1b35qpfqw8ba8fjjmzfvs9qn6ld"; cargoSha256 = "1z4cb7rcb7ldj16xxynrjh4hg872rj39rbbp0vy15kdp3ifyi466";
verifyCargoDeps = true; legacyCargoFetcher = false;
buildInputs = with stdenv; lib.optional isDarwin Security; buildInputs = with stdenv; lib.optional isDarwin Security;

View File

@ -0,0 +1,45 @@
# Updated fetchCargo behavior
Changes to the `fetchcargo.nix` behavior that cause changes to the `cargoSha256`
are somewhat disruptive, so historically we've added conditionals to provide
backwards compatibility. We've now accumulated enough of these that it makes
sense to do a clean sweep updating hashes, and delete the conditionals in the
fetcher to simplify maintenance and implementation complexity. These
conditionals are:
1. When cargo vendors dependencies, it generates a config. Previously, we were
hard-coding our own config, but this fails if there are git dependencies. We
have conditional logic to sometimes copy the vendored cargo config in, and
sometimes not.
2. When a user updates the src package, they may forget to update the
`cargoSha256`. We have an opt-in conditional flag to add the `Cargo.lock`
into the vendor dir for inspection and compare at build-time, but it defaults
to false.
3. We were previously vendoring into a directory with a recursive hash, but
would like to vendor into a compressed tar.gz file instead, for the reasons
specified in the git commit message adding this feature.
## Migration plan
1. (DONE in this PR) Implement `fetchCargoTarball` as a separate, clean fetcher
implementation along-side `fetchcargo`. Rename `verifyCargoDeps` (default
false) to `legacyCargoFetcher` (default true), which switches the fetcher
implementation used. Replace `verifyCargoDeps = true;` with
`legacyCargoFetcher = false;` in Rust applications.
2. Send a treewide Rust PR that sets `legacyCargoFetcher = true;` in all Rust
applications not using this (which is ~200 of them), with a note to
maintainers to delete if updating the package. Change the default in
`buildRustPackage` to false.
3. Go through all Rust src packages deleting the `legacyCargoFetcher = false;`
line and re-computing the `cargoSha256`, merging as we go.
4. Delete the `fetchcargo.nix` implementation entirely and also remove:
- All overrides in application-level packages
- The `fetchcargo-default-config.toml` and conditionals around using it when
no `$CARGO_CONFIG` exists
- This README.md file

View File

@ -1,4 +1,4 @@
{ stdenv, cacert, git, rust, cargo, rustc, fetchcargo, buildPackages, windows }: { stdenv, cacert, git, rust, cargo, rustc, fetchcargo, fetchCargoTarball, buildPackages, windows }:
{ name ? "${args.pname}-${args.version}" { name ? "${args.pname}-${args.version}"
, cargoSha256 ? "unset" , cargoSha256 ? "unset"
@ -14,13 +14,13 @@
, cargoUpdateHook ? "" , cargoUpdateHook ? ""
, cargoDepsHook ? "" , cargoDepsHook ? ""
, cargoBuildFlags ? [] , cargoBuildFlags ? []
, # Set to true to verify if the cargo dependencies are up to date. # Please set to true on any Rust package updates. Once all packages set this
# This will change the value of cargoSha256. # to true, we will delete and make it the default. For details, see the Rust
verifyCargoDeps ? false # section on the manual and ./README.md.
, legacyCargoFetcher ? true
, buildType ? "release" , buildType ? "release"
, meta ? {} , meta ? {}
, target ? null , target ? null
, cargoVendorDir ? null , cargoVendorDir ? null
, ... } @ args: , ... } @ args:
@ -28,20 +28,27 @@ assert cargoVendorDir == null -> cargoSha256 != "unset";
assert buildType == "release" || buildType == "debug"; assert buildType == "release" || buildType == "debug";
let let
cargoFetcher = if legacyCargoFetcher
then fetchcargo
else fetchCargoTarball;
cargoDeps = if cargoVendorDir == null cargoDeps = if cargoVendorDir == null
then fetchcargo { then cargoFetcher {
inherit name src srcs sourceRoot unpackPhase cargoUpdateHook; inherit name src srcs sourceRoot unpackPhase cargoUpdateHook;
copyLockfile = verifyCargoDeps;
patches = cargoPatches; patches = cargoPatches;
sha256 = cargoSha256; sha256 = cargoSha256;
} }
else null; else null;
# If we're using the modern fetcher that always preserves the original Cargo.lock
# and have vendored deps, check them against the src attr for consistency.
validateCargoDeps = cargoSha256 != "unset" && !legacyCargoFetcher;
setupVendorDir = if cargoVendorDir == null setupVendorDir = if cargoVendorDir == null
then '' then ''
unpackFile "$cargoDeps" unpackFile "$cargoDeps"
cargoDepsCopy=$(stripHash $(basename $cargoDeps)) cargoDepsCopy=$(stripHash $cargoDeps)
chmod -R +w "$cargoDepsCopy"
'' ''
else '' else ''
cargoDepsCopy="$sourceRoot/${cargoVendorDir}" cargoDepsCopy="$sourceRoot/${cargoVendorDir}"
@ -54,9 +61,14 @@ let
ccForHost="${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; ccForHost="${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc";
cxxForHost="${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++"; cxxForHost="${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++";
releaseDir = "target/${rustTarget}/${buildType}"; releaseDir = "target/${rustTarget}/${buildType}";
# Fetcher implementation choice should not be part of the hash in final
# derivation; only the cargoSha256 input matters.
filteredArgs = builtins.removeAttrs args [ "legacyCargoFetcher" ];
in in
stdenv.mkDerivation (args // { stdenv.mkDerivation (filteredArgs // {
inherit cargoDeps; inherit cargoDeps;
patchRegistryDeps = ./patch-registry-deps; patchRegistryDeps = ./patch-registry-deps;
@ -95,14 +107,13 @@ stdenv.mkDerivation (args // {
''} ''}
EOF EOF
unset cargoDepsCopy
export RUST_LOG=${logLevel} export RUST_LOG=${logLevel}
'' + stdenv.lib.optionalString verifyCargoDeps '' '' + stdenv.lib.optionalString validateCargoDeps ''
if ! diff source/Cargo.lock $cargoDeps/Cargo.lock ; then if ! diff source/Cargo.lock $cargoDepsCopy/Cargo.lock ; then
echo echo
echo "ERROR: cargoSha256 is out of date" echo "ERROR: cargoSha256 is out of date"
echo echo
echo "Cargo.lock is not the same in $cargoDeps" echo "Cargo.lock is not the same in $cargoDepsCopy"
echo echo
echo "To fix the issue:" echo "To fix the issue:"
echo '1. Use "1111111111111111111111111111111111111111111111111111" as the cargoSha256 value' echo '1. Use "1111111111111111111111111111111111111111111111111111" as the cargoSha256 value'
@ -112,6 +123,8 @@ stdenv.mkDerivation (args // {
exit 1 exit 1
fi fi
'' + ''
unset cargoDepsCopy
'' + (args.postUnpack or ""); '' + (args.postUnpack or "");
configurePhase = args.configurePhase or '' configurePhase = args.configurePhase or ''

View File

@ -0,0 +1,81 @@
{ stdenv, cacert, git, cargo, python3 }:
let cargo-vendor-normalise = stdenv.mkDerivation {
name = "cargo-vendor-normalise";
src = ./cargo-vendor-normalise.py;
nativeBuildInputs = [ python3.pkgs.wrapPython ];
dontUnpack = true;
installPhase = "install -D $src $out/bin/cargo-vendor-normalise";
pythonPath = [ python3.pkgs.toml ];
postFixup = "wrapPythonPrograms";
doInstallCheck = true;
installCheckPhase = ''
# check that ./fetchcargo-default-config.toml is a fix point
reference=${./fetchcargo-default-config.toml}
< $reference $out/bin/cargo-vendor-normalise > test;
cmp test $reference
'';
preferLocalBuild = true;
};
in
{ name ? "cargo-deps"
, src ? null
, srcs ? []
, patches ? []
, sourceRoot
, sha256
, cargoUpdateHook ? ""
, ...
} @ args:
stdenv.mkDerivation ({
name = "${name}-vendor.tar.gz";
nativeBuildInputs = [ cacert git cargo-vendor-normalise cargo ];
phases = "unpackPhase patchPhase buildPhase installPhase";
buildPhase = ''
# Ensure deterministic Cargo vendor builds
export SOURCE_DATE_EPOCH=1
if [[ ! -f Cargo.lock ]]; then
echo
echo "ERROR: The Cargo.lock file doesn't exist"
echo
echo "Cargo.lock is needed to make sure that cargoSha256 doesn't change"
echo "when the registry is updated."
echo
exit 1
fi
# Keep the original around for copyLockfile
cp Cargo.lock Cargo.lock.orig
export CARGO_HOME=$(mktemp -d cargo-home.XXX)
CARGO_CONFIG=$(mktemp cargo-config.XXXX)
${cargoUpdateHook}
cargo vendor $name | cargo-vendor-normalise > $CARGO_CONFIG
# Add the Cargo.lock to allow hash invalidation
cp Cargo.lock.orig $name/Cargo.lock
# Packages with git dependencies generate non-default cargo configs, so
# always install it rather than trying to write a standard default template.
install -D $CARGO_CONFIG $name/.cargo/config;
'';
# Build a reproducible tar, per instructions at https://reproducible-builds.org/docs/archives/
installPhase = ''
tar --owner=0 --group=0 --numeric-owner --format=gnu \
--sort=name --mtime="@$SOURCE_DATE_EPOCH" \
-czf $out $name
'';
outputHashAlgo = "sha256";
outputHash = sha256;
impureEnvVars = stdenv.lib.fetchers.proxyImpureEnvVars;
} // (builtins.removeAttrs args [
"name" "sha256" "cargoUpdateHook"
]))

View File

@ -25,12 +25,18 @@
inherit rustc cargo; inherit rustc cargo;
}; };
fetchCargoTarball = buildPackages.callPackage ../../../build-support/rust/fetchCargoTarball.nix {
inherit cargo;
};
# N.B. This is a legacy fetcher implementation that is being phased out and deleted.
# See ../../../build-support/rust/README.md for details.
fetchcargo = buildPackages.callPackage ../../../build-support/rust/fetchcargo.nix { fetchcargo = buildPackages.callPackage ../../../build-support/rust/fetchcargo.nix {
inherit cargo; inherit cargo;
}; };
buildRustPackage = callPackage ../../../build-support/rust { buildRustPackage = callPackage ../../../build-support/rust {
inherit rustc cargo fetchcargo; inherit rustc cargo fetchcargo fetchCargoTarball;
}; };
rustcSrc = callPackage ./rust-src.nix { rustcSrc = callPackage ./rust-src.nix {

View File

@ -26,7 +26,6 @@ let
generic = { version, sha256 }: let generic = { version, sha256 }: let
ver = version; ver = version;
tag = ver.gitTag; tag = ver.gitTag;
atLeast25 = lib.versionAtLeast ver.majMin "2.5";
atLeast27 = lib.versionAtLeast ver.majMin "2.7"; atLeast27 = lib.versionAtLeast ver.majMin "2.7";
baseruby = self.override { baseruby = self.override {
useRailsExpress = false; useRailsExpress = false;
@ -77,14 +76,13 @@ let
nativeBuildInputs = [ autoreconfHook bison ] nativeBuildInputs = [ autoreconfHook bison ]
++ (op docSupport groff) ++ (op docSupport groff)
++ op (stdenv.buildPlatform != stdenv.hostPlatform) buildPackages.ruby; ++ op (stdenv.buildPlatform != stdenv.hostPlatform) buildPackages.ruby;
buildInputs = buildInputs = [ autoconf ]
(op fiddleSupport libffi) ++ (op fiddleSupport libffi)
++ (ops cursesSupport [ ncurses readline ]) ++ (ops cursesSupport [ ncurses readline ])
++ (op zlibSupport zlib) ++ (op zlibSupport zlib)
++ (op opensslSupport openssl) ++ (op opensslSupport openssl)
++ (op gdbmSupport gdbm) ++ (op gdbmSupport gdbm)
++ (op yamlSupport libyaml) ++ (op yamlSupport libyaml)
++ (op atLeast25 autoconf)
# Looks like ruby fails to build on darwin without readline even if curses # Looks like ruby fails to build on darwin without readline even if curses
# support is not enabled, so add readline to the build inputs if curses # support is not enabled, so add readline to the build inputs if curses
# support is disabled (if it's enabled, we already have it) and we're # support is disabled (if it's enabled, we already have it) and we're
@ -106,15 +104,10 @@ let
cp -r ${rubygems}/test/rubygems $sourceRoot/test cp -r ${rubygems}/test/rubygems $sourceRoot/test
''; '';
postPatch = if atLeast25 then '' postPatch = ''
sed -i configure.ac -e '/config.guess/d' sed -i configure.ac -e '/config.guess/d'
cp --remove-destination ${config}/config.guess tool/ cp --remove-destination ${config}/config.guess tool/
cp --remove-destination ${config}/config.sub tool/ cp --remove-destination ${config}/config.sub tool/
''
else opString useRailsExpress ''
sed -i configure.in -e '/config.guess/d'
cp ${config}/config.guess tool/
cp ${config}/config.sub tool/
''; '';
# Force the revision.h generation. Somehow `revision.tmp` is an empty # Force the revision.h generation. Somehow `revision.tmp` is an empty
@ -230,14 +223,6 @@ let
) args; in self; ) args; in self;
in { in {
ruby_2_4 = generic {
version = rubyVersion "2" "4" "9" "";
sha256 = {
src = "1bn6n5b920qy3lsx99jr8495jkc3sg89swgb96d5fgd579g6p6zr";
git = "066kb1iki7mx7qkm10xhj5b6v8s47wg68v43l3nc36y2hyim1w2c";
};
};
ruby_2_5 = generic { ruby_2_5 = generic {
version = rubyVersion "2" "5" "7" ""; version = rubyVersion "2" "5" "7" "";
sha256 = { sha256 = {

View File

@ -1,25 +1,25 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, python3 { stdenv, fetchFromGitHub, cmake, pkgconfig, python3
, zlib, libssh2, openssl, http-parser, curl , zlib, libssh2, openssl, http-parser
, libiconv, Security , libiconv, Security
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libgit2"; pname = "libgit2";
version = "0.27.8"; version = "0.28.4";
# keep the version in sync with pythonPackages.pygit2 and libgit2-glib # keep the version in sync with python3.pkgs.pygit2 and libgit2-glib
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "libgit2"; owner = "libgit2";
repo = "libgit2"; repo = "libgit2";
rev = "v${version}"; rev = "v${version}";
sha256 = "0wzx8nkyy9m7mx6cks58chjd4289vjsw97mxm9w6f1ggqsfnmbr9"; sha256 = "171b25aym4q88bidc4c76y4l6jmdwifm3q9zjqsll0wjhlkycfy1";
}; };
cmakeFlags = [ "-DTHREADSAFE=ON" ]; cmakeFlags = [ "-DTHREADSAFE=ON" ];
nativeBuildInputs = [ cmake python3 pkgconfig ]; nativeBuildInputs = [ cmake python3 pkgconfig ];
buildInputs = [ zlib libssh2 openssl http-parser curl ] buildInputs = [ zlib libssh2 openssl http-parser ]
++ stdenv.lib.optional stdenv.isDarwin Security; ++ stdenv.lib.optional stdenv.isDarwin Security;
propagatedBuildInputs = stdenv.lib.optional (!stdenv.isLinux) libiconv; propagatedBuildInputs = stdenv.lib.optional (!stdenv.isLinux) libiconv;

View File

@ -28,7 +28,9 @@ stdenv.mkDerivation {
}; };
outputs = [ "bin" "dev" "out" "man" "devdoc" ]; outputs = [ "bin" "dev" "out" "man" "devdoc" ];
# Not normally useful docs.
outputInfo = "devdoc"; outputInfo = "devdoc";
outputDoc = "devdoc";
patches = [ ./nix-ssl-cert-file.patch ] patches = [ ./nix-ssl-cert-file.patch ]
# Disable native add_system_trust. # Disable native add_system_trust.

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, pkgconfig, libusb1, libiconv }: { stdenv, fetchurl, pkgconfig, libusb1, libiconv }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libmtp-1.1.16"; name = "libmtp-1.1.17";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/libmtp/${name}.tar.gz"; url = "mirror://sourceforge/libmtp/${name}.tar.gz";
sha256 = "185vh9bds6dcy00ycggg69g4v7m3api40zv8vrcfb3fk3vfzjs2v"; sha256 = "1p3r38nvdip40ab1h4scj3mzfjkx6kd14szjqyw9r6wz5pslr8zq";
}; };
outputs = [ "bin" "dev" "out" ]; outputs = [ "bin" "dev" "out" ];

View File

@ -14,6 +14,15 @@ stdenv.mkDerivation rec {
buildInputs = [ openssl zlib ] buildInputs = [ openssl zlib ]
++ stdenv.lib.optional stdenv.hostPlatform.isMinGW windows.mingw_w64; ++ stdenv.lib.optional stdenv.hostPlatform.isMinGW windows.mingw_w64;
patches = [
# not able to use fetchpatch here: infinite recursion
(fetchurl {
name = "CVE-2019-17498.patch";
url = "https://github.com/libssh2/libssh2/pull/402.patch";
sha256 = "1n9s2mcz5dkw0xpm3c5x4hzj8bar4i6z0pr1rmqjplhfg888vdvc";
})
];
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "A client-side C library implementing the SSH2 protocol"; description = "A client-side C library implementing the SSH2 protocol";
homepage = https://www.libssh2.org; homepage = https://www.libssh2.org;

View File

@ -5,7 +5,7 @@ let
url = http://dev.gentoo.org/~polynomial-c/mozilla/nss-3.15.4-pem-support-20140109.patch.xz; url = http://dev.gentoo.org/~polynomial-c/mozilla/nss-3.15.4-pem-support-20140109.patch.xz;
sha256 = "10ibz6y0hknac15zr6dw4gv9nb5r5z9ym6gq18j3xqx7v7n3vpdw"; sha256 = "10ibz6y0hknac15zr6dw4gv9nb5r5z9ym6gq18j3xqx7v7n3vpdw";
}; };
version = "3.48"; version = "3.49.2";
underscoreVersion = builtins.replaceStrings ["."] ["_"] version; underscoreVersion = builtins.replaceStrings ["."] ["_"] version;
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
@ -14,7 +14,7 @@ in stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "mirror://mozilla/security/nss/releases/NSS_${underscoreVersion}_RTM/src/${pname}-${version}.tar.gz"; url = "mirror://mozilla/security/nss/releases/NSS_${underscoreVersion}_RTM/src/${pname}-${version}.tar.gz";
sha256 = "1b7qs1q7jqhw9dvkdznanzhc5dyq4bwx0biywszy3qx4hqm8571z"; sha256 = "1ck0c4ikr0d747pn63h62b2iqzfgi0yzd25aw95hs9797hn519zs";
}; };
depsBuildBuild = [ buildPackages.stdenv.cc ]; depsBuildBuild = [ buildPackages.stdenv.cc ];

View File

@ -6,11 +6,11 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "sqlite-analyzer"; pname = "sqlite-analyzer";
version = "3.30.0"; version = "3.31.0";
src = assert version == sqlite.version; fetchurl { src = assert version == sqlite.version; fetchurl {
url = "https://sqlite.org/2019/sqlite-src-${archiveVersion version}.zip"; url = "https://sqlite.org/2020/sqlite-src-${archiveVersion version}.zip";
sha256 = "0d4i87q0f618pmrgax0mr5x7m8bywikrwjvixag3biyhgl5rx7fd"; sha256 = "1dz3s3q9gsxxfj9wp4lqndzpwd1hcvm42yqn02p0l0bs6bw0mp5l";
}; };
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [ unzip ];

View File

@ -10,12 +10,12 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "sqlite"; pname = "sqlite";
version = "3.30.1"; version = "3.31.0";
# NB! Make sure to update analyzer.nix src (in the same directory). # NB! Make sure to update analyzer.nix src (in the same directory).
src = fetchurl { src = fetchurl {
url = "https://sqlite.org/2019/sqlite-autoconf-${archiveVersion version}.tar.gz"; url = "https://sqlite.org/2020/sqlite-autoconf-${archiveVersion version}.tar.gz";
sha256 = "0q4f57a5995wz9c7dfiqy9zwl0kn0b900nxwinqa3llv13dm0nlc"; sha256 = "1w7i954349sjd5a6rvy118prra43k07y9hy8rpajs6vmjmnnx7bw";
}; };
outputs = [ "bin" "dev" "out" ]; outputs = [ "bin" "dev" "out" ];

View File

@ -7,13 +7,13 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "lxml"; pname = "lxml";
version = "4.4.2"; version = "4.5.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = pname; owner = pname;
repo = pname; repo = pname;
rev = "${pname}-${version}"; rev = "${pname}-${version}";
sha256 = "0h4axgcghshcvh1nn39l64xxhylglm3b00hh2rbi1ifvly5mx24f"; sha256 = "1i3bhg8xb502afq4ar3kgvvi1hy83l4af2gznfwqvb5b221fr7ak";
}; };
# setuptoolsBuildPhase needs dependencies to be passed through nativeBuildInputs # setuptoolsBuildPhase needs dependencies to be passed through nativeBuildInputs

View File

@ -14,14 +14,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "pip"; pname = "pip";
version = "19.3.1"; version = "20.0.2";
format = "other"; format = "other";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "pypa"; owner = "pypa";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "079gz0v37ah1l4i5iwyfb0d3mni422yv5ynnxa0wcqpnvkc7sfnw"; sha256 = "1jj0qa47d7pqn2r379p434hxk14ij2qgmr83x65w9ib9l8092fhg";
name = "${pname}-${version}-source"; name = "${pname}-${version}-source";
}; };

View File

@ -1,25 +1,21 @@
{ stdenv, lib, buildPythonPackage, fetchPypi, fetchpatch, isPyPy, libgit2, six, cffi }: { stdenv, lib, buildPythonPackage, fetchPypi, isPyPy, isPy3k, libgit2, pytestCheckHook, cffi, cacert }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "pygit2"; pname = "pygit2";
version = "0.27.2"; version = "1.0.3";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "0d9bgxd6ch5jxz0j5cmx7c4kw933g8pgm2zxf3id1a6w9g2r7hpw"; sha256 = "1ql7hkcxrh8yszglrg7d3y0ivh1l56xdc3j34j2fjy4qq06ifv6y";
}; };
preConfigure = lib.optionalString stdenv.isDarwin '' preConfigure = lib.optionalString stdenv.isDarwin ''
export DYLD_LIBRARY_PATH="${libgit2}/lib" export DYLD_LIBRARY_PATH="${libgit2}/lib"
''; '';
patches = [ (fetchpatch { propagatedBuildInputs = [ libgit2 ] ++ lib.optional (!isPyPy) cffi;
name = "dont-require-old-pycparser"; # https://github.com/libgit2/pygit2/issues/819
url = https://github.com/libgit2/pygit2/commit/1eaba181577de206d3d43ec7886d0353fc0c9f2a.patch;
sha256 = "18x1fpmywhjjr4lvakwmy34zpxfqi8pqqj48g1wcib39lh3s7l4f";
}) ];
propagatedBuildInputs = [ libgit2 six ] ++ lib.optional (!isPyPy) cffi; checkInputs = [ pytestCheckHook ];
preCheck = '' preCheck = ''
# disable tests that require networking # disable tests that require networking
@ -28,6 +24,20 @@ buildPythonPackage rec {
rm test/test_submodule.py rm test/test_submodule.py
''; '';
# Tests require certificates
# https://github.com/NixOS/nixpkgs/pull/72544#issuecomment-582674047
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
# setup.py check is broken
# https://github.com/libgit2/pygit2/issues/868
dontUseSetuptoolsCheck = true;
# TODO: Test collection is failing
# https://github.com/NixOS/nixpkgs/pull/72544#issuecomment-582681068
doCheck = false;
disabled = !isPy3k;
meta = with lib; { meta = with lib; {
description = "A set of Python bindings to the libgit2 shared library"; description = "A set of Python bindings to the libgit2 shared library";
homepage = https://pypi.python.org/pypi/pygit2; homepage = https://pypi.python.org/pypi/pygit2;

View File

@ -6,7 +6,6 @@ let
stdenv = pkgs.stdenv; stdenv = pkgs.stdenv;
rubyVersions = with pkgs; [ rubyVersions = with pkgs; [
ruby_2_4
ruby_2_5 ruby_2_5
ruby_2_6 ruby_2_6
ruby_2_7 ruby_2_7

View File

@ -4,31 +4,15 @@ with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "ninja"; pname = "ninja";
version = "1.9.0"; version = "1.10.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ninja-build"; owner = "ninja-build";
repo = "ninja"; repo = "ninja";
rev = "v${version}"; rev = "v${version}";
sha256 = "1q0nld3g0d210zmdjyjzjz2xb2bw1s58gj6zsx7p8q30yh0wg610"; sha256 = "1fbzl7mrcrwp527sgkc1npfl3k6bbpydpiq98xcf1a1hkrx0z5x4";
}; };
patches = [
# Make builds reproducible by generating the same IDs from the same inputs.
(fetchpatch {
name = "consistent-doc-ids";
url = "https://github.com/ninja-build/ninja/commit/9aa947471fcfc607bec6d92a1a6eed5c692edbaf.patch";
sha256 = "0zsg46jflsh644jccrcgyfalr7fkzrv041kyi8644nyk923gcrl9";
})
# https://github.com/ninja-build/ninja/issues/1510 - fix w/musl, possibly BSDs?
#
(fetchpatch {
name = "fix-issue-1510.patch";
url = https://github.com/makepost/ninja/commit/567815df38a2ff54ad7478a90bd75c91e434236a.patch;
sha256 = "0zd0xyi7h2066nw1dsk76c7yf71b0f7v4p5nljda7jxi01vpdh69";
})
];
nativeBuildInputs = [ python3 re2c ] ++ optionals buildDocs [ asciidoc docbook_xml_dtd_45 docbook_xsl libxslt.bin ]; nativeBuildInputs = [ python3 re2c ] ++ optionals buildDocs [ asciidoc docbook_xml_dtd_45 docbook_xsl libxslt.bin ];
buildPhase = '' buildPhase = ''

View File

@ -1,9 +1,9 @@
{ lib, bundlerEnv, bundlerUpdateScript, ruby_2_4, perl, autoconf }: { lib, bundlerEnv, bundlerUpdateScript, ruby, perl, autoconf }:
bundlerEnv { bundlerEnv {
name = "chef-dk-2.4.17"; name = "chef-dk-2.4.17";
ruby = ruby_2_4; inherit ruby;
gemdir = ./.; gemdir = ./.;
buildInputs = [ perl autoconf ]; buildInputs = [ perl autoconf ];
@ -16,5 +16,7 @@ bundlerEnv {
license = licenses.asl20; license = licenses.asl20;
maintainers = with maintainers; [ offline nicknovitski ]; maintainers = with maintainers; [ offline nicknovitski ];
platforms = platforms.unix; platforms = platforms.unix;
# chefdk depends on ruby 2.4 which we don't support anymore
broken = true;
}; };
} }

View File

@ -11,8 +11,8 @@ rustPlatform.buildRustPackage rec {
sha256 = "1a9i6h8fzrrfzjyfxaps73lxgkz92k0bnmwbjbwdmiwci4qgi9ms"; sha256 = "1a9i6h8fzrrfzjyfxaps73lxgkz92k0bnmwbjbwdmiwci4qgi9ms";
}; };
cargoSha256 = "0rarpzfigyxr6s0ba13z00kvnms29qkjfbfjkay72mb6xn7f1059"; cargoSha256 = "1fxajh1n0qvcdas6w7dy3g92wilhfldy90pyk3779mrnh57fa6n5";
verifyCargoDeps = true; legacyCargoFetcher = false;
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Markdown shell pre-processor"; description = "Markdown shell pre-processor";

View File

@ -6,7 +6,6 @@
, withPerl528 ? false, perl528 , withPerl528 ? false, perl528
, withPerl530 ? true, perl530 , withPerl530 ? true, perl530
, withPerldevel ? false, perldevel , withPerldevel ? false, perldevel
, withRuby_2_4 ? false, ruby_2_4
, withRuby_2_5 ? false, ruby_2_5 , withRuby_2_5 ? false, ruby_2_5
, withRuby_2_6 ? true, ruby_2_6 , withRuby_2_6 ? true, ruby_2_6
, withRuby_2_7 ? true, ruby_2_7 , withRuby_2_7 ? true, ruby_2_7
@ -43,7 +42,6 @@ stdenv.mkDerivation rec {
++ optional withPerl528 perl528 ++ optional withPerl528 perl528
++ optional withPerl530 perl530 ++ optional withPerl530 perl530
++ optional withPerldevel perldevel ++ optional withPerldevel perldevel
++ optional withRuby_2_4 ruby_2_4
++ optional withRuby_2_5 ruby_2_5 ++ optional withRuby_2_5 ruby_2_5
++ optional withRuby_2_6 ruby_2_6 ++ optional withRuby_2_6 ruby_2_6
++ optional withRuby_2_7 ruby_2_7 ++ optional withRuby_2_7 ruby_2_7
@ -66,7 +64,6 @@ stdenv.mkDerivation rec {
${optionalString withPerl528 "./configure perl --module=perl528 --perl=${perl528}/bin/perl"} ${optionalString withPerl528 "./configure perl --module=perl528 --perl=${perl528}/bin/perl"}
${optionalString withPerl530 "./configure perl --module=perl530 --perl=${perl530}/bin/perl"} ${optionalString withPerl530 "./configure perl --module=perl530 --perl=${perl530}/bin/perl"}
${optionalString withPerldevel "./configure perl --module=perldev --perl=${perldevel}/bin/perl"} ${optionalString withPerldevel "./configure perl --module=perldev --perl=${perldevel}/bin/perl"}
${optionalString withRuby_2_4 "./configure ruby --module=ruby24 --ruby=${ruby_2_4}/bin/ruby"}
${optionalString withRuby_2_5 "./configure ruby --module=ruby25 --ruby=${ruby_2_5}/bin/ruby"} ${optionalString withRuby_2_5 "./configure ruby --module=ruby25 --ruby=${ruby_2_5}/bin/ruby"}
${optionalString withRuby_2_6 "./configure ruby --module=ruby26 --ruby=${ruby_2_6}/bin/ruby"} ${optionalString withRuby_2_6 "./configure ruby --module=ruby26 --ruby=${ruby_2_6}/bin/ruby"}
${optionalString withRuby_2_7 "./configure ruby --module=ruby27 --ruby=${ruby_2_7}/bin/ruby"} ${optionalString withRuby_2_7 "./configure ruby --module=ruby27 --ruby=${ruby_2_7}/bin/ruby"}

View File

@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
]; ];
# TODO(@Ericson2314): Separate binaries and libraries # TODO(@Ericson2314): Separate binaries and libraries
outputs = [ "out" "dev" ]; outputs = [ "bin" "out" "dev" ];
buildInputs = stdenv.lib.optional doCheck valgrind; buildInputs = stdenv.lib.optional doCheck valgrind;
@ -31,15 +31,10 @@ stdenv.mkDerivation rec {
makeFlags = [ makeFlags = [
"PREFIX=$(out)" "PREFIX=$(out)"
"INCLUDEDIR=$(dev)/include" "INCLUDEDIR=$(dev)/include"
# TODO do this instead "BUILD_STATIC=${if enableStatic then "yes" else "no"}"
#"BUILD_STATIC=${if enableStatic then "yes" else "no"}" "BUILD_SHARED=${if enableShared then "yes" else "no"}"
#"BUILD_SHARED=${if enableShared then "yes" else "no"}" "WINDRES:=${stdenv.cc.bintools.targetPrefix}windres"
#"WINDRES:=${stdenv.cc.bintools.targetPrefix}windres"
] ]
# TODO delete and do above
++ stdenv.lib.optional (enableStatic) "BUILD_STATIC=yes"
++ stdenv.lib.optional (!enableShared) "BUILD_SHARED=no"
++ stdenv.lib.optional stdenv.hostPlatform.isMinGW "WINDRES:=${stdenv.cc.bintools.targetPrefix}windres"
# TODO make full dictionary # TODO make full dictionary
++ stdenv.lib.optional stdenv.hostPlatform.isMinGW "TARGET_OS=MINGW" ++ stdenv.lib.optional stdenv.hostPlatform.isMinGW "TARGET_OS=MINGW"
; ;
@ -53,8 +48,9 @@ stdenv.mkDerivation rec {
mv $out/bin/*.dll $out/lib mv $out/bin/*.dll $out/lib
ln -s $out/lib/*.dll ln -s $out/lib/*.dll
'' ''
# TODO remove + ''
+ stdenv.lib.optionalString (!enableStatic) "rm $out/lib/*.a"; moveToOutput bin "$bin"
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Extremely fast compression algorithm"; description = "Extremely fast compression algorithm";

View File

@ -11,8 +11,8 @@ rustPlatform.buildRustPackage rec {
sha256 = "13b1w9g68aj3r70w9bmrmdc772y959n77ajbdm2cpjs5f4kgfpak"; sha256 = "13b1w9g68aj3r70w9bmrmdc772y959n77ajbdm2cpjs5f4kgfpak";
}; };
cargoSha256 = "0vzpyymylzxjm613lf5xr6hd21ijkl3vwq4y6h1q3as41phw2sqb"; cargoSha256 = "0zrwpmsrzwnjml0964zky8w222zmlargha3z0n6hf8cfshx23s4k";
verifyCargoDeps = true; legacyCargoFetcher = false;
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];

View File

@ -11,8 +11,8 @@ rustPlatform.buildRustPackage rec {
sha256 = "1646j0lgg3hhznifvbkvr672p3yqlcavswijawaxq7n33ll8vmcn"; sha256 = "1646j0lgg3hhznifvbkvr672p3yqlcavswijawaxq7n33ll8vmcn";
}; };
cargoSha256 = "10b96l0b32zxq0xrnhivv3gihmi5y31rllbizv67hrg1axz095vn"; cargoSha256 = "16d1b3pamkg29nq80n6cbzc4zl9z3cgfvdxjkr2z4xrnzmkn1ysi";
verifyCargoDeps = true; legacyCargoFetcher = false;
meta = with lib; { meta = with lib; {
description = "Rust library for generating cryptocurrency wallets"; description = "Rust library for generating cryptocurrency wallets";

View File

@ -9,8 +9,8 @@ rustPlatform.buildRustPackage rec {
rev = "v${version}"; rev = "v${version}";
sha256 = "149d60mid29s5alv5m3d7jrhyzc6cj7b6hpiq399gsdwzgxr00wq"; sha256 = "149d60mid29s5alv5m3d7jrhyzc6cj7b6hpiq399gsdwzgxr00wq";
}; };
cargoSha256 = "18kb4car5nzch3vpl6z1499silhs3fyn8c6xj3rzk94mm2m9srg4"; cargoSha256 = "1a6svl89dcdb5fpvs2i32i6agyhl0sx7kkkw70rqr17fyzl5psai";
verifyCargoDeps = true; legacyCargoFetcher = false;
doCheck = true; doCheck = true;
checkInputs = [ graphviz ]; checkInputs = [ graphviz ];

View File

@ -19,8 +19,8 @@ rustPlatform.buildRustPackage rec {
buildInputs = [ cryptsetup ]; buildInputs = [ cryptsetup ];
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
cargoSha256 = "1i37k4ih6118z3wip2qh4jqk7ja2z0v1w8dri1lwqwlciqw17zi9"; cargoSha256 = "0rp4f6xnwmvf3pv6h0qwsg01jrndf77yn67675ac39kxzmrzfy2f";
verifyCargoDeps = true; legacyCargoFetcher = false;
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Decrypt your LUKS partition using a FIDO2 compatible authenticator"; description = "Decrypt your LUKS partition using a FIDO2 compatible authenticator";

View File

@ -11,8 +11,8 @@ rustPlatform.buildRustPackage rec {
sha256 = "1fazw2wn738iknbv54gv7qll7d4q2gy9bq1s3f3cv21cdv6bqral"; sha256 = "1fazw2wn738iknbv54gv7qll7d4q2gy9bq1s3f3cv21cdv6bqral";
}; };
cargoSha256 = "0m82zbi610zgvcza6n03xl80g31x6bfkjyrfxcxa6fyf2l5cj9pv"; cargoSha256 = "1m3ccp5ncafkifg8sxyxczsg3ja1gvq8wmgni68bgzm2lwxh2qgw";
verifyCargoDeps = true; legacyCargoFetcher = false;
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Tree command, improved"; description = "Tree command, improved";

View File

@ -378,8 +378,10 @@ mapAliases ({
ruby_2_2_9 = throw "deprecated 2018-0213: use a newer version of ruby"; ruby_2_2_9 = throw "deprecated 2018-0213: use a newer version of ruby";
ruby_2_3_6 = throw "deprecated 2018-0213: use a newer version of ruby"; ruby_2_3_6 = throw "deprecated 2018-0213: use a newer version of ruby";
ruby_2_3 = throw "deprecated 2019-09-06: use a newer version of ruby"; ruby_2_3 = throw "deprecated 2019-09-06: use a newer version of ruby";
ruby_2_4_3 = throw "deprecated 2018-0213: use ruby_2_4 instead"; ruby_2_4_3 = throw "deprecated 2018-0213: use a newer version of ruby";
ruby_2_5_0 = throw "deprecated 2018-0213: use ruby_2_5 instead"; ruby_2_4 = throw "deprecated 2019-12: use a newer version of ruby";
ruby_2_5_0 = throw "deprecated 2018-0213: use a newer version of ruby";
rubyPackages_2_4 = throw "deprecated 2019-12: use a newer version of rubyPackages instead";
rubygems = throw "deprecated 2016-03-02: rubygems is now bundled with ruby"; rubygems = throw "deprecated 2016-03-02: rubygems is now bundled with ruby";
rxvt_unicode_with-plugins = rxvt-unicode; # added 2020-02-02 rxvt_unicode_with-plugins = rxvt-unicode; # added 2020-02-02
rxvt_unicode = rxvt-unicode-unwrapped; # added 2020-02-02 rxvt_unicode = rxvt-unicode-unwrapped; # added 2020-02-02

View File

@ -9432,7 +9432,6 @@ in
inherit (darwin) libiconv libobjc libunwind; inherit (darwin) libiconv libobjc libunwind;
inherit (darwin.apple_sdk.frameworks) Foundation; inherit (darwin.apple_sdk.frameworks) Foundation;
}) })
ruby_2_4
ruby_2_5 ruby_2_5
ruby_2_6 ruby_2_6
ruby_2_7; ruby_2_7;
@ -9453,7 +9452,6 @@ in
ruby = ruby_2_6; ruby = ruby_2_6;
rubyPackages = rubyPackages_2_6; rubyPackages = rubyPackages_2_6;
rubyPackages_2_4 = recurseIntoAttrs ruby_2_4.gems;
rubyPackages_2_5 = recurseIntoAttrs ruby_2_5.gems; rubyPackages_2_5 = recurseIntoAttrs ruby_2_5.gems;
rubyPackages_2_6 = recurseIntoAttrs ruby_2_6.gems; rubyPackages_2_6 = recurseIntoAttrs ruby_2_6.gems;
rubyPackages_2_7 = recurseIntoAttrs ruby_2_7.gems; rubyPackages_2_7 = recurseIntoAttrs ruby_2_7.gems;
@ -21357,9 +21355,7 @@ in
wavebox = callPackage ../applications/networking/instant-messengers/wavebox { }; wavebox = callPackage ../applications/networking/instant-messengers/wavebox { };
sonic-pi = libsForQt5.callPackage ../applications/audio/sonic-pi { sonic-pi = libsForQt5.callPackage ../applications/audio/sonic-pi { };
ruby = ruby_2_4; # sonic-pi build breaks with ruby 2.5 and 2.6
};
st = callPackage ../applications/misc/st { st = callPackage ../applications/misc/st {
conf = config.st.conf or null; conf = config.st.conf or null;