diff options
author | Michael Raskin <7c6f434c@mail.ru> | 2008-03-07 05:54:54 +0000 |
---|---|---|
committer | Michael Raskin <7c6f434c@mail.ru> | 2008-03-07 05:54:54 +0000 |
commit | 7786a5ad1e5b78c07a1d5f0c788b89bae03408f4 (patch) | |
tree | 6daace72456ff90d00b74503dcba73a95a302c51 /pkgs/servers/dict | |
parent | 8b48a5c7311bf09f64ec7bd2a0e0b45cb1ee9c35 (diff) | |
download | nixpkgs-7786a5ad1e5b78c07a1d5f0c788b89bae03408f4.tar nixpkgs-7786a5ad1e5b78c07a1d5f0c788b89bae03408f4.tar.gz nixpkgs-7786a5ad1e5b78c07a1d5f0c788b89bae03408f4.tar.bz2 nixpkgs-7786a5ad1e5b78c07a1d5f0c788b89bae03408f4.tar.lz nixpkgs-7786a5ad1e5b78c07a1d5f0c788b89bae03408f4.tar.xz nixpkgs-7786a5ad1e5b78c07a1d5f0c788b89bae03408f4.tar.zst nixpkgs-7786a5ad1e5b78c07a1d5f0c788b89bae03408f4.zip |
Some updates to dict dictionaries.
svn path=/nixpkgs/trunk/; revision=11005
Diffstat (limited to 'pkgs/servers/dict')
-rw-r--r-- | pkgs/servers/dict/dictd-db-collector.nix | 76 | ||||
-rw-r--r-- | pkgs/servers/dict/dictd-db.nix | 19 |
2 files changed, 87 insertions, 8 deletions
diff --git a/pkgs/servers/dict/dictd-db-collector.nix b/pkgs/servers/dict/dictd-db-collector.nix new file mode 100644 index 00000000000..91cebac5c47 --- /dev/null +++ b/pkgs/servers/dict/dictd-db-collector.nix @@ -0,0 +1,76 @@ +{stdenv, lib, dict}: +({dictlist, allowList ? ["127.0.0.1"], denyList ? []}: +/* + dictlist is a list of form + [ { filename = /path/to/files/basename; + name = "name"; } ] + basename.dict.dz and basename.index should be + dict files. Or look below for other options. + allowList is a list of IP/domain *-wildcarded strings + denyList is the same.. +*/ + +let + link_arguments = map + (x: '' "${x.filename}" '') + dictlist; + databases = lib.concatStrings (map (x : + " + database ${x.name} { + data ${x.filename}.dict.dz + index ${x.filename}.index + index_word ${x.filename}.word + index_suffix ${x.filename}.suffix + } + ") dictlist); + allow = lib.concatStrings (map (x: "allow ${x}\n") allowList); + deny = lib.concatStrings (map (x: "deny ${x}\n") denyList); + accessSection = " + access { + ${allow} + ${deny} + } + "; + installPhase = '' + ensureDir $out/share/dictd + cd $out/share/dictd + for j in ${toString link_arguments}; do + if test -d "$j"; then + if test -d "$j"/share/dictd ; then + echo "Got store path $j" + j="$j"/share/dictd + fi + echo "Directory reference: $j" + i=$(ls "$j"/*.index) + i="''${i%.index}"; + else + i="$j"; + fi + echo "Basename is $i" + if test -e "$i".dict.dz; then + ln -s "$i".dict.dz + else + cp "$i".dict . + dictzip "$(basename "$i")".dict + fi + ln -s "$i".index . + locale=$(cat "$(dirname "$i")"/locale) + LC_ALL=$locale dictfmt_index2word < "$(basename "$i")".index > "$(basename "$i")".word || true + LC_ALL=$locale dictfmt_index2suffix < "$(basename "$i")".index > "$(basename "$i")".suffix || true + done + echo "${accessSection}" > dictd.conf + cat <<EOF >> dictd.conf +${databases} +EOF + ''; + +in + +stdenv.mkDerivation { + name = "dictd-dbs"; + + phases = ["installPhase"]; + buildInputs = [dict]; + + inherit installPhase; +}) diff --git a/pkgs/servers/dict/dictd-db.nix b/pkgs/servers/dict/dictd-db.nix index 77056a4304b..a93e0629f2e 100644 --- a/pkgs/servers/dict/dictd-db.nix +++ b/pkgs/servers/dict/dictd-db.nix @@ -1,6 +1,6 @@ { builderDefs }: -let makeDictdDB = _src: _name: _subdir: +let makeDictdDB = _src: _name: _subdir: _locale: with builderDefs {src="";} null; let localDefs = builderDefs (rec { src=_src; @@ -8,6 +8,7 @@ with builderDefs {src="";} null; ensureDir $out/share/dictd tar xf ${src} cp $(ls ./${_subdir}/*.{dict*,index} || true) $out/share/dictd + echo "${_locale}" >$out/share/dictd/locale '') ["minInit" "addInputs" "defEnsureDir"]; buildInputs = []; @@ -16,6 +17,8 @@ with builderDefs {src="";} null; in with localDefs; stdenv.mkDerivation rec { name = "dictd-db-${_name}"; + locale = _locale; + dbName = _name; builder = writeScript (name + "-builder") (textClosure localDefs [doInstall doForceShare doPropagate]); @@ -28,7 +31,7 @@ stdenv.mkDerivation rec { }; # Probably a bug in some FreeDict release files, but easier to trivially # work around than report. Not that it can cause any other problems.. -makeDictdDBFreedict = _src: _name: makeDictdDB _src _name "{.,bin}"; +makeDictdDBFreedict = _src: _name: _locale: makeDictdDB _src _name "{.,bin}" _locale; fetchurl = (builderDefs {src="";} null).fetchurl; in @@ -37,26 +40,26 @@ in nld2eng = makeDictdDBFreedict (fetchurl { url = http://prdownloads.sourceforge.net/freedict/nld-eng.tar.gz; sha256 = "1vhw81pphb64fzsjvpzsnnyr34ka2fxizfwilnxyjcmpn9360h07"; - }) "nld-eng"; + }) "nld-eng" "nl_NL"; eng2nld = makeDictdDBFreedict (fetchurl { url = http://downloads.sourceforge.net/freedict/eng-nld.tar.gz; sha256 = "0rcg28ldykv0w2mpxc6g4rqmfs33q7pbvf68ssy1q9gpf6mz7vcl"; - }) "eng-nld"; + }) "eng-nld" "en_UK"; eng2rus = makeDictdDBFreedict (fetchurl { url = http://downloads.sourceforge.net/freedict/eng-rus.tar.gz; sha256 = "15409ivhww1wsfjr05083pv6mg10bak8v5pg1wkiqybk7ck61rry"; - }) "eng-rus"; + }) "eng-rus" "en_UK"; fra2eng = makeDictdDBFreedict (fetchurl { url = http://downloads.sourceforge.net/freedict/fra-eng.tar.gz; sha256 = "0sdd88s2zs5whiwdf3hd0s4pzzv75sdsccsrm1wxc87l3hjm85z3"; - }) "fra-eng"; + }) "fra-eng" "fr_FR"; eng2fra = makeDictdDBFreedict (fetchurl { url = http://downloads.sourceforge.net/freedict/eng-fra.tar.gz; sha256 = "0fi6rrnbqnhc6lq8d0nmn30zdqkibrah0mxfg27hsn9z7alwbj3m"; - }) "eng-fra"; + }) "eng-fra" "en_UK"; mueller_eng2rus = makeDictdDB (fetchurl { url = http://downloads.sourceforge.net/mueller-dict/mueller-dict-3.1.tar.gz; sha256 = "04r5xxznvmcb8hkxqbjgfh2gxvbdd87jnhqn5gmgvxxw53zpwfmq"; - }) "mueller-eng-rus" "mueller-dict-*/dict"; + }) "mueller-eng-rus" "mueller-dict-*/dict" "en_UK"; } |