diff --git a/alliance/src/attila/Makefile.am b/alliance/src/attila/Makefile.am new file mode 100644 index 00000000..69501dcd --- /dev/null +++ b/alliance/src/attila/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src etc doc diff --git a/alliance/src/attila/doc/Makefile.am b/alliance/src/attila/doc/Makefile.am new file mode 100644 index 00000000..927f8785 --- /dev/null +++ b/alliance/src/attila/doc/Makefile.am @@ -0,0 +1,10 @@ + +SUBDIRS = attila + +pdfdir = $(prefix)/doc/pdf +pdf_DATA = attila.pdf + +EXTRA_DIST = $(pdf_DATA) \ + ./man_attila.sgm \ + ./attila.sgm + diff --git a/alliance/src/attila/doc/attila.pdf b/alliance/src/attila/doc/attila.pdf new file mode 100644 index 00000000..8a450565 Binary files /dev/null and b/alliance/src/attila/doc/attila.pdf differ diff --git a/alliance/src/attila/doc/attila.sgm b/alliance/src/attila/doc/attila.sgm new file mode 100644 index 00000000..59787912 --- /dev/null +++ b/alliance/src/attila/doc/attila.sgm @@ -0,0 +1,53 @@ + + + + + +Alliance"> +Attila"> +attila"> + +[--no-rm-core|-c]"> + +long N"> + + +]> + + + + + + + Attila User's Manual + September, 27 2002 + + + Jean-Paul + Chaput + + System Administrator + Pierre & Marie Curie University, LIP6 + ASIM Department + + + + September 2002 / 20020924.1 + September 2002 + + + + + + + &Alliance; - &attila; User's Manual + + &man-attila; + + + + + diff --git a/alliance/src/attila/doc/attila/Makefile.am b/alliance/src/attila/doc/attila/Makefile.am new file mode 100644 index 00000000..b33c0c00 --- /dev/null +++ b/alliance/src/attila/doc/attila/Makefile.am @@ -0,0 +1,9 @@ + + +pkghtmldir = $(prefix)/doc/html/@PACKAGE@ +pkghtml_DATA = \ + ./attila.html \ + ./ref_attila.html \ + ./man_attila.html + +EXTRA_DIST = $(pkghtml_DATA) diff --git a/alliance/src/attila/doc/attila/attila.html b/alliance/src/attila/doc/attila/attila.html new file mode 100644 index 00000000..bcca25e3 --- /dev/null +++ b/alliance/src/attila/doc/attila/attila.html @@ -0,0 +1,141 @@ + + Attila User's Manual

Attila User's Manual

Jean-Paul Chaput

System Administrator
Pierre & Marie Curie University, LIP6
ASIM Department
September 2002 / 20020924.1

Table of Contents
I. Alliance - attila User's Manual
attila --  A Tool Installer

  Next >>>
  Alliance - attila User's Manual
\ No newline at end of file diff --git a/alliance/src/attila/doc/attila/man_attila.html b/alliance/src/attila/doc/attila/man_attila.html new file mode 100644 index 00000000..23ae1b37 --- /dev/null +++ b/alliance/src/attila/doc/attila/man_attila.html @@ -0,0 +1,1068 @@ + +attila
Attila User's Manual
<<< Previous 

attila

Name

attila  --  A Tool Installer

Synopsis

attila [-h] [-S] [-U] [-F] [-A]
[--help] [--ssh] [--user] [--asim]
[--prefix=INSTALL_DIR] [--builddir=BUILD_DIR]
{--tool=name1} [--tool=name2...]

Description

attila automates the process of compiling + and installing one or more Alliance tools. The + tool can be installed either in the user's account (during the + devellopment stage) or in the Alliance system + wide tree (for instance /asim/alliance) when a + new version is made avalaible to all. +

attila proceed with the following + steps : +

  1. Checks if the sources of tools are present in the + user's account. If not, check them out from the + Alliance CVS tree. Note that you must + have access to it. +

  2. In case of --asim + or --full installations, + attila will fork itself on one Linux + computer (currently bip) and on one Solaris + computer (beny). As to connect on thoses + computer it will uses rsh so you must setup + your ~/.rhosts to access them whithout + passwords. You also can uses ssh (but the + procedure to allow automatic login is more complicated). +

  3. Run configure in the build + directory (see below). +

  4. Install the tool in the local install directory (see below) + or in the system-wide Alliance directory + rooted under /asim/alliance. +

+

After an --asim install
 

the build directory tree of the tool will be removed to + avoid messing with further local installations. +

+

Directory Structure

attila relies on the following tree + structure : (all paths below are given relative to the user's + home directory) +

+

CVS checkout

If the sources of the requested tool(s) are not found under + ~/alliance/src/ attila will + try to check them out. So, as says above, you must have access + rights to the Alliance CVS tree. +

In addition to the tool(s) sources, it will also checks for + the minimal set of files needed for configure to + run. As for now : +

+

Guessing CVSROOT

The root of the CVS tree will be set according to the + following rules : +

  1. Uses the user's environment variable + CVSROOT if sets. +

  2. Uses the attila default value + sets in attila.conf (variable + ATTILA_CVSROOT). +

+

Guessing ALLIANCE_TOP

The root of the Alliance installed distribution + tree will be set according to the following rules : +

  1. Uses the user's environment variable + ALLIANCE_TOP if sets. +

  2. Uses the attila default value + sets in attila itself (variable + ATTILA_ALLIANCE_TOP). +

    ALLIANCE_TOP
     

    is set in attila itself because its value + is a prerequisite to load the configuration file + attila.conf which is in the directory + $ALLIANCE_TOP/etc/. +

+

Arguments

attila accepts the followings arguments : +

+

Configuration file attila.conf

The configuration file is located in + $ALLIANCE_TOP/etc. This file is to be read by the + sh shell. It sets up the + following variables : +

+

Examples

Compile & install nero tool on the local computer + (must be either a Linux or a Solaris one) : +
$ attila --tool=nero
+    
+

Compile & install nero tool for all architectures + (currently only Linux and Solaris are supported) : +
$ attila --full --tool=nero
+    
+

Compile & install nero tool in the system-wide + directory (a new version for everyone to use) : +
$ attila --asim --tool=nero
+    
+

Compile & install mbk the genlib + (the order is significant) in a row for a local install on the current + computer : +
$ attila --tool=mbk --tool=genlib
+    
+


<<< PreviousHome 
Alliance - attila User's ManualUp 
\ No newline at end of file diff --git a/alliance/src/attila/doc/attila/ref_attila.html b/alliance/src/attila/doc/attila/ref_attila.html new file mode 100644 index 00000000..68efbc7c --- /dev/null +++ b/alliance/src/attila/doc/attila/ref_attila.html @@ -0,0 +1,161 @@ + +Alliance - attila User's Manual
Attila User's Manual
<<< PreviousNext >>>

I. Alliance - attila User's Manual

Table of Contents
attila --  A Tool Installer

<<< PreviousHomeNext >>>
Attila User's Manual attila
\ No newline at end of file diff --git a/alliance/src/attila/doc/attila/stylesheet-images/caution.gif b/alliance/src/attila/doc/attila/stylesheet-images/caution.gif new file mode 100644 index 00000000..9cc2e155 Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/caution.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/home.gif b/alliance/src/attila/doc/attila/stylesheet-images/home.gif new file mode 100644 index 00000000..55e1d599 Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/home.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/important.gif b/alliance/src/attila/doc/attila/stylesheet-images/important.gif new file mode 100644 index 00000000..25e40c76 Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/important.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/next.gif b/alliance/src/attila/doc/attila/stylesheet-images/next.gif new file mode 100644 index 00000000..8c502e74 Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/next.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/note.gif b/alliance/src/attila/doc/attila/stylesheet-images/note.gif new file mode 100644 index 00000000..7322e8e4 Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/note.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/prev.gif b/alliance/src/attila/doc/attila/stylesheet-images/prev.gif new file mode 100644 index 00000000..0894d9ec Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/prev.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/tip.gif b/alliance/src/attila/doc/attila/stylesheet-images/tip.gif new file mode 100644 index 00000000..f062955f Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/tip.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/toc-blank.gif b/alliance/src/attila/doc/attila/stylesheet-images/toc-blank.gif new file mode 100644 index 00000000..6c65e3a1 Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/toc-blank.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/toc-minus.gif b/alliance/src/attila/doc/attila/stylesheet-images/toc-minus.gif new file mode 100644 index 00000000..40ebe61e Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/toc-minus.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/toc-plus.gif b/alliance/src/attila/doc/attila/stylesheet-images/toc-plus.gif new file mode 100644 index 00000000..3e9e7d55 Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/toc-plus.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/up.gif b/alliance/src/attila/doc/attila/stylesheet-images/up.gif new file mode 100644 index 00000000..e899a272 Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/up.gif differ diff --git a/alliance/src/attila/doc/attila/stylesheet-images/warning.gif b/alliance/src/attila/doc/attila/stylesheet-images/warning.gif new file mode 100644 index 00000000..a5870799 Binary files /dev/null and b/alliance/src/attila/doc/attila/stylesheet-images/warning.gif differ diff --git a/alliance/src/attila/doc/builddoc.sh b/alliance/src/attila/doc/builddoc.sh new file mode 100755 index 00000000..4d1cf63a --- /dev/null +++ b/alliance/src/attila/doc/builddoc.sh @@ -0,0 +1,119 @@ +#!/bin/sh + + + LOG="builddoc.log" + TOOL="attila" + SGML_DOC="$TOOL.sgm" + + + detect_fail () + { + echo "" >&2 + echo "builddoc.sh ERROR:" >&2 + echo "" >&2 + echo " Cannot find \"$1\"." >&2 + echo "" >&2 + echo " Please check that DocBook is installed on your system." >&2 + echo "" >&2 + + exit 1 + } + + + detect () + { + STR="`which $1 2> /dev/null`" + + if [ -z "$STR" ]; then detect_fail "$1"; fi + + echo "$STR" + } + + + DB2MAN=`detect docbook2man` + DB2PDF=`detect db2pdf` + DB2HTML=`detect db2html` + + + rm -f $LOG + + + echo "" + echo " o Building MAN pages..." + $DB2MAN $SGML_DOC > $LOG 2>&1 + mv *.1 man1 + + echo " - Building Makefile.am for man1 subdir." + MAN_AM="Makefile.am-man" + echo "" > $MAN_AM + echo "" >> $MAN_AM + echo "man_MANS = \\" >> $MAN_AM + FILE_LIST=`(cd man1; find . -name \*.1 -exec echo {} \;)` + set $FILE_LIST + while [ $# -gt 0 ]; do + LINE=" $1" + if [ $# -gt 1 ]; then LINE="$LINE \\"; fi + echo "$LINE" >> $MAN_AM + shift + done + echo "" >> $MAN_AM + echo "EXTRA_DIST = \$(man_MANS)" >> $MAN_AM + mv $MAN_AM man1/Makefile.am + + + echo "" + echo " o Building HTML..." + if [ -d $TOOL ]; then + mv $TOOL/CVS ./CVS-$TOOL + mv $TOOL/stylesheet-images/CVS ./CVS-SS-$TOOL + fi + + $DB2HTML $SGML_DOC >> $LOG 2>&1 + if [ -d $TOOL.junk ]; then rm -r $TOOL.junk; fi + + echo " - Building Makefile.am for html subdir." + DOC_AM="Makefile.am-doc" + echo "" > $DOC_AM + echo "" >> $DOC_AM + echo "pkghtmldir = \$(prefix)/doc/html/@PACKAGE@" >> $DOC_AM + echo "pkghtml_DATA = \\" >> $DOC_AM + FILE_LIST=`(cd $TOOL; find . -name \*.html -exec echo {} \;)` + set $FILE_LIST + while [ $# -gt 0 ]; do + LINE=" $1" + if [ $# -gt 1 ]; then LINE="$LINE \\"; fi + echo "$LINE" >> $DOC_AM + shift + done + echo "" >> $DOC_AM + echo "EXTRA_DIST = \$(pkghtml_DATA)" >> $DOC_AM + mv $DOC_AM $TOOL/Makefile.am + + if [ -f ./CVS-$TOOL ]; then + mv ./CVS-$TOOL $TOOL/CVS + mv ./CVS-SS-$TOOL $TOOL/stylesheet-images/CVS + fi + + + echo "" + echo " o Building PDF..." + $DB2PDF $SGML_DOC >> $LOG 2>&1 + + echo " - Building Makefile.am for doc dir." + DOC_AM="Makefile.am" + echo "" > $DOC_AM + echo "SUBDIRS = $TOOL" >> $DOC_AM + echo "" >> $DOC_AM + echo "pdfdir = \$(prefix)/doc/pdf" >> $DOC_AM + echo "pdf_DATA = $TOOL.pdf" >> $DOC_AM + echo "" >> $DOC_AM + echo "EXTRA_DIST = \$(pdf_DATA) \\" >> $DOC_AM + FILE_LIST=`find . -name \*.sgm -exec echo {} \;` + set $FILE_LIST + while [ $# -gt 0 ]; do + LINE=" $1" + if [ $# -gt 1 ]; then LINE="$LINE \\"; fi + echo "$LINE" >> $DOC_AM + shift + done + echo "" >> $DOC_AM diff --git a/alliance/src/attila/doc/man1/Makefile.am b/alliance/src/attila/doc/man1/Makefile.am new file mode 100644 index 00000000..6739b32d --- /dev/null +++ b/alliance/src/attila/doc/man1/Makefile.am @@ -0,0 +1,6 @@ + + +man_MANS = \ + ./attila.1 + +EXTRA_DIST = $(man_MANS) diff --git a/alliance/src/attila/doc/man1/attila.1 b/alliance/src/attila/doc/man1/attila.1 new file mode 100644 index 00000000..3bb24a91 --- /dev/null +++ b/alliance/src/attila/doc/man1/attila.1 @@ -0,0 +1,260 @@ +.\\" auto-generated by docbook2man-spec $Revision: 1.1 $ +.TH "ATTILA" "1" "29 September 2002" "ASIM/LIP6" "Alliance - attila User's Manual" +.SH NAME +attila \- A Tool Installer +.SH SYNOPSIS +.sp +\fBattila\fR [ \fB-h\fR ] [ \fB-S\fR ] [ \fB-U\fR ] [ \fB-F\fR ] [ \fB-A\fR ] + [ \fB--help\fR ] [ \fB--ssh\fR ] [ \fB--user\fR ] [ \fB--asim\fR ] + [ \fB--prefix=\fIINSTALL_DIR\fB\fR ] [ \fB--builddir=\fIBUILD_DIR\fB\fR ] + \fB--tool=\fIname1\fB\fR [ \fB--tool=\fIname2\fB\fR\fI...\fR ] +.SH "DESCRIPTION" +.PP +attila automates the process of compiling +and installing one or more \fBAlliance\fR tools. The +tool can be installed either in the user's account (during the +devellopment stage) or in the \fBAlliance\fR system +wide tree (for instance /asim/alliance) when a +new version is made avalaible to all. +.PP +attila proceed with the following +steps\ : +.IP 1. +Checks if the sources of tools are present in the +user's account. If not, check them out from the +\fBAlliance\fR CVS tree. Note that you must +have access to it. +.IP 2. +In case of \fB--asim\fR +or \fB--full\fR installations, +attila will fork itself on one Linux +computer (currently bip) and on one Solaris +computer (beny). As to connect on thoses +computer it will uses rsh so you must setup +your ~/.rhosts to access them whithout +passwords. You also can uses ssh (but the +procedure to allow automatic login is more complicated). +.IP 3. +Run configure in the build +directory (see below). +.IP 4. +Install the tool in the local install directory (see below) +or in the system-wide \fBAlliance\fR directory +rooted under /asim/alliance. +.PP +.sp +.RS +.B "After an --asim install:" +the build directory tree of the tool will be removed to +avoid messing with further local installations. +.PP +.RE +.sp +.SS "DIRECTORY STRUCTURE" +.PP +attila relies on the following tree +structure\ : (all paths below are given relative to the user's +home directory) +.TP 0.2i +\(bu +~/alliance/src where the tools sources +are to be found. +.TP 0.2i +\(bu +~/alliance/Linux/build/$TOOL : the top +directory under which the tool will be compiled for Linux. +This is where the configure script will be run. +.TP 0.2i +\(bu +~/alliance/Linux/install : the top of +the install tree when the tool is compiled locally for Linux. +Under this directory you will found (at least)\ : +\&./bin, +\&./lib and ./include. +.TP 0.2i +\(bu +~/alliance/Solaris/build/$TOOL : +the tool's build directory for Solaris. +.TP 0.2i +\(bu +~/alliance/Solaris/install : top of the +local install tree for Solaris. +.PP +.SS "CVS CHECKOUT" +.PP +If the sources of the requested tool(s) are not found under +~/alliance/src/ attila will +try to check them out. So, as says above, you must have access +rights to the \fBAlliance\fR CVS tree. +.PP +In addition to the tool(s) sources, it will also checks for +the minimal set of files needed for configure to +run. As for now\ : +.TP 0.2i +\(bu +autostuff +.TP 0.2i +\(bu +alliance.m4 +.TP 0.2i +\(bu +motif.m4 +.TP 0.2i +\(bu +Makefile.am +.PP +.SS "GUESSING CVSROOT" +.PP +The root of the CVS tree will be set according to the +following rules\ : +.IP 1. +Uses the user's environment variable +CVSROOT if sets. +.IP 2. +Uses the attila default value +sets in attila.conf (variable +ATTILA_CVSROOT). +.PP +.SH "GUESSING ALLIANCE_TOP" +.PP +The root of the Alliance installed distribution +tree will be set according to the following rules\ : +.IP 1. +Uses the user's environment variable +ALLIANCE_TOP if sets. +.IP 2. +Uses the attila default value +sets in attila itself (variable +ATTILA_ALLIANCE_TOP). +.sp +.RS +.B "ALLIANCE_TOP:" +is set in attila itself because its value +is a prerequisite to load the configuration file +attila.conf which is in the directory +$ALLIANCE_TOP/etc/. +.RE +.sp +.PP +.SH "ARGUMENTS" +.PP +attila accepts the followings arguments\ : +.TP 0.2i +\(bu +\fB-h\fR, \fB--help\fR\ : +print help. +.TP 0.2i +\(bu +\fB-S\fR, \fB--ssh\fR\ : +uses ssh instead of rsh to +connect to the remote computers (in case of +\fB--asim\fR or \fB--full\fR). +.TP 0.2i +\(bu +\fB-U\fR, \fB--user\fR\ : +perform a local installation. +.TP 0.2i +\(bu +\fB-F\fR, \fB--full\fR\ : +install for all avalaibles architectures (currently Linux and +Solaris). +.TP 0.2i +\(bu +\fB-A\fR, \fB--asim\fR\ : +install in the system-wide directory +(/asim/alliance). +.TP 0.2i +\(bu +\fB--prefix=\fIINSTALL_DIR\fB\fR\ : +override the default installation directory. +.TP 0.2i +\(bu +\fB--builddir=\fIBUILD_DIR\fB\fR\ : +override the default building directory. +.TP 0.2i +\(bu +\fB--tool=\fIname1\fB\fR\ : +name of the tool to be installed. +.PP +.SH "CONFIGURATION FILE ATTILA.CONF" +.PP +The configuration file is located in +$ALLIANCE_TOP/etc. This file is to be read by the +sh \fBshell\fR. It sets up the +following variables\ : +.TP 0.2i +\(bu +\fBLINUX_TARGET\fR : the computer where to +compile for the Linux architecture (default bip). +.TP 0.2i +\(bu +\fBLINUX_CC\fR : the name or full path to +to the C compiler for Linux system +(default gcc3). +.TP 0.2i +\(bu +\fBLINUX_CXX\fR : the name or full path to +to the C++ compiler for Linux system +(default g++3). +.TP 0.2i +\(bu +\fBSOLARIS_TARGET\fR : the computer where to +compile for the Solaris architecture (default beny). +.TP 0.2i +\(bu +\fBSOLARIS_CC\fR : the name or full path to +to the C compiler for Solaris system +(default /usr/local/gcc-3.0.4/bin/g++3). +.TP 0.2i +\(bu +\fBSOLARIS_CXX\fR : the name or full path to +to the C++ compiler for Solaris system +(default /usr/local/gcc-3.0.4/bin/g++3). +.TP 0.2i +\(bu +\fBATTILA_CVSROOT\fR : the root of the +\fBAlliance\fR CVS tree +(default /users/outil/alliance/cvsroot). +.TP 0.2i +\(bu +\fBCVS_STARTUP_FILES\fR : the minimal set of +files needed to run configure. +.PP +.SH "EXAMPLES" +.PP +Compile & install nero tool on the local computer +(must be either a Linux or a Solaris one) : +.sp +.nf +$ \fBattila --tool=nero\fR + +.sp +.fi +.PP +Compile & install nero tool for all architectures +(currently only Linux and Solaris are supported)\ : +.sp +.nf +$ \fBattila --full --tool=nero\fR + +.sp +.fi +.PP +Compile & install nero tool in the system-wide +directory (a new version for everyone to use)\ : +.sp +.nf +$ \fBattila --asim --tool=nero\fR + +.sp +.fi +.PP +Compile & install mbk the genlib +(the order is significant) in a row for a local install on the current +computer\ : +.sp +.nf +$ \fBattila --tool=mbk --tool=genlib\fR + +.sp +.fi diff --git a/alliance/src/attila/doc/man_attila.sgm b/alliance/src/attila/doc/man_attila.sgm new file mode 100644 index 00000000..0bbdb63d --- /dev/null +++ b/alliance/src/attila/doc/man_attila.sgm @@ -0,0 +1,364 @@ + + + + + + + attila + 1 + ASIM/LIP6 + + + + attila + A Tool Installer + + + + + + attila + -h + -S + -U + -F + -A + + --help + --ssh + --user + --asim + + --prefix=INSTALL_DIR + --builddir=BUILD_DIR + + --tool=name1 + --tool=name2 + + + + + Description + + attila automates the process of compiling + and installing one or more Alliance tools. The + tool can be installed either in the user's account (during the + devellopment stage) or in the Alliance system + wide tree (for instance /asim/alliance) when a + new version is made avalaible to all. + + attila proceed with the following + steps : + + + Checks if the sources of tools are present in the + user's account. If not, check them out from the + Alliance CVS tree. Note that you must + have access to it. + + + + In case of --asim + or --full installations, + attila will fork itself on one Linux + computer (currently bip) and on one Solaris + computer (beny). As to connect on thoses + computer it will uses rsh so you must setup + your ~/.rhosts to access them whithout + passwords. You also can uses ssh (but the + procedure to allow automatic login is more complicated). + + + + Run configure in the build + directory (see below). + + + + Install the tool in the local install directory (see below) + or in the system-wide Alliance directory + rooted under /asim/alliance. + + + + + After an <literal>--asim</literal> install + the build directory tree of the tool will be removed to + avoid messing with further local installations. + + + + + + Directory Structure + + attila relies on the following tree + structure : (all paths below are given relative to the user's + home directory) + + + ~/alliance/src where the tools sources + are to be found. + + + + ~/alliance/Linux/build/$TOOL : the top + directory under which the tool will be compiled for Linux. + This is where the configure script will be run. + + + + ~/alliance/Linux/install : the top of + the install tree when the tool is compiled locally for Linux. + Under this directory you will found (at least) : + ./bin, + ./lib and ./include. + + + + ~/alliance/Solaris/build/$TOOL : + the tool's build directory for Solaris. + + + + ~/alliance/Solaris/install : top of the + local install tree for Solaris. + + + + + + + + + CVS checkout + + If the sources of the requested tool(s) are not found under + ~/alliance/src/ attila will + try to check them out. So, as says above, you must have access + rights to the Alliance CVS tree. + + In addition to the tool(s) sources, it will also checks for + the minimal set of files needed for configure to + run. As for now : + + + autostuff + + + alliance.m4 + + + motif.m4 + + + Makefile.am + + + + + + + + Guessing <literal>CVSROOT</literal> + + The root of the CVS tree will be set according to the + following rules : + + + Uses the user's environment variable + CVSROOT if sets. + + + + Uses the attila default value + sets in attila.conf (variable + ATTILA_CVSROOT). + + + + + + + + + + Guessing <literal>ALLIANCE_TOP</literal> + + The root of the Alliance installed distribution + tree will be set according to the following rules : + + + Uses the user's environment variable + ALLIANCE_TOP if sets. + + + + Uses the attila default value + sets in attila itself (variable + ATTILA_ALLIANCE_TOP). + + + <literal>ALLIANCE_TOP</literal> + is set in attila itself because its value + is a prerequisite to load the configuration file + attila.conf which is in the directory + $ALLIANCE_TOP/etc/. + + + + + + + + + + Arguments + + attila accepts the followings arguments : + + + -h, --help : + print help. + + + + -S, --ssh : + uses ssh instead of rsh to + connect to the remote computers (in case of + --asim or --full). + + + + -U, --user : + perform a local installation. + + + + -F, --full : + install for all avalaibles architectures (currently Linux and + Solaris). + + + + -A, --asim : + install in the system-wide directory + (/asim/alliance). + + + + --prefix=INSTALL_DIR : + override the default installation directory. + + + + --builddir=BUILD_DIR : + override the default building directory. + + + + --tool=name1 : + name of the tool to be installed. + + + + + + + + + Configuration file <literal>attila.conf</literal> + + The configuration file is located in + $ALLIANCE_TOP/etc. This file is to be read by the + sh shell. It sets up the + following variables : + + + LINUX_TARGET : the computer where to + compile for the Linux architecture (default bip). + + + + LINUX_CC : the name or full path to + to the C compiler for Linux system + (default gcc3). + + + + LINUX_CXX : the name or full path to + to the C++ compiler for Linux system + (default g++3). + + + + SOLARIS_TARGET : the computer where to + compile for the Solaris architecture (default beny). + + + + SOLARIS_CC : the name or full path to + to the C compiler for Solaris system + (default /usr/local/gcc-3.0.4/bin/g++3). + + + + SOLARIS_CXX : the name or full path to + to the C++ compiler for Solaris system + (default /usr/local/gcc-3.0.4/bin/g++3). + + + + ATTILA_CVSROOT : the root of the + Alliance CVS tree + (default /users/outil/alliance/cvsroot). + + + + CVS_STARTUP_FILES : the minimal set of + files needed to run configure. + + + + + + + + + + Examples + + + Compile & install nero tool on the local computer + (must be either a Linux or a Solaris one) : + +$ attila --tool=nero + + + + Compile & install nero tool for all architectures + (currently only Linux and Solaris are supported) : + +$ attila --full --tool=nero + + + + Compile & install nero tool in the system-wide + directory (a new version for everyone to use) : + +$ attila --asim --tool=nero + + + + Compile & install mbk the genlib + (the order is significant) in a row for a local install on the current + computer : + +$ attila --tool=mbk --tool=genlib + + + + + + + diff --git a/alliance/src/attila/src/Makefile.am b/alliance/src/attila/src/Makefile.am new file mode 100644 index 00000000..8d7cb491 --- /dev/null +++ b/alliance/src/attila/src/Makefile.am @@ -0,0 +1,10 @@ +AM_CFLAGS = @ALLIANCE_CFLAGS@ + +bin_SCRIPTS = attila +CLEANFILES = attila + +attila : ${srcdir}/attila.sh + ${SED} 's,__ALLIANCE_INSTALL_DIR__,$(prefix),' $< > $@ + chmod a+x $@ + +EXTRA_DIST = attila.sh diff --git a/alliance/src/attila/src/attila.sh b/alliance/src/attila/src/attila.sh new file mode 100755 index 00000000..f98268ef --- /dev/null +++ b/alliance/src/attila/src/attila.sh @@ -0,0 +1,620 @@ +#!/bin/sh +# +# $Id: attila.sh,v 1.1 2002/09/29 17:55:54 jpc Exp $ +# +# /------------------------------------------------------------------\ +# | | +# | A l l i a n c e C A D S y s t e m | +# | T o o l I n s t a l l e r | +# | | +# | Author : Jean-Paul CHAPUT | +# | E-mail : alliance-support@asim.lip6.fr | +# | ================================================================ | +# | sh script : "./attila" | +# | **************************************************************** | +# | U p d a t e s | +# | | +# \------------------------------------------------------------------/ +# + + + + +# /------------------------------------------------------------------\ +# | | +# | Functions Definitions | +# | | +# \------------------------------------------------------------------/ + + +# -------------------------------------------------------------------- +# Function : `print_usage()'. + + print_usage () + { + echo "" + echo "" + echo "Usage : attila [-h] [-U] [-F] [-A] \\" + echo " [--help] [--user] [--full] [--asim] \\" + echo " [--prefix=] [--builddir=] \\" + echo " <--tool= [--tool= [...]]" + echo "" + echo "Options :" + echo " o [-h|--help] : Print this help." + echo " o [-U|--user] : Perform a \"USER\" compilation/installation." + echo " The tool(s) will be compiled then installed under the" + echo " directory given by the \"--prefix\" argument." + echo " o [-F|--full] : Compile/install the requested tool(s) for all" + echo " avalaibles architectures. Currently only Linux and Solaris" + echo " are supported." + echo " o [-A|--asim] : Install the tool(s) in the ASIM shared direc-" + echo " tory (aka \"\$ALLIANCE_TOP\"), this must be used to upgrade" + echo " a tool. This option implies \"--full\"." + echo " NOTE : it will erase any previous installed version of" + echo " the tool. The temporary build directory (--builddir) will" + echo " also be erased." + echo " o [--prefix=] : Override the default top directory" + echo " where the tool will be installed. By defaults tools are" + echo " installed under :" + echo " \"\$HOME/alliance/\$OS/install\"." + echo " o [--builddir=] : Override the default top directory" + echo " where the tool will be compiled. By defaults tools are" + echo " compiled under :" + echo " \"\$HOME/alliance/\$OS/build\"." + echo " o [--tool=] : The name of the tool to be processed, at" + echo " least one must be present." + echo "" + echo "" + } + + + + +# -------------------------------------------------------------------- +# Function : `alc_banner()'. + + alc_banner () + { + echo "" + echo "" + echo " @ @ @@@@ " + echo " @ @ @ @@@ @@ " + echo " @@@ @@ @@ @ @@ " + echo " @@@ @@ @@ @@ @@@@ " + echo " @ @@ @@@@@@@@ @@@@@@@@ @@@@ @@ @@ @ " + echo " @ @@ @@ @@ @@ @@ @@ @@ " + echo " @ @@ @@ @@ @@ @@ @@@@@ " + echo " @@@@@@@ @@ @@ @@ @@ @@ @@ " + echo " @ @@ @@ @@ @@ @@ @@ @@ " + echo " @ @@ @@ @ @@ @ @@ @@ @@ @@@ " + echo " @@@@ @@@@ @@@@ @@@@ @@@@@@ @@@@@@ @@@@ @@" + echo "" + echo " A Tool for Install Alliance tools" + echo "" + echo " Alliance CAD System 5.0, attila 0.1" + echo " Copyright (c) 2002-2002, ASIM/LIP6/UPMC" + echo " E-mail support: alliance-support@asim.lip6.fr" + echo "" + echo "" + } + + + +# -------------------------------------------------------------------- +# Function : `find_self()'. +# +# Usage : find_self +# +# Return the absolute path of the binary, and if in case of self +# install switch to the binary in "attila/src" (attila.sh). + + find_self () + { + PROG="$1" + TOOL="$2" + + shift 2 + + # In case of self install, switch to the CVS script. + if [ "$TOOL" = "attila" ]; then + if [ "`basename $PROG`" != "attila.sh" ]; then + SELF="$HOME/alliance/src/attila/src/attila.sh" + + if [ ! -x "$SELF" ]; then + echo "attila: Self install problem, cannot find source file :" + echo " \"$SELF\"" + exit 1 + else + echo " o Self installing, switching to :" + echo " $SELF" + exec -a "$SELF" "$SELF" $* + fi + fi + fi + + # Installing a normal tool, normalise our path. + # Needed in case of recursive call on other computer (ASIM install). + CALL_DIR=`echo "$PROG" | sed 's,/[^/]*$,,'` + REAL_DIR=`(cd $CALL_DIR; pwd)` + + SELF="$REAL_DIR/`basename $PROG`" + } + + + +# -------------------------------------------------------------------- +# Function : `guess_os()'. + + guess_os () + { + case "`uname -sr`" in + Linux*) echo "Linux";; + SunOS\ 5*) echo "Solaris";; + *) echo "`uname -sr`";; + esac + } + + + + +# -------------------------------------------------------------------- +# Function : `guess_gcc()'. + + guess_gcc () + { + case "$1" in + "Linux") if which gcc3 > /dev/null 2>&1; then + CXX=g++3 + CC=gcc3 + fi + ;; + "Solaris") if [ -x /usr/local/gcc-3.0.4/bin/gcc ]; then + CXX=/usr/local/gcc-3.0.4/bin/g++ + CC=/usr/local/gcc-3.0.4/bin/gcc + fi + ;; + esac + } + + + +# -------------------------------------------------------------------- +# Function : `load_conf()'. +# +# The two ways to find ALLIANCE_TOP : +# +# 1. - In case of self install, blindly trust the user supplied +# ALLIANCE_TOP (user must supply it). +# +# 2. - Normal case (attila is installing any other tool) : try to +# find ALLIANCE_TOP in the user environment. If not set, use +# the attila install time default ATTILA_ALLIANCE_TOP. + + load_conf () + { + echo " o Loading configuration file." + + if [ "$ATTILA_ALLIANCE_TOP" = "__ALLIANCE_INSTALL_DIR__" ]; then + if [ -z "$ALLIANCE_TOP" ]; then + echo "attila: \$ALLIANCE_TOP is not set. Please set it up by executing" + echo " in the current shell process \"alc_env.sh\" or \"acl_env.csh\"." + echo " (thoses scripts can be found under the /etc directory of" + echo " your Alliance installation)." + + exit 1 + fi + + echo " - Skipped during self install." + else + if [ -z "$ALLIANCE_TOP" ]; then + ALLIANCE_TOP="$ATTILA_ALLIANCE_TOP" + fi + + if [ ! -f "$ALLIANCE_TOP/etc/attila.conf" ]; then + echo "attila: \"$ALLIANCE_TOP/etc/attila.conf\" doesn't exist !" + echo " Please check \$ALLIANCE_TOP." + + exit 1 + fi + fi + + if [ ! -d "$ALLIANCE_TOP/bin" ]; then + echo "attila: \"$ALLIANCE_TOP/bin\" doesn't exist !" + echo " Please check \$ALLIANCE_TOP." + + exit 1 + fi + } + + + + +# -------------------------------------------------------------------- +# Function : `get_string()'. + + get_string() + { + string=`echo $1 | cut -d '=' -f 2` + + echo $string + } + + + + +# -------------------------------------------------------------------- +# Function : `norm_dir()'. + + norm_dir() + { + DIR="$2" + + if [ -z "$DIR" ]; then + case "$1" in + "SRC") DIR="$HOME/alliance/src";; + "INSTALL") DIR="$HOME/alliance/$ALLIANCE_OS/install";; + *) DIR="$HOME/alliance/$ALLIANCE_OS/build" ;; + esac + fi + + HEAD=`echo $DIR | cut -b 1` + + if [ "$HEAD" != "/" ]; then + echo "$HOME/$DIR" + return + fi + + echo "$DIR" + } + + + + +# -------------------------------------------------------------------- +# Function : `make_dir()'. + + make_dir() + { + mkdir -p $1 + if [ $? -ne 0 ]; then exit 1; fi + } + + + + +# -------------------------------------------------------------------- +# Function : `cvs_check()'. + + cvs_check () + { + echo " o Checking CVSROOT." + + # Check the CVROOT variable. + if [ -z "$CVSROOT" ]; then + echo " - CVROOT is not set. Using defaut $ATTILA_CVSROOT." + CVSROOT="$ATTILA_CVSROOT"; export CVSROOT + else + echo " - Trusting user supplied \$CVSROOT ($CVSROOT)." + fi + + + # Check out minimal set of files if needed. + for file in $CVS_STARTUP_FILES; do + if [ ! -f $HOME/alliance/src/$file ]; then + cvs co alliance/src/$file + fi + done + + + # Checks for tools sources. + echo " o Checking tools sources." + for TOOL in $TOOLS; do + echo " - $HOME/alliance/src/$TOOL." + + if [ ! -d $HOME/alliance/src/$TOOL ]; then + echo " > The tool directory $TOOL doesn't exist." + echo -n " > Do you want to check it out from the CVS tree ? [y]/n " + + LOOP="y" + while [ "$LOOP" = "y" ]; do + read ANSWER + case "$ANSWER" in + "y"|"") ANSWER="y"; LOOP="n";; + "n") LOOP="n";; + *) echo -n " > ";; + esac + done + + case "$ANSWER" in + "y") cvs co alliance/src/$TOOL;; + "n") exit 1;; + esac + fi + done + + echo "" + } + + + +# -------------------------------------------------------------------- +# Function : `compile_tool()'. + + compile_tool () + { + + # ---------------------------------------------------------------- + # Check environment. + + echo " o Compilation environment." + + ALLIANCE_OS=`guess_os` + case "$ALLIANCE_OS" in + "Linux") MAKE="make";; + "Solaris") MAKE="gmake";; + *) echo "attila: \"$ALLIANCE_OS\" is not supported, only Linux & Solaris" + echo " are." + + exit 1 + esac + export MAKE + + echo " - OS := $ALLIANCE_OS" + echo " - MAKE := $MAKE" + + guess_gcc $ALLIANCE_OS + echo " - CC := $CC" + echo " - CXX := $CXX" + + + SRC_DIR=`norm_dir SRC "$SRC_DIR"` + BUILD_DIR=`norm_dir BUILD "$BUILD_DIR"` + INSTALL_DIR=`norm_dir INSTALL "$INSTALL_DIR"` + + + echo " o Loading Alliance environment." + if [ -f "$ALLIANCE_TOP/etc/alc_env.sh" ]; then + echo " - Using \"$ALLIANCE_TOP/etc/alc_env.sh\"." + . $ALLIANCE_TOP/etc/alc_env.sh + else + echo " - No \"$ALLIANCE_TOP/etc/alc_env.sh\" found, trusting user environment." + fi + echo "" + + + if [ "$ASIM" = "y" ]; then INSTALL_DIR="$ALLIANCE_TOP"; fi + + echo " - SRC_DIR := $SRC_DIR" + echo " - BUILD_DIR := $BUILD_DIR" + echo " - INSTALL_DIR := $INSTALL_DIR" + echo "" + + + + + # ------------------------------------------------------------------ + # Do the work. + + + cd $HOME/alliance/src + if [ ! -f $TOOL/Makefile.in ]; then + ./autostuff $TOOL + fi + + if [ "$ASIM" = "y" ]; then + echo " o For ASIM install, removing $BUILD_DIR" + for TOOL in $TOOLS; do + echo " - $BUILD_DIR/$TOOL." + rm -rf $BUILD_DIR/$TOOL + done + fi + + if [ ! -d $BUILD_DIR ]; then + echo " o Creating build directory $BUILD_DIR" + make_dir $BUILD_DIR + fi + + if [ "$ASIM" != "y" ]; then + if [ ! -d $INSTALL_DIR ]; then + echo " o Creating local install directory $INSTALL_DIR" + make_dir $INSTALL_DIR + fi + fi + + echo " o Building & installing requested tools." + for TOOL in $TOOLS; do + cd $BUILD_DIR + if [ ! -d $TOOL ]; then + echo " - Creating $TOOL directory." + make_dir $TOOL + fi + cd $TOOL + + $SRC_DIR/$TOOL/configure --prefix=$INSTALL_DIR + $MAKE prefix=$INSTALL_DIR install + + cd .. + if [ "$ASIM" = "y" ]; then + echo " o After an ASIM install, removing $BUILD_DIR" + echo " - $BUILD_DIR/$TOOL" + rm -rf $BUILD_DIR/$TOOL + fi + done + } + + + + +# /------------------------------------------------------------------\ +# | | +# | Main Part of the Shell Script | +# | | +# \------------------------------------------------------------------/ + + + ATTILA_ALLIANCE_TOP="__ALLIANCE_INSTALL_DIR__" + + +# -------------------------------------------------------------------- +# Variables sets in "attila.conf". + + + CVS_STARTUP_FILES="" + + LINUX_TARGET="bip" + LINUX_CC="gcc3" + LINUX_CXX="g++3" + + SOLARIS_TARGET="beny" + SOLARIS_CC="/usr/local/gcc-3.0.4/bin/gcc3" + SOLARIS_CXX="/usr/local/gcc-3.0.4/bin/g++3" + + +# -------------------------------------------------------------------- +# Internal variables. + + + CC=gcc + CXX=g++ + export CC CXX + + RSH="rsh" + + SRC_DIR="alliance/src" + BUILD_DIR="" + INSTALL_DIR="" + + + + TOOLS="" + + ASIM="n" + FULL="n" + AUTO="n" + SELF="$0" + + + + +# -------------------------------------------------------------------- +# Process the command line. + + +# Print the banner. + alc_banner + + + if [ $# -eq 0 ]; then + print_usage + exit 0 + fi + + + COMMAND_LINE="" + + while [ $# -gt 0 ]; do + case $1 in + # Long arguments. + --help) print_help; + exit 0;; + --ssh) RSH="ssh";; + --user) ASIM="n";; + --full) FULL="y";; + --asim) ASIM="y"; FULL="y";; + --asim-noloop) ASIM="y";; + --prefix=*) INSTALL_DIR=`get_string $1` + if [ $? -ne 0 ]; then + echo -n "attila: Bad directory in argument \"$1\"." + print_usage + exit 1 + fi;; + --builddir=*) BUILD_DIR=`get_string $1` + if [ $? -ne 0 ]; then + echo -n "attila: Bad directory in argument \"$1\"." + print_usage + exit 1 + fi;; + --tool=*) TOOL=`get_string $1` + if [ "$TOOL" = "attila" ]; then AUTO="attila"; fi + + TOOLS="$TOOLS $TOOL" + if [ $? -ne 0 ]; then + echo -n "attila: Bad tool name in argument \"$1\"." + print_usage + exit 1 + fi;; + + # Short arguments. + -*) SHORTS="$1"; NB=2; CH=`echo $SHORTS | cut -c$NB` + + while [ "$CH" != "" ]; do + case $CH in + h) print_usage; exit 0;; + S) RSH="ssh";; + U) ASIM="n";; + F) FULL="y";; + A) ASIM="n"; FULL="y";; + + *) echo "attila:error: Invalid option \`$CH'." + print_usage; exit 1;; + esac + + NB=`expr $NB + 1` + CH=`echo $SHORTS | cut -c$NB` + done;; + esac + + COMMAND_LINE="$COMMAND_LINE $1" + + shift + done + + + if [ -z "$TOOLS" ]; then + echo "attila:error: At least one \"--tool=\" argument is required." + print_usage; exit 1 + fi + + + if [ ! -z "$INSTALL_DIR" ]; then + INSTALL_DIR=`echo $INSTALL_DIR | sed "s,^$HOME/,,"` + fi + + if [ ! -z "$BUILD_DIR" ]; then + BUILD_DIR=`echo $BUILD_DIR | sed "s,^$HOME/,,"` + fi + + +# -------------------------------------------------------------------- +# Do the work. + + find_self "$0" "$AUTO" $COMMAND_LINE + + load_conf + + cvs_check + +if [ "$FULL" = "y" ]; then + # Recursive call. + ARGS="" + if [ ! -z "$INSTALL_DIR" ]; then ARGS="$ARGS --prefix=$INSTALL_DIR"; fi + if [ ! -z "$BUILD_DIR" ]; then ARGS="$ARGS --builddir=$BUILD_DIR" ; fi + if [ "$ASIM" = "y" ]; then + ARGS="$ARGS --asim-noloop" + else + ARGS="$ARGS --user" + fi + + for TOOL in $TOOLS; do + ARGS="$ARGS --tool=$TOOL" + done + + ENVIRONMENT="" + ENVIRONMENT="$ENVIRONMENT ALLIANCE_TOP=$ALLIANCE_TOP; export ALLIANCE_TOP;" + + $RSH $LINUX_TARGET "$ENVIRONMENT $SELF $ARGS" + $RSH $SOLARIS_TARGET ". /etc/profile; $ENVIRONMENT $SELF $ARGS" + else + # Out of recursion... + compile_tool + fi