Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2024-01-14 06:01:18 +00:00 committed by GitHub
commit c9743f0e5c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 11185 additions and 1302 deletions

View File

@ -8,4 +8,4 @@ HTTP has a couple of different mechanisms for caching to prevent clients from ha
Fortunately, HTTP supports an alternative (and more effective) caching mechanism: the [`ETag`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) response header. The value of the `ETag` header specifies some identifier for the particular content that the server is sending (e.g., a hash). When a client makes a second request for the same resource, it sends that value back in an `If-None-Match` header. If the ETag value is unchanged, then the server does not need to resend the content.
As of NixOS 19.09, the nginx package in Nixpkgs is patched such that when nginx serves a file out of `/nix/store`, the hash in the store path is used as the `ETag` header in the HTTP response, thus providing proper caching functionality. This happens automatically; you do not need to do modify any configuration to get this behavior.
As of NixOS 19.09, the nginx package in Nixpkgs is patched such that when nginx serves a file out of `/nix/store`, the hash in the store path is used as the `ETag` header in the HTTP response, thus providing proper caching functionality. With NixOS 24.05 and later, the `ETag` additionally includes the response content length, to ensure files served with static compression do not share `ETag`s with their uncompressed version. This `ETag` functionality is enabled automatically; you do not need to do modify any configuration to get this behavior.

View File

@ -599,6 +599,16 @@
githubId = 4732885;
name = "Ivan Jager";
};
aikooo7 = {
name = "Diogo Fernandes";
email = "prozinhopro1973@gmail.com";
matrix = "@aikoo7:matrix.org";
github = "aikooo7";
githubId = 79667753;
keys = [{
fingerprint = "B0D7 2955 235F 6AB5 ACFA 1619 8C7F F5BB 1ADE F191";
}];
};
aiotter = {
email = "git@aiotter.com";
github = "aiotter";

View File

@ -584,6 +584,7 @@ in {
nginx = handleTest ./nginx.nix {};
nginx-auth = handleTest ./nginx-auth.nix {};
nginx-etag = handleTest ./nginx-etag.nix {};
nginx-etag-compression = handleTest ./nginx-etag-compression.nix {};
nginx-globalredirect = handleTest ./nginx-globalredirect.nix {};
nginx-http3 = handleTest ./nginx-http3.nix {};
nginx-modsecurity = handleTest ./nginx-modsecurity.nix {};

View File

@ -0,0 +1,45 @@
import ./make-test-python.nix {
name = "nginx-etag-compression";
nodes.machine = { pkgs, lib, ... }: {
services.nginx = {
enable = true;
recommendedGzipSettings = true;
virtualHosts.default = {
root = pkgs.runCommandLocal "testdir" {} ''
mkdir "$out"
cat > "$out/index.html" <<EOF
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
EOF
${pkgs.gzip}/bin/gzip -k "$out/index.html"
'';
};
};
};
testScript = { nodes, ... }: ''
machine.wait_for_unit("nginx")
machine.wait_for_open_port(80)
etag_plain = machine.succeed("curl -s -w'%header{etag}' -o/dev/null -H 'Accept-encoding:' http://127.0.0.1/")
etag_gzip = machine.succeed("curl -s -w'%header{etag}' -o/dev/null -H 'Accept-encoding:gzip' http://127.0.0.1/")
with subtest("different representations have different etags"):
assert etag_plain != etag_gzip, f"etags should differ: {etag_plain} == {etag_gzip}"
with subtest("etag for uncompressed response is reproducible"):
etag_plain_repeat = machine.succeed("curl -s -w'%header{etag}' -o/dev/null -H 'Accept-encoding:' http://127.0.0.1/")
assert etag_plain == etag_plain_repeat, f"etags should be the same: {etag_plain} != {etag_plain_repeat}"
with subtest("etag for compressed response is reproducible"):
etag_gzip_repeat = machine.succeed("curl -s -w'%header{etag}' -o/dev/null -H 'Accept-encoding:gzip' http://127.0.0.1/")
assert etag_gzip == etag_gzip_repeat, f"etags should be the same: {etag_gzip} != {etag_gzip_repeat}"
'';
}

View File

@ -11,13 +11,13 @@
stdenv.mkDerivation rec {
pname = "fulcrum";
version = "1.9.7";
version = "1.9.8";
src = fetchFromGitHub {
owner = "cculianu";
repo = "Fulcrum";
rev = "v${version}";
sha256 = "sha256-EslrlnMgH6W/0q/P4H/o6n3zbBDNIGuNAFyGWcZBYL4=";
sha256 = "sha256-cWrhALYIjhOCKi/uPXD8Ty0wuN4WQq+8o97M6CtW+YE=";
};
nativeBuildInputs = [ pkg-config qmake ];

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
diff --git a/sdk/program/src/account_info.rs b/sdk/program/src/account_info.rs
index 372370d0e15a0f2877b02ad29586e5b352438b24..3db3e9839b6535786e60be5602c03d0c909bf937 100644
--- a/sdk/program/src/account_info.rs
+++ b/sdk/program/src/account_info.rs
@@ -182,6 +182,7 @@ impl<'a> AccountInfo<'a> {
Ok(())
}
+ #[rustversion::attr(since(1.72), allow(invalid_reference_casting))]
pub fn assign(&self, new_owner: &Pubkey) {
// Set the non-mut owner field
unsafe {

View File

@ -18,22 +18,10 @@
"solana-gossip"
"solana-install"
"solana-keygen"
"solana-ledger-tool"
"solana-log-analyzer"
"solana-net-shaper"
"solana-sys-tuner"
"rbpf-cli"
"solana-validator"
"solana-ledger-tool"
"cargo-build-bpf"
"cargo-test-bpf"
"solana-dos"
"solana-install-init"
"solana-stake-accounts"
"solana-test-validator"
"solana-tokens"
"solana-watchtower"
"cargo-test-sbf"
"cargo-build-sbf"
] ++ [
# XXX: Ensure `solana-genesis` is built LAST!
# See https://github.com/solana-labs/solana/issues/5826
@ -41,16 +29,15 @@
]
}:
let
version = "1.14.23";
sha256 = "sha256-NUkkLzLNh8P7PFh/SVtd9JM18w3egDaaK80urGw1SSs=";
cargoSha256 = "sha256-7t8Quh6T2MzJWEM5Y50CgCyFfx2ZJRAdCpZyyYvJrt4=";
version = "1.16.27";
sha256 = "sha256-xd0FCSlpPJDVWOlt9rIlnSbjksmvlXJWHkvlZONd2dM=";
inherit (darwin.apple_sdk_11_0) Libsystem;
inherit (darwin.apple_sdk_11_0.frameworks) System IOKit AppKit Security;
in
rustPlatform.buildRustPackage rec {
pname = "solana-cli";
inherit version cargoSha256;
inherit version;
src = fetchFromGitHub {
owner = "solana-labs";
@ -59,6 +46,21 @@ rustPlatform.buildRustPackage rec {
inherit sha256;
};
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"crossbeam-epoch-0.9.5" = "sha256-Jf0RarsgJiXiZ+ddy0vp4jQ59J9m0k3sgXhWhCdhgws=";
"ntapi-0.3.7" = "sha256-G6ZCsa3GWiI/FeGKiK9TWkmTxen7nwpXvm5FtjNtjWU=";
};
};
patches = [
# Fix: https://github.com/solana-labs/solana/issues/34203
# From https://github.com/Homebrew/homebrew-core/pull/156930/files#diff-f27c55b86df31cd4935c956efee1be743eae0958e3850f3f9891d51bfea50b1cR76
./account-info.patch
];
strictDeps = true;
cargoBuildFlags = builtins.map (n: "--bin=${n}") solanaPkgs;
@ -101,7 +103,7 @@ rustPlatform.buildRustPackage rec {
description = "Web-Scale Blockchain for fast, secure, scalable, decentralized apps and marketplaces. ";
homepage = "https://solana.com";
license = licenses.asl20;
maintainers = with maintainers; [ netfox happysalada ];
maintainers = with maintainers; [ netfox happysalada aikooo7 ];
platforms = platforms.unix;
};

View File

@ -6,7 +6,7 @@
let
pname = "lefthook";
version = "1.5.5";
version = "1.5.6";
in
buildGoModule rec {
inherit pname version;
@ -15,7 +15,7 @@ buildGoModule rec {
owner = "evilmartians";
repo = "lefthook";
rev = "v${version}";
hash = "sha256-TNXnXQMlMNXKPxN5GneZr+LyByfQX2TToUebpdD/d+U=";
hash = "sha256-6RSIrsm2VNlOtjAwz/HuCH4VOz/3W6snHSI1LypINYU=";
};
vendorHash = "sha256-/VLS7+nPERjIU7V2CzqXH69Z3/y+GKZbAFn+KcRKRuA=";

View File

@ -0,0 +1,66 @@
{ lib
, stdenv
, fetchFromGitHub
, libkrb5
, openssl
, pam
, pkg-config
, postgresql
, readline
, sqlite
, testers
, zlib
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pgcopydb";
version = "0.15";
src = fetchFromGitHub {
owner = "dimitri";
repo = "pgcopydb";
rev = "v${finalAttrs.version}";
hash = "sha256-m9iIF8h6V3wWLUQuPntXtRAh16RrmR3uqZZIljGCY08=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
libkrb5
openssl
postgresql
readline
sqlite
zlib
] ++ lib.optionals stdenv.isLinux [
pam
];
hardeningDisable = [ "format" ];
installPhase = ''
runHook preInstall
install -D -t $out/bin/ src/bin/pgcopydb/pgcopydb
runHook postInstall
'';
passthru.tests = {
version = testers.testVersion {
package = finalAttrs.finalPackage;
};
};
meta = with lib; {
description = "Copy a Postgres database to a target Postgres server (pg_dump | pg_restore on steroids";
homepage = "https://github.com/dimitri/pgcopydb";
changelog = "https://github.com/dimitri/pgcopydb/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = licenses.postgresql;
maintainers = with maintainers; [ marsam ];
mainProgram = "pgcopydb";
platforms = platforms.all;
};
})

View File

@ -0,0 +1,60 @@
{ lib
, rustPlatform
, fetchFromGitHub
, pkg-config
, wayland
, withNativeLibs ? false
}:
rustPlatform.buildRustPackage {
pname = "wl-clipboard-rs";
version = "0.8.0-unstable-2023-11-27";
src = fetchFromGitHub {
owner = "YaLTeR";
repo = "wl-clipboard-rs";
rev = "be851408e0f91edffdc2f1a76805035847f9f8a9";
hash = "sha256-OfLn7izG1KSUjdd2gO4aaSCDlcaWoFiFmgwwhR1hRsQ=";
};
cargoHash = "sha256-rYFCPyWTUhyrEcoRM8I+iX7IaY/6i1tBVjhs47m3XY8=";
cargoBuildFlags = [
"--package=wl-clipboard-rs"
"--package=wl-clipboard-rs-tools"
] ++ lib.optionals withNativeLibs [
"--features=native_lib"
];
nativeBuildInputs = lib.optionals withNativeLibs [
pkg-config
];
buildInputs = lib.optionals withNativeLibs [
wayland
];
preCheck = ''
export XDG_RUNTIME_DIR=$(mktemp -d)
'';
# Assertion errors
checkFlags = [
"--skip=tests::copy::copy_large"
"--skip=tests::copy::copy_multi_no_additional_text_mime_types_test"
"--skip=tests::copy::copy_multi_test"
"--skip=tests::copy::copy_randomized"
"--skip=tests::copy::copy_test"
];
meta = {
description = "Command-line copy/paste utilities for Wayland, written in Rust";
homepage = "https://github.com/YaLTeR/wl-clipboard-rs";
# TODO: add `${version}` once we switch to tagged release
changelog = "https://github.com/YaLTeR/wl-clipboard-rs/blob/master/CHANGELOG.md";
platforms = lib.platforms.linux;
license = with lib.licenses; [ asl20 mit ];
mainProgram = "wl-clip";
maintainers = with lib.maintainers; [ thiagokokada ];
};
}

View File

@ -20,7 +20,7 @@
buildPythonPackage rec {
pname = "accelerate";
version = "0.25.0";
version = "0.26.1";
pyproject = true;
disabled = pythonOlder "3.7";
@ -29,7 +29,7 @@ buildPythonPackage rec {
owner = "huggingface";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-WIMOSfo9fGbevMkUHvFsA51SOiGkBO1cK388FudRDY0=";
hash = "sha256-l0RSBVAa2u3bGDLbg/e/1UP5WO8z2+YBqzwdviAcMA0=";
};
nativeBuildInputs = [ setuptools ];

View File

@ -1,28 +1,44 @@
{ lib
, buildPythonPackage
, dnspython
, fetchPypi
, python3
, impacket
, ldap3
, pycryptodome
, setuptools
}:
python3.pkgs.buildPythonPackage rec {
buildPythonPackage rec {
pname = "bloodhound-py";
version = "1.7.1";
version = "1.7.2";
pyproject = true;
src = fetchPypi {
inherit version;
pname = "bloodhound";
hash = "sha256-BryByUo9FCSrrJgXoXoVPBjpmh32I0xRoeKBsYj8nSE=";
hash = "sha256-USZU19dLppoq19+JMFtiojyJk6bj96nP2JQDq7JFkHM=";
};
propagatedBuildInputs = with python3.pkgs; [
impacket
ldap3
dnspython
nativeBuildInputs = [
setuptools
];
# the package has no tests
propagatedBuildInputs = [
dnspython
impacket
ldap3
pycryptodome
];
# Module has no tests
doCheck = false;
pythonImportsCheck = [
"bloodhound"
];
meta = with lib; {
description = "Python based ingestor for BloodHound, based on Impacket.";
description = "Python based ingestor for BloodHound, based on Impacket";
homepage = "https://github.com/dirkjanm/BloodHound.py";
license = licenses.mit;
maintainers = with maintainers; [ exploitoverload ];

View File

@ -19,7 +19,7 @@
, routes
, setuptools-scm
, simplejson
, zc_lockfile
, zc-lockfile
}:
buildPythonPackage rec {
@ -52,7 +52,7 @@ buildPythonPackage rec {
cheroot
portend
more-itertools
zc_lockfile
zc-lockfile
jaraco-collections
];

View File

@ -11,7 +11,7 @@
buildPythonPackage rec {
pname = "clarifai-grpc";
version = "10.0.0";
version = "10.0.3";
pyproject = true;
disabled = pythonOlder "3.8";
@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "Clarifai";
repo = "clarifai-python-grpc";
rev = "refs/tags/${version}";
hash = "sha256-FpBrVoKwuKLanF0SYJLO1cd8qhI1xgBVa1wVpojG8p8=";
hash = "sha256-mIiUwqagFlZXkm/diQlCXMBDAbnWNG4BNMHVedo5u/M=";
};
nativeBuildInputs = [

View File

@ -5,6 +5,7 @@
, jinja2
, jinja2-pluralize
, pluggy
, poetry-core
, pycodestyle
, pyflakes
, pygments
@ -19,7 +20,7 @@
buildPythonPackage rec {
pname = "diff-cover";
version = "8.0.1";
format = "setuptools";
format = "pyproject";
disabled = pythonOlder "3.7";
@ -29,6 +30,10 @@ buildPythonPackage rec {
hash = "sha256-zDnRmety/kG83P7hZOtbWRUztMYlWA4/mprMaGkGTXw=";
};
nativeBuildInputs = [
poetry-core
];
propagatedBuildInputs = [
chardet
jinja2

View File

@ -47,7 +47,7 @@
, tqdm
, typing-extensions
, voluptuous
, zc_lockfile
, zc-lockfile
, enableGoogle ? false
, enableAWS ? false
, enableAzure ? false
@ -119,7 +119,7 @@ buildPythonPackage rec {
tqdm
typing-extensions
voluptuous
zc_lockfile
zc-lockfile
]
++ lib.optionals enableGoogle passthru.optional-dependencies.gs
++ lib.optionals enableAWS passthru.optional-dependencies.s3

View File

@ -9,7 +9,7 @@
, pytestCheckHook
, pythonOlder
, requests-toolbelt
, update_checker
, update-checker
, websocket-client
}:
@ -30,7 +30,7 @@ buildPythonPackage rec {
propagatedBuildInputs = [
mock
prawcore
update_checker
update-checker
websocket-client
];

View File

@ -7,7 +7,7 @@
, pytest
, setuptools-scm
, toml
, zc_lockfile
, zc-lockfile
}:
buildPythonPackage rec {
@ -30,7 +30,7 @@ buildPythonPackage rec {
propagatedBuildInputs = [
requests
psutil
zc_lockfile
zc-lockfile
];
# no tests in PyPI tarball

View File

@ -26,6 +26,7 @@
, pyocd
, pypemicro
, pyserial
, requests
, ruamel-yaml
, setuptools
, sly
@ -38,14 +39,14 @@
buildPythonPackage rec {
pname = "spsdk";
version = "2.0.0";
version = "2.0.1";
pyproject = true;
src = fetchFromGitHub {
owner = "nxp-mcuxpresso";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-1aW5ivdpnSscTaMIRn4tlsBG6StN95gHAyRIzmAO9Uo=";
rev = version;
hash = "sha256-C6cz5jhIHI4WkCYT0rURFa4kBAu6cMcKpQHiHACIiu8=";
};
nativeBuildInputs = [
@ -63,6 +64,8 @@ buildPythonPackage rec {
"pylink-square"
"pyocd"
"typing-extensions"
"click"
"ruamel.yaml"
];
pythonRemoveDeps = [
@ -93,6 +96,7 @@ buildPythonPackage rec {
pyocd
pypemicro
pyserial
requests
ruamel-yaml
sly
typing-extensions

View File

@ -2,13 +2,14 @@
}:
buildPythonPackage rec {
pname = "update_checker";
pname = "update-checker";
version = "0.18.0";
format = "setuptools";
disabled = isPy27;
src = fetchPypi {
inherit pname version;
pname = "update_checker";
inherit version;
sha256 = "6a2d45bb4ac585884a6b03f9eade9161cedd9e8111545141e9aa9058932acb13";
};

View File

@ -6,11 +6,12 @@
}:
buildPythonPackage rec {
pname = "zc.lockfile";
pname = "zc-lockfile";
version = "3.0";
src = fetchPypi {
inherit pname version;
pname = "zc.lockfile";
inherit version;
hash = "sha256-5Y/9ndYsbUMuhoK/oZbJDKw+XB4/JNrjuJ1ggihV14g=";
};

View File

@ -9,7 +9,7 @@
, zodbpickle
, zconfig
, persistent
, zc_lockfile
, zc-lockfile
, btrees
, manuel
}:
@ -35,7 +35,7 @@ buildPythonPackage rec {
zodbpickle
zconfig
persistent
zc_lockfile
zc-lockfile
btrees
];

View File

@ -81,7 +81,7 @@ python3.pkgs.buildPythonApplication rec {
termcolor
tqdm
typing-extensions
update_checker
update-checker
];
nativeCheckInputs = with python3.pkgs; [

View File

@ -31,7 +31,7 @@ python3.pkgs.buildPythonApplication rec {
requests
semver
setuptools
update_checker
update-checker
];
nativeCheckInputs = with python3.pkgs; [

View File

@ -177,28 +177,44 @@ runCmd() {
}
buildHostCmd() {
local c
if [[ "${useSudo:-x}" = 1 ]]; then
c=("${sudoCommand[@]}")
else
c=()
fi
if [ -z "$buildHost" ]; then
runCmd "$@"
elif [ -n "$remoteNix" ]; then
runCmd ssh $SSHOPTS "$buildHost" "${useSudo:+${sudoCommand[@]}}" env PATH="$remoteNix":'$PATH' "$@"
runCmd ssh $SSHOPTS "$buildHost" "${c[@]}" env PATH="$remoteNix":'$PATH' "$@"
else
runCmd ssh $SSHOPTS "$buildHost" "${useSudo:+${sudoCommand[@]}}" "$@"
runCmd ssh $SSHOPTS "$buildHost" "${c[@]}" "$@"
fi
}
targetHostCmd() {
if [ -z "$targetHost" ]; then
runCmd "${useSudo:+${sudoCommand[@]}}" "$@"
local c
if [[ "${useSudo:-x}" = 1 ]]; then
c=("${sudoCommand[@]}")
else
runCmd ssh $SSHOPTS "$targetHost" "${useSudo:+${sudoCommand[@]}}" "$@"
c=()
fi
if [ -z "$targetHost" ]; then
runCmd "${c[@]}" "$@"
else
runCmd ssh $SSHOPTS "$targetHost" "${c[@]}" "$@"
fi
}
targetHostSudoCmd() {
if [ -n "$remoteSudo" ]; then
useSudo=1 targetHostCmd "$@"
useSudo=1 SSHOPTS="$SSHOPTS -t" targetHostCmd "$@"
else
targetHostCmd "$@"
# While a tty might not be necessary, we apply it to be consistent with
# sudo usage, and an experience that is more consistent with local deployment.
SSHOPTS="$SSHOPTS -t" targetHostCmd "$@"
fi
}
@ -436,7 +452,7 @@ if [ "$action" = edit ]; then
exit 1
fi
SSHOPTS="$NIX_SSHOPTS -o ControlMaster=auto -o ControlPath=$tmpDir/ssh-%n -o ControlPersist=60 -t"
SSHOPTS="$NIX_SSHOPTS -o ControlMaster=auto -o ControlPath=$tmpDir/ssh-%n -o ControlPersist=60"
# First build Nix, since NixOS may require a newer version than the
# current one.

View File

@ -192,7 +192,7 @@ stdenv.mkDerivation {
passthru = {
inherit modules;
tests = {
inherit (nixosTests) nginx nginx-auth nginx-etag nginx-globalredirect nginx-http3 nginx-proxyprotocol nginx-pubhtml nginx-sso nginx-status-page nginx-unix-socket;
inherit (nixosTests) nginx nginx-auth nginx-etag nginx-etag-compression nginx-globalredirect nginx-http3 nginx-proxyprotocol nginx-pubhtml nginx-sso nginx-status-page nginx-unix-socket;
variants = lib.recurseIntoAttrs nixosTests.nginx-variants;
acme-integration = nixosTests.acme;
} // passthru.tests;

View File

@ -2,10 +2,10 @@ This patch makes it possible to serve static content from Nix store paths, by
using the hash of the store path for the ETag header.
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index cb49ef74..7b456993 100644
index 97a91aee2..2d07d71e6 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1583,6 +1583,8 @@ ngx_http_set_etag(ngx_http_request_t *r)
@@ -1676,6 +1676,8 @@ ngx_http_set_etag(ngx_http_request_t *r)
{
ngx_table_elt_t *etag;
ngx_http_core_loc_conf_t *clcf;
@ -14,14 +14,25 @@ index cb49ef74..7b456993 100644
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
@@ -1598,16 +1600,60 @@ ngx_http_set_etag(ngx_http_request_t *r)
etag->hash = 1;
@@ -1692,16 +1694,82 @@ ngx_http_set_etag(ngx_http_request_t *r)
etag->next = NULL;
ngx_str_set(&etag->key, "ETag");
- etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + 3);
- if (etag->value.data == NULL) {
- etag->hash = 0;
- return NGX_ERROR;
+ // Upstream nginx uses file mod timestamp and content-length for Etag, but
+ // files in the Nix store have their timestamps reset, so that doesn't work.
+ // Instead, when serving from the Nix store, we use the hash from the store
+ // path and content-length.
+ //
+ // Every file in under the given store path will share the same store path
+ // hash. It is fine to serve different resources with the same Etag, but
+ // different representations of the same resource (eg the same file, but
+ // gzip-compressed) should have different Etags. Thus, we also append
+ // content-length, which should be different when the response is compressed
+
+ err = ngx_errno;
+ real = ngx_realpath(clcf->root.data, NULL);
+ ngx_set_errno(err);
@ -35,8 +46,10 @@ index cb49ef74..7b456993 100644
+ && real[NIX_STORE_LEN] == '/'
+ && real[NIX_STORE_LEN + 1] != '\0')
+ {
+ ptr1 = real + NIX_STORE_LEN;
+ *ptr1 = '"';
+ // extract the hash from a path formatted like
+ // /nix/store/hashhere1234-pname-1.0.0
+ // +1 to skip the leading /
+ ptr1 = real + NIX_STORE_LEN + 1;
+
+ ptr2 = (u_char *) ngx_strchr(ptr1, '-');
+
@ -46,11 +59,11 @@ index cb49ef74..7b456993 100644
+ return NGX_ERROR;
+ }
+
+ *ptr2++ = '"';
+ *ptr2 = '\0';
+
+ etag->value.len = ngx_strlen(ptr1);
+ etag->value.data = ngx_pnalloc(r->pool, etag->value.len);
+ // hash + content-length + quotes and hyphen. Note that the
+ // content-length part of the string can vary in length.
+ etag->value.data = ngx_pnalloc(r->pool, ngx_strlen(ptr1) + NGX_OFF_T_LEN + 3);
+
+ if (etag->value.data == NULL) {
+ ngx_free(real);
@ -58,9 +71,18 @@ index cb49ef74..7b456993 100644
+ return NGX_ERROR;
+ }
+
+ ngx_memcpy(etag->value.data, ptr1, etag->value.len);
+
+ // set value.data content to "{hash}-{content-length}" (including quote
+ // marks), and set value.len to the length of the resulting string
+ etag->value.len = ngx_sprintf(etag->value.data, "\"\%s-%xO\"",
+ ptr1,
+ r->headers_out.content_length_n)
+ - etag->value.data;
+
+ ngx_http_clear_last_modified(r);
+ } else {
+ // outside of Nix store, use the upstream Nginx logic for etags
+
+ etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + 3);
+
+ if (etag->value.data == NULL) {
@ -82,4 +104,3 @@ index cb49ef74..7b456993 100644
+ ngx_free(real);
r->headers_out.etag = etag;

File diff suppressed because it is too large Load Diff

View File

@ -10,10 +10,11 @@
, stdenv
, darwin
, nix-update-script
, rocksdb
}:
let
version = "0.4.2";
version = "0.5.2";
in
rustPlatform.buildRustPackage {
pname = "stalwart-mail";
@ -23,27 +24,18 @@ rustPlatform.buildRustPackage {
owner = "stalwartlabs";
repo = "mail-server";
rev = "v${version}";
hash = "sha256-Ah53htK38Bm2yGN44IiC6iRWgxkMVRtrNvXXvPh+SJc=";
hash = "sha256-U53v123mLD9mGmsNKgHlad8+2vr9lzMXizT4KeOChJY=";
fetchSubmodules = true;
};
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"hyper-util-0.0.0" = "sha256-9vp8eWjK/pjkJCMjVSI9J2b4amhXK5sat1VAq5Jd6mI=";
"jmap-client-0.3.0" = "sha256-TJQEi2qH/92QA3YJrPBWgpO0nE5o7Atv6btq2gPNTmw=";
"mail-auth-0.3.6" = "sha256-FTC0ZHyZ5H2yBlmNrOijm50xQ3qd2Q+52z8THCW5A5Q=";
"mail-builder-0.3.1" = "sha256-JPV3vp/5+9yFoNNZzxuQ9sbnF8HgDbfHhtb6zQfLFqQ=";
"mail-parser-0.9.1" = "sha256-PJh6s7SvspakhuziEy+dZccIN0hJpjkcIUGTYQRvKGc=";
"mail-send-0.4.1" = "sha256-WK6pC8ZtSoIScanNatDbb3Y7Ch43Dj3463VHDwmEyG0=";
"sieve-rs-0.3.1" = "sha256-PJ24mwlpA6EpB3l749HfSFQhYAmpPxKmYJh/nBmDKDs=";
"smtp-proto-0.1.1" = "sha256-C73wm+dfq+LKteHH9wATw2L23YMw3dhzTIyFJMoqvBA=";
};
};
nativeBuildInputs = [
pkg-config
protobuf
rustPlatform.bindgenHook
];
buildInputs = [
@ -60,6 +52,8 @@ rustPlatform.buildRustPackage {
env = {
OPENSSL_NO_VENDOR = true;
ZSTD_SYS_USE_PKG_CONFIG = true;
ROCKSDB_INCLUDE_DIR = "${rocksdb}/include";
ROCKSDB_LIB_DIR = "${rocksdb}/lib";
};
# Tests require reading to /etc/resolv.conf

View File

@ -43,7 +43,7 @@ let
sgmllib3k
six
tempora
zc_lockfile
zc-lockfile
]);
path = lib.makeBinPath [ coreutils par2cmdline-turbo unrar unzip p7zip util-linux ];
in stdenv.mkDerivation rec {

View File

@ -11,16 +11,16 @@
buildGoModule rec {
pname = "sing-box";
version = "1.8.0";
version = "1.8.1";
src = fetchFromGitHub {
owner = "SagerNet";
repo = pname;
rev = "v${version}";
hash = "sha256-MKvqnPHcao7Hpc6C2kEmBAAC3lHHI1nQ+Zpco9WwqoU=";
hash = "sha256-gz0kfrpRz1OgruNBkpO6N80nmK4iAS+KlK9LYQZpRUQ=";
};
vendorHash = "sha256-8qNH4tQQMwVMpyUTrpL6StkYawO1kWOYXorRTh4GeIQ=";
vendorHash = "sha256-NgtZ0z/9X+GWaZqQJMecF/Bxq9u8JKCewgQGSru+EJc=";
tags = [
"with_quic"

View File

@ -489,6 +489,7 @@ mapAliases ({
ufoLib2 = ufolib2; # added 2024-01-07
ukrainealarm = throw "ukrainealarm has been removed, as it has been replaced as a home-assistant dependency by uasiren."; # added 2024-01-05
unittest2 = throw "unittest2 has been removed as it's a backport of unittest that's unmaintained and not needed beyond Python 3.4."; # added 2022-12-01
update_checker = update-checker; # added 2024-01-07
uproot3 = throw "uproot3 has been removed, use uproot instead"; # added 2022-12-13
uproot3-methods = throw "uproot3-methods has been removed"; # added 2022-12-13
validictory = throw "validictory has been removed, since it abandoned"; # added 2023-07-07
@ -512,8 +513,9 @@ mapAliases ({
Yapsy = yapsy; # added 2023-02-19
z3 = z3-solver; # added 2023-12-03
zake = throw "zake has been removed because it is abandoned"; # added 2023-06-20
zc-buildout221 = zc-buildout; # added 2021-07-21
zc_buildout_nix = throw "zc_buildout_nix was pinned to a version no longer compatible with other modules";
zc-buildout221 = zc-buildout; # added 2021-07-21
zc_lockfile = zc-lockfile; # added 2024-01-06
zipstream-new = throw "zipstream-new has been removed, because it was packaged as a dependency for octoprint, which has switched to zipstream-ng since."; # added 2024-01-05
zope_broken = throw "zope_broken has been removed because it is obsolete and not needed in zodb>=3.10"; # added 2023-07-26
zope_component = zope-component; # added 2023-07-28

View File

@ -15672,7 +15672,7 @@ self: super: with self; {
upcloud-api = callPackage ../development/python-modules/upcloud-api { };
update_checker = callPackage ../development/python-modules/update_checker { };
update-checker = callPackage ../development/python-modules/update-checker { };
update-copyright = callPackage ../development/python-modules/update-copyright { };
@ -16423,7 +16423,7 @@ self: super: with self; {
zc-buildout = callPackage ../development/python-modules/buildout { };
zc_lockfile = callPackage ../development/python-modules/zc_lockfile { };
zc-lockfile = callPackage ../development/python-modules/zc-lockfile { };
zcbor = callPackage ../development/python-modules/zcbor { };

View File

@ -1,4 +1,14 @@
{
abbrev = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0hj2qyx7rzpc7awhvqlm597x7qdxwi4kkml4aqnp5jylmsm4w6xd";
type = "gem";
};
version = "0.1.2";
};
actioncable = {
dependencies = ["actionpack" "activesupport" "nio4r" "websocket-driver" "zeitwerk"];
groups = ["default"];
@ -644,10 +654,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1dd9wik69yqi54r1mgmvi7gqzgzh7vw4nfwriknk1z7piwv6w22c";
sha256 = "1kcvivig7vvw3bnds1pi4m69wn7cgmsffn93lw5i1nzw490x2da4";
type = "gem";
};
version = "0.3.0";
version = "0.4.0";
};
cocoapods-wholemodule = {
groups = ["default"];
@ -901,10 +911,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1gpciaifmxql8h01ci12qq08dnqrdlzkkz6fmia9v9yc3r9a29si";
sha256 = "0cyr2xm576gqhqicsyqnhanni47408w2pgvrfi8pd13h2li3nsaz";
type = "gem";
};
version = "0.6.20231109";
version = "0.6.20240107";
};
dotenv = {
groups = ["default"];
@ -965,10 +975,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1vsqmx8pslcg1zca7hfc89vfnbcfvgyfbbxpdk2xm4cidl80zmv9";
sha256 = "0l4znxsrcsa6a1ylig4wkml1kdydyvb3qzh7mr1gn39zn25wflj0";
type = "gem";
};
version = "0.6.0";
version = "0.7.1";
};
erubi = {
groups = ["default"];
@ -1016,10 +1026,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1q9yz7x36mpzpz04bg6hdyrzzk4bri9jg3h2ygw26bf6v3axq53q";
sha256 = "1kmmwgjzlrnc3nnrdnw1z67c95nbw0hv54a73yj8jw6pcvl9585x";
type = "gem";
};
version = "0.108.0";
version = "0.109.0";
};
execjs = {
groups = ["default"];
@ -1032,25 +1042,26 @@
version = "2.9.1";
};
faraday = {
dependencies = ["base64" "faraday-net_http" "ruby2_keywords"];
dependencies = ["faraday-net_http"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "19p45ryrvxff6ggdj4fq76dk7wlkfgrh474c3kwzdsjx3xpdq8x8";
sha256 = "1qqb1rmk0f9m82iijjlqadh5yby1bhnr6svjk9vxdvh6f181988s";
type = "gem";
};
version = "2.8.1";
version = "2.9.0";
};
faraday-net_http = {
dependencies = ["net-http"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8";
sha256 = "17w51yk4rrm9rpnbc3x509s619kba0jga3qrj4b17l30950vw9qn";
type = "gem";
};
version = "3.0.2";
version = "3.1.0";
};
ffi = {
groups = ["default"];
@ -1100,10 +1111,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "06m6hxq8vspx9h9bgc2s19m56jzasvl45vblrfv1q5h1qg1k6amw";
sha256 = "0p2xiw0n4l1k3ynma1vl0fzw5w8xhkv70x4f829nydxv7hply80y";
type = "gem";
};
version = "2.3.0";
version = "2.4.0";
};
fog-dnsimple = {
dependencies = ["fog-core" "fog-json"];
@ -1226,10 +1237,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0rf4603ffvdlvnzx1nmh2x5j8lic3p24115sm7bx6p2nwii09f69";
sha256 = "0hfjw17g33qfsrb0lwcsl0capyjdpm6zpzxrspzfb4lyppqyyqic";
type = "gem";
};
version = "1.18.0";
version = "1.19.0";
};
github-pages = {
dependencies = ["github-pages-health-check" "jekyll" "jekyll-avatar" "jekyll-coffeescript" "jekyll-commonmark-ghpages" "jekyll-default-layout" "jekyll-feed" "jekyll-gist" "jekyll-github-metadata" "jekyll-include-cache" "jekyll-mentions" "jekyll-optional-front-matter" "jekyll-paginate" "jekyll-readme-index" "jekyll-redirect-from" "jekyll-relative-links" "jekyll-remote-theme" "jekyll-sass-converter" "jekyll-seo-tag" "jekyll-sitemap" "jekyll-swiss" "jekyll-theme-architect" "jekyll-theme-cayman" "jekyll-theme-dinky" "jekyll-theme-hacker" "jekyll-theme-leap-day" "jekyll-theme-merlot" "jekyll-theme-midnight" "jekyll-theme-minimal" "jekyll-theme-modernist" "jekyll-theme-primer" "jekyll-theme-slate" "jekyll-theme-tactile" "jekyll-theme-time-machine" "jekyll-titles-from-headings" "jemoji" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "minima" "nokogiri" "rouge" "terminal-table"];
@ -1340,14 +1351,15 @@
version = "5.0.0";
};
highline = {
dependencies = ["abbrev"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1f8cr014j7mdqpdb9q17fp5vb5b8n1pswqaif91s3ylg5x3pygfn";
sha256 = "1yw7mjnq498xr34rvpyacw7dagw1azsds0gk781p493ygx7ck7m6";
type = "gem";
};
version = "2.1.0";
version = "3.0.0";
};
hike = {
groups = ["default"];
@ -1520,10 +1532,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0phrzmmxbwqmkh4dzld3pc82yml996nzfdzjipniv8wwrxwbgb3r";
sha256 = "0hh8d5l4ki6vg2p5x3v000gkrdqi1kdjv4vk5v8lfz9gr4kdc007";
type = "gem";
};
version = "1.11.0";
version = "1.11.1";
};
jaro_winkler = {
groups = ["default"];
@ -2115,20 +2127,20 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1s5v614c1kg5z4hqrmza5fr7qfpqvqirc51624wwsq9vismdisnv";
sha256 = "1p6hdglfjx9r0rycn2fb0zjg2czl72nyfx8mmrf20w4qmslj0fj9";
type = "gem";
};
version = "4.1.2";
version = "5.0.2";
};
link-header-parser = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1wp8sdrv5j89gbb68zvxlyd84q4ddyz726db76sn76bbmm9621mc";
sha256 = "1bm32imabc12rjjw8ysca55c99flcsichynfflphxy8gda07dj9x";
type = "gem";
};
version = "5.1.0";
version = "5.1.1";
};
liquid = {
groups = ["default"];
@ -2262,10 +2274,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0q8d881k1b3rbsfcdi3fx0b5vpdr5wcrhn88r2d9j7zjdkxp5mw5";
sha256 = "1r64z0m5zrn4k37wabfnv43wa6yivgdfk6cf2rpmmirlz889yaf1";
type = "gem";
};
version = "3.5.1";
version = "3.5.2";
};
mime-types-data = {
groups = ["default"];
@ -2323,10 +2335,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0bkmfi9mb49m0fkdhl2g38i3xxa02d411gg0m8x0gvbwfmmg5ym3";
sha256 = "1g4sjps6k8gvsm9hig3v6hnlpklgjipdaha2z2q0grxdfh6hrsb8";
type = "gem";
};
version = "5.20.0";
version = "5.21.1";
};
molinillo = {
groups = ["default"];
@ -2429,16 +2441,27 @@
};
version = "1.4.10";
};
net-http = {
dependencies = ["uri"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "10n2n9aq00ih8v881af88l1zyrqgs5cl3njdw8argjwbl5ggqvm9";
type = "gem";
};
version = "0.4.1";
};
net-imap = {
dependencies = ["date" "net-protocol"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1izifdsinnfi34v2x3yavc0kxcmi1cwph11akqf949rf00sckkcp";
sha256 = "0z9f6kfxz9qanar534gs3mk6snyvw8rnx3f6ykjn2jiziv0rv1ig";
type = "gem";
};
version = "0.4.9";
version = "0.4.9.1";
};
net-pop = {
dependencies = ["net-protocol"];
@ -2479,10 +2502,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1rx3758w0bmbr21s2nsc6llflsrnp50fwdnly3ixra4v53gbhzid";
sha256 = "0csspzqrg7s2v2wdp6vqqs1rra6w5ilpgnps5h52ig6rp7x2i389";
type = "gem";
};
version = "0.4.0";
version = "0.4.0.1";
};
net-ssh = {
groups = ["default"];
@ -2520,7 +2543,7 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "NBOIGE6XXQkebjjOPzsziL+35Kw9eQ79jjkSSEQEC9E=";
sha256 = "1l8b0i24h4irivyhwy9xmkjbggw86cxkzkiqdqg0jpcp9qc8h4rl";
type = "gem";
};
version = "1.16.0";
@ -2638,10 +2661,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0r69dbh6h6j4d54isany2ir4ni4gf2ysvk3k44awi6amz18nggpd";
sha256 = "0c53sypj4pac5id0abxjbii9g5xnykb9aapwr1z38wzaqv1ys026";
type = "gem";
};
version = "3.2.2.4";
version = "3.3.0.3";
};
paru = {
groups = ["default"];
@ -2784,10 +2807,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1pp43n69p6bjvc640wgcz295w1q2v9awcqgbwcqn082dbvq5xvnx";
sha256 = "0xgsr1agv754709fb7x11zn07skmbwlds88sa5s57d7x1apswmkd";
type = "gem";
};
version = "1.4.0";
version = "1.5.0";
};
psych = {
dependencies = ["stringio"];
@ -2816,10 +2839,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1y8jcw80zcxvdq0id329lzmp5pzx7hpac227d7sgjkblc89s3pfm";
sha256 = "0i2vaww6qcazj0ywva1plmjnj6rk23b01szswc5jhcq7s2cikd1y";
type = "gem";
};
version = "6.4.0";
version = "6.4.2";
};
pwntools = {
dependencies = ["crabstone" "dentaku" "elftools" "keystone-engine" "method_source" "one_gadget" "rainbow" "ruby2ruby" "rubyserial"];
@ -2853,15 +2876,15 @@
version = "2.2.8";
};
rack-protection = {
dependencies = ["rack"];
dependencies = ["base64" "rack"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0xsz78hccgza144n37bfisdkzpr2c8m0xl6rnlzgxdbsm1zrkg7r";
sha256 = "1zzvivmdb4dkscc58i3gmcyrnypynsjwp6xgc4ylarlhqmzvlx1w";
type = "gem";
};
version = "3.1.0";
version = "3.2.0";
};
rack-session = {
dependencies = ["rack"];
@ -3039,10 +3062,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0ih6igmfcb4b9a8hd46ggn85zfyclz9h828d0xafy2pq5qlz9fs2";
sha256 = "0sj80r3gy4sb27mrgc6pwcf2lra669p8p81axdv2p5pfm6k3mqbq";
type = "gem";
};
version = "2.5.0";
version = "2.6.0";
};
red-colors = {
dependencies = ["matrix"];
@ -3114,10 +3137,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1xrghj2vka7girycp1m88kvl4qxkm4mj4djz4w1jzywb4v97fclm";
sha256 = "1ndxm0xnv27p4gv6xynk6q41irckj76q1jsqpysd9h6f86hhp841";
type = "gem";
};
version = "2.8.3";
version = "2.9.0";
};
reline = {
dependencies = ["io-console"];
@ -3125,10 +3148,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1hi6zfj6zqzxcbamhjm9w9cswv62f76l8gsdfcnmhpw35cyxphh8";
sha256 = "0fhwdmw89zqb1fdxcd6lr57zabbfi08z8j6kqwngak0xnxi2j10l";
type = "gem";
};
version = "0.4.1";
version = "0.4.2";
};
rest-client = {
dependencies = ["http-accept" "http-cookie" "mime-types" "netrc"];
@ -3275,10 +3298,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0rfg3p6bblx9gv934fdgaji0wg0xl1drhrnlifqdgkw8wbiaw0jg";
sha256 = "0cf7fn4dwf45r3nhnda0dhnwn8qghswyqbfxr2ippb3z8a6gmc8v";
type = "gem";
};
version = "1.20.1";
version = "1.20.2";
};
ruby-graphviz = {
dependencies = ["rexml"];
@ -3318,10 +3341,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1g1vdas991rv6lrjppjxjbfyzif4jxbncrcg9shgzrmibzilbnwr";
sha256 = "1wajd1cib17jlvfh0agiz2x20p22v6g2ydvqpm6c7srv2x3g7vbb";
type = "gem";
};
version = "0.13.2";
version = "0.13.4";
};
ruby-lxc = {
groups = ["default"];
@ -3507,10 +3530,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "148cmk9bdj6y2ax06rd5q5i322lmzn49qd1cal616hys6qd04bm1";
sha256 = "0csan4kfiwr8a94l0zy3xsrs525ygkc0ly8mdihx5lf9x6ywg6s0";
type = "gem";
};
version = "0.21.0";
version = "0.21.1";
};
sequel = {
dependencies = ["bigdecimal"];
@ -3518,10 +3541,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1b2ypz0sgivfjzsr4igh6cm46fifzkanmz0fw8p0yq5xr4isv722";
sha256 = "1698b1fc8b5yxgb3y5w3bkz1xjxxwpa19b3x17211x8jhy5cjzjd";
type = "gem";
};
version = "5.75.0";
version = "5.76.0";
};
sequel_pg = {
dependencies = ["pg" "sequel"];
@ -3592,10 +3615,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "00541cnypsh1mnilfxxqlz6va9afrixf9m1asn4wzjp5m59777p8";
sha256 = "01wq20aqk5kfggq3wagx5xr1cz0x08lg6dxbk9yhd1sf0d6pywkf";
type = "gem";
};
version = "3.1.0";
version = "3.2.0";
};
slather = {
dependencies = ["CFPropertyList" "activesupport" "clamp" "nokogiri" "xcodeproj"];
@ -3623,10 +3646,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1a77kysns9pz4nx149df0f987qj1pdfyjby2jr3iwmj2zj7r3klp";
sha256 = "1ndib94d181y5gd7qg515ralb02zri91vd3q94k21fgc4r897cd4";
type = "gem";
};
version = "0.3.0";
version = "0.4.0";
};
snmp = {
groups = ["default"];
@ -3654,10 +3677,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0xm54yjrdz200iahvily91n0nlv9xr2yp1rjz077fq1z2pi1kadg";
sha256 = "1raijm9if45lssx8a0m8dpnb9d7grqgyrgnx7g3v4vyw3wvn6pm0";
type = "gem";
};
version = "0.5.11164";
version = "0.5.11193";
};
sqlite3 = {
dependencies = ["mini_portile2"];
@ -3665,10 +3688,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "08irz5llz31im8pmkk5k0kw433jyyji1qa98xkdmpphncdjr38am";
sha256 = "0g5frmpl4dlb36y4zv1p5mvd3pag5ya96bjpjmyxpchzb5jmjjw9";
type = "gem";
};
version = "1.6.9";
version = "1.7.0";
};
stringio = {
groups = ["default"];
@ -3788,10 +3811,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1fqzm5a7wf7r9jl7pxs7g6m3qpvyzpia0pid0blzc0b34n0nrb35";
sha256 = "1nva5glid3mpwqk0siws74r6qfv89n0amw9ffzwnwlm12cd4ahdm";
type = "gem";
};
version = "2.1.6";
version = "2.1.7";
};
treetop = {
dependencies = ["polyglot"];
@ -3899,6 +3922,16 @@
};
version = "2.5.0";
};
uri = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "094gk72ckazf495qc76gk09b5i318d5l9m7bicg2wxlrjcm3qm96";
type = "gem";
};
version = "0.13.0";
};
uuid4r = {
groups = ["default"];
platforms = [];