Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# $XConsortium: Makefile /main/3 1996/05/13 11:41:59 drk $
|
||||
# use the load* target to force building
|
||||
|
||||
all::
|
||||
|
||||
findnewrcs.700.90:findnewrcs.c
|
||||
rm -f $@
|
||||
cc +DA1.0 +O1 -o $@ findnewrcs.c
|
||||
loadfindnewrcs.700.90:
|
||||
rm -f findnewrcs.700.90
|
||||
cc +DA1.0 +O1 -o findnewrcs.700.90 findnewrcs.c
|
||||
|
||||
findnewrcs.700.807:findnewrcs.c
|
||||
rm -f $@
|
||||
cc +O1 -o $@ findnewrcs.c
|
||||
loadfindnewrcs.700.807:
|
||||
rm -f findnewrcs.700.807
|
||||
cc +O1 -o findnewrcs.700.807 findnewrcs.c
|
||||
|
||||
findnewrcs.800.90:findnewrcs.c
|
||||
rm -f $@
|
||||
cc +DA1.0 +O1 -o $@ findnewrcs.c
|
||||
loadfindnewrcs.800.90:
|
||||
rm -f findnewrcs.800.90
|
||||
cc +DA1.0 +O1 -o findnewrcs.800.90 findnewrcs.c
|
||||
|
||||
findnewrcs.800.80:findnewrcs.c
|
||||
rm -f $@
|
||||
cc +O1 -o $@ findnewrcs.c
|
||||
loadfindnewrcs.800.80:
|
||||
rm -f findnewrcs.800.80
|
||||
cc +O1 -o findnewrcs.800.80 findnewrcs.c
|
||||
|
||||
findnewrcs.800.70:findnewrcs.c
|
||||
rm -f $@
|
||||
cc +O1 -o $@ findnewrcs.c
|
||||
loadfindnewrcs.800.70:
|
||||
rm -f findnewrcs.800.70
|
||||
cc +O1 -o findnewrcs.800.70 findnewrcs.c
|
||||
|
||||
findnewrcs.300.90:findnewrcs.c
|
||||
rm -f $@
|
||||
cc +O1 -o $@ findnewrcs.c
|
||||
loadfindnewrcs.300.90:
|
||||
rm -f findnewrcs.300.90
|
||||
cc +O1 -o findnewrcs.300.90 findnewrcs.c
|
||||
|
||||
findnewrcs.300.80:findnewrcs.c
|
||||
rm -f $@
|
||||
cc +O1 -o $@ findnewrcs.c
|
||||
loadfindnewrcs.300.80:
|
||||
rm -f findnewrcs.300.80
|
||||
cc +O1 -o findnewrcs.300.80 findnewrcs.c
|
||||
|
||||
findnewrcs.SunOS:findnewrcs.c
|
||||
rm -f $@
|
||||
cc -o $@ findnewrcs.c
|
||||
loadfindnewrcs.SunOS:
|
||||
rm -f findnewrcs.SunOS
|
||||
cc -o findnewrcs.SunOS findnewrcs.c
|
||||
|
||||
findnewrcs.SunOS_PPC:findnewrcs.c
|
||||
rm -f $@
|
||||
cc -o $@ findnewrcs.c
|
||||
loadfindnewrcs.SunOS_PPC:
|
||||
rm -f findnewrcs.SunOS_PPC
|
||||
cc -o findnewrcs.SunOS_PPC findnewrcs.c
|
||||
|
||||
findnewrcs.AIX:findnewrcs.c
|
||||
rm -f $@
|
||||
cc -o $@ findnewrcs.c
|
||||
loadfindnewrcs.AIX:
|
||||
rm -f findnewrcs.AIX
|
||||
cc -o findnewrcs.AIX findnewrcs.c
|
||||
|
||||
findnewrcs.UNIX_SV:findnewrcs.c
|
||||
rm -f $@
|
||||
cc -DUSL -o $@ findnewrcs.c
|
||||
loadfindnewrcs.UNIX_SV:
|
||||
rm -f findnewrcs.UNIX_SV
|
||||
cc -o findnewrcs.UNIX_SV findnewrcs.c
|
||||
|
||||
findnewrcs.UNIX_System_V:findnewrcs.c
|
||||
rm -f $@
|
||||
cc -DUSL -o $@ findnewrcs.c
|
||||
loadfindnewrcs.UNIX_System_V:
|
||||
rm -f findnewrcs.UNIX_System_V
|
||||
cc -o findnewrcs.UNIX_System_V findnewrcs.c
|
||||
|
||||
findnewrcs.HP-UX:findnewrcs.c
|
||||
rm -f $@
|
||||
cc +O1 -o $@ findnewrcs.c
|
||||
loadfindnewrcs.HP-UX:
|
||||
rm -f findnewrcs.HP-UX
|
||||
cc +O1 -o findnewrcs.HP-UX findnewrcs.c
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+179
@@ -0,0 +1,179 @@
|
||||
ELF 4q4 (44 Ô\ÿ\ÿ]]ð X````�/usr/lib/ld.so.1C_7EWT5Z1%[K\N;]LJ S6?Q:X3D2^IA4M8)/HUPCO#V+"&$,*90'->!BF<G=(@YR.Ôèx h˜Ô N° N¼
|
||||
OÀ]_t
|
||||
_à`\```ð`ð@^à8"]Ø@^8"N° #Ø
|
||||
T(b02_(H"7]œ`>`ð@!CfXÿñH]ÀèODd˜[_d8"a^ÔD"f xmb4v^¼8"|˜@‚]„\"‰^ŒT�^ø˜"•^t"�]ü\¢^\°©\ÿÿñ°]0�·^È8"¿^Px"Å^D"Êb4!Ò`ðÿñÙ]l8"à]Hæ^°8"ì_8"ò^˜8"øb8]<,+8^,|_4H"]äp%]ÌD"+b<2b@8^ì˜"?]´@FN¼
|
||||
S^8HY]Täa]�ðh_T"mbDt_,"{fD‚`\ÿñ˜_Xx"¡fH®_L8"´^¤8"»]¨|Ã]`0Ë^€ "Ô^DÌÛ]ðôâ``ÿñë_@8"ñ^ ¬ù]x<"fL^hä"__iobopenstrrchrreadlink_finimainSourceLenreadmalloc_iob_endstrcatResolveLinkchownfork_start_environcreatUsagegetcwdfflushdup2readdirfreeperror_etextatexitsymlinkchdirstatenviron_edatamktemp_exitutimeclosermdirWorkingDirCmpexitGetNewfopenwritestrcmplstatoptinderrnofilenostrcpy_lib_versionfgetsfprintfstrlenwaitBufferexeclpoptarg_GLOBAL_OFFSET_TABLE_getgrnamSourceDirCmpmkdirunlinksprintfsetvbufclosedirfcloseprintf_DYNAMICchmodstrncmpgetoptWorkingLen_initopendirlibc.so.1/usr/ucblibb4&`ð fDMb<Bb@C]00]<<]H7]TH]`T]l6]x[]„)]�I]œ]¨S]´E]À!]ÌA]Ø]ä@]ðW]ü-^3^^ Z^,>^8G^DV^P2^\.^h^^t,^€U^Œ*^˜:^¤R^°8^¼'^È1^Ô$^à^ìD^ø+_L_J_9_(_4?_@Y_LQ_XO_d#�ã¿ �Çà�è¼ à @¢ D¥, ¤ ¤@'˜ä$â4œ# €�€�@S¸S�"°@S´ÿÿë�’”–@@S@S®?ÿÿ‚c �ã€ð' D˜�!S’cÀÔ D@S¦� @S��Çà�è?ÿÿ‚c�ã€ð' Dò' HÀ'¿üÀ'¿øÀ'¿ô˜�!’ ” @–$@S•—Ð#Ø@S”—Ð"cØÐ DÒ H˜” @S�º€¢?ÿ€ã€É™Ô¢DÔ'¿ü€Ú™ÖâDÖ'¿ø€Õ™ø"DÚO€�
|
||||
€P€=—Þã°žà!—Þ$#°#—âc´¢`%—â$£´'—æã¼¦à)—æ%#¼+—êc¸ª`-—ê%£¸€5/—îã°®à1—î&#°€.3—òc´²`5—ò&£´€'7—öã¼¶à—ö"#¼€ —Òc¸’`—Ò"£¸€Ö HÐÀÿÿ‰� @S/€ÐO€¢ A¿ÿÀ¢ a¿ÿ×€¢ m¿ÿꀢ o¿ÿÚ€¢ x¿ÿß¿ÿë¸ ¿ÿ°€—Úc¤š`—Ú#㤀x!—à# #—à$c €q%—䣨¤ '—ä$㨀j¨ +—è%cÈ€e¬ /—ì%ãЀ`° 3—ð&cÄ€[5—ô£¬´ 7—ô&㬀T—Ð#˜� —Ð"c˜€M—Ô£�” —Ô"ã�€F—Ø#”˜ —Ø#c”€?—Þ㜞à!—Þ$#œ€8#™âbD%—â$£Ô€2'™æâD)—æ%#Ø€,+—À%cÌ€(-—죌¬ /—ì%㌀!ð HÐÿÿ� @Rµ€��" C€¢ ;¿ÿôS”¢À“2 ²@ ²@ ³.`’@¶
|
||||
`’™*`Ö
|
||||
€¢À¿ÿç˜
|
||||
Ð �¿ÿØ¿ü€�€Ú¿üÞK@€�€à¿üâL€¤`/€A˜�"D’$@Rš¸€¢ €
|
||||
ä HÔ€U’`ˆ˜�!@R‚� @Ryæ¿ü€�€è¿üêM€�€Ð¿ü@R‚¶�@R~�� @R}Ð'¿hпhU’`´”Ö¿ü@Rxì¿hì'¿ü€
|
||||
�@Rk� @RkÐ'¿üпü’@Rlî¿ø€�€ð¿øòN€�€@пü@RW� @RWÐ'¿øÐ¿øÒ¿ü@RXпøU’`¼@RV’¿lпø@RU€�€ô¿€7<�€(€¢ €Ð¿ø’ @íÐ'¿øÐ¿ø’ /@RE¸ÔO€�
|
||||
€�U’`Ä@R>€�€À/˜�!U’`ÌÔ¿ø@R€0Ö¿øØJÀ€£ /€+˜�"D’$@R¸€¢ €
|
||||
Ú HÔ@U’`è˜�!@Q÷� @Qîпø@R¶�@Qü�� @QûÐ'¿hпhU’a”Ö¿ø@QöÞ¿hÞ'¿øÐ¿øÒ¿ü@Qÿ€�€à¿ô à'¿ôпü@Qá� @Qá#˜Ð$b8˜Ð"8Ò¿ü@Qà˜Ð"8U’a@QÝпø@QÎ� @QÎ%™Ð$¢H™Ð"HÒ¿ø@QÍ™Ð"HU’a @QʘÐ"8@Qº'™Ð$âL™Ð"H@Q´)˜Ð%"0+—êcÄ€�€-—죜€�€
|
||||
—Ð#Ø@ÿ—Ð#Ø@b€%U�!$@Q²U�!0@Q®U�!`Ò¿ü@Q©U�!|Ò¿ø@Q¤/—î㜀�€
|
||||
U�!˜—ÒcØ—Ô£Ø@Q—U�!°@Q“1˜ð"<ò D€¦€R5˜ô¢<ö D€¦€€J˜Ð"<“* Ô HЀ @Qh¶Ð¿ø@Qd�� @QcÐ'¿h˜Öâ<™*àÚ HÖ@U’a´Ð¿hÔ¿ø@QZ˜Þâ<¡+àâ HÐ@@QM¶Ð¿ü@QI�� @QHÐ'¿d%˜ä¢<§, è HÖU’a¼Ð¿dÔ¿ü@Q?пdÒ¿hÔ¿ô@пd@QLпh@QI+˜êb<ª`-˜ê%¢<¿ÿ´€Ð¿üÒ¿øÔ¿ô@� @Q�Çà�è?ÿþ‚bÈ�ã€ð' Dò' Hô' LÀ'»@À'»<À'»8—Ð#”€�€ ˜�!U’aÄÔ H@P÷—ÒcŒ€¢`€
|
||||
˜�!U’aàÔ DÖ H@PêU�!ø@PõºÐ D@Pñ�� @PðÐ'¿ðпðU’bÔ D@Pì—Ô£Œ€�
|
||||
€ ˜�!U’bÔ¿ð@PË’¿Pпð@Pô€�€¦’»Dпð”$@Pï€�€žU�"@PǺРH@PÃ�� @PÂÐ'¿HпHU’b Ô H@P¾U�"(@P´ºÐ H@P°�� @P¯Ð'¿DпDU’b0Ô H@P«Ð¿H’ @
|
||||
VÐ'¿H—Ö㌀�€ ˜�!U’b8Ô¿H@P…’¿PпH@P®€�€
|
||||
’»DпD”$@P©€�€S—Ø#¤€�€N—Úc�€�
|
||||
€Ô¿ð™ÞâL”€U’bL˜�!@Pb!—à#Ä€�€Ð¿ð@¸Ð¿HÒ¿ð@=€1Ò¿ð#™âbL’@U�"d@PsпHÒ H˜Ô¢0@Py€�€ ä¿H'˜æâ0èL€€¥ /€
|
||||
Ô¿ð+™êbL”€Ò¿HU�"t@PZ€Ò¿H-˜ì¢0’@Ô¿ð/™îâL”€U�"ˆ@PLпð@PLð¿Hð'¿ð²
|
||||
ò'¿Lô¿L€�€`’¿Pпð@P4€�€Rö¿d9<ºÀ(€§@€ пð’ @ ÌÐ'¿ð€BÒ¿d<–
|
||||
@
|
||||
€¢À€9пðU’b @P/Ð'¿ü€�€.˜�"D’$Ô¿ü@P(˜�"D@Oú˜šbCÀ*
|
||||
пð@P˜�"D@Oð� @OðÐ'¿ðпð˜’bD@Oð—Þ㌀�€ ˜�!U’b¤Ô¿ð@OÌпü@P€€€€à¿L $ à'¿L¿ÿ â¿L€�€%—ä£�€�€ ˜�!U’bÀÔ¿ð@O¬À'»8пð@Oç€�€'˜æâ@€¤à€Ð¿ð@O߀¬U�"Ø@OÜÐ'¿Ü€�€¤Ð¿Ü@OØÐ'¿Ø€�€šÐ¿Ø�
|
||||
@O—€¢ €¿ÿòпØ�
|
||||
@OŽè¿Ø�� U’bÜ@Oœ€�€¿ÿâ˜�"DÒ¿ð@O†˜�"DU’bà@OƒÒ¿Ø’`
|
||||
˜�"D@O}пØ�
|
||||
’¿P@OŠ€�€˜�"D@O˜¿ÿÃê»8€�€�!,@O_ì»,Ð%¡(î»,ðá(ð'»,€�!,@OUÐ'»8ò»8ò'»,ô»,À&¡(ö»,À&à˜�"D@OG� @OGø»,Ð'ú»,Ð@˜’bD@OEпØ�
|
||||
@O8Ò¿Ø”`
|
||||
–€À*ÿþпØ�
|
||||
@O0� @O0Ø»,Ð# Ú»,Ð`Ò¿Ø’`
|
||||
@O.п�
|
||||
@O!Þ»,Ð#àà»,¢ ¤¿Pè „è$`„è €è$`€¬ €¬% è€è$@¬% è€è$@¬% è€è$@¬¥ 耿ÿõè$@î»,° ð%à˜ò»,À&a$¿ÿcпÜ@O<À'»@Ð D@O,€�€5˜ô¢@€¦ €Ð D@O$€ÍU�"ä@O!Ð'¿Ü€�€ÅпÜ@OÐ'¿Ø€�€»ö¿ØøNà
|
||||
€§ .€Ð¿Ø�
|
||||
U’bè@Nê€�€¿ÿë˜�"DÒ D@NÔ˜�"DU’bì@NÑÒ¿Ø’`
|
||||
˜�"D@NËпØ�
|
||||
’¿P@NØ€�€Ò¿Ø’`
|
||||
U�"ð@NÆ€�€˜�"D@NÝ¿ÿÃú»@€�€�!,@N¤Ò»4Ð"a(Ô»4Ö¡(Ö'»4€�!,@NšÐ'»@Ø»@Ø'»4Ú»4À#a(Þ»4À#à˜�"D@NŒ� @NŒà»4Ð$â»4Ð@˜’bD@NŠÐ¿Ø�
|
||||
@N}� @N}ä»4Ð$ æ»4ÐàÒ¿Ø’`
|
||||
@N{п�
|
||||
@Nnè»4Ð% ê»4¬`®¿Pðà„ð% „ðà€ð% €´ €´& ðÀð%€´& ðÀð%€´& ðÀð%€´¦ ðÀ¿ÿõð%€ö»4¸ ø&à˜ú¿d<’@€¢@
|
||||
€$пØ�
|
||||
’¿P@NW€�€Ö»4˜àœš¿Pà`„à# „à`€à# €¤ €¤$ à@à#¤$ à@à#¤$ à@à#¤¤ à@¿ÿõà#æ»4¨ è$á$€ê»4À%a$¿ÿBпÜ@N`À'»<ì L€�€ÍÐ H@NL€�€/˜îâ@€¥à€Ð H@ND€½U�"ô@NAÐ'¿Ü€�€µÐ¿Ü@N=Ð'¿Ø€�€«ð¿ØòN
|
||||
€¦`.€Ð¿Ø�
|
||||
U’bø@N
|
||||
€�€¿ÿë˜�"DÒ H@Mô˜�"DU’bü@MñÒ¿Ø’`
|
||||
˜�"D@MëпØ�
|
||||
’¿P@Mé€�€˜�"D@N¿ÿÌô»<€�€�!,@MÍö»0Ð&á(ø»0ú!(ú'»0€�!,@MÃÐ'»<л<Ð'»0Ò»0À"a(Ô»0À" ˜�"D@Mµ� @MµÖ»0Ð"ÀØ»0И’bD@M³Ð¿Ø�
|
||||
@M¦� @M¦Ú»0Ð#`Þ»0ÐàÒ¿Ø’`
|
||||
@M¤Ð¿Ø�
|
||||
@M—à»0Ð$ â»0¤`œ¦¿Pèà„è$ „èà€è$ €¬ €¬% èÀè$€¬% èÀè$€¬% èÀè$€¬¥ èÀ¿ÿõè$€î»0° ð%á$ò¿d5<¶@9(€¦À€Ð¿Ø�
|
||||
’¿P@M�ú»0�`’¿PÔ`„Ô" „Ô`€Ô" €˜ €˜# Ô@Ô"˜# Ô@Ô"˜# Ô@Ô"˜£ Ô@¿ÿõÔ"Ú»0ž Þ#`˜¿ÿRпÜ@M�!—à#Œ€�€ ˜�!U’cÔ D@M9â»@â'»4ä»4€�€ó'—æãŒ€¤à€è»4Ô ê»4Ö@U’c(˜�!@M$À'»(ì»4î ð»4ò ´@¶& ö'¿Hø»4ú €§`€<пHU’cL@M6€�€Ð»(� Ð'»(—Òc´€� €—Ô£Œ€¢ €˜�!U’cP@Lü€µÐ¿HU’cd@M€�€Ö»(–àÖ'»(—Ø#°€�€—ÚcŒ€£`€˜�!U’ch@L߀˜—Ð#Ü@Lè”Þ»4Ðà—ÒcÜ@M€�€à»( à'»(#—âc¸€�€%—䣌€¤ €˜�!U’c|@L¼€uæ»4ÐàU’c˜@LØ€�€)—è#Œ€¥ €˜�!U’cœ@L¦€_+—êcЀ�€ì»4Ð U’c´@L½€�€/—î㌀¥à€˜�!U’c¼@L‹€D1—ð#¼€�€"ò»4ô`˜€�€ö»4øà$;<� €¢ €Ô»4Ö $˜
|
||||
àI€£ I€—ÚcŒ€£`€˜�!U’cÔ@Lf€Þ»<Þ'»0à»0€�€â»0ä`æ»4èà€¥€ê»4Ð`ì»0Ò @Lu€�€î»0ðà° ð%à€ò»0ôa(ô'»0¿ÿã7—ö㌀¦à€ø»0€�€ú»0Ô`л0ÖU’cð˜�!@L0€˜�!V’`@L(Ò»4Ô`˜€�
|
||||
€8Ö»4Øà$<ž
|
||||
!€£À€0#—âcÈ€�€ä»4æ¡$€�€
|
||||
è»4ê °-<®
|
||||
@1(€¥À€3—òcŒ€¦`€˜�!V’`,@Kþô»4Ѐһ0€� €ö»0ÒÀ€ø»4ÒÔ Lÿú倨ú»8ú'»,л,€�€Ò»,Ô`Ö»4Øà€£
|
||||
€Ú»4Ð`Þ»,Òà@Kþ€�€à»,â ¢`â$ €ä»,æ¡(æ'»,¿ÿã)—è#Œ€¥ €ê»,€�€ì»,Ô î»,ÖÀV’`<˜�!@K¹€˜�!V’`d@K±ð»,€�€/ò»0€�€+ô»4ö €¦à€ø»4ú л4Ð ��" V’`t@K¾€�€Ò»(’`Ò'»(—Ô£”€�
|
||||
€Ö»(€�€
|
||||
Ø»4Ô™ÚbL”€
|
||||
V’`|˜�!@K€Þ»,€�€à»,â ˜€�€ä»0€�€ æ»,èàPê»0ì`P€¥€€/—îã €�€Qð»0€�€M3—òcŒ€¦`€˜�!V’`˜@KXô»0€�€1ö»0øàPú»4Ð`P€¢€*—ÒcŒ€¢`€˜�!V’`´@KBÔ»4Ö $€Šà’€—Ø#�€�€
|
||||
Ú»4Ô@™ÞâL”€V’`Ô˜�!@K-€æ!—à#�€�€
|
||||
â»4Ô@%™ä¢L”€V’`ô˜�!@K'—æãÌ€�€è»0ê!$€�€ì»0î °1<²
|
||||
À5(€¦@€ö»0ÐÀ’ @ÈÐ'¿ì¸ ø'¿ä€ú»0Ð@Ð'¿ì€Ò»0Ô@Ô'¿ì—Ö㜀�€>—Ø#Ä€�€Ú»4Ô@—ÒcÔ� Ö¿ì—Ø#Ø@Û€-пì™ÒbH˜Ô¢0@K
|
||||
€�€Þ»4ÔÀ!™à"L”€—ÒcÔV�!Ö¿ì—Ø#Ø@Jð€â»4Ô@%™ä¢L”€Ö¿ì'˜æâ0–ÀV�! —ÒcÔ—Ø#Ø@JÝ)—è#Ä€�€ê»4Ð@@-—죬€�€ î»4ÒÀпì@Š€ð»4Òпì@€Mпì™ÒbH˜Ô¢0@JÆ€�€"ò»4Ò@5™ô¢L’@V�!@@J®ö»4ÖÀ9™ø"L–À—Òc¬€� €˜’` €˜’`(V�!PÔ¿ì@J™€#ú»4Ò@™Ð"L’@V�!`@JŽÔ¿ì˜Òb0”€ Ö»4ÖÀ™Ø"L–À—Òc¬€� €˜’`,€˜’`4V�!p@Jv—Úc¬€�
|
||||
€—ÞãÄ€�€à»0Ò $’
|
||||
om’a$â»4Ð@@€ä»0Ò $’
|
||||
om’a$æ»4ÔÀ)™è"L”€V�!ˆ@JUê¿ä€�€Ð¿ì@JQ€
|
||||
-—죌€¥ €˜�!V’a @J€Ó/—î㌀¥à€˜�!V’aÀ@J
|
||||
ð»,€�€¹ò»,ô`Pö»4øàP€§€²;—úcŒ€§`€˜�!V’aÜ@I÷л4Ò $€Š`’€—Ô£�€�
|
||||
€
|
||||
Ö»4ÔÀ™Ø"L”€V’aü˜�!@I‛—Úc�€�
|
||||
€
|
||||
Þ»4ÔÀ!™à"L”€V’b˜�!@IÐ#—âcÄ€�€ä»,Ô æ»4ÖÀпð—ÒcÔ—Ø#Ø@¸)—è#¨€�€ê»4Ò@пð@œ€bпðÒ H˜Ô¢0@Iá€�€ ì¿ð/˜îâ0ðM€€¦ /€(3—òcœ€�€ô»,Ö ö»4ØÀ9™ø"L˜Ò¿ð—Ô£ÔV�"0—ÚcØ@I¶;—úc¨€�€Ð»4Ô™ÒbL”€ Ò¿ðV�"X@I§€,—Ô£œ€�
|
||||
€Ö»,ÖàÒ¿ð˜Ø"0’@Ú»4Ø@™ÞâL˜—Ô£ÔV�"t—ÚcØ@I�!—à#¨€�€Ò¿ð#˜âb0’@ä»4Ô€'™æâL”€V�" @I{€
|
||||
)—è#Œ€¥ €˜�!V’bÀ@IGê»4ìa(ì'»4¿ü
|
||||
/—î㌀�€ ˜�!V’bàÔ H@I6ð»<ð'»0ò»0€�€"ô»0ö €�€€ø»0Ð V’c@IG€�€€;—úcЀ�€Ð»0Ð V’c@I7€�€—ÒcŒ€¢`€˜�!V’c@I€ðÔ»8Ô'»,Ö»,€�€Ø»,Ú Þ»0àà€¤
|
||||
€
|
||||
â»0Ð`ä»,Ò @I€�€€æ»,èá(è'»,¿ÿçê»,€�€-—ì£ €�€î»,ðàPò»0ô`P€¦€€€Áö»,øà¸ ø&àú»0Ð`Ò»0Ô`–€˜"àØ'¿HÚ»0Þ`€£à€&пHV’c(@Hã€�€à»( à'»(#—âc´€�€€ŸÐ¿HV’c,@HÑ€�€ä»(¤ ä'»('—æã°€�€€�)—è#¸€�€—Ð#Ü@H¦”ê»0Ð`—ÒcÜ@HÀ�€€xÐ D@H—ì»0î �� @H”Ð'¿èпèÒ D@H•пèV’c0@H“ð»0Ò Ð¿è@HŽò»0ô`$7<¸€;€§€®Ð L€�€¨—Òc˜€� €”—Ô£�€�
|
||||
€Ô¿è™ÖâL”€V’c4˜�!@HS—Ø#È€�€OÚ»0Þa$€�€Jà»0â °%<¦@)(€¤À€B+—êcÌ€�€
|
||||
ì»0Ѐ’ @ûÐ'¿ì€î»0ðÀð'¿ì3—òcÄ€�€Ð¿ìÒ¿è@€"пìÒ H˜Ô¢0@HS€�€
|
||||
Ô¿è5™ô¢L”€Ò¿ìV�#L@H;€Ò¿ì7˜öâ0’@Ô¿è9™ø"L”€V�#`@H-пì@H-€1;—úcÄ€�€Ð¿è@cпè@пè’!í@Ç€Ò¿è™Ð"L’@V�#x@HÒ¿è™Ô¢L’@
|
||||
V�#ˆ@HÒ¿è™ÖâL’@V�#˜@GÿØ»0ÒпèÔ LÿöÈ€—Úc�€�
|
||||
€Ô¿è™ÞâL”€V’c°˜�!@GÁ€©!—à#Ì€�€â»0äa$€�€æ»0èà°+<¬
|
||||
/(€¥€€ð»0Ð’ @lÐ'¿ì² ò'¿ä€ô»0ö€ö'¿ìÀ'¿ä€ø»0úú'¿ìÀ'¿ä—Ð#�€�€Ô¿è™ÒbL”€ V’cȘ�!@GŠ—Ô£Ä€�
|
||||
€—Ö㬀�€Ð¿ìÒ¿è@c€Ð¿ìÒ¿è@ë€8пìÒ H˜Ô¢0@G¡€�€Ö¿è™Ø"L–À—Òc¬€� €˜’`8€˜’`@V�#ØÔ¿ì@G~€Ô¿ì˜Úb0”€
|
||||
Ö¿è™ÞâL–À—Òc¬€� €˜’`D€˜’`LV�#è@Ge!—à#¬€�€#—âcÄ€�€ä»0Ò $’
|
||||
om’a$пè@€æ»0Òà$’
|
||||
om’a$Ô¿è)™è"L”€V�#ü@GFê¿ä€�€Ð¿ì@GBпè@G?ì»0î¡(î'»0¿ýÞ1—ð#Œ€�€ ˜�!W’`Ô¿ð@Gò»8ò'»,ô»,€�€yö»,øà€�€€mÐ D@Gú»,Ò`� � @GÐ'¿èпèÒ D@GпèW’`0@FÿÔ»,Ò Ð¿è@Fú—Öã�€�€Ô¿è™Ø"L”€W’`4˜�!@FЗÚcÄ€�
|
||||
€
|
||||
—Þ㨀�€Ð¿ðÒ¿è@¨€3пðÒ H˜Ô¢0@Fí€�€ à¿ð#˜âb0äL€¤ /€'—æã¨€�€Ô¿è)™è"L”€Ò¿ðW� H@FÉ€+—êc¨€�€Ò¿ð-˜ì¢0’@Ô¿è/™îâL”€W� `@F¶Ð¿è@F¶ð»,ò!(ò'»,¿ÿ‡ô»@€�€ö»@ö'»4ø»4ú!(ú'»@л4Ð@F¤Ò»4Ð`@F л4@F�¿ÿìÔ»<€�
|
||||
€Ö»<Ö'»0Ø»0Ú!(Ú'»<Þ»0ÐÀ@FŽà»0Ð @FŠÐ»0@F‡¿ÿìâ»8€�€ä»8ä'»,æ»,èá(è'»8ê»,Ð@@Fxì»,Ð @Ftл,@Fq¿ÿìпð@Fl€�Çà�è?ÿÿ‚c��ã€ð' Dò' HÐ DÐ'¿ð—ÒcŒ€� €
|
||||
˜�!W’`xÔ¿ð@F+˜�!@FuÀ'¿øÔ¿ø€¢
|
||||
€eпð˜’bD”$@FLÐ'¿ü€�€€YÖ¿ü˜˜"DÀ*À˜ÚKbD€£`/€2пð’ /@F*Ð'¿ô€�€Þ¿ôÀ+À˜�"D@FºÐ¿ð@F
|
||||
�� @F Ð'¿ôпôW’`ŒÔ¿ð˜–âD@F€˜�"D@E÷� @E÷Ð'¿ôпô˜’bD@E÷€˜�"D@Eè� @EèÐ'¿ôпô˜’bD@Eèà H à' H¢$ €�€Ð¿ð@Eðä¿ôä'¿ðæ¿ø¦àæ'¿ø¿ÿ›è H€�€Ð¿ð@EÇ� @EÇÐ'¿ôпôÒ¿ð@EÈê¿ôê'¿ð-—죌€�€
|
||||
˜�!W’`”Ô¿ð@E¢˜�!@Eìпð€°�Çà�è?ÿÿ‚c�ã€ð' D’¿tÐ D@E®€¢?ÿ€\пˆ<”
|
||||
€¢€€RÐ D@EÈÐ'¿pØ¿p€�€Hпp@EÃÐ'¿l€�€;пl�
|
||||
W’`˜@E•€�€0пl�
|
||||
W’`œ@EŒ€�€'пl�
|
||||
@EpºÐ D@El�� @EkÐ'¿üÚ¿ü€�
|
||||
€Ð¿üÒ D@EhпüW’` @EfÒ¿l’`
|
||||
пü@Eaпüÿÿпü@Ej¿ÿÂпp@E†Ð D@E‰€Ð D@E‡�Çà�è?ÿÿ‚c �ã€ð' DÐ D’ @E€€¢?ÿ€˜Ð"@€¢ €Ð D’!ÿ@Ew�Çà�è?ÿÿ‚c �ã€ð' Dò' HÐ DÒ H@Eo€¢?ÿ€Ð H@EN�Çà�è?ÿÿ‚c��ã€ð' Dò' Hô' Lö' Pø' T@E`Ð'¿üпü€¢?ÿ€W� ¤@E9€QÒ¿ü€� €?Ô D€�
|
||||
€Ð D@E)€¢?ÿ€W� ´@E%€,Ð T’! ”!ÿ@E?Ð'¿ôÖ¿ô€¢ÿÿ€Ð T@E� @D˘�!@E3’пô@E2˜�!@E+’пô@E*Ð HÒ HÔ LÖ P˜ @E&Ð H@Dù� @D®� @E Ð'¿øØ¿ü€¢€Ú¿ø€£ÿ€¿ÿô�Çà�è?ÿÿ‚c�ã€ð' D’¿xÐ D@Dº€¢?ÿ€Ð¿Œ<”
|
||||
€¢€€Ð D@Dã�Çà�è?ÿþ‚c��ã€ð' Dò' HÐ D’ @DçÐ'¿ôпô€¢?ÿ€Ð D@D¾€MÐ H’!”!ÿ@DØÐ'¿ðÒ¿ð€¢ÿ€
|
||||
Ð H@D¯Ð¿ô@DÜ€;’»ðпô”$@DØÐ'¿ü€�€’»ðпðÔ¿ü@DÒÐ'¿ø€�€Ô¿øÖ¿ü–"À
|
||||
Ö'¿ü€�€¿ÿðØ¿ø€£?ÿ€€¿ÿßÚ¿ü€£ÿ€Ð D@D€€ Þ¿ø€£ÿÿ€Ð H@Dwпô@D¤Ð¿ð@D¡�Çà�è?ÿÿ‚c �ã€ð' Dò' HÐ DÒ H@DŸ€¢?ÿ€Ð D@D`�Çà�è?ÿÿ‚c˜�ã€ð' Dò' H@DuÐ'¿üпü€¢?ÿ€W� ¼@DN€1Ò¿ü€� €Ð D@DB€¢?ÿ€W� Ì@D>€˜� P˜’`T˜” XÖ H˜ @D\W� Ô@D.� @Cã� @DUÐ'¿øÔ¿ü€¢
|
||||
€Ö¿ø€¢ÿÿ€¿ÿô�Çà�è?ÿÿ‚c �ã€ð' DÐ D’!ÿ@DO€¢?ÿ€Ð D@D
|
||||
�Çà�è?ÿÿ‚c˜�ã€ð' Dò' HÐ H@DBÐ'¿üпü€�€˜�!W’`ìÔ H@Cµ€Ò¿üÔ`’?ÿÐ D@D1�Çà�è�ã¿ �Çà�èD)l*ˆÿÿÿÿT,ÿÿÿÿT.¤ÿÿÿÿT0( øÿÿÿÿT3ÀÿÿÿÿTÿÿÿÿTÜpÿÿÿÿTÿÿÿÿT;8\XÿÿÿÿTÿÿÿÿT ø!ÜÿÿÿÿT#0ÿÿÿÿTÿÿÿÿT&„ÿÿÿÿTusage: %s [options] [-W <working dir>] [-S <RCS dir>] [subdir ...]
|
||||
|
||||
options:
|
||||
-i[Aaoxm]
|
||||
clone: A - all the following
|
||||
a - "*.a" files
|
||||
o - "*.o" files
|
||||
x - executables ('x' mode bits set)
|
||||
m - "Makefile*" files
|
||||
-v verbose (the more, the verboser)
|
||||
source files
|
||||
-L take checked out source over RCS regardless of time
|
||||
-O don't check out new files, Only create symbolic links to exiting files
|
||||
(this option is for cloning build trees from controlled source trees)
|
||||
-R don't create any RCS links
|
||||
-l symbolicly link files instead of copying them
|
||||
-m make any missing directories
|
||||
-q quiet
|
||||
-d diff new versions of existing files
|
||||
-c<cmd> use <cmd> to do diffs (default is diffc)
|
||||
-o<out> write diffs to <out> instead of /tmp/,out??????
|
||||
-W<dir> use working directory <dir> (default is ".")
|
||||
-S<dir> use RCS/source directory <dir>
|
||||
(default is /RCS directories of working tree)
|
||||
-f follow source-tree links to non-RCS dirs (old behavior)
|
||||
-X execute instead of generating shell script
|
||||
-C process SCCS directories if present
|
||||
-s do not resolve symbolic links for files. use file name
|
||||
%s: can't get current working directory
|
||||
%s/%s/RCS/RCSusing sourcedir of "%s"
|
||||
%s: can't get current working directory
|
||||
%s/%s//#!/bin/sh
|
||||
#
|
||||
# the following makes things more readeable
|
||||
|
||||
w='%s' # Working directory
|
||||
s='%s' # Source directory
|
||||
rm -rf %s; touch %s
|
||||
|
||||
%s/%s%s/%sScanning directory "%s"
|
||||
>> GetNew("%s", "%s")
|
||||
/RCS%s/RCS>> RcsDir="%s"
|
||||
/RCS%s/RCS/RCS%s/RCS>> RCS RcsDir="%s"
|
||||
%s: creating symlink
|
||||
rm -f ${w}/%s
|
||||
ln -s %s ${w}/%s
|
||||
ln -s ${s}/%s ${w}/%s
|
||||
r>> soft link RcsDir="%s"
|
||||
%s: >10 "soft" links
|
||||
.,v/.../RCS.../>> Pass 1: scanning WorkingDir "%s"
|
||||
>> keyname="%s", fullname="%s"
|
||||
.o>> .o -- ignored
|
||||
.a>> .a -- ignored
|
||||
>> Makefile* -- ignored
|
||||
RCS>> RCS -- ignored
|
||||
SCCS>> SCCS -- ignored
|
||||
>> executable -- ignored
|
||||
source: keyname="%s" fullname="%s"
|
||||
no source file
|
||||
>> directory
|
||||
rcs: keyname="%s" fullname="%s"
|
||||
no rcs file
|
||||
.snf%s: no source or RCS file
|
||||
>> source newer than rcs
|
||||
>> source newer than working
|
||||
%s: writable -- not updated
|
||||
%s: newer file
|
||||
%s ${w}/%s %s >>%s 2>&1
|
||||
%s ${w}/%s ${s}/%s >>%s 2>&1
|
||||
rm -f ${w}/%s
|
||||
%s %s ${w}/%s
|
||||
@@ -0,0 +1,179 @@
|
||||
ELF4q4 (44 Ô\ó\ó\ô\ôè T`T`Tˆ/usr/lib/ld.so.1C_7EWT5Z1%[K\N;]LJ S6?Q:X3D2^IA4M8)/HUPCO#V+"&$,*90'->!BF<G=(@YR.Ôèx hŒÈN¤ N°
|
||||
O´\ô_h
|
||||
_Ô`P`T`à`à@^Ô8"]Ì@^8"N¤ #Ì
|
||||
T(b 2_H"7]�`>`à@!CfHÿñH]´èODX˜[_X8"a^ÈD"fxmb$v^°8"|Œ@‚]x\"‰^€T�^ì˜"•^h"�]ð\¢^P°©\óÿñ°]$�·^¼8"¿^Dx"Å]üD"Êb$!Ò`ÜÿñÙ]`8"à]<æ^¤8"ì_8"ò^Œ8"øb(]0 +8^ |_(H"]Øp%]ÀD"+b,2b08^à˜"?]¨@FN°
|
||||
S^,HY]Häa]„ðh_T"mb4t^ø,"{f4‚`Pÿñ˜_Lx"¡f8®_@8"´^˜8"»]œ|Ã]T0Ë^t "Ô^8ÌÛ]äôâ`Tÿñë_48"ñ^¬ù]l<"f<^\ä"__iobopenstrrchrreadlink_finimainSourceLenreadmalloc_iob_endstrcatResolveLinkchownfork_start_environcreatUsagegetcwdfflushdup2readdirfreeperror_etextatexitsymlinkchdirstatenviron_edatamktemp_exitutimeclosermdirWorkingDirCmpexitGetNewfopenwritestrcmplstatoptinderrnofilenostrcpy_lib_versionfgetsfprintfstrlenwaitBufferexeclpoptarg_GLOBAL_OFFSET_TABLE_getgrnamSourceDirCmpmkdirunlinksprintfsetvbufclosedirfcloseprintf_DYNAMICchmodstrncmpgetoptWorkingLen_initopendirlibc.so.1b$&`à f4Mb,Bb0C]$0]0<]<7]HH]TT]`6]l[]x)]„I]�]œS]¨E]´!]ÀA]Ì]Ø@]äW]ð-]ü3^^Z^ >^,G^8V^D2^P.^\^^h,^tU^€*^Œ:^˜R^¤8^°'^¼1^È$^Ô^àD^ì+^øL_J_9__(?_4Y_@Q_LO_X#�ã¿ �Çà�è¼ à @¢ D¥, ¤ ¤@'˜ä$â$œ# €�€�@S¸S�"¤@S´ÿÿë�’”–@@S@S®?ÿÿ‚c �ã€ð' D˜�!S’c´Ô D@S¦� @S��Çà�è?ÿÿ‚c�ã€ð' Dò' HÀ'¿üÀ'¿øÀ'¿ô˜� ð’ ” @–$@S•—Ð#Ì@S”—Ð"cÌÐ DÒ H—”£ø@S�º€¢?ÿ€ã€É™Ô¢4Ô'¿ü€Ú™Öâ4Ö'¿ø€Õ™ø"4ÚO€�
|
||||
€P€=—Þ㤞à!—Þ$#¤#—âc¨¢`%—â$£¨'—æã°¦à)—æ%#°+—êc¬ª`-—ê%£¬€5/—î㤮à1—î&#¤€.3—òc¨²`5—ò&£¨€'7—öã°¶à—ö"#°€ —Òc¬’`—Ò"£¬€Ö HÐÀÿÿ‰� @S/€ÐO€¢ A¿ÿÀ¢ a¿ÿ×€¢ m¿ÿꀢ o¿ÿÚ€¢ x¿ÿß¿ÿë¸ ¿ÿ°€—Úc˜š`—Ú#㘀x!—à#” #—à$c”€q%—䣜¤ '—ä$㜀j¨ +—è%c¼€e¬ /—ì%ãÄ€`° 3—ð&c¸€[5—ô£ ´ 7—ô&ã €T—Ð#Œ� —Ð"cŒ€M—Ô£„” —Ô"ã„€F—Ø#ˆ˜ —Ø#cˆ€?—Þã�žà!—Þ$#�€8#™âb4%—â$£È€2'™æâ4)—æ%#Ì€,+—À%cÀ€(-—죀¬ /—ì% !ð HÐÿÿ� @Rµ€��" C€¢ ;¿ÿôS”¢´“2 ²@ ²@ ³.`’@¶
|
||||
`’™*`Ö
|
||||
€¢À¿ÿç˜
|
||||
Ð �¿ÿØ¿ü€�€Ú¿üÞK@€�€à¿üâL€¤`/€A˜�"4’$@Rš¸€¢ €
|
||||
ä HÔ€U’`|˜�!@R‚� @Ryæ¿ü€�€è¿üêM€�€Ð¿ü@R‚¶�@R~�� @R}Ð'¿hпhU’`¨”Ö¿ü@Rxì¿hì'¿ü€
|
||||
�@Rk� @RkÐ'¿üпü’@Rlî¿ø€�€ð¿øòN€�€@пü@RW� @RWÐ'¿øÐ¿øÒ¿ü@RXпøU’`°@RV’¿lпø@RU€�€ô¿€7<�€(€¢ €Ð¿ø’ @íÐ'¿øÐ¿ø’ /@RE¸ÔO€�
|
||||
€�U’`¸@R>€�€À/˜�!U’`ÀÔ¿ø@R€0Ö¿øØJÀ€£ /€+˜�"4’$@R¸€¢ €
|
||||
Ú HÔ@U’`ܘ�!@Q÷� @Qîпø@R¶�@Qü�� @QûÐ'¿hпhU’a”Ö¿ø@QöÞ¿hÞ'¿øÐ¿øÒ¿ü@Qÿ€�€à¿ô à'¿ôпü@Qá� @Qá#˜Ð$b(˜Ð"(Ò¿ü@Qà˜Ð"(U’a@QÝпø@QÎ� @QÎ%™Ð$¢8™Ð"8Ò¿ø@QÍ™Ð"8U’a@QʘÐ"(@Qº'™Ð$â<™Ð"8@Q´)˜Ð%" +—êc¸€�€-—ì£�€�€
|
||||
—Ð#Ì@ÿ—Ð#Ì@b€%U�!@Q²U�!$@Q®U�!TÒ¿ü@Q©U�!pÒ¿ø@Q¤/—îã�€�€
|
||||
U�!Œ—ÒcÌ—Ô£Ì@Q—U�!¤@Q“1˜ð",ò D€¦€R5˜ô¢,ö D€¦€€J˜Ð",“* Ô HЀ @Qh¶Ð¿ø@Qd�� @QcÐ'¿h˜Öâ,™*àÚ HÖ@U’a¨Ð¿hÔ¿ø@QZ˜Þâ,¡+àâ HÐ@@QM¶Ð¿ü@QI�� @QHÐ'¿d%˜ä¢,§, è HÖU’a°Ð¿dÔ¿ü@Q?пdÒ¿hÔ¿ô@пd@QLпh@QI+˜êb,ª`-˜ê%¢,¿ÿ´€Ð¿üÒ¿øÔ¿ô@� @Q�Çà�è?ÿþ‚bÈ�ã€ð' Dò' Hô' LÀ'»@À'»<À'»8—Ð#ˆ€�€ ˜�!U’a¸Ô H@P÷—Òc€€¢`€
|
||||
˜�!U’aÔÔ DÖ H@PêU�!ì@PõºÐ D@Pñ�� @PðÐ'¿ðпðU’aôÔ D@Pì—Ô£€€�
|
||||
€ ˜�!U’aüÔ¿ð@PË’¿Pпð@Pô€�€¦’»Dпð”$@Pï€�€žU�"@PǺРH@PÃ�� @PÂÐ'¿HпHU’bÔ H@P¾U�"@P´ºÐ H@P°�� @P¯Ð'¿DпDU’b$Ô H@P«Ð¿H’ @
|
||||
VÐ'¿H—Ö �€ ˜�!U’b,Ô¿H@P…’¿PпH@P®€�€
|
||||
’»DпD”$@P©€�€S—Ø#˜€�€N—Úc„€�
|
||||
€Ô¿ð™Þâ<”€U’b@˜�!@Pb!—à#¸€�€Ð¿ð@¸Ð¿HÒ¿ð@=€1Ò¿ð#™âb<’@U�"X@PsпHÒ H˜Ô¢ @Py€�€ ä¿H'˜æâ èL€€¥ /€
|
||||
Ô¿ð+™êb<”€Ò¿HU�"h@PZ€Ò¿H-˜ì¢ ’@Ô¿ð/™îâ<”€U�"|@PLпð@PLð¿Hð'¿ð²
|
||||
ò'¿Lô¿L€�€`’¿Pпð@P4€�€Rö¿d9<ºÀ(€§@€ пð’ @ ÌÐ'¿ð€BÒ¿d<–
|
||||
@
|
||||
€¢À€9пðU’b”@P/Ð'¿ü€�€.˜�"4’$Ô¿ü@P(˜�"4@Oú˜šb3À*
|
||||
пð@P˜�"4@Oð� @OðÐ'¿ðпð˜’b4@Oð—Þ �€ ˜�!U’b˜Ô¿ð@OÌпü@P€€€€à¿L $ à'¿L¿ÿ â¿L€�€%—䣄€�€ ˜�!U’b´Ô¿ð@O¬À'»8пð@Oç€�€'˜æâ0€¤à€Ð¿ð@O߀¬U�"Ì@OÜÐ'¿Ü€�€¤Ð¿Ü@OØÐ'¿Ø€�€šÐ¿Ø�
|
||||
@O—€¢ €¿ÿòпØ�
|
||||
@OŽè¿Ø�� U’bÐ@Oœ€�€¿ÿâ˜�"4Ò¿ð@O†˜�"4U’bÔ@OƒÒ¿Ø’`
|
||||
˜�"4@O}пØ�
|
||||
’¿P@OŠ€�€˜�"4@O˜¿ÿÃê»8€�€�!,@O_ì»,Ð%¡(î»,ðá(ð'»,€�!,@OUÐ'»8ò»8ò'»,ô»,À&¡(ö»,À&à˜�"4@OG� @OGø»,Ð'ú»,Ð@˜’b4@OEпØ�
|
||||
@O8Ò¿Ø”`
|
||||
–€À*ÿþпØ�
|
||||
@O0� @O0Ø»,Ð# Ú»,Ð`Ò¿Ø’`
|
||||
@O.п�
|
||||
@O!Þ»,Ð#àà»,¢ ¤¿Pè „è$`„è €è$`€¬ €¬% è€è$@¬% è€è$@¬% è€è$@¬¥ 耿ÿõè$@î»,° ð%à˜ò»,À&a$¿ÿcпÜ@O<À'»@Ð D@O,€�€5˜ô¢0€¦ €Ð D@O$€ÍU�"Ø@O!Ð'¿Ü€�€ÅпÜ@OÐ'¿Ø€�€»ö¿ØøNà
|
||||
€§ .€Ð¿Ø�
|
||||
U’bÜ@Nê€�€¿ÿë˜�"4Ò D@NÔ˜�"4U’bà@NÑÒ¿Ø’`
|
||||
˜�"4@NËпØ�
|
||||
’¿P@NØ€�€Ò¿Ø’`
|
||||
U�"ä@NÆ€�€˜�"4@NÝ¿ÿÃú»@€�€�!,@N¤Ò»4Ð"a(Ô»4Ö¡(Ö'»4€�!,@NšÐ'»@Ø»@Ø'»4Ú»4À#a(Þ»4À#à˜�"4@NŒ� @NŒà»4Ð$â»4Ð@˜’b4@NŠÐ¿Ø�
|
||||
@N}� @N}ä»4Ð$ æ»4ÐàÒ¿Ø’`
|
||||
@N{п�
|
||||
@Nnè»4Ð% ê»4¬`®¿Pðà„ð% „ðà€ð% €´ €´& ðÀð%€´& ðÀð%€´& ðÀð%€´¦ ðÀ¿ÿõð%€ö»4¸ ø&à˜ú¿d<’@€¢@
|
||||
€$пØ�
|
||||
’¿P@NW€�€Ö»4˜àœš¿Pà`„à# „à`€à# €¤ €¤$ à@à#¤$ à@à#¤$ à@à#¤¤ à@¿ÿõà#æ»4¨ è$á$€ê»4À%a$¿ÿBпÜ@N`À'»<ì L€�€ÍÐ H@NL€�€/˜îâ0€¥à€Ð H@ND€½U�"è@NAÐ'¿Ü€�€µÐ¿Ü@N=Ð'¿Ø€�€«ð¿ØòN
|
||||
€¦`.€Ð¿Ø�
|
||||
U’bì@N
|
||||
€�€¿ÿë˜�"4Ò H@Mô˜�"4U’bð@MñÒ¿Ø’`
|
||||
˜�"4@MëпØ�
|
||||
’¿P@Mé€�€˜�"4@N¿ÿÌô»<€�€�!,@MÍö»0Ð&á(ø»0ú!(ú'»0€�!,@MÃÐ'»<л<Ð'»0Ò»0À"a(Ô»0À" ˜�"4@Mµ� @MµÖ»0Ð"ÀØ»0И’b4@M³Ð¿Ø�
|
||||
@M¦� @M¦Ú»0Ð#`Þ»0ÐàÒ¿Ø’`
|
||||
@M¤Ð¿Ø�
|
||||
@M—à»0Ð$ â»0¤`œ¦¿Pèà„è$ „èà€è$ €¬ €¬% èÀè$€¬% èÀè$€¬% èÀè$€¬¥ èÀ¿ÿõè$€î»0° ð%á$ò¿d5<¶@9(€¦À€Ð¿Ø�
|
||||
’¿P@M�ú»0�`’¿PÔ`„Ô" „Ô`€Ô" €˜ €˜# Ô@Ô"˜# Ô@Ô"˜# Ô@Ô"˜£ Ô@¿ÿõÔ"Ú»0ž Þ#`˜¿ÿRпÜ@M�!—à#€€�€ ˜�!U’bôÔ D@M9â»@â'»4ä»4€�€ó'—æã€€¤à€è»4Ô ê»4Ö@U’c˜�!@M$À'»(ì»4î ð»4ò ´@¶& ö'¿Hø»4ú €§`€<пHU’c@@M6€�€Ð»(� Ð'»(—Òc¨€� €—Ô£€€¢ €˜�!U’cD@Lü€µÐ¿HU’cX@M€�€Ö»(–àÖ'»(—Ø#¤€�€—Úc€€£`€˜�!U’c\@L߀˜—Ð#Ð@Lè”Þ»4Ðà—ÒcÐ@M€�€à»( à'»(#—âc¬€�€%—䣀€¤ €˜�!U’cp@L¼€uæ»4ÐàU’cŒ@LØ€�€)—è#€€¥ €˜�!U’c�@L¦€_+—êcÄ€�€ì»4Ð U’c¨@L½€�€/—î ¥à€˜�!U’c°@L‹€D1—ð#°€�€"ò»4ô`˜€�€ö»4øà$;<� €¢ €Ô»4Ö $˜
|
||||
àI€£ I€—Úc€€£`€˜�!U’cÈ@Lf€Þ»<Þ'»0à»0€�€â»0ä`æ»4èà€¥€ê»4Ð`ì»0Ò @Lu€�€î»0ðà° ð%à€ò»0ôa(ô'»0¿ÿã7—ö ¦à€ø»0€�€ú»0Ô`л0ÖU’cä˜�!@L0€˜�!V’`@L(Ò»4Ô`˜€�
|
||||
€8Ö»4Øà$<ž
|
||||
!€£À€0#—âc¼€�€ä»4æ¡$€�€
|
||||
è»4ê °-<®
|
||||
@1(€¥À€3—òc€€¦`€˜�!V’` @Kþô»4Ѐһ0€� €ö»0ÒÀ€ø»4ÒÔ Lÿú倨ú»8ú'»,л,€�€Ò»,Ô`Ö»4Øà€£
|
||||
€Ú»4Ð`Þ»,Òà@Kþ€�€à»,â ¢`â$ €ä»,æ¡(æ'»,¿ÿã)—è#€€¥ €ê»,€�€ì»,Ô î»,ÖÀV’`0˜�!@K¹€˜�!V’`X@K±ð»,€�€/ò»0€�€+ô»4ö €¦à€ø»4ú л4Ð ��" V’`h@K¾€�€Ò»(’`Ò'»(—Ô£ˆ€�
|
||||
€Ö»(€�€
|
||||
Ø»4Ô™Úb<”€
|
||||
V’`p˜�!@K€Þ»,€�€à»,â ˜€�€ä»0€�€ æ»,èàPê»0ì`P€¥€€/—î㔀�€Qð»0€�€M3—òc€€¦`€˜�!V’`Œ@KXô»0€�€1ö»0øàPú»4Ð`P€¢€*—Òc€€¢`€˜�!V’`¨@KBÔ»4Ö $€Šà’€—Ø#„€�€
|
||||
Ú»4Ô@™Þâ<”€V’`Ș�!@K-€æ!—à#„€�€
|
||||
â»4Ô@%™ä¢<”€V’`è˜�!@K'—æãÀ€�€è»0ê!$€�€ì»0î °1<²
|
||||
À5(€¦@€ö»0ÐÀ’ @ÈÐ'¿ì¸ ø'¿ä€ú»0Ð@Ð'¿ì€Ò»0Ô@Ô'¿ì—Öã�€�€>—Ø#¸€�€Ú»4Ô@—ÒcÈ� Ö¿ì—Ø#Ì@Û€-пì™Òb8˜Ô¢ @K
|
||||
€�€Þ»4ÔÀ!™à"<”€—ÒcÈV� øÖ¿ì—Ø#Ì@Jð€â»4Ô@%™ä¢<”€Ö¿ì'˜æâ –ÀV�!—ÒcÈ—Ø#Ì@JÝ)—è#¸€�€ê»4Ð@@-—ì£ €�€ î»4ÒÀпì@Š€ð»4Òпì@€Mпì™Òb8˜Ô¢ @JÆ€�€"ò»4Ò@5™ô¢<’@V�!4@J®ö»4ÖÀ9™ø"<–À—Òc €� €˜’`€˜’`V�!DÔ¿ì@J™€#ú»4Ò@™Ð"<’@V�!T@JŽÔ¿ì˜Òb ”€ Ö»4ÖÀ™Ø"<–À—Òc €� €˜’` €˜’`(V�!d@Jv—Úc €�
|
||||
€—Þ㸀�€à»0Ò $’
|
||||
om’a$â»4Ð@@€ä»0Ò $’
|
||||
om’a$æ»4ÔÀ)™è"<”€V�!|@JUê¿ä€�€Ð¿ì@JQ€
|
||||
-—죀€¥ €˜�!V’a”@J€Ó/—î ¥à€˜�!V’a´@J
|
||||
ð»,€�€¹ò»,ô`Pö»4øàP€§€²;—úc€€§`€˜�!V’aÐ@I÷л4Ò $€Š`’€—Ô£„€�
|
||||
€
|
||||
Ö»4ÔÀ™Ø"<”€V’að˜�!@I‛—Úc„€�
|
||||
€
|
||||
Þ»4ÔÀ!™à"<”€V’b˜�!@IÐ#—âc¸€�€ä»,Ô æ»4ÖÀпð—ÒcÈ—Ø#Ì@¸)—è#œ€�€ê»4Ò@пð@œ€bпðÒ H˜Ô¢ @Iá€�€ ì¿ð/˜îâ ðM€€¦ /€(3—òc�€�€ô»,Ö ö»4ØÀ9™ø"<˜Ò¿ð—Ô£ÈV�"$—ÚcÌ@I¶;—úcœ€�€Ð»4Ô™Òb<”€ Ò¿ðV�"L@I§€,—Ô£�€�
|
||||
€Ö»,ÖàÒ¿ð˜Ø" ’@Ú»4Ø@™Þâ<˜—Ô£ÈV�"h—ÚcÌ@I�!—à#œ€�€Ò¿ð#˜âb ’@ä»4Ô€'™æâ<”€V�"”@I{€
|
||||
)—è#€€¥ €˜�!V’b´@IGê»4ìa(ì'»4¿ü
|
||||
/—î �€ ˜�!V’bÔÔ H@I6ð»<ð'»0ò»0€�€"ô»0ö €�€€ø»0Ð V’bø@IG€�€€;—úcÄ€�€Ð»0Ð V’bü@I7€�€—Òc€€¢`€˜�!V’c@I€ðÔ»8Ô'»,Ö»,€�€Ø»,Ú Þ»0àà€¤
|
||||
€
|
||||
â»0Ð`ä»,Ò @I€�€€æ»,èá(è'»,¿ÿçê»,€�€-—죔€�€î»,ðàPò»0ô`P€¦€€€Áö»,øà¸ ø&àú»0Ð`Ò»0Ô`–€˜"àØ'¿HÚ»0Þ`€£à€&пHV’c@Hã€�€à»( à'»(#—âc¨€�€€ŸÐ¿HV’c @HÑ€�€ä»(¤ ä'»('—æã¤€�€€�)—è#¬€�€—Ð#Ð@H¦”ê»0Ð`—ÒcÐ@HÀ�€€xÐ D@H—ì»0î �� @H”Ð'¿èпèÒ D@H•пèV’c$@H“ð»0Ò Ð¿è@HŽò»0ô`$7<¸€;€§€®Ð L€�€¨—ÒcŒ€� €”—Ô£„€�
|
||||
€Ô¿è™Öâ<”€V’c(˜�!@HS—Ø#¼€�€OÚ»0Þa$€�€Jà»0â °%<¦@)(€¤À€B+—êcÀ€�€
|
||||
ì»0Ѐ’ @ûÐ'¿ì€î»0ðÀð'¿ì3—òc¸€�€Ð¿ìÒ¿è@€"пìÒ H˜Ô¢ @HS€�€
|
||||
Ô¿è5™ô¢<”€Ò¿ìV�#@@H;€Ò¿ì7˜öâ ’@Ô¿è9™ø"<”€V�#T@H-пì@H-€1;—úc¸€�€Ð¿è@cпè@пè’!í@Ç€Ò¿è™Ð"<’@V�#l@HÒ¿è™Ô¢<’@
|
||||
V�#|@HÒ¿è™Öâ<’@V�#Œ@GÿØ»0ÒпèÔ LÿöÈ€—Úc„€�
|
||||
€Ô¿è™Þâ<”€V’c¤˜�!@GÁ€©!—à#À€�€â»0äa$€�€æ»0èà°+<¬
|
||||
/(€¥€€ð»0Ð’ @lÐ'¿ì² ò'¿ä€ô»0ö€ö'¿ìÀ'¿ä€ø»0úú'¿ìÀ'¿ä—Ð#„€�€Ô¿è™Òb<”€ V’c¼˜�!@GŠ—Ô£¸€�
|
||||
€—Öã €�€Ð¿ìÒ¿è@c€Ð¿ìÒ¿è@ë€8пìÒ H˜Ô¢ @G¡€�€Ö¿è™Ø"<–À—Òc €� €˜’`,€˜’`4V�#ÌÔ¿ì@G~€Ô¿ì˜Úb ”€
|
||||
Ö¿è™Þâ<–À—Òc €� €˜’`8€˜’`@V�#Ü@Ge!—à# €�€#—âc¸€�€ä»0Ò $’
|
||||
om’a$пè@€æ»0Òà$’
|
||||
om’a$Ô¿è)™è"<”€V�#ð@GFê¿ä€�€Ð¿ì@GBпè@G?ì»0î¡(î'»0¿ýÞ1—ð#€€�€ ˜�!W’`Ô¿ð@Gò»8ò'»,ô»,€�€yö»,øà€�€€mÐ D@Gú»,Ò`� � @GÐ'¿èпèÒ D@GпèW’`$@FÿÔ»,Ò Ð¿è@Fú—Öã„€�€Ô¿è™Ø"<”€W’`(˜�!@FЗÚc¸€�
|
||||
€
|
||||
—Þ㜀�€Ð¿ðÒ¿è@¨€3пðÒ H˜Ô¢ @Fí€�€ à¿ð#˜âb äL€¤ /€'—æãœ€�€Ô¿è)™è"<”€Ò¿ðW� <@FÉ€+—êcœ€�€Ò¿ð-˜ì¢ ’@Ô¿è/™îâ<”€W� T@F¶Ð¿è@F¶ð»,ò!(ò'»,¿ÿ‡ô»@€�€ö»@ö'»4ø»4ú!(ú'»@л4Ð@F¤Ò»4Ð`@F л4@F�¿ÿìÔ»<€�
|
||||
€Ö»<Ö'»0Ø»0Ú!(Ú'»<Þ»0ÐÀ@FŽà»0Ð @FŠÐ»0@F‡¿ÿìâ»8€�€ä»8ä'»,æ»,èá(è'»8ê»,Ð@@Fxì»,Ð @Ftл,@Fq¿ÿìпð@Fl€�Çà�è?ÿÿ‚c��ã€ð' Dò' HÐ DÐ'¿ð—Òc€€� €
|
||||
˜�!W’`lÔ¿ð@F+˜�!@FuÀ'¿øÔ¿ø€¢
|
||||
€eпð˜’b4”$@FLÐ'¿ü€�€€YÖ¿ü˜˜"4À*À˜ÚKb4€£`/€2пð’ /@F*Ð'¿ô€�€Þ¿ôÀ+À˜�"4@FºÐ¿ð@F
|
||||
�� @F Ð'¿ôпôW’`€Ô¿ð˜–â4@F€˜�"4@E÷� @E÷Ð'¿ôпô˜’b4@E÷€˜�"4@Eè� @EèÐ'¿ôпô˜’b4@Eèà H à' H¢$ €�€Ð¿ð@Eðä¿ôä'¿ðæ¿ø¦àæ'¿ø¿ÿ›è H€�€Ð¿ð@EÇ� @EÇÐ'¿ôпôÒ¿ð@EÈê¿ôê'¿ð-—죀€�€
|
||||
˜�!W’`ˆÔ¿ð@E¢˜�!@Eìпð€°�Çà�è?ÿÿ‚c�ã€ð' D’¿tÐ D@E®€¢?ÿ€\пˆ<”
|
||||
€¢€€RÐ D@EÈÐ'¿pØ¿p€�€Hпp@EÃÐ'¿l€�€;пl�
|
||||
W’`Œ@E•€�€0пl�
|
||||
W’`�@EŒ€�€'пl�
|
||||
@EpºÐ D@El�� @EkÐ'¿üÚ¿ü€�
|
||||
€Ð¿üÒ D@EhпüW’`”@EfÒ¿l’`
|
||||
пü@Eaпüÿÿпü@Ej¿ÿÂпp@E†Ð D@E‰€Ð D@E‡�Çà�è?ÿÿ‚c �ã€ð' DÐ D’ @E€€¢?ÿ€˜Ð"0€¢ €Ð D’!ÿ@Ew�Çà�è?ÿÿ‚c �ã€ð' Dò' HÐ DÒ H@Eo€¢?ÿ€Ð H@EN�Çà�è?ÿÿ‚c��ã€ð' Dò' Hô' Lö' Pø' T@E`Ð'¿üпü€¢?ÿ€W� ˜@E9€QÒ¿ü€� €?Ô D€�
|
||||
€Ð D@E)€¢?ÿ€W� ¨@E%€,Ð T’! ”!ÿ@E?Ð'¿ôÖ¿ô€¢ÿÿ€Ð T@E� @D˘� ð@E3’пô@E2˜�!@E+’пô@E*Ð HÒ HÔ LÖ P˜ @E&Ð H@Dù� @D®� @E Ð'¿øØ¿ü€¢€Ú¿ø€£ÿ€¿ÿô�Çà�è?ÿÿ‚c�ã€ð' D’¿xÐ D@Dº€¢?ÿ€Ð¿Œ<”
|
||||
€¢€€Ð D@Dã�Çà�è?ÿþ‚c��ã€ð' Dò' HÐ D’ @DçÐ'¿ôпô€¢?ÿ€Ð D@D¾€MÐ H’!”!ÿ@DØÐ'¿ðÒ¿ð€¢ÿ€
|
||||
Ð H@D¯Ð¿ô@DÜ€;’»ðпô”$@DØÐ'¿ü€�€’»ðпðÔ¿ü@DÒÐ'¿ø€�€Ô¿øÖ¿ü–"À
|
||||
Ö'¿ü€�€¿ÿðØ¿ø€£?ÿ€€¿ÿßÚ¿ü€£ÿ€Ð D@D€€ Þ¿ø€£ÿÿ€Ð H@Dwпô@D¤Ð¿ð@D¡�Çà�è?ÿÿ‚c �ã€ð' Dò' HÐ DÒ H@DŸ€¢?ÿ€Ð D@D`�Çà�è?ÿÿ‚c˜�ã€ð' Dò' H@DuÐ'¿üпü€¢?ÿ€W� °@DN€1Ò¿ü€� €Ð D@DB€¢?ÿ€W� À@D>€˜� D˜’`H˜” LÖ H˜ @D\W� È@D.� @Cã� @DUÐ'¿øÔ¿ü€¢
|
||||
€Ö¿ø€¢ÿÿ€¿ÿô�Çà�è?ÿÿ‚c �ã€ð' DÐ D’!ÿ@DO€¢?ÿ€Ð D@D
|
||||
�Çà�è?ÿÿ‚c˜�ã€ð' Dò' HÐ H@DBÐ'¿üпü€�€˜�!W’`àÔ H@Cµ€Ò¿üÔ`’?ÿÐ D@D1�Çà�è�ã¿ �Çà�è8)`*|ÿÿÿÿH,ÿÿÿÿH.˜ÿÿÿÿH0 ìÿÿÿÿH3´ÿÿÿÿHÿÿÿÿHÐdÿÿÿÿHÿÿÿÿH;,PLÿÿÿÿHÿÿÿÿH ì!ÐÿÿÿÿH#$ÿÿÿÿHÿÿÿÿH&xÿÿÿÿHusage: %s [options] [-W <working dir>] [-S <RCS dir>] [subdir ...]
|
||||
|
||||
options:
|
||||
-i[Aaoxm]
|
||||
clone: A - all the following
|
||||
a - "*.a" files
|
||||
o - "*.o" files
|
||||
x - executables ('x' mode bits set)
|
||||
m - "Makefile*" files
|
||||
-v verbose (the more, the verboser)
|
||||
source files
|
||||
-L take checked out source over RCS regardless of time
|
||||
-O don't check out new files, Only create symbolic links to exiting files
|
||||
(this option is for cloning build trees from controlled source trees)
|
||||
-R don't create any RCS links
|
||||
-l symbolicly link files instead of copying them
|
||||
-m make any missing directories
|
||||
-q quiet
|
||||
-d diff new versions of existing files
|
||||
-c<cmd> use <cmd> to do diffs (default is diffc)
|
||||
-o<out> write diffs to <out> instead of /tmp/,out??????
|
||||
-W<dir> use working directory <dir> (default is ".")
|
||||
-S<dir> use RCS/source directory <dir>
|
||||
(default is /RCS directories of working tree)
|
||||
-f follow source-tree links to non-RCS dirs (old behavior)
|
||||
-X execute instead of generating shell script
|
||||
-C process SCCS directories if present
|
||||
-s do not resolve symbolic links for files. use file name
|
||||
%s: can't get current working directory
|
||||
%s/%s/RCS/RCSusing sourcedir of "%s"
|
||||
%s: can't get current working directory
|
||||
%s/%s//#!/bin/sh
|
||||
#
|
||||
# the following makes things more readeable
|
||||
|
||||
w='%s' # Working directory
|
||||
s='%s' # Source directory
|
||||
rm -rf %s; touch %s
|
||||
|
||||
%s/%s%s/%sScanning directory "%s"
|
||||
>> GetNew("%s", "%s")
|
||||
/RCS%s/RCS>> RcsDir="%s"
|
||||
/RCS%s/RCS/RCS%s/RCS>> RCS RcsDir="%s"
|
||||
%s: creating symlink
|
||||
rm -f ${w}/%s
|
||||
ln -s %s ${w}/%s
|
||||
ln -s ${s}/%s ${w}/%s
|
||||
r>> soft link RcsDir="%s"
|
||||
%s: >10 "soft" links
|
||||
.,v/.../RCS.../>> Pass 1: scanning WorkingDir "%s"
|
||||
>> keyname="%s", fullname="%s"
|
||||
.o>> .o -- ignored
|
||||
.a>> .a -- ignored
|
||||
>> Makefile* -- ignored
|
||||
RCS>> RCS -- ignored
|
||||
SCCS>> SCCS -- ignored
|
||||
>> executable -- ignored
|
||||
source: keyname="%s" fullname="%s"
|
||||
no source file
|
||||
>> directory
|
||||
rcs: keyname="%s" fullname="%s"
|
||||
no rcs file
|
||||
.snf%s: no source or RCS file
|
||||
>> source newer than rcs
|
||||
>> source newer than working
|
||||
%s: writable -- not updated
|
||||
%s: newer file
|
||||
%s ${w}/%s %s >>%s 2>&1
|
||||
%s ${w}/%s ${s}/%s >>%s 2>&1
|
||||
rm -f ${w}/%s
|
||||
%s %s ${w}/%s
|
||||
BIN
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
+140
@@ -0,0 +1,140 @@
|
||||
#! /bin/sh
|
||||
|
||||
# This shell script runs findnewrcs on a clone tree.
|
||||
|
||||
# Usage
|
||||
DoUsage()
|
||||
{
|
||||
cat << dernier
|
||||
Usage: fnrclone [-OPTIONS] <source> <destination>
|
||||
where OPTIONS are:
|
||||
[-c (checkout any new versions of files from RCS)]
|
||||
[-s (create a script & log file in $HOME/fnrclone and
|
||||
execute the script)]
|
||||
[-n (leave actual files, not symbolic links)]
|
||||
[-f <logfile name> (create a log file of changes)]
|
||||
[-d (descend symbolically linked directories)]
|
||||
[-S (do not follow symbolic links for files)
|
||||
[-O (do not check out files, Only create symbolic links for existing files)
|
||||
[-C (process SCCS directories[usually they are ignored])
|
||||
[-u Usage message]
|
||||
NOTE: the default is make symbolic links and don't check out newer
|
||||
revisions of files, just shadow the source. If the RCS directory is
|
||||
accessible, check out any brand new files as real files. If the
|
||||
RCS directory is not accessible (remote exchange), do NOT check out
|
||||
any brand new files.
|
||||
dernier
|
||||
}
|
||||
|
||||
|
||||
if [ $# -lt 2 ] ; then
|
||||
DoUsage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEF_s="L"
|
||||
DEF_X="X"
|
||||
LINKOPT="l"
|
||||
ACTUAL=
|
||||
#Parse the options
|
||||
set -- `getopt csSCOdnuf: $*`
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case $1 in
|
||||
-n) LINKOPT= ;shift;;
|
||||
-s) DEF_X=;shift;;
|
||||
-S) DEF_S=s;shift;;
|
||||
-c) DEF_s=;shift;;
|
||||
-C) DEF_C=C;shift;;
|
||||
-O) DEF_O=O;shift;;
|
||||
-u) DoUsage;shift;;
|
||||
-f) LOG=$2;shift 2;;
|
||||
-d) ACTUAL="${ACTUAL}f";shift;;
|
||||
--) shift;;
|
||||
-*) DoUsage;shift;;
|
||||
*) SRC=$1;DEST=$2;shift 2;;
|
||||
esac
|
||||
done
|
||||
|
||||
OPTS="${DEF_X}${DEF_s}${DEF_S}${DEF_C}${DEF_O}${ACTUAL}${LINKOPT}miA"
|
||||
|
||||
#
|
||||
# get the system from uname -s
|
||||
#
|
||||
SYSTEM=`uname -s`
|
||||
RELEASE=`uname -r`
|
||||
MACHINE=`uname -m`
|
||||
|
||||
Findnewrcs="findnewrcs.${SYSTEM}"
|
||||
if [ "$SYSTEM" = "HP-UX" ];then
|
||||
# 700's
|
||||
M700=`echo $MACHINE | fgrep '/7' 2>/dev/null`
|
||||
M800=`echo $MACHINE | fgrep '/8' 2>/dev/null`
|
||||
R100=`echo $RELEASE | fgrep '10.' 2>/dev/null`
|
||||
R90=`echo $RELEASE | fgrep '9.' 2>/dev/null`
|
||||
R80=`echo $RELEASE | fgrep '8.' 2>/dev/null`
|
||||
R70=`echo $RELEASE | fgrep '7.' 2>/dev/null`
|
||||
if [ "$M700" ]; then
|
||||
if [ "$R100" ];then
|
||||
Findnewrcs="findnewrcs.700.100"
|
||||
elif [ "$R80" ];then
|
||||
Findnewrcs="findnewrcs.700.807"
|
||||
fi
|
||||
elif [ "$M800" ]; then
|
||||
if [ "$R100" ];then
|
||||
Findnewrcs="findnewrcs.800.100"
|
||||
elif [ "$R90" ];then
|
||||
Findnewrcs="findnewrcs.800.90"
|
||||
elif [ "$R80" ];then
|
||||
Findnewrcs="findnewrcs.800.80"
|
||||
else
|
||||
Findnewrcs="findnewrcs.800.70"
|
||||
fi
|
||||
else
|
||||
if [ "$R90" ];then
|
||||
Findnewrcs="findnewrcs.300.90"
|
||||
elif [ "$R80" ];then
|
||||
Findnewrcs="findnewrcs.300.80"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$SYSTEM" = "SunOS" ];then
|
||||
|
||||
if [ "$MACHINE" = "i86pc" ];then
|
||||
Findnewrcs="findnewrcs.UNIX_SV"
|
||||
elif [ "$MACHINE" = "prep" ];then
|
||||
Findnewrcs="findnewrcs.SunOS_PPC"
|
||||
else
|
||||
Findnewrcs="findnewrcs.SunOS"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
#
|
||||
# make an old style script
|
||||
#
|
||||
FNR_BINDIR=`dirname $0`
|
||||
if [ ! "$DEF_X" ];then
|
||||
DATE=`date +%H%M%S`
|
||||
FNR_DIR=/$HOME/fnrclone
|
||||
[ ! -d $FNR_DIR ] && mkdir $FNR_DIR
|
||||
FNR_SCRIPT=$FNR_DIR/script$DATE
|
||||
FNR_LOG=$FNR_DIR/log$DATE
|
||||
$FNR_BINDIR/$Findnewrcs -S${SRC} -W${DEST} -${OPTS} > $FNR_SCRIPT 2> $FNR_LOG
|
||||
chmod 777 $FNR_SCRIPT
|
||||
chmod 777 $FNR_LOG
|
||||
$FNR_SCRIPT
|
||||
echo "`basename $0`: script is in $FNR_SCRIPT, logfile is $FNR_LOG"
|
||||
if [ "$LOG" ];then
|
||||
cat $FNR_LOG > $LOG
|
||||
echo "logfile is also in $LOG"
|
||||
fi
|
||||
else # execute without a script
|
||||
if [ "$LOG" ];then
|
||||
$FNR_BINDIR/$Findnewrcs -S${SRC} -W${DEST} -${OPTS} 2> $LOG
|
||||
else
|
||||
$FNR_BINDIR/$Findnewrcs -S${SRC} -W${DEST} -${OPTS}
|
||||
fi
|
||||
fi
|
||||
|
||||
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#! /usr/local/bin/perl
|
||||
|
||||
eval "exec /usr/local/bin/perl -S $0 $*"
|
||||
if $running_under_some_shell;
|
||||
|
||||
$system = `uname -s`;
|
||||
$release = `uname -r`;
|
||||
$machine = `uname -m`;
|
||||
|
||||
if ($system =~ m%SunOS%) {
|
||||
if ($machine =~ m%prep%) {
|
||||
$system = "SunOS_PPC";
|
||||
}
|
||||
}
|
||||
|
||||
push(@targets,"findnewrcs.${system}");
|
||||
|
||||
#
|
||||
# for hp need subsystems
|
||||
#
|
||||
if ($system =~ m%HP-UX%) {
|
||||
# if it's not 700 9.0, don't do HP-UX
|
||||
if ($machine =~ m%.*/7%) {
|
||||
if ($release =~ m%9\.%) {
|
||||
push(@targets,"findnewrcs.700.90");
|
||||
push(@targets,"findnewrcs.800.90");
|
||||
}
|
||||
elsif ($release =~ m%8\.%) {
|
||||
@targets = ("findnewrcs.700.807");
|
||||
}
|
||||
elsif ($release =~ m%10\.%) {
|
||||
@targets = ("findnewrcs.700.100");
|
||||
}
|
||||
}
|
||||
elsif ($machine =~ m%.*/8%) {
|
||||
if ($release =~ m%9\.%) {
|
||||
@targets = ("findnewrcs.800.90");
|
||||
}
|
||||
elsif ($release =~ m%8\.%) {
|
||||
@targets = ("findnewrcs.800.80");
|
||||
}
|
||||
elsif ($release =~ m%7\.%) {
|
||||
@targets = ("findnewrcs.800.70");
|
||||
}
|
||||
}
|
||||
elsif ($machine =~ m%.*/[34]%) {
|
||||
if ($release =~ m%9\.%) {
|
||||
@targets = ("findnewrcs.300.90");
|
||||
}
|
||||
elsif ($release =~ m%8\.%) {
|
||||
@targets = ("findnewrcs.300.80");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach $target (@targets) {
|
||||
system ("make load${target}");
|
||||
}
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
#! /usr/local/bin/perl
|
||||
|
||||
eval "exec /usr/local/bin/perl -S $0 $*"
|
||||
if $running_under_some_shell;
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# File: ListTheTree <source tree>
|
||||
# RCS: $XConsortium: ListTheTree /main/3 1995/10/30 13:43:24 rswiston $
|
||||
# Author: Jim Andreas Hewlett-Packard, OSSD-CV
|
||||
# Created: 1/15/92
|
||||
# Modified by: Marc Ayotte Hewlett-Packard, OSSD-CV (perlizer)
|
||||
# Language: N/A
|
||||
# Package: N/A
|
||||
# Status: CDE distributed
|
||||
#
|
||||
# (c) Copyright 1993, Hewlett-Packard Company, all rights reserved.
|
||||
#
|
||||
# Description: This file does 2 things:
|
||||
# 1) List the source tree's structure.
|
||||
# This structure is placed into the source tree's
|
||||
# directory as :TreeListing.
|
||||
# 2) Creates a listing of all of the files locked in the
|
||||
# source tree and places it in :TreeListing.locks.
|
||||
################################################################################
|
||||
|
||||
if ($ARGV[0]) {
|
||||
$TREE = $ARGV[0];
|
||||
#
|
||||
# if not / relative get pwd path
|
||||
#
|
||||
if ($TREE !~ m%^\/%) {
|
||||
print STDERR " Must be a / related path e.g -> /foo. Sorry!\n";
|
||||
exit 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
die " USAGE ListTheTree <source directory>\n";
|
||||
}
|
||||
|
||||
# put /usr/local/bin in the path for Rcslocks
|
||||
$ENV{'PATH'} = "/x/cdesrc/admin/bin:/usr/local/bin:$ENV{'PATH'}";
|
||||
|
||||
if (! chdir("$TREE")) {
|
||||
die " ERROR -> Couldn't change directory to $TREE.\n";
|
||||
}
|
||||
|
||||
######################
|
||||
# get the tree listing
|
||||
######################
|
||||
system ("find . -print > :TreeListing.new");
|
||||
unlink(":TreeListing");
|
||||
if (! rename(":TreeListing.new",":TreeListing")) {
|
||||
print " WARNING -> couldn't mv :TreeListing.new to :TreeListing.\n";
|
||||
}
|
||||
|
||||
|
||||
###################################
|
||||
# find the locked files in the tree
|
||||
###################################
|
||||
unlink(":TreeListing.locks.new");
|
||||
open(NLOCK,">>$TREE/:TreeListing.locks.new");
|
||||
print NLOCK "List of locked files in $TREE\n\n";
|
||||
@dirs=(`find . -type d -print`);
|
||||
|
||||
foreach $dir (@dirs) {
|
||||
undef(@rcsLocks);
|
||||
chop($dir);
|
||||
if (chdir("$dir")) {
|
||||
@rcsLocks = (`Rcslocks -v`);
|
||||
# only list directory if there are locks
|
||||
if (@rcsLocks) {
|
||||
print NLOCK "$dir\n";
|
||||
while (@rcsLocks) {
|
||||
$lock = shift(@rcsLocks);
|
||||
print NLOCK " $lock";
|
||||
}
|
||||
print NLOCK "\n";
|
||||
}
|
||||
}
|
||||
else {
|
||||
print " WARNING -> could not cd to ${TREE}/${dir}\n";
|
||||
print " $!\n";
|
||||
}
|
||||
chdir("$TREE");
|
||||
}
|
||||
|
||||
unlink("$TREE/:TreeListing.locks");
|
||||
rename("$TREE/:TreeListing.locks.new","$TREE/:TreeListing.locks");
|
||||
|
||||
|
||||
#
|
||||
# get changes from last listing
|
||||
# check file $TREE/changestamp
|
||||
#
|
||||
$cstamp = "${TREE}/changestamp";
|
||||
if ( -f "${TREE}/changestamp" ) {
|
||||
$laststamp = `cat $cstamp`;
|
||||
chop $laststamp;
|
||||
}
|
||||
else {
|
||||
$date = `date +%y%m%d`;
|
||||
chop $date;
|
||||
$laststamp = "${date}0001";
|
||||
$dip = `echo "$laststamp" >$cstamp`;
|
||||
$date = `date +%m%d0001`;
|
||||
chop $date;
|
||||
system "touch $date $cstamp";
|
||||
}
|
||||
$curstamp = `date +%y%m%d%H%M`;
|
||||
chop $curstamp;
|
||||
|
||||
unlink("$TREE/:TreeListing.changes.new");
|
||||
open(NCHANGE,">>$TREE/:TreeListing.changes.new");
|
||||
print NCHANGE "List of changed files in $TREE\n\n";
|
||||
@allfiles=(`find . -follow -name "*,v" -newer $cstamp -print`);
|
||||
foreach $file (@allfiles) {
|
||||
chop $file;
|
||||
if (open($RCSFILE,"$file")) {
|
||||
NEXTLINE:
|
||||
while ($line = <$RCSFILE>) {
|
||||
chop $line;
|
||||
if ($line !~ m%^date%) {
|
||||
next NEXTLINE;
|
||||
}
|
||||
else {
|
||||
$lastdate = $line;
|
||||
$author = $line;
|
||||
$lastdate =~ s%^.* (\d+\.\d+\.\d+\.\d+\.\d+).*$%\1%;
|
||||
$lastdate =~ s%\.%%g;
|
||||
if ($lastdate > $laststamp) {
|
||||
$author =~ s%^.*author (.*); .*;$%\1%;
|
||||
print NCHANGE "$file <-> $author\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
close($RCSFILE);
|
||||
}
|
||||
}
|
||||
|
||||
$dip = `echo "$curstamp" >$cstamp`;
|
||||
|
||||
unlink("$TREE/:TreeListing.changes");
|
||||
rename("$TREE/:TreeListing.changes.new","$TREE/:TreeListing.changes");
|
||||
@@ -0,0 +1,54 @@
|
||||
#!/bin/ksh
|
||||
|
||||
TMPFILE=/tmp/xxIIee$$
|
||||
TMPFILE300=${TMPFILE}300
|
||||
TMPFILE700=${TMPFILE}700
|
||||
TMPFILEOTHER=${TMPFILE}OTHER
|
||||
TMPFILEEMPTY=${TMPFILE}EMPTY
|
||||
|
||||
if (( $# < 1 ))
|
||||
then
|
||||
PWDIR=`/bin/pwd`
|
||||
DATEDIR=`basename $PWDIR`
|
||||
DIR=/x/logs/build/$DATEDIR
|
||||
else
|
||||
DIR=/x/logs/build/$1
|
||||
fi
|
||||
|
||||
|
||||
echo >$TMPFILEEMPTY
|
||||
echo >>$TMPFILEEMPTY
|
||||
echo >>$TMPFILEEMPTY
|
||||
|
||||
echo "300 Build Machines in $DIR" > $TMPFILE300
|
||||
echo >> $TMPFILE300
|
||||
|
||||
echo "700 Build Machines in $DIR" > $TMPFILE700
|
||||
echo >> $TMPFILE700
|
||||
|
||||
echo "Other Build Machines in $DIR" > $TMPFILEOTHER
|
||||
echo >> $TMPFILEOTHER
|
||||
|
||||
|
||||
find $DIR -name summar\* -exec grep master_build {} \; > $TMPFILE
|
||||
|
||||
|
||||
|
||||
grep 300 $TMPFILE | sort -k 6,6 >> $TMPFILE300
|
||||
|
||||
grep 700 $TMPFILE | sort -k 6,6 >> $TMPFILE700
|
||||
|
||||
grep -v 300 $TMPFILE | grep -v 700 | sort -k 6,6 >> $TMPFILEOTHER
|
||||
|
||||
cat $TMPFILE700 $TMPFILEEMPTY $TMPFILEOTHER $TMPFILEEMPTY $TMPFILE300
|
||||
|
||||
|
||||
|
||||
rm $TMPFILE
|
||||
rm $TMPFILE300
|
||||
rm $TMPFILE700
|
||||
rm $TMPFILEOTHER
|
||||
rm $TMPFILEEMPTY
|
||||
|
||||
|
||||
|
||||
Executable
+121
@@ -0,0 +1,121 @@
|
||||
#! /usr/local/bin/perl
|
||||
|
||||
eval "exec /usr/local/bin/perl -S $0 $*"
|
||||
if $running_under_some_shell;
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# File: cleanLinks <source tree>
|
||||
# RCS: $XConsortium: cleanLinks /main/3 1995/10/30 13:43:35 rswiston $
|
||||
# Author: Marc Ayotte Hewlett-Packard, OSSD-CV
|
||||
# Created: Sun Jul 4 17:57:13 PDT 1993
|
||||
# Language: perl
|
||||
# Package: N/A
|
||||
# Status: CDE distributed
|
||||
#
|
||||
# (c) Copyright 1993, Hewlett-Packard Company, all rights reserved.
|
||||
#
|
||||
# Usage: cleanLinks <directory>
|
||||
#
|
||||
# Description: This script removes symbolic links to nowhere in
|
||||
# <directory>. It does not remove anything with RCS
|
||||
# in its path.
|
||||
#
|
||||
################################################################################
|
||||
if ($ARGV[0]) {
|
||||
$TREE = $ARGV[0];
|
||||
}
|
||||
else {
|
||||
die " USAGE CleanLinks <source directory>\n";
|
||||
}
|
||||
|
||||
if (! chdir("$TREE")) {
|
||||
die " ERROR -> Couldn't change directory to $TREE.\n";
|
||||
}
|
||||
|
||||
#######################################################
|
||||
# define local subroutines
|
||||
#######################################################
|
||||
sub dokill {
|
||||
die "\n left on INTR \n";
|
||||
exit 1;
|
||||
}
|
||||
########################################################
|
||||
# Catch signals
|
||||
########################################################
|
||||
$SIG{'INT'} = 'dokill';
|
||||
|
||||
|
||||
##############################
|
||||
# get the symlinks in the tree
|
||||
##############################
|
||||
if (! open(FIND,"find . -type d ! -type l -print|")) {
|
||||
print STDERR " ERROR failure in open used for find.\n";
|
||||
die "You may have to contact your build administrator\n";
|
||||
}
|
||||
#
|
||||
# don't buffer find output
|
||||
#
|
||||
$| = 1;
|
||||
|
||||
print "************ List of symlinks to nowhere removed **********\n";
|
||||
|
||||
|
||||
##################################################################
|
||||
# go through the directories and examine each symlink.
|
||||
# resolve the symlink and, if the file at the end doesn't exist,
|
||||
# remove the original symlink. Don't do anything that ends in RCS.
|
||||
##################################################################
|
||||
FILE:
|
||||
while ($new = <FIND>) {
|
||||
chop $new;
|
||||
if (! opendir(THISDIR,"$new")) {
|
||||
print STDERR " WARNING -> could not process directory $new\n";
|
||||
next FILE;
|
||||
}
|
||||
else {
|
||||
if (! chdir("$new")) {
|
||||
print STDERR " WARNING -> could not change directory to $new\n";
|
||||
next FILE;
|
||||
}
|
||||
}
|
||||
# remove . from $new path for cuteness of output
|
||||
$new =~ s%^\.%%;
|
||||
|
||||
@allfiles = grep(!/^\.\.?$/, readdir(THISDIR));
|
||||
foreach $file (@allfiles) {
|
||||
if (( -l $file) && ($file !~ m%RCS$%) && (! -d $file)) {
|
||||
#
|
||||
# resolve the link
|
||||
#
|
||||
$tmp1file = $file;
|
||||
$counter = 0;
|
||||
while (defined($tmp2file = readlink($tmp1file))) {
|
||||
$tmp1file = $tmp2file;
|
||||
#
|
||||
# watch for cyclic symlinks
|
||||
#
|
||||
if ($counter++ == 10) {
|
||||
last;
|
||||
}
|
||||
}
|
||||
#
|
||||
# if last piece in resolved chain is not a file
|
||||
# it is a symlink to nowhere -> remove
|
||||
#
|
||||
if ( ! -e $tmp1file) { # remove link to nowhere
|
||||
if (unlink("$file")) {
|
||||
print "removing ${TREE}${new}/${file}\n";
|
||||
}
|
||||
else {
|
||||
print STDERR " WARNING -> ${TREE}${new}/${file} -> could not remove\n";
|
||||
print "$!\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir(THISDIR);
|
||||
if (! chdir("$TREE")) {
|
||||
die " ERROR -> Couldn't change directory to $TREE.\n";
|
||||
}
|
||||
}
|
||||
Executable
+28
@@ -0,0 +1,28 @@
|
||||
#! /bin/ksh
|
||||
|
||||
# This script trims the number of files in the main build log directory
|
||||
# It can also be used to trim other log files
|
||||
# marca 2/7/90
|
||||
USAGE="cleanLogs [logdir] [number of logs left]"
|
||||
|
||||
# defaults
|
||||
LOGSLEFT=14
|
||||
LOGDIR=/x/logs/build
|
||||
[ $# -gt 1 ] && LOGSLEFT=$2
|
||||
[ $# -gt 0 ] && LOGDIR=$1
|
||||
|
||||
#clean up the log files because dere be too many
|
||||
echo ""
|
||||
echo "***************************************"
|
||||
echo "START Trimming log files"
|
||||
cd $LOGDIR
|
||||
LOGS=`ls -rt`
|
||||
set -- $LOGS
|
||||
|
||||
while [ $# -gt $LOGSLEFT ]
|
||||
do
|
||||
#eliminate last log file
|
||||
echo "Trying to delete $1"
|
||||
rm -rf $1 || echo "could not delete $1"
|
||||
shift
|
||||
done
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#! /bin/sh
|
||||
# This script cleans the fnrclone, etc directories.
|
||||
|
||||
for DIRS in `echo "fnrclone fnrnolink fnrnoRCS"`
|
||||
do
|
||||
CURRENT=$HOME/$DIRS
|
||||
if [ -d $CURRENT ];then
|
||||
echo ""
|
||||
echo "In $CURRENT"
|
||||
cd $CURRENT
|
||||
LOGS=`ls -rt`
|
||||
set -- $LOGS
|
||||
|
||||
#check to see if you have at least 10 log and script files
|
||||
while [ $# -gt 20 ]
|
||||
do
|
||||
echo $1
|
||||
rm -rf $1 || echo "could not delete $1"
|
||||
shift
|
||||
done
|
||||
fi
|
||||
echo ""
|
||||
done
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
#! /bin/sh
|
||||
|
||||
# This script cleans a source tree of unwanted ,RCSnew* files
|
||||
# created when you abort RCS.
|
||||
# It also makes all the ,v files have group bin and owner bin --marca
|
||||
# marca 2/7/90
|
||||
|
||||
USAGE="USAGE: cleansrctree <sourcedir>"
|
||||
|
||||
if [ $# -lt 1 ];then
|
||||
echo ""
|
||||
echo "$USAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd /$1
|
||||
|
||||
#change owner and group to bin
|
||||
echo "FILES NOT OWNER BIN"
|
||||
find . -name "*,v" ! -user bin -print -exec chown bin {} \;
|
||||
find . -name "*,v" ! -group bin -print -exec chgrp bin {} \;
|
||||
echo "FILES not 444"
|
||||
find . -name "*,v" -perm 0440 -exec chmod +r {} \; -print
|
||||
echo ""
|
||||
echo "FILES NOT GROUP BIN"
|
||||
echo ""
|
||||
echo ",RCS FILES"
|
||||
# eliminate , files
|
||||
find . -name ",*" -print -exec rm -f {} \;
|
||||
@@ -0,0 +1,69 @@
|
||||
################################################################################
|
||||
#
|
||||
# RCS: $XConsortium: cron_example /main/3 1995/10/30 13:43:46 rswiston $
|
||||
# Author: Marc Ayotte, Hewlett-Packard OSSD-CV
|
||||
# Created: Tue Jun 29 10:12:15 PDT 1993
|
||||
# Language: N/A
|
||||
# Package: N/A
|
||||
# Status: CDE
|
||||
#
|
||||
# (c) Copyright 1993, Hewlett-Packard Company, all rights reserved.
|
||||
#
|
||||
# Description: This file is an example cron script which triggers
|
||||
# builds and does normal tree maintenance. The various functions
|
||||
# are delimited by the letters #[A-Z]).
|
||||
# A) fnrclone can leave 2 files each time it executes:
|
||||
# The file ${HOME}/fnrclone/log.hhmmss and script.hhmmss.
|
||||
# These files can pile up and they are cleaned out by the cleanfnr
|
||||
# script.
|
||||
# NOTE: In the very near future this will not be the default
|
||||
# operation for fnrclone and this may no longer be necessary.
|
||||
# B) By default, master_build puts its log files in the
|
||||
# /x/logs/build/MMDD/${buildtreename} directory. The
|
||||
# cleanLogs script trims these directories.
|
||||
# C) The script ListTheTree creates a listing of all of the files in
|
||||
# a tree and puts the list under the name :TreeListing in the top
|
||||
# of the tree.
|
||||
# D) An example of building the /x/cde_hp700_90 tree on the
|
||||
# machine that is doing cron.
|
||||
# E) An example of building the /x/cde_hp700d_90(debug) tree on a
|
||||
# remote machine using remsh.
|
||||
################################################################################
|
||||
#A) clean ${HOME}/fnrclone directory
|
||||
4 11 * * * /x/cdesrc/admin/BuildTools/master_build/cleanfnr 1>/users/marca/xbuild/cleanfnr.log 2>&1
|
||||
|
||||
#B) clean excess build logs in /x/logs/build
|
||||
4 19 * * * /x/cdesrc/admin/BuildTools/master_build/cleanLogs 1>/x/logs/cronlogs/cleanLogs.log 2>&1
|
||||
|
||||
#C) create a listing of the files in a tree and put into top of the tree.
|
||||
# this also creates a listing of locked files
|
||||
10 12 * * * /x/cdesrc/admin/BuildTools/master_build/ListTheTree /x/cdesrc 1>/x/logs/cronlogs/ListTheTreecdesrc.log 2>&1
|
||||
|
||||
#D) build the hp tree putting the log files in the default location.
|
||||
# the source tree is /x/cdesrc; the build tree is /x/cde_hp700_90.
|
||||
# This entry will first do an fnrclone -s /x/cdesrc /x/cde_hp700_90
|
||||
# to sync up the build tree's links to the source (-clone s).
|
||||
# The log and error files from the clone will go into
|
||||
# /x/logs/build/mmdd/cde_hp700_90/clonelog.HHMMSS
|
||||
# /x/logs/build/mmdd/cde_hp700_90/cloneerr.HHMMSS
|
||||
# It uses -c to do all of the normal imake functions:
|
||||
# make -i Makefile; make -i Makefiles;make -i includes;make -i
|
||||
# depend and make -i.
|
||||
# The log files for make -i will go in
|
||||
# /x/logs/build/mmdd/cde_hp700_90/make.HHMMSS.
|
||||
# The log files for all other operations will go in
|
||||
# /x/logs/build/mmdd/cde_hp700_90/allmake.HHMMSS.
|
||||
# The second entry uses -w to "clean the tree": remove all .o's, .a's,
|
||||
# executables etc. Normally we make clean once a week on Saturday night.
|
||||
# The -cl option will remove symbolic links to nowhere.
|
||||
# The -m option will mail notification to someone when the build
|
||||
# is complete.
|
||||
############ cde_hp700_90 - LOCAL ##############
|
||||
6 22 * * 0,1,2,3,4,5 /x/cdesrc/admin/BuildTools/master_build/master_build -src /x/cdesrc -build /x/cde_hp700_90 -clone s -cl -c -m buildwatch@hpcvlx 1>/x/logs/cronlogs/r5s700.log 2>&1
|
||||
6 22 * * 6 /x/cdesrc/admin/BuildTools/master_build/master_build -src /x/cdesrc -build /x/cde_hp700_90 -clone s -cl -c -w -m buildwatch@hpcvlx 1>/x/logs/cronlogs/r5s700.log 2>&1
|
||||
|
||||
|
||||
#E) build the debug tree on hpcvusj
|
||||
############ cde_hp700d_90 - HPCVUSJ ##############
|
||||
10 22 * * 0,1,2,3,4,5 /x/cdesrc/admin/BuildTools/master_build/remote_build hpcvusj -src /x/cdesrc -build /x/cde_hp700d_90 -clone s -cl -c -m buildwatch@hpcvlx 1>/x/logs/cronlogs/r5s700.log 2>&1
|
||||
10 22 * * 6 /x/cdesrc/admin/BuildTools/master_build/remote_build hpcvusj -src /x/cdesrc -build /x/cde_hp700d_90 -clone s -cl -c -w -m buildwatch@hpcvlx 1>/x/logs/cronlogs/r5s700.log 2>&1
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# this script make sure that all dirs in /x80src are
|
||||
# owned by xbuild, and that all directories have permissions
|
||||
# of 755.
|
||||
#
|
||||
# - jim andreas 10/91
|
||||
#
|
||||
# modified to be more general by Marc Ayotte 11/92
|
||||
|
||||
doUsage()
|
||||
{
|
||||
cat << eof
|
||||
|
||||
USAGE: fixSourceDirPerm <tree> <owner> <group>
|
||||
|
||||
Note: if owner != bin, files and directories owned by bin
|
||||
will NOT be changed to owner.
|
||||
|
||||
eof
|
||||
}
|
||||
|
||||
if [ $# -lt 3 ];then
|
||||
doUsage;
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd $1 || doUsage
|
||||
|
||||
# Some dirs in the build trees have to be owned by bin (rcs_tools)
|
||||
# if bin is not the chosen group, don't change files that are already bin
|
||||
if [ "$2" != "bin" ];then
|
||||
DontDoBin="! -user bin"
|
||||
fi
|
||||
|
||||
# change ownership of non-conforming dirs
|
||||
#
|
||||
echo "DIRS not owned by $2"
|
||||
find . -type d ! -path "*RCS*" ! -path "*/CRT*" ! -user $2 $DontDoBin -print -exec chown $2 {} \; -exec chgrp $3 {} \;
|
||||
|
||||
# chmod mode of non-conforming dirs
|
||||
#
|
||||
echo "DIRS not 755 permission by $2"
|
||||
find . -type d -user $2 ! -path "*/CRT*" $DontDoBin ! -perm 755 -print -exec chmod 755 {} \;
|
||||
|
||||
# chown mode of non-conforming files
|
||||
#
|
||||
echo "FILES not owned by $2"
|
||||
find . -type f ! -path "*RCS*" ! -path "*/CRT*" ! -user $2 $DontDoBin -print -exec chown $2 {} \; -exec chgrp $3 {} \;
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
#! /usr/local/bin/perl
|
||||
|
||||
eval "exec /usr/local/bin/perl -S $0 $*"
|
||||
if $running_under_some_shell;
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# File: manageBInstallDirs <source tree>
|
||||
# RCS: $XConsortium: manageBInstallDirs /main/3 1995/10/30 13:43:53 rswiston $
|
||||
# Author: Marc Ayotte Hewlett-Packard, OSSD-CV
|
||||
# Created: Thu Dec 30 14:02:31 PST 1993
|
||||
# Language: perl
|
||||
# Package: N/A
|
||||
# Status: CDE distributed
|
||||
#
|
||||
# (c) Copyright 1993, Hewlett-Packard Company, all rights reserved.
|
||||
#
|
||||
# Usage: manageBInstallDirs <directory> <latestsubdir> [#dirsleft]
|
||||
#
|
||||
# Description: This script removes excessive binstall directories of
|
||||
# the type parentdir/mm_dd (month day).
|
||||
# It also symbolically links the most recent subdirectory
|
||||
# to parentdir/latest.
|
||||
#
|
||||
################################################################################
|
||||
if ($ARGV[1]) {
|
||||
$tree = $ARGV[0];
|
||||
$latestSubdir = $ARGV[1];
|
||||
}
|
||||
else {
|
||||
die "USAGE manageBInstallDirs <parent directory> <latestsubdir> [# dirsleft]\n";
|
||||
}
|
||||
|
||||
if (! chdir("$tree")) {
|
||||
die " ERROR -> Couldn't change directory to $tree.\n";
|
||||
}
|
||||
|
||||
if ($ARGV[2]) {
|
||||
$numDirsLeft = $ARGV[2];
|
||||
}
|
||||
else {
|
||||
$numDirsLeft = 7;
|
||||
}
|
||||
|
||||
#######################################################
|
||||
# define local subroutines
|
||||
#######################################################
|
||||
sub dokill {
|
||||
die "\n left on INTR \n";
|
||||
exit 1;
|
||||
}
|
||||
########################################################
|
||||
# Catch signals
|
||||
########################################################
|
||||
$SIG{'INT'} = 'dokill';
|
||||
|
||||
|
||||
##################################################
|
||||
# get the mm_dd directories in oldest first order.
|
||||
# remove the oldest if there are more than minimum.
|
||||
##################################################
|
||||
@allDirs = (`ls -t`);
|
||||
$counter = 0;
|
||||
foreach $dir (@allDirs){
|
||||
chop $dir;
|
||||
$_ = $dir;
|
||||
if (m%^[0-9][0-9]_[0-9][0-9]$% && -d $dir) {
|
||||
if ($counter++ >= $numDirsLeft) {
|
||||
print "removing $tree/$dir\n";
|
||||
system "rm -rf $dir";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
############################
|
||||
# link latestSubdir to latest
|
||||
############################
|
||||
if (-l "latest") {
|
||||
print "linking $latestSubdir to \"latest\"\n";
|
||||
system "rm -f latest";
|
||||
system "ln -s -f $latestSubdir latest";
|
||||
}
|
||||
elsif(-d "latest") {
|
||||
print "Error - directory \"latest\" is a real directory";
|
||||
}
|
||||
else { # create link
|
||||
system "ln -s -f $latestSubdir latest";
|
||||
}
|
||||
+520
@@ -0,0 +1,520 @@
|
||||
#!/bin/ksh
|
||||
################################################################################
|
||||
#
|
||||
# File: master_build
|
||||
# RCS: $XConsortium: master_build /main/14 1996/07/18 14:17:16 drk $
|
||||
# Author: Marc Ayotte Hewlett-Packard, OSSD-CV
|
||||
# Created: 2/6/90
|
||||
# Modified by: Jim Andreas, Fred Handloser, Marc Ayotte, Ron Voll
|
||||
# and others from Hewlett-Packard, OSSD-CV
|
||||
# Language: N/A
|
||||
# Package: N/A
|
||||
# Status: CDE distributed
|
||||
#
|
||||
# (c) Copyright 1993, Hewlett-Packard Company, all rights reserved.
|
||||
#
|
||||
# Description: This file controls the building and cloning of
|
||||
# of source and build trees. Look at the file cron.example
|
||||
# and the usage information below for examples of how
|
||||
# to use this script. There is also a man page
|
||||
# master_build.1
|
||||
################################################################################
|
||||
|
||||
|
||||
################################################################################
|
||||
function DoUsage #
|
||||
################################################################################
|
||||
{
|
||||
if [ -n $1 ]; then
|
||||
echo "unrecognized option: $1"
|
||||
echo
|
||||
fi
|
||||
|
||||
cat<<eof
|
||||
Usage:master_build
|
||||
[ -src <srcdir> ] (source directory e.g. /proj/cde, /proj/x11)
|
||||
[ -build <buildir> (build dir. as in /proj/cde, /proj/x11)
|
||||
[ -clone <option> ] (one of:
|
||||
f -> do a full checkout # TEMPORARILY OBSOLETE!!
|
||||
n -> clone creating real files (fnrclone -n)
|
||||
s -> clone without checking files out of RCS
|
||||
c -> clone checking out newer RCS files
|
||||
sync-> clone checking out newer RCS files (OBSOLETE)
|
||||
[ -cl ] (run cleanLinks)
|
||||
[ -c ] (compile)
|
||||
[ -b ] (run make binstall and use the default path mechanism in imake)
|
||||
[ -bp <path> ] (run make binstall and supply the install location)
|
||||
[ -ba <path> ] (run make binstall and create an automatic install path)
|
||||
(This path is of the form path/mm_dd).
|
||||
[ -cb <#dirs left> ] (clean binstall directories. must be used
|
||||
with -ba option)
|
||||
[ -l ] (make lint libraries)
|
||||
[ -n ] (do not make Makefile,Makefiles,includes,depend)
|
||||
[ -w ] (clean the tree before building)
|
||||
[ -be <chrootdir> ] (do a chroot build using chrootdir)
|
||||
[ -ld <ldoptions> ] (pass ld options to build probably obsolete)
|
||||
[ -model <model> ] (necessary for apollo or prism)
|
||||
[ -m ] ( send mail to all in BUILD_WATCH list when finished)
|
||||
[ -noIgnore ] (do not use the -k option to make)
|
||||
[ -log <logdir> ] directs output to <logdir>/mm_dd/cde
|
||||
e.g. -log /proj/cde/logs -> /proj/cde/logs/mm_dd/cde/*
|
||||
if no -log is specified, output is directed to <buildir>/mm_dd/cde/*
|
||||
if no -build is specified, output is directed to ./mm_dd/cde/*
|
||||
[ -t ] <tooldir> (directory containing master_build, fnrclone
|
||||
directories. Currently $TOOLDIR)
|
||||
eof
|
||||
|
||||
#
|
||||
# if there is a bad option mail to any in the BUILD_WATCH list,
|
||||
# we don't know if the -m option was used.
|
||||
if [ "$BUILD_WATCH" ]
|
||||
then
|
||||
LETTER=/tmp/optError.$$
|
||||
echo "master_build did not run on machine $SYSNAME" > $LETTER
|
||||
echo "due to bad option '$1'" >> $LETTER
|
||||
echo "" >> $LETTER
|
||||
echo "" >> $LETTER
|
||||
printenv >> $LETTER
|
||||
mailx -s"master_build did not run on $SYSNAME due to bad option '$1'" $BUILD_WATCH < $LETTER
|
||||
rm $LETTER
|
||||
fi
|
||||
|
||||
exit 1
|
||||
} # END DoUsage
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Initialize Parameters
|
||||
# get the architecture and start time
|
||||
SYSNAME=`uname -n`
|
||||
ARCH=`uname -s`
|
||||
|
||||
#
|
||||
# Resolve date call that depend on HP-UX, Apollo sys5.3, or Apollo
|
||||
# bsd4.3. The default for architectures is "date
|
||||
#
|
||||
if [ -f /hp-ux ]
|
||||
then
|
||||
DATECMD="/bin/date"
|
||||
elif [ -f /com/ctnode ]
|
||||
then
|
||||
DATECMD="/sys5.3/bin/date"
|
||||
else
|
||||
DATECMD="date"
|
||||
fi
|
||||
|
||||
START_TIME_LONG=`$DATECMD`
|
||||
|
||||
START_TIME="`$DATECMD +%d`_`$DATECMD +%H`:`$DATECMD +%M`:`$DATECMD +%S`"
|
||||
DATE="`$DATECMD +%m`_`$DATECMD +%d`"
|
||||
|
||||
SENDMAIL="FALSE"
|
||||
TOOLDIR=/x/cdesrc/admin/BuildTools
|
||||
IGNORE="-k"
|
||||
BASE_LOG_DIR=
|
||||
###########################################################################
|
||||
|
||||
|
||||
|
||||
###########################################################################
|
||||
# parse command line arguments...
|
||||
|
||||
# Prepend options from the MASTERBUILD environment variable.
|
||||
set -- $MASTERBUILD $*
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
DoUsage $1 # exit on error
|
||||
fi
|
||||
|
||||
while [ $# -gt 0 ]
|
||||
do case $1 in
|
||||
-src) SRC_DIR=$2;shift 2 ;; # source directory
|
||||
-build) OBJ_DIR=$2;shift 2 ;; # build directory
|
||||
-clone) CLONEOPT=$2;shift 2 ;; # clone options if any
|
||||
-cl) CLEANLINKS="TRUE";shift ;; # run clean links
|
||||
-c) COMPILE="TRUE";shift ;; # Compile object
|
||||
-b) DOBINSTALL="TRUE";
|
||||
BINSTALL_PATH=;shift ;; # run make binstall w/default path
|
||||
-bp) DOBINSTALL="TRUE";
|
||||
BINSTALL_PATH=$2;
|
||||
shift 2 ;; # run make binstall w/supplied path
|
||||
-ba) DOBINSTALL="TRUE";
|
||||
BINSTALL_PATH=$2;
|
||||
BINSTALL_AUTOPATH="TRUE"; # append /mm_dd to BINSTALL_PATH
|
||||
shift 2 ;; # run make binstall w/auto path
|
||||
-cb) DOCLEANBINSTALL="TRUE" ; # run manageBInstallDirs
|
||||
NUMBINSTALLDIRSLEFT=$2 ; # directories to leave when
|
||||
shift 2 ;; # cleaning binstall subdirs
|
||||
-n) NOMAKEMAKEFILE=TRUE;shift;; # Do not do make Makefile, etc
|
||||
-w) CLEAN="TRUE";shift ;; # Remove all object files
|
||||
-l) DOLINT="TRUE";shift ;; # Make lint from top level
|
||||
-ld) LDOPTIONS=$2;shift 2 ;; # LDOPTS passed
|
||||
-be) BE=TRUE;BEDIR=$2;shift 2;; # use pseudo-root BEDIR to build
|
||||
-log) BASE_LOG_DIR=$2;shift 2;; # use alternate log directory
|
||||
-t) TOOLDIR=$2;shift 2 ;; # directory for fnrclone, etc.
|
||||
-model) MODEL=$2;shift 2 ;; # not necessary for hp
|
||||
-noIgnore) IGNORE=; shift ;; # do not ignore make errors (no -k)
|
||||
-m) SENDMAIL="TRUE";BUILD_WATCH=$2;shift 2 ;; # send mail when finished
|
||||
*) DoUsage $1;shift ;; # exit on error
|
||||
esac
|
||||
done
|
||||
|
||||
umask 002
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Set up various log directories
|
||||
#
|
||||
CLEANBINSTALL=$TOOLDIR/master_build/manageBInstallDirs
|
||||
LATESTDIR=$DATE # for manageBInstallDirs
|
||||
CLEANBINSTALLPATH=$BINSTALL_PATH # for manageBInstallDirs
|
||||
|
||||
# binstall automatic path
|
||||
if [ "$BINSTALL_AUTOPATH" ];then
|
||||
BINSTALL_PATH=$BINSTALL_PATH/$DATE
|
||||
else
|
||||
if [ "$DOCLEANBINSTALL" ];then
|
||||
echo "ERROR - can't run manageBInstallDirs unless -ba option is used";
|
||||
DoUsage
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# The log directory is determined as follows
|
||||
#
|
||||
# 1. The directory specified in the -log flag.
|
||||
# 2. The directory specified in the -build flag.
|
||||
# 3. The current directory.
|
||||
#
|
||||
|
||||
if [ "$BASE_LOG_DIR" = "" ]; then
|
||||
if [ "$OBJ_DIR" ]; then
|
||||
BASE_LOG_DIR=$OBJ_DIR;
|
||||
else
|
||||
BASE_LOG_DIR=".";
|
||||
fi
|
||||
fi
|
||||
|
||||
BASE_LOG_DIR=$BASE_LOG_DIR/$DATE
|
||||
|
||||
# set up log directories on build machines
|
||||
# use build directory for log file if present, otherwise use source
|
||||
# if binstall wanted and no object dir -> error
|
||||
if [ "$OBJ_DIR" ];then
|
||||
FOCUS_DIR=$OBJ_DIR
|
||||
else
|
||||
if [ "$DOBINSTALL" ];then
|
||||
echo "\n\t----------------------------------------------------------";
|
||||
echo "\t*** ERROR - must specify -build option with -b options ***"
|
||||
echo "\t----------------------------------------------------------";
|
||||
DoUsage;
|
||||
fi
|
||||
FOCUS_DIR=$SRC_DIR
|
||||
fi
|
||||
|
||||
#
|
||||
# check the existence of OSVersion.tmpl
|
||||
#
|
||||
|
||||
if [ ! -a $FOCUS_DIR/config/OSVersion.tmpl ]; then
|
||||
echo "$FOCUS_DIR/config/OSVersion.tmpl does not exist"
|
||||
echo "Abort...."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# check the existence of localtree.tmpl
|
||||
#
|
||||
|
||||
if [ ! -a $FOCUS_DIR/config/localtree.tmpl ]; then
|
||||
echo "$FOCUS_DIR/config/localtree.tmpl does not exist"
|
||||
echo "Abort...."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# setup the log directory
|
||||
#
|
||||
|
||||
LEAF_LOG_DIR=`basename $FOCUS_DIR`
|
||||
LOG_DIR=$BASE_LOG_DIR/$LEAF_LOG_DIR
|
||||
[ ! -d $LOG_DIR ] && mkdir -p $LOG_DIR
|
||||
|
||||
DATE=`$DATECMD +%H%M%S`
|
||||
BUILDLOGDATE=`$DATECMD +%a`
|
||||
|
||||
# make a daily directory for logs
|
||||
CLONE_ERR=$LOG_DIR/cloneerr.$DATE
|
||||
CLONE_LOG=$LOG_DIR/clonelog.$DATE
|
||||
CLEANLINKS_LOG=$LOG_DIR/cleanlinks.$DATE
|
||||
MAKE_FILE=$LOG_DIR/make.$DATE
|
||||
ALL_MAKE=$LOG_DIR/allmake.$DATE
|
||||
LINT_LOG=$LOG_DIR/lint.$DATE
|
||||
BINSTALL_LOG=$LOG_DIR/binstall.$DATE
|
||||
CLEANBINSTALL_LOG=$LOG_DIR/cleanbinstall.$DATE
|
||||
SUMMARY_FILE=$LOG_DIR/summary.$DATE
|
||||
PROCESSID_FILE=$LOG_DIR/pid.$DATE
|
||||
|
||||
echo "$$" > $PROCESSID_FILE
|
||||
echo "pid of master_build is $$ for $FOCUS_DIR on $SYSNAME" >> $PROCESSID_FILE
|
||||
|
||||
# Log file for a particular build tree
|
||||
[ "$OBJ_DIR" ] && [ ! -d $OBJ_DIR/logs ] && mkdir $OBJ_DIR/logs
|
||||
OBJ_DIR_LOG=$OBJ_DIR/logs/make.${BUILDLOGDATE}.${DATE}
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Clone source or build trees
|
||||
#
|
||||
# clone if appropriate
|
||||
if [ "$CLONEOPT" ]
|
||||
then
|
||||
cd $FOCUS_DIR #directory which will be cloned if not checkout all
|
||||
echo "\n==== Cloning $FOCUS_DIR on $SYSNAME, pid of master_build is $$ ====\n";
|
||||
|
||||
case $CLONEOPT in
|
||||
s) $TOOLDIR/fnrclone/fnrclone $SRC_DIR $FOCUS_DIR -f $CLONE_LOG 1>$CLONE_ERR 2>&1;;
|
||||
n | c) $TOOLDIR/fnrclone/fnrclone $SRC_DIR $FOCUS_DIR -${CLONEOPT} -f $CLONE_LOG 1>$CLONE_ERR 2>&1;;
|
||||
sync) $TOOLDIR/fnrclone/fnrclone $SRC_DIR $FOCUS_DIR -c -f $CLONE_LOG 1>$CLONE_ERR 2>&1;;
|
||||
*) echo "\n=========== bad clone option $CLONEOPT on $SYSNAME ========\n";
|
||||
# if there is a bad option mail to any in the BUILD_WATCH list,
|
||||
# even if the -m option was not used since this is an error
|
||||
if [ "$BUILD_WATCH" ]; then
|
||||
LETTER=/tmp/cloneOptError.$$
|
||||
echo "master_build on machine $SYSNAME exited " > $LETTER
|
||||
echo "due to bad clone option '$CLONEOPT'" >> $LETTER
|
||||
echo "" >> $LETTER
|
||||
echo "" >> $LETTER
|
||||
printenv >> $LETTER
|
||||
mailx -s"master_build on $SYSNAME exited due to bad clone option '$CLONEOPT'" $BUILD_WATCH < $LETTER
|
||||
rm $LETTER
|
||||
fi
|
||||
exit 1;;
|
||||
esac
|
||||
|
||||
fi
|
||||
|
||||
#################################
|
||||
# Clean symbolic links to nowhere
|
||||
#################################
|
||||
if [ "$CLEANLINKS" = "TRUE" ]
|
||||
then
|
||||
echo "\n= removing symbolic links to nowhere in $FOCUS_DIR on $SYSNAME =\n";
|
||||
$TOOLDIR/master_build/cleanLinks $FOCUS_DIR 1>$CLEANLINKS_LOG 2>&1
|
||||
fi
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# build new stuff...
|
||||
#
|
||||
|
||||
if [ "$CLEAN" ]
|
||||
then
|
||||
CLEAN="make $IGNORE clean"
|
||||
CLEAN_STEPNAME="clean "
|
||||
else
|
||||
CLEAN="true"
|
||||
fi
|
||||
|
||||
if [ "$COMPILE" -o "$DOLINT" ];then
|
||||
if [ "$COMPILE" ]; then
|
||||
BUILD="make $IGNORE"
|
||||
COMPILE_STEPNAME="make"
|
||||
else
|
||||
BUILD="true"
|
||||
fi
|
||||
|
||||
if [ "$DOLINT" ];then
|
||||
LINT="make $IGNORE lintlib"
|
||||
LINT_STEPNAME="lintlib"
|
||||
else
|
||||
LINT="true"
|
||||
fi
|
||||
|
||||
# if only doing make (-n option) ignore everything else
|
||||
if [ "$NOMAKEMAKEFILE" ];then
|
||||
MFILE="true"
|
||||
MFILES="true"
|
||||
MKINCLUDES="true"
|
||||
DEPEND="true"
|
||||
else
|
||||
MFILE="make -f Makefile.ini Makefile"
|
||||
MFILES="make $IGNORE Makefiles"
|
||||
MKINCLUDES="make $IGNORE includes"
|
||||
DEPEND="make $IGNORE depend"
|
||||
MAKEFILES_STEPNAME="Makefiles"
|
||||
INCLUDES_STEPNAME="includes"
|
||||
DEPEND_STEPNAME="depend"
|
||||
fi
|
||||
|
||||
echo "\n================= Building $OBJ_DIR on $SYSNAME ==================\n"
|
||||
echo "Build Directory: $OBJ_DIR"
|
||||
echo "Logging Directory: $LOG_DIR"
|
||||
echo "MasterBuild Steps: $MAKEFILES_STEPNAME $CLEAN_STEPNAME $INCLUDES_STEPNAME $DEPEND_STEPNAME $COMPILE_STEPNAME $LINT_STEPNAME"
|
||||
|
||||
#
|
||||
# Print out information about the view configuration
|
||||
#
|
||||
|
||||
CLEARTOOL=/usr/atria/bin/cleartool
|
||||
if [ -f $CLEARTOOL -a -x $CLEARTOOL ]; then
|
||||
CWD=`pwd`
|
||||
cd $OBJ_DIR
|
||||
echo "\nBuild view: " `$CLEARTOOL pwv -wdview -short`
|
||||
echo "\nView config-spec:"
|
||||
$CLEARTOOL catcs | grep -v "^#" | sed 's/.*/ &/'
|
||||
echo "\nChecked out versions:"
|
||||
$CLEARTOOL lsco -cview -avobs -fmt " %Sd %u %n\n"
|
||||
cd $CWD
|
||||
fi
|
||||
|
||||
#
|
||||
# print out OSVersion.tmpl info if it is a symbolic link
|
||||
#
|
||||
|
||||
echo "\n$FOCUS_DIR/config/OSVersion.tmpl:"
|
||||
if [ -L $FOCUS_DIR/config/OSVersion.tmpl ]; then
|
||||
ls -l $FOCUS_DIR/config/OSVersion.tmpl | \
|
||||
awk '{ print " Link to -> " $11 }'
|
||||
else
|
||||
ls -l $FOCUS_DIR/config/OSVersion.tmpl
|
||||
fi
|
||||
awk '/^#define/ { print " " $2,$3 }' $FOCUS_DIR/config/OSVersion.tmpl
|
||||
|
||||
#
|
||||
# print out localtree.tmpl info if it is a symbolic link
|
||||
#
|
||||
|
||||
echo "\n$FOCUS_DIR/config/localtree.tmpl:"
|
||||
if [ -L $FOCUS_DIR/config/localtree.tmpl ]; then
|
||||
ls -l $FOCUS_DIR/config/localtree.tmpl | \
|
||||
awk '{ print " Link to -> " $11 }'
|
||||
else
|
||||
ls -l $FOCUS_DIR/config/localtree.tmpl
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
######################################################################
|
||||
# This section below probably only applies to Hewlett-Packard
|
||||
# It concerns using a chroot build environment when building.
|
||||
######################################################################
|
||||
#chroot build
|
||||
if [ "$BE" ];then
|
||||
cat<<dernier>$BEDIR/tmp/allmake$$script
|
||||
#! /bin/sh
|
||||
umask 002
|
||||
cd $OBJ_DIR && $MFILE && $MFILES && $CLEAN && $MKINCLUDES && $DEPEND
|
||||
dernier
|
||||
chmod +x $BEDIR/tmp/allmake$$script
|
||||
/usr/local/bin/changeroot $BEDIR /tmp/allmake$$script 1>$ALL_MAKE 2>&1
|
||||
rm -f $BEDIR/tmp/allmake$$script
|
||||
|
||||
cat<<dernier>$BEDIR/tmp/make$$script
|
||||
#! /bin/sh
|
||||
umask 002
|
||||
LDOPTS="$LDOPTIONS"
|
||||
export LDOPTS
|
||||
cd $OBJ_DIR && $BUILD
|
||||
dernier
|
||||
chmod +x $BEDIR/tmp/make$$script
|
||||
/usr/local/bin/changeroot $BEDIR /tmp/make$$script 2>&1 | tee $OBJ_DIR_LOG 1>$MAKE_FILE
|
||||
rm -f $BEDIR/tmp/make$$script
|
||||
|
||||
if [ "$DOLINT" ];then
|
||||
cat<<dernier>$BEDIR/tmp/lint$$script
|
||||
#! /bin/sh
|
||||
umask 002
|
||||
cd $OBJ_DIR && $LINT
|
||||
dernier
|
||||
chmod +x $BEDIR/tmp/lint$$script
|
||||
/usr/local/bin/changeroot $BEDIR /tmp/lint$$script 1>$LINT_LOG 2>&1
|
||||
rm -f $BEDIR/tmp/lint$$script
|
||||
fi
|
||||
######################################################################
|
||||
# non chroot (normal) builds
|
||||
######################################################################
|
||||
else
|
||||
if [ "$ARCH" = "SunOS" ];then
|
||||
PATH=$PATH:/usr/ccs/bin
|
||||
export PATH
|
||||
fi
|
||||
if [ "$MODEL" = "apollo" -o "$MODEL" = "prism" ]
|
||||
then
|
||||
( umask 002
|
||||
echo "Preparing to build in: \"$OBJ_DIR\"."
|
||||
cd $OBJ_DIR &&
|
||||
$MFILE &&
|
||||
$MFILES &&
|
||||
$CLEAN &&
|
||||
$MKINCLUDES &&
|
||||
$DEPEND
|
||||
) 1>$ALL_MAKE 2>&1
|
||||
|
||||
( umask 002
|
||||
echo "Building in \"$OBJ_DIR\"."
|
||||
echo " X11REV=\"$X11REV\"."
|
||||
echo " MOTIFREV=\"$MOTIFREV\"."
|
||||
cd $OBJ_DIR &&
|
||||
$BUILD
|
||||
) 2>&1 | tee $OBJ_DIR_LOG 1>$MAKE_FILE
|
||||
|
||||
( umask 002
|
||||
echo "Linting in \"$OBJ_DIR\"."
|
||||
cd $OBJ_DIR &&
|
||||
$LINT
|
||||
) 1>$LINT_LOG 2>&1
|
||||
else # all other architectures
|
||||
COMMAND="umask 002
|
||||
cd $OBJ_DIR &&
|
||||
$MFILE &&
|
||||
$MFILES &&
|
||||
$CLEAN &&
|
||||
$MKINCLUDES &&
|
||||
$DEPEND &&
|
||||
$BUILD 2>&1 | tee $OBJ_DIR_LOG 1>$MAKE_FILE &&
|
||||
$LINT 1>$LINT_LOG 2>&1"
|
||||
eval "$COMMAND" 1>$ALL_MAKE 2>&1
|
||||
fi # apollo || prism
|
||||
fi # BE
|
||||
|
||||
|
||||
LETTER=/tmp/allOK.$$
|
||||
STORAGEDIR=`/bin/pwd`
|
||||
|
||||
END_TIME="`$DATECMD +%d`_`$DATECMD +%H`:`$DATECMD +%M`:`$DATECMD +%S`"
|
||||
|
||||
END_TIME_LONG=`$DATECMD`
|
||||
|
||||
echo "master_build for $FOCUS_DIR on machine $SYSNAME " > $LETTER
|
||||
echo " " >> $LETTER
|
||||
echo " started at $START_TIME_LONG" >> $LETTER
|
||||
echo " " >> $LETTER
|
||||
echo " and finished at $END_TIME_LONG" >> $LETTER
|
||||
echo "" >> $LETTER
|
||||
echo "Summary: $SYSNAME $FOCUS_DIR $STORAGEDIR $START_TIME $END_TIME" >> $LETTER
|
||||
echo "" >> $LETTER
|
||||
cp $LETTER $SUMMARY_FILE
|
||||
if [ "$SENDMAIL" = "TRUE" ] && [ "$BUILD_WATCH" ]
|
||||
then
|
||||
mailx -s"master_build for $FOCUS_DIR finished at `date`" $BUILD_WATCH < $LETTER
|
||||
fi
|
||||
rm -f $LETTER
|
||||
fi # COMPILE || DOLINT
|
||||
|
||||
if [ "$DOBINSTALL" ];then
|
||||
echo "Running make binstall on \"$OBJ_DIR\"."
|
||||
if [ "$BINSTALL_PATH" ];then
|
||||
BINSTALL="make $IGNORE BINSTALLPATH=$BINSTALL_PATH binstall";
|
||||
else
|
||||
BINSTALL="make $IGNORE binstall";
|
||||
fi
|
||||
cd $OBJ_DIR && $BINSTALL 1>$BINSTALL_LOG 2>&1
|
||||
if [ "$DOCLEANBINSTALL" ];then
|
||||
echo "Running clean binstall on \"$CLEANBINSTALLPATH\""
|
||||
$CLEANBINSTALL $CLEANBINSTALLPATH $LATESTDIR $NUMBINSTALLDIRSLEFT 1>$CLEANBINSTALL_LOG 2>&1
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
#! /usr/local/bin/perl
|
||||
|
||||
eval "exec /usr/local/bin/perl -S $0 $*"
|
||||
if $running_under_some_shell;
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# File: mkPreviousLink
|
||||
# RCS: $XConsortium: mkPreviousLink /main/3 1995/10/30 13:44:16 rswiston $
|
||||
# Author: John Herberg
|
||||
# Created: 4/13/94
|
||||
# Language: perl
|
||||
# Package:
|
||||
# Status
|
||||
#
|
||||
# (c) Copyright 1994, Hewlett-Packard, all rights reserved.
|
||||
#
|
||||
# Usage: mkPreviousLink <directory>
|
||||
#
|
||||
# Description: Copies latest link in directory to previous.
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
###############################################################################
|
||||
# printUsage - print sytax of script and die
|
||||
###############################################################################
|
||||
|
||||
sub printUsage
|
||||
{
|
||||
die "Usage: mkPreviousLink <binstallpath>\n";
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
### Start main
|
||||
###
|
||||
|
||||
&printUsage() if ((@ARGV != 1) || ($ARGV[0] =~ /^-/o));
|
||||
|
||||
$tree=$ARGV[0];
|
||||
$_ = "$tree/latest";
|
||||
|
||||
### Resolve link
|
||||
|
||||
( -l ) || die "*** Error: $_ is not a symbolic link\n";
|
||||
defined($ldest = readlink) || die "*** Error: Failed to resolve link, $_ $ldest\n";
|
||||
|
||||
### Create "previous" link
|
||||
|
||||
chdir($tree) || die "*** Error: Failed to change directory to $tree\n";
|
||||
unlink("previous");
|
||||
symlink($ldest, "previous") ||
|
||||
die "*** Error: Could not create link, $tree/previous -> $ldest\n";
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
#this script is set to provide access to remote builds and pass the
|
||||
# appropriate options to the remote machines
|
||||
# Marc Ayotte 2/5/90
|
||||
|
||||
USAGE="USAGE: remote_build <remotehost> [Remoteoptions ..]
|
||||
see master_build for details on options"
|
||||
|
||||
|
||||
|
||||
|
||||
if [ $# -lt 1 ];then
|
||||
echo ""
|
||||
echo "$USAGE"
|
||||
exit 1
|
||||
fi
|
||||
REMOTEHOST=$1
|
||||
shift
|
||||
|
||||
remsh $REMOTEHOST "/x/cdesrc/admin/BuildTools/master_build/master_build $*"
|
||||
@@ -0,0 +1,9 @@
|
||||
/* $XConsortium: README /main/2 1996/07/15 13:57:35 drk $ */
|
||||
This directory is for information for setup for a user or administrator's
|
||||
system.
|
||||
This is a readme for anything that goes in this directory.
|
||||
|
||||
perl.hp.tar.Z - 8/10/93 - the 9.0 hp perl package. untar in /.
|
||||
perl.ibm.tar.Z - 8/10/93 - the AIX 3.2 ibm perl package. untar in /.
|
||||
perl.sun.tar.Z - 01/18/94 - the SunOS 5.3 perl package. untar in /.
|
||||
installtools - setup script - DO NOT USE YET!!!
|
||||
Executable
+22
@@ -0,0 +1,22 @@
|
||||
#! /bin/ksh
|
||||
# This script checks to see if the system release is OK and the compiler
|
||||
# is OK on hpux.
|
||||
|
||||
RELEASE=`uname -r|fgrep '9.05' 2>/dev/null`
|
||||
|
||||
if [ ! "$RELEASE" ];then
|
||||
echo " System Release Incorrect. uname -r should be 9.05"
|
||||
echo " system is instead `uname -r`"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
COMPILER=`what /bin/c89 |fgrep '9.68' 2>/dev/null`
|
||||
|
||||
if [ ! "$COMPILER" ];then
|
||||
echo " Compiler version is Incorrect. It should be 9.68"
|
||||
echo " Instead it is:"
|
||||
what /bin/c89
|
||||
echo ""
|
||||
fi
|
||||
|
||||
|
||||
Executable
+144
@@ -0,0 +1,144 @@
|
||||
#!/bin/ksh
|
||||
#set -x
|
||||
######################################################################
|
||||
# check to see if the system release is OK and build environments are OK
|
||||
# on an AIX build box
|
||||
# Yanling Qi (yanling@austin.ibm.com) (512-838-2846)
|
||||
######################################################################
|
||||
#
|
||||
Lslpp()
|
||||
{
|
||||
/bin/lslpp -lc $1|grep "usr"|grep -v "AVAILABLE"
|
||||
}
|
||||
#
|
||||
# (1) check oslevel
|
||||
#
|
||||
OSLEVEL=$(/bin/oslevel |fgrep '3250')
|
||||
print "\nCheck OS level......"
|
||||
if [ "XX$OSLEVEL" = "XX" ]; then
|
||||
echo " System Release Incorrect. /bin/oslevel should be 3250"
|
||||
echo " system is instead `/bin/oslevel`"
|
||||
echo ""
|
||||
else
|
||||
echo " Check oslevel Passed"
|
||||
fi
|
||||
#
|
||||
# (2) check basic operating system package (/usr/bin /usr/lpp and some
|
||||
# /usr/lib /usr/bin/ld
|
||||
#
|
||||
print "\nCheck basic operating system package......"
|
||||
Lslpp bos.obj |awk -F: '{
|
||||
if ($1 ~ "usr")
|
||||
{
|
||||
if($2 == "bos.obj 03.02.00.00" && ($3 == "COMMITTED" || $3 == "APPLIED"))
|
||||
printf(" Check base Operating System Package: Passed\n");
|
||||
else {
|
||||
printf("Package should be: bos.obj 03.02.00.00\n")
|
||||
printf(" yours is: %s\n",$0);
|
||||
}
|
||||
}
|
||||
else # missing this package
|
||||
printf("Package bos.obj 03.02.00.00 is missing\n")
|
||||
}'
|
||||
|
||||
#
|
||||
# (3) Check C++ compliler
|
||||
print "\nCheck C++ compliler......"
|
||||
Lslpp xlCcmp.obj |awk -F: '{
|
||||
if ($1 ~ "usr")
|
||||
if($2 == "xlCcmp.obj 01.01.02.29" && ($3 == "COMMITTED" || $3 == "APPLIED"))
|
||||
printf(" Check AIX XL C++ Compiler/6000 Package: Passed\n");
|
||||
else{
|
||||
printf(" Package should be xlCcmp.obj 01.01.02.29\n")
|
||||
printf(" yours is: %s\n",$0);
|
||||
|
||||
}
|
||||
else # missing this package
|
||||
printf("Package xlCcmp.obj 01.01.02.29 is missing\n");
|
||||
}'
|
||||
#
|
||||
# (4) check C++ lib /usr/lpp/xlC/lib/libC.a
|
||||
# /usr/lpp/xlC/lib/profiled/libC.a
|
||||
|
||||
#
|
||||
print "\nCheck C++ lib......"
|
||||
Lslpp xlCrte.obj|awk -F: '{
|
||||
if ($1 ~ "usr")
|
||||
if($2 == "xlCrte.obj 01.01.02.29" && ($3 == "COMMITTED" || $3 == "APPLIED"))
|
||||
printf(" Check AIX XL C++ Compiler/6000 Runtime Package: Passed\n");
|
||||
else{
|
||||
printf(" Package should be xlCrte.obj 01.01.02.29\n")
|
||||
printf(" yours is: %s\n",$0);
|
||||
|
||||
}
|
||||
else # missing this package
|
||||
printf("Package xlCrte.obj 01.01.02.29 is missing\n");
|
||||
}'
|
||||
#
|
||||
# (5) check c compliler
|
||||
#
|
||||
print "\nCheck xl c compiler......"
|
||||
Lslpp xlccmp.obj |awk -F: '{
|
||||
if ($1 ~ "usr")
|
||||
if($2 == "xlccmp.obj 01.03.00.12" && ($3 == "COMMITTED" || $3 == "APPLIED"))
|
||||
printf(" Check AIX XL C Compiler Package: Passed\n");
|
||||
else{
|
||||
printf(" Package should be xlccmp.obj 01.03.00.12\n")
|
||||
printf(" yours is: %s\n",$0);
|
||||
|
||||
}
|
||||
else # missing this package
|
||||
printf("Package xlccmp.obj 01.03.00.12 is missing\n");
|
||||
}'
|
||||
#
|
||||
# (6) check Base Application Development Toolkit
|
||||
# cpp lex yacc
|
||||
#
|
||||
print "\nCheck Base Application Development Toolkit......"
|
||||
Lslpp bosadt.bosadt.obj |awk -F: '{
|
||||
if ($1 ~ "usr")
|
||||
if($2 == "bosadt.bosadt.obj 03.02.00.00" && ($3 == "COMMITTED" || $3 == "APPLIED"))
|
||||
printf(" Check Base Application Development Toolkit Package: Passed\n");
|
||||
else{
|
||||
printf(" Package should be bosadt.bosadt.obj 03.02.00.00\n")
|
||||
printf(" yours is: %s\n",$0);
|
||||
|
||||
}
|
||||
else # missing this package
|
||||
printf("Package bosadt.bosadt.obj 03.02.00.00 is missing\n");
|
||||
}'
|
||||
#
|
||||
# (7) check Base Development Libraries & Include files
|
||||
# cpp lex yacc
|
||||
#
|
||||
print "\nCheck Base Development Libraries & Include files......"
|
||||
Lslpp bosadt.lib.obj |awk -F: '{
|
||||
if ($1 ~ "usr")
|
||||
if($2 == "bosadt.lib.obj 03.02.00.00" && ($3 == "COMMITTED" || $3 == "APPLIED"))
|
||||
printf(" Check Base Development Libraries & Include files Package: Passed\n");
|
||||
else{
|
||||
printf(" Package should be bosadt.lib.obj 03.02.00.00\n")
|
||||
printf(" yours is: %s\n",$0);
|
||||
|
||||
}
|
||||
else # missing this package
|
||||
printf("Package bosadt.lib.obj 03.02.00.00 is missing\n");
|
||||
}'
|
||||
|
||||
#
|
||||
# (8) check X Development Libraries and Include Files
|
||||
#
|
||||
#
|
||||
print "\nCheck X Development Libraries and Include Files......"
|
||||
Lslpp X11dev.obj |awk -F: '{
|
||||
if ($1 ~ "usr")
|
||||
if($2 == "X11dev.obj 01.02.03.00" && ($3 == "COMMITTED" || $3 == "APPLIED"))
|
||||
printf(" Check X Development Libraries and Include Files Package: Passed\n");
|
||||
else{
|
||||
printf(" Package should be X11dev.obj 01.02.03.00\n")
|
||||
printf(" yours is: %s\n",$0);
|
||||
|
||||
}
|
||||
else # missing this package
|
||||
printf("Package X11dev.obj 01.02.03.00 is missing\n");
|
||||
}'
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
+158
@@ -0,0 +1,158 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# build_id
|
||||
#
|
||||
########################################################################
|
||||
# set -x
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
PROG_NAME="$0"
|
||||
LOG_DIR="/project/dt/admin/mkid"
|
||||
LOG_FILE="cdeID"
|
||||
LOG_PATH=""
|
||||
|
||||
DO_X_BUILD="False"
|
||||
DO_MOTIF_BUILD="False"
|
||||
DO_CDE_BUILD="False"
|
||||
DO_CDEDOC_BUILD="False"
|
||||
DO_CDETEST_BUILD="False"
|
||||
|
||||
DO_DEBUG="False"
|
||||
|
||||
##########################################################################
|
||||
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $1
|
||||
[-e | -dev] # Default: build x11, motif and cde
|
||||
[-x | -x11] # Build x11 only
|
||||
[-m | -motif] # Build motif only
|
||||
[-c | -cde] # Build cde only
|
||||
[-t | -cdetest] # Build cde tests only
|
||||
[-a | -all] # Build x11, motif, cde, cdedoc and cdetest
|
||||
[-debug] # Debugging output
|
||||
[{-ld | -log_dir} <dirpath>]
|
||||
# Specify an alternate log directory.
|
||||
# Default: $LOG_DIR
|
||||
[{-lf | -log_file} <filename>]
|
||||
# Specify an alternate log file relative to $LOG_DIR.
|
||||
# Default: $LOG_FILE
|
||||
[{-lp | -log_path} <path>]
|
||||
# Specify an alternate log directory.
|
||||
# Default: $LOG_DIR/$LOG_FILE
|
||||
[-h | -? | -help] # Print usage and exit
|
||||
eof
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
-e | -dev) DO_X_BUILD="True"
|
||||
DO_MOTIF_BUILD="True"
|
||||
DO_CDE_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-x | -x11) DO_X_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-m | -motif) DO_MOTIF_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-c | -cde) DO_CDE_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-t | -cdetest) DO_CDETEST_BUILD="True";
|
||||
shift 1 ;;
|
||||
|
||||
-a | -all) DO_X_BUILD="True"
|
||||
DO_MOTIF_BUILD="True"
|
||||
DO_CDE_BUILD="True"
|
||||
DO_CDEDOC_BUILD="True"
|
||||
DO_CDETEST_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-debug) DO_DEBUG="True"
|
||||
shift 1 ;;
|
||||
|
||||
-ld | -log_dir) LOG_DIR=$2; shift 2 ;;
|
||||
|
||||
-lf | -log_file) LOG_FILE=$2; shift 2 ;;
|
||||
|
||||
-lp | -log_path) LOG_PATH=$2; shift 2 ;;
|
||||
|
||||
-h | "-?" | -help | *) usage $PROG_NAME;
|
||||
exit 1;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: Do this after the command line parsing to pick up
|
||||
# an alternate setting of SCRIPTS_DIR
|
||||
#
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# If no project was selected, then build the 'dev' projects
|
||||
#
|
||||
PROJECTS=""
|
||||
if [ "True" = $DO_X_BUILD ]; then
|
||||
PROJECTS="$PROJECTS $X_TOP"
|
||||
fi
|
||||
|
||||
if [ "True" = $DO_MOTIF_BUILD ]; then
|
||||
PROJECTS="$PROJECTS $MOTIF_TOP"
|
||||
fi
|
||||
|
||||
if [ "True" = $DO_CDE_BUILD ]; then
|
||||
PROJECTS="$PROJECTS $CDE_TOP"
|
||||
fi
|
||||
|
||||
if [ "True" = $DO_CDETEST_BUILD ]; then
|
||||
PROJECTS="$PROJECTS $CDETEST_TOP"
|
||||
fi
|
||||
|
||||
if [ -z "$PROJECTS" ]; then
|
||||
PROJECTS="$X_TOP $MOTIF_TOP $CDE_TOP"
|
||||
fi
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Set the log path
|
||||
#
|
||||
if [ -z "$LOG_PATH" ]; then
|
||||
LOG_PATH=$LOG_DIR/$LOG_PATH
|
||||
fi
|
||||
|
||||
/usr/local/bin/mkid -o$LOG_PATH $PROJECTS
|
||||
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
do_exit 0
|
||||
Executable
+207
@@ -0,0 +1,207 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# build_project
|
||||
#
|
||||
########################################################################
|
||||
# set -x
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup:
|
||||
#
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
PROG_NAME=$0
|
||||
CDETEST_BUILD_COMMAND=$CDETEST_TOP/admin/BuildTools/master_build/test_build
|
||||
BOOTSTRAPCFLAGS='BOOTSTRAPCFLAGS=""'
|
||||
PROJECT=""
|
||||
BUILD_TYPE="inc"
|
||||
LOG_DIR="/tmp"
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# usage -
|
||||
#
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $1
|
||||
{-p | -project} {x11 | motif | cde | cdedoc | cde-test}
|
||||
[-c | -clean] # Do a clean build; the default is incremental
|
||||
[{-t | -top} <dir>]
|
||||
[{-l | -log_dir} <dir>] # Only used with project cde-test
|
||||
# Default TOP for x11 is '$X_TOP'.
|
||||
# Default TOP for motif is '$MOTIF_TOP'.
|
||||
# Default TOP for cde is '$CDE_TOP'.
|
||||
# Default TOP for cdedoc is '$CDEDOC_TOP'.
|
||||
# Default TOP for cde-test is '$CDETEST_TOP'.
|
||||
[-h | -? | -help] # Print usage and exit
|
||||
eof
|
||||
}
|
||||
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# Parse command line
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
-p | -project) PROJECT=$2; shift 2 ;;
|
||||
-c | -clean) BUILD_TYPE="clean"; shift 1 ;;
|
||||
-t | -top) TOP=$2; shift 2 ;;
|
||||
-l | -log_dir) LOG_DIR=$2; shift 2 ;;
|
||||
-h | -? | -help | *) usage $PROG_NAME;
|
||||
exit 1;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "" = "$PROJECT" ]; then
|
||||
usage $PROG_NAME
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# Define OS-specific variables
|
||||
#
|
||||
case "`uname -s`" in
|
||||
|
||||
SunOS) if [ "4.1.4" = "`uname -r`" ]; then
|
||||
export PATH=$PATH:/usr/local/bin
|
||||
else
|
||||
export PATH=/opt/SUNWspro/bin:/usr/ccs/bin:$PATH:/usr/local/bin
|
||||
export LM_LICENSE_FILE=/opt/SUNWspro/license_dir/license.dat
|
||||
fi
|
||||
;;
|
||||
|
||||
UNIX_System_V) BOOTSTRAPCFLAGS="BOOTSTRAPCFLAGS=-D__uxp__"
|
||||
export PATH=/usr/ccs/bin:$PATH:/usr/local/bin
|
||||
print -u1 "$PROG_NAME: Setting $BOOTSTRAPCFLAGS" ;;
|
||||
|
||||
UNIX_SV) export PATH=$PATH:/usr/local/bin
|
||||
print -u1 "$PROG_NAME: Setting $BOOTSTRAPCFLAGS" ;;
|
||||
|
||||
IRIX) export PATH=$PATH:/usr/sbin ;;
|
||||
|
||||
HP-UX) export PATH=$PATH:/usr/ccs/bin ;;
|
||||
|
||||
Linux) export PATH=$PATH:/usr/bin:/usr/local/bin ;;
|
||||
|
||||
*) export PATH=$PATH:/usr/local/bin ;;
|
||||
esac
|
||||
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# Set the cwd
|
||||
#
|
||||
if [ "" = "$TOP" ]; then
|
||||
case $PROJECT in
|
||||
x | x11) cd $X_TOP ;;
|
||||
|
||||
motif) cd $MOTIF_TOP ;;
|
||||
|
||||
cde) cd $CDE_TOP ;;
|
||||
|
||||
cdedoc) cd $CDEDOC_TOP ;;
|
||||
|
||||
cde-test) cd $CDETEST_TOP ;;
|
||||
|
||||
*) print -u2 "Exiting ... Project '$PROJECT' is NOT supported!"
|
||||
exit 1
|
||||
esac
|
||||
else
|
||||
cd $TOP
|
||||
fi
|
||||
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# Audits
|
||||
#
|
||||
if [ $PROJECT != "cde-test" -a ! -f Makefile ]; then
|
||||
print -u2 "Exiting ... No Makefile is in the '`pwd`' directory!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# Run the build script
|
||||
#
|
||||
case $BUILD_TYPE in
|
||||
|
||||
clean)
|
||||
case $PROJECT in
|
||||
x | x11 | motif)
|
||||
TARGET=World ;;
|
||||
cde)
|
||||
TARGET=World.dev ;;
|
||||
cdedoc)
|
||||
TARGET=World.doc ;;
|
||||
cde-test)
|
||||
FLAGS="-c -w" ;;
|
||||
esac
|
||||
;;
|
||||
|
||||
inc)
|
||||
case $PROJECT in
|
||||
x | x11 | motif)
|
||||
TARGET=Everything ;;
|
||||
cde)
|
||||
TARGET=Everything.dev ;;
|
||||
cdedoc)
|
||||
TARGET=Everything.doc ;;
|
||||
cde-test)
|
||||
FLAGS=-c ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
case $PROJECT in
|
||||
|
||||
x | x11 | motif | cde | cdedoc)
|
||||
case "`uname -s`" in
|
||||
UNIX_SV)
|
||||
if [ "" = "$TOP" ]; then
|
||||
make -k BOOTSTRAPCFLAGS="-DSVR4 -Di386" $TARGET
|
||||
else
|
||||
make -k BOOTSTRAPCFLAGS="-DSVR4 -Di386" $TARGET TOP=$TOP
|
||||
fi
|
||||
;;
|
||||
Linux)
|
||||
if [ "" = "$TOP" ]; then
|
||||
make -k $TARGET
|
||||
else
|
||||
make -k $TARGET TOP=$TOP
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if [ "" = "$TOP" ]; then
|
||||
make -k "$BOOTSTRAPCFLAGS" $TARGET
|
||||
else
|
||||
make -k "$BOOTSTRAPCFLAGS" $TARGET TOP=$TOP
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
cde-test)
|
||||
$CDETEST_BUILD_COMMAND -build $CDETEST_TOP $FLAGS -log $LOG_DIR ;;
|
||||
esac
|
||||
Executable
+751
@@ -0,0 +1,751 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# build_summary
|
||||
#
|
||||
########################################################################
|
||||
#set -x
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
PROG_NAME="`basename $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PROG_NAME: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PROG_NAME: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
|
||||
COMPONENTS_FILES=""
|
||||
COMPONENTS="all"
|
||||
DEBUG="False"
|
||||
SUMMARY_FILES=""
|
||||
NOT_DONE_SUMMARY_FILES=""
|
||||
PRINT_ERRORS="5"
|
||||
|
||||
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $PROG_NAME
|
||||
[{-c | -components_file} <file>]
|
||||
# Specifies a file containing a list of components to
|
||||
# be extracted. Multiple -c flags can be specified.
|
||||
[{-e | -errors} <number>]
|
||||
# Specifies the number of errors shown for each
|
||||
# component in the components files. Defaults to all.
|
||||
[-h | -? | -help]
|
||||
# Print usage and exit
|
||||
[{-l | -log_path} <path>]
|
||||
[{-m | -mail | -mail_list} <user_name(s)>]
|
||||
[{-pn | -project_name} <project_name>]
|
||||
# The default is CDE. This impacts the Subject field
|
||||
# when email is sent. Use "-pn X11" to get "X11" in
|
||||
# the Subject field.
|
||||
{-s | -summary_file} <file>
|
||||
# Specifies a summary report from a build_world.
|
||||
# $PROG_NAME accepts multiple -f flags.
|
||||
eof
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# FUNCTION: is_complete_build <summary_file>
|
||||
#
|
||||
# Returns 0 if the build is complete.
|
||||
# Returns 1 if the build is not complete
|
||||
#
|
||||
is_complete_build ()
|
||||
{
|
||||
typeset SUMMARY_FILE LCMPL
|
||||
|
||||
SUMMARY_FILE=$1
|
||||
|
||||
LCMPL=`grep "$BTAG_CMPL" $SUMMARY_FILE | tail -1`
|
||||
if [ -z "$LCMPL" ]; then
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# FUNCTION: print_build_start_end ()
|
||||
#
|
||||
# ViewName StartTime BuildStatus
|
||||
# -------- --------- -----------
|
||||
# cde-dec STARTED: Sun Jan 16, 23:34 FINISHED: Mon Jan 17, 23:34
|
||||
# cde-hp STARTED: Sun Jan 16, 23:34 BUILDING: making all in ...
|
||||
# cde-ibm STARTED: Sun Jan 16, 23:34 FINISHED: Mon Jan 17, 23:34
|
||||
# cde-sco STARTED: Sun Jan 16, 23:34 FINISHED: Mon Jan 17, 23:34
|
||||
# cde-sgi STARTED: Sun Jan 16, 23:34 FINISHED: Mon Jan 17, 23:34
|
||||
# cde-sun STARTED: Sun Jan 16, 23:34 FINISHED: Mon Jan 17, 23:34
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
print_build_start_end ()
|
||||
{
|
||||
typeset CMPL LOGD PRJT DATE VIEW
|
||||
typeset AWK_START_END_SUMMARY
|
||||
|
||||
AWK_START_END_SUMMARY='{printf("%-12s %-28s %-28s\n", $1,$2,$3)}'
|
||||
|
||||
echo "ViewName StartTime BuildStatus" | awk "$AWK_START_END_SUMMARY"
|
||||
echo "-------- --------- -----------" | awk "$AWK_START_END_SUMMARY"
|
||||
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
VIEW=`grep "$BTAG_VIEW" $r | head -1 | awk '{printf("%s", $NF)}'`
|
||||
DATE=`grep "$BTAG_DATE" $r | head -1 | awk '{printf("%s", $NF)}' FS=+`
|
||||
|
||||
is_complete_build $r
|
||||
if [ $? -eq 0 ]; then
|
||||
CMPL=`grep "$BTAG_CMPL" $r | tail -1 |
|
||||
awk '{printf("%s", $NF)}' FS=+`
|
||||
echo "$VIEW|STARTED: $DATE|FINISHED: $CMPL" | \
|
||||
awk "$AWK_START_END_SUMMARY" FS="|"
|
||||
else
|
||||
LOGD=`grep "$BTAG_LOGD" $r | head -1 | awk '{printf("%s", $NF)}'`
|
||||
PRJT=`grep "$BTAG_PRJT" $r | tail -1 | awk '{printf("%s", $NF)}'`
|
||||
LOGF=$LOGD/$PRJT.log
|
||||
if [ -f $LOGF ]; then
|
||||
CMPL=`$EXTRACT_MSG -m $BUILD_MSGS -l $LOGF | tail -1`
|
||||
else
|
||||
CMPL=""
|
||||
fi
|
||||
echo "$VIEW|STARTED: $DATE|BUILDING: $CMPL" | \
|
||||
awk "$AWK_START_END_SUMMARY" FS="|"
|
||||
fi
|
||||
|
||||
done
|
||||
print -u1
|
||||
}
|
||||
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# FUNCTION: print_build_parameters ()
|
||||
#
|
||||
# ViewName Type ConfigSpec Platfm Projects
|
||||
# -------- ---- ---------- ------ --------
|
||||
# cde-dec clean cde-next.cs dec x11,motif,cde
|
||||
# cde-hp clean cde-next.cs hp x11,motif,cde
|
||||
# cde-ibm clean cde-next.cs ibm x11,motif,cde
|
||||
# cde-sco clean cde-next.cs sco x11,motif,cde
|
||||
# cde-sgi clean cde-next.cs sgi x11,motif,cde
|
||||
# cde-sun clean cde-next.cs sun x11,motif,cde
|
||||
#
|
||||
# ViewName LogDirectory
|
||||
# -------- ------------
|
||||
# cde-dec /project/dt/logs/build/cde-dec/LATEST -> ./Jan.17.12:24:36
|
||||
# cde-hp /project/dt/logs/build/cde-hp/LATEST -> ./Jan.17.12:24:36
|
||||
# cde-ibm /project/dt/logs/build/cde-ibm/LATEST -> ./Jan.17.12:24:36
|
||||
# cde-sco /project/dt/logs/build/cde-sco/LATEST -> ./Jan.17.12:24:36
|
||||
# cde-sgi /project/dt/logs/build/cde-sgi/LATEST -> ./Jan.17.12:24:36
|
||||
# cde-sun /project/dt/logs/build/cde-sun/LATEST -> ./Jan.17.12:24:36
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
print_build_parameters ()
|
||||
{
|
||||
typeset CMPL CSPS LOGD PRJT PTFM STRT TYPE VIEW
|
||||
typeset AWK_LOG_SUMMARY AWK_BUILD_SUMMARY
|
||||
|
||||
AWK_LOG_SUMMARY='{printf("%-12s %-48s\n", $1,$2)}'
|
||||
AWK_BUILD_SUMMARY='{printf("%-12s %-6s %-16s %-14s %-16s\n",$1,$2,$3,$4,$5)}'
|
||||
|
||||
#
|
||||
# Section 1: Type/ConfigSpec/Platform/Projects
|
||||
#
|
||||
echo "ViewName Type ConfigSpec Platfm Projects" | awk "$AWK_BUILD_SUMMARY"
|
||||
echo "-------- ---- ---------- ------ --------" | awk "$AWK_BUILD_SUMMARY"
|
||||
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
CSPC=`grep "$BTAG_CFGS" $r | head -1 | awk '{printf("%s", $NF)}'`
|
||||
PRJT=`grep "$BTAG_PRJT" $r | awk '{printf("%s ", $NF)}'`
|
||||
PTFM=`grep "$BTAG_PTFM" $r | head -1 | awk '{printf("%s", $NF)}'`
|
||||
TYPE=`grep "$BTAG_TYPE" $r | head -1 | awk '{printf("%s", $NF)}'`
|
||||
if [ "incremental" = "$TYPE" ]; then
|
||||
TYPE="incrmt"
|
||||
fi
|
||||
VIEW=`grep "$BTAG_VIEW" $r | head -1 | awk '{printf("%s", $NF)}'`
|
||||
|
||||
echo "$VIEW|$TYPE|$CSPC|$PTFM|$PRJT" | awk "$AWK_BUILD_SUMMARY" FS="|"
|
||||
done
|
||||
print -u1
|
||||
|
||||
#
|
||||
# Section 2: LogDirectory
|
||||
#
|
||||
echo "ViewName LogDirectory" | awk "$AWK_LOG_SUMMARY"
|
||||
echo "-------- ------------" | awk "$AWK_LOG_SUMMARY"
|
||||
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
LOGD=`grep "$BTAG_LOGD" $r | head -1 | awk '{printf("%s", $NF)}'`
|
||||
if [ -L $LOGD ]; then
|
||||
LOGD=`ls -l $LOGD | awk '{printf("%s %s %s", $9, $10, $11)}'`
|
||||
fi
|
||||
VIEW=`grep "$BTAG_VIEW" $r | head -1 | awk '{printf("%s", $NF)}'`
|
||||
|
||||
echo "$VIEW|$LOGD" | awk "$AWK_LOG_SUMMARY" FS="|"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# FUNCTION: print_error_and_warning_summaries_by_project ()
|
||||
#
|
||||
#
|
||||
# Project x11 motif cde cdedoc cde-test
|
||||
# ViewName Errrs Warns Errrs Warns Errrs Warns Errrs Warns Errrs Warns
|
||||
# -------- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
|
||||
# build-dec-cde 0 0 0 0 0 554 DNR DNR DNR DNR
|
||||
# build-hp-cde 0 0 0 0 0 554 DNR DNR DNR DNR
|
||||
# build-ibm-cde 0 0 0 0 0 554 DNR DNR DNR DNR
|
||||
# build-sco-cde 0 0 0 0 0 554 DNR DNR DNR DNR
|
||||
# build-sgi-cde 0 0 0 0 DNR DNR DNR DNR DNR DNR
|
||||
# build-sun-cde 0 0 0 0 0 554 DNR DNR DNR DNR
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
print_error_and_warning_summaries_by_project ()
|
||||
{
|
||||
BLANKS=" "
|
||||
PROJ_CDE="cde"
|
||||
PROJ_CDD="cdedoc"
|
||||
PROJ_CDT="cde-test"
|
||||
PROJ_MTF="motif"
|
||||
PROJ_X11="x11"
|
||||
AWK_PROJ_HEADER='{printf("%-12s %-12s %-12s %-12s %-12s %-12s\n",$1,$2,$3,$4,$5,$6)}'
|
||||
AWK_PROJ_VIEWNAME='{printf("%-12s ", $1)}'
|
||||
AWK_PROJ_SUMMARY='{printf("%5s %5s ", $1, $2)}'
|
||||
|
||||
#
|
||||
# Print the header for this section
|
||||
#
|
||||
echo "Project $PROJ_X11 $PROJ_MTF $PROJ_CDE $PROJ_CDD $PROJ_CDT"|awk "$AWK_PROJ_HEADER"
|
||||
|
||||
echo "ViewName" | awk "$AWK_PROJ_VIEWNAME"
|
||||
for p in $PROJ_X11 $PROJ_MTF $PROJ_CDE $PROJ_CDD $PROJ_CDT
|
||||
do
|
||||
echo "Errrs Warns" | awk "$AWK_PROJ_SUMMARY"
|
||||
done
|
||||
print -u1
|
||||
|
||||
echo "--------" | awk "$AWK_PROJ_VIEWNAME"
|
||||
for p in $PROJ_X11 $PROJ_MTF $PROJ_CDE $PROJ_CDD $PROJ_CDT
|
||||
do
|
||||
echo "----- -----" | awk "$AWK_PROJ_SUMMARY"
|
||||
done
|
||||
print -u1
|
||||
|
||||
#
|
||||
# Print the error and warning summaries for each view.
|
||||
#
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
#
|
||||
# Print the view name.
|
||||
#
|
||||
VIEW=`grep "$BTAG_VIEW" $r | head -1 | awk '{printf("%s", $NF)}'`
|
||||
echo "$VIEW" | awk "$AWK_PROJ_VIEWNAME"
|
||||
|
||||
#
|
||||
# Print the error and warn totals for each project.
|
||||
#
|
||||
for p in $PROJ_X11 $PROJ_MTF $PROJ_CDE $PROJ_CDD $PROJ_CDT
|
||||
do
|
||||
ERRRS=`grep "^$p " $r | tail -1 | awk '{print $2}'`
|
||||
WARNS=`grep "^$p " $r | tail -1 | awk '{print $4}'`
|
||||
|
||||
if [ -z "$ERRRS" ] -a [ -z "$WARNS" ]
|
||||
then
|
||||
echo "DNR DNR" | awk "$AWK_PROJ_SUMMARY"
|
||||
else
|
||||
echo "$ERRRS $WARNS" | awk "$AWK_PROJ_SUMMARY"
|
||||
fi
|
||||
done
|
||||
|
||||
#
|
||||
# Print a newline.
|
||||
#
|
||||
print -u1
|
||||
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# FUNCTION: print_error_summaries_by_component ()
|
||||
#
|
||||
#
|
||||
# Component DEC HP IBM SCO SGI SUN
|
||||
# --------- ----- ----- ----- ----- ----- -----
|
||||
# cde/admin 0 0 0 0 0 5
|
||||
# cde/lib/DtHelp 5 3 1 0 0 0
|
||||
# cde/programs/dtwm 10 3 5 0 0 0
|
||||
#
|
||||
# cde-test/doc 133 22 1 0 45 0
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
print_error_summaries_by_component ()
|
||||
{
|
||||
AWK_COMP_NAME='{printf("%-32s ", $1)}'
|
||||
AWK_COMP_ERROR='{printf("%5s ", $1)}'
|
||||
|
||||
let num_errors=0
|
||||
|
||||
#
|
||||
# Find the per component errors.
|
||||
#
|
||||
for f in $COMPONENTS_FILES
|
||||
do
|
||||
|
||||
#
|
||||
# Extract the project name from the name of the components file.
|
||||
# Assumes the components files are named <project>.components.
|
||||
#
|
||||
p=`basename $f | awk '{ print $1 }' FS='.'`
|
||||
|
||||
for c in `cat $f`
|
||||
do
|
||||
#
|
||||
# Collect the errors for the current component from the report
|
||||
# summary files and put them in an array.
|
||||
#
|
||||
let i=0
|
||||
FOUND="False"
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
ERRORS[i]=`grep "$p/$c " $r | tail -1 | awk '{print $2}'`
|
||||
|
||||
#
|
||||
# The search may have succeeded but the component may
|
||||
# only have warnings and no errors. If this is true,
|
||||
# then this component should not be added to the error
|
||||
# list
|
||||
#
|
||||
if [ ! -z "`echo ${ERRORS[i]}`" ]; then
|
||||
if [ "`echo ${ERRORS[i]}`" != "0" ]; then
|
||||
FOUND="True"
|
||||
fi
|
||||
fi
|
||||
|
||||
let i=i+1
|
||||
done
|
||||
|
||||
#
|
||||
# If the component doesn't show up anywhere ignore it.
|
||||
#
|
||||
if [ -z "`echo ${ERRORS[*]}`" -o "False" = "$FOUND" ]
|
||||
then
|
||||
continue
|
||||
fi
|
||||
|
||||
let num_errors=num_errors+1
|
||||
|
||||
if [ num_errors -eq 1 ]; then
|
||||
#
|
||||
# Print the header for this section
|
||||
#
|
||||
echo "Component" | awk "$AWK_COMP_NAME"
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
PTFM=`grep "$BTAG_PTFM" $r | head -1 | awk '{printf("%s", $NF)}'`
|
||||
echo "$PTFM" | awk "$AWK_COMP_ERROR"
|
||||
done
|
||||
print -u1
|
||||
|
||||
echo "---------" | awk "$AWK_COMP_NAME"
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
echo "-----" | awk "$AWK_COMP_ERROR"
|
||||
done
|
||||
print -u1
|
||||
fi
|
||||
|
||||
#
|
||||
# Print the component name including the project it belongs to.
|
||||
#
|
||||
echo "$p/$c" | awk "$AWK_COMP_NAME"
|
||||
|
||||
#
|
||||
# Print the errors for this component.
|
||||
#
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
ERRRS=`grep "$p/$c " $r | tail -1 | awk '{print $2}'`
|
||||
if [ -z "$ERRRS" ]
|
||||
then
|
||||
is_complete_build $r
|
||||
if [ $? -eq 0 ]; then
|
||||
ERRRS="0"
|
||||
else
|
||||
ERRRS="DNR"
|
||||
fi
|
||||
fi
|
||||
echo "$ERRRS" | awk "$AWK_COMP_ERROR"
|
||||
done
|
||||
|
||||
#
|
||||
# Print a newline.
|
||||
#
|
||||
print -u1
|
||||
done
|
||||
done
|
||||
|
||||
if [ $num_errors -eq 0 ]; then
|
||||
print -u1 "NO errors were found."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# FUNCTION: print_error_listings_by_component ()
|
||||
#
|
||||
# -------------------------------------------------------------------
|
||||
# - <component-name>
|
||||
# -------------------------------------------------------------------
|
||||
# make all in <component-name>...
|
||||
# error 1
|
||||
# error 2
|
||||
# make all in <component-name>/subdir...
|
||||
# error 3
|
||||
# error 4
|
||||
#
|
||||
###############################################################################
|
||||
print_error_listings_by_component ()
|
||||
{
|
||||
let num_errors=0
|
||||
|
||||
for f in $COMPONENTS_FILES
|
||||
do
|
||||
|
||||
#
|
||||
# Extract the project name from the name of the components file.
|
||||
# Assumes the components files are named <project>.components.
|
||||
#
|
||||
p=`basename $f | awk '{ print $1 }' FS='.'`
|
||||
|
||||
for c in `cat $f`
|
||||
do
|
||||
#
|
||||
# Collect the errors for the current component from the
|
||||
# report summary files and put them in an array.
|
||||
#
|
||||
let i=0
|
||||
FOUND="False"
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
ERRORS[i]=`grep "$p/$c " $r | tail -1 | awk '{print $2}'`
|
||||
|
||||
#
|
||||
# The search may have succeeded but the component may
|
||||
# only have warnings and no errors. If this is true,
|
||||
# then this component should not be added to the error
|
||||
# list
|
||||
#
|
||||
if [ ! -z "`echo ${ERRORS[i]}`" ]; then
|
||||
if [ "`echo ${ERRORS[i]}`" != "0" ]; then
|
||||
FOUND="True"
|
||||
fi
|
||||
fi
|
||||
|
||||
let i=i+1
|
||||
done
|
||||
|
||||
#
|
||||
# If the component doesn't show up anywhere ignore it.
|
||||
#
|
||||
if [ -z "`echo ${ERRORS[*]}`" -o "False" = "$FOUND" ]
|
||||
then
|
||||
continue
|
||||
fi
|
||||
|
||||
let num_errors=num_errors+1
|
||||
|
||||
#
|
||||
# Print the component name including the project it belongs to.
|
||||
#
|
||||
COMP=`echo $c | tr "/" ","`
|
||||
print -u1 "+++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||
print -u1 "+ COMPONENT: $p/$COMP"
|
||||
print -u1 "+++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||
print -u1
|
||||
|
||||
|
||||
#
|
||||
# Print the errors for this component.
|
||||
#
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
LOGD=`grep "$BTAG_LOGD" $r | head -1 |
|
||||
awk '{printf("%s", $NF)}'`
|
||||
VIEW=`grep "$BTAG_VIEW" $r | head -1 |
|
||||
awk '{printf("%s", $NF)}'`
|
||||
|
||||
ERR_FILE=$LOGD/$p/$COMP.err
|
||||
if [ -f "$ERR_FILE" ]
|
||||
then
|
||||
print -u1 "+"
|
||||
print -u1 "+ View: $VIEW"
|
||||
print -u1 "+ Error File: $ERR_FILE"
|
||||
print -u1 "+"
|
||||
print -u1
|
||||
head -$PRINT_ERRORS $ERR_FILE
|
||||
print -u1
|
||||
fi
|
||||
done
|
||||
|
||||
#
|
||||
# Print a newline.
|
||||
#
|
||||
print -u1
|
||||
done
|
||||
done
|
||||
|
||||
if [ num_errors -eq 0 ]; then
|
||||
print -u1 "NO errors were found."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
# Do command-line processing
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
|
||||
-debug)
|
||||
DEBUG="True"
|
||||
shift 1 ;;
|
||||
|
||||
-c | -components_file)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
COMPONENTS_FILES="$COMPONENTS_FILES $2"
|
||||
shift 2 ;;
|
||||
|
||||
-e | -errors)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
PRINT_ERRORS="$2"
|
||||
shift 2 ;;
|
||||
|
||||
-h | "-?" | -help)
|
||||
usage $PROG_NAME
|
||||
do_exit 1 ;;
|
||||
|
||||
-l | -log_path )
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
LOG_PATH=$2
|
||||
shift 2 ;;
|
||||
|
||||
-m | -mail | -mail_list)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
MAIL_LIST=$2
|
||||
shift 2 ;;
|
||||
|
||||
-pn | -project_name)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
# Change the value of SUBJECT_BUILD_SUMMARY
|
||||
SUBJECT_BUILD_SUMMARY="${2}: Build Summary"
|
||||
shift 2 ;;
|
||||
|
||||
-s | -summary_file)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
SUMMARY_FILES="$SUMMARY_FILES $2"
|
||||
shift 2 ;;
|
||||
|
||||
*)
|
||||
print -u2 "$PROG_NAME: invalid option $1; exiting ..."
|
||||
do_exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
# Check to make sure that the command-line parameters make sense.
|
||||
#
|
||||
for f in $COMPONENTS_FILES
|
||||
do
|
||||
if [ ! -f $f ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Component file \"$f\" does not exist."
|
||||
print -u2 "$PROG_NAME: exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$SUMMARY_FILES" ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: No report summaries specified; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
# Determine which builds never started or never completed.
|
||||
#
|
||||
NOT_AVAILABLE_SUMMARY_FILES=""
|
||||
AVAILABLE_SUMMARY_FILES=""
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
if [ ! -f $r ]; then
|
||||
if [ -z "$NOT_AVAILABLE_SUMMARY_FILES" ]; then
|
||||
NOT_AVAILABLE_SUMMARY_FILES="$r"
|
||||
else
|
||||
NOT_AVAILABLE_SUMMARY_FILES="$NOT_AVAILABLE_SUMMARY_FILES $r"
|
||||
fi
|
||||
else
|
||||
if [ -z "$AVAILABLE_SUMMARY_FILES" ]; then
|
||||
AVAILABLE_SUMMARY_FILES="$r"
|
||||
else
|
||||
AVAILABLE_SUMMARY_FILES="$AVAILABLE_SUMMARY_FILES $r"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
SUMMARY_FILES="$AVAILABLE_SUMMARY_FILES"
|
||||
|
||||
#
|
||||
# Redirect output
|
||||
#
|
||||
EXECUTIVE_SUMMARY_LOG=/tmp/$PROG_NAME.execsum.$$
|
||||
if [ "$DEBUG" = "False" ]; then
|
||||
do_register_temporary_file $EXECUTIVE_SUMMARY_LOG
|
||||
touch $EXECUTIVE_SUMMARY_LOG
|
||||
|
||||
exec 9>&1
|
||||
exec > $EXECUTIVE_SUMMARY_LOG
|
||||
fi
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
# Header information
|
||||
#
|
||||
|
||||
DATE=`date "$BTAG_DFMT"`
|
||||
print -u1 " BUILD SUMMARY FOR: $DATE"
|
||||
print -u1 " +++++++++++++++++++++++++++++++++++++"
|
||||
print -u1
|
||||
|
||||
for r in $NOT_AVAILABLE_SUMMARY_FILES
|
||||
do
|
||||
print -u1 "Missing build summary: $r\n"
|
||||
done
|
||||
|
||||
print -u1
|
||||
print_error_and_warning_summaries_by_project
|
||||
print -u1
|
||||
print_build_start_end
|
||||
|
||||
print -u1
|
||||
print -u1
|
||||
print -u1 " BUILD PARAMETERS"
|
||||
print -u1 " ++++++++++++++++"
|
||||
print -u1
|
||||
print -u1
|
||||
|
||||
print_build_parameters
|
||||
|
||||
print -u1
|
||||
print -u1
|
||||
print -u1 " ERROR SUMMARIES BY COMPONENT"
|
||||
print -u1 " ++++++++++++++++++++++++++++"
|
||||
print -u1
|
||||
print -u1
|
||||
|
||||
print_error_summaries_by_component
|
||||
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
# Find the per component errors.
|
||||
#
|
||||
if [ $PRINT_ERRORS -gt 0 ]; then
|
||||
|
||||
print -u1
|
||||
print -u1
|
||||
print -u1 " ERROR LISTINGS BY COMPONENT"
|
||||
print -u1 " +++++++++++++++++++++++++++"
|
||||
print -u1
|
||||
print -u1
|
||||
|
||||
print_error_listings_by_component
|
||||
|
||||
fi
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Complete the build summary and mail it, save it, or dump it to stdout
|
||||
#
|
||||
if [ "" != "$MAIL_LIST" ]; then
|
||||
mailx -s "$SUBJECT_BUILD_SUMMARY (`date $SUBJECT_DATE`) [Report #${REPORT_NUM}]" "$MAIL_LIST" < $EXECUTIVE_SUMMARY_LOG
|
||||
fi
|
||||
|
||||
if [ "" != "$LOG_PATH" ]; then
|
||||
cp $EXECUTIVE_SUMMARY_LOG $LOG_PATH
|
||||
fi
|
||||
|
||||
if [ "$DEBUG" = "False" -a "" = "$MAIL_LIST" -a "" = "$LOG_PATH" ]; then
|
||||
exec >&9
|
||||
cat $EXECUTIVE_SUMMARY_LOG
|
||||
fi
|
||||
|
||||
for r in $SUMMARY_FILES
|
||||
do
|
||||
is_complete_build $r
|
||||
if [ $? -ne 0 ]; then
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
do_exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
do_exit 0
|
||||
Executable
+124
@@ -0,0 +1,124 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# build_summary_cron
|
||||
#
|
||||
########################################################################
|
||||
#set -x
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
PROG_NAME="`basename $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
|
||||
BUILD_SUMMARY_ARGS=""
|
||||
DEBUG="False"
|
||||
MAIL_LIST=""
|
||||
let RETRIES=4
|
||||
let SLEEP_SECONDS=3600
|
||||
let REPORT_NUM=1
|
||||
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $PROG_NAME
|
||||
[-retries <#_retries>]
|
||||
[-sleep <#_seconds>]
|
||||
[-h | -? | -help]
|
||||
# Print usage and exit
|
||||
#
|
||||
# '$PROG_NAME' calls 'build_summary' to construct the report.
|
||||
#
|
||||
# If 'build_summary' returns an error code indicating
|
||||
# that some of the specified builds have not completed,
|
||||
# '$PROG_NAME' will put itself to sleep for 3600 seconds
|
||||
# before trying again up to a maximum of 4 times.
|
||||
# The number of retries and the sleep time can be altered
|
||||
# using the '-retries' and '-sleep' options.
|
||||
#
|
||||
# Any command-line options not recognized by '$PROG_NAME' are
|
||||
# passed to 'build_summary'.
|
||||
#
|
||||
# Any output from 'build_summary' is passed to the users
|
||||
# specified in the '-mail' option.
|
||||
eof
|
||||
}
|
||||
|
||||
#
|
||||
# Do command-line processing
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
|
||||
case $1 in
|
||||
|
||||
-debug)
|
||||
DEBUG="True"
|
||||
shift ;;
|
||||
|
||||
-h | -help | '-?')
|
||||
usage $PROG_NAME
|
||||
do_exit 1 ;;
|
||||
|
||||
-retries)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
let RETRIES=$2
|
||||
shift 2 ;;
|
||||
|
||||
-sleep)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
let SLEEP_SECONDS=$2
|
||||
shift 2 ;;
|
||||
|
||||
*)
|
||||
BUILD_SUMMARY_ARGS="$BUILD_SUMMARY_ARGS $1"
|
||||
shift 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
while [[ $RETRIES -ge 0 ]]
|
||||
do
|
||||
$BUILD_SUMMARY $BUILD_SUMMARY_ARGS
|
||||
STATUS=$?
|
||||
|
||||
if [ $STATUS -eq 0 ]; then
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
do_exit 0
|
||||
fi
|
||||
|
||||
let REPORT_NUM=REPORT_NUM+1
|
||||
let RETRIES=RETRIES-1
|
||||
if [[ $RETRIES -ge 0 ]]; then
|
||||
sleep $SLEEP_SECONDS
|
||||
fi
|
||||
done
|
||||
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
do_exit 1
|
||||
Executable
+662
@@ -0,0 +1,662 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# build_world
|
||||
#
|
||||
########################################################################
|
||||
# set -x
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
PROJECT_NAME="dt"
|
||||
BUILD_TYPE=""
|
||||
LOG_DIR=""
|
||||
MAIL_LIST=""
|
||||
PRE_BUILD=""
|
||||
POST_BUILD=""
|
||||
TOP=""
|
||||
PROG_NAME="$0"
|
||||
LOG_DATE="`date +%h.%d,%H:%M:%S`"
|
||||
TMP_LOG_DIR_BASE=/project/dt/logs/build #Need to define now for usage()
|
||||
VIEW_TAG="`uname -s`:no_view_specified"
|
||||
|
||||
X_PROJECT=x11
|
||||
MOTIF_PROJECT=motif
|
||||
CDE_PROJECT=cde
|
||||
CDEDOC_PROJECT=cdedoc
|
||||
CDETEST_PROJECT=cde-test
|
||||
BUILD=build
|
||||
|
||||
DO_X_BUILD="False"
|
||||
DO_MOTIF_BUILD="False"
|
||||
DO_CDE_BUILD="False"
|
||||
DO_CDEDOC_BUILD="False"
|
||||
DO_REDIRECT_IO="True"
|
||||
DO_CDETEST_BUILD="False"
|
||||
|
||||
DO_DEBUG="False"
|
||||
DO_NOT_BUILD="False"
|
||||
DO_COMPONENT_LOGS="True"
|
||||
DO_ERROR_FILES="True"
|
||||
DO_WARNING_FILES="True"
|
||||
|
||||
##########################################################################
|
||||
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $1
|
||||
[-e | -dev] # Default: build x11, motif and cde
|
||||
[-x | -x11] # Build x11 only
|
||||
[-m | -motif] # Build motif only
|
||||
[-c | -cde] # Build cde only
|
||||
[-d | -cdedoc] # Build cde docs only
|
||||
[-t | -cdetest] # Build cde tests only
|
||||
[-a | -all] # Build x11, motif, cde, cdedoc and cdetest
|
||||
[-no_build] # Dont build anything
|
||||
[-no_complogs] # Dont create .log files for components
|
||||
[-no_errors] # Dont create .err files
|
||||
[-no_ioredirect]# Dont redirect stdout/stderr to build.log
|
||||
[-no_warnings] # Dont create .wrn files
|
||||
[-rpt_summary]
|
||||
# Only print information used by
|
||||
# build_summary to stdout. Equivalent to
|
||||
# -no_build -no_complogs -no_errors -no_warnings
|
||||
[-clean] # Do a clean build; default is incremental
|
||||
[-debug] # Debugging output
|
||||
[-pre <script_name>]
|
||||
# script_name is a program that is run before the
|
||||
# build is run.
|
||||
[-post <script_name>]
|
||||
# script_name is a program that is run after the
|
||||
# build is run.
|
||||
[{-v | -view | -view_tag} <view_tag>]
|
||||
# The ClearCase view should always be set before
|
||||
# this script is run. This option should only
|
||||
# be used on systems where ClearCase is not installed.
|
||||
# The view tag will be used when constructing the
|
||||
# log directory name.
|
||||
[{-ld | -log_dir} <directory>]
|
||||
# Specify an alternate log directory.
|
||||
# Default: $TMP_LOG_DIR_BASE/<view_tag>/<date>/
|
||||
# <date> is of the format '$LOG_DATE'
|
||||
[{-sd | -script_dir} <directory>]
|
||||
# Specify an alternate directory for required files.
|
||||
# Default: $SCRIPTS_DIR/
|
||||
[{-pn | -project_name} project_name]
|
||||
# Specifies the project name used in the log dir.
|
||||
# The default log dir is is /project/dt/...
|
||||
# Use this option (-pn x11) for X11 only builds to
|
||||
# get logs in /project/x11/...
|
||||
[-top <dir_name>]
|
||||
# Use this to over-ride the default TOP directory
|
||||
# for a project. There is NO default.
|
||||
[{-mail | mail_list} <user_names>]
|
||||
[-h | -? | -help] # Print usage and exit
|
||||
eof
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
-e | -dev) DO_X_BUILD="True"
|
||||
DO_MOTIF_BUILD="True"
|
||||
DO_CDE_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-x | -x11) DO_X_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-m | -motif) DO_MOTIF_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-c | -cde) DO_CDE_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-d | -cdedoc) DO_CDEDOC_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-t | -cdetest) DO_CDETEST_BUILD="True";
|
||||
shift 1 ;;
|
||||
|
||||
-a | -all) DO_X_BUILD="True"
|
||||
DO_MOTIF_BUILD="True"
|
||||
DO_CDE_BUILD="True"
|
||||
DO_CDEDOC_BUILD="True"
|
||||
DO_CDETEST_BUILD="True"
|
||||
shift 1 ;;
|
||||
|
||||
-no_build) DO_NOT_BUILD="True"; shift 1 ;;
|
||||
|
||||
-no_complogs) DO_COMPONENT_LOGS="False"; shift 1 ;;
|
||||
|
||||
-no_errors) DO_ERROR_FILES="False"; shift 1 ;;
|
||||
|
||||
-no_ioredirect) DO_REDIRECT_IO="False"; shift 1 ;;
|
||||
|
||||
-no_warnings) DO_WARNING_FILES="False"; shift 1 ;;
|
||||
|
||||
-rpt_summary) DO_NOT_BUILD="True"
|
||||
DO_COMPONENT_LOGS="False"
|
||||
DO_ERROR_FILES="False"
|
||||
DO_WARNING_FILES="False"
|
||||
shift 1;;
|
||||
|
||||
-clean) BUILD_TYPE="clean"; shift 1 ;;
|
||||
|
||||
-debug) DO_DEBUG="True"
|
||||
DO_REDIRECT_IO="False"; shift 1 ;;
|
||||
|
||||
-ld | -log_dir) LOG_DIR=$2; shift 2 ;;
|
||||
|
||||
-v | -view | -view_tag) VIEW_TAG=$2; shift 2 ;;
|
||||
|
||||
-sd | -script_dir) SCRIPTS_DIR=$2;
|
||||
export SCRIPTS_DIR;
|
||||
shift 2 ;;
|
||||
|
||||
-pre) PRE_BUILD=$2; shift 2 ;;
|
||||
|
||||
-post) POST_BUILD=$2; shift 2 ;;
|
||||
|
||||
-top) TOP=$2; shift 2 ;;
|
||||
|
||||
-pn | -project_name) PROJECT_NAME=$2; shift 2 ;;
|
||||
|
||||
-mail | -mail_list) MAIL_LIST=$2; shift 2 ;;
|
||||
|
||||
-h | "-?" | -help | *) usage $PROG_NAME;
|
||||
exit 1;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: Do this after the command line parsing to pick up
|
||||
# an alternate setting of SCRIPTS_DIR
|
||||
#
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
do_check_file $BUILD_PROJECT -x "NOT found"
|
||||
do_check_file $EXTRACT_LOG -x "NOT found"
|
||||
do_check_file $EXTRACT_MSG -x "NOT found"
|
||||
do_check_file $CDE_COMPONENTS -f "NOT found"
|
||||
do_check_file $ERROR_MSGS -f "NOT found"
|
||||
do_check_file $WARNING_MSGS -f "NOT found"
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Exit if $CLEAR_CASE_TOOL is installed and no view is set
|
||||
#
|
||||
if [ -x $CLEAR_CASE_TOOL ]; then
|
||||
$CLEAR_CASE_TOOL pwv | grep 'Set view' | grep NONE > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
print -u2 "Exiting ... No ClearCase view is set!"
|
||||
do_exit 1
|
||||
fi
|
||||
VIEW_TAG="`$CLEAR_CASE_TOOL pwv -short`"
|
||||
else
|
||||
#
|
||||
# Some systems don't have $CLEAR_CASE_TOOL so we need to
|
||||
# work around it. Just output a warning for now.
|
||||
#
|
||||
print -u2 "$PROG_NAME: Warning: '$CLEAR_CASE_TOOL' is NOT installed."
|
||||
fi
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# If no project was selected, then build the 'dev' projects
|
||||
#
|
||||
if [ "False" = $DO_X_BUILD -a "False" = $DO_MOTIF_BUILD -a "False" = $DO_CDE_BUILD -a "FALSE" = $DO_CDEDOC_BUILD -a "False" = $DO_CDETEST_BUILD ]; then
|
||||
DO_X_BUILD="True"
|
||||
DO_MOTIF_BUILD="True"
|
||||
DO_CDE_BUILD="True"
|
||||
fi
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# If $INITIALIZE_VIEW is present, run it
|
||||
#
|
||||
if [ -x $INITIALIZE_VIEW -a "$X_PROJECT" != "$PROJECT_NAME" ]; then
|
||||
$INITIALIZE_VIEW > /dev/null 2>&1
|
||||
fi
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Set the log dir and log file for the project logs
|
||||
#
|
||||
# Put all undirected stdout and stderr in a separate log file
|
||||
#
|
||||
if [ "" = "$LOG_DIR" ]; then
|
||||
LOG_DIR=$LOG_DIR_BASE/$VIEW_TAG/$LOG_DATE
|
||||
|
||||
if [ -L $LOG_DIR_BASE/$VIEW_TAG/LATEST ]; then
|
||||
rm $LOG_DIR_BASE/$VIEW_TAG/LATEST
|
||||
fi
|
||||
ln -s ./$LOG_DATE $LOG_DIR_BASE/$VIEW_TAG/LATEST
|
||||
fi
|
||||
SUMM_FILE=$LOG_DIR/build.summary
|
||||
if [ ! -d $LOG_DIR ]; then
|
||||
mkdir -p $LOG_DIR
|
||||
chmod 775 $LOG_DIR
|
||||
fi
|
||||
|
||||
if [ "True" = "$DO_REDIRECT_IO" ]; then
|
||||
BUILD_LOG=$LOG_DIR/$BUILD.log
|
||||
BUILD_LOG_REDIRECT="-e $BUILD_LOG"
|
||||
rm -f $BUILD_LOG && touch $BUILD_LOG
|
||||
exec >> $BUILD_LOG
|
||||
exec 2>> $BUILD_LOG
|
||||
else
|
||||
BUILD_LOG_REDIRECT=""
|
||||
fi
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Build a project
|
||||
#
|
||||
do_build ()
|
||||
{
|
||||
#
|
||||
# $1 = the project name
|
||||
# $2 = [optional] command line options for $BUILD_PROJECT
|
||||
# $3 = [optional] value for command line option $2
|
||||
#
|
||||
|
||||
print -u1 "building in $1..."
|
||||
|
||||
DATE=`date +"$BTAG_DFMT"`
|
||||
|
||||
if [ "True" = $DO_NOT_BUILD ]; then
|
||||
print -u1 "$BTAG_STRT $1: $DATE" >> $SUMM_FILE
|
||||
print -u1 "$BTAG_PRJT = $1" >> $SUMM_FILE
|
||||
print -u1 "$BTAG_ENDD $1: $DATE" >> $SUMM_FILE
|
||||
return
|
||||
fi
|
||||
|
||||
#
|
||||
# if building cde tests, write to cde-test-summary.log and
|
||||
# not cde-test.log since cde-test.log will be created by the
|
||||
# test-build program.
|
||||
#
|
||||
if [ "$CDETEST_PROJECT" = "$1" ]; then
|
||||
LOG_FILE=$LOG_DIR/$1-summary.log
|
||||
else
|
||||
LOG_FILE=$LOG_DIR/$1.log
|
||||
fi
|
||||
|
||||
print -u1 "$BTAG_STRT $1: $DATE" >> $SUMM_FILE
|
||||
print -u1 "$BTAG_PRJT = $1" >> $SUMM_FILE
|
||||
print -u1 "$BTAG_LOGF = $LOG_FILE" >> $SUMM_FILE
|
||||
|
||||
print -u1 "$BTAG_STRT $1: $DATE" > $LOG_FILE
|
||||
print -u1 "$BTAG_PRJT = $1" >> $LOG_FILE
|
||||
print -u1 "$BTAG_LOGF = $LOG_FILE" >> $LOG_FILE
|
||||
|
||||
print -u1 "$BTAG_SYST = `uname -a`" >> $LOG_FILE
|
||||
print -u1 "$BTAG_VIEW = $VIEW_TAG" >> $LOG_FILE
|
||||
if [ "" = "$BUILD_TYPE" ]; then
|
||||
print -u1 "$BTAG_TYPE = incrmt" >> $LOG_FILE
|
||||
else
|
||||
print -u1 "$BTAG_TYPE = $BUILD_TYPE" >> $LOG_FILE
|
||||
fi
|
||||
if [ -x $CLEAR_CASE_TOOL ]; then
|
||||
$CLEAR_CASE_TOOL catcs >> $LOG_FILE
|
||||
fi
|
||||
|
||||
if [ "" != "$PRE_BUILD" -a -x "$PRE_BUILD" ]; then
|
||||
print -u1 "Running pre-build script '$PRE_BUILD'." >> $LOG_FILE
|
||||
$PRE_BUILD >> $LOG_FILE 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
print -u2 "\nThe pre_build script '$PRE_BUILD' failed."
|
||||
print -u2 "Aborting the build!\n"
|
||||
do_exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "" = "$2" ]; then
|
||||
if [ "" = "$BUILD_TYPE" ]; then
|
||||
if [ "" = "$TOP" ]; then
|
||||
$BUILD_PROJECT -p $1 >> $LOG_FILE 2>&1
|
||||
else
|
||||
$BUILD_PROJECT -top "$TOP" -p $1 >> $LOG_FILE 2>&1
|
||||
fi
|
||||
else
|
||||
if [ "" = "$TOP" ]; then
|
||||
$BUILD_PROJECT -p $1 -"$BUILD_TYPE" >> $LOG_FILE 2>&1
|
||||
else
|
||||
$BUILD_PROJECT -top "$TOP" -p $1 -"$BUILD_TYPE" >> $LOG_FILE 2>&1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if [ "" = "$BUILD_TYPE" ]; then
|
||||
if [ "" = "$TOP" ]; then
|
||||
$BUILD_PROJECT -p $1 "$2" "$3" >> $LOG_FILE 2>&1
|
||||
else
|
||||
$BUILD_PROJECT -top "$TOP" -p $1 "$2" "$3" >> $LOG_FILE 2>&1
|
||||
fi
|
||||
else
|
||||
if [ "" = "$TOP" ]; then
|
||||
$BUILD_PROJECT -p $1 -"$BUILD_TYPE" "$2" "$3" >> $LOG_FILE 2>&1
|
||||
else
|
||||
$BUILD_PROJECT -top "$TOP" -p $1 -"$BUILD_TYPE" "$2" "$3" >> $LOG_FILE 2>&1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "" != "$POST_BUILD" -a -x "$POST_BUILD" ]; then
|
||||
print -u1 "Running post-build script '$POST_BUILD'." >> $LOG_FILE
|
||||
$POST_BUILD >> $LOG_FILE 2>&1
|
||||
fi
|
||||
|
||||
DATE=`date +"$BTAG_DFMT"`
|
||||
|
||||
print -u1 "$BTAG_ENDD $1: $DATE" >> $LOG_FILE
|
||||
print -u1 "$BTAG_ENDD $1: $DATE\n" >> $SUMM_FILE
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# do_summary -
|
||||
#
|
||||
do_summary ()
|
||||
{
|
||||
#
|
||||
# $1 = the project name
|
||||
# $2 = the log file
|
||||
#
|
||||
PROJECT=$1
|
||||
LOG_FILE=$2$3
|
||||
ERR_FILE=$2$4
|
||||
WRN_FILE=$2$5
|
||||
|
||||
print -u1 extracting errors and warnings in $PROJECT...
|
||||
|
||||
ERR=`$EXTRACT_MSG \
|
||||
-m $ERROR_MSGS \
|
||||
-i $WARNING_MSGS -i $IGNORE_MSGS \
|
||||
-l $LOG_FILE $BUILD_LOG_REDIRECT | wc -l`
|
||||
WARN=`$EXTRACT_MSG \
|
||||
-m $WARNING_MSGS \
|
||||
-l $LOG_FILE $BUILD_LOG_REDIRECT | wc -l`
|
||||
|
||||
if [ "True" = $DO_ERROR_FILES ]; then
|
||||
$EXTRACT_MSG \
|
||||
-m $ERROR_MSGS -m $BUILD_MSGS \
|
||||
-i $WARNING_MSGS -i $IGNORE_MSGS \
|
||||
-l $LOG_FILE $BUILD_LOG_REDIRECT | \
|
||||
$COMPRESS_MSG \
|
||||
-m $BUILD_MSGS $BUILD_LOG_REDIRECT > $ERR_FILE
|
||||
fi
|
||||
|
||||
if [ "True" = $DO_WARNING_FILES ]; then
|
||||
$EXTRACT_MSG \
|
||||
-m $WARNING_MSGS -m $BUILD_MSGS \
|
||||
-l $LOG_FILE $BUILD_LOG_REDIRECT | \
|
||||
$COMPRESS_MSG \
|
||||
-m $BUILD_MSGS $BUILD_LOG_REDIRECT > $WRN_FILE
|
||||
fi
|
||||
|
||||
AWK_PROJECT='{printf("%-32s %5s errors %5s warnings",$1,$2,$3)}'
|
||||
echo $PROJECT $ERR $WARN | awk "$AWK_PROJECT" >> $SUMM_FILE
|
||||
print -u1 >> $SUMM_FILE
|
||||
|
||||
if [ "True" = "$DO_DEBUG" ]; then
|
||||
echo $PROJECT $ERR $WARN | awk "$AWK_PROJECT"
|
||||
print -u1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# do_component_summary
|
||||
#
|
||||
do_component_summary ()
|
||||
{
|
||||
#
|
||||
# $1 = the project name
|
||||
# $2 = the project log file
|
||||
# $3 = the components file
|
||||
#
|
||||
PROJECT=$1
|
||||
PROJECT_LOG_FILE=$2
|
||||
COMPONENTS_FILE=$3
|
||||
COMPONENTS_LOG_DIR=$LOG_DIR/$PROJECT
|
||||
|
||||
typeset -i TTL_ERR
|
||||
typeset -i TTL_WARN
|
||||
|
||||
AWK_COMPONENT='{printf(" %-32s %5s errors %5s warnings",$1,$2,$3)}'
|
||||
|
||||
#
|
||||
# Separate the log file for the project into log files for the
|
||||
# individual components. Put them into a subdirectory since
|
||||
# there may be alot of them.
|
||||
#
|
||||
if [ "$DO_COMPONENT_LOGS" = "True" ]; then
|
||||
if [ ! -d $COMPONENTS_LOG_DIR ]; then
|
||||
mkdir -p $COMPONENTS_LOG_DIR
|
||||
chmod 775 $COMPONENTS_LOG_DIR
|
||||
fi
|
||||
|
||||
$EXTRACT_LOG \
|
||||
-l $PROJECT_LOG_FILE \
|
||||
-c $COMPONENTS_FILE \
|
||||
-ld $COMPONENTS_LOG_DIR $BUILD_LOG_REDIRECT
|
||||
fi
|
||||
|
||||
let TTL_ERR=0
|
||||
let TTL_WARN=0
|
||||
|
||||
for COMPONENT in `cat $COMPONENTS_FILE`
|
||||
do
|
||||
print -u1 extracting errors and warnings in $PROJECT/$COMPONENT...
|
||||
|
||||
COMPONENT_FILE_BASE=`echo $COMPONENT | tr "/" ","`
|
||||
COMPONENT_LOG_FILE=$COMPONENTS_LOG_DIR/$COMPONENT_FILE_BASE.log
|
||||
|
||||
if [ ! -f $COMPONENT_LOG_FILE ]; then
|
||||
print -u2 $PROG_NAME: Error, $COMPONENT_LOG_FILE not found.
|
||||
continue
|
||||
fi
|
||||
|
||||
ERR=`$EXTRACT_MSG \
|
||||
-m $ERROR_MSGS \
|
||||
-i $WARNING_MSGS -i $IGNORE_MSGS \
|
||||
-l $COMPONENT_LOG_FILE $BUILD_LOG_REDIRECT | wc -l`
|
||||
WARN=`$EXTRACT_MSG \
|
||||
-m $WARNING_MSGS \
|
||||
-l $COMPONENT_LOG_FILE $BUILD_LOG_REDIRECT | wc -l`
|
||||
|
||||
let TTL_ERR=TTL_ERR+ERR
|
||||
let TTL_WARN=TTL_WARN+WARN
|
||||
|
||||
if [ $ERR -ne 0 -o $WARN -ne 0 ]; then
|
||||
echo $PROJECT/$COMPONENT $ERR $WARN | \
|
||||
awk "$AWK_COMPONENT" >> $SUMM_FILE
|
||||
print -u1 >> $SUMM_FILE
|
||||
|
||||
if [ "True" = $DO_ERROR_FILES -a $ERR -gt 0 ]; then
|
||||
COMPONENT_ERR_FILE=$COMPONENTS_LOG_DIR/$COMPONENT_FILE_BASE.err
|
||||
$EXTRACT_MSG \
|
||||
-m $ERROR_MSGS -m $BUILD_MSGS \
|
||||
-i $WARNING_MSGS -i $IGNORE_MSGS \
|
||||
-l $COMPONENT_LOG_FILE $BUILD_LOG_REDIRECT | \
|
||||
$COMPRESS_MSG \
|
||||
-m $BUILD_MSGS $BUILD_LOG_REDIRECT > $COMPONENT_ERR_FILE
|
||||
fi
|
||||
|
||||
if [ "True" = $DO_WARNING_FILES -a $WARN -gt 0 ]; then
|
||||
COMPONENT_WRN_FILE=$COMPONENTS_LOG_DIR/$COMPONENT_FILE_BASE.wrn
|
||||
$EXTRACT_MSG \
|
||||
-m $WARNING_MSGS -m $BUILD_MSGS \
|
||||
-l $COMPONENT_LOG_FILE $BUILD_LOG_REDIRECT | \
|
||||
$COMPRESS_MSG \
|
||||
-m $BUILD_MSGS $BUILD_LOG_REDIRECT > $COMPONENT_WRN_FILE
|
||||
fi
|
||||
|
||||
if [ "True" = "$DO_DEBUG" ]; then
|
||||
echo $PROJECT/$COMPONENT $ERR $WARN | awk "$AWK_COMPONENT"
|
||||
print -u1
|
||||
|
||||
echo TOTAL $TTL_ERR $TTL_WARN | awk "$AWK_COMPONENT"
|
||||
print -u1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo $PROJECT-TOTAL $TTL_ERR $TTL_WARN | awk "$AWK_COMPONENT" >> $SUMM_FILE
|
||||
print -u1 >> $SUMM_FILE
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Print header stuff needed for build_summary
|
||||
#
|
||||
DATE=`date +"$BTAG_DFMT"`
|
||||
print -u1 "###################################################" >> $SUMM_FILE
|
||||
print -u1 "$BTAG_DATE = $DATE" >> $SUMM_FILE
|
||||
print -u1 "$BTAG_VIEW = $VIEW_TAG" >> $SUMM_FILE
|
||||
if [ -x $CLEAR_CASE_TOOL ]; then
|
||||
TMP_FILE_NAME=`$CLEAR_CASE_TOOL catcs | head -1 | awk '{printf "%s\n", $3}'`
|
||||
if [ -f "$TMP_FILE_NAME" ]; then
|
||||
print -u1 "$BTAG_CFGS = `$CLEAR_CASE_TOOL catcs | head -1 | awk '{printf "%s\n", $3}'`" >> $SUMM_FILE
|
||||
else
|
||||
print -u1 "$BTAG_CFGS = NoSpecFile" >> $SUMM_FILE
|
||||
fi
|
||||
else
|
||||
print -u1 "$BTAG_CFGS = NoClrCase" >> $SUMM_FILE
|
||||
fi
|
||||
print -u1 "$BTAG_PTFM = `uname -s`" >> $SUMM_FILE
|
||||
print -u1 "$BTAG_LOGD = $LOG_DIR" >> $SUMM_FILE
|
||||
if [ "" = "$BUILD_TYPE" ]; then
|
||||
print -u1 "$BTAG_TYPE = incrmt" >> $SUMM_FILE
|
||||
else
|
||||
print -u1 "$BTAG_TYPE = $BUILD_TYPE" >> $SUMM_FILE
|
||||
fi
|
||||
print -u1 "###################################################\n" >> $SUMM_FILE
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Do the builds and Summarize the results
|
||||
#
|
||||
|
||||
if [ "True" = $DO_X_BUILD ]; then
|
||||
print -u1 "#############################################" >> $SUMM_FILE
|
||||
do_build $X_PROJECT "" ""
|
||||
do_summary $X_PROJECT $LOG_DIR/$X_PROJECT .log .err .wrn
|
||||
do_component_summary \
|
||||
$X_PROJECT \
|
||||
$LOG_DIR/$X_PROJECT.log \
|
||||
$X_COMPONENTS
|
||||
print -u1 "#############################################\n" >> $SUMM_FILE
|
||||
fi
|
||||
|
||||
if [ "True" = $DO_MOTIF_BUILD ]; then
|
||||
print -u1 "#############################################" >> $SUMM_FILE
|
||||
do_build $MOTIF_PROJECT "" ""
|
||||
do_summary $MOTIF_PROJECT $LOG_DIR/$MOTIF_PROJECT .log .err .wrn
|
||||
do_component_summary \
|
||||
$MOTIF_PROJECT \
|
||||
$LOG_DIR/$MOTIF_PROJECT.log \
|
||||
$MOTIF_COMPONENTS
|
||||
print -u1 "#############################################\n" >> $SUMM_FILE
|
||||
fi
|
||||
|
||||
if [ "True" = $DO_CDE_BUILD ]; then
|
||||
print -u1 "#############################################" >> $SUMM_FILE
|
||||
do_build $CDE_PROJECT "" ""
|
||||
do_summary $CDE_PROJECT $LOG_DIR/$CDE_PROJECT .log .err .wrn
|
||||
do_component_summary \
|
||||
$CDE_PROJECT \
|
||||
$LOG_DIR/$CDE_PROJECT.log \
|
||||
$CDE_COMPONENTS
|
||||
print -u1 "#############################################\n" >> $SUMM_FILE
|
||||
fi
|
||||
|
||||
if [ "True" = $DO_CDEDOC_BUILD ]; then
|
||||
print -u1 "#############################################" >> $SUMM_FILE
|
||||
do_build $CDEDOC_PROJECT "" ""
|
||||
do_summary $CDEDOC_PROJECT $LOG_DIR/$CDEDOC_PROJECT .log .err .wrn
|
||||
do_component_summary \
|
||||
$CDEDOC_PROJECT \
|
||||
$LOG_DIR/$CDEDOC_PROJECT.log \
|
||||
$CDEDOC_COMPONENTS
|
||||
print -u1 "#############################################\n" >> $SUMM_FILE
|
||||
fi
|
||||
|
||||
if [ "True" = "$DO_CDETEST_BUILD" ]; then
|
||||
print -u1 "#############################################" >> $SUMM_FILE
|
||||
do_build $CDETEST_PROJECT "-log_dir" "$LOG_DIR"
|
||||
if [ -f $LOG_DIR/$CDETEST_PROJECT/allmake.* ]; then
|
||||
ln -s $LOG_DIR/$CDETEST_PROJECT/allmake.* $LOG_DIR/$CDETEST_PROJECT.log
|
||||
fi
|
||||
do_summary $CDETEST_PROJECT $LOG_DIR/$CDETEST_PROJECT .log .err .wrn
|
||||
do_component_summary \
|
||||
$CDETEST_PROJECT \
|
||||
$LOG_DIR/$CDETEST_PROJECT.log \
|
||||
$CDETEST_COMPONENTS
|
||||
print -u1 "#############################################\n" >> $SUMM_FILE
|
||||
fi
|
||||
|
||||
#print -u1 "###################################################\n" >> $SUMM_FILE
|
||||
#do_summary $BUILD $LOG_DIR/$BUILD.log
|
||||
#print -u1 "###################################################\n" >> $SUMM_FILE
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Complete the build summary with the config spec and the $BTAG_CMPL
|
||||
#
|
||||
print -u1 "###################################################\n" >> $SUMM_FILE
|
||||
if [ -x $CLEAR_CASE_TOOL ]; then
|
||||
$CLEAR_CASE_TOOL catcs >> $SUMM_FILE
|
||||
fi
|
||||
print -u1 "###################################################\n" >> $SUMM_FILE
|
||||
|
||||
DATE=`date +"$BTAG_DFMT"`
|
||||
print -u1 "###################################################\n" >> $SUMM_FILE
|
||||
print -u1 "$BTAG_CMPL: $DATE\n" >> $SUMM_FILE
|
||||
print -u1 "###################################################\n" >> $SUMM_FILE
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Complete the build summary and mail it or dump it to stdout
|
||||
#
|
||||
if [ "" != "$MAIL_LIST" ]; then
|
||||
mailx -s "$SUBJECT_BUILD_COMPLETE - $VIEW_TAG (`date $SUBJECT_DATE`)" "$MAIL_LIST" < $SUMM_FILE
|
||||
else
|
||||
cat $SUMM_FILE
|
||||
fi
|
||||
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
do_exit 0
|
||||
Executable
+348
@@ -0,0 +1,348 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# cc_checkedout
|
||||
#
|
||||
########################################################################
|
||||
# set -x
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
PROG_NAME="`basename $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PROG_NAME: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PROG_NAME: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
COMPONENTS_FILES=""
|
||||
COMPONENTS=""
|
||||
DEBUG="False"
|
||||
DO_DELETE="True"
|
||||
DO_LISTING="True"
|
||||
DO_SUMMARY="True"
|
||||
DO_TMPFILE="True"
|
||||
HAVE_EVENTS="True"
|
||||
CHECKEDOUT_LOG=""
|
||||
LOG_PATH=""
|
||||
MAIL_LIST=""
|
||||
PROG_NAME="`basename $0`"
|
||||
WHAT_TO_SEARCH="-avobs"
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# FUNCTION: do_executive_summary ()
|
||||
#
|
||||
do_executive_summary ()
|
||||
{
|
||||
AWK_EXEC_CO_SUMMARY='{printf("%-40s [CheckedOut= %-3s; Users= ", $1,$2)}'
|
||||
AWK_EXEC_USER_SUMMARY='{printf("%s ", $1)}'
|
||||
AWK_EXEC_TERM_SUMMARY='{printf("]\n")}'
|
||||
COMPONENT=$1
|
||||
|
||||
if [ "True" = "$DEBUG" ]; then
|
||||
print -u2 "summarizing events in $COMPONENT"
|
||||
fi
|
||||
TOTAL_CHECKEDOUT=`$EXTRACT_MSG -l $CHECKEDOUT_LOG $COMPONENT | wc -l |
|
||||
awk '{printf("%s",$1)}'`
|
||||
|
||||
if [ $TOTAL_CHECKEDOUT -ne 0 ]; then
|
||||
USERS=`$EXTRACT_MSG -l $CHECKEDOUT_LOG $COMPONENT |
|
||||
awk '{ print $1 }' FS="::" | sort | uniq`
|
||||
|
||||
echo "$COMPONENT $TOTAL_CHECKEDOUT" | awk "$AWK_EXEC_CO_SUMMARY"
|
||||
for u in $USERS
|
||||
do
|
||||
echo "$u" | awk "$AWK_EXEC_USER_SUMMARY"
|
||||
done
|
||||
echo "" | awk "$AWK_EXEC_TERM_SUMMARY"
|
||||
fi
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# FUNCTION: usage ()
|
||||
#
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $PROG_NAME
|
||||
[-d | -debug] # Print output to stdout
|
||||
[-h | -? | -help] # Print usage and exit
|
||||
[{-l | -log_path} <file>] # Specifies the output file for the report.
|
||||
[{-m | -mail | -mail_list} <user_name(s)>]
|
||||
[{-t | -tmpfile} <file>] # Specifies the tmp file to be extracted from.
|
||||
[{-w | -what | -what_to_search} <option or directory>]
|
||||
# The default is: $WHAT_TO_SEARCH
|
||||
[-no_delete]
|
||||
[-no_listing]
|
||||
[-no_summary]
|
||||
|
||||
# '$PROG_NAME' calls clearcase commands to determine which files
|
||||
# are currently checked out and then delivers the report. The
|
||||
# report can be sent to a list of mail recipients, or a log file
|
||||
# or both. If neither is specified, the report is sent to stdout
|
||||
# by default.
|
||||
eof
|
||||
}
|
||||
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# Exit if no view is set
|
||||
#
|
||||
$CLEAR_CASE_TOOL pwv | grep 'Set view' | grep NONE > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
print -u2 "$PROG_NAME: Exiting ... NO ClearCase view is set!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Do command-line processing
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
|
||||
-debug)
|
||||
DEBUG="True"
|
||||
shift 1 ;;
|
||||
|
||||
-h | -? | -help)
|
||||
usage $PROG_NAME
|
||||
do_exit 1 ;;
|
||||
|
||||
-l | -log_path)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
LOG_PATH=$2
|
||||
shift 2 ;;
|
||||
|
||||
-m | -mail | -mail_list)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
MAIL_LIST=$2
|
||||
shift 2 ;;
|
||||
|
||||
-t | -tmpfile)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
DO_TMPFILE="false"
|
||||
CHECKEDOUT_LOG=$2
|
||||
shift 2 ;;
|
||||
|
||||
-w | -what | -what_to_search)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
WHAT_TO_SEARCH=$2
|
||||
shift 2 ;;
|
||||
|
||||
-no_listing)
|
||||
DO_LISTING="False"
|
||||
shift 1 ;;
|
||||
|
||||
-no_summary)
|
||||
DO_SUMMARY="False"
|
||||
shift 1 ;;
|
||||
|
||||
-no_delete)
|
||||
DO_DELETE="False"
|
||||
shift 1 ;;
|
||||
|
||||
*)
|
||||
usage $PROG_NAME
|
||||
do_exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
if [ "True" = "$DO_TMPFILE" ]; then
|
||||
CHECKEDOUT_LOG=/tmp/$PROG_NAME.checkedout.$$
|
||||
CHECKEDOUT_LOG_PRIME=/tmp/$PROG_NAME.checkedout.1.$$
|
||||
do_register_temporary_file $CHECKEDOUT_LOG
|
||||
do_register_temporary_file $CHECKEDOUT_LOG_PRIME
|
||||
|
||||
#
|
||||
# First get the list of files
|
||||
#
|
||||
$CLEAR_CASE_TOOL lsco -fmt "%u %n %f\n" $WHAT_TO_SEARCH > $CHECKEDOUT_LOG
|
||||
|
||||
#
|
||||
# Since it is possible for more than one person to have a
|
||||
# file checked-out must get all locks. Note that it also
|
||||
# desireable to get each user's comments attached to the
|
||||
# checkout.
|
||||
#
|
||||
cat $CHECKEDOUT_LOG | while read LINE; do
|
||||
FILE="`echo $LINE | awk '{printf "%s", $2}'`"
|
||||
$CLEAR_CASE_TOOL lsco -d -fmt "%u::%Ad::days::%Tf::(%Rf)::%n::%f\n" \
|
||||
$FILE >> $CHECKEDOUT_LOG_PRIME
|
||||
done
|
||||
|
||||
#
|
||||
# Sort the files and remove dups.
|
||||
#
|
||||
sort $CHECKEDOUT_LOG_PRIME | uniq > $CHECKEDOUT_LOG
|
||||
cp $CHECKEDOUT_LOG $CHECKEDOUT_LOG_PRIME
|
||||
|
||||
sed -e 's/\.cde-1/cde/
|
||||
s/\.cde-2/cde/
|
||||
s/\.cde-3/cde/
|
||||
s/\.cde-test-1/cde-test/
|
||||
s/\.cde-test-2/cde-test/
|
||||
s/\.cde-test-3/cde-test/
|
||||
s/\.motif-1/motif/
|
||||
s/\.motif-2/motif/' $CHECKEDOUT_LOG_PRIME > $CHECKEDOUT_LOG
|
||||
fi
|
||||
|
||||
PROJECTS="cde cde-contrib cde-cts cde-misc cde-test cde-test-misc
|
||||
motif motif-cts motif-misc x11/misc x11/unsupported x11"
|
||||
|
||||
#
|
||||
# Redirect output
|
||||
#
|
||||
if [ "$DEBUG" = "False" ]; then
|
||||
EXECUTIVE_SUMMARY_LOG=/tmp/$PROG_NAME.execsum.$$
|
||||
do_register_temporary_file $EXECUTIVE_SUMMARY_LOG
|
||||
touch $EXECUTIVE_SUMMARY_LOG
|
||||
|
||||
exec 9>&1
|
||||
exec > $EXECUTIVE_SUMMARY_LOG
|
||||
fi
|
||||
|
||||
DATE=`date "$BTAG_DFMT"`
|
||||
print -u1 " CLEARCASE CHECKEDOUT SUMMARY FOR: $DATE"
|
||||
print -u1 " ++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||
print -u1
|
||||
print -u1
|
||||
|
||||
if [ ! -s $CHECKEDOUT_LOG ]; then
|
||||
if [ "$DEBUG" = "True" ]; then
|
||||
print -u1 "Log file '$CHECKEDOUT_LOG' is empty"
|
||||
fi
|
||||
HAVE_EVENTS="False"
|
||||
print -u1 "NO events were found."
|
||||
fi
|
||||
|
||||
|
||||
if [ "True" = "$DO_SUMMARY" -a "True" = "$HAVE_EVENTS" ]; then
|
||||
|
||||
for p in $PROJECTS
|
||||
do
|
||||
COMPONENTS_FILE=$SCRIPTS_DIR/$p.components
|
||||
if [ -f $COMPONENTS_FILE ]; then
|
||||
#
|
||||
# Correct for the missing 'xc' subdirectory in x11.components
|
||||
#
|
||||
if [ "$p" = "x11" ]; then
|
||||
p=x11/xc
|
||||
fi
|
||||
|
||||
for c in `cat $COMPONENTS_FILE`
|
||||
do
|
||||
do_executive_summary /proj/$p/$c
|
||||
done
|
||||
else
|
||||
do_executive_summary /proj/$p
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "True" = "$DO_LISTING" -a "True" = "$HAVE_EVENTS" ]; then
|
||||
print -u1
|
||||
print -u1
|
||||
print -u1 " CLEARCASE CHECKEDOUT LISTING"
|
||||
print -u1 " ++++++++++++++++++++++++++++"
|
||||
print -u1
|
||||
print -u1
|
||||
|
||||
cat $CHECKEDOUT_LOG | while read LINE; do
|
||||
|
||||
USER="`echo $LINE | awk '{FS="::"; printf "%s", $1}'`"
|
||||
FILE="`echo $LINE | awk '{FS="::"; printf "%s", $6}'`"
|
||||
|
||||
echo $LINE | \
|
||||
sed '/::1::days/s//::1:: day/' | \
|
||||
sed '/\(unreserved\)/s//U/' | \
|
||||
sed '/\(reserved\)/s//R/' | \
|
||||
awk '{ FS="::"; printf "%-8s %3d %s %s %s\n %s@@%s\n", $1,$2,$3,$4,$5,$6,$7 }'
|
||||
|
||||
#
|
||||
# Attach the WIP if present
|
||||
#
|
||||
WIP="`$CLEAR_CASE_TOOL lsco -d -user $USER -fmt '%[WIP]a' $FILE`"
|
||||
if [ "" != "$WIP" ]; then
|
||||
print -u1 " $WIP"
|
||||
fi
|
||||
|
||||
#
|
||||
# Attach the (possibly mult-line) comment
|
||||
#
|
||||
$CLEAR_CASE_TOOL lsco -d -user $USER -fmt "%c" $FILE \
|
||||
| awk '{printf " %s\n", $0}'
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
#####################################################################
|
||||
#
|
||||
# If no files were found, create a descriptive message; else
|
||||
# tack on a legend
|
||||
#
|
||||
if [ ! -s $CHECKEDOUT_LOG ]; then
|
||||
print -u1 "NO files are checked out!"
|
||||
else
|
||||
mv $CHECKEDOUT_LOG_PRIME $CHECKEDOUT_LOG
|
||||
print -u1 "\n(R) = reserved checkout"
|
||||
print -u1 "(U) = unreseved checkout"
|
||||
fi
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Complete the build summary and deliver it
|
||||
#
|
||||
if [ "" != "$MAIL_LIST" ]; then
|
||||
mailx -s "$SUBJECT_CHECKOUTS (`date $SUBJECT_DATE`)" "$MAIL_LIST" < \
|
||||
$EXECUTIVE_SUMMARY_LOG
|
||||
fi
|
||||
|
||||
if [ "" != "$LOG_PATH" ]; then
|
||||
cp $EXECUTIVE_SUMMARY_LOG $LOG_PATH
|
||||
fi
|
||||
|
||||
if [ "$DEBUG" = "False" -a "" = "$MAIL_LIST" -a "" = "$LOG_PATH" ]; then
|
||||
exec >&9
|
||||
cat $EXECUTIVE_SUMMARY_LOG
|
||||
fi
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
if [ "True" = "$DO_DELETE" ]; then
|
||||
do_exit 0
|
||||
fi
|
||||
exit 0
|
||||
Executable
+334
@@ -0,0 +1,334 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# cc_submissions
|
||||
#
|
||||
########################################################################
|
||||
# set -x
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
PROG_NAME="`basename $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
COMPONENTS_FILES=""
|
||||
COMPONENTS=""
|
||||
DEBUG="False"
|
||||
DO_DELETE="True"
|
||||
DO_LISTING="True"
|
||||
DO_TMPFILE="True"
|
||||
DO_SUMMARY="True"
|
||||
INCLUDE_ROOT="False"
|
||||
SUBMISSION_LOG=""
|
||||
MAIL_LIST=""
|
||||
NULLSUBDIRECTORY="__XXX__"
|
||||
HAVE_EVENTS="True"
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# FUNCTION: do_executive_summary ()
|
||||
#
|
||||
do_executive_summary ()
|
||||
{
|
||||
AWK_EXEC_EVENT_SUMMARY='{printf("%-40s [Events= %-3s; Users= ", $1,$2)}'
|
||||
AWK_EXEC_USER_SUMMARY='{printf("%s ", $1)}'
|
||||
AWK_EXEC_TERM_SUMMARY='{printf("]\n")}'
|
||||
COMPONENT=$1
|
||||
|
||||
if [ "True" = "$DEBUG" ]; then
|
||||
print -u2 "summarizing events in $COMPONENT"
|
||||
fi
|
||||
TOTAL_EVENTS=`$EXTRACT_MSG -l $SUBMISSION_LOG $COMPONENT | wc -l |
|
||||
awk '{printf("%s",$1)}'`
|
||||
|
||||
if [ $TOTAL_EVENTS -ne 0 ]; then
|
||||
USERS=`$EXTRACT_MSG -l $SUBMISSION_LOG $COMPONENT |
|
||||
awk '{ print $3 }' FS="|" | sort | uniq`
|
||||
|
||||
# for u in $USERS
|
||||
# do
|
||||
# USER_EVENTS=`$EXTRACT_MSG -l $SUBMISSION_LOG $COMPONENT |
|
||||
# grep "$FS$u$FS" | wc -l`
|
||||
# echo "$u $USER_EVENTS" | awk "$AWK_EXEC_SUMMARY"
|
||||
# done
|
||||
echo "$COMPONENT $TOTAL_EVENTS" | awk "$AWK_EXEC_EVENT_SUMMARY"
|
||||
for u in $USERS
|
||||
do
|
||||
echo "$u" | awk "$AWK_EXEC_USER_SUMMARY"
|
||||
done
|
||||
echo "" | awk "$AWK_EXEC_TERM_SUMMARY"
|
||||
fi
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# FUNCTION: do_listing_summary ()
|
||||
#
|
||||
do_listing_summary ()
|
||||
{
|
||||
AWK_LIST_SUMMARY='{printf("%s\n User=%-12s Event=%-16s DDTS=%8s \n Comment='%s'\n",$2,$3,$4,$5,$7)}'
|
||||
COMPONENT=$1
|
||||
|
||||
if [ "True" = "$DEBUG" ]; then
|
||||
print -u2 "listing events in $COMPONENT"
|
||||
fi
|
||||
TOTAL_EVENTS=`$EXTRACT_MSG -l $SUBMISSION_LOG $COMPONENT | wc -l`
|
||||
|
||||
if [ $TOTAL_EVENTS -ne 0 ]; then
|
||||
print -u1 "+"
|
||||
print -u1 "+ Events In: $COMPONENT"
|
||||
print -u1 "+"
|
||||
|
||||
$EXTRACT_MSG -l $SUBMISSION_LOG $COMPONENT | \
|
||||
awk "$AWK_LIST_SUMMARY" FS="|"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# FUNCTION: usage ()
|
||||
#
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $1
|
||||
[-h | -? | -help] # Print usage and exit
|
||||
[{-m | -mail | -mail_list} <user_name(s)>]
|
||||
[{-t | -tmpfile} <file>] # Specifies the log file to be extracted from.
|
||||
[-include_root]
|
||||
[-no_delete]
|
||||
[-no_listing]
|
||||
[-no_summary]
|
||||
|
||||
# '$PROG_NAME' calls clearcase commands to determine which files
|
||||
# were submitted in the last 24 hours and then delivers the report.
|
||||
# The report can be sent to a list of mail recipients, or a log file
|
||||
# or both. If neither is specified, the report is sent to stdout
|
||||
# by default.
|
||||
eof
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Do command-line processing
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
|
||||
-debug)
|
||||
DEBUG="True"
|
||||
shift 1 ;;
|
||||
|
||||
-h | -? | -help)
|
||||
usage $PROG_NAME
|
||||
do_exit 1 ;;
|
||||
|
||||
-l | -log_path)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
LOG_PATH=$2
|
||||
shift 2 ;;
|
||||
|
||||
-m | -mail | -mail_list)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
MAIL_LIST=$2
|
||||
shift 2 ;;
|
||||
|
||||
-t | -tmpfile)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
DO_TMPFILE="false"
|
||||
SUBMISSION_LOG=$2
|
||||
shift 2 ;;
|
||||
|
||||
-include_root)
|
||||
INCLUDE_ROOT="True"
|
||||
shift 1 ;;
|
||||
|
||||
-no_listing)
|
||||
DO_LISTING="False"
|
||||
shift 1 ;;
|
||||
|
||||
-no_summary)
|
||||
DO_SUMMARY="False"
|
||||
shift 1 ;;
|
||||
|
||||
-no_delete)
|
||||
DO_DELETE="False"
|
||||
shift 1 ;;
|
||||
|
||||
*)
|
||||
usage $PROG_NAME
|
||||
do_exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
if [ "True" = "$DO_TMPFILE" ]; then
|
||||
SUBMISSION_LOG=/tmp/$PROG_NAME.lshistory.$$
|
||||
SUBMISSION_LOG_PRIME=/tmp/$PROG_NAME.lshistory.1.$$
|
||||
do_register_temporary_file $SUBMISSION_LOG
|
||||
do_register_temporary_file $SUBMISSION_LOG_PRIME
|
||||
|
||||
EVENT="EVENT"
|
||||
FS='|'
|
||||
FORMAT="$EVENT$FS%n$FS%u$FS%e$FS%1.FIXESa$FS%1.l$FS%1.Nc$FS\n"
|
||||
|
||||
$CLEAR_CASE_TOOL lshistory -fmt $FORMAT \
|
||||
-avobs -nco -since yesterday.00:00 > $SUBMISSION_LOG
|
||||
|
||||
#
|
||||
# Delete entries submitted by root
|
||||
#
|
||||
grep $EVENT $SUBMISSION_LOG | sort > $SUBMISSION_LOG_PRIME
|
||||
|
||||
if [ "False" = $INCLUDE_ROOT ]; then
|
||||
SUBMISSION_LOG_TWO=/tmp/$PROG_NAME.lshistory.2.$$
|
||||
do_register_temporary_file $SUBMISSION_LOG_TWO
|
||||
|
||||
egrep -v -e "${FS}root$FS" $SUBMISSION_LOG_PRIME > $SUBMISSION_LOG_TWO
|
||||
cp $SUBMISSION_LOG_TWO $SUBMISSION_LOG_PRIME
|
||||
fi
|
||||
|
||||
sed -e 's/\.cde-1/cde/
|
||||
s/\.cde-2/cde/
|
||||
s/\.cde-3/cde/
|
||||
s/\.cde-test-1/cde-test/
|
||||
s/\.cde-test-2/cde-test/
|
||||
s/\.cde-test-3/cde-test/
|
||||
s/\.motif-1/motif/
|
||||
s/\.motif-2/motif/' $SUBMISSION_LOG_PRIME > $SUBMISSION_LOG
|
||||
fi
|
||||
|
||||
PROJECTS="cde cde-contrib cde-cts cde-misc cde-test cde-test-misc
|
||||
motif motif-cts motif-misc x11/misc x11/unsupported x11"
|
||||
|
||||
#
|
||||
# Redirect output
|
||||
#
|
||||
if [ "$DEBUG" = "False" ]; then
|
||||
EXECUTIVE_SUMMARY_LOG=/tmp/$PROG_NAME.execsum.$$
|
||||
do_register_temporary_file $EXECUTIVE_SUMMARY_LOG
|
||||
touch $EXECUTIVE_SUMMARY_LOG
|
||||
|
||||
exec 9>&1
|
||||
exec > $EXECUTIVE_SUMMARY_LOG
|
||||
fi
|
||||
|
||||
DATE=`date "$BTAG_DFMT"`
|
||||
print -u1 " CLEARCASE EVENT SUMMARY FOR: $DATE"
|
||||
print -u1 " +++++++++++++++++++++++++++++++++++++++++++++++"
|
||||
print -u1
|
||||
print -u1
|
||||
|
||||
if [ ! -s $SUBMISSION_LOG ]; then
|
||||
HAVE_EVENTS="False"
|
||||
print -u1 "NO events were found."
|
||||
fi
|
||||
|
||||
|
||||
if [ "True" = "$DO_SUMMARY" -a "True" = "$HAVE_EVENTS" ]; then
|
||||
|
||||
for p in $PROJECTS
|
||||
do
|
||||
COMPONENTS_FILE=$SCRIPTS_DIR/$p.components
|
||||
if [ -f $COMPONENTS_FILE ]; then
|
||||
#
|
||||
# Correct for the missing 'xc' subdirectory in x11.components
|
||||
#
|
||||
if [ "$p" = "x11" ]; then
|
||||
p=x11/xc
|
||||
fi
|
||||
|
||||
for c in `cat $COMPONENTS_FILE`
|
||||
do
|
||||
do_executive_summary /proj/$p/$c
|
||||
done
|
||||
else
|
||||
do_executive_summary /proj/$p
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "True" = "$DO_LISTING" -a "True" = "$HAVE_EVENTS" ]; then
|
||||
print -u1
|
||||
print -u1
|
||||
print -u1 " CLEARCASE EVENT LISTING"
|
||||
print -u1 " +++++++++++++++++++++++"
|
||||
print -u1
|
||||
print -u1
|
||||
|
||||
for p in $PROJECTS
|
||||
do
|
||||
COMPONENTS_FILE=$SCRIPTS_DIR/$p.components
|
||||
if [ -f $COMPONENTS_FILE ]; then
|
||||
#
|
||||
# Correct for the missing 'xc' subdirectory in x11.components
|
||||
#
|
||||
if [ "$p" = "x11" ]; then
|
||||
p=x11/xc
|
||||
fi
|
||||
|
||||
for c in `cat $COMPONENTS_FILE`
|
||||
do
|
||||
do_listing_summary /proj/$p/$c
|
||||
done
|
||||
else
|
||||
do_listing_summary /proj/$p
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Complete the build summary and mail it or dump it to stdout
|
||||
#
|
||||
if [ "" != "$MAIL_LIST" ]; then
|
||||
mailx -s "$SUBJECT_SUBMISSIONS (`date $SUBJECT_DATE`)" "$MAIL_LIST" < \
|
||||
$EXECUTIVE_SUMMARY_LOG
|
||||
fi
|
||||
|
||||
if [ "" != "$LOG_PATH" ]; then
|
||||
cp $EXECUTIVE_SUMMARY_LOG $LOG_PATH
|
||||
fi
|
||||
|
||||
if [ "$DEBUG" = "False" -a "" = "$MAIL_LIST" -a "" = "$LOG_PATH" ]; then
|
||||
exec >&9
|
||||
cat $EXECUTIVE_SUMMARY_LOG
|
||||
fi
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
if [ "True" = "$DO_DELETE" ]; then
|
||||
do_exit 0
|
||||
fi
|
||||
exit 0
|
||||
@@ -0,0 +1,59 @@
|
||||
admin
|
||||
config
|
||||
databases
|
||||
lib/DtHelp
|
||||
lib/DtMmdb
|
||||
lib/DtMrm
|
||||
lib/DtPrint
|
||||
lib/DtSearch
|
||||
lib/DtSvc
|
||||
lib/DtTerm
|
||||
lib/DtWidget
|
||||
lib/cs
|
||||
lib/pam
|
||||
lib/tt
|
||||
osf/bindings
|
||||
osf/uil
|
||||
osf/wml
|
||||
osf/xmbind
|
||||
programs/doc
|
||||
programs/dsdm
|
||||
programs/dtaction
|
||||
programs/dtappbuilder
|
||||
programs/dtappintegrate
|
||||
programs/dtcalc
|
||||
programs/dtcm
|
||||
programs/dtconfig
|
||||
programs/dtcreate
|
||||
programs/dtdbcache
|
||||
programs/dtdocbook
|
||||
programs/dtdspmsg
|
||||
programs/dtexec
|
||||
programs/dtfile
|
||||
programs/dthello
|
||||
programs/dthelp
|
||||
programs/dticon
|
||||
programs/dtimsstart
|
||||
programs/dtinfo
|
||||
programs/dtksh
|
||||
programs/dtlogin
|
||||
programs/dtmail
|
||||
programs/dtpad
|
||||
programs/dtpdm
|
||||
programs/dtpdmd
|
||||
programs/dtprintegrate
|
||||
programs/dtprintinfo
|
||||
programs/dtscreen
|
||||
programs/dtsearchpath
|
||||
programs/dtsession
|
||||
programs/dtspcd
|
||||
programs/dtsr
|
||||
programs/dtstyle
|
||||
programs/dtterm
|
||||
programs/dtudcexch
|
||||
programs/dtudcfonted
|
||||
programs/dtwm
|
||||
programs/localized
|
||||
programs/nsgmls
|
||||
programs/ttsnoop
|
||||
programs/tttypes
|
||||
@@ -0,0 +1,237 @@
|
||||
##########################################################################
|
||||
#
|
||||
# File: cron_database
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
#
|
||||
#
|
||||
# This is a build database file used by the cron_scripts script to start
|
||||
# the various build and report scripts from crontab. cron_scripts is intended
|
||||
# to provide a level of indirection which allows the nightly builds to be
|
||||
# controlled without having to edit crontab entries.
|
||||
#
|
||||
# To set up an automated build on a particular machine you will need to
|
||||
# do the following:
|
||||
#
|
||||
# 1. Checkout /proj/cde/admin/BuildTools/tog/cron_database.
|
||||
# Edit it as specified in the section explaining the database format.
|
||||
# Check it back in when satisfied with the entries.
|
||||
# Copy it to /project/dt/admin/cron
|
||||
#
|
||||
# 2. Log onto the desired machine as 'devobj' and add the following line
|
||||
# to the crontab entries:
|
||||
#
|
||||
# 15 * * * * /project/dt/scripts/cron_scripts
|
||||
#
|
||||
# The crontab entry will cause cron_scripts to run every hour at 15 minutes
|
||||
# past the hour. The script checks the database to see if there is a valid
|
||||
# entry for the MachineName, FullWeekdayName, and 24HourClockHour. If
|
||||
# such an entry does NOT exists, cron_scripts simply exits. Otherwise,
|
||||
# if the view is not set to 'none' it sets the view and exectutes the
|
||||
# specified command line. If the view is set to 'none' it just executes
|
||||
# the specified command line.
|
||||
#
|
||||
|
||||
#
|
||||
# Format:
|
||||
#
|
||||
# FullWeekdayName (aka `date +%A`)
|
||||
# 24HourClockHour (aka `date +%H`)
|
||||
# MachineName
|
||||
# View
|
||||
# CommandLine
|
||||
#
|
||||
# NOTE:
|
||||
# Comment Character = '#'
|
||||
# Line Continuation Character = '\'
|
||||
#
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# CDE Cron Jobs
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
#
|
||||
# Monday
|
||||
#
|
||||
Monday 02 build-hp cde-hp \
|
||||
/project/dt/scripts/build_id \
|
||||
-dev -log_path /project/dt/ID/cdeID
|
||||
Monday 03 build-hp cde-hp \
|
||||
/project/dt/scripts/build_id \
|
||||
-cdetest -log_path /project/dt/ID/cde-testID
|
||||
|
||||
Monday 05 hans none \
|
||||
/project/dt/scripts/make_report_dir
|
||||
-log_path /project/dt/logs/build/reports/LATEST
|
||||
Monday 06 hans cde-sun \
|
||||
/project/dt/scripts/cc_checkedout \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/checkedout
|
||||
Monday 06 hans cde-sun \
|
||||
/project/dt/scripts/cc_submissions \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/submitted
|
||||
Monday 07 hans none \
|
||||
/project/dt/scripts/build_summary_cron \
|
||||
-retries 3 \
|
||||
-c /project/dt/scripts/x11.components \
|
||||
-c /project/dt/scripts/motif.components \
|
||||
-c /project/dt/scripts/cde.components \
|
||||
-c /project/dt/scripts/cdedoc.components \
|
||||
-c /project/dt/scripts/cdetest.components \
|
||||
-s /project/dt/logs/build/cde-hp/LATEST/build.summary \
|
||||
-s /project/dt/logs/build/cde-sun/LATEST/build.summary \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/build.summary
|
||||
|
||||
Monday 19 build-hp cde-hp \
|
||||
/project/dt/scripts/build_world -dev -cdetest
|
||||
Monday 19 hans cde-sun \
|
||||
/project/dt/scripts/build_world -dev -cdetest
|
||||
|
||||
#
|
||||
# Tuesday
|
||||
#
|
||||
Tuesday 02 build-hp cde-hp \
|
||||
/project/dt/scripts/build_id \
|
||||
-dev -log_path /project/dt/ID/cdeID
|
||||
Tuesday 03 build-hp cde-hp \
|
||||
/project/dt/scripts/build_id \
|
||||
-cdetest -log_path /project/dt/ID/cde-testID
|
||||
|
||||
Tuesday 05 hans none \
|
||||
/project/dt/scripts/make_report_dir
|
||||
-log_path /project/dt/logs/build/reports/LATEST
|
||||
Tuesday 06 hans cde-sun \
|
||||
/project/dt/scripts/cc_checkedout \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/checkedout
|
||||
Tuesday 06 hans cde-sun \
|
||||
/project/dt/scripts/cc_submissions \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/submitted
|
||||
Tuesday 07 hans none \
|
||||
/project/dt/scripts/build_summary_cron \
|
||||
-retries 3 \
|
||||
-c /project/dt/scripts/x11.components \
|
||||
-c /project/dt/scripts/motif.components \
|
||||
-c /project/dt/scripts/cde.components \
|
||||
-c /project/dt/scripts/cdedoc.components \
|
||||
-c /project/dt/scripts/cdetest.components \
|
||||
-s /project/dt/logs/build/cde-hp/LATEST/build.summary \
|
||||
-s /project/dt/logs/build/cde-sun/LATEST/build.summary \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/build.summary
|
||||
|
||||
Tuesday 19 build-hp cde-hp \
|
||||
/project/dt/scripts/build_world -dev -cdetest
|
||||
Tuesday 19 hans cde-sun \
|
||||
/project/dt/scripts/build_world -dev -cdetest
|
||||
|
||||
#
|
||||
# Wednesday
|
||||
#
|
||||
Wednesday 02 build-hp cde-hp \
|
||||
/project/dt/scripts/build_id \
|
||||
-dev -log_path /project/dt/ID/cdeID
|
||||
Wednesday 03 build-hp cde-hp \
|
||||
/project/dt/scripts/build_id \
|
||||
-cdetest -log_path /project/dt/ID/cde-testID
|
||||
|
||||
Wednesday 05 hans none \
|
||||
/project/dt/scripts/make_report_dir
|
||||
-log_path /project/dt/logs/build/reports/LATEST
|
||||
Wednesday 06 hans cde-sun \
|
||||
/project/dt/scripts/cc_checkedout \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/checkedout
|
||||
Wednesday 06 hans cde-sun \
|
||||
/project/dt/scripts/cc_submissions \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/submitted
|
||||
Wednesday 07 hans none \
|
||||
/project/dt/scripts/build_summary_cron \
|
||||
-retries 3 \
|
||||
-c /project/dt/scripts/x11.components \
|
||||
-c /project/dt/scripts/motif.components \
|
||||
-c /project/dt/scripts/cde.components \
|
||||
-c /project/dt/scripts/cdedoc.components \
|
||||
-c /project/dt/scripts/cdetest.components \
|
||||
-s /project/dt/logs/build/cde-hp/LATEST/build.summary \
|
||||
-s /project/dt/logs/build/cde-sun/LATEST/build.summary \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/build.summary
|
||||
|
||||
Wednesday 19 build-hp cde-hp \
|
||||
/project/dt/scripts/build_world -dev -cdetest
|
||||
Wednesday 19 hans cde-sun \
|
||||
/project/dt/scripts/build_world -dev -cdetest
|
||||
|
||||
|
||||
#
|
||||
# Thursday
|
||||
#
|
||||
Thursday 02 build-hp cde-hp \
|
||||
/project/dt/scripts/build_id \
|
||||
-dev -log_path /project/dt/ID/cdeID
|
||||
Thursday 03 build-hp cde-hp \
|
||||
/project/dt/scripts/build_id \
|
||||
-cdetest -log_path /project/dt/ID/cde-testID
|
||||
|
||||
Thursday 05 hans none \
|
||||
/project/dt/scripts/make_report_dir
|
||||
-log_path /project/dt/logs/build/reports/LATEST
|
||||
Thursday 06 hans cde-sun \
|
||||
/project/dt/scripts/cc_checkedout \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/checkedout
|
||||
Thursday 06 hans cde-sun \
|
||||
/project/dt/scripts/cc_submissions \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/submitted
|
||||
Thursday 07 hans none \
|
||||
/project/dt/scripts/build_summary_cron \
|
||||
-retries 3 \
|
||||
-c /project/dt/scripts/x11.components \
|
||||
-c /project/dt/scripts/motif.components \
|
||||
-c /project/dt/scripts/cde.components \
|
||||
-c /project/dt/scripts/cdedoc.components \
|
||||
-c /project/dt/scripts/cdetest.components \
|
||||
-s /project/dt/logs/build/cde-hp/LATEST/build.summary \
|
||||
-s /project/dt/logs/build/cde-sun/LATEST/build.summary \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/build.summary
|
||||
|
||||
Thursday 19 build-hp cde-hp \
|
||||
/project/dt/scripts/build_world -dev -cdetest
|
||||
Thursday 19 hans cde-sun \
|
||||
/project/dt/scripts/build_world -dev -cdetest
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Friday
|
||||
#
|
||||
Friday 02 build-hp cde-hp \
|
||||
/project/dt/scripts/build_id \
|
||||
-dev -log_path /project/dt/ID/cdeID
|
||||
Friday 03 build-hp cde-hp \
|
||||
/project/dt/scripts/build_id \
|
||||
-cdetest -log_path /project/dt/ID/cde-testID
|
||||
|
||||
Friday 05 hans none \
|
||||
/project/dt/scripts/make_report_dir
|
||||
-log_path /project/dt/logs/build/reports/LATEST
|
||||
Friday 06 hans cde-sun \
|
||||
/project/dt/scripts/cc_checkedout \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/checkedout
|
||||
Friday 06 hans cde-sun \
|
||||
/project/dt/scripts/cc_submissions \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/submitted
|
||||
Friday 07 hans none \
|
||||
/project/dt/scripts/build_summary_cron \
|
||||
-retries 3 \
|
||||
-c /project/dt/scripts/x11.components \
|
||||
-c /project/dt/scripts/motif.components \
|
||||
-c /project/dt/scripts/cde.components \
|
||||
-c /project/dt/scripts/cdedoc.components \
|
||||
-c /project/dt/scripts/cdetest.components \
|
||||
-s /project/dt/logs/build/cde-hp/LATEST/build.summary \
|
||||
-s /project/dt/logs/build/cde-sun/LATEST/build.summary \
|
||||
-log_path /project/dt/logs/build/reports/LATEST/build.summary
|
||||
|
||||
Friday 16 build-hp cde-hp \
|
||||
/project/dt/scripts/build_world -clean -all
|
||||
Friday 16 hans cde-sun \
|
||||
/project/dt/scripts/build_world -clean -all
|
||||
@@ -0,0 +1,5 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Builds and reports
|
||||
#
|
||||
15 * * * * /project/dt/scripts/cron_scripts -db /project/dt/admin/cron/cde.crondb
|
||||
@@ -0,0 +1,9 @@
|
||||
doc/common
|
||||
doc/de_DE.ISO8859-1
|
||||
doc/es_ES.ISO8859-1
|
||||
doc/fr_FR.ISO8859-1
|
||||
doc/it_IT.ISO8859-1
|
||||
doc/ja_JP.dt-eucJP
|
||||
doc/C
|
||||
doc/tmp
|
||||
doc/util
|
||||
@@ -0,0 +1,54 @@
|
||||
config
|
||||
util
|
||||
tet
|
||||
src
|
||||
comp_suites/XmMT
|
||||
comp_suites/threadsafe
|
||||
comp_suites/DefConfig
|
||||
comp_suites/DtEditor
|
||||
comp_suites/DtSvc
|
||||
comp_suites/dtaction
|
||||
comp_suites/dtcm
|
||||
comp_suites/dtcalc
|
||||
comp_suites/dtfile
|
||||
comp_suites/dthelp
|
||||
comp_suites/dtpad
|
||||
comp_suites/dtspcd
|
||||
comp_suites/dtterm
|
||||
comp_suites/dtwm
|
||||
comp_suites/dtfp
|
||||
comp_suites/DtWidget
|
||||
comp_suites/dsdm
|
||||
comp_suites/dtstyle
|
||||
comp_suites/dtmail
|
||||
comp_suites/dtksh
|
||||
comp_suites/dtsearchpath
|
||||
comp_suites/dtappgather
|
||||
comp_suites/dtappintegrate
|
||||
comp_suites/dtlp
|
||||
comp_suites/dtscreen
|
||||
comp_suites/dtsession
|
||||
comp_suites/DevEnv
|
||||
comp_suites/examples
|
||||
comp_suites/synlib
|
||||
comp_suites/dtbuilder
|
||||
comp_suites/dtlogin
|
||||
comp_suites/vert-writing
|
||||
comp_suites/tt
|
||||
comp_suites/dtperf
|
||||
comp_suites/Xp
|
||||
comp_suites/printing
|
||||
comp_suites/dtudcexch
|
||||
comp_suites/dtudcfonted
|
||||
comp_suites/dtsr
|
||||
comp_suites/dtdocbook
|
||||
comp_suites/dtinfo
|
||||
comp_suites/onthespot
|
||||
comp_suites/xlib_udc
|
||||
sys_suites/shared
|
||||
sys_suites/Intop
|
||||
sys_suites/Stress
|
||||
sys_suites/CtPast
|
||||
sys_suites/ClipB
|
||||
sys_suites/CtMenu
|
||||
sys_suites/CHO
|
||||
Executable
+173
@@ -0,0 +1,173 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# compress_msg.ksh
|
||||
#
|
||||
########################################################################
|
||||
#set -x
|
||||
|
||||
DEBUG="False"
|
||||
ERROR_FILE=""
|
||||
LOG_FILE=""
|
||||
MESSAGE_FILES=""
|
||||
MESSAGES_INIT="XXXXXXX"
|
||||
MESSAGES="$MESSAGES_INIT"
|
||||
PROG_NAME="`basename $0`"
|
||||
|
||||
usage ()
|
||||
{
|
||||
print -u1 "USAGE: $1"
|
||||
print -u1 "\t{-e | -errorfile} <file>"
|
||||
print -u1 "\t # Specifies the error file to send errors."
|
||||
print -u1 "\t[-h | -? | -help]"
|
||||
print -u1 "\t # Print usage and exit"
|
||||
print -u1 "\t[{-l | -logfile} <file>]"
|
||||
print -u1 "\t # Specifies the file containing msgs to be compressed"
|
||||
print -u1 "\t # Defaults to using stdin"
|
||||
print -u1 "\t[{-m | -msgfile} <file>]"
|
||||
print -u1 "\t # Specifies a file containing messages to be"
|
||||
print -u1 "\t # extracted. Multiple -m flags can be specified."
|
||||
print -u1 "\t[messages ...]"
|
||||
print -u1 "\t # Specifies individual messages to be extraced."
|
||||
}
|
||||
|
||||
#
|
||||
# Do command-line processing
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
|
||||
-debug)
|
||||
DEBUG="True"
|
||||
shift 1 ;;
|
||||
|
||||
-e | -errorfile)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
ERROR_FILE=$2
|
||||
shift 2 ;;
|
||||
|
||||
-m | -msgfile)
|
||||
MESSAGE_FILES="$MESSAGE_FILES $2"
|
||||
shift 2 ;;
|
||||
|
||||
-l | -logfile)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
LOG_FILE=$2
|
||||
shift 2 ;;
|
||||
|
||||
-h | -? | -help)
|
||||
usage $PROG_NAME
|
||||
exit 1 ;;
|
||||
|
||||
*)
|
||||
MESSAGES="$MESSAGES|$1"
|
||||
shift 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ ! -z "$ERROR_FILE" ]
|
||||
then
|
||||
exec 2>> $ERROR_FILE
|
||||
fi
|
||||
|
||||
#
|
||||
# Check to make sure that the command-line parameters make sense.
|
||||
#
|
||||
if [ -z "$MESSAGE_FILES" ] && [ "$MESSAGES" = "$MESSAGES_INIT" ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: No messages or message files have been specified."
|
||||
print -u2 "$PROG_NAME: exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for f in $MESSAGE_FILES
|
||||
do
|
||||
if [ ! -f $f ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Message file \"$f\" does not exist; exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$LOG_FILE" -a ! -f "$LOG_FILE" ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Log file \"$LOG_FILE\" does not exist; exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Collect all the regular expressions from the message files
|
||||
# ignoring those that have been commented out.
|
||||
#
|
||||
for f in $MESSAGE_FILES
|
||||
do
|
||||
IFS="
|
||||
"
|
||||
for m in `cat $f`
|
||||
do
|
||||
MESSAGES="$MESSAGES|$m"
|
||||
done
|
||||
IFS=" "
|
||||
done
|
||||
|
||||
#
|
||||
# Build the awk script
|
||||
#
|
||||
SCRIPT=/tmp/${PROG_NAME}.$$.awk
|
||||
|
||||
touch $SCRIPT
|
||||
chmod 775 $SCRIPT
|
||||
print -n -u1 'BEGIN {
|
||||
do_print = 0
|
||||
}
|
||||
/.*/ {
|
||||
if (' >> $SCRIPT
|
||||
|
||||
IFS="|"
|
||||
let i=0
|
||||
for m in $MESSAGES
|
||||
do
|
||||
if [ i -gt 0 ]; then
|
||||
print -n -u1 " || " >> $SCRIPT
|
||||
fi
|
||||
print -n -u1 "index(\$0, \"$m \")" >> $SCRIPT
|
||||
let i=$i+1
|
||||
done
|
||||
IFS=" "
|
||||
|
||||
|
||||
print -n -u1 ') {
|
||||
save = $0
|
||||
do_print = 1
|
||||
next
|
||||
}
|
||||
if (do_print)
|
||||
{
|
||||
print ">>>" save "<<<"
|
||||
do_print = 0
|
||||
}
|
||||
print
|
||||
}' >> $SCRIPT
|
||||
|
||||
#
|
||||
# Use the awk script to extract the desired messages from the log file.
|
||||
#
|
||||
if [ -n "$LOG_FILE" ]; then
|
||||
exec < $LOG_FILE
|
||||
fi
|
||||
awk -f $SCRIPT
|
||||
|
||||
#
|
||||
# Clean up
|
||||
#
|
||||
if [ "$DEBUG" != "True" ]
|
||||
then
|
||||
/bin/rm $SCRIPT
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Executable
+162
@@ -0,0 +1,162 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# $TOG: cron_scripts /main/11 1999/04/26 11:42:51 mgreess $
|
||||
#
|
||||
# This script is run on all of the systems where an automated
|
||||
# X build will occur.
|
||||
#
|
||||
# The main benefit of using this script is that if the type of build
|
||||
# that needs to be done changes, (e.g. a clean build is needed
|
||||
# instead of an incremental build), then only this file needs to be
|
||||
# changed and none of the crontabs need to be changed.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
#
|
||||
# The following trap is needed because of a bug in the UXP (Fujitsu)
|
||||
# version of ksh.
|
||||
#
|
||||
trap 'echo "Trapped signal USR1"' USR1
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
if [ "" = "$ADMIN_CRON" ]; then
|
||||
ADMIN_CRON=/project/dt/admin/cron
|
||||
fi
|
||||
if [ "" = "$CRON_DATABASE" ]; then
|
||||
CRON_DATABASE=$ADMIN_CRON/crondb
|
||||
fi
|
||||
|
||||
DEBUG=""
|
||||
MAIL_TO=""
|
||||
PROG_NAME="`basename $0`"
|
||||
|
||||
##########################################################################
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $PROG_NAME
|
||||
|
||||
[-debug]
|
||||
# Debugging output
|
||||
[{-db | -database} <cron_database_file>]
|
||||
# Specify the cron database
|
||||
# Default: $CRON_DATABASE
|
||||
[{-m | -mail} <email>]
|
||||
# Specify an alternate email recipient for unexpected output.
|
||||
# Default: $CDE_MAIL_ALIAS or $X_MAIL_ALIAS
|
||||
[{-sd | -script_dir} <directory>]
|
||||
# Specify an alternate directory for required files.
|
||||
# Default: $SCRIPTS_DIR/
|
||||
[-h | -? | -help]
|
||||
# Print usage and exit
|
||||
eof
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
-debug) DO_DEBUG="True"
|
||||
DEBUG="echo"
|
||||
shift 1 ;;
|
||||
|
||||
-db | -database) CRON_DATABASE=$2;
|
||||
shift 2 ;;
|
||||
|
||||
-m | -mail) MAIL_TO=$2;
|
||||
shift 2 ;;
|
||||
|
||||
-sd | -script_dir) SCRIPTS_DIR=$2;
|
||||
export SCRIPTS_DIR;
|
||||
shift 2 ;;
|
||||
|
||||
-h | "-?" | -help | *) usage $PROG_NAME;
|
||||
exit 1;
|
||||
esac
|
||||
done
|
||||
|
||||
#
|
||||
# Capture all of the spurious output to stdout and stderr
|
||||
#
|
||||
LOGFILE=/tmp/$$.log
|
||||
exec > $LOGFILE 2>&1
|
||||
|
||||
#
|
||||
# TRACE should be passed into the script as an environment variable
|
||||
# i.e., TRACE=true cron_scripts ...
|
||||
#
|
||||
if [ "" != "$TRACE" ]; then
|
||||
echo Debugging: $DO_DEBUG
|
||||
echo Cron Database: $CRON_DATABASE
|
||||
echo Mail Recipient: $MAIL_TO
|
||||
echo Scripts Dir: $SCRIPTS_DIR
|
||||
set -x
|
||||
fi
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: Do this after the command line parsing to pick up
|
||||
# an alternate setting of SCRIPTS_DIR
|
||||
#
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
do_check_file $CRON_DATABASE -f "NOT found"
|
||||
|
||||
|
||||
COMM="#"
|
||||
DAY="`date +%a`"
|
||||
HOST="`uname -n | sed '/\./s/\..*//'`"
|
||||
HOUR="`date +%H`"
|
||||
|
||||
cat $CRON_DATABASE | while read LINE; do
|
||||
|
||||
ENTRY="`echo $LINE | grep -v $COMM | grep $HOST | grep $DAY | grep $HOUR`"
|
||||
EDAY="`echo $ENTRY | awk '{ print $1 }'`"
|
||||
EHOUR="`echo $ENTRY | awk '{ print $2 }'`"
|
||||
EHOST="`echo $ENTRY | awk '{ print $3 }'`"
|
||||
EVIEW="`echo $ENTRY | awk '{ print $4 }'`"
|
||||
ECOMMAND="`echo $ENTRY | awk '{ for (i=5; i<=NF; i++) printf(\"%s \",$i) }'`"
|
||||
|
||||
if [ -n "$ENTRY" -a "$HOUR" = "$EHOUR" ]; then
|
||||
if [ "none" = "$EVIEW" ]; then
|
||||
$DEBUG $ECOMMAND
|
||||
else
|
||||
$DEBUG $CLEAR_CASE_TOOL setview -exec "$ECOMMAND" $EVIEW
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
if [ -s $LOGFILE ]; then
|
||||
if [ "" = "$MAIL_TO" ]; then
|
||||
if [ "`basename $CRON_DATABASE`" = "trw.crondb" ]; then
|
||||
MAIL_TO=$TRW_MAIL_ALIAS
|
||||
elif [ "`basename $CRON_DATABASE`" = "cde.crondb" ]; then
|
||||
MAIL_TO=$CDE_MAIL_ALIAS
|
||||
elif [ "`basename $CRON_DATABASE`" = "x.crondb" ]; then
|
||||
MAIL_TO=$X_MAIL_ALIAS
|
||||
else
|
||||
MAIL_TO=$CDE_MAIL_ALIAS
|
||||
fi
|
||||
fi
|
||||
mailx -s "Warning: unexpected cron output" $MAIL_TO < $LOGFILE
|
||||
fi
|
||||
rm -f $LOGFILE
|
||||
@@ -0,0 +1,32 @@
|
||||
ERROR
|
||||
Error:
|
||||
Error
|
||||
Error code
|
||||
error code
|
||||
failed
|
||||
ERROR
|
||||
:E:
|
||||
Can\'t
|
||||
Cannot write
|
||||
Cannot find
|
||||
Don\'t
|
||||
FATAL
|
||||
No space
|
||||
\(S\)
|
||||
\(U\)
|
||||
SGML error
|
||||
^gencat:
|
||||
cannot
|
||||
core dumped
|
||||
couldn't
|
||||
error:
|
||||
error;
|
||||
failed:
|
||||
fatal:
|
||||
killed
|
||||
not found
|
||||
parser errors
|
||||
permission
|
||||
too many
|
||||
Must be a separator
|
||||
I\/O error
|
||||
@@ -0,0 +1,7 @@
|
||||
dfiles d Basic Error FolioObject
|
||||
dfiles h Basic Error FolioObject
|
||||
dfiles d Basic Error FolioObject
|
||||
dfiles h Basic Error FolioObject
|
||||
tt_client_on_exit_killed
|
||||
UX:make: ERROR: \$\? \(bu35\)
|
||||
SGML error at
|
||||
@@ -0,0 +1,10 @@
|
||||
cleaning in
|
||||
depending in
|
||||
including in
|
||||
making Makefiles in
|
||||
making all in
|
||||
making imake with
|
||||
building in
|
||||
build installing in
|
||||
build install in
|
||||
extracting errors and warnings in
|
||||
@@ -0,0 +1,8 @@
|
||||
WARNING
|
||||
Warning
|
||||
Warning:
|
||||
warning
|
||||
warning:
|
||||
warning\(
|
||||
\(E\)
|
||||
mkcatdefs: no
|
||||
Executable
+278
@@ -0,0 +1,278 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# extract_log.ksh
|
||||
#
|
||||
########################################################################
|
||||
#set -x
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
COMPONENTS_FILES=""
|
||||
COMPONENTS=""
|
||||
DEBUG="False"
|
||||
LOG_FILE=""
|
||||
ERROR_FILE=""
|
||||
LOG_DIRECTORY=""
|
||||
PROG_NAME="`basename $0`"
|
||||
|
||||
usage ()
|
||||
{
|
||||
print -u1 "USAGE: $1"
|
||||
print -u1 "\t[{-c | -components_file} <file>]"
|
||||
print -u1 "\t # Specifies a file containing a list of components to"
|
||||
print -u1 "\t # be extracted. Multiple -c flags can be specified."
|
||||
print -u1 "\t{-e | -errorfile} <file>"
|
||||
print -u1 "\t # Specifies the error file to send errors."
|
||||
print -u1 "\t[-h | -? | -help]"
|
||||
print -u1 "\t # Print usage and exit"
|
||||
print -u1 "\t[{-ld | -logdirectory} <directory>]"
|
||||
print -u1 "\t # Specifies an alternative directory to store the"
|
||||
print -u1 "\t # extracted component logs. Defaults to the directory"
|
||||
print -u1 "\t # containing the log file."
|
||||
print -u1 "\t{-l | -logfile} <file>"
|
||||
print -u1 "\t # Specifies the log file to be extracted from."
|
||||
print -u1 "\t[component ...]"
|
||||
print -u1 "\t # Specifies individual components to be extraced."
|
||||
print -u1 "\t # Each component specification is should correspond"
|
||||
print -u1 "\t # to an individual directory in the source tree."
|
||||
}
|
||||
|
||||
#
|
||||
# Do command-line processing
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
|
||||
-debug)
|
||||
DEBUG="True"
|
||||
shift 1 ;;
|
||||
|
||||
-c | -components_file)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
COMPONENTS_FILES="$2 $COMPONENTS_FILES"
|
||||
shift 2 ;;
|
||||
|
||||
-e | -errorfile)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
ERROR_FILE=$2
|
||||
shift 2 ;;
|
||||
|
||||
-ld | -logdirectory)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
LOG_DIRECTORY=$2
|
||||
shift 2 ;;
|
||||
|
||||
-l | -logfile)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
LOG_FILE=$2
|
||||
shift 2 ;;
|
||||
|
||||
-h | -? | -help)
|
||||
usage $PROG_NAME
|
||||
do_exit 1 ;;
|
||||
|
||||
*)
|
||||
COMPONENTS="$COMPONENTS $1"
|
||||
shift 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ ! -z "$ERROR_FILE" ]
|
||||
then
|
||||
exec 2>> $ERROR_FILE
|
||||
fi
|
||||
|
||||
#
|
||||
# Check to make sure that the command-line parameters make sense.
|
||||
#
|
||||
if [ -z "$COMPONENTS_FILES" ] && [ -z "$COMPONENTS" ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: No components or component files specified."
|
||||
print -u2 "$PROG_NAME: exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
|
||||
for f in $COMPONENTS_FILES
|
||||
do
|
||||
if [ ! -f $f ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Component file \"$f\" does not exist."
|
||||
print -u2 "$PROG_NAME: exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$LOG_FILE" ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Missing argument for log file."
|
||||
print -u2 "$PROG_NAME: exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f $LOG_FILE ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Log file \"$LOG_FILE\" does not exist."
|
||||
print -u2 "$PROG_NAME: exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$LOG_DIRECTORY" ] && [ ! -d $LOG_DIRECTORY ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Log directory \"$LOG_DIRECTORY\" does not exist."
|
||||
print -u2 "$PROG_NAME: exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$LOG_DIRECTORY" ]
|
||||
then
|
||||
LOG_DIRECTORY=`dirname $LOG_FILE`
|
||||
#
|
||||
# Just being paranoid. dirname should return '.' if there is no
|
||||
# directory component.
|
||||
#
|
||||
if [ -z "$LOG_DIRECTORY" ]
|
||||
then
|
||||
LOG_DIRECTORY='.'
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Collect all the components from the components files.
|
||||
#
|
||||
for f in "$COMPONENTS_FILES"
|
||||
do
|
||||
for c in `cat $f`
|
||||
do
|
||||
COMPONENTS="$COMPONENTS $c"
|
||||
done
|
||||
done
|
||||
|
||||
#
|
||||
# Collect all the build messages
|
||||
# ignoring those that have been commented out.
|
||||
#
|
||||
MESSAGES="XXXXXXX"
|
||||
IFS="
|
||||
"
|
||||
for m in `cat $BUILD_MSGS`
|
||||
do
|
||||
MESSAGES="$MESSAGES|$m"
|
||||
done
|
||||
IFS=" "
|
||||
|
||||
#
|
||||
# Build the awk script
|
||||
#
|
||||
SCRIPT=/tmp/${PROG_NAME}.$$.awk
|
||||
do_register_temporary_file $SCRIPT
|
||||
|
||||
touch $SCRIPT
|
||||
chmod 775 $SCRIPT
|
||||
print -n -u1 'BEGIN {
|
||||
do_print = 0
|
||||
}
|
||||
/.*/ {
|
||||
if (' >> $SCRIPT
|
||||
|
||||
IFS="|"
|
||||
let i=0
|
||||
for m in $MESSAGES
|
||||
do
|
||||
if [ i -gt 0 ]; then
|
||||
print -n -u1 " || " >> $SCRIPT
|
||||
fi
|
||||
print -n -u1 "index(\$0, \"$m \")" >> $SCRIPT
|
||||
let i=$i+1
|
||||
done
|
||||
IFS=" "
|
||||
|
||||
#
|
||||
# NOTE on: (index($NF, PATTERN) == 1 || index($NF, PATTERN) == 3)
|
||||
# This check is intended to guard against false matches on
|
||||
# subcomponents: i.e. config and programs/dtlogin/config.
|
||||
# The problem is that top level subdirectories show up differently
|
||||
# than lower level directories. E.g.:
|
||||
# /prog/cde/config => making all in ./config...
|
||||
# /prog/cde/programs/dtlogin => making all in programs/dtlogin...
|
||||
#
|
||||
# There are 2 ways to handle this, in the components files or here.
|
||||
# I've chosen here.
|
||||
#
|
||||
print -n -u1 ')
|
||||
{
|
||||
if (index($NF, PATTERN) == 1 || index($NF, PATTERN) == 3)
|
||||
{
|
||||
do_print = 1
|
||||
print
|
||||
next
|
||||
}
|
||||
else
|
||||
{
|
||||
do_print = 0
|
||||
next
|
||||
}
|
||||
}
|
||||
if (do_print) print
|
||||
}' >> $SCRIPT
|
||||
|
||||
#
|
||||
# Extract each of the specified component logs.
|
||||
#
|
||||
TMP_LOG_FILE=${LOG_FILE}.$$
|
||||
do_register_temporary_file $TMP_LOG_FILE
|
||||
|
||||
sed -n -e 's/\(.\{0,254\}\).*/\1/p' $LOG_FILE > $TMP_LOG_FILE
|
||||
for c in $COMPONENTS
|
||||
do
|
||||
COMPONENT_LOG=$LOG_DIRECTORY/`echo $c | tr "/" ","`.log
|
||||
PATTERN="$c"
|
||||
|
||||
#
|
||||
# sed protects awk from lines which are too long.
|
||||
#
|
||||
if [ "$DEBUG" = "True" ]
|
||||
then
|
||||
echo "awk -f $SCRIPT PATTERN=$PATTERN $TMP_LOG_FILE >
|
||||
$COMPONENT_LOG"
|
||||
else
|
||||
awk -f $SCRIPT PATTERN=$PATTERN $TMP_LOG_FILE > $COMPONENT_LOG
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
do_exit 0
|
||||
@@ -0,0 +1,67 @@
|
||||
|
||||
BEGIN {
|
||||
do_print = 0
|
||||
}
|
||||
/making Makefiles in / {
|
||||
pos = match($NF, PATTERN)
|
||||
if (pos == 1) {
|
||||
do_print = 1
|
||||
print
|
||||
next
|
||||
}
|
||||
else {
|
||||
do_print = 0
|
||||
next
|
||||
}
|
||||
}
|
||||
/cleaning in / {
|
||||
pos = match($NF, PATTERN)
|
||||
if (pos == 1) {
|
||||
do_print = 1
|
||||
print
|
||||
next
|
||||
}
|
||||
else {
|
||||
do_print = 0
|
||||
next
|
||||
}
|
||||
}
|
||||
/including in / {
|
||||
pos = match($NF, PATTERN)
|
||||
if (pos == 1) {
|
||||
do_print = 1
|
||||
print
|
||||
next
|
||||
}
|
||||
else {
|
||||
do_print = 0
|
||||
next
|
||||
}
|
||||
}
|
||||
/depending in / {
|
||||
pos = match($NF, PATTERN)
|
||||
if (pos == 1) {
|
||||
do_print = 1
|
||||
print
|
||||
next
|
||||
}
|
||||
else {
|
||||
do_print = 0
|
||||
next
|
||||
}
|
||||
}
|
||||
/making All in / {
|
||||
pos = match($NF, PATTERN)
|
||||
if (pos == 1) {
|
||||
do_print = 1
|
||||
print
|
||||
next
|
||||
}
|
||||
else {
|
||||
do_print = 0
|
||||
next
|
||||
}
|
||||
}
|
||||
/.*/ {
|
||||
if (do_print) print
|
||||
}
|
||||
Executable
+239
@@ -0,0 +1,239 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# extract_msg.ksh
|
||||
#
|
||||
########################################################################
|
||||
#set -x
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
DEBUG="False"
|
||||
IGNORED_MESSAGE_FILES=""
|
||||
IGNORED_MESSAGES_INIT="XXXXXXX"
|
||||
IGNORED_MESSAGES="$IGNORED_MESSAGES_INIT"
|
||||
LOG_FILE=""
|
||||
ERROR_FILE=""
|
||||
MESSAGE_FILES=""
|
||||
MESSAGES_INIT="XXXXXXX"
|
||||
MESSAGES="$MESSAGES_INIT"
|
||||
PROG_NAME="`basename $0`"
|
||||
|
||||
usage ()
|
||||
{
|
||||
print -u1 "USAGE: $1"
|
||||
print -u1 "\t{-e | -errorfile} <file>"
|
||||
print -u1 "\t # Specifies the error file to send errors."
|
||||
print -u1 "\t[-h | -? | -help]"
|
||||
print -u1 "\t # Print usage and exit"
|
||||
print -u1 "\t[{-i | -ignoredmsgfile} <file>]"
|
||||
print -u1 "\t # Specifies a file containing messages to be"
|
||||
print -u1 "\t # ignored. Multiple -i flags can be specified."
|
||||
print -u1 "\t{-l | -logfile} <file>"
|
||||
print -u1 "\t # Specifies the log file to be extracted from."
|
||||
print -u1 "\t[{-m | -msgfile} <file>]"
|
||||
print -u1 "\t # Specifies a file containing messages to be"
|
||||
print -u1 "\t # extracted. Multiple -m flags can be specified."
|
||||
print -u1 "\t[messages ...]"
|
||||
print -u1 "\t # Specifies individual messages to be extraced."
|
||||
}
|
||||
|
||||
#
|
||||
# Do command-line processing
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
|
||||
-debug)
|
||||
DEBUG="True"
|
||||
shift 1 ;;
|
||||
|
||||
-e | -errorfile)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
ERROR_FILE=$2
|
||||
shift 2 ;;
|
||||
|
||||
-i | -msgfile)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
IGNORED_MESSAGE_FILES="$IGNORED_MESSAGE_FILES $2"
|
||||
shift 2 ;;
|
||||
|
||||
-m | -msgfile)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
MESSAGE_FILES="$MESSAGE_FILES $2"
|
||||
shift 2 ;;
|
||||
|
||||
-l | -logfile)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
LOG_FILE=$2
|
||||
shift 2 ;;
|
||||
|
||||
-h | -? | -help)
|
||||
usage $PROG_NAME
|
||||
do_exit 1 ;;
|
||||
|
||||
*)
|
||||
MESSAGES="$MESSAGES|$1"
|
||||
shift 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ ! -z "$ERROR_FILE" ]
|
||||
then
|
||||
exec 2>> $ERROR_FILE
|
||||
fi
|
||||
|
||||
#
|
||||
# Check to make sure that the command-line parameters make sense.
|
||||
#
|
||||
if [ -z "$MESSAGE_FILES" ] && [ "$MESSAGES" = "$MESSAGES_INIT" ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: No messages or message files have been specified."
|
||||
print -u2 "$PROG_NAME: exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
|
||||
for f in $IGNORED_MESSAGE_FILES
|
||||
do
|
||||
if [ ! -f $f ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Message file \"$f\" does not exist; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
for f in $MESSAGE_FILES
|
||||
do
|
||||
if [ ! -f $f ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Message file \"$f\" does not exist; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$LOG_FILE" ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Missing argument for log file; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f $LOG_FILE ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Log file \"$LOG_FILE\" does not exist; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Determine where to find perl.
|
||||
#
|
||||
|
||||
PERL="/usr/local/bin/perl"
|
||||
if [ ! -x $PERL ]
|
||||
then
|
||||
print -u2 "$PROG_NAME: Can't find perl executable $PERL; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Collect all the regular expressions from the ignored message files.
|
||||
#
|
||||
for f in $IGNORED_MESSAGE_FILES
|
||||
do
|
||||
IGNORED_MESSAGES="$IGNORED_MESSAGES`sed -e '1,$s/.*/|&/' $f`"
|
||||
done
|
||||
|
||||
#
|
||||
# Collect all the regular expressions from the message files.
|
||||
#
|
||||
for f in $MESSAGE_FILES
|
||||
do
|
||||
MESSAGES="$MESSAGES`sed -e '1,$s/.*/|&/' $f`"
|
||||
done
|
||||
|
||||
if [ "$DEBUG" = "True" ]
|
||||
then
|
||||
print -u1 "======= DEBUG DEBUG IGNORED MESSAGES DEBUG DEBUG ========"
|
||||
print -u1 $IGNORED_MESSAGES
|
||||
print -u1 "======= DEBUG DEBUG ================ DEBUG DEBUG ========"
|
||||
print -u1 "======= DEBUG DEBUG MESSAGES DEBUG DEBUG ========"
|
||||
print -u1 $MESSAGES
|
||||
print -u1 "======= DEBUG DEBUG ================ DEBUG DEBUG ========"
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Build the perl script
|
||||
#
|
||||
SCRIPT=/tmp/${PROG_NAME}.$$.pl
|
||||
if [ "$DEBUG" = "False" ]
|
||||
then
|
||||
do_register_temporary_file $SCRIPT
|
||||
fi
|
||||
|
||||
touch $SCRIPT
|
||||
chmod 755 $SCRIPT
|
||||
print -u1 "#!$PERL" >> $SCRIPT
|
||||
print -u1 "LINE: while (<>) {" >> $SCRIPT
|
||||
|
||||
IFS="|"
|
||||
for m in $IGNORED_MESSAGES
|
||||
do
|
||||
MESSAGE=`echo $m | sed -e 's?\/?\\\/?g'`
|
||||
print -u1 "next LINE if /$MESSAGE/;" >> $SCRIPT
|
||||
done
|
||||
for m in $MESSAGES
|
||||
do
|
||||
MESSAGE=`echo $m | sed -e 's?\/?\\\/?g'`
|
||||
print -u1 "next LINE if /$MESSAGE/ && print;" >> $SCRIPT
|
||||
done
|
||||
IFS=" "
|
||||
|
||||
print -u1 "}" >> $SCRIPT
|
||||
|
||||
if [ "$DEBUG" = "True" ]
|
||||
then
|
||||
print -u1 "======= DEBUG DEBUG SCRIPT DEBUG DEBUG ========"
|
||||
cat $SCRIPT
|
||||
print -u1 "======= DEBUG DEBUG ================ DEBUG DEBUG ========"
|
||||
fi
|
||||
|
||||
#
|
||||
# Use the perl script to extract the desired messages from the log file.
|
||||
#
|
||||
if [ "$DEBUG" = "True" ]
|
||||
then
|
||||
print -u1 "======= DEBUG DEBUG RUN SCRIPT DEBUG DEBUG ========"
|
||||
print -u1 cat $LOG_FILE | $SCRIPT
|
||||
print -u1 "======= DEBUG DEBUG ================ DEBUG DEBUG ========"
|
||||
fi
|
||||
|
||||
cat $LOG_FILE | $SCRIPT
|
||||
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
do_exit 0
|
||||
Executable
+139
@@ -0,0 +1,139 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# initialize_view
|
||||
#
|
||||
########################################################################
|
||||
|
||||
PROG_NAME=$0
|
||||
X_TOP=/proj/x11/xc
|
||||
MOTIF_TOP=/proj/motif
|
||||
CDE_TOP=/proj/cde
|
||||
CDE_TEST_TOP=/proj/cde-test
|
||||
VERBOSE=""
|
||||
DEBUG=""
|
||||
|
||||
usage ()
|
||||
{
|
||||
print -u1 "USAGE: $1"
|
||||
print -u1 "\t[-v | -verbose] # Turn on tracing"
|
||||
print -u1 "\t[-d | -debug] # Print commands but do NOT execute them"
|
||||
}
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
-v | -verbose) VERBOSE="True"; shift 1 ;;
|
||||
|
||||
-d | -debug) DEBUG="echo"; shift 1 ;;
|
||||
|
||||
-h | -? | -help) usage $PROG_NAME
|
||||
shift 1
|
||||
exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "True" = "$VERBOSE" ]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
#
|
||||
# Motif
|
||||
#
|
||||
$DEBUG cd $MOTIF_TOP
|
||||
if [ ! -d exports ]; then
|
||||
$DEBUG mkdir exports
|
||||
$DEBUG chmod 777 exports
|
||||
fi
|
||||
if [ ! -d imports ]; then
|
||||
$DEBUG mkdir imports
|
||||
$DEBUG chmod 777 imports
|
||||
fi
|
||||
$DEBUG cd imports
|
||||
if [ ! -L x11 ]; then
|
||||
$DEBUG ln -s ../../x11/xc/exports x11
|
||||
fi
|
||||
|
||||
#
|
||||
# CDE
|
||||
#
|
||||
$DEBUG cd $CDE_TOP
|
||||
if [ ! -d exports ]; then
|
||||
$DEBUG mkdir exports
|
||||
$DEBUG chmod 777 exports
|
||||
fi
|
||||
if [ ! -d imports ]; then
|
||||
$DEBUG mkdir imports
|
||||
$DEBUG chmod 777 imports
|
||||
fi
|
||||
$DEBUG cd imports
|
||||
if [ ! -L x11 ]; then
|
||||
$DEBUG ln -s ../../motif/imports/x11 x11
|
||||
fi
|
||||
if [ ! -L motif ]; then
|
||||
$DEBUG ln -s ../../motif/exports motif
|
||||
fi
|
||||
|
||||
#
|
||||
# CDE test build config links
|
||||
#
|
||||
|
||||
if [ -d $CDE_TEST_TOP/config ]; then
|
||||
$DEBUG cd $CDE_TEST_TOP/config
|
||||
if [ ! -L OSVersion.tmpl ] || [ ! -L localtree.tmpl ]; then
|
||||
|
||||
case "`uname -s`" in
|
||||
HP-UX) if [ ! -L OSVersion.tmpl ]; then
|
||||
$DEBUG ln -s OSVersiontemplates/10.20 OSVersion.tmpl
|
||||
fi
|
||||
|
||||
if [ ! -L localtree.tmpl ]; then
|
||||
$DEBUG ln -s localtemplates/hpux/10.20/optimized.shared localtree.tmpl
|
||||
fi
|
||||
;;
|
||||
|
||||
OSF1) if [ ! -L OSVersion.tmpl ]; then
|
||||
$DEBUG ln -s OSVersiontemplates/4.0 OSVersion.tmpl
|
||||
fi
|
||||
|
||||
if [ ! -L localtree.tmpl ]; then
|
||||
$DEBUG ln -s localtemplates/dec/alpha/osf/optimized.sharedlibs localtree.tmpl
|
||||
fi
|
||||
;;
|
||||
|
||||
AIX) if [ ! -L OSVersion.tmpl ]; then
|
||||
$DEBUG ln -s OSVersiontemplates/4.2 OSVersion.tmpl
|
||||
fi
|
||||
|
||||
if [ ! -L localtree.tmpl ]; then
|
||||
$DEBUG ln -s localtemplates/ibm/rs6000/aix4.2/optimized.sharedlibs localtree.tmpl
|
||||
fi
|
||||
;;
|
||||
|
||||
SunOS) if [ ! -L OSVersion.tmpl ]; then
|
||||
$DEBUG ln -s OSVersiontemplates/5.4 OSVersion.tmpl
|
||||
fi
|
||||
|
||||
if [ ! -L localtree.tmpl ]; then
|
||||
$DEBUG ln -s localtemplates/sun/optimized.sharedlibs localtree.tmpl
|
||||
fi
|
||||
;;
|
||||
|
||||
UNIX_SV) if [ ! -L OSVersion.tmpl ]; then
|
||||
$DEBUG ln -s OSVersiontemplates/4.2 OSVersion.tmpl
|
||||
fi
|
||||
|
||||
if [ ! -L localtree.tmpl ]; then
|
||||
$DEBUG ln -s localtemplates/sun/optimized.sharedlibs localtree.tmpl
|
||||
fi
|
||||
;;
|
||||
|
||||
*) $DEBUG print -u1 "$PROG_NAME: Test build config links not set up for this architecture"
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
|
||||
else
|
||||
$DEBUG print -u2 "$PROG_NAME: CDE test config directory $CDE_TEST_TOP/config does not exist!"
|
||||
$DEBUG exit 1
|
||||
fi
|
||||
exit 0
|
||||
Executable
+190
@@ -0,0 +1,190 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
###########################################################################
|
||||
# set -x
|
||||
|
||||
DEBUG=""
|
||||
|
||||
X_TOP=/proj/x11/xc
|
||||
MOTIF_TOP=/proj/motif
|
||||
CDE_TOP=/proj/cde
|
||||
|
||||
LOG_DATE="`date +%h.%d,%H:%M:%S`"
|
||||
LOG_ROOT=/project/dt/logs/install
|
||||
VIEW=`/usr/atria/bin/cleartool pwv -s`
|
||||
LOG_DIR=$LOG_ROOT/$VIEW/$LOG_DATE
|
||||
|
||||
DO_X_INSTALL=False
|
||||
DO_MOTIF_INSTALL=False
|
||||
DO_CDE_INSTALL=False
|
||||
|
||||
CLEAN_CDE=False
|
||||
CLEAN_DIRS="/var/dt /etc/dt"
|
||||
|
||||
INSTALL_ALL_LOC_MSG=False
|
||||
INSTALL_ALL_LOC_HELP=False
|
||||
INSTALL_ALL_LOC_INFO=False
|
||||
|
||||
ALL_LOC_MSG="CDE-DE CDE-MSG-DE CDE-ES CDE-MSG-ES CDE-FR CDE-MSG-FR CDE-IT CDE-MSG-IT CDE-JP CDE-MSG-JP"
|
||||
ALL_LOC_HELP="CDE-HELP-DE CDE-HELP-ES CDE-HELP-FR CDE-HELP-IT CDE-HELP-JP"
|
||||
ALL_LOC_INFO="CDE-INFOLIB-DE CDE-INFOLIB-ES CDE-INFOLIB-FR CDE-INFOLIB-IT CDE-INFOLIB-JP"
|
||||
|
||||
MAKE=/usr/ccs/bin/make
|
||||
if [ "IRIX" = "`uname -s`" ]; then
|
||||
MAKE=/sbin/make
|
||||
fi
|
||||
|
||||
############################################################################
|
||||
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $1
|
||||
[-x | -x11] # Install X11 only
|
||||
[-m | -motif] # Install Motif only
|
||||
[-c | -cde] # Install CDE (C locale) only
|
||||
[-lm | -lmsg] # Install non-C locale message filesets ($ALL_LOC_MSG)
|
||||
[-lh | -lhelp] # Install non-C locale help filesets ($ALL_LOC_HELP)
|
||||
[-li | -linfo] # Install non-C locale infolib filesets ($ALL_LOC_INFO)
|
||||
[-a | -all] # Install everything, i.e. -x, -m, -c, -lm, -lh, -li
|
||||
[-clean] # Remove '$CLEAN_DIRS' before installing CDE
|
||||
[-d | -debug] # Print the install commands but do NOT execute them
|
||||
[{-l | -log | -log_dir} <log_dir>] # The default is '$LOG_DIR'
|
||||
[{-mail | mail_list} <user_names>]
|
||||
[-h | -? | -help] # Print usage and exit
|
||||
eof
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
-x | -x11) DO_X_INSTALL="True"
|
||||
shift 1 ;;
|
||||
|
||||
-m | -motif) DO_MOTIF_INSTALL="True"
|
||||
shift 1 ;;
|
||||
|
||||
-c | -cde) DO_CDE_INSTALL="True"
|
||||
shift 1 ;;
|
||||
|
||||
-a | -all) DO_X_INSTALL="True"
|
||||
DO_MOTIF_INSTALL="True"
|
||||
DO_CDE_INSTALL="True"
|
||||
INSTALL_ALL_LOC_MSG="True"
|
||||
INSTALL_ALL_LOC_HELP="True"
|
||||
INSTALL_ALL_LOC_INFO="True"
|
||||
shift 1 ;;
|
||||
|
||||
-lm | -lmsg) INSTALL_ALL_LOC_MSG="True"
|
||||
shift 1 ;;
|
||||
|
||||
-lh | -lhelp) INSTALL_ALL_LOC_HELP="True"
|
||||
shift 1 ;;
|
||||
|
||||
-li | -linfo) INSTALL_ALL_LOC_INFO="True"
|
||||
shift 1 ;;
|
||||
|
||||
-clean) CLEAN_CDE="True"
|
||||
shift 1 ;;
|
||||
|
||||
-d | -debug) DEBUG="echo"
|
||||
shift 1 ;;
|
||||
|
||||
-l | -log | -log_dir) LOG_DIR=$2;
|
||||
shift 2 ;;
|
||||
|
||||
-mail | -mail_list) MAIL_LIST=$2;
|
||||
shift 2 ;;
|
||||
|
||||
-h | "-?" | -help | *) usage $PROG_NAME;
|
||||
exit 1;
|
||||
esac
|
||||
done
|
||||
|
||||
#
|
||||
# Create the log directory
|
||||
#
|
||||
if [ -z "$CLEARCASE_ROOT" ]; then
|
||||
print -u1 "$0: you must have a view set to do an install. Exiting ... "
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Create the log directory
|
||||
#
|
||||
if [ ! -d "$LOG_DIR" ]; then
|
||||
$DEBUG mkdir -p $LOG_DIR
|
||||
fi
|
||||
|
||||
#
|
||||
# User must be root to do an install
|
||||
#
|
||||
id | grep root > /dev/null 2>&1
|
||||
if [ "0" != "$?" ]; then
|
||||
print -u1 "$0: only user 'root' may do an install. Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# X
|
||||
#
|
||||
if [ "True" = "$DO_X_INSTALL" ]; then
|
||||
$DEBUG cd $X_TOP
|
||||
$DEBUG $MAKE -i install > $LOG_DIR/x11.install 2>&1
|
||||
fi
|
||||
|
||||
#
|
||||
# Motif
|
||||
#
|
||||
if [ "True" = "$DO_MOTIF_INSTALL" ]; then
|
||||
$DEBUG cd $MOTIF_TOP
|
||||
$DEBUG $MAKE -i install.cde > $LOG_DIR/motif.install 2>&1
|
||||
fi
|
||||
|
||||
#
|
||||
# CDE
|
||||
#
|
||||
if [ "True" = "$CLEAN_CDE" ]; then
|
||||
$DEBUG rm -rf $CLEAN_DIRS
|
||||
fi
|
||||
|
||||
if [ "True" = "$DO_CDE_INSTALL" ]; then
|
||||
$DEBUG $CDE_TOP/admin/IntegTools/dbTools/installCDE \
|
||||
-s $CDE_TOP \
|
||||
> $LOG_DIR/cde.install 2>&1
|
||||
fi
|
||||
|
||||
#
|
||||
# All localized msgs
|
||||
#
|
||||
if [ "True" = "$INSTALL_ALL_LOC_MSG" ]; then
|
||||
$DEBUG $CDE_TOP/admin/IntegTools/dbTools/installCDE \
|
||||
-s $CDE_TOP \
|
||||
-f "$ALL_LOC_MSG" > \
|
||||
$LOG_DIR/localized_msg.install 2>&1
|
||||
fi
|
||||
|
||||
#
|
||||
# All localized help
|
||||
#
|
||||
if [ "True" = "$INSTALL_ALL_LOC_HELP" ]; then
|
||||
$DEBUG $CDE_TOP/admin/IntegTools/dbTools/installCDE \
|
||||
-s $CDE_TOP \
|
||||
-f "$ALL_LOC_HELP" > \
|
||||
$LOG_DIR/localized_help.install 2>&1
|
||||
fi
|
||||
|
||||
#
|
||||
# All localized infolibs
|
||||
#
|
||||
if [ "True" = "$INSTALL_ALL_LOC_INFO" ]; then
|
||||
$DEBUG $CDE_TOP/admin/IntegTools/dbTools/installCDE \
|
||||
-s $CDE_TOP \
|
||||
-f "$ALL_LOC_INFO" > \
|
||||
$LOG_DIR/localized_infolibs.install 2>&1
|
||||
fi
|
||||
|
||||
mv /tmp/CDE* $LOG_DIR
|
||||
Executable
+99
@@ -0,0 +1,99 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# make_report_dir
|
||||
#
|
||||
########################################################################
|
||||
#set -x
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
|
||||
DEBUG="False"
|
||||
LOG_PATH="/project/dt/logs/build/reports/LATEST"
|
||||
PROG_NAME="`basename $0`"
|
||||
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $PROG_NAME
|
||||
[-log_path <path>]
|
||||
[-h | -? | -help]
|
||||
# Print usage and exit
|
||||
#
|
||||
# '$PROG_NAME' creates a directory in the parent of the
|
||||
# specified path. The directory name is derived from the
|
||||
# current date. It then creates a link from the newly
|
||||
# created directory to the specified path in the same
|
||||
# parent directory.
|
||||
eof
|
||||
}
|
||||
|
||||
#
|
||||
# Do command-line processing
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
|
||||
case $1 in
|
||||
|
||||
-debug)
|
||||
DEBUG="True"
|
||||
shift ;;
|
||||
|
||||
-h | -help | '-?')
|
||||
usage $PROG_NAME
|
||||
do_exit 1 ;;
|
||||
|
||||
-lp | -log_path )
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
LOG_PATH=$2
|
||||
shift 2 ;;
|
||||
|
||||
*)
|
||||
print -u2 "$PROG_NAME: invalid option $1; exiting ..."
|
||||
do_exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
PARENT_REPORT_DIR=`dirname $LOG_PATH`
|
||||
REPORT_DIR=`basename $LOG_PATH`
|
||||
REPORT_DATE="`date +%h%d`"
|
||||
|
||||
if [ ! -d "$PARENT_REPORT_DIR/$REPORT_DATE" ]; then
|
||||
if [ -h "$PARENT_REPORT_DIR/$REPORT_DATE" ]; then
|
||||
rm "$PARENT_REPORT_DIR/$REPORT_DATE"
|
||||
fi
|
||||
mkdir -p "$PARENT_REPORT_DIR/$REPORT_DATE"
|
||||
fi
|
||||
|
||||
if [ -h "$PARENT_REPORT_DIR/$REPORT_DIR" ]; then
|
||||
rm "$PARENT_REPORT_DIR/$REPORT_DIR"
|
||||
fi
|
||||
ln -s "$REPORT_DATE" "$PARENT_REPORT_DIR/$REPORT_DIR"
|
||||
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
do_exit 1
|
||||
@@ -0,0 +1,13 @@
|
||||
bindings
|
||||
bitmaps
|
||||
clients/mwm
|
||||
clients/uil
|
||||
clients/xmbind
|
||||
config
|
||||
demos
|
||||
doc
|
||||
lib/Xm
|
||||
lib/Mrm
|
||||
localized
|
||||
tests
|
||||
tools/wml
|
||||
Executable
+96
@@ -0,0 +1,96 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# prune_logs
|
||||
#
|
||||
########################################################################
|
||||
#set -x
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
DEBUG=""
|
||||
FIND_OPTIONS=""
|
||||
OUTFILE="/dev/null"
|
||||
PATHNAME_LIST=""
|
||||
PROG_NAME="`basename $0`"
|
||||
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $PROG_NAME [options] pathname_list
|
||||
|
||||
[-debug]
|
||||
# Debugging output
|
||||
[-atime +ndays]
|
||||
[-ctime +ndays]
|
||||
[-mtime +ndays]
|
||||
# These flags are passed directly to find to identify
|
||||
# which files and directories should pass the test for
|
||||
# deletion.
|
||||
[-h | -? | -help]
|
||||
# Print usage and exit
|
||||
|
||||
pathname_list
|
||||
# List of directories to be searched for out-of-date
|
||||
# log files
|
||||
|
||||
$PROG_NAME uses find to search all the directories listed in
|
||||
pathname_list for files and subdirectories which are out-of-date
|
||||
as specified by the -atime, -ctime, and -mtime flags deleting
|
||||
any so identified.
|
||||
eof
|
||||
}
|
||||
|
||||
#
|
||||
# Do command-line processing
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
|
||||
-debug)
|
||||
DEBUG="echo"
|
||||
shift 1 ;;
|
||||
|
||||
-atime | -ctime | -mtime)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
FIND_OPTIONS="$FIND_OPTIONS $1 $2 "
|
||||
shift 2 ;;
|
||||
|
||||
-h | "-?" | -help)
|
||||
usage $PROG_NAME;
|
||||
do_exit 1 ;;
|
||||
|
||||
*)
|
||||
PATHNAME_LIST="$PATHNAME_LIST $1"
|
||||
shift 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
$DEBUG find $PATHNAME_LIST -depth -name '*' $FIND_OPTIONS -exec rm -f {} ";" > $OUTFILE 2>&1
|
||||
|
||||
do_exit 0
|
||||
Executable
+96
@@ -0,0 +1,96 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# prune_logs
|
||||
#
|
||||
########################################################################
|
||||
#set -x
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Script setup: THIS NEEDS TO BE FIRST
|
||||
#
|
||||
SCRIPTS_DIR="`dirname $0`"
|
||||
if [ "" = "$SCRIPTS_DIR" ]; then
|
||||
SCRIPTS_DIR=/project/dt/scripts
|
||||
fi
|
||||
if [ ! -f $SCRIPTS_DIR/script_setup.ksh ]; then
|
||||
print -u2 "$PRG: File '$SCRIPTS_DIR/script_setup.ksh' NOT found!"
|
||||
print -u2 "$PRG: Exiting ..."
|
||||
exit 1
|
||||
fi
|
||||
. $SCRIPTS_DIR/script_setup.ksh
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Script specific global variables
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
DEBUG=""
|
||||
FIND_OPTIONS=""
|
||||
OUTFILE="/dev/null"
|
||||
PATHNAME_LIST=""
|
||||
PROG_NAME="`basename $0`"
|
||||
|
||||
usage ()
|
||||
{
|
||||
cat <<eof
|
||||
USAGE: $PROG_NAME [options] pathname_list
|
||||
|
||||
[-debug]
|
||||
# Debugging output
|
||||
[-atime +ndays]
|
||||
[-ctime +ndays]
|
||||
[-mtime +ndays]
|
||||
# These flags are passed directly to find to identify
|
||||
# which files and directories should pass the test for
|
||||
# deletion.
|
||||
[-h | -? | -help]
|
||||
# Print usage and exit
|
||||
|
||||
pathname_list
|
||||
# List of directories to be searched for out-of-date
|
||||
# log files
|
||||
|
||||
$PROG_NAME uses find to search all the directories listed in
|
||||
pathname_list for files and subdirectories which are out-of-date
|
||||
as specified by the -atime, -ctime, and -mtime flags deleting
|
||||
any so identified.
|
||||
eof
|
||||
}
|
||||
|
||||
#
|
||||
# Do command-line processing
|
||||
#
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
|
||||
-debug)
|
||||
DEBUG="echo"
|
||||
shift 1 ;;
|
||||
|
||||
-atime | -ctime | -mtime)
|
||||
if [ $# -lt 2 ]; then
|
||||
print -u2 "$PROG_NAME: $1 option missing value; exiting ..."
|
||||
do_exit 1
|
||||
fi
|
||||
FIND_OPTIONS="$FIND_OPTIONS $1 $2 "
|
||||
shift 2 ;;
|
||||
|
||||
-h | "-?" | -help)
|
||||
usage $PROG_NAME;
|
||||
do_exit 1 ;;
|
||||
|
||||
*)
|
||||
PATHNAME_LIST="$PATHNAME_LIST $1"
|
||||
shift 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
#
|
||||
# Clean up temporary files and exit
|
||||
#
|
||||
$DEBUG find $PATHNAME_LIST -depth -name '*' $FIND_OPTIONS -exec gzip -f {} ";" > $OUTFILE 2>&1
|
||||
|
||||
do_exit 0
|
||||
@@ -0,0 +1,155 @@
|
||||
#!/bin/ksh
|
||||
#
|
||||
# script_setup.ksh
|
||||
#
|
||||
########################################################################
|
||||
#set -x
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Common global code
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
umask 002
|
||||
TEMPORARY_FILES=""
|
||||
trap '/bin/rm -f $TEMPORARY_FILES; exit 1' INT QUIT TERM
|
||||
|
||||
do_exit ()
|
||||
{
|
||||
do_delete_temporary_files
|
||||
exit $1
|
||||
}
|
||||
|
||||
do_delete_temporary_files ()
|
||||
{
|
||||
if [ -n "$TEMPORARY_FILES" ]; then
|
||||
/bin/rm -f $TEMPORARY_FILES
|
||||
TEMPORARY_FILES=""
|
||||
fi
|
||||
}
|
||||
|
||||
do_register_temporary_file ()
|
||||
{
|
||||
if [ -n "$1" ]; then
|
||||
if [ -z "$TEMPORARY_FILES" ]; then
|
||||
TEMPORARY_FILES="$1"
|
||||
else
|
||||
TEMPORARY_FILES="$TEMPORARY_FILES $1"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
do_check_file ()
|
||||
{
|
||||
# $1 = the file to check
|
||||
# $2 = file flag (e.g. "x" for -x, "f" for -f, etc.
|
||||
# #3 = error message
|
||||
|
||||
case $2 in
|
||||
-x) if [ ! -x $1 ]; then
|
||||
print -u2 "Exiting ... Executable '$1 $3"
|
||||
do_exit 1
|
||||
fi ;;
|
||||
-d) if [ ! -d $1 ]; then
|
||||
print -u2 "Exiting ... Directory '$1 $3"
|
||||
do_exit 1
|
||||
fi ;;
|
||||
-f) if [ ! -f $1 ]; then
|
||||
print -u2 "Exiting ... File '$1 $3"
|
||||
do_exit 1
|
||||
fi ;;
|
||||
-L) if [ ! -L $1 ]; then
|
||||
print -u2 "Exiting ... Sym link '$1 $3"
|
||||
do_exit 1
|
||||
fi ;;
|
||||
*) print -u2 "Exiting ... '$1' NOT found!"
|
||||
do_exit 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
#
|
||||
# Directory and executable paths.
|
||||
#
|
||||
CLEAR_CASE_TOOL=/usr/atria/bin/cleartool
|
||||
if [ "" = "$PROJECT_NAME" ]; then
|
||||
LOG_DIR_BASE=/project/dt/logs/build
|
||||
else
|
||||
LOG_DIR_BASE=/project/${PROJECT_NAME}/logs/build
|
||||
fi
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Initialize the scripts and data files
|
||||
#
|
||||
BUILD_PROJECT=$SCRIPTS_DIR/build_project
|
||||
BUILD_SUMMARY=$SCRIPTS_DIR/build_summary
|
||||
BUILD_WORLD=$SCRIPTS_DIR/build_world
|
||||
COMPONENT_FILE="-c $SCRIPTS_DIR/cde.components"
|
||||
COMPRESS_MSG=$SCRIPTS_DIR/compress_msg
|
||||
EXTRACT_LOG=$SCRIPTS_DIR/extract_log
|
||||
EXTRACT_MSG=$SCRIPTS_DIR/extract_msg
|
||||
INITIALIZE_VIEW=$SCRIPTS_DIR/initialize_view
|
||||
|
||||
CDE_COMPONENTS=$SCRIPTS_DIR/cde.components
|
||||
CDEDOC_COMPONENTS=$SCRIPTS_DIR/cdedoc.components
|
||||
CDETEST_COMPONENTS=$SCRIPTS_DIR/cdetest.components
|
||||
MOTIF_COMPONENTS=$SCRIPTS_DIR/motif.components
|
||||
X_COMPONENTS=$SCRIPTS_DIR/x11.components
|
||||
BUILD_MSGS=$SCRIPTS_DIR/dt_make.msg
|
||||
ERROR_MSGS=$SCRIPTS_DIR/dt_errors.msg
|
||||
IGNORE_MSGS=$SCRIPTS_DIR/dt_ignore.msg
|
||||
WARNING_MSGS=$SCRIPTS_DIR/dt_warnings.msg
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Strings used in the Subject line of mailed reports
|
||||
#
|
||||
SUBJECT_BUILD_SUMMARY="CDE: Build Summary"
|
||||
SUBJECT_SUBMISSIONS="CDE: Submissions"
|
||||
SUBJECT_CHECKOUTS="CDE: Check-Outs"
|
||||
SUBJECT_BUILD_COMPLETE="CDE: Build Complete"
|
||||
SUBJECT_DATE='+%m/%d/%y'
|
||||
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Build Strings marking information extracted by the build_summary script.
|
||||
#
|
||||
BTAG_CMPL="BUILD COMPLETE"
|
||||
BTAG_CFGS="BUILD CFG SPEC"
|
||||
BTAG_DATE="BUILD DATE "
|
||||
BTAG_DFMT="+%a %h %d, %H:%M"
|
||||
BTAG_LOGD="BUILD LOG DIR "
|
||||
BTAG_PRJT="BUILD PROJECT "
|
||||
BTAG_PTFM="BUILD PLATFORM"
|
||||
BTAG_TYPE="BUILD TYPE "
|
||||
BTAG_VIEW="BUILD VIEW "
|
||||
|
||||
BTAG_ENDD="BUILD ENDED "
|
||||
BTAG_LOGF="LOG FILE "
|
||||
BTAG_STRT="BUILD STARTED "
|
||||
BTAG_SYST="SYSTEM "
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# TOP of project development hierarchies
|
||||
#
|
||||
X_TOP=/proj/x11/xc
|
||||
MOTIF_TOP=/proj/motif
|
||||
CDE_TOP=/proj/cde
|
||||
CDEDOC_TOP=/proj/cde
|
||||
CDETEST_TOP=/proj/cde-test
|
||||
|
||||
##########################################################################
|
||||
#
|
||||
# Mail aliases for the project groups
|
||||
#
|
||||
TRW_MAIL_ALIAS="devtrw"
|
||||
CDE_MAIL_ALIAS="devobj"
|
||||
X_MAIL_ALIAS="devobj"
|
||||
@@ -0,0 +1,85 @@
|
||||
config
|
||||
doc
|
||||
fonts
|
||||
lib/FS
|
||||
lib/ICE
|
||||
lib/PEX5
|
||||
lib/SM
|
||||
lib/X11
|
||||
lib/XIE
|
||||
lib/Xa
|
||||
lib/Xau
|
||||
lib/Xaw
|
||||
lib/Xbsd
|
||||
lib/Xdmcp
|
||||
lib/Xext
|
||||
lib/Xi
|
||||
lib/Xmu
|
||||
lib/Xp
|
||||
lib/Xt
|
||||
lib/Xtst
|
||||
lib/font
|
||||
lib/lbxutil
|
||||
lib/oldX
|
||||
lib/xkbfile
|
||||
lib/xtrans
|
||||
lib/zlib
|
||||
nls
|
||||
programs/Xaserver
|
||||
programs/Xserver
|
||||
programs/appres
|
||||
programs/bdftopcf
|
||||
programs/bitmap
|
||||
programs/editres
|
||||
programs/fsinfo
|
||||
programs/fslsfonts
|
||||
programs/fstobdf
|
||||
programs/iceauth
|
||||
programs/lbxproxy
|
||||
programs/mkfontdir
|
||||
programs/oclock
|
||||
programs/proxymngr
|
||||
programs/rgb
|
||||
programs/rstart
|
||||
programs/scripts
|
||||
programs/smproxy
|
||||
programs/twm
|
||||
programs/x11perf
|
||||
programs/xauth
|
||||
programs/xclipboard
|
||||
programs/xclock
|
||||
programs/xcmsdb
|
||||
programs/xconsole
|
||||
programs/xdm
|
||||
programs/xdpyinfo
|
||||
programs/xfd
|
||||
programs/xfindproxy
|
||||
programs/xfs
|
||||
programs/xfwp
|
||||
programs/xhost
|
||||
programs/xieperf
|
||||
programs/xinit
|
||||
programs/xkbcomp
|
||||
programs/xkbevd
|
||||
programs/xkbprint
|
||||
programs/xkbutils
|
||||
programs/xkill
|
||||
programs/xlogo
|
||||
programs/xlsatoms
|
||||
programs/xlsclients
|
||||
programs/xlsfonts
|
||||
programs/xmag
|
||||
programs/xmh
|
||||
programs/xmodmap
|
||||
programs/xprop
|
||||
programs/xrdb
|
||||
programs/xrefresh
|
||||
programs/xrx
|
||||
programs/xset
|
||||
programs/xsetroot
|
||||
programs/xsm
|
||||
programs/xstdcmap
|
||||
programs/xterm
|
||||
programs/xwd
|
||||
programs/xwininfo
|
||||
programs/xwud
|
||||
@@ -0,0 +1,8 @@
|
||||
XCOMM $XConsortium: Imakefile /main/4 1995/10/30 13:41:46 rswiston $
|
||||
#define IHaveSubdirs
|
||||
#define PassCDebugFlags
|
||||
|
||||
SUBDIRS = IntegTools
|
||||
|
||||
MakeSubdirs($(SUBDIRS))
|
||||
DependSubdirs($(SUBDIRS))
|
||||
@@ -0,0 +1,44 @@
|
||||
XCOMM $XConsortium: Imakefile /main/5 1996/04/21 19:06:35 drk $
|
||||
#define IHaveSubdirs
|
||||
#define PassCDebugFlags
|
||||
|
||||
SUBDIRS = post_install dbTools updateTools
|
||||
|
||||
#ifdef RsArchitecture
|
||||
OVERRIDE=install.dt.ibm
|
||||
#endif
|
||||
|
||||
#ifdef HPArchitecture
|
||||
OVERRIDE=install.dt.hp
|
||||
#endif
|
||||
|
||||
#ifdef SunArchitecture
|
||||
LOCAL_CPP_DEFINES=-Usun
|
||||
OVERRIDE=install.dt.sun
|
||||
#endif
|
||||
|
||||
#ifdef UXPArchitecture
|
||||
LOCAL_CPP_DEFINES=-Uuxp
|
||||
OVERRIDE=install.dt.uxp
|
||||
#endif
|
||||
|
||||
#ifdef USLArchitecture
|
||||
LOCAL_CPP_DEFINES=-Uusl
|
||||
OVERRIDE=install.dt.usl
|
||||
#endif
|
||||
|
||||
#ifdef AlphaArchitecture
|
||||
OVERRIDE=install.dt.dec
|
||||
#endif
|
||||
|
||||
|
||||
MakeSubdirs($(SUBDIRS))
|
||||
|
||||
AllTarget(install.dt $(OVERRIDE) dinstall.dt)
|
||||
|
||||
CppScriptTarget(install.dt,install.dt.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppScriptTarget($(OVERRIDE),$(OVERRIDE).src,$(LOCAL_CPP_DEFINES),)
|
||||
CppScriptTarget(dinstall.dt,dinstall.dt.src,$(LOCAL_CPP_DEFINES),)
|
||||
|
||||
depend::
|
||||
|
||||
@@ -0,0 +1,213 @@
|
||||
####################################################
|
||||
### Configuration Instructions for DEC OSF1 Systems ###
|
||||
####################################################
|
||||
|
||||
|
||||
FIXME FIXME: Need to change this. Discuss /sbin/init.d/xdm script
|
||||
and its operation.... -mcb
|
||||
|
||||
|
||||
|
||||
There are two ways to start the desktop:
|
||||
|
||||
|
||||
* You can manually start the desktop Login Manager. The advantage
|
||||
of using this method is that you will not have to edit
|
||||
/etc/inittab.
|
||||
|
||||
* You can enable the system to automatically start the desktop
|
||||
when the system is rebooted. This is done by editing
|
||||
/etc/inittab.
|
||||
|
||||
Removing the Developer's Conference CDE Desktop
|
||||
===============================================
|
||||
|
||||
It is imperative that Snapshot 1 and Snapshot 2 desktops do not
|
||||
co-mingle. Installers and users should ensure that old clients and
|
||||
configuration files are exited or removed.
|
||||
|
||||
|
||||
Upgrading systems in a networked environment
|
||||
--------------------------------------------
|
||||
|
||||
If CDE is installed in a network environment, it is imperative that
|
||||
all systems be upgraded at the same time.
|
||||
|
||||
|
||||
Removing the Snapshot 1 desktop
|
||||
-------------------------------
|
||||
|
||||
Installers are advised to remove the Snapshot 1 Desktop files from
|
||||
their systems. Those clients and files are obsolete.
|
||||
|
||||
|
||||
Stopping Desktop clients before installing Snapshot 2
|
||||
-----------------------------------------------------
|
||||
|
||||
If the Snapshot 1 desktop is not removed, ensure that all desktop
|
||||
clients are inactive before installing the Snapshot 2 desktop. If the
|
||||
desktop was started via /etc/inittab, issue the telinit command to
|
||||
stop dtlogin and any other desktop client.
|
||||
|
||||
|
||||
Removing the users's .dtprofile and .dt directory
|
||||
-------------------------------------------------
|
||||
|
||||
It is strongly advised that all CDE users on the system remove or
|
||||
rename their .dt directory and their .dtprofile. The Snapshot 2
|
||||
Desktop is not compatible with the Snapshot 1 Desktop versions of
|
||||
these files.
|
||||
|
||||
If users have customized their .dt/dtwmrc file and want to keep it,
|
||||
they will need to cut and paste the appropriate pieces into the new
|
||||
dtwmrc provided.
|
||||
|
||||
|
||||
|
||||
Before You Start the Desktop (HP-UX)
|
||||
======================================
|
||||
|
||||
Special Configurations
|
||||
----------------------
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See
|
||||
chapter 2 of the Getting Started Guide:
|
||||
|
||||
|
||||
* If the system console is a non-bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
|
||||
The Subprocess Control Daemon
|
||||
=============================
|
||||
|
||||
If you are working in an environment where a CDE Desktop action needs
|
||||
to start an application on another workstation running CDE, the
|
||||
Subprocess Control Daemon configuration must be completed on both
|
||||
workstations.
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. For authentication, the user's home directory on a remote system
|
||||
must be mounted to the local system.
|
||||
|
||||
3. To run an application with a WINDOW_TYPE of NO_STDIO (see Appendix
|
||||
A, Advanced User's and System Administrator's Guide), you will need
|
||||
to provide NFS-access by the local (client) system to the remote
|
||||
(application server) system's /var directory (if /var is a distinct
|
||||
volume), or / directory (if it is not). The mount point must be
|
||||
/nfs/<remote_host>/var (again, if /var is a distinct volume) or
|
||||
/nfs/<remote_host>/ (if it is not). Export the appropriate
|
||||
directory in /etc/exports on both the local and remote hosts.
|
||||
|
||||
|
||||
To Start And Stop the Desktop Manually
|
||||
======================================
|
||||
|
||||
To Start the Desktop:
|
||||
--------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Enter:
|
||||
|
||||
/usr/dt/bin/dtlogin -daemon
|
||||
|
||||
This starts the Login Manager and displays the Login screen.
|
||||
Logging in starts a desktop session.
|
||||
|
||||
To Stop the Desktop:
|
||||
--------------------
|
||||
|
||||
When you stop the Login Manager, you automatically kill all
|
||||
X servers and desktop sessions that it started.
|
||||
|
||||
1. In a terminal emulator window, log in as root.
|
||||
|
||||
2. Obtain the process id of the parent Login Manager by entering:
|
||||
|
||||
cat /var/dt/Xpid
|
||||
|
||||
3. Kill the Login Manager by entering:
|
||||
|
||||
kill -TERM <process_id>
|
||||
|
||||
where <process_id> is the value obtained from Xpid.
|
||||
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
========================================
|
||||
|
||||
When your system is configured to start the desktop automatically, the
|
||||
desktop Login Manager runs when the system is booted.
|
||||
|
||||
To start the desktop automatically, you must edit /etc/inittab to:
|
||||
|
||||
* Add a line that starts the CDE Desktop.
|
||||
|
||||
* Set the default run level to the run level assigned to the CDE
|
||||
Desktop.
|
||||
|
||||
NOTE: Edit /etc/inittab very carefully.
|
||||
Errors in the file can prevent the system from booting
|
||||
successfully.
|
||||
|
||||
|
||||
To Enable Desktop Auto-Start
|
||||
----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. If you are running HP VUE, shut it down by entering:
|
||||
|
||||
/etc/telinit <n>; exit
|
||||
|
||||
where <n> is a run level assigned to the console and not
|
||||
assigned to HP VUE or to halting the system. You can find a
|
||||
run level by examinining the lines beginning with cons and vue
|
||||
in /etc/inittab. For example, the following lines indicate
|
||||
that you can use run levels other than 3, 4, or 6.
|
||||
|
||||
halt:6:wait:/usr/lib/X11/ignition/shutdown.ksh
|
||||
cons:012456:respawn:/etc/getty -h console console
|
||||
vue :34:respawn:/etc/vuerc
|
||||
|
||||
|
||||
3. Make a backup copy of /etc/inittab.
|
||||
|
||||
4. Open /etc/inittab for editing (in a diskless cluster, /etc/inittab
|
||||
is a context-dependent file).
|
||||
|
||||
5. Look for the line that sets the default run level (starting with
|
||||
init:). Set the default run level to 5.
|
||||
|
||||
init:5:initdefault:
|
||||
|
||||
|
||||
6. Add a line that starts the desktop at that run level:
|
||||
|
||||
dt :5:respawn:/usr/dt/bin/dtrc
|
||||
|
||||
|
||||
To Disable Desktop Auto-Start
|
||||
-----------------------------
|
||||
|
||||
You can restore a console by changing to a run level assigned to a
|
||||
console and not assigned to the desktop.
|
||||
|
||||
|
||||
Switching Between CDE and HP VUE
|
||||
--------------------------------
|
||||
You can switch back and forth between CDE and HP VUE by executing:
|
||||
|
||||
/etc/telinit <n>; exit
|
||||
|
||||
|
||||
where <n>=3 switches to HP VUE and <n>=5 switches to CDE.
|
||||
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
####################################################
|
||||
### Configuration Instructions for HP-UX Systems ###
|
||||
####################################################
|
||||
|
||||
There are two ways to start the desktop:
|
||||
|
||||
|
||||
* You can manually start the desktop Login Manager. The advantage
|
||||
of using this method is that you will not have to edit
|
||||
/etc/inittab.
|
||||
|
||||
* You can enable the system to automatically start the desktop
|
||||
when the system is rebooted. This is done by editing
|
||||
/etc/inittab.
|
||||
|
||||
Removing the Developer's Conference CDE Desktop
|
||||
===============================================
|
||||
|
||||
It is imperative that Snapshot 1 and Snapshot 2 desktops do not
|
||||
co-mingle. Installers and users should ensure that old clients and
|
||||
configuration files are exited or removed.
|
||||
|
||||
|
||||
Upgrading systems in a networked environment
|
||||
--------------------------------------------
|
||||
|
||||
If CDE is installed in a network environment, it is imperative that
|
||||
all systems be upgraded at the same time.
|
||||
|
||||
|
||||
Removing the Snapshot 1 desktop
|
||||
-------------------------------
|
||||
|
||||
Installers are advised to remove the Snapshot 1 Desktop files from
|
||||
their systems. Those clients and files are obsolete.
|
||||
|
||||
|
||||
Stopping Desktop clients before installing Snapshot 2
|
||||
-----------------------------------------------------
|
||||
|
||||
If the Snapshot 1 desktop is not removed, ensure that all desktop
|
||||
clients are inactive before installing the Snapshot 2 desktop. If the
|
||||
desktop was started via /etc/inittab, issue the telinit command to
|
||||
stop dtlogin and any other desktop client.
|
||||
|
||||
|
||||
Removing the users's .dtprofile and .dt directory
|
||||
-------------------------------------------------
|
||||
|
||||
It is strongly advised that all CDE users on the system remove or
|
||||
rename their .dt directory and their .dtprofile. The Snapshot 2
|
||||
Desktop is not compatible with the Snapshot 1 Desktop versions of
|
||||
these files.
|
||||
|
||||
If users have customized their .dt/dtwmrc file and want to keep it,
|
||||
they will need to cut and paste the appropriate pieces into the new
|
||||
dtwmrc provided.
|
||||
|
||||
|
||||
|
||||
Before You Start the Desktop (HP-UX)
|
||||
======================================
|
||||
|
||||
Special Configurations
|
||||
----------------------
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See
|
||||
chapter 2 of the Getting Started Guide:
|
||||
|
||||
|
||||
* If the system console is a non-bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
|
||||
The Subprocess Control Daemon
|
||||
=============================
|
||||
|
||||
If you are working in an environment where a CDE Desktop action needs
|
||||
to start an application on another workstation running CDE, the
|
||||
Subprocess Control Daemon configuration must be completed on both
|
||||
workstations.
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. For authentication, the user's home directory on a remote system
|
||||
must be mounted to the local system.
|
||||
|
||||
3. To run an application with a WINDOW_TYPE of NO_STDIO (see Appendix
|
||||
A, Advanced User's and System Administrator's Guide), you will need
|
||||
to provide NFS-access by the local (client) system to the remote
|
||||
(application server) system's /var directory (if /var is a distinct
|
||||
volume), or / directory (if it is not). The mount point must be
|
||||
/nfs/<remote_host>/var (again, if /var is a distinct volume) or
|
||||
/nfs/<remote_host>/ (if it is not). Export the appropriate
|
||||
directory in /etc/exports on both the local and remote hosts.
|
||||
|
||||
|
||||
To Start And Stop the Desktop Manually
|
||||
======================================
|
||||
|
||||
To Start the Desktop:
|
||||
--------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Enter:
|
||||
|
||||
/usr/dt/bin/dtlogin -daemon
|
||||
|
||||
This starts the Login Manager and displays the Login screen.
|
||||
Logging in starts a desktop session.
|
||||
|
||||
To Stop the Desktop:
|
||||
--------------------
|
||||
|
||||
When you stop the Login Manager, you automatically kill all
|
||||
X servers and desktop sessions that it started.
|
||||
|
||||
1. In a terminal emulator window, log in as root.
|
||||
|
||||
2. Obtain the process id of the parent Login Manager by entering:
|
||||
|
||||
cat /var/dt/Xpid
|
||||
|
||||
3. Kill the Login Manager by entering:
|
||||
|
||||
kill -TERM <process_id>
|
||||
|
||||
where <process_id> is the value obtained from Xpid.
|
||||
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
========================================
|
||||
|
||||
When your system is configured to start the desktop automatically, the
|
||||
desktop Login Manager runs when the system is booted.
|
||||
|
||||
To start the desktop automatically, you must edit /etc/inittab to:
|
||||
|
||||
* Add a line that starts the CDE Desktop.
|
||||
|
||||
* Set the default run level to the run level assigned to the CDE
|
||||
Desktop.
|
||||
|
||||
NOTE: Edit /etc/inittab very carefully.
|
||||
Errors in the file can prevent the system from booting
|
||||
successfully.
|
||||
|
||||
|
||||
To Enable Desktop Auto-Start
|
||||
----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. If you are running HP VUE, shut it down by entering:
|
||||
|
||||
/etc/telinit <n>; exit
|
||||
|
||||
where <n> is a run level assigned to the console and not
|
||||
assigned to HP VUE or to halting the system. You can find a
|
||||
run level by examinining the lines beginning with cons and vue
|
||||
in /etc/inittab. For example, the following lines indicate
|
||||
that you can use run levels other than 3, 4, or 6.
|
||||
|
||||
halt:6:wait:/usr/lib/X11/ignition/shutdown.ksh
|
||||
cons:012456:respawn:/etc/getty -h console console
|
||||
vue :34:respawn:/etc/vuerc
|
||||
|
||||
|
||||
3. Make a backup copy of /etc/inittab.
|
||||
|
||||
4. Open /etc/inittab for editing (in a diskless cluster, /etc/inittab
|
||||
is a context-dependent file).
|
||||
|
||||
5. Look for the line that sets the default run level (starting with
|
||||
init:). Set the default run level to 5.
|
||||
|
||||
init:5:initdefault:
|
||||
|
||||
|
||||
6. Add a line that starts the desktop at that run level:
|
||||
|
||||
dt :5:respawn:/usr/dt/bin/dtrc
|
||||
|
||||
|
||||
To Disable Desktop Auto-Start
|
||||
-----------------------------
|
||||
|
||||
You can restore a console by changing to a run level assigned to a
|
||||
console and not assigned to the desktop.
|
||||
|
||||
|
||||
Switching Between CDE and HP VUE
|
||||
--------------------------------
|
||||
You can switch back and forth between CDE and HP VUE by executing:
|
||||
|
||||
/etc/telinit <n>; exit
|
||||
|
||||
|
||||
where <n>=3 switches to HP VUE and <n>=5 switches to CDE.
|
||||
|
||||
|
||||
@@ -0,0 +1,285 @@
|
||||
|
||||
=================================
|
||||
Instructions for IBM AIX Systems 04/11/94
|
||||
=================================
|
||||
|
||||
The following instructions assume you have already installed the Common Desktop
|
||||
Environment according to the Installation Instructions on the CD jacket. If
|
||||
CDE is used in a networked environment, all systems should be upgraded at the
|
||||
same time.
|
||||
|
||||
There are two ways to start the desktop:
|
||||
|
||||
* You can manually start the desktop Login Manager. This method can be used to
|
||||
avoid rebooting the system. See the section To Start and Stop the Desktop
|
||||
Manually .
|
||||
|
||||
* You can configure the system to start the desktop automatically upon reboot.
|
||||
See the section To Enable and Disable Desktop Auto-Start..
|
||||
|
||||
Before You Start the Desktop
|
||||
============================
|
||||
******************************************************************************
|
||||
If you have a previous Common Desktop Environment (CDE) version on the system:
|
||||
******************************************************************************
|
||||
|
||||
Advise all CDE users on the system to remove or rename their $HOME/.dt directory
|
||||
and their $HOME/.dtprofile. The new files are not compatible with the old
|
||||
ones. If users have customized the $HOME/.dt/dtwmrc file and want to keep
|
||||
it, they will need to cut and paste the appropriate pieces into the new dtwmrc
|
||||
file provided.
|
||||
|
||||
Become the root user on the system. Make sure all other users on the system
|
||||
are logged out of CDE. Kill the Login Manager.
|
||||
|
||||
cat /etc/opt/dt/Xpid (obtain Login Manager process_id)
|
||||
|
||||
kill -TERM <process_id>
|
||||
|
||||
Killing the Login Manager process works no matter how the process was started.
|
||||
An alternate method is to stop the system resource control for the desktop.
|
||||
This method should only be used if CDE was configured on the system with
|
||||
/opt/dt/bin/dtconfig -e. If you don't know how CDE was configured on the
|
||||
system, lssrc -s dtsrc will return the status of dtsrc. If no status
|
||||
is returned, use the kill method in the previous paragraph.
|
||||
|
||||
stopsrc -c -s dtsrc
|
||||
|
||||
Completely remove the /etc/opt and /opt directory structures from the system.
|
||||
The install script mentioned in the README should have already given you the
|
||||
chance to remove these. Remove the dtsrc subsystem only if CDE was configured
|
||||
on the system with /opt/dt/bin/dtconfig -e:
|
||||
|
||||
rmssys -s dtsrc
|
||||
|
||||
Default Configuration
|
||||
|
||||
The Instructions for IBM AIX Systems show basic installation information.
|
||||
We recommend following these instructions before doing any personal
|
||||
customization work except in the case of the Special Configurations.
|
||||
|
||||
Special Configurations
|
||||
|
||||
If your system has one of these special configurations, you may need to edit
|
||||
certain Login Manager files before starting the desktop. More detailed
|
||||
information is in the CDE Getting Started Guide.
|
||||
|
||||
* If the system console is a non-bitmap device (e.g. an ascii
|
||||
terminal)i, comment out the following line in /usr/dt/config/Xservers that
|
||||
starts the Xserver on the console.
|
||||
|
||||
# :0 Local local@console /path/X [options] :0
|
||||
|
||||
* If the system is an X terminal or a host for X terminals,
|
||||
CDE must be running on the host and X Display Manager Control Protocol
|
||||
(XDMCP) must be enabled for the X terminal and must direct the Xterminal to
|
||||
contact the Login Manager on a specified host.
|
||||
|
||||
* If the system has more than one display, see Configuring
|
||||
Multiple Displays in the CDE Getting Started Guide.
|
||||
|
||||
To Start and Stop the Desktop Manually
|
||||
--------------------------------------
|
||||
There are two manual methods to start the desktop:
|
||||
|
||||
* You can manually start the CDE Login Manager. To use this method, you must
|
||||
have permission to log in as root. This method is preferable, because Login
|
||||
Manager sets certain environment variables that are needed during desktop
|
||||
sessions. See the section Manually Starting and Stopping Login Manager.
|
||||
|
||||
* You can log in using conventional methods, and then manually run the
|
||||
CDE Session Manager, which starts a desktop session. See the section
|
||||
Manually Starting and Stopping Session Manager.
|
||||
|
||||
Manually Starting and Stopping Login Manager
|
||||
--------------------------------------------
|
||||
To manually start Login Manager:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Enter:
|
||||
|
||||
/usr/dt/bin/dtlogin -daemon
|
||||
|
||||
This starts the Login Manager and displays the Login screen.
|
||||
Logging in starts a desktop session.
|
||||
|
||||
To manually stop Login Manager:
|
||||
|
||||
When you stop the Login Manager, you automatically kill all X servers and
|
||||
desktop sessions that it started.
|
||||
|
||||
1. In a terminal emulator window, log in as root.
|
||||
|
||||
2. Obtain the process id of the Login Manager by entering:
|
||||
|
||||
cat /var/dt/Xpid
|
||||
|
||||
3. Kill the Login Manager by entering:
|
||||
|
||||
kill -TERM <process_id>
|
||||
|
||||
where <process_id> is the value obtained from Xpid.
|
||||
|
||||
Manually Starting and Stopping Session Manager
|
||||
----------------------------------------------
|
||||
Using this method
|
||||
|
||||
* leaves you responsible for setting certain environment variables to values
|
||||
required by the desktop if suitable values are not already set in your
|
||||
environment.
|
||||
|
||||
|
||||
* allows you to use CDE while others serving from the same system, including
|
||||
the console are not.
|
||||
|
||||
1. Log in. (You do not need to log in as root).
|
||||
|
||||
2. With no window system running, from the command line enter:
|
||||
|
||||
/usr/bin/X11/xinit /usr/dt/bin/Xsession
|
||||
|
||||
HINT: if a .Xinitrc file is enabled, make sure it is NOT starting another
|
||||
window manager. Do NOT put the /usr/dt/bin/Xsession in your .profile!
|
||||
|
||||
Session Manager stops when you log out.
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
----------------------------------------
|
||||
AIX can be configured to start the CDE Desktop automatically when the system
|
||||
is booted. This method starts CDE as the Session Manager for all users on
|
||||
the system.
|
||||
|
||||
There are several ways to do this configuration:
|
||||
|
||||
* From a command line.
|
||||
|
||||
* Using SMIT menus.
|
||||
|
||||
* Using SMIT fastpath.
|
||||
|
||||
From a Command Line
|
||||
-------------------
|
||||
To Enable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/dt/bin/dtconfig -e
|
||||
|
||||
3. Reboot the machine.
|
||||
|
||||
When the system is rebooted, a dtlogin screen will appear. If you prefer not
|
||||
to reboot at this time, this command will start the Login Manager now.
|
||||
|
||||
startsrc -s dtsrc
|
||||
|
||||
To Disable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/dt/bin/dtconfig -d
|
||||
|
||||
3. Reboot the machine.
|
||||
|
||||
When the system is rebooted, CDE is no longer configured. If you prefer not
|
||||
to reboot at this time, this command will stop the Login Manager now.
|
||||
|
||||
stopsrc -c -s dtsrc
|
||||
|
||||
Using SMIT Menus
|
||||
----------------
|
||||
To Enable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/bin/smit
|
||||
|
||||
3. Go to System Environments.
|
||||
|
||||
4. Go to Change System User Interface.
|
||||
|
||||
5. Select CDE environment.
|
||||
|
||||
6. Press [Enter] when using ASCII SMIT or Click "Do" when using GUI
|
||||
SMIT interface.
|
||||
|
||||
7. Exit SMIT.
|
||||
|
||||
8. Reboot the machine.
|
||||
|
||||
To Disable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter
|
||||
|
||||
/usr/bin/smit
|
||||
|
||||
3. Go to System Environments.
|
||||
|
||||
4. Go to Change System User Interface.
|
||||
|
||||
5. Select Command-line environment.
|
||||
|
||||
6. Press [Enter] when using ASCII SMIT or Click "Do" when
|
||||
using GUI SMIT interface.
|
||||
|
||||
7. Exit out of SMIT.
|
||||
|
||||
8. Reboot the machine.
|
||||
|
||||
Using SMIT `fastpath'
|
||||
---------------------
|
||||
To Enable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/bin/smit dtconfig
|
||||
|
||||
3. Select CDE environment.
|
||||
|
||||
4. Press [Enter] when using ASCII SMIT or Click "Do" when using GUI
|
||||
SMIT interface.
|
||||
|
||||
5. Exit SMIT.
|
||||
|
||||
6. Reboot the machine.
|
||||
|
||||
To Disable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/bin/smit dtconfig
|
||||
|
||||
3. Select Command-line environment.
|
||||
|
||||
4. Press [Enter] when using ASCII SMIT or Click "Do" when using GUI
|
||||
SMIT interface.
|
||||
|
||||
5. Exit out of SMIT.
|
||||
|
||||
6. Reboot the machine.
|
||||
|
||||
Deinstall Instructions
|
||||
======================
|
||||
The CD also includes a script for deinstallation. With the CD-ROM mounted
|
||||
according to the Installation Instructions on the CD jacket, enter:
|
||||
|
||||
./dinstall.dt
|
||||
|
||||
or
|
||||
|
||||
./DINSTALL.DT
|
||||
|
||||
Everything installed from the installation scripts will be deinstalled.
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
####################################
|
||||
### Instructions for SCO Systems ###
|
||||
####################################
|
||||
|
||||
System Requirements
|
||||
===================
|
||||
|
||||
* SCO Open Desktop or SCO Open Server Version 3.0
|
||||
* 386-33, 486, or Pentium based processor
|
||||
* 16MB memory
|
||||
* 1024x768, 256 color graphics system
|
||||
* 70MB free disk space
|
||||
* 30MB Swap Space
|
||||
|
||||
|
||||
Before You Start the Desktop
|
||||
============================
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See
|
||||
chapter 2 of the Getting Started Guide:
|
||||
|
||||
|
||||
* If the system console is a non-bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
|
||||
|
||||
To Start and Stop the Desktop
|
||||
============================
|
||||
|
||||
1. Log in as the user who will use the desktop and be running the Korn or
|
||||
Bourne shells (ksh or sh).
|
||||
|
||||
2. First, add the following two lines to your .profile:
|
||||
|
||||
PATH=$PATH:/opt/dt/bin
|
||||
. /opt/dt/bin/dtsearchpath
|
||||
|
||||
These lines add the desktop search path to your PATH variable.
|
||||
|
||||
3. If you have a .startxrc file in your home directory, move it to a
|
||||
backup location or name by entering:
|
||||
|
||||
mv .startxrc old.startxrc
|
||||
|
||||
4. Copy /etc/opt/dt/dt.startxrc to your home directory and rename it
|
||||
to .startxrc by entering:
|
||||
|
||||
cp /etc/opt/dt/dt.startxrc .startxrc
|
||||
|
||||
5. Do one of the following:
|
||||
|
||||
* Log out of your ODT session and log in via Scologin.
|
||||
|
||||
* Or, at a shell prompt on a multiscreen not running the X
|
||||
server, run startx by entering:
|
||||
|
||||
startx
|
||||
|
||||
Be sure to log out to reinvoke your .profile correctly.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
#################################################### 04/08/94
|
||||
### Instructions for the Sun Solaris Environment ###
|
||||
####################################################
|
||||
|
||||
|
||||
Removing the October '93 Developer's Conference CDE Desktop
|
||||
===========================================================
|
||||
|
||||
It is imperative that CDE Snapshot 1 and Snapshot 2 desktops do not
|
||||
co-mingle. Installers and users should ensure that old clients and
|
||||
configuration files are exited or removed. Use the instructions
|
||||
in this section if the October '93 Snapshot 1 version of CDE is
|
||||
installed on your system.
|
||||
|
||||
|
||||
Upgrading systems in a networked environment
|
||||
--------------------------------------------
|
||||
|
||||
If CDE is installed in a network environment, it is imperative that
|
||||
all systems be upgraded at the same time.
|
||||
|
||||
|
||||
Removing the Snapshot 1 desktop
|
||||
-------------------------------
|
||||
|
||||
Installers are advised to remove the Snapshot 1 Desktop files from
|
||||
their systems. Those clients and files are obsolete. The dinstall.dt
|
||||
script which was provided on the Snapshot 1 CD may be used for this
|
||||
purpose.
|
||||
|
||||
|
||||
Stopping Desktop clients before installing Snapshot 2
|
||||
-----------------------------------------------------
|
||||
|
||||
If the Snapshot 1 desktop is not removed, ensure that all desktop
|
||||
clients are inactive before installing the Snapshot 2 desktop.
|
||||
|
||||
|
||||
Removing the users's .dtprofile and .dt directory
|
||||
-------------------------------------------------
|
||||
|
||||
It is strongly advised that all CDE users on the system remove or
|
||||
rename their .dt directory and their .dtprofile. The Snapshot 2
|
||||
Desktop is not compatible with the Snapshot 1 Desktop versions of
|
||||
these files.
|
||||
|
||||
If users have customized their .dt/dtwmrc file and want to keep it,
|
||||
they will need to cut and paste the appropriate pieces into the new
|
||||
dtwmrc provided.
|
||||
|
||||
|
||||
Before You Start the Desktop
|
||||
============================
|
||||
|
||||
You can start the CDE Desktop by:
|
||||
|
||||
* Configuring the system to auto-start the CDE Desktop when
|
||||
the system is booted.
|
||||
|
||||
* Or, manually starting the desktop Login Manager.
|
||||
|
||||
|
||||
Special Configurations
|
||||
----------------------
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See the
|
||||
Advanced User's and System Administrator's Guide:
|
||||
|
||||
* If the system console is a non-bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
========================================
|
||||
|
||||
When auto-start is enabled, the CDE Login Manager runs automatically
|
||||
each time the system is booted. You then log in using the
|
||||
CDE Login Screen.
|
||||
|
||||
To Enable Desktop Auto-Start
|
||||
----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/dt/bin/dtconfig -e
|
||||
|
||||
A CDE Login screen will appear the next time the system is booted.
|
||||
|
||||
|
||||
To Disable Desktop Auto-Start
|
||||
-----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From a command line, enter:
|
||||
|
||||
/usr/dt/bin/dtconfig -d
|
||||
|
||||
A conventional ascii login will appear the next time the system
|
||||
is booted.
|
||||
|
||||
|
||||
To Start and Stop the Desktop Manually
|
||||
======================================
|
||||
|
||||
There are two ways to start the desktop manually:
|
||||
|
||||
* You can manually start the CDE Login Manager, which will display the
|
||||
desktop Login screen. To use this method, you must have permission
|
||||
to log in as root.
|
||||
|
||||
This method is the preferable manual method, since Login Manager sets
|
||||
certain environment variables that are needed during desktop sessions.
|
||||
|
||||
* You can log in using conventional methods, and then manually run the CDE
|
||||
Session Manager, which starts a desktop session.
|
||||
|
||||
|
||||
Manually Starting and Stopping Login Manager
|
||||
--------------------------------------------
|
||||
|
||||
When you use this method, you log in using the desktop Login screen.
|
||||
When you log in, a desktop session starts.
|
||||
|
||||
To manually start Login Manager:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. With no window system running, from the command line enter:
|
||||
|
||||
/usr/dt/bin/dtlogin
|
||||
|
||||
|
||||
To manually stop Login Manager:
|
||||
|
||||
1. If you are in a desktop session, exit (via front panel button).
|
||||
|
||||
2. On the Login screen, choose Options->Command Line
|
||||
to return to a command line.
|
||||
|
||||
3. On the command line, enter [Ctrl]c (hold down [Ctrl] as
|
||||
you press [c]).
|
||||
|
||||
You are now back to your root login with a command line prompt.
|
||||
|
||||
|
||||
Manually Starting and Stopping Session Manager
|
||||
----------------------------------------------
|
||||
|
||||
If you use this method, you are responsible for setting certain environment
|
||||
variables to values required by the desktop if suitable values are
|
||||
not already set in your environment. See the Advanced User's and System
|
||||
Administrator's Guide.
|
||||
|
||||
1. Log in. (You do not need to log in as root).
|
||||
|
||||
If you set LD_LIBRARY_PATH (its not required for CDE), make sure the
|
||||
/usr/dt/lib directory is at head of list. In addition, you should
|
||||
set the environment variable OPENWINHOME to /usr/openwin.
|
||||
|
||||
2. With no window system running, from the command line enter:
|
||||
|
||||
/usr/openwin/bin/xinit /usr/dt/bin/Xsession
|
||||
|
||||
This starts your CDE desktop session. Exit button is on front panel.
|
||||
|
||||
|
||||
|
||||
To Configure Subprocess Control Daemon remote access
|
||||
====================================================
|
||||
|
||||
If you are working in an environment where a CDE Desktop action needs to
|
||||
start an application on another workstation running CDE, the Subprocess
|
||||
Control Daemon must have access to the /tmp directory of the remote
|
||||
workstation.
|
||||
|
||||
The following procedure will provide this.
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Provide NFS-access by the local (client) system to the remote (application
|
||||
server) system's /tmp directory. The mount point must be
|
||||
/nfs/<remote_host>/tmp.
|
||||
|
||||
On systems running automount, the following procedure provides this mount:
|
||||
|
||||
a. Enter:
|
||||
|
||||
mkdir /nfs
|
||||
|
||||
b. Add the following lines to /etc/auto_master:
|
||||
|
||||
/nfs -hosts -nosuid
|
||||
|
||||
c. To allow export of the /tmp directory, add the following line
|
||||
to /etc/dfs/dfstab:
|
||||
|
||||
shared -F nfs -o rw /tmp
|
||||
|
||||
3. The subprocess control daemon will have correct access the next time
|
||||
the workstation is booted.
|
||||
@@ -0,0 +1,207 @@
|
||||
#########################################################################
|
||||
# Configuration Instructions for the UnixWare 1.1 or later Environments #
|
||||
#########################################################################
|
||||
|
||||
The following instructions assume you have already installed the Common Desktop
|
||||
Environment according to the Installation Instructions on the CD jacket.
|
||||
|
||||
There are two ways to start the desktop:
|
||||
|
||||
* You can manually start the desktop Login Manager. This method can be used to
|
||||
avoid rebooting the system. See the section To Start and Stop the Desktop
|
||||
Manually .
|
||||
|
||||
* You can configure the system to start the desktop automatically upon reboot.
|
||||
See the section To Enable and Disable Desktop Auto-Start..
|
||||
|
||||
|
||||
|
||||
Before You Start the Desktop
|
||||
============================
|
||||
******************************************************************************
|
||||
If you have a previous Common Desktop Environment (CDE) version on the system:
|
||||
******************************************************************************
|
||||
|
||||
*Advise all CDE users on the system to remove or rename their $HOME/.dt directory
|
||||
and their $HOME/.dtprofile. The new files are not compatible with the old
|
||||
ones. If users have customized the $HOME/.dt/dtwmrc file and want to keep
|
||||
it, they will need to cut and paste the appropriate pieces into the new dtwmrc
|
||||
file provided.
|
||||
|
||||
*Become the root user on the system. Make sure all other users on the system
|
||||
are logged out of CDE. Kill the Login Manager if running.
|
||||
|
||||
kill -15 `cat /etc/opt/dt/Xpid`
|
||||
|
||||
Killing the Login Manager process works no matter how the process was started.
|
||||
An alternate method is to stop the system resource control for the desktop.
|
||||
This method should only be used if CDE was configured on the system by
|
||||
replacing the /etc/rc2.d/S69xdm script. You can tell if CDE was configured
|
||||
this way by checking the existence of /etc/S69xdm.old. If this file
|
||||
exists, then do the following:
|
||||
|
||||
mv /etc/S69xdm.old /etc/rc2.d/S69xdm
|
||||
|
||||
|
||||
|
||||
Special Configurations
|
||||
----------------------
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See the
|
||||
Advanced User's and System Administrator's Guide:
|
||||
|
||||
* If the system console is not a UnixWare supported bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
To Start and Stop the Desktop Manually
|
||||
======================================
|
||||
|
||||
There are two ways to start the desktop manually:
|
||||
|
||||
|
||||
* You can manually start the CDE Login Manager, which will
|
||||
display the desktop Login screen. To use this method, you
|
||||
must have permission to log in as root.
|
||||
|
||||
This method is preferable, since Login Manager sets certain
|
||||
environment variables that are needed during desktop sessions.
|
||||
|
||||
* You can log in using conventional methods, and then manually
|
||||
run the CDE Session Manager, which starts a desktop session.
|
||||
See the section Manually Starting and Stopping the Session
|
||||
Manager.
|
||||
|
||||
Manually Starting and Stopping Login Manager
|
||||
--------------------------------------------
|
||||
|
||||
When you use this method, you log in using the CDE Login screen.
|
||||
When you log in, a desktop session starts.
|
||||
|
||||
To manually start Login Manager:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Type:
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/dt/lib:/usr/X/lib export LD_LIBRARY_PATH
|
||||
|
||||
3. With no window system running, from the command line enter:
|
||||
|
||||
/usr/dt/bin/dtlogin -daemon
|
||||
|
||||
The CDE Graphical Login screen will appear.
|
||||
|
||||
4. For security reasons, you need to exit the shell that invoked dtlogin.
|
||||
Type <Alt><SysRq> p
|
||||
(i.e. Press the <Alt> and <SysRq> keys at the same time,
|
||||
release both and then hit 'p'. )
|
||||
|
||||
You should return to an ASCII terminal session.
|
||||
|
||||
5. Type:
|
||||
<return>
|
||||
exit
|
||||
|
||||
6. You will be asked if you want your virtual terminals closed at once.
|
||||
Type: n
|
||||
|
||||
The CDE Graphical Login screen will reappear.
|
||||
|
||||
|
||||
To manually stop Login Manager:
|
||||
|
||||
1. Log out of the CDE Desktop.
|
||||
|
||||
2. From the options menu of the CDE Graphical Login choose Command Line.
|
||||
|
||||
This will give you the ASCII login screen.
|
||||
|
||||
3. Log in as root.
|
||||
|
||||
4. Type:
|
||||
kill -15 `cat /usr/dt/config/Xpid`
|
||||
|
||||
|
||||
|
||||
Manually Starting and Stopping Session Manager
|
||||
----------------------------------------------
|
||||
|
||||
If you use this method, you are responsible for setting certain
|
||||
environment variables to values required by the desktop if suitable
|
||||
values are not already set in your environment. Refer to the Getting
|
||||
Started Guide for setting the necessary environment variables.
|
||||
|
||||
|
||||
1. Log in. (You do not need to log in as root).
|
||||
|
||||
2. With no window system running, from the command line enter:
|
||||
|
||||
LD_LIBRARY_PATH=/usr/dt/lib:/usr/X/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH
|
||||
|
||||
PATH=$PATH:/usr/X/bin
|
||||
export PATH
|
||||
|
||||
/usr/X/bin/olinit /usr/dt/bin/Xsession
|
||||
|
||||
The Session Manager stops when you log out.
|
||||
When auto-start is enabled, the CDE Login Manager runs
|
||||
automatically each time the system is booted. You then log
|
||||
in using the CDE Login Screen.
|
||||
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
========================================
|
||||
UnixWare can be configured to start the CDE Desktop automatically when the system
|
||||
is booted. This method starts CDE as the Session Manager for all users on
|
||||
the system.
|
||||
|
||||
|
||||
To Enable Desktop Auto-Start
|
||||
----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
NOTE: Step 'a' is necessay only if the /etc/rc2.d/S69xdm
|
||||
script has been modified after UnixWare was
|
||||
installed on your system and if the graphical login
|
||||
is enabled. A copy of the S69xdm script that
|
||||
came with the UnixWare installation is located
|
||||
in /usr/X/adm.
|
||||
|
||||
a. cp /etc/rc2.d/S69xdm /etc/S69xdm.preCDE
|
||||
b. cp /usr/dt/config/S69xdm /etc/rc2.d/S69xdm
|
||||
|
||||
A CDE Login screen will appear the next time the system is booted.
|
||||
|
||||
|
||||
To Disable Desktop Auto-Start
|
||||
-----------------------------
|
||||
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From a command line, enter:
|
||||
|
||||
rm /etc/rc2.d/S69xdm
|
||||
|
||||
If you would like the original UnixWare Desktop Manager Login
|
||||
to appear upon reboot:
|
||||
|
||||
/usr/X/bin/enable_glogin
|
||||
|
||||
- OR -
|
||||
|
||||
If a copy of S69xdm was saved as outlined in the section
|
||||
"To Enable Desktop Auto-Start":
|
||||
|
||||
mv /etc/S69xdm.preCDE /etc/rc2.d/S69xdm
|
||||
|
||||
The UnixWare Desktop Manager Login will appear
|
||||
the next time the system is rebooted.
|
||||
@@ -0,0 +1,207 @@
|
||||
#########################################################################
|
||||
# Configuration Instructions for the Fujitsu UXP/DS Environments #
|
||||
#########################################################################
|
||||
|
||||
The following instructions assume you have already installed the Common Desktop
|
||||
Environment according to the Installation Instructions on the CD jacket.
|
||||
|
||||
There are two ways to start the desktop:
|
||||
|
||||
* You can manually start the desktop Login Manager. This method can be used to
|
||||
avoid rebooting the system. See the section To Start and Stop the Desktop
|
||||
Manually .
|
||||
|
||||
* You can configure the system to start the desktop automatically upon reboot.
|
||||
See the section To Enable and Disable Desktop Auto-Start..
|
||||
|
||||
|
||||
|
||||
Before You Start the Desktop
|
||||
============================
|
||||
******************************************************************************
|
||||
If you have a previous Common Desktop Environment (CDE) version on the system:
|
||||
******************************************************************************
|
||||
|
||||
*Advise all CDE users on the system to remove or rename their $HOME/.dt directory
|
||||
and their $HOME/.dtprofile. The new files are not compatible with the old
|
||||
ones. If users have customized the $HOME/.dt/dtwmrc file and want to keep
|
||||
it, they will need to cut and paste the appropriate pieces into the new dtwmrc
|
||||
file provided.
|
||||
|
||||
*Become the root user on the system. Make sure all other users on the system
|
||||
are logged out of CDE. Kill the Login Manager if running.
|
||||
|
||||
kill -15 `cat /etc/opt/dt/Xpid`
|
||||
|
||||
Killing the Login Manager process works no matter how the process was started.
|
||||
An alternate method is to stop the system resource control for the desktop.
|
||||
This method should only be used if CDE was configured on the system by
|
||||
replacing the /etc/rc2.d/S69xdm script. You can tell if CDE was configured
|
||||
this way by checking the existence of /etc/S69xdm.old. If this file
|
||||
exists, then do the following:
|
||||
|
||||
mv /etc/S69xdm.old /etc/rc2.d/S69xdm
|
||||
|
||||
|
||||
|
||||
Special Configurations
|
||||
----------------------
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See the
|
||||
Advanced User's and System Administrator's Guide:
|
||||
|
||||
* If the system console is not a UnixWare supported bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
To Start and Stop the Desktop Manually
|
||||
======================================
|
||||
|
||||
There are two ways to start the desktop manually:
|
||||
|
||||
|
||||
* You can manually start the CDE Login Manager, which will
|
||||
display the desktop Login screen. To use this method, you
|
||||
must have permission to log in as root.
|
||||
|
||||
This method is preferable, since Login Manager sets certain
|
||||
environment variables that are needed during desktop sessions.
|
||||
|
||||
* You can log in using conventional methods, and then manually
|
||||
run the CDE Session Manager, which starts a desktop session.
|
||||
See the section Manually Starting and Stopping the Session
|
||||
Manager.
|
||||
|
||||
Manually Starting and Stopping Login Manager
|
||||
--------------------------------------------
|
||||
|
||||
When you use this method, you log in using the CDE Login screen.
|
||||
When you log in, a desktop session starts.
|
||||
|
||||
To manually start Login Manager:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Type:
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/dt/lib:/usr/X/lib export LD_LIBRARY_PATH
|
||||
|
||||
3. With no window system running, from the command line enter:
|
||||
|
||||
/usr/dt/bin/dtlogin -daemon
|
||||
|
||||
The CDE Graphical Login screen will appear.
|
||||
|
||||
4. For security reasons, you need to exit the shell that invoked dtlogin.
|
||||
Type <Alt><SysRq> p
|
||||
(i.e. Press the <Alt> and <SysRq> keys at the same time,
|
||||
release both and then hit 'p'. )
|
||||
|
||||
You should return to an ASCII terminal session.
|
||||
|
||||
5. Type:
|
||||
<return>
|
||||
exit
|
||||
|
||||
6. You will be asked if you want your virtual terminals closed at once.
|
||||
Type: n
|
||||
|
||||
The CDE Graphical Login screen will reappear.
|
||||
|
||||
|
||||
To manually stop Login Manager:
|
||||
|
||||
1. Log out of the CDE Desktop.
|
||||
|
||||
2. From the options menu of the CDE Graphical Login choose Command Line.
|
||||
|
||||
This will give you the ASCII login screen.
|
||||
|
||||
3. Log in as root.
|
||||
|
||||
4. Type:
|
||||
kill -15 `cat /usr/dt/config/Xpid`
|
||||
|
||||
|
||||
|
||||
Manually Starting and Stopping Session Manager
|
||||
----------------------------------------------
|
||||
|
||||
If you use this method, you are responsible for setting certain
|
||||
environment variables to values required by the desktop if suitable
|
||||
values are not already set in your environment. Refer to the Getting
|
||||
Started Guide for setting the necessary environment variables.
|
||||
|
||||
|
||||
1. Log in. (You do not need to log in as root).
|
||||
|
||||
2. With no window system running, from the command line enter:
|
||||
|
||||
LD_LIBRARY_PATH=/usr/dt/lib:/usr/X/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH
|
||||
|
||||
PATH=$PATH:/usr/X/bin
|
||||
export PATH
|
||||
|
||||
/usr/X/bin/olinit /usr/dt/bin/Xsession
|
||||
|
||||
The Session Manager stops when you log out.
|
||||
When auto-start is enabled, the CDE Login Manager runs
|
||||
automatically each time the system is booted. You then log
|
||||
in using the CDE Login Screen.
|
||||
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
========================================
|
||||
UnixWare can be configured to start the CDE Desktop automatically when the system
|
||||
is booted. This method starts CDE as the Session Manager for all users on
|
||||
the system.
|
||||
|
||||
|
||||
To Enable Desktop Auto-Start
|
||||
----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
NOTE: Step 'a' is necessay only if the /etc/rc2.d/S69xdm
|
||||
script has been modified after UnixWare was
|
||||
installed on your system and if the graphical login
|
||||
is enabled. A copy of the S69xdm script that
|
||||
came with the UnixWare installation is located
|
||||
in /usr/X/adm.
|
||||
|
||||
a. cp /etc/rc2.d/S69xdm /etc/S69xdm.preCDE
|
||||
b. cp /usr/dt/config/S69xdm /etc/rc2.d/S69xdm
|
||||
|
||||
A CDE Login screen will appear the next time the system is booted.
|
||||
|
||||
|
||||
To Disable Desktop Auto-Start
|
||||
-----------------------------
|
||||
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From a command line, enter:
|
||||
|
||||
rm /etc/rc2.d/S69xdm
|
||||
|
||||
If you would like the original UnixWare Desktop Manager Login
|
||||
to appear upon reboot:
|
||||
|
||||
/usr/X/bin/enable_glogin
|
||||
|
||||
- OR -
|
||||
|
||||
If a copy of S69xdm was saved as outlined in the section
|
||||
"To Enable Desktop Auto-Start":
|
||||
|
||||
mv /etc/S69xdm.preCDE /etc/rc2.d/S69xdm
|
||||
|
||||
The UnixWare Desktop Manager Login will appear
|
||||
the next time the system is rebooted.
|
||||
@@ -0,0 +1,11 @@
|
||||
XCOMM $XConsortium: Imakefile /main/5 1996/04/23 21:26:14 drk $
|
||||
|
||||
LOCAL_CPP_DEFINES = -DCDE_INSTALLATION_TOP=$(CDE_INSTALLATION_TOP) \
|
||||
-DCDE_CONFIGURATION_TOP=$(CDE_CONFIGURATION_TOP) \
|
||||
-DCDE_LOGFILES_TOP=$(CDE_LOGFILES_TOP) \
|
||||
-Usun -Uusl -Uuxp -Uaix -Udec -UAIX -Uibm -Uhp
|
||||
|
||||
AllTarget(installCDE dinstallCDE)
|
||||
|
||||
CppScriptTarget(installCDE,installCDE.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppScriptTarget(dinstallCDE,dinstallCDE.src,$(LOCAL_CPP_DEFINES),)
|
||||
@@ -0,0 +1,216 @@
|
||||
|
||||
UDB FILE FORMAT
|
||||
|
||||
The udb (universal data base) format attempts to allow product delivery
|
||||
information for several closely related products to co-exist in the
|
||||
same database file. This is an HP Corvallis home-grown format which
|
||||
was originally created to deal with the delivery of similar products
|
||||
on hp-ux, domain and osf platforms.
|
||||
|
||||
The format is meant to be more or less free form without regard to
|
||||
intervening newlines or whitespace. Comments violate this principle
|
||||
by being line oriented. Any line whose first non-whitespace character
|
||||
is a '#' is considered a comment. A semi-colon may be placed between
|
||||
two identifiers to break them up into separate tokens. If more than
|
||||
one keyword/value pair is placed on a line, semi-colons can be used
|
||||
to separate them visually. The semi-colons are ignored by the parser.
|
||||
|
||||
The special syntax characters ( "{",":",";","=","}") may be embedded
|
||||
in an identifier by escaping them with a backslash.
|
||||
|
||||
Semantic Note:
|
||||
The tools associated with the udb databases apply semantic meaning
|
||||
to seven kinds of information about a file. There are seven Special
|
||||
Tokens which may be used to identify the keywords with which the
|
||||
semantic information should be associated.
|
||||
|
||||
Special Token description
|
||||
------------ -----------
|
||||
<SRC> The path (relative to the top of a
|
||||
build tree) to the source of a
|
||||
product deliverable file.
|
||||
|
||||
<DEST> The full destination path location of
|
||||
a deliverable file in the target
|
||||
machine's file system.
|
||||
|
||||
<LNK> The full path name (in the target
|
||||
machine's file system) of the source
|
||||
file for a symbolic link. (i.e. The file
|
||||
pointed to).
|
||||
|
||||
<TYPE> The kind of file object being installed.
|
||||
(i.e. file, sym_link, hard_link,
|
||||
directory, etc. )
|
||||
|
||||
<MODE> The (numeric) permissions assigned to
|
||||
the new object. This value should be
|
||||
in the usual octal notation.
|
||||
|
||||
<OWNER> The symbolic name of the owner of the
|
||||
new file.
|
||||
|
||||
<GROUP> The symbolic name of the group of the
|
||||
new file.
|
||||
|
||||
The hp-ux fileset databases have traditionally used the
|
||||
following keywords for these items:
|
||||
|
||||
hpux keyword Special Token
|
||||
------------ -----------
|
||||
a_out_location : <SRC>
|
||||
install_target : <DEST>
|
||||
link_source : <LNK>
|
||||
type : <TYPE>
|
||||
mode : <MODE>
|
||||
owner : <OWNER>
|
||||
group : <GROUP>
|
||||
|
||||
The default for the udb databases is to associate the <SRC> semantics
|
||||
with the "a_out_location" keyword, the <DEST> semantics with the
|
||||
"install_target" keyword, etc. This behavior may be modified by
|
||||
assigning a special token to a keyword in the Release Definition
|
||||
Section of the database file.
|
||||
|
||||
|
||||
General Format:
|
||||
A udb file has two sections. First, a Release Definition Section,
|
||||
which describes the keyword pairs to be maintained for a given
|
||||
release stream and second, the individual file records for each
|
||||
file which is to be delivered.
|
||||
|
||||
1) Release Definition Section
|
||||
|
||||
The Release Definition Section defines the keyword-value
|
||||
pairs which are to be maintained for each release. The
|
||||
release_id is an identifier which is used to identify the
|
||||
set of defaults for a particular release. The special
|
||||
release_id of "default" is used specify the default set
|
||||
of keyword/value pairs for an undefined release_id. The
|
||||
values associated with keywords in this section provide
|
||||
defaults for those keywords in later File Entries.
|
||||
|
||||
The name and number of these pairs need not be the same for
|
||||
all release streams.
|
||||
------------------------------
|
||||
For example:
|
||||
The following entry in the Release Definition Section
|
||||
|
||||
{ hpux : defaults
|
||||
src = <SRC>
|
||||
dest = <DEST>
|
||||
link_source =
|
||||
type = file
|
||||
perm = <MODE>
|
||||
perm = 0555
|
||||
owner = bin
|
||||
group = bin
|
||||
project = xwindows
|
||||
}
|
||||
|
||||
defines the defaults for the "hpux" release stream. It
|
||||
states that we should maintain information about src, dest, link_source, type, perm, owner, group and project in the database. Furthermore
|
||||
the semantics of <SRC> are to be associated with the keyword "src",
|
||||
<DEST> with "dest", link_source is associated with <LNK> by default,
|
||||
and type is associated with <TYPE> by default. Note that we associate
|
||||
perm with <MODE> semantics and supply a default value (0555) different
|
||||
from the automatic 0444 default. Owner and group have their usual
|
||||
meaning and a field called "project" is defined with a default value
|
||||
of "xwindows". No semantic information is known about the "project"
|
||||
field but it's value will be maintained.
|
||||
-------------------------
|
||||
|
||||
|
||||
2) File Entries
|
||||
After the Release Definition Section, come the entries for
|
||||
the deliverable files comprising the release. The build-tree-top
|
||||
relative path name of a source file is followed by one or more
|
||||
destination specifications which describe where in the product
|
||||
this file should go, as well as the ownerships/permissions etc. that
|
||||
should be associated with it. Any missing keyword/value pairs will
|
||||
be filled in by the defaults provided in the Release Definition
|
||||
Section.
|
||||
Information may differ between release
|
||||
streams. If there is no destination spec for a given release and
|
||||
there is no "default" destination spec then that souce file will
|
||||
not be delivered for that release. The "default" destination spec
|
||||
(if it exists) should come last and is applied for release streams
|
||||
that do not have more specific destination specs.
|
||||
|
||||
-------------------
|
||||
For example The following file entry:
|
||||
|
||||
cose/unity1/types/coe.vf
|
||||
{ hp-ux
|
||||
install_target = /usr/coe/newconfig/coe.vf
|
||||
}
|
||||
{ aix
|
||||
install_target = /usr/coe/types/coe.vf
|
||||
}
|
||||
{ default
|
||||
install_target = /var/coe/types/coe.vf
|
||||
owner = sys
|
||||
group = admin
|
||||
}
|
||||
|
||||
states that on hp-ux the file found at
|
||||
$(TOP)/cose/unity1/types/coe.vf in the build tree, is to be delivered
|
||||
to "/usr/coe/newconfig/coe.vf" on hp-ux; "/usr/coe/types/coe.vf" on
|
||||
aix; and "/var/coe/types/coe.vf" on all other release platforms. In
|
||||
addition, on all platforms other than hp-ux and aix the default
|
||||
owner and group (usually bin,bin) are replaced by sys,admin for this
|
||||
file.
|
||||
------------------
|
||||
|
||||
Pseudo-BNF:
|
||||
Here follows a pseudo-BNF description of the syntax of a
|
||||
udb file:
|
||||
---------------------------------------------------------------------
|
||||
|
||||
udbFile = release_definition_section file_records
|
||||
|
||||
release_definition_section = release_def release_definition_section |
|
||||
release_def
|
||||
|
||||
release_def = "{" release_id ":" "defaults" record_defs "}"
|
||||
|
||||
release_id = "hp-ux" | "aix" | "sun" | "usl" | "uxp" | "default"
|
||||
|
||||
record_defs = keyword_def "=" special_token |
|
||||
keyword_def "=" keyword_value
|
||||
|
||||
special_token = "<SRC>" | "<DEST>" | "<LNK>" |
|
||||
"<TYPE>" | "<MODE>" | "<OWNER>" | "<GROUP>"
|
||||
|
||||
keyword_def = identifier
|
||||
keyword_value = identifier
|
||||
|
||||
file_records = file_rec file_records |
|
||||
file_rec
|
||||
|
||||
file_rec = src_spec dest_specs
|
||||
|
||||
src_spec = a_out_loc | link_path
|
||||
|
||||
a_out_loc = < the build tree-top relative path to the source file >
|
||||
|
||||
link_path = < the full path to the link source in the product >
|
||||
|
||||
dest_specs = dest_spec dest_specs |
|
||||
dest_spec
|
||||
|
||||
dest_spec = "{" release_id value_specs "}"
|
||||
|
||||
|
||||
value_spec = keyword "=" value
|
||||
|
||||
keyword = identifier
|
||||
value = identifier
|
||||
|
||||
identifier = < any sequence of non-whitespace characters which
|
||||
does not contain an unescaped instance of one of
|
||||
the syntax_chars >
|
||||
|
||||
syntax_chars = "{", ":", ";", "=", "}"
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
|
||||
UDB TOOLS
|
||||
---------
|
||||
|
||||
The udb tools are located in the shared source tree in:
|
||||
/x/cdesrc/admin/IntegTools/dbTools
|
||||
|
||||
The basic tools for manipulating "udb" databases are:
|
||||
|
||||
udbParseLib.awk -- the awk parser for "udb" files.
|
||||
This awk file contains functions which read the udb
|
||||
databases into memory and set up awk-style
|
||||
associative arrays of keyword value pairs
|
||||
for all the file entries. This "library"
|
||||
also contains the default set of print
|
||||
routines that allow the database information
|
||||
to be printed in a number of different
|
||||
formats.
|
||||
Custom print routines can easily
|
||||
be written by following the conventions used
|
||||
in the default print routines.
|
||||
This parser is used by "udbToAny.ksh" and other
|
||||
scripts which manipulate the ".udb" databases.
|
||||
|
||||
udbToAny.ksh -- A ksh front end which allows the contents of the
|
||||
"udb" file to be transformed into a number of different
|
||||
formats. It also accepts the name of "custom" awk print
|
||||
routine which can do new and mysterious things. The
|
||||
most useful output at present is the "-toLst" option which
|
||||
produces output suitable for the "mkProd" script.
|
||||
NOTE: This script accepts more than one "udb" file
|
||||
as input but only the Release Definitions from the first
|
||||
udb file will be applied.
|
||||
|
||||
mkProd -- a ksh script which will create a product tree from the
|
||||
files in a build tree based on the contents of its input.
|
||||
This script takes a one-line format (.lst format) as input.
|
||||
This one-line format can be generated from a "udb" file by
|
||||
using the "-toLst" option in "udbToAny.ksh".
|
||||
This script calls two other ksh scripts "uncomment"
|
||||
and "linksLast". They do very simple tasks and should
|
||||
probably be rewritten as simple ksh functions in mkProd.
|
||||
NOTE: There is shell code to do automatic stripping of
|
||||
executables and compression of man pages etc. but
|
||||
most of that is turned off.
|
||||
|
||||
|
||||
There are other more complicated tools that act on "udb" databases,
|
||||
but they are hp-ux specific.
|
||||
|
||||
Example 1
|
||||
---------
|
||||
Suppose /x/cde_hpux is a build tree containing a successful hpux build.
|
||||
Suppose COE-RUN.udb and COE-RUN-ADMIN.udb are databases defining the
|
||||
COE-RUN product.
|
||||
To create a product tree at: "/prod/hpux/COE-RUN"
|
||||
run the following two commands (as root):
|
||||
|
||||
1) udbToAny.ksh -ReleaseStream hp-ux -toLst COE-RUN.udb COE-RUN-ADMIN.udb > COE-RUN.lst
|
||||
2) mkProd -D /prod/hpux/COE-RUN -S /x/cde_hpux COE-RUN.lst
|
||||
|
||||
NOTE: mkProd -f COE-RUN -D /prod/hpux -S /x/cde_hpux COE-RUN.lst
|
||||
would produce essentially the same results as 2) above.
|
||||
|
||||
Example 2
|
||||
---------
|
||||
Suppose we wanted to install the above bits on a test system. Then
|
||||
as root:
|
||||
|
||||
1) udbToAny.ksh -ReleaseStream hp-ux -toLst COE-RUN.udb COE-RUN-ADMIN.udb
|
||||
| mkProd -D / -S /x/cde_hpux
|
||||
|
||||
will install the bits on your root file system.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Executable
+311
@@ -0,0 +1,311 @@
|
||||
XCOMM! /bin/ksh
|
||||
XCOMM $XConsortium: dinstallCDE.src /main/8 1996/11/25 14:20:36 drk $
|
||||
|
||||
XCOMM
|
||||
XCOMM This script uses the 'CDE' configuration scripts to de-install the Desktop
|
||||
XCOMM environment.
|
||||
XCOMM
|
||||
XCOMM this script accepts the following parameters:
|
||||
XCOMM
|
||||
XCOMM Optional parameters:
|
||||
XCOMM
|
||||
XCOMM -f <filesets> -- a quoted, space-separated list of
|
||||
XCOMM filesets to unload. The .udb
|
||||
XCOMM extension is not required.
|
||||
XCOMM
|
||||
XCOMM -clean -- remove the temporaray and configuration directories
|
||||
XCOMM -cleanVar-- remove the temporary directory but NOT the
|
||||
XCOMM configuration directory
|
||||
XCOMM -prog -- load only the development environment
|
||||
XCOMM -runtime -- load only the runtime environment
|
||||
XCOMM
|
||||
XCOMM ##########################################################################
|
||||
|
||||
#define HASH #
|
||||
#define STAR *
|
||||
|
||||
REVISION="$(echo "$Revision: /main/8 $" | awk '{print $2}')"
|
||||
|
||||
Log()
|
||||
{
|
||||
echo "$1" | tee -a /tmp/dinstallCDE.log
|
||||
}
|
||||
|
||||
DoFilesetScript()
|
||||
{
|
||||
typeset ScriptName
|
||||
|
||||
FilesetName=$1
|
||||
ScriptName=$2 # use long config file name (configFoo)
|
||||
|
||||
test_string=${DATABASE_FILES#*$FilesetName}
|
||||
if (( ${#DATABASE_FILES} > ${#test_string} ))
|
||||
then
|
||||
if [ -x $POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $PLATFORM specific $FilesetName de-customize script"
|
||||
$POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName -d 2>&1 | \
|
||||
tee -a /tmp/$ScriptName.dverify
|
||||
elif [ -x $POST_INSTALL_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $FilesetName de-customize script"
|
||||
$POST_INSTALL_DIR/$ScriptName -d 2>&1 | tee -a /tmp/$ScriptName.dverify
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
DoLangScript()
|
||||
{
|
||||
typeset ScriptName
|
||||
|
||||
if [ "$BUILD_TREE" = "" ]; then
|
||||
ScriptName=$2 # use short config file name (foo.cfg)
|
||||
else
|
||||
ScriptName=$1 # use long config file name (configFoo)
|
||||
fi
|
||||
|
||||
if [ $CDECONFIGDIR = "CONFIG" ]; then
|
||||
typeset -u ScriptName
|
||||
fi
|
||||
|
||||
if [ -x $POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $PLATFORM specific $FilesetName de-customize script"
|
||||
$POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName -d $3 2>&1 | \
|
||||
tee -a /tmp/$ScriptName.dverify
|
||||
elif [ -x $POST_INSTALL_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $FilesetName de-customize script"
|
||||
$POST_INSTALL_DIR/$ScriptName -d $3 2>&1 | tee -a /tmp/$ScriptName.dverify
|
||||
fi
|
||||
}
|
||||
|
||||
DoScripts()
|
||||
{
|
||||
Log " "
|
||||
|
||||
DoFilesetScript CDE-TT configTT tt.cfg
|
||||
DoFilesetScript CDE-MIN configMin min.cfg
|
||||
DoFilesetScript CDE-RUN configRun run.cfg
|
||||
DoFilesetScript CDE-HELP-C configHelp help.cfg
|
||||
DoFilesetScript CDE-HELP-PRG configHelpPrg helpprg.cfg
|
||||
DoFilesetScript CDE-HELP-RUN configHelpRun helprun.cfg
|
||||
DoFilesetScript CDE-SHLIBS configShlibs shlibs.cfg
|
||||
DoFilesetScript CDE-DEMOS configDemos demos.cfg
|
||||
DoFilesetScript CDE-FONTS configFonts fonts.cfg
|
||||
DoFilesetScript CDE-ICONS configIcons icons.cfg
|
||||
DoFilesetScript CDE-INC configInc inc.cfg
|
||||
DoFilesetScript CDE-MAN configMan man.cfg
|
||||
DoFilesetScript CDE-MAN-DEV configManDev mandev.cfg
|
||||
DoFilesetScript CDE-MSG-C configMsgCat msgcat.cfg
|
||||
DoFilesetScript CDE-PRG configPrg prg.cfg
|
||||
|
||||
HASH see if a lang has been specified and configure backdrops and
|
||||
HASH palettes if it has.
|
||||
|
||||
if [ "$LangOption" != "" ]
|
||||
then
|
||||
DoLangScript configLang lang.cfg $theLang
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
USAGE()
|
||||
{
|
||||
echo "Usage: $(basename $0) [options]"
|
||||
echo ""
|
||||
echo "\tOptions:"
|
||||
echo ""
|
||||
echo "\t[-a <udb directory>]\t\talternate place to get the"
|
||||
echo "\t\t\t\t\tudb files from."
|
||||
echo "\t[-f <filesets>]\t\t\tspecify filesets to be unloaded."
|
||||
echo "\t\t\t\t\tThe list should be double-quoted,"
|
||||
echo "\t\t\t\t\tspace-separated, with no .udb"
|
||||
echo "\t\t\t\t\textensions."
|
||||
echo ""
|
||||
echo "\t[-clean]\t\t\tremove the temporary and configuration"
|
||||
echo "\t\t\t\t\tdirectories"
|
||||
echo "\t[-cleanVar]\t\t\tremove the temporary but NOT the "
|
||||
echo "\t\t\t\t\tconfiguration directory"
|
||||
echo "\t[-prog]\t\t\t\tload only the development environment"
|
||||
echo "\t[-runtime]\t\t\tload only the runtime environment"
|
||||
echo "\t[-relative]\t\t\trun the relative-located config scripts"
|
||||
echo "\t[-lang LANG]\t\t\tspecify LANG to use for backdrops and"
|
||||
echo "\t\t\t\t\tpalettes"
|
||||
echo ""
|
||||
}
|
||||
|
||||
ORIGINAL_COMMAND_LINE="$*"
|
||||
|
||||
XCOMM Set which system we are on
|
||||
BUILDSYSTEM=$(uname)
|
||||
|
||||
PLATFORM=""
|
||||
PLATFORM_SCRIPT_DIR=""
|
||||
|
||||
XCOMM
|
||||
XCOMM Set system
|
||||
XCOMM
|
||||
if [ $BUILDSYSTEM = "AIX" ];
|
||||
then
|
||||
PLATFORM=aix
|
||||
PLATFORM_SCRIPT_DIR=ibm
|
||||
elif [ $BUILDSYSTEM = "SunOS" ];
|
||||
then
|
||||
PLATFORM=sun
|
||||
PLATFORM_SCRIPT_DIR=sun
|
||||
elif [ $BUILDSYSTEM = "UNIX_SV" ];
|
||||
then
|
||||
PLATFORM=usl
|
||||
PLATFORM_SCRIPT_DIR=usl
|
||||
elif [ $BUILDSYSTEM = "UNIX_System_V" ];
|
||||
then
|
||||
PLATFORM=uxp
|
||||
PLATFORM_SCRIPT_DIR=uxp
|
||||
elif [ $BUILDSYSTEM = "OSF1" ];
|
||||
then
|
||||
PLATFORM=dec
|
||||
PLATFORM_SCRIPT_DIR=dec
|
||||
else # Build system = HP
|
||||
PLATFORM=hp-ux
|
||||
PLATFORM_SCRIPT_DIR=hp
|
||||
fi
|
||||
|
||||
if [ "$PLATFORM" = "aix" ];
|
||||
then
|
||||
USER=`/bin/whoami`
|
||||
elif [ "$PLATFORM" = "sun" -o "$PLATFORM" = "usl" -o "$PLATFORM" = "uxp" ];
|
||||
then
|
||||
USER=`/usr/ucb/whoami`
|
||||
else
|
||||
USER=`/usr/bin/whoami`
|
||||
fi
|
||||
|
||||
if [ "$USER" != "root" ];
|
||||
then
|
||||
USAGE
|
||||
echo ""
|
||||
echo "You must be root to run this script"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PATH=/bin:/usr/bin:/etc:/usr/bin/X11:
|
||||
export PATH
|
||||
|
||||
CLEANING="no"
|
||||
CLEANING_ETC="no"
|
||||
USE_ALTERNATE_UDB_DIR="no"
|
||||
USE_RELATIVE="no"
|
||||
STARTING_DIR=$PWD
|
||||
DATABASE_FILES=""
|
||||
LeaveLinks="no"
|
||||
REMOVE_LINKS="no"
|
||||
CLEAN_DAEMONS="yes"
|
||||
theLang=""
|
||||
DEVELOP_ENV="yes"
|
||||
RUNTIME_ENV="yes"
|
||||
|
||||
rm -f /tmp/dinstallCDE.log
|
||||
|
||||
Log "Options specified..."
|
||||
while [ $# -ne 0 ]; do
|
||||
case $1 in
|
||||
-a) Log " - alternate place to get the udb files from"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ALTERNATE_UDB_DIR=$1
|
||||
USE_ALTERNATE_UDB_DIR="yes"
|
||||
shift;
|
||||
;;
|
||||
-f) Log " - load specific filesets"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
DATABASE_FILES=$1
|
||||
shift;
|
||||
;;
|
||||
-clean) Log " - delete all three cde directories"
|
||||
CLEANING="yes"
|
||||
CLEANING_ETC="yes"
|
||||
shift;
|
||||
;;
|
||||
-cleanVar) Log " - delete only temporary and installation directories"
|
||||
CLEANING="yes"
|
||||
shift;
|
||||
;;
|
||||
-relative) Log " - run the relative-located config scripts"
|
||||
USE_RELATIVE="yes"
|
||||
shift;
|
||||
;;
|
||||
-prog) Log " - remove only the development environment"
|
||||
RUNTIME_ENV="no"
|
||||
shift;
|
||||
;;
|
||||
-runtime) Log " - remove only the runtime environment"
|
||||
DEVELOP_ENV="no"
|
||||
shift;
|
||||
;;
|
||||
-lang) Log " - configure backdrops and palettes for LANG"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
theLang=$1
|
||||
shift;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo ""
|
||||
|
||||
TOOL_DIR=$BUILD_TREE/admin/IntegTools/dbTools
|
||||
if [ "$USE_RELATIVE" = "yes" ]
|
||||
then
|
||||
POST_INSTALL_DIR=../post_install
|
||||
else
|
||||
POST_INSTALL_DIR=$BUILD_TREE/admin/IntegTools/post_install
|
||||
fi
|
||||
|
||||
if [ "$USE_ALTERNATE_UDB_DIR" = "yes" ]
|
||||
then
|
||||
DATABASE_DIR=$ALTERNATE_UDB_DIR/databases
|
||||
else
|
||||
DATABASE_DIR=$BUILD_TREE/databases
|
||||
fi
|
||||
|
||||
if [ "$DATABASE_FILES" = "" ]
|
||||
then
|
||||
if [ "$DEVELOP_ENV" = "yes" -a "$RUNTIME_ENV" = "yes" ]
|
||||
then
|
||||
DATABASE_FILES="CDE-RUN CDE-MIN CDE-TT CDE-MAN CDE-HELP-RUN CDE-C \
|
||||
CDE-MSG-C CDE-HELP-C CDE-SHLIBS CDE-HELP-PRG \
|
||||
CDE-PRG CDE-INC CDE-DEMOS CDE-MAN-DEV CDE-ICONS \
|
||||
CDE-FONTS"
|
||||
elif [ "$DEVELOP_ENV" = "yes" ]
|
||||
then
|
||||
DATABASE_FILES="CDE-HELP-PRG CDE-PRG CDE-INC CDE-DEMOS \
|
||||
CDE-MAN-DEV CDE-SHLIBS"
|
||||
elif [ "$RUNTIME_ENV" = "yes" ]
|
||||
then
|
||||
DATABASE_FILES="CDE-RUN CDE-MIN CDE-TT CDE-MAN CDE-HELP-RUN CDE-C \
|
||||
CDE-HELP-C CDE-MSG-C CDE-SHLIBS CDE-ICONS CDE-FONTS"
|
||||
fi
|
||||
fi
|
||||
|
||||
INSTALL_LOCATION=CDE_INSTALLATION_TOP
|
||||
CONFIGURE_LOCATION=CDE_CONFIGURATION_TOP
|
||||
LOGFILES_LOCATION=CDE_LOGFILES_TOP
|
||||
|
||||
DoScripts
|
||||
|
||||
echo "Done."
|
||||
echo ""
|
||||
echo "See /tmp/dinstallCDE.log for a log of this de-install session."
|
||||
echo ""
|
||||
Executable
+964
@@ -0,0 +1,964 @@
|
||||
XCOMM! /bin/ksh
|
||||
XCOMM $XConsortium: installCDE.src /main/20 1996/11/25 14:21:13 drk $
|
||||
|
||||
XCOMM
|
||||
XCOMM This script uses the 'CDE' databases to install either the Desktop
|
||||
XCOMM environment on a specified machine or creates a tar ball to be used
|
||||
XCOMM in an install process.
|
||||
XCOMM
|
||||
XCOMM this script accepts the following parameters:
|
||||
XCOMM -s <source> -- The top of build tree where the files are
|
||||
XCOMM gathered from.
|
||||
XCOMM -z <package> -- The desktop install package
|
||||
XCOMM
|
||||
XCOMM Optional parameters:
|
||||
XCOMM
|
||||
XCOMM -t <package destination> -- where to store install package
|
||||
XCOMM -pI <actual install location> -- where CDE_INSTALLATION_TOP will be linked to.
|
||||
XCOMM -pC <actual config location> -- where CDE_CONFIGURATION_TOP will be linked to.
|
||||
XCOMM -pV <actual var location> -- where CDE_LOGFILES_TOP will be linked to.
|
||||
XCOMM -a <alternate udb directory>
|
||||
XCOMM -f <filesets> -- a quoted, space-separated list of
|
||||
XCOMM filesets to load. The .udb extension
|
||||
XCOMM is not required.
|
||||
XCOMM
|
||||
XCOMM -clean -- remove the temporary, configuration and installation
|
||||
XCOMM directories
|
||||
XCOMM -cleanTwo-- remove the temporary and installation directories
|
||||
XCOMM but NOT the configuration directory
|
||||
XCOMM -cleanEtc-- remove the configuration directories
|
||||
XCOMM -prog -- load only the development environment
|
||||
XCOMM -runtime -- load only the runtime environment
|
||||
XCOMM -pack -- create packing list
|
||||
XCOMM -pseudo -- don't configure the desktop
|
||||
XCOMM -nocompress -- don't compress the tarball (-t only)
|
||||
XCOMM
|
||||
XCOMM -Lang -- load the localized filesets
|
||||
XCOMM -LinkStepOnly -- set up the -pI, -pC, and -pV links
|
||||
XCOMM then exit
|
||||
XCOMM -DontRunScripts -- stop after installation
|
||||
XCOMM -RunScriptsOnly -- only execute the scripts
|
||||
XCOMM -configureOnly -- only configure the desktop
|
||||
XCOMM
|
||||
XCOMM ##########################################################################
|
||||
|
||||
#define HASH #
|
||||
#define STAR *
|
||||
|
||||
|
||||
REVISION="$(echo "$Revision: /main/20 $" | awk '{print $2}')"
|
||||
|
||||
Log()
|
||||
{
|
||||
echo "$1" | tee -a /tmp/installCDE.log
|
||||
}
|
||||
|
||||
MakeTarball()
|
||||
{
|
||||
Log "\nGenerating UNIX Desktop install package $DATE in $TARBALL_LOCATION"
|
||||
HASH
|
||||
HASH create installable tarball
|
||||
HASH
|
||||
Log "Creating tarball..."
|
||||
|
||||
if [ $PLATFORM = "usl" -o "$PLATFORM" = "uxp" ]
|
||||
then
|
||||
ulimit -f unlimited
|
||||
fi
|
||||
|
||||
DIRNAME=build.$DATE
|
||||
mkdir -p $TARBALL_LOCATION/$DIRNAME
|
||||
cd /
|
||||
echo $DATE >$LOGFILES_LOCATION/.build.$DATE
|
||||
chown bin $LOGFILES_LOCATION/.build.$DATE
|
||||
|
||||
if [ "$COMPRESS_TARBALL" = "yes" ]; then
|
||||
tar -cf - $INSTALL_LOCATION/STAR \
|
||||
2>$TARBALL_LOCATION/$DIRNAME/extract.err |
|
||||
compress -c >$TARBALL_LOCATION/$DIRNAME/dttar.Z
|
||||
else
|
||||
tar -cf $TARBALL_LOCATION/$DIRNAME/dt.tar \
|
||||
$INSTALL_LOCATION/STAR \
|
||||
2>$TARBALL_LOCATION/$DIRNAME/extract.err 2>&1
|
||||
fi
|
||||
|
||||
if [ "$ACTUAL_INSTALLATION_LOC" = "" ]; then
|
||||
actualInstallDir=$INSTALL_LOCATION
|
||||
else
|
||||
actualInstallDir=$ACTUAL_INSTALLATION_LOC
|
||||
fi
|
||||
let size=$(du -s $actualInstallDir | awk '{print $1}')*512
|
||||
|
||||
HASH load installation fileset *after* tarball generated
|
||||
LoadFileSet "" "CDE-INSTALL"
|
||||
|
||||
HASH create config dir
|
||||
destPost=$TARBALL_LOCATION/$DIRNAME/config
|
||||
mkdir $destPost
|
||||
|
||||
HASH copy config and platform config scripts
|
||||
src=$INSTALL_LOCATION/install/$PLATFORM_SCRIPT_DIR
|
||||
cp $src/config/STAR.cfg $destPost
|
||||
|
||||
HASH copy this script and install.dt platform overrides
|
||||
cp $src/install.dto $TARBALL_LOCATION/$DIRNAME/install.dto
|
||||
cp $src/install.cde $TARBALL_LOCATION/$DIRNAME/install.cde
|
||||
chmod 755 $TARBALL_LOCATION/$DIRNAME/install.cde
|
||||
|
||||
cd /
|
||||
|
||||
Log "done."
|
||||
|
||||
cat >$TARBALL_LOCATION/$DIRNAME/dt.pkg <<FIN
|
||||
PLATFORM: $PLATFORM
|
||||
VERSION: $REVISION
|
||||
TS: $DATE
|
||||
COMPRESSED: $COMPRESS_TARBALL
|
||||
SIZE: $size
|
||||
CL: $ORIGINAL_COMMAND_LINE
|
||||
FILESETS: $DATABASE_FILES
|
||||
FIN
|
||||
|
||||
cat >$TARBALL_LOCATION/$DIRNAME/build.status <<FIN
|
||||
The UNIX Desktop
|
||||
|
||||
BUILD: $DATE
|
||||
OVERALL STATUS: <not yet tested>
|
||||
OVERALL PERFORMANCE: <not yet tested>
|
||||
MAJOR PROBLEMS: <not yet tested>
|
||||
|
||||
FIN
|
||||
|
||||
chmod g+w $TARBALL_LOCATION/$DIRNAME/build.status
|
||||
}
|
||||
|
||||
DoFilesetScript()
|
||||
{
|
||||
typeset ScriptName
|
||||
|
||||
FilesetName=$1
|
||||
if [ "$BUILD_TREE" = "" ]; then
|
||||
ScriptName=$3 # use short config file name (foo.cfg)
|
||||
else
|
||||
ScriptName=$2 # use long config file name (configFoo)
|
||||
fi
|
||||
|
||||
if [ $CDECONFIGDIR = "CONFIG" ]; then
|
||||
typeset -u ScriptName
|
||||
fi
|
||||
|
||||
test_string=${DATABASE_FILES#*$FilesetName}
|
||||
if (( ${#DATABASE_FILES} > ${#test_string} ))
|
||||
then
|
||||
if [ -x $POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $PLATFORM specific $FilesetName customize script"
|
||||
$POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName -e 2>&1 | \
|
||||
tee -a /tmp/installCDE.log
|
||||
elif [ -x $POST_INSTALL_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $FilesetName customize script"
|
||||
$POST_INSTALL_DIR/$ScriptName -e 2>&1 | tee -a /tmp/installCDE.log
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
DoScripts()
|
||||
{
|
||||
Log " "
|
||||
|
||||
DoFilesetScript CDE-TT configTT tt.cfg
|
||||
DoFilesetScript CDE-MIN configMin min.cfg
|
||||
DoFilesetScript CDE-SHLIBS configShlibs shlibs.cfg
|
||||
DoFilesetScript CDE-RUN configRun run.cfg
|
||||
}
|
||||
|
||||
CreatePackingList()
|
||||
{
|
||||
Log " "
|
||||
Log "Creating packing list."
|
||||
touch $INSTALL_LOCATION/Packing_list
|
||||
for i in `echo $DATABASE_FILES`
|
||||
do
|
||||
Log " for $i"
|
||||
$TOOL_DIR/udbToAny.ksh -toDB -ReleaseStream $PLATFORM $DATABASE_DIR/${i}.udb > /tmp/${i}.db
|
||||
if [ -r /tmp/${i}.db ]
|
||||
then
|
||||
for file in `fgrep install_target /tmp/${i}.db | cut -sf 2 -d \: `
|
||||
do
|
||||
echo "$file" >>$INSTALL_LOCATION/Packing_list
|
||||
done
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
CleanDaemons()
|
||||
{
|
||||
HASH kill these processes so that they can be removed and new ones
|
||||
HASH installed
|
||||
|
||||
for i in inetd rpc.ttdbserver rpc.cmsd
|
||||
do
|
||||
if [ "$PLATFORM" = "aix" -a $i = "inetd" ]
|
||||
then
|
||||
lssrc -s inetd >/dev/null 2>&1
|
||||
if [ $? = "0" ]
|
||||
then
|
||||
stopsrc -s inetd >>/tmp/installCDE.log 2>&1
|
||||
fi
|
||||
else
|
||||
ps -ef | grep $i | grep -v grep >/tmp/tmppsout
|
||||
if [ -s /tmp/tmppsout ]
|
||||
then
|
||||
awk '{print "kill " $2}' /tmp/tmppsout | /bin/csh -f
|
||||
sleep 2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
rm -f /tmp/tmppsout
|
||||
}
|
||||
|
||||
RestartInetd()
|
||||
{
|
||||
HASH now restart inetd
|
||||
|
||||
OLDPWD=`pwd`
|
||||
cd /
|
||||
if [ "$PLATFORM" = "sun" -o "$PLATFORM" = "usl" -o "$PLATFORM" = "uxp" ]
|
||||
then
|
||||
/usr/sbin/inetd -s
|
||||
elif [ "$PLATFORM" = "aix" ]
|
||||
then
|
||||
startsrc -s inetd >>/tmp/installCDE.log 2>&1
|
||||
elif [ "$PLATFORM" = "dec" ]
|
||||
then
|
||||
/usr/sbin/inetd
|
||||
else
|
||||
#ifdef hpV4
|
||||
/usr/sbin/inetd
|
||||
#else
|
||||
/etc/inetd
|
||||
#endif
|
||||
fi
|
||||
cd $OLDPWD
|
||||
}
|
||||
|
||||
CheckForActualLocations()
|
||||
{
|
||||
XCOMM
|
||||
XCOMM if different actual locations specified, set up the links
|
||||
XCOMM
|
||||
|
||||
|
||||
if [ "$CLEAN_DAEMONS" = "yes" ]
|
||||
then
|
||||
CleanDaemons
|
||||
fi
|
||||
|
||||
HASH remove the contents of the installation directory then the directory
|
||||
HASH itself
|
||||
|
||||
if [ "$CLEANING" = "yes" ]
|
||||
then
|
||||
Log "Removing $INSTALL_LOCATION contents... "
|
||||
if [ -d $INSTALL_LOCATION ]
|
||||
then
|
||||
rm -rf $INSTALL_LOCATION/STAR
|
||||
if [ "$LeaveLinks" = "yes" ]
|
||||
then
|
||||
if [ ! -L $INSTALL_LOCATION ]
|
||||
then
|
||||
rm -rf $INSTALL_LOCATION
|
||||
fi
|
||||
else
|
||||
if [ -L $INSTALL_LOCATION ]
|
||||
then
|
||||
rm -f $INSTALL_LOCATION
|
||||
else
|
||||
rm -rf $INSTALL_LOCATION
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CONFIGURE_ONLY" = "no" ]
|
||||
then
|
||||
if [ "$ACTUAL_INSTALLATION_LOC" != "" ]
|
||||
then
|
||||
|
||||
HASH
|
||||
HASH first create the actual directory - if not there
|
||||
HASH
|
||||
|
||||
if [ ! -d $ACTUAL_INSTALLATION_LOC ]
|
||||
then
|
||||
mkdir -p $ACTUAL_INSTALLATION_LOC
|
||||
if [ ! -d $ACTUAL_INSTALLATION_LOC ]
|
||||
then
|
||||
Log "cannot create $ACTUAL_INSTALLATION_LOC directory"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
ln -s $ACTUAL_INSTALLATION_LOC $INSTALL_LOCATION
|
||||
|
||||
else
|
||||
if [ ! -d $INSTALL_LOCATION -a ! -L $INSTALL_LOCATION ];
|
||||
then
|
||||
mkdir -p $INSTALL_LOCATION
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CLEAN_DAEMONS" = "yes" ]
|
||||
then
|
||||
RestartInetd
|
||||
fi
|
||||
|
||||
HASH remove the contents of the configuration directory
|
||||
|
||||
if [ "$CLEANING_ETC" = "yes" ]
|
||||
then
|
||||
Log "Removing $CONFIGURE_LOCATION contents... "
|
||||
if [ -d $CONFIGURE_LOCATION ]
|
||||
then
|
||||
rm -rf $CONFIGURE_LOCATION/STAR
|
||||
if [ "$LeaveLinks" = "yes" ]
|
||||
then
|
||||
if [ ! -L $CONFIGURE_LOCATION ]
|
||||
then
|
||||
rm -rf $CONFIGURE_LOCATION
|
||||
fi
|
||||
else
|
||||
if [ -L $CONFIGURE_LOCATION ]
|
||||
then
|
||||
rm -f $CONFIGURE_LOCATION
|
||||
else
|
||||
rm -rf $CONFIGURE_LOCATION
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$ACTUAL_CONFIGURATION_LOC" != "" ]
|
||||
then
|
||||
if [ ! -d $ACTUAL_CONFIGURATION_LOC ]
|
||||
then
|
||||
mkdir -p $ACTUAL_CONFIGURATION_LOC
|
||||
if [ ! -d $ACTUAL_CONFIGURATION_LOC ]
|
||||
then
|
||||
Log "cannot create $ACTUAL_CONFIGURATION_LOC directory"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
ln -s $ACTUAL_CONFIGURATION_LOC $CONFIGURE_LOCATION
|
||||
|
||||
else
|
||||
if [ ! -d $CONFIGURE_LOCATION -a ! -L $CONFIGURE_LOCATION ];
|
||||
then
|
||||
mkdir -p $CONFIGURE_LOCATION
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CLEANING" = "yes" ]
|
||||
then
|
||||
Log "Removing $LOGFILES_LOCATION contents... "
|
||||
if [ -d $LOGFILES_LOCATION ]
|
||||
then
|
||||
rm -rf $LOGFILES_LOCATION/STAR
|
||||
if [ "$LeaveLinks" = "yes" ]
|
||||
then
|
||||
if [ ! -L $LOGFILES_LOCATION ]
|
||||
then
|
||||
rm -rf $LOGFILES_LOCATION
|
||||
fi
|
||||
else
|
||||
if [ -L $LOGFILES_LOCATION ]
|
||||
then
|
||||
rm -f $LOGFILES_LOCATION
|
||||
else
|
||||
rm -rf $LOGFILES_LOCATION
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$ACTUAL_VAR_LOC" != "" ]
|
||||
then
|
||||
if [ ! -d $ACTUAL_VAR_LOC ]
|
||||
then
|
||||
mkdir -p $ACTUAL_VAR_LOC
|
||||
if [ ! -d $ACTUAL_VAR_LOC ]
|
||||
then
|
||||
Log "cannot create $ACTUAL_VAR_LOC directory"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
ln -s $ACTUAL_VAR_LOC $LOGFILES_LOCATION
|
||||
|
||||
else
|
||||
if [ ! -d $LOGFILES_LOCATION -a ! -L $LOGFILES_LOCATION ];
|
||||
then
|
||||
mkdir -p $LOGFILES_LOCATION
|
||||
fi
|
||||
fi
|
||||
|
||||
Log " "
|
||||
}
|
||||
|
||||
USAGE()
|
||||
{
|
||||
echo "Usage: $(basename $0) {-s <source>|-z <package>} [options]"
|
||||
echo ""
|
||||
echo "\t-s <source>\t\t\tthe top of the build tree"
|
||||
echo "\t-z <package>\t\tthe desktop install package"
|
||||
echo ""
|
||||
echo "\tOptions:"
|
||||
echo ""
|
||||
echo "\t[-t <package_destination>]\tif specified create an"
|
||||
echo "\t\t\t\t\tinstall package and store it in the"
|
||||
echo "\t\t\t\t\tdestination."
|
||||
echo "\t[-pI <actual install location>]\twhere" CDE_INSTALLATION_TOP "will be linked to."
|
||||
echo "\t[-pC <actual config location>]\twhere" CDE_CONFIGURATION_TOP "will be linked to."
|
||||
echo "\t[-pV <actual var location>]\twhere" CDE_LOGFILES_TOP "will be linked to."
|
||||
echo ""
|
||||
echo "\t[-a <udb directory>]\t\talternate place to get the"
|
||||
echo "\t\t\t\t\tudb files from."
|
||||
echo "\t[-f <filesets>]\t\t\tspecify filesets to be loaded."
|
||||
echo "\t\t\t\t\tThe list should be double-quoted,"
|
||||
echo "\t\t\t\t\tspace-separated, with no .udb"
|
||||
echo "\t\t\t\t\textensions."
|
||||
echo ""
|
||||
echo "\t[-clean]\t\t\tremove the temporary, configuration, and"
|
||||
echo "\t\t\t\t\tinstallation directory"
|
||||
echo "\t[-cleanTwo]\t\t\tremove the temporary and installation "
|
||||
echo "\t\t\t\t\tdirectory, but NOT the configuration directory"
|
||||
echo "\t[-cleanEtc]\t\t\tremove the configuration directory, but "
|
||||
echo "\t\t\t\t\NOT the temporary and installation directories"
|
||||
echo "\t[-prog]\t\t\t\tload only the development environment"
|
||||
echo "\t[-runtime]\t\t\tload only the runtime environment"
|
||||
echo "\t[-relative]\t\t\trun the relative-located config scripts"
|
||||
echo "\t[-pack]\t\t\t\tcreate a packing list"
|
||||
echo "\t[-pseudo]\t\t\tdo not configure desktop when installing"
|
||||
echo "\t[-nocompress]\t\t\tdo not compress tarball when creating package"
|
||||
echo "\t[-lang LANG]\t\t\tspecify LANG to load appropriate localized"
|
||||
echo "\t\t\t\t\tfilesets"
|
||||
echo "\t[-LeaveLinks]\t\t\t\tdo not delete the links after cleaning"
|
||||
echo ""
|
||||
echo "\t[-LinkStepOnly]\t\t\tset up the -pI, -pC, and -pV links"
|
||||
echo "\t\t\t\t\tthen exit"
|
||||
echo "\t[-DontRunScripts]\t\tstop after installation"
|
||||
echo "\t[-RunScriptsOnly]\t\tonly execute the scripts"
|
||||
echo "\t[-configureOnly]\t\tonly configure the desktop"
|
||||
echo ""
|
||||
echo "\tExamples:"
|
||||
echo ""
|
||||
echo "\tinstallCDE -s /x/cde_hp700_90"
|
||||
echo "\tinstallCDE -s /x/cde_aix_32 -f \"CDE_MIN CDE-SHLIBS\""
|
||||
echo "\tinstallCDE -s /x/cde_sun_52 -pI /bigdisk/opt/dt -clean"
|
||||
echo "\tinstallCDE -s /x/cde_sun_52 -pI /dtinstall -clean\\"
|
||||
echo "\t\t-pseudo -t /dtpackages -nocompress"
|
||||
}
|
||||
|
||||
XCOMM
|
||||
XCOMM LoadFileSet() - load a UDB file
|
||||
XCOMM $1 - fileset number
|
||||
XCOMM $2 - fileset name
|
||||
XCOMM
|
||||
LoadFileSet()
|
||||
{
|
||||
if [ "$1" = "" ]; then
|
||||
num=""
|
||||
else
|
||||
num="$1."
|
||||
fi
|
||||
|
||||
Log " $num installing database $2"
|
||||
Log " - creating ${2}.lst file"
|
||||
$TOOL_DIR/udbToAny.ksh -toLst -ReleaseStream $PLATFORM \
|
||||
$DATABASE_DIR/${2}.udb > /tmp/${2}.lst
|
||||
|
||||
Log " - installing ... \c"
|
||||
$TOOL_DIR/mkProd -D / -S $BUILD_TREE /tmp/${2}.lst \
|
||||
2>/tmp/${2}.err 1>/tmp/${2}.good
|
||||
Log "done."
|
||||
|
||||
Log " - checking for errors ..."
|
||||
rm -f /tmp/${2}.missing
|
||||
awk '{if ($1 == "ERROR:") print " " $4}' \
|
||||
/tmp/${2}.err >> /tmp/${2}.missing
|
||||
if [ -s /tmp/${2}.missing ]
|
||||
then
|
||||
Log " - missing files:"
|
||||
cat /tmp/${2}.missing | tee -a /tmp/installCDE.log
|
||||
fi
|
||||
}
|
||||
|
||||
ORIGINAL_COMMAND_LINE="$*"
|
||||
|
||||
XCOMM Set which system we are on
|
||||
BUILDSYSTEM=$(uname)
|
||||
|
||||
PLATFORM=""
|
||||
PLATFORM_SCRIPT_DIR=""
|
||||
|
||||
XCOMM
|
||||
XCOMM Set system
|
||||
XCOMM
|
||||
if [ $BUILDSYSTEM = "AIX" ];
|
||||
then
|
||||
PLATFORM=aix
|
||||
PLATFORM_SCRIPT_DIR=ibm
|
||||
elif [ $BUILDSYSTEM = "SunOS" ];
|
||||
then
|
||||
PLATFORM=sun
|
||||
PLATFORM_SCRIPT_DIR=sun
|
||||
elif [ $BUILDSYSTEM = "UNIX_SV" ];
|
||||
then
|
||||
PLATFORM=usl
|
||||
PLATFORM_SCRIPT_DIR=usl
|
||||
elif [ $BUILDSYSTEM = "UNIX_System_V" ];
|
||||
then
|
||||
PLATFORM=uxp
|
||||
PLATFORM_SCRIPT_DIR=uxp
|
||||
elif [ $BUILDSYSTEM = "OSF1" ];
|
||||
then
|
||||
PLATFORM=dec
|
||||
PLATFORM_SCRIPT_DIR=dec
|
||||
else # Build system = HP
|
||||
PLATFORM=hp-ux
|
||||
PLATFORM_SCRIPT_DIR=hp
|
||||
fi
|
||||
|
||||
if [ "$PLATFORM" = "aix" ];
|
||||
then
|
||||
USER=`/bin/whoami`
|
||||
elif [ "$PLATFORM" = "sun" -o "$PLATFORM" = "usl" -o "$PLATFORM" = "uxp" ];
|
||||
then
|
||||
USER=`/usr/ucb/whoami`
|
||||
else
|
||||
USER=`/usr/bin/whoami`
|
||||
fi
|
||||
|
||||
if [ "$USER" != "root" ];
|
||||
then
|
||||
USAGE
|
||||
echo ""
|
||||
echo "You must be root to run this script"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$PLATFORM" = "usl" -o "$PLATFORM" = "uxp" ]
|
||||
then
|
||||
umask 000
|
||||
fi
|
||||
|
||||
unset TMPDIR
|
||||
|
||||
PATH=/bin:/usr/bin:/etc:/usr/bin/X11:
|
||||
export PATH
|
||||
|
||||
CLEANING="no"
|
||||
CLEANING_ETC="no"
|
||||
TARBALL="no"
|
||||
COMPRESS_TARBALL="yes"
|
||||
USE_ALTERNATE_UDB_DIR="no"
|
||||
DEVELOP_ENV="no"
|
||||
RUNTIME_ENV="no"
|
||||
USE_RELATIVE="no"
|
||||
STARTING_DIR=$PWD
|
||||
ACTUAL_INSTALLATION_LOC=""
|
||||
ACTUAL_CONFIGURATION_LOC=""
|
||||
ACTUAL_VAR_LOC=""
|
||||
CREATE_PACKING_LIST="no"
|
||||
DO_LINK_STEP_ONLY="no"
|
||||
DO_INSTALL_ONLY="no"
|
||||
RUN_SCRIPTS="yes"
|
||||
RUN_SCRIPTS_ONLY="no"
|
||||
DATABASE_FILES=""
|
||||
BUILD_TREE=""
|
||||
TAR_DIR=""
|
||||
LeaveLinks="no"
|
||||
REMOVE_LINKS="no"
|
||||
CLEAN_DAEMONS="yes"
|
||||
theLang=""
|
||||
CONFIGURE_ONLY="no"
|
||||
|
||||
rm -f /tmp/installCDE.log
|
||||
|
||||
Log "Options specified..."
|
||||
while [ $# -ne 0 ]; do
|
||||
case $1 in
|
||||
-s) Log " - get the build tree to extract from"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
BUILD_TREE=$1
|
||||
shift;
|
||||
;;
|
||||
-z) Log " - get the install package to extract from"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
TAR_TREE=$1
|
||||
shift;
|
||||
;;
|
||||
-t) Log " - where to put the install package"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
if [ "$SOURCE_TAR_FILE" = "" ]
|
||||
then
|
||||
TARBALL="yes"
|
||||
TARBALL_LOCATION=$1
|
||||
fi
|
||||
shift;
|
||||
;;
|
||||
-a) Log " - alternate place to get the udb files from"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ALTERNATE_UDB_DIR=$1
|
||||
USE_ALTERNATE_UDB_DIR="yes"
|
||||
shift;
|
||||
;;
|
||||
-f) Log " - load specific filesets"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
DATABASE_FILES=$1
|
||||
shift;
|
||||
;;
|
||||
-p) Log " - get all locations"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ACTUAL_INSTALLATION_LOC=$1
|
||||
ACTUAL_CONFIGURATION_LOC=$1
|
||||
ACTUAL_VAR_LOC=$1
|
||||
shift;
|
||||
;;
|
||||
-pI) Log " - get actual installation location"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ACTUAL_INSTALLATION_LOC=$1
|
||||
shift;
|
||||
;;
|
||||
-pC) Log " - get actual configuration location"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ACTUAL_CONFIGURATION_LOC=$1
|
||||
shift;
|
||||
;;
|
||||
-pV) Log " - get actual var location"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ACTUAL_VAR_LOC=$1
|
||||
shift;
|
||||
;;
|
||||
-clean) Log " - delete all three cde directories"
|
||||
CLEANING="yes"
|
||||
CLEANING_ETC="yes"
|
||||
shift;
|
||||
;;
|
||||
-cleanTwo) Log " - delete only temporary and installation directories"
|
||||
CLEANING="yes"
|
||||
shift;
|
||||
;;
|
||||
-cleanEtc) Log " - delete only the configuration directory"
|
||||
CLEANING_ETC="yes"
|
||||
shift;
|
||||
;;
|
||||
-prog) Log " - load only the development environment"
|
||||
DEVELOP_ENV="yes"
|
||||
RUNTIME_ENV="no"
|
||||
shift;
|
||||
;;
|
||||
-runtime) Log " - load only the runtime environment"
|
||||
RUNTIME_ENV="yes"
|
||||
DEVELOP_ENV="no"
|
||||
shift;
|
||||
;;
|
||||
-relative) Log " - run the relative-located config scripts"
|
||||
USE_RELATIVE="yes"
|
||||
shift;
|
||||
;;
|
||||
-pack) Log " - create a packing list"
|
||||
CREATE_PACKING_LIST="yes"
|
||||
shift;
|
||||
;;
|
||||
-LeaveLinks) Log " - do not remove the links"
|
||||
LeaveLinks="yes"
|
||||
shift;
|
||||
;;
|
||||
-LinkStepOnly) Log " - do link step only"
|
||||
DO_LINK_STEP_ONLY="yes"
|
||||
shift;
|
||||
;;
|
||||
-DontRunScripts) Log " - stop after installation"
|
||||
DO_INSTALL_ONLY="yes"
|
||||
shift;
|
||||
;;
|
||||
-RunScriptsOnly) Log " - only run scripts"
|
||||
RUN_SCRIPTS_ONLY="yes"
|
||||
shift;
|
||||
;;
|
||||
-pseudo) Log " - pseudo install"
|
||||
RUN_SCRIPTS="no"
|
||||
REMOVE_LINKS="yes"
|
||||
CLEAN_DAEMONS="no"
|
||||
shift;
|
||||
;;
|
||||
-nocompress) Log " - do not compress tarball"
|
||||
COMPRESS_TARBALL="no"
|
||||
shift;
|
||||
;;
|
||||
-lang) Log " - load localized filesets"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
theLang=$1
|
||||
shift;
|
||||
;;
|
||||
-configureOnly) Log " - Configure only"
|
||||
CONFIGURE_ONLY="yes"
|
||||
CLEAN_DAEMONS="yes"
|
||||
shift;
|
||||
;;
|
||||
*) Log " - unknown option"
|
||||
USAGE
|
||||
exit 1;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo ""
|
||||
|
||||
if [ -z "$BUILD_TREE" -a -z "$TAR_TREE" ]
|
||||
then
|
||||
USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$BUILD_TREE" != "" -a ! -d "$BUILD_TREE" ]
|
||||
then
|
||||
Log "Build tree does not exist."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$TAR_TREE" != "" -a ! -d "$TAR_TREE" ]
|
||||
then
|
||||
Log "Tar tree does not exist."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CDEPACKAGE=dt.pkg
|
||||
CDETARFILE=dt.tar
|
||||
CDETARFILEZ=dttar.Z
|
||||
CDECONFIGDIR=config
|
||||
|
||||
XCOMM
|
||||
XCOMM get the current time stamp if going to create a tarball
|
||||
XCOMM
|
||||
|
||||
if [ $TARBALL = "yes" ];
|
||||
then
|
||||
set -- `/bin/date`
|
||||
DATE=$2_$3_$4_$6
|
||||
fi
|
||||
|
||||
if [ -z "$BUILD_TREE" -a ${0##STAR/} = INSTALL.CDE ]; then
|
||||
typeset -u CDEPACKAGE
|
||||
typeset -u CDETARFILE
|
||||
typeset -u CDETARFILEZ
|
||||
typeset -u CDECONFIGDIR
|
||||
fi
|
||||
|
||||
TOOL_DIR=$BUILD_TREE/admin/IntegTools/dbTools
|
||||
if [ "$USE_RELATIVE" = "yes" ]
|
||||
then
|
||||
POST_INSTALL_DIR=../post_install
|
||||
else
|
||||
if [ -z "$BUILD_TREE" ]
|
||||
then
|
||||
POST_INSTALL_DIR=$TAR_TREE/$CDECONFIGDIR
|
||||
else
|
||||
POST_INSTALL_DIR=$BUILD_TREE/admin/IntegTools/post_install
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$USE_ALTERNATE_UDB_DIR" = "yes" ]
|
||||
then
|
||||
DATABASE_DIR=$ALTERNATE_UDB_DIR/databases
|
||||
else
|
||||
DATABASE_DIR=$BUILD_TREE/databases
|
||||
fi
|
||||
|
||||
if [ "$DATABASE_FILES" = "" ]
|
||||
then
|
||||
if [ "$DEVELOP_ENV" = "yes" ]
|
||||
then
|
||||
DATABASE_FILES="CDE-HELP-PRG CDE-PRG CDE-INC CDE-DEMOS \
|
||||
CDE-MAN-DEV CDE-SHLIBS"
|
||||
elif [ "$RUNTIME_ENV" = "yes" ]
|
||||
then
|
||||
DATABASE_FILES="CDE-RUN CDE-MIN CDE-TT CDE-MAN CDE-HELP-RUN CDE-C \
|
||||
CDE-HELP-C CDE-MSG-C CDE-SHLIBS CDE-ICONS CDE-FONTS \
|
||||
CDE-INFO CDE-INFOLIB-C"
|
||||
else
|
||||
DATABASE_FILES="CDE-RUN CDE-MIN CDE-TT CDE-MAN CDE-HELP-RUN CDE-C \
|
||||
CDE-MSG-C CDE-HELP-C CDE-SHLIBS CDE-HELP-PRG \
|
||||
CDE-PRG CDE-INC CDE-DEMOS CDE-MAN-DEV CDE-ICONS \
|
||||
CDE-FONTS CDE-INFO CDE-INFOLIB-C"
|
||||
fi
|
||||
|
||||
HASH now load any localized filesets
|
||||
|
||||
if [ "$DEVELOP_ENV" != "yes" ]
|
||||
then
|
||||
if [ "$theLang" != "" ]
|
||||
then
|
||||
DATABASE_FILES="$DATABASE_FILES CDE-$theLang CDE-MSG-$theLang \
|
||||
CDE-HELP-$theLang"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
INSTALL_LOCATION=CDE_INSTALLATION_TOP
|
||||
CONFIGURE_LOCATION=CDE_CONFIGURATION_TOP
|
||||
LOGFILES_LOCATION=CDE_LOGFILES_TOP
|
||||
|
||||
if [ -L $INSTALL_LOCATION -a "$CONFIGURE_ONLY" != "yes" ]
|
||||
then
|
||||
touch $INSTALL_LOCATION/foo >/dev/null 2>/dev/null
|
||||
if [ ! -f $INSTALL_LOCATION/foo ]
|
||||
then
|
||||
Log "Insufficient permissions to install CDE files in $INSTALL_LOCATION"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -O $INSTALL_LOCATION/foo ]
|
||||
then
|
||||
Log "Root access to $INSTALL_LOCATION is required for CDE installation."
|
||||
exit 1
|
||||
fi
|
||||
rm $INSTALL_LOCATION/foo
|
||||
fi
|
||||
|
||||
if [ -d $INSTALL_LOCATION ]
|
||||
then
|
||||
if [ -x $INSTALL_LOCATION/bin -a ! -d $INSTALL_LOCATION/bin ]
|
||||
then
|
||||
rm -f $INSTALL_LOCATION/bin
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CONFIGURE_ONLY" = "yes" ]
|
||||
then
|
||||
CheckForActualLocations
|
||||
DoScripts
|
||||
Log "Configuration completed."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$RUN_SCRIPTS_ONLY" = "yes" ]
|
||||
then
|
||||
DoScripts
|
||||
exit 0
|
||||
fi
|
||||
|
||||
CheckForActualLocations
|
||||
|
||||
if [ "$DO_LINK_STEP_ONLY" = "yes" ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$CREATE_PACKING_LIST" = "yes" ]
|
||||
then
|
||||
CreatePackingList
|
||||
exit 0
|
||||
fi
|
||||
|
||||
XCOMM
|
||||
XCOMM we are ready to load the environment ...
|
||||
XCOMM
|
||||
|
||||
if [ "$BUILD_TREE" != "" ]
|
||||
then
|
||||
Log "Load the Desktop from $BUILD_TREE"
|
||||
|
||||
cd $STARTING_DIR
|
||||
let j=1
|
||||
for i in `echo $DATABASE_FILES`
|
||||
do
|
||||
LoadFileSet "$j" "$i"
|
||||
let j=j+1
|
||||
done
|
||||
else
|
||||
Log "Load the Desktop from $TAR_TREE"
|
||||
compressed=$(awk '/COMPRESSED: /{print $2}' $TAR_TREE/$CDEPACKAGE)
|
||||
if [ "$compressed" = "yes" ]; then
|
||||
uncompress <$TAR_TREE/$CDETARFILEZ | tar xvf - $INSTALL_LOCATION
|
||||
else
|
||||
tar -xvf $TAR_TREE/$CDETARFILE $INSTALL_LOCATION
|
||||
fi
|
||||
DATABASE_FILES=$(awk 'BEGIN {FS=":"} /FILESETS: /{print $2}' $TAR_TREE/$CDEPACKAGE)
|
||||
fi
|
||||
|
||||
Log " "
|
||||
Log "Desktop installed in $INSTALL_LOCATION"
|
||||
|
||||
if [ "$DO_INSTALL_ONLY" = "yes" ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ $TARBALL = "yes" ];
|
||||
then
|
||||
MakeTarball
|
||||
fi
|
||||
|
||||
cd $STARTING_DIR
|
||||
|
||||
if [ "$RUN_SCRIPTS" = "yes" ]
|
||||
then
|
||||
DoScripts
|
||||
fi
|
||||
|
||||
if [ "$REMOVE_LINKS" = "yes" ]
|
||||
then
|
||||
[ -L /usr/dt ] && rm /usr/dt
|
||||
[ -L /etc/dt ] && rm /etc/dt
|
||||
[ -L /var/dt ] && rm /var/dt
|
||||
fi
|
||||
|
||||
echo "Done."
|
||||
echo ""
|
||||
echo "See /tmp/installCDE.log for a log of this install session."
|
||||
echo ""
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#! /bin/ksh
|
||||
|
||||
#
|
||||
# Script to move all link refereces in a ".lst" file
|
||||
# to the end of the file.
|
||||
#
|
||||
|
||||
USAGE="Usage: $0 file.lst"
|
||||
|
||||
case $# in
|
||||
0) echo $USAGE;;
|
||||
1);;
|
||||
*) echo $USAGE;;
|
||||
esac
|
||||
|
||||
awk '
|
||||
/hard_link|sym_link/ { links[i++] = $0 ; next; }
|
||||
{ print $0 }
|
||||
END {
|
||||
if ( i > 0 )
|
||||
for ( i in links) print links[i];
|
||||
}
|
||||
' $@
|
||||
Executable
+650
@@ -0,0 +1,650 @@
|
||||
#! /bin/ksh
|
||||
|
||||
export SYSTYPE=bsd4.3
|
||||
|
||||
# This script is aimed at producing Apollo product tree but
|
||||
# it should work as well on hp-ux systems. There is at least
|
||||
# one special rule "-n" which should not be generated on hp-ux systems
|
||||
# where it is not necessary to run nroff on the man page sources.
|
||||
|
||||
|
||||
# Put "/etc" in the path
|
||||
# because this is where "chown" appears on bsd4.3 systems (i.e. apollo).
|
||||
# Put "/usr/apollo/bin" on the path to access "chacl" on apollo systems.
|
||||
|
||||
export PATH=":/etc:$PATH:/usr/apollo/bin:"
|
||||
typeset STRIP=""
|
||||
|
||||
|
||||
# this alias makes for more "beautiful" output.
|
||||
alias echo=print
|
||||
|
||||
#
|
||||
# Shell script to read a file full of destination/perm/source triples and
|
||||
# create data base entries in a format suitable for 8.0 release. All other
|
||||
# information defaults to the default values for now -- this should be correct
|
||||
# in most cases but may require editing of the result for those cases
|
||||
# needing special handling.
|
||||
#
|
||||
# Lst file syntax:
|
||||
# [<install-flags>] <destination_path> <perm> <src> [ <type> <owner> <group> <status> <processor> <resp_proj> ]
|
||||
#
|
||||
# <install-rule> ==> [optional] 2 character field encoding special actions to be invoked when
|
||||
# creating the product tree. In the absence of this field the file is subject
|
||||
# to defaults based on its name,destination directory and permissions.
|
||||
# valid values:
|
||||
# -- Do nothing special
|
||||
# c- compress the file
|
||||
# -n run it through an nroff pipeline
|
||||
# -s strip the file (should be a binary executable)
|
||||
#
|
||||
# <destination_path> ===> full path name on target system
|
||||
# <perm> ===> numeric permission (with leading 0)
|
||||
# <src> ===> build tree path name (relative to build tree root)
|
||||
# | full path name of link source
|
||||
# | "-" to ignore this field (source for directory not required)
|
||||
# <type> ===> "file" | "empty_dir" | "directory" | "hard_link" | NULL
|
||||
# <owner> ===> file owner name -- defaults to bin
|
||||
# <group> ===> file group ownership --- defaults to bin
|
||||
# <status> ===> "di----" default
|
||||
# <processor> ===> valid processor "3-" | "-8" | "38" -- defaults to "38"
|
||||
# <resp_proj> ===> responsible project --- defaults to "xwindows"
|
||||
#
|
||||
|
||||
Usage="Usage: $0 [-f filesetName] -D <desttree> -S <srctree> <file> ...\n
|
||||
\tfilesetName \t==> (optional) used to create subdirectory in desttree\n
|
||||
\tdesttree \t==> destination directory\n
|
||||
\tsrctree \t==> usually a build tree containing the source\n
|
||||
\tfile \t\t==> data base file in \".lst\" format"
|
||||
|
||||
FILE='file'
|
||||
STATUS='di----'
|
||||
PROCESSOR='378'
|
||||
DESTTREE='.'
|
||||
|
||||
if [ -f /com/ctnode ]; then
|
||||
# Apollo systems
|
||||
OWNER='root'
|
||||
GROUP='staff'
|
||||
# set flag used to test for soft links
|
||||
LNKTST="L"
|
||||
else
|
||||
# hp-ux systems (and all other systems)
|
||||
OWNER='bin'
|
||||
GROUP='bin'
|
||||
# set flag used to test for soft links
|
||||
LNKTST="h"
|
||||
fi
|
||||
|
||||
BUILD_TARGET='/'
|
||||
INSTALL_RULE='--'
|
||||
INSTALL_FLAGS=''
|
||||
ORDER='0'
|
||||
RESP_PROJ='xwindows'
|
||||
|
||||
# Set which system we are on
|
||||
BUILDSYSTEM=$(uname)
|
||||
|
||||
# Set system
|
||||
if [ $BUILDSYSTEM = "AIX" ];
|
||||
then
|
||||
PLATFORM=aix
|
||||
elif [ $BUILDSYSTEM = "SunOS" ];
|
||||
then
|
||||
PLATFORM=sun
|
||||
elif [ $BUILDSYSTEM = "UNIX_SV" ];
|
||||
then
|
||||
PLATFORM=usl
|
||||
elif [ $BUILDSYSTEM = "UNIX_System_V" ];
|
||||
then
|
||||
PLATFORM=uxp
|
||||
elif [ $BUILDSYSTEM = "OSF1" ];
|
||||
then
|
||||
PLATFORM=dec
|
||||
else # Build system = HP
|
||||
PLATFORM=hp-ux
|
||||
fi
|
||||
|
||||
if [ $PLATFORM = "aix" ];
|
||||
then
|
||||
USER=`/bin/whoami`
|
||||
elif [ $PLATFORM = "sun" -o $PLATFORM = "usl" -o $PLATFORM = "uxp" ];
|
||||
then
|
||||
USER=`/usr/ucb/whoami`
|
||||
else
|
||||
USER=`/usr/bin/whoami`
|
||||
fi
|
||||
|
||||
awkit() {
|
||||
awk '
|
||||
BEGIN {
|
||||
print "#"
|
||||
print "# TYPE RULE SRC DEST MODE OWNER GROUP LINKSRC"
|
||||
print ""
|
||||
}
|
||||
|
||||
/^[ ]*#/ { next }
|
||||
{
|
||||
# initialize install_rule to NULL
|
||||
install_rule=""
|
||||
|
||||
# skip blank lines
|
||||
if ( NF == 0 )
|
||||
next
|
||||
# do a little syntax checking
|
||||
|
||||
if ( $1 !~ /\// ) {
|
||||
# check for special install_rule values
|
||||
if ( $1 ~ /[-c][-ns]/ ) {
|
||||
# set the special install rule
|
||||
install_rule=$1
|
||||
|
||||
# shift the rest of the fields left
|
||||
for ( i = 1; i < NF; i++) {
|
||||
$i = $(i+1)
|
||||
}
|
||||
NF=NF-1
|
||||
}
|
||||
else {
|
||||
print "Syntax Error (line " NR ") destination path: " $1
|
||||
print "text: " $0
|
||||
next
|
||||
}
|
||||
}
|
||||
|
||||
if ( NF > 9 ) {
|
||||
print "Syntax Error (line " NR ") number of fields"
|
||||
print "text: " $0
|
||||
exit
|
||||
}
|
||||
|
||||
if ( $2 !~ /0[0-7][0-7]*/ ) {
|
||||
print "Syntax Error (line " NR ") perm : " $2
|
||||
print "text: " $0
|
||||
next
|
||||
}
|
||||
# if ( $4 ~ /link/ && $3 !~ /^\// && $3 !~ /`node_data/) {
|
||||
# changed to allow local link (using ./file syntax) -- Should this be
|
||||
# domain only?
|
||||
#
|
||||
if ( $4 ~ /link/ && $3 !~ /^\// && $3 !~ /`node_data/ && \
|
||||
$3 !~ /^\.\// && $3 !~ /^\.\.\// ) {
|
||||
print "Syntax Error (line " NR ") source: " $3
|
||||
print "text: " $0
|
||||
next
|
||||
}
|
||||
|
||||
# Check for special install rules
|
||||
# man pages are compressed use rule "c-"
|
||||
# font files are compressed use rule "c-"
|
||||
# directories have no source i.e. src = "-"
|
||||
|
||||
src = $3;
|
||||
link_src = "";
|
||||
type = "'$FILE'";
|
||||
owner = "'$OWNER'";
|
||||
group = "'$GROUP'";
|
||||
status = "'$STATUS'";
|
||||
processor = "'$PROCESSOR'";
|
||||
resp_proj = "'$RESP_PROJ'";
|
||||
if ( $4 != "" )
|
||||
{
|
||||
type = $4;
|
||||
if ( $4 ~ /link/ ) {
|
||||
src = "";
|
||||
if ( $3 ~ /^\// || $3 ~ /`node_data/ || \
|
||||
$3 ~ /^\.\// || $3 ~ /^\.\.\// )
|
||||
link_src = $3;
|
||||
else {
|
||||
print "Syntax Error (line " NR ") link_src: " $3
|
||||
print "text: " $0
|
||||
next;
|
||||
};
|
||||
}
|
||||
else if ( $4 == "directory" )
|
||||
if ( $3 != "-" )
|
||||
{
|
||||
print "Syntax Error (line " NR ") directory: " $3;
|
||||
print "text: " $0;
|
||||
next;
|
||||
}
|
||||
else
|
||||
src="";
|
||||
else if ( $4 == "empty_dir" )
|
||||
{
|
||||
resp_proj = "common";
|
||||
status = "------";
|
||||
if ( $3 != "-" )
|
||||
{
|
||||
print "Syntax Error (line " NR ") empty_dir: " $3;
|
||||
print "text: " $0;
|
||||
next;
|
||||
}
|
||||
else
|
||||
src="";
|
||||
}
|
||||
else if ( $4 == "file" && $3 == "-" )
|
||||
if ( $7 == "---cu-")
|
||||
src = "";
|
||||
}
|
||||
#
|
||||
# If owner an/or group are specified all previous fields (including
|
||||
# type) must be specified.
|
||||
#
|
||||
if ( $5 != "" )
|
||||
owner = $5;
|
||||
|
||||
if ( $6 != "" )
|
||||
group = $6;
|
||||
|
||||
if ( $7 != "" )
|
||||
status = $7
|
||||
|
||||
if ( $8 != "" )
|
||||
processor = $8;
|
||||
|
||||
if ($9 != "" )
|
||||
resp_proj= $9;
|
||||
|
||||
if ( install_rule != "" ) {
|
||||
; # install rule has been explicitly set -- do nothing
|
||||
}
|
||||
else if ( $1 ~ /\/usr\/man\/man.*\.Z\// )
|
||||
{
|
||||
install_rule = "c-";
|
||||
}
|
||||
else if ( $1 ~ /\/usr\/X11\/man\/cat[1-9]\/.*[1-9]/ )
|
||||
{
|
||||
install_rule = "-n";
|
||||
}
|
||||
else if ( $1 ~ /\/bsd4.3\/usr\/man\/cat[1-9]\/.*[1-9]/ )
|
||||
{
|
||||
install_rule = "-n";
|
||||
}
|
||||
else if ( $1 ~ /\/sys5.3\/usr\/catman\/.*man[1-9]\/.*[1-9]/ )
|
||||
{
|
||||
install_rule = "-n";
|
||||
}
|
||||
else if ( $1 ~ /.*\/fonts\/.*.scf$/ && $3 ~ /.*.snf$/ )
|
||||
{
|
||||
install_rule = "c-";
|
||||
}
|
||||
else if ( $1 ~ /.*\/fonts\/.*.snf\.Z$/ && $3 ~ /.*.snf$/ )
|
||||
{
|
||||
install_rule = "c-";
|
||||
}
|
||||
else if ( $1 ~ /^\/integration\// && $3 ~ /^doc\/upinfo\// )
|
||||
{
|
||||
install_rule = "";
|
||||
}
|
||||
else if ( $2 ~ /[1357]/ && $4 == "file" )
|
||||
{ # executable files may be stripped
|
||||
install_rule = "-s";
|
||||
}
|
||||
else
|
||||
install_rule = "'$INSTALL_RULE'";
|
||||
|
||||
|
||||
# print "install_target : " $1
|
||||
# print "fileset : " "'$FILESET'"
|
||||
# print "type : " type
|
||||
# print "status : " status
|
||||
# print "processor : " processor
|
||||
# print "mode : " $2
|
||||
# print "owner : " owner
|
||||
# print "group : " group
|
||||
# print "link_source : " link_src
|
||||
# print "build_target : " "'$BUILD_TARGET'"
|
||||
# print "install_rule_name : " install_rule
|
||||
# print "install_flags : " "'$INSTALL_FLAGS'"
|
||||
# print "a_out_location : " src
|
||||
# print "order : " "'$ORDER'"
|
||||
# print "responsible_project : " resp_proj
|
||||
# print "#"
|
||||
|
||||
if ( type ~ /.*link/ )
|
||||
src= link_src
|
||||
else if ( type ~ /.*directory/ )
|
||||
src="-"
|
||||
|
||||
print type, install_rule, src, $1, $2, owner ,group
|
||||
}
|
||||
|
||||
' $1
|
||||
}
|
||||
|
||||
#
|
||||
# createPath
|
||||
# function to create a directory path. (mkdir -p replacement on bsd4.3)
|
||||
#
|
||||
createPath()
|
||||
{
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "ERROR: \"$0\" invalid argument count" >&2
|
||||
echo " ARGS=$@"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Since we are SYSTYPE bsd4.3 "-x" won't work.
|
||||
if [ -r /sys5.3/bin/mkdir ]; then
|
||||
/sys5.3/bin/mkdir -p $1
|
||||
return
|
||||
fi
|
||||
if hp9000s300 > /dev/null 2>&1 || hp9000s800 > /dev/null 2>&1; then
|
||||
mkdir -p $1
|
||||
return
|
||||
fi
|
||||
|
||||
#
|
||||
# We can't use mkdir -p so do the hard way.
|
||||
# starting at the root check/create all the directories
|
||||
# in the given path
|
||||
#
|
||||
|
||||
typeset xdirs=""
|
||||
typeset nextdir=""
|
||||
typeset fulldirs
|
||||
|
||||
# provide extra slash for apollo systems (//hp* syntax)?
|
||||
|
||||
if [ "$1" = "${1##/}" ]; then
|
||||
# not a full path name so attach path to current directory
|
||||
fulldirs=`/bin/pwd`/$1
|
||||
xdirs="/" # added to support apollo "//host" syntax
|
||||
elif [ "$1" != "${1##//}" ]; then
|
||||
# using "//host" syntax
|
||||
fulldirs=$1
|
||||
xdirs="/"
|
||||
else
|
||||
fulldirs=$1
|
||||
xdirs=""
|
||||
fi
|
||||
|
||||
echo creating path: $1
|
||||
|
||||
while nextdir=`expr /$fulldirs/ : '/*\([^/]*\)/.*'`; do
|
||||
xdirs=$xdirs/$nextdir
|
||||
if [ ! -d $xdirs ]; then
|
||||
mkdir $xdirs
|
||||
fi
|
||||
|
||||
fulldirs=`expr $fulldirs : '/*[^/]*/\(.*\)'`
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
# doit
|
||||
# function to put the source file into the product tree. This function
|
||||
# reads its stdin for file movement rules.
|
||||
#
|
||||
doit()
|
||||
{
|
||||
if [ $# -ne 0 ]; then
|
||||
echo "ERROR: \"$0\" incorrect arg count" >&2
|
||||
echo "ARGS: $@" >&2
|
||||
fi
|
||||
|
||||
typeset TYPE
|
||||
typeset RULE
|
||||
typeset SRC
|
||||
typeset DEST
|
||||
typeset MODE
|
||||
typeset OWNER
|
||||
typeset GROUP
|
||||
|
||||
while read TYPE RULE SRC DEST MODE OWNER GROUP; do
|
||||
# ignore blank lines
|
||||
if [ -z "$TYPE" ]; then
|
||||
continue;
|
||||
fi
|
||||
# ignore comment lines (match longest string starting with '#')
|
||||
if [ "${TYPE###}" != "$TYPE" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
DEST=$DESTTREE/$FILESET${DEST}
|
||||
CMD=""
|
||||
|
||||
case $TYPE in
|
||||
directory)
|
||||
if [ ! -d "$DEST" ]; then
|
||||
CMD="createPath $DEST"
|
||||
fi
|
||||
;;
|
||||
file)
|
||||
SRC=$SRCTREE/$SRC
|
||||
if [ "$CHECK_BEFORE" = "yes" ]
|
||||
then
|
||||
if [ ! -f $SRC ]
|
||||
then
|
||||
echo "Missing: $SRC"
|
||||
echo "Missing: $SRC" >>/tmp/mkprod.missing
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
if [ ! -f $SRC ]; then
|
||||
echo "ERROR: Cannot read \"$SRC\"." >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP " >&2
|
||||
continue
|
||||
fi
|
||||
case $RULE in
|
||||
c-) # compress rule
|
||||
CMD="compress -c $SRC > $DEST"
|
||||
;;
|
||||
-n) # nroff rule (for apollo man pages)
|
||||
if egrep -c '^\.TH[ ]|^\.ds[ ]' $SRC > /dev/null ; then
|
||||
CMD="tbl $SRC|eqn|nroff -man|col -b> $DEST"
|
||||
else
|
||||
CMD="cp $SRC $DEST"
|
||||
fi
|
||||
;;
|
||||
-s) # strip rule
|
||||
# Domain Only
|
||||
# if [ "$(find $SRC -typeuid coff -print)" = "$SRC" ]; then
|
||||
# hp-ux
|
||||
if [ -z "$STRIP" ]; then
|
||||
CMD="cp $SRC $DEST"
|
||||
else if file $SRC | grep -q "not stripped"; then
|
||||
CMD="cp $SRC $DEST; strip $DEST"
|
||||
else
|
||||
CMD="cp $SRC $DEST"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
--) # default (no special processing)
|
||||
CMD="cp $SRC $DEST"
|
||||
;;
|
||||
*) # huh?
|
||||
echo "ERROR: Unrecognized rule: \"$RULE\"" >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP " >&2
|
||||
continue;
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sym_link)
|
||||
if [ -z "$SRC" ]; then
|
||||
echo "ERROR: No link source for \"$DEST\"" >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP " >&2
|
||||
continue;
|
||||
fi
|
||||
if [ "${SRC#\`node_data}" != "$SRC" ]; then
|
||||
# apollo-style special link
|
||||
echo "WARNING: encountered special link: $SRC" >&2
|
||||
# try to make link to this SRC by adding a
|
||||
# backslash to protect the tic mark.
|
||||
SRC=\\$SRC
|
||||
elif [ "${SRC#/}" = "$SRC" ]; then
|
||||
# echo "ERROR: Relative link \"$SRC\"" >&2
|
||||
# echo "WARNING: Relative link \"$SRC\"" >&2
|
||||
# echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP " >&2
|
||||
# Protect the potential variant link variable
|
||||
# (eg lnk_$(LNK))
|
||||
SRC=\'$SRC\'
|
||||
# continue;
|
||||
fi
|
||||
CMD="ln -s $SRC $DEST"
|
||||
# Remove existing link if one already exists
|
||||
[ -${LNKTST} "$DEST" ] && rm $DEST
|
||||
;;
|
||||
hard_link)
|
||||
# Hard links are assumed to be made only to other
|
||||
# files in the submittal -- not to existing system
|
||||
# files.
|
||||
SRC="$DESTTREE/$FILESET${SRC}"
|
||||
if [ -z "$SRC" ]; then
|
||||
echo "ERROR: No link source for \"$DEST\"" >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP" >&2
|
||||
continue;
|
||||
fi
|
||||
CMD="ln $SRC $DEST"
|
||||
;;
|
||||
*) echo "ERROR: Unrecognized type: \"$TYPE\"" >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP" >&2
|
||||
continue;
|
||||
;;
|
||||
esac
|
||||
|
||||
# createPath issues its own error messages
|
||||
if [ ! -d ${DEST%/*} ]; then
|
||||
createPath ${DEST%/*} || continue
|
||||
fi
|
||||
[ -z "$CMD" ] && continue
|
||||
eval "$CMD" || {
|
||||
echo "ERROR: \"$CMD\" failed" >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP" >&2;
|
||||
continue;
|
||||
}
|
||||
# set permissions for non-links
|
||||
if [ "${TYPE%link}" = "$TYPE" ]; then
|
||||
if [ "$USER" = "root" ]; then
|
||||
chmod $MODE $DEST ||
|
||||
echo "ERROR: \"chmod $MODE $DEST\" failed" >&2
|
||||
chgrp $GROUP $DEST ||
|
||||
echo "ERROR: \"chgrp $GROUP $DEST\" failed" >&2
|
||||
chown $OWNER $DEST ||
|
||||
echo "ERROR: \"chown $OWNER $DEST\" failed" >&2
|
||||
fi
|
||||
fi
|
||||
|
||||
echo $TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
###################################################
|
||||
# MAIN BODY
|
||||
###################################################
|
||||
|
||||
#
|
||||
# Check Path for chmod, chown, and chgrp
|
||||
#
|
||||
whence chmod > /dev/null || {
|
||||
echo "ERROR: \"chmod\" not in PATH." >&2
|
||||
exit 1
|
||||
}
|
||||
whence chown > /dev/null || {
|
||||
echo "ERROR: \"chown\" not in PATH." >&2
|
||||
exit 1
|
||||
}
|
||||
whence chgrp > /dev/null || {
|
||||
echo "ERROR: \"chgrp\" not in PATH." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
CHECK_BEFORE="no"
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
case $1 in
|
||||
-f*)
|
||||
FILESET=${1#-f}
|
||||
if [ -z "$FILESET" ]; then
|
||||
if [ $# -ge 1 ]; then
|
||||
shift;
|
||||
FILESET=$1
|
||||
else
|
||||
echo $Usage
|
||||
exit 1;
|
||||
fi
|
||||
fi;;
|
||||
-S*) SRCTREE=${1#-S}
|
||||
if [ -z "$SRCTREE" ]; then
|
||||
if [ $# -ge 1 ]; then
|
||||
shift;
|
||||
SRCTREE=$1
|
||||
else
|
||||
echo $Usage
|
||||
exit 1;
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
-D*) DESTTREE=${1#-D}
|
||||
if [ -z "$DESTTREE" ]; then
|
||||
if [ $# -ge 1 ]; then
|
||||
shift;
|
||||
DESTTREE=$1
|
||||
else
|
||||
echo $Usage
|
||||
exit 1;
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
-P*) CHECK_BEFORE="yes"
|
||||
;;
|
||||
|
||||
*) files="$files $1";;
|
||||
esac
|
||||
if [ $# -ge 1 ]; then
|
||||
shift;
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$files" -o -z "$SRCTREE" ]; then
|
||||
echo $Usage >&2
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [ ! -d "$SRCTREE" ]; then
|
||||
echo "ERROR: Cannot access \"$SRCTREE\"." >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -d "$DESTTREE" ]; then
|
||||
echo "ERROR: Cannot access \"$DESTTREE\"." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
umask 022
|
||||
if [ -f /com/ctnode ]; then
|
||||
#
|
||||
# Make sure berkely style permissions are applied to the product tree
|
||||
# This should cause directories to be created with permissions based
|
||||
# on the umask (which is otherwise ignored on "open security model"
|
||||
# file systems).
|
||||
#
|
||||
chacl -RB $DESTTREE
|
||||
fi
|
||||
|
||||
# Debug Stmts
|
||||
echo FILESET=$FILESET
|
||||
echo files=$files
|
||||
echo SRCTREE=$SRCTREE
|
||||
echo DESTTREE=$DESTTREE
|
||||
echo "#-------------- $(date) --------------"
|
||||
echo ""
|
||||
|
||||
TOOL_DIR=$SRCTREE/admin/IntegTools/dbTools
|
||||
|
||||
#
|
||||
# Avoid making duplicate entries
|
||||
# make sure links are referred to AFTER the files to which they point.
|
||||
#
|
||||
if [ $PLATFORM = "uxp" ]; then
|
||||
$TOOL_DIR/uncomment $files | sort | uniq | $TOOL_DIR/linksLast - > /tmp/awk.in
|
||||
cat /tmp/awk.in | awkit > /tmp/awk.out
|
||||
cat /tmp/awk.out | doit
|
||||
else
|
||||
$TOOL_DIR/uncomment $files | sort | uniq | $TOOL_DIR/linksLast - | awkit | doit
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "#-------------- $(date) --------------"
|
||||
@@ -0,0 +1,765 @@
|
||||
|
||||
# Awk Library file for parsing UDB files
|
||||
#
|
||||
function parseUdb() {
|
||||
# nawk has already read the initial line.
|
||||
# Tokenize it before doing anything else.
|
||||
tokenize()
|
||||
readDefaults(defaults)
|
||||
# assign hp-ux ".db" file src and link defaults
|
||||
# if none were designated.
|
||||
if ( SrcDefault == "" )
|
||||
SrcDefault = "a_out_location"
|
||||
if ( LnkDefault == "" )
|
||||
LnkDefault = "link_source"
|
||||
if ( TypDefault == "" )
|
||||
TypDefault = "type"
|
||||
if ( DestDefault == "" )
|
||||
DestDefault = "install_target"
|
||||
if ( ModeDefault == "" )
|
||||
ModeDefault = "mode"
|
||||
if ( OwnerDefault == "" )
|
||||
OwnerDefault = "owner"
|
||||
if ( GroupDefault == "" )
|
||||
GroupDefault = "group"
|
||||
readData()
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# readDefaults
|
||||
# This routine reads the defaults at the front section
|
||||
# of the universal database and salts the defaults away.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function readDefaults(dflts)
|
||||
{
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function readDefaults" > DeBugFile
|
||||
}
|
||||
do {
|
||||
os = getOS()
|
||||
if ( osQual != "defaults" )
|
||||
syntaxError("No defaults for: " BlockToken)
|
||||
if ( os == BlockToken || os == "default" )
|
||||
break
|
||||
skipToToken("}")
|
||||
} while ( 1 )
|
||||
fillDefaults()
|
||||
if ( DeBug > 1 )
|
||||
print "Skipping remaining defaults" > DeBugFile
|
||||
# skip remaining default specs
|
||||
while ( lookAhead() == "{" ) {
|
||||
# This should be another default spec
|
||||
# skip it. (watch out for syntax errors)
|
||||
os = getOS()
|
||||
if ( osQual != "defaults" )
|
||||
syntaxError("Expected os:defaults found: \"" os ":" osQual "\"")
|
||||
if ( os == BlockToken && fileName == FILENAME )
|
||||
syntaxError("Only one \"defaults\" record allowed per os" )
|
||||
|
||||
skipToToken("}");
|
||||
}
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# syntaxError
|
||||
# bail out
|
||||
#
|
||||
# (optionally) mail a message to an administrator if a syntax
|
||||
# error occurs in a database.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function syntaxError(reason) {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function syntaxError:" > DeBugFile
|
||||
}
|
||||
print "Syntax ERROR line: " NR " of file: " FILENAME
|
||||
if (reason)
|
||||
print " " reason
|
||||
system( "rm -f /tmp/SyntaxError" )
|
||||
system( "touch /tmp/SyntaxError" )
|
||||
print "Syntax ERROR line: " NR " of file: " FILENAME > "/tmp/SyntaxError"
|
||||
if (reason)
|
||||
print " " reason >> "/tmp/SyntaxError"
|
||||
close( "/tmp/SyntaxError" )
|
||||
if ( mailTo != "" ) {
|
||||
system( "mailx -s \"database syntax error\" "mailTo" < /tmp/SyntaxError" )
|
||||
}
|
||||
system( "rm -f /tmp/SyntaxError" )
|
||||
exit 1
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# fillDefaults
|
||||
# This routine reads the defaults in the OS
|
||||
# defaults section of the database. It saves the defaults
|
||||
# in the "defaults" awk-style string array.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function fillDefaults() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function fillDefaults:" > DeBugFile
|
||||
}
|
||||
tempDflt = ""
|
||||
NumEntries = 1
|
||||
do {
|
||||
if ( tempDflt != "" ) {
|
||||
keyword = tempDflt
|
||||
tempDflt = ""
|
||||
}
|
||||
else
|
||||
keyword = nextToken()
|
||||
|
||||
if ( keyword == "}" )
|
||||
break;
|
||||
if ( "=" != nextToken())
|
||||
syntaxError("Keyword: " keyword " not followed by \"=\" ");
|
||||
tempDflt = nextToken();
|
||||
if ( lookAhead() == "=" )
|
||||
defaults[keyword]=""
|
||||
else {
|
||||
if ( tempDflt == "<SRC>" ) {
|
||||
SrcDefault = keyword;
|
||||
tempDflt = ""
|
||||
}
|
||||
if ( tempDflt == "<LNK>" ) {
|
||||
LnkDefault = keyword;
|
||||
tempDflt = ""
|
||||
}
|
||||
if ( tempDflt == "<TYPE>" ) {
|
||||
TypDefault = keyword;
|
||||
tempDflt = "file"
|
||||
}
|
||||
if ( tempDflt == "<DEST>" ) {
|
||||
DestDefault = keyword;
|
||||
tempDflt = ""
|
||||
}
|
||||
if ( tempDflt == "<MODE>" ) {
|
||||
ModeDefault = keyword;
|
||||
tempDflt = "0444"
|
||||
}
|
||||
if ( tempDflt == "<OWNER>" ) {
|
||||
OwnerDefault = keyword;
|
||||
tempDflt = "bin"
|
||||
}
|
||||
if ( tempDflt == "<GROUP>" ) {
|
||||
GroupDefault = keyword;
|
||||
tempDflt = "bin"
|
||||
}
|
||||
defaults[keyword]= tempDflt
|
||||
|
||||
tempDflt = ""
|
||||
}
|
||||
defOrder[NumEntries++] = keyword;
|
||||
} while ( 1 )
|
||||
if ( DeBug > 3 ) {
|
||||
DBGprintArray(defaults,"defaults")
|
||||
print "SrcDefault =" SrcDefault > DeBugFile
|
||||
print "LnkDefault =" LnkDefault > DeBugFile
|
||||
print "TypDefault =" TypDefault > DeBugFile
|
||||
}
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# getOS
|
||||
# This routine scans the database for an
|
||||
# open brace, then a token, then a ":" indicating
|
||||
# the start of an OS defaults section.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function getOS()
|
||||
{
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function getOS:" > DeBugFile
|
||||
}
|
||||
osQual = ""
|
||||
gotOS = 0
|
||||
|
||||
if ( "{" != nextToken() )
|
||||
syntaxError("Missing initial {")
|
||||
os = nextToken();
|
||||
if ( lookAhead() == ":" ) {
|
||||
nextToken();
|
||||
osQual= nextToken();
|
||||
} else
|
||||
osQual= ""
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return os
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# nextToken
|
||||
# parse the incoming data stream into tokens.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function nextToken() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function nextToken:" > DeBugFile
|
||||
}
|
||||
if ( EOF_Reached == 1 )
|
||||
syntaxError("Premature EOF");
|
||||
tmpToken=tokens[TK++]
|
||||
while ( TK > Ntokens || tokens[TK] == ";" ) {
|
||||
TK++
|
||||
if ( TK > Ntokens )
|
||||
if ( newLine() <= 0 ) {
|
||||
EOF_Reached = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( DeBug > 2 )
|
||||
print "Returning token: " tmpToken > DeBugFile
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return tmpToken
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# lookAhead
|
||||
# return the token at the head of the current list of
|
||||
# tokens, but do not bump the token count in TK
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function lookAhead() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function lookAhead" > DeBugFile
|
||||
}
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return tokens[TK];
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# newLine, tokenize
|
||||
# read a new line of input and tokenize it.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function newLine() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function newLine:" > DeBugFile
|
||||
}
|
||||
if ( (retval = getline) <= 0 ) {
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return retval
|
||||
}
|
||||
retval = tokenize()
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return retval
|
||||
}
|
||||
function tokenize() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function tokenize:" > DeBugFile
|
||||
}
|
||||
# Skip blank/comment lines
|
||||
while ( NF == 0 || $0 ~ /^[ ]*#/ ) {
|
||||
if ( (getline) <= 0 ) {
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Make sure syntactically meaningful characters are surrounded by
|
||||
# white space. (I gave up on gsub for this purpose).
|
||||
#
|
||||
last=1
|
||||
Str="" # temp string for modified input line
|
||||
tstStr=$0 # part of input line being tested
|
||||
newStr=$0 # current input line image with modifications
|
||||
##########################################################################
|
||||
# REPLACE THE FOLLOWING LINE WITH A WORK_AROUND FOR A PROBLEM WITH
|
||||
# THE MATCH FUNCTION FOR THE SUN VERSION OF "nawk"
|
||||
#
|
||||
# while ( match(tstStr,"[^\\\][:=}{;]") ) {
|
||||
#
|
||||
while ( match(tstStr,"[:=}{;]") ) {
|
||||
if ( RSTART-1 > 0 && substr(tstStr,RSTART-1,1) != "\\") {
|
||||
RSTART=RSTART-1
|
||||
LENGTH=LENGTH+1
|
||||
} else {
|
||||
#
|
||||
# The character was escaped with a backslash.
|
||||
# Patch things up -- continue testing the rest
|
||||
# of the line.
|
||||
#
|
||||
Str=Str substr($0,last,RSTART+1)
|
||||
last = last + RSTART + 1
|
||||
tstStr =substr($0,last)
|
||||
newStr = Str tstStr
|
||||
continue;
|
||||
}
|
||||
####################### end of workaround ################################
|
||||
############################################################################
|
||||
if ( DeBug > 1 ) {
|
||||
print "Tokenize: Match found in: " tstStr
|
||||
print "RSTART= " RSTART " ; RLENGTH = " RLENGTH
|
||||
}
|
||||
# match found --
|
||||
# the temp string is now modified to contain:
|
||||
# 1) all characters up to the match and the first char of match
|
||||
# 2) blank before the syntactically significant char
|
||||
# 3) the significant character
|
||||
# 4) blank following the significant character
|
||||
|
||||
Str=Str substr($0,last,RSTART) " " substr($0,last+RSTART,1) " "
|
||||
last = last + RSTART + 1;
|
||||
#
|
||||
# Test remaining part of input line for additional occurances
|
||||
# of syntactically significant characters.
|
||||
#
|
||||
tstStr=substr($0,last)
|
||||
#
|
||||
# Our best guess for the new string is the part of the
|
||||
# input line already tested plus the part yet to be tested.
|
||||
#
|
||||
newStr=Str tstStr
|
||||
}
|
||||
#
|
||||
# Check for any instances of syntax chars at the start of the line
|
||||
#
|
||||
sub("^[:=}{;]","& ",newStr);
|
||||
$0 = newStr
|
||||
|
||||
#
|
||||
# allow escaping of significant syntax characters
|
||||
#
|
||||
gsub("[\\\][{]","{")
|
||||
gsub("\\\:",":")
|
||||
gsub("\\\;",";")
|
||||
gsub("\\\=","=")
|
||||
gsub("[\\\][}]","}")
|
||||
|
||||
#
|
||||
# Having insured that interesting chars are surrounded by blanks
|
||||
# now tokenize the input line.
|
||||
#
|
||||
|
||||
Ntokens = split($0,tokens)
|
||||
TK = 1
|
||||
if ( DeBug > 3 )
|
||||
DBGprintTokens()
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return Ntokens
|
||||
}
|
||||
function DBGprintTokens()
|
||||
{
|
||||
for ( i = 1; i <= Ntokens ; i++ )
|
||||
print "tokens[" i "] = " tokens[i] > DeBugFile
|
||||
return 0
|
||||
}
|
||||
function DBGprintArray(array,name) {
|
||||
for ( i in array) {
|
||||
print name "[" i "] = " array[i] > DeBugFile
|
||||
}
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# skipToToken
|
||||
# read until the passed in token is encountered
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function skipToToken(tok)
|
||||
{
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function skipToToken:" > DeBugFile
|
||||
}
|
||||
while ( nextToken() != tok )
|
||||
;
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# readData
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function readData() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function readData" > DeBugFile
|
||||
}
|
||||
while ( EOF_Reached == 0 ) {
|
||||
if ( fileName != FILENAME ) {
|
||||
if ( DeBug > 1 ) {
|
||||
print "====>Files Changed" > DeBugFile
|
||||
print "fileName= " fileName > DeBugFile
|
||||
print "FILENAME= " FILENAME > DeBugFile
|
||||
}
|
||||
fileName = FILENAME
|
||||
# skip over defaults section of the new file
|
||||
while ( lookAhead() == "{" ) {
|
||||
# This should be another default spec
|
||||
# skip it. (watch out for syntax errors)
|
||||
os = getOS()
|
||||
if ( osQual != "defaults" )
|
||||
syntaxError("Expected os:defaults found: \"" os ":" osQual "\"")
|
||||
#
|
||||
# Relax this restriction since we are
|
||||
# ignoring this defaults record
|
||||
#if ( os == BlockToken )
|
||||
# syntaxError("Only one \"defaults\" record allowed per os" )
|
||||
|
||||
skipToToken("}");
|
||||
}
|
||||
}
|
||||
if ( getNextRecord(record) > 0 )
|
||||
PRTREC(record);
|
||||
# skip remaining os entries for this source
|
||||
# sorry no error checking.
|
||||
while ( EOF_Reached == 0 && lookAhead() == "{" )
|
||||
skipToToken("}")
|
||||
if ( DeBug > 1 )
|
||||
print "EOF_Reached = " EOF_Reached > DeBugFile
|
||||
}
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# getNextRecord
|
||||
#
|
||||
# this function fills the rec[] array with defaults
|
||||
#
|
||||
# then it scans for a block that has a token maching
|
||||
# BlockToken, or accepts a block with the "default"
|
||||
# token. The "default" token is not accepted if
|
||||
# defaults are disallowed.
|
||||
#
|
||||
# finally fillRecord is called to read in the lines
|
||||
# in the block and override the entries in the rec[] array.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function getNextRecord(rec) {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function getNextRecord:" > DeBugFile
|
||||
}
|
||||
# fill with defaults
|
||||
for ( i in defaults )
|
||||
rec[i] = defaults[i];
|
||||
do {
|
||||
src = nextToken()
|
||||
if ( DeBug > 2 )
|
||||
print "src=" src > DeBugFile
|
||||
# Allow special characters to appear in src names if they have been backslashed
|
||||
# if ( src ~ /[{:=}]/ )
|
||||
# syntaxError("Invalid source: \"" src "\"");
|
||||
do {
|
||||
os = getOS()
|
||||
if ( DeBug > 1 ) {
|
||||
print "Got os " os " and qual= " osQual > DeBugFile
|
||||
print "NR= " NR " : " $0 > DeBugFile
|
||||
}
|
||||
if (( os != BlockToken || osQual == "not" ) \
|
||||
&& ( os != "default" || UseDefaultBlocks != "Y" ) ) {
|
||||
|
||||
if ( DeBug > 2)
|
||||
print "Skipping to end of os rec" > DeBugFile
|
||||
skipToToken("}");
|
||||
}
|
||||
if ( EOF_Reached == 1 || fileName != FILENAME ){
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return 0
|
||||
}
|
||||
if ( DeBug > 2 )
|
||||
print "Look Ahead is: " tokens[TK] > DeBugFile
|
||||
} while ( lookAhead() == "{" )
|
||||
} while (( os != BlockToken ) && ( os != "default" || UseDefaultBlocks != "Y"))
|
||||
if ( DeBug > 2)
|
||||
print "About to call fillRecord" > DeBugFile
|
||||
fillRecord(rec)
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return 1
|
||||
}
|
||||
function fillRecord(rec) {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering fillRecord:" > DeBugFile
|
||||
}
|
||||
tempEntry = ""
|
||||
do {
|
||||
if ( tempEntry != "" ) {
|
||||
keyword = tempEntry;
|
||||
tempEntry = ""
|
||||
} else
|
||||
keyword = nextToken();
|
||||
if ( keyword == "}" )
|
||||
break;
|
||||
if ( "=" != nextToken())
|
||||
syntaxError("Keyword: " keyword " not followed by \"=\"");
|
||||
tempEntry = nextToken();
|
||||
if ( lookAhead() == "=" )
|
||||
rec[keyword] = ""
|
||||
else {
|
||||
rec[keyword] = tempEntry
|
||||
tempEntry = ""
|
||||
}
|
||||
} while (1)
|
||||
#
|
||||
# check for source entry
|
||||
# THIS IMPLIES KNOWLEDGE OF .db FILE ENTRIES!!
|
||||
if ( DeBug > 2)
|
||||
print "TYPE= " rec[TypDefault] > DeBugFile
|
||||
if ( src == "-" )
|
||||
if ( rec[TypDefault]=="directory" || rec[TypDefault]=="empty_dir")
|
||||
{
|
||||
# no source required for a directory
|
||||
if ( rec[SrcDefault] != "" )
|
||||
syntaxError(SrcDefault " \"" rec[SrcDefault] "\" specified for a directory.")
|
||||
if ( rec[LnkDefault] != "" )
|
||||
syntaxError(LnkDefault " \"" rec[LnkDefault] "\" specfied for a directory.")
|
||||
|
||||
rec[SrcDefault] = src;
|
||||
} else if ( rec["status"] == "---cu-" ) {
|
||||
# This is used for some reason (X11-SERV.db)
|
||||
if ( rec[SrcDefault] != "" )
|
||||
syntaxError( "File: \"" rec["install_target"] "\" with special status: \"---cu-\" should have no source.");
|
||||
} else
|
||||
syntaxError("Invalid source: \"" src "\" for type: \"" rec[TypDefault] )
|
||||
else if ( rec[TypDefault] ~ /link/ )
|
||||
if ( src ~ /^\// || src ~ /^\./ ) {
|
||||
if ( rec[SrcDefault] != "")
|
||||
syntaxError( SrcDefault ": \"" rec[SrcDefault] "\" specified for link: \"" src "\"")
|
||||
if ( rec[LnkDefault] == "" )
|
||||
rec[LnkDefault]=src;
|
||||
} else
|
||||
syntaxError("Invalid source: \"" src "\" for type: \"" rec[TypDefault] "\"")
|
||||
else if ( rec[TypDefault] == "file" || rec[TypDefault] == "control" )
|
||||
rec[SrcDefault] = src;
|
||||
else
|
||||
syntaxError("Unrecognized type:\"" rec[TypDefault] "\"")
|
||||
|
||||
if ( DeBug > 0 ) Depth--
|
||||
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# printDB
|
||||
# Print records in ".db" format
|
||||
# -------------------------------------------------------------
|
||||
function printDb(rec) {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering printDb:" > DeBugFile
|
||||
}
|
||||
# NumEntries should be one greater than the number of defaults
|
||||
# read in.
|
||||
for ( i = 1; i< NumEntries; i++ ) {
|
||||
printf("%-40s %s %s\n",defOrder[i], ":",rec[defOrder[i]])
|
||||
}
|
||||
print "#"
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# printLst
|
||||
# Print records in ".lst" format
|
||||
# -------------------------------------------------------------
|
||||
function printLst(rec) {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering printLst:" > DeBugFile
|
||||
}
|
||||
if ( rec[TypDefault] ~ /link/ )
|
||||
Source = LnkDefault
|
||||
else
|
||||
Source = SrcDefault
|
||||
|
||||
printf("%s %s %s %s %s %s %s %s %s\n",
|
||||
rec[ DestDefault],
|
||||
rec[ ModeDefault ],
|
||||
rec[ Source ],
|
||||
rec[ TypDefault ],
|
||||
rec[ OwnerDefault ],
|
||||
rec[ GroupDefault ],
|
||||
rec[ "status" ],
|
||||
rec[ "processor" ],
|
||||
rec[ "responsible_project" ] )
|
||||
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# printGather
|
||||
# print records in one of the formats expected by Gather.ksh
|
||||
# (Jim Andreas print routine).
|
||||
# -------------------------------------------------------------
|
||||
function printGather(rec) {
|
||||
# print "Entering printRecord: "
|
||||
|
||||
if (( BlockToken == "hp-ux" ) && ( rec[ "processor" ] != "378" ))
|
||||
{
|
||||
if ( index( rec[ "processor" ], Machine ) == 0 )
|
||||
{
|
||||
#printf( "skipping %s, Machine %s machines %s\n", src, Machine, rec[ "processor" ] );
|
||||
return
|
||||
}
|
||||
}
|
||||
if ( action == "toSDD" )
|
||||
{
|
||||
if ( rec[ "type" ] == "file" )
|
||||
{
|
||||
printf("%s:F:%s:%s:%s:*::\n",
|
||||
rec[ "install_target" ], rec[ "owner" ],
|
||||
rec[ "group" ], rec[ "mode" ])
|
||||
}
|
||||
}
|
||||
else if ( action == "toReleaseTree" )
|
||||
{
|
||||
if ( ( rec[ "type" ] == "hard_link" ) ||
|
||||
( rec[ "type" ] == "sym_link" ) ||
|
||||
( rec[ "type" ] == "file" ) )
|
||||
{
|
||||
|
||||
#
|
||||
# if this is a link, then fudge a source file for Gather.ksh
|
||||
# to check on. Really we are linking two dest files together
|
||||
# so the hack is to get around the check in Gather.ksh
|
||||
#
|
||||
|
||||
if ( ( rec[ "type" ] == "hard_link" ) ||
|
||||
( rec[ "type" ] == "sym_link" ) )
|
||||
{
|
||||
printf( " {s}%s {d}%s\n", "-", rec[ "install_target" ] );
|
||||
}
|
||||
else if ( length( src ) > 34 )
|
||||
printf( " {s}%s {d}%s\n", src, rec[ "install_target" ] );
|
||||
else
|
||||
printf( " {s}%-34s {d}%s\n", src, rec[ "install_target" ] );
|
||||
|
||||
if ( rec[ "install_rule_name" ] == "c-" )
|
||||
{
|
||||
printf( "compress -c < {s}%s > {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
else if ( rec[ "type" ] == "sym_link" )
|
||||
{
|
||||
printf( "ln -s %s {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
else if ( rec[ "type" ] == "hard_link" )
|
||||
{
|
||||
printf( "ln {d}%s {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
else if ( rec[ "uncompress" ] == "true" )
|
||||
{
|
||||
printf( "uncompress -c < {s}%s > {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
else if ( length( src ) > 34 )
|
||||
{
|
||||
printf( "cp {s}%s {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "cp {s}%-34s {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
printf( "%s %s %s\n", rec[ "owner" ], rec[ "group" ], rec[ "mode" ])
|
||||
rec[ "install_rule_name" ] = "";
|
||||
rec[ "uncompress" ] = "";
|
||||
}
|
||||
}
|
||||
else if ( action == "toDeliverArgs" )
|
||||
{
|
||||
temp = rec[ "install_target" ];
|
||||
m = n = index( temp, "/" );
|
||||
while ( n != 0 )
|
||||
{
|
||||
temp = substr( temp, n+1 );
|
||||
n = index( temp, "/" );
|
||||
m += n;
|
||||
}
|
||||
dirnametarget = substr( rec[ "install_target" ], 1, m-1 );
|
||||
|
||||
if ( length( rec[ "install_target" ] ) > 40 )
|
||||
{
|
||||
printf("%s -d .%s\n", rec[ "install_target" ], dirnametarget );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("%-40s -d .%s\n", rec[ "install_target" ], dirnametarget );
|
||||
}
|
||||
}
|
||||
else if ( action == "toCheckBuild" )
|
||||
{
|
||||
# print "Entering printRecord - toCheckBuild: "
|
||||
#
|
||||
# skip any link info
|
||||
#
|
||||
if ( rec[ "type" ] == "file" )
|
||||
{
|
||||
#
|
||||
# just print the source path for the checker tool
|
||||
#
|
||||
printf("%s\n", src );
|
||||
}
|
||||
}
|
||||
else if ( action == "toFileList" )
|
||||
{
|
||||
#
|
||||
# skip any link info
|
||||
#
|
||||
if ( rec[ "type" ] == "file" )
|
||||
{
|
||||
#
|
||||
# print the source and install_target for the human person
|
||||
#
|
||||
if ( length( src ) > 40 || length( rec[ "install_target" ] ) > 40 )
|
||||
{
|
||||
printf("%s -> %s %s\n", src,
|
||||
rec[ "install_target" ], rec[ "mode" ] );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("%-40s -> %-40s %s\n", src,
|
||||
rec[ "install_target" ], rec[ "mode" ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( action == "toTargetList" )
|
||||
{
|
||||
#
|
||||
# skip any link info
|
||||
#
|
||||
if ( rec[ "type" ] == "file" )
|
||||
{
|
||||
#
|
||||
# just print the install_target
|
||||
#
|
||||
printf("%s\n", rec[ "install_target" ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Executable
+437
@@ -0,0 +1,437 @@
|
||||
#!/bin/ksh
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# udbToAny.ksh
|
||||
#
|
||||
# This script was leveraged from "databaseConversionTool.ksh"
|
||||
# it should provide a superset of the functionality of that script;
|
||||
# however the primary motivation was to get away from the use of
|
||||
# multiple divergent parsers for the ".udb" style database. The
|
||||
# parser has been moved into an awk "library" file: udbParseLib.awk.
|
||||
# this parser can and should be used by all scripts wishing to parse
|
||||
# the ".udb" data bases.
|
||||
#
|
||||
# ----------------------------
|
||||
# new features:
|
||||
#
|
||||
# -toDB to convert to old mksubmit-style ".db" format
|
||||
# -toLst to convert to old domain-port-style ".lst" files
|
||||
# -toCustom <prt> to specify a print routine for a custom format
|
||||
# -custom <awklib> to specify a library containing custom print routines.
|
||||
# -udbParseLib <awkLib> to specify a library containing an alternate parser.
|
||||
# -mailTo <user> to specify an administrator who will receive mail
|
||||
# concerning parsing errors.
|
||||
#
|
||||
# -Database is now obsolete (although it will still work)
|
||||
# <udbfile> ... ... The script can now take multiple udb files (Only the
|
||||
# defaults specified in the first udb file will apply).
|
||||
#
|
||||
# ----------------------------
|
||||
#
|
||||
# This script converts a universal database to an
|
||||
# HP OSF style System Definition Database (SDD) file,
|
||||
# or a set of args suitable to supply to the Chelmsford deliver
|
||||
# tool, or a set of commands to build a delivery tree.
|
||||
# For more details, please refer to the "X11 and VUE for HP_OSF/1.0"
|
||||
# document.
|
||||
#
|
||||
# This script was leveraged (read hacked extensively) from
|
||||
# the "udbToDb" script by Jim Andreas. Ron Voll authored the
|
||||
# original "udbToDb" script.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
|
||||
# usage: databaseToSDD.ksh Option udbFile
|
||||
#
|
||||
# where Option is one of the following:
|
||||
#
|
||||
# -toDB convert a .udb to ".db" format
|
||||
# -toLst convert a .udb to ".lst" format
|
||||
# -toSDD convert a .udb to SDD format
|
||||
# -toDeliverArgs convert a .udb to args that the deliver tool likes
|
||||
# -toReleaseTree convert a .udb to a script to build a delivery tree
|
||||
# -toCheckBuild convert a .udb to a script to check the items in a build
|
||||
# -toFileList convert a .udb to a list of files for carbon units
|
||||
# -Machine specifies 3,7,8 for hp-ux releases
|
||||
# -ReleaseStream {hp-ux, osf, whatever}
|
||||
# -NoDefaults do not convert any records labeled default
|
||||
# -toTargetList convert a .udb to a list of target files in product tree
|
||||
# the leading path is stripped and just the target
|
||||
# file is left - for easy diffing with some other
|
||||
# version of a release
|
||||
# -custom <awkFile> Supply a custom "awk" print library
|
||||
# -toCustom <prt routine>
|
||||
# -udbParseLib <awkFile> Supply an alternate "awk" parser library
|
||||
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# ConvertRoutine
|
||||
#
|
||||
# This ksh function invokes awk to do all of the dirty
|
||||
# work. The DoAction variable is consulted only in the
|
||||
# final stages of printing the desired info after the
|
||||
# .udb "phrases" are parsed.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
ConvertRoutine()
|
||||
{
|
||||
|
||||
|
||||
#
|
||||
# set what we are going to do
|
||||
#
|
||||
typeset DoAction=$1
|
||||
|
||||
#
|
||||
# set the "release stream" or token in a block in the .udb
|
||||
# file for which we will scan.
|
||||
#
|
||||
typeset BlockToken=$2
|
||||
|
||||
#
|
||||
# and for HP-UX releases, the particular machine 68k/Snake/S800 3/7/8
|
||||
#
|
||||
typeset machine=$3
|
||||
#
|
||||
# set flag if default blocks are to be processed
|
||||
#
|
||||
typeset UseDefaultBlocks=$4
|
||||
|
||||
shift
|
||||
shift
|
||||
shift
|
||||
shift
|
||||
|
||||
AWK=/usr/bin/awk
|
||||
if [ -x /usr/bin/nawk ]; then
|
||||
AWK=/usr/bin/nawk
|
||||
fi
|
||||
|
||||
#
|
||||
# Custom print routines may use the following parser variables:
|
||||
# defOrder[] --- An array containing the names of the fields in
|
||||
# a data base record (in the correct order).
|
||||
# NumEntries --- One MORE than the number of entries in the
|
||||
# "defOrder" array. This is the number of fields
|
||||
# in a data base record.
|
||||
# rec[] --- An associative array indexed by data base record
|
||||
# field name containing the value of the field.
|
||||
#
|
||||
# Assign custom print routines to be used for output. The default is to
|
||||
# use the "printDb" function associated with the library.
|
||||
#
|
||||
|
||||
typeset PRT=printDb
|
||||
case "$DoAction" in
|
||||
toDB)
|
||||
PRT=printDb
|
||||
;;
|
||||
toLst)
|
||||
PRT=printLst
|
||||
;;
|
||||
toFileList|toTargetList|toCheckBuild|toReleaseTree|toDeliverArgs|toSDD)
|
||||
PRT=printGather;
|
||||
;;
|
||||
toCustom)
|
||||
CUSTOM_PRINT="-f $CUSTOM_PRINT_LIB"
|
||||
PRT=$CUS_PRT
|
||||
;;
|
||||
*) # Unknown Action
|
||||
echo "$0: Unknown Action>> \"$doAction\""
|
||||
exit 1;
|
||||
;;
|
||||
esac
|
||||
|
||||
cat > /tmp/awk$$ <<EOF
|
||||
#
|
||||
# The function name "PRTREC" is used by the parsing routines
|
||||
# to do the output. By providing a custom output function you
|
||||
# can print the database any way you want. The default is to
|
||||
# use the "printRecord" function built defined in the awk file
|
||||
# containing the awk parser.
|
||||
#
|
||||
function PRTREC(rec) {
|
||||
$PRT(rec)
|
||||
}
|
||||
BEGIN {
|
||||
parseUdb()
|
||||
}
|
||||
{
|
||||
print "Getting New Line AWK style -- Problem?"
|
||||
exit 1
|
||||
}
|
||||
EOF
|
||||
|
||||
#
|
||||
# Create a single awk file for use with the "-f" parameter.
|
||||
# IBM's awk only allows one "-f"
|
||||
#
|
||||
cat "$UDB_PARSE_LIB" >> /tmp/awk$$
|
||||
[ -z "$CUSTOM_PRINT" ] || cat "$CUSTOM_PRINT_LIB" >> /tmp/awk$$
|
||||
|
||||
$AWK -v mailTo="$Administrator" \
|
||||
-v action="$DoAction" \
|
||||
-v BlockToken="$BlockToken" \
|
||||
-v Machine="$machine" \
|
||||
-v UseDefaultBlocks="$UseDefaultBlocks" \
|
||||
-v DeBugFile="$DEBUGFILE" \
|
||||
-v DeBug="$DEBUGLEVEL" \
|
||||
-f /tmp/awk$$ $*
|
||||
|
||||
|
||||
#
|
||||
# Removed from parameter list because IBM's awk only allows one "-f"
|
||||
# $CUSTOM_PRINT \
|
||||
# -f "$UDB_PARSE_LIB" \
|
||||
#
|
||||
|
||||
rm /tmp/awk$$
|
||||
}
|
||||
|
||||
#
|
||||
# print a handy usage message to stderr (file descriptor 2 )
|
||||
#
|
||||
#
|
||||
usage()
|
||||
{
|
||||
exec >&2
|
||||
|
||||
echo "$ScriptName: usage:"
|
||||
echo ""
|
||||
echo " $ScriptName [Options] <UdbFile> ..."
|
||||
echo ""
|
||||
echo " -toDB convert a .udb to \".db\" format"
|
||||
echo " -toLst convert a .udb to \".lst\" format"
|
||||
echo " -toSDD convert a .udb to SDD format"
|
||||
echo " -toDeliverArgs convert a .udb to args that the deliver tool likes"
|
||||
echo " -toReleaseTree convert a .udb to a script to build a delivery tree"
|
||||
echo " -toCheckBuild convert a .udb to a script to check a build"
|
||||
echo " -toFileList convert a .udb to a list of files"
|
||||
echo " -toTargetList convert a .udb to a list of product files"
|
||||
echo " -ReleaseStream {hp-ux, osf, whatever}"
|
||||
echo " -Machine specifies machine 3,7,8 for hp-ux"
|
||||
echo " -NoDefaults do not convert any records labeled \"default\""
|
||||
echo " -Database path (obsolete) specifies full path to the .udb file to convert"
|
||||
echo " -mailTo <user> Specify a user to receive mail on errors."
|
||||
echo " -toCustom <prt> Specify the name of a custom print routine."
|
||||
echo " -custom <awkFile> Supply a custom "awk" print library."
|
||||
echo " -udbParseLib <awkFile> Supply an alternate 'awk' parser library"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
# OK, here is where we really start execution.
|
||||
# Check that the first argument defines what this script is
|
||||
# supposed to do:
|
||||
|
||||
# Obscurity footprint-in-the-sand: "${1##*/}" is equivalent
|
||||
# to basename(1)
|
||||
#
|
||||
ScriptName=${0##*/}
|
||||
|
||||
# -toSDD convert a .udb to SDD format
|
||||
# -toDeliverArgs convert a .udb to args that the deliver tool likes
|
||||
# -toReleaseTree convert a .udb to a script to build a delivery tree
|
||||
# -toCheckBuild convert a .udb to a script to check the items in a build
|
||||
|
||||
if [ $# -le 3 ]; then
|
||||
usage $0
|
||||
fi
|
||||
|
||||
typeset TakeDefaultBlocks="Y"
|
||||
typeset Administrator=""
|
||||
#typeset DBTOOLSRC=/x/toolsrc/dbTools
|
||||
typeset DBTOOLSRC=`dirname $0`
|
||||
typeset UDB_PARSE_LIB="$DBTOOLSRC/udbParseLib.awk"
|
||||
typeset CUSTOM_PRINT_LIB=""
|
||||
typeset DEBUGFILE="/dev/tty"
|
||||
typeset DEBUGLEVEL=0
|
||||
|
||||
if [ $# -gt 2 ]; then
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case $1 in
|
||||
-NoDefaults)
|
||||
TakeDefaultBlocks=N
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toDB)
|
||||
Action=toDB
|
||||
shift;
|
||||
continue;
|
||||
;;
|
||||
-toLst)
|
||||
Action=toLst
|
||||
shift;
|
||||
continue;
|
||||
;;
|
||||
-toSDD)
|
||||
Action=toSDD
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toDeliverArgs)
|
||||
Action=toDeliverArgs
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toReleaseTree)
|
||||
Action=toReleaseTree
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toCheckBuild)
|
||||
Action=toCheckBuild
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toTargetList)
|
||||
Action=toTargetList
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toFileList)
|
||||
Action=toFileList
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-Machine)
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
Machine=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-ReleaseStream)
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
ReleaseStream=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-Database)
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
if [ ! -r "$2" ]; then
|
||||
usage
|
||||
fi
|
||||
Database="$Database $2"
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-udbParseLib) # specify alternate "awk" parser location
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
if [ ! -r "$2" ]; then
|
||||
usage
|
||||
fi
|
||||
UDB_PARSE_LIB=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toCustom) # specify custom "awk" print routines
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
Action=toCustom
|
||||
CUS_PRT=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-custom) # specify custom "awk" print routines
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
if [ ! -r "$2" ]; then
|
||||
usage
|
||||
fi
|
||||
CUSTOM_PRINT_LIB=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-mailTo) # specify an administrator who receives mail about errors.
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
Administrator=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-DeBugFile) # specify a debug file and debug level for parser debug info
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
if [ "x$3" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
DEBUGFILE=$2
|
||||
shift 2
|
||||
continue
|
||||
;;
|
||||
-DeBugLevel) # specify a debug level for parser debug info
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
if [ "x$3" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
DEBUGLEVEL=$2
|
||||
shift 2
|
||||
continue
|
||||
;;
|
||||
-*)
|
||||
echo "unknown option: $1"
|
||||
echo ""
|
||||
usage
|
||||
exit 1;
|
||||
;;
|
||||
*) if [ ! -r $1 ]; then
|
||||
usage
|
||||
fi
|
||||
Database="$Database $1"
|
||||
shift;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$Action" = "toCustom" ]; then
|
||||
if [ -z "$CUSTOM_PRINT_LIB" ]; then
|
||||
echo "You Must specify an awk file containing the custom print routine \"$CUS_PRT\""
|
||||
exit 1;
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ "$Machine" = "" ]; then
|
||||
Machine=NA
|
||||
elif [ "$Machine" = "300" ]; then
|
||||
Machine="3"
|
||||
elif [ "$Machine" = "700" ]; then
|
||||
Machine="7"
|
||||
elif [ "$Machine" = "800" ]; then
|
||||
Machine="8"
|
||||
fi
|
||||
if [ "$ReleaseStream" = "" ]; then
|
||||
echo "$ScriptName: need to specify a -ReleaseStream" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ "$Database" = "" ]; then
|
||||
echo "$ScriptName: need to specify a -Database" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
ConvertRoutine $Action $ReleaseStream $Machine $TakeDefaultBlocks $Database
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#! /bin/ksh
|
||||
|
||||
#
|
||||
# Script to remove comments and blank lines from ".lst" files
|
||||
# and coalesce multiple blanks/tabs into a single blank
|
||||
#
|
||||
|
||||
cat $@ | egrep -v '^[ ]*#|^[ ]*$' | sed 's/[ ][ ]*/ /g'|\
|
||||
sed 's/ $//'
|
||||
@@ -0,0 +1,8 @@
|
||||
#=============================================================================
|
||||
#=============================================================================
|
||||
# deinstall.dt
|
||||
#
|
||||
# This script has been replaced with dinstall.dt.src.
|
||||
#
|
||||
#=============================================================================
|
||||
#=============================================================================
|
||||
Executable
+783
@@ -0,0 +1,783 @@
|
||||
XCOMM!/bin/ksh
|
||||
XCOMM $XConsortium: dinstall.dt.src /main/6 1996/04/23 11:18:22 drk $
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM deinstall.dt
|
||||
XCOMM
|
||||
XCOMM Script to deinstall the April 1994 Snapshot Desktop on
|
||||
XCOMM HP, IBM, Sun, Fujitsu, or Novell Unix systems from a CDROM
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen - clears the screen
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
#define HASH #
|
||||
#define STAR *
|
||||
|
||||
DtiClearScreen() {
|
||||
clear 1>&2
|
||||
HASH DtiPrint "clear"
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM Log - echo to log
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to echo to log
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
Log()
|
||||
{
|
||||
printf "$1" $2 $3 $4 $5 >> $LOG_FILE
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiPrint - echo to stderr and log
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to echo to stdout
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiPrint()
|
||||
{
|
||||
printf "$1" $2 $3 $4 $5 $6 $7 $8 $9 >&2
|
||||
Log "$1" $2 $3 $4 $5 $6 $7 $8 $9
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiShow - echo to stdout
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to echo to stdout
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiShow()
|
||||
{
|
||||
printf "$1" $2 $3 $4 $5 $6 $7 $8 $9 >&2
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiReturn - return a string to stdout
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to return
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiReturn()
|
||||
{
|
||||
echo "$1"
|
||||
}
|
||||
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiWhoami
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM result of system 'whoami' command
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiWhoami()
|
||||
{
|
||||
$WHOAMI_PATH/whoami
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM Exit - log and exit
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to echo to log
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
Exit()
|
||||
{
|
||||
Log "\n==================================================================\n"
|
||||
Log "* $(date) $($WHOAMI_PATH/whoami)@$(hostname)*"
|
||||
Log "* $1*"
|
||||
Log "\n*exit_code = $2*"
|
||||
Log "\n==================================================================\n"
|
||||
exit $2
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM GetPlatform
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM "hpux"
|
||||
XCOMM "aix"
|
||||
XCOMM "sun"
|
||||
XCOMM "uxp"
|
||||
XCOMM "usl"
|
||||
XCOMM "dec"
|
||||
XCOMM ==========================================================================
|
||||
|
||||
GetPlatform()
|
||||
{
|
||||
if [ -z "$getPlatform" ]; then
|
||||
os=`uname -s`
|
||||
case $os in
|
||||
*HP-UX*) getPlatform=hp;;
|
||||
*AIX*) getPlatform=ibm;;
|
||||
*SunOS*) getPlatform=sun;;
|
||||
*UNIX_System_V*) getPlatform=uxp;;
|
||||
*UNIX_SV*) getPlatform=usl;;
|
||||
*OSF1*) getPlatform=dec;;
|
||||
esac
|
||||
fi
|
||||
DtiReturn $getPlatform
|
||||
}
|
||||
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM ValidOS - Verify OS is valid to deinstall on
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - Error message if invalid platform, will exit.
|
||||
XCOMM Return
|
||||
XCOMM "hpux"
|
||||
XCOMM "aix"
|
||||
XCOMM "sun"
|
||||
XCOMM "uxp"
|
||||
XCOMM "usl"
|
||||
XCOMM "dec"
|
||||
XCOMM ==========================================================================
|
||||
|
||||
ValidOS()
|
||||
{
|
||||
platform=$(GetPlatform)
|
||||
case "$platform" in
|
||||
hp|ibm|sun|uxp|usl|dec)
|
||||
DtiReturn $platform
|
||||
;;
|
||||
*) Exit $INVALID_OS_MSG 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM ResolvePathName
|
||||
XCOMM
|
||||
XCOMM Input - File Name to be resolved to actual file
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM Actual File Name resolved down to through all links
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
ResolvePathName() {
|
||||
if [ "/" = "$1" ]; then
|
||||
echo $1$2
|
||||
elif [ -L $1 ]; then
|
||||
ResolvePathName `/bin/ls -l $1 | awk '{print $NF}'` $2
|
||||
else
|
||||
ResolvePathName `dirname $1` `basename $1`${2+/}$2
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM FileIsLink
|
||||
XCOMM
|
||||
XCOMM Input - File Name
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM TRUE, if file is a link
|
||||
XCOMM FALSE, if file is not a link
|
||||
XCOMM ==========================================================================
|
||||
FileIsLink() {
|
||||
if [[ -L $1 ]] && [[ -a $1 ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
else
|
||||
DtiReturn "FALSE"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM StateObjective - States the objective of the Script to the user
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
|
||||
StateObjective() {
|
||||
|
||||
XCOMM Display information to the user, ask if user wishes to continue
|
||||
|
||||
while :
|
||||
do
|
||||
DtiClearScreen
|
||||
DtiShow "$HERALD_MSG"
|
||||
DtiPrint "$OBJECTIVE_MSG"
|
||||
DtiPrint "$YESNO_MSG"
|
||||
|
||||
read response
|
||||
Log "$RESPONSE_MSG"
|
||||
Log "$response"
|
||||
Log "\n"
|
||||
|
||||
case $response in
|
||||
[yY]*) return 0
|
||||
;;
|
||||
[nN]*) exit 0
|
||||
;;
|
||||
*) continue
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DoFilesetScript - Runs a unconfiguration script in the post_install dirs
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DoFilesetScript()
|
||||
{
|
||||
FilesetName=$1
|
||||
|
||||
HASH
|
||||
HASH Check for the lowercase PLATFORM dir. If doesn't exist then
|
||||
HASH the tree is in uppercase.
|
||||
HASH
|
||||
if [ ! -f $TAR_TREE/dt.pkg ];
|
||||
then
|
||||
typeset -u ScriptName
|
||||
fi
|
||||
|
||||
|
||||
if [ "$BUILD_TREE" = "" ]
|
||||
then
|
||||
ScriptName=$3
|
||||
else
|
||||
ScriptName=$2
|
||||
fi
|
||||
|
||||
test_string=${DATABASE_FILES#*$FilesetName}
|
||||
if (( ${#DATABASE_FILES} > ${#test_string} ))
|
||||
then
|
||||
if [ -x $POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName ]
|
||||
then
|
||||
DtiPrint "\n\nExecuting $PLATFORM specific $FilesetName unconfigure script...\n"
|
||||
$POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName -d 2>&1 | \
|
||||
tee -a $LOG_FILE
|
||||
elif [ -x $POST_INSTALL_DIR/$ScriptName ]
|
||||
then
|
||||
DtiPrint "\n\nExecuting $FilesetName unconfigure script...\n"
|
||||
$POST_INSTALL_DIR/$ScriptName -d 2>&1 | tee -a $LOG_FILE
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM RunUnconfigScripts - Runs relevant unconfiguration scripts, based on
|
||||
XCOMM fileset installed, calls DoFilesetScript
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
RunUnconfigScripts()
|
||||
{
|
||||
DtiPrint "\n\nRunning unconfigure scripts...\n"
|
||||
|
||||
DoFilesetScript CDE-TT configTT tt.cfg
|
||||
DoFilesetScript CDE-MIN configMin min.cfg
|
||||
DoFilesetScript CDE-RUN configRun run.cfg
|
||||
DoFilesetScript CDE-HELP configHelp help.cfg
|
||||
DoFilesetScript CDE-HELP-PRG configHelpPrg helpprg.cfg
|
||||
DoFilesetScript CDE-HELP-RUN configHelpRun helprun.cfg
|
||||
DoFilesetScript CDE-SHLIBS configShlibs shlibs.cfg
|
||||
DoFilesetScript CDE-AB configAb ab.cfg
|
||||
DoFilesetScript CDE-DEMOS configDemos demos.cfg
|
||||
DoFilesetScript CDE-ICONS configIcons icons.cfg
|
||||
DoFilesetScript CDE-INC configInc inc.cfg
|
||||
DoFilesetScript CDE-MAN configMan man.cfg
|
||||
DoFilesetScript CDE-MAN-DEV configManDev mandev.cvg
|
||||
DoFilesetScript CDE-MSG-CAT configMsgCat msgcat.cfg
|
||||
DoFilesetScript CDE-PRG configPrg prg.cfg
|
||||
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM ValidConfiguration - Checks to see if the desktop was installed or
|
||||
XCOMM partially installed on your system
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return - TRUE, if valid configuration
|
||||
XCOMM FALSE, for no desktop was found on the system
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
ValidConfiguration() {
|
||||
if (( [[ -a $ABSOLUTE_USR_LOCATION ]] || [[ -a $DEFAULT_USR_LOCATION ]] ) &&
|
||||
( [[ -a $ABSOLUTE_ETC_LOCATION ]] || [[ -a $DEFAULT_ETC_LOCATION ]] ) &&
|
||||
( [[ -a $ABSOLUTE_VAR_LOCATION ]] || [[ -a $DEFAULT_VAR_LOCATION ]] ))
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
else
|
||||
STATUS="FALSE"
|
||||
|
||||
for i in $ABSOLUTE_USR_LOCATION $ABSOLUTE_ETC_LOCATION \
|
||||
$ABSLOUTE_VAR_LOCATION $DEFAULT_USR_LOCATION \
|
||||
$DEFAULT_ETC_LOCATION $DEFAULT_VAR_LOCATION
|
||||
do
|
||||
if [ -a $i ]
|
||||
then
|
||||
STATUS="TRUE"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
DtiReturn "$STATUS"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DisplayDirs - Determines if directories should be presented
|
||||
XCOMM to the user to determin if they will be deleted or not.
|
||||
XCOMM
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return - TRUE, if some directories will be deleted
|
||||
XCOMM FALSE, if NO directories will be deleted
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
DisplayDirs() {
|
||||
if [[ -d $ABSOLUTE_USR_LOCATION ]] && [[ -a $ABSOLUTE_USR_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
elif [[ -d $ABSOLUTE_ETC_LOCATION ]] && [[ -a $ABSOLUTE_ETC_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
elif
|
||||
[[ -d $ABSOLUTE_VAR_LOCATION ]] && [[ -a $ABSOLUTE_VAR_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
else
|
||||
DtiReturn "FALSE"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DisplayDirs - Determines if links should be presented
|
||||
XCOMM to the user to determine if they will be deleted or not.
|
||||
XCOMM
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return - TRUE, if some links will be deleted
|
||||
XCOMM FALSE, if NO links will be deleted
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
DisplayLinks() {
|
||||
if [[ -L $DEFAULT_USR_LOCATION ]] && [[ -a $DEFAULT_USR_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
elif [[ -L $DEFAULT_ETC_LOCATION ]] && [[ -a $DEFAULT_ETC_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
elif
|
||||
[[ -L $DEFAULT_VAR_LOCATION ]] && [[ -a $DEFAULT_VAR_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
else
|
||||
DtiReturn "FALSE"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM ShowDirsToBeDeleted - Shows what dirs and links will be deleted to the user
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
|
||||
ShowDirsToBeDeleted() {
|
||||
|
||||
XCOMM Display information to the user, ask if user wishes to continue
|
||||
|
||||
while :
|
||||
do
|
||||
DtiClearScreen
|
||||
DtiShow "$HERALD_MSG"
|
||||
|
||||
if [ $(DisplayDirs) = "TRUE" ]
|
||||
then
|
||||
DtiPrint "$DELETE_DIRS_MSG"
|
||||
if [ -a $ABSOLUTE_USR_LOCATION ]
|
||||
then
|
||||
DtiPrint "$DIR_MSG" "$ABSOLUTE_USR_LOCATION"
|
||||
fi
|
||||
|
||||
if [ -a $ABSOLUTE_ETC_LOCATION ]
|
||||
then
|
||||
DtiPrint "$DIR_MSG" "$ABSOLUTE_ETC_LOCATION"
|
||||
fi
|
||||
|
||||
if [ -a $ABSOLUTE_VAR_LOCATION ]
|
||||
then
|
||||
DtiPrint "$DIR_MSG" "$ABSOLUTE_VAR_LOCATION"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $(DisplayLinks) = "TRUE" ]
|
||||
then
|
||||
DtiPrint "\n\n$DELETE_LINKS_MSG"
|
||||
if [ $(FileIsLink $DEFAULT_USR_LOCATION) = "TRUE" ]
|
||||
then
|
||||
DtiPrint "$LINK_DIR_MSG" "$DEFAULT_USR_LOCATION"
|
||||
fi
|
||||
|
||||
if [ $(FileIsLink $DEFAULT_ETC_LOCATION) = "TRUE" ]
|
||||
then
|
||||
DtiPrint "$LINK_DIR_MSG" "$DEFAULT_ETC_LOCATION"
|
||||
fi
|
||||
|
||||
if [ $(FileIsLink $DEFAULT_VAR_LOCATION) = "TRUE" ]
|
||||
then
|
||||
DtiPrint "$LINK_DIR_MSG" "$DEFAULT_VAR_LOCATION"
|
||||
fi
|
||||
fi
|
||||
|
||||
DtiPrint "\n\n$WARNING_MSG"
|
||||
DtiPrint "\n\n\n$YESNO_MSG"
|
||||
|
||||
read response
|
||||
Log "$RESPONSE_MSG"
|
||||
Log "$response"
|
||||
Log "\n"
|
||||
|
||||
case $response in
|
||||
[yY]*) return 0
|
||||
;;
|
||||
[nN]*) exit 0
|
||||
;;
|
||||
*) continue
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM StopDesktop - Stops the desktop if it was running
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
StopDesktop() {
|
||||
|
||||
if [ -f $ABSOLUTE_VAR_LOCATION/Xpid ]
|
||||
then
|
||||
DtiPrint "\n\nStopping Desktop... \n"
|
||||
kill -TERM `cat $ABSOLUTE_VAR_LOCATION/Xpid` 2> /dev/null
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM RemoveDesktop - Deletes Desktop files from the system
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
RemoveDesktop () {
|
||||
|
||||
DtiPrint "Removing files from Desktop Directories...\n"
|
||||
rm -rf $ABSOLUTE_USR_LOCATION
|
||||
rm -rf $ABSOLUTE_ETC_LOCATION
|
||||
rm -rf $ABSOLUTE_VAR_LOCATION
|
||||
|
||||
rm -rf $DEFAULT_USR_LOCATION
|
||||
rm -rf $DEFAULT_ETC_LOCATION
|
||||
rm -rf $DEFAULT_VAR_LOCATION
|
||||
DtiPrint "The Desktop was successfully removed from your system.\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM
|
||||
XCOMM This is the MAIN of the script
|
||||
XCOMM
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM Set up Messages
|
||||
USAGE_MSG="\
|
||||
Usage: deinstall.dt [-noprompt]\n"
|
||||
|
||||
PERMISSION_MSG="\
|
||||
You must be ROOT to run this command\n"
|
||||
|
||||
RESPONSE_MSG="\n
|
||||
response is: "
|
||||
|
||||
HERALD_MSG="\
|
||||
The Common Open Systems Environment Desktop\n\
|
||||
April 1994 Snapshot Deinstallation Procedure\n\n"
|
||||
|
||||
OBJECTIVE_MSG="\
|
||||
This procedure will REMOVE the Desktop from your system.\n\n\n"
|
||||
|
||||
YESNO_MSG="\
|
||||
Do you wish to continue? [y/n] "
|
||||
|
||||
DELETE_DIRS_MSG="\
|
||||
The deinstallation will remove files from the following\n\
|
||||
directories listed below:\n\n"
|
||||
|
||||
DIR_MSG="\
|
||||
'%s'\n"
|
||||
|
||||
DELETE_LINKS_MSG="\
|
||||
The deinstallation will remove the following symbolic \n\
|
||||
link(s) listed below:\n\n"
|
||||
|
||||
LINK_DIR_MSG="\
|
||||
'%s'\n"
|
||||
|
||||
WARNING_MSG="\
|
||||
Any customizations made will be LOST!\n"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INVALID_OS_MSG="\
|
||||
The Desktop does not support this system configuration.\n\
|
||||
The deinstallation procedure will terminate.\n"
|
||||
|
||||
INVALID_CONFIGURATION_MSG="\
|
||||
The deinstallation procedure could not locate any Desktop files\n\
|
||||
on your system. The deinstallation will terminate. Please check\n\
|
||||
that you are running the deinstallation script on a system that\n\
|
||||
has the Desktop already installed.\n"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
XCOMM Set up variables
|
||||
NO_PROMPT="FALSE"
|
||||
|
||||
DEFAULT_USR_LOCATION="/usr/dt"
|
||||
DEFAULT_ETC_LOCATION="/etc/dt"
|
||||
DEFAULT_VAR_LOCATION="/var/dt"
|
||||
|
||||
ABSOLUTE_USR_LOCATION=$(ResolvePathName $DEFAULT_USR_LOCATION)
|
||||
ABSOLUTE_ETC_LOCATION=$(ResolvePathName $DEFAULT_ETC_LOCATION)
|
||||
ABSOLUTE_VAR_LOCATION=$(ResolvePathName $DEFAULT_VAR_LOCATION)
|
||||
|
||||
|
||||
XCOMM Set up the log file
|
||||
LOG_FILE="/tmp/dinstall.dt.log"
|
||||
if [ -f $LOG_FILE ]
|
||||
then
|
||||
rm -rf $LOG_FILE 2>/dev/null
|
||||
fi
|
||||
touch $LOG_FILE 2>/dev/null
|
||||
chmod 777 $LOG_FILE 2>/dev/null
|
||||
|
||||
|
||||
|
||||
|
||||
XCOMM change directories to deinstall.dt location as all
|
||||
XCOMM installation packages are relative to this
|
||||
XCOMM
|
||||
if [ ${0%/STAR} != "dinstall.dt" ]; then
|
||||
cd ${0%/STAR}
|
||||
fi
|
||||
|
||||
|
||||
XCOMM set up the TOP directory of where the CD is mounted
|
||||
TOP=`pwd`
|
||||
|
||||
|
||||
XCOMM set up the path for whoami command
|
||||
WHOAMI_PATH=/bin
|
||||
platform=$(GetPlatform)
|
||||
case "$platform" in
|
||||
hp) WHOAMI_PATH=/usr/bin
|
||||
;;
|
||||
ibm) WHOAMI_PATH=/bin
|
||||
;;
|
||||
sun) WHOAMI_PATH=/usr/ucb
|
||||
;;
|
||||
uxp) WHOAMI_PATH=/usr/ucb
|
||||
;;
|
||||
usl) WHOAMI_PATH=/usr/ucb
|
||||
;;
|
||||
dec) WHOAMI_PATH=/usr/bin
|
||||
;;
|
||||
esac
|
||||
|
||||
DTIDINSTALLDT=dinstall.dt
|
||||
DTICONFIGDIR=config
|
||||
dtiPlatform=$(GetPlatform)
|
||||
DTIPLATFORMDIR=$dtiPlatform
|
||||
DTIREADME=config/config.$dtiPlatform
|
||||
|
||||
if [ ${0##STAR/} != $DTIDINSTALLDT ]; then
|
||||
HASH
|
||||
HASH CDROM driver folds filenames to uppercase
|
||||
HASH
|
||||
typeset -u DTIDINSTALLDT
|
||||
typeset -u DTICONFIGDIR
|
||||
typeset -u DTIPLATFORMDIR
|
||||
typeset -u DTIREADME
|
||||
fi
|
||||
|
||||
|
||||
XCOMM Parse the command line
|
||||
while [ $# -ne 0 ];
|
||||
do
|
||||
case $1 in
|
||||
-noprompt) NO_PROMPT=TRUE
|
||||
print "NO_PROMPT is set"
|
||||
shift
|
||||
;;
|
||||
*) print "$USAGE_MSG"
|
||||
DtiPrint $USAGE
|
||||
exit 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
XCOMM Verify that we have the Root User
|
||||
if [ $(DtiWhoami) != "root" ]
|
||||
then
|
||||
DtiShow "$PERMISSION_MSG"
|
||||
Exit "$PERMISSION_MSG" 1
|
||||
fi
|
||||
|
||||
XCOMM Check to see if the Desktop is actually installed on the system
|
||||
if [ $(ValidConfiguration ) != "TRUE" ]
|
||||
then
|
||||
DtiPrint "$INVALID_CONFIGURATION_MSG"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
XCOMM Determine if the OS is supported
|
||||
PLATFORM=$(ValidOS)
|
||||
|
||||
XCOMM
|
||||
XCOMM Initially PLATFORM is in lower case.
|
||||
XCOMM Check if the $PLATFORM directory exists.
|
||||
XCOMM if doesn't exist translate all to upper case.
|
||||
XCOMM
|
||||
|
||||
if [ -d $PLATFORM ]
|
||||
then
|
||||
TAR_TREE=$TOP/$PLATFORM
|
||||
POST_INSTALL_DIR=$TAR_TREE/config
|
||||
DATABASE_FILES=$(awk 'BEGIN {FS=":"} /FILESETS: /{print $2}' $TAR_TREE/dt.pkg 2>/dev/null)
|
||||
else
|
||||
PLATFORM=`echo "$PLATFORM" | /usr/bin/tr "[a-z]" "[A-Z]"`
|
||||
TAR_TREE=$TOP/$PLATFORM
|
||||
POST_INSTALL_DIR=$TAR_TREE/CONFIG
|
||||
DATABASE_FILES=$(awk 'BEGIN {FS=":"} /FILESETS: /{print $2}' $TAR_TREE/DT.PKG 2>/dev/null)
|
||||
fi
|
||||
|
||||
|
||||
XCOMM Tell the user what is going to happen
|
||||
if [ $NO_PROMPT = FALSE ]
|
||||
then
|
||||
StateObjective
|
||||
fi
|
||||
|
||||
XCOMM Show the user what directories are going to be deleted
|
||||
if [ $NO_PROMPT = FALSE ]
|
||||
then
|
||||
ShowDirsToBeDeleted
|
||||
fi
|
||||
|
||||
|
||||
XCOMM Stop the Desktop
|
||||
StopDesktop
|
||||
|
||||
XCOMM Run the Unconfigure Scripts
|
||||
RunUnconfigScripts
|
||||
|
||||
XCOMM Remove the Desktop Files
|
||||
RemoveDesktop
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Executable
+91
@@ -0,0 +1,91 @@
|
||||
#!/bin/ksh
|
||||
|
||||
echo ""
|
||||
echo "ezinstall.hp is a very plain, very vanilla, very simple installation"
|
||||
echo "script that installs the CDE Desktop and executes a set of config-"
|
||||
echo "uration scripts. It assumes that you have set aside ample space - "
|
||||
echo "about 46 Mb - for installation."
|
||||
echo ""
|
||||
echo "The Desktop is installed into the directory /usr/dt. This is the"
|
||||
echo "logical top of CDE. If you wish to change the physical location"
|
||||
echo "of the files, set up a symbolic link between /usr/dt and the actual"
|
||||
echo "location. E.g., if you wish to physically locate the CDE files in"
|
||||
echo "/bigdisk/opt, do a 'ln -s /bigdisk/opt /usr/dt' before executing the"
|
||||
echo "ezinstall.hp script."
|
||||
echo ""
|
||||
echo "Okay?"
|
||||
echo ""
|
||||
|
||||
read response
|
||||
|
||||
if [ `/usr/bin/whoami` != "root" ]
|
||||
then
|
||||
echo ""
|
||||
echo "You must be root to run this script"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "" -o "$2" = "" ]
|
||||
then
|
||||
echo "Usage: ezinstall <the compressed tar of dt> <the tar of the scripts>"
|
||||
echo " [ -clean ]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ztar=$1
|
||||
star=$2
|
||||
|
||||
#
|
||||
# have to install in /usr/dt
|
||||
#
|
||||
# clean it first
|
||||
#
|
||||
|
||||
if [ "$3" = "-clean" ]
|
||||
then
|
||||
rm -rf /usr/dt/*
|
||||
rm -rf /var/dt/*
|
||||
fi
|
||||
|
||||
if [ "$1" != "skip" ]
|
||||
then
|
||||
compress -d <$ztar | tar xvf -
|
||||
fi
|
||||
|
||||
#
|
||||
# place the scripts in /tmp/ez
|
||||
#
|
||||
|
||||
mkdir /tmp/ez
|
||||
echo "$PWD: copying $star to /tmp/ez"
|
||||
cp $star /tmp/ez
|
||||
|
||||
cd /tmp/ez
|
||||
tarfile=${star##*/}
|
||||
tar xvf $tarfile
|
||||
|
||||
#
|
||||
# execute each of the scripts
|
||||
#
|
||||
|
||||
for i in config* hp/config*
|
||||
do
|
||||
if [ -f $i ]
|
||||
then
|
||||
if [ ! -x $i ]
|
||||
then
|
||||
chmod 555 $i
|
||||
fi
|
||||
echo "executing $i script"
|
||||
./$i
|
||||
fi
|
||||
done
|
||||
|
||||
cd /tmp
|
||||
rm -rf /tmp/ez
|
||||
|
||||
echo ""
|
||||
echo "All done!"
|
||||
echo "type /usr/dt/bin/dtlogin to start CDE"
|
||||
echo ""
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,128 @@
|
||||
XCOMM $XConsortium: install.dt.dec.src /main/3 1996/11/19 11:43:45 drk $
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM install.dt.dec.src
|
||||
XCOMM
|
||||
XCOMM Platform specific function overrides for the April 1994 Snapshot
|
||||
XCOMM install script, install.dt.
|
||||
XCOMM
|
||||
XCOMM This file is sourced by the install.dt script to allow platform
|
||||
XCOMM specific behavior for certain functionality. These functions are:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clear the screen
|
||||
XCOMM DtiFreeSpace() - return available bytes in a directory
|
||||
XCOMM DtiVerifyConfiguration() - verify system configuration
|
||||
XCOMM DtiWhoami() - return user name
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clears the screen
|
||||
XCOMM
|
||||
XCOMM The default DtiClearScreen() uses the 'clear' command to clear the
|
||||
XCOMM screen. If this platform does not have the 'clear' command,
|
||||
XCOMM declare DtiClearScreen() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Note: The default DtiClearScreen() writes to stderr, rather than stdout,
|
||||
XCOMM so be sure to do the same here. DtiPrint() does this automatically, so
|
||||
XCOMM use it if possible.
|
||||
XCOMM
|
||||
XCOMM Example:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen()
|
||||
XCOMM {
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM }
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM DtiClearScreen() {
|
||||
XCOMM clear 1>&2
|
||||
XCOMM }
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiFreeSpace
|
||||
XCOMM
|
||||
XCOMM The default DtiFreeSpace() does not check for free space, rather it
|
||||
XCOMM simply returns a BigNumber that install.dt will assume is large
|
||||
XCOMM enough in which to install the desktop.
|
||||
XCOMM
|
||||
XCOMM Declare DtiFreeSpace() here to return the actual available space for
|
||||
XCOMM a particular directory.
|
||||
XCOMM
|
||||
XCOMM The $1 parameter will contain the directory name to test. The directory
|
||||
XCOMM specified will exist. DtiFreeSpace() should return the number of bytes
|
||||
XCOMM available via the DtiReturn() function.
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - directory name
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM number of bytes available
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiFreeSpace()
|
||||
{
|
||||
BDFOUT=`df -k $1 | awk '{print $4}'`
|
||||
for i in $BDFOUT
|
||||
do
|
||||
if [ "$i" != "Avail" ]
|
||||
then
|
||||
i=`expr $i \* 1024`
|
||||
DtiReturn "$i"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiVerifyConfiguration
|
||||
XCOMM
|
||||
XCOMM The default DtiVerifyConfiguration() does no system configuration
|
||||
XCOMM testing. For a particular platform, one might want to test for
|
||||
XCOMM the presence of X11R5 or the OS version, for example, before allowing
|
||||
XCOMM the desktop to be installed.
|
||||
XCOMM
|
||||
XCOMM Declare this function to make such platform specific tests. Return
|
||||
XCOMM "yes" if the system passed, or "<message text>" if the system failed
|
||||
XCOMM in which case install.dt will display the <message text> as the reason.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM "yes" - system configuration verified
|
||||
XCOMM "<message text>" - verification failed, display message text
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM DtiVerifyConfiguration()
|
||||
XCOMM {
|
||||
XCOMM DtiReturn "yes"
|
||||
XCOMM }
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiWhoami
|
||||
XCOMM
|
||||
XCOMM The default DtiWhoami() uses the 'whoami' command to determine
|
||||
XCOMM the user name. If this platform does not have the 'whoami' command,
|
||||
XCOMM declare DtiWhoami() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM result of system 'whoami' command
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiWhoami()
|
||||
{
|
||||
/usr/bin/whoami
|
||||
}
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
XCOMM $XConsortium: install.dt.hp.src /main/3 1996/04/21 19:06:53 drk $
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM install.dt.hp
|
||||
XCOMM
|
||||
XCOMM Platform specific function overrides for the April 1994 Snapshot
|
||||
XCOMM install script, install.dt.
|
||||
XCOMM
|
||||
XCOMM This file is sourced by the install.dt script to allow platform
|
||||
XCOMM specific behavior for certain functionality. These functions are:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clear the screen
|
||||
XCOMM DtiFreeSpace() - return available bytes in a directory
|
||||
XCOMM DtiVerifyConfiguration() - verify system configuration
|
||||
XCOMM DtiWhoami() - return user name
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clears the screen
|
||||
XCOMM
|
||||
XCOMM The default DtiClearScreen() uses the 'clear' command to clear the
|
||||
XCOMM screen. If this platform does not have the 'clear' command,
|
||||
XCOMM declare DtiClearScreen() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Note: The default DtiClearScreen() writes to stderr, rather than stdout,
|
||||
XCOMM so be sure to do the same here. DtiPrint() does this automatically, so
|
||||
XCOMM use it if possible.
|
||||
XCOMM
|
||||
XCOMM Example:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen()
|
||||
XCOMM {
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM }
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM DtiClearScreen() {
|
||||
XCOMM clear 1>&2
|
||||
XCOMM }
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiFreeSpace
|
||||
XCOMM
|
||||
XCOMM The default DtiFreeSpace() does not check for free space, rather it
|
||||
XCOMM simply returns a BigNumber that install.dt will assume is large
|
||||
XCOMM enough in which to install the desktop.
|
||||
XCOMM
|
||||
XCOMM Declare DtiFreeSpace() here to return the actual available space for
|
||||
XCOMM a particular directory.
|
||||
XCOMM
|
||||
XCOMM The $1 parameter will contain the directory name to test. The directory
|
||||
XCOMM specified will exist. DtiFreeSpace() should return the number of bytes
|
||||
XCOMM available via the DtiReturn() function.
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - directory name
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM number of bytes available
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiFreeSpace()
|
||||
{
|
||||
BDFOUT=`bdf $1 | awk '{print $4}'`
|
||||
for i in $BDFOUT
|
||||
do
|
||||
if [ "$i" != "avail" ]
|
||||
then
|
||||
DtiReturn "$i"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiVerifyConfiguration
|
||||
XCOMM
|
||||
XCOMM The default DtiVerifyConfiguration() does no system configuration
|
||||
XCOMM testing. For a particular platform, one might want to test for
|
||||
XCOMM the presence of X11R5 or the OS version, for example, before allowing
|
||||
XCOMM the desktop to be installed.
|
||||
XCOMM
|
||||
XCOMM Declare this function to make such platform specific tests. Return
|
||||
XCOMM "yes" if the system passed, or "<message text>" if the system failed
|
||||
XCOMM in which case install.dt will display the <message text> as the reason.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM "yes" - system configuration verified
|
||||
XCOMM "<message text>" - verification failed, display message text
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM DtiVerifyConfiguration()
|
||||
XCOMM {
|
||||
XCOMM DtiReturn "yes"
|
||||
XCOMM }
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiWhoami
|
||||
XCOMM
|
||||
XCOMM The default DtiWhoami() uses the 'whoami' command to determine
|
||||
XCOMM the user name. If this platform does not have the 'whoami' command,
|
||||
XCOMM declare DtiWhoami() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM result of system 'whoami' command
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM DtiWhoami()
|
||||
XCOMM {
|
||||
XCOMM whoami
|
||||
XCOMM }
|
||||
@@ -0,0 +1,158 @@
|
||||
XCOMM $XConsortium: install.dt.ibm.src /main/3 1996/04/21 19:06:56 drk $
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM install.dt.ibm
|
||||
XCOMM
|
||||
XCOMM Platform specific function overrides for the April 1994 Snapshot
|
||||
XCOMM install script, install.dt.
|
||||
XCOMM
|
||||
XCOMM This file is sourced by the install.dt script to allow platform
|
||||
XCOMM specific behavior for certain functionality. These functions are:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clear the screen
|
||||
XCOMM DtiFreeSpace() - return available bytes in a directory
|
||||
XCOMM DtiVerifyConfiguration() - verify system configuration
|
||||
XCOMM DtiWhoami() - return user name
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clears the screen
|
||||
XCOMM
|
||||
XCOMM The default DtiClearScreen() uses the 'clear' command to clear the
|
||||
XCOMM screen. If this platform does not have the 'clear' command,
|
||||
XCOMM declare DtiClearScreen() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Note: The default DtiClearScreen() writes to stderr, rather than stdout,
|
||||
XCOMM so be sure to do the same here. DtiPrint() does this automatically, so
|
||||
XCOMM use it if possible.
|
||||
XCOMM
|
||||
XCOMM Example:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen()
|
||||
XCOMM {
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM }
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM DtiClearScreen() {
|
||||
XCOMM clear 1>&2
|
||||
XCOMM }
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiFreeSpace
|
||||
XCOMM
|
||||
XCOMM The default DtiFreeSpace() does not check for free space, rather it
|
||||
XCOMM simply returns a BigNumber that install.dt will assume is large
|
||||
XCOMM enough in which to install the desktop.
|
||||
XCOMM
|
||||
XCOMM Declare DtiFreeSpace() here to return the actual available space for
|
||||
XCOMM a particular directory.
|
||||
XCOMM
|
||||
XCOMM The $1 parameter will contain the directory name to test. The directory
|
||||
XCOMM specified will exist. DtiFreeSpace() should return the number of bytes
|
||||
XCOMM available via the DtiReturn() function.
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - directory name
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM number of bytes available
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiFreeSpace()
|
||||
{
|
||||
dtspace=`df $1 | awk '
|
||||
BEGIN{
|
||||
a = 1
|
||||
}
|
||||
{
|
||||
if($1 == "Filesystem") {
|
||||
getline
|
||||
space = $3*1024
|
||||
}
|
||||
}
|
||||
END{
|
||||
a = space
|
||||
print a
|
||||
} ' `
|
||||
DtiReturn $dtspace
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiVerifyConfiguration
|
||||
XCOMM
|
||||
XCOMM The default DtiVerifyConfiguration() does no system configuration
|
||||
XCOMM testing. For a particular platform, one might want to test for
|
||||
XCOMM the presence of X11R5 or the OS version, for example, before allowing
|
||||
XCOMM the desktop to be installed.
|
||||
XCOMM
|
||||
XCOMM Declare this function to make such platform specific tests. Return
|
||||
XCOMM "yes" if the system passed, or "<message text>" if the system failed
|
||||
XCOMM in which case install.dt will display the <message text> as the reason.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM "yes" - system configuration verified
|
||||
XCOMM "<message text>" - verification failed, display message text
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiVerifyConfiguration()
|
||||
{
|
||||
IsX11R5=`lslpp -h | awk '
|
||||
BEGIN {
|
||||
X11R5=0
|
||||
}
|
||||
/X11rte.obj/ {
|
||||
getline
|
||||
if(($1 == "01.02.0003.0000") && ($2 == "COMPLETE")) {
|
||||
X11R5=1
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
END {
|
||||
print X11R5
|
||||
}'`
|
||||
|
||||
if [ $IsX11R5 = 1 ];
|
||||
then
|
||||
DtiReturn "yes"
|
||||
else
|
||||
DtiReturn "The Desktop requires that X11R5 be installed on your system.\n
|
||||
0) Continue with Desktop Installation
|
||||
99) Exit Desktop Installation
|
||||
|
||||
Please enter selection: "
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiWhoami
|
||||
XCOMM
|
||||
XCOMM The default DtiWhoami() uses the 'whoami' command to determine
|
||||
XCOMM the user name. If this platform does not have the 'whoami' command,
|
||||
XCOMM declare DtiWhoami() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM result of system 'whoami' command
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM DtiWhoami()
|
||||
XCOMM {
|
||||
XCOMM whoami
|
||||
XCOMM }
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,128 @@
|
||||
XCOMM $XConsortium: install.dt.sun.src /main/3 1996/04/21 19:07:03 drk $
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM install.dt.sun
|
||||
XCOMM
|
||||
XCOMM Platform specific function overrides for the April 1994 Snapshot
|
||||
XCOMM install script, install.dt.
|
||||
XCOMM
|
||||
XCOMM This file is sourced by the install.dt script to allow platform
|
||||
XCOMM specific behavior for certain functionality. These functions are:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clear the screen
|
||||
XCOMM DtiFreeSpace() - return available bytes in a directory
|
||||
XCOMM DtiVerifyConfiguration() - verify system configuration
|
||||
XCOMM DtiWhoami() - return user name
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clears the screen
|
||||
XCOMM
|
||||
XCOMM The default DtiClearScreen() uses the 'clear' command to clear the
|
||||
XCOMM screen. If this platform does not have the 'clear' command,
|
||||
XCOMM declare DtiClearScreen() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Note: The default DtiClearScreen() writes to stderr, rather than stdout,
|
||||
XCOMM so be sure to do the same here. DtiPrint() does this automatically, so
|
||||
XCOMM use it if possible.
|
||||
XCOMM
|
||||
XCOMM Example:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen()
|
||||
XCOMM {
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM }
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM DtiClearScreen() {
|
||||
XCOMM clear 1>&2
|
||||
XCOMM }
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiFreeSpace
|
||||
XCOMM
|
||||
XCOMM The default DtiFreeSpace() does not check for free space, rather it
|
||||
XCOMM simply returns a BigNumber that install.dt will assume is large
|
||||
XCOMM enough in which to install the desktop.
|
||||
XCOMM
|
||||
XCOMM Declare DtiFreeSpace() here to return the actual available space for
|
||||
XCOMM a particular directory.
|
||||
XCOMM
|
||||
XCOMM The $1 parameter will contain the directory name to test. The directory
|
||||
XCOMM specified will exist. DtiFreeSpace() should return the number of bytes
|
||||
XCOMM available via the DtiReturn() function.
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - directory name
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM number of bytes available
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiFreeSpace()
|
||||
{
|
||||
BDFOUT=`df -k $1 | awk '{print $4}'`
|
||||
for i in $BDFOUT
|
||||
do
|
||||
if [ "$i" != "avail" ]
|
||||
then
|
||||
i=`expr $i \* 1024`
|
||||
DtiReturn "$i"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiVerifyConfiguration
|
||||
XCOMM
|
||||
XCOMM The default DtiVerifyConfiguration() does no system configuration
|
||||
XCOMM testing. For a particular platform, one might want to test for
|
||||
XCOMM the presence of X11R5 or the OS version, for example, before allowing
|
||||
XCOMM the desktop to be installed.
|
||||
XCOMM
|
||||
XCOMM Declare this function to make such platform specific tests. Return
|
||||
XCOMM "yes" if the system passed, or "<message text>" if the system failed
|
||||
XCOMM in which case install.dt will display the <message text> as the reason.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM "yes" - system configuration verified
|
||||
XCOMM "<message text>" - verification failed, display message text
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM DtiVerifyConfiguration()
|
||||
XCOMM {
|
||||
XCOMM DtiReturn "yes"
|
||||
XCOMM }
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiWhoami
|
||||
XCOMM
|
||||
XCOMM The default DtiWhoami() uses the 'whoami' command to determine
|
||||
XCOMM the user name. If this platform does not have the 'whoami' command,
|
||||
XCOMM declare DtiWhoami() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM result of system 'whoami' command
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiWhoami()
|
||||
{
|
||||
/usr/ucb/whoami
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
XCOMM $XConsortium: install.dt.usl.src /main/4 1996/04/23 11:19:27 drk $
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM install.dt.usl
|
||||
XCOMM
|
||||
XCOMM Platform specific function overrides for the April 1994 Snapshot
|
||||
XCOMM install script, install.dt.
|
||||
XCOMM
|
||||
XCOMM This file is sourced by the install.dt script to allow platform
|
||||
XCOMM specific behavior for certain functionality. These functions are:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clear the screen
|
||||
XCOMM DtiFreeSpace() - return available bytes in a directory
|
||||
XCOMM DtiVerifyConfiguration() - verify system configuration
|
||||
XCOMM DtiWhoami() - return user name
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
#define HASH #
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clears the screen
|
||||
XCOMM
|
||||
XCOMM The default DtiClearScreen() uses the 'clear' command to clear the
|
||||
XCOMM screen. If this platform does not have the 'clear' command,
|
||||
XCOMM declare DtiClearScreen() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Note: The default DtiClearScreen() writes to stderr, rather than stdout,
|
||||
XCOMM so be sure to do the same here. DtiPrint() does this automatically, so
|
||||
XCOMM use it if possible.
|
||||
XCOMM
|
||||
XCOMM Example:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen()
|
||||
XCOMM {
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM }
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM
|
||||
XCOMM USL uses the default (clear). We'll define it here to ensure usage.
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiClearScreen() {
|
||||
clear 1>&2
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiFreeSpace
|
||||
XCOMM
|
||||
XCOMM The default DtiFreeSpace() does not check for free space, rather it
|
||||
XCOMM simply returns a BigNumber that install.dt will assume is large
|
||||
XCOMM enough in which to install the desktop.
|
||||
XCOMM
|
||||
XCOMM Declare DtiFreeSpace() here to return the actual available space for
|
||||
XCOMM a particular directory.
|
||||
XCOMM
|
||||
XCOMM The $1 parameter will contain the directory name to test. The directory
|
||||
XCOMM specified will exist. DtiFreeSpace() should return the number of bytes
|
||||
XCOMM available via the DtiReturn() function.
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - directory name
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM number of bytes available
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiFreeSpace()
|
||||
{
|
||||
blocks="$(df "$1" | sed 's/^.*://' | awk '{print $1}')"
|
||||
case "$blocks" in
|
||||
[0-9]*) let blocks=blocks*512
|
||||
DtiReturn "$blocks" ;;
|
||||
*) DtiReturn "0" ;; # install.dt warn and confirm
|
||||
esac
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiVerifyConfiguration
|
||||
XCOMM
|
||||
XCOMM The default DtiVerifyConfiguration() does no system configuration
|
||||
XCOMM testing. For a particular platform, one might want to test for
|
||||
XCOMM the presence of X11R5 or the OS version, for example, before allowing
|
||||
XCOMM the desktop to be installed.
|
||||
XCOMM
|
||||
XCOMM Declare this function to make such platform specific tests. Return
|
||||
XCOMM "yes" if the system passed, or "<message text>" if the system failed
|
||||
XCOMM in which case install.dt will display the <message text> as the reason.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM "yes" - system configuration verified
|
||||
XCOMM "<message text>" - verification failed, display message text
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiVerifyConfiguration()
|
||||
{
|
||||
if [ "$(uname -s)" = UNIX_SV -a "$(uname -r)" = 4.2 ]
|
||||
then
|
||||
if [ "$(uname -v)" = 1.0 ]
|
||||
then
|
||||
DtiReturn \
|
||||
"WARNING: THE CDE DESKTOP IS NOT SUPPORTED ON UnixWare 1.0"
|
||||
else
|
||||
HASH for all 4.2 releases after 1.0
|
||||
DtiReturn "yes"
|
||||
fi
|
||||
else
|
||||
DtiReturn "ERROR: THIS IS NOT A \"UNIX_SV 4.2\" SYSTEM"
|
||||
fi
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiWhoami
|
||||
XCOMM
|
||||
XCOMM The default DtiWhoami() uses the 'whoami' command to determine
|
||||
XCOMM the user name. If this platform does not have the 'whoami' command,
|
||||
XCOMM declare DtiWhoami() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM result of system 'whoami' command
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiWhoami()
|
||||
{
|
||||
/usr/ucb/whoami
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiPrint - echo to stderr and log
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to echo to stdout and log
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM
|
||||
XCOMM Override on UnixWare because of printf "%s" integer-const problem
|
||||
XCOMM This coordinates with the leading blank in the passing of " $meg" in master.
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiPrint()
|
||||
{
|
||||
if [ "$#" -gt 1 ]
|
||||
then
|
||||
if [ "$#" -gt 5 ]
|
||||
then
|
||||
printf "$1" "$2" "$3" "$4" "$5" "$6" $7 $8 $9 >&2
|
||||
else
|
||||
if [ "$#" -gt 4 ]
|
||||
then
|
||||
printf "$1" "$2" "$3" "$4" "$5" $6 $7 $8 $9 >&2
|
||||
else
|
||||
printf "$1" "$2" $3 $4 $5 $6 $7 $8 $9 >&2
|
||||
fi
|
||||
fi
|
||||
else
|
||||
printf "$1" $2 $3 $4 $5 $6 $7 $8 $9 >&2
|
||||
fi
|
||||
Log "$1" $2 $3 $4 $5 $6 $7 $8 $9
|
||||
}
|
||||
@@ -0,0 +1,175 @@
|
||||
XCOMM $XConsortium: install.dt.uxp.src /main/4 1996/11/19 11:44:17 drk $
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM install.dt.usl
|
||||
XCOMM
|
||||
XCOMM Platform specific function overrides for the April 1994 Snapshot
|
||||
XCOMM install script, install.dt.
|
||||
XCOMM
|
||||
XCOMM This file is sourced by the install.dt script to allow platform
|
||||
XCOMM specific behavior for certain functionality. These functions are:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clear the screen
|
||||
XCOMM DtiFreeSpace() - return available bytes in a directory
|
||||
XCOMM DtiVerifyConfiguration() - verify system configuration
|
||||
XCOMM DtiWhoami() - return user name
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
#define HASH #
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen() - clears the screen
|
||||
XCOMM
|
||||
XCOMM The default DtiClearScreen() uses the 'clear' command to clear the
|
||||
XCOMM screen. If this platform does not have the 'clear' command,
|
||||
XCOMM declare DtiClearScreen() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Note: The default DtiClearScreen() writes to stderr, rather than stdout,
|
||||
XCOMM so be sure to do the same here. DtiPrint() does this automatically, so
|
||||
XCOMM use it if possible.
|
||||
XCOMM
|
||||
XCOMM Example:
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen()
|
||||
XCOMM {
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM DtiPrint "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
|
||||
XCOMM }
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM
|
||||
XCOMM USL uses the default (clear). We'll define it here to ensure usage.
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiClearScreen() {
|
||||
clear 1>&2
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiFreeSpace
|
||||
XCOMM
|
||||
XCOMM The default DtiFreeSpace() does not check for free space, rather it
|
||||
XCOMM simply returns a BigNumber that install.dt will assume is large
|
||||
XCOMM enough in which to install the desktop.
|
||||
XCOMM
|
||||
XCOMM Declare DtiFreeSpace() here to return the actual available space for
|
||||
XCOMM a particular directory.
|
||||
XCOMM
|
||||
XCOMM The $1 parameter will contain the directory name to test. The directory
|
||||
XCOMM specified will exist. DtiFreeSpace() should return the number of bytes
|
||||
XCOMM available via the DtiReturn() function.
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - directory name
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM number of bytes available
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiFreeSpace()
|
||||
{
|
||||
blocks="$(df "$1" | sed 's/^.*://' | awk '{print $1}')"
|
||||
case "$blocks" in
|
||||
[0-9]*) let blocks=blocks*512
|
||||
DtiReturn "$blocks" ;;
|
||||
*) DtiReturn "0" ;; # install.dt warn and confirm
|
||||
esac
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiVerifyConfiguration
|
||||
XCOMM
|
||||
XCOMM The default DtiVerifyConfiguration() does no system configuration
|
||||
XCOMM testing. For a particular platform, one might want to test for
|
||||
XCOMM the presence of X11R5 or the OS version, for example, before allowing
|
||||
XCOMM the desktop to be installed.
|
||||
XCOMM
|
||||
XCOMM Declare this function to make such platform specific tests. Return
|
||||
XCOMM "yes" if the system passed, or "<message text>" if the system failed
|
||||
XCOMM in which case install.dt will display the <message text> as the reason.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM "yes" - system configuration verified
|
||||
XCOMM "<message text>" - verification failed, display message text
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiVerifyConfiguration()
|
||||
{
|
||||
if [ "$(uname -s)" = UNIX_System_V -a "$(uname -r)" = 4.2.0 ]
|
||||
then
|
||||
DtiReturn "yes"
|
||||
|
||||
HASH if [ "$(uname -v)" = 1.0 ]
|
||||
HASH then
|
||||
HASH DtiReturn "WARNING: THE CDE DESKTOP IS NOT SUPPORTED ON UnixWare 1.0"
|
||||
HASH else
|
||||
HASH for all 4.2 releases after 1.0
|
||||
HASH DtiReturn "yes"
|
||||
HASH fi
|
||||
else
|
||||
DtiReturn "ERROR: THIS IS NOT A \"UNIX_System_V 4.2.0\" SYSTEM"
|
||||
fi
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiWhoami
|
||||
XCOMM
|
||||
XCOMM The default DtiWhoami() uses the 'whoami' command to determine
|
||||
XCOMM the user name. If this platform does not have the 'whoami' command,
|
||||
XCOMM declare DtiWhoami() here with the appropriate functionality.
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM result of system 'whoami' command
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiWhoami()
|
||||
{
|
||||
/usr/ucb/whoami
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiPrint - echo to stderr and log
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to echo to stdout and log
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM
|
||||
XCOMM Override on UnixWare because of printf "%s" integer-const problem
|
||||
XCOMM This coordinates with the leading blank in the passing of " $meg" in master.
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiPrint()
|
||||
{
|
||||
if [ "$#" -gt 1 ]
|
||||
then
|
||||
if [ "$#" -gt 5 ]
|
||||
then
|
||||
printf "$1" "$2" "$3" "$4" "$5" "$6" $7 $8 $9 >&2
|
||||
else
|
||||
if [ "$#" -gt 4 ]
|
||||
then
|
||||
printf "$1" "$2" "$3" "$4" "$5" $6 $7 $8 $9 >&2
|
||||
else
|
||||
printf "$1" "$2" $3 $4 $5 $6 $7 $8 $9 >&2
|
||||
fi
|
||||
fi
|
||||
else
|
||||
printf "$1" $2 $3 $4 $5 $6 $7 $8 $9 >&2
|
||||
fi
|
||||
Log "$1" $2 $3 $4 $5 $6 $7 $8 $9
|
||||
}
|
||||
@@ -0,0 +1,164 @@
|
||||
XCOMM $TOG: Imakefile /main/13 1998/03/11 16:20:10 mgreess $
|
||||
#ifndef HPArchitecture
|
||||
# define IHaveSubdirs
|
||||
#endif
|
||||
#define PassCDebugFlags
|
||||
|
||||
#ifdef SunArchitecture
|
||||
.NO_PARALLEL:
|
||||
#endif
|
||||
|
||||
TOOL_DIR = ../dbTools
|
||||
DATABASE_DIR = ../../../databases
|
||||
BUILD_UDB_TOOL = ./build_udb_list
|
||||
|
||||
#ifdef HPArchitecture
|
||||
PLATFORM = hp-ux
|
||||
#endif
|
||||
#ifdef LinuxArchitecture
|
||||
PLATFORM = linux
|
||||
SUBDIRS = linux
|
||||
#endif
|
||||
#ifdef RsArchitecture
|
||||
PLATFORM = aix
|
||||
SUBDIRS = ibm
|
||||
#endif
|
||||
#ifdef SunArchitecture
|
||||
PLATFORM = sun
|
||||
SUBDIRS = sun
|
||||
#endif
|
||||
#ifdef UXPArchitecture
|
||||
PLATFORM = uxp
|
||||
SUBDIRS = uxp
|
||||
#endif
|
||||
#ifdef USLArchitecture
|
||||
PLATFORM = usl
|
||||
SUBDIRS = usl
|
||||
#endif
|
||||
#ifdef AlphaArchitecture
|
||||
PLATFORM = dec
|
||||
SUBDIRS = dec
|
||||
#endif
|
||||
|
||||
#ifndef HPArchitecture
|
||||
MakeSubdirs($(SUBDIRS))
|
||||
#endif
|
||||
|
||||
all::
|
||||
|
||||
configHelp:: $(DATABASE_DIR)/CDE-HELP-C.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-HELP-C.udb > CDE-HELP-C.lst
|
||||
$(BUILD_UDB_TOOL) CDE-HELP-C ../../..
|
||||
|
||||
configHelpPrg:: $(DATABASE_DIR)/CDE-HELP-PRG.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-HELP-PRG.udb > CDE-HELP-PRG.lst
|
||||
$(BUILD_UDB_TOOL) CDE-HELP-PRG ../../..
|
||||
|
||||
configDemos:: $(DATABASE_DIR)/CDE-DEMOS.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-DEMOS.udb > CDE-DEMOS.lst
|
||||
$(BUILD_UDB_TOOL) CDE-DEMOS ../../..
|
||||
|
||||
configFonts:: $(DATABASE_DIR)/CDE-FONTS.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-FONTS.udb > CDE-FONTS.lst
|
||||
$(BUILD_UDB_TOOL) CDE-FONTS ../../..
|
||||
|
||||
configHelpRun:: $(DATABASE_DIR)/CDE-HELP-RUN.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-HELP-RUN.udb > CDE-HELP-RUN.lst
|
||||
$(BUILD_UDB_TOOL) CDE-HELP-RUN ../../..
|
||||
|
||||
configIcons:: $(DATABASE_DIR)/CDE-ICONS.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-ICONS.udb > CDE-ICONS.lst
|
||||
$(BUILD_UDB_TOOL) CDE-ICONS ../../..
|
||||
|
||||
configInc:: $(DATABASE_DIR)/CDE-INC.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-INC.udb > CDE-INC.lst
|
||||
$(BUILD_UDB_TOOL) CDE-INC ../../..
|
||||
|
||||
configManDev:: $(DATABASE_DIR)/CDE-MAN-DEV.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-MAN-DEV.udb > CDE-MAN-DEV.lst
|
||||
$(BUILD_UDB_TOOL) CDE-MAN-DEV ../../..
|
||||
|
||||
configMan:: $(DATABASE_DIR)/CDE-MAN.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-MAN.udb > CDE-MAN.lst
|
||||
$(BUILD_UDB_TOOL) CDE-MAN ../../..
|
||||
|
||||
configMsgCat:: $(DATABASE_DIR)/CDE-MSG-C.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-MSG-C.udb > CDE-MSG-C.lst
|
||||
$(BUILD_UDB_TOOL) CDE-MSG-C ../../..
|
||||
|
||||
configPrg:: $(DATABASE_DIR)/CDE-PRG.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-PRG.udb > CDE-PRG.lst
|
||||
$(BUILD_UDB_TOOL) CDE-PRG ../../..
|
||||
|
||||
configShlibs:: $(DATABASE_DIR)/CDE-SHLIBS.udb
|
||||
$(TOOL_DIR)/udbToAny.ksh -toLst -ReleaseStream $(PLATFORM) \
|
||||
$(DATABASE_DIR)/CDE-SHLIBS.udb > CDE-SHLIBS.lst
|
||||
$(BUILD_UDB_TOOL) CDE-SHLIBS ../../..
|
||||
|
||||
LOCAL_CPP_DEFINES = -DCDE_INSTALLATION_TOP=$(CDE_INSTALLATION_TOP) \
|
||||
-DCDE_CONFIGURATION_TOP=$(CDE_CONFIGURATION_TOP) \
|
||||
-DCDE_LOGFILES_TOP=$(CDE_LOGFILES_TOP)
|
||||
|
||||
CppSourceFile(configHelp,configHelp.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppSourceFile(configHelpPrg,configHelpPrg.src,$(LOCAL_CPP_DEFINES),)
|
||||
|
||||
CppSourceFile(configDemos,configDemos.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppSourceFile(configFonts,configFonts.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppSourceFile(configHelpRun,configHelpRun.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppSourceFile(configIcons,configIcons.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppSourceFile(configInc,configInc.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppSourceFile(configMan,configMan.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppSourceFile(configManDev,configManDev.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppSourceFile(configMsgCat,configMsgCat.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppSourceFile(configPrg,configPrg.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppSourceFile(configShlibs,configShlibs.src,$(LOCAL_CPP_DEFINES),)
|
||||
|
||||
configHelp:: configHelp.src
|
||||
chmod +x configHelp
|
||||
|
||||
configHelpPrg:: configHelpPrg.src
|
||||
chmod +x configHelpPrg
|
||||
|
||||
configDemos:: configDemos.src
|
||||
chmod +x configDemos
|
||||
|
||||
configFonts:: configFonts.src
|
||||
chmod +x configFonts
|
||||
|
||||
configHelpRun:: configHelpRun.src
|
||||
chmod +x configHelpRun
|
||||
|
||||
configIcons:: configIcons.src
|
||||
chmod +x configIcons
|
||||
|
||||
configInc:: configInc.src
|
||||
chmod +x configInc
|
||||
|
||||
configMan:: configMan.src
|
||||
chmod +x configMan
|
||||
|
||||
configManDev:: configManDev.src
|
||||
chmod +x configManDev
|
||||
|
||||
configMsgCat:: configMsgCat.src
|
||||
chmod +x configMsgCat
|
||||
|
||||
configPrg:: configPrg.src
|
||||
chmod +x configPrg
|
||||
|
||||
configShlibs:: configShlibs.src
|
||||
chmod +x configShlibs
|
||||
|
||||
clean::
|
||||
$(RM) *.lst *.list
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
#!/bin/ksh
|
||||
|
||||
awk '{if ($1 == "install_target" && $3 != "") print $3}' \
|
||||
$2/databases/$1.udb >$1.list
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
XCOMM! /bin/ksh
|
||||
XCOMM #######
|
||||
XCOMM Product: CDE
|
||||
XCOMM Fileset: CDE-DEMOS
|
||||
XCOMM customize
|
||||
XCOMM @(#) $XConsortium: configDemos.src /main/4 1996/04/23 19:32:44 drk $
|
||||
XCOMM #######
|
||||
XCOMM
|
||||
XCOMM (c) Copyright Hewlett-Packard Company, 1993
|
||||
XCOMM
|
||||
XCOMM #######
|
||||
#define STAR *
|
||||
XCOMM ############################################
|
||||
XCOMM #
|
||||
XCOMM # HELP_symlinks
|
||||
XCOMM #
|
||||
XCOMM # create various symlinks
|
||||
XCOMM #
|
||||
XCOMM ############################################
|
||||
RemoveDemoFiles()
|
||||
{
|
||||
while read SRC
|
||||
do
|
||||
if [ "$SRC" != "" ]
|
||||
then
|
||||
rm -f $SRC
|
||||
dirname=${SRC%/STAR}
|
||||
if [ -d $dirname ]
|
||||
then
|
||||
cd $dirname
|
||||
while [ "$dirname" != "$CDE_TOP" ]
|
||||
do
|
||||
cd ..
|
||||
rmdir ${dirname##STAR/} >/dev/null 2>/dev/null
|
||||
dirname=${dirname%/STAR}
|
||||
done
|
||||
fi
|
||||
fi
|
||||
done <<-EOF
|
||||
#include "CDE-DEMOS.list"
|
||||
EOF
|
||||
}
|
||||
|
||||
VerifyInstalledFiles()
|
||||
{
|
||||
echo "Status mode owner group filename"
|
||||
echo "-----------------------------------------"
|
||||
XCOMM exists correct correct correct /usr/dt/foo1
|
||||
XCOMM MISSING WRONG WRONG WRONG /usr/dt/foo2
|
||||
XCOMM exists the link is correct /usr/dt/link
|
||||
|
||||
while read SRC
|
||||
do
|
||||
#include "verify.func"
|
||||
done <<-EOF
|
||||
#include "CDE-DEMOS.lst"
|
||||
EOF
|
||||
}
|
||||
|
||||
#include "option.func"
|
||||
|
||||
XCOMM ##########################################################################
|
||||
XCOMM
|
||||
XCOMM Main Body
|
||||
XCOMM
|
||||
XCOMM ##########################################################################
|
||||
|
||||
PRODUCT=CDE
|
||||
FILESET=CDE-DEMOS
|
||||
retval=0
|
||||
CDE_TOP=CDE_INSTALLATION_TOP
|
||||
CDE_CONF_TOP=CDE_CONFIGURATION_TOP
|
||||
|
||||
HandleOption $*
|
||||
|
||||
if [ "$OPERATION" = "deconfigure" ]
|
||||
then
|
||||
|
||||
echo "de-Configuring for CDE-DEMOS..."
|
||||
|
||||
RemoveDemoFiles
|
||||
|
||||
VerifyInstalledFiles
|
||||
|
||||
elif [ "$OPERATION" = "verify" ]
|
||||
then
|
||||
|
||||
VerifyInstalledFiles
|
||||
|
||||
fi
|
||||
|
||||
return $retval
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user