added installation guidelines

This commit is contained in:
maroy 2005-10-03 13:25:15 +00:00
parent 162a969646
commit 65507bce95
4 changed files with 480 additions and 45 deletions

View file

@ -1,74 +1,228 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8"
http-equiv="content-type">
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Build environment</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright &#169; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
project, Copyright &copy; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$<br>
<li>Location: $URL:
svn+ssh://maroy@code.campware.org/home/svn/repo/livesupport/trunk/livesupport/doc/developmentEnvironment/buildEnvironment.html
$<br>
</li>
</ul>
<h1>Scope</h1>
This document describes the build environment for components of the
LiveSupport project.<br>
<h1>Introduction</h1>
As seen in the <a href="directoryStructure.html">directory structure</a>
description, each component is contained in its own directory, and has
the same general directory layout, which includes a Makefile on the top
of the directory. All components are build by <a
href="http://www.gnu.org/directory/make.html">GNU make</a> working on
that Makefile. This document describes the targets for that Makefile.<br>
the same general directory layout, which includes a <code>configure</code> script on the top
of the directory. This script is responsible for gathering compilation and installation information, and for creating a <code>Makefile</code> in the top directory. All components are built by using <a href="http://www.gnu.org/directory/make.html">GNU make</a> working on
that <code>Makefile</code>.<br>
<br>
Parts of this document is inspired by the <a
href="http://www.gnu.org/prep/standards.html">GNU Coding Standards</a>
This document describes details about the <code>configure</code> script,&nbsp;the targets for the generated <code>Makefile</code>, and related files involved with the installation of the component.<br>
<br>
Parts of this document are inspired by the <a href="http://www.gnu.org/prep/standards.html">GNU Coding Standards</a>
<a href="http://www.gnu.org/prep/standards_50.html">Makefile
Conventions Standard targets</a>.<br>
<h2>Make targets<br>
</h2>
<h1>The <code>configure</code> script and generated files<br>
</h1>
<h2><code>configure</code> options</h2>
The <code>configure</code> script should honor the generic directory settings passed to it:<br>
<br>
<pre>Installation directories:<br> --prefix=PREFIX install architecture-independent files in PREFIX<br> [/usr/local]<br> --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX<br> [PREFIX]<br><br>Fine tuning of the installation directories:<br> --bindir=DIR user executables [EPREFIX/bin]<br> --sbindir=DIR system admin executables [EPREFIX/sbin]<br> --libexecdir=DIR program executables [EPREFIX/libexec]<br> --datadir=DIR read-only architecture-independent data [PREFIX/share]<br> --sysconfdir=DIR read-only single-machine data [PREFIX/etc]<br> --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]<br> --localstatedir=DIR modifiable single-machine data [PREFIX/var]<br> --libdir=DIR object code libraries [EPREFIX/lib]<br> --includedir=DIR C header files [PREFIX/include]<br> --oldincludedir=DIR C header files for non-gcc [/usr/include]<br> --infodir=DIR info documentation [PREFIX/info]<br> --mandir=DIR man documentation [PREFIX/man]<br></pre>
<br>
Other configuration-time options should be processed using <code>--with-XXX</code> arguments, using the <a href="http://www.gnu.org/software/autoconf/manual/autoconf-2.57/html_node/autoconf_130.html#IDX835"><code>AC_ARG_WITH</code></a> <code>autoconf</code> macro.<br>
<br>
Note: when writing <code>etc/configure.ac</code>, the input for the <code>configure</code> script, the <a href="http://autoconf-archive.cryp.to/">Autoconf Macro Archive</a> can provide quite useful.<br>
<br>
<h2>generated files</h2>
The main file generated by the <code>configure</code> script will the the <code>Makefile</code>. The input for the <code>Makefile</code>, <code>etc/Makefile.in</code>, can refer to the variables substituted by <code>configure</code> in the following way:<br>
<br>
<pre><code>prefix = @prefix@<br>some_other_var = @some_other_var@</code></pre>
<br>
Because these variables might need to be overwritten when running the <code>Makefile</code>, make sure to use the same name for the variable inside the <code>Makefile</code> as was used by the configure script (as in the above example). For example:<br>
<br>
<pre><code># these are wrong!<br>PREFIX = @prefix@<br>myvar = @some_other_var@<br><br># these are correct, and have the same desired effect:<br></code><code>prefix = @prefix@<br>some_other_var = @some_other_var@<br>PREFIX = ${prefix}<br>myvar = ${some_other_var}</code></pre>
<span style="font-weight: bold;"><br>
</span><span style="font-weight: bold;"></span>Using the same names will make it possible to overwrite the values substituted by <code>configure</code> when invoking the <code>Makefile</code>, for example:<br>
<br>
<pre><code>make prefix=/foo/bar install</code></pre>
<br>
will cause installation under the prefix <code>/foo/bar</code>, irrespective of the prefix supplied to <code>configure</code>.<br>
<span style="font-weight: bold;"></span><span style="font-weight: bold;"></span>
<h1>Make targets<br>
</h1>
The following make targets are required for all components to support:<br>
<ul>
<li>all</li>
<li>clean</li>
<li>depclean</li>
<li>doc<br>
</li>
<li>dist</li>
<li>check</li>
<li>install</li>
</ul>
<h4>all</h4>
Compile all source files for this component.&nbsp; As a result, the
component is ready to be run (if an executable) or linked to (if a
library).<br>
This target traverses the dependent modules, and executes the all
target on them, if their targets do not exist.<br>
<h4>clean</h4>
Delete all files generated by the all target, but only for this module
(e..g. no files for dependent modules are deleted).<br>
<h4>depclean</h4>
Delete all the dependent target files. Executing the depclean target
with an all target afterwards results in a full recompilation of all
the dependent modules.<br>
<h4>doc</h4>
Generate the documentation for this component. This would include
processing info pages, or using tools to generate documentation based
on comments in the source code (like javadoc).<br>
<h4>dist</h4>
Create a distribution package for this component. This involves
possibly compiling, document generation and other tasks, and results in
an archive containing the distribution.<br>
<h4>check</h4>
Run all tests, especially unit tests, for the component. This usually
results in a generated test-report.<br>
<br>
<h4>install</h4>
Installs the component into the specified prefix. (See the <a href="installation.html">Installation</a> document for details.)<br>
<br>
</body>
</html>

View file

@ -1,156 +1,241 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8"
http-equiv="content-type">
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Directory structure</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright &#169; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
project, Copyright &copy; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$<br>
<li>Location: $URL:
svn+ssh://maroy@code.campware.org/home/svn/repo/livesupport/trunk/livesupport/doc/developmentEnvironment/directoryStructure.html
$<br>
</li>
</ul>
<h1>Scope</h1>
This document describes the directory structure used for all component
of the LiveSupport project.<br>
<h1>Introduction</h1>
It is important to define a common and uniform directory structure in
order to allow more seamless cooperation between participants of the
project. It also helps referencing the various components (modules,
etc.), as all the components will have a predictable and stable file
hierarchy.<br>
<br>
As seen below, the main inspiration for each components directory
structure is the <a href="http://www.pathname.com/fhs/">Filesystem
Hierarchy Standard</a>.<br>
<h1>Overall structure</h1>
The base livesupport directory contains all the special tools needed to
build, test and run LiveSupport, along with all the source code that
constitutes LiveSupport itself.<br>
<br>
The self written part of LiveSupport project consists of re-usable
modules, and products.
Modules are components that do not execute by themselves, but have a
useful, preferably generic functionality. Products are the executable
components that are actually run by users.<br>
<br>
Both modules and products may reference (depend on) other modules, but
circular reference is not allowed.<br>
<br>
Other needed parts of the directory structure are involved with
external libraries LiveSupport depends on, and a running environment
where LiveSupport can run.<br>
<br>
The directory structure is organized in the following way:<br>
<br>
<code></code>
<pre>livesupport<br>|-- Makefile<br>|-- doc<br>|-- etc<br>|-- modules<br>| |-- module1<br>| |-- module2<br> ...<br>| `-- moduleN<br>|-- products<br>| |-- product1<br>| |-- product2<br>| ...<br>| `-- productN<br>|-- tools<br>| |-- tool1<br>| |-- tool2<br>| ...<br>| `-- tool3<br>`-- usr<br></pre>
<pre>livesupport<br>|-- configure<br>|-- bin<br>|-- doc<br>|-- etc<br>|-- src<br>| |-- modules<br>| | |-- module1<br>| | |-- module2<br>| ...<br>| | `-- moduleN<br>| |-- products<br>| | |-- product1<br>| | |-- product2<br>| | ...<br>| | `-- productN<br>| `-- tools<br>| |-- tool1<br>| |-- tool2<br>| ...<br>| `-- tool3<br>|-- tmp<br>|-- usr<br>`-- var<br></pre>
<br>
<h2>Referencing modules and the running environment<br>
</h2>
As a consequence of the directory structure above, if a module is
referencing an other (e.g. moduleX), than it can be sure that it is
located at <code>../moduleX</code>. If a product is referencing the
same module, it can be sure that it is located at <code>../../modules/moduleX</code>.<br>
<br>
Furthermore, if a module or product is referencing the running
environment under <code>livesupport/usr</code>, it can also be sure
that it is located at <code>../../usr</code> from either the module or
that it is located at <code>../../../usr</code> from either the module or
the product directory.<br>
<br>
Referencing always means exactly that: no contents are copied from one
module directory to an other. For example for a module or product to
reference the shared libraries of moduleX means to do exactly that:
link to the library <code>../../modules/moduleX/lib/libmoduleX.so</code>.<br>
<h1>Top-level Makefile</h1>
The top-level Makefile provides targets that effect the whole of the
LiveSupport project. Currently the only target is <code>doc</code>,
which generates the documentations for the whole project under the doc
directory.<br>
<br>
Please note that the above relative reference are valid in the build
environment only! After a module or product is installed, it can make
no assumptions on the relative locations of other components.<br>
<h1>Top-level configure script</h1>
The top-level <code>configure</code> script takes care of <a href="http://www.gnu.org/software/autoconf/">autoconf</a>-style configuring the whole LiveSupport project. This involves running <code>configure</code> in all tool, module and product directories, and creating a top-level <code>Makefile</code>.<br>
<br>
The configure script is expected to run autoconf in case the
autoconf-style environment has not yet been set up. This typically
involves executing an autogen.sh script from the bin directory.<br>
<br>
<h1>Documentation directory</h1>
The doc directory contains generic documentation with respect to the
whole LiveSupport project. Documentation pertaining to a module or
products should go under the modules' or products' directory,
respectively.<br>
<h1>Configuration files</h1>
Under the <code>etc</code> directory project-wide configuration files
are found, like the ones used by the top-level Makefile.<br>
are found, like the ones used by the top-level configure script. This
typically involves having autoconf sources (configure.ac,
acinlcude.m4), and the input for the top-level Makefile (Makefile.in).<br>
<h1>Module structure</h1>
Each module has the same directory structure, which is as follows:<br>
<br>
<pre>moduleX<br>|-- Makefile<br>|-- bin<br>|-- etc<br>|-- include<br>| `-- LiveSupport<br>| `-- ModuleX<br>|-- lib<br>|-- src<br>|-- tmp<br>`-- var<br></pre>
<h4>Makefile</h4>
A makefile executable by <a
href="http://www.gnu.org/directory/make.html">GNU make</a>. See the <a
href="buildEnvironment.html">build environment</a> document for a
<pre>moduleX<br>|-- configure<br>|-- bin<br>|-- etc<br>|-- include<br>| `-- LiveSupport<br>| `-- ModuleX<br>|-- lib<br>|-- src<br>|-- tmp<br>`-- var<br></pre>
<h4>configure</h4>
An <a href="http://www.gnu.org/software/autoconf/">autoconf</a>-style configure script. See the <a href="buildEnvironment.html">build environment</a> document for a
detailed description.<br>
<h4>bin</h4>
Directory containing all executables, either if these are executable
used for building the module, or executables resulting from the build.<br>
Directory containing all executables.<br>
<h4>etc</h4>
All configuration files go here.<br>
<h4>include</h4>
The public C/C++ header files for this module. The include files are
stored in a subdirectory that completely replicates the namespacing of
the module itself, in a case-sensitive manner. Thus a header file name <code>Foo.h</code>
for <code>ModuleX</code> would be contained in the directory <code>include/LiveSupport/ModuleX/Foo.h</code>,
and would be included with the line:<br>
<br>
<pre>#include "LiveSupport/ModuleX/Foo.h"<br></pre>
<h4>lib</h4>
Directory containing all shared and static libraries that are generated
by building the module. All external, third-party libraries used by
this module should be installed into the <code>../../usr/lib</code>
this module should be installed into the <code>../../../usr/lib</code>
directory. The libraries are named resembling the full namespacing of
the module, but all lower cased. For example, the library for moduleX
would be named <code>liblivesupport_modulex.so</code>, and thus would
be linked to with the linker option <code>-L../../modules/moduleX/lib
-llivesupport_modulex</code>.<br>
<h4>src</h4>
Contains all source files. A source file is a file which is processed
(compiled, etc.) by the build process, and as a result some target
files are generated from it.<br>
<h4>tmp</h4>
A temporary directory, holding temporary files used by the build
process. This directory either does not exist in the configuration
management system, or is empty there.<br>
<h4>var</h4>
Directory containing data. This can range from XML data to HTML pages
to all other files that are not source files (are not processed by the
build process). Note that web-page scripting files like PHP files also
fall into this category.<br>
<h1>Product structure</h1>
The directory structure for a product is in essence the same as for
modules, described above, with the difference that products don't have
externally visible include files, thus their directories don't contain
an <code>include</code> directory.<br>
<h1>Tools structure</h1>
The tools directory is an archive of tools and external libraries used
for either building or running the LiveSupport system. These tools are
installable to the usr directory of the LiveSupport directory tree.<br>
Each tool has its own directory, where several versions of the same
tool may reside. Thus the generic directory structure is as follows:<br>
<pre>tools<br>|-- tool1<br>| |-- tool1-X<br>| |-- tool1-Y<br>| ...<br>| `-- tool1-Z<br> ...<br>`-- toolN<br> |-- toolN-A<br> |-- toolN-B<br> ...<br> `-- toolN-C<br></pre>
Thus a user can select version X of toolK to be installed by selecting
the directory <code>tools/toolK/toolK-X</code>. Each tool directory
has the following structure:<br>
<pre>toolK-X<br>|-- bin<br>| `-- install.sh<br>|-- etc<br>|-- src<br>| `-- toolK-X.tar.gz<br>`-- tmp<br></pre>
The script <code>bin/install.sh</code> is responsible for installing
the specific tool under the <code>livesupport/usr</code> directory.
This typically involves the following steps:<br>
<pre>cd tmp<br>tar xfz ../src/toolK-X.tar.gz<br>./configure --prefix=../../../../usr<br>make install<br></pre>
<pre>toolK-X<br>|-- configure<br>|-- bin<br>|-- etc<br>|-- src<br>| `-- toolK-X.tar.gz<br>`-- tmp<br></pre>
The <code>configure</code> script is an autoconf-style configure script that creates a <code>Makefile</code> in the tool directory, reflecting typical configuration settings like <code>--prefix</code>.
Executing make install in the tool directory will result in the
compilation and installation of the specific tool into the specified <code>${prefix}</code>. <br>
<br>
In case the source needs to patched before compilation, the patches may
be contained in the <code>etc</code> directory.<br>
<h1>usr structure</h1>
The usr directory is similar to the /usr system directory on UNIX
systems (see the <a href="http://www.pathname.com/fhs/">Filesystem
Hierarchy Standard</a>). This directory contains all the external tools
@ -158,6 +243,8 @@ needed by either developing or running the LiveSupport system. This
directory is separate from the system /usr directory in order to
facilitate changing the configuration for LiveSupport related libraries
and tools in user space.<br>
<br>
</body>
</html>

View file

@ -1,35 +1,63 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>LiveSupport development environment</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
project, Copyright &copy; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
<li>Location: $URL:
svn+ssh://maroy@code.campware.org/home/svn/repo/livesupport/trunk/livesupport/doc/developmentEnvironment/index.html
$</li>
</ul>
<h1>Scope</h1>
This document gives an overview of the LiveSupport development
environment.<br>
<h1>Introduction</h1>
The LiveSupport project defines a uniform development environment to
enhance collaboration of participants in the project. The following
aspects of the environment are defined so far:<br>
<ul>
<li><a href="fileConventions.html">file conventions</a></li>
<li><a href="directoryStructure.html">directory structure</a></li>
<li><a href="buildEnvironment.html">build
environment</a></li>
<li><a href="installation.html">component installation guidelines</a></li>
</ul>
<br>
<br>
</body>
</html>

View file

@ -0,0 +1,166 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Component Installation Guidelines</title>
<meta content="$Author: fgerlits $" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright &copy; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author: fgerlits $</li>
<li>Version: $Revision: 1601 $</li>
<li>Location: $URL:
svn+ssh://maroy@code.campware.org/home/svn/repo/livesupport/trunk/livesupport/doc/developmentEnvironment/buildEnvironment.html
$<br>
</li>
</ul>
<h1>Scope</h1>
This document describes the installation procedures used by the components of the LiveSupport project.<br>
<h1>Introduction</h1>
Component installation is a process more tricky than it seems at first.
For example, when using a binary package manager, the component is
configured and compiled on a different system (the one creating the
binary package) than the one it will run on at the end.<br>
<br>
Installation also involves related issues like uninstallation and product
version migration, which also have to be discussed here.<br>
<br>
<h1>Installation use cases</h1>
<h2>Basic installation</h2>
The basic installation procedure is as follows.<br>
<h4>1. &nbsp;setting up the sources</h4>
Get and unpack the source tarball(s), patch them if necessary. Make sure all tools required by the build are present.<br>
<h4>2. configuring the sources</h4>
Run the <code>configure</code> script on the unpacked source tree.<br>
<br>
Assumptions:<br>
<ul>
<li>don't assume that the directory prefixes supplied to <code>configure</code> will be the final installation directories for the component</li>
<li>don't assume that the machine used for compilation will be the same machine the tool is used on (think binary package building)</li>
</ul>
<h4>3. compile the sources</h4>
The sources are compiled (if needed) by the invoking&nbsp;<code></code><code>make all</code>.<br>
<h4>4. install the component</h4>
Install (copy) the component, possibly into a different directory than
what was specified at step 2. This basically involves copying relevant
files from the (built) source directory tree into a target directory
tree.<br>
<h4>5. post-installation setup</h4>
Do post-installation (post-copy) setup of the component. This might involve the following:<br>
<ul>
<li>create and customize configuration files</li>
<li>setup &amp; configure external resources, like:</li>
<ul>
<li>database tables</li>
<li>update configuration files of other tools used by this component</li>
</ul>
</ul>
Assumptions:<br>
<ul>
<li>don't assume that the component has been built (compiled) on the same system as the one doing post-installation setup.</li>
<li>running this step and pre-uninstallation should be a null operation</li>
</ul>
<br>
<h2>Basic uninstallation</h2>
The basic uninstallation procedure is the following.<br>
<h4>1. pre-uninstallation steps</h4>
Destroy any resources used by the component, with the components itself still being installed. This might involve:<br>
<ul>
<li>destroying databases</li>
<li>reverting configuration changes to external resources made in during post-installation setup</li>
</ul>
Assumptions:<br>
<ul>
<li>this is the inverse of the post-installation setup procedure</li>
</ul>
<h4>2. uninstall the component</h4>
Remove the components files from the filesystem.<br>
<br>
<h2>Upgrading</h2>
TODO: detail the upgrading procedure<br>
<br>
<h1>Provisions in the build environment</h1>
For the above goals to be met, the following structure is needed for each component in the build environment:<br>
<br>
<pre>componentX<br>|-- configure<br>|-- bin<br>| |-- autogen.sh<br>| |-- postInstall.sh<br>| `-- preUninstall.sh<br>`-- etc<br> |-- acinclude.m4<br> |-- configure.ac<br> `-- Makefile.in<br></pre>
<h2>Considerations about specific installation steps</h2>
<h4>1. &nbsp;setting up the sources</h4>
none: this step is external to the package.<br>
<h4>2. configuring the sources</h4>
Assumptions:
<ul>
<li>don't assume that the directory prefixes supplied to <code>configure</code> will be the final installation directories for the component</li>
<li>don't assume that the machine used for compilation will be the same machine the tool is used on (think binary package building)</li>
</ul>
<h4>3. compile the sources</h4>
Assumptions:<br>
<ul>
<li>No hard-coded references should be made to any resources the component depends on. For example:</li>
<ul>
<li>don't hard-code shared library paths that are being linked to</li>
<li>don't hard-code PHP include paths that are referenced</li>
<li>don't hard-code paths that were supplied to configure</li>
</ul>
</ul>
<h4>4. install the component</h4>
When using package managers, this step is usually two-fold:<br>
<ul>
<li><code>make install</code> is executed, with <code>${prefix}</code> and other variables overwritten, so that the package is installed into a temporary directory</li>
<li>the files installed by the call to <code>make install</code> will be copied to their true target location when the package build based on them is installed on a target system</li>
</ul>
Note that there is a lot of package manager-specific magic happening
between these two steps, and that the steps usually take place on
different machines (after all the package is only build on one, while
it will be installed on a miriad of systems).<br>
<br>
Assumptions:<br>
<ul>
<li><code>make install</code> really should just copy files, and neither do, nor assume anything more than that.</li>
<li><code>make install</code> should also copy all files needed to perform the post-installation setup and pre-uninstall steps.</li>
</ul>
<h4>5. post-installation setup</h4>
The <code>bin/postInstall.sh</code> script should be used to perform
the post-installation setup. The script should expect all variables it
needs to be supplied by command-line arguments.<br>
<br>
Assumptions:<br>
<ul>
<li>only files that were installed by <code>make install</code> can be used to perform the post-installation setup</li>
</ul>
<h2>Considerations about specific uninstallation steps</h2>
<h4>1. pre-uninstallation steps</h4>
The <code>bin/preUninstall.sh</code> script should be used to perform
the pre-uninstallation steps. The script should expect all variables it
needs to be supplied by command-line arguments.<br>
<br>
Assumptions:<br>
<ul>
<li>only files that were installed by <code>make install</code> can be used to perform the pre-uninstallation step</li>
</ul>
<h4>2. uninstall the component</h4>
none: this step is external to the package<br>
</body>
</html>