From 2b739a2fabda14707608e7bd4609962031a27ce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sat, 13 Sep 2025 09:17:54 +0200 Subject: [PATCH] hydra-plugins: replace jq with perl's own canonical json output --- nixos-modules/hydra.nix | 2 +- src/lib/Hydra/Plugin/BitBucketPulls.pm | 8 +++----- src/lib/Hydra/Plugin/GithubRefs.pm | 8 +++----- src/lib/Hydra/Plugin/GitlabPulls.pm | 8 +++----- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/nixos-modules/hydra.nix b/nixos-modules/hydra.nix index 544da7eb..de7af1b8 100644 --- a/nixos-modules/hydra.nix +++ b/nixos-modules/hydra.nix @@ -364,7 +364,7 @@ in requires = [ "hydra-init.service" ]; restartTriggers = [ hydraConf ]; after = [ "hydra-init.service" "network.target" ]; - path = with pkgs; [ hostname-debian cfg.package jq ]; + path = with pkgs; [ hostname-debian cfg.package ]; environment = env // { HYDRA_DBI = "${env.HYDRA_DBI};application_name=hydra-evaluator"; }; diff --git a/src/lib/Hydra/Plugin/BitBucketPulls.pm b/src/lib/Hydra/Plugin/BitBucketPulls.pm index 8e7a087a..5bead2cf 100644 --- a/src/lib/Hydra/Plugin/BitBucketPulls.pm +++ b/src/lib/Hydra/Plugin/BitBucketPulls.pm @@ -10,7 +10,6 @@ use Hydra::Helper::CatalystUtils; use Hydra::Helper::Nix; use File::Temp; use POSIX qw(strftime); -use IPC::Run qw(run); sub supportedInputTypes { my ($self, $inputTypes) = @_; @@ -45,12 +44,11 @@ sub fetchInput { my $ua = LWP::UserAgent->new(); _iterate("https://api.bitbucket.com/2.0/repositories/$owner/$repo/pullrequests?state=OPEN", $auth, \%pulls, $ua); my $tempdir = File::Temp->newdir("bitbucket-pulls" . "XXXXX", TMPDIR => 1); - my $filename = "$tempdir/bitbucket-pulls.json"; + my $filename = "$tempdir/bitbucket-pulls-sorted.json"; open(my $fh, ">", $filename) or die "Cannot open $filename for writing: $!"; - print $fh encode_json \%pulls; + print $fh JSON::MaybeXS->new(canonical => 1, pretty => 1)->encode(\%pulls); close $fh; - run(["jq", "-S", "."], '<', $filename, '>', "$tempdir/bitbucket-pulls-sorted.json") or die "jq command failed: $?"; - my $storePath = addToStore("$tempdir/bitbucket-pulls-sorted.json"); + my $storePath = addToStore($filename); my $timestamp = time; return { storePath => $storePath, revision => strftime "%Y%m%d%H%M%S", gmtime($timestamp) }; } diff --git a/src/lib/Hydra/Plugin/GithubRefs.pm b/src/lib/Hydra/Plugin/GithubRefs.pm index 105c70ae..a03452c6 100644 --- a/src/lib/Hydra/Plugin/GithubRefs.pm +++ b/src/lib/Hydra/Plugin/GithubRefs.pm @@ -10,7 +10,6 @@ use Hydra::Helper::CatalystUtils; use Hydra::Helper::Nix; use File::Temp; use POSIX qw(strftime); -use IPC::Run qw(run); =head1 NAME @@ -112,12 +111,11 @@ sub fetchInput { my $ua = LWP::UserAgent->new(); _iterate("$githubEndpoint/repos/$owner/$repo/git/matching-refs/$type/$prefix?per_page=100", $auth, \%refs, $ua); my $tempdir = File::Temp->newdir("github-refs" . "XXXXX", TMPDIR => 1); - my $filename = "$tempdir/github-refs.json"; + my $filename = "$tempdir/github-refs-sorted.json"; open(my $fh, ">", $filename) or die "Cannot open $filename for writing: $!"; - print $fh encode_json \%refs; + print $fh JSON::MaybeXS->new(canonical => 1, pretty => 1)->encode(\%refs); close $fh; - run(["jq", "-S", "."], '<', $filename, '>', "$tempdir/github-refs-sorted.json") or die "jq command failed: $?"; - my $storePath = addToStore("$tempdir/github-refs-sorted.json"); + my $storePath = addToStore($filename); my $timestamp = time; return { storePath => $storePath, revision => strftime "%Y%m%d%H%M%S", gmtime($timestamp) }; } diff --git a/src/lib/Hydra/Plugin/GitlabPulls.pm b/src/lib/Hydra/Plugin/GitlabPulls.pm index b53d387e..9fc5809a 100644 --- a/src/lib/Hydra/Plugin/GitlabPulls.pm +++ b/src/lib/Hydra/Plugin/GitlabPulls.pm @@ -24,7 +24,6 @@ use Hydra::Helper::CatalystUtils; use Hydra::Helper::Nix; use File::Temp; use POSIX qw(strftime); -use IPC::Run qw(run); sub supportedInputTypes { my ($self, $inputTypes) = @_; @@ -83,12 +82,11 @@ sub fetchInput { _iterate($url, $baseUrl, \%pulls, $ua, $target_repo_url); my $tempdir = File::Temp->newdir("gitlab-pulls" . "XXXXX", TMPDIR => 1); - my $filename = "$tempdir/gitlab-pulls.json"; + my $filename = "$tempdir/gitlab-pulls-sorted.json"; open(my $fh, ">", $filename) or die "Cannot open $filename for writing: $!"; - print $fh encode_json \%pulls; + print $fh JSON::MaybeXS->new(canonical => 1, pretty => 1)->encode(\%pulls); close $fh; - run(["jq", "-S", "."], '<', $filename, '>', "$tempdir/gitlab-pulls-sorted.json") or die "jq command failed: $?"; - my $storePath = addToStore("$tempdir/gitlab-pulls-sorted.json"); + my $storePath = addToStore($filename); my $timestamp = time; return { storePath => $storePath, revision => strftime "%Y%m%d%H%M%S", gmtime($timestamp) }; }