1{
2 fetchzip,
3 lib,
4 mecab,
5 postgresql,
6 postgresqlTestExtension,
7 stdenv,
8}:
9
10stdenv.mkDerivation (finalAttrs: {
11 pname = "tsja";
12 version = "0.5.0";
13
14 src = fetchzip {
15 url = "https://www.amris.jp/tsja/tsja-${finalAttrs.version}.tar.xz";
16 hash = "sha256-h59UhUG/7biN8NaDiGK6kXDqfhR9uMzt8CpwbJ+PpEM=";
17 };
18
19 postPatch = ''
20 substituteInPlace Makefile \
21 --replace-fail /usr/local/pgsql ${lib.getDev postgresql} \
22 --replace-fail -L/usr/local/lib "" \
23 --replace-fail -I/usr/local/include ""
24 substituteInPlace tsja.c --replace-fail /usr/local/lib/mecab ${mecab}/lib/mecab
25 '';
26
27 buildInputs = [
28 mecab
29 postgresql
30 ];
31
32 installPhase = ''
33 mkdir -p $out/lib $out/share/postgresql/extension
34 mv libtsja.so $out/lib
35 mv dbinit_libtsja.txt $out/share/postgresql/extension/libtsja_dbinit.sql
36 '';
37
38 passthru.tests.extension = postgresqlTestExtension {
39 inherit (finalAttrs) finalPackage;
40 sql = ''
41 \i ${finalAttrs.finalPackage}/share/postgresql/extension/libtsja_dbinit.sql
42 '';
43 asserts = [
44 {
45 query = "EXISTS (SELECT 1 FROM ts_debug('japanese', 'PostgreSQLで日本語のテキスト検索ができます。') WHERE lexemes = '{日本語}')";
46 expected = "true";
47 description = "make sure '日本語' is parsed as a separate lexeme";
48 }
49 ];
50 };
51
52 meta = {
53 description = "PostgreSQL extension implementing Japanese text search";
54 homepage = "https://www.amris.jp/tsja/index.html";
55 maintainers = with lib.maintainers; [ chayleaf ];
56 # GNU-specific linker options are used
57 platforms = lib.platforms.gnu;
58 license = lib.licenses.gpl2Only;
59 };
60})