Small ruby enhancement and tmuxinator package
It is currently less painful to pull the source from github, compile it into a gem, then install the gem, than it is to download a gem and install it. This still lacks an activation mechanism, but `spack use tmuxinator` is functional.
This commit is contained in:
parent
0e3d994b05
commit
d92ac2a6b2
@ -130,6 +130,13 @@ def add_path(path_name, directory):
|
|||||||
if site_packages:
|
if site_packages:
|
||||||
add_path('PYTHONPATH', site_packages[0])
|
add_path('PYTHONPATH', site_packages[0])
|
||||||
|
|
||||||
|
if self.spec.package.extends(spack.spec.Spec('ruby')):
|
||||||
|
add_path('GEM_PATH', self.spec.prefix)
|
||||||
|
|
||||||
|
# Allow module path extensions from packages
|
||||||
|
for key, val in self.spec.package.extra_environment:
|
||||||
|
add_path(key, val)
|
||||||
|
|
||||||
# short description is just the package + version
|
# short description is just the package + version
|
||||||
# TODO: maybe packages can optionally provide it.
|
# TODO: maybe packages can optionally provide it.
|
||||||
self.short_description = self.spec.format("$_ $@")
|
self.short_description = self.spec.format("$_ $@")
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
from spack import *
|
from spack import *
|
||||||
|
import spack
|
||||||
|
import os
|
||||||
|
|
||||||
class Ruby(Package):
|
class Ruby(Package):
|
||||||
"""A dynamic, open source programming language with a focus on
|
"""A dynamic, open source programming language with a focus on
|
||||||
@ -7,6 +9,8 @@ class Ruby(Package):
|
|||||||
homepage = "https://www.ruby-lang.org/"
|
homepage = "https://www.ruby-lang.org/"
|
||||||
url = "http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.gz"
|
url = "http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.gz"
|
||||||
|
|
||||||
|
extendable = True
|
||||||
|
|
||||||
version('2.2.0', 'cd03b28fd0b555970f5c4fd481700852')
|
version('2.2.0', 'cd03b28fd0b555970f5c4fd481700852')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
@ -14,3 +18,24 @@ def install(self, spec, prefix):
|
|||||||
|
|
||||||
make()
|
make()
|
||||||
make("install")
|
make("install")
|
||||||
|
|
||||||
|
def setup_dependent_environment(self, module, spec, ext_spec):
|
||||||
|
"""Called before ruby modules' install() methods. Sets GEM_HOME
|
||||||
|
and GEM_PATH to values appropriate for the package being built.
|
||||||
|
|
||||||
|
In most cases, extensions will only need to have one line::
|
||||||
|
|
||||||
|
gem('install', '<gem-name>.gem')
|
||||||
|
"""
|
||||||
|
# Ruby extension builds have global ruby and gem functions
|
||||||
|
module.ruby = Executable(join_path(spec.prefix.bin, 'ruby'))
|
||||||
|
module.gem = Executable(join_path(spec.prefix.bin, 'gem'))
|
||||||
|
|
||||||
|
# Set GEM_PATH to include dependent gem directories
|
||||||
|
ruby_paths = []
|
||||||
|
for d in ext_spec.traverse():
|
||||||
|
if d.package.extends(self.spec):
|
||||||
|
ruby_paths.append(d.prefix)
|
||||||
|
os.environ['GEM_PATH'] = ':'.join(ruby_paths)
|
||||||
|
# The actual installation path for this gem
|
||||||
|
os.environ['GEM_HOME'] = ext_spec.prefix
|
||||||
|
17
var/spack/packages/tmuxinator/package.py
Normal file
17
var/spack/packages/tmuxinator/package.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
from spack import *
|
||||||
|
|
||||||
|
class Tmuxinator(Package):
|
||||||
|
"""A session configuration creator and manager for tmux"""
|
||||||
|
homepage = "https://github.com/tmuxinator/tmuxinator"
|
||||||
|
url = "https://github.com/tmuxinator/tmuxinator"
|
||||||
|
|
||||||
|
version('0.6.11',
|
||||||
|
git='https://github.com/tmuxinator/tmuxinator',
|
||||||
|
tag='v0.6.11')
|
||||||
|
|
||||||
|
extends('ruby')
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
gem('build', 'tmuxinator.gemspec')
|
||||||
|
gem('install', 'tmuxinator-{}.gem'.format(self.version))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user