software_smithy 1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. data/README.rdoc +114 -0
  2. data/bin/smithy +586 -0
  3. data/etc/completion/smithy-completion.bash +266 -0
  4. data/etc/completion/zsh/_smithy +130 -0
  5. data/etc/smithyrc +36 -0
  6. data/etc/templates/build/.owners +1 -0
  7. data/etc/templates/build/build-notes +0 -0
  8. data/etc/templates/build/dependencies +0 -0
  9. data/etc/templates/build/rebuild +13 -0
  10. data/etc/templates/build/relink +2 -0
  11. data/etc/templates/build/remodule.erb +21 -0
  12. data/etc/templates/build/retest +6 -0
  13. data/etc/templates/build/status +0 -0
  14. data/etc/templates/modulefile.erb +30 -0
  15. data/etc/templates/package/.check4newver +2 -0
  16. data/etc/templates/package/.exceptions +3 -0
  17. data/etc/templates/package/description +18 -0
  18. data/etc/templates/package/description.markdown +17 -0
  19. data/etc/templates/package/support +1 -0
  20. data/etc/templates/package/versions +3 -0
  21. data/etc/templates/web/all.html.erb +19 -0
  22. data/etc/templates/web/alphabetical.html.erb +12 -0
  23. data/etc/templates/web/category.html.erb +74 -0
  24. data/etc/templates/web/machine_version_table.html.erb +35 -0
  25. data/etc/templates/web/package.html.erb +53 -0
  26. data/etc/templates/web/version_list.html.erb +7 -0
  27. data/etc/templates/web/version_table.html.erb +24 -0
  28. data/lib/smithy/config.rb +167 -0
  29. data/lib/smithy/description.rb +276 -0
  30. data/lib/smithy/file_operations.rb +234 -0
  31. data/lib/smithy/format.rb +134 -0
  32. data/lib/smithy/helpers.rb +159 -0
  33. data/lib/smithy/module_file.rb +224 -0
  34. data/lib/smithy/package.rb +647 -0
  35. data/lib/smithy.rb +45 -0
  36. data/lib/smithy_version.rb +40 -0
  37. data/man/man1/smithy.1 +262 -0
  38. data/smithy.rdoc +281 -0
  39. metadata +230 -0
@@ -0,0 +1,266 @@
1
+ if [[ -n ${ZSH_VERSION-} ]]; then
2
+ autoload -U +X bashcompinit && bashcompinit
3
+ fi
4
+
5
+ __smithycomp_words_include ()
6
+ {
7
+ local i=1
8
+ while [[ $i -lt $COMP_CWORD ]]; do
9
+ if [[ "${COMP_WORDS[i]}" = "$1" ]]; then
10
+ return 0
11
+ fi
12
+ i=$((++i))
13
+ done
14
+ return 1
15
+ }
16
+
17
+ # Find the previous non-switch word
18
+ __smithycomp_prev ()
19
+ {
20
+ local idx=$((COMP_CWORD - 1))
21
+ local prv="${COMP_WORDS[idx]}"
22
+ while [[ $prv == -* ]]; do
23
+ idx=$((--idx))
24
+ prv="${COMP_WORDS[idx]}"
25
+ done
26
+ }
27
+
28
+
29
+ __smithycomp ()
30
+ {
31
+ # break $1 on space, tab, and newline characters,
32
+ # and turn it into a newline separated list of words
33
+ local list s sep=$'\n' IFS=$' '$'\t'$'\n'
34
+ local cur="${COMP_WORDS[COMP_CWORD]}"
35
+
36
+ for s in $1; do
37
+ __smithycomp_words_include "$s" && continue
38
+ list="$list$s$sep"
39
+ done
40
+
41
+ case "$cur" in
42
+ --*=)
43
+ COMPREPLY=()
44
+ ;;
45
+ *)
46
+ IFS=$sep
47
+ COMPREPLY=( $(compgen -W "$list" -- "$cur" | sed -e 's/[^=]$/& /g') )
48
+ ;;
49
+ esac
50
+ }
51
+
52
+ _smithy ()
53
+ {
54
+ #echo "cur: $cur, prev: $prev" > /dev/pts/33
55
+
56
+ local i=1 cmd
57
+
58
+ if [[ -n ${ZSH_VERSION-} ]]; then
59
+ emulate -L bash
60
+ setopt KSH_TYPESET
61
+
62
+ # workaround zsh's bug that leaves 'words' as a special
63
+ # variable in versions < 4.3.12
64
+ typeset -h words
65
+ fi
66
+
67
+ # find the subcommand
68
+ while [[ $i -lt $COMP_CWORD ]]; do
69
+ local s="${COMP_WORDS[i]}"
70
+ case "$s" in
71
+ --*) ;;
72
+ -*) ;;
73
+ *) cmd="$s"
74
+ break
75
+ ;;
76
+ esac
77
+ i=$((++i))
78
+ done
79
+
80
+ if [[ $i -eq $COMP_CWORD ]]; then
81
+ local cur="${COMP_WORDS[COMP_CWORD]}"
82
+ case "$cur" in
83
+ -*)
84
+ __smithycomp "
85
+ --arch=
86
+ --config-file=
87
+ --disable-group-writable
88
+ --file-group-name=
89
+ --help
90
+ --no-color
91
+ --software-root=
92
+ --web-root="
93
+ return
94
+ ;;
95
+ *)
96
+ __smithycomp "
97
+ build
98
+ deploy
99
+ edit
100
+ help
101
+ module
102
+ new
103
+ repair
104
+ search
105
+ test"
106
+ return
107
+ ;;
108
+ esac
109
+ return
110
+ fi
111
+
112
+ # subcommands have their own completion functions
113
+ case "$cmd" in
114
+ build|test) _smithy_build ;;
115
+ edit) _smithy_edit ;;
116
+ help) _smithy_help ;;
117
+ module) _smithy_module ;;
118
+ new) _smithy_new ;;
119
+ repair|deploy) _smithy_repair ;;
120
+ search) _smithy_search ;;
121
+ *) ;;
122
+ esac
123
+ }
124
+
125
+ __smithy_complete_packages ()
126
+ {
127
+ local cur="${COMP_WORDS[COMP_CWORD]}"
128
+ local packages=$(smithy search --format=name ${cur})
129
+ COMPREPLY=($(compgen -W "$packages" -- "$cur"))
130
+ }
131
+
132
+ _smithy_build () {
133
+ local cur="${COMP_WORDS[COMP_CWORD]}"
134
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
135
+ case "$cur" in
136
+ --log-name=*)
137
+ local t=`echo "$cur" | sed -e 's/--log-name=//g'`
138
+ COMPREPLY=($(compgen -f "$t"))
139
+ return
140
+ ;;
141
+ -*)
142
+ __smithycomp "
143
+ --disable-log
144
+ --force
145
+ --log-name=
146
+ --dry-run
147
+ --suppress-stdout"
148
+ return
149
+ ;;
150
+ esac
151
+ __smithy_complete_packages
152
+ }
153
+
154
+ _smithy_module () {
155
+ local cur="${COMP_WORDS[COMP_CWORD]}"
156
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
157
+ case "$prv" in
158
+ module)
159
+ __smithycomp "create use deploy"
160
+ return
161
+ ;;
162
+ esac
163
+ case "$cur" in
164
+ -*)
165
+
166
+ __smithycomp "
167
+ --dry-run"
168
+ return
169
+ ;;
170
+ esac
171
+ __smithy_complete_packages
172
+ }
173
+
174
+ _smithy_edit () {
175
+ local cur="${COMP_WORDS[COMP_CWORD]}"
176
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
177
+ case "$prv" in
178
+ edit)
179
+ __smithycomp "build test modules modulefile"
180
+ return
181
+ ;;
182
+ -e)
183
+ COMPREPLY=($(compgen -c "$cur"))
184
+ return
185
+ ;;
186
+ esac
187
+ case "$cur" in
188
+ --editor=*)
189
+ local t=`echo "$cur" | sed -e 's/--editor=//g'`
190
+ COMPREPLY=($(compgen -c "$t"))
191
+ return
192
+ ;;
193
+ -*)
194
+ __smithycomp "
195
+ --editor="
196
+ return
197
+ ;;
198
+ esac
199
+ __smithy_complete_packages
200
+ }
201
+
202
+ _smithy_search () {
203
+ local cur="${COMP_WORDS[COMP_CWORD]}"
204
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
205
+
206
+ case "$prv" in
207
+ --format=*)
208
+ __smithycomp "path name table csv"
209
+ return
210
+ ;;
211
+ esac
212
+ case "$cur" in
213
+ -*)
214
+ __smithycomp "--format="
215
+ return
216
+ ;;
217
+ esac
218
+ __smithy_complete_packages
219
+ }
220
+
221
+ _smithy_new () {
222
+ local cur="${COMP_WORDS[COMP_CWORD]}"
223
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
224
+
225
+ case "$prv" in
226
+ -t)
227
+ COMPREPLY=($(compgen -f "$cur"))
228
+ return
229
+ ;;
230
+ esac
231
+ case "$cur" in
232
+ --tarball=*)
233
+ local t=`echo "$cur" | sed -e 's/--tarball=//g'`
234
+ COMPREPLY=($(compgen -f "$t"))
235
+ return
236
+ ;;
237
+ -*)
238
+ __smithycomp "
239
+ --dry-run
240
+ --tarball=
241
+ --web-description
242
+ --skip-modulefile"
243
+ return
244
+ ;;
245
+ esac
246
+ __smithy_complete_packages
247
+ }
248
+
249
+ _smithy_help () {
250
+ __smithycomp "build search new edit repair deploy"
251
+ }
252
+
253
+ _smithy_repair () {
254
+ local cur="${COMP_WORDS[COMP_CWORD]}"
255
+
256
+ case "$cur" in
257
+ -*)
258
+ __smithycomp "
259
+ --dry-run"
260
+ return
261
+ ;;
262
+ esac
263
+ __smithy_complete_packages
264
+ }
265
+
266
+ complete -o bashdefault -o default -o nospace -F _smithy smithy
@@ -0,0 +1,130 @@
1
+ #compdef smithy
2
+
3
+ _smithy_packages() {
4
+ packages=(`smithy search --format=name`)
5
+ }
6
+
7
+ local -a _1st_arguments
8
+ _1st_arguments=(
9
+ 'build:Build software'
10
+ 'deploy:Deploy a package'
11
+ 'edit:Edit package support files'
12
+ 'help:Shows list of commands or help for one command'
13
+ 'module:Manage modulefiles for a package'
14
+ 'new:Generate a new build and all necessary files'
15
+ 'repair:Repair a package'
16
+ 'search:Search currently installed software'
17
+ 'test:Test software'
18
+ )
19
+
20
+ local expl
21
+ local -a formulae
22
+
23
+ _arguments \
24
+ '(--arch=)--arch=[Machine architecture to operate on]' \
25
+ '(--config-file=)--config-file=[Alternate config file]:file:_files' \
26
+ '(--disable-group-writeable)--disable-group-writeable[Disable group writable file creation]' \
27
+ '(--file-group-name=)--file-group-name=[Group name for files created by smithy]' \
28
+ '(--help)--help[Show help]' \
29
+ '(--no-color)--no-color[Hide coloring]' \
30
+ '(--software-root=)--software-root=[The root level directory for software]:directory:_files -/' \
31
+ '(--web-root=)--web-root=[The root level directory for web files]:directory:_files -/' \
32
+ '*:: :->subcmds' && return 0
33
+ #[[ "$PREFIX" = --* ]] && _arguments -- \
34
+ #'*=FILE*:file:_files' \
35
+ #'*=PATH*:directory:_files -/' \
36
+ #'*=NAME*:directory:_files -/' && return 0
37
+
38
+ # Match Sub-command
39
+ if (( CURRENT == 1 )); then
40
+ _describe -t commands "smithy subcommand" _1st_arguments
41
+ return
42
+ fi
43
+
44
+ # completion for each sub command
45
+ case "$words[1]" in
46
+ help)
47
+ _describe -t commands "smithy subcommand" _1st_arguments ;;
48
+ build|test)
49
+ _arguments \
50
+ '(--disable-log)--disable-log[Disable logging]' \
51
+ '(-f --force)'{-f,--force}'[Ignore .lock file and run anyway]' \
52
+ '(--log-name=)--log-name=[Log file name located within the software prefix]:file:_files' \
53
+ '(-n --dry-run)'{-n,--dry-run}'[See what scripts will be run without running them]' \
54
+ '(-s --suppress-stdout)'{-s,--suppress-stdout}'[Suppress messages from STDOUT.]' \
55
+ '1: :->forms' && return 0
56
+
57
+ if [[ "$state" == forms ]]; then
58
+ _smithy_packages
59
+ _wanted packages expl 'packages' compadd -a packages
60
+ fi ;;
61
+ deploy)
62
+ _arguments \
63
+ '(-n --dry-run)'{-n,--dry-run}'[See what files will be created without creating them]' \
64
+ '1: :->forms' && return 0
65
+
66
+ if [[ "$state" == forms ]]; then
67
+ _smithy_packages
68
+ _wanted packages expl 'packages' compadd -a packages
69
+ fi ;;
70
+ edit)
71
+ _subsub_commands=(
72
+ 'build:Edit a build script'
73
+ 'test:Edit a test script'
74
+ 'environment:Edit modules loaded for the build script'
75
+ 'modulefile:Edit modulefile'
76
+ )
77
+ # Match subsub-command
78
+ if (( CURRENT == 2 )); then
79
+ _describe -t subcommands "edit subcommand" _subsub_commands
80
+ return
81
+ fi
82
+
83
+ _arguments \
84
+ '(-e --editor=)'{-e,--editor=}'[Editor for opening script files]:file:_files' \
85
+ '(-s --split)'{-s,--split}'[Split editing window with requested file and the environment (remodule) file]' \
86
+ '2: :->forms' && return 0
87
+
88
+ if [[ "$state" == forms ]]; then
89
+ _smithy_packages
90
+ _wanted packages expl 'packages' compadd -a packages
91
+ fi ;;
92
+ module)
93
+ _subsub_commands=(
94
+ 'create:Generate a modulefile for a given package'
95
+ 'use:Add a modulefile to the MODULEPATH'
96
+ 'deploy:Copy a modulefile to the system MODULEPATH'
97
+ )
98
+ # Match subsub-command
99
+ if (( CURRENT == 2 )); then
100
+ _describe -t subcommands "edit subcommand" _subsub_commands
101
+ return
102
+ fi
103
+
104
+ _arguments \
105
+ '(-n --dry-run)'{-n,--dry-run}'[See what files will be created without creating them]' \
106
+ '2: :->forms' && return 0
107
+
108
+ if [[ "$state" == forms ]]; then
109
+ _smithy_packages
110
+ _wanted packages expl 'packages' compadd -a packages
111
+ fi ;;
112
+ new)
113
+ _arguments \
114
+ '(--skip-modulefile)--skip-modulefile[Skip modulefile generation]' \
115
+ '(--web-description)--web-description[Create description file for website]' \
116
+ '(-n --dry-run)'{-n,--dry-run}'[See what files will be created without creating them]' \
117
+ '(-t --tarball=)'{-t,--tarball=}'[Provide a source tarball to unpack (optional)]:file:_files' ;;
118
+ repair)
119
+ _arguments \
120
+ '(-n --dry-run)'{-n,--dry-run}'[Verify permissions only]' \
121
+ '1: :->forms' && return 0
122
+
123
+ if [[ "$state" == forms ]]; then
124
+ _smithy_packages
125
+ _wanted packages expl 'packages' compadd -a packages
126
+ fi ;;
127
+ search)
128
+ _arguments \
129
+ '(--format=)--format=[Format of the output]:format:(path name table csv)' ;;
130
+ esac
data/etc/smithyrc ADDED
@@ -0,0 +1,36 @@
1
+ ---
2
+ software-root: /sw
3
+ file-group-name: ccsstaff
4
+ hostname-architectures:
5
+ arthur-login: xk6
6
+ chester-login: xk6
7
+ eugene: bgp
8
+ everest: analysis-x64
9
+ ewok: sith
10
+ fatman: scibox
11
+ frost: frost
12
+ jaguar-ext: xt5
13
+ jaguar: xk6
14
+ jaguarpf-login: xk6
15
+ jaguarpf-ext: xk6
16
+ lens-login: analysis-x64
17
+ lens: analysis-x64
18
+ rizzo: xt5
19
+ sith-login: sith
20
+ sith: sith
21
+ smoky-login: smoky
22
+ smoky: smoky
23
+ smokylogin: smoky
24
+ yona-login: yona
25
+ yona: yona
26
+ programming-environment-prefix:
27
+ default: PrgEnv-
28
+ smoky: PE-
29
+ web-root: /sw/tools/www
30
+ descriptions-root: /sw/descriptions
31
+ web-architecture-names:
32
+ xk6: jaguar
33
+ analysis-x64: lens
34
+ smoky: smoky
35
+
36
+
@@ -0,0 +1 @@
1
+ lmd
File without changes
File without changes
@@ -0,0 +1,13 @@
1
+ #!/bin/bash
2
+ # Load environment and modules
3
+ source $SMITHY_PREFIX/remodule
4
+
5
+ # Clean out old install
6
+ cd $SMITHY_PREFIX && rm -rf bin doc etc include info lib lib64 libexec man share
7
+
8
+ cd $SMITHY_SOURCE
9
+ make clean
10
+ run ./configure --prefix=$SMITHY_PREFIX
11
+ run make
12
+ run make install
13
+
@@ -0,0 +1,2 @@
1
+ #!/bin/bash
2
+ source rebuild
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+ # Smithy wrapper function: Will exit if given command fails
3
+ run () {
4
+ if "$@"
5
+ then echo "==> SUCCESS $@"
6
+ else echo "==> FAILED $@" && exit 1
7
+ fi
8
+ }
9
+
10
+ # Load module environment
11
+ source ${MODULESHOME}/init/bash
12
+
13
+ # Set source directory
14
+ export SMITHY_SOURCE=$SMITHY_PREFIX/source
15
+
16
+ module unload PrgEnv-gnu
17
+ module unload PrgEnv-pgi
18
+ module unload PrgEnv-cray
19
+ module unload PrgEnv-intel
20
+ module unload PrgEnv-pathscale
21
+ <%= module_load_prgenv %>
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+ # Load environment and modules
3
+ source $SMITHY_PREFIX/remodule
4
+
5
+ run ./bin/executable --version
6
+
File without changes
@@ -0,0 +1,30 @@
1
+ #%Module
2
+ proc ModulesHelp { } {
3
+ puts stderr "<%= @package.name %> <%= @package.version %>"
4
+ puts stderr ""
5
+ }
6
+ # One line description
7
+ module-whatis "<%= @package.name %> <%= @package.version %>"
8
+
9
+ <% if @builds.size > 1 %>
10
+ <%= module_build_list @package, @builds %>
11
+
12
+ set PREFIX <%= @package.version_directory %>/$BUILD
13
+ <% else %>
14
+ set PREFIX <%= @package.prefix %>
15
+ <% end %>
16
+
17
+ # Helpful ENV Vars
18
+ setenv <%= @package.name.upcase %>_DIR $PREFIX
19
+ setenv <%= @package.name.upcase %>_LIB "-L$PREFIX/lib"
20
+ setenv <%= @package.name.upcase %>_INC "-I$PREFIX/include"
21
+
22
+ # Common Paths
23
+ prepend-path PATH $PREFIX/bin
24
+ prepend-path LD_LIBRARY_PATH $PREFIX/lib
25
+ prepend-path MANPATH $PREFIX/share/man
26
+ prepend-path INFOPATH $PREFIX/info
27
+ prepend-path PKG_CONFIG_PATH $PREFIX/lib/pkgconfig
28
+ prepend-path PYTHONPATH $PREFIX/lib/python2.7/site-packages
29
+ prepend-path PERL5PATH $PREFIX/lib/perl5/site_perl
30
+
@@ -0,0 +1,2 @@
1
+ 2012-01-26: new version installed
2
+ 2012-01-26: next check of /sw/xk6/git on 2012-04-25
@@ -0,0 +1,3 @@
1
+ noweb
2
+ #protected 0022
3
+ #vendor
@@ -0,0 +1,18 @@
1
+ <h1>Title</h1>
2
+
3
+ <p>
4
+ Category:
5
+ </p>
6
+
7
+ <h2>Description</h2>
8
+
9
+ <p>
10
+ </p>
11
+
12
+ <h2>Use</h2>
13
+
14
+ <p>
15
+ </p>
16
+
17
+ <pre>
18
+ </pre>
@@ -0,0 +1,17 @@
1
+ # Title
2
+
3
+ Categories: Scientific Applications, Programming Libraries, Compilers, Development Tools, Debugging and Profiling, Visualization, Data Management
4
+
5
+ Excerpt: Title is an application that...
6
+
7
+ ## Description
8
+
9
+ **Website:** [Title](http://www.olcf.ornl.gov/support/software/)
10
+
11
+ Title is...
12
+
13
+ ## Use
14
+
15
+ To use run:
16
+
17
+ module load title
@@ -0,0 +1 @@
1
+ unsupported
@@ -0,0 +1,3 @@
1
+ development:
2
+ current:
3
+ deprecated:
@@ -0,0 +1,19 @@
1
+ <a name="top"></a>
2
+ <h2>Contents</h2>
3
+
4
+ <ul>
5
+ <% @descriptions.each do |p| %>
6
+ <li>
7
+ <a href="#<%= p.name.downcase %>"><%= p.name.downcase %></a>
8
+ </li>
9
+ <% end %>
10
+ </ul>
11
+
12
+ <% @descriptions.each do |p| %>
13
+ <hr />
14
+
15
+ <a name="<%= p.name.downcase %>"></a>
16
+ <%= p.content %>
17
+
18
+ <p><a href="#top">(back to top)</a></p>
19
+ <% end %>
@@ -0,0 +1,12 @@
1
+ <!-- packages = <%= @packages.join(", ") %> -->
2
+
3
+ <a name="top"></a>
4
+ <h2>Contents</h2>
5
+
6
+ <ul>
7
+ <% @descriptions.each do |p| %>
8
+ <li>
9
+ <a href="<%= p.name.downcase %>.html"><%= p.name.downcase %></a>
10
+ </li>
11
+ <% end %>
12
+ </ul>
@@ -0,0 +1,74 @@
1
+ <a href="../software/">Alphabetical View</a><ul class="sw"><li>Analysis</li>
2
+ <ul class="sw"><li>Mathematics</li>
3
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=matlab">matlab</a></li>
4
+ </ul>
5
+ </ul>
6
+ <li>Data Movement</li>
7
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=globus">globus</a></li>
8
+ </ul>
9
+ </ul>
10
+ <li>Debugging</li>
11
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=ddt">ddt</a></li>
12
+ </ul>
13
+ </ul>
14
+ <li>Libraries</li>
15
+ <ul class="sw"><li>Communication</li>
16
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=boost">boost</a></li>
17
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=mpt">mpt</a></li>
18
+ </ul>
19
+ </ul>
20
+ <ul class="sw"><li>IO</li>
21
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=hdf5">hdf5</a></li>
22
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=p-netcdf">p-netcdf</a></li>
23
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=szip">szip</a></li>
24
+ </ul>
25
+ </ul>
26
+ <ul class="sw"><li>Math</li>
27
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=atlas">atlas</a></li>
28
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=fftw">fftw</a></li>
29
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=sprng">sprng</a></li>
30
+ </ul>
31
+ </ul>
32
+ <li>Program Dev</li>
33
+ <ul class="sw"><li>Compilers</li>
34
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=gcc">gcc</a></li>
35
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=pgi">pgi</a></li>
36
+ </ul>
37
+ </ul>
38
+ <ul class="sw"><li>Languages</li>
39
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=python">python</a></li>
40
+ </ul>
41
+ </ul>
42
+ <ul class="sw"><li>Tools</li>
43
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=mercurial">mercurial</a></li>
44
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=subversion">subversion</a></li>
45
+ </ul>
46
+ </ul>
47
+ <li>Science Apps</li>
48
+ <ul class="sw"><li>Materials</li>
49
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=vasp">vasp</a></li>
50
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=vasp5">vasp5</a></li>
51
+ </ul>
52
+ </ul>
53
+ <ul class="sw"><li>Molecular Dynamics</li>
54
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=gromacs">gromacs</a></li>
55
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=lammps">lammps</a></li>
56
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=namd">namd</a></li>
57
+ </ul>
58
+ </ul>
59
+ <li>Tools</li>
60
+ <ul class="sw"><li>Performance</li>
61
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=papi">papi</a></li>
62
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=vampirtrace">vampirtrace</a></li>
63
+ </ul>
64
+ </ul>
65
+ <ul class="sw"><li>Performance</p></li>
66
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=craypat">craypat</a></li>
67
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=vampir">vampir</a></li>
68
+ </ul>
69
+ </ul>
70
+ <li>program development</li>
71
+ <ul class="sw"><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="?&software=lustredu">lustredu</a></li>
72
+ </ul>
73
+ </ul>
74
+ </ul>