summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2023-02-20 13:04:40 +0100
committerJan Tojnar <jtojnar@gmail.com>2023-02-20 13:34:48 +0100
commit8a23727c3af8f5517a6be4d38265911aca0f8d16 (patch)
tree04a4127832b815bf2164f8f8b64140c381ae04c7
parentterraform-providers.vault: 3.12.0 → 3.13.0 (diff)
downloadnixpkgs-origin/gokrazy-rsync.tar.gz
gokrazy-rsync: init at unstable-2022-10-17origin/gokrazy-rsync
Script for updating vendorHash taken from grafana
-rw-r--r--pkgs/applications/networking/sync/gokrazy-rsync/default.nix77
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 79 insertions, 0 deletions
diff --git a/pkgs/applications/networking/sync/gokrazy-rsync/default.nix b/pkgs/applications/networking/sync/gokrazy-rsync/default.nix
new file mode 100644
index 000000000000..fe02fc4816b1
--- /dev/null
+++ b/pkgs/applications/networking/sync/gokrazy-rsync/default.nix
@@ -0,0 +1,77 @@
+{ stdenv
+, lib
+, buildGoModule
+, fetchFromGitHub
+, rsync
+, openssh
+, writeShellScript
+, unstableGitUpdater
+, _experimental-update-script-combinators
+}:
+
+buildGoModule rec {
+ pname = "gokrazy-rsync";
+ version = "unstable-2022-10-17";
+
+ src = fetchFromGitHub {
+ owner = "gokrazy";
+ repo = "rsync";
+ rev = "197246cdaa697ce55d511dd99491a2cc1465ef18";
+ sha256 = "sha256-u7Z9eXpq1pvi46nkfbaZzXXkKvR8DCOeqdop0p3HYgw=";
+ };
+
+ vendorHash = "sha256-NIiTVJfAU8L9wZB7TeiVzDjkI6d7SGFiLr36kWdHtlw=";
+
+ nativeCheckInputs = [
+ rsync
+ openssh
+ ];
+
+ postPatch = lib.optionalString stdenv.hostPlatform.isMinGW ''
+ # Depends on Unix functions
+ rm -r internal/rsynctest
+ '';
+
+ passthru = {
+ updateScript =
+ let
+ updateSource = unstableGitUpdater { };
+ updateVendor = writeShellScript "update-gokrazy-rsync-vendor-hash" ''
+ set -euo pipefail
+ FILE="$(nix-instantiate --eval -E 'with import ./. {}; (builtins.unsafeGetAttrPos "version" gokrazy-rsync).file' | tr -d '"')"
+ replaceHash() {
+ old="''${1?old hash missing}"
+ new="''${2?new hash missing}"
+ awk -v OLD="$old" -v NEW="$new" '{
+ if (i=index($0, OLD)) {
+ $0 = substr($0, 1, i-1) NEW substr($0, i+length(OLD));
+ }
+ print $0;
+ }' "$FILE" | sponge "$FILE"
+ }
+ extractVendorHash() {
+ original="''${1?original hash missing}"
+ result="$(nix-build -A gokrazy-rsync.go-modules 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)"
+ [ -z "$result" ] && { echo "$original"; } || { echo "$result"; }
+ }
+
+ goHash="$(nix-instantiate --eval -A gokrazy-rsync.vendorHash | tr -d '"')"
+ emptyHash="$(nix-instantiate --eval -A lib.fakeHash | tr -d '"')"
+ replaceHash "$goHash" "$emptyHash"
+ replaceHash "$emptyHash" "$(extractVendorHash "$goHash")"
+ '';
+ in
+ _experimental-update-script-combinators.sequence [
+ updateSource
+ updateVendor
+ ];
+ };
+
+ meta = {
+ description = "Back-end for Vikunja to-do list app";
+ homepage = "https://github.com/gokrazy/rsync";
+ license = lib.licenses.bsd3;
+ maintainers = with lib.maintainers; [ jtojnar ];
+ platforms = lib.platforms.all;
+ };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 6cb79d651bde..49f86fee2cd6 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -7685,6 +7685,8 @@ with pkgs;
gokart = callPackage ../development/tools/gokart { };
+ gokrazy-rsync = callPackage ../applications/networking/sync/gokrazy-rsync { };
+
gl2ps = callPackage ../development/libraries/gl2ps { };
glusterfs = callPackage ../tools/filesystems/glusterfs { };