Rearrangement of the doc
[u/mrichter/AliRoot.git] / html / installation.html
index 04b3c63..bd52d8e 100644 (file)
@@ -25,7 +25,7 @@ COL, COLGROUP, TABLE, TBODY, TD, TR   {
 <TABLE>
 <TR>
 <TD><img src="picts/MadHatter.gif" alt="ALICE Off-line Project Logo">
-<TD><img src="picts/installation_name.gif" alt="Installation Name">
+<TD><img src="picts/installation_name.gif" alt="Installation">
 <TD><img src="picts/AliceLogo.gif" alt="ALICE Logo">
 </TR>
 </TABLE>
@@ -135,6 +135,114 @@ root [1] .x menu.C
 </pre>
 </ol>
 
+<h2>Code development and user environment</h2>
+
+<p>If the ALICE environment is set up correctly, the
+<var>$ALICE_ROOT/lib/tgt_$ALICE_TARGET</var> directory is in the shared
+libraries load path, and the <var>$ALICE_ROOT/bin/tgt_$ALICE_TARGET</var>
+directory is in the PATH variable. This means that the command aliroot will
+in fact correspond to the file
+<var>$ALICE_ROOT/bin/tgt_$ALICE_TARGET/aliroot</var>.
+
+<p>This is convenient for the normal user, but as soon as the user wants to
+modify one or more directories, this arrangement becomes inefficient
+because if a local copy of one of the shared libraries is remade, the
+linker will always find the official unmodified one that sits in the above
+directory before the local one in the load library path. Moreover, and
+unless the full path is specified, the local version of the <b>aliroot</b>
+executable will be ignored and the official version executed.
+
+<p>Therefore in order to develop one or more packages locally
+(let's say the TPC) and make modifications, the following steps should be
+performed. We suppose here that the remote cvs server has been setup correctly
+as explained in the <a href="management.html">code management</a> section.
+
+<p><table>
+ <tr align=left>
+  <th width=30%>$ mkdir AliRoot
+  <td width=50%>create the working directory
+ <tr align=left>
+  <th>$ cd AliRoot
+  <td>set default to it
+ <tr align=left>
+  <th>$ mkdir pro
+  <td>create pro subdirectory
+ <tr align=left>
+  <th>$ cd pro
+  <td>set default to it
+ <tr align=left>
+  <th>$ ln -s $ALICE_ROOT/* ./
+  <td>link all files here
+ <tr align=left>
+  <th>$ rm lib
+  <td>remove link for library, we need a local file here to containing the new
+      TPC library
+ <tr align=left>
+  <th>$ rm bin
+  <td>remove link for bin directory, we need it to rebuild <b>aliroot</b> executable
+ <tr align=left>
+  <th>$ rm TPC
+  <td>remove link for TPC subdirectory, we need the real files here
+ <tr align=left>
+  <th>$ rm ALIROOT
+  <td>remove link to ALIROOT subdirectory, may be this is not really necessary
+      on all systems, but we do it just to be on the safe side
+ <tr align=left>
+  <th>$ cvsa co TPC
+  <td>get from the cvs server the TPC files to be modified
+ <tr align=left>
+  <th>$ cvsa co ALIROOT
+  <td>get from the server the ALIROOT files to recreate the executable
+ <tr align=left>
+  <th>$ mkdir -p lib/tgt_$ALICE_TARGET
+  <td>create library directory
+ <tr align=left>
+  <th>$ cd lib/tgt_$ALICE_TARGET
+  <td>set default to the lib directory
+ <tr align=left>
+  <th>$ ln -s $ALICE_ROOT/lib/* ./
+  <td>link all libraries here
+ <tr align=left>
+  <th>$ rm libTPC.sl
+  <td>remove link to TPC library, we need a real one
+ <tr align=left>
+  <th>$ changeRoot $HOME/AliRoot
+  <td>change the AliRoot root to $HOME/AliRoot
+ <tr align=left>
+  <th>$ rehash
+  <td>make sure that the new PATH is taken into account by the shell
+ <tr align=left>
+  <th>$ cd $ALICE_ROOT/TPC
+  <td>(1) set default to TPC directory
+ <tr align=left>
+  <th>$ make macroclean
+  <td>clean up all objects
+ <tr align=left>
+  <th>$ emacs AliTPCv1.cxx
+  <td>(2) edit all the files...
+ <tr align=left>
+  <th>$ make
+  <td>(3) recreate ../lib/libTPC.sl
+ <tr align=left>
+  <th>$ cd ../ALIROOT
+  <td>set default to ALIROOT directory
+ <tr align=left>
+  <th>$ make macroclean
+  <td>clean up object files
+ <tr align=left>
+  <th>$ make
+  <td>make new executable
+ <tr align=left>
+  <th>$ cd <em>directory</em>
+  <td>(4) set default elsewhere
+ <tr align=left>
+  <th>$ aliroot
+  <td>(5) run aliroot
+</table>
+
+<p>Steps 1-5 are the normal development cycle after the first pass through the 
+procedure.
+
 <hr>
 <address>
           <script language="JavaScript">