software_smithy 1.1

Sign up to get free protection for your applications and to get access to all the features.
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>