4 Commits

Author SHA1 Message Date
Martin Weinelt
7123dd8981 flake.nix: update to nixos-25.11
And squashes eval warnings from accessing pkgs.hostPlatform.
2025-12-05 15:46:05 -05:00
Martin Weinelt
39b2c7c0da package.nix: update postgresql to 17
NixOS 25.11 does not ship with PostgreSQL 13 any more.
2025-12-05 15:46:05 -05:00
John Ericson
20a0857660 Revert "Deduplicate protocol code more with ServeProto::BasicClientConnection"
This reverts commit 58846b0a1c.
2025-12-05 15:46:05 -05:00
Joshua Leivenzon
23c6a292be GithubRefs: Allow arbitrary ref types
GitHub's reference list API does not actually restrict the specified type, so don't artificially restrict it.

The API does not actually make a distinction between the "type" and "prefix" at all, but this is maintained for backwards compatibility. The two are simply concatenated.
2025-12-05 15:46:05 -05:00
6 changed files with 23 additions and 26 deletions

8
flake.lock generated
View File

@@ -36,16 +36,16 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1759652726, "lastModified": 1764020296,
"narHash": "sha256-2VjnimOYDRb3DZHyQ2WH2KCouFqYm9h0Rr007Al/WSA=", "narHash": "sha256-6zddwDs2n+n01l+1TG6PlyokDdXzu/oBmEejcH5L5+A=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "06b2985f0cc9eb4318bf607168f4b15af1e5e81d", "rev": "a320ce8e6e2cc6b4397eef214d202a50a4583829",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-25.05-small", "ref": "nixos-25.11-small",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }

View File

@@ -1,7 +1,7 @@
{ {
description = "A Nix-based continuous build system"; description = "A Nix-based continuous build system";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05-small"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11-small";
inputs.nix = { inputs.nix = {
url = "github:NixOS/nix/2.32-maintenance"; url = "github:NixOS/nix/2.32-maintenance";
@@ -59,7 +59,7 @@
manual = forEachSystem (system: let manual = forEachSystem (system: let
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
hydra = self.packages.${pkgs.hostPlatform.system}.hydra; hydra = self.packages.${pkgs.stdenv.hostPlatform.system}.hydra;
in in
pkgs.runCommand "hydra-manual-${hydra.version}" { } pkgs.runCommand "hydra-manual-${hydra.version}" { }
'' ''

View File

@@ -4,7 +4,7 @@
hydra = { pkgs, lib,... }: { hydra = { pkgs, lib,... }: {
_file = ./default.nix; _file = ./default.nix;
imports = [ ./hydra.nix ]; imports = [ ./hydra.nix ];
services.hydra-dev.package = lib.mkDefault self.packages.${pkgs.hostPlatform.system}.hydra; services.hydra-dev.package = lib.mkDefault self.packages.${pkgs.stdenv.hostPlatform.system}.hydra;
}; };
hydraTest = { pkgs, ... }: { hydraTest = { pkgs, ... }: {

View File

@@ -31,7 +31,7 @@
, perl , perl
, pixz , pixz
, boost , boost
, postgresql_13 , postgresql_17
, nlohmann_json , nlohmann_json
, prometheus-cpp , prometheus-cpp
@@ -192,7 +192,7 @@ stdenv.mkDerivation (finalAttrs: {
subversion subversion
breezy breezy
openldap openldap
postgresql_13 postgresql_17
pixz pixz
nix-eval-jobs nix-eval-jobs
]; ];

View File

@@ -104,9 +104,9 @@ static void copyClosureTo(
std::unique_lock<std::timed_mutex> sendLock(conn.machine->state->sendLock, std::unique_lock<std::timed_mutex> sendLock(conn.machine->state->sendLock,
std::chrono::seconds(600)); std::chrono::seconds(600));
conn.importPaths(destStore, [&](Sink & sink) { conn.to << ServeProto::Command::ImportPaths;
exportPaths(destStore, missing, sink); exportPaths(destStore, missing, conn.to);
}); conn.to.flush();
if (readInt(conn.from) != 1) if (readInt(conn.from) != 1)
throw Error("remote machine failed to import closure"); throw Error("remote machine failed to import closure");
@@ -301,10 +301,11 @@ static void copyPathFromRemote(
lambda function only gets executed if someone tries to read lambda function only gets executed if someone tries to read
from source2, we will send the command from here rather from source2, we will send the command from here rather
than outside the lambda. */ than outside the lambda. */
conn.narFromPath(localStore, info.path, [&](Source & source) { conn.to << ServeProto::Command::DumpStorePath << localStore.printStorePath(info.path);
TeeSource tee(source, sink); conn.to.flush();
extractNarData(tee, localStore.printStorePath(info.path), narMembers);
}); TeeSource tee(conn.from, sink);
extractNarData(tee, localStore.printStorePath(info.path), narMembers);
}); });
destStore.addToStore(info, *source2, NoRepair, NoCheckSigs); destStore.addToStore(info, *source2, NoRepair, NoCheckSigs);

View File

@@ -18,9 +18,8 @@ tags) from GitHub following a certain naming scheme
=head1 DESCRIPTION =head1 DESCRIPTION
This plugin reads the list of branches or tags using GitHub's REST API. The name This plugin reads the list of branches or tags using GitHub's REST API. This
of the reference must follow a particular prefix. This list is stored in the list is stored in the nix-store and used as an input to declarative jobsets.
nix-store and used as an input to declarative jobsets.
=head1 CONFIGURATION =head1 CONFIGURATION
@@ -34,7 +33,7 @@ The declarative project C<spec.json> file must contains an input such as
"pulls": { "pulls": {
"type": "github_refs", "type": "github_refs",
"value": "[owner] [repo] heads|tags - [prefix]", "value": "[owner] [repo] [type] - [prefix]",
"emailresponsible": false "emailresponsible": false
} }
@@ -42,12 +41,11 @@ In the above snippet, C<[owner]> is the repository owner and C<[repo]> is the
repository name. Also note a literal C<->, which is placed there for the future repository name. Also note a literal C<->, which is placed there for the future
use. use.
C<heads|tags> denotes that one of these two is allowed, that is, the third C<[type]> is the type of ref to list. Typical values are "heads", "tags", and
position should hold either the C<heads> or the C<tags> keyword. In case of the former, the plugin "pull". "." will include all types.
will fetch all branches, while in case of the latter, it will fetch the tags.
C<prefix> denotes the prefix the reference name must start with, in order to be C<prefix> denotes the prefix the reference name must start with, in order to be
included. included. "." will include all references.
For example, C<"value": "nixos hydra heads - release/"> refers to For example, C<"value": "nixos hydra heads - release/"> refers to
L<https://github.com/nixos/hydra> repository, and will fetch all branches that L<https://github.com/nixos/hydra> repository, and will fetch all branches that
@@ -102,8 +100,6 @@ sub fetchInput {
return undef if $input_type ne "github_refs"; return undef if $input_type ne "github_refs";
my ($owner, $repo, $type, $fut, $prefix) = split ' ', $value; my ($owner, $repo, $type, $fut, $prefix) = split ' ', $value;
die "type field is neither 'heads' nor 'tags', but '$type'"
unless $type eq 'heads' or $type eq 'tags';
my $auth = $self->{config}->{github_authorization}->{$owner}; my $auth = $self->{config}->{github_authorization}->{$owner};
my $githubEndpoint = $self->{config}->{github_endpoint} // "https://api.github.com"; my $githubEndpoint = $self->{config}->{github_endpoint} // "https://api.github.com";