diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/tk')
5 files changed, 174 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/tk/8.5.nix b/nixpkgs/pkgs/development/libraries/tk/8.5.nix new file mode 100644 index 000000000000..c5d5c478c670 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/tk/8.5.nix @@ -0,0 +1,28 @@ +{ lib +, stdenv +, callPackage +, fetchurl +, fetchpatch +, tcl +, ... +} @ args: + +callPackage ./generic.nix (args // { + + src = fetchurl { + url = "mirror://sourceforge/tcl/tk${tcl.version}-src.tar.gz"; + 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/nixpkgs/pkgs/development/libraries/tk/8.6.nix b/nixpkgs/pkgs/development/libraries/tk/8.6.nix new file mode 100644 index 000000000000..c4825d2ccf9d --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/tk/8.6.nix @@ -0,0 +1,29 @@ +{ lib +, stdenv +, callPackage +, fetchurl +, fetchpatch +, tcl +, ... +} @ args: + +callPackage ./generic.nix (args // { + + src = fetchurl { + url = "mirror://sourceforge/tcl/tk${tcl.version}.1-src.tar.gz"; # TODO: remove '.1' for v8.6.10 or v8.7.x + sha256 = "1gh9k7l76qg9l0sb78ijw9xz4xl1af47aqbdifb6mjpf3cbsnv00"; + }; + + 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"; + }) + ]; + +}) diff --git a/nixpkgs/pkgs/development/libraries/tk/Fix-bad-install_name-for-libtk8.6.dylib.patch b/nixpkgs/pkgs/development/libraries/tk/Fix-bad-install_name-for-libtk8.6.dylib.patch new file mode 100644 index 000000000000..528a75e1c91f --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/tk/Fix-bad-install_name-for-libtk8.6.dylib.patch @@ -0,0 +1,29 @@ +From f90278dac42135acd55200b7d2153f44d72fec53 Mon Sep 17 00:00:00 2001 +From: Josef Knedl <josef.kemetmueller@aon.at> +Date: Wed, 24 Feb 2016 00:37:40 +0100 +Subject: [PATCH] Fix bad install_name for libtk8.6.dylib + +This follows: https://trac.macports.org/ticket/37395 +and https://trac.macports.org/changeset/100816 +Alternative would be to use Quartz build instead: +https://sourceforge.net/p/tktoolkit/bugs/3048/ +--- + unix/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/unix/Makefile.in b/unix/Makefile.in +index f21fdbb..1b89256 100644 +--- a/unix/Makefile.in ++++ b/unix/Makefile.in +@@ -283,7 +283,7 @@ CC_SEARCH_FLAGS = @CC_SEARCH_FLAGS@ + LD_SEARCH_FLAGS = @LD_SEARCH_FLAGS@ + + # support for embedded libraries on Darwin / Mac OS X +-DYLIB_INSTALL_DIR = ${LIB_RUNTIME_DIR} ++DYLIB_INSTALL_DIR = $(libdir) + + # support for building the Aqua resource file + TK_RSRC_FILE = @TK_RSRC_FILE@ +-- +2.7.1 + diff --git a/nixpkgs/pkgs/development/libraries/tk/different-prefix-with-tcl.patch b/nixpkgs/pkgs/development/libraries/tk/different-prefix-with-tcl.patch new file mode 100644 index 000000000000..aee46e149b1a --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/tk/different-prefix-with-tcl.patch @@ -0,0 +1,25 @@ +diff --git a/generic/tkWindow.c b/generic/tkWindow.c +index b5cbbab..96b5501 100644 +--- a/generic/tkWindow.c ++++ b/generic/tkWindow.c +@@ -988,6 +988,7 @@ TkCreateMainWindow( + + Tcl_SetVar2(interp, "tk_patchLevel", NULL, TK_PATCH_LEVEL, TCL_GLOBAL_ONLY); + Tcl_SetVar2(interp, "tk_version", NULL, TK_VERSION, TCL_GLOBAL_ONLY); ++ Tcl_SetVar2(interp, "tk_library", NULL, TK_LIBRARY, TCL_GLOBAL_ONLY); + + tsdPtr->numMainWindows++; + return tkwin; +diff --git a/unix/Makefile.in b/unix/Makefile.in +index f21fdbb..c61b0df 100644 +--- a/unix/Makefile.in ++++ b/unix/Makefile.in +@@ -1029,7 +1029,7 @@ tkVisual.o: $(GENERIC_DIR)/tkVisual.c + $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkVisual.c + + tkWindow.o: $(GENERIC_DIR)/tkWindow.c +- $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkWindow.c ++ $(CC) -c $(CC_SWITCHES) -DTK_LIBRARY=\"${TK_LIBRARY}\" $(GENERIC_DIR)/tkWindow.c + + tkButton.o: $(GENERIC_DIR)/tkButton.c + $(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkButton.c diff --git a/nixpkgs/pkgs/development/libraries/tk/generic.nix b/nixpkgs/pkgs/development/libraries/tk/generic.nix new file mode 100644 index 000000000000..6aa67bf274de --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/tk/generic.nix @@ -0,0 +1,63 @@ +{ stdenv, lib, src, pkg-config, tcl, libXft, patches ? [] +, enableAqua ? stdenv.isDarwin, darwin +, ... }: + +tcl.mkTclDerivation { + name = "tk-${tcl.version}"; + + inherit src patches; + + outputs = [ "out" "man" "dev" ]; + + setOutputFlags = false; + + preConfigure = '' + configureFlagsArray+=(--mandir=$man/share/man --enable-man-symlinks) + cd unix + ''; + + postPatch = '' + for file in $(find library/demos/. -type f ! -name "*.*"); do + substituteInPlace $file --replace "exec wish" "exec $out/bin/wish" + done + ''; + + postInstall = '' + ln -s $out/bin/wish* $out/bin/wish + cp ../{unix,generic}/*.h $out/include + ln -s $out/lib/libtk${tcl.release}${stdenv.hostPlatform.extensions.sharedLibrary} $out/lib/libtk${stdenv.hostPlatform.extensions.sharedLibrary} + '' + + lib.optionalString (stdenv.isDarwin) '' + cp ../macosx/*.h $out/include + ''; + + configureFlags = [ + "--enable-threads" + ] ++ lib.optional stdenv.is64bit "--enable-64bit" + ++ lib.optional enableAqua "--enable-aqua"; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = lib.optional enableAqua (with darwin.apple_sdk.frameworks; [ Cocoa ]); + + propagatedBuildInputs = [ libXft ]; + + enableParallelBuilding = true; + + doCheck = false; # fails. can't find itself + + inherit tcl; + + passthru = rec { + inherit (tcl) release version; + libPrefix = "tk${tcl.release}"; + libdir = "lib/${libPrefix}"; + }; + + meta = with lib; { + description = "A widget toolkit that provides a library of basic elements for building a GUI in many different programming languages"; + homepage = "https://www.tcl.tk/"; + license = licenses.tcltk; + platforms = platforms.all; + maintainers = with maintainers; [ lovek323 vrthra ]; + }; +} |