Add package for aspell and ass't dictionaries (#3890)
* Add package for aspell and ass't dictionaries Add a package definition for aspell. Add a handful of dictionaries to convince myself that the support for a bunch of dictionaries works. * Flake8 cleanup * Use six's version of urlparse `urlparse` is not python3 friendly. This works around it (stolen from `.../cmd/md5.py`). * Fix incorrect trimming regexp * Clean up dictionary build - more parsimonious use of `which` (`make()` has already been made) - use `sh` instead of `bash` * Use a helper method to generate info for variants I figured out my issues with static methods. I *think* that it this is pythonic. * Convert aspell to an extendable package Convert aspell to be extendable and rework the dictionaries to be extensions. As it stands, there's a great deal of cut and paste in the dictionaries, I'll abstract that out next. The {de,}activate methods copy a great deal of code out of package.py. Perhaps there's a better way.... * Create AspellDictPackage and use it for the dictionaries Reduce the repeated code, pull it into a base class. I'm confused about why 'from spack import *' wasn't more useful in the base class. * Oops, -de & -es should be AspellDictPackages too * Typo: pakcage -> package * Address some commentary * Update copyright dates, 2016->2017
This commit is contained in:
parent
5ccc9c17dc
commit
0d1c36e559
@ -177,6 +177,7 @@
|
||||
|
||||
from spack.package import Package, run_before, run_after, on_package_attributes
|
||||
from spack.build_systems.makefile import MakefilePackage
|
||||
from spack.build_systems.aspell_dict import AspellDictPackage
|
||||
from spack.build_systems.autotools import AutotoolsPackage
|
||||
from spack.build_systems.cmake import CMakePackage
|
||||
from spack.build_systems.qmake import QMakePackage
|
||||
@ -193,6 +194,7 @@
|
||||
'on_package_attributes',
|
||||
'Package',
|
||||
'MakefilePackage',
|
||||
'AspellDictPackage',
|
||||
'AutotoolsPackage',
|
||||
'CMakePackage',
|
||||
'QMakePackage',
|
||||
|
57
lib/spack/spack/build_systems/aspell_dict.py
Normal file
57
lib/spack/spack/build_systems/aspell_dict.py
Normal file
@ -0,0 +1,57 @@
|
||||
##############################################################################
|
||||
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory.
|
||||
#
|
||||
# This file is part of Spack.
|
||||
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||
# LLNL-CODE-647188
|
||||
#
|
||||
# For details, see https://github.com/llnl/spack
|
||||
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License (as
|
||||
# published by the Free Software Foundation) version 2.1, February 1999.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||
# conditions of the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
# Why doesn't this work for me?
|
||||
# from spack import *
|
||||
from llnl.util.filesystem import filter_file
|
||||
from spack.build_systems.autotools import AutotoolsPackage
|
||||
from spack.directives import extends
|
||||
from spack.util.executable import which
|
||||
|
||||
|
||||
#
|
||||
# Aspell dictionaries install their bits into their prefix.lib
|
||||
# and when activated they'll get symlinked into the appropriate aspell's
|
||||
# dict dir (see aspell's {de,}activate methods).
|
||||
#
|
||||
# They aren't really an Autotools package, but it's close enough
|
||||
# that this works if we override configure().
|
||||
class AspellDictPackage(AutotoolsPackage):
|
||||
"""Specialized class for builing aspell dictionairies."""
|
||||
|
||||
extends('aspell')
|
||||
|
||||
def patch(self):
|
||||
filter_file(r'^dictdir=.*$', 'dictdir=/lib', 'configure')
|
||||
filter_file(r'^datadir=.*$', 'datadir=/lib', 'configure')
|
||||
|
||||
def configure(self, spec, prefix):
|
||||
aspell = spec['aspell'].prefix.bin.aspell
|
||||
prezip = spec['aspell'].prefix.bin.prezip
|
||||
destdir = prefix
|
||||
|
||||
sh = which('sh')
|
||||
sh('./configure', '--vars', "ASPELL={0}".format(aspell),
|
||||
"PREZIP={0}".format(prezip),
|
||||
"DESTDIR={0}".format(destdir))
|
73
var/spack/repos/builtin/packages/aspell/package.py
Normal file
73
var/spack/repos/builtin/packages/aspell/package.py
Normal file
@ -0,0 +1,73 @@
|
||||
##############################################################################
|
||||
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory.
|
||||
#
|
||||
# This file is part of Spack.
|
||||
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||
# LLNL-CODE-647188
|
||||
#
|
||||
# For details, see https://github.com/llnl/spack
|
||||
# Please also see the LICENSE file for our notice and the LGPL.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License (as
|
||||
# published by the Free Software Foundation) version 2.1, February 1999.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||
# conditions of the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
from spack import *
|
||||
from llnl.util.link_tree import LinkTree
|
||||
import spack.store
|
||||
from spack.package import ExtensionConflictError
|
||||
|
||||
|
||||
# See also: AspellDictPackage
|
||||
class Aspell(AutotoolsPackage):
|
||||
"""GNU Aspell is a Free and Open Source spell checker designed to
|
||||
eventually replace Ispell."""
|
||||
|
||||
homepage = "http://aspell.net/"
|
||||
url = "https://ftpmirror.gnu.org/aspell/aspell-0.60.6.1.tar.gz"
|
||||
|
||||
extendable = True # support activating dictionaries
|
||||
|
||||
version('0.60.6.1', 'e66a9c9af6a60dc46134fdacf6ce97d7')
|
||||
|
||||
# The dictionaries install all their bits into their prefix.lib dir,
|
||||
# we want to link them into aspell's dict-dir.
|
||||
# These are identical to what's in spack/package.py except
|
||||
# for using:
|
||||
# - extension.prefix.lib instead of extension.prefix in LinkTree()
|
||||
# - dest_dir instead of self.prefix in tree.(find_conflict|merge)()
|
||||
def activate(self, extension, **kwargs):
|
||||
aspell = which(self.prefix.bin.aspell)
|
||||
dest_dir = aspell('dump', 'config', 'dict-dir', output=str).strip()
|
||||
tree = LinkTree(extension.prefix.lib)
|
||||
|
||||
def ignore(filename):
|
||||
return (filename in spack.store.layout.hidden_file_paths or
|
||||
kwargs.get('ignore', lambda f: False)(filename))
|
||||
|
||||
conflict = tree.find_conflict(dest_dir, ignore=ignore)
|
||||
if conflict:
|
||||
raise ExtensionConflictError(conflict)
|
||||
|
||||
tree.merge(dest_dir, ignore=ignore)
|
||||
|
||||
def deactivate(self, extension, **kwargs):
|
||||
aspell = which(self.prefix.bin.aspell)
|
||||
dest_dir = aspell('dump', 'config', 'dict-dir', output=str).strip()
|
||||
|
||||
def ignore(filename):
|
||||
return (filename in spack.store.layout.hidden_file_paths or
|
||||
kwargs.get('ignore', lambda f: False)(filename))
|
||||
|
||||
tree = LinkTree(extension.prefix.lib)
|
||||
tree.unmerge(dest_dir, ignore=ignore)
|
34
var/spack/repos/builtin/packages/aspell6-de/package.py
Normal file
34
var/spack/repos/builtin/packages/aspell6-de/package.py
Normal file
@ -0,0 +1,34 @@
|
||||
##############################################################################
|
||||
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory.
|
||||
#
|
||||
# This file is part of Spack.
|
||||
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||
# LLNL-CODE-647188
|
||||
#
|
||||
# For details, see https://github.com/llnl/spack
|
||||
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License (as
|
||||
# published by the Free Software Foundation) version 2.1, February 1999.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||
# conditions of the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
from spack import *
|
||||
|
||||
|
||||
class Aspell6De(AspellDictPackage):
|
||||
"""German (de) dictionary for aspell."""
|
||||
|
||||
homepage = "http://aspell.net/"
|
||||
url = "ftp://ftp.gnu.org/gnu/aspell/dict/de/aspell6-de-20030222-1.tar.bz2"
|
||||
|
||||
version('6-de-20030222-1', '5950c5c8a36fc93d4d7616591bace6a6')
|
34
var/spack/repos/builtin/packages/aspell6-en/package.py
Normal file
34
var/spack/repos/builtin/packages/aspell6-en/package.py
Normal file
@ -0,0 +1,34 @@
|
||||
##############################################################################
|
||||
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory.
|
||||
#
|
||||
# This file is part of Spack.
|
||||
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||
# LLNL-CODE-647188
|
||||
#
|
||||
# For details, see https://github.com/llnl/spack
|
||||
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License (as
|
||||
# published by the Free Software Foundation) version 2.1, February 1999.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||
# conditions of the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
from spack import *
|
||||
|
||||
|
||||
class Aspell6En(AspellDictPackage):
|
||||
"""English (en) dictionary for aspell."""
|
||||
|
||||
homepage = "http://aspell.net/"
|
||||
url = "ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-2017.01.22-0.tar.bz2"
|
||||
|
||||
version('2017.01.22-0', 'a6e002076574de9dc4915967032a1dab')
|
34
var/spack/repos/builtin/packages/aspell6-es/package.py
Normal file
34
var/spack/repos/builtin/packages/aspell6-es/package.py
Normal file
@ -0,0 +1,34 @@
|
||||
##############################################################################
|
||||
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
|
||||
# Produced at the Lawrence Livermore National Laboratory.
|
||||
#
|
||||
# This file is part of Spack.
|
||||
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
|
||||
# LLNL-CODE-647188
|
||||
#
|
||||
# For details, see https://github.com/llnl/spack
|
||||
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License (as
|
||||
# published by the Free Software Foundation) version 2.1, February 1999.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
|
||||
# conditions of the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
from spack import *
|
||||
|
||||
|
||||
class Aspell6Es(AspellDictPackage):
|
||||
"""Spanish (es) dictionary for aspell."""
|
||||
|
||||
homepage = "http://aspell.net/"
|
||||
url = "ftp://ftp.gnu.org/gnu/aspell/dict/es/aspell6-es-1.11-2.tar.bz2"
|
||||
|
||||
version('1.11-2', '8406336a89c64e47e96f4153d0af70c4')
|
Loading…
Reference in New Issue
Block a user