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.