Initial import of the CDE 2.1.30 sources from the Open Group.

This commit is contained in:
Peter Howkins
2012-03-10 18:21:40 +00:00
commit 83b6996daa
18978 changed files with 3945623 additions and 0 deletions

View File

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,179 @@
ELF 4q4 (44  Ô\ÿ\ÿ]]ð X````<60>/usr/lib/ld.so.1C_7EWT5Z1%[K\N;]LJ S6?Q:X3D2^IA4M8)/HUPCO#V+"&$,*90'->!BF<G=(@YR.Ôèx h ˜ Ô  
 ] _t
`\``@^à8" ]Ø@^8" #Ø
T(b02_(H"7]œ`>@!CfXÿñHèODd˜[_d8"a^ÔD"f xmb4v^¼8"|˜@]„\"‰T<12>^ø˜"•^t"<22>]ü\¢^\°©\ÿÿñ°]0<>·^È8"¿^Px"Å^D"Êb4!ÒÿñÙ]l8"à]Hæ^°8"ì_8"ò^˜8"øb8]< ,+8^,|_4H"p%]ÌD"+b<2b@8^ì˜"?]´@F
S^8HY]Täa]<5D>ð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[]„)]<5D>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#<15>ã¿ <C2BF>Çà<08>è¼ à  D¥, ¤ ¤@'˜ä$â4œ# <><04>@S¸S<>"°@S´ÿÿë<01>@@S­@S®?ÿÿc <63>ã€ð' D˜<>!ScÀÔ D@S¦<01> @S<><01>Çà<08>è?ÿÿc<E2809A>ã€ð' Dò' HÀ'¿üÀ'¿øÀ'¿ô˜<>! @$@S•—Ð#Ø@S”—Ð"cØÐ  H˜” @S<>º€¢?ÿ€ã€É™Ô¢DÔ'¿ü€Ú™ÖâDÖ'¿ø€Õ™ø"DÚO€<4F>
€P€=—Þã°žà!—Þ$#°#—âc´¢`%—â$£´'—æ㼦à)—æ%#¼+—êc¸ª`-—ê%£¸€5/—îã°®à1—î&#°€.3—òc´²`5—ò&£´€'7—öã¼¶à—ö"#¼—Òc¸`—Ò"£¸Ö Àÿÿ‰<01> @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Ì€(-—죌¬ /—ì%㌀!ð ÿÿ<01> @Rµ<01><1D>" C€¢ ;¿ÿôS”¢À“2 ²@ ²@ ³.`@
`™*`Ö
€¢À¿ÿç˜
Ð <04>¿ÿØ¿ü€<C3BC>  Ú¿üÞK@€<>à¿üâL€¤`/€A˜<>"D$@Rš¸€¢ 
ä U`ˆ˜<>!@R<01> @Ryæ¿ü€<C3BC>è¿üêM€<4D>пü@R<08>@R~<01><1B> @R}Ð'¿hпhU`´”Ö¿ü@Rxì¿hì'¿ü
<01>@Rk<01> @RkÐ'¿üпü’@Rlî¿ø€<C3B8>ð¿øòN€<4E>€@пü@RW<01> @RWÐ'¿øÐ¿øÒ¿ü@RXпøU`¼@RV¿lпø@RU<>ô¿€7<<3C>(€¢ пø’ @ íÐ'¿øÐ¿ø’ /@RE¸ÔO€<4F>
 <01>U`Ä@R><>À/˜<>!U`ÌÔ¿ø@R€0Ö¿øØJÀ€£ /€+˜<>"D$@R¸€¢ 
Ú @U˜<>!@Q÷<01> @Qîпø@R<08>@Qü<01><1B> @QûÐ'¿hпhUaÖ¿ø@QöÞ¿hÞ'¿øÐ¿øÒ¿ü@Qÿ<>à¿ô  à'¿ôпü@Qá<01> @Qá#˜Ð$b8˜Ð"8Ò¿ü@Qà˜Ð"8Ua@QÝпø@QÎ<01> @QÎ%™Ð$¢H™Ð"HÒ¿ø@QÍ™Ð"HUa @QʘÐ"8@Qº'™Ð$âL™Ð"H@Q´)˜Ð%"0+—êcÄ€<C384>-—죜€<C593>
—Ð#Ø@ ÿ—Ð#Ø@ b€%U<>!$@Q²U<>!0@Q®U<>!`Ò¿ü@Q©U<>!|Ò¿ø@Q¤/—î㜀<C593>
U<>!˜—Ò—Ô£Ø@Q—U<>!°@Q“1˜ð"<ò D€¦€R5˜ô¢<ö D€¦€€J˜Ð"<“* Ô € @Qhпø@Qd<01><1B> @QcÐ'¿h˜Öâ<™*àÚ @ Ua´Ð¿hÔ¿ø@QZ˜Þâ<¡+àâ @@QMпü@QI<01><1B> @QHÐ'¿d%˜ä¢<§, è Ua¼Ð¿dÔ¿ü@Q?пdÒ¿hÔ¿ô@пd@QLпh@QI+˜êb<ª`-˜ê%¢<¿ÿ´Ð¿üÒ¿øÔ¿ô@<01> @Q<01>Çà<08>è?ÿþ<62>ã€ð' Dò' Hô' LÀ'»@À'»<À'»8—Ð#”€<E2809D>˜<>!UaÄÔ H@P÷—ÒcŒ€¢`
˜<>!UaàÔ  H@PêU<>!ø@PõºÐ D@Pñ<01><1D> @PðÐ'¿ðпðU D@Pì—Ô£Œ€<C592>
˜<>!UbÔ¿ð@PË¿Pпð@Pô<>€¦»Dпð”$@Pï<>€žU<>"@PǺРH@PÃ<01><1D> @PÂÐ'¿HпHUb Ô H@P¾U<>"(@P´ºÐ H@P°<01><1D> @P¯Ð'¿DпDUb0Ô H@P«Ð¿H @
VÐ'¿H—Ö㌀<C592> ˜<>!Ub8Ô¿H@P…¿PпH@P®<>
»DпD”$@P©<>€S—Ø#¤€<C2A4> €N—Úc<><EFBFBD>
 Ô¿ð™ÞâL”UbL˜<>!@Pb!—à#Ä€<C384> пð@ ¸Ð¿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€<4C>€`¿Pпð@P4<>€Rö¿d9<ºÀ(€§@пð’ @ ÌÐ'¿ð€BÒ¿d<
@
 €¢À €9пðUb @P/Ð'¿ü€<C3BC>€.˜<>"D¿ü@P(˜<>"D@Oú˜šbCÀ*
пð@P˜<>"D@Oð<01> @OðÐ'¿ðпð˜bD@Oð—Þ㌀<C592>˜<>!Ub¤Ô¿ð@OÌпü@P à¿L $ à'¿L¿ÿ â¿L€<4C>%—ä£<><EFBFBD>˜<>!UbÀÔ¿ð@O¬À'»8пð@Oç<> '˜æâ@€¤àпð@O߀¬U<>"Ø@OÜÐ'¿Ü€<C39C>€¤Ð¿Ü@OØÐ'¿Ø€<C398>€šÐ¿Ø<C2BF>
@O—€¢ ¿ÿòпØ<C2BF>
@OŽè¿Ø<C2BF><08> UbÜ@Oœ<>¿ÿâ˜<>"DÒ¿ð@O†˜<>"DUbà@OƒÒ¿Ø’`
˜<>"D@O}пØ<C2BF>
¿P@OŠ<>˜<>"D@O˜¿ÿÃê»8€<38> <01>!,@O_ì»,Ð%¡(î»,ðá(ð'»,<01>!,@OUÐ'»8ò»8ò'»,ô»,À&¡(ö»,À&à ˜<>"D@OG<01> @OGø»,Ð'ú»,Ð@˜bD@OEпØ<C2BF>
@O8Ò¿Ø”`
À*ÿþпØ<C2BF>
@O0<01> @O0Ø»,Ð# Ú»,Ð`Ò¿Ø’`
@O.пØ<C2BF>
@O!Þ»,Ð#àà»,¢ ¤¿Pè „è$`„è €è$`€¬ €¬% èè$@¬% èè$@¬% èè$@¬¥ è¿ÿõè$@î»,° ð%à˜ò»,À&a$¿ÿcпÜ@O<À'»@РD@O,<> 5˜ô¢@€¦ Ð D@O$€ÍU<>"ä@O!Ð'¿Ü€<C39C>€ÅпÜ@OÐ'¿Ø€<C398>€»ö¿ØøNà
€§ . пØ<C2BF>
Ubè@Nê<>¿ÿë˜<>"DÒ D@NÔ˜<>"DUbì@NÑÒ¿Ø’`
˜<>"D@NËпØ<C2BF>
¿P@NØ<>Ò¿Ø’`
U<>"ð@NÆ<>˜<>"D@NÝ¿ÿÃú»@€<> <01>!,@N¤Ò»4Ð"a(Ô»4Ö¡(Ö'»4<01>!,@NšÐ'»@Ø»@Ø'»4Ú»4À#a(Þ»4À#à ˜<>"D@NŒ<01> @NŒà»4Ð$â»4Ð@˜bD@NŠÐ¿Ø<C2BF>
@N}<01> @N}ä»4Ð$ æ»4ÐàÒ¿Ø’`
@N{пØ<C2BF>
@Nnè»4Ð% ê»4¬`®¿Pðà„ð% „ðà€ð% €´ €´& ðÀð%€´& ðÀð%€´& ðÀð%€´¦ ðÀ¿ÿõð%€ö»4¸ ø&à˜ú¿d<@€¢@
€$пØ<C2BF>
¿P@NW<>Ö»4˜àœš¿Pà`„à# „à`€à# €¤ €¤$ à@à#¤$ à@à#¤$ à@à#¤¤ à@¿ÿõà#æ»4¨ è$á$ê»4À%a$¿ÿBпÜ@N`À'»<ì L€<4C>€ÍРH@NL<> /˜îâ@€¥àРH@ND€½U<>"ô@NAÐ'¿Ü€<C39C>€µÐ¿Ü@N=Ð'¿Ø€<C398>€«ð¿ØòN
€¦`. пØ<C2BF>
Ubø@N
<>¿ÿë˜<>"DÒ H@Mô˜<>"DUbü@MñÒ¿Ø’`
˜<>"D@MëпØ<C2BF>
¿P@Mé<>˜<>"D@N¿ÿÌô»<€<> <01>!,@MÍö»0Ð&á(ø»0ú!(ú'»0<01>!,@MÃÐ'»<л<Ð'»0Ò»0À"a(Ô»0À"  ˜<>"D@Mµ<01> @MµÖ»0Ð"ÀØ»0ИbD@M³Ð¿Ø<C2BF>
@M¦<01> @M¦Ú»0Ð#`Þ»0ÐàÒ¿Ø’`
@M¤Ð¿Ø<C2BF>
@M—à»0Ð$ â»0¤`œ¦¿Pèà„è$ „èà€è$ €¬ €¬% èÀè$€¬% èÀè$€¬% èÀè$€¬¥ èÀ¿ÿõè$€î»0° ð%á$ò¿d5<¶@9(€¦ÀпØ<C2BF>
¿P@M<>ú»0<C2BB>`¿PÔ`„Ô" „Ô`€Ô" €˜ €˜# Ô@ Ô" ˜# Ô@ Ô" ˜# Ô@ Ô" ˜£ Ô@ ¿ÿõÔ" Ú»0ž Þ#`˜¿ÿRпÜ@M<>!—à#Œ€<C592>˜<>!U D@M9â»@â'»4ä»4€<34>ó'—æ㌀¤à è»4Ô ê»4Ö@Uc(˜<>!@M$À'»(ì»4î ð»4ò ´@¶& ö'¿Hø»4ú €§`€<пHUcL@M6<>л(<28> Ð'»(—Òc´<C2B4> —Ô£Œ€¢ ˜<>!UcP@LüµÐ¿HUcd@M<>Ö»(àÖ'»(—Ø#°€<C2B0> —ÚcŒ€£`˜<>!Uch@Lߘ—Ð#Ü@LèÞ»4Ðà—ÒcÜ@M<>à»(  à'»(#—âc¸<C2B8>%—䣌€¤ ˜<>!Uc|@L¼uæ»4ÐàUc˜@LØ<>)—è#Œ€¥ ˜<>!Ucœ@L¦_+—êcЀ<C390>ì»4РUc´@L½<>/—î㌀¥à˜<>!Uc¼@LD1—ð#¼€<C2BC>€"ò»4ô`˜<CB9C>ö»4øà$;<<3C> €¢ Ô»4Ö $˜
àI€£ I—ÚcŒ€£`˜<>!UcÔ@LfÞ»<Þ'»0à»0€<30>â»0ä`æ»4èà€¥ê»4Ð`ì»0Ò @Lu<>î»0ðà ° ð%à ò»0ôa(ô'»0¿ÿã7—ö㌀¦àø»0€<30>ú»0Ô`л0ÖU˜<>!@L0˜<>!V`@L(Ò»4Ô`˜<CB9C>
€8Ö»4Øà$
!€£À€0#—âcÈ€<C388>ä»4æ¡$€<>
è»4ê °-<®
@1(€¥À3—òcŒ€¦`˜<>!V`,@Kþô»4Ѐһ0€<30> ö»0ÒÀø»4ÒÔ Lÿúå¨ú»8ú'»,л,€<>Ò»,Ô`Ö»4Øà€£
Ú»4Ð`Þ»,Òà@Kþ<>à»,â ¢`â$ ä»,æ¡(æ'»,¿ÿã)—è#Œ€¥ ê»,€<>ì»,Ô î»,ÖÀV`<˜<>!@K¹˜<>!V`d@K±ð»,€<>€/ò»0€<30>€+ô»4ö €¦àø»4ú л4Ð <04><1D>" V`t@K¾<>Ò»(`Ò'»(—Ô£”€<E2809D>
Ö»(€<> 
Ø»4Ô™ÚbL”
V`|˜<>!@K€Þ»,€<>à»,â ˜<CB9C>ä»0€<30>æ»,èàPê»0ì`P€¥€ /—îã <C2A0>Qð»0€<30>M3—òcŒ€¦`˜<>!V`˜@KXô»0€<30>1ö»0øàPú»4Ð`P€¢*—ÒcŒ€¢`˜<>!V`´@KBÔ»4Ö $€Šà’—Ø#<23><EFBFBD> 
Ú»4Ô@™ÞâL”V˜<>!@K-æ!—à#<23><EFBFBD>
â»4Ô@%™ä¢L”V˜<>!@K'—æãÌ€<C38C>è»0ê!$€<>ì»0î °1<²
À5(€¦@ ö»0ÐÀ’ @ÈÐ'¿ì¸ ø'¿äú»0Ð@Ð'¿ìÒ»0Ô@Ô'¿ì—Ö㜀<C593> €>—Ø#Ä€<C384> Ú»4Ô@—Ò<63> Ö¿ì—Ø#Ø@Û€-пì™ÒbH˜Ô¢0@K
<>Þ»4ÔÀ!™à"L”—ÒV<>!Ö¿ì—Ø#Ø@Jðâ»4Ô@%™ä¢L”Ö¿ì'˜æâ0ÀV<>! —Ò—Ø#Ø@JÝ)—è#Ä€<C384>ê»4Ð@@ -—죬€<C2AC>î»4ÒÀпì@Šð»4Òпì@€Mпì™ÒbH˜Ô¢0@JÆ<>€"ò»4Ò@5™ô¢L@V<>!@@J®ö»4ÖÀ9™ø"LÀ—Òc¬€<C2AC> ˜` ˜`(V<>!PÔ¿ì@J™€#ú»4Ò@™Ð"L@V<>!`@JŽÔ¿ì˜Òb0”€ Ö»4ÖÀ™Ø"LÀ —Òc¬€<C2AC> ˜`,˜`4V<>!p@Jv—Úc¬€<C2AC>
—ÞãÄ€<C384> à»0Ò $
oma$â»4Ð@@ä»0Ò $
oma$æ»4ÔÀ)™è"L”V<>!ˆ@JUê¿ä€<C3A4>пì@JQ
-—죌€¥ ˜<>!Va @J€Ó/—î㌀¥à˜<>!VaÀ@J
ð»,€<>€¹ò»,ô`Pö»4øàP€§€²;—úcŒ€§`˜<>!VaÜ@I÷л4Ò $€Š`—Ô£<><EFBFBD>

Ö»4ÔÀ™Ø"L” V˜<>!@I‛—Úc<><EFBFBD>

Þ»4ÔÀ!™à"L”Vb˜<>!@IÐ#—âcÄ€<C384>ä»,Ô æ»4ÖÀпð—Ò—Ø#Ø@¸)—è#¨€<C2A8>ê»4Ò¿ð@œ€bпðÒ H˜Ô¢0@Iá<>ì¿ð/˜îâ0ðM€€¦ /€(3—òcœ€<C593>ô»,Ö ö»4ØÀ9™ø"L˜Ò¿ð—Ô£ÔV<>"0—ÚcØ@I¶;—úc¨€<C2A8> л4Ô™ÒbL”€ Ò¿ðV<>"X@I§€,—Ô£œ€<C593>
Ö»,ÖàÒ¿ð˜Ø"0@ Ú»4Ø@™ÞâL˜—Ô£ÔV<>"t—ÚcØ@I<>!—à#¨€<C2A8>Ò¿ð#˜âb0@ä»4Ô€'™æâL”V<>" @I{
)—è#Œ€¥ ˜<>!VbÀ@IGê»4ìa(ì'»4¿ü
/—î㌀<C592>˜<>!VbàÔ H@I6ð»<ð'»0ò»0€<30>"ô»0ö  <>ø»0Ð Vc@IG<> ;—úcЀ<C390>л0Ð Vc@I7<>—ÒcŒ€¢`˜<>!Vc@IðÔ»8Ô'»,Ö»,€<> Ø»,Ú Þ»0àà€¤

â»0Ð`ä»,Ò @I<>æ»,èá(è'»,¿ÿçê»,€<>-—죠<C2A0> î»,ðàPò»0ô`P€¦€Áö»,øà ¸ ø&à ú»0Ð`Ò»0Ô`˜Ø'¿HÚ»0Þ`€£à€&пHVc(@Hã<> à»(  à'»(#—âc´<C2B4>ŸÐ¿HVc,@HÑ<> ä»(¤ ä'»('—æã°€<C2B0><01>)—è#¸<C2B8>—Ð#Ü@H¦ê»0Ð`—ÒcÜ@HÃ<>xРD@H—ì»0î <08><17> @H”Ð'¿èпèÒ D@H•пèVc0@H“ð»0Ò Ð¿è@HŽò»0ô`$7<¸;€§€®Ð L€<4C>€¨—Òc˜<CB9C> €”—Ô£<><EFBFBD>
 Ô¿è™ÖâL” Vc4˜<>!@HS—Ø#È€<C388> €OÚ»0Þa$€<>€Jà»0â °%<¦ @)(€¤À€B+—êcÌ€<C38C>
ì»0Ѐ’ @ûÐ'¿ìî»0ðÀð'¿ì3—òcÄ€<C384>пìÒ¿è@€"пìÒ H˜Ô¢0@HS<>
Ô¿è5™ô¢L”Ò¿ìV<>#L@H;Ò¿ì7˜öâ0@Ô¿è9™ø"L”V<>#`@H-пì@H-€1;—úcÄ€<C384>пè@cпè@пè’!í@ÇÒ¿è™Ð"L@V<>#x@HÒ¿è™Ô¢L@
V<>#ˆ@HÒ¿è™ÖâL@ V<>#˜@GÿØ»0ÒпèÔ LÿöÈ—Úc<><EFBFBD>
 Ô¿è™ÞâL”V˜<>!@GÁ€©!—à#Ì€<C38C>â»0äa$€<>æ»0èà°+<¬
/(€¥€ ð»0Ð @lÐ'¿ì² ò'¿äô»0ö€ö'¿ìÀ'¿äø»0úú'¿ìÀ'¿ä—Ð#<23><EFBFBD> Ô¿è™ÒbL”V˜<>!@GŠ—Ô£Ä€<C384>
—Ö㬀<C2AC> пìÒ¿è@cпìÒ¿è@ë€8пìÒ H˜Ô¢0@G¡<>Ö¿è™Ø"LÀ —Òc¬€<C2AC> ˜`8˜`@V<>#ØÔ¿ì@G~Ô¿ì˜Úb0”
Ö¿è™ÞâLÀ—Òc¬€<C2AC> ˜`D˜`LV<>#è@Ge!—à#¬€<C2AC>#—âcÄ€<C384> ä»0Ò $
oma$пè@æ»0Òà$
oma$Ô¿è)™è"L”V<>#ü@GFê¿ä€<C3A4>пì@GBпè@G?ì»0î¡(î'»0¿ýÞ1—ð#Œ€<C592>˜<>!W`Ô¿ð@Gò»8ò'»,ô»,€<>€yö»,øà <>€mРD@Gú»,Ò`<08> <09> @GÐ'¿èпèÒ D@GпèW`0@FÿÔ»,Ҡпè@Fú—Öã<><EFBFBD>  Ô¿è™Ø"L” W`4˜<>!@FЗÚcÄ€<C384>

—Þ㨀<C2A8>пðÒ¿è@¨€3пðÒ H˜Ô¢0@Fí<>à¿ð#˜âb0äL€¤ /'—æ㨀<C2A8> Ô¿è)™è"L”Ò¿ðW<> H@FÉ+—êc¨€<C2A8>Ò¿ð-˜ì¢0@Ô¿è/™îâL”W<> `@F¶Ð¿è@F¶ð»,ò!(ò'»,¿ÿ‡ô»@€<>ö»@ö'»4ø»4ú!(ú'»@л4Ð@F¤Ò»4Ð`@F Ð»4@F<>¿ÿìÔ»<€<>
Ö»<Ö'»0Ø»0Ú!(Ú'»<Þ»0ÐÀ@FŽà»0Ð @FŠÐ»0@F‡¿ÿìâ»8€<38>ä»8ä'»,æ»,èá(è'»8ê»,Ð@@Fxì»,Р@Ftл,@Fq¿ÿìпð@Fl<01>Çà<08>è?ÿÿc<E2809A><63>ã€ð' Dò'  DÐ'¿ð—ÒcŒ€<C592> 
˜<>!W`xÔ¿ð@F+˜<>!@FuÀ'¿øÔ¿ø€¢ 
€eпð˜bD”$@FLÐ'¿ü€<C3BC>€YÖ¿ü˜˜"DÀ*À ˜ÚKbD€£`/€2пð’ /@F*Ð'¿ô€<C3B4>Þ¿ôÀ+À˜<>"D@FºÐ¿ð@F
<01><1D> @F Ð'¿ôпôW`ŒÔ¿ð˜âD@F˜<>"D@E÷<01> @E÷Ð'¿ôпô˜bD@E÷˜<>"D@Eè<01> @EèÐ'¿ôпô˜bD@Eèà H  à' H¢$ <>пð@Eðä¿ôä'¿ðæ¿ø¦àæ'¿ø¿ÿ›è H€<48>пð@EÇ<01> @EÇÐ'¿ôпôÒ¿ð@EÈê¿ôê'¿ð-—죌€<C592>
˜<>!W`”Ô¿ð@E¢˜<>!@Eìпð°<08>Çà<08>è?ÿÿc<08>ã€ð' D¿tРD@E®€¢?ÿ€\пˆ<”
€¢€ €RРD@EÈÐ'¿pØ¿p€<70> €Hпp@EÃÐ'¿l€<6C>€;пl<C2BF>
W`˜@E•<>€0пl<C2BF>
W`œ@EŒ<>€'пl<C2BF>
@EpºÐ D@El<01><1D> @EkÐ'¿üÚ¿ü€<C3BC>
пüÒ D@EhпüW` @EfÒ¿l`
пü@Eaпüÿÿ­Ð¿ü@Ej¿ÿÂпp@E†Ð D@E‰Ð D@E‡<01>Çà<08>è?ÿÿc <63>ã€ð'  D @E€€¢?ÿ ˜Ð"@€¢ РD!ÿ@Ew<01>Çà<08>è?ÿÿc <63>ã€ð' Dò'   H@Eo€¢?ÿРH@EN<01>Çà<08>è?ÿÿc<E2809A><63>ã€ð' Dò' Hô' Lö' Pø' T@E`Ð'¿üпü€¢?ÿW<> ¤@E9€QÒ¿ü€<C3BC> €?Ô D€<44>
РD@E)€¢?ÿW<> ´@E%€,РT! ”!ÿ@E?Ð'¿ôÖ¿ô€¢ÿÿРT@E<01> @D˘<>!@E3пô@E2˜<>!@E+пô@E*Р   P˜ @E&РH@Dù<01> @D®<01> @E Ð'¿øØ¿ü€¢ Ú¿ø€£ÿ¿ÿô<01>Çà<08>è?ÿÿc<18>ã€ð' D¿xРD@Dº€¢?ÿ пŒ<”
€¢€ РD@Dã<01>Çà<08>è?ÿþc<E2809A><63>ã€ð' Dò'  D @DçÐ'¿ôпô€¢?ÿРD@D¾€MРH!!ÿ@DØÐ'¿ðÒ¿ð€¢ÿ
РH@D¯Ð¿ô@DÜ€;»ðпô”$@DØÐ'¿ü€<C3BC>»ðпðÔ¿ü@DÒÐ'¿ø€<C3B8> Ô¿øÖ¿ü–"À
Ö'¿ü€<C3BC> ¿ÿðØ¿ø€£?ÿ¿ÿßÚ¿ü€£ÿРD@D€Þ¿ø€£ÿÿРH@Dwпô@D¤Ð¿ð@D¡<01>Çà<08>è?ÿÿc <63>ã€ð' Dò'   H@DŸ€¢?ÿРD@D`<01>Çà<08>è?ÿÿc˜<63>ã€ð' Dò' H@DuÐ'¿üпü€¢?ÿW<> ¼@DN€1Ò¿ü€<C3BC> РD@DB€¢?ÿW<> Ì@D>˜<> P˜`T˜”  H˜ @D\W<> Ô@D.<01> @Cã<01> @DUÐ'¿øÔ¿ü€¢
Ö¿ø€¢ÿÿ¿ÿô<01>Çà<08>è?ÿÿc <63>ã€ð'  D!ÿ@DO€¢?ÿРD@D
<01>Çà<08>è?ÿÿc˜<63>ã€ð' Dò'  H@DBÐ'¿üпü€<C3BC> ˜<>!W`ìÔ H@CµÒ¿üÔ`?ÿРD@D1<01>Çà<08>è<EFBFBD>ã¿ <C2BF>Çà<08>è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

View File

@@ -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 Œ È 
O´  _h
`P`T@^Ô8" ]Ì@^8" #Ì
T(b 2_H"7]<5D>`>@!CfHÿñH]´èODX˜[_X8"a^ÈD"fxmb$v^°8"|Œ@]x\"‰^€T<12>^ì˜"•^h"<22>]ð\¢^P°©ÿñ°]$<24>·^¼8"¿^Dx"Å]üD"Êb$!ÒÿñÙ]`8"à]<æ^¤8"ì_8"ò^Œ8"øb(]0  +8^ |_(H"p%]ÀD"+b,2b08^à˜"?@F
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]<5D>]œS]¨E]´!]ÀA]Ø@]äW]ð-]ü3^^Z^ >^,G^8V^D2^P.^\^^h,^tU^€*^Œ:^˜R^¤8^°'^¼1^È$^àD^ì+^øL_J_9__(?_4Y_@Q_LO_X#<15>ã¿ <C2BF>Çà<08>è¼ à  D¥, ¤ ¤@'˜ä$â$œ# <><04>@S¸S<>"¤@S´ÿÿë<01>@@S­@S®?ÿÿc <63>ã€ð' D˜<>!Sc´Ô D@S¦<01> @S<><01>Çà<08>è?ÿÿc<E2809A>ã€ð' Dò' HÀ'¿üÀ'¿øÀ'¿ô˜<> ð’ @$@S•—Ð#Ì@S”—Ð"cÌР H—”£ø@S<>º€¢?ÿ€ã€É™Ô¢4Ô'¿ü€Ú™Öâ4Ö'¿ø€Õ™ø"4ÚO€<4F>
€P€=—Þ㤞à!—Þ$#¤#—âc¨¢`%—â$£¨'—æã°¦à)—æ%#°+—êc¬ª`-—ê%£¬€5/—î㤮à1—î&#¤€.3—òc¨²`5—ò&£¨€'7—öã°¶à—ö"#°—Ò`—Ò"£¬Ö Àÿÿ‰<01> @S/ÐO€¢ A¿ÿÀ¢ a¿ÿ×€¢ m¿ÿꀢ o¿ÿÚ€¢ x¿ÿß¿ÿë¸ ¿ÿ°€—Úc˜š`—Ú#㘀x!—à#”  #—à$c”€q%—䣜¤ '—ä$㜀j¨ +—è%c¼€e¬ /—ì%ãÄ€`° 3—ð&c¸€[5—ô£ ´ 7—ô&ã €T—Ð<> —Ð"cŒ€M—Ô£„” —Ô"ã„€F—Ø#ˆ˜ —Ø#cˆ€?—Þã<>žà!—Þ$#<23>€8#™âb4%—â$£È€2'™æâ4)—æ%#Ì€,+—À%cÀ€(-—죀¬ /—ì% !ð ÿÿ<01> @Rµ<01><1D>" C€¢ ;¿ÿôS”¢´“2 ²@ ²@ ³.`@
`™*`Ö
€¢À¿ÿç˜
Ð <04>¿ÿØ¿ü€<C3BC>  Ú¿üÞK@€<>à¿üâL€¤`/€A˜<>"4$@Rš¸€¢ 
ä U`|˜<>!@R<01> @Ryæ¿ü€<C3BC>è¿üêM€<4D>пü@R<08>@R~<01><1B> @R}Ð'¿hпhU`¨”Ö¿ü@Rxì¿hì'¿ü
<01>@Rk<01> @RkÐ'¿üпü’@Rlî¿ø€<C3B8>ð¿øòN€<4E>€@пü@RW<01> @RWÐ'¿øÐ¿øÒ¿ü@RXпøU`°@RV¿lпø@RU<>ô¿€7<<3C>(€¢ пø’ @ íÐ'¿øÐ¿ø’ /@RE¸ÔO€<4F>
 <01>U`¸@R><>À/˜<>!U`ÀÔ¿ø@R€0Ö¿øØJÀ€£ /€+˜<>"4$@R¸€¢ 
Ú @U˜<>!@Q÷<01> @Qîпø@R<08>@Qü<01><1B> @QûÐ'¿hпhUaÖ¿ø@QöÞ¿hÞ'¿øÐ¿øÒ¿ü@Qÿ<>à¿ô  à'¿ôпü@Qá<01> @Qá#˜Ð$b(˜Ð"(Ò¿ü@Qà˜Ð"(Ua@QÝпø@QÎ<01> @QÎ%™Ð$¢8™Ð"8Ò¿ø@QÍ™Ð"8Ua@QʘÐ"(@Qº'™Ð$â<™Ð"8@Q´)˜Ð%" +—êc¸<C2B8>-—ì£<><EFBFBD>
—Ð#Ì@ ÿ—Ð#Ì@ b€%U<>!@Q²U<>!$@Q®U<>!TÒ¿ü@Q©U<>!pÒ¿ø@Q¤/—îã<><EFBFBD>
U<>—Ò—Ô£Ì@Q—U<>!¤@Q“1˜ð",ò D€¦€R5˜ô¢,ö D€¦€€J˜Ð",“* Ô € @Qhпø@Qd<01><1B> @QcÐ'¿h˜Öâ,™*àÚ @ Ua¨Ð¿hÔ¿ø@QZ˜Þâ,¡+àâ @@QMпü@QI<01><1B> @QHÐ'¿d%˜ä¢,§, è Ua°Ð¿dÔ¿ü@Q?пdÒ¿hÔ¿ô@пd@QLпh@QI+˜êb,ª`-˜ê%¢,¿ÿ´Ð¿üÒ¿øÔ¿ô@<01> @Q<01>Çà<08>è?ÿþ<62>ã€ð' Dò' Hô' LÀ'»@À'»<À'»8—Ð#ˆ<CB86>˜<>!Ua¸Ô H@P÷—Òc€€¢`
˜<>!UaÔÔ  H@PêU<>!ì@PõºÐ D@Pñ<01><1D> @PðÐ'¿ðпðUaôÔ D@Pì—Ô£€€<E282AC>
˜<>!UaüÔ¿ð@PË¿Pпð@Pô<>€¦»Dпð”$@Pï<>€žU<>" @PǺРH@PÃ<01><1D> @PÂÐ'¿HпHUbÔ H@P¾U<>"@P´ºÐ H@P°<01><1D> @P¯Ð'¿DпDUb$Ô H@P«Ð¿H @
VÐ'¿H—Ö <E282AC> ˜<>!Ub,Ô¿H@P…¿PпH@P®<>
»DпD”$@P©<>€S—Ø#˜<CB9C> €N—Úc„€<E2809E>
 Ô¿ð™Þâ<”Ub@˜<>!@Pb!—à#¸<C2B8> пð@ ¸Ð¿HÒ¿ð@ =€1Ò¿ð#™âb<@U<>"X@PsпHÒ H˜Ô¢ @Py<>ä¿H'˜æâ èL€€¥ /
Ô¿ð+™êb<”Ò¿HU<>"h@PZÒ¿H-˜ì¢ @Ô¿ð/™îâ<”U<>"|@PLпð@PLð¿Hð'¿ð²
ò'¿Lô¿L€<4C>€`¿Pпð@P4<>€Rö¿d9<ºÀ(€§@пð’ @ ÌÐ'¿ð€BÒ¿d<
@
 €¢À €9пðUb”@P/Ð'¿ü€<C3BC>€.˜<>"4¿ü@P(˜<>"4@Oú˜šb3À*
пð@P˜<>"4@Oð<01> @OðÐ'¿ðпð˜b4@Oð—Þ <E282AC>˜<>!Ub˜Ô¿ð@OÌпü@P à¿L $ à'¿L¿ÿ â¿L€<4C>%—䣄€<E2809E>˜<>!Ub´Ô¿ð@O¬À'»8пð@Oç<> '˜æâ0€¤àпð@O߀¬U<>"Ì@OÜÐ'¿Ü€<C39C>€¤Ð¿Ü@OØÐ'¿Ø€<C398>€šÐ¿Ø<C2BF>
@O—€¢ ¿ÿòпØ<C2BF>
@OŽè¿Ø<C2BF><08> UbÐ@Oœ<>¿ÿâ˜<>"4Ò¿ð@O†˜<>"4UbÔ@OƒÒ¿Ø’`
˜<>"4@O}пØ<C2BF>
¿P@OŠ<>˜<>"4@O˜¿ÿÃê»8€<38> <01>!,@O_ì»,Ð%¡(î»,ðá(ð'»,<01>!,@OUÐ'»8ò»8ò'»,ô»,À&¡(ö»,À&à ˜<>"4@OG<01> @OGø»,Ð'ú»,Ð@˜b4@OEпØ<C2BF>
@O8Ò¿Ø”`
À*ÿþпØ<C2BF>
@O0<01> @O0Ø»,Ð# Ú»,Ð`Ò¿Ø’`
@O.пØ<C2BF>
@O!Þ»,Ð#àà»,¢ ¤¿Pè „è$`„è €è$`€¬ €¬% èè$@¬% èè$@¬% èè$@¬¥ è¿ÿõè$@î»,° ð%à˜ò»,À&a$¿ÿcпÜ@O<À'»@РD@O,<> 5˜ô¢0€¦ Ð D@O$€ÍU<>"Ø@O!Ð'¿Ü€<C39C>€ÅпÜ@OÐ'¿Ø€<C398>€»ö¿ØøNà
€§ . пØ<C2BF>
UbÜ@Nê<>¿ÿë˜<>"4Ò D@NÔ˜<>"4Ubà@NÑÒ¿Ø’`
˜<>"4@NËпØ<C2BF>
¿P@NØ<>Ò¿Ø’`
U<>"ä@NÆ<>˜<>"4@NÝ¿ÿÃú»@€<> <01>!,@N¤Ò»4Ð"a(Ô»4Ö¡(Ö'»4<01>!,@NšÐ'»@Ø»@Ø'»4Ú»4À#a(Þ»4À#à ˜<>"4@NŒ<01> @NŒà»4Ð$â»4Ð@˜b4@NŠÐ¿Ø<C2BF>
@N}<01> @N}ä»4Ð$ æ»4ÐàÒ¿Ø’`
@N{пØ<C2BF>
@Nnè»4Ð% ê»4¬`®¿Pðà„ð% „ðà€ð% €´ €´& ðÀð%€´& ðÀð%€´& ðÀð%€´¦ ðÀ¿ÿõð%€ö»4¸ ø&à˜ú¿d<@€¢@
€$пØ<C2BF>
¿P@NW<>Ö»4˜àœš¿Pà`„à# „à`€à# €¤ €¤$ à@à#¤$ à@à#¤$ à@à#¤¤ à@¿ÿõà#æ»4¨ è$á$ê»4À%a$¿ÿBпÜ@N`À'»<ì L€<4C>€ÍРH@NL<> /˜îâ0€¥àРH@ND€½U<>"è@NAÐ'¿Ü€<C39C>€µÐ¿Ü@N=Ð'¿Ø€<C398>€«ð¿ØòN
€¦`. пØ<C2BF>
Ubì@N
<>¿ÿë˜<>"4Ò H@Mô˜<>"4Ubð@MñÒ¿Ø’`
˜<>"4@MëпØ<C2BF>
¿P@Mé<>˜<>"4@N¿ÿÌô»<€<> <01>!,@MÍö»0Ð&á(ø»0ú!(ú'»0<01>!,@MÃÐ'»<л<Ð'»0Ò»0À"a(Ô»0À"  ˜<>"4@Mµ<01> @MµÖ»0Ð"ÀØ»0Иb4@M³Ð¿Ø<C2BF>
@M¦<01> @M¦Ú»0Ð#`Þ»0ÐàÒ¿Ø’`
@M¤Ð¿Ø<C2BF>
@M—à»0Ð$ â»0¤`œ¦¿Pèà„è$ „èà€è$ €¬ €¬% èÀè$€¬% èÀè$€¬% èÀè$€¬¥ èÀ¿ÿõè$€î»0° ð%á$ò¿d5<¶@9(€¦ÀпØ<C2BF>
¿P@M<>ú»0<C2BB>`¿PÔ`„Ô" „Ô`€Ô" €˜ €˜# Ô@ Ô" ˜# Ô@ Ô" ˜# Ô@ Ô" ˜£ Ô@ ¿ÿõÔ" Ú»0ž Þ#`˜¿ÿRпÜ@M<>!—à#€€<E282AC>˜<>!UbôÔ D@M9â»@â'»4ä»4€<34>ó'—æ ¤à è»4Ô ê»4Ö@Uc˜<>!@M$À'»(ì»4î ð»4ò ´@¶& ö'¿Hø»4ú €§`€<пHUc@@M6<>л(<28> Ð'»(—Òc¨€<C2A8> —Ô£€€¢ ˜<>!UcD@LüµÐ¿HUcX@M<>Ö»(àÖ'»(—Ø#¤€<C2A4> —Úc€€£`˜<>!Uc\@Lߘ—Ð#Ð@LèÞ»4Ðà—ÒcÐ@M<>à»(  à'»(#—âc¬€<C2AC>%—䣀€¤ ˜<>!Ucp@L¼uæ»4ÐàUcŒ@LØ<>)—è#€€¥ ˜<>!Uc<>@L¦_+—êcÄ€<C384>ì»4РUc¨@L½<>/—î ¥à˜<>!Uc°@LD1—ð#°€<C2B0>€"ò»4ô`˜<CB9C>ö»4øà$;<<3C> €¢ Ô»4Ö $˜
àI€£ I—Úc€€£`˜<>!UcÈ@LfÞ»<Þ'»0à»0€<30>â»0ä`æ»4èà€¥ê»4Ð`ì»0Ò @Lu<>î»0ðà ° ð%à ò»0ôa(ô'»0¿ÿã7—ö ¦àø»0€<30>ú»0Ô`л0ÖU˜<>!@L0˜<>!V` @L(Ò»4Ô`˜<CB9C>
€8Ö»4Øà$
!€£À€0#—âc¼€<C2BC>ä»4æ¡$€<>
è»4ê °-<®
@1(€¥À3—òc€€¦`˜<>!V` @Kþô»4Ѐһ0€<30> ö»0ÒÀø»4ÒÔ Lÿúå¨ú»8ú'»,л,€<>Ò»,Ô`Ö»4Øà€£
Ú»4Ð`Þ»,Òà@Kþ<>à»,â ¢`â$ ä»,æ¡(æ'»,¿ÿã)—è#€€¥ ê»,€<>ì»,Ô î»,ÖÀV`0˜<>!@K¹˜<>!V`X@K±ð»,€<>€/ò»0€<30>€+ô»4ö €¦àø»4ú л4Ð <04><1D>" V`h@K¾<>Ò»(`Ò'»(—Ô£ˆ<CB86>
Ö»(€<> 
Ø»4Ô™Úb<”
V`p˜<>!@K€Þ»,€<>à»,â ˜<CB9C>ä»0€<30>æ»,èàPê»0ì`P€¥€ /—î㔀<E2809D>Qð»0€<30>M3—òc€€¦`˜<>!V`Œ@KXô»0€<30>1ö»0øàPú»4Ð`P€¢*—Òc€€¢`˜<>!V`¨@KBÔ»4Ö $€Šà’—Ø#„€<E2809E> 
Ú»4Ô@™Þâ<”V˜<>!@K-æ!—à#„€<E2809E>
â»4Ô@%™ä¢<”V˜<>!@K'—æãÀ€<C380>è»0ê!$€<>ì»0î °1<²
À5(€¦@ ö»0ÐÀ’ @ÈÐ'¿ì¸ ø'¿äú»0Ð@Ð'¿ìÒ»0Ô@Ô'¿ì—Öã<><EFBFBD> €>—Ø#¸<C2B8> Ú»4Ô@—Ò<63> Ö¿ì—Ø#Ì@Û€-пì™Òb8˜Ô¢ @K
<>Þ»4ÔÀ!™à"<”—ÒV<> øÖ¿ì—Ø#Ì@Jðâ»4Ô@%™ä¢<”Ö¿ì'˜æâ ÀV<>!—Ò—Ø#Ì@JÝ)—è#¸<C2B8>ê»4Ð@@ -—죠<C2A0>î»4ÒÀпì@Šð»4Òпì@€Mпì™Òb8˜Ô¢ @JÆ<>€"ò»4Ò@5™ô¢<@V<>!4@J®ö»4ÖÀ9™ø"<À—Òc <C2A0> ˜`˜`V<>!DÔ¿ì@J™€#ú»4Ò@™Ð"<@V<>!T@JŽÔ¿ì˜Òb ”€ Ö»4ÖÀ™Ø"<À —Òc <C2A0> ˜` ˜`(V<>!d@Jv—Úc <C2A0>
—Þã¸<C2B8> à»0Ò $
oma$â»4Ð@@ä»0Ò $
oma$æ»4ÔÀ)™è"<”V<>!|@JUê¿ä€<C3A4>пì@JQ
-—죀€¥ ˜<>!Va”@J€Ó/—î ¥à˜<>!Va´@J
ð»,€<>€¹ò»,ô`Pö»4øàP€§€²;—úc€€§`˜<>!VaÐ@I÷л4Ò $€Š`—Ô£„€<E2809E>

Ö»4ÔÀ™Ø"<” V˜<>!@I‛—Úc„€<E2809E>

Þ»4ÔÀ!™à"<”Vb˜<>!@IÐ#—âc¸<C2B8>ä»,Ô æ»4ÖÀпð—Ò—Ø#Ì@¸)—è#œ€<C593>ê»4Ò¿ð@œ€bпðÒ H˜Ô¢ @Iá<>ì¿ð/˜îâ ðM€€¦ /€(3—òc<><EFBFBD>ô»,Ö ö»4ØÀ9™ø"<˜Ò¿ð—Ô£ÈV<>"$—ÚcÌ@I¶;—úcœ€<C593> л4Ô™Òb<”€ Ò¿ðV<>"L@I§€,—Ô£<><EFBFBD>
Ö»,ÖàÒ¿ð˜Ø" @ Ú»4Ø@™Þâ<˜—Ô£ÈV<>"h—ÚcÌ@I<>!—à#œ€<C593>Ò¿ð#˜âb @ä»4Ô€'™æâ<”V<>"”@I{
)—è#€€¥ ˜<>!Vb´@IGê»4ìa(ì'»4¿ü
/—î <E282AC>˜<>!VbÔÔ H@I6ð»<ð'»0ò»0€<30>"ô»0ö  <>ø»0Ð Vbø@IG<> ;—úcÄ€<C384>л0Ð Vbü@I7<>—Òc€€¢`˜<>!Vc@IðÔ»8Ô'»,Ö»,€<> Ø»,Ú Þ»0àà€¤

â»0Ð`ä»,Ò @I<>æ»,èá(è'»,¿ÿçê»,€<>-—죔€<E2809D> î»,ðàPò»0ô`P€¦€Áö»,øà ¸ ø&à ú»0Ð`Ò»0Ô`˜Ø'¿HÚ»0Þ`€£à€&пHVc@Hã<> à»(  à'»(#—âc¨€<C2A8>ŸÐ¿HVc @HÑ<> ä»(¤ ä'»('—æ㤀<C2A4><01>)—è#¬€<C2AC>—Ð#Ð@H¦ê»0Ð`—ÒcÐ@HÃ<>xРD@H—ì»0î <08><17> @H”Ð'¿èпèÒ D@H•пèVc$@H“ð»0Ò Ð¿è@HŽò»0ô`$7<¸;€§€®Ð L€<4C>€¨—ÒcŒ€<C592> €”—Ô£„€<E2809E>
 Ô¿è™Öâ<” Vc(˜<>!@HS—Ø#¼€<C2BC> €OÚ»0Þa$€<>€Jà»0â °%<¦ @)(€¤À€B+—êcÀ€<C380>
ì»0Ѐ’ @ûÐ'¿ìî»0ðÀð'¿ì3—òc¸<C2B8>пìÒ¿è@€"пìÒ H˜Ô¢ @HS<>
Ô¿è5™ô¢<”Ò¿ìV<>#@@H;Ò¿ì7˜öâ @Ô¿è9™ø"<”V<>#T@H-пì@H-€1;—úc¸<C2B8>пè@cпè@пè’!í@ÇÒ¿è™Ð"<@V<>#l@HÒ¿è™Ô¢<@
V<>#|@HÒ¿è™Öâ<@ V<>#Œ@GÿØ»0ÒпèÔ LÿöÈ—Úc„€<E2809E>
 Ô¿è™Þâ<”V˜<>!@GÁ€©!—à#À€<C380>â»0äa$€<>æ»0èà°+<¬
/(€¥€ ð»0Ð @lÐ'¿ì² ò'¿äô»0ö€ö'¿ìÀ'¿äø»0úú'¿ìÀ'¿ä—Ð#„€<E2809E> Ô¿è™Òb<”V˜<>!@GŠ—Ô£¸<C2B8>
—Öã <C2A0> пìÒ¿è@cпìÒ¿è@ë€8пìÒ H˜Ô¢ @G¡<>Ö¿è™Ø"<À —Òc <C2A0> ˜`,˜`4V<>#ÌÔ¿ì@G~Ô¿ì˜Úb ”
Ö¿è™Þâ<À—Òc <C2A0> ˜`8˜`@V<>#Ü@Ge!—à# <C2A0>#—âc¸<C2B8> ä»0Ò $
oma$пè@æ»0Òà$
oma$Ô¿è)™è"<”V<>#ð@GFê¿ä€<C3A4>пì@GBпè@G?ì»0î¡(î'»0¿ýÞ1—ð#€€<E282AC>˜<>!W`Ô¿ð@Gò»8ò'»,ô»,€<>€yö»,øà <>€mРD@Gú»,Ò`<08> <09> @GÐ'¿èпèÒ D@GпèW`$@FÿÔ»,Ҡпè@Fú—Öã„€<E2809E>  Ô¿è™Ø"<” W`(˜<>!@FЗÚc¸<C2B8>

—Þ㜀<C593>пðÒ¿è@¨€3пðÒ H˜Ô¢ @Fí<>à¿ð#˜âb äL€¤ /'—æ㜀<C593> Ô¿è)™è"<”Ò¿ðW<> <@FÉ+—êcœ€<C593>Ò¿ð-˜ì¢ @Ô¿è/™îâ<”W<> T@F¶Ð¿è@F¶ð»,ò!(ò'»,¿ÿ‡ô»@€<>ö»@ö'»4ø»4ú!(ú'»@л4Ð@F¤Ò»4Ð`@F Ð»4@F<>¿ÿìÔ»<€<>
Ö»<Ö'»0Ø»0Ú!(Ú'»<Þ»0ÐÀ@FŽà»0Ð @FŠÐ»0@F‡¿ÿìâ»8€<38>ä»8ä'»,æ»,èá(è'»8ê»,Ð@@Fxì»,Р@Ftл,@Fq¿ÿìпð@Fl<01>Çà<08>è?ÿÿc<E2809A><63>ã€ð' Dò'  DÐ'¿ð—Òc€€<E282AC> 
˜<>!W`lÔ¿ð@F+˜<>!@FuÀ'¿øÔ¿ø€¢ 
€eпð˜b4”$@FLÐ'¿ü€<C3BC>€YÖ¿ü˜˜"4À*À ˜ÚKb4€£`/€2пð’ /@F*Ð'¿ô€<C3B4>Þ¿ôÀ+À˜<>"4@FºÐ¿ð@F
<01><1D> @F Ð'¿ôпôW`€Ô¿ð˜â4@F˜<>"4@E÷<01> @E÷Ð'¿ôпô˜b4@E÷˜<>"4@Eè<01> @EèÐ'¿ôпô˜b4@Eèà H  à' H¢$ <>пð@Eðä¿ôä'¿ðæ¿ø¦àæ'¿ø¿ÿ›è H€<48>пð@EÇ<01> @EÇÐ'¿ôпôÒ¿ð@EÈê¿ôê'¿ð-—죀€<E282AC>
˜<>!W`ˆÔ¿ð@E¢˜<>!@Eìпð°<08>Çà<08>è?ÿÿc<08>ã€ð' D¿tРD@E®€¢?ÿ€\пˆ<”
€¢€ €RРD@EÈÐ'¿pØ¿p€<70> €Hпp@EÃÐ'¿l€<6C>€;пl<C2BF>
W`Œ@E•<>€0пl<C2BF>
W`<60>@EŒ<>€'пl<C2BF>
@EpºÐ D@El<01><1D> @EkÐ'¿üÚ¿ü€<C3BC>
пüÒ D@EhпüW`”@EfÒ¿l`
пü@Eaпüÿÿ­Ð¿ü@Ej¿ÿÂпp@E†Ð D@E‰Ð D@E‡<01>Çà<08>è?ÿÿc <63>ã€ð'  D @E€€¢?ÿ ˜Ð"0€¢ РD!ÿ@Ew<01>Çà<08>è?ÿÿc <63>ã€ð' Dò'   H@Eo€¢?ÿРH@EN<01>Çà<08>è?ÿÿc<E2809A><63>ã€ð' Dò' Hô' Lö' Pø' T@E`Ð'¿üпü€¢?ÿW<> ˜@E9€QÒ¿ü€<C3BC> €?Ô D€<44>
РD@E)€¢?ÿW<> ¨@E%€,РT! ”!ÿ@E?Ð'¿ôÖ¿ô€¢ÿÿРT@E<01> @D˘<> ð@E3пô@E2˜<>!@E+пô@E*Р   P˜ @E&РH@Dù<01> @D®<01> @E Ð'¿øØ¿ü€¢ Ú¿ø€£ÿ¿ÿô<01>Çà<08>è?ÿÿc<18>ã€ð' D¿xРD@Dº€¢?ÿ пŒ<”
€¢€ РD@Dã<01>Çà<08>è?ÿþc<E2809A><63>ã€ð' Dò'  D @DçÐ'¿ôпô€¢?ÿРD@D¾€MРH!!ÿ@DØÐ'¿ðÒ¿ð€¢ÿ
РH@D¯Ð¿ô@DÜ€;»ðпô”$@DØÐ'¿ü€<C3BC>»ðпðÔ¿ü@DÒÐ'¿ø€<C3B8> Ô¿øÖ¿ü–"À
Ö'¿ü€<C3BC> ¿ÿðØ¿ø€£?ÿ¿ÿßÚ¿ü€£ÿРD@D€Þ¿ø€£ÿÿРH@Dwпô@D¤Ð¿ð@D¡<01>Çà<08>è?ÿÿc <63>ã€ð' Dò'   H@DŸ€¢?ÿРD@D`<01>Çà<08>è?ÿÿc˜<63>ã€ð' Dò' H@DuÐ'¿üпü€¢?ÿW<> °@DN€1Ò¿ü€<C3BC> РD@DB€¢?ÿW<> À@D>˜<> D˜`H˜”  H˜ @D\W<> È@D.<01> @Cã<01> @DUÐ'¿øÔ¿ü€¢
Ö¿ø€¢ÿÿ¿ÿô<01>Çà<08>è?ÿÿc <63>ã€ð'  D!ÿ@DO€¢?ÿРD@D
<01>Çà<08>è?ÿÿc˜<63>ã€ð' Dò'  H@DBÐ'¿üпü€<C3BC> ˜<>!W`àÔ H@CµÒ¿üÔ`?ÿРD@D1<01>Çà<08>è<EFBFBD>ã¿ <C2BF>Çà<08>è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

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

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

View File

@@ -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}");
}

View File

@@ -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");

View File

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

View File

@@ -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";
}
}

View File

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

View File

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

View File

@@ -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 {} \;

View File

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

View File

@@ -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 {} \;

View File

@@ -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";
}

View File

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

View File

@@ -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";

View File

@@ -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 $*"

View File

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

View File

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

View File

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

158
cde/admin/BuildTools/tog/build_id Executable file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,5 @@
###############################################################################
#
# Builds and reports
#
15 * * * * /project/dt/scripts/cron_scripts -db /project/dt/admin/cron/cde.crondb

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,8 @@
WARNING
Warning
Warning:
warning
warning:
warning\(
\(E\)
mkcatdefs: no

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,13 @@
bindings
bitmaps
clients/mwm
clients/uil
clients/xmbind
config
demos
doc
lib/Xm
lib/Mrm
localized
tests
tools/wml

View File

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

View File

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

View File

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

View File

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