diff --git a/pkgs/development/libraries/tix/default.nix b/pkgs/development/libraries/tix/default.nix index c42847ef5335..b017b3eb6618 100644 --- a/pkgs/development/libraries/tix/default.nix +++ b/pkgs/development/libraries/tix/default.nix @@ -1,4 +1,10 @@ -{ lib, stdenv, fetchurl, tcl, tk, fetchpatch } : +{ lib +, stdenv +, fetchurl +, fetchpatch +, tcl +, tk +}: tcl.mkTclDerivation { version = "8.4.3"; @@ -13,6 +19,8 @@ tcl.mkTclDerivation { url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-tcltk/tix/files/tix-8.4.3-tcl8.5.patch?id=56bd759df1d0c750a065b8c845e93d5dfa6b549d"; sha256 = "0wzqmcxxq0rqpnjgxz10spw92yhfygnlwv0h8pcx2ycnqiljz6vj"; }) + # Remove duplicated definition of XLowerWindow + ./duplicated-xlowerwindow.patch ] ++ lib.optional (tcl.release == "8.6") (fetchpatch { name = "tix-8.4.3-tcl8.6.patch"; diff --git a/pkgs/development/libraries/tix/duplicated-xlowerwindow.patch b/pkgs/development/libraries/tix/duplicated-xlowerwindow.patch new file mode 100644 index 000000000000..0ea888749a2f --- /dev/null +++ b/pkgs/development/libraries/tix/duplicated-xlowerwindow.patch @@ -0,0 +1,49 @@ +This is duplicated code from Tk. +It causes errors during build since XLowerWindow is not only a function but also "defined" in tkIntXlibDecls.h. + +See +https://github.com/tcltk/tk/blob/71dcaddc69769cbd3e2c4b5edb5810f974579527/generic/tkIntXlibDecls.h#L396 +and +https://github.com/tcltk/tk/blob/71dcaddc69769cbd3e2c4b5edb5810f974579527/generic/tkIntXlibDecls.h#L1487 + +--- a/unix/tixUnixWm.c 2005-03-25 13:15:53.000000000 -0700 ++++ b/unix/tixUnixWm.c 2021-03-20 07:31:52.000000000 -0700 +@@ -24,38 +24,3 @@ + { + return TCL_OK; + } +- +-#ifdef MAC_OSX_TK +-#include "tkInt.h" +-/* +- *---------------------------------------------------------------------- +- * +- * XLowerWindow -- +- * +- * Change the stacking order of a window. +- * +- * Results: +- * None. +- * +- * Side effects: +- * Changes the stacking order of the specified window. +- * +- *---------------------------------------------------------------------- +- */ +- +-int +-XLowerWindow( +- Display* display, /* Display. */ +- Window window) /* Window. */ +-{ +- TkWindow *winPtr = *((TkWindow **) window); +- +- display->request++; +- if (Tk_IsTopLevel(winPtr) && !Tk_IsEmbedded(winPtr)) { +- TkWmRestackToplevel(winPtr, Below, NULL); +- } else { +- /* TODO: this should generate damage */ +- } +- return 0; +-} +-#endif diff --git a/pkgs/development/libraries/tk/8.5.nix b/pkgs/development/libraries/tk/8.5.nix index 3058af46ab57..c5d5c478c670 100644 --- a/pkgs/development/libraries/tk/8.5.nix +++ b/pkgs/development/libraries/tk/8.5.nix @@ -1,4 +1,11 @@ -{ callPackage, fetchurl, tcl, ... } @ args: +{ lib +, stdenv +, callPackage +, fetchurl +, fetchpatch +, tcl +, ... +} @ args: callPackage ./generic.nix (args // { @@ -7,4 +14,15 @@ callPackage ./generic.nix (args // { sha256 = "0an3wqkjzlyyq6l9l3nawz76axsrsppbyylx0zk9lkv7llrala03"; }; + patches = lib.optionals stdenv.isDarwin [ + # Define MODULE_SCOPE before including tkPort.h + # https://core.tcl-lang.org/tk/info/dba9f5ce3b + (fetchpatch { + name = "module_scope.patch"; + url = "https://core.tcl-lang.org/tk/vpatch?from=ef6c6960c53ea30c&to=9b8aa74eebed509a"; + extraPrefix = ""; + sha256 = "0crhf4zrzdpc1jdgyv6l6mxqgmny12r3i39y1i0j8q3pbqkd04bv"; + }) + ]; + }) diff --git a/pkgs/development/libraries/tk/8.6.nix b/pkgs/development/libraries/tk/8.6.nix index 33e3f8e41675..c4825d2ccf9d 100644 --- a/pkgs/development/libraries/tk/8.6.nix +++ b/pkgs/development/libraries/tk/8.6.nix @@ -1,4 +1,11 @@ -{ callPackage, fetchurl, tcl, lib, stdenv, ... } @ args: +{ lib +, stdenv +, callPackage +, fetchurl +, fetchpatch +, tcl +, ... +} @ args: callPackage ./generic.nix (args // { @@ -7,6 +14,16 @@ callPackage ./generic.nix (args // { sha256 = "1gh9k7l76qg9l0sb78ijw9xz4xl1af47aqbdifb6mjpf3cbsnv00"; }; - patches = [ ./different-prefix-with-tcl.patch ] ++ lib.optionals stdenv.isDarwin [ ./Fix-bad-install_name-for-libtk8.6.dylib.patch ]; + patches = [ ./different-prefix-with-tcl.patch ] ++ lib.optionals stdenv.isDarwin [ + ./Fix-bad-install_name-for-libtk8.6.dylib.patch + # Define MODULE_SCOPE before including tkPort.h + # https://core.tcl-lang.org/tk/info/dba9f5ce3b + (fetchpatch { + name = "module_scope.patch"; + url = "https://core.tcl-lang.org/tk/vpatch?from=ef6c6960c53ea30c&to=9b8aa74eebed509a"; + extraPrefix = ""; + sha256 = "0crhf4zrzdpc1jdgyv6l6mxqgmny12r3i39y1i0j8q3pbqkd04bv"; + }) + ]; })