diff --git a/ci/OWNERS b/ci/OWNERS index 173f50163ded..f0483935cc5e 100644 --- a/ci/OWNERS +++ b/ci/OWNERS @@ -229,7 +229,7 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt /pkgs/servers/sql/postgresql @NixOS/postgres /nixos/modules/services/databases/postgresql.md @NixOS/postgres /nixos/modules/services/databases/postgresql.nix @NixOS/postgres -/nixos/tests/postgresql.nix @NixOS/postgres +/nixos/tests/postgresql @NixOS/postgres # Hardened profile & related modules /nixos/modules/profiles/hardened.nix @joachifm diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index b3a48267ecae..fdd7825291e2 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -13509,6 +13509,12 @@ githubId = 322214; name = "Mathnerd314"; }; + mathstlouis = { + email = "matfino+gh@gmail.com"; + github = "mathstlouis"; + githubId = 35696151; + name = "mathstlouis"; + }; matklad = { email = "aleksey.kladov@gmail.com"; github = "matklad"; @@ -21772,6 +21778,12 @@ githubId = 57180880; name = "Ansh Tyagi"; }; + therealgramdalf = { + email = "gramdalftech@gmail.com"; + github = "TheRealGramdalf"; + githubId = 79593869; + name = "Gramdalf"; + }; therealr5 = { email = "rouven@rfive.de"; github = "therealr5"; diff --git a/nixos/doc/manual/release-notes/rl-2411.section.md b/nixos/doc/manual/release-notes/rl-2411.section.md index facfb3d0414d..335618dbc48d 100644 --- a/nixos/doc/manual/release-notes/rl-2411.section.md +++ b/nixos/doc/manual/release-notes/rl-2411.section.md @@ -109,6 +109,8 @@ - [Firefly-iii Data Importer](https://github.com/firefly-iii/data-importer), a data importer for Firefly-III. Available as [services.firefly-iii-data-importer](options.html#opt-services.firefly-iii-data-importer.enable). +- [Dashy](https://dashy.to), an open source, highly customizable, easy to use, privacy-respecting dashboard app. Available as [services.dashy](options.html#opt-services.dashy). + - [QGroundControl], a ground station support and configuration manager for the PX4 and APM Flight Stacks. Available as [programs.qgroundcontrol](options.html#opt-programs.qgroundcontrol.enable). - [Eintopf](https://eintopf.info), a community event and calendar web application. Available as [services.eintopf](options.html#opt-services.eintopf.enable). diff --git a/nixos/modules/services/web-apps/dashy.nix b/nixos/modules/services/web-apps/dashy.nix new file mode 100644 index 000000000000..47bcab976e6d --- /dev/null +++ b/nixos/modules/services/web-apps/dashy.nix @@ -0,0 +1,173 @@ +{ + config, + lib, + pkgs, + ... +}: +let + inherit (lib.types) package str; + inherit (lib) + mkIf + mkOption + mkEnableOption + mkPackageOption + ; + cfg = config.services.dashy; +in +{ + options.services.dashy = { + enable = mkEnableOption '' + Dashy, a highly customizable, easy to use, privacy-respecting dashboard app. + + Note that this builds a static web app as opposed to running a full node server, unlike the default docker image. + + Writing config changes to disk through the UI, triggering a rebuild through the UI and application status checks are + unavailable without the node server; Everything else will work fine. + + See the deployment docs for [building from source](https://dashy.to/docs/deployment#build-from-source), [hosting with a CDN](https://dashy.to/docs/deployment#hosting-with-cdn) and [CDN cloud deploy](https://dashy.to/docs/deployment#cdn--cloud-deploy) for more information. + ''; + + virtualHost = { + enableNginx = mkEnableOption "a virtualhost to serve dashy through nginx"; + + domain = mkOption { + description = '' + Domain to use for the virtual host. + + This can be used to change nginx options like + ```nix + services.nginx.virtualHosts."$\{config.services.dashy.virtualHost.domain}".listen = [ ... ] + ``` + or + ```nix + services.nginx.virtualHosts."example.com".listen = [ ... ] + ``` + ''; + type = str; + }; + }; + + package = mkPackageOption pkgs "dashy-ui" { }; + + finalDrv = mkOption { + readOnly = true; + default = + if cfg.settings != { } then cfg.package.override { inherit (cfg) settings; } else cfg.package; + defaultText = '' + if cfg.settings != {} + then cfg.package.override {inherit (cfg) settings;} + else cfg.package; + ''; + type = package; + description = '' + Final derivation containing the fully built static files + ''; + }; + + settings = mkOption { + default = { }; + description = '' + Settings serialized into `user-data/conf.yml` before build. + If left empty, the default configuration shipped with the package will be used instead. + + Note that the full configuration will be written to the nix store as world readable, which may include secrets such as [password hashes](https://dashy.to/docs/configuring#appconfigauthusers-optional). + + To add files such as icons or backgrounds, you can reference them in line such as + ```nix + icon = "$\{./icon.png}"; + ``` + This will add the file to the nix store upon build, referencing it by file path as expected by Dashy. + ''; + example = '' + { + appConfig = { + cssThemes = [ + "example-theme-1" + "example-theme-2" + ]; + enableFontAwesome = true; + fontAwesomeKey = "e9076c7025"; + theme = "thebe"; + }; + pageInfo = { + description = "My Awesome Dashboard"; + navLinks = [ + { + path = "/"; + title = "Home"; + } + { + path = "https://example.com"; + title = "Example 1"; + } + { + path = "https://example.com"; + title = "Example 2"; + } + ]; + title = "Dashy"; + }; + sections = [ + { + displayData = { + collapsed = true; + cols = 2; + customStyles = "border: 2px dashed red;"; + itemSize = "large"; + }; + items = [ + { + backgroundColor = "#0079ff"; + color = "#00ffc9"; + description = "Source code and documentation on GitHub"; + icon = "fab fa-github"; + target = "sametab"; + title = "Source"; + url = "https://github.com/Lissy93/dashy"; + } + { + description = "View currently open issues, or raise a new one"; + icon = "fas fa-bug"; + title = "Issues"; + url = "https://github.com/Lissy93/dashy/issues"; + } + { + description = "Live Demo #1"; + icon = "fas fa-rocket"; + target = "iframe"; + title = "Demo 1"; + url = "https://dashy-demo-1.as93.net"; + } + { + description = "Live Demo #2"; + icon = "favicon"; + target = "newtab"; + title = "Demo 2"; + url = "https://dashy-demo-2.as93.net"; + } + ]; + name = "Getting Started"; + } + ]; + } + ''; + inherit (pkgs.formats.json { }) type; + }; + }; + + config = mkIf cfg.enable { + services.nginx = mkIf cfg.virtualHost.enableNginx { + enable = true; + virtualHosts."${cfg.virtualHost.domain}" = { + locations."/" = { + root = cfg.finalDrv; + tryFiles = "$uri /index.html "; + }; + }; + }; + }; + + meta.maintainers = [ + lib.maintainers.therealgramdalf + ]; +} diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 1288955272aa..37e005f128a2 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -775,13 +775,10 @@ in { peering-manager = handleTest ./web-apps/peering-manager.nix {}; peertube = handleTestOn ["x86_64-linux"] ./web-apps/peertube.nix {}; peroxide = handleTest ./peroxide.nix {}; - pg_anonymizer = handleTest ./pg_anonymizer.nix {}; pgadmin4 = handleTest ./pgadmin4.nix {}; pgbouncer = handleTest ./pgbouncer.nix {}; pghero = runTest ./pghero.nix; - pgjwt = handleTest ./pgjwt.nix {}; pgmanage = handleTest ./pgmanage.nix {}; - pgvecto-rs = handleTest ./pgvecto-rs.nix {}; phosh = handleTest ./phosh.nix {}; photonvision = handleTest ./photonvision.nix {}; photoprism = handleTest ./photoprism.nix {}; @@ -814,13 +811,7 @@ in { postfix = handleTest ./postfix.nix {}; postfix-raise-smtpd-tls-security-level = handleTest ./postfix-raise-smtpd-tls-security-level.nix {}; postfixadmin = handleTest ./postfixadmin.nix {}; - postgis = handleTest ./postgis.nix {}; - apache_datasketches = handleTest ./apache_datasketches.nix {}; - postgresql = handleTest ./postgresql.nix {}; - postgresql-jit = handleTest ./postgresql-jit.nix {}; - postgresql-wal-receiver = handleTest ./postgresql-wal-receiver.nix {}; - postgresql-tls-client-cert = handleTest ./postgresql-tls-client-cert.nix {}; - postgresql-wal2json = handleTest ./postgresql-wal2json.nix {}; + postgresql = handleTest ./postgresql {}; powerdns = handleTest ./powerdns.nix {}; powerdns-admin = handleTest ./powerdns-admin.nix {}; power-profiles-daemon = handleTest ./power-profiles-daemon.nix {}; @@ -1047,7 +1038,6 @@ in { tiddlywiki = handleTest ./tiddlywiki.nix {}; tigervnc = handleTest ./tigervnc.nix {}; tika = runTest ./tika.nix; - timescaledb = handleTest ./timescaledb.nix {}; timezone = handleTest ./timezone.nix {}; timidity = handleTestOn ["aarch64-linux" "x86_64-linux"] ./timidity {}; tinc = handleTest ./tinc {}; @@ -1067,7 +1057,6 @@ in { trezord = handleTest ./trezord.nix {}; trickster = handleTest ./trickster.nix {}; trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {}; - tsja = handleTest ./tsja.nix {}; tsm-client-gui = handleTest ./tsm-client-gui.nix {}; ttyd = handleTest ./web-servers/ttyd.nix {}; txredisapi = handleTest ./txredisapi.nix {}; diff --git a/nixos/tests/apache_datasketches.nix b/nixos/tests/apache_datasketches.nix deleted file mode 100644 index 2bf099ac7991..000000000000 --- a/nixos/tests/apache_datasketches.nix +++ /dev/null @@ -1,29 +0,0 @@ -import ./make-test-python.nix ({ pkgs, ...} : { - name = "postgis"; - meta = with pkgs.lib.maintainers; { - maintainers = [ lsix ]; # TODO: Who's the maintener now? - }; - - nodes = { - master = - { pkgs, ... }: - - { - services.postgresql = let mypg = pkgs.postgresql_15; in { - enable = true; - package = mypg; - extraPlugins = with mypg.pkgs; [ - apache_datasketches - ]; - }; - }; - }; - - testScript = '' - start_all() - master.wait_for_unit("postgresql") - master.sleep(10) # Hopefully this is long enough!! - master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION datasketches;'") - master.succeed("sudo -u postgres psql -c 'SELECT hll_sketch_to_string(hll_sketch_build(1));'") - ''; -}) diff --git a/nixos/tests/pg_anonymizer.nix b/nixos/tests/pg_anonymizer.nix deleted file mode 100644 index b26e4dca0580..000000000000 --- a/nixos/tests/pg_anonymizer.nix +++ /dev/null @@ -1,94 +0,0 @@ -import ./make-test-python.nix ({ pkgs, lib, ... }: { - name = "pg_anonymizer"; - meta.maintainers = lib.teams.flyingcircus.members; - - nodes.machine = { pkgs, ... }: { - environment.systemPackages = [ pkgs.pg-dump-anon ]; - services.postgresql = { - enable = true; - extraPlugins = ps: [ ps.anonymizer ]; - settings.shared_preload_libraries = [ "anon" ]; - }; - }; - - testScript = '' - start_all() - machine.wait_for_unit("multi-user.target") - machine.wait_for_unit("postgresql.service") - - with subtest("Setup"): - machine.succeed("sudo -u postgres psql --command 'create database demo'") - machine.succeed( - "sudo -u postgres psql -d demo -f ${pkgs.writeText "init.sql" '' - create extension anon cascade; - select anon.init(); - create table player(id serial, name text, points int); - insert into player(id,name,points) values (1,'Foo', 23); - insert into player(id,name,points) values (2,'Bar',42); - security label for anon on column player.name is 'MASKED WITH FUNCTION anon.fake_last_name();'; - security label for anon on column player.points is 'MASKED WITH VALUE NULL'; - ''}" - ) - - def get_player_table_contents(): - return [ - x.split(',') for x in machine.succeed("sudo -u postgres psql -d demo --csv --command 'select * from player'").splitlines()[1:] - ] - - def check_anonymized_row(row, id, original_name): - assert row[0] == id, f"Expected first row to have ID {id}, but got {row[0]}" - assert row[1] != original_name, f"Expected first row to have a name other than {original_name}" - assert not bool(row[2]), "Expected points to be NULL in first row" - - def find_xsv_in_dump(dump, sep=','): - """ - Expecting to find a CSV (for pg_dump_anon) or TSV (for pg_dump) structure, looking like - - COPY public.player ... - 1,Shields, - 2,Salazar, - \. - - in the given dump (the commas are tabs in case of pg_dump). - Extract the CSV lines and split by `sep`. - """ - - try: - from itertools import dropwhile, takewhile - return [x.split(sep) for x in list(takewhile( - lambda x: x != "\\.", - dropwhile( - lambda x: not x.startswith("COPY public.player"), - dump.splitlines() - ) - ))[1:]] - except: - print(f"Dump to process: {dump}") - raise - - def check_original_data(output): - assert output[0] == ['1','Foo','23'], f"Expected first row from player table to be 1,Foo,23; got {output[0]}" - assert output[1] == ['2','Bar','42'], f"Expected first row from player table to be 2,Bar,42; got {output[1]}" - - def check_anonymized_rows(output): - check_anonymized_row(output[0], '1', 'Foo') - check_anonymized_row(output[1], '2', 'Bar') - - with subtest("Check initial state"): - check_original_data(get_player_table_contents()) - - with subtest("Anonymous dumps"): - check_original_data(find_xsv_in_dump( - machine.succeed("sudo -u postgres pg_dump demo"), - sep='\t' - )) - check_anonymized_rows(find_xsv_in_dump( - machine.succeed("sudo -u postgres pg_dump_anon -U postgres -h /run/postgresql -d demo"), - sep=',' - )) - - with subtest("Anonymize"): - machine.succeed("sudo -u postgres psql -d demo --command 'select anon.anonymize_database();'") - check_anonymized_rows(get_player_table_contents()) - ''; -}) diff --git a/nixos/tests/pgjwt.nix b/nixos/tests/pgjwt.nix deleted file mode 100644 index 3ab905cea9ac..000000000000 --- a/nixos/tests/pgjwt.nix +++ /dev/null @@ -1,35 +0,0 @@ -import ./make-test-python.nix ({ pkgs, lib, ...}: - -with pkgs; { - name = "pgjwt"; - meta = with lib.maintainers; { - maintainers = [ spinus willibutz ]; - }; - - nodes = { - master = { ... }: - { - services.postgresql = { - enable = true; - extraPlugins = ps: with ps; [ pgjwt pgtap ]; - }; - }; - }; - - testScript = { nodes, ... }: - let - sqlSU = "${nodes.master.services.postgresql.superUser}"; - pgProve = "${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}"; - inherit (nodes.master.services.postgresql.package.pkgs) pgjwt; - in - '' - start_all() - master.wait_for_unit("postgresql") - master.succeed( - "${pkgs.gnused}/bin/sed -e '12 i CREATE EXTENSION pgcrypto;\\nCREATE EXTENSION pgtap;\\nSET search_path TO tap,public;' ${pgjwt.src}/test.sql > /tmp/test.sql" - ) - master.succeed( - "${pkgs.sudo}/bin/sudo -u ${sqlSU} PGOPTIONS=--search_path=tap,public ${pgProve}/bin/pg_prove -d postgres -v -f /tmp/test.sql" - ) - ''; -}) diff --git a/nixos/tests/pgvecto-rs.nix b/nixos/tests/pgvecto-rs.nix deleted file mode 100644 index 8d9d6c0b88f5..000000000000 --- a/nixos/tests/pgvecto-rs.nix +++ /dev/null @@ -1,76 +0,0 @@ -# mostly copied from ./timescaledb.nix which was copied from ./postgresql.nix -# as it seemed unapproriate to test additional extensions for postgresql there. - -{ system ? builtins.currentSystem -, config ? { } -, pkgs ? import ../.. { inherit system config; } -}: - -with import ../lib/testing-python.nix { inherit system pkgs; }; -with pkgs.lib; - -let - postgresql-versions = import ../../pkgs/servers/sql/postgresql pkgs; - # Test cases from https://docs.pgvecto.rs/use-cases/hybrid-search.html - test-sql = pkgs.writeText "postgresql-test" '' - CREATE EXTENSION vectors; - - CREATE TABLE items ( - id bigserial PRIMARY KEY, - content text NOT NULL, - embedding vectors.vector(3) NOT NULL -- 3 dimensions - ); - - INSERT INTO items (content, embedding) VALUES - ('a fat cat sat on a mat and ate a fat rat', '[1, 2, 3]'), - ('a fat dog sat on a mat and ate a fat rat', '[4, 5, 6]'), - ('a thin cat sat on a mat and ate a thin rat', '[7, 8, 9]'), - ('a thin dog sat on a mat and ate a thin rat', '[10, 11, 12]'); - ''; - make-postgresql-test = postgresql-name: postgresql-package: makeTest { - name = postgresql-name; - meta = with pkgs.lib.maintainers; { - maintainers = [ diogotcorreia ]; - }; - - nodes.machine = { ... }: - { - services.postgresql = { - enable = true; - package = postgresql-package; - extraPlugins = ps: with ps; [ - pgvecto-rs - ]; - settings.shared_preload_libraries = "vectors"; - }; - }; - - testScript = '' - def check_count(statement, lines): - return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format( - statement, lines - ) - - - machine.start() - machine.wait_for_unit("postgresql") - - with subtest("Postgresql with extension vectors is available just after unit start"): - machine.succeed(check_count("SELECT * FROM pg_available_extensions WHERE name = 'vectors' AND default_version = '${postgresql-package.pkgs.pgvecto-rs.version}';", 1)) - - machine.succeed("sudo -u postgres psql -f ${test-sql}") - - machine.succeed(check_count("SELECT content, embedding FROM items WHERE to_tsvector('english', content) @@ 'cat & rat'::tsquery;", 2)) - - machine.shutdown() - ''; - - }; - applicablePostgresqlVersions = filterAttrs (_: value: versionAtLeast value.version "14") postgresql-versions; -in -mapAttrs' - (name: package: { - inherit name; - value = make-postgresql-test name package; - }) - applicablePostgresqlVersions diff --git a/nixos/tests/postgis.nix b/nixos/tests/postgis.nix deleted file mode 100644 index 5b63e2ba73eb..000000000000 --- a/nixos/tests/postgis.nix +++ /dev/null @@ -1,38 +0,0 @@ -import ./make-test-python.nix ({ pkgs, ...} : { - name = "postgis"; - meta = with pkgs.lib.maintainers; { - maintainers = [ lsix ]; - }; - - nodes = { - master = - { pkgs, ... }: - - { - services.postgresql = { - enable = true; - package = pkgs.postgresql; - extraPlugins = ps: with ps; [ - postgis - ]; - }; - }; - }; - - testScript = '' - start_all() - master.wait_for_unit("postgresql") - master.sleep(10) # Hopefully this is long enough!! - master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis;'") - master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis_raster;'") - master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis_topology;'") - master.succeed("sudo -u postgres psql -c 'select postgis_version();'") - master.succeed("[ \"$(sudo -u postgres psql --no-psqlrc --tuples-only -c 'select postgis_version();')\" = \" ${ - pkgs.lib.versions.major pkgs.postgis.version - }.${ - pkgs.lib.versions.minor pkgs.postgis.version - } USE_GEOS=1 USE_PROJ=1 USE_STATS=1\" ]") - # st_makepoint goes through c code - master.succeed("sudo -u postgres psql --no-psqlrc --tuples-only -c 'select st_makepoint(1, 1)'") - ''; -}) diff --git a/nixos/tests/postgresql-jit.nix b/nixos/tests/postgresql-jit.nix deleted file mode 100644 index f4b1d07a7faf..000000000000 --- a/nixos/tests/postgresql-jit.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ system ? builtins.currentSystem -, config ? {} -, pkgs ? import ../.. { inherit system config; } -, package ? null -}: - -with import ../lib/testing-python.nix { inherit system pkgs; }; - -let - inherit (pkgs) lib; - packages = builtins.attrNames (import ../../pkgs/servers/sql/postgresql pkgs); - - mkJitTestFromName = name: - mkJitTest pkgs.${name}; - - mkJitTest = package: makeTest { - name = package.name; - meta.maintainers = with lib.maintainers; [ ma27 ]; - nodes.machine = { pkgs, lib, ... }: { - services.postgresql = { - inherit package; - enable = true; - enableJIT = true; - initialScript = pkgs.writeText "init.sql" '' - create table demo (id int); - insert into demo (id) select generate_series(1, 5); - ''; - }; - }; - testScript = '' - machine.start() - machine.wait_for_unit("postgresql.service") - - with subtest("JIT is enabled"): - machine.succeed("sudo -u postgres psql <<<'show jit;' | grep 'on'") - - with subtest("Test JIT works fine"): - output = machine.succeed( - "cat ${pkgs.writeText "test.sql" '' - set jit_above_cost = 1; - EXPLAIN ANALYZE SELECT CONCAT('jit result = ', SUM(id)) FROM demo; - SELECT CONCAT('jit result = ', SUM(id)) from demo; - ''} | sudo -u postgres psql" - ) - assert "JIT:" in output - assert "jit result = 15" in output - - machine.shutdown() - ''; - }; -in -if package == null then - lib.genAttrs packages mkJitTestFromName -else - mkJitTest package diff --git a/nixos/tests/postgresql-tls-client-cert.nix b/nixos/tests/postgresql-tls-client-cert.nix deleted file mode 100644 index c1678ed733be..000000000000 --- a/nixos/tests/postgresql-tls-client-cert.nix +++ /dev/null @@ -1,141 +0,0 @@ -{ system ? builtins.currentSystem -, config ? { } -, pkgs ? import ../.. { inherit system config; } -, package ? null -}: - -with import ../lib/testing-python.nix { inherit system pkgs; }; - -let - lib = pkgs.lib; - - # Makes a test for a PostgreSQL package, given by name and looked up from `pkgs`. - makeTestAttribute = name: - { - inherit name; - value = makePostgresqlTlsClientCertTest pkgs."${name}"; - }; - - makePostgresqlTlsClientCertTest = pkg: - let - runWithOpenSSL = file: cmd: pkgs.runCommand file - { - buildInputs = [ pkgs.openssl ]; - } - cmd; - caKey = runWithOpenSSL "ca.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out"; - caCert = runWithOpenSSL - "ca.crt" - '' - openssl req -new -x509 -sha256 -key ${caKey} -out $out -subj "/CN=test.example" -days 36500 - ''; - serverKey = - runWithOpenSSL "server.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out"; - serverKeyPath = "/var/lib/postgresql"; - serverCert = - runWithOpenSSL "server.crt" '' - openssl req -new -sha256 -key ${serverKey} -out server.csr -subj "/CN=db.test.example" - openssl x509 -req -in server.csr -CA ${caCert} -CAkey ${caKey} \ - -CAcreateserial -out $out -days 36500 -sha256 - ''; - clientKey = - runWithOpenSSL "client.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out"; - clientCert = - runWithOpenSSL "client.crt" '' - openssl req -new -sha256 -key ${clientKey} -out client.csr -subj "/CN=test" - openssl x509 -req -in client.csr -CA ${caCert} -CAkey ${caKey} \ - -CAcreateserial -out $out -days 36500 -sha256 - ''; - clientKeyPath = "/root"; - - in - makeTest { - name = "postgresql-tls-client-cert-${pkg.name}"; - meta.maintainers = with lib.maintainers; [ erictapen ]; - - nodes.server = { ... }: { - system.activationScripts = { - keyPlacement.text = '' - mkdir -p '${serverKeyPath}' - cp '${serverKey}' '${serverKeyPath}/server.key' - chown postgres:postgres '${serverKeyPath}/server.key' - chmod 600 '${serverKeyPath}/server.key' - ''; - }; - services.postgresql = { - package = pkg; - enable = true; - enableTCPIP = true; - ensureUsers = [ - { - name = "test"; - ensureDBOwnership = true; - } - ]; - ensureDatabases = [ "test" ]; - settings = { - ssl = "on"; - ssl_ca_file = toString caCert; - ssl_cert_file = toString serverCert; - ssl_key_file = "${serverKeyPath}/server.key"; - }; - authentication = '' - hostssl test test ::/0 cert clientcert=verify-full - ''; - }; - networking = { - interfaces.eth1 = { - ipv6.addresses = [ - { address = "fc00::1"; prefixLength = 120; } - ]; - }; - firewall.allowedTCPPorts = [ 5432 ]; - }; - }; - - nodes.client = { ... }: { - system.activationScripts = { - keyPlacement.text = '' - mkdir -p '${clientKeyPath}' - cp '${clientKey}' '${clientKeyPath}/client.key' - chown root:root '${clientKeyPath}/client.key' - chmod 600 '${clientKeyPath}/client.key' - ''; - }; - environment = { - variables = { - PGHOST = "db.test.example"; - PGPORT = "5432"; - PGDATABASE = "test"; - PGUSER = "test"; - PGSSLMODE = "verify-full"; - PGSSLCERT = clientCert; - PGSSLKEY = "${clientKeyPath}/client.key"; - PGSSLROOTCERT = caCert; - }; - systemPackages = [ pkg ]; - }; - networking = { - interfaces.eth1 = { - ipv6.addresses = [ - { address = "fc00::2"; prefixLength = 120; } - ]; - }; - hosts = { "fc00::1" = [ "db.test.example" ]; }; - }; - }; - - testScript = '' - server.wait_for_unit("multi-user.target") - client.wait_for_unit("multi-user.target") - client.succeed("psql -c \"SELECT 1;\"") - ''; - }; - -in -if package == null then -# all-tests.nix: Maps the generic function over all attributes of PostgreSQL packages - builtins.listToAttrs (map makeTestAttribute (builtins.attrNames (import ../../pkgs/servers/sql/postgresql pkgs))) -else -# Called directly from .tests - makePostgresqlTlsClientCertTest package diff --git a/nixos/tests/postgresql-wal-receiver.nix b/nixos/tests/postgresql-wal-receiver.nix deleted file mode 100644 index a984f73c2be5..000000000000 --- a/nixos/tests/postgresql-wal-receiver.nix +++ /dev/null @@ -1,124 +0,0 @@ -{ system ? builtins.currentSystem, - config ? {}, - pkgs ? import ../.. { inherit system config; }, - package ? null -}: - -with import ../lib/testing-python.nix { inherit system pkgs; }; - -let - lib = pkgs.lib; - - # Makes a test for a PostgreSQL package, given by name and looked up from `pkgs`. - makeTestAttribute = name: - { - inherit name; - value = makePostgresqlWalReceiverTest pkgs."${name}"; - }; - - makePostgresqlWalReceiverTest = pkg: - let - postgresqlDataDir = "/var/lib/postgresql/${pkg.psqlSchema}"; - replicationUser = "wal_receiver_user"; - replicationSlot = "wal_receiver_slot"; - replicationConn = "postgresql://${replicationUser}@localhost"; - baseBackupDir = "/var/cache/wals/pg_basebackup"; - walBackupDir = "/var/cache/wals/pg_wal"; - - recoveryFile = pkgs.writeTextDir "recovery.signal" ""; - - in makeTest { - name = "postgresql-wal-receiver-${pkg.name}"; - meta.maintainers = with lib.maintainers; [ pacien ]; - - nodes.machine = { ... }: { - systemd.tmpfiles.rules = [ - "d /var/cache/wals 0750 postgres postgres - -" - ]; - - services.postgresql = { - package = pkg; - enable = true; - settings = { - max_replication_slots = 10; - max_wal_senders = 10; - recovery_end_command = "touch recovery.done"; - restore_command = "cp ${walBackupDir}/%f %p"; - wal_level = "archive"; # alias for replica on pg >= 9.6 - }; - authentication = '' - host replication ${replicationUser} all trust - ''; - initialScript = pkgs.writeText "init.sql" '' - create user ${replicationUser} replication; - select * from pg_create_physical_replication_slot('${replicationSlot}'); - ''; - }; - - services.postgresqlWalReceiver.receivers.main = { - postgresqlPackage = pkg; - connection = replicationConn; - slot = replicationSlot; - directory = walBackupDir; - }; - # This is only to speedup test, it isn't time racing. Service is set to autorestart always, - # default 60sec is fine for real system, but is too much for a test - systemd.services.postgresql-wal-receiver-main.serviceConfig.RestartSec = lib.mkForce 5; - systemd.services.postgresql.serviceConfig.ReadWritePaths = [ "/var/cache/wals" ]; - }; - - testScript = '' - # make an initial base backup - machine.wait_for_unit("postgresql") - machine.wait_for_unit("postgresql-wal-receiver-main") - # WAL receiver healthchecks PG every 5 seconds, so let's be sure they have connected each other - # required only for 9.4 - machine.sleep(5) - machine.succeed( - "${pkg}/bin/pg_basebackup --dbname=${replicationConn} --pgdata=${baseBackupDir}" - ) - - # create a dummy table with 100 records - machine.succeed( - "sudo -u postgres psql --command='create table dummy as select * from generate_series(1, 100) as val;'" - ) - - # stop postgres and destroy data - machine.systemctl("stop postgresql") - machine.systemctl("stop postgresql-wal-receiver-main") - machine.succeed("rm -r ${postgresqlDataDir}/{base,global,pg_*}") - - # restore the base backup - machine.succeed( - "cp -r ${baseBackupDir}/* ${postgresqlDataDir} && chown postgres:postgres -R ${postgresqlDataDir}" - ) - - # prepare WAL and recovery - machine.succeed("chmod a+rX -R ${walBackupDir}") - machine.execute( - "for part in ${walBackupDir}/*.partial; do mv $part ''${part%%.*}; done" - ) # make use of partial segments too - machine.succeed( - "cp ${recoveryFile}/* ${postgresqlDataDir}/ && chmod 666 ${postgresqlDataDir}/recovery*" - ) - - # replay WAL - machine.systemctl("start postgresql") - machine.wait_for_file("${postgresqlDataDir}/recovery.done") - machine.systemctl("restart postgresql") - machine.wait_for_unit("postgresql") - - # check that our records have been restored - machine.succeed( - "test $(sudo -u postgres psql --pset='pager=off' --tuples-only --command='select count(distinct val) from dummy;') -eq 100" - ) - ''; - }; - -in -if package == null then - # all-tests.nix: Maps the generic function over all attributes of PostgreSQL packages - builtins.listToAttrs (map makeTestAttribute (builtins.attrNames (import ../../pkgs/servers/sql/postgresql pkgs))) -else - # Called directly from .tests - makePostgresqlWalReceiverTest package diff --git a/nixos/tests/postgresql-wal2json.nix b/nixos/tests/postgresql-wal2json.nix deleted file mode 100644 index 043ad48cbc6e..000000000000 --- a/nixos/tests/postgresql-wal2json.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - system ? builtins.currentSystem, - config ? { }, - pkgs ? import ../.. { inherit system config; }, - postgresql ? null, -}: - -let - makeTest = import ./make-test-python.nix; - # Makes a test for a PostgreSQL package, given by name and looked up from `pkgs`. - makeTestAttribute = name: { - inherit name; - value = makePostgresqlWal2jsonTest pkgs."${name}"; - }; - - makePostgresqlWal2jsonTest = - postgresqlPackage: - makeTest { - name = "postgresql-wal2json-${postgresqlPackage.name}"; - meta.maintainers = with pkgs.lib.maintainers; [ euank ]; - - nodes.machine = { - services.postgresql = { - package = postgresqlPackage; - enable = true; - extraPlugins = with postgresqlPackage.pkgs; [ wal2json ]; - settings = { - wal_level = "logical"; - max_replication_slots = "10"; - max_wal_senders = "10"; - }; - }; - }; - - testScript = '' - machine.wait_for_unit("postgresql") - machine.succeed( - "sudo -u postgres psql -qAt -f ${./postgresql/wal2json/example2.sql} postgres > /tmp/example2.out" - ) - machine.succeed( - "diff ${./postgresql/wal2json/example2.out} /tmp/example2.out" - ) - machine.succeed( - "sudo -u postgres psql -qAt -f ${./postgresql/wal2json/example3.sql} postgres > /tmp/example3.out" - ) - machine.succeed( - "diff ${./postgresql/wal2json/example3.out} /tmp/example3.out" - ) - ''; - }; - -in -# By default, create one test per postgresql version -if postgresql == null then - builtins.listToAttrs ( - map makeTestAttribute (builtins.attrNames (import ../../pkgs/servers/sql/postgresql pkgs)) - ) -# but if postgresql is set, we're being made as a passthru test for a specific postgres + wal2json version, just run one -else - makePostgresqlWal2jsonTest postgresql diff --git a/nixos/tests/postgresql.nix b/nixos/tests/postgresql.nix deleted file mode 100644 index ce16e54edf66..000000000000 --- a/nixos/tests/postgresql.nix +++ /dev/null @@ -1,226 +0,0 @@ -{ system ? builtins.currentSystem, - config ? {}, - pkgs ? import ../.. { inherit system config; } -}: - -with import ../lib/testing-python.nix { inherit system pkgs; }; -with pkgs.lib; - -let - postgresql-versions = import ../../pkgs/servers/sql/postgresql pkgs; - test-sql = pkgs.writeText "postgresql-test" '' - CREATE EXTENSION pgcrypto; -- just to check if lib loading works - CREATE TABLE sth ( - id int - ); - INSERT INTO sth (id) VALUES (1); - INSERT INTO sth (id) VALUES (1); - INSERT INTO sth (id) VALUES (1); - INSERT INTO sth (id) VALUES (1); - INSERT INTO sth (id) VALUES (1); - CREATE TABLE xmltest ( doc xml ); - INSERT INTO xmltest (doc) VALUES ('ok'); -- check if libxml2 enabled - ''; - make-postgresql-test = postgresql-name: postgresql-package: backup-all: makeTest { - name = postgresql-name; - meta = with pkgs.lib.maintainers; { - maintainers = [ zagy ]; - }; - - nodes.machine = {...}: - { - services.postgresql = { - enable = true; - package = postgresql-package; - }; - - services.postgresqlBackup = { - enable = true; - databases = optional (!backup-all) "postgres"; - }; - }; - - testScript = let - backupName = if backup-all then "all" else "postgres"; - backupService = if backup-all then "postgresqlBackup" else "postgresqlBackup-postgres"; - backupFileBase = "/var/backup/postgresql/${backupName}"; - in '' - def check_count(statement, lines): - return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format( - statement, lines - ) - - - machine.start() - machine.wait_for_unit("postgresql") - - with subtest("Postgresql is available just after unit start"): - machine.succeed( - "cat ${test-sql} | sudo -u postgres psql" - ) - - with subtest("Postgresql survives restart (bug #1735)"): - machine.shutdown() - import time - time.sleep(2) - machine.start() - machine.wait_for_unit("postgresql") - - machine.fail(check_count("SELECT * FROM sth;", 3)) - machine.succeed(check_count("SELECT * FROM sth;", 5)) - machine.fail(check_count("SELECT * FROM sth;", 4)) - machine.succeed(check_count("SELECT xpath('/test/text()', doc) FROM xmltest;", 1)) - - with subtest("Backup service works"): - machine.succeed( - "systemctl start ${backupService}.service", - "zcat ${backupFileBase}.sql.gz | grep 'ok'", - "ls -hal /var/backup/postgresql/ >/dev/console", - "stat -c '%a' ${backupFileBase}.sql.gz | grep 600", - ) - with subtest("Backup service removes prev files"): - machine.succeed( - # Create dummy prev files. - "touch ${backupFileBase}.prev.sql{,.gz,.zstd}", - "chown postgres:postgres ${backupFileBase}.prev.sql{,.gz,.zstd}", - - # Run backup. - "systemctl start ${backupService}.service", - "ls -hal /var/backup/postgresql/ >/dev/console", - - # Since nothing has changed in the database, the cur and prev files - # should match. - "zcat ${backupFileBase}.sql.gz | grep 'ok'", - "cmp ${backupFileBase}.sql.gz ${backupFileBase}.prev.sql.gz", - - # The prev files with unused suffix should be removed. - "[ ! -f '${backupFileBase}.prev.sql' ]", - "[ ! -f '${backupFileBase}.prev.sql.zstd' ]", - - # Both cur and prev file should only be accessible by the postgres user. - "stat -c '%a' ${backupFileBase}.sql.gz | grep 600", - "stat -c '%a' '${backupFileBase}.prev.sql.gz' | grep 600", - ) - with subtest("Backup service fails gracefully"): - # Sabotage the backup process - machine.succeed("rm /run/postgresql/.s.PGSQL.5432") - machine.fail( - "systemctl start ${backupService}.service", - ) - machine.succeed( - "ls -hal /var/backup/postgresql/ >/dev/console", - "zcat ${backupFileBase}.prev.sql.gz | grep 'ok'", - "stat ${backupFileBase}.in-progress.sql.gz", - ) - # In a previous version, the second run would overwrite prev.sql.gz, - # so we test a second run as well. - machine.fail( - "systemctl start ${backupService}.service", - ) - machine.succeed( - "stat ${backupFileBase}.in-progress.sql.gz", - "zcat ${backupFileBase}.prev.sql.gz | grep 'ok'", - ) - - - with subtest("Initdb works"): - machine.succeed("sudo -u postgres initdb -D /tmp/testpostgres2") - - machine.log(machine.execute("systemd-analyze security postgresql.service | grep -v ✓")[1]) - - machine.shutdown() - ''; - - }; - - mk-ensure-clauses-test = postgresql-name: postgresql-package: makeTest { - name = postgresql-name; - meta = with pkgs.lib.maintainers; { - maintainers = [ zagy ]; - }; - - nodes.machine = {...}: - { - services.postgresql = { - enable = true; - package = postgresql-package; - ensureUsers = [ - { - name = "all-clauses"; - ensureClauses = { - superuser = true; - createdb = true; - createrole = true; - "inherit" = true; - login = true; - replication = true; - bypassrls = true; - }; - } - { - name = "default-clauses"; - } - ]; - }; - }; - - testScript = let - getClausesQuery = user: pkgs.lib.concatStringsSep " " - [ - "SELECT row_to_json(row)" - "FROM (" - "SELECT" - "rolsuper," - "rolinherit," - "rolcreaterole," - "rolcreatedb," - "rolcanlogin," - "rolreplication," - "rolbypassrls" - "FROM pg_roles" - "WHERE rolname = '${user}'" - ") row;" - ]; - in '' - import json - machine.start() - machine.wait_for_unit("postgresql") - - with subtest("All user permissions are set according to the ensureClauses attr"): - clauses = json.loads( - machine.succeed( - "sudo -u postgres psql -tc \"${getClausesQuery "all-clauses"}\"" - ) - ) - print(clauses) - assert clauses['rolsuper'], 'expected user with clauses to have superuser clause' - assert clauses['rolinherit'], 'expected user with clauses to have inherit clause' - assert clauses['rolcreaterole'], 'expected user with clauses to have create role clause' - assert clauses['rolcreatedb'], 'expected user with clauses to have create db clause' - assert clauses['rolcanlogin'], 'expected user with clauses to have login clause' - assert clauses['rolreplication'], 'expected user with clauses to have replication clause' - assert clauses['rolbypassrls'], 'expected user with clauses to have bypassrls clause' - - with subtest("All user permissions default when ensureClauses is not provided"): - clauses = json.loads( - machine.succeed( - "sudo -u postgres psql -tc \"${getClausesQuery "default-clauses"}\"" - ) - ) - assert not clauses['rolsuper'], 'expected user with no clauses set to have default superuser clause' - assert clauses['rolinherit'], 'expected user with no clauses set to have default inherit clause' - assert not clauses['rolcreaterole'], 'expected user with no clauses set to have default create role clause' - assert not clauses['rolcreatedb'], 'expected user with no clauses set to have default create db clause' - assert clauses['rolcanlogin'], 'expected user with no clauses set to have default login clause' - assert not clauses['rolreplication'], 'expected user with no clauses set to have default replication clause' - assert not clauses['rolbypassrls'], 'expected user with no clauses set to have default bypassrls clause' - - machine.shutdown() - ''; - }; -in - concatMapAttrs (name: package: { - ${name} = make-postgresql-test name package false; - ${name + "-backup-all"} = make-postgresql-test "${name + "-backup-all"}" package true; - ${name + "-clauses"} = mk-ensure-clauses-test name package; - }) postgresql-versions diff --git a/nixos/tests/postgresql/anonymizer.nix b/nixos/tests/postgresql/anonymizer.nix new file mode 100644 index 000000000000..3a5f69086eaa --- /dev/null +++ b/nixos/tests/postgresql/anonymizer.nix @@ -0,0 +1,116 @@ +{ + pkgs, + makeTest, +}: + +let + inherit (pkgs) lib; + + makeTestFor = + package: + makeTest { + name = "postgresql_anonymizer-${package.name}"; + meta.maintainers = lib.teams.flyingcircus.members; + + nodes.machine = + { pkgs, ... }: + { + environment.systemPackages = [ pkgs.pg-dump-anon ]; + services.postgresql = { + inherit package; + enable = true; + extraPlugins = ps: [ ps.anonymizer ]; + settings.shared_preload_libraries = [ "anon" ]; + }; + }; + + testScript = '' + start_all() + machine.wait_for_unit("multi-user.target") + machine.wait_for_unit("postgresql.service") + + with subtest("Setup"): + machine.succeed("sudo -u postgres psql --command 'create database demo'") + machine.succeed( + "sudo -u postgres psql -d demo -f ${pkgs.writeText "init.sql" '' + create extension anon cascade; + select anon.init(); + create table player(id serial, name text, points int); + insert into player(id,name,points) values (1,'Foo', 23); + insert into player(id,name,points) values (2,'Bar',42); + security label for anon on column player.name is 'MASKED WITH FUNCTION anon.fake_last_name();'; + security label for anon on column player.points is 'MASKED WITH VALUE NULL'; + ''}" + ) + + def get_player_table_contents(): + return [ + x.split(',') for x in machine.succeed("sudo -u postgres psql -d demo --csv --command 'select * from player'").splitlines()[1:] + ] + + def check_anonymized_row(row, id, original_name): + assert row[0] == id, f"Expected first row to have ID {id}, but got {row[0]}" + assert row[1] != original_name, f"Expected first row to have a name other than {original_name}" + assert not bool(row[2]), "Expected points to be NULL in first row" + + def find_xsv_in_dump(dump, sep=','): + """ + Expecting to find a CSV (for pg_dump_anon) or TSV (for pg_dump) structure, looking like + + COPY public.player ... + 1,Shields, + 2,Salazar, + \. + + in the given dump (the commas are tabs in case of pg_dump). + Extract the CSV lines and split by `sep`. + """ + + try: + from itertools import dropwhile, takewhile + return [x.split(sep) for x in list(takewhile( + lambda x: x != "\\.", + dropwhile( + lambda x: not x.startswith("COPY public.player"), + dump.splitlines() + ) + ))[1:]] + except: + print(f"Dump to process: {dump}") + raise + + def check_original_data(output): + assert output[0] == ['1','Foo','23'], f"Expected first row from player table to be 1,Foo,23; got {output[0]}" + assert output[1] == ['2','Bar','42'], f"Expected first row from player table to be 2,Bar,42; got {output[1]}" + + def check_anonymized_rows(output): + check_anonymized_row(output[0], '1', 'Foo') + check_anonymized_row(output[1], '2', 'Bar') + + with subtest("Check initial state"): + check_original_data(get_player_table_contents()) + + with subtest("Anonymous dumps"): + check_original_data(find_xsv_in_dump( + machine.succeed("sudo -u postgres pg_dump demo"), + sep='\t' + )) + check_anonymized_rows(find_xsv_in_dump( + machine.succeed("sudo -u postgres pg_dump_anon -U postgres -h /run/postgresql -d demo"), + sep=',' + )) + + with subtest("Anonymize"): + machine.succeed("sudo -u postgres psql -d demo --command 'select anon.anonymize_database();'") + check_anonymized_rows(get_player_table_contents()) + ''; + }; +in +lib.recurseIntoAttrs ( + lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) ( + lib.filterAttrs (_: p: !p.pkgs.anonymizer.meta.broken) pkgs.postgresqlVersions + ) + // { + passthru.override = p: makeTestFor p; + } +) diff --git a/nixos/tests/postgresql/default.nix b/nixos/tests/postgresql/default.nix new file mode 100644 index 000000000000..4fe7e7a37e7e --- /dev/null +++ b/nixos/tests/postgresql/default.nix @@ -0,0 +1,26 @@ +{ + system ? builtins.currentSystem, + config ? { }, + pkgs ? import ../../.. { inherit system config; }, +}: + +with import ../../lib/testing-python.nix { inherit system pkgs; }; + +let + importWithArgs = path: import path { inherit pkgs makeTest; }; +in +{ + # postgresql + postgresql = importWithArgs ./postgresql.nix; + postgresql-jit = importWithArgs ./postgresql-jit.nix; + postgresql-wal-receiver = importWithArgs ./postgresql-wal-receiver.nix; + postgresql-tls-client-cert = importWithArgs ./postgresql-tls-client-cert.nix; + + # extensions + anonymizer = importWithArgs ./anonymizer.nix; + pgjwt = importWithArgs ./pgjwt.nix; + pgvecto-rs = importWithArgs ./pgvecto-rs.nix; + timescaledb = importWithArgs ./timescaledb.nix; + tsja = importWithArgs ./tsja.nix; + wal2json = importWithArgs ./wal2json.nix; +} diff --git a/nixos/tests/postgresql/pgjwt.nix b/nixos/tests/postgresql/pgjwt.nix new file mode 100644 index 000000000000..81e5dac41ada --- /dev/null +++ b/nixos/tests/postgresql/pgjwt.nix @@ -0,0 +1,57 @@ +{ + pkgs, + makeTest, +}: + +let + inherit (pkgs) lib; + + makeTestFor = + package: + makeTest { + name = "pgjwt-${package.name}"; + meta = with lib.maintainers; { + maintainers = [ + spinus + willibutz + ]; + }; + + nodes.master = + { ... }: + { + services.postgresql = { + inherit package; + enable = true; + extraPlugins = + ps: with ps; [ + pgjwt + pgtap + ]; + }; + }; + + testScript = + { nodes, ... }: + let + sqlSU = "${nodes.master.services.postgresql.superUser}"; + pgProve = "${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}"; + inherit (nodes.master.services.postgresql.package.pkgs) pgjwt; + in + '' + start_all() + master.wait_for_unit("postgresql") + master.succeed( + "${pkgs.sudo}/bin/sudo -u ${sqlSU} ${pgProve}/bin/pg_prove -d postgres -v -f ${pgjwt.src}/test.sql" + ) + ''; + }; +in +lib.recurseIntoAttrs ( + lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) ( + lib.filterAttrs (_: p: !p.pkgs.pgjwt.meta.broken) pkgs.postgresqlVersions + ) + // { + passthru.override = p: makeTestFor p; + } +) diff --git a/nixos/tests/postgresql/pgvecto-rs.nix b/nixos/tests/postgresql/pgvecto-rs.nix new file mode 100644 index 000000000000..9d8389eecf99 --- /dev/null +++ b/nixos/tests/postgresql/pgvecto-rs.nix @@ -0,0 +1,81 @@ +{ + pkgs, + makeTest, +}: + +let + inherit (pkgs) lib; + + # Test cases from https://docs.pgvecto.rs/use-cases/hybrid-search.html + test-sql = pkgs.writeText "postgresql-test" '' + CREATE EXTENSION vectors; + + CREATE TABLE items ( + id bigserial PRIMARY KEY, + content text NOT NULL, + embedding vectors.vector(3) NOT NULL -- 3 dimensions + ); + + INSERT INTO items (content, embedding) VALUES + ('a fat cat sat on a mat and ate a fat rat', '[1, 2, 3]'), + ('a fat dog sat on a mat and ate a fat rat', '[4, 5, 6]'), + ('a thin cat sat on a mat and ate a thin rat', '[7, 8, 9]'), + ('a thin dog sat on a mat and ate a thin rat', '[10, 11, 12]'); + ''; + + makeTestFor = + postgresqlPackage: + makeTest { + name = "pgvecto-rs-${postgresqlPackage.name}"; + meta = with lib.maintainers; { + maintainers = [ diogotcorreia ]; + }; + + nodes.machine = + { ... }: + { + services.postgresql = { + enable = true; + package = postgresqlPackage; + extraPlugins = + ps: with ps; [ + pgvecto-rs + ]; + settings.shared_preload_libraries = "vectors"; + }; + }; + + testScript = + { nodes, ... }: + let + inherit (nodes.machine.services.postgresql.package.pkgs) pgvecto-rs; + in + '' + def check_count(statement, lines): + return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format( + statement, lines + ) + + + machine.start() + machine.wait_for_unit("postgresql") + + with subtest("Postgresql with extension vectors is available just after unit start"): + machine.succeed(check_count("SELECT * FROM pg_available_extensions WHERE name = 'vectors' AND default_version = '${pgvecto-rs.version}';", 1)) + + machine.succeed("sudo -u postgres psql -f ${test-sql}") + + machine.succeed(check_count("SELECT content, embedding FROM items WHERE to_tsvector('english', content) @@ 'cat & rat'::tsquery;", 2)) + + machine.shutdown() + ''; + }; +in +lib.recurseIntoAttrs ( + lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) ( + lib.filterAttrs (_: p: !p.pkgs.pgvecto-rs.meta.broken) pkgs.postgresqlVersions + ) + // { + passthru.override = p: makeTestFor p; + } +) diff --git a/nixos/tests/postgresql/postgresql-jit.nix b/nixos/tests/postgresql/postgresql-jit.nix new file mode 100644 index 000000000000..5d0406062eae --- /dev/null +++ b/nixos/tests/postgresql/postgresql-jit.nix @@ -0,0 +1,58 @@ +{ + pkgs, + makeTest, +}: + +let + inherit (pkgs) lib; + + makeTestFor = + package: + makeTest { + name = "postgresql-jit-${package.name}"; + meta.maintainers = with lib.maintainers; [ ma27 ]; + + nodes.machine = + { pkgs, ... }: + { + services.postgresql = { + inherit package; + enable = true; + enableJIT = true; + initialScript = pkgs.writeText "init.sql" '' + create table demo (id int); + insert into demo (id) select generate_series(1, 5); + ''; + }; + }; + + testScript = '' + machine.start() + machine.wait_for_unit("postgresql.service") + + with subtest("JIT is enabled"): + machine.succeed("sudo -u postgres psql <<<'show jit;' | grep 'on'") + + with subtest("Test JIT works fine"): + output = machine.succeed( + "cat ${pkgs.writeText "test.sql" '' + set jit_above_cost = 1; + EXPLAIN ANALYZE SELECT CONCAT('jit result = ', SUM(id)) FROM demo; + SELECT CONCAT('jit result = ', SUM(id)) from demo; + ''} | sudo -u postgres psql" + ) + assert "JIT:" in output + assert "jit result = 15" in output + + machine.shutdown() + ''; + }; +in +lib.recurseIntoAttrs ( + lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) ( + lib.filterAttrs (n: _: lib.hasSuffix "_jit" n) pkgs.postgresqlVersions + ) + // { + passthru.override = p: makeTestFor p; + } +) diff --git a/nixos/tests/postgresql/postgresql-tls-client-cert.nix b/nixos/tests/postgresql/postgresql-tls-client-cert.nix new file mode 100644 index 000000000000..d7cddb625256 --- /dev/null +++ b/nixos/tests/postgresql/postgresql-tls-client-cert.nix @@ -0,0 +1,135 @@ +{ + pkgs, + makeTest, +}: + +let + inherit (pkgs) lib; + + runWithOpenSSL = + file: cmd: + pkgs.runCommand file { + buildInputs = [ pkgs.openssl ]; + } cmd; + caKey = runWithOpenSSL "ca.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out"; + caCert = runWithOpenSSL "ca.crt" '' + openssl req -new -x509 -sha256 -key ${caKey} -out $out -subj "/CN=test.example" -days 36500 + ''; + serverKey = runWithOpenSSL "server.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out"; + serverKeyPath = "/var/lib/postgresql"; + serverCert = runWithOpenSSL "server.crt" '' + openssl req -new -sha256 -key ${serverKey} -out server.csr -subj "/CN=db.test.example" + openssl x509 -req -in server.csr -CA ${caCert} -CAkey ${caKey} \ + -CAcreateserial -out $out -days 36500 -sha256 + ''; + clientKey = runWithOpenSSL "client.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out"; + clientCert = runWithOpenSSL "client.crt" '' + openssl req -new -sha256 -key ${clientKey} -out client.csr -subj "/CN=test" + openssl x509 -req -in client.csr -CA ${caCert} -CAkey ${caKey} \ + -CAcreateserial -out $out -days 36500 -sha256 + ''; + clientKeyPath = "/root"; + + makeTestFor = + package: + makeTest { + name = "postgresql-tls-client-cert-${package.name}"; + meta.maintainers = with lib.maintainers; [ erictapen ]; + + nodes.server = + { ... }: + { + system.activationScripts = { + keyPlacement.text = '' + mkdir -p '${serverKeyPath}' + cp '${serverKey}' '${serverKeyPath}/server.key' + chown postgres:postgres '${serverKeyPath}/server.key' + chmod 600 '${serverKeyPath}/server.key' + ''; + }; + services.postgresql = { + inherit package; + enable = true; + enableTCPIP = true; + ensureUsers = [ + { + name = "test"; + ensureDBOwnership = true; + } + ]; + ensureDatabases = [ "test" ]; + settings = { + ssl = "on"; + ssl_ca_file = toString caCert; + ssl_cert_file = toString serverCert; + ssl_key_file = "${serverKeyPath}/server.key"; + }; + authentication = '' + hostssl test test ::/0 cert clientcert=verify-full + ''; + }; + networking = { + interfaces.eth1 = { + ipv6.addresses = [ + { + address = "fc00::1"; + prefixLength = 120; + } + ]; + }; + firewall.allowedTCPPorts = [ 5432 ]; + }; + }; + + nodes.client = + { ... }: + { + system.activationScripts = { + keyPlacement.text = '' + mkdir -p '${clientKeyPath}' + cp '${clientKey}' '${clientKeyPath}/client.key' + chown root:root '${clientKeyPath}/client.key' + chmod 600 '${clientKeyPath}/client.key' + ''; + }; + environment = { + variables = { + PGHOST = "db.test.example"; + PGPORT = "5432"; + PGDATABASE = "test"; + PGUSER = "test"; + PGSSLMODE = "verify-full"; + PGSSLCERT = clientCert; + PGSSLKEY = "${clientKeyPath}/client.key"; + PGSSLROOTCERT = caCert; + }; + systemPackages = [ package ]; + }; + networking = { + interfaces.eth1 = { + ipv6.addresses = [ + { + address = "fc00::2"; + prefixLength = 120; + } + ]; + }; + hosts = { + "fc00::1" = [ "db.test.example" ]; + }; + }; + }; + + testScript = '' + server.wait_for_unit("multi-user.target") + client.wait_for_unit("multi-user.target") + client.succeed("psql -c \"SELECT 1;\"") + ''; + }; +in +lib.recurseIntoAttrs ( + lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) pkgs.postgresqlVersions + // { + passthru.override = p: makeTestFor p; + } +) diff --git a/nixos/tests/postgresql/postgresql-wal-receiver.nix b/nixos/tests/postgresql/postgresql-wal-receiver.nix new file mode 100644 index 000000000000..5c1551c5f2fd --- /dev/null +++ b/nixos/tests/postgresql/postgresql-wal-receiver.nix @@ -0,0 +1,115 @@ +{ + pkgs, + makeTest, +}: + +let + inherit (pkgs) lib; + + makeTestFor = + package: + let + postgresqlDataDir = "/var/lib/postgresql/${package.psqlSchema}"; + replicationUser = "wal_receiver_user"; + replicationSlot = "wal_receiver_slot"; + replicationConn = "postgresql://${replicationUser}@localhost"; + baseBackupDir = "/var/cache/wals/pg_basebackup"; + walBackupDir = "/var/cache/wals/pg_wal"; + recoveryFile = pkgs.writeTextDir "recovery.signal" ""; + in + makeTest { + name = "postgresql-wal-receiver-${package.name}"; + meta.maintainers = with lib.maintainers; [ pacien ]; + + nodes.machine = + { ... }: + { + systemd.tmpfiles.rules = [ + "d /var/cache/wals 0750 postgres postgres - -" + ]; + + services.postgresql = { + inherit package; + enable = true; + settings = { + max_replication_slots = 10; + max_wal_senders = 10; + recovery_end_command = "touch recovery.done"; + restore_command = "cp ${walBackupDir}/%f %p"; + wal_level = "archive"; # alias for replica on pg >= 9.6 + }; + authentication = '' + host replication ${replicationUser} all trust + ''; + initialScript = pkgs.writeText "init.sql" '' + create user ${replicationUser} replication; + select * from pg_create_physical_replication_slot('${replicationSlot}'); + ''; + }; + + services.postgresqlWalReceiver.receivers.main = { + postgresqlPackage = package; + connection = replicationConn; + slot = replicationSlot; + directory = walBackupDir; + }; + # This is only to speedup test, it isn't time racing. Service is set to autorestart always, + # default 60sec is fine for real system, but is too much for a test + systemd.services.postgresql-wal-receiver-main.serviceConfig.RestartSec = lib.mkForce 5; + systemd.services.postgresql.serviceConfig.ReadWritePaths = [ "/var/cache/wals" ]; + }; + + testScript = '' + # make an initial base backup + machine.wait_for_unit("postgresql") + machine.wait_for_unit("postgresql-wal-receiver-main") + # WAL receiver healthchecks PG every 5 seconds, so let's be sure they have connected each other + # required only for 9.4 + machine.sleep(5) + machine.succeed( + "${package}/bin/pg_basebackup --dbname=${replicationConn} --pgdata=${baseBackupDir}" + ) + + # create a dummy table with 100 records + machine.succeed( + "sudo -u postgres psql --command='create table dummy as select * from generate_series(1, 100) as val;'" + ) + + # stop postgres and destroy data + machine.systemctl("stop postgresql") + machine.systemctl("stop postgresql-wal-receiver-main") + machine.succeed("rm -r ${postgresqlDataDir}/{base,global,pg_*}") + + # restore the base backup + machine.succeed( + "cp -r ${baseBackupDir}/* ${postgresqlDataDir} && chown postgres:postgres -R ${postgresqlDataDir}" + ) + + # prepare WAL and recovery + machine.succeed("chmod a+rX -R ${walBackupDir}") + machine.execute( + "for part in ${walBackupDir}/*.partial; do mv $part ''${part%%.*}; done" + ) # make use of partial segments too + machine.succeed( + "cp ${recoveryFile}/* ${postgresqlDataDir}/ && chmod 666 ${postgresqlDataDir}/recovery*" + ) + + # replay WAL + machine.systemctl("start postgresql") + machine.wait_for_file("${postgresqlDataDir}/recovery.done") + machine.systemctl("restart postgresql") + machine.wait_for_unit("postgresql") + + # check that our records have been restored + machine.succeed( + "test $(sudo -u postgres psql --pset='pager=off' --tuples-only --command='select count(distinct val) from dummy;') -eq 100" + ) + ''; + }; +in +lib.recurseIntoAttrs ( + lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) pkgs.postgresqlVersions + // { + passthru.override = p: makeTestFor p; + } +) diff --git a/nixos/tests/postgresql/postgresql.nix b/nixos/tests/postgresql/postgresql.nix new file mode 100644 index 000000000000..509a14411de9 --- /dev/null +++ b/nixos/tests/postgresql/postgresql.nix @@ -0,0 +1,244 @@ +{ + pkgs, + makeTest, +}: + +let + inherit (pkgs) lib; + + makeTestFor = + package: + lib.recurseIntoAttrs { + postgresql = makeTestForWithBackupAll package false; + postgresql-backup-all = makeTestForWithBackupAll package true; + postgresql-clauses = makeEnsureTestFor package; + }; + + test-sql = pkgs.writeText "postgresql-test" '' + CREATE EXTENSION pgcrypto; -- just to check if lib loading works + CREATE TABLE sth ( + id int + ); + INSERT INTO sth (id) VALUES (1); + INSERT INTO sth (id) VALUES (1); + INSERT INTO sth (id) VALUES (1); + INSERT INTO sth (id) VALUES (1); + INSERT INTO sth (id) VALUES (1); + CREATE TABLE xmltest ( doc xml ); + INSERT INTO xmltest (doc) VALUES ('ok'); -- check if libxml2 enabled + ''; + + makeTestForWithBackupAll = + package: backupAll: + makeTest { + name = "postgresql${lib.optionalString backupAll "-backup-all"}-${package.name}"; + meta = with lib.maintainers; { + maintainers = [ zagy ]; + }; + + nodes.machine = + { ... }: + { + services.postgresql = { + inherit (package) ; + enable = true; + }; + + services.postgresqlBackup = { + enable = true; + databases = lib.optional (!backupAll) "postgres"; + }; + }; + + testScript = + let + backupName = if backupAll then "all" else "postgres"; + backupService = if backupAll then "postgresqlBackup" else "postgresqlBackup-postgres"; + backupFileBase = "/var/backup/postgresql/${backupName}"; + in + '' + def check_count(statement, lines): + return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format( + statement, lines + ) + + + machine.start() + machine.wait_for_unit("postgresql") + + with subtest("Postgresql is available just after unit start"): + machine.succeed( + "cat ${test-sql} | sudo -u postgres psql" + ) + + with subtest("Postgresql survives restart (bug #1735)"): + machine.shutdown() + import time + time.sleep(2) + machine.start() + machine.wait_for_unit("postgresql") + + machine.fail(check_count("SELECT * FROM sth;", 3)) + machine.succeed(check_count("SELECT * FROM sth;", 5)) + machine.fail(check_count("SELECT * FROM sth;", 4)) + machine.succeed(check_count("SELECT xpath('/test/text()', doc) FROM xmltest;", 1)) + + with subtest("Backup service works"): + machine.succeed( + "systemctl start ${backupService}.service", + "zcat ${backupFileBase}.sql.gz | grep 'ok'", + "ls -hal /var/backup/postgresql/ >/dev/console", + "stat -c '%a' ${backupFileBase}.sql.gz | grep 600", + ) + with subtest("Backup service removes prev files"): + machine.succeed( + # Create dummy prev files. + "touch ${backupFileBase}.prev.sql{,.gz,.zstd}", + "chown postgres:postgres ${backupFileBase}.prev.sql{,.gz,.zstd}", + + # Run backup. + "systemctl start ${backupService}.service", + "ls -hal /var/backup/postgresql/ >/dev/console", + + # Since nothing has changed in the database, the cur and prev files + # should match. + "zcat ${backupFileBase}.sql.gz | grep 'ok'", + "cmp ${backupFileBase}.sql.gz ${backupFileBase}.prev.sql.gz", + + # The prev files with unused suffix should be removed. + "[ ! -f '${backupFileBase}.prev.sql' ]", + "[ ! -f '${backupFileBase}.prev.sql.zstd' ]", + + # Both cur and prev file should only be accessible by the postgres user. + "stat -c '%a' ${backupFileBase}.sql.gz | grep 600", + "stat -c '%a' '${backupFileBase}.prev.sql.gz' | grep 600", + ) + with subtest("Backup service fails gracefully"): + # Sabotage the backup process + machine.succeed("rm /run/postgresql/.s.PGSQL.5432") + machine.fail( + "systemctl start ${backupService}.service", + ) + machine.succeed( + "ls -hal /var/backup/postgresql/ >/dev/console", + "zcat ${backupFileBase}.prev.sql.gz | grep 'ok'", + "stat ${backupFileBase}.in-progress.sql.gz", + ) + # In a previous version, the second run would overwrite prev.sql.gz, + # so we test a second run as well. + machine.fail( + "systemctl start ${backupService}.service", + ) + machine.succeed( + "stat ${backupFileBase}.in-progress.sql.gz", + "zcat ${backupFileBase}.prev.sql.gz | grep 'ok'", + ) + + + with subtest("Initdb works"): + machine.succeed("sudo -u postgres initdb -D /tmp/testpostgres2") + + machine.log(machine.execute("systemd-analyze security postgresql.service | grep -v ✓")[1]) + + machine.shutdown() + ''; + }; + + makeEnsureTestFor = + package: + makeTest { + name = "postgresql-clauses-${package.name}"; + meta = with lib.maintainers; { + maintainers = [ zagy ]; + }; + + nodes.machine = + { ... }: + { + services.postgresql = { + inherit package; + enable = true; + ensureUsers = [ + { + name = "all-clauses"; + ensureClauses = { + superuser = true; + createdb = true; + createrole = true; + "inherit" = true; + login = true; + replication = true; + bypassrls = true; + }; + } + { + name = "default-clauses"; + } + ]; + }; + }; + + testScript = + let + getClausesQuery = + user: + lib.concatStringsSep " " [ + "SELECT row_to_json(row)" + "FROM (" + "SELECT" + "rolsuper," + "rolinherit," + "rolcreaterole," + "rolcreatedb," + "rolcanlogin," + "rolreplication," + "rolbypassrls" + "FROM pg_roles" + "WHERE rolname = '${user}'" + ") row;" + ]; + in + '' + import json + machine.start() + machine.wait_for_unit("postgresql") + + with subtest("All user permissions are set according to the ensureClauses attr"): + clauses = json.loads( + machine.succeed( + "sudo -u postgres psql -tc \"${getClausesQuery "all-clauses"}\"" + ) + ) + print(clauses) + assert clauses['rolsuper'], 'expected user with clauses to have superuser clause' + assert clauses['rolinherit'], 'expected user with clauses to have inherit clause' + assert clauses['rolcreaterole'], 'expected user with clauses to have create role clause' + assert clauses['rolcreatedb'], 'expected user with clauses to have create db clause' + assert clauses['rolcanlogin'], 'expected user with clauses to have login clause' + assert clauses['rolreplication'], 'expected user with clauses to have replication clause' + assert clauses['rolbypassrls'], 'expected user with clauses to have bypassrls clause' + + with subtest("All user permissions default when ensureClauses is not provided"): + clauses = json.loads( + machine.succeed( + "sudo -u postgres psql -tc \"${getClausesQuery "default-clauses"}\"" + ) + ) + assert not clauses['rolsuper'], 'expected user with no clauses set to have default superuser clause' + assert clauses['rolinherit'], 'expected user with no clauses set to have default inherit clause' + assert not clauses['rolcreaterole'], 'expected user with no clauses set to have default create role clause' + assert not clauses['rolcreatedb'], 'expected user with no clauses set to have default create db clause' + assert clauses['rolcanlogin'], 'expected user with no clauses set to have default login clause' + assert not clauses['rolreplication'], 'expected user with no clauses set to have default replication clause' + assert not clauses['rolbypassrls'], 'expected user with no clauses set to have default bypassrls clause' + + machine.shutdown() + ''; + }; +in +lib.recurseIntoAttrs ( + lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) pkgs.postgresqlVersions + // { + passthru.override = p: makeTestFor p; + } +) diff --git a/nixos/tests/postgresql/timescaledb.nix b/nixos/tests/postgresql/timescaledb.nix new file mode 100644 index 000000000000..b29d59c744f0 --- /dev/null +++ b/nixos/tests/postgresql/timescaledb.nix @@ -0,0 +1,100 @@ +{ + pkgs, + makeTest, +}: + +let + inherit (pkgs) lib; + + test-sql = pkgs.writeText "postgresql-test" '' + CREATE EXTENSION timescaledb; + CREATE EXTENSION timescaledb_toolkit; + + CREATE TABLE sth ( + time TIMESTAMPTZ NOT NULL, + value DOUBLE PRECISION + ); + + SELECT create_hypertable('sth', 'time'); + + INSERT INTO sth (time, value) VALUES + ('2003-04-12 04:05:06 America/New_York', 1.0), + ('2003-04-12 04:05:07 America/New_York', 2.0), + ('2003-04-12 04:05:08 America/New_York', 3.0), + ('2003-04-12 04:05:09 America/New_York', 4.0), + ('2003-04-12 04:05:10 America/New_York', 5.0) + ; + + WITH t AS ( + SELECT + time_bucket('1 day'::interval, time) AS dt, + stats_agg(value) AS stats + FROM sth + GROUP BY time_bucket('1 day'::interval, time) + ) + SELECT + average(stats) + FROM t; + + SELECT * FROM sth; + ''; + + makeTestFor = + package: + makeTest { + name = "timescaledb-${package.name}"; + meta = with lib.maintainers; { + maintainers = [ typetetris ]; + }; + + nodes.machine = + { ... }: + { + services.postgresql = { + inherit package; + enable = true; + extraPlugins = + ps: with ps; [ + timescaledb + timescaledb_toolkit + ]; + settings = { + shared_preload_libraries = "timescaledb, timescaledb_toolkit"; + }; + }; + }; + + testScript = '' + def check_count(statement, lines): + return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format( + statement, lines + ) + + + machine.start() + machine.wait_for_unit("postgresql") + + with subtest("Postgresql with extensions timescaledb and timescaledb_toolkit is available just after unit start"): + machine.succeed( + "sudo -u postgres psql -f ${test-sql}" + ) + + machine.fail(check_count("SELECT * FROM sth;", 3)) + machine.succeed(check_count("SELECT * FROM sth;", 5)) + machine.fail(check_count("SELECT * FROM sth;", 4)) + + machine.shutdown() + ''; + }; +in +# Not run by default, because this requires allowUnfree. +# To run these tests: +# NIXPKGS_ALLOW_UNFREE=1 nix-build -A nixosTests.postgresql.timescaledb +lib.dontRecurseIntoAttrs ( + lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) ( + lib.filterAttrs (_: p: !p.pkgs.timescaledb.meta.broken) pkgs.postgresqlVersions + ) + // { + passthru.override = p: makeTestFor p; + } +) diff --git a/nixos/tests/postgresql/tsja.nix b/nixos/tests/postgresql/tsja.nix new file mode 100644 index 000000000000..7c976da21b68 --- /dev/null +++ b/nixos/tests/postgresql/tsja.nix @@ -0,0 +1,50 @@ +{ + pkgs, + makeTest, +}: + +let + inherit (pkgs) lib; + + makeTestFor = + package: + makeTest { + name = "tsja-${package.name}"; + meta = { + maintainers = with lib.maintainers; [ chayleaf ]; + }; + + nodes.master = + { ... }: + { + services.postgresql = { + inherit package; + enable = true; + extraPlugins = + ps: with ps; [ + tsja + ]; + }; + }; + + testScript = '' + start_all() + master.wait_for_unit("postgresql") + master.succeed("sudo -u postgres psql -f /run/current-system/sw/share/postgresql/extension/libtsja_dbinit.sql") + # make sure "日本語" is parsed as a separate lexeme + master.succeed(""" + sudo -u postgres \\ + psql -c "SELECT * FROM ts_debug('japanese', 'PostgreSQLで日本語のテキスト検索ができます。')" \\ + | grep "{日本語}" + """) + ''; + }; +in +lib.recurseIntoAttrs ( + lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) ( + lib.filterAttrs (_: p: !p.pkgs.tsja.meta.broken) pkgs.postgresqlVersions + ) + // { + passthru.override = p: makeTestFor p; + } +) diff --git a/nixos/tests/postgresql/wal2json.nix b/nixos/tests/postgresql/wal2json.nix new file mode 100644 index 000000000000..551254a68ebd --- /dev/null +++ b/nixos/tests/postgresql/wal2json.nix @@ -0,0 +1,52 @@ +{ + pkgs, + makeTest, +}: + +let + inherit (pkgs) lib; + + makeTestFor = + package: + makeTest { + name = "wal2json-${package.name}"; + meta.maintainers = with pkgs.lib.maintainers; [ euank ]; + + nodes.machine = { + services.postgresql = { + inherit package; + enable = true; + extraPlugins = with package.pkgs; [ wal2json ]; + settings = { + wal_level = "logical"; + max_replication_slots = "10"; + max_wal_senders = "10"; + }; + }; + }; + + testScript = '' + machine.wait_for_unit("postgresql") + machine.succeed( + "sudo -u postgres psql -qAt -f ${./wal2json/example2.sql} postgres > /tmp/example2.out" + ) + machine.succeed( + "diff ${./wal2json/example2.out} /tmp/example2.out" + ) + machine.succeed( + "sudo -u postgres psql -qAt -f ${./wal2json/example3.sql} postgres > /tmp/example3.out" + ) + machine.succeed( + "diff ${./wal2json/example3.out} /tmp/example3.out" + ) + ''; + }; +in +lib.recurseIntoAttrs ( + lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) ( + lib.filterAttrs (_: p: !p.pkgs.wal2json.meta.broken) pkgs.postgresqlVersions + ) + // { + passthru.override = p: makeTestFor p; + } +) diff --git a/nixos/tests/timescaledb.nix b/nixos/tests/timescaledb.nix deleted file mode 100644 index 8ee788daeac7..000000000000 --- a/nixos/tests/timescaledb.nix +++ /dev/null @@ -1,93 +0,0 @@ -# mostly copied from ./postgresql.nix as it seemed unapproriate to -# test additional extensions for postgresql there. - -{ system ? builtins.currentSystem -, config ? { } -, pkgs ? import ../.. { inherit system config; } -}: - -with import ../lib/testing-python.nix { inherit system pkgs; }; -with pkgs.lib; - -let - postgresql-versions = import ../../pkgs/servers/sql/postgresql pkgs; - test-sql = pkgs.writeText "postgresql-test" '' - CREATE EXTENSION timescaledb; - CREATE EXTENSION timescaledb_toolkit; - - CREATE TABLE sth ( - time TIMESTAMPTZ NOT NULL, - value DOUBLE PRECISION - ); - - SELECT create_hypertable('sth', 'time'); - - INSERT INTO sth (time, value) VALUES - ('2003-04-12 04:05:06 America/New_York', 1.0), - ('2003-04-12 04:05:07 America/New_York', 2.0), - ('2003-04-12 04:05:08 America/New_York', 3.0), - ('2003-04-12 04:05:09 America/New_York', 4.0), - ('2003-04-12 04:05:10 America/New_York', 5.0) - ; - - WITH t AS ( - SELECT - time_bucket('1 day'::interval, time) AS dt, - stats_agg(value) AS stats - FROM sth - GROUP BY time_bucket('1 day'::interval, time) - ) - SELECT - average(stats) - FROM t; - ''; - make-postgresql-test = postgresql-name: postgresql-package: makeTest { - name = postgresql-name; - meta = with pkgs.lib.maintainers; { - maintainers = [ typetetris ]; - }; - - nodes.machine = { ... }: - { - services.postgresql = { - enable = true; - package = postgresql-package; - extraPlugins = ps: with ps; [ - timescaledb - timescaledb_toolkit - ]; - settings = { shared_preload_libraries = "timescaledb, timescaledb_toolkit"; }; - }; - }; - - testScript = '' - def check_count(statement, lines): - return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format( - statement, lines - ) - - - machine.start() - machine.wait_for_unit("postgresql") - - with subtest("Postgresql with extensions timescaledb and timescaledb_toolkit is available just after unit start"): - machine.succeed( - "sudo -u postgres psql -f ${test-sql}" - ) - - machine.fail(check_count("SELECT * FROM sth;", 3)) - machine.succeed(check_count("SELECT * FROM sth;", 5)) - machine.fail(check_count("SELECT * FROM sth;", 4)) - - machine.shutdown() - ''; - - }; - applicablePostgresqlVersions = filterAttrs (_: value: versionAtLeast value.version "14") postgresql-versions; -in -mapAttrs' - (name: package: { - inherit name; - value = make-postgresql-test name package; - }) - applicablePostgresqlVersions diff --git a/nixos/tests/tsja.nix b/nixos/tests/tsja.nix deleted file mode 100644 index f34358ff3f5f..000000000000 --- a/nixos/tests/tsja.nix +++ /dev/null @@ -1,32 +0,0 @@ -import ./make-test-python.nix ({ pkgs, lib, ...} : { - name = "tsja"; - meta = { - maintainers = with lib.maintainers; [ chayleaf ]; - }; - - nodes = { - master = - { config, ... }: - - { - services.postgresql = { - enable = true; - extraPlugins = ps: with ps; [ - tsja - ]; - }; - }; - }; - - testScript = '' - start_all() - master.wait_for_unit("postgresql") - master.succeed("sudo -u postgres psql -f /run/current-system/sw/share/postgresql/extension/libtsja_dbinit.sql") - # make sure "日本語" is parsed as a separate lexeme - master.succeed(""" - sudo -u postgres \\ - psql -c "SELECT * FROM ts_debug('japanese', 'PostgreSQLで日本語のテキスト検索ができます。')" \\ - | grep "{日本語}" - """) - ''; -}) diff --git a/pkgs/applications/virtualization/virt-manager/default.nix b/pkgs/applications/virtualization/virt-manager/default.nix index 8546f64a55b0..d7e07ed311a3 100644 --- a/pkgs/applications/virtualization/virt-manager/default.nix +++ b/pkgs/applications/virtualization/virt-manager/default.nix @@ -97,6 +97,7 @@ python3.pkgs.buildPythonApplication rec { "test_misc_nonpredicatble_generate" "test_disk_dir_searchable" # does something strange with permissions "testCLI0001virt_install_many_devices" # expects /var to exist + "testCLI0263virt_xml" # depends on a specific libvirt version ]; preCheck = '' diff --git a/pkgs/by-name/cf/cfn-nag/Gemfile b/pkgs/by-name/cf/cfn-nag/Gemfile index 7f4f5e950d15..233f201bc4f0 100644 --- a/pkgs/by-name/cf/cfn-nag/Gemfile +++ b/pkgs/by-name/cf/cfn-nag/Gemfile @@ -1,5 +1,5 @@ -# frozen_string_literal: true - source 'https://rubygems.org' - -gemspec +gem 'cfn-nag' +gem 'logger' +gem 'ostruct' +gem 'syslog' diff --git a/pkgs/by-name/cf/cfn-nag/Gemfile.lock b/pkgs/by-name/cf/cfn-nag/Gemfile.lock index 7892e62b052c..7c00936be206 100644 --- a/pkgs/by-name/cf/cfn-nag/Gemfile.lock +++ b/pkgs/by-name/cf/cfn-nag/Gemfile.lock @@ -1,6 +1,25 @@ -PATH - remote: . +GEM + remote: https://rubygems.org/ specs: + aws-eventstream (1.3.0) + aws-partitions (1.1001.0) + aws-sdk-core (3.211.0) + aws-eventstream (~> 1, >= 1.3.0) + aws-partitions (~> 1, >= 1.992.0) + aws-sigv4 (~> 1.9) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.95.0) + aws-sdk-core (~> 3, >= 3.210.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.169.0) + aws-sdk-core (~> 3, >= 3.210.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.5) + aws-sigv4 (1.10.1) + aws-eventstream (~> 1, >= 1.0.2) + cfn-model (0.6.6) + kwalify (= 0.7.2) + psych (~> 3) cfn-nag (0.8.10) aws-sdk-s3 (~> 1.76) cfn-model (= 0.6.6) @@ -9,98 +28,30 @@ PATH netaddr (~> 2.0.4) optimist (~> 3.0.0) rexml - -GEM - remote: https://rubygems.org/ - specs: - ast (2.4.2) - aws-eventstream (1.3.0) - aws-partitions (1.982.0) - aws-sdk-core (3.209.1) - aws-eventstream (~> 1, >= 1.3.0) - aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.9) - jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.94.0) - aws-sdk-core (~> 3, >= 3.207.0) - aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.166.0) - aws-sdk-core (~> 3, >= 3.207.0) - aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.5) - aws-sigv4 (1.10.0) - aws-eventstream (~> 1, >= 1.0.2) - cfn-model (0.6.6) - kwalify (= 0.7.2) - psych (~> 3) - diff-lcs (1.5.1) - docile (1.4.1) jmespath (1.6.2) - json (2.7.2) kwalify (0.7.2) - language_server-protocol (3.17.0.3) lightly (0.3.3) little-plugger (1.1.4) + logger (1.6.1) logging (2.2.2) little-plugger (~> 1.1) multi_json (~> 1.10) multi_json (1.15.0) netaddr (2.0.6) optimist (3.0.1) - parallel (1.26.3) - parser (3.3.5.0) - ast (~> 2.4.1) - racc + ostruct (0.6.0) psych (3.3.4) - racc (1.8.1) - rainbow (3.1.1) - rake (13.2.1) - regexp_parser (2.9.2) - rexml (3.3.8) - rspec (3.13.0) - rspec-core (~> 3.13.0) - rspec-expectations (~> 3.13.0) - rspec-mocks (~> 3.13.0) - rspec-core (3.13.1) - rspec-support (~> 3.13.0) - rspec-expectations (3.13.3) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.13.0) - rspec-mocks (3.13.1) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.13.0) - rspec-support (3.13.1) - rubocop (1.66.1) - json (~> 2.3) - language_server-protocol (>= 3.17.0) - parallel (~> 1.10) - parser (>= 3.3.0.2) - rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 2.4, < 3.0) - rubocop-ast (>= 1.32.2, < 2.0) - ruby-progressbar (~> 1.7) - unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.32.3) - parser (>= 3.3.1.0) - ruby-progressbar (1.13.0) - simplecov (0.22.0) - docile (~> 1.1) - simplecov-html (~> 0.11) - simplecov_json_formatter (~> 0.1) - simplecov-html (0.13.1) - simplecov_json_formatter (0.1.4) - unicode-display_width (2.6.0) + rexml (3.3.9) + syslog (0.1.2) PLATFORMS - arm64-darwin-23 ruby DEPENDENCIES - cfn-nag! - rake - rspec (~> 3.4) - rubocop - simplecov (~> 0.21) + cfn-nag + logger + ostruct + syslog BUNDLED WITH - 2.5.11 + 2.3.27 diff --git a/pkgs/by-name/cf/cfn-nag/gemset.nix b/pkgs/by-name/cf/cfn-nag/gemset.nix index c8d2cd75d6cf..621a733e5555 100644 --- a/pkgs/by-name/cf/cfn-nag/gemset.nix +++ b/pkgs/by-name/cf/cfn-nag/gemset.nix @@ -1,17 +1,4 @@ { - ast = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y"; - type = "gem"; - }; - version = "2.4.2"; - }; aws-eventstream = { groups = [ "default" ]; platforms = [ ]; @@ -27,10 +14,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "075y2zwfqwg7qb7w34bfvp8dkjcmiz6hx5a3rbhpqglnlkav7ir4"; + sha256 = "01w3b84d129q9b6bg2cm8p4cn8pl74l343sxsc47ax9sglqz6y99"; type = "gem"; }; - version = "1.982.0"; + version = "1.1001.0"; }; aws-sdk-core = { dependencies = [ @@ -43,10 +30,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "06mrp7g24ndg55w85ndyrvxfx2v6hnkh5fj32w9s6w3xsc8v5kqq"; + sha256 = "16mvscjhxdyhlvk2rpbxdzqmyikcf64xavb35grk4dkh0pg390rk"; type = "gem"; }; - version = "3.209.1"; + version = "3.211.0"; }; aws-sdk-kms = { dependencies = [ @@ -57,10 +44,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1acx3bhqkhni3kbl7xnjdgy8raq5y7p0zyniq61bsihzkwcj7imh"; + sha256 = "0ppxhw2qyj69achpmksp1sh2y6k0x44928ln2am9pifx8b30ir9a"; type = "gem"; }; - version = "1.94.0"; + version = "1.95.0"; }; aws-sdk-s3 = { dependencies = [ @@ -72,10 +59,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0zpww3lxpjg8smmznz2nbx5hrpnkzflbasllxjwprkqr56rrrjap"; + sha256 = "1jnf9k9d91ki3yvy12q4kph5wvd8l3ziwwh0qsmar5xhyb7zbwrz"; type = "gem"; }; - version = "1.166.0"; + version = "1.169.0"; }; aws-sigv4 = { dependencies = [ "aws-eventstream" ]; @@ -83,10 +70,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "176zh13m1vhwgys0drlqiw79ljmmx84vva036shsb7rzr4yi36qm"; + sha256 = "1fq3lbvkgm1vk5wa8l7vdnq3vjnlmsnyf4bbd0jq3qadyd9hf54a"; type = "gem"; }; - version = "1.10.0"; + version = "1.10.1"; }; cfn-model = { dependencies = [ @@ -115,37 +102,12 @@ groups = [ "default" ]; platforms = [ ]; source = { - path = ./.; - type = "path"; + remotes = [ "https://rubygems.org" ]; + sha256 = "0cyk4pimz1g5lqf4vw2p9kf8ji3v53zfi8jix8sgz4ndy81ylah5"; + type = "gem"; }; version = "0.8.10"; }; - diff-lcs = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1znxccz83m4xgpd239nyqxlifdb7m8rlfayk6s259186nkgj6ci7"; - type = "gem"; - }; - version = "1.5.1"; - }; - docile = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "07pj4z3h8wk4fgdn6s62vw1lwvhj0ac0x10vfbdkr9xzk7krn5cn"; - type = "gem"; - }; - version = "1.4.1"; - }; jmespath = { groups = [ "default" ]; platforms = [ ]; @@ -156,19 +118,6 @@ }; version = "1.6.2"; }; - json = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0b4qsi8gay7ncmigr0pnbxyb17y3h8kavdyhsh7nrlqwr35vb60q"; - type = "gem"; - }; - version = "2.7.2"; - }; kwalify = { groups = [ "default" ]; platforms = [ ]; @@ -179,19 +128,6 @@ }; version = "0.7.2"; }; - language_server-protocol = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0gvb1j8xsqxms9mww01rmdl78zkd72zgxaap56bhv8j45z05hp1x"; - type = "gem"; - }; - version = "3.17.0.3"; - }; lightly = { groups = [ "default" ]; platforms = [ ]; @@ -212,6 +148,16 @@ }; version = "1.1.4"; }; + logger = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0lwncq2rf8gm79g2rcnnyzs26ma1f4wnfjm6gs4zf2wlsdz5in9s"; + type = "gem"; + }; + version = "1.6.1"; + }; logging = { dependencies = [ "little-plugger" @@ -256,35 +202,15 @@ }; version = "3.0.1"; }; - parallel = { - groups = [ - "default" - "development" - ]; + ostruct = { + groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1vy7sjs2pgz4i96v5yk9b7aafbffnvq7nn419fgvw55qlavsnsyq"; + sha256 = "11dsv71gfbhy92yzj3xkckjzdai2bsz5a4fydgimv62dkz4kc5rv"; type = "gem"; }; - version = "1.26.3"; - }; - parser = { - dependencies = [ - "ast" - "racc" - ]; - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1cqs31cyg2zp8yx2zzm3zkih0j93q870wasbviy2w343nxqvn3pk"; - type = "gem"; - }; - version = "3.3.5.0"; + version = "0.6.0"; }; psych = { groups = [ "default" ]; @@ -296,241 +222,24 @@ }; version = "3.3.4"; }; - racc = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa"; - type = "gem"; - }; - version = "1.8.1"; - }; - rainbow = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503"; - type = "gem"; - }; - version = "3.1.1"; - }; - rake = { - groups = [ "development" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "17850wcwkgi30p7yqh60960ypn7yibacjjha0av78zaxwvd3ijs6"; - type = "gem"; - }; - version = "13.2.1"; - }; - regexp_parser = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0ik40vcv7mqigsfpqpca36hpmnx0536xa825ai5qlkv3mmkyf9ss"; - type = "gem"; - }; - version = "2.9.2"; - }; rexml = { groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0rr145mvjgc4n28lfy0gw87aw3ab680h83bdi5i102ik8mixk3zn"; + sha256 = "1j9p66pmfgxnzp76ksssyfyqqrg7281dyi3xyknl3wwraaw7a66p"; type = "gem"; }; - version = "3.3.8"; + version = "3.3.9"; }; - rspec = { - dependencies = [ - "rspec-core" - "rspec-expectations" - "rspec-mocks" - ]; - groups = [ "development" ]; + syslog = { + groups = [ "default" ]; platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "14xrp8vq6i9zx37vh0yp4h9m0anx9paw200l1r5ad9fmq559346l"; + sha256 = "12xqgjrnjpc1c7shajyz2h96bw2nlgb4lkaypj58dp6rch7s36sr"; type = "gem"; }; - version = "3.13.0"; - }; - rspec-core = { - dependencies = [ "rspec-support" ]; - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0s688wfw77fjldzayvczg8bgwcgh6bh552dw7qcj1rhjk3r4zalx"; - type = "gem"; - }; - version = "3.13.1"; - }; - rspec-expectations = { - dependencies = [ - "diff-lcs" - "rspec-support" - ]; - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0n3cyrhsa75x5wwvskrrqk56jbjgdi2q1zx0irllf0chkgsmlsqf"; - type = "gem"; - }; - version = "3.13.3"; - }; - rspec-mocks = { - dependencies = [ - "diff-lcs" - "rspec-support" - ]; - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0f3vgp43hajw716vmgjv6f4ar6f97zf50snny6y3fy9kkj4qjw88"; - type = "gem"; - }; - version = "3.13.1"; - }; - rspec-support = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "03z7gpqz5xkw9rf53835pa8a9vgj4lic54rnix9vfwmp2m7pv1s8"; - type = "gem"; - }; - version = "3.13.1"; - }; - rubocop = { - dependencies = [ - "json" - "language_server-protocol" - "parallel" - "parser" - "rainbow" - "regexp_parser" - "rubocop-ast" - "ruby-progressbar" - "unicode-display_width" - ]; - groups = [ "development" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "1rsyxrl647bz49gpa4flh8igg6wy7qxyh2jrp01x0kqnn5iw4y86"; - type = "gem"; - }; - version = "1.66.1"; - }; - rubocop-ast = { - dependencies = [ "parser" ]; - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "03zywfpm4540q6hw8srhi8pzp0gg51w65ir8jkaw58vk3j31w820"; - type = "gem"; - }; - version = "1.32.3"; - }; - ruby-progressbar = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0cwvyb7j47m7wihpfaq7rc47zwwx9k4v7iqd9s1xch5nm53rrz40"; - type = "gem"; - }; - version = "1.13.0"; - }; - simplecov = { - dependencies = [ - "docile" - "simplecov-html" - "simplecov_json_formatter" - ]; - groups = [ "development" ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py"; - type = "gem"; - }; - version = "0.22.0"; - }; - simplecov-html = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "02zi3rwihp7rlnp9x18c9idnkx7x68w6jmxdhyc0xrhjwrz0pasx"; - type = "gem"; - }; - version = "0.13.1"; - }; - simplecov_json_formatter = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j"; - type = "gem"; - }; - version = "0.1.4"; - }; - unicode-display_width = { - groups = [ - "default" - "development" - ]; - platforms = [ ]; - source = { - remotes = [ "https://rubygems.org" ]; - sha256 = "0nkz7fadlrdbkf37m0x7sw8bnz8r355q3vwcfb9f9md6pds9h9qj"; - type = "gem"; - }; - version = "2.6.0"; + version = "0.1.2"; }; } diff --git a/pkgs/by-name/cf/cfn-nag/package.nix b/pkgs/by-name/cf/cfn-nag/package.nix index 4ec8f7848cbc..71c198c9a9b7 100644 --- a/pkgs/by-name/cf/cfn-nag/package.nix +++ b/pkgs/by-name/cf/cfn-nag/package.nix @@ -17,8 +17,12 @@ bundlerEnv { meta = { description = "Linting tool for CloudFormation templates"; homepage = "https://github.com/stelligent/cfn_nag"; + mainProgram = "cfn_nag"; license = lib.licenses.mit; - maintainers = with lib.maintainers; [ momeemt ]; + maintainers = with lib.maintainers; [ + momeemt + mathstlouis + ]; platforms = lib.platforms.unix; }; } diff --git a/pkgs/by-name/cl/clickhouse-backup/package.nix b/pkgs/by-name/cl/clickhouse-backup/package.nix index a16fbaddc2c9..f61093c2e1fa 100644 --- a/pkgs/by-name/cl/clickhouse-backup/package.nix +++ b/pkgs/by-name/cl/clickhouse-backup/package.nix @@ -7,16 +7,16 @@ buildGoModule rec { pname = "clickhouse-backup"; - version = "2.6.2"; + version = "2.6.3"; src = fetchFromGitHub { owner = "Altinity"; repo = "clickhouse-backup"; rev = "v${version}"; - hash = "sha256-t9sRhcNKFvTTysornYf/7JQ7mkasTunnzKR4pYCAOk0="; + hash = "sha256-431bdyE2MEWwgl9xDVsRHKpjrv/cIjaOQpg25qDlvPk="; }; - vendorHash = "sha256-n3rlijycZ5qZtR/e+Z/UPCcr47p4wN3kFgfWr+73WAQ="; + vendorHash = "sha256-D1sjizuyHnfNplZtuw3zqRjFl/r1h478N+iGyF2OAyc="; ldflags = [ "-X main.version=${version}" diff --git a/pkgs/by-name/co/compose2nix/package.nix b/pkgs/by-name/co/compose2nix/package.nix index af02f0d7c6da..550eb49b1271 100644 --- a/pkgs/by-name/co/compose2nix/package.nix +++ b/pkgs/by-name/co/compose2nix/package.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "compose2nix"; - version = "0.2.3"; + version = "0.3.1"; src = fetchFromGitHub { owner = "aksiksi"; repo = "compose2nix"; rev = "v${version}"; - hash = "sha256-qN7MFw6JKBbzwiqURkZ3or/8hT29mRpfITovSHdzDEY="; + hash = "sha256-rFnnbRVVv/N5021Al3vmjFAui1cTp8NBZDBNQo8CsXM="; }; - vendorHash = "sha256-yGBdsej6DjRMWzS13WyqCLaY5M/N9BrMARAM3oHsc+s="; + vendorHash = "sha256-kiUXgbXJg4x89k2SXf/1e1DLB04ETS+Qp2gx8uJA2DU="; passthru.tests = { version = testers.testVersion { diff --git a/pkgs/by-name/co/containerlab/package.nix b/pkgs/by-name/co/containerlab/package.nix index 47f1cfb73e95..ab1980449c29 100644 --- a/pkgs/by-name/co/containerlab/package.nix +++ b/pkgs/by-name/co/containerlab/package.nix @@ -7,18 +7,18 @@ buildGoModule rec { pname = "containerlab"; - version = "0.58.0"; + version = "0.59.0"; src = fetchFromGitHub { owner = "srl-labs"; repo = "containerlab"; rev = "v${version}"; - hash = "sha256-yToqJnL2T9qTGCl1MgUkg/JSWV/kEibF59lk85tAX44="; + hash = "sha256-4YSnAoQkjDpSRBMqYW8D3TzipE5Co892y5PXkcz+8xA="; }; nativeBuildInputs = [ installShellFiles ]; - vendorHash = "sha256-Qg6mFd5+Crsn2Xx4yg930Iueo0vfxkzrIHO4vrNFTNc="; + vendorHash = "sha256-PJQrQn7QPtUSzdlf2BYY8ARcmH6pzZgpl1oQbc98M4Y="; ldflags = [ "-s" diff --git a/pkgs/by-name/da/dashy-ui/package.nix b/pkgs/by-name/da/dashy-ui/package.nix new file mode 100644 index 000000000000..dafb76a7c8ef --- /dev/null +++ b/pkgs/by-name/da/dashy-ui/package.nix @@ -0,0 +1,57 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchYarnDeps, + yarnConfigHook, + yarnBuildHook, + nodejs, + yq-go, + settings ? { }, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "dashy-ui"; + # This is like 3.1.1 but the latest working yarn.lock. + # All other changes are for docs with the exception of 768d746cbfcf365c58ad1194c5ccc74c14f3ed3a, which simply adds no-referrer meta tag + version = "3.1.1-unstable-2024-07-14"; + src = fetchFromGitHub { + owner = "lissy93"; + repo = "dashy"; + rev = "0b1af9db483f80323e782e7834da2a337393e111"; + hash = "sha256-lRJ3lI9UUIaw9GWPEy81Dbf4cu6rClA4VjdWejVQN+g="; + }; + yarnOfflineCache = fetchYarnDeps { + yarnLock = finalAttrs.src + "/yarn.lock"; + hash = "sha256-KVAZIBM47yp1NWYc2esvTwfoAev4q7Wgi0c73PUZRNw="; + }; + # - If no settings are passed, use the default config provided by upstream + # - Despite JSON being valid YAML (and the JSON passing the config validator), + # there seem to be some issues with JSON in the final build - potentially due to + # the way the client parses things + # - Instead, we use `yq-go` to convert it to yaml + # Config validation needs to happen after yarnConfigHook, since it's what sets the yarn offline cache + postYarnConfigHook = lib.optional (settings != { }) '' + echo "Writing settings override..." + yq --output-format yml '${builtins.toFile "conf.json" ''${builtins.toJSON settings}''}' > user-data/conf.yml + yarn validate-config --offline + ''; + installPhase = '' + mkdir $out + cp -R dist/* $out + ''; + + nativeBuildInputs = [ + yarnConfigHook + yarnBuildHook + nodejs + # For yaml parsing + yq-go + ]; + doDist = false; + meta = { + description = "dashy"; + homepage = "https://dashy.to"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.therealgramdalf ]; + }; +}) diff --git a/pkgs/by-name/db/dbmate/package.nix b/pkgs/by-name/db/dbmate/package.nix index 2d0ca3e7681c..ef549a34884c 100644 --- a/pkgs/by-name/db/dbmate/package.nix +++ b/pkgs/by-name/db/dbmate/package.nix @@ -5,16 +5,16 @@ buildGoModule rec { pname = "dbmate"; - version = "2.21.0"; + version = "2.22.0"; src = fetchFromGitHub { owner = "amacneil"; repo = "dbmate"; rev = "refs/tags/v${version}"; - hash = "sha256-RX8ocfXHoo1imjx7SRml6Ao6KjNK7xp43pVmth2zfPc="; + hash = "sha256-stemIBwUYW1TsDUBrgQLq858kPBiaHaXaRIr65lnWQo="; }; - vendorHash = "sha256-lov0Ye+pmI5eyILepN87okZDDA9OPz4cTzK1KluHQuI="; + vendorHash = "sha256-xJIY0vaN7gw/EhqeepKQPhaKISXNNPnaAMbowmHSUz4="; doCheck = false; diff --git a/pkgs/by-name/do/dotenvx/package.nix b/pkgs/by-name/do/dotenvx/package.nix index 2871a5f52bd2..3c71830afed8 100644 --- a/pkgs/by-name/do/dotenvx/package.nix +++ b/pkgs/by-name/do/dotenvx/package.nix @@ -8,16 +8,16 @@ buildNpmPackage rec { pname = "dotenvx"; - version = "1.14.2"; + version = "1.22.0"; src = fetchFromGitHub { owner = "dotenvx"; repo = "dotenvx"; rev = "refs/tags/v${version}"; - hash = "sha256-SlZ18ToGbC+c5ffuYFGeOy30w90ukBO0qKxD+HNVt3E="; + hash = "sha256-i6181Ot40t2IlAGpj0pES9nPFB1dZrcypgs4qLQ05hE="; }; - npmDepsHash = "sha256-KaqSCtraMmQHe7Tcs/2CVaQcmazgHkV5K4T64lHEVP4="; + npmDepsHash = "sha256-wo+Gtq2gdcIWY0yDzf5vrxEHfFzMfpgIjG+/MBdvz1U="; dontNpmBuild = true; diff --git a/pkgs/by-name/er/erg/package.nix b/pkgs/by-name/er/erg/package.nix index fa414937b12b..853451f18c2e 100644 --- a/pkgs/by-name/er/erg/package.nix +++ b/pkgs/by-name/er/erg/package.nix @@ -9,16 +9,16 @@ rustPlatform.buildRustPackage rec { pname = "erg"; - version = "0.6.45"; + version = "0.6.47"; src = fetchFromGitHub { owner = "erg-lang"; repo = "erg"; rev = "v${version}"; - hash = "sha256-P6AIe3IadY64ydGShlRmgZ1pITiAA8G59Oe8P2ktDqM="; + hash = "sha256-DcoADVQGiCjPgawMLSvH5tCnOCHmykazsRoF1UXbPNs="; }; - cargoHash = "sha256-5h/0MqaRmjFkeg50Y7WpEDl+VWpR0d4NnqIzoZHeKZ8="; + cargoHash = "sha256-Uzv+hSarIAXRXDZ3sa3zd3Xdo8ZVrDCP+72cAlJOyvw="; nativeBuildInputs = [ makeWrapper diff --git a/pkgs/by-name/gl/glfw3/package.nix b/pkgs/by-name/gl/glfw3/package.nix index ba77795b05c8..08a7aef50665 100644 --- a/pkgs/by-name/gl/glfw3/package.nix +++ b/pkgs/by-name/gl/glfw3/package.nix @@ -1,8 +1,23 @@ -{ stdenv, lib, fetchFromGitHub, cmake, pkg-config -, libGL, libXrandr, libXinerama, libXcursor, libX11, libXi, libXext -, darwin, fixDarwinDylibNames +{ stdenv +, lib +, fetchFromGitHub +, cmake +, pkg-config +, libGL +, vulkan-loader +, libXrandr +, libXinerama +, libXcursor +, libX11 +, libXi +, libXext +, darwin +, fixDarwinDylibNames , wayland -, wayland-scanner, wayland-protocols, libxkbcommon, libdecor +, wayland-scanner +, wayland-protocols +, libxkbcommon +, libdecor , withMinecraftPatch ? false }: let @@ -51,6 +66,7 @@ stdenv.mkDerivation { ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isWindows) [ "-DCMAKE_C_FLAGS=-D_GLFW_GLX_LIBRARY='\"${lib.getLib libGL}/lib/libGL.so.1\"'" "-DCMAKE_C_FLAGS=-D_GLFW_EGL_LIBRARY='\"${lib.getLib libGL}/lib/libEGL.so.1\"'" + "-DCMAKE_C_FLAGS=-D_GLFW_VULKAN_LIBRARY='\"${lib.getLib vulkan-loader}/lib/libvulkan.so.1\"'" ]; postPatch = lib.optionalString stdenv.hostPlatform.isLinux '' diff --git a/pkgs/by-name/go/go-mockery/package.nix b/pkgs/by-name/go/go-mockery/package.nix index 61cc59d4a811..394a16b7e023 100644 --- a/pkgs/by-name/go/go-mockery/package.nix +++ b/pkgs/by-name/go/go-mockery/package.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "go-mockery"; - version = "2.46.0"; + version = "2.46.3"; src = fetchFromGitHub { owner = "vektra"; repo = "mockery"; rev = "v${version}"; - sha256 = "sha256-qPE4hzdu5soGVfw6mLJLWvjiXxdkUAT+kpOCWMO1sL8="; + sha256 = "sha256-KgQ5EV7tnIZGmM8vrP7Sed2jm7ghgORCgkFR9TOXx6Y="; }; preCheck = '' @@ -24,7 +24,7 @@ buildGoModule rec { CGO_ENABLED = false; proxyVendor = true; - vendorHash = "sha256-1SzdVM1Ncpym6bPg1aSyfoAM1YiUGal3Glw0paz+buk="; + vendorHash = "sha256-fxh0WaopHKHuOjXXYNmO30/jB1zwtf5HhhtRGnCl7fM="; subPackages = [ "." ]; diff --git a/pkgs/by-name/gt/gtree/package.nix b/pkgs/by-name/gt/gtree/package.nix index e02eb363a17d..f921aed38668 100644 --- a/pkgs/by-name/gt/gtree/package.nix +++ b/pkgs/by-name/gt/gtree/package.nix @@ -7,16 +7,16 @@ buildGoModule rec { pname = "gtree"; - version = "1.10.11"; + version = "1.10.12"; src = fetchFromGitHub { owner = "ddddddO"; repo = "gtree"; rev = "v${version}"; - hash = "sha256-wxN4bvSSeCTPGjIIDLotr0XsiCf0u0GochEo1SPyopM="; + hash = "sha256-dtKT2T8GNcR5ux1whFrXgJ08XHJWS76M/wmAtBHDLUI="; }; - vendorHash = "sha256-s3GsqrXd84VVGuxY18ielAt0BZGMyl1tNavlD66rWoA="; + vendorHash = "sha256-wiPHK5RjMBMLHx3Vv2zWoZc1wWJ1IVxu8dIbO9fPaPQ="; subPackages = [ "cmd/gtree" diff --git a/pkgs/by-name/ja/jan/package.nix b/pkgs/by-name/ja/jan/package.nix index 5121f4af9748..df90ff0fba89 100644 --- a/pkgs/by-name/ja/jan/package.nix +++ b/pkgs/by-name/ja/jan/package.nix @@ -5,10 +5,10 @@ let pname = "jan"; - version = "0.5.6"; + version = "0.5.7"; src = fetchurl { url = "https://github.com/janhq/jan/releases/download/v${version}/jan-linux-x86_64-${version}.AppImage"; - hash = "sha256-PkRizjF4RVhCH7YOPABb+SpZlO3aKT5W6b0YBuKTNWk="; + hash = "sha256-mWmqvyX9n79uCtCZimU7B1jFE+0Ucwe+RGw0oSQaSB4="; }; appimageContents = appimageTools.extractType2 { inherit pname version src; }; diff --git a/pkgs/by-name/ja/jasp-desktop/package.nix b/pkgs/by-name/ja/jasp-desktop/package.nix index 08fd1425fc39..2fb25136e503 100644 --- a/pkgs/by-name/ja/jasp-desktop/package.nix +++ b/pkgs/by-name/ja/jasp-desktop/package.nix @@ -2,9 +2,10 @@ lib, stdenv, fetchFromGitHub, + fetchpatch, buildEnv, linkFarm, - substituteAll, + replaceVars, R, rPackages, cmake, @@ -58,10 +59,15 @@ stdenv.mkDerivation { patches = [ # remove unused cmake deps, ensure boost is dynamically linked, patch readstat path - (substituteAll { - src = ./cmake.patch; + (replaceVars ./cmake.patch { inherit readstat; }) + + (fetchpatch { + name = "fix-qt-6.8-crash.patch"; + url = "https://github.com/jasp-stats/jasp-desktop/commit/d96a35d262312f72081ac3f96ae8c2ae7c796b0.patch"; + hash = "sha256-KcsFy1ImPTHwDKN5Umfoa9CbtQn7B3FNu/Srr0dEJGA="; + }) ]; cmakeFlags = [ diff --git a/pkgs/by-name/ki/kine/package.nix b/pkgs/by-name/ki/kine/package.nix index 938adb99f754..2e28d92f7ea2 100644 --- a/pkgs/by-name/ki/kine/package.nix +++ b/pkgs/by-name/ki/kine/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "kine"; - version = "0.13.2"; + version = "0.13.3"; src = fetchFromGitHub { owner = "k3s-io"; repo = "kine"; rev = "v${version}"; - hash = "sha256-KMyO9zZvQFyRaMtQ/d2Zgg6pG1SFIYWkzZgSZIqhiOQ="; + hash = "sha256-xct2CkU+EeEfyhZNp1UiLY7kJnv4pbWMA4xgHGQI898="; }; - vendorHash = "sha256-kbMwLNBPJwFbUSZdYiWWdIZM8fclHDnRnxTTIXTIuHU="; + vendorHash = "sha256-EYtkhB8MZKKh6Rf91Ru/ldnP/iQsAw6W2U82mO/7L+g="; ldflags = [ "-s" diff --git a/pkgs/by-name/ko/komga/package.nix b/pkgs/by-name/ko/komga/package.nix index a371e97033c7..93a8730472b2 100644 --- a/pkgs/by-name/ko/komga/package.nix +++ b/pkgs/by-name/ko/komga/package.nix @@ -8,11 +8,11 @@ stdenvNoCC.mkDerivation rec { pname = "komga"; - version = "1.14.0"; + version = "1.14.1"; src = fetchurl { url = "https://github.com/gotson/${pname}/releases/download/${version}/${pname}-${version}.jar"; - sha256 = "sha256-kn1sjz6sbvoTMB9eEUaDqa+JhgV1Kd/s6muS04VGwsk="; + sha256 = "sha256-KUNF6TPqr85rm9XOcoaCGtK8VHfevRFgkl+lTfJEdbA="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ku/kube-state-metrics/package.nix b/pkgs/by-name/ku/kube-state-metrics/package.nix index ec7c3f59c8b2..f44df084eb89 100644 --- a/pkgs/by-name/ku/kube-state-metrics/package.nix +++ b/pkgs/by-name/ku/kube-state-metrics/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "kube-state-metrics"; - version = "2.13.0"; + version = "2.14.0"; src = fetchFromGitHub { owner = "kubernetes"; repo = "kube-state-metrics"; rev = "v${version}"; - hash = "sha256-7lI1RRC/Lw3OcYs3RA3caNvLYS7xEaCoxCM/ioa0goY="; + hash = "sha256-qLn+2znmfIdBkoVkCJ0tFAPVRYc+qAJWKbDP2FqMocg="; }; - vendorHash = "sha256-Db7GTIC594yfp9gNn+hochpafqiRkLQIM/MTkX2S6E0="; + vendorHash = "sha256-KyEGmtSQO0EERLb0I7NBmxv1Jz+bYMrCZVwjJ1Jt+Ik="; excludedPackages = [ "./tests/e2e" diff --git a/pkgs/by-name/li/libvirt-glib/package.nix b/pkgs/by-name/li/libvirt-glib/package.nix index c750d2a25551..472812e27d9e 100644 --- a/pkgs/by-name/li/libvirt-glib/package.nix +++ b/pkgs/by-name/li/libvirt-glib/package.nix @@ -1,6 +1,7 @@ { lib , stdenv , fetchurl +, fetchpatch , meson , ninja , pkg-config @@ -28,6 +29,14 @@ stdenv.mkDerivation rec { sha256 = "m/7DRjgkFqNXXYcpm8ZBsqRkqlGf2bEofjGKpDovO4s="; }; + patches = [ + (fetchpatch { + name = "relax-max-stack-size-limit.patch"; + url = "https://gitlab.com/libvirt/libvirt-glib/-/commit/062f21ccaa810087637ae24e0eb69f1a0f0a45f5.patch"; + hash = "sha256-6mvINDd1HYS7oZsyNiyEwdNJfK5I5nPx86TRMq2RevA="; + }) + ]; + nativeBuildInputs = [ meson ninja diff --git a/pkgs/by-name/ne/nest-cli/package.nix b/pkgs/by-name/ne/nest-cli/package.nix index c9d422781827..99a3f53c6dc8 100644 --- a/pkgs/by-name/ne/nest-cli/package.nix +++ b/pkgs/by-name/ne/nest-cli/package.nix @@ -8,16 +8,16 @@ buildNpmPackage rec { pname = "nest-cli"; - version = "10.4.5"; + version = "10.4.7"; src = fetchFromGitHub { owner = "nestjs"; repo = pname; rev = version; - hash = "sha256-F/Oi7ra+UE4YKXHZalH5qFk4coaGfHRpWaxamYunRuw="; + hash = "sha256-DVLmB4WE+8p2i2l2aq7u/YefeEykKd3B7ekaq5vKUjI="; }; - npmDepsHash = "sha256-6yh8TKfq3fuq4QcnA4uM49/G0Kp1sccRyTcV5s9dVck="; + npmDepsHash = "sha256-bgnbf2YyjndJQ4jX08gW6htGPLV+znARuaJBuh8Kwa8="; env = { npm_config_build_from_source = true; diff --git a/pkgs/by-name/nw/nwg-drawer/package.nix b/pkgs/by-name/nw/nwg-drawer/package.nix index c5ba0f1e396f..e7ab93f870a7 100644 --- a/pkgs/by-name/nw/nwg-drawer/package.nix +++ b/pkgs/by-name/nw/nwg-drawer/package.nix @@ -12,16 +12,16 @@ let pname = "nwg-drawer"; - version = "0.5.0"; + version = "0.5.2"; src = fetchFromGitHub { owner = "nwg-piotr"; repo = "nwg-drawer"; rev = "v${version}"; - hash = "sha256-0ksvat0NDC2P+T0TyDAKh7YNLYhH+znxqLCqQ/5GDj8="; + hash = "sha256-A/Rg7iUk8qpJ5lxumv4JNNJG1vN8wJIabJupp2c+nsw="; }; - vendorHash = "sha256-KULOXphc6GWIGP79C9sgfAIRMoqwcjaVp4jVyF6of/E="; + vendorHash = "sha256-r4DtY06z0ZcPoHba4pqpCWqxYo7RbwCKi2g4jdoN1kg="; in buildGoModule { inherit pname version src vendorHash; diff --git a/pkgs/by-name/oc/octoprint/package.nix b/pkgs/by-name/oc/octoprint/package.nix index 5052f0aef02f..a4b437ac6d1c 100644 --- a/pkgs/by-name/oc/octoprint/package.nix +++ b/pkgs/by-name/oc/octoprint/package.nix @@ -120,13 +120,13 @@ let (self: super: { octoprint = self.buildPythonPackage rec { pname = "OctoPrint"; - version = "1.10.2"; + version = "1.10.3"; src = fetchFromGitHub { owner = "OctoPrint"; repo = "OctoPrint"; rev = version; - hash = "sha256-vISMps2v18A7MkF24SyIcK5yOQsTxBQLnKybVd8R2FU="; + hash = "sha256-BToW1/AcQ01OK7RWZrkstX2M4+uKuL/wFB6HGkVUflk="; }; propagatedBuildInputs = diff --git a/pkgs/by-name/op/openlibm/package.nix b/pkgs/by-name/op/openlibm/package.nix index 857b438d22ad..a7c5063e54db 100644 --- a/pkgs/by-name/op/openlibm/package.nix +++ b/pkgs/by-name/op/openlibm/package.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "openlibm"; - version = "0.8.3"; + version = "0.8.4"; src = fetchFromGitHub { owner = "JuliaLang"; repo = "openlibm"; rev = "v${version}"; - sha256 = "sha256-WSf4mcZXiEL3nKTLQh3Oi1MxeH9MOFRe7DU5zFT2aQE="; + sha256 = "sha256-JhyF93XU2Yd6Ia+JtYvF7Dr+d90r6xMZj/fWDwCNeWY="; }; makeFlags = [ "prefix=$(out)" "CC=${stdenv.cc.targetPrefix}cc" ]; diff --git a/pkgs/by-name/ox/ox/package.nix b/pkgs/by-name/ox/ox/package.nix index ff4551ba0b35..a9b15a7380e5 100644 --- a/pkgs/by-name/ox/ox/package.nix +++ b/pkgs/by-name/ox/ox/package.nix @@ -1,19 +1,17 @@ -{ lib, stdenv, fetchFromGitHub, rustPlatform, darwin }: +{ lib, stdenv, fetchFromGitHub, rustPlatform }: rustPlatform.buildRustPackage rec { pname = "ox"; - version = "0.6.7"; + version = "0.6.10"; src = fetchFromGitHub { owner = "curlpipe"; repo = pname; rev = version; - hash = "sha256-UFNOW/INV/65C6UysKi9lGw+PIj2NXF6ejG5UY702/I="; + hash = "sha256-7PaAcVatm/gqeZRuzCjoF6ZGDP6mIjDTuhmJQ5wt7x8="; }; - cargoHash = "sha256-sy/RNMXJn5k9qw0ghCQA7PqZokpDw0xns4abwa938Gk="; - - buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk.frameworks.AppKit ]; + cargoHash = "sha256-2Jk8uDiTGUQqLOOQVlYm5R7qQXIqP0PkFvv5E5qTzT0="; meta = with lib; { description = "Independent Rust text editor that runs in your terminal"; diff --git a/pkgs/by-name/pg/pg-dump-anon/package.nix b/pkgs/by-name/pg/pg-dump-anon/package.nix index 96b6d351130f..a097eb8aa9c7 100644 --- a/pkgs/by-name/pg/pg-dump-anon/package.nix +++ b/pkgs/by-name/pg/pg-dump-anon/package.nix @@ -14,7 +14,7 @@ buildGoModule rec { vendorHash = "sha256-CwU1zoIayxvfnGL9kPdummPJiV+ECfSz4+q6gZGb8pw="; - passthru.tests = { inherit (nixosTests) pg_anonymizer; }; + passthru.tests = { inherit (nixosTests.postgresql) anonymizer; }; nativeBuildInputs = [ makeWrapper ]; postInstall = '' diff --git a/pkgs/by-name/pi/pik/package.nix b/pkgs/by-name/pi/pik/package.nix index c40651558d52..9a0ab2efb19b 100644 --- a/pkgs/by-name/pi/pik/package.nix +++ b/pkgs/by-name/pi/pik/package.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage rec { pname = "pik"; - version = "0.9.0"; + version = "0.10.0"; src = fetchFromGitHub { owner = "jacek-kurlit"; repo = "pik"; rev = version; - hash = "sha256-YAnMSVQu/E+OyhHX3vugfBocyi++aGwG9vF6zL8T2RU="; + hash = "sha256-q1nNQC9qGa7nUNIaDdqW3wIrfzH7JKS/yZAe9KNmX3k="; }; - cargoHash = "sha256-a7mqtxZMJl8zR8oCfuGNAiT5MEAmNpbDLSgi8A6FfPA="; + cargoHash = "sha256-gqzt3cFOS4uzIstIvmPS0n18aFUt0YnoTRz7EVTV7sA="; passthru.tests.version = testers.testVersion { package = pik; }; diff --git a/pkgs/by-name/po/positron-bin/package.nix b/pkgs/by-name/po/positron-bin/package.nix index c399ba32f752..c26e54e5b3d1 100644 --- a/pkgs/by-name/po/positron-bin/package.nix +++ b/pkgs/by-name/po/positron-bin/package.nix @@ -72,11 +72,7 @@ stdenv.mkDerivation { (lib.getLib systemd) ]; - unpackPhase = '' - runHook preUnpack - ${lib.optionalString stdenv.hostPlatform.isLinux ''dpkg-deb --fsys-tarfile "$src" | tar -x --no-same-owner''} - runHook postUnpack - ''; + postUnpack = lib.optionalString stdenv.hostPlatform.isLinux ''dpkg-deb --fsys-tarfile "$src" | tar -x --no-same-owner''; installPhase = if stdenv.hostPlatform.isDarwin then diff --git a/pkgs/by-name/re/regripper/package.nix b/pkgs/by-name/re/regripper/package.nix index a26a00a41d37..ac5405d72fda 100644 --- a/pkgs/by-name/re/regripper/package.nix +++ b/pkgs/by-name/re/regripper/package.nix @@ -1,29 +1,27 @@ -{ lib -, stdenv -, fetchFromGitHub -, perl -, perlPackages -, runtimeShell +{ + lib, + stdenv, + fetchFromGitHub, + perl, + perlPackages, + runtimeShell, }: stdenv.mkDerivation rec { pname = "regripper"; - version = "unstable-2023-07-23"; + version = "0-unstable-2024-11-02"; src = fetchFromGitHub { owner = "keydet89"; repo = "RegRipper3.0"; - rev = "cee174fb6f137b14c426e97d17945ddee0d31051"; - hash = "sha256-vejIRlcVjxQJpxJabJJcljODYr+lLJjYINVtAPObvkQ="; + rev = "89f3cac57e10bce1a79627e6038353e8e8a0c378"; + hash = "sha256-dW3Gr4HQH484i47Bg+CEnBYoGQQRMBJr88+YeuU+iV4="; }; - propagatedBuildInputs = [ perl perlPackages.ParseWin32Registry ]; - - postPatch = '' - substituteInPlace rip.pl rr.pl \ - --replace \"plugins/\" \"$out/share/regripper/plugins/\" \ - --replace \"plugins\" \"$out/share/regripper/plugins\" - ''; + propagatedBuildInputs = [ + perl + perlPackages.ParseWin32Registry + ]; installPhase = '' runHook preInstall diff --git a/pkgs/by-name/st/stardust-xr-kiara/package.nix b/pkgs/by-name/st/stardust-xr-kiara/package.nix index a1c6120b4582..1cc87ecca8a6 100644 --- a/pkgs/by-name/st/stardust-xr-kiara/package.nix +++ b/pkgs/by-name/st/stardust-xr-kiara/package.nix @@ -11,13 +11,13 @@ rustPlatform.buildRustPackage rec { pname = "stardust-xr-kiara"; - version = "0-unstable-2024-07-07"; + version = "0-unstable-2024-07-13"; src = fetchFromGitHub { owner = "stardustxr"; repo = "kiara"; - rev = "7daaa0a2e3822d949e6c4abf93af159eae9a544a"; - hash = "sha256-5j83e2kcCStPgbwAkr3OFjOpJIErXAPJ6z06BlmtuHE="; + rev = "186b00a460c9dd8179f9af42fb9a420506ac3aff"; + hash = "sha256-e89/x66S+MpJFtqat1hYEyRVUYFjef62LDN2hQPjNVw="; }; cargoLock = { diff --git a/pkgs/by-name/su/surreal-engine/package.nix b/pkgs/by-name/su/surreal-engine/package.nix new file mode 100644 index 000000000000..71376ed3d3eb --- /dev/null +++ b/pkgs/by-name/su/surreal-engine/package.nix @@ -0,0 +1,75 @@ +{ + alsa-lib, + cmake, + dbus, + fetchFromGitHub, + lib, + libffi, + makeWrapper, + openal, + pkg-config, + SDL2, + stdenv, + vulkan-loader, + wayland, + waylandpp, + libxkbcommon, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "surreal-engine"; + version = "0-unstable-2024-11-08"; + + src = fetchFromGitHub { + owner = "dpjudas"; + repo = "SurrealEngine"; + rev = "087fa2af7fd0ce51702dd4024b4ae15a88222678"; + hash = "sha256-AEIBhTkkRq4+L4ycx82GE29dM7zNgE0oHOkwEH9ezUg="; + }; + + nativeBuildInputs = [ + cmake + makeWrapper + pkg-config + ]; + + buildInputs = [ + alsa-lib + dbus + libffi + openal + SDL2 + vulkan-loader + wayland + waylandpp + libxkbcommon + ]; + + postPatch = '' + substituteInPlace SurrealEngine/UI/WidgetResourceData.cpp --replace-fail /usr/share $out/share + ''; + + installPhase = '' + runHook preInstall + + install -Dt $out/bin Surreal{Debugger,Editor,Engine} + install -Dt $out/share/surrealengine SurrealEngine.pk3 + + runHook postInstall + ''; + + postFixup = '' + for bin in $out/bin/Surreal{Debugger,Editor,Engine}; do + wrapProgram $bin --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ vulkan-loader ]} + done + ''; + + meta = with lib; { + description = "Reimplementation of the original Unreal Engine"; + mainProgram = "SurrealEngine"; + homepage = "https://github.com/dpjudas/SurrealEngine"; + license = licenses.zlib; + maintainers = with maintainers; [ hughobrien ]; + platforms = platforms.linux; + }; +}) diff --git a/pkgs/by-name/va/vassal/package.nix b/pkgs/by-name/va/vassal/package.nix index 4b68bc53d086..a15c581ffc0b 100644 --- a/pkgs/by-name/va/vassal/package.nix +++ b/pkgs/by-name/va/vassal/package.nix @@ -9,11 +9,11 @@ stdenv.mkDerivation rec { pname = "VASSAL"; - version = "3.7.14"; + version = "3.7.15"; src = fetchzip { url = "https://github.com/vassalengine/vassal/releases/download/${version}/${pname}-${version}-linux.tar.bz2"; - sha256 = "sha256-3P3f6X2c5lF1AizEs9z59MhLy0Ntg203rkPAkv+SBtw="; + sha256 = "sha256-eFFzUssElsLkCLgbojF6VQ8hzn15NYljBH/I7k98LMk="; }; buildInputs = [ diff --git a/pkgs/by-name/wa/waylock/build.zig.zon.nix b/pkgs/by-name/wa/waylock/build.zig.zon.nix index 2ee83bc20cec..75cb2579adf1 100644 --- a/pkgs/by-name/wa/waylock/build.zig.zon.nix +++ b/pkgs/by-name/wa/waylock/build.zig.zon.nix @@ -1,20 +1,107 @@ -# generated by zon2nix (https://github.com/nix-community/zon2nix) +# generated by zon2nix (https://github.com/Cloudef/zig2nix) -{ linkFarm, fetchzip }: +{ + lib, + linkFarm, + fetchurl, + fetchgit, + runCommandLocal, + zig, + name ? "zig-packages", +}: -linkFarm "zig-packages" [ +with builtins; +with lib; + +let + unpackZigArtifact = + { name, artifact }: + runCommandLocal name + { + nativeBuildInputs = [ zig ]; + } + '' + hash="$(zig fetch --global-cache-dir "$TMPDIR" ${artifact})" + mv "$TMPDIR/p/$hash" "$out" + chmod 755 "$out" + ''; + + fetchZig = + { + name, + url, + hash, + }: + let + artifact = fetchurl { inherit url hash; }; + in + unpackZigArtifact { inherit name artifact; }; + + fetchGitZig = + { + name, + url, + hash, + }: + let + parts = splitString "#" url; + url_base = elemAt parts 0; + url_without_query = elemAt (splitString "?" url_base) 0; + rev_base = elemAt parts 1; + rev = if match "^[a-fA-F0-9]{40}$" rev_base != null then rev_base else "refs/heads/${rev_base}"; + in + fetchgit { + inherit name rev hash; + url = url_without_query; + deepClone = false; + }; + + fetchZigArtifact = + { + name, + url, + hash, + }: + let + parts = splitString "://" url; + proto = elemAt parts 0; + path = elemAt parts 1; + fetcher = { + "git+http" = fetchGitZig { + inherit name hash; + url = "http://${path}"; + }; + "git+https" = fetchGitZig { + inherit name hash; + url = "https://${path}"; + }; + http = fetchZig { + inherit name hash; + url = "http://${path}"; + }; + https = fetchZig { + inherit name hash; + url = "https://${path}"; + }; + }; + in + fetcher.${proto}; +in +linkFarm name [ { name = "1220687c8c47a48ba285d26a05600f8700d37fc637e223ced3aa8324f3650bf52242"; - path = fetchzip { + path = fetchZigArtifact { + name = "zig-wayland"; url = "https://codeberg.org/ifreund/zig-wayland/archive/v0.2.0.tar.gz"; - hash = "sha256-dvit+yvc0MnipqWjxJdfIsA6fJaJZOaIpx4w4woCxbE="; + hash = "sha256-gxzkHLCq2NqX3l4nEly92ARU5dqP1SqnjpGMDgx4TXA="; }; } { name = "1220c90b2228d65fd8427a837d31b0add83e9fade1dcfa539bb56fd06f1f8461605f"; - path = fetchzip { + path = fetchZigArtifact { + name = "zig-xkbcommon"; url = "https://codeberg.org/ifreund/zig-xkbcommon/archive/v0.2.0.tar.gz"; - hash = "sha256-T+EZiStBfmxFUjaX05WhYkFJ8tRok/UQtpc9QY9NxZk="; + hash = "sha256-f5oEJU5i2qeVN3GBrnQcqzEJCiOT7l4ak7GQ6gw5cH0="; }; } ] diff --git a/pkgs/by-name/wa/waylock/package.nix b/pkgs/by-name/wa/waylock/package.nix index 42e5df06185c..53f8ff52e816 100644 --- a/pkgs/by-name/wa/waylock/package.nix +++ b/pkgs/by-name/wa/waylock/package.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "waylock"; - version = "1.2.1"; + version = "1.3.0"; src = fetchFromGitea { domain = "codeberg.org"; @@ -23,7 +23,7 @@ stdenv.mkDerivation (finalAttrs: { repo = "waylock"; rev = "v${finalAttrs.version}"; fetchSubmodules = true; - hash = "sha256-i1Nd39666xrkzi7r08ZRIXJXvK9wmzb8zdmvmWEQaHE="; + hash = "sha256-jfMSar+Y3inu1Cly6rIDw+akBJIQ6huL0smAstgQmEo="; }; deps = callPackage ./build.zig.zon.nix { }; @@ -52,7 +52,7 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace pam.d/waylock --replace-fail "system-auth" "login" ''; - passthru.updateScript = ./update.nu; + passthru.updateScript = ./update.sh; meta = { homepage = "https://codeberg.org/ifreund/waylock"; diff --git a/pkgs/by-name/wa/waylock/update.nu b/pkgs/by-name/wa/waylock/update.nu deleted file mode 100755 index e227fb646517..000000000000 --- a/pkgs/by-name/wa/waylock/update.nu +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i nu -p nushell common-updater-scripts zon2nix - -let latest_tag = list-git-tags --url=https://codeberg.org/ifreund/waylock | lines | sort --natural | str replace v '' | last -update-source-version waylock $latest_tag - -http get $"https://codeberg.org/ifreund/waylock/raw/tag/v($latest_tag)/build.zig.zon" | save build.zig.zon -zon2nix > pkgs/by-name/wa/waylock/build.zig.zon.nix diff --git a/pkgs/by-name/wa/waylock/update.sh b/pkgs/by-name/wa/waylock/update.sh new file mode 100755 index 000000000000..5916fa443945 --- /dev/null +++ b/pkgs/by-name/wa/waylock/update.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p bash common-updater-scripts gnused nixfmt-rfc-style zon2nix + +latest_tag=$(list-git-tags --url=https://codeberg.org/ifreund/waylock | sed 's/^v//' | tail -n 1) + +update-source-version waylock "$latest_tag" + +wget "https://codeberg.org/ifreund/waylock/raw/tag/v${latest_tag}/build.zig.zon" +nix --extra-experimental-features 'nix-command flakes' run github:Cloudef/zig2nix#zon2nix -- build.zig.zon >pkgs/by-name/wa/waylock/build.zig.zon.nix +# strip file protocol +sed -i '\|file = unpackZigArtifact { inherit name; artifact = /. + path; };|d' pkgs/by-name/wa/waylock/build.zig.zon.nix +nixfmt pkgs/by-name/wa/waylock/build.zig.zon.nix + +rm -f build.zig.zon build.zig.zon2json-lock diff --git a/pkgs/by-name/wi/wit-bindgen/package.nix b/pkgs/by-name/wi/wit-bindgen/package.nix index 7404dd906335..d619491020ee 100644 --- a/pkgs/by-name/wi/wit-bindgen/package.nix +++ b/pkgs/by-name/wi/wit-bindgen/package.nix @@ -5,16 +5,16 @@ rustPlatform.buildRustPackage rec { pname = "wit-bindgen"; - version = "0.33.0"; + version = "0.34.0"; src = fetchFromGitHub { owner = "bytecodealliance"; repo = "wit-bindgen"; rev = "v${version}"; - hash = "sha256-+3tWqNdDZagJa9cLSz1OBaPtCr2F1joYyzB//BPqV34="; + hash = "sha256-ZnMQpIfKN6ByEZasvy+UM12ZBsrhTM1s3TN1dF/3YMY="; }; - cargoHash = "sha256-3TrnSU7qXC8INlEZMbYTNwZsqiKMZ6j7tdGmz3DFl1g="; + cargoHash = "sha256-eF1qJ0fH3ODG1u9tUD3dj/2i7+0BJ4fJPlaYjS3XiGU="; # Some tests fail because they need network access to install the `wasm32-unknown-unknown` target. # However, GitHub Actions ensures a proper build. diff --git a/pkgs/by-name/ze/zed-editor/package.nix b/pkgs/by-name/ze/zed-editor/package.nix index caf8cb18648e..72cffa55962e 100644 --- a/pkgs/by-name/ze/zed-editor/package.nix +++ b/pkgs/by-name/ze/zed-editor/package.nix @@ -34,6 +34,8 @@ git, apple-sdk_15, darwinMinVersionHook, + makeWrapper, + nodePackages_latest, withGLES ? false, }: @@ -138,17 +140,20 @@ rustPlatform.buildRustPackage rec { }; }; - nativeBuildInputs = [ - clang - cmake - copyDesktopItems - curl - perl - pkg-config - protobuf - rustPlatform.bindgenHook - cargo-about - ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ cargo-bundle ]; + nativeBuildInputs = + [ + clang + cmake + copyDesktopItems + curl + perl + pkg-config + protobuf + rustPlatform.bindgenHook + cargo-about + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ makeWrapper ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ cargo-bundle ]; dontUseCmakeConfigure = true; @@ -212,6 +217,9 @@ rustPlatform.buildRustPackage rec { postFixup = lib.optionalString stdenv.hostPlatform.isLinux '' patchelf --add-rpath ${gpu-lib}/lib $out/libexec/* patchelf --add-rpath ${wayland}/lib $out/libexec/* + wrapProgram $out/libexec/zed-editor --suffix PATH : ${ + lib.makeBinPath [ nodePackages_latest.nodejs ] + } ''; preCheck = '' diff --git a/pkgs/desktops/lomiri/development/u1db-qt/default.nix b/pkgs/desktops/lomiri/development/u1db-qt/default.nix index 9bba0d914c7a..9e8d6b20f295 100644 --- a/pkgs/desktops/lomiri/development/u1db-qt/default.nix +++ b/pkgs/desktops/lomiri/development/u1db-qt/default.nix @@ -10,6 +10,7 @@ pkg-config, qtbase, qtdeclarative, + qttools, }: stdenv.mkDerivation (finalAttrs: { @@ -26,6 +27,7 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" "dev" + "doc" "examples" ]; @@ -56,6 +58,7 @@ stdenv.mkDerivation (finalAttrs: { cmake pkg-config qtdeclarative # qmlplugindump + qttools # qdoc ]; buildInputs = [ @@ -66,8 +69,7 @@ stdenv.mkDerivation (finalAttrs: { nativeCheckInputs = [ dbus-test-runner ]; cmakeFlags = [ - # Needs qdoc, see https://github.com/NixOS/nixpkgs/pull/245379 - (lib.cmakeBool "BUILD_DOCS" false) + (lib.cmakeBool "BUILD_DOCS" true) ]; dontWrapQtApps = true; @@ -101,6 +103,7 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "Qt5 binding and QtQuick2 plugin for U1DB"; homepage = "https://gitlab.com/ubports/development/core/u1db-qt"; + changelog = "https://gitlab.com/ubports/development/core/u1db-qt/-/blob/${finalAttrs.version}/ChangeLog"; license = lib.licenses.lgpl3Only; maintainers = lib.teams.lomiri.members; platforms = lib.platforms.linux; diff --git a/pkgs/desktops/lomiri/qml/lomiri-action-api/default.nix b/pkgs/desktops/lomiri/qml/lomiri-action-api/default.nix index 35eccd897157..8493e89f8f15 100644 --- a/pkgs/desktops/lomiri/qml/lomiri-action-api/default.nix +++ b/pkgs/desktops/lomiri/qml/lomiri-action-api/default.nix @@ -1,15 +1,18 @@ -{ stdenv -, lib -, fetchFromGitLab -, gitUpdater -, testers -, cmake -, dbus -, dbus-test-runner -, pkg-config -, qtbase -, qtdeclarative -, validatePkgConfig +{ + stdenv, + lib, + fetchFromGitLab, + gitUpdater, + testers, + cmake, + dbus, + dbus-test-runner, + doxygen, + pkg-config, + qtbase, + qtdeclarative, + qttools, + validatePkgConfig, }: stdenv.mkDerivation (finalAttrs: { @@ -26,20 +29,27 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" "dev" + "doc" ]; postPatch = '' # Queries QMake for broken Qt variable: '/build/qtbase-/$(out)/$(qtQmlPrefix)' substituteInPlace qml/Lomiri/Action/CMakeLists.txt \ - --replace 'exec_program(''${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_QML" OUTPUT_VARIABLE QT_IMPORTS_DIR)' 'set(QT_IMPORTS_DIR "''${CMAKE_INSTALL_PREFIX}/${qtbase.qtQmlPrefix}")' + --replace-fail 'exec_program(''${QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_QML" OUTPUT_VARIABLE QT_IMPORTS_DIR)' 'set(QT_IMPORTS_DIR "''${CMAKE_INSTALL_PREFIX}/${qtbase.qtQmlPrefix}")' + + # Fix section labels + substituteInPlace documentation/qml/pages/* \ + --replace-warn '\part' '\section1' ''; strictDeps = true; nativeBuildInputs = [ cmake + doxygen pkg-config qtdeclarative + qttools # qdoc validatePkgConfig ]; @@ -55,10 +65,9 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ (lib.cmakeBool "ENABLE_TESTING" finalAttrs.finalPackage.doCheck) + (lib.cmakeBool "GENERATE_DOCUMENTATION" true) # Use vendored libhud2, TODO package libhud2 separately? (lib.cmakeBool "use_libhud2" false) - # QML docs need qdoc, https://github.com/NixOS/nixpkgs/pull/245379 - (lib.cmakeBool "GENERATE_DOCUMENTATION" false) ]; dontWrapQtApps = true; @@ -82,8 +91,6 @@ stdenv.mkDerivation (finalAttrs: { license = licenses.lgpl3Only; maintainers = teams.lomiri.members; platforms = platforms.linux; - pkgConfigModules = [ - "lomiri-action-qt-1" - ]; + pkgConfigModules = [ "lomiri-action-qt-1" ]; }; }) diff --git a/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix b/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix index 8767534d368f..d0bedb67bd52 100644 --- a/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix +++ b/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix @@ -1,36 +1,46 @@ -{ stdenv -, lib -, fetchFromGitLab -, gitUpdater -, substituteAll -, testers -, dbus-test-runner -, dpkg -, gdb -, glib -, lttng-ust -, perl -, pkg-config -, python3 -, qmake -, qtbase -, qtdeclarative -, qtfeedback -, qtgraphicaleffects -, qtpim -, qtquickcontrols2 -, qtsvg -, qtsystems -, suru-icon-theme -, validatePkgConfig -, wrapQtAppsHook -, xvfb-run +{ + stdenv, + lib, + fetchFromGitLab, + gitUpdater, + substituteAll, + testers, + dbus-test-runner, + dpkg, + gdb, + glib, + lttng-ust, + perl, + pkg-config, + python3, + qmake, + qtbase, + qtdeclarative, + qtfeedback, + qtgraphicaleffects, + qtpim, + qtquickcontrols2, + qtsvg, + qtsystems, + qttools, + suru-icon-theme, + validatePkgConfig, + wrapQtAppsHook, + xvfb-run, }: let listToQtVar = suffix: lib.makeSearchPathOutput "bin" suffix; - qtPluginPaths = listToQtVar qtbase.qtPluginPrefix [ qtbase qtpim qtsvg ]; - qtQmlPaths = listToQtVar qtbase.qtQmlPrefix [ qtdeclarative qtfeedback qtgraphicaleffects ]; + qtPluginPaths = listToQtVar qtbase.qtPluginPrefix [ + qtbase + qtpim + qtsvg + ]; + qtQmlPaths = listToQtVar qtbase.qtQmlPrefix [ + qtdeclarative + qtfeedback + qtgraphicaleffects + ]; in stdenv.mkDerivation (finalAttrs: { pname = "lomiri-ui-toolkit"; @@ -43,10 +53,15 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-r+wUCl+ywFcgFYo7BjBoXiulQptd1Zd3LJchXiMtx4I="; }; - outputs = [ "out" "dev" ]; + outputs = [ + "out" + "dev" + "doc" + ]; patches = [ ./2001-Mark-problematic-tests.patch + (substituteAll { src = ./2002-Nixpkgs-versioned-QML-path.patch.in; name = "2002-Nixpkgs-versioned-QML-path.patch"; @@ -67,6 +82,10 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace apicheck/apicheck.pro \ --replace-fail "\''$\''$[QT_INSTALL_LIBS]/lomiri-ui-toolkit" "$out/bin" + substituteInPlace documentation/documentation.pro \ + --replace-fail '/usr/share/doc' '$$PREFIX/share/doc' \ + --replace-fail '$$[QT_INSTALL_DOCS]' '$$PREFIX/share/doc/lomiri-ui-toolkit' + # Causes redefinition error with our own fortify hardening sed -i '/DEFINES += _FORTIFY_SOURCE/d' features/lomiri_common.prf @@ -105,6 +124,7 @@ stdenv.mkDerivation (finalAttrs: { pkg-config python3 qmake + qttools # qdoc, qhelpgenerator validatePkgConfig wrapQtAppsHook ]; @@ -133,8 +153,6 @@ stdenv.mkDerivation (finalAttrs: { ]; qmakeFlags = [ - # docs require Qt5's qdoc, which we don't have before https://github.com/NixOS/nixpkgs/pull/245379 - "CONFIG+=no_docs" # Ubuntu UITK compatibility, for older / not-yet-migrated applications "CONFIG+=ubuntu-uitk-compat" "QMAKE_PKGCONFIG_PREFIX=${placeholder "out"}" @@ -201,7 +219,7 @@ stdenv.mkDerivation (finalAttrs: { updateScript = gitUpdater { }; }; - meta = with lib; { + meta = { description = "QML components to ease the creation of beautiful applications in QML"; longDescription = '' This project consists of a set of QML components to ease the creation of beautiful applications in QML for Lomiri. @@ -219,9 +237,12 @@ stdenv.mkDerivation (finalAttrs: { ''; homepage = "https://gitlab.com/ubports/development/core/lomiri-ui-toolkit"; changelog = "https://gitlab.com/ubports/development/core/lomiri-ui-toolkit/-/blob/${finalAttrs.version}/ChangeLog"; - license = with licenses; [ gpl3Only cc-by-sa-30 ]; - maintainers = teams.lomiri.members; - platforms = platforms.linux; + license = with lib.licenses; [ + gpl3Only + cc-by-sa-30 + ]; + maintainers = lib.teams.lomiri.members; + platforms = lib.platforms.linux; pkgConfigModules = [ "LomiriGestures" "LomiriMetrics" diff --git a/pkgs/desktops/lomiri/services/lomiri-content-hub/default.nix b/pkgs/desktops/lomiri/services/lomiri-content-hub/default.nix index dd2f6d3ab23e..a2bb44340024 100644 --- a/pkgs/desktops/lomiri/services/lomiri-content-hub/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-content-hub/default.nix @@ -1,30 +1,32 @@ -{ stdenv -, lib -, fetchFromGitLab -, gitUpdater -, testers -, cmake -, cmake-extras -, dbus-test-runner -, gettext -, glib -, gsettings-qt -, gtest -, libapparmor -, libnotify -, lomiri-api -, lomiri-app-launch -, lomiri-download-manager -, lomiri-ui-toolkit -, pkg-config -, properties-cpp -, qtbase -, qtdeclarative -, qtfeedback -, qtgraphicaleffects -, validatePkgConfig -, wrapGAppsHook3 -, xvfb-run +{ + stdenv, + lib, + fetchFromGitLab, + gitUpdater, + testers, + cmake, + cmake-extras, + dbus-test-runner, + gettext, + glib, + gsettings-qt, + gtest, + libapparmor, + libnotify, + lomiri-api, + lomiri-app-launch, + lomiri-download-manager, + lomiri-ui-toolkit, + pkg-config, + properties-cpp, + qtbase, + qtdeclarative, + qtfeedback, + qtgraphicaleffects, + qttools, + validatePkgConfig, + wrapGAppsHook3, + xvfb-run, }: stdenv.mkDerivation (finalAttrs: { @@ -41,6 +43,7 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" "dev" + "doc" "examples" ]; @@ -64,6 +67,7 @@ stdenv.mkDerivation (finalAttrs: { gettext pkg-config qtdeclarative # qmlplugindump + qttools # qdoc validatePkgConfig wrapGAppsHook3 ]; @@ -90,9 +94,7 @@ stdenv.mkDerivation (finalAttrs: { xvfb-run ]; - checkInputs = [ - gtest - ]; + checkInputs = [ gtest ]; dontWrapQtApps = true; @@ -100,17 +102,27 @@ stdenv.mkDerivation (finalAttrs: { (lib.cmakeBool "GSETTINGS_COMPILE" true) (lib.cmakeBool "GSETTINGS_LOCALINSTALL" true) (lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck) - (lib.cmakeBool "ENABLE_DOC" false) # needs Qt5 qdoc: https://github.com/NixOS/nixpkgs/pull/245379 + (lib.cmakeBool "ENABLE_DOC" true) (lib.cmakeBool "ENABLE_UBUNTU_COMPAT" true) # in case something still depends on it ]; - preBuild = let - listToQtVar = list: suffix: lib.strings.concatMapStringsSep ":" (drv: "${lib.getBin drv}/${suffix}") list; - in '' - # Executes qmlplugindump - export QT_PLUGIN_PATH=${listToQtVar [ qtbase ] qtbase.qtPluginPrefix} - export QML2_IMPORT_PATH=${listToQtVar [ qtdeclarative lomiri-ui-toolkit qtfeedback qtgraphicaleffects ] qtbase.qtQmlPrefix} - ''; + preBuild = + let + listToQtVar = + list: suffix: lib.strings.concatMapStringsSep ":" (drv: "${lib.getBin drv}/${suffix}") list; + in + '' + # Executes qmlplugindump + export QT_PLUGIN_PATH=${listToQtVar [ qtbase ] qtbase.qtPluginPrefix} + export QML2_IMPORT_PATH=${ + listToQtVar [ + qtdeclarative + lomiri-ui-toolkit + qtfeedback + qtgraphicaleffects + ] qtbase.qtQmlPrefix + } + ''; doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; @@ -145,7 +157,10 @@ stdenv.mkDerivation (finalAttrs: { ''; homepage = "https://gitlab.com/ubports/development/core/lomiri-content-hub"; changelog = "https://gitlab.com/ubports/development/core/lomiri-content-hub/-/blob/${finalAttrs.version}/ChangeLog"; - license = with lib.licenses; [ gpl3Only lgpl3Only ]; + license = with lib.licenses; [ + gpl3Only + lgpl3Only + ]; mainProgram = "lomiri-content-hub-service"; maintainers = lib.teams.lomiri.members; platforms = lib.platforms.linux; diff --git a/pkgs/desktops/lomiri/services/lomiri-download-manager/default.nix b/pkgs/desktops/lomiri/services/lomiri-download-manager/default.nix index 6174bd9c54b0..acd5647a625d 100644 --- a/pkgs/desktops/lomiri/services/lomiri-download-manager/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-download-manager/default.nix @@ -1,28 +1,29 @@ -{ stdenv -, lib -, fetchFromGitLab -, fetchpatch -, gitUpdater -, testers -, boost -, cmake -, cmake-extras -, dbus -, dbus-test-runner -# Needs qdoc, https://github.com/NixOS/nixpkgs/pull/245379 -, withDocumentation ? false -, doxygen -, glog -, graphviz -, gtest -, lomiri-api -, pkg-config -, python3 -, qtbase -, qtdeclarative -, validatePkgConfig -, wrapQtAppsHook -, xvfb-run +{ + stdenv, + lib, + fetchFromGitLab, + fetchpatch, + gitUpdater, + testers, + boost, + cmake, + cmake-extras, + dbus, + dbus-test-runner, + withDocumentation ? true, + doxygen, + glog, + graphviz, + gtest, + lomiri-api, + pkg-config, + python3, + qtbase, + qtdeclarative, + qttools, + validatePkgConfig, + wrapQtAppsHook, + xvfb-run, }: stdenv.mkDerivation (finalAttrs: { @@ -39,9 +40,7 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" "dev" - ] ++ lib.optionals withDocumentation [ - "doc" - ]; + ] ++ lib.optionals withDocumentation [ "doc" ]; patches = [ # This change seems incomplete, potentially breaks things on systems that don't use AppArmor mediation @@ -69,15 +68,18 @@ stdenv.mkDerivation (finalAttrs: { strictDeps = true; - nativeBuildInputs = [ - cmake - pkg-config - validatePkgConfig - wrapQtAppsHook - ] ++ lib.optionals withDocumentation [ - doxygen - graphviz - ]; + nativeBuildInputs = + [ + cmake + pkg-config + validatePkgConfig + wrapQtAppsHook + ] + ++ lib.optionals withDocumentation [ + doxygen + graphviz + qttools # qdoc + ]; buildInputs = [ boost @@ -95,9 +97,7 @@ stdenv.mkDerivation (finalAttrs: { xvfb-run ]; - checkInputs = [ - gtest - ]; + checkInputs = [ gtest ]; cmakeFlags = [ (lib.cmakeBool "ENABLE_DOC" withDocumentation) @@ -106,11 +106,7 @@ stdenv.mkDerivation (finalAttrs: { (lib.cmakeBool "ENABLE_WERROR" false) ]; - makeTargets = [ - "all" - ] ++ lib.optionals withDocumentation [ - "doc" - ]; + makeTargets = [ "all" ] ++ lib.optionals withDocumentation [ "doc" ]; doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; @@ -127,13 +123,13 @@ stdenv.mkDerivation (finalAttrs: { updateScript = gitUpdater { }; }; - meta = with lib; { + meta = { description = "Performs uploads and downloads from a centralized location"; homepage = "https://gitlab.com/ubports/development/core/lomiri-download-manager"; changelog = "https://gitlab.com/ubports/development/core/lomiri-download-manager/-/blob/${finalAttrs.version}/ChangeLog"; - license = licenses.lgpl3Only; - maintainers = teams.lomiri.members; - platforms = platforms.linux; + license = lib.licenses.lgpl3Only; + maintainers = lib.teams.lomiri.members; + platforms = lib.platforms.linux; pkgConfigModules = [ "ldm-common" "lomiri-download-manager-client" diff --git a/pkgs/desktops/lomiri/services/lomiri-indicator-network/default.nix b/pkgs/desktops/lomiri/services/lomiri-indicator-network/default.nix index 41d5e81611e4..58ca6d208779 100644 --- a/pkgs/desktops/lomiri/services/lomiri-indicator-network/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-indicator-network/default.nix @@ -28,6 +28,7 @@ python3, qtdeclarative, qtbase, + qttools, validatePkgConfig, }: @@ -74,6 +75,7 @@ stdenv.mkDerivation (finalAttrs: { intltool pkg-config qtdeclarative + qttools # qdoc validatePkgConfig ]; @@ -106,7 +108,7 @@ stdenv.mkDerivation (finalAttrs: { (lib.cmakeBool "GSETTINGS_COMPILE" true) (lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck) (lib.cmakeBool "ENABLE_UBUNTU_COMPAT" true) # just in case something needs it - (lib.cmakeBool "BUILD_DOC" true) # lacks QML docs, needs qdoc: https://github.com/NixOS/nixpkgs/pull/245379 + (lib.cmakeBool "BUILD_DOC" true) ]; doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; diff --git a/pkgs/development/libraries/accounts-qml-module/default.nix b/pkgs/development/libraries/accounts-qml-module/default.nix index 858f9c0d57b8..2ac4663652f9 100644 --- a/pkgs/development/libraries/accounts-qml-module/default.nix +++ b/pkgs/development/libraries/accounts-qml-module/default.nix @@ -1,19 +1,22 @@ -{ stdenv -, lib -, fetchFromGitLab -, accounts-qt -, dbus-test-runner -, pkg-config -, qmake -, qtbase -, qtdeclarative -, signond -, xvfb-run +{ + stdenv, + lib, + fetchFromGitLab, + unstableGitUpdater, + accounts-qt, + dbus-test-runner, + pkg-config, + qmake, + qtbase, + qtdeclarative, + qttools, + signond, + xvfb-run, }: stdenv.mkDerivation (finalAttrs: { pname = "accounts-qml-module"; - version = "0.7-unstable-2022-10-28"; + version = "0.7-unstable-2023-10-28"; src = fetchFromGitLab { owner = "accounts-sso"; @@ -22,17 +25,28 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-ZpnkZauowLPBnO3DDDtG/x07XoQGVNqEF8AQB5TZK84="; }; - postPatch = '' - substituteInPlace src/src.pro \ - --replace '$$[QT_INSTALL_BINS]/qmlplugindump' 'qmlplugindump' \ - --replace '$$[QT_INSTALL_QML]' '${placeholder "out"}/${qtbase.qtQmlPrefix}' + outputs = [ + "out" + "doc" + ]; - # Don't install test binary - sed -i tests/tst_plugin.pro \ - -e '/TARGET = tst_plugin/a INSTALLS -= target' - '' + lib.optionalString (!finalAttrs.finalPackage.doCheck) '' - sed -i accounts-qml-module.pro -e '/tests/d' - ''; + postPatch = + '' + substituteInPlace src/src.pro \ + --replace '$$[QT_INSTALL_BINS]/qmlplugindump' 'qmlplugindump' \ + --replace '$$[QT_INSTALL_QML]' '${placeholder "out"}/${qtbase.qtQmlPrefix}' + + # Find qdoc + substituteInPlace doc/doc.pri \ + --replace-fail 'QDOC = $$[QT_INSTALL_BINS]/qdoc' 'QDOC = qdoc' + + # Don't install test binary + sed -i tests/tst_plugin.pro \ + -e '/TARGET = tst_plugin/a INSTALLS -= target' + '' + + lib.optionalString (!finalAttrs.finalPackage.doCheck) '' + sed -i accounts-qml-module.pro -e '/tests/d' + ''; # QMake can't find Qt modules in buildInputs strictDeps = false; @@ -41,6 +55,7 @@ stdenv.mkDerivation (finalAttrs: { pkg-config qmake qtdeclarative # qmlplugindump + qttools # qdoc ]; buildInputs = [ @@ -57,11 +72,6 @@ stdenv.mkDerivation (finalAttrs: { dontWrapQtApps = true; - qmakeFlags = [ - # Needs qdoc, https://github.com/NixOS/nixpkgs/pull/245379 - "CONFIG+=no_docs" - ]; - postConfigure = '' make qmake_all ''; @@ -78,11 +88,19 @@ stdenv.mkDerivation (finalAttrs: { export QT_PLUGIN_PATH=${lib.getBin qtbase}/${qtbase.qtPluginPrefix} ''; - meta = with lib; { + postFixup = '' + moveToOutput share/accounts-qml-module/doc $doc + ''; + + passthru.updateScript = unstableGitUpdater { + tagPrefix = "VERSION_"; + }; + + meta = { description = "QML bindings for libaccounts-qt + libsignon-qt"; homepage = "https://gitlab.com/accounts-sso/accounts-qml-module"; - license = licenses.lgpl21Only; - maintainers = with maintainers; [ OPNA2608 ]; - platforms = platforms.linux; + license = lib.licenses.lgpl21Only; + maintainers = with lib.maintainers; [ OPNA2608 ]; + platforms = lib.platforms.linux; }; }) diff --git a/pkgs/development/libraries/libvirt/default.nix b/pkgs/development/libraries/libvirt/default.nix index f6e5807f6958..b1e565266f86 100644 --- a/pkgs/development/libraries/libvirt/default.nix +++ b/pkgs/development/libraries/libvirt/default.nix @@ -34,7 +34,7 @@ , stdenv , substituteAll , xhtml1 -, yajl +, json_c , writeScript , nixosTests @@ -114,13 +114,13 @@ stdenv.mkDerivation rec { # NOTE: You must also bump: # # SysVirt in - version = "10.5.0"; + version = "10.9.0"; src = fetchFromGitLab { owner = pname; repo = pname; rev = "v${version}"; - hash = "sha256-Nku4l1f34NOUr23KWDH9uZu72OgMK3KfYjsRRbuTvf8="; + hash = "sha256-LYQYA5UIKYs+8rSNZDymmrxuTWsgmukP5Y17lGB5UQs="; fetchSubmodules = true; }; @@ -163,6 +163,9 @@ stdenv.mkDerivation rec { sed -i '/qemuvhostusertest/d' tests/meson.build sed -i '/qemuxml2xmltest/d' tests/meson.build sed -i '/domaincapstest/d' tests/meson.build + # virshtest frequently times out on Darwin + substituteInPlace tests/meson.build \ + --replace-fail "data.get('timeout', 30)" "data.get('timeout', 120)" '' + lib.optionalString enableXen '' # Has various hardcoded paths that don't exist outside of a Xen dom0. sed -i '/libxlxml2domconfigtest/d' tests/meson.build @@ -202,7 +205,7 @@ stdenv.mkDerivation rec { python3 readline xhtml1 - yajl + json_c ] ++ lib.optionals isLinux [ acl attr @@ -312,7 +315,7 @@ stdenv.mkDerivation rec { (feat "ssh_proxy" isLinux) (feat "tests" true) (feat "udev" isLinux) - (feat "yajl" true) + (feat "json_c" true) (driver "ch" isLinux) (driver "esx" true) diff --git a/pkgs/development/python-modules/aiogram/default.nix b/pkgs/development/python-modules/aiogram/default.nix index 9c0021c0a723..afd1bcd6258f 100644 --- a/pkgs/development/python-modules/aiogram/default.nix +++ b/pkgs/development/python-modules/aiogram/default.nix @@ -28,16 +28,16 @@ buildPythonPackage rec { pname = "aiogram"; - version = "3.13.1"; + version = "3.14.0"; pyproject = true; - disabled = pythonOlder "3.8"; + disabled = pythonOlder "3.9"; src = fetchFromGitHub { owner = "aiogram"; repo = "aiogram"; rev = "refs/tags/v${version}"; - hash = "sha256-uTFh1ncIPF9SmAEVGeBnXEKrYzgifZan1sxk5UiG92U="; + hash = "sha256-SEq88e5MLNqssJhxPPwI2ZdpNdTCBomNpI0xmbmz3Pw="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/python-modules/androidtv/default.nix b/pkgs/development/python-modules/androidtv/default.nix index 5e1f96da1453..d07c2530a450 100644 --- a/pkgs/development/python-modules/androidtv/default.nix +++ b/pkgs/development/python-modules/androidtv/default.nix @@ -14,7 +14,7 @@ buildPythonPackage rec { pname = "androidtv"; - version = "0.0.74"; + version = "0.0.75"; pyproject = true; disabled = pythonOlder "3.7"; @@ -23,7 +23,7 @@ buildPythonPackage rec { owner = "JeffLIrion"; repo = "python-androidtv"; rev = "refs/tags/v${version}"; - hash = "sha256-aURHor+7E0Z4DyN/s1/BMBJo/FmvAlRsKs9Q0Thelyc="; + hash = "sha256-2WFfGGEZkM3fWyTo5P6H3ha04Qyx2OiYetlGWv0jXac="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/bsdiff4/default.nix b/pkgs/development/python-modules/bsdiff4/default.nix index 1ad855c1a11a..5d3bf14d7506 100644 --- a/pkgs/development/python-modules/bsdiff4/default.nix +++ b/pkgs/development/python-modules/bsdiff4/default.nix @@ -7,14 +7,14 @@ buildPythonPackage rec { pname = "bsdiff4"; - version = "1.2.4"; + version = "1.2.5"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - hash = "sha256-HXEpqBIYYHMejM4pAdMYPhSuxwJE9k6PdFYyddw4gGc="; + hash = "sha256-zdg/gg7Ljx72ek5fCxUsYdMnyver81qpp2NBORWyE2g="; }; pythonImportsCheck = [ "bsdiff4" ]; diff --git a/pkgs/development/python-modules/chess/default.nix b/pkgs/development/python-modules/chess/default.nix index 81f990fe75bb..b8d6cfcafc2e 100644 --- a/pkgs/development/python-modules/chess/default.nix +++ b/pkgs/development/python-modules/chess/default.nix @@ -9,7 +9,7 @@ buildPythonPackage rec { pname = "chess"; - version = "1.11.0"; + version = "1.11.1"; pyproject = true; disabled = pythonOlder "3.7"; @@ -18,7 +18,7 @@ buildPythonPackage rec { owner = "niklasf"; repo = "python-${pname}"; rev = "refs/tags/v${version}"; - hash = "sha256-+YNEm1QppXeeIjOKfCSQoQmuSzBsW4ws0ej/whjTAPg="; + hash = "sha256-OAYQ/XtM4AHfbpA+gVa/AjB3tyMtvgykpHc39WaU2CI="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/dinghy/default.nix b/pkgs/development/python-modules/dinghy/default.nix index 451f4c6578f6..a59b541282be 100644 --- a/pkgs/development/python-modules/dinghy/default.nix +++ b/pkgs/development/python-modules/dinghy/default.nix @@ -19,7 +19,7 @@ buildPythonPackage rec { pname = "dinghy"; - version = "1.3.2"; + version = "1.3.3"; pyproject = true; disabled = pythonOlder "3.8"; @@ -28,7 +28,7 @@ buildPythonPackage rec { owner = "nedbat"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-0U08QHQuNm7qaxhU8sNxeN0fZ4S8N0RYRsWjFUqhZSU="; + hash = "sha256-fn8SRzhFJyyr2Wr9/cp8Sm6kbVARq2LEeKSE0HU9V74="; }; nativeBuildInputs = [ setuptools ]; diff --git a/pkgs/development/python-modules/kornia/default.nix b/pkgs/development/python-modules/kornia/default.nix index 013ccbd9010f..93a783bdba7c 100644 --- a/pkgs/development/python-modules/kornia/default.nix +++ b/pkgs/development/python-modules/kornia/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "kornia"; - version = "0.7.3"; + version = "0.7.4"; pyproject = true; disabled = pythonOlder "3.8"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = pname; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-iEg27b2JVLtAYLFncaSqIh5FyvmmitKAKP7Tl0WWNdk="; + hash = "sha256-Ecps1KniiL1WOGk+i/UAVuXJ2W7cgHSzAKCkZokyWIM="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/libvirt/default.nix b/pkgs/development/python-modules/libvirt/default.nix index 6dbb2c867112..d2a4acd7277e 100644 --- a/pkgs/development/python-modules/libvirt/default.nix +++ b/pkgs/development/python-modules/libvirt/default.nix @@ -11,14 +11,14 @@ buildPythonPackage rec { pname = "libvirt"; - version = "10.5.0"; + version = "10.9.0"; pyproject = true; src = fetchFromGitLab { owner = "libvirt"; repo = "libvirt-python"; rev = "v${version}"; - hash = "sha256-dPjT9PRoUzNrY79yejAW/sbkMr0fpLif7IKZIW/K3KI="; + hash = "sha256-/kjpB19X90btIewW+hjLjLagJvI5X2oIHXpcSZVtu2I="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/morecantile/default.nix b/pkgs/development/python-modules/morecantile/default.nix index d7e31fa4af6e..948d74284584 100644 --- a/pkgs/development/python-modules/morecantile/default.nix +++ b/pkgs/development/python-modules/morecantile/default.nix @@ -17,15 +17,15 @@ buildPythonPackage rec { pname = "morecantile"; - version = "5.4.2"; + version = "6.0.0"; pyproject = true; disabled = pythonOlder "3.8"; src = fetchFromGitHub { owner = "developmentseed"; repo = "morecantile"; - rev = version; - hash = "sha256-kUAde+6IUu95tFHFCB6kWoYsRf9GxR+gRJki/tvhIaY="; + rev = "refs/tags/${version}"; + hash = "sha256-l+fQQXOrhqRanB695nR4okfmPYP05NdrGOvgG+jK2uo="; }; nativeBuildInputs = [ flit ]; diff --git a/pkgs/development/python-modules/polars/Cargo.lock b/pkgs/development/python-modules/polars/Cargo.lock index 94a0a87e3d8c..37d2c8c3717e 100644 --- a/pkgs/development/python-modules/polars/Cargo.lock +++ b/pkgs/development/python-modules/polars/Cargo.lock @@ -1,22 +1,16 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.0" @@ -36,7 +30,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "const-random", "getrandom", "once_cell", "version_check", @@ -102,9 +95,9 @@ checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "apache-avro" @@ -134,9 +127,9 @@ dependencies = [ [[package]] name = "arboard" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb4009533e8ff8f1450a5bcbc30f4242a1d34442221f72314bea1f5dc9c7f89" +checksum = "df099ccb16cd014ff054ac1bf392c67feeef57164b05c42f037cd40f5d4357f4" dependencies = [ "clipboard-win", "log", @@ -164,9 +157,9 @@ checksum = "bf7d0a018de4f6aa429b9d33d69edf69072b1c5b1cb8d3e4a5f7ef898fc3eb76" [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -174,51 +167,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "arrow-array" -version = "52.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f4a9468c882dc66862cef4e1fd8423d47e67972377d85d80e022786427768c" -dependencies = [ - "ahash", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "chrono", - "half", - "hashbrown", - "num", -] - -[[package]] -name = "arrow-buffer" -version = "52.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c975484888fc95ec4a632cdc98be39c085b1bb518531b0c80c5d462063e5daa1" -dependencies = [ - "bytes", - "half", - "num", -] - -[[package]] -name = "arrow-data" -version = "52.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd9d6f18c65ef7a2573ab498c374d8ae364b4a4edf67105357491c031f716ca5" -dependencies = [ - "arrow-buffer", - "arrow-schema", - "half", - "num", -] - -[[package]] -name = "arrow-schema" -version = "52.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e972cd1ff4a4ccd22f86d3e53e835c2ed92e0eea6a3e8eadb72b4f1ac802cf8" - [[package]] name = "arrow2" version = "0.17.4" @@ -241,9 +189,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -252,24 +200,24 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -295,9 +243,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "avro-schema" @@ -317,9 +265,9 @@ dependencies = [ [[package]] name = "aws-config" -version = "1.5.5" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e95816a168520d72c0e7680c405a5a8c1fb6a035b4bc4b9d7b0de8e1a941697" +checksum = "8191fb3091fa0561d1379ef80333c3c7191c6f0435d986e85821bcf7acbd1126" dependencies = [ "aws-credential-types", "aws-runtime", @@ -347,9 +295,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16838e6c9e12125face1c1eff1343c75e3ff540de98ff7ebd61874a89bcfeb9" +checksum = "60e8f6b615cb5fc60a98132268508ad104310f0cfb25a1c22eee76efdf9154da" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -359,15 +307,16 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.4.0" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f42c2d4218de4dcd890a109461e2f799a1a2ba3bcd2cde9af88360f5df9266c6" +checksum = "a10d5c055aa540164d9561a0e2e74ad30f0dcf7393c3a92f6733ddf9c5762468" dependencies = [ "aws-credential-types", "aws-sigv4", "aws-smithy-async", "aws-smithy-eventstream", "aws-smithy-http", + "aws-smithy-runtime", "aws-smithy-runtime-api", "aws-smithy-types", "aws-types", @@ -419,9 +368,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.39.0" +version = "1.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11822090cf501c316c6f75711d77b96fba30658e3867a7762e5e2f5d32d31e81" +checksum = "0b90cfe6504115e13c41d3ea90286ede5aa14da294f3fe077027a6e83850843c" dependencies = [ "aws-credential-types", "aws-runtime", @@ -441,9 +390,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.40.0" +version = "1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78a2a06ff89176123945d1bbe865603c4d7101bea216a550bb4d2e4e9ba74d74" +checksum = "167c0fad1f212952084137308359e8e4c4724d1c643038ce163f06de9662c1d0" dependencies = [ "aws-credential-types", "aws-runtime", @@ -463,9 +412,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.39.0" +version = "1.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20a91795850826a6f456f4a48eff1dfa59a0e69bdbf5b8c50518fd372106574" +checksum = "2cb5f98188ec1435b68097daa2a37d74b9d17c9caa799466338a8d1544e71b9d" dependencies = [ "aws-credential-types", "aws-runtime", @@ -486,9 +435,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5df1b0fa6be58efe9d4ccc257df0a53b89cd8909e86591a13ca54817c87517be" +checksum = "cc8db6904450bafe7473c6ca9123f88cc11089e41a025408f992db4e22d3be68" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -547,9 +496,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.60.4" +version = "0.60.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6363078f927f612b970edf9d1903ef5cef9a64d1e8423525ebb1f0a1633c858" +checksum = "cef7d0a272725f87e51ba2bf89f8c21e4df61b9e49ae1ac367a6d69916ef7c90" dependencies = [ "aws-smithy-types", "bytes", @@ -558,9 +507,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.60.9" +version = "0.60.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9cd0ae3d97daa0a2bf377a4d8e8e1362cae590c4a1aad0d40058ebca18eb91e" +checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6" dependencies = [ "aws-smithy-eventstream", "aws-smithy-runtime-api", @@ -598,9 +547,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.6.3" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0abbf454960d0db2ad12684a1640120e7557294b0ff8e2f11236290a1b293225" +checksum = "d1ce695746394772e7000b39fe073095db6d45a862d0767dd5ad0ac0d7f8eb87" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -642,9 +591,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.2" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cee7cadb433c781d3299b916fbf620fea813bf38f49db282fb6858141a05cc8" +checksum = "147100a7bea70fa20ef224a6bad700358305f5dc0f84649c53769761395b355b" dependencies = [ "base64-simd", "bytes", @@ -668,9 +617,9 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.8" +version = "0.60.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d123fbc2a4adc3c301652ba8e149bf4bc1d1725affb9784eb20c953ace06bf55" +checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" dependencies = [ "xmlparser", ] @@ -691,17 +640,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -822,17 +771,6 @@ dependencies = [ "alloc-stdlib", ] -[[package]] -name = "built" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4" -dependencies = [ - "cargo-lock", - "chrono", - "git2", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -841,9 +779,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd4c6dcc3b0aea2f5c0b4b82c2b15fe39ddbc76041a310848f4706edf76bb31" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" dependencies = [ "bytemuck_derive", ] @@ -856,7 +794,7 @@ checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -867,9 +805,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" [[package]] name = "bytes-utils" @@ -881,18 +819,6 @@ dependencies = [ "either", ] -[[package]] -name = "cargo-lock" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11c675378efb449ed3ce8de78d75d0d80542fc98487c26aba28eb3b82feac72" -dependencies = [ - "semver", - "serde", - "toml", - "url", -] - [[package]] name = "casey" version = "0.4.0" @@ -919,9 +845,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.14" +version = "1.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d2eb3cd3d1bf4529e31c215ee6f93ec5a3d536d9f578f93d9d33ee19562932" +checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938" dependencies = [ "jobserver", "libc", @@ -998,18 +924,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b" dependencies = [ "anstyle", "clap_lex", @@ -1072,31 +998,11 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" -[[package]] -name = "const-random" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" -dependencies = [ - "const-random-macro", -] - -[[package]] -name = "const-random-macro" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" -dependencies = [ - "getrandom", - "once_cell", - "tiny-keccak", -] - [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "core-foundation" @@ -1125,9 +1031,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1402,7 +1308,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -1433,9 +1339,9 @@ dependencies = [ [[package]] name = "error-code" -version = "3.2.0" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" +checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" [[package]] name = "ethnum" @@ -1473,13 +1379,13 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "libz-ng-sys", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -1497,6 +1403,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign_vec" version = "0.1.0" @@ -1578,7 +1490,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -1646,22 +1558,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" - -[[package]] -name = "git2" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" -dependencies = [ - "bitflags", - "libc", - "libgit2-sys", - "log", - "url", -] +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "glob" @@ -1726,7 +1625,6 @@ checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ "cfg-if", "crunchy", - "num-traits", ] [[package]] @@ -1735,7 +1633,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8588661a8607108a5ca69cab034063441a0413a0b041c13618a7dd348021ef6f" dependencies = [ - "hashbrown", + "hashbrown 0.14.5", "serde", ] @@ -1757,6 +1655,19 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "rayon", + "serde", +] + [[package]] name = "heck" version = "0.4.1" @@ -1863,9 +1774,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -1941,16 +1852,16 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", "hyper 1.4.1", "hyper-util", - "rustls 0.23.12", - "rustls-native-certs 0.7.2", + "rustls 0.23.13", + "rustls-native-certs 0.8.0", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -1959,9 +1870,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", @@ -1972,16 +1883,15 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2012,12 +1922,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.0", "serde", ] @@ -2035,9 +1945,9 @@ checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "is-terminal" @@ -2135,75 +2045,11 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lexical-core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" -dependencies = [ - "lexical-parse-float", - "lexical-parse-integer", - "lexical-util", - "lexical-write-float", - "lexical-write-integer", -] - -[[package]] -name = "lexical-parse-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" -dependencies = [ - "lexical-parse-integer", - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-parse-integer" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" -dependencies = [ - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-util" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" -dependencies = [ - "static_assertions", -] - -[[package]] -name = "lexical-write-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" -dependencies = [ - "lexical-util", - "lexical-write-integer", - "static_assertions", -] - -[[package]] -name = "lexical-write-integer" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" -dependencies = [ - "lexical-util", - "static_assertions", -] - [[package]] name = "libc" -version = "0.2.158" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libflate" @@ -2245,22 +2091,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" dependencies = [ "core2", - "hashbrown", + "hashbrown 0.14.5", "rle-decode-fast", ] -[[package]] -name = "libgit2-sys" -version = "0.17.0+1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" -dependencies = [ - "cc", - "libc", - "libz-sys", - "pkg-config", -] - [[package]] name = "libloading" version = "0.8.5" @@ -2268,7 +2102,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -2297,18 +2131,6 @@ dependencies = [ "libc", ] -[[package]] -name = "libz-sys" -version = "1.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -2337,24 +2159,23 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ - "hashbrown", + "hashbrown 0.14.5", ] [[package]] name = "lz4" -version = "1.26.0" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958b4caa893816eea05507c20cfe47574a43d9a697138a7872990bba8a0ece68" +checksum = "4d1febb2b4a79ddd1980eede06a8f7902197960aa0383ffcfdd62fe723036725" dependencies = [ - "libc", "lz4-sys", ] [[package]] name = "lz4-sys" -version = "1.10.0" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" dependencies = [ "cc", "libc", @@ -2428,15 +2249,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.8.0" @@ -2511,20 +2323,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -2560,28 +2358,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.19" @@ -2707,9 +2483,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.3" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -2735,7 +2511,7 @@ dependencies = [ "rand", "reqwest", "ring", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "serde", "serde_json", "snafu", @@ -2747,9 +2523,12 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" +dependencies = [ + "portable-atomic", +] [[package]] name = "oorandom" @@ -2803,16 +2582,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "parquet-format-safe" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1131c54b167dd4e4799ce762e1ab01549ebb94d5bdd13e6ec1b467491c378e1f" -dependencies = [ - "async-trait", - "futures", -] - [[package]] name = "parse-zoneinfo" version = "0.3.1" @@ -2866,26 +2635,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - [[package]] name = "pin-project-lite" version = "0.2.14" @@ -2910,9 +2659,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "planus" @@ -2925,9 +2674,9 @@ dependencies = [ [[package]] name = "plotters" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -2938,15 +2687,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] @@ -2957,7 +2706,6 @@ version = "0.43.1" dependencies = [ "ahash", "apache-avro", - "arrow-buffer", "avro-schema", "either", "ethnum", @@ -2986,10 +2734,6 @@ name = "polars-arrow" version = "0.43.1" dependencies = [ "ahash", - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", "async-stream", "atoi", "atoi_simd", @@ -3007,7 +2751,7 @@ dependencies = [ "flate2", "futures", "getrandom", - "hashbrown", + "hashbrown 0.15.0", "hex", "indexmap", "itoa", @@ -3023,7 +2767,7 @@ dependencies = [ "proptest", "rand", "regex", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", "ryu", "sample-arrow2", "sample-std", @@ -3032,6 +2776,7 @@ dependencies = [ "simdutf8", "streaming-iterator", "strength_reduce", + "strum_macros", "tokio", "tokio-util", "version_check", @@ -3070,7 +2815,6 @@ name = "polars-core" version = "0.43.1" dependencies = [ "ahash", - "arrow-array", "bincode", "bitflags", "bytemuck", @@ -3078,7 +2822,8 @@ dependencies = [ "chrono-tz", "comfy-table", "either", - "hashbrown", + "hashbrown 0.14.5", + "hashbrown 0.15.0", "indexmap", "ndarray", "num-traits", @@ -3095,6 +2840,7 @@ dependencies = [ "regex", "serde", "serde_json", + "strum_macros", "thiserror", "version_check", "xxhash-rust", @@ -3132,6 +2878,8 @@ version = "0.43.1" dependencies = [ "ahash", "bitflags", + "hashbrown 0.15.0", + "num-traits", "once_cell", "polars-arrow", "polars-compute", @@ -3140,6 +2888,7 @@ dependencies = [ "polars-json", "polars-ops", "polars-plan", + "polars-row", "polars-time", "polars-utils", "rayon", @@ -3169,7 +2918,7 @@ dependencies = [ "fs4", "futures", "glob", - "hashbrown", + "hashbrown 0.15.0", "home", "itoa", "memchr", @@ -3186,6 +2935,7 @@ dependencies = [ "polars-schema", "polars-time", "polars-utils", + "pyo3", "rayon", "regex", "reqwest", @@ -3209,7 +2959,7 @@ dependencies = [ "chrono", "chrono-tz", "fallible-streaming-iterator", - "hashbrown", + "hashbrown 0.15.0", "indexmap", "itoa", "num-traits", @@ -3282,7 +3032,7 @@ dependencies = [ "chrono", "chrono-tz", "either", - "hashbrown", + "hashbrown 0.15.0", "hex", "indexmap", "jsonpath_lib_polars_vendor", @@ -3299,8 +3049,10 @@ dependencies = [ "rand_distr", "rayon", "regex", + "regex-syntax 0.8.5", "serde", "serde_json", + "strum_macros", "unicode-reverse", "version_check", ] @@ -3318,14 +3070,14 @@ dependencies = [ "fallible-streaming-iterator", "flate2", "futures", - "hashbrown", + "hashbrown 0.15.0", "lz4", "lz4_flex", "num-traits", - "parquet-format-safe", "polars-arrow", "polars-compute", "polars-error", + "polars-parquet-format", "polars-utils", "rand", "serde", @@ -3336,6 +3088,15 @@ dependencies = [ "zstd", ] +[[package]] +name = "polars-parquet-format" +version = "2.10.0" +source = "git+https://github.com/pola-rs/parquet-format#b96e00d2b054739ee02da06987bcd7f44b82a4ef" +dependencies = [ + "async-trait", + "futures", +] + [[package]] name = "polars-pipe" version = "0.43.1" @@ -3344,7 +3105,7 @@ dependencies = [ "crossbeam-queue", "enum_dispatch", "futures", - "hashbrown", + "hashbrown 0.15.0", "num-traits", "polars-arrow", "polars-compute", @@ -3374,9 +3135,10 @@ dependencies = [ "ciborium", "either", "futures", - "hashbrown", + "hashbrown 0.15.0", "libloading", "memmap2", + "num-traits", "once_cell", "percent-encoding", "polars-arrow", @@ -3417,8 +3179,10 @@ dependencies = [ "polars", "polars-core", "polars-error", + "polars-expr", "polars-io", "polars-lazy", + "polars-mem-engine", "polars-ops", "polars-parquet", "polars-plan", @@ -3517,6 +3281,7 @@ dependencies = [ "polars-utils", "regex", "serde", + "strum_macros", ] [[package]] @@ -3527,13 +3292,14 @@ dependencies = [ "bytemuck", "bytes", "compact_str", - "hashbrown", + "hashbrown 0.15.0", "indexmap", "libc", "memmap2", "num-traits", "once_cell", "polars-error", + "pyo3", "rand", "raw-cpuid", "rayon", @@ -3545,9 +3311,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -3585,7 +3351,7 @@ dependencies = [ "rand", "rand_chacha", "rand_xorshift", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", "unarray", ] @@ -3614,18 +3380,17 @@ dependencies = [ [[package]] name = "psm" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" dependencies = [ "cc", ] [[package]] name = "py-polars" -version = "1.7.1" +version = "1.12.0" dependencies = [ - "built", "jemallocator", "libc", "mimalloc", @@ -3683,7 +3448,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -3696,20 +3461,20 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "quad-rand" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658fa1faf7a4cc5f057c9ee5ef560f717ad9d8dc66d975267f709624d6e1ab88" +checksum = "b76f1009795ca44bb5aaae8fd3f18953e209259c33d9b059b1f53d58ab7511db" [[package]] name = "quick-xml" -version = "0.36.1" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" dependencies = [ "memchr", "serde", @@ -3728,16 +3493,16 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash 2.0.0", - "rustls 0.23.12", + "rustls 0.23.13", "socket2", "thiserror", "tokio", @@ -3754,7 +3519,7 @@ dependencies = [ "rand", "ring", "rustc-hash 2.0.0", - "rustls 0.23.12", + "rustls 0.23.13", "slab", "thiserror", "tinyvec", @@ -3763,15 +3528,15 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" dependencies = [ "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3844,9 +3609,9 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.1.0" +version = "11.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d" +checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" dependencies = [ "bitflags", ] @@ -3894,14 +3659,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" dependencies = [ "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags", ] @@ -3923,30 +3688,30 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", "regex-automata", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -3963,15 +3728,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ "base64 0.22.1", "bytes", @@ -3983,7 +3748,7 @@ dependencies = [ "http-body 1.0.1", "http-body-util", "hyper 1.4.1", - "hyper-rustls 0.27.2", + "hyper-rustls 0.27.3", "hyper-util", "ipnet", "js-sys", @@ -3993,9 +3758,9 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.12", - "rustls-native-certs 0.7.2", - "rustls-pemfile 2.1.3", + "rustls 0.23.13", + "rustls-native-certs 0.8.0", + "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", @@ -4065,18 +3830,18 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags", "errno", @@ -4099,14 +3864,14 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.102.6", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] @@ -4125,12 +3890,12 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04182dffc9091a404e0fc069ea5cd60e5b866c3adf881eff99a32d048242dffa" +checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", "security-framework", @@ -4147,19 +3912,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustls-webpki" @@ -4173,9 +3937,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -4251,11 +4015,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4303,9 +4067,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -4316,15 +4080,12 @@ name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] [[package]] name = "serde" -version = "1.0.209" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -4340,20 +4101,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.127" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "indexmap", "itoa", @@ -4362,15 +4123,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_spanned" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" -dependencies = [ - "serde", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -4432,14 +4184,13 @@ dependencies = [ [[package]] name = "simd-json" -version = "0.13.10" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "570c430b3d902ea083097e853263ae782dfe40857d93db019a12356c8e8143fa" +checksum = "05f0b376aada35f30a0012f5790e50aed62f91804a0682669aefdbe81c7fcb91" dependencies = [ "ahash", "getrandom", "halfbrown", - "lexical-core", "once_cell", "ref-cast", "serde", @@ -4450,9 +4201,9 @@ dependencies = [ [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" @@ -4549,15 +4300,15 @@ dependencies = [ [[package]] name = "stacker" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a5daa25ea337c85ed954c0496e3bdd2c7308cc3b24cf7b50d04876654c579f" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" dependencies = [ "cc", "cfg-if", "libc", "psm", - "windows-sys 0.36.1", + "windows-sys 0.59.0", ] [[package]] @@ -4603,7 +4354,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -4625,9 +4376,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.76" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -4645,9 +4396,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.31.3" +version = "0.31.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b92e0bdf838cbc1c4c9ba14f9c97a7ec6cdcd1ae66b10e1e42775a25553f45d" +checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" dependencies = [ "core-foundation-sys", "libc", @@ -4670,9 +4421,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -4683,22 +4434,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -4731,15 +4482,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - [[package]] name = "tinytemplate" version = "1.2.1" @@ -4767,9 +4509,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.3" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", @@ -4790,7 +4532,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -4809,16 +4551,16 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.12", + "rustls 0.23.13", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -4828,61 +4570,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - [[package]] name = "tower-service" version = "0.3.3" @@ -4908,7 +4595,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -4953,7 +4640,7 @@ checksum = "f9534daa9fd3ed0bd911d462a37f172228077e7abf18c18a5f67199d959205f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -4970,21 +4657,21 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] @@ -5000,15 +4687,15 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unindent" @@ -5051,9 +4738,9 @@ dependencies = [ [[package]] name = "value-trait" -version = "0.8.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad8db98c1e677797df21ba03fca7d3bf9bec3ca38db930954e4fe6e1ea27eb4" +checksum = "bcaa56177466248ba59d693a048c0959ddb67f1151b963f904306312548cf392" dependencies = [ "float-cmp", "halfbrown", @@ -5061,12 +4748,6 @@ dependencies = [ "ryu", ] -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - [[package]] name = "version_check" version = "0.9.5" @@ -5126,7 +4807,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", "wasm-bindgen-shared", ] @@ -5160,7 +4841,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5173,9 +4854,9 @@ checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" dependencies = [ "futures-util", "js-sys", @@ -5264,7 +4945,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -5275,7 +4956,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] @@ -5317,19 +4998,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" -dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -5391,12 +5059,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -5409,12 +5071,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_i686_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -5433,12 +5089,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -5451,12 +5101,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -5481,12 +5125,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -5499,15 +5137,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - [[package]] name = "x11rb" version = "0.13.1" @@ -5555,7 +5184,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.79", ] [[package]] diff --git a/pkgs/development/python-modules/polars/default.nix b/pkgs/development/python-modules/polars/default.nix index a1eeda11a3af..e552bd6941cc 100644 --- a/pkgs/development/python-modules/polars/default.nix +++ b/pkgs/development/python-modules/polars/default.nix @@ -2,98 +2,304 @@ lib, stdenv, buildPythonPackage, - rustPlatform, + cargo, cmake, - libiconv, + darwin, fetchFromGitHub, + pkg-config, + pkgs, # zstd hidden by python3Packages.zstd + pytestCheckHook, + pytest-codspeed ? null, # Not in Nixpkgs + pytest-cov, + pytest-xdist, + pytest-benchmark, + rustc, + rustPlatform, + runCommand, + + mimalloc, jemalloc, rust-jemalloc-sys, - darwin, + # Another alternative is to try `mimalloc` + polarsMemoryAllocator ? mimalloc, # polarsJemalloc, + polarsJemalloc ? + let + jemalloc' = rust-jemalloc-sys.override { + jemalloc = jemalloc.override { + # "libjemalloc.so.2: cannot allocate memory in static TLS block" + + # https://github.com/pola-rs/polars/issues/5401#issuecomment-1300998316 + disableInitExecTls = true; + }; + }; + in + assert builtins.elem "--disable-initial-exec-tls" jemalloc'.configureFlags; + jemalloc', + + polars, + python, }: let - rust-jemalloc-sys' = rust-jemalloc-sys.override { - jemalloc = jemalloc.override { disableInitExecTls = true; }; - }; + version = "1.12.0"; + + # Hide symbols to prevent accidental use + rust-jemalloc-sys = throw "polars: use polarsMemoryAllocator over rust-jemalloc-sys"; + jemalloc = throw "polars: use polarsMemoryAllocator over jemalloc"; in -buildPythonPackage rec { +buildPythonPackage { pname = "polars"; - version = "1.7.1"; - pyproject = true; + inherit version; src = fetchFromGitHub { owner = "pola-rs"; repo = "polars"; - rev = "refs/tags/py-${version}"; - hash = "sha256-vbligrFrCd7BiPV8n1iRIlurPNirJKOiD4/P5qEpirg="; + rev = "py-${version}"; + hash = "sha256-q//vt8FvVKY9N/BOIoOwxaSB/F/tNX1Zl/9jd0AzSH4="; }; - # Cargo.lock file is sometimes behind actual release which throws an error, - # thus the `sed` command - # Make sure to check that the right substitutions are made when updating the package - preBuild = '' - #sed -i 's/version = "0.18.0"/version = "${version}"/g' Cargo.lock + # Do not type-check assertions because some of them use unstable features (`is_none_or`) + postPatch = '' + while IFS= read -r -d "" path ; do + sed -i 's \(\s*\)debug_assert! \1#[cfg(debug_assertions)]\n\1debug_assert! ' "$path" + done < <( find -iname '*.rs' -print0 ) ''; cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; outputHashes = { "numpy-0.21.0" = "sha256-u0Z+6L8pXSPaA3cE1sUpY6sCoaU1clXUcj/avnNzmsw="; + "polars-parquet-format-2.10.0" = "sha256-iB3KZ72JSp7tJCLn9moukpDEGf9MUos04rIQ9rDGWfI="; }; }; - buildAndTestSubdir = "py-polars"; + requiredSystemFeatures = [ "big-parallel" ]; - # Revisit this whenever package or Rust is upgraded - RUSTC_BOOTSTRAP = 1; + build-system = [ rustPlatform.maturinBuildHook ]; - # trick taken from the polars repo since there seems to be a problem - # with simd enabled with our stable rust (instead of nightly). - maturinBuildFlags = [ - "--no-default-features" - "--all-features" + nativeBuildInputs = [ + cargo + pkg-config + cmake # libz-ng-sys + rustPlatform.cargoSetupHook + rustPlatform.cargoBuildHook + rustPlatform.cargoInstallHook + rustc ]; + buildInputs = + [ + polarsMemoryAllocator + (pkgs.__splicedPackages.zstd or pkgs.zstd) + ] + ++ lib.optionals stdenv.isDarwin [ + darwin.apple_sdk.frameworks.AppKit + darwin.apple_sdk.frameworks.IOKit + darwin.apple_sdk.frameworks.Security + ]; + + env = { + ZSTD_SYS_USE_PKG_CONFIG = true; + + # https://github.com/NixOS/nixpkgs/blob/5c38beb516f8da3a823d94b746dd3bf3c6b9bbd7/doc/languages-frameworks/rust.section.md#using-community-maintained-rust-toolchains-using-community-maintained-rust-toolchains + # https://discourse.nixos.org/t/nixpkgs-rustplatform-and-nightly/22870 + RUSTC_BOOTSTRAP = true; + + # Several `debug_assert!` statements use the unstable `Option::is_none_or` method + RUSTFLAGS = lib.concatStringsSep " " ( + [ + "-Cdebug_assertions=n" + ] + ++ lib.optionals (polarsMemoryAllocator.pname == "mimalloc") [ + "--cfg use_mimalloc" + ] + ); + RUST_BACKTRACE = true; + }; + dontUseCmakeConfigure = true; - nativeBuildInputs = - [ - # needed for libz-ng-sys - # TODO: use pkgs.zlib-ng - cmake - ] - ++ (with rustPlatform; [ - cargoSetupHook - maturinBuildHook - ]); + maturinBuildFlags = [ + "-m" + "py-polars/Cargo.toml" + ]; - buildInputs = - [ rust-jemalloc-sys' ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - libiconv - darwin.apple_sdk.frameworks.AppKit - darwin.apple_sdk.frameworks.Security - darwin.apple_sdk.frameworks.SystemConfiguration + postInstall = '' + # Move polars.abi3.so -> polars.so + local polarsSo="" + local soName="" + while IFS= read -r -d "" p ; do + polarsSo=$p + soName="$(basename "$polarsSo")" + [[ "$soName" == polars.so ]] && break + done < <( find "$out" -iname "polars*.so" -print0 ) + [[ -z "''${polarsSo:-}" ]] && echo "polars.so not found" >&2 && exit 1 + if [[ "$soName" != polars.so ]] ; then + mv "$polarsSo" "$(dirname "$polarsSo")/polars.so" + fi + ''; + + pythonImportsCheck = [ + "polars" + ]; + + passthru.tests.dynloading-1 = + runCommand "polars-dynloading-1" + { + nativeBuildInputs = [ + (python.withPackages (ps: [ + ps.pyarrow + polars + ])) + ]; + } + '' + ((LD_DEBUG=libs python) |& tee $out | tail) << \EOF + import pyarrow + import polars + EOF + touch $out + ''; + passthru.tests.dynloading-2 = + runCommand "polars-dynloading-2" + { + nativeBuildInputs = [ + (python.withPackages (ps: [ + ps.pyarrow + polars + ])) + ]; + failureHook = '' + sed "s/^/ /" $out >&2 + ''; + } + '' + ((LD_DEBUG=libs python) |& tee $out | tail) << \EOF + import polars + import pyarrow + EOF + ''; + passthru.tests.pytest = stdenv.mkDerivation { + pname = "${polars.pname}-pytest"; + + inherit (polars) version src; + + requiredSystemFeatures = [ "big-parallel" ]; + + sourceRoot = "source/py-polars"; + postPatch = '' + for f in * ; do + [[ "$f" == "tests" ]] || \ + [[ "$f" == "pyproject.toml" ]] || \ + rm -rf "$f" + done + for pat in "__pycache__" "*.pyc" ; do + find -iname "$pat" -exec rm "{}" ";" + done + ''; + dontConfigure = true; + dontBuild = true; + + doCheck = true; + checkPhase = "pytestCheckPhase"; + nativeBuildInputs = [ + (python.withPackages (ps: [ + polars + ps.aiosqlite + ps.altair + ps.boto3 + ps.deltalake + ps.flask + ps.flask-cors + ps.fsspec + ps.gevent + ps.hypothesis + ps.jax + ps.jaxlib + (ps.kuzu or null) + ps.moto + ps.nest-asyncio + ps.numpy + ps.openpyxl + ps.pandas + ps.pyarrow + ps.pydantic + (ps.pyiceberg or null) + ps.sqlalchemy + ps.torch + ps.xlsx2csv + ps.xlsxwriter + ps.zstandard + ps.cloudpickle + ])) + ]; + nativeCheckInputs = [ + pytestCheckHook + pytest-codspeed + pytest-cov + pytest-xdist + pytest-benchmark ]; - # nativeCheckInputs = [ - # pytestCheckHook - # fixtures - # graphviz - # matplotlib - # networkx - # numpy - # pydot - # ]; + pytestFlagsArray = [ + "-n auto" + "--dist loadgroup" + ''-m "slow or not slow"'' + ]; + disabledTests = [ + "test_read_kuzu_graph_database" # kuzu + "test_read_database_cx_credentials" # connectorx - pythonImportsCheck = [ "polars" ]; + # adbc_driver_.* + "test_write_database_append_replace" + "test_write_database_create" + "test_write_database_create_quoted_tablename" + "test_write_database_adbc_temporary_table" + "test_write_database_create" + "test_write_database_append_replace" + "test_write_database_errors" + "test_write_database_errors" + "test_write_database_create_quoted_tablename" + + # Internet access: + "test_read_web_file" + + # Untriaged + "test_pickle_lazyframe_nested_function_udf" + "test_serde_udf" + "test_hash_struct" + ]; + disabledTestPaths = [ + "tests/benchmark" + "tests/docs" + + "tests/unit/io/test_iceberg.py" # Package pyiceberg + "tests/unit/io/test_spreadsheet.py" # Package fastexcel + + # Wrong altair version + "tests/unit/operations/namespaces/test_plot.py" + + # adbc + "tests/unit/io/database/test_read.py" + + # Untriaged + "tests/unit/cloud/test_prepare_cloud_plan.py" + "tests/unit/io/cloud/test_cloud.py" + ]; + + installPhase = "touch $out"; + }; meta = { - description = "Fast multi-threaded DataFrame library"; + description = "Dataframes powered by a multithreaded, vectorized query engine, written in Rust"; homepage = "https://github.com/pola-rs/polars"; - changelog = "https://github.com/pola-rs/polars/releases/tag/py-${version}"; - license = lib.licenses.asl20; - maintainers = with lib.maintainers; [ happysalada ]; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ + happysalada + SomeoneSerge + ]; + mainProgram = "polars"; + platforms = lib.platforms.all; }; } diff --git a/pkgs/development/python-modules/pyftgl/default.nix b/pkgs/development/python-modules/pyftgl/default.nix index 4dd6aa9b6dd6..93bfb7a8ec36 100644 --- a/pkgs/development/python-modules/pyftgl/default.nix +++ b/pkgs/development/python-modules/pyftgl/default.nix @@ -3,6 +3,7 @@ buildPythonPackage, fetchFromGitHub, stdenv, + setuptools, boost, freetype, ftgl, @@ -12,29 +13,30 @@ }: let - pythonVersion = with lib.versions; "${major python.version}${minor python.version}"; in - buildPythonPackage rec { pname = "pyftgl"; version = "0.4b"; - format = "setuptools"; + pyproject = true; src = fetchFromGitHub { owner = "umlaeute"; - repo = "${pname}-${version}"; - rev = version; - sha256 = "12zcjv4cwwjihiaf74kslrdmmk4bs47h7006gyqfwdfchfjdgg4r"; + repo = "pyftgl"; + rev = "refs/tags/${version}"; + sha256 = "sha256-mbzXpIPMNe6wfwaAAw/Ri8xaW6Z6kuNUhFFyzsiW7Is="; }; - postPatch = '' - sed -i "s,'boost_python','boost_python${pythonVersion}',g" setup.py - ''; + build-system = [ setuptools ]; - env = lib.optionalAttrs stdenv.hostPlatform.isDarwin { - NIX_CFLAGS_COMPILE = "-L${libGL}/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries"; - }; + postPatch = + '' + substituteInPlace setup.py \ + --replace-fail boost_python boost_python${pythonVersion} + '' + + lib.optionalString stdenv.hostPlatform.isDarwin '' + export NIX_CFLAGS_COMPILE+=" -L$SDKROOT/System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries" + ''; buildInputs = [ boost @@ -44,8 +46,8 @@ buildPythonPackage rec { libGL ]; - meta = with lib; { + meta = { description = "Python bindings for FTGL (FreeType for OpenGL)"; - license = licenses.gpl2Plus; + license = lib.licenses.gpl2Plus; }; } diff --git a/pkgs/development/python-modules/rio-tiler/default.nix b/pkgs/development/python-modules/rio-tiler/default.nix index 88e126d4d5cc..99c7f3d12df8 100644 --- a/pkgs/development/python-modules/rio-tiler/default.nix +++ b/pkgs/development/python-modules/rio-tiler/default.nix @@ -23,7 +23,7 @@ buildPythonPackage rec { pname = "rio-tiler"; - version = "6.7.0"; + version = "7.0.1"; pyproject = true; disabled = pythonOlder "3.8"; @@ -31,7 +31,7 @@ buildPythonPackage rec { owner = "cogeotiff"; repo = "rio-tiler"; rev = "refs/tags/${version}"; - hash = "sha256-i70Bh7RHPgLLaqBo9vHRrJylsNE3Ly3xJq9j12Ch58E="; + hash = "sha256-E8gKXPj1n9HZ+zvQPcG28+2Vuif4B6NBhtuS009x6rU="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/python-modules/stravalib/default.nix b/pkgs/development/python-modules/stravalib/default.nix index f35593ecd95b..bcf10fe99a2a 100644 --- a/pkgs/development/python-modules/stravalib/default.nix +++ b/pkgs/development/python-modules/stravalib/default.nix @@ -15,7 +15,7 @@ buildPythonPackage rec { pname = "stravalib"; - version = "2.0"; + version = "2.1"; pyproject = true; disabled = pythonOlder "3.10"; @@ -24,7 +24,7 @@ buildPythonPackage rec { owner = "stravalib"; repo = "stravalib"; rev = "refs/tags/v${version}"; - hash = "sha256-uF29fK+ZSSO688zKYYiSEygBUJZ6NBcvdgGgz3I1I6Q="; + hash = "sha256-VEVy9BAAoLsBCwMNFpsCjhacFbsgNswYoJ5tTcOQccw="; }; build-system = [ diff --git a/pkgs/development/python-modules/xml2rfc/default.nix b/pkgs/development/python-modules/xml2rfc/default.nix index 8f6dd390ad7a..1119a300b541 100644 --- a/pkgs/development/python-modules/xml2rfc/default.nix +++ b/pkgs/development/python-modules/xml2rfc/default.nix @@ -24,7 +24,7 @@ buildPythonPackage rec { pname = "xml2rfc"; - version = "3.23.2"; + version = "3.24.0"; pyproject = true; disabled = pythonOlder "3.8"; @@ -33,7 +33,7 @@ buildPythonPackage rec { owner = "ietf-tools"; repo = "xml2rfc"; rev = "refs/tags/v${version}"; - hash = "sha256-KL3kIntydUAOS7qGq6ZDrShEcyME1Qwf2VjM/9mw96Q="; + hash = "sha256-cymClLsXPeuWsRMbFJHO55ASzEbau++XvYoBsquDv+Y="; }; postPatch = '' diff --git a/pkgs/servers/sql/postgresql/ext/anonymizer.nix b/pkgs/servers/sql/postgresql/ext/anonymizer.nix index 587879432436..66de2544eae6 100644 --- a/pkgs/servers/sql/postgresql/ext/anonymizer.nix +++ b/pkgs/servers/sql/postgresql/ext/anonymizer.nix @@ -1,9 +1,9 @@ -{ lib, stdenv, pg-dump-anon, postgresql, runtimeShell, jitSupport, llvm, buildPostgresqlExtension }: +{ lib, stdenv, pg-dump-anon, postgresql, runtimeShell, jitSupport, llvm, buildPostgresqlExtension, nixosTests }: buildPostgresqlExtension (finalAttrs: { pname = "postgresql_anonymizer"; - inherit (pg-dump-anon) version src passthru; + inherit (pg-dump-anon) version src; nativeBuildInputs = [ postgresql ] ++ lib.optional jitSupport llvm; @@ -19,6 +19,8 @@ buildPostgresqlExtension (finalAttrs: { EOF ''; + passthru.tests = nixosTests.postgresql.anonymizer.passthru.override postgresql; + meta = lib.getAttrs [ "homepage" "maintainers" "license" ] pg-dump-anon.meta // { description = "Extension to mask or replace personally identifiable information (PII) or commercially sensitive data from a PostgreSQL database"; }; diff --git a/pkgs/servers/sql/postgresql/ext/apache_datasketches.nix b/pkgs/servers/sql/postgresql/ext/apache_datasketches.nix index 68284da76c2f..4c8d723354d2 100644 --- a/pkgs/servers/sql/postgresql/ext/apache_datasketches.nix +++ b/pkgs/servers/sql/postgresql/ext/apache_datasketches.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, postgresql, boost182, nixosTests, buildPostgresqlExtension }: +{ stdenv, lib, fetchFromGitHub, postgresql, boost182, postgresqlTestExtension, buildPostgresqlExtension }: let version = "1.7.0"; @@ -20,7 +20,7 @@ let }; in -buildPostgresqlExtension { +buildPostgresqlExtension (finalAttrs: { pname = "apache_datasketches"; inherit version; @@ -36,7 +36,13 @@ buildPostgresqlExtension { runHook postPatch ''; - passthru.tests.apache_datasketches = nixosTests.apache_datasketches; + passthru.tests.extension = postgresqlTestExtension { + inherit (finalAttrs) finalPackage; + sql = '' + CREATE EXTENSION datasketches; + SELECT hll_sketch_to_string(hll_sketch_build(1)); + ''; + }; meta = { description = "PostgreSQL extension providing approximate algorithms for distinct item counts, quantile estimation and frequent items detection"; @@ -50,4 +56,4 @@ buildPostgresqlExtension { license = lib.licenses.asl20; maintainers = with lib.maintainers; [ mmusnjak ]; }; -} +}) diff --git a/pkgs/servers/sql/postgresql/ext/pgjwt.nix b/pkgs/servers/sql/postgresql/ext/pgjwt.nix index c1582bda0002..b0a75a44fcfc 100644 --- a/pkgs/servers/sql/postgresql/ext/pgjwt.nix +++ b/pkgs/servers/sql/postgresql/ext/pgjwt.nix @@ -13,8 +13,8 @@ buildPostgresqlExtension (finalAttrs: { passthru.updateScript = unstableGitUpdater { }; - passthru.tests = { - inherit (nixosTests) pgjwt; + passthru.tests = lib.recurseIntoAttrs { + pgjwt = nixosTests.postgresql.pgjwt.passthru.override postgresql; extension = postgresqlTestExtension { inherit (finalAttrs) finalPackage; diff --git a/pkgs/servers/sql/postgresql/ext/pgvecto-rs/default.nix b/pkgs/servers/sql/postgresql/ext/pgvecto-rs/default.nix index 117319e606f0..f25afda0ca61 100644 --- a/pkgs/servers/sql/postgresql/ext/pgvecto-rs/default.nix +++ b/pkgs/servers/sql/postgresql/ext/pgvecto-rs/default.nix @@ -86,9 +86,7 @@ in passthru = { updateScript = nix-update-script { }; - tests = { - pgvecto-rs = nixosTests.pgvecto-rs; - }; + tests = nixosTests.postgresql.pgvecto-rs.passthru.override postgresql; }; meta = with lib; { diff --git a/pkgs/servers/sql/postgresql/ext/postgis.nix b/pkgs/servers/sql/postgresql/ext/postgis.nix index 569424b00d6a..68aefc1e605d 100644 --- a/pkgs/servers/sql/postgresql/ext/postgis.nix +++ b/pkgs/servers/sql/postgresql/ext/postgis.nix @@ -18,7 +18,7 @@ docbook5, cunit, pcre2, - nixosTests, + postgresqlTestExtension, jitSupport, llvm, buildPostgresqlExtension, @@ -27,7 +27,7 @@ let gdal = gdalMinimal; in -buildPostgresqlExtension rec { +buildPostgresqlExtension (finalAttrs: { pname = "postgis"; version = "3.5.0"; @@ -37,7 +37,7 @@ buildPostgresqlExtension rec { ]; src = fetchurl { - url = "https://download.osgeo.org/postgis/source/postgis-${version}.tar.gz"; + url = "https://download.osgeo.org/postgis/source/postgis-${finalAttrs.version}.tar.gz"; hash = "sha256-ymmKIswrKzRnrE4GO0OihBPzAE3dUFvczddMVqZH9RA="; }; @@ -105,19 +105,39 @@ buildPostgresqlExtension rec { rm $out/bin/postgres for prog in $out/bin/*; do # */ - ln -s $prog $prog-${version} + ln -s $prog $prog-${finalAttrs.version} done mkdir -p $doc/share/doc/postgis mv doc/* $doc/share/doc/postgis/ ''; - passthru.tests.postgis = nixosTests.postgis; + passthru.tests.extension = postgresqlTestExtension { + inherit (finalAttrs) finalPackage; + sql = + let + expectedVersion = "${lib.versions.major finalAttrs.version}.${lib.versions.minor finalAttrs.version} USE_GEOS=1 USE_PROJ=1 USE_STATS=1"; + in + '' + CREATE EXTENSION postgis; + CREATE EXTENSION postgis_raster; + CREATE EXTENSION postgis_topology; + select postgis_version(); + do $$ + begin + if postgis_version() <> '${expectedVersion}' then + raise '"%" does not match "${expectedVersion}"', postgis_version(); + end if; + end$$; + -- st_makepoint goes through c code + select st_makepoint(1, 1); + ''; + }; meta = with lib; { description = "Geographic Objects for PostgreSQL"; homepage = "https://postgis.net/"; - changelog = "https://git.osgeo.org/gitea/postgis/postgis/raw/tag/${version}/NEWS"; + changelog = "https://git.osgeo.org/gitea/postgis/postgis/raw/tag/${finalAttrs.version}/NEWS"; license = licenses.gpl2Plus; maintainers = with maintainers; @@ -128,4 +148,4 @@ buildPostgresqlExtension rec { ]; inherit (postgresql.meta) platforms; }; -} +}) diff --git a/pkgs/servers/sql/postgresql/ext/timescaledb.nix b/pkgs/servers/sql/postgresql/ext/timescaledb.nix index baa338d2d8c0..2ef5bb3ae988 100644 --- a/pkgs/servers/sql/postgresql/ext/timescaledb.nix +++ b/pkgs/servers/sql/postgresql/ext/timescaledb.nix @@ -32,7 +32,7 @@ buildPostgresqlExtension rec { done ''; - passthru.tests = { inherit (nixosTests) timescaledb; }; + passthru.tests = nixosTests.postgresql.timescaledb.passthru.override postgresql; meta = with lib; { description = "Scales PostgreSQL for time-series data via automatic partitioning across time and space"; diff --git a/pkgs/servers/sql/postgresql/ext/timescaledb_toolkit.nix b/pkgs/servers/sql/postgresql/ext/timescaledb_toolkit.nix index ab414a400d29..eec287ddcc10 100644 --- a/pkgs/servers/sql/postgresql/ext/timescaledb_toolkit.nix +++ b/pkgs/servers/sql/postgresql/ext/timescaledb_toolkit.nix @@ -25,9 +25,7 @@ passthru = { updateScript = nix-update-script { }; - tests = { - timescaledb_toolkit = nixosTests.timescaledb; - }; + tests = nixosTests.postgresql.timescaledb.passthru.override postgresql; }; # tests take really long diff --git a/pkgs/servers/sql/postgresql/ext/tsja.nix b/pkgs/servers/sql/postgresql/ext/tsja.nix index ed1aacca53d9..cb6a38951551 100644 --- a/pkgs/servers/sql/postgresql/ext/tsja.nix +++ b/pkgs/servers/sql/postgresql/ext/tsja.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { mv dbinit_libtsja.txt $out/share/postgresql/extension/libtsja_dbinit.sql ''; - passthru.tests.tsja = nixosTests.tsja; + passthru.tests = nixosTests.postgresql.tsja.passthru.override postgresql; meta = with lib; { description = "PostgreSQL extension implementing Japanese text search"; diff --git a/pkgs/servers/sql/postgresql/ext/wal2json.nix b/pkgs/servers/sql/postgresql/ext/wal2json.nix index 4df277e5e496..adc57f333fcf 100644 --- a/pkgs/servers/sql/postgresql/ext/wal2json.nix +++ b/pkgs/servers/sql/postgresql/ext/wal2json.nix @@ -1,10 +1,9 @@ { lib, - stdenv, - callPackage, fetchFromGitHub, postgresql, buildPostgresqlExtension, + nixosTests, }: buildPostgresqlExtension rec { @@ -20,12 +19,7 @@ buildPostgresqlExtension rec { makeFlags = [ "USE_PGXS=1" ]; - passthru.tests.wal2json = lib.recurseIntoAttrs ( - callPackage ../../../../../nixos/tests/postgresql-wal2json.nix { - inherit (stdenv) system; - inherit postgresql; - } - ); + passthru.tests = nixosTests.postgresql.wal2json.passthru.override postgresql; meta = with lib; { description = "PostgreSQL JSON output plugin for changeset extraction"; diff --git a/pkgs/servers/sql/postgresql/generic.nix b/pkgs/servers/sql/postgresql/generic.nix index 65ea537e3d24..2562105b2411 100644 --- a/pkgs/servers/sql/postgresql/generic.nix +++ b/pkgs/servers/sql/postgresql/generic.nix @@ -20,7 +20,7 @@ let , version, hash, muslPatches ? {} # for tests - , testers + , testers, nixosTests # JIT , jitSupport @@ -313,18 +313,12 @@ let }; tests = { - postgresql-wal-receiver = import ../../../../nixos/tests/postgresql-wal-receiver.nix { - inherit (stdenv) system; - pkgs = self; - package = this; - }; + postgresql = nixosTests.postgresql.postgresql.passthru.override finalAttrs.finalPackage; + postgresql-tls-client-cert = nixosTests.postgresql.postgresql-tls-client-cert.passthru.override finalAttrs.finalPackage; + postgresql-wal-receiver = nixosTests.postgresql.postgresql-wal-receiver.passthru.override finalAttrs.finalPackage; pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; } // lib.optionalAttrs jitSupport { - postgresql-jit = import ../../../../nixos/tests/postgresql-jit.nix { - inherit (stdenv) system; - pkgs = self; - package = this; - }; + postgresql-jit = nixosTests.postgresql.postgresql-jit.passthru.override finalAttrs.finalPackage; }; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f5f9015e889c..50b6b5b3b5f1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12223,7 +12223,8 @@ with pkgs; asciidoc = asciidoc-full; }; - inherit (import ../servers/sql/postgresql pkgs) + postgresqlVersions = import ../servers/sql/postgresql pkgs; + inherit (postgresqlVersions) postgresql_12 postgresql_13 postgresql_14 diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 6b709ce625f0..fa15b777e3a5 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -24077,12 +24077,12 @@ with self; { SysVirt = buildPerlModule rec { pname = "Sys-Virt"; - version = "10.2.0"; + version = "10.9.0"; src = fetchFromGitLab { owner = "libvirt"; repo = "libvirt-perl"; rev = "v${version}"; - hash = "sha256-xpgZeXk9QefqbBMsvcMh/Cg/XFGEiVi3FbU/jBbSIr0="; + hash = "sha256-g2HH9Ep5cAa4qXo9/MKJmxeive6oqHQEX9C8qY+u2g4="; }; nativeBuildInputs = [ pkgs.pkg-config ]; buildInputs = [ pkgs.libvirt CPANChanges TestPod TestPodCoverage XMLXPath ]; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index bf69d13c98f1..ade495ae4888 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -87,55 +87,101 @@ let lib-tests = import ../../lib/tests/release.nix { inherit pkgs; }; pkgs-lib-tests = import ../pkgs-lib/tests { inherit pkgs; }; - darwin-tested = if supportDarwin.x86_64 then pkgs.releaseTools.aggregate + darwin-tested = if supportDarwin.x86_64 || supportDarwin.aarch64 then pkgs.releaseTools.aggregate { name = "nixpkgs-darwin-${jobs.tarball.version}"; meta.description = "Release-critical builds for the Nixpkgs darwin channel"; - constituents = - [ jobs.tarball - jobs.release-checks - jobs.cabal2nix.x86_64-darwin - jobs.ghc.x86_64-darwin - jobs.git.x86_64-darwin - jobs.go.x86_64-darwin - jobs.mariadb.x86_64-darwin - jobs.nix.x86_64-darwin - jobs.nixpkgs-review.x86_64-darwin - jobs.nix-info.x86_64-darwin - jobs.nix-info-tested.x86_64-darwin - jobs.openssh.x86_64-darwin - jobs.openssl.x86_64-darwin - jobs.pandoc.x86_64-darwin - jobs.postgresql.x86_64-darwin - jobs.python3.x86_64-darwin - jobs.ruby.x86_64-darwin - jobs.rustc.x86_64-darwin - # blocking ofBorg CI 2020-02-28 - # jobs.stack.x86_64-darwin - jobs.stdenv.x86_64-darwin - jobs.vim.x86_64-darwin - jobs.cachix.x86_64-darwin - jobs.darwin.linux-builder.x86_64-darwin + constituents = [ + jobs.tarball + jobs.release-checks + ] + ++ optionals supportDarwin.x86_64 [ + jobs.cabal2nix.x86_64-darwin + jobs.ghc.x86_64-darwin + jobs.git.x86_64-darwin + jobs.go.x86_64-darwin + jobs.mariadb.x86_64-darwin + jobs.nix.x86_64-darwin + jobs.nixpkgs-review.x86_64-darwin + jobs.nix-info.x86_64-darwin + jobs.nix-info-tested.x86_64-darwin + jobs.openssh.x86_64-darwin + jobs.openssl.x86_64-darwin + jobs.pandoc.x86_64-darwin + jobs.postgresql.x86_64-darwin + jobs.python3.x86_64-darwin + jobs.ruby.x86_64-darwin + jobs.rustc.x86_64-darwin + # blocking ofBorg CI 2020-02-28 + # jobs.stack.x86_64-darwin + jobs.stdenv.x86_64-darwin + jobs.vim.x86_64-darwin + jobs.cachix.x86_64-darwin + jobs.darwin.linux-builder.x86_64-darwin - # UI apps - # jobs.firefox-unwrapped.x86_64-darwin - jobs.qt5.qtmultimedia.x86_64-darwin - jobs.inkscape.x86_64-darwin - jobs.gimp.x86_64-darwin - jobs.emacs.x86_64-darwin - jobs.wireshark.x86_64-darwin - jobs.transmission_3-gtk.x86_64-darwin - jobs.transmission_4-gtk.x86_64-darwin + # UI apps + # jobs.firefox-unwrapped.x86_64-darwin + jobs.qt5.qtmultimedia.x86_64-darwin + jobs.inkscape.x86_64-darwin + jobs.gimp.x86_64-darwin + jobs.emacs.x86_64-darwin + jobs.wireshark.x86_64-darwin + jobs.transmission_3-gtk.x86_64-darwin + jobs.transmission_4-gtk.x86_64-darwin - # Tests - /* - jobs.tests.cc-wrapper.default.x86_64-darwin - jobs.tests.cc-wrapper.llvmPackages.clang.x86_64-darwin - jobs.tests.cc-wrapper.llvmPackages.libcxx.x86_64-darwin - jobs.tests.stdenv-inputs.x86_64-darwin - jobs.tests.macOSSierraShared.x86_64-darwin - jobs.tests.stdenv.hooks.patch-shebangs.x86_64-darwin - */ - ]; + # Tests + /* + jobs.tests.cc-wrapper.default.x86_64-darwin + jobs.tests.cc-wrapper.llvmPackages.clang.x86_64-darwin + jobs.tests.cc-wrapper.llvmPackages.libcxx.x86_64-darwin + jobs.tests.stdenv-inputs.x86_64-darwin + jobs.tests.macOSSierraShared.x86_64-darwin + jobs.tests.stdenv.hooks.patch-shebangs.x86_64-darwin + */ + ] + ++ optionals supportDarwin.aarch64 [ + jobs.cabal2nix.aarch64-darwin + jobs.ghc.aarch64-darwin + jobs.git.aarch64-darwin + jobs.go.aarch64-darwin + jobs.mariadb.aarch64-darwin + jobs.nix.aarch64-darwin + jobs.nixpkgs-review.aarch64-darwin + jobs.nix-info.aarch64-darwin + jobs.nix-info-tested.aarch64-darwin + jobs.openssh.aarch64-darwin + jobs.openssl.aarch64-darwin + jobs.pandoc.aarch64-darwin + jobs.postgresql.aarch64-darwin + jobs.python3.aarch64-darwin + jobs.ruby.aarch64-darwin + jobs.rustc.aarch64-darwin + # blocking ofBorg CI 2020-02-28 + # jobs.stack.aarch64-darwin + jobs.stdenv.aarch64-darwin + jobs.vim.aarch64-darwin + jobs.cachix.aarch64-darwin + jobs.darwin.linux-builder.aarch64-darwin + + # UI apps + # jobs.firefox-unwrapped.aarch64-darwin + jobs.qt5.qtmultimedia.aarch64-darwin + jobs.inkscape.aarch64-darwin + jobs.gimp.aarch64-darwin + jobs.emacs.aarch64-darwin + jobs.wireshark.aarch64-darwin + jobs.transmission_3-gtk.aarch64-darwin + jobs.transmission_4-gtk.aarch64-darwin + + # Tests + /* + jobs.tests.cc-wrapper.default.aarch64-darwin + jobs.tests.cc-wrapper.llvmPackages.clang.aarch64-darwin + jobs.tests.cc-wrapper.llvmPackages.libcxx.aarch64-darwin + jobs.tests.stdenv-inputs.aarch64-darwin + jobs.tests.macOSSierraShared.aarch64-darwin + jobs.tests.stdenv.hooks.patch-shebangs.aarch64-darwin + */ + ]; } else null; unstable = pkgs.releaseTools.aggregate