add irep and lua-lang virtual dependency (#22492)
This adds a package for `irep`, a tool for reading `lua` input decks from Fortran, C, and C++. `irep` can be built with either `lua` or `luajit`. To address this, we also add a virtual package for lua called `lua-lang`. `luajit` isn't, by default, a drop-in replacement for `lua`, but we add a `+lualinks` variant to it that adds symlinks that make it behave like `lua@5.1`. With this variant enabled, it provides the `lua-lang` virtual. `lua` always provides `lua-lang`. - [x] add `irep` package - [x] add `+lualinks` variant to `lua-luajit` - [x] create `lua-lang` virtual, provided by `lua` and `luajit+lualinks` Co-authored-by: Kayla Richarda Butler <butler59@quartz1148.llnl.gov> Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
This commit is contained in:
parent
5971372be7
commit
1c44912f9b
@ -34,6 +34,7 @@ packages:
|
||||
java: [openjdk, jdk, ibm-java]
|
||||
jpeg: [libjpeg-turbo, libjpeg]
|
||||
lapack: [openblas, amdlibflame]
|
||||
lua-lang: [lua, lua-luajit]
|
||||
mariadb-client: [mariadb-c-client, mariadb]
|
||||
mkl: [intel-mkl]
|
||||
mpe: [mpe2]
|
||||
|
18
var/spack/repos/builtin/packages/irep/package.py
Normal file
18
var/spack/repos/builtin/packages/irep/package.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
class Irep(CMakePackage):
|
||||
"""IREP is a tool that enables mixed-language simulation codes to use a
|
||||
common, Lua-based format for their input decks. Essentially, the input
|
||||
format is a set of tables -- Lua's one (and only?) data structure."""
|
||||
|
||||
homepage = "https://irep.readthedocs.io/"
|
||||
url = "https://github.com/LLNL/irep/archive/refs/tags/v1.0.0.tar.gz"
|
||||
|
||||
maintainers = ['tomstitt', 'kennyweiss']
|
||||
|
||||
version('1.0.0', 'b84203ac92de824dbdc672de45cfdb9609373791c4ee84a5201fa6e4ccecc1a4')
|
||||
|
||||
depends_on('lua-lang')
|
@ -3,6 +3,7 @@
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import glob
|
||||
import os
|
||||
from spack import *
|
||||
|
||||
@ -18,6 +19,34 @@ class LuaLuajit(MakefilePackage):
|
||||
|
||||
conflicts('@:2.0.5', when='target=aarch64:')
|
||||
|
||||
variant('lualinks', default=False, description="add symlinks to make lua-luajit a drop-in lua replacement")
|
||||
|
||||
provides("lua-lang", when="+lualinks")
|
||||
|
||||
@run_after("install")
|
||||
def install_links(self):
|
||||
if not self.spec.satisfies("+lualinks"):
|
||||
return
|
||||
|
||||
with working_dir(self.prefix.bin):
|
||||
luajit = os.readlink(self.prefix.bin.luajit)
|
||||
symlink(luajit, "lua")
|
||||
|
||||
with working_dir(self.prefix.include):
|
||||
luajit_include_subdirs = glob.glob(
|
||||
os.path.join(self.prefix.include, "luajit*"))
|
||||
assert len(luajit_include_subdirs) == 1
|
||||
symlink(luajit_include_subdirs[0], "lua")
|
||||
|
||||
with working_dir(self.prefix.lib):
|
||||
luajit_libnames = glob.glob(
|
||||
os.path.join(self.prefix.lib, "libluajit*.so*"))
|
||||
real_lib = next(
|
||||
lib for lib in luajit_libnames
|
||||
if os.path.isfile(lib) and not os.path.islink(lib)
|
||||
)
|
||||
symlink(real_lib, "liblua.so")
|
||||
|
||||
@property
|
||||
def headers(self):
|
||||
hdrs = find_headers('luajit', self.prefix.include, recursive=True)
|
||||
|
@ -34,6 +34,8 @@ class Lua(Package):
|
||||
|
||||
extendable = True
|
||||
|
||||
provides('lua-lang')
|
||||
|
||||
depends_on('ncurses+termlib')
|
||||
depends_on('readline')
|
||||
# luarocks needs unzip for some packages (e.g. lua-luaposix)
|
||||
|
Loading…
Reference in New Issue
Block a user