From 80372557415a2671584458be4d02cd60bcee0641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Thu, 30 Jun 2022 14:32:42 +0200 Subject: pkgs/stardict: add stardict itself It seems to not be able to find translations but I am not using it anyway. I have it just for completeness. --- pkgs/default.nix | 6 +++-- pkgs/sdcv/wrapper.nix | 37 --------------------------- pkgs/stardict/default.nix | 54 ++++++++++++++++++++++++++++++++++++++++ pkgs/stardict/enchant2.patch | 55 +++++++++++++++++++++++++++++++++++++++++ pkgs/stardict/gcc46.patch | 11 +++++++++ pkgs/stardict/gconf.patch | 32 ++++++++++++++++++++++++ pkgs/stardict/glib2.patch | 36 +++++++++++++++++++++++++++ pkgs/stardict/gucharmap-2.patch | 12 +++++++++ pkgs/stardict/makefile.patch | 13 ++++++++++ pkgs/stardict/mariadb.patch | 13 ++++++++++ pkgs/stardict/wrapper.nix | 40 ++++++++++++++++++++++++++++++ 11 files changed, 270 insertions(+), 39 deletions(-) delete mode 100644 pkgs/sdcv/wrapper.nix create mode 100644 pkgs/stardict/default.nix create mode 100644 pkgs/stardict/enchant2.patch create mode 100644 pkgs/stardict/gcc46.patch create mode 100644 pkgs/stardict/gconf.patch create mode 100644 pkgs/stardict/glib2.patch create mode 100644 pkgs/stardict/gucharmap-2.patch create mode 100644 pkgs/stardict/makefile.patch create mode 100644 pkgs/stardict/mariadb.patch create mode 100644 pkgs/stardict/wrapper.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 9950e7b..7d3a169 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -20,11 +20,13 @@ let swaybackground = callPackage ./theme/swaybackground.nix { }; myswaylock = callPackage ./theme/myswaylock.nix { }; - sdcv-unwrapped = callPackage ./sdcv { }; - sdcv = callPackage ./sdcv/wrapper.nix { }; + stardict-unwrapped = callPackage ./stardict { }; + stardict = callPackage ./stardict/wrapper.nix { stardict = stardict-unwrapped; }; stardict-en-cz = callPackage ./stardict/en-cz.nix { }; stardict-de-cz = callPackage ./stardict/de-cz.nix { }; stardict-cz = callPackage ./stardict/cz.nix { }; + sdcv-unwrapped = callPackage ./sdcv { }; + sdcv = callPackage ./stardict/wrapper.nix { stardict = sdcv-unwrapped; }; ferdium = callPackage ./ferdium { mkFranzDerivation = callPackage ( diff --git a/pkgs/sdcv/wrapper.nix b/pkgs/sdcv/wrapper.nix deleted file mode 100644 index e26c58c..0000000 --- a/pkgs/sdcv/wrapper.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ lib, stdenv, makeBinaryWrapper -, sdcv-unwrapped -}: - -with sdcv-unwrapped; - -let - - drv = stdenv.mkDerivation rec { - inherit pname; - inherit version; - inherit meta; - - nativeBuildInputs = [ sdcv-unwrapped makeBinaryWrapper ]; - dictionaries = [ /* empty and expecting override */ ]; - - phases = [ "installPhase" ]; - installPhase = '' - mkdir -p $out/bin $out/usr/share/stardict/dic - for dic in $dictionaries; do - for path in "$dic"/usr/share/stardict/dic/*; do - [ -f "$path" ] || continue - outln="$out/usr/share/stardict/dic/${"$"}{path##*/}" - [ -e "$outln" ] && continue - ln -sf "$path" "$outln" - done - done - makeWrapper ${sdcv-unwrapped}/bin/sdcv $out/bin/sdcv \ - --set STARDICT_DATA_DIR $out/usr/share/stardict/dic - ''; - - passthru.withDictionaries = dicts: drv.overrideAttrs (oldAttrs: { - dictionaries = dicts; - }); - }; - -in drv diff --git a/pkgs/stardict/default.nix b/pkgs/stardict/default.nix new file mode 100644 index 0000000..03a6b63 --- /dev/null +++ b/pkgs/stardict/default.nix @@ -0,0 +1,54 @@ +{ lib, stdenv, fetchurl +, autoreconfHook, wrapGAppsHook +, pkg-config, automake, autoconf, libtool, intltool, gnome-doc-utils, libxslt +, gnome2, gtk2, libxml2, enchant , mariadb-connector-c, pcre +, speech-tools, speech-toolsDisable ? false +, espeak, espeakDisable ? false +}: + +with lib; + +stdenv.mkDerivation rec { + pname = "stardict"; + version = "3.0.6"; + + src = fetchurl { + url = "https://downloads.sourceforge.net/project/stardict-4/${version}/stardict-${version}.tar.bz2"; + sha256 = "1rw2dg1d489gjjx9957j2jdmjlvylv31pnx3142lwq3pi5d6j2ka"; + }; + patches = [ + ./enchant2.patch + ./gcc46.patch + ./gconf.patch + ./glib2.patch + ./makefile.patch + ./mariadb.patch + ]; + + nativeBuildInputs = [ + autoreconfHook wrapGAppsHook + pkg-config intltool gnome-doc-utils libxslt + ]; + buildInputs = [ + gnome2.gnome-common gnome2.GConf + gtk2 libxml2 enchant mariadb-connector-c pcre + ] + ++ optional (!speech-toolsDisable) speech-tools + ++ optional (!espeakDisable) espeak; + configureFlags = [ + "--disable-gnome-support" + "--disable-gucharmap" + "--disable-scrollkeeper" + "--disable-festival" + "--disable-gpe-support" + "--disable-schemas-install" + ] + ++ optional speech-toolsDisable "--disable-speech-tools" + ++ optional espeakDisable "--disable-espeak"; + + meta = with lib; { + description = "Cross-platform and international dictionary software"; + homepage = "http://stardict-4.sourceforge.net/"; + license = licenses.gpl3; + }; +} diff --git a/pkgs/stardict/enchant2.patch b/pkgs/stardict/enchant2.patch new file mode 100644 index 0000000..56accdb --- /dev/null +++ b/pkgs/stardict/enchant2.patch @@ -0,0 +1,55 @@ +From: Boyuan Yang +Date: Fri, 31 Jan 2020 13:14:01 -0500 +Subject: dict/configure.ac: Add support for enchant 2 + +--- + dict/configure.ac | 29 +++++++++++++++++++++-------- + 1 file changed, 21 insertions(+), 8 deletions(-) + +diff --git a/dict/configure.ac b/dict/configure.ac +index fc7101a..ea5b30c 100644 +--- a/dict/configure.ac ++++ b/dict/configure.ac +@@ -45,21 +45,34 @@ dnl ================================================================ + dnl spell plugin checks: enchant. + dnl ================================================================ + +-ENCHANT_REQUIRED=1.2.0 ++ENCHANT1_REQUIRED=1.2.0 ++ENCHANT2_REQUIRED=2.2.3 + AC_ARG_ENABLE([spell], + AS_HELP_STRING([--disable-spell],[Disable spell plugin (default: enabled)]), + [enable_enchant=$enableval], + [enable_enchant=yes]) + + if test "x$enable_enchant" = "xyes" ; then +- PKG_CHECK_MODULES(ENCHANT, enchant >= $ENCHANT_REQUIRED, \ +- have_enchant=yes, have_enchant=no) +- if test "x$have_enchant" = "xyes"; then +- ENCHANT_CFLAGS="${ENCHANT_CFLAGS}" +- ENCHANT_LIBS="${ENCHANT_LIBS}" +- SPELL_PLUGIN_DIR="stardict-spell-plugin" ++ PKG_CHECK_MODULES([ENCHANT2], enchant-2 >= $ENCHANT2_REQUIRED, \ ++ have_enchant2=yes, have_enchant2=no) ++ PKG_CHECK_MODULES([ENCHANT1], enchant >= $ENCHANT1_REQUIRED, \ ++ have_enchant1=yes, have_enchant1=no) ++ if test "x$have_enchant2" = "xyes"; then ++ if test "x$have_enchant1" = "xyes"; then ++ AC_MSG_ERROR([You have both Enchant 1.x and Enchant 2.x installed. This is not supported.]) ++ else ++ ENCHANT_CFLAGS="${ENCHANT2_CFLAGS}" ++ ENCHANT_LIBS="${ENCHANT2_LIBS}" ++ SPELL_PLUGIN_DIR="stardict-spell-plugin" ++ fi + else +- AC_MSG_ERROR([Enchant library not found or too old. Use --disable-spell to build without spell plugin.]) ++ if test "x$have_enchant1" = "xyes"; then ++ ENCHANT_CFLAGS="${ENCHANT1_CFLAGS}" ++ ENCHANT_LIBS="${ENCHANT1_LIBS}" ++ SPELL_PLUGIN_DIR="stardict-spell-plugin" ++ else ++ AC_MSG_ERROR([Enchant library not found or too old. Use --disable-spell to build without spell plugin.]) ++ fi + fi + else + ENCHANT_CFLAGS= diff --git a/pkgs/stardict/gcc46.patch b/pkgs/stardict/gcc46.patch new file mode 100644 index 0000000..944b963 --- /dev/null +++ b/pkgs/stardict/gcc46.patch @@ -0,0 +1,11 @@ +diff -aur old/dict/stardict-plugins/stardict-wordnet-plugin/utils.h new/dict/stardict-plugins/stardict-wordnet-plugin/utils.h +--- old/dict/stardict-plugins/stardict-wordnet-plugin/utils.h 2011-07-18 06:58:58.519404744 -0700 ++++ new/dict/stardict-plugins/stardict-wordnet-plugin/utils.h 2011-07-18 07:01:10.739734313 -0700 +@@ -26,6 +26,7 @@ + #ifndef __TYPES_H__ + #define __TYPES_H__ + ++#include + #include + + typedef float single; diff --git a/pkgs/stardict/gconf.patch b/pkgs/stardict/gconf.patch new file mode 100644 index 0000000..3c430ab --- /dev/null +++ b/pkgs/stardict/gconf.patch @@ -0,0 +1,32 @@ +From: Jeremy Bicha +Date: Tue, 16 Oct 2018 22:55:32 -0400 +Subject: build without gconf + +dict/doc/Readme.mac recommends removing the AM_GCONF_SOURCE_2 lines + +which also makes autoreconf happy +--- + dict/configure.ac | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/dict/configure.ac b/dict/configure.ac +index 3225c6e..fc7101a 100644 +--- a/dict/configure.ac ++++ b/dict/configure.ac +@@ -318,7 +318,6 @@ elif test "x${enable_maemo_support}" = "xyes" ; then + if test x"$GCONFTOOL" = xno; then + AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf]) + fi +- AM_GCONF_SOURCE_2 + elif test "x${enable_darwin_support}" = "xyes" ; then + echo "Enable darwin suppport"; + AC_DEFINE([CONFIG_DARWIN],[], [Compile with darwin support]) +@@ -339,7 +338,6 @@ dnl ********************************************* + if test x"$GCONFTOOL" = xno; then + AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf]) + fi +- AM_GCONF_SOURCE_2 + + dnl ========================================================================== + dnl stuff for the CORBA interface + diff --git a/pkgs/stardict/glib2.patch b/pkgs/stardict/glib2.patch new file mode 100644 index 0000000..bd0f6ba --- /dev/null +++ b/pkgs/stardict/glib2.patch @@ -0,0 +1,36 @@ +diff -Naur old/dict/configure.ac new/dict/configure.ac +--- old/dict/configure.ac 2011-07-03 16:58:40.000000000 +1000 ++++ new/dict/configure.ac 2012-07-12 22:31:52.875176842 +1000 +@@ -266,6 +266,9 @@ + fi + AC_SUBST(WIKI_PARSEDATA_PLUGIN_DIR) + ++GMODULE2_LIBS=`pkg-config --libs gmodule-2.0` ++AC_SUBST([GMODULE2_LIBS]) ++ + dnl ================================================================ + dnl main program checks. + dnl ================================================================ +diff -Naur old/dict/src/Makefile.am new/dict/src/Makefile.am +--- old/dict/src/Makefile.am 2011-07-03 16:58:40.000000000 +1000 ++++ new/dict/src/Makefile.am 2012-07-12 22:29:53.714870692 +1000 +@@ -33,7 +33,7 @@ + stardict_DEPENDENCIES = lib/libstardict.la $(LOCAL_SIGCPP_LIBFILE) + stardict_LDFLAGS = + ## place libstardict.la before any system library, otherwise build with --as-needed linker option may fail +-stardict_LDADD = lib/libstardict.la $(STARDICT_LIBS) $(LOCAL_SIGCPP_LIBFILE) ++stardict_LDADD = lib/libstardict.la $(STARDICT_LIBS) $(LOCAL_SIGCPP_LIBFILE) $(GMODULE2_LIBS) + + if !GNOME_SUPPORT + if MAEMO_SUPPORT +diff -Naur old/dict/src/tomboykeybinder.h new/dict/src/tomboykeybinder.h +--- old/dict/src/tomboykeybinder.h 2011-07-03 16:58:40.000000000 +1000 ++++ new/dict/src/tomboykeybinder.h 2012-07-12 22:28:04.337920391 +1000 +@@ -21,7 +21,6 @@ + #ifndef __TOMBOY_KEY_BINDER_H__ + #define __TOMBOY_KEY_BINDER_H__ + +-#include + + G_BEGIN_DECLS + diff --git a/pkgs/stardict/gucharmap-2.patch b/pkgs/stardict/gucharmap-2.patch new file mode 100644 index 0000000..9a18725 --- /dev/null +++ b/pkgs/stardict/gucharmap-2.patch @@ -0,0 +1,12 @@ +diff -Naur old/dict/configure.ac new/dict/configure.ac +--- old/dict/configure.ac 2022-06-30 10:07:59.300093597 +0200 ++++ new/dict/configure.ac 2022-06-30 10:06:12.494954051 +0200 +@@ -94,7 +94,7 @@ + [enable_gucharmap=yes]) + + if test "x$enable_gucharmap" = "xyes" ; then +- PKG_CHECK_MODULES(GUCHARMAP, [gucharmap-2], have_gucharmap=yes, have_gucharmap=no) ++ PKG_CHECK_MODULES(GUCHARMAP, [gucharmap], have_gucharmap=yes, have_gucharmap=no) + if test "x$have_gucharmap" = "xyes"; then + GUCHARMAP_CFLAGS="${GUCHARMAP_CFLAGS}" + GUCHARMAP_LIBS="${GUCHARMAP_LIBS}" diff --git a/pkgs/stardict/makefile.patch b/pkgs/stardict/makefile.patch new file mode 100644 index 0000000..c7b3558 --- /dev/null +++ b/pkgs/stardict/makefile.patch @@ -0,0 +1,13 @@ +Disable compilation of stuff irrelevant to NixOS + +--- a/dict/Makefile.am ++++ b/dict/Makefile.am +@@ -1,7 +1,6 @@ + ## Process this file with automake to produce Makefile.in + +-SUBDIRS = m4 src stardict-plugins tests pixmaps po help data doc \ +- debian-upstream mac_dist msvc_2008 ++SUBDIRS = m4 src stardict-plugins tests pixmaps po help data doc + ACLOCAL_AMFLAGS = -I m4 + + EXTRA_DIST = \ diff --git a/pkgs/stardict/mariadb.patch b/pkgs/stardict/mariadb.patch new file mode 100644 index 0000000..b525d05 --- /dev/null +++ b/pkgs/stardict/mariadb.patch @@ -0,0 +1,13 @@ +diff --git a/tools/src/wikipediaImage.cpp b/tools/src/wikipediaImage.cpp +index ff38f50..df5191b 100644 +--- a/tools/src/wikipediaImage.cpp ++++ b/tools/src/wikipediaImage.cpp +@@ -31,7 +31,7 @@ void dump_file() + MYSQL mysql; + if (!mysql_init(&mysql)) + return; +- if (!mysql_real_connect(&mysql, CONN_HOST , CONN_USER , CONN_PASS, NULL , MYSQL_PORT, NULL, 0)) ++ if (!mysql_real_connect(&mysql, CONN_HOST , CONN_USER , CONN_PASS, NULL , MARIADB_PORT, NULL, 0)) + return; + if (mysql_select_db(&mysql, CONN_DB)) + return; diff --git a/pkgs/stardict/wrapper.nix b/pkgs/stardict/wrapper.nix new file mode 100644 index 0000000..6547728 --- /dev/null +++ b/pkgs/stardict/wrapper.nix @@ -0,0 +1,40 @@ +{ lib, stdenv, makeBinaryWrapper +, stardict +}: + +with stardict; + +let + + drv = stdenv.mkDerivation rec { + inherit pname; + inherit version; + inherit meta; + + nativeBuildInputs = [ stardict makeBinaryWrapper ]; + dictionaries = [ /* empty and expecting override */ ]; + + phases = [ "installPhase" ]; + installPhase = '' + mkdir -p $out/bin $out/usr/share/stardict/dic + for dic in $dictionaries; do + for path in "$dic"/usr/share/stardict/dic/*; do + [ -f "$path" ] || continue + outln="$out/usr/share/stardict/dic/${"$"}{path##*/}" + [ -e "$outln" ] && continue + ln -sf "$path" "$outln" + done + done + + for bin in ${stardict}/bin/*; do + makeWrapper "$bin" "$out/bin/${"$"}{bin##*/bin/}" \ + --set STARDICT_DATA_DIR "$out/usr/share/stardict/dic" + done + ''; + + passthru.withDictionaries = dicts: drv.overrideAttrs (oldAttrs: { + dictionaries = dicts; + }); + }; + +in drv -- cgit v1.2.3