nixpkgs/pkgs/development/libraries/gtk/2.x.nix

117 lines
3.7 KiB
Nix
Raw Normal View History

{ config, lib, substituteAll, stdenv, fetchurl, pkg-config, gettext, glib, atk, pango, cairo, perl, xorg
2019-05-22 11:03:39 +00:00
, gdk-pixbuf, xlibsWrapper, gobject-introspection
, xineramaSupport ? stdenv.isLinux
, cupsSupport ? config.gtk2.cups or stdenv.isLinux, cups
2018-08-06 21:32:13 +00:00
, gdktarget ? if stdenv.isDarwin then "quartz" else "x11"
2016-12-23 21:18:25 +00:00
, AppKit, Cocoa
2021-12-16 02:42:33 +00:00
, fetchpatch, buildPackages
}:
with lib;
2016-12-23 21:18:25 +00:00
let
gtkCleanImmodulesCache = substituteAll {
src = ./hooks/clean-immodules-cache.sh;
gtk_module_path = "gtk-2.0";
gtk_binary_version = "2.10.0";
};
in
2012-09-26 19:39:32 +00:00
stdenv.mkDerivation rec {
pname = "gtk+";
version = "2.24.33";
src = fetchurl {
url = "mirror://gnome/sources/gtk+/2.24/${pname}-${version}.tar.xz";
sha256 = "rCrHV/WULTGKMRpUsMgLXvKV8pnCpzxjL2v7H/Scxto=";
};
outputs = [ "out" "dev" "devdoc" ];
outputBin = "dev";
enableParallelBuilding = true;
setupHooks = [
./hooks/drop-icon-theme-cache.sh
gtkCleanImmodulesCache
];
2021-12-16 02:42:33 +00:00
nativeBuildInputs = setupHooks ++ [ perl pkg-config gettext gobject-introspection ];
2012-09-26 19:39:32 +00:00
patches = [
./patches/2.0-immodules.cache.patch
./patches/gtk2-theme-paths.patch
2019-01-27 14:00:50 +00:00
] ++ optionals stdenv.isDarwin [
(fetchpatch {
url = "https://bug557780.bugzilla-attachments.gnome.org/attachment.cgi?id=306776";
2019-01-27 14:00:50 +00:00
sha256 = "0sp8f1r5c4j2nlnbqgv7s7nxa4cfwigvm033hvhb1ld652pjag4r";
})
./patches/2.0-darwin-x11.patch
2019-01-27 14:00:50 +00:00
];
2016-12-23 21:18:25 +00:00
propagatedBuildInputs = with xorg;
2019-05-22 11:03:39 +00:00
[ glib cairo pango gdk-pixbuf atk ]
++ optionals (stdenv.isLinux || stdenv.isDarwin) [
libXrandr libXrender libXcomposite libXi libXcursor
]
++ optionals stdenv.isDarwin [ xlibsWrapper libXdamage ]
++ optional xineramaSupport libXinerama
2016-12-23 21:18:25 +00:00
++ optionals cupsSupport [ cups ]
++ optionals stdenv.isDarwin [ AppKit Cocoa ];
preConfigure = if (lib.versionAtLeast stdenv.hostPlatform.darwinMinVersion "11" && stdenv.isDarwin) then ''
MACOSX_DEPLOYMENT_TARGET=10.16
'' else null;
2016-12-27 07:45:37 +00:00
configureFlags = [
2016-12-23 21:18:25 +00:00
"--with-gdktarget=${gdktarget}"
2016-12-27 07:45:37 +00:00
"--with-xinput=yes"
2016-12-23 21:18:25 +00:00
] ++ optionals stdenv.isDarwin [
2016-12-27 07:45:37 +00:00
"--disable-glibtest"
"--disable-introspection"
"--disable-visibility"
2021-12-16 02:42:33 +00:00
] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"ac_cv_path_GTK_UPDATE_ICON_CACHE=${buildPackages.gtk2}/bin/gtk-update-icon-cache"
"ac_cv_path_GDK_PIXBUF_CSOURCE=${buildPackages.gdk-pixbuf.dev}/bin/gdk-pixbuf-csource"
2016-12-27 07:45:37 +00:00
];
doCheck = false; # needs X11
postInstall = ''
moveToOutput share/gtk-2.0/demo "$devdoc"
# The updater is needed for nixos env and it's tiny.
moveToOutput bin/gtk-update-icon-cache "$out"
'';
passthru = {
gtkExeEnvPostBuild = ''
rm $out/lib/gtk-2.0/2.10.0/immodules.cache
$out/bin/gtk-query-immodules-2.0 $out/lib/gtk-2.0/2.10.0/immodules/*.so > $out/lib/gtk-2.0/2.10.0/immodules.cache
''; # workaround for bug of nix-mode for Emacs */ '';
2016-12-23 21:18:25 +00:00
inherit gdktarget;
};
2016-12-23 21:18:25 +00:00
meta = {
description = "A multi-platform toolkit for creating graphical user interfaces";
homepage = "https://www.gtk.org/";
license = licenses.lgpl2Plus;
maintainers = with maintainers; [ lovek323 raskin ];
platforms = platforms.all;
longDescription = ''
GTK is a highly usable, feature rich toolkit for creating
graphical user interfaces which boasts cross platform
compatibility and an easy to use API. GTK it is written in C,
but has bindings to many other popular programming languages
such as C++, Python and C# among others. GTK is licensed
under the GNU LGPL 2.1 allowing development of both free and
proprietary software with GTK without any license fees or
royalties.
'';
2021-02-01 11:09:27 +00:00
changelog = "https://gitlab.gnome.org/GNOME/gtk/-/raw/${version}/NEWS";
};
}