From a7d0c0e7ca5b7efdf75e162c0e4f8b72739ac8c2 Mon Sep 17 00:00:00 2001 From: Rob <86313040+robert-manchester@users.noreply.github.com> Date: Fri, 6 Oct 2023 00:15:35 -0700 Subject: tkdiff: init at 5.6 TkDiff is a graphical front end to the diff program https://tkdiff.sourceforge.io/ --- pkgs/by-name/tk/tkdiff/189.patch | 71 ++++++++++++++++++++++++++++++++++++++ pkgs/by-name/tk/tkdiff/package.nix | 43 +++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 pkgs/by-name/tk/tkdiff/189.patch create mode 100644 pkgs/by-name/tk/tkdiff/package.nix (limited to 'pkgs/by-name') diff --git a/pkgs/by-name/tk/tkdiff/189.patch b/pkgs/by-name/tk/tkdiff/189.patch new file mode 100644 index 0000000000000..c638727d3bd48 --- /dev/null +++ b/pkgs/by-name/tk/tkdiff/189.patch @@ -0,0 +1,71 @@ +Index: tkdiff +=================================================================== +diff --git a/tkdiff b/tkdiff +--- a/tkdiff (revision 188) ++++ b/tkdiff (revision 189) +@@ -111,7 +111,7 @@ + } + + # Determine the name of the temporary directory, the rc file name, +-# and possible VPATH EnvVar, all of which are platform dependent. ++# NULLdev, and possible VPATH EnvVar, all of which are platform dependent. + # + # Much MAY likely be overridden by a preference in .tkdiffrc, + # EXCEPT (obviously) when no such file actually exists yet +@@ -126,6 +126,9 @@ + set opts(tmpdir) C:/temp + } + ++ # Reserved filename which is actually a NULL device ++ set opts(NULLdev) "nul" ++ + # Split up and store a VPATH if it exists + if {[info exists ::env(VPATH)]} { + set finfo(Vpath) [split $::env(VPATH) ";"] +@@ -145,6 +148,9 @@ + set opts(tmpdir) $::env(TMPDIR) + } {set opts(tmpdir) /tmp } + ++ # Reserved filename which is actually a NULL device (Unix-like platforms) ++ set opts(NULLdev) "/dev/null" ++ + # Split up and store a VPATH if it exists + if {[info exists ::env(VPATH)]} { + set finfo(Vpath) [split $::env(VPATH) ":"] +@@ -2106,7 +2112,7 @@ + # 1 Failed (PLUS a 'pushed' HARD-error message to the caller) + ############################################################################### + proc get-file {fn ndx {probe 0}} { +- global g finfo ++ global g opts finfo + + # Ancestor files are stored into a slightly adjusted array element name + # N.B> 'ndx' AS PASSED *can* be an EXPRESSION (not just a number): resolve! +@@ -2121,7 +2127,7 @@ + } elseif {!$tildechk} { + # DO NOT REPORT non-existence if this attempt was ONLY a probe + if {$probe} { return 1 } { set MSG "File '$fn' does not exist" } +- } elseif {[file isfile $fn]} { ++ } elseif {[file isfile $fn] || $fn == $opts(NULLdev)} { + set finfo(${A}lbl,$ndx) [shortNm [set finfo(${A}pth,$ndx) "$fn"]] + } else { set MSG "'$fn' exists, but is not a file" } + +@@ -2857,7 +2863,7 @@ + # Align various label decorations to the CURRENT input file pairing + ############################################################################### + proc alignDecor {pairnum} { +- global g w finfo ++ global g w opts finfo + + # Establish if 3way mode is NOW active and what file indices are in use + set g(is3way) [info exists finfo(albl,$pairnum)] +@@ -2874,7 +2880,8 @@ + set finfo(lbl,$LR) $finfo(ulbl,$ndx($n)) ;# Override lbl display + } else {set finfo(lbl,$LR) $finfo(lbl,$ndx($n))} + +- if {![info exists finfo(tmp,$ndx($n))]} { ++ if {![info exists finfo(tmp,$ndx($n))] \ ++ && $finfo(pth,$ndx($n)) != $opts(NULLdev)} { + # (N.B> Tip data will ALSO be used by report generation heading) + set g(tooltip,${LR}Label) "{$finfo(pth,$ndx($n))\n" + append g(tooltip,${LR}Label) \ diff --git a/pkgs/by-name/tk/tkdiff/package.nix b/pkgs/by-name/tk/tkdiff/package.nix new file mode 100644 index 0000000000000..478ee4e29ff9e --- /dev/null +++ b/pkgs/by-name/tk/tkdiff/package.nix @@ -0,0 +1,43 @@ +{ diffutils, fetchzip, lib, makeBinaryWrapper, stdenv, tk }: + +stdenv.mkDerivation (finalAttrs: { + pname = "tkdiff"; + version = "5.6"; + + src = fetchzip { + url = "mirror://sourceforge/tkdiff/tkdiff-${builtins.replaceStrings ["."] ["-"] finalAttrs.version}.zip"; + hash = "sha256-EpbIdjsejkkTaSpoZRM5AHz0r1Cio+YzRryK0BoghBk="; + }; + + # fix regression: allow /dev/null again. eg: "tkdiff /dev/null file" + # svn diff --git -r188:189 https://svn.code.sf.net/p/tkdiff/code/trunk + patches = [ ./189.patch ]; + + nativeBuildInputs = [ makeBinaryWrapper ]; + + installPhase = '' + runHook preInstall + + install -Dm755 -t $out/bin tkdiff + wrapProgram $out/bin/tkdiff \ + --prefix PATH : ${lib.makeBinPath [ diffutils tk ]} + + runHook postInstall + ''; + + meta = { + description = "A graphical front end to the diff program"; + homepage = "https://tkdiff.sourceforge.io/"; + license = lib.licenses.gpl2Plus; + longDescription = '' + TkDiff is a graphical front end to the diff program. It provides a + side-by-side view of the differences between two text files, along + with several innovative features such as diff bookmarks, a graphical + map of differences for quick navigation, and a facility for slicing + diff regions to achieve exactly the merge output desired. + ''; + mainProgram = "tkdiff"; + maintainers = with lib.maintainers; [ robert-manchester ]; + platforms = tk.meta.platforms; + }; +}) -- cgit 1.4.1