From 0faa6dd75344176a9a83c8e97b70995ece432470 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Fri, 24 Jun 2016 23:37:46 +0200 Subject: [PATCH 1/2] octave: make extendable and add a package --- .../packages/octave-splines/package.py | 44 +++++++++++++++++++ .../repos/builtin/packages/octave/package.py | 15 +++++++ 2 files changed, 59 insertions(+) create mode 100644 var/spack/repos/builtin/packages/octave-splines/package.py diff --git a/var/spack/repos/builtin/packages/octave-splines/package.py b/var/spack/repos/builtin/packages/octave-splines/package.py new file mode 100644 index 0000000000..623efb3b34 --- /dev/null +++ b/var/spack/repos/builtin/packages/octave-splines/package.py @@ -0,0 +1,44 @@ +############################################################################## +# Copyright (c) 2013-2016, 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 * + + +class OctaveSplines(Package): + """Additional spline functions.""" + + homepage = "http://octave.sourceforge.net/splines/index.html" + url = "http://downloads.sourceforge.net/octave/splines-1.3.1.tar.gz" + + version('1.3.1', 'f9665d780c37aa6a6e17d1f424c49bdeedb89d1192319a4e39c08784122d18f9') + + extends('octave@3.6.0:') + + def install(self, spec, prefix): + Octave('--quiet', + '--norc', + '--built-in-docstrings-file=/dev/null', + '--texi-macros-file=/dev/null', + '--eval', 'pkg prefix %s; pkg install %s' % + (prefix, self.stage.archive_file)) diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index 72ff0ee6fc..568ffe1579 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -36,6 +36,8 @@ class Octave(Package): homepage = "https://www.gnu.org/software/octave/" url = "ftp://ftp.gnu.org/gnu/octave/octave-4.0.0.tar.gz" + extendable = True + version('4.0.2', 'c2a5cacc6e4c52f924739cdf22c2c687') version('4.0.0', 'a69f8320a4f20a8480c1b278b1adb799') @@ -212,3 +214,16 @@ def install(self, spec, prefix): make() make("install") + + # ======================================================================== + # Set up environment to make install easy for Octave extensions. + # ======================================================================== + + def setup_dependent_package(self, module, ext_spec): + """Called before Octave modules' install() methods. + + In most cases, extensions will only need to have one line: + Octave('--eval', 'pkg install %s' % self.stage.archive_file) + """ + # Octave extension builds can have a global Octave executable function + module.Octave = Executable(join_path(self.spec.prefix.bin, 'octave')) From c4c167c1ca9214573e7dba1e3d1a7e6d62b9f6b4 Mon Sep 17 00:00:00 2001 From: Denis Davydov Date: Tue, 28 Jun 2016 11:25:45 +0200 Subject: [PATCH 2/2] octave: rename executable Octave to octave --- var/spack/repos/builtin/packages/octave-splines/package.py | 2 +- var/spack/repos/builtin/packages/octave/package.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/var/spack/repos/builtin/packages/octave-splines/package.py b/var/spack/repos/builtin/packages/octave-splines/package.py index 623efb3b34..11c9cc5ba7 100644 --- a/var/spack/repos/builtin/packages/octave-splines/package.py +++ b/var/spack/repos/builtin/packages/octave-splines/package.py @@ -36,7 +36,7 @@ class OctaveSplines(Package): extends('octave@3.6.0:') def install(self, spec, prefix): - Octave('--quiet', + octave('--quiet', '--norc', '--built-in-docstrings-file=/dev/null', '--texi-macros-file=/dev/null', diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py index 568ffe1579..f97bfc7d12 100644 --- a/var/spack/repos/builtin/packages/octave/package.py +++ b/var/spack/repos/builtin/packages/octave/package.py @@ -223,7 +223,7 @@ def setup_dependent_package(self, module, ext_spec): """Called before Octave modules' install() methods. In most cases, extensions will only need to have one line: - Octave('--eval', 'pkg install %s' % self.stage.archive_file) + octave('--eval', 'pkg install %s' % self.stage.archive_file) """ # Octave extension builds can have a global Octave executable function - module.Octave = Executable(join_path(self.spec.prefix.bin, 'octave')) + module.octave = Executable(join_path(self.spec.prefix.bin, 'octave'))