summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGeorge Hartzell <hartzell@alerce.com>2017-10-09 14:14:19 -0700
committerTodd Gamblin <tgamblin@llnl.gov>2017-10-09 14:14:19 -0700
commit0d1c36e5596fd880fae3e2e883ac7a0752df36c1 (patch)
tree623b4048652c25d6dff71adeaa0cc276b6bbc236 /lib
parent5ccc9c17dcab7a19aac666755511591dbbff3a2b (diff)
downloadspack-0d1c36e5596fd880fae3e2e883ac7a0752df36c1.tar.gz
spack-0d1c36e5596fd880fae3e2e883ac7a0752df36c1.tar.bz2
spack-0d1c36e5596fd880fae3e2e883ac7a0752df36c1.tar.xz
spack-0d1c36e5596fd880fae3e2e883ac7a0752df36c1.zip
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
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/__init__.py2
-rw-r--r--lib/spack/spack/build_systems/aspell_dict.py57
2 files changed, 59 insertions, 0 deletions
diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py
index 3b614b0482..19590b6790 100644
--- a/lib/spack/spack/__init__.py
+++ b/lib/spack/spack/__init__.py
@@ -177,6 +177,7 @@ __all__ = []
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 @@ __all__ += [
'on_package_attributes',
'Package',
'MakefilePackage',
+ 'AspellDictPackage',
'AutotoolsPackage',
'CMakePackage',
'QMakePackage',
diff --git a/lib/spack/spack/build_systems/aspell_dict.py b/lib/spack/spack/build_systems/aspell_dict.py
new file mode 100644
index 0000000000..4d54e13b70
--- /dev/null
+++ b/lib/spack/spack/build_systems/aspell_dict.py
@@ -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))