From d36d2eabb8bf247f1a3912dc0f90129179c8cdce Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Sun, 29 Sep 2002 17:55:54 +0000 Subject: [PATCH] * attila : - Integration initiale dans l'arbre CVS. --- alliance/src/attila/Makefile.am | 1 + alliance/src/attila/doc/Makefile.am | 10 + alliance/src/attila/doc/attila.pdf | Bin 0 -> 137154 bytes alliance/src/attila/doc/attila.sgm | 53 + alliance/src/attila/doc/attila/Makefile.am | 9 + alliance/src/attila/doc/attila/attila.html | 141 +++ .../src/attila/doc/attila/man_attila.html | 1068 +++++++++++++++++ .../src/attila/doc/attila/ref_attila.html | 161 +++ .../doc/attila/stylesheet-images/caution.gif | Bin 0 -> 1039 bytes .../doc/attila/stylesheet-images/home.gif | Bin 0 -> 995 bytes .../attila/stylesheet-images/important.gif | Bin 0 -> 1081 bytes .../doc/attila/stylesheet-images/next.gif | Bin 0 -> 964 bytes .../doc/attila/stylesheet-images/note.gif | Bin 0 -> 1070 bytes .../doc/attila/stylesheet-images/prev.gif | Bin 0 -> 944 bytes .../doc/attila/stylesheet-images/tip.gif | Bin 0 -> 1029 bytes .../attila/stylesheet-images/toc-blank.gif | Bin 0 -> 95 bytes .../attila/stylesheet-images/toc-minus.gif | Bin 0 -> 843 bytes .../doc/attila/stylesheet-images/toc-plus.gif | Bin 0 -> 846 bytes .../doc/attila/stylesheet-images/up.gif | Bin 0 -> 922 bytes .../doc/attila/stylesheet-images/warning.gif | Bin 0 -> 1052 bytes alliance/src/attila/doc/builddoc.sh | 119 ++ alliance/src/attila/doc/man1/Makefile.am | 6 + alliance/src/attila/doc/man1/attila.1 | 260 ++++ alliance/src/attila/doc/man_attila.sgm | 364 ++++++ alliance/src/attila/src/Makefile.am | 10 + alliance/src/attila/src/attila.sh | 620 ++++++++++ 26 files changed, 2822 insertions(+) create mode 100644 alliance/src/attila/Makefile.am create mode 100644 alliance/src/attila/doc/Makefile.am create mode 100644 alliance/src/attila/doc/attila.pdf create mode 100644 alliance/src/attila/doc/attila.sgm create mode 100644 alliance/src/attila/doc/attila/Makefile.am create mode 100644 alliance/src/attila/doc/attila/attila.html create mode 100644 alliance/src/attila/doc/attila/man_attila.html create mode 100644 alliance/src/attila/doc/attila/ref_attila.html create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/caution.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/home.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/important.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/next.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/note.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/prev.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/tip.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/toc-blank.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/toc-minus.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/toc-plus.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/up.gif create mode 100644 alliance/src/attila/doc/attila/stylesheet-images/warning.gif create mode 100755 alliance/src/attila/doc/builddoc.sh create mode 100644 alliance/src/attila/doc/man1/Makefile.am create mode 100644 alliance/src/attila/doc/man1/attila.1 create mode 100644 alliance/src/attila/doc/man_attila.sgm create mode 100644 alliance/src/attila/src/Makefile.am create mode 100755 alliance/src/attila/src/attila.sh 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 0000000000000000000000000000000000000000..8a450565e88928f8daa9152e54d6058c8bca59b1 GIT binary patch literal 137154 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%0A@fNlud~M5PNMC;W5piE0>cIt| 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 F{uh%L0}=oL literal 0 HcmV?d00001 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


  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

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) +

  • ~/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 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 : +

  • -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 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 : +

  • 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
+    
+


<<< 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 >>>


<<< 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 0000000000000000000000000000000000000000..9cc2e1557447e9252ead07200617c2d56be4ed6f GIT binary patch literal 1039 zcmZ?wbh9u|lwgox_|5Sh{s9!`7`) zTel`}-MV$}UWUDUlh2)FICt*cwQCI5t^vtw_wF&=yJvXsp5?uJPS2k+Jb!NZ{JG`x z=g;52XL$eq{rB$--@gld|1RgdJ(|D$SrA+HAyGpqN^7x16zrMq{!ibMp=6~-(4c99<%wR z=lEzgH#IP+?pT$g`C;jexlBBNo_IO0=v$GV+9Oerpc~DrP;%tKgT`Z#V$4EkL{=v; zaW)#7)%@r_aPX#>5Fh`Y-v{$g32`gkn0k?^DW$2?_JPMq28Kof%}^J&9pNUYcvyH^ zranA$=y~&6-RTjl4}Cj!qXy}<-Pfit2&px)3vi@}Ecoi+!6qxs r(ZS&8c(6lQJMIjJqGMAJzuvhVhQ!S+Y#bZ9V$SZ``nrvgk--`Oh`uWh literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..25e40c76b573bd8674ea9f6ec415226a5a7ea10f GIT binary patch literal 1081 zcmeH`!AlfT0LI^{*krpft5G9~wab>QF61hrlLqdTZ7qs13C5hX*$y=!w3;|IUwr3)SH!wg^m z0sBxCMbk9HFwtm~Wm%4ka~zjSrFfnfgs3PoqR5M)C`p_oNtp~U%d(;-M;tE#f9 zs+uNf+Fok9F6g?b>$0xvh9Me;Vi=lX>~#ae5QHp*5`;2@3WO?zdm}W>lxgy&shXx~ zS(If7mZeyhZdsOXQ?@PGwp}P>3Wb8>Fpk4Jj_5d&<2VQbghB|#5n>VI5keSK7>6*9 zVjRaA;j~5=TV+VdtS)<&%g9QY~O%= z7XY;j7OA?6w;v|56*Y~ecdHNb{&1LE9ljn)G_}UYz~-EotgVY}Evz?ZbCE%Qe&E%) zY<}V(Oy|F(jSa1@cPY<)JylahkCjRbnG=tz+Xi_6x)c0VUzb0)6sbtP2s}RmMz18R z#yc*TK8D9{lr@NK>{~dzUJUjgP1jDAtyKs62bXCuv{Gz3-%{Fm-EzR^i|kg`ckLv7 zzNW*6>`rHW+}9atUH-GWQhsux=hmH1zqW%j>^6Gy!C1?^4Sufw?!N}7=rbeS(9Nw} zU#xlJ{Z4l=S6+E~*-O!NFz@VXc@G8x|gJ5|Hx|&`^AIq@7DufTJL=k*SSS$s)v|q2U0#fW|VLhy+z< zR$&&E6#^R%H8b;b_*e)mU}9q9Ws%9a@FBT{fiEEJLgc~*4<eAwF5u#VYwR?e%Shb+u`oHi>KJaB03@|>=hvC84eAr3KCza2Lm7+W|6 WloX~(95gs~e1fv~yck6V25SH<^dGbU literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7322e8e40bdc0c3f9f1a09786d42c012a6ab8b0e GIT binary patch literal 1070 zcmV+}1kw9PNk%v~VHf}y0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02lxm000R70RIUbNbsCNg9H;Q6xgd2rBVHES(3_Ku{tyHgqN;d+?Tzju!Z);;TuQDVJwRQAHSkR)YFdrEO!v&XBk zJwOwl{a4GHz*-^KY@Rd5rovJavBo?tB{Lyo6k9@$D)OJx<0pIB#+rEO&f%|l4*kcd o_`qJ2pi}&6ogi$&oxc>r#EMbwId40)HiwBGBuL!a2L=QHJ43Vzj{pDw literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0894d9ecb26316a61e914879c48520cc8aee392d GIT binary patch literal 944 zcmZ?wbh9u|RA%63_|Cw<(83_lBcRx$s5wQ`aE_tV94D`(UO{VvvbSaz?=5cG+tPEa zXUe%LOV2G`du{Epd&kZ_KX>i@wde1jzyJRJ|0oy@fgv6OI>0Qz0Llvt98(!IIb=LG zEI8QAA*>a1V#7k`W+6F`nhzV2ni%sMgrT8{g_D_uZNY^D443EGIST1`39V>a$f&~eRijiP ybPlVqjKR$hN{*ZiRYDmKlawRc1?88Ba5ye<;N%wZnBfq<^#1+^W@{b}25SIMS`<+L literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f062955fa717ba5a52b5167d7b76e3893c0bb8bd GIT binary patch literal 1029 zcmV+g1p50&Nk%v~VHp4z0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02u%n000Q;0RIUbNbsCNg9H;Q6nM^9DN3axLUeX-VZwX8CZ4;u zu^}Z&&MY#7=uMQzzXzjLK(DOA}@A62gx007pM9e9q?%bp7<-HvA!GFEE{U`SDUWKJX{{T literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6c65e3a194c9fc7cf689bfe14d8195bc40d8093b GIT binary patch literal 95 zcmZ?wbhEHbuk@&whU_+wL7l%xqVSOWl-?jltH literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..40ebe61e46a6bd1d8c2c5292af72365d489c6c56 GIT binary patch literal 843 zcmZ?wbhEHb~0HBcxg#Z8m literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3e9e7d55a3dde56cd0f6596f3cd6d555323ab273 GIT binary patch literal 846 zcmZ?wbhEHb9$=O@8TlTi}9P62KZpzks zTaVp4cJBGPYwxc;fB*db_xJxt!Dt8!mk`haW&s9JUSQy;XHe#l@z}87U^9oXR?LZl z2hFTJQZ5+>5*SSzV6bfE`GK5MM$#&QRJy`J4!v@O~A@yPr!5RMtk9#~G@Ae)K-pJ_rp>Uc7 ziw-~o3~UP@zym?xEFc02AO*|-vw#E?02xqhN|KsLsHv1HNgALpfillvbwGtfWa^Z%Nji21e&%sn=PQ#YMFrP z^O>e;0TxYLmSwl?bUJ&$-ahsh_)iP;!^Xcafc}H~G`Ak>lJj)WmUlgKr9}6g9#&V= z&c&jqyYwa#SX_I2V&c-qQs7*1*_+%EZaV@WdJm0PEt+!V`f3joM2X1L_My4D`u3j6vyCXXt z+{WQYgC}$7{kgpPEVcko?zh1;vK8^&#pzQ*mhE>PEhTR(eVdy)=pGVYl)t2ftTQzE zzU^7puUXRbeBm&39nfU1TKR=nbh1$ Qxn7IjbH6=6b-57z3rbJ+&;S4c literal 0 HcmV?d00001 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