with structuredAttrs lists will be bash arrays which cannot be exported which will be a issue with some patches and some wrappers like cc-wrapper this makes it clearer that NIX_CFLAGS_COMPILE must be a string as lists in env cause a eval failure
112 lines
3.1 KiB
Nix
112 lines
3.1 KiB
Nix
{ lib, stdenv, fetchFromGitHub, unzip, zip, libiconv, perl, aspell, dos2unix
|
|
, singleWordlist ? null
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "scowl";
|
|
version = "2020.12.07";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "en-wl";
|
|
repo = "wordlist";
|
|
rev = "rel-${version}";
|
|
sha256 = "sha256-J61jhpnZcXMnoGlSuSCrKDZnnyp3Snjr+fUpTVKX64g=";
|
|
};
|
|
|
|
postPatch = ''
|
|
substituteInPlace scowl/src/Makefile \
|
|
--replace g++ c++
|
|
'';
|
|
|
|
nativeBuildInputs = [ unzip zip perl aspell dos2unix ];
|
|
buildInputs = lib.optional (!stdenv.isLinux) libiconv;
|
|
|
|
env.NIX_CFLAGS_COMPILE = "-Wno-narrowing";
|
|
|
|
preConfigure = ''
|
|
patchShebangs .
|
|
export PERL5LIB="$PERL5LIB''${PERL5LIB:+:}$PWD/varcon"
|
|
'';
|
|
|
|
postBuild = lib.optionalString (singleWordlist == null) ''
|
|
(
|
|
cd scowl/speller
|
|
make aspell
|
|
make hunspell
|
|
)
|
|
'';
|
|
|
|
enableParallelBuilding = false;
|
|
|
|
installPhase = if singleWordlist == null then ''
|
|
eval "$preInstall"
|
|
|
|
mkdir -p "$out/share/scowl"
|
|
mkdir -p "$out/lib" "$out/share/hunspell" "$out/share/myspell"
|
|
mkdir -p "$out/share/dict"
|
|
|
|
cp -r scowl/speller/aspell "$out/lib/aspell"
|
|
cp scowl/speller/*.{aff,dic} "$out/share/hunspell"
|
|
ln -s "$out/share/hunspell" "$out/share/myspell/dicts"
|
|
|
|
cp scowl/final/* "$out/share/scowl"
|
|
|
|
(
|
|
cd scowl
|
|
for region in american british british_s british_z canadian australian; do
|
|
case $region in
|
|
american)
|
|
regcode=en-us;
|
|
;;
|
|
british)
|
|
regcode=en-gb-ise;
|
|
;;
|
|
british_s)
|
|
regcode=en-gb-ise;
|
|
;;
|
|
british_z)
|
|
regcode=en-gb-ize;
|
|
;;
|
|
canadian)
|
|
regcode=en-ca;
|
|
;;
|
|
australian)
|
|
regcode=en-au;
|
|
;;
|
|
esac
|
|
regcode_var="$regcode"
|
|
if test "$region" = british; then
|
|
regcode_var="en-gb"
|
|
fi
|
|
|
|
echo $region $regcode $regcode_sz
|
|
for s in 10 20 30 35 40 50 55 60 70 80 90 95; do
|
|
./mk-list $regcode $s > "$out/share/dict/w$region.$s"
|
|
./mk-list --variants=1 $regcode_var $s > "$out/share/dict/w$region.variants.$s"
|
|
./mk-list --variants=2 $regcode_var $s > "$out/share/dict/w$region.acceptable.$s"
|
|
done
|
|
./mk-list $regcode 60 > "$out/share/dict/w$region.txt"
|
|
./mk-list --variants=1 $regcode_var 60 > "$out/share/dict/w$region.variants.txt"
|
|
./mk-list --variants=2 $regcode_var 80 > "$out/share/dict/w$region.scrabble.txt"
|
|
done
|
|
./mk-list --variants=1 en-gb 60 > "$out/share/dict/words.variants.txt"
|
|
./mk-list --variants=1 en-gb 80 > "$out/share/dict/words.scrabble.txt"
|
|
./mk-list en-gb-ise 60 > "$out/share/dict/words.txt"
|
|
)
|
|
|
|
eval "$postInstall"
|
|
'' else ''
|
|
mkdir -p "$out/share/dict"
|
|
cd scowl
|
|
./mk-list ${singleWordlist} > "$out/share/dict/words.txt"
|
|
'';
|
|
|
|
meta = {
|
|
description = "Spell checker oriented word lists";
|
|
license = lib.licenses.mit;
|
|
maintainers = [lib.maintainers.raskin];
|
|
platforms = lib.platforms.unix;
|
|
homepage = "http://wordlist.aspell.net/";
|
|
};
|
|
}
|