/smithy

Smithy provides sane software installation and modulefile management

Primary LanguageRubyOtherNOASSERTION

Smithy

This repo is for the Smithy application itself. For formulas see smithy_formulas

Overview

smithy is a command line software installation tool that borrows ideas heavily from the excellent homebrew package management system for Mac OS X and SWTools.1

Smithy is designed to sanely manage many software builds within a shared HPC Linux or Mac environment using modulefiles to load software into a user's shell.

Software builds are created with a few conventions:

  • Everything is organized into architecture or OS directores, e.g. redhat6 or sles11
  • Prefixes are defined by their name, version, and build name
  • Software is loaded into the shell using modulefiles
  • Builds are performed by formulas or build scripts

Examples of many formulas can be found in the smithy_formulas repo.

Documentation

Lots of information and a tutorial can be found on the manpages:

Installation

Smithy is available for download on the releases page. Once downloaded it can be extracted and run from any location. Smithy is written in ruby and provides a built in ruby environment via Traveling-Ruby. You do not need to install ruby to use Smithy. Releases for Mac and Linux are available.

Running

Extract to a directory of your choice and set the $SMITHY_PREFIX environment variable in the environment.sh file. Assuming you extracted Smithy to /sw/tools/smithy the top of the environment.sh file should look like:

export SMITHY_PREFIX=/sw/tools/smithy
export SMITHY_CONFIG=$SMITHY_PREFIX/smithyrc
export MANPATH=$SMITHY_PREFIX/lib/app/man:$MANPATH

Once set, source the environment.sh using bash or zsh

source /sw/tools/smithy/environment.sh

Smithy depends on a config file to define it's behavior. Once created you can point Smithy to it's location by setting the $SMITHY_CONFIG environment variable.

Here is an example config file in yaml format:

---
software-root: /sw
file-group-name: ccsstaff
hostname-architectures:
  titan-ext: xk6
  titan-login: xk6
  chester-login: xk6
  lens: analysis-x64
  lens-login: analysis-x64
  sith: redhat6
  sith-login: redhat6
  smoky: smoky
  smoky-login: smoky
web-root: /ccs/proj/ccsstaff/swdesc/data
descriptions-root: /sw/descriptions
web-architecture-names:
  xk6: titan
  analysis-x64: lens
  smoky: smoky
download-cache: /sw/sources
formula-directories:
- /sw/tools/smithy/formulas
global-error-log: /sw/tools/smithy/exceptions.log

License

Smithy is based on the ideas created in SWTools and uses a BSD license. See LICENSE for the exact text.

References

N. Jones, M. R. Fahey, "Design, Implementation, and Experiences of Third-Party Software Administration at the ORNL NCCS," Proceedings of the 50th Cray User Group (CUG08), Helsinki, May 2008.

Contributing and Support

The Smithy github repo contains all development files. Please fork and send me a pull request with any additions or changes.

If you encounter any issues please open an issue on github. Or send me an email.