Unverified Commit fa478f49 authored by Aleksana's avatar Aleksana Committed by GitHub
Browse files

duplicati: add missing dependency (ngclient) (#475704)

parents 28cb6dc0 0033813c
Loading
Loading
Loading
Loading
+51 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  buildNpmPackage,
  buildDotnetModule,
  fetchFromGitHub,
  autoPatchelfHook,
  dotnetCorePackages,
  bun,
  icu,
  openssl,
  krb5,
}:

let
  # for update.sh easy to handle
  ngclientVersion = "0.0.163";
  ngclientRev = "2546891ad116cb0a7a8df1c2bcf8a11fc17d58a4";
  ngclientHash = "sha256-MQOJHr3JBceO7qZRQvCcR4NNxpc77oRRjBQkmMv9RUA=";

  # from Duplicati/Server/webroot/ngclient/package.json
  ngclient = buildNpmPackage {
    pname = "ngclient";
    version = ngclientVersion;

    src = fetchFromGitHub {
      owner = "duplicati";
      repo = "ngclient";
      rev = ngclientRev;
      hash = ngclientHash;
    };

    npmDepsHash = "sha256-HYKzf7JaoOYvYlVZgMZ0jvYHf96be6abTZNtefgy59Y=";

    nativeBuildInputs = [ bun ];

    npmBuildScript = "build:prod";

    env = {
      NG_CLI_ANALYTICS = "false";
      CI = "true";
    };

    installPhase = ''
      runHook preInstall

      mkdir -p $out
      cp -r dist/ngclient/* $out/

      runHook postInstall
    '';

    postInstall = ''
      substituteInPlace $out/browser/index.html \
          --replace-fail '<base href="/">' '<base href="/ngclient/">'
    '';
  };
in
buildDotnetModule rec {
  pname = "duplicati";
  version = "2.2.0.1";
@@ -66,6 +112,11 @@ buildDotnetModule rec {
    "Duplicati.Service"
  ];

  postPatch = ''
    rm -rf Duplicati/Server/webroot/ngclient
    ln -s ${ngclient}/browser Duplicati/Server/webroot/ngclient
  '';

  postFixup = ''
    mv $out/bin/Duplicati.Agent $out/bin/duplicati-agent
    mv $out/bin/Duplicati.GUI.TrayIcon $out/bin/duplicati
+31 −0
Original line number Diff line number Diff line
@@ -9,6 +9,9 @@ REPO="duplicati"
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
TARGET="$SCRIPT_DIR/package.nix"

TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT

TAG=$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s "https://api.github.com/repos/$OWNNER/$REPO/tags" |
  jq -r '.[].name' |
  grep -E '^v[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+_stable_' |
@@ -22,7 +25,35 @@ DATE=$(echo "$TAG" | cut -d_ -f3)
HASH=$(nix-prefetch-github $OWNNER $REPO --rev "$TAG" |
  jq -r '.hash')

curl -sL "https://raw.githubusercontent.com/$OWNNER/$REPO/$TAG/Duplicati/Server/webroot/ngclient/package.json" \
  -o "$TMP/package.json"

NGCLIENT_VERSION=$(
  jq -r '.dependencies["@duplicati/ngclient"]' \
    "$TMP/package.json" |
    sed 's/^[^0-9]*//'
)

git clone --no-tags https://github.com/duplicati/ngclient.git "$TMP/ngclient"
NGCLIENT_REV=$(cd "$TMP/ngclient" && git log --format="%H %s" | grep "$NGCLIENT_VERSION" | awk '{print $1}')

NGCLIENT_HASH=$(
  nix-prefetch-github $OWNNER ngclient --rev "$NGCLIENT_REV" |
    jq -r .hash
)

echo "version=$VERSION"
echo "channel=$CHANNEL"
echo "date=$DATE"

echo "ngclientVersion=$NGCLIENT_VERSION"
echo "ngclientRev=$NGCLIENT_REV"
echo "ngclientHash=$NGCLIENT_HASH"

sed -i \
  -e "/ngclientVersion = /c\  ngclientVersion = \"$NGCLIENT_VERSION\";" \
  -e "/ngclientRev = /c\  ngclientRev = \"$NGCLIENT_REV\";" \
  -e "/ngclientHash = /c\  ngclientHash = \"$NGCLIENT_HASH\";" \
  -e "/version = \"/c\  version = \"$VERSION\";" \
  -e "/channel = \"/c\  channel = \"$CHANNEL\";" \
  -e "/buildDate = \"/c\  buildDate = \"$DATE\";" \