diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/tk')
5 files changed, 132 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..3058af46ab57 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/tk/8.5.nix @@ -0,0 +1,10 @@ +{ callPackage, fetchurl, tcl, ... } @ args: + +callPackage ./generic.nix (args // { + + src = fetchurl { + url = "mirror://sourceforge/tcl/tk${tcl.version}-src.tar.gz"; + sha256 = "0an3wqkjzlyyq6l9l3nawz76axsrsppbyylx0zk9lkv7llrala03"; + }; + +}) 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..c30f9a819478 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/tk/8.6.nix @@ -0,0 +1,12 @@ +{ callPackage, fetchurl, tcl, stdenv, ... } @ 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 = "1d7bfkxpacy33w5nahf73lkwxqpff44w1jplg7i2gmwgiaawvjwg"; + }; + + patches = [ ./different-prefix-with-tcl.patch ] ++ stdenv.lib.optionals stdenv.isDarwin [ ./Fix-bad-install_name-for-libtk8.6.dylib.patch ]; + +}) 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..a65c6053f295 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/tk/generic.nix @@ -0,0 +1,56 @@ +{ stdenv, lib, src, pkgconfig, tcl, libXft, patches ? [] +, enableAqua ? stdenv.isDarwin, darwin +, ... }: + +stdenv.mkDerivation { + name = "tk-${tcl.version}"; + + inherit src patches; + + outputs = [ "out" "man" "dev" ]; + + setOutputFlags = false; + + preConfigure = '' + configureFlagsArray+=(--mandir=$man/share/man --enable-man-symlinks) + cd unix + ''; + + postInstall = '' + ln -s $out/bin/wish* $out/bin/wish + cp ../{unix,generic}/*.h $out/include + ln -s $out/lib/libtk${tcl.release}.so $out/lib/libtk.so + '' + + stdenv.lib.optionalString (stdenv.isDarwin) '' + cp ../macosx/*.h $out/include + ''; + + configureFlags = [ + "--enable-threads" + "--with-tcl=${tcl}/lib" + ] ++ stdenv.lib.optional stdenv.is64bit "--enable-64bit" + ++ stdenv.lib.optional enableAqua "--enable-aqua"; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = lib.optional enableAqua (with darwin.apple_sdk.frameworks; [ Cocoa ]); + + propagatedBuildInputs = [ tcl libXft ]; + + doCheck = false; # fails. can't find itself + + inherit tcl; + + passthru = rec { + inherit (tcl) release version; + libPrefix = "tk${tcl.release}"; + libdir = "lib/${libPrefix}"; + }; + + meta = with stdenv.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 ]; + }; +} |