diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/gtksourceview')
5 files changed, 316 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/gtksourceview/3.x-nix_share_path.patch b/nixpkgs/pkgs/development/libraries/gtksourceview/3.x-nix_share_path.patch new file mode 100644 index 000000000000..c87350167c25 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gtksourceview/3.x-nix_share_path.patch @@ -0,0 +1,11 @@ +--- a/gtksourceview/gtksourceview-utils.c 2014-07-13 16:13:57.418687726 +0200 ++++ b/gtksourceview/gtksourceview-utils.c 2014-07-13 16:14:20.550847767 +0200 +@@ -68,6 +68,8 @@ + basename, + NULL)); + ++ g_ptr_array_add (dirs, g_build_filename ("@NIX_SHARE_PATH@", SOURCEVIEW_DIR, basename, NULL)); ++ + g_ptr_array_add (dirs, NULL); + + return (gchar**) g_ptr_array_free (dirs, FALSE); diff --git a/nixpkgs/pkgs/development/libraries/gtksourceview/3.x.nix b/nixpkgs/pkgs/development/libraries/gtksourceview/3.x.nix new file mode 100644 index 000000000000..704a7c3e9c54 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gtksourceview/3.x.nix @@ -0,0 +1,58 @@ +{ lib, stdenv, fetchurl, pkg-config, atk, cairo, glib, gtk3, pango, vala +, libxml2, perl, intltool, gettext, gobject-introspection, dbus, xvfb-run, shared-mime-info +, testers +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "gtksourceview"; + version = "3.24.11"; + + src = let + inherit (finalAttrs) pname version; + in fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1zbpj283b5ycz767hqz5kdq02wzsga65pp4fykvhg8xj6x50f6v9"; + }; + + propagatedBuildInputs = [ + # Required by gtksourceview-3.0.pc + gtk3 + # Used by gtk_source_language_manager_guess_language + shared-mime-info + ]; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkg-config intltool perl gobject-introspection vala ]; + + nativeCheckInputs = [ xvfb-run dbus ]; + + buildInputs = [ atk cairo glib pango libxml2 gettext ]; + + preBuild = '' + substituteInPlace gtksourceview/gtksourceview-utils.c --replace "@NIX_SHARE_PATH@" "$out/share" + ''; + + patches = [ ./3.x-nix_share_path.patch ]; + + enableParallelBuilding = true; + + doCheck = stdenv.isLinux; + checkPhase = '' + NO_AT_BRIDGE=1 \ + XDG_DATA_DIRS="$XDG_DATA_DIRS:${shared-mime-info}/share" \ + xvfb-run -s '-screen 0 800x600x24' dbus-run-session \ + --config-file=${dbus}/share/dbus-1/session.conf \ + make check + ''; + + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + + meta = with lib; { + homepage = "https://wiki.gnome.org/Projects/GtkSourceView"; + pkgConfigModules = [ "gtksourceview-3.0" ]; + platforms = with platforms; linux ++ darwin; + license = licenses.lgpl21; + maintainers = teams.gnome.members; + }; +}) diff --git a/nixpkgs/pkgs/development/libraries/gtksourceview/4.x-nix_share_path.patch b/nixpkgs/pkgs/development/libraries/gtksourceview/4.x-nix_share_path.patch new file mode 100644 index 000000000000..a35d9a88d0df --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gtksourceview/4.x-nix_share_path.patch @@ -0,0 +1,11 @@ +--- a/gtksourceview/gtksourceutils.c ++++ b/gtksourceview/gtksourceutils.c +@@ -232,6 +232,8 @@ + NULL)); + } + ++ g_ptr_array_add (dirs, g_build_filename (DATADIR, GSV_DATA_SUBDIR, basename, NULL)); ++ + g_ptr_array_add (dirs, NULL); + + return (gchar **) g_ptr_array_free (dirs, FALSE); diff --git a/nixpkgs/pkgs/development/libraries/gtksourceview/4.x.nix b/nixpkgs/pkgs/development/libraries/gtksourceview/4.x.nix new file mode 100644 index 000000000000..e824e1ed9c67 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gtksourceview/4.x.nix @@ -0,0 +1,117 @@ +{ lib +, stdenv +, fetchurl +, meson +, ninja +, pkg-config +, atk +, cairo +, glib +, gtk3 +, pango +, fribidi +, vala +, libxml2 +, perl +, gettext +, gnome +, gobject-introspection +, dbus +, xvfb-run +, shared-mime-info +, testers +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "gtksourceview"; + version = "4.8.4"; + + outputs = [ "out" "dev" ]; + + src = let + inherit (finalAttrs) pname version; + in fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "fsnRj7KD0fhKOj7/O3pysJoQycAGWXs/uru1lYQgqH0="; + }; + + patches = [ + # By default, the library loads syntaxes from XDG_DATA_DIRS and user directory + # but not from its own datadr (it assumes it will be in XDG_DATA_DIRS). + # Since this is not generally true with Nix, let’s add $out/share unconditionally. + ./4.x-nix_share_path.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + gettext + perl + gobject-introspection + vala + ]; + + buildInputs = [ + atk + cairo + glib + pango + fribidi + libxml2 + ]; + + propagatedBuildInputs = [ + # Required by gtksourceview-4.0.pc + gtk3 + # Used by gtk_source_language_manager_guess_language + shared-mime-info + ]; + + nativeCheckInputs = [ + xvfb-run + dbus + ]; + + postPatch = '' + # https://gitlab.gnome.org/GNOME/gtksourceview/-/merge_requests/295 + # build: drop unnecessary vapigen check + substituteInPlace meson.build \ + --replace "if generate_vapi" "if false" + ''; + + # Broken by PCRE 2 bump in GLib. + # https://gitlab.gnome.org/GNOME/gtksourceview/-/issues/283 + doCheck = false; + + checkPhase = '' + runHook preCheck + + XDG_DATA_DIRS="$XDG_DATA_DIRS:${shared-mime-info}/share" \ + xvfb-run -s '-screen 0 800x600x24' dbus-run-session \ + --config-file=${dbus}/share/dbus-1/session.conf \ + meson test --no-rebuild --print-errorlogs + + runHook postCheck + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = "gtksourceview"; + attrPath = "gtksourceview4"; + versionPolicy = "odd-unstable"; + freeze = true; + }; + }; + + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + + meta = with lib; { + description = "Source code editing widget for GTK"; + homepage = "https://wiki.gnome.org/Projects/GtkSourceView"; + pkgConfigModules = [ "gtksourceview-4" ]; + platforms = platforms.unix; + license = licenses.lgpl21Plus; + maintainers = teams.gnome.members; + }; +}) diff --git a/nixpkgs/pkgs/development/libraries/gtksourceview/5.x.nix b/nixpkgs/pkgs/development/libraries/gtksourceview/5.x.nix new file mode 100644 index 000000000000..ee2d694c18ff --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gtksourceview/5.x.nix @@ -0,0 +1,119 @@ +{ lib +, stdenv +, fetchurl +, meson +, ninja +, pkg-config +, glib +, pcre2 +, gtk4 +, pango +, fribidi +, vala +, gi-docgen +, libxml2 +, perl +, gettext +, gnome +, gobject-introspection +, dbus +, xvfb-run +, shared-mime-info +, testers +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "gtksourceview"; + version = "5.10.0"; + + outputs = [ "out" "dev" "devdoc" ]; + + src = let + inherit (finalAttrs) pname version; + in fetchurl { + url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "s4owEMNPWeE7BRdenSDKAqMRBEP+wrHldHQTgBvJwj8="; + }; + + patches = [ + # By default, the library loads syntaxes from XDG_DATA_DIRS and user directory + # but not from its own datadr (it assumes it will be in XDG_DATA_DIRS). + # Since this is not generally true with Nix, let’s add $out/share unconditionally. + ./4.x-nix_share_path.patch + ]; + + nativeBuildInputs = [ + meson + ninja + pkg-config + gettext + perl + gobject-introspection + vala + gi-docgen + gtk4 # for gtk4-update-icon-cache checked during configure + ]; + + buildInputs = [ + glib + pcre2 + pango + fribidi + libxml2 + ]; + + propagatedBuildInputs = [ + # Required by gtksourceview-5.0.pc + gtk4 + # Used by gtk_source_language_manager_guess_language + shared-mime-info + ]; + + nativeCheckInputs = [ + xvfb-run + dbus + ]; + + mesonFlags = [ + "-Dgtk_doc=true" + ]; + + doCheck = stdenv.isLinux; + + checkPhase = '' + runHook preCheck + + env \ + XDG_DATA_DIRS="$XDG_DATA_DIRS:${shared-mime-info}/share" \ + GTK_A11Y=none \ + xvfb-run -s '-screen 0 800x600x24' dbus-run-session \ + --config-file=${dbus}/share/dbus-1/session.conf \ + meson test --no-rebuild --print-errorlogs + + runHook postCheck + ''; + + postFixup = '' + # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back. + moveToOutput "share/doc" "$devdoc" + ''; + + passthru = { + updateScript = gnome.updateScript { + packageName = "gtksourceview"; + attrPath = "gtksourceview5"; + versionPolicy = "odd-unstable"; + }; + }; + + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + + meta = with lib; { + description = "Source code editing widget for GTK"; + homepage = "https://wiki.gnome.org/Projects/GtkSourceView"; + pkgConfigModules = [ "gtksourceview-5" ]; + platforms = platforms.unix; + license = licenses.lgpl21Plus; + maintainers = teams.gnome.members; + }; +}) |