Some modules depend on external software to run, such as the Apache web server. This software is searched for or built from the same locations as the core software and modules.
The first place the setup script looks for software is the cached directory relative to the architecture and OS name of the current environment. It will look for B/A.* where B is the architecture/OS name and A is the name of the software package. An example is FreeBSD-6.2-STABLE-i386/apache22.FreeBSD-6.2-STABLE-i386.tgz. The architecture name is created on each node using the following:
(name, node, ver, extra, machine, proc) = platform.uname()
(type, release, nick) = platform.dist()
if type != "":
ver = "%s%s" % (type, release)
if name.startswith('CYGWIN'):
ver = 'xp'
arch = "%s-%s-%s" % (name, ver, machine)
arch = arch.replace('/', '')
If it can’t find one of these prebuilt binaries, it will attempt to build the software by looking for scripts/packagename and running it as a script. It will call this script with 3 arguments.
If it fails to build, it will indicate a failure for the software module that will show up in the GUI failed table.
Once complete, any required software is loaded. If first searches for prebuilt binaries which are located in a platform named subdirectory of the package directory. (e.g. Linux-redhat6-i686) If a prebuilt binary is not available, it looks for a build script in the source directory and calls that script with the arguments
build_script temp_dir source_dir pkg_name arch_name
It expects that the output file name will be of the format:
/temp_dir/pkg_name.(status|tar|tgz|tar.gz|zip)
Tar or zip files will be extracted onto the node. All files will as stored back in a prebuilt directory for future use. If the script returns a non zero return code, the build will be considered a failure and any output ignored.
Status can be INSTALLED, NOTSUPPORTED or some other status string. If status is INSTALLED, the software is assumed to be preinstalled on the node and an install isn’t needed. If any other status is present such as NOTSUPPORTED, the software will be marked as unusable on the node and a dependency failure will be noted. Any dependent modules will still install but the user will be notitified that the agent may not run properly on this node.
The archive file can also contains any number of executable files with the name .setup. These will be executed after extraction to perform any required setup on the node.
Note
The experiment setup script will only look in its home package directory for the initial builtin module m2crypto
As /share/seer is read-only, built software will not cache there