Unverified Commit 3348d8a2 authored by Marcin Serwin's avatar Marcin Serwin Committed by GitHub
Browse files

signal-desktop(aarch64-linux): 7.36.0 -> 7.46.0-1 from COPR (#384032)

* signal-desktop(aarch64-linux): 7.36.0 -> 7.46.0-1 from COPR

* signal-desktop: modernize update script

* signal-desktop: remove needless string interpolation
parent 5a9d36cf
Loading
Loading
Loading
Loading
+17 −14
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
  autoPatchelfHook,
  noto-fonts-color-emoji,
  dpkg,
  libarchive,
  asar,
  rsync,
  python3,
@@ -53,7 +54,9 @@

{
  pname,
  dir,
  libdir,
  bindir,
  extractPkg,
  version,
  hash,
  url,
@@ -100,7 +103,7 @@ stdenv.mkDerivation rec {
    recursiveHash = true;
    downloadToTemp = true;
    nativeBuildInputs = [
      dpkg
      (if ARCH == "x64" then dpkg else libarchive)
      asar
    ];
    # Signal ships the Apple emoji set without a licence via an npm
@@ -117,10 +120,10 @@ stdenv.mkDerivation rec {
    # unlicensed emoji files, but the rest of the work is done in the
    # main derivation.
    postFetch = ''
      dpkg-deb -x $downloadedFile $out
      asar extract "$out/opt/${dir}/resources/app.asar" $out/asar-contents
      ${extractPkg}
      asar extract "$out/${libdir}/resources/app.asar" $out/asar-contents
      rm -r \
        "$out/opt/${dir}/resources/app.asar"{,.unpacked} \
        "$out/${libdir}/resources/app.asar"{,.unpacked} \
        $out/asar-contents/node_modules/emoji-datasource-apple
    '';
  };
@@ -196,14 +199,14 @@ stdenv.mkDerivation rec {
    mkdir -p $out/lib

    mv usr/share $out/share
    mv "opt/${dir}" "$out/lib/${dir}"
    mv "${libdir}" "$out/lib/signal-desktop"

    # Symlink to bin
    mkdir -p $out/bin
    ln -s "$out/lib/${dir}/${pname}" $out/bin/${pname}
    ln -s "$out/lib/signal-desktop/signal-desktop" $out/bin/${meta.mainProgram}

    # Create required symlinks:
    ln -s libGLESv2.so "$out/lib/${dir}/libGLESv2.so.2"
    ln -s libGLESv2.so "$out/lib/signal-desktop/libGLESv2.so.2"

    # Copy the Noto Color Emoji PNGs into the ASAR contents. See `src`
    # for the motivation, and the script for the technical details.
@@ -218,7 +221,7 @@ stdenv.mkDerivation rec {
    substituteInPlace asar-contents/preload.bundle.js \
      --replace-fail \
        'emoji://jumbo?emoji=' \
        "file://$out/lib/${lib.escapeURL dir}/resources/app.asar/$emojiPrefix/"
        "file://$out/lib/signal-desktop/resources/app.asar/$emojiPrefix/"

    # `asar(1)` copies files from the corresponding `.unpacked`
    # directory when extracting, and will put them back in the modified
@@ -227,7 +230,7 @@ stdenv.mkDerivation rec {
    asar pack \
      --unpack '*.node' \
      asar-contents \
      "$out/lib/${dir}/resources/app.asar"
      "$out/lib/signal-desktop/resources/app.asar"

    runHook postInstall
  '';
@@ -239,13 +242,13 @@ stdenv.mkDerivation rec {
    )

    # Fix the desktop link
    substituteInPlace $out/share/applications/${pname}.desktop \
      --replace-fail "/opt/${dir}/${pname}" ${meta.mainProgram} \
    substituteInPlace $out/share/applications/signal-desktop.desktop \
      --replace-fail "/${bindir}/signal-desktop" ${meta.mainProgram} \
      --replace-fail "StartupWMClass=Signal" "StartupWMClass=signal"

    # Note: The following path contains bundled libraries:
    # $out/lib/${dir}/resources/app.asar.unpacked/node_modules/
    patchelf --add-needed ${libpulseaudio}/lib/libpulse.so "$out/lib/${dir}/resources/app.asar.unpacked/node_modules/@signalapp/ringrtc/build/linux/libringrtc-${ARCH}.node"
    # $out/lib/signal-desktop/resources/app.asar.unpacked/node_modules/
    patchelf --add-needed ${libpulseaudio}/lib/libpulse.so "$out/lib/signal-desktop/resources/app.asar.unpacked/node_modules/@signalapp/ringrtc/build/linux/libringrtc-${ARCH}.node"
  '';

  passthru = {
+12 −5
Original line number Diff line number Diff line
{ callPackage }:
callPackage ./generic.nix { } rec {
callPackage ./generic.nix { } {
  pname = "signal-desktop";
  dir = "Signal";
  version = "7.36.0";
  url = "https://github.com/0mniteck/Signal-Desktop-Mobian/raw/${version}/builds/release/signal-desktop_${version}_arm64.deb";
  hash = "sha256-nmAqFDw35pdZg5tiq9MUlqXnbRLRkSOX9SWhccnE2Xw=";
  version = "7.46.0-1";

  libdir = "usr/lib64/signal-desktop";
  bindir = "usr/bin";
  extractPkg = ''
    mkdir -p $out
    bsdtar -xf $downloadedFile -C "$out"
  '';

  url = "https://download.copr.fedorainfracloud.org/results/useidel/signal-desktop/fedora-42-aarch64/08759579-signal-desktop/signal-desktop-7.46.0-1.fc42.aarch64.rpm";
  hash = "sha256-kiNwaB+jNOgkfkJ4V5Fj23RNILP3IOZfKWKAehMmtZ0=";
}
+5 −1
Original line number Diff line number Diff line
{ callPackage }:
callPackage ./generic.nix { } rec {
  pname = "signal-desktop";
  dir = "Signal";
  version = "7.46.0";

  libdir = "opt/Signal";
  bindir = libdir;
  extractPkg = "dpkg-deb -x $downloadedFile $out";

  url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_${version}_amd64.deb";
  hash = "sha256-HbmyivfhvZfXdtcL/Cjzl4v0Ck/fJCD517iTjIeidgc=";
}
+23 −29
Original line number Diff line number Diff line
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p bash nix-update curl coreutils jq
#!nix-shell -i bash -p bash common-updater-scripts curl coreutils jq

set -ex

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"

curl_github() {
  curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} "$@"
}

case "$UPDATE_NIX_ATTR_PATH" in
signal-desktop)
  latestTag=$(curl_github https://api.github.com/repos/signalapp/Signal-Desktop/releases/latest | jq -r ".tag_name")
latestTag=$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} \
  "https://api.github.com/repos/signalapp/Signal-Desktop/releases/latest" \
  | jq -r ".tag_name")
latestVersion="$(expr "$latestTag" : 'v\(.*\)')"
  latestVersionAarch64=$(curl_github "https://api.github.com/repos/0mniteck/Signal-Desktop-Mobian/releases/latest" | jq -r ".tag_name")

latestBuildInfoAarch64=$(curl \
  "https://copr.fedorainfracloud.org/api_3/package/?ownername=useidel&projectname=signal-desktop&packagename=signal-desktop&with_latest_succeeded_build=true" \
  | jq '.builds.latest_succeeded')
latestBuildAarch64=$(jq '.id' <<< $latestBuildInfoAarch64)
latestVersionAarch64=$(jq -r '.source_package.version' <<< $latestBuildInfoAarch64)

echo "Updating signal-desktop for x86_64-linux"
  nix-update --version "$latestVersion" \
    --system x86_64-linux \
    --override-filename "$SCRIPT_DIR/signal-desktop.nix" \
  signal-desktop
update-source-version signal-desktop "$latestVersion" \
  --system=x86_64-linux \
  --file="$SCRIPT_DIR/signal-desktop.nix"

echo "Updating signal-desktop for aarch64-linux"
  nix-update --version "$latestVersionAarch64" \
    --system aarch64-linux \
    --override-filename "$SCRIPT_DIR/signal-desktop-aarch64.nix" \
    signal-desktop
update-source-version signal-desktop "$latestVersionAarch64" "" \
  "https://download.copr.fedorainfracloud.org/results/useidel/signal-desktop/fedora-42-aarch64/$(printf "%08d" $latestBuildAarch64)-signal-desktop/signal-desktop-$latestVersionAarch64.fc42.aarch64.rpm" \
  --system=aarch64-linux \
  --file="$SCRIPT_DIR/signal-desktop-aarch64.nix"

echo "Updating signal-desktop for darwin"
  nix-update --version "$latestVersion" \
    --system aarch64-darwin \
    --override-filename "$SCRIPT_DIR/signal-desktop-darwin.nix" \
    signal-desktop
  ;;
*)
  echo "Unknown attr path $UPDATE_NIX_ATTR_PATH"
  ;;
esac
update-source-version signal-desktop "$latestVersion" \
  --system=aarch64-darwin \
  --file="$SCRIPT_DIR/signal-desktop-darwin.nix"