aspell: various fixes and updates (#46383)

SimpleFilesystemView was producing an error due to looking for a
<prefix>/lib/.spack folder. Also, view_destination had no effect and
wasn't called. Changed this by instead patching in the correct
installation prefix for dictionaries.

Since aspell is using the resolved path of the executable prefix, the
runtime environment variable ASPELL_CONF is set to correct the prefix
when in a view. With this change aspell can now find installed
dictionaries. Verified with:

aspell dump config
aspell dump dicts
This commit is contained in:
Richard Berger 2024-09-27 02:48:08 -06:00 committed by GitHub
parent 653556e881
commit 7d6231b38a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 26 additions and 14 deletions

View File

@ -2,6 +2,8 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details. # Spack Project Developers. See the top-level COPYRIGHT file for details.
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
import llnl.util.filesystem as fs import llnl.util.filesystem as fs
import spack.directives import spack.directives
@ -46,18 +48,12 @@ class AspellDictPackage(AutotoolsPackage):
#: Override the default autotools builder #: Override the default autotools builder
AutotoolsBuilder = AspellBuilder AutotoolsBuilder = AspellBuilder
def view_destination(self, view):
aspell_spec = self.spec["aspell"]
if view.get_projection_for_spec(aspell_spec) != aspell_spec.prefix:
raise spack.package_base.ExtensionError(
"aspell does not support non-global extensions"
)
aspell = aspell_spec.command
return aspell("dump", "config", "dict-dir", output=str).strip()
def view_source(self):
return self.prefix.lib
def patch(self): def patch(self):
fs.filter_file(r"^dictdir=.*$", "dictdir=/lib", "configure") aspell_spec = self.spec["aspell"]
fs.filter_file(r"^datadir=.*$", "datadir=/lib", "configure") aspell = aspell_spec.command
dictdir = aspell("dump", "config", "dict-dir", output=str).strip()
datadir = aspell("dump", "config", "data-dir", output=str).strip()
dictdir = os.path.relpath(dictdir, aspell_spec.prefix)
datadir = os.path.relpath(datadir, aspell_spec.prefix)
fs.filter_file(r"^dictdir=.*$", f"dictdir=/{dictdir}", "configure")
fs.filter_file(r"^datadir=.*$", f"datadir=/{datadir}", "configure")

View File

@ -27,3 +27,12 @@ class Aspell(AutotoolsPackage, GNUMirrorPackage):
patch("fix_cpp.patch") patch("fix_cpp.patch")
patch("issue-519.patch", when="@:0.60.6.1") patch("issue-519.patch", when="@:0.60.6.1")
# workaround due to https://github.com/GNUAspell/aspell/issues/591
@run_after("configure", when="@0.60.8:")
def make_missing_files(self):
make("gen/dirs.h")
make("gen/static_filters.src.cpp")
def setup_run_environment(self, env):
env.set("ASPELL_CONF", f"prefix {self.prefix}")

View File

@ -14,6 +14,10 @@ class Aspell6De(AspellDictPackage, GNUMirrorPackage):
license("GPL-2.0-or-later") license("GPL-2.0-or-later")
version(
"6-de-20161207-7-0",
sha256="c2125d1fafb1d4effbe6c88d4e9127db59da9ed92639c7cbaeae1b7337655571",
)
version( version(
"6-de-20030222-1", "6-de-20030222-1",
sha256="ba6c94e11bc2e0e6e43ce0f7822c5bba5ca5ac77129ef90c190b33632416e906", sha256="ba6c94e11bc2e0e6e43ce0f7822c5bba5ca5ac77129ef90c190b33632416e906",

View File

@ -12,6 +12,9 @@ class Aspell6En(AspellDictPackage, GNUMirrorPackage):
homepage = "http://aspell.net/" homepage = "http://aspell.net/"
gnu_mirror_path = "aspell/dict/en/aspell6-en-2017.01.22-0.tar.bz2" gnu_mirror_path = "aspell/dict/en/aspell6-en-2017.01.22-0.tar.bz2"
version(
"2020.12.07-0", sha256="4c8f734a28a088b88bb6481fcf972d0b2c3dc8da944f7673283ce487eac49fb3"
)
version( version(
"2017.01.22-0", sha256="93c73fae3eab5ea3ca6db3cea8770715a820f1b7d6ea2b932dd66a17f8fd55e1" "2017.01.22-0", sha256="93c73fae3eab5ea3ca6db3cea8770715a820f1b7d6ea2b932dd66a17f8fd55e1"
) )