summary refs log tree commit diff
path: root/pkgs/applications/terminal-emulators/xterm/default.nix
diff options
context:
space:
mode:
authorTim Steinbach <tim@nequissimus.com>2020-11-16 21:24:38 -0500
committerTim Steinbach <tim@nequissimus.com>2020-11-16 21:30:45 -0500
commit6dda0115ae6166bd27f2b01e9a9ed6b3693dbb75 (patch)
tree64211a3b529378f20a8a6a44bc0565c71c0d7db7 /pkgs/applications/terminal-emulators/xterm/default.nix
parentfcbef5bac5f2769e58951f4749f6370ecec117af (diff)
downloadnixpkgs-6dda0115ae6166bd27f2b01e9a9ed6b3693dbb75.tar
nixpkgs-6dda0115ae6166bd27f2b01e9a9ed6b3693dbb75.tar.gz
nixpkgs-6dda0115ae6166bd27f2b01e9a9ed6b3693dbb75.tar.bz2
nixpkgs-6dda0115ae6166bd27f2b01e9a9ed6b3693dbb75.tar.lz
nixpkgs-6dda0115ae6166bd27f2b01e9a9ed6b3693dbb75.tar.xz
nixpkgs-6dda0115ae6166bd27f2b01e9a9ed6b3693dbb75.tar.zst
nixpkgs-6dda0115ae6166bd27f2b01e9a9ed6b3693dbb75.zip
xterm: Add update script
Diffstat (limited to 'pkgs/applications/terminal-emulators/xterm/default.nix')
-rw-r--r--pkgs/applications/terminal-emulators/xterm/default.nix80
1 files changed, 63 insertions, 17 deletions
diff --git a/pkgs/applications/terminal-emulators/xterm/default.nix b/pkgs/applications/terminal-emulators/xterm/default.nix
index 109444fc518..079df1ceffd 100644
--- a/pkgs/applications/terminal-emulators/xterm/default.nix
+++ b/pkgs/applications/terminal-emulators/xterm/default.nix
@@ -1,29 +1,41 @@
-{ stdenv, fetchurl, fetchpatch, xorg, ncurses, freetype, fontconfig, pkgconfig, makeWrapper
-, enableDecLocator ? true
-}:
+{ stdenv, fetchurl, fetchpatch, xorg, ncurses, freetype, fontconfig, pkgconfig
+, makeWrapper, nixosTests, writeScript, common-updater-scripts, git, nixfmt, nix
+, gnused, coreutils, enableDecLocator ? true }:
 
 stdenv.mkDerivation rec {
-  name = "xterm-353";
+  pname = "xterm";
+  version = "353";
 
   src = fetchurl {
     urls = [
-     "ftp://ftp.invisible-island.net/xterm/${name}.tgz"
-     "https://invisible-mirror.net/archives/xterm/${name}.tgz"
-   ];
+      "ftp://ftp.invisible-island.net/xterm/${pname}-${version}.tgz"
+      "https://invisible-mirror.net/archives/xterm/${pname}-${version}.tgz"
+    ];
     sha256 = "0s5pkfn4r8iy09s1q1y78zhnr9f3sm6wgbqir7azaqggkppd68g5";
   };
 
-  buildInputs =
-    [ xorg.libXaw xorg.xorgproto xorg.libXt xorg.libXext xorg.libX11 xorg.libSM xorg.libICE
-      ncurses freetype fontconfig pkgconfig xorg.libXft xorg.luit makeWrapper
-    ];
+  buildInputs = [
+    xorg.libXaw
+    xorg.xorgproto
+    xorg.libXt
+    xorg.libXext
+    xorg.libX11
+    xorg.libSM
+    xorg.libICE
+    ncurses
+    freetype
+    fontconfig
+    pkgconfig
+    xorg.libXft
+    xorg.luit
+    makeWrapper
+  ];
 
-  patches = [
-    ./sixel-256.support.patch
-  ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl
-    (fetchpatch {
+  patches = [ ./sixel-256.support.patch ]
+    ++ stdenv.lib.optional stdenv.hostPlatform.isMusl (fetchpatch {
       name = "posix-ptys.patch";
-      url = "https://git.alpinelinux.org/aports/plain/community/xterm/posix-ptys.patch?id=3aa532e77875fa1db18c7fcb938b16647031bcc1";
+      url =
+        "https://git.alpinelinux.org/aports/plain/community/xterm/posix-ptys.patch?id=3aa532e77875fa1db18c7fcb938b16647031bcc1";
       sha256 = "0czgnsxkkmkrk1idw69qxbprh0jb4sw3c24zpnqq2v76jkl7zvlr";
     });
 
@@ -62,10 +74,44 @@ stdenv.mkDerivation rec {
     install -D -t $out/share/icons/hicolor/48x48/apps icons/xterm-color_48x48.xpm
   '';
 
+  passthru = {
+    updateScript = let
+      # Tags that end in letters are unstable
+      suffixes = stdenv.lib.concatStringsSep " "
+        (map (c: "-c versionsort.suffix='${c}'")
+          (stdenv.lib.stringToCharacters "abcdefghijklmnopqrstuvwxyz"));
+    in writeScript "update.sh" ''
+      #!${stdenv.shell}
+      set -o errexit
+      PATH=${
+        stdenv.lib.makeBinPath [
+          common-updater-scripts
+          git
+          nixfmt
+          nix
+          coreutils
+          gnused
+        ]
+      }
+
+      oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion ${pname}" | tr -d '"')"
+      latestTag="$(git ${suffixes} ls-remote --exit-code --refs --sort='version:refname' --tags git@github.com:ThomasDickey/xterm-snapshots.git 'xterm-*' | tail --lines=1 | cut --delimiter='/' --fields=3 | sed 's|^xterm-||g')"
+
+      if [ ! "$oldVersion" = "$latestTag" ]; then
+        update-source-version ${pname} "$latestTag" --version-key=version --print-changes
+        nixpkgs="$(git rev-parse --show-toplevel)"
+        default_nix="$nixpkgs/pkgs/applications/terminal-emulators/xterm/default.nix"
+        nixfmt "$default_nix"
+      else
+        echo "${pname} is already up-to-date"
+      fi
+    '';
+  };
+
   meta = {
     homepage = "https://invisible-island.net/xterm";
     license = with stdenv.lib.licenses; [ mit ];
-    maintainers = with stdenv.lib.maintainers; [vrthra];
+    maintainers = with stdenv.lib.maintainers; [ nequissimus vrthra ];
     platforms = with stdenv.lib.platforms; linux ++ darwin;
   };
 }