Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
74
cde/BUGREPORT
Normal file
74
cde/BUGREPORT
Normal file
@@ -0,0 +1,74 @@
|
||||
|
||||
** Mail this report to: motif-defect@osf.org for Motif Release defects
|
||||
cde-defect@osf.org for CDE Release defects
|
||||
|
||||
Please be aware that this file will be parsed by machine. Do not change the
|
||||
field names. Include all the Submitter Information lines and as much of the
|
||||
other sections as you can. Remove the brackets <> around any field that you
|
||||
fill in. Thank you!
|
||||
|
||||
|
||||
------------------------------- CUT HERE --------------------------------------
|
||||
|
||||
|
||||
The Open Group Problem Report
|
||||
=================================
|
||||
|
||||
|
||||
Submitter Information (Include Email address at miminum)
|
||||
---------------------
|
||||
|
||||
Submitter Name: <your name - Required>
|
||||
Organization: <your company or institute - Required>
|
||||
Email Address: <your electronic mail address -- Required>
|
||||
Phone: <your phone number with extension - Required>
|
||||
OSF License Number: <license number (for release versions only)>
|
||||
Licensee's Defect Number: <your internal reference number>
|
||||
|
||||
|
||||
Hardware/Software Configuration
|
||||
-------------------------------
|
||||
|
||||
Offering and Version: <examples: Motif 2.1.10, or CDE 2.1.10>
|
||||
Component (Module): <examples: src/usr/bin/mesg.c, or lib/Xm/FileSB.c>
|
||||
Client Hardware: <client machine type, memory, etc.>
|
||||
Client Software: <client OS and X windows version, if relevant>
|
||||
Server Hardware: <server machine type, memory, etc.> or SAME
|
||||
Server Software: <server OS and X version, if relevant> or SAME
|
||||
Compiler: <name of compiler and version>
|
||||
|
||||
Problem Description
|
||||
-------------------
|
||||
|
||||
Severity Level: <example: Incompatibility>
|
||||
|
||||
<One of the severity level as described below -- delete before sending
|
||||
|
||||
Incompatibility -- represents a problem which resulted from inability
|
||||
to install the software on the machine.
|
||||
Fatal -- represents a problem which resulted in a software crash or
|
||||
required reboot of the software.
|
||||
Critical -- represents a problem which resulted in software malfunction
|
||||
or a feature failure and has no work-around.
|
||||
Severe -- represents a problem which resulted in software functionality
|
||||
limitation but had alternative work-around.
|
||||
Minor -- represents a cosmetic type problem.
|
||||
Enhancement -- represents a request for enhancement of the software.>
|
||||
|
||||
Date of First Occurrence: <Date problem was first noticed (optional)>
|
||||
|
||||
One Line Description:
|
||||
|
||||
<A one line description of the specifying the problem>
|
||||
|
||||
Full Description:
|
||||
|
||||
<A full description of the problem>
|
||||
|
||||
Repeat By:
|
||||
|
||||
<A description of how to reproduce the problem (optional)>
|
||||
|
||||
Proposed Solution:
|
||||
|
||||
<A short description of how to fix the problem/bug (optional)>
|
||||
1043
cde/CLOSEDBUGS
Normal file
1043
cde/CLOSEDBUGS
Normal file
File diff suppressed because it is too large
Load Diff
148
cde/Imakefile
Normal file
148
cde/Imakefile
Normal file
@@ -0,0 +1,148 @@
|
||||
XCOMM $TOG: Imakefile /main/22 1999/01/18 10:38:29 samborn $
|
||||
#define IHaveSubdirs
|
||||
#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
|
||||
|
||||
CDE_RELEASE = 2.1.20
|
||||
|
||||
SUBDIRS = config util logs include lib programs databases admin
|
||||
DOCSUBDIRS = config doc
|
||||
|
||||
MakeSubdirs($(SUBDIRS))
|
||||
|
||||
DependSubdirs($(SUBDIRS))
|
||||
|
||||
#define IHaveSpecialMakefileTarget
|
||||
Makefile:: xmakefile
|
||||
ImakeDependency(xmakefile)
|
||||
xmakefile:: Imakefile
|
||||
RMoveToBakFile(xmakefile)
|
||||
$(IMAKE_CMD) -s xmakefile -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
|
||||
|
||||
|
||||
VerifyOS::
|
||||
@echo ""
|
||||
@echo Building on OSName.
|
||||
@echo ""
|
||||
|
||||
includes::
|
||||
MakeDir($(BUILDINCDIR))
|
||||
|
||||
XCOMM
|
||||
XCOMM Watch out!!! Make sure you do make includes after removing X11....
|
||||
XCOMM
|
||||
clean::
|
||||
$(RM) -r $(BUILDINCDIR)
|
||||
$(RM) -r $(BUILDLIBDIR)
|
||||
|
||||
WORLDOPTS = -k
|
||||
MAKE_OPTS = -f xmakefile
|
||||
|
||||
XCOMM
|
||||
XCOMM install; create the directories that we're going to need
|
||||
XCOMM
|
||||
|
||||
DIRS_TO_CREATE = $(USRLIBDIR) $(BINDIR) $(INCDIR) $(USRINCDIR) $(LIBDIR) $(XAPPLOADDIR)
|
||||
|
||||
MakeDirectories(install, $(DIRS_TO_CREATE))
|
||||
|
||||
XCOMM
|
||||
XCOMM Everything builds everything in the SUBDIRS directories
|
||||
XCOMM
|
||||
|
||||
Everything::
|
||||
@echo ""
|
||||
@echo "Rebuilding Release $(CDE_RELEASE) of CDE"
|
||||
@echo ""
|
||||
@date
|
||||
@echo ""
|
||||
cd $(IMAKESRC) && if [ -f Makefile ]; then \
|
||||
$(MAKE) $(MFLAGS) BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"; \
|
||||
else \
|
||||
$(MAKE) $(MFLAGS) -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"; \
|
||||
fi
|
||||
-$(RM) xmakefile.bak; $(MV) xmakefile xmakefile.bak
|
||||
$(MAKE) $(MFLAGS) -f xmakefile.bak xmakefile
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) Makefiles
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) Makefiles.doc
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) includes
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) includes.doc
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) depend
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) depend.doc
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) $(WORLDOPTS)
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) $(WORLDOPTS) all.doc
|
||||
@echo ""
|
||||
@date
|
||||
@echo ""
|
||||
@echo "Rebuild of Release $(CDE_RELEASE) of CDE complete."
|
||||
@echo ""
|
||||
|
||||
Everything.dev::
|
||||
@echo ""
|
||||
@echo "Rebuilding Release $(CDE_RELEASE) of CDE excluding DOC"
|
||||
@echo ""
|
||||
@date
|
||||
@echo ""
|
||||
cd $(IMAKESRC) && if [ -f Makefile ]; then \
|
||||
$(MAKE) $(MFLAGS) BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"; \
|
||||
else \
|
||||
$(MAKE) $(MFLAGS) -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"; \
|
||||
fi
|
||||
-$(RM) xmakefile.bak; $(MV) xmakefile xmakefile.bak
|
||||
$(MAKE) $(MFLAGS) -f xmakefile.bak xmakefile
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) Makefiles
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) includes
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) depend
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) $(WORLDOPTS)
|
||||
@echo ""
|
||||
@date
|
||||
@echo ""
|
||||
@echo "Rebuild of Release $(CDE_RELEASE) of CDE excluding DOC complete."
|
||||
@echo ""
|
||||
|
||||
XCOMM clean out link tree looking for stuff that should get checked in
|
||||
dangerous_strip_clean::
|
||||
make -k clean clean.doc
|
||||
find . -type l -exec rm {} \;
|
||||
find . \( \! \( -type d -o -name Makefile \) \) -print
|
||||
|
||||
XCOMM special target to determine if the xmakefile exists.
|
||||
XCOMM Works on both Unix and NMAKE.EXE
|
||||
xmakefile-exists::
|
||||
|
||||
|
||||
XCOMM
|
||||
XCOMM Everything.doc builds everything in the DOCSUBDIRS directories
|
||||
XCOMM
|
||||
|
||||
Everything.doc::
|
||||
@echo ""
|
||||
@echo "Rebuilding Release $(CDE_RELEASE) of DOC"
|
||||
@echo ""
|
||||
@date
|
||||
@echo ""
|
||||
cd $(IMAKESRC) && if [ -f Makefile ]; then \
|
||||
$(MAKE) $(MFLAGS) BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"; \
|
||||
else \
|
||||
$(MAKE) $(MFLAGS) -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"; \
|
||||
fi
|
||||
-$(RM) xmakefile.bak; $(MV) xmakefile xmakefile.bak
|
||||
$(MAKE) $(MFLAGS) -f xmakefile.bak xmakefile
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) Makefiles.doc
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) includes.doc
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) depend.doc
|
||||
$(MAKE) $(MFLAGS) $(MAKE_OPTS) $(WORLDOPTS) all.doc
|
||||
@echo ""
|
||||
@date
|
||||
@echo ""
|
||||
@echo "Rebuild of Release $(CDE_RELEASE) of DOC complete."
|
||||
@echo ""
|
||||
|
||||
NamedTargetSubdirs(install.doc,$(DOCSUBDIRS),"installing",DESTDIR=$(DESTDIR),install)
|
||||
NamedTargetSubdirs(install.man.doc,$(DOCSUBDIRS),"installing man pages",DESTDIR=$(DESTDIR),install.man)
|
||||
InstallLinkKitSubdirs($(DOCSUBDIRS))
|
||||
NamedCleanSubdirs(clean.doc,$(DOCSUBDIRS))
|
||||
NamedTagSubdirs(tags.doc,$(DOCSUBDIRS))
|
||||
MakeMakeSubdirs($(DOCSUBDIRS),Makefiles.doc)
|
||||
NamedTargetSubdirs(includes.doc,$(DOCSUBDIRS),including,NullParameter,includes)
|
||||
NamedTargetSubdirs(depend.doc,$(DOCSUBDIRS),depending,NullParameter,depend)
|
||||
NamedMakeSubdirs(all.doc, $(DOCSUBDIRS))
|
||||
239
cde/Makefile
Normal file
239
cde/Makefile
Normal file
@@ -0,0 +1,239 @@
|
||||
# $TOG: Makefile /main/15 1999/10/12 09:33:30 mgreess $
|
||||
RELEASE = Release 2.1.30
|
||||
PRODUCT = CDE
|
||||
SHELL = /bin/sh
|
||||
RM = rm -f
|
||||
MV = mv
|
||||
MAKE = make
|
||||
NMAKE = nmake
|
||||
WORLDOPTS = -k
|
||||
WIN32WORLDOPTS = -i
|
||||
TOP = .
|
||||
CURRENT_DIR = .
|
||||
CONFIGSRC = $(TOP)/config
|
||||
IMAKESRC = $(CONFIGSRC)/imake
|
||||
DEPENDSRC = $(CONFIGSRC)/makedepend
|
||||
DEPENDTOP = ../..
|
||||
IMAKETOP = ../..
|
||||
IRULESRC = $(CONFIGSRC)/cf
|
||||
IMAKE = $(IMAKESRC)/imake
|
||||
IMAKE_CMD = $(IMAKE) -I$(IRULESRC) $(IMAKE_DEFINES)
|
||||
MAKE_OPTS = -f xmakefile
|
||||
MAKE_CMD = $(MAKE) $(MAKE_OPTS)
|
||||
NMAKE_CMD = $(NMAKE) $(MAKE_OPTS)
|
||||
FLAGS = $(MFLAGS) -f Makefile.ini BOOTSTRAPCFLAGS="$(BOOTSTRAPCFLAGS)"
|
||||
|
||||
all:
|
||||
@$(MAKE_CMD) xmakefile-exists || $(MAKE) all-initial
|
||||
@$(MAKE_CMD) $@
|
||||
|
||||
all-initial:
|
||||
@echo "Please begin by using make World or make Makefile. You may"
|
||||
@echo "find it necessary to set the make variable BOOTSTRAPCFLAGS in"
|
||||
@echo "order to compile imake. One common example is"
|
||||
@echo "\"BOOTSTRAPCFLAGS=-I<dir>\", where <dir> is the top of your"
|
||||
@echo "X11R6 source tree. Remember to check the configuration"
|
||||
@echo "parameters in the config directory."
|
||||
@echo
|
||||
@echo "We recommend that you read the release notes carefully before"
|
||||
@echo "proceeding; they can be found under the doc directory. If"
|
||||
@echo "the top-level Makefile gets corrupted, copy Makefile.ini to"
|
||||
@echo "Makefile and try again. Do not name your log file make.log or"
|
||||
@echo "it will be deleted."
|
||||
|
||||
World:
|
||||
@echo ""
|
||||
@echo "Building $(RELEASE) of $(PRODUCT)"
|
||||
@echo ""
|
||||
@case "x$(BOOTSTRAPCFLAGS)" in x) \
|
||||
echo I hope you checked the configuration parameters in $(IRULESRC) ; \
|
||||
echo to see if you need to pass BOOTSTRAPCFLAGS. ; \
|
||||
echo "" ; \
|
||||
;; esac;
|
||||
@date
|
||||
@echo ""
|
||||
cd $(IMAKESRC) && $(MAKE) $(FLAGS) clean
|
||||
$(MAKE) $(MFLAGS) Makefile.boot
|
||||
$(MAKE_CMD) $(MFLAGS) VerifyOS
|
||||
$(MAKE_CMD) $(MFLAGS) Makefiles
|
||||
$(MAKE_CMD) $(MFLAGS) Makefiles.doc
|
||||
$(MAKE_CMD) $(MFLAGS) clean
|
||||
$(MAKE_CMD) $(MFLAGS) clean.doc
|
||||
$(MAKE_CMD) $(MFLAGS) includes
|
||||
$(MAKE_CMD) $(MFLAGS) includes.doc
|
||||
$(MAKE_CMD) $(MFLAGS) depend
|
||||
$(MAKE_CMD) $(MFLAGS) depend.doc
|
||||
$(MAKE_CMD) $(MFLAGS) $(WORLDOPTS)
|
||||
$(MAKE_CMD) $(MFLAGS) $(WORLDOPTS) all.doc
|
||||
@echo ""
|
||||
@date
|
||||
@echo ""
|
||||
@echo "Full build of $(RELEASE) of $(PRODUCT) complete."
|
||||
@echo ""
|
||||
|
||||
|
||||
World.dev:
|
||||
@echo ""
|
||||
@echo "Building $(RELEASE) of $(PRODUCT) excluding DOC"
|
||||
@echo ""
|
||||
@case "x$(BOOTSTRAPCFLAGS)" in x) \
|
||||
echo I hope you checked the configuration parameters in $(IRULESRC) ; \
|
||||
echo to see if you need to pass BOOTSTRAPCFLAGS. ; \
|
||||
echo "" ; \
|
||||
;; esac;
|
||||
@date
|
||||
@echo ""
|
||||
cd $(IMAKESRC) && $(MAKE) $(FLAGS) clean
|
||||
$(MAKE) $(MFLAGS) Makefile.boot
|
||||
$(MAKE_CMD) $(MFLAGS) VerifyOS
|
||||
$(MAKE_CMD) $(MFLAGS) Makefiles
|
||||
$(MAKE_CMD) $(MFLAGS) clean
|
||||
$(MAKE_CMD) $(MFLAGS) includes
|
||||
$(MAKE_CMD) $(MFLAGS) depend
|
||||
$(MAKE_CMD) $(MFLAGS) $(WORLDOPTS)
|
||||
@echo ""
|
||||
@date
|
||||
@echo ""
|
||||
@echo "Full build of $(RELEASE) of $(PRODUCT) excluding DOC complete."
|
||||
@echo ""
|
||||
|
||||
World.doc:
|
||||
@echo ""
|
||||
@echo "Building $(RELEASE) of $(PRODUCT) DOC"
|
||||
@echo ""
|
||||
@case "x$(BOOTSTRAPCFLAGS)" in x) \
|
||||
echo I hope you checked the configuration parameters in $(IRULESRC) ; \
|
||||
echo to see if you need to pass BOOTSTRAPCFLAGS. ; \
|
||||
echo "" ; \
|
||||
;; esac;
|
||||
@date
|
||||
@echo ""
|
||||
cd $(IMAKESRC) && $(MAKE) $(FLAGS) clean
|
||||
$(MAKE) $(MFLAGS) Makefile.boot
|
||||
$(MAKE_CMD) $(MFLAGS) VerifyOS
|
||||
$(MAKE_CMD) $(MFLAGS) Makefiles.doc
|
||||
$(MAKE_CMD) $(MFLAGS) clean.doc
|
||||
$(MAKE_CMD) $(MFLAGS) includes.doc
|
||||
$(MAKE_CMD) $(MFLAGS) depend.doc
|
||||
$(MAKE_CMD) $(MFLAGS) $(WORLDOPTS) all.doc
|
||||
@echo ""
|
||||
@date
|
||||
@echo ""
|
||||
@echo "Full build of $(RELEASE) of $(PRODUCT) DOC complete."
|
||||
@echo ""
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
# This is just a sequence of bootstrapping steps we have to do.
|
||||
# The steps are listed as separate targets so clearmake can wink in
|
||||
# the Makefile.proto files.
|
||||
Makefile.boot: imake.proto $(DEPENDSRC)/Makefile.proto depend.bootstrap $(IMAKESRC)/Makefile.proto imake.bootstrap
|
||||
|
||||
imake.proto:
|
||||
cd $(IMAKESRC) && $(MAKE) $(FLAGS)
|
||||
$(RM) $(DEPENDSRC)/Makefile.proto
|
||||
|
||||
$(DEPENDSRC)/Makefile.proto:
|
||||
$(IMAKE_CMD) -s $(DEPENDSRC)/Makefile.proto -f $(DEPENDSRC)/Imakefile -DTOPDIR=$(DEPENDTOP) -DCURDIR=$(DEPENDSRC)
|
||||
|
||||
depend.bootstrap:
|
||||
cd $(DEPENDSRC) && $(RM) -r Makefile Makefile.dep makedepend *.o bootstrap
|
||||
cd $(DEPENDSRC) && $(MAKE) -f Makefile.proto bootstrap
|
||||
|
||||
$(IMAKESRC)/Makefile.proto:
|
||||
$(IMAKE_CMD) -s $(IMAKESRC)/Makefile.proto -f $(IMAKESRC)/Imakefile -DTOPDIR=$(IMAKETOP) -DCURDIR=$(IMAKESRC)
|
||||
|
||||
imake.bootstrap:
|
||||
cd $(IMAKESRC) && $(MAKE) -f Makefile.proto bootstrapdepend
|
||||
cd $(IMAKESRC) && $(MAKE) $(FLAGS) bootstrap
|
||||
cd $(IMAKESRC) && $(MAKE) -f Makefile.proto all
|
||||
-@if [ -f xmakefile ]; then set -x; \
|
||||
$(RM) xmakefile.bak; $(MV) xmakefile xmakefile.bak; \
|
||||
else exit 0; fi
|
||||
$(MAKE) $(MFLAGS) xmakefile
|
||||
|
||||
Makefile::
|
||||
$(MAKE) $(MFLAGS) xmakefile
|
||||
|
||||
xmakefile: Imakefile
|
||||
$(IMAKE_CMD) -s xmakefile -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
|
||||
|
||||
World.Win32:
|
||||
@echo :
|
||||
@echo Building $(RELEASE) of $(PRODUCT).
|
||||
@echo :
|
||||
@echo :
|
||||
cd $(IMAKESRC)
|
||||
$(NMAKE) -f Makefile.ini clean.Win32
|
||||
$(NMAKE) -f Makefile.ini imake.exe
|
||||
cd ..\..
|
||||
-if exist xmakefile.bak del xmakefile.bak
|
||||
-if exist xmakefile ren xmakefile xmakefile.bak
|
||||
$(IMAKE:/=\) -s xmakefile -I$(IRULESRC) $(IMAKE_DEFINES) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
|
||||
$(NMAKE_CMD) $(MFLAGS) VerifyOS
|
||||
$(NMAKE_CMD) $(MFLAGS) Makefiles
|
||||
$(NMAKE_CMD) $(MFLAGS) clean
|
||||
$(NMAKE_CMD) $(MFLAGS) includes
|
||||
$(NMAKE_CMD) $(MFLAGS) depend
|
||||
$(NMAKE_CMD) $(MFLAGS) $(WIN32WORLDOPTS)
|
||||
@echo :
|
||||
@echo :
|
||||
@echo Full build of $(RELEASE) of $(PRODUCT) complete.
|
||||
@echo :
|
||||
|
||||
|
||||
# don't allow any default rules in this Makefile
|
||||
.SUFFIXES:
|
||||
|
||||
# a copy of every rule that might be invoked at top level
|
||||
|
||||
clean:
|
||||
$(MAKE_CMD) $@
|
||||
dangerous_strip_clean:
|
||||
$(MAKE_CMD) $@
|
||||
depend:
|
||||
$(MAKE_CMD) $@
|
||||
Everything:
|
||||
$(MAKE_CMD) $@
|
||||
external.ln:
|
||||
$(MAKE_CMD) $@
|
||||
includes:
|
||||
$(MAKE_CMD) $@
|
||||
install.ln:
|
||||
$(MAKE_CMD) $@
|
||||
install.man:
|
||||
$(MAKE_CMD) $@
|
||||
install:
|
||||
$(MAKE_CMD) $@
|
||||
Makefiles:
|
||||
$(MAKE_CMD) $@
|
||||
man_keywords:
|
||||
$(MAKE_CMD) $@
|
||||
tags:
|
||||
$(MAKE_CMD) $@
|
||||
VerifyOS:
|
||||
$(MAKE_CMD) $@
|
||||
|
||||
# dev versions
|
||||
|
||||
Everything.dev:
|
||||
$(MAKE_CMD) $@
|
||||
|
||||
# doc versions
|
||||
|
||||
clean.doc:
|
||||
$(MAKE_CMD) $@
|
||||
depend.doc:
|
||||
$(MAKE_CMD) $@
|
||||
Everything.doc:
|
||||
$(MAKE_CMD) $@
|
||||
includes.doc:
|
||||
$(MAKE_CMD) $@
|
||||
install.man.doc:
|
||||
$(MAKE_CMD) $@
|
||||
install.doc:
|
||||
$(MAKE_CMD) $@
|
||||
Makefiles.doc:
|
||||
$(MAKE_CMD) $@
|
||||
tags.doc:
|
||||
$(MAKE_CMD) $@
|
||||
3557
cde/OPENBUGS
Normal file
3557
cde/OPENBUGS
Normal file
File diff suppressed because it is too large
Load Diff
318
cde/README-2.1.10
Normal file
318
cde/README-2.1.10
Normal file
@@ -0,0 +1,318 @@
|
||||
|
||||
**********************************************************************
|
||||
NOTE: CDE/MOTIF IS LICENSED SOFTWARE. SOURCE AND OBJECT CODE IS NOT
|
||||
TO BE DISTRIBUTED TO THIRD PARTIES EXCEPT AS PROVIDED BY THE TERMS OF
|
||||
YOUR LICENSE AGREEMENT. PASSIVE DISTRIBUTION TO UNIDENTIFIED PARTIES,
|
||||
SUCH AS MAKING FILES AVAILABLE FOR UNRESTRICTED ELECTRONIC FILE
|
||||
TRANSFER, IS STRICTLY PROHIBITED BY THE LICENSE.
|
||||
|
||||
THESE RESTRICTIONS APPLY TO ANY PARTY TO WHOM THE SOFTWARE HAS BEEN
|
||||
DISTRIBUTED.
|
||||
**********************************************************************
|
||||
|
||||
THE PURPOSE OF THIS RELEASE
|
||||
|
||||
This is the first maintenance release for CDE and Motif 2.1.
|
||||
It was designed to resolve as many defects as possible from the
|
||||
project's defect database, with a concentration for CDE on dtmail
|
||||
problems. This maintenance release resolves 523 problem reports
|
||||
against CDE and Motif 2.1.
|
||||
|
||||
|
||||
The Open Group encourages the reporting of all bugs found in CDE
|
||||
and Motif regardless of the platform or hardware configuration in
|
||||
which the bug is found. However, The Open Group will commit to
|
||||
accept (and repair according to priority) only those bugs that can
|
||||
be replicated on the current reference configurations.
|
||||
|
||||
|
||||
|
||||
DOWNLOAD INSTRUCTIIONS
|
||||
|
||||
This section describes how to unload the release archives
|
||||
available at this ftp site, including information about how much
|
||||
disk space is required.
|
||||
|
||||
The CDE/Motif 2.1.10 release is provided as compressed tar archives.
|
||||
|
||||
|
||||
|
||||
README-2.1.10 - this file
|
||||
|
||||
cde.tar.Z - a compressed tar file of the
|
||||
CDE 2.1.10 source code
|
||||
|
||||
cde-test.tar.Z - a compressed tar file of the
|
||||
CDE 2.1.10 tests
|
||||
|
||||
cde-test-misc.tar.Z - a compressed tar file of
|
||||
test results for CDE/Motif 2.1.10
|
||||
|
||||
motif.tar.Z - a compressed tar file of the
|
||||
MOTIF 2.1.10 source code
|
||||
|
||||
motif-test-misc.tar.Z - a compressed tar file of
|
||||
test results for Motif 2.1.10
|
||||
|
||||
|
||||
27 Mb motif-test-misc
|
||||
|
||||
The CDE/Motif 2.1.10 release is in the form of a sparse tree; that
|
||||
is, it contains only files that have been modified in either CDE or
|
||||
Motif since the 2.1 release. If you are a CDE licensee you will
|
||||
receive files for both CDE and Motif. If you are a Motif-only
|
||||
licensee you will receive files just for Motif.
|
||||
|
||||
To download the archives from the ftp site you will need approximately
|
||||
18.5 megabytes (for CDE licensees) or 9.3 megabytes (for Motif-only
|
||||
licensees) of disk space to hold just the compressed archives. Once the
|
||||
archives have been downloaded they should be first uncompressed and then
|
||||
untarred (see instructions below). The uncompressed archives require
|
||||
approximately 91 (CDE) or 37 (Motif-only) megabytes. After untarring
|
||||
the archives, you will need an additional 96 (CDE) or 52 (Motif-only)
|
||||
megabytes of space to hold the unloaded directories. Once the tar
|
||||
operation has completed you may wish to remove the tar archive files
|
||||
(*tar).
|
||||
|
||||
|
||||
MOTIF-only CDE/Motif
|
||||
|
||||
Mb Mb Files
|
||||
-- -- -----
|
||||
(9.3 18.5 compressed archives )
|
||||
|
||||
37 91 archives after uncompress
|
||||
52 96 untarred archives
|
||||
|
||||
89 187 Total
|
||||
|
||||
|
||||
After ftp-ing the files to your machine, you should first uncompress
|
||||
the compressed (*.Z) files with the command:
|
||||
|
||||
uncompress <filename>.Z
|
||||
|
||||
Once the tar archives have been uncompressed, you can untar each
|
||||
with the command:
|
||||
|
||||
tar xvf <filename>.tar
|
||||
|
||||
This command will preserve the .tar file while unloading its contents
|
||||
into your current working directory. If you wish to list a table of
|
||||
contents of the tar file before actually unloading it you can do so
|
||||
with the command:
|
||||
|
||||
tar tvf <filename>.tar
|
||||
|
||||
|
||||
INSTALLING THIS RELEASE
|
||||
|
||||
This release is made up of a "sparse tree" of files that have changed
|
||||
since release 2.1. The new versions of the files should replace the
|
||||
corresponding CDE or Motif 2.1 versions of the files in your source
|
||||
tree.
|
||||
|
||||
|
||||
After the release is unloaded, you can use, for example, cp -R command
|
||||
to copy the sources from the current directory into your source tree.
|
||||
This release creates several new files. If you are using a symbolic
|
||||
link tree, you will need to create new links for them.
|
||||
|
||||
Please see the Release Notes from 2.1 for instructions on building
|
||||
a full release tree.
|
||||
|
||||
|
||||
IMPORTANT CHANGES IN THIS RELEASE
|
||||
|
||||
|
||||
The majority of changes in this release are for general defect
|
||||
repair in the code and tests. Additionally, some focused work
|
||||
was performed in the following areas described below:
|
||||
|
||||
X11R6.4 and XtMalloc
|
||||
Dtmail maintenance
|
||||
Japanese Translations
|
||||
|
||||
|
||||
Defect Repair
|
||||
|
||||
This patch release resolves 523 problem reports against CDE and
|
||||
Motif 2.1. Each of these defects were resolved in one of three
|
||||
ways: fixed (problem was recreated and repaired), duplicate
|
||||
(problem was already reported and recorded in defect database),
|
||||
or cancelled (problem could not be recreated in current code
|
||||
base). The breakdown by component and resolution type is:
|
||||
|
||||
FIXED: Total 326
|
||||
|
||||
CDE Code: 160 Motif Code: 91
|
||||
Doc: 2 Test: 18
|
||||
Test: 55
|
||||
------------- --------------
|
||||
Total: 217 Total: 109
|
||||
|
||||
|
||||
DUPLICATE: Total 51
|
||||
|
||||
CDE Code: 30 Motif Code: 10
|
||||
Doc: 4 Test: 1
|
||||
Test: 6
|
||||
------------- --------------
|
||||
Total: 40 Total: 11
|
||||
|
||||
CANCEL: Total 146
|
||||
|
||||
CDE Code: 45 Motif Code: 49
|
||||
Test: 36 Test: 14
|
||||
Doc: 2
|
||||
------------- --------------
|
||||
Total: 81 Total: 65
|
||||
|
||||
|
||||
For more information on the bugs resolved, see the file
|
||||
CLOSEDBUGS in this release.
|
||||
|
||||
|
||||
X11R6.4 and XtMalloc
|
||||
|
||||
The Open Group is comitted to a unified desktop technology
|
||||
(X, Motif and CDE). Therefore we built and tested CDE and
|
||||
Motif 2.1.10 against a pre-release version of X11R6.4. Once
|
||||
the final release of X11R6.4 is ready we will build and test
|
||||
with it. We do not expect to find any problems running with
|
||||
the production version but will provide any fixes if
|
||||
necessary.
|
||||
|
||||
One important change that went into the X11R6.4 release was
|
||||
to fix the behavior of XtMalloc. The specification clearly
|
||||
state that XtMalloc should behave like the underlying malloc
|
||||
when passed a size of 0 (zero). The old XtMalloc would
|
||||
allocate space, even if it was passed a size of 0. In X11R6.4
|
||||
XtMalloc no longer has this behavior. On some platforms this
|
||||
can cause failures with faulty code that depends on that
|
||||
behavior.
|
||||
|
||||
We have found such calls in both the CDE and Motif code through
|
||||
our test cycle and by visual inspection and have repaired them
|
||||
along the way. There is the potential for additional problems
|
||||
of this form - developers should be alert to this possibility.
|
||||
|
||||
If developers want the old behavior of XtMalloc then they should
|
||||
define both MALLOC_0_RETURNS_NULL and XTMALLOC_BC in their
|
||||
site.def file.
|
||||
|
||||
|
||||
Dtmail maintenance
|
||||
|
||||
In addition to intensive efforts to fix outstanding defects
|
||||
throughout CDE and Motif, we paid special attention to problems
|
||||
in the CDE 2.1.10 Mailer. These problems include the following:
|
||||
|
||||
- Support for X11R6 Session Management Protocol
|
||||
- Unified mailbox menus
|
||||
- Support for mail aliases
|
||||
- Support for mail retrieval from standard mail servers
|
||||
|
||||
|
||||
Support for X11R6 Session Management Protocol
|
||||
|
||||
The CDE 2.1.10 Mailer now supports the basic elements of the
|
||||
X11R6 Session Management Protocol including responding to
|
||||
interactive and non-interactive SaveYourself requests as well
|
||||
as Die requests. For non-interactive SaveYourself requests,
|
||||
the Mailer simply saves the size and location of all the
|
||||
mailbox and compose windows. Deleted messages in mailboxes are
|
||||
retained. For interactive SaveYourself requests, the Mailer may
|
||||
display dialogs asking the user to verify that deleted messages
|
||||
should be expunged or that the contents of compose windows
|
||||
should be deleted.
|
||||
|
||||
|
||||
Unified file selection menus
|
||||
|
||||
The CDE 2.1.10 Mailer now provides a consistent set of menus
|
||||
and file selection boxes for all operations involving mailboxes.
|
||||
These operations include Mailbox->Open, Message->CopyTo, and Move.
|
||||
Previously, each of these commands had its own file selection box.
|
||||
Changes made in one FSB were not reflected in any of the others.
|
||||
In addition, the Mailbox->Open command did not provide users with
|
||||
the menu of predefined mailboxes as in the Message->CopyTo, and
|
||||
Move commands. In the CDE 2.1.10 Mailer the operation of all
|
||||
three commands has been made completely consistent from the user's
|
||||
perspective.
|
||||
|
||||
Similar fixes were made for all operations involving files
|
||||
including Message->SaveAsText and Attachments->SaveAs.
|
||||
|
||||
|
||||
Support for mail aliases
|
||||
|
||||
Popup menus containing the user's predefined aliases were added to
|
||||
the address fields (To:, Cc:, and Bcc:) in the message composer
|
||||
dialogs. The user can now add an addressee to one of these fields
|
||||
simply by selecting from the menu of aliases.
|
||||
|
||||
|
||||
Support for mail retrieval from standard mail servers
|
||||
|
||||
The CDE 2.1.10 Mailer has been fixed to support retrieving mail
|
||||
from standard mail servers. Supported Mail Server protocols
|
||||
include POP2, POP3, APOP, and IMAP. However, to date, only the
|
||||
POP3 has been well tested at The Open Group.
|
||||
|
||||
|
||||
Japanese Translations
|
||||
|
||||
Deliverables of the CDE 2.1 project included translations of
|
||||
all documentation. The Japanese translations were not received
|
||||
in time for the 2.1 release but were delivered at the beginning
|
||||
of this year. They were made available electronically at that
|
||||
time to licensees and have also been included in this 2.1.10
|
||||
release. This includes Japanese manual pages and books.
|
||||
|
||||
|
||||
BUG LISTS
|
||||
|
||||
In the release archive there are two files, OPENBUGS and
|
||||
CLOSEDBUGS, which contain, respectively, the list of all bugs
|
||||
from any version of CDE or Motif not yet closed, and all bugs
|
||||
from CDE or Motif fixed in this patch release.
|
||||
|
||||
|
||||
BUILDING MOTIF FOR YOUR SYSTEM
|
||||
|
||||
This release requires no changes in the build process. Please
|
||||
refer to the Release Notes for more information.
|
||||
|
||||
|
||||
REFERENCE PLATFORMS
|
||||
|
||||
The Open Group has used a number of platforms during the
|
||||
development of the 2.1.10 release. However, the following
|
||||
reference platforms are the only ones where the complete
|
||||
test cycle was run. Test results appear below.
|
||||
|
||||
|
||||
CDE and Motif:
|
||||
HP9000/7xx running HP-UX 10.20
|
||||
Digital Alpha 3000 running Digital Unix 4.0
|
||||
|
||||
Motif-only:
|
||||
Sun SPARCstation running Solaris 2.4
|
||||
using the SC 4.0 C compiler and SC 4.1 C++ compilers
|
||||
|
||||
|
||||
TEST RESULTS SUMMARY
|
||||
|
||||
Since this is a general availability release, it has undergone
|
||||
the full quality assurance cycle at The Open Group. The test
|
||||
cycle includes running the following test suites:
|
||||
|
||||
MVS - Motif Validation Suite
|
||||
QATS - Motif Quality Assurance Test Suite
|
||||
CDE Regression Tests
|
||||
CDE Performance Tests
|
||||
Memory Tests
|
||||
|
||||
The results of these test runs can be found in the release
|
||||
archive under cde-test-misc/reports/cde2.1.10.
|
||||
282
cde/README-2.1.20
Normal file
282
cde/README-2.1.20
Normal file
@@ -0,0 +1,282 @@
|
||||
|
||||
**********************************************************************
|
||||
NOTE: CDE/MOTIF IS LICENSED SOFTWARE. SOURCE AND OBJECT CODE IS NOT
|
||||
TO BE DISTRIBUTED TO THIRD PARTIES EXCEPT AS PROVIDED BY THE TERMS OF
|
||||
YOUR LICENSE AGREEMENT. PASSIVE DISTRIBUTION TO UNIDENTIFIED PARTIES,
|
||||
SUCH AS MAKING FILES AVAILABLE FOR UNRESTRICTED ELECTRONIC FILE
|
||||
TRANSFER, IS STRICTLY PROHIBITED BY THE LICENSE.
|
||||
|
||||
THESE RESTRICTIONS APPLY TO ANY PARTY TO WHOM THE SOFTWARE HAS BEEN
|
||||
DISTRIBUTED.
|
||||
**********************************************************************
|
||||
|
||||
THE PURPOSE OF THIS RELEASE
|
||||
|
||||
This is the second maintenance release for CDE and Motif 2.1.
|
||||
It was designed to resolve as many defects as possible from the
|
||||
project's defect database. This maintenance release resolves 423
|
||||
problem reports against CDE and Motif 2.1.10.
|
||||
|
||||
|
||||
The Open Group encourages the reporting of all bugs found in CDE
|
||||
and Motif regardless of the platform or hardware configuration in
|
||||
which the bug is found. However, The Open Group will commit to
|
||||
accept (and repair according to priority) only those bugs that can
|
||||
be replicated on the current reference configurations.
|
||||
|
||||
|
||||
DOWNLOAD INSTRUCTIIONS
|
||||
|
||||
This section describes how to unload the release archives
|
||||
available at this ftp site, including information about how much
|
||||
disk space is required.
|
||||
|
||||
The CDE/Motif 2.1.20 release is provided as compressed tar archives.
|
||||
|
||||
|
||||
README-2.1.20 - this file
|
||||
|
||||
cde.tar.Z - a compressed tar file of the
|
||||
CDE 2.1.20 source code
|
||||
|
||||
cde-test.tar.Z - a compressed tar file of the
|
||||
CDE 2.1.20 tests
|
||||
|
||||
cde-test-misc.tar.Z - a compressed tar file of
|
||||
test results for CDE/Motif 2.1.20
|
||||
|
||||
motif.tar.Z - a compressed tar file of the
|
||||
MOTIF 2.1.20 source code
|
||||
|
||||
motif-test-misc.tar.Z - a compressed tar file of
|
||||
test results for Motif 2.1.20
|
||||
|
||||
|
||||
The CDE/Motif 2.1.20 release is in the form of a sparse tree; that
|
||||
is, it contains only files that have been modified in either CDE or
|
||||
Motif since the 2.1.10 release. If you are a CDE licensee you will
|
||||
receive files for both CDE and Motif. If you are a Motif-only
|
||||
licensee you will receive files just for Motif.
|
||||
|
||||
After ftp-ing the files to your machine, you should first uncompress
|
||||
the compressed (*.Z) files with the command:
|
||||
|
||||
uncompress <filename>.Z
|
||||
|
||||
Once the tar archives have been uncompressed, you can untar each
|
||||
with the command:
|
||||
|
||||
tar xvf <filename>.tar
|
||||
|
||||
This command will preserve the .tar file while unloading its contents
|
||||
into your current working directory. If you wish to list a table of
|
||||
contents of the tar file before actually unloading it you can do so
|
||||
with the command:
|
||||
|
||||
tar tvf <filename>.tar
|
||||
|
||||
|
||||
INSTALLING THIS RELEASE
|
||||
|
||||
This release is made up of a "sparse tree" of files that have changed
|
||||
since release 2.1.10. The new versions of the files should replace the
|
||||
corresponding CDE or Motif 2.1.10 versions of the files in your source
|
||||
tree.
|
||||
|
||||
|
||||
After the release is unloaded, you can use, for example, cp -R command
|
||||
to copy the sources from the current directory into your source tree.
|
||||
This release creates several new files. If you are using a symbolic
|
||||
link tree, you will need to create new links for them.
|
||||
|
||||
Please see the Release Notes from 2.1 for instructions on building
|
||||
a full release tree.
|
||||
|
||||
|
||||
IMPORTANT CHANGES IN THIS RELEASE
|
||||
|
||||
Defect Repair
|
||||
|
||||
This patch release resolves 423 problem reports against CDE and
|
||||
Motif 2.1.10. Each of these defects were resolved in one of three
|
||||
ways: fixed (problem was recreated and repaired), duplicate
|
||||
(problem was already reported and recorded in defect database),
|
||||
or cancelled (problem could not be recreated in current code
|
||||
base). The breakdown by component and resolution type is:
|
||||
|
||||
FIXED: Total 298
|
||||
|
||||
CDE Code: 193 Motif Code: 68
|
||||
CDE Doc: 1 Motif Doc: 0
|
||||
CDE Test: 32 Motif Test: 4
|
||||
-------------- ---------------
|
||||
Total: 226 Total: 72
|
||||
|
||||
DUPLICATE: Total 42
|
||||
|
||||
CDE Code: 19 Motif Code: 11
|
||||
CDE Doc: 0 Motif Doc: 0
|
||||
CDE Test: 11 Motif Test: 1
|
||||
-------------- ---------------
|
||||
Total: 30 Total: 12
|
||||
|
||||
CANCEL: Total 83
|
||||
|
||||
CDE Code: 35 Motif Code: 22
|
||||
CDE Doc: 0 Motif Doc: 1
|
||||
CDE Test: 20 Motif Test: 5
|
||||
-------------- ---------------
|
||||
Total: 55 Total: 28
|
||||
|
||||
|
||||
For more information on the bugs resolved, see the file
|
||||
CLOSEDBUGS in this release.
|
||||
|
||||
Test Improvements
|
||||
|
||||
Several changes were made for CDE 2.1.20 to streamline the
|
||||
automated testing process. Included are necessary fixes in
|
||||
order to significantly improve test performance times, as well
|
||||
as to eliminate test hangs.
|
||||
|
||||
Specific fixes include
|
||||
|
||||
CDExc23856 deiconify tests have logic backwards
|
||||
|
||||
This was a legacy bug in QATS that caused many tests to hang when
|
||||
doing an iconify/deiconify combination in order to force expose
|
||||
events
|
||||
|
||||
CDExc23824 DtAction tests take extremely long to complete
|
||||
|
||||
Since X events were being processed once every thirty seconds, test
|
||||
performance has been improved from overnight to twenty minutes
|
||||
|
||||
CDExc23843 dtpad tests need speeding up on the printing delays
|
||||
|
||||
When outputting characters to the screen dtpad was incorrectly
|
||||
sleeping for one half second between each one. The performance
|
||||
of this suite has improved from twelve hours to five hours.
|
||||
|
||||
BUG LISTS
|
||||
|
||||
In the release archive there are two files, OPENBUGS and
|
||||
CLOSEDBUGS, which contain, respectively, the list of all bugs
|
||||
from any version of CDE or Motif not yet closed, and all bugs
|
||||
from CDE or Motif fixed in this patch release.
|
||||
|
||||
|
||||
BUILDING MOTIF FOR YOUR SYSTEM
|
||||
|
||||
Since X11 is NOT being delivered as part of this release, there
|
||||
are some minor changes in the build process for Motif with respect
|
||||
to the build process described in the 2.1 Release Notes.
|
||||
|
||||
Replace step 2 under the Building Motif subsection of Section 3:
|
||||
|
||||
2. If you are building with imports (the default setup in site.def),
|
||||
construct the necessary links as follows:
|
||||
|
||||
% cd $CDEBUILDDIR/motif
|
||||
% mkdir -p imports/x11
|
||||
% cd imports/x11
|
||||
% ln -s <X11_bin_directory> bin
|
||||
% ln -s <X11_includes_directory> includes
|
||||
% ln -s <X11_libs_directory> libs
|
||||
|
||||
|
||||
REFERENCE PLATFORMS
|
||||
|
||||
The Open Group has used a number of platforms during the
|
||||
development of the 2.1.20 release. However, the following
|
||||
reference platforms are the only ones where the complete
|
||||
test cycle was run. Test results appear below.
|
||||
|
||||
|
||||
CDE and Motif:
|
||||
HP9000/7xx running HP-UX 10.20
|
||||
Sun SPARCstation running Solaris 2.4
|
||||
using the SC 4.0 C compiler and SC 4.1 C++ compilers
|
||||
|
||||
|
||||
Changes to X11R6.4:
|
||||
|
||||
CDE and Motif 2.1.20 have been built and tested upon a base of
|
||||
X11R6.4 patchlevel 3. During the development of 2.1.20, a
|
||||
significant defect in the I18N code of X was discovered. The
|
||||
symptom is that when XMODIFIERS is not set, there is a possibility
|
||||
of memory corruption. It is recommended that the following patch
|
||||
be applied:
|
||||
|
||||
*** imInt.c@@/main/5 Sat May 30 21:04:36 1998
|
||||
--- xc/lib/X11/imInt.c Mon Aug 24 16:17:25 1998
|
||||
***************
|
||||
*** 1,4 ****
|
||||
! /* $TOG: imInt.c /main/5 1998/05/30 21:11:16 kaleb $ */
|
||||
/******************************************************************
|
||||
|
||||
Copyright 1992, 1993, 1994 by FUJITSU LIMITED
|
||||
--- 1,4 ----
|
||||
! /* $TOG: imInt.c /main/6 1998/08/24 16:22:12 mgreess $ */
|
||||
/******************************************************************
|
||||
|
||||
Copyright 1992, 1993, 1994 by FUJITSU LIMITED
|
||||
***************
|
||||
*** 166,174 ****
|
||||
_XimMakeImName(lcd)
|
||||
XLCd lcd;
|
||||
{
|
||||
! char* begin;
|
||||
! char* end;
|
||||
! char* ret;
|
||||
int i = 0;
|
||||
char* ximmodifier = XIMMODIFIER;
|
||||
|
||||
--- 166,174 ----
|
||||
_XimMakeImName(lcd)
|
||||
XLCd lcd;
|
||||
{
|
||||
! char* begin = NULL;
|
||||
! char* end = NULL;
|
||||
! char* ret = NULL;
|
||||
int i = 0;
|
||||
char* ximmodifier = XIMMODIFIER;
|
||||
|
||||
***************
|
||||
*** 182,189 ****
|
||||
}
|
||||
ret = Xmalloc(end - begin + 2);
|
||||
if (ret != NULL) {
|
||||
! (void)strncpy(ret, begin, end - begin + 1);
|
||||
! ret[end - begin + 1] = '\0';
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
--- 182,192 ----
|
||||
}
|
||||
ret = Xmalloc(end - begin + 2);
|
||||
if (ret != NULL) {
|
||||
! if (begin != NULL && end != NULL) {
|
||||
! (void)strncpy(ret, begin, end - begin + 1);
|
||||
! ret[end - begin + 1] = '\0';
|
||||
! }
|
||||
! else *ret = '\0';
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
TEST RESULTS SUMMARY
|
||||
|
||||
Since this is a general availability release, it has undergone
|
||||
the full quality assurance cycle. The cycle includes running the
|
||||
following test suites:
|
||||
|
||||
QATS - Motif Quality Assurance Test Suite
|
||||
VSM 4.1 - Motif Validation Suite
|
||||
CDE Regression Tests
|
||||
|
||||
The results of these test runs can be found in the release
|
||||
archive under cde-test-misc/reports/cde-2.1.20. Note that the
|
||||
the journal files (.prt) and other output results generated by
|
||||
QATS have been included for the first time.
|
||||
280
cde/README-2.1.30
Normal file
280
cde/README-2.1.30
Normal file
@@ -0,0 +1,280 @@
|
||||
|
||||
**********************************************************************
|
||||
NOTE: CDE/MOTIF IS LICENSED SOFTWARE. SOURCE AND OBJECT CODE IS NOT
|
||||
TO BE DISTRIBUTED TO THIRD PARTIES EXCEPT AS PROVIDED BY THE TERMS OF
|
||||
YOUR LICENSE AGREEMENT. PASSIVE DISTRIBUTION TO UNIDENTIFIED PARTIES,
|
||||
SUCH AS MAKING FILES AVAILABLE FOR UNRESTRICTED ELECTRONIC FILE
|
||||
TRANSFER, IS STRICTLY PROHIBITED BY THE LICENSE.
|
||||
|
||||
THESE RESTRICTIONS APPLY TO ANY PARTY TO WHOM THE SOFTWARE HAS BEEN
|
||||
DISTRIBUTED.
|
||||
**********************************************************************
|
||||
|
||||
THE PURPOSE OF THIS RELEASE
|
||||
|
||||
This is the third maintenance release for CDE and Motif 2.1.
|
||||
It was designed to resolve as many defects as possible from the
|
||||
project's defect database. This maintenance release resolves 515
|
||||
problem reports against CDE and Motif 2.1.20.
|
||||
|
||||
|
||||
The Open Group encourages the reporting of all bugs found in CDE
|
||||
and Motif regardless of the platform or hardware configuration in
|
||||
which the bug is found. However, The Open Group will commit to
|
||||
accept (and repair according to priority) only those bugs that can
|
||||
be replicated on the current reference configurations.
|
||||
|
||||
|
||||
DOWNLOAD INSTRUCTIONS
|
||||
|
||||
This section describes how to unload the release archives
|
||||
available at this ftp site.
|
||||
|
||||
The CDE/Motif 2.1.30 release is provided as compressed tar archives.
|
||||
|
||||
|
||||
README-2.1.30 - this file
|
||||
|
||||
cde.tar.Z - a compressed tar file of the
|
||||
CDE 2.1.30 source code
|
||||
|
||||
cde-test.tar.Z - a compressed tar file of the
|
||||
CDE 2.1.30 tests
|
||||
|
||||
cde-test-misc.tar.Z - a compressed tar file of
|
||||
test results for CDE/Motif 2.1.30
|
||||
|
||||
motif.tar.Z - a compressed tar file of the
|
||||
MOTIF 2.1.30 source code
|
||||
|
||||
motif-test-misc.tar.Z - a compressed tar file of
|
||||
test results for Motif 2.1.30
|
||||
|
||||
|
||||
The CDE/Motif 2.1.30 release is in the form of a sparse tree; that
|
||||
is, it contains only files that have been modified in either CDE or
|
||||
Motif since the 2.1.20 release. If you are a CDE licensee you will
|
||||
receive files for both CDE and Motif. If you are a Motif-only
|
||||
licensee you will receive files just for Motif.
|
||||
|
||||
After ftp-ing the files to your machine, you should first uncompress
|
||||
the compressed (*.Z) files with the command:
|
||||
|
||||
uncompress <filename>.Z
|
||||
|
||||
Once the tar archives have been uncompressed, you can untar each
|
||||
with the command:
|
||||
|
||||
tar xvf <filename>.tar
|
||||
|
||||
This command will preserve the .tar file while unloading its contents
|
||||
into your current working directory. If you wish to list a table of
|
||||
contents of the tar file before actually unloading it you can do so
|
||||
with the command:
|
||||
|
||||
tar tvf <filename>.tar
|
||||
|
||||
|
||||
INSTALLING THIS RELEASE
|
||||
|
||||
This release is made up of a "sparse tree" of files that have changed
|
||||
since release 2.1.20. The new versions of the files should replace the
|
||||
corresponding CDE or Motif 2.1.20 versions of the files in your source
|
||||
tree.
|
||||
|
||||
|
||||
After the release is unloaded, you can use, for example, cp -R command
|
||||
to copy the sources from the current directory into your source tree.
|
||||
This release creates several new files. If you are using a symbolic
|
||||
link tree, you will need to create new links for them.
|
||||
|
||||
Please see the Release Notes from 2.1 for instructions on building
|
||||
a full release tree.
|
||||
|
||||
|
||||
IMPORTANT CHANGES IN THIS RELEASE
|
||||
|
||||
Defect Repair
|
||||
|
||||
This patch release resolves 515 problem reports against CDE and
|
||||
Motif 2.1.20. Each of these defects were resolved in one of three
|
||||
ways: fixed (problem was recreated and repaired), duplicate
|
||||
(problem was already reported and recorded in defect database),
|
||||
or canceled (problem could not be recreated in current code
|
||||
base). The breakdown by component and resolution type is:
|
||||
|
||||
FIXED: Total 370
|
||||
|
||||
CDE Code: 95 Motif Code: 91
|
||||
CDE Doc: 1 Motif Doc: 0
|
||||
CDE Test: 110 Motif Test: 73
|
||||
-------------- ---------------
|
||||
Total: 206 Total: 164
|
||||
|
||||
DUPLICATE: Total 62
|
||||
|
||||
CDE Code: 4 Motif Code: 10
|
||||
CDE Doc: 0 Motif Doc: 0
|
||||
CDE Test: 19 Motif Test: 29
|
||||
-------------- ---------------
|
||||
Total: 23 Total: 39
|
||||
|
||||
CANCEL: Total 83
|
||||
|
||||
CDE Code: 18 Motif Code: 30
|
||||
CDE Doc: 0 Motif Doc: 0
|
||||
CDE Test: 13 Motif Test: 22
|
||||
-------------- ---------------
|
||||
Total: 31 Total: 52
|
||||
|
||||
|
||||
For more information on the bugs resolved, see the file
|
||||
CLOSEDBUGS in this release.
|
||||
|
||||
As of the completion of this maintenance release there are no
|
||||
open defects against the CDE and Motif code and tests that have a
|
||||
priority of 1 or a severity of 1.
|
||||
|
||||
Security
|
||||
This release contains changes to address a number of security
|
||||
vulnerabilities in CDE that were reported to CERT during 1999.
|
||||
Those vulnerabilities are described in the CERT Advisory CA-99-11,
|
||||
Four Vulnerabilities in the Common Desktop Environment. A full
|
||||
description can be found on the CERT Web site at
|
||||
http://www.cert.org/advisories/CA-99-11-CDE.html.
|
||||
|
||||
A subset of those changes were released to the affected vendors
|
||||
via the CERT working group formed to address the reported problems.
|
||||
This release also includes additional changes to various CDE
|
||||
desktop facilities to sense access violations and report them
|
||||
to the user.
|
||||
|
||||
BUG LISTS
|
||||
|
||||
In the release archive there are two files, OPENBUGS and
|
||||
CLOSEDBUGS, which contain, respectively, the list of all bugs
|
||||
from any version of CDE or Motif not yet closed, and all bugs
|
||||
from CDE or Motif fixed in this patch release.
|
||||
|
||||
|
||||
BUILDING MOTIF FOR YOUR SYSTEM
|
||||
|
||||
Since X11 is NOT being delivered as part of this release, there
|
||||
are some minor changes in the build process for Motif with respect
|
||||
to the build process described in the 2.1 Release Notes.
|
||||
|
||||
Replace step 2 under the Building Motif subsection of Section 3:
|
||||
|
||||
2. If you are building with imports (the default setup in site.def),
|
||||
construct the necessary links as follows:
|
||||
|
||||
% cd $CDEBUILDDIR/motif
|
||||
% mkdir -p imports/x11
|
||||
% cd imports/x11
|
||||
% ln -s <X11_bin_directory> bin
|
||||
% ln -s <X11_includes_directory> includes
|
||||
% ln -s <X11_libs_directory> libs
|
||||
|
||||
|
||||
REFERENCE PLATFORMS
|
||||
|
||||
The Open Group has used a number of platforms during the
|
||||
development of the 2.1.30 release. However, the following
|
||||
reference platforms are the only ones where the complete
|
||||
test cycle was run. Test results appear below.
|
||||
|
||||
|
||||
CDE and Motif:
|
||||
HP9000/7xx running HP-UX 10.20
|
||||
Sun SPARCstation running Solaris 2.4
|
||||
using the SC 4.0 C compiler and SC 4.1 C++ compilers
|
||||
|
||||
Note that the Validation Suite for Motif (VSM) was also run on a
|
||||
Digital AlphaStation 200 running Digital UNIX 4.0D. Results were
|
||||
consistent with those on the reference platforms and are included
|
||||
in the test results archives.
|
||||
|
||||
|
||||
Changes to X11R6.4:
|
||||
|
||||
CDE and Motif 2.1.30 have been built and tested upon a base of
|
||||
X11R6.4 patchlevel 3. During the development of 2.1.20, a
|
||||
significant defect in the I18N code of X was discovered; if you have
|
||||
not yet corrected this problem, you are advised to do so prior
|
||||
to making use of 2.1.30.
|
||||
|
||||
The symptom is that when XMODIFIERS is not set, there is a possibility
|
||||
of memory corruption. It is recommended that the following patch
|
||||
be applied:
|
||||
|
||||
*** imInt.c@@/main/5 Sat May 30 21:04:36 1998
|
||||
--- xc/lib/X11/imInt.c Mon Aug 24 16:17:25 1998
|
||||
***************
|
||||
*** 1,4 ****
|
||||
! /* $TOG: README-2.1.30 /main/1 1999/12/14 14:52:14 devobj $ */
|
||||
/******************************************************************
|
||||
|
||||
Copyright 1992, 1993, 1994 by FUJITSU LIMITED
|
||||
--- 1,4 ----
|
||||
! /* $TOG: README-2.1.30 /main/1 1999/12/14 14:52:14 devobj $ */
|
||||
/******************************************************************
|
||||
|
||||
Copyright 1992, 1993, 1994 by FUJITSU LIMITED
|
||||
***************
|
||||
*** 166,174 ****
|
||||
_XimMakeImName(lcd)
|
||||
XLCd lcd;
|
||||
{
|
||||
! char* begin;
|
||||
! char* end;
|
||||
! char* ret;
|
||||
int i = 0;
|
||||
char* ximmodifier = XIMMODIFIER;
|
||||
|
||||
--- 166,174 ----
|
||||
_XimMakeImName(lcd)
|
||||
XLCd lcd;
|
||||
{
|
||||
! char* begin = NULL;
|
||||
! char* end = NULL;
|
||||
! char* ret = NULL;
|
||||
int i = 0;
|
||||
char* ximmodifier = XIMMODIFIER;
|
||||
|
||||
***************
|
||||
*** 182,189 ****
|
||||
}
|
||||
ret = Xmalloc(end - begin + 2);
|
||||
if (ret != NULL) {
|
||||
! (void)strncpy(ret, begin, end - begin + 1);
|
||||
! ret[end - begin + 1] = '\0';
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
--- 182,192 ----
|
||||
}
|
||||
ret = Xmalloc(end - begin + 2);
|
||||
if (ret != NULL) {
|
||||
! if (begin != NULL && end != NULL) {
|
||||
! (void)strncpy(ret, begin, end - begin + 1);
|
||||
! ret[end - begin + 1] = '\0';
|
||||
! }
|
||||
! else *ret = '\0';
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
TEST RESULTS SUMMARY
|
||||
|
||||
Since this is a general availability release, it has undergone
|
||||
the full quality assurance cycle. The cycle includes running the
|
||||
following test suites:
|
||||
|
||||
QATS - Motif Quality Assurance Test Suite
|
||||
VSM 4.1 - Motif Validation Suite
|
||||
CDE Regression Tests
|
||||
|
||||
The results of these test runs can be found in the release
|
||||
archive under cde-test-misc/reports/cde-2.1.30 and
|
||||
motif-test-misc/reports/cde-2.1.30.
|
||||
326
cde/README-2.1.30.snapshot
Normal file
326
cde/README-2.1.30.snapshot
Normal file
@@ -0,0 +1,326 @@
|
||||
|
||||
**********************************************************************
|
||||
NOTE: CDE/MOTIF IS LICENSED SOFTWARE. SOURCE AND OBJECT CODE IS NOT
|
||||
TO BE DISTRIBUTED TO THIRD PARTIES EXCEPT AS PROVIDED BY THE TERMS OF
|
||||
YOUR LICENSE AGREEMENT. PASSIVE DISTRIBUTION TO UNIDENTIFIED PARTIES,
|
||||
SUCH AS MAKING FILES AVAILABLE FOR UNRESTRICTED ELECTRONIC FILE
|
||||
TRANSFER, IS STRICTLY PROHIBITED BY THE LICENSE.
|
||||
|
||||
THESE RESTRICTIONS APPLY TO ANY PARTY TO WHOM THE SOFTWARE HAS BEEN
|
||||
DISTRIBUTED.
|
||||
**********************************************************************
|
||||
|
||||
THE PURPOSE OF THIS RELEASE
|
||||
|
||||
This is the snapshot release prior to the third and final
|
||||
maintenance release for CDE and Motif 2.1. It was designed to
|
||||
resolve as many defects as possible from the project's defect
|
||||
database. This maintenance release resolves 243 problem reports
|
||||
against CDE and Motif 2.1.20.
|
||||
|
||||
The Open Group encourages the reporting of all bugs found in CDE
|
||||
and Motif regardless of the platform or hardware configuration in
|
||||
which the bug is found. However, The Open Group will commit to
|
||||
accept (and repair according to priority) only those bugs that can
|
||||
be replicated on the current reference configurations.
|
||||
|
||||
|
||||
DOWNLOAD INSTRUCTIIONS
|
||||
|
||||
This section describes how to unload the release archives
|
||||
available at this ftp site, including information about how much
|
||||
disk space is required.
|
||||
|
||||
The CDE/Motif 2.1.30 snapshot release is provided as a compressed
|
||||
tar archives consisting of a sparce tree (i.e. only those files
|
||||
which have been added or which have been modified since 2.1.20).
|
||||
|
||||
|
||||
README-2.1.30.snapshot - this file
|
||||
|
||||
cde.tar.Z - a compressed tar file of the
|
||||
CDE 2.1.30 snapshot source code
|
||||
|
||||
cde-test.tar.Z - a compressed tar file of the
|
||||
CDE 2.1.30 snapshot tests
|
||||
|
||||
cde-test-misc.tar.Z - a compressed tar file of
|
||||
test results for CDE/Motif
|
||||
2.1.30 snapshot
|
||||
|
||||
motif.tar.Z - a compressed tar file of the
|
||||
MOTIF 2.1.30 snapshot source code
|
||||
|
||||
motif-test-misc.tar.Z - a compressed tar file of
|
||||
test results for Motif 2.1.30
|
||||
snapshot
|
||||
|
||||
|
||||
The CDE/Motif 2.1.30 snapshot release is in the form of a sparse tree;
|
||||
that is, it contains only files that have been added or modified in
|
||||
either CDE or Motif since the 2.1.20 release. If you are a CDE
|
||||
licensee you will receive files for both CDE and Motif. If you are
|
||||
a Motif-only licensee you will receive files just for Motif.
|
||||
|
||||
After ftp-ing the files to your machine, you should first uncompress
|
||||
the compressed (*.Z) files with the command:
|
||||
|
||||
uncompress <filename>.Z
|
||||
|
||||
Once the tar archives have been uncompressed, you can untar each
|
||||
with the command:
|
||||
|
||||
tar xvf <filename>.tar
|
||||
|
||||
This command will preserve the .tar file while unloading its contents
|
||||
into your current working directory. If you wish to list a table of
|
||||
contents of the tar file before actually unloading it you can do so
|
||||
with the command:
|
||||
|
||||
tar tvf <filename>.tar
|
||||
|
||||
|
||||
INSTALLING THIS RELEASE
|
||||
|
||||
This release is made up of a "sparse tree" of files that have been
|
||||
added or changed since release 2.1.20. The new versions of the files
|
||||
should replace the corresponding CDE or Motif 2.1.20 versions of the
|
||||
files in your source tree.
|
||||
|
||||
|
||||
After the release is unloaded, you can use, for example, cp -R command
|
||||
to copy the sources from the current directory into your source tree.
|
||||
This release creates several new files. If you are using a symbolic
|
||||
link tree, you will need to create new links for them.
|
||||
|
||||
Please see the Release Notes from 2.1 for instructions on building
|
||||
a full release tree.
|
||||
|
||||
|
||||
IMPORTANT CHANGES IN THIS RELEASE
|
||||
|
||||
Defect Repair
|
||||
|
||||
This patch release resolves 243 problem reports against CDE and
|
||||
Motif 2.1.20. Each of these defects were resolved in one of three
|
||||
ways: fixed (problem was recreated and repaired), duplicate
|
||||
(problem was already reported and recorded in defect database),
|
||||
or cancelled (problem could not be recreated in current code
|
||||
base). The breakdown by component and resolution type is:
|
||||
|
||||
FIXED: Total 174
|
||||
|
||||
CDE Code: 40 Motif Code: 51
|
||||
CDE Doc: 1 Motif Doc: 0
|
||||
CDE Test: 43 Motif Test: 39
|
||||
-------------- ---------------
|
||||
Total: 84 Total: 90
|
||||
|
||||
DUPLICATE: Total 25
|
||||
|
||||
CDE Code: 2 Motif Code: 4
|
||||
CDE Doc: 0 Motif Doc: 0
|
||||
CDE Test: 0 Motif Test: 19
|
||||
-------------- ---------------
|
||||
Total: 2 Total: 23
|
||||
|
||||
CANCEL: Total 44
|
||||
|
||||
CDE Code: 13 Motif Code: 19
|
||||
CDE Doc: 0 Motif Doc: 0
|
||||
CDE Test: 2 Motif Test: 10
|
||||
-------------- ---------------
|
||||
Total: 15 Total: 29
|
||||
|
||||
TOTAL: Total 243
|
||||
|
||||
CDE Code: 55 Motif Code: 74
|
||||
CDE Doc: 1 Motif Doc: 0
|
||||
CDE Test: 45 Motif Test: 68
|
||||
-------------- ---------------
|
||||
Total: 101 Total: 142
|
||||
|
||||
|
||||
For more information on the bugs resolved, see the file
|
||||
CLOSEDBUGS in this release.
|
||||
|
||||
Test Improvements
|
||||
|
||||
A significant number of CDE and Motif test defects were resolved
|
||||
for the CDE/Motif 2.1.30 snapshot release. For the most part, these
|
||||
represent an ongoing effort to establish a clean baseline in
|
||||
Motif and reduce the overhead of false negatives in CDE.
|
||||
|
||||
BUG LISTS
|
||||
|
||||
In the release archive there are two files, OPENBUGS and
|
||||
CLOSEDBUGS, which contain, respectively, the list of all bugs
|
||||
from any version of CDE or Motif not yet closed, and all bugs
|
||||
from CDE or Motif fixed in this patch release.
|
||||
|
||||
|
||||
BUILDING MOTIF FOR YOUR SYSTEM
|
||||
|
||||
Since X11 is NOT being delivered as part of this release, there
|
||||
are some minor changes in the build process for Motif with respect
|
||||
to the build process described in the 2.1 Release Notes.
|
||||
|
||||
Replace step 2 under the Building Motif subsection of Section 3:
|
||||
|
||||
2. If you are building with imports (the default setup in site.def),
|
||||
construct the necessary links as follows:
|
||||
|
||||
% cd $CDEBUILDDIR/motif
|
||||
% mkdir -p imports/x11
|
||||
% cd imports/x11
|
||||
% ln -s <X11_bin_directory> bin
|
||||
% ln -s <X11_includes_directory> includes
|
||||
% ln -s <X11_libs_directory> libs
|
||||
|
||||
|
||||
REFERENCE PLATFORMS
|
||||
|
||||
The Open Group has used a number of platforms during the
|
||||
development of the CDE/Motif 2.1.30 snapshot release. However,
|
||||
the following reference platforms are the only ones where the
|
||||
snapshot test cycle was run. Test results appear below.
|
||||
|
||||
|
||||
CDE and Motif:
|
||||
HP9000/7xx running HP-UX 10.20
|
||||
Sun SPARCstation running Solaris 2.4
|
||||
using the SC 4.0 C compiler and SC 4.1 C++ compilers
|
||||
|
||||
|
||||
Changes to X11R6.4:
|
||||
|
||||
Both the 2.1.20 and the 2.1.30 snapshot releases of CDE and Motif
|
||||
have been built and tested upon a base of X11R6.4 patchlevel 3.
|
||||
During the development of 2.1.20, a significant defect in the I18N
|
||||
code of X was discovered. The symptom is that when XMODIFIERS is
|
||||
not set, there is a possibility of memory corruption. It is
|
||||
recommended that the following patch be applied if it has not
|
||||
already been done:
|
||||
|
||||
*** imInt.c@@/main/5 Sat May 30 21:04:36 1998
|
||||
--- xc/lib/X11/imInt.c Mon Aug 24 16:17:25 1998
|
||||
***************
|
||||
*** 1,4 ****
|
||||
! /* $TOG: README-2.1.30.snapshot /main/1 1999/06/29 12:30:31 devobj $ */
|
||||
/******************************************************************
|
||||
|
||||
Copyright 1992, 1993, 1994 by FUJITSU LIMITED
|
||||
--- 1,4 ----
|
||||
! /* $TOG: README-2.1.30.snapshot /main/1 1999/06/29 12:30:31 devobj $ */
|
||||
/******************************************************************
|
||||
|
||||
Copyright 1992, 1993, 1994 by FUJITSU LIMITED
|
||||
***************
|
||||
*** 166,174 ****
|
||||
_XimMakeImName(lcd)
|
||||
XLCd lcd;
|
||||
{
|
||||
! char* begin;
|
||||
! char* end;
|
||||
! char* ret;
|
||||
int i = 0;
|
||||
char* ximmodifier = XIMMODIFIER;
|
||||
|
||||
--- 166,174 ----
|
||||
_XimMakeImName(lcd)
|
||||
XLCd lcd;
|
||||
{
|
||||
! char* begin = NULL;
|
||||
! char* end = NULL;
|
||||
! char* ret = NULL;
|
||||
int i = 0;
|
||||
char* ximmodifier = XIMMODIFIER;
|
||||
|
||||
***************
|
||||
*** 182,189 ****
|
||||
}
|
||||
ret = Xmalloc(end - begin + 2);
|
||||
if (ret != NULL) {
|
||||
! (void)strncpy(ret, begin, end - begin + 1);
|
||||
! ret[end - begin + 1] = '\0';
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
--- 182,192 ----
|
||||
}
|
||||
ret = Xmalloc(end - begin + 2);
|
||||
if (ret != NULL) {
|
||||
! if (begin != NULL && end != NULL) {
|
||||
! (void)strncpy(ret, begin, end - begin + 1);
|
||||
! ret[end - begin + 1] = '\0';
|
||||
! }
|
||||
! else *ret = '\0';
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
TEST RESULTS SUMMARY
|
||||
|
||||
Since this is a snapshot release, only those components which were
|
||||
modified have undergone quality assurance testing. The cycle for
|
||||
the 2.1.30 snapshot includes running the following test suites:
|
||||
|
||||
QATS - Motif Quality Assurance Test Suite
|
||||
|
||||
Automated regressions tests in the following directories:
|
||||
|
||||
Toolkit/Buttons
|
||||
Toolkit/ComboBox
|
||||
Toolkit/Container
|
||||
Toolkit/Converters
|
||||
Toolkit/Form
|
||||
Toolkit/IconVC
|
||||
Toolkit/List
|
||||
Toolkit/Manager
|
||||
Toolkit/Menus
|
||||
Toolkit/Message
|
||||
Toolkit/Notebook
|
||||
Toolkit/PanedWin
|
||||
Toolkit/Primitive
|
||||
Toolkit/ResInd
|
||||
Toolkit/Scrollbar
|
||||
Toolkit/Select
|
||||
Toolkit/Shells
|
||||
Toolkit/SpinBox
|
||||
Toolkit/Text
|
||||
Toolkit/Traversal
|
||||
Toolkit/Windows
|
||||
XmString
|
||||
uil/EnumVal
|
||||
uil/ForRef
|
||||
uil/ResInd
|
||||
uil/Syntax
|
||||
uil/widgets
|
||||
|
||||
Manual regression tests in the following directories:
|
||||
|
||||
Toolkit/Manual
|
||||
uil/Manual/callUil
|
||||
uil/Manual/dataStructs
|
||||
uil/Manual/validator
|
||||
uil/Manual/Callback
|
||||
uil/Manual/NL
|
||||
|
||||
|
||||
CDE Regression Tests for the following components:
|
||||
|
||||
DefConfig
|
||||
DevEnv
|
||||
DtHelp
|
||||
DtSvc
|
||||
dragdrop
|
||||
dtcm
|
||||
dthelp
|
||||
dtlogin
|
||||
dtmail
|
||||
dtsession
|
||||
dtwm
|
||||
|
||||
The results of these test runs can be found in the release
|
||||
archive under cde-test-misc/reports/cde-2.1.30/.../2.1.30C2.
|
||||
5595
cde/ReleaseNotes.ps
Normal file
5595
cde/ReleaseNotes.ps
Normal file
File diff suppressed because it is too large
Load Diff
1601
cde/ReleaseNotes.sgm
Normal file
1601
cde/ReleaseNotes.sgm
Normal file
File diff suppressed because it is too large
Load Diff
95
cde/admin/BuildTools/fnrclone/Makefile
Normal file
95
cde/admin/BuildTools/fnrclone/Makefile
Normal 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
|
||||
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.300.80
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.300.80
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.300.90
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.300.90
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.700.100
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.700.100
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.700.807
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.700.807
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.700.90
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.700.90
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.800.100
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.800.100
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.800.80
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.800.80
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.800.90
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.800.90
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.AIX
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.AIX
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.HP-UX
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.HP-UX
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.SunOS
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.SunOS
Executable file
Binary file not shown.
179
cde/admin/BuildTools/fnrclone/findnewrcs.UNIX_SV
Executable file
179
cde/admin/BuildTools/fnrclone/findnewrcs.UNIX_SV
Executable file
@@ -0,0 +1,179 @@
|
||||
ELF 4q4 (44<><34><03>\<5C>\<5C>]]<03> X````<60>/usr/lib/ld.so.1C_7EWT5Z1%[K\N;]LJ S6?Q:X3D2^IA4M8)/HUPCO#V+"&$,*90'->!BF<G=(@YR.<01><01>x h<0B><0B> N<> N<>
|
||||
O<>]_t
|
||||
_<>`\```<60>`<60>@^<5E>8"]<5D>@^8"N<> #<0E>
|
||||
T(b02_(H"7]<5D>`>`<60>@!CfX<11><>H]<5D><03>ODd<02>[_d8"a^<5E>D"f xmb4v^<5E>8"|<0E>@<08>]<5D>\"<22>^<5E>T<12>^<5E><>"<22>^t"<22>]<5D>\<12>^\<5C><12>\<5C><11><><EFBFBD>]0<><12>^<5E>8"<22>^Px"<22>^D"<22>b4!<11>`<60><11><><EFBFBD>]l8"<22>]H<12>^<5E>8"<22>_8"<22>^<5E>8"<22>b8]<,+8^,|_4H"]<5D>p%]<5D>D"+b<2b@8^<5E><>"?]<5D>@FN<>
|
||||
S^8HY]T<01>a]<5D><>h_T"mbDt_,"{fD<01>`\<11><><01>_Xx"<01>fH<01>_L8"<01>^<5E>8"<01>]<5D>|<01>]`0<01>^<5E> "<01>^D<01><01>]<5D><01><01>``<11><><01>_@8"<01>^ <20><01>]x<"fL^h<>"__iobopenstrrchrreadlink_finimainSourceLenreadmalloc_iob_endstrcatResolveLinkchownfork_start_environcreatUsagegetcwdfflushdup2readdirfreeperror_etextatexitsymlinkchdirstatenviron_edatamktemp_exitutimeclosermdirWorkingDirCmpexitGetNewfopenwritestrcmplstatoptinderrnofilenostrcpy_lib_versionfgetsfprintfstrlenwaitBufferexeclpoptarg_GLOBAL_OFFSET_TABLE_getgrnamSourceDirCmpmkdirunlinksprintfsetvbufclosedirfcloseprintf_DYNAMICchmodstrncmpgetoptWorkingLen_initopendirlibc.so.1/usr/ucblibb4&`<60> fDMb<Bb@C]00]<<]H7]TH]`T]l6]x[]<5D>)]<5D>I]<5D>]<5D>S]<5D>E]<5D>!]<5D>A]<5D>]<5D>@]<5D>W]<5D>-^3^^ Z^,>^8G^DV^P2^\.^h^^t,^<5E>U^<5E>*^<5E>:^<5E>R^<5E>8^<5E>'^<5E>1^<5E>$^<5E>^<5E>D^<5E>+_L_J_9_(_4?_@Y_LQ_XO_d#<15>㿠<EFBFBD><E3BFA0><EFBFBD><08><><EFBFBD> <20><03>@<40><03>D<EFBFBD>, <02><04><04>@'<27><>$<24>4<EFBFBD>#<23> <20><><02><04>@S<>S<>"<22>@S<><><7F><EFBFBD><01><10><11><12>@@S<>@S<>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<11><>!S<>c<><63><07>D@S<><01> @S<><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD>'<27><><EFBFBD>'<27><><EFBFBD>'<27><><11><>!<21> <20> @<40>$@S<><11><>#<23>@S<><13><>"c<><63><07>D<EFBFBD><07>H<15><><12>@S<><01><08><>?<3F><02><><10><><15><><02>D<EFBFBD>'<27><><10><><17><><02>D<EFBFBD>'<27><><10><><19><>"D<>O<EFBFBD><4F>
|
||||
<02>P<10>=<1F><>㰞<03>!<21><>$#<23>#<23><>c<><63>`%<25><>$<24><>'<27><>㼦<04>)<29><>%#<23>+<2B><>c<><63>`-<2D><>%<25><><10>5/<2F><>㰮<05>1<><31>&#<23><10>.3<><33>c<><63>`5<><35>&<26><><10>'7<><37>㼶<06><11><>"#<23><10> <13><>c<><63>`<15><>"<22><><10><01><07>H<EFBFBD><02><EFBFBD><7F><EFBFBD><01> @S/<10><01>O<EFBFBD><4F> A<02><>À<EFBFBD> a<02><>׀<EFBFBD> m<02><>ꀢ o<02><>ڀ<EFBFBD> x<02><><EFBFBD><10><><EFBFBD><01> <10><><EFBFBD><10><1B><>c<><63>`<1F><>#<23><><10>x!<21><>#<23><> #<23><>$c<><10>q%<25><><04><><EFBFBD><04>'<27><>$<24><><10>j<01> +<2B><>%c<><10>e<01> /<2F><>%<25><><10>`<01> 3<><33>&c<><10>[5<><35><06><><EFBFBD><06>7<><37>&<26><><10>T<11><>#<23><> <13><>"c<><10>M<15><><02><><EFBFBD><02><17><>"<22><><10>F<19><>#<23><> <1B><>#c<><10>?<1F><>㜞<03>!<21><>$#<23><10>8#<23><>bD%<25><>$<24><><10>2'<27><><04>D)<29><>%#<23><10>,+<2B><>%c<><10>(-<2D><><05><><EFBFBD><05>/<2F><>%<25><><10>!<01><07>H<EFBFBD><><7F><01> @R<><10><01><1D>" C<><43> ;<18><><EFBFBD>S<><12><><EFBFBD>2 <05>@ <09>@ <09>.`<03>@<08>
|
||||
`<1F><1B>*`<03>
|
||||
<EFBFBD><EFBFBD><EFBFBD><12><><EFBFBD><01>
|
||||
<EFBFBD> <04><><10><><01><07><><EFBFBD><EFBFBD><02><01><07><><EFBFBD>K@<40><><02><01><07><><EFBFBD>L<EFBFBD><4C>`/<02>A<11><>"D<>$@R<><01><08><> <12>
|
||||
<01><07>H<EFBFBD><04>U<>`<60><11><>!@R<><01> @Ry<01><07><><EFBFBD><EFBFBD><02><01><07><><EFBFBD>M<EFBFBD><4D><02><01><07><>@R<><01><08>@R~<01><1B> @R}<01>'<27>h<EFBFBD><07>hU<>`<60><><1C><07><>@Rx<01><07>h<EFBFBD>'<27><><10>
|
||||
<01>@Rk<01> @Rk<01>'<27><><EFBFBD><07><><EFBFBD>@Rl<01><07><><EFBFBD><EFBFBD><02><01><07><><EFBFBD>N<EFBFBD><4E><12>@<01><07><>@RW<01> @RW<01>'<27><><EFBFBD><07><><EFBFBD><07><>@RX<01><07><>U<>`<60>@RV<01><07>l<EFBFBD><07><>@RU<01><><12><01><07><>7<<3C><0E>(<28><> <12><01><07><><EFBFBD> @<0B><01>'<27><><EFBFBD><07><><EFBFBD> /@RE<01><08>O<EFBFBD><4F>
|
||||
<02><01>U<>`<60>@R><01><><12><01>/<11><>!U<>`<60><><07><>@R<10>0<01><07><><EFBFBD>J<EFBFBD><4A><EFBFBD> /<02>+<11><>"D<>$@R<01><08><> <12>
|
||||
<01><07>H<EFBFBD>@U<>`<60><11><>!@Q<><01> @Q<><01><07><>@R<01><08>@Q<><01><1B> @Q<><01>'<27>h<EFBFBD><07>hU<>a<14><1C><07><>@Q<><01><07>h<EFBFBD>'<27><><EFBFBD><07><><EFBFBD><07><>@Q<><01><><12><01><07><><EFBFBD> <01>'<27><><EFBFBD><07><>@Q<><01> @Q<>#<23><>$b8<11><>"8<><07><>@Q<><11><>"8U<>a@Q<><01><07><>@Q<><01> @Q<>%<25><>$<24>H<11><>"H<><07><>@Q<><11><>"HU<>a @Q<><11><>"8@Q<>'<27><>$<24>L<11><>"H@Q<>)<29><>%"0+<2B><>cĀ<63><02>-<2D><><05><><EFBFBD><EFBFBD><02>
|
||||
<11><>#<23>@<0B><11><>#<23>@b<10>%U<>!$@Q<>U<>!0@Q<>U<>!`<60><07><>@Q<>U<>!|<7C><07><>@Q<>/<2F><>㜀<><02>
|
||||
U<>!<21><13><>c<><15><><02><>@Q<>U<>!<21>@Q<>1<><31>"<<3C><07>D<EFBFBD><44><16>R5<><35><06><<3C><07>D<EFBFBD><44><EFBFBD><16>J<11><>"<<3C>* <02><07>H<EFBFBD><02> @Qh<01><08><07><>@Qd<01><1B> @Qc<01>'<27>h<17><><02><<3C>*<2A><02><07>H<EFBFBD>@U<>a<><61><07>h<EFBFBD><07><>@QZ<1F><><03><<3C>+<2B><02><07>H<EFBFBD>@@QM<01><08><07><>@QI<01><1B> @QH<01>'<27>d%<25><><04><<3C>,<2C><02><07>H<EFBFBD>U<>a<><61><07>d<EFBFBD><07><>@Q?<01><07>d<EFBFBD><07>h<EFBFBD><07><>@<01><07>d@QL<01><07>h@QI+<2B><>b<<3C>`-<2D><>%<25><<10><><EFBFBD><10><01><07><><EFBFBD><07><><EFBFBD><07><>@<01> @Q<01><><EFBFBD><08><>?<3F><><EFBFBD>bȝ<62><C89D><01>'<27>D<EFBFBD>'<27>H<EFBFBD>'<27>L<EFBFBD>'<27>@<40>'<27><<3C>'<27>8<11><>#<23><><EFBFBD><02> <11><>!U<>a<><61><07>H@P<><13><>c<><63><EFBFBD>`<04>
|
||||
<11><>!U<>a<><61><07>D<EFBFBD><07>H@P<>U<>!<21>@P<><01><08><07>D@P<><01><1D> @P<><01>'<27><><EFBFBD><07><>U<>b<><07>D@P<><15><><02><><EFBFBD><EFBFBD>
|
||||
<04> <11><>!U<>b<08><07><>@P<><01><07>P<EFBFBD><07><>@P<><01><><02><><01><07>D<EFBFBD><07><><EFBFBD>$@P<><01><><16><>U<>"@P<><01><08><07>H@P<><01><1D> @P<><01>'<27>H<EFBFBD><07>HU<>b <20><07>H@P<>U<>"(@P<><01><08><07>H@P<><01><1D> @P<><01>'<27>D<EFBFBD><07>DU<>b0<62><07>H@P<><01><07>H<EFBFBD> @
|
||||
V<01>'<27>H<17><>㌀<><04> <11><>!U<>b8<62><07>H@P<><01><07>P<EFBFBD><07>H@P<><01><><02>
|
||||
<01><07>D<EFBFBD><07>D<EFBFBD>$@P<><01><><04>S<19><>#<23><><EFBFBD><12>N<1B><>c<><63><EFBFBD>
|
||||
<12><01><07><><1F><><03>L<EFBFBD><02>U<>bL<11><>!@Pb!<21><>#Ā<><02><01><07><>@<0B><01><07>H<EFBFBD><07><>@=<10>1<01><07><>#<23><>bL<62>@U<>"d@Ps<01><07>H<EFBFBD><07>H<15><><02>0@Py<01><><12> <01><07>H'<27><><04>0<EFBFBD>L<EFBFBD><13><> /<02>
|
||||
<01><07><>+<2B><>bL<62><02><15><07>HU<>"t@PZ<10><01><07>H-<2D><><05>0<EFBFBD>@<16><07><>/<2F><><05>L<EFBFBD><02>U<>"<22>@PL<01><07><>@PL<01><07>H<EFBFBD>'<27><><EFBFBD>
|
||||
<EFBFBD>'<27>L<EFBFBD><07>L<EFBFBD><4C><04>`<01><07>P<EFBFBD><07><>@P4<01><><12>R<01><07>d9<<3C><0E>(<28><>@<12> <01><07><><EFBFBD> @ <09><01>'<27><><10>B<01><07>d<<3C>
|
||||
@
|
||||
<20><><EFBFBD><12>9<01><07><>U<>b<>@P/<01>'<27><><EFBFBD><EFBFBD><02>.<11><>"D<>$<24><07><>@P(<11><>"D@O<><1B><>bC<62>*
|
||||
<EFBFBD><07><>@P<11><>"D@O<><01> @O<><01>'<27><><EFBFBD><07><><13><>bD@O<><1F><>㌀<><02> <11><>!U<>b<><62><07><>@O<><01><07><>@P<10><10><10><10><01><07>L<EFBFBD>$ <01>'<27>L<10><><EFBFBD><01><07>L<EFBFBD><4C><14>%<25><><04><><EFBFBD><EFBFBD><12> <11><>!U<>b<><62><07><>@O<><01>'<27>8<EFBFBD><07><>@O<><01><><02>'<27><><04>@<40><><EFBFBD><02><01><07><>@O<><10><>U<>"<22>@O<><01>'<27>܀<EFBFBD><02><><01><07><>@O<><01>'<27><EFBFBD><02><><01><07>ؐ
|
||||
@O<><01><> <1A><10><><EFBFBD><01><07>ؐ
|
||||
@O<><01><07>ؐ<08> U<>b<>@O<><01><><02><10><><EFBFBD><11><>"D<><07><>@O<><11><>"DU<>b<>@O<><01><07>ؒ`
|
||||
<11><>"D@O}<01><07>ؐ
|
||||
<EFBFBD><07>P@O<><01><><02><11><>"D@O<><10><><EFBFBD><01><07>8<EFBFBD><38><02><01>!,@O_<01><07>,<2C>%<25>(<28><07>,<2C><05>(<28>'<27>,<10><01>!,@OU<01>'<27>8<EFBFBD><07>8<EFBFBD>'<27>,<2C><07>,<2C>&<26>(<28><07>,<2C>&<26><11><>"D@OG<01> @OG<01><07>,<2C>'<27><07>,<2C>@<13><>bD@OE<01><07>ؐ
|
||||
@O8<01><07>ؔ`
|
||||
<EFBFBD><02><08>*<2A><><EFBFBD><07>ؐ
|
||||
@O0<01> @O0<01><07>,<2C># <04><07>,<2C>`<04><07>ؒ`
|
||||
@O.<01><07>ؐ
|
||||
@O!<01><07>,<2C>#<23><08><07>,<2C> <10><07>P<EFBFBD><04><><EFBFBD>$`<60><><04><><EFBFBD>$`<60><> <20><>%<25><04><04><16>$@<16>%<25><04><04><16>$@<16>%<25><04><04><16>$@<16><><EFBFBD><04><04><12><><EFBFBD><EFBFBD>$@<16><07>,<2C> <01>%<25><><EFBFBD><07>,<2C>&a$<10><>c<01><07><>@O<<01>'<27>@<40><07>D@O,<01><><02>5<><35><06>@<40><><EFBFBD><02><01><07>D@O$<10><>U<>"<22>@O!<01>'<27>܀<EFBFBD><02><><01><07><>@O<01>'<27><EFBFBD><02><><01><07><><EFBFBD>N<EFBFBD>
|
||||
<EFBFBD><EFBFBD> .<02><01><07>ؐ
|
||||
U<>b<>@N<><01><><12><10><><EFBFBD><11><>"D<><07>D@N<><11><>"DU<>b<>@N<><01><07>ؒ`
|
||||
<11><>"D@N<><01><07>ؐ
|
||||
<EFBFBD><07>P@N<><01><><02><01><07>ؒ`
|
||||
U<>"<22>@N<><01><><02><11><>"D@N<><10><><EFBFBD><01><07>@<40><><02><01>!,@N<><01><07>4<EFBFBD>"a(<28><07>4<EFBFBD><02>(<28>'<27>4<10><01>!,@N<><01>'<27>@<40><07>@<40>'<27>4<EFBFBD><07>4<EFBFBD>#a(<28><07>4<EFBFBD>#<23><11><>"D@N<><01> @N<><01><07>4<EFBFBD>$<24><07>4<EFBFBD>@<13><>bD@N<><01><07>ؐ
|
||||
@N}<01> @N}<01><07>4<EFBFBD>$<24><04><07>4<EFBFBD><04><04><07>ؒ`
|
||||
@N{<01><07>ؐ
|
||||
@Nn<01><07>4<EFBFBD>% <08><07>4<EFBFBD>`<10><07>P<EFBFBD><05><><EFBFBD>%<25><><EFBFBD><05><><EFBFBD>%<25><><EFBFBD> <20><>&<26><04><05><1A>%<25><1A>&<26><04><05><1A>%<25><1A>&<26><04><05><1A>%<25><1A><><EFBFBD><04><05><12><><EFBFBD><EFBFBD>%<25><1A><07>4<EFBFBD> <01>&<26><><EFBFBD><07>d<<3C>@<10><>@
|
||||
<12>$<01><07>ؐ
|
||||
<EFBFBD><07>P@NW<01><><12><01><07>4<EFBFBD><02><><EFBFBD><07>P<EFBFBD>`<60><># <20><>`<60><># <20><> <20><>$<24><04>@<12>#<12>$<24><04>@<12>#<12>$<24><04>@<12>#<12><><EFBFBD><04>@<12><><EFBFBD><EFBFBD>#<12><07>4<EFBFBD> <01>$<24>$<10><01><07>4<EFBFBD>%a$<10><>B<01><07><>@N`<01>'<27><<3C><07>L<EFBFBD><4C><12><><01><07>H@NL<01><><02>/<2F><><05>@<40><><EFBFBD><02><01><07>H@ND<10><>U<>"<22>@NA<01>'<27>܀<EFBFBD><02><><01><07><>@N=<01>'<27><EFBFBD><02><><01><07><><EFBFBD>N
|
||||
<EFBFBD><EFBFBD>`.<02><01><07>ؐ
|
||||
U<>b<>@N
|
||||
<01><><12><10><><EFBFBD><11><>"D<><07>H@M<><11><>"DU<>b<>@M<><01><07>ؒ`
|
||||
<11><>"D@M<><01><07>ؐ
|
||||
<EFBFBD><07>P@M<><01><><02><11><>"D@N<10><><EFBFBD><01><07><<3C><><02><01>!,@M<><01><07>0<EFBFBD>&<26>(<28><07>0<EFBFBD>!(<28>'<27>0<10><01>!,@M<><01>'<27><<3C><07><<3C>'<27>0<EFBFBD><07>0<EFBFBD>"a(<28><07>0<EFBFBD>"<22><11><>"D@M<><01> @M<><01><07>0<EFBFBD>"<22><><07>0<EFBFBD><13><>bD@M<><01><07>ؐ
|
||||
@M<><01> @M<><01><07>0<EFBFBD>#`<04><07>0<EFBFBD><03><04><07>ؒ`
|
||||
@M<><01><07>ؐ
|
||||
@M<><01><07>0<EFBFBD>$ <08><07>0<EFBFBD>`<60><><07>P<EFBFBD><04><><EFBFBD>$<24><><EFBFBD><04><><EFBFBD>$<24><><EFBFBD> <20><>%<25><04><04><16>$<24><16>%<25><04><04><16>$<24><16>%<25><04><04><16>$<24><16><><EFBFBD><04><04><12><><EFBFBD><EFBFBD>$<24><16><07>0<EFBFBD> <01>%<25>$<24><07>d5<<3C>@9(<28><><EFBFBD><12><01><07>ؐ
|
||||
<EFBFBD><07>P@M<><01><07>0<EFBFBD>`<10><07>P<EFBFBD>`<60><>" <20><>`<60><>" <20><> <20><># <04>@<0C>"<0C># <04>@<0C>"<0C># <04>@<0C>"<0C><> <04>@<12><><EFBFBD><EFBFBD>"<0C><07>0<EFBFBD> <01>#`<60><10><>R<01><07><>@M<>!<21><>#<23><><EFBFBD><02> <11><>!U<>c<><07>D@M9<01><07>@<40>'<27>4<EFBFBD><07>4<EFBFBD><34><02><03>'<27><>㌀<><E38C80><04><01><07>4<EFBFBD> <04><07>4<EFBFBD>@U<>c(<11><>!@M$<01>'<27>(<28><07>4<EFBFBD><05><08><07>4<EFBFBD> <04>@<17>&<26><02>'<27>H<EFBFBD><07>4<EFBFBD> <08><>`<06><<01><07>HU<>cL@M6<01><><12><01><07>(<28> <01>'<27>(<13><>c<><63><EFBFBD> <12><15><><02><><EFBFBD><EFBFBD><EFBFBD><04><11><>!U<>cP@L<><10><03><01><07>HU<>cd@M<01><><12><01><07>(<28><02><01>'<27>(<19><>#<23><><EFBFBD><12><1B><>c<><63><EFBFBD>`<04><11><>!U<>ch@L<><10><03><11><>#<23>@L<><01><08><07>4<EFBFBD><03><13><>c<>@M<01><><12><01><07>(<28> <01>'<27>(#<23><>c<><63><EFBFBD><12>%<25><><04><><EFBFBD><EFBFBD><EFBFBD><04><11><>!U<>c|@L<><10>u<01><07>4<EFBFBD><04>U<>c<>@L<><01><><12>)<29><>#<23><><EFBFBD> <04><11><>!U<>c<>@L<><10>_+<2B><>cЀ<63><12><01><07>4<EFBFBD><05>U<>c<>@L<><01><><12>/<2F><>㌀<><E38C80><04><11><>!U<>c<>@L<><10>D1<><31>#<23><><EFBFBD><12>"<01><07>4<EFBFBD>`<60><><EFBFBD><02><01><07>4<EFBFBD><06>$;<<3C> <20><> <12><01><07>4<EFBFBD><02>$<24>
|
||||
<EFBFBD>I<EFBFBD><EFBFBD> I<12><1B><>c<><63><EFBFBD>`<04><11><>!U<>c<>@Lf<10><01><07><<3C>'<27>0<EFBFBD><07>0<EFBFBD><30><02><01><07>0<EFBFBD>`<08><07>4<EFBFBD><04><08><><12><01><07>4<EFBFBD>`<04><07>0<EFBFBD><05>@Lu<01><><12><01><07>0<EFBFBD><05><0C> <01>%<25><10><01><07>0<EFBFBD>a(<28>'<27>0<10><><EFBFBD>7<><37>㌀<><E38C80><04><01><07>0<EFBFBD><30><02><01><07>0<EFBFBD>`<04><07>0<EFBFBD>U<>c<><11><>!@L0<10><11><>!V<>`@L(<01><07>4<EFBFBD>`<60><><EFBFBD>
|
||||
<02>8<01><07>4<EFBFBD><02>$<<3C>
|
||||
!<10><><EFBFBD><12>0#<23><>cȀ<63><12><01><07>4<EFBFBD><04>$<24><><02>
|
||||
<01><07>4<EFBFBD> <20>-<<3C>
|
||||
@1(<28><><EFBFBD><02>3<><33>c<><63><EFBFBD>`<04><11><>!V<>`,@K<><01><07>4<EFBFBD><06><><07>0<EFBFBD><30> <02><01><07>0<EFBFBD><06><10><01><07>4<EFBFBD><07><07>L<4C><7F><EFBFBD><10><02><01><07>8<EFBFBD>'<27>,<2C><07>,<2C><><02><01><07>,<2C>`<08><07>4<EFBFBD><02><08><>
|
||||
<12><01><07>4<EFBFBD>`<04><07>,<2C><03>@K<><01><><12><01><07>,<2C> <0C>`<01>$ <10><01><07>,<2C><04>(<28>'<27>,<10><><EFBFBD>)<29><>#<23><><EFBFBD> <04><01><07>,<2C><><02><01><07>,<2C><05><04><07>,<2C><05>V<>`<<11><>!@K<><10><11><>!V<>`d@K<><01><07>,<2C><><12>/<01><07>0<EFBFBD><30><12>+<01><07>4<EFBFBD><06><08><><EFBFBD><04><01><07>4<EFBFBD> <08><07>4<EFBFBD> <04><1D>" V<>`t@K<><01><><12><01><07>(<28>`<01>'<27>(<15><><02><><EFBFBD><EFBFBD>
|
||||
<02><01><07>(<28><><12>
|
||||
<01><07>4<EFBFBD><1B><>bL<62><02>
|
||||
V<>`|<11><>!@K<><01><07>,<2C><><02><01><07>,<2C> <20><><EFBFBD><02><01><07>0<EFBFBD><30><02> <01><07>,<2C><04>P<EFBFBD><07>0<EFBFBD>`P<><50><EFBFBD><16>/<2F><>㠀<><02>Q<01><07>0<EFBFBD><30><02>M3<><33>c<><63><EFBFBD>`<04><11><>!V<>`<60>@KX<01><07>0<EFBFBD><30><02>1<01><07>0<EFBFBD><06>P<EFBFBD><07>4<EFBFBD>`P<><50><16>*<13><>c<><63><EFBFBD>`<04><11><>!V<>`<60>@KB<01><07>4<EFBFBD><02>$<24><><EFBFBD><EFBFBD><02><19><>#<23><><EFBFBD><12>
|
||||
<01><07>4<EFBFBD>@<1F><><03>L<EFBFBD><02>V<>`<60><11><>!@K-<10><01>!<21><>#<23><><EFBFBD><12>
|
||||
<01><07>4<EFBFBD>@%<25><><04>L<EFBFBD><02>V<>`<60><11><>!@K'<27><><04>̀<EFBFBD><02><01><07>0<EFBFBD>!$<24><><02><01><07>0<EFBFBD><05><>1<<3C>
|
||||
<EFBFBD>5(<28><>@<12><01><07>0<EFBFBD><06><> @<04><01>'<27><><EFBFBD> <01>'<27><><10><01><07>0<EFBFBD>@<40>'<27><><10><01><07>0<EFBFBD>@<40>'<27><><17><>㜀<><02>><19><>#Ā<><02><01><07>4<EFBFBD>@<13><>cԐ <20><07><><19><>#<23>@<05><10>-<01><07><><13><>bH<15><><02>0@K
|
||||
<01><><02><01><07>4<EFBFBD><03>!<21><>"L<><02><13><>c<>V<>!<04><07><><19><>#<23>@J<><10><01><07>4<EFBFBD>@%<25><><04>L<EFBFBD><02><12><07><>'<27><><04>0<EFBFBD><02>V<>! <13><>c<><19><>#<23>@J<>)<29><>#Ā<><02><01><07>4<EFBFBD>@@-<2D><><05><><EFBFBD><EFBFBD><02> <01><07>4<EFBFBD><05><><07><>@<05><10><01><07>4<EFBFBD><06><07><>@<10>M<01><07><><13><>bH<15><><02>0@J<><01><><02>"<01><07>4<EFBFBD>@5<><35><06>L<EFBFBD>@V<>!@@J<><01><07>4<EFBFBD><06>9<EFBFBD><39>"L<><02><13><>c<><63><EFBFBD> <02><13><>` <10><13><>`(V<>!P<><07><>@J<><10>#<01><07>4<EFBFBD>@<11><>"L<>@V<>!`@J<><01><07><><13><>b0<62><02> <09><07>4<EFBFBD><02><19><>"L<><02><13><>c<><63><EFBFBD> <02><13><>`,<10><13><>`4V<>!p@Jv<1B><>c<><63><EFBFBD>
|
||||
<12><1F><><03>Ā<EFBFBD><02><01><07>0<EFBFBD> $<24>
|
||||
om<EFBFBD>a$<24><07>4<EFBFBD>@@<10><01><07>0<EFBFBD><04>$<24>
|
||||
om<EFBFBD>a$<24><07>4<EFBFBD><04>)<29><>"L<><02>V<>!<21>@JU<01><07>䀐<02><01><07><>@JQ<10>
|
||||
-<2D><><05><><EFBFBD><EFBFBD><EFBFBD><04><11><>!V<>a<>@J<10><>/<2F><>㌀<><E38C80><04><11><>!V<>a<>@J
|
||||
<01><07>,<2C><><02><><01><07>,<2C>`P<><07>4<EFBFBD><06>P<EFBFBD><50><16><>;<3B><>c<><63><EFBFBD>`<04><11><>!V<>a<>@I<><01><07>4<EFBFBD> $<24><>`<60><02><15><><02><><EFBFBD><EFBFBD>
|
||||
<12>
|
||||
<01><07>4<EFBFBD><02><19><>"L<><02>V<>a<><11><>!@I<><10><><1B><>c<><63><EFBFBD>
|
||||
<12>
|
||||
<01><07>4<EFBFBD><03>!<21><>"L<><02>V<>b<11><>!@I<>#<23><>cĀ<63><02><01><07>,<2C><04><04><07>4<EFBFBD><04><><07><><13><>c<><19><>#<23>@<04>)<29><>#<23><><EFBFBD><12><01><07>4<EFBFBD>@<40><07><>@<05><10>b<01><07><><EFBFBD><07>H<15><><02>0@I<><01><><12> <01><07><>/<2F><><05>0<EFBFBD>M<EFBFBD><17><> /<02>(3<><33>c<><63><EFBFBD><02><01><07>,<2C><06><04><07>4<EFBFBD><06>9<EFBFBD><39>"L<><1C><07><><15><><02><>V<>"0<1B><>c<>@I<>;<3B><>c<><63><EFBFBD><12><01><07>4<EFBFBD><13><>bL<62><02> <09><07><>V<>"X@I<><10>,<15><><02><><EFBFBD><EFBFBD>
|
||||
<02><01><07>,<2C><02><04><07><><19><>"0<>@<0C><07>4<EFBFBD>@<1F><><03>L<EFBFBD><15><><02><>V<>"t<1B><>c<>@I<>!<21><>#<23><><EFBFBD><12><01><07><>#<23><>b0<62>@<11><07>4<EFBFBD><04>'<27><><04>L<EFBFBD><02>V<>"<22>@I{<10>
|
||||
)<29><>#<23><><EFBFBD> <04><11><>!V<>b<>@IG<01><07>4<EFBFBD>a(<28>'<27>4<10><>
|
||||
/<2F><>㌀<><02> <11><>!V<>b<><62><07>H@I6<01><07><<3C>'<27>0<EFBFBD><07>0<EFBFBD><30><02>"<01><07>0<EFBFBD><06><0C><><02><10><01><07>0<EFBFBD> V<>c@IG<01><><12><10>;<3B><>cЀ<63><12><01><07>0<EFBFBD> V<>c@I7<01><><12><13><>c<><63><EFBFBD>`<04><11><>!V<>c@I<10><01><01><07>8<EFBFBD>'<27>,<2C><07>,<2C><><02><01><07>,<2C> <08><07>0<EFBFBD><03><08><>
|
||||
<12>
|
||||
<01><07>0<EFBFBD>`<04><07>,<2C><04>@I<01><><12><10><01><07>,<2C><04>(<28>'<27>,<10><><EFBFBD><01><07>,<2C><><02>-<2D><><05><><EFBFBD><EFBFBD><12><01><07>,<2C><05>P<EFBFBD><07>0<EFBFBD>`P<><50><EFBFBD><16><10><01><01><07>,<2C><06><0C> <01>&<26><0C><07>0<EFBFBD>`<08><07>0<EFBFBD>`<04><02><08>"<22><02>'<27>H<EFBFBD><07>0<EFBFBD>`<08><><EFBFBD><06>&<01><07>HV<>c(@H<><01><><12><01><07>(<28> <01>'<27>(#<23><>c<><63><EFBFBD><12><10><01><01><07>HV<>c,@H<><01><><12><01><07>(<28><04><01>'<27>('<27><>㰀<><12><10><01>)<29><>#<23><><EFBFBD><12><11><>#<23>@H<><01><08><07>0<EFBFBD>`<13><>c<>@H<><01><><12><10>x<01><07>D@H<><01><07>0<EFBFBD><05><08><17> @H<><01>'<27><><EFBFBD><07><><EFBFBD><07>D@H<><01><07><>V<>c0@H<><01><07>0<EFBFBD> <04><07><>@H<><01><07>0<EFBFBD>`$7<<3C><0E>;<10><><12><><01><07>L<EFBFBD><4C><12><><13><>c<><63><EFBFBD> <02><><15><><02><><EFBFBD><EFBFBD>
|
||||
<12><01><07><><17><><02>L<EFBFBD><02>V<>c4<11><>!@HS<19><>#Ȁ<><12>O<01><07>0<EFBFBD>a$<24><><02>J<01><07>0<EFBFBD> <20>%<<3C>@)(<28><><EFBFBD><12>B+<2B><>c̀<63><02>
|
||||
<01><07>0<EFBFBD><05><> @<01><01>'<27><><10><01><07>0<EFBFBD><05><>'<27><>3<EFBFBD><33>cĀ<63><02><01><07><><EFBFBD><07><>@<10>"<01><07><><EFBFBD><07>H<15><><02>0@HS<01><><02>
|
||||
<01><07><>5<EFBFBD><35><06>L<EFBFBD><02><1A><07><>V<>#L@H;<10><01><07><>7<EFBFBD><37><06>0<EFBFBD>@<1B><07><>9<EFBFBD><39>"L<><02>V<>#`@H-<01><07><>@H-<10>1;<3B><>cĀ<63><02><01><07><>@c<01><07><>@<01><07><><EFBFBD>!<21>@<03><10><01><07><><11><>"L<>@V<>#x@H<01><07><><15><><02>L<EFBFBD>@
|
||||
V<>#<23>@H<01><07><><17><><02>L<EFBFBD>@V<>#<23>@G<><01><07>0<EFBFBD><03><07><><EFBFBD><07>L<4C><7F><EFBFBD><10><1B><>c<><63><EFBFBD>
|
||||
<12><01><07><><1F><><03>L<EFBFBD><02>V<>c<><11><>!@G<><10><>!<21><>#̀<><02><01><07>0<EFBFBD>a$<24><><02><01><07>0<EFBFBD><04><>+<<3C>
|
||||
/(<28><><EFBFBD><12><01><07>0<EFBFBD><06> @l<01>'<27><><EFBFBD> <01>'<27><><10><01><07>0<EFBFBD><06><>'<27><><EFBFBD>'<27><><10><01><07>0<EFBFBD><07>'<27><><EFBFBD>'<27><><11><>#<23><><EFBFBD><12><01><07><><13><>bL<62><02> V<>c<><11><>!@G<><15><><02>Ā<EFBFBD>
|
||||
<02><17><>㬀<><02><01><07><><EFBFBD><07><>@c<10><01><07><><EFBFBD><07><>@<02><10>8<01><07><><EFBFBD><07>H<15><><02>0@G<><01><><02><01><07><><19><>"L<><02><13><>c<><63><EFBFBD> <02><13><>`8<10><13><>`@V<>#<23><><07><>@G~<10><01><07><><1B><>b0<62><02>
|
||||
<EFBFBD><07><><1F><><03>L<EFBFBD><02><13><>c<><63><EFBFBD> <02><13><>`D<10><13><>`LV<>#<23>@Ge!<21><>#<23><><EFBFBD><12>#<23><>cĀ<63><02><01><07>0<EFBFBD><04>$<24>
|
||||
om<EFBFBD>a$<24><07><>@<10><01><07>0<EFBFBD><04>$<24>
|
||||
om<EFBFBD>a$<24><07><>)<29><>"L<><02>V<>#<23>@GF<01><07>䀐<02><01><07><>@GB<01><07><>@G?<01><07>0<EFBFBD><05>(<28>'<27>0<10><><EFBFBD>1<><31>#<23><><EFBFBD><02> <11><>!W<>`<14><07><>@G<01><07>8<EFBFBD>'<27>,<2C><07>,<2C><><02>y<01><07>,<2C><06><0C><><02><10>m<01><07>D@G<01><07>,<2C>`<08> <09> @G<01>'<27><><EFBFBD><07><><EFBFBD><07>D@G<01><07><>W<>`0@F<><01><07>,<2C><02><04><07><>@F<><17><>㐀<><12><01><07><><19><>"L<><02>W<>`4<11><>!@F<><1B><>cĀ<63>
|
||||
<02>
|
||||
<1F><>㨀<><12><01><07><><EFBFBD><07><>@<02><10>3<01><07><><EFBFBD><07>H<15><><02>0@F<><01><><12> <01><07><>#<23><>b0<62>L<11><><EFBFBD>/<02>'<27><>㨀<><12><01><07><>)<29><>"L<><02><14><07><>W<> H@F<><10>+<2B><>c<><63><EFBFBD><12><01><07><>-<2D><><05>0<EFBFBD>@<16><07><>/<2F><><05>L<EFBFBD><02>W<> `@F<><01><07><>@F<><01><07>,<2C>!(<28>'<27>,<10><><EFBFBD><01><07>@<40><><02><01><07>@<40>'<27>4<EFBFBD><07>4<EFBFBD>!(<28>'<27>@<40><07>4<EFBFBD>@F<><01><07>4<EFBFBD>`@F<><01><07>4@F<><10><><EFBFBD><01><07><<3C><>
|
||||
<02><01><07><<3C>'<27>0<EFBFBD><07>0<EFBFBD>!(<28>'<27><<3C><07>0<EFBFBD><03>@F<><01><07>0<EFBFBD> @F<><01><07>0@F<><10><><EFBFBD><01><07>8<EFBFBD><38><02><01><07>8<EFBFBD>'<27>,<2C><07>,<2C><04>(<28>'<27>8<EFBFBD><07>,<2C>@@Fx<01><07>,<2C><05>@Ft<01><07>,@Fq<10><><EFBFBD><01><07><>@Fl<10><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD><07>D<EFBFBD>'<27><><13><>c<><63><EFBFBD> <02>
|
||||
<11><>!W<>`x<><07><>@F+<11><>!@Fu<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<16>e<01><07><><13><>bD<62>$@FL<01>'<27><><EFBFBD><EFBFBD><16><10>Y<01><07><><19><>"D<>*<2A><1B><>KbD<62><44>`/<02>2<01><07><><EFBFBD> /@F*<01>'<27><><EFBFBD><EFBFBD><02><01><07><><EFBFBD>+<2B><11><>"D@F<01><08><07><>@F
|
||||
<01><1D> @F <01>'<27><><EFBFBD><07><>W<>`<60><><07><><17><><12>D@F<10><11><>"D@E<><01> @E<><01>'<27><><EFBFBD><07><><13><>bD@E<><10><11><>"D@E<><01> @E<><01>'<27><><EFBFBD><07><><13><>bD@E<><01><07>H<EFBFBD> <01>'<27>H<EFBFBD>$ <01><><02><01><07><>@E<><01><07><><EFBFBD>'<27><><EFBFBD><07><><EFBFBD><04><01>'<27><><10><><EFBFBD><01><07>H<EFBFBD><48><12><01><07><>@E<><01> @E<><01>'<27><><EFBFBD><07><><EFBFBD><07><>@E<><01><07><><EFBFBD>'<27><>-<2D><><05><><EFBFBD><EFBFBD><02>
|
||||
<11><>!W<>`<60><><07><>@E<><11><>!@E<><01><07><><10><01><08><><EFBFBD><08><>?<3F><><EFBFBD>c<08><><EFBFBD><01>'<27>D<EFBFBD><07>t<EFBFBD><07>D@E<><01><>?<3F><02>\<01><07><><<3C>
|
||||
<10><><EFBFBD><12>R<01><07>D@E<><01>'<27>p<EFBFBD><07>p<EFBFBD><70><02>H<01><07>p@E<><01>'<27>l<EFBFBD><6C><02>;<01><07>l<EFBFBD>
|
||||
W<>`<60>@E<><01><><02>0<01><07>l<EFBFBD>
|
||||
W<>`<60>@E<><01><><02>'<01><07>l<EFBFBD>
|
||||
@Ep<01><08><07>D@El<01><1D> @Ek<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD>
|
||||
<02><01><07><><EFBFBD><07>D@Eh<01><07><>W<>`<60>@Ef<01><07>l<EFBFBD>`
|
||||
<EFBFBD><07><>@Ea<01><07><><EFBFBD><7F><EFBFBD><01><07><>@Ej<10><><EFBFBD><01><07>p@E<><01><07>D@E<><10><01><07>D@E<><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD><07>D<EFBFBD> @E<><01><>?<3F><12><11><>"@<40><> <12><01><07>D<EFBFBD>!<21>@Ew<01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD><07>D<EFBFBD><07>H@Eo<01><>?<3F><12><01><07>H@EN<01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD>'<27>L<EFBFBD>'<27>P<EFBFBD>'<27>T@E`<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD>?<3F><12>W<> <20>@E9<10>Q<01><07><><EFBFBD><EFBFBD> <12>?<01><07>D<EFBFBD><44>
|
||||
<02><01><07>D@E)<01><>?<3F><12>W<> <20>@E%<10>,<01><07>T<EFBFBD>! <09>!<21>@E?<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><12><01><07>T@E<01> @D<><11><>!@E3<01><08><07><>@E2<11><>!@E+<01><08><07><>@E*<01><07>H<EFBFBD><07>H<EFBFBD><07>L<EFBFBD><07>P<EFBFBD> @E&<01><07>H@D<><01> @D<><01> @E <01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD><02><01><07><><EFBFBD><EFBFBD><EFBFBD><02><10><><EFBFBD><01><><EFBFBD><08><>?<3F><><EFBFBD>c<18><><EFBFBD><01>'<27>D<EFBFBD><07>x<EFBFBD><07>D@D<><01><>?<3F><02><01><07><><<3C>
|
||||
<10><><EFBFBD><02><01><07>D@D<><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD><07>D<EFBFBD> @D<><01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD>?<3F><12><01><07>D@D<><10>M<01><07>H<EFBFBD>!<01>!<21>@D<><01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD><EFBFBD><12>
|
||||
<01><07>H@D<><01><07><>@D<><10>;<01><07><><EFBFBD><07><><EFBFBD>$@D<><01>'<27><><EFBFBD><EFBFBD><04><01><07><><EFBFBD><07><><EFBFBD><07><>@D<><01>'<27><><EFBFBD><EFBFBD><04><01><07><><EFBFBD><07><><EFBFBD>"<22>
|
||||
<EFBFBD>'<27><><EFBFBD><EFBFBD><02><10><><EFBFBD><01><07><><EFBFBD><EFBFBD>?<3F><12><10><10><><EFBFBD><01><07><><EFBFBD><EFBFBD><EFBFBD><12><01><07>D@D<><10> <01><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><12><01><07>H@Dw<01><07><>@D<><01><07><>@D<><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD><07>D<EFBFBD><07>H@D<><01><>?<3F><12><01><07>D@D`<01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H@Du<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD>?<3F><12>W<> <20>@DN<10>1<01><07><><EFBFBD><EFBFBD> <12><01><07>D@DB<01><>?<3F><12>W<> <20>@D><10><11><> P<13><>`T<15><><12>X<EFBFBD><07>H<EFBFBD> @D\W<> <20>@D.<01> @C<><01> @DU<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD>
|
||||
<02><01><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><10><><EFBFBD><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD><07>D<EFBFBD>!<21>@DO<01><>?<3F><12><01><07>D@D
|
||||
<01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD><07>H@DB<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD><12><11><>!W<>`<60><><07>H@C<><10><01><07><><EFBFBD>`<08>?<3F><><07>D@D1<01><><EFBFBD><08><><EFBFBD>㿠<EFBFBD><E3BFA0><EFBFBD><08><>D)l*<11><><EFBFBD><EFBFBD><EFBFBD>T,<10><><EFBFBD><EFBFBD>T.<11><><EFBFBD><EFBFBD><EFBFBD>T0( <10><><EFBFBD><EFBFBD><EFBFBD>T3<11><14><><EFBFBD><EFBFBD>T<><54><EFBFBD><EFBFBD>T<10>p<><70><EFBFBD><EFBFBD>T<><54><EFBFBD><EFBFBD>T;8\X<><58><EFBFBD><EFBFBD>T<><54><EFBFBD><EFBFBD>T <11>!<11><><EFBFBD><EFBFBD><EFBFBD>T#0<><30><EFBFBD><EFBFBD>T<><54><EFBFBD><EFBFBD>T&<0F><><EFBFBD><EFBFBD><EFBFBD>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
|
||||
179
cde/admin/BuildTools/fnrclone/findnewrcs.UNIX_System_V
Normal file
179
cde/admin/BuildTools/fnrclone/findnewrcs.UNIX_System_V
Normal file
@@ -0,0 +1,179 @@
|
||||
ELF4q4 (44<><34><03>\<5C>\<5C>\<5C>\<5C><03> T`T`T<>/usr/lib/ld.so.1C_7EWT5Z1%[K\N;]LJ S6?Q:X3D2^IA4M8)/HUPCO#V+"&$,*90'->!BF<G=(@YR.<01><01>x h<0B><0B>N<> N<>
|
||||
O<>\<5C>_h
|
||||
_<>`P`T`<60>`<60>@^<5E>8"]<5D>@^8"N<> #<0E>
|
||||
T(b 2_H"7]<5D>`>`<60>@!CfH<11><>H]<5D><03>ODX<02>[_X8"a^<5E>D"fxmb$v^<5E>8"|<0E>@<08>]x\"<22>^<5E>T<12>^<5E><>"<22>^h"<22>]<5D>\<12>^P<><12>\<5C><11><><EFBFBD>]$<24><12>^<5E>8"<22>^Dx"<22>]<5D>D"<22>b$!<11>`<60><11><><EFBFBD>]`8"<22>]<<12>^<5E>8"<22>_8"<22>^<5E>8"<22>b(]0 +8^ |_(H"]<5D>p%]<5D>D"+b,2b08^<5E><>"?]<5D>@FN<>
|
||||
S^,HY]H<01>a]<5D><>h_T"mb4t^<5E>,"{f4<01>`P<11><><01>_Lx"<01>f8<01>_@8"<01>^<5E>8"<01>]<5D>|<01>]T0<01>^t "<01>^8<01><01>]<5D><01><01>`T<11><><01>_48"<01>^<14><01>]l<"f<^\<5C>"__iobopenstrrchrreadlink_finimainSourceLenreadmalloc_iob_endstrcatResolveLinkchownfork_start_environcreatUsagegetcwdfflushdup2readdirfreeperror_etextatexitsymlinkchdirstatenviron_edatamktemp_exitutimeclosermdirWorkingDirCmpexitGetNewfopenwritestrcmplstatoptinderrnofilenostrcpy_lib_versionfgetsfprintfstrlenwaitBufferexeclpoptarg_GLOBAL_OFFSET_TABLE_getgrnamSourceDirCmpmkdirunlinksprintfsetvbufclosedirfcloseprintf_DYNAMICchmodstrncmpgetoptWorkingLen_initopendirlibc.so.1b$&`<60> f4Mb,Bb0C]$0]0<]<7]HH]TT]`6]l[]x)]<5D>I]<5D>]<5D>S]<5D>E]<5D>!]<5D>A]<5D>]<5D>@]<5D>W]<5D>-]<5D>3^^Z^ >^,G^8V^D2^P.^\^^h,^tU^<5E>*^<5E>:^<5E>R^<5E>8^<5E>'^<5E>1^<5E>$^<5E>^<5E>D^<5E>+^<5E>L_J_9__(?_4Y_@Q_LO_X#<15>㿠<EFBFBD><E3BFA0><EFBFBD><08><><EFBFBD> <20><03>@<40><03>D<EFBFBD>, <02><04><04>@'<27><>$<24>$<24>#<23> <20><><02><04>@S<>S<>"<22>@S<><><7F><EFBFBD><01><10><11><12>@@S<>@S<>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<11><>!S<>c<><63><07>D@S<><01> @S<><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD>'<27><><EFBFBD>'<27><><EFBFBD>'<27><><11><> <20><> <20> @<40>$@S<><11><>#<23>@S<><13><>"c<><63><07>D<EFBFBD><07>H<15><><12><>@S<><01><08><>?<3F><02><><10><><15><><02>4<EFBFBD>'<27><><10><><17><><02>4<EFBFBD>'<27><><10><><19><>"4<>O<EFBFBD><4F>
|
||||
<02>P<10>=<1F><>㤞<03>!<21><>$#<23>#<23><>c<><63>`%<25><>$<24><>'<27><>㰦<04>)<29><>%#<23>+<2B><>c<><63>`-<2D><>%<25><><10>5/<2F><>㤮<05>1<><31>&#<23><10>.3<><33>c<><63>`5<><35>&<26><><10>'7<><37>㰶<06><11><>"#<23><10> <13><>c<><63>`<15><>"<22><><10><01><07>H<EFBFBD><02><EFBFBD><7F><EFBFBD><01> @S/<10><01>O<EFBFBD><4F> A<02><>À<EFBFBD> a<02><>׀<EFBFBD> m<02><>ꀢ o<02><>ڀ<EFBFBD> x<02><><EFBFBD><10><><EFBFBD><01> <10><><EFBFBD><10><1B><>c<><63>`<1F><>#<23><><10>x!<21><>#<23><> #<23><>$c<><10>q%<25><><04><><EFBFBD><04>'<27><>$<24><><10>j<01> +<2B><>%c<><10>e<01> /<2F><>%<25><><10>`<01> 3<><33>&c<><10>[5<><35><06><><EFBFBD><06>7<><37>&<26><><10>T<11><>#<23><> <13><>"c<><10>M<15><><02><><EFBFBD><02><17><>"<22><><10>F<19><>#<23><> <1B><>#c<><10>?<1F><>㐞<03>!<21><>$#<23><10>8#<23><>b4%<25><>$<24><><10>2'<27><><04>4)<29><>%#<23><10>,+<2B><>%c<><10>(-<2D><><05><><EFBFBD><05>/<2F><>%<25><><10>!<01><07>H<EFBFBD><><7F><01> @R<><10><01><1D>" C<><43> ;<18><><EFBFBD>S<><12><><EFBFBD>2 <05>@ <09>@ <09>.`<03>@<08>
|
||||
`<1F><1B>*`<03>
|
||||
<EFBFBD><EFBFBD><EFBFBD><12><><EFBFBD><01>
|
||||
<EFBFBD> <04><><10><><01><07><><EFBFBD><EFBFBD><02><01><07><><EFBFBD>K@<40><><02><01><07><><EFBFBD>L<EFBFBD><4C>`/<02>A<11><>"4<>$@R<><01><08><> <12>
|
||||
<01><07>H<EFBFBD><04>U<>`|<11><>!@R<><01> @Ry<01><07><><EFBFBD><EFBFBD><02><01><07><><EFBFBD>M<EFBFBD><4D><02><01><07><>@R<><01><08>@R~<01><1B> @R}<01>'<27>h<EFBFBD><07>hU<>`<60><><1C><07><>@Rx<01><07>h<EFBFBD>'<27><><10>
|
||||
<01>@Rk<01> @Rk<01>'<27><><EFBFBD><07><><EFBFBD>@Rl<01><07><><EFBFBD><EFBFBD><02><01><07><><EFBFBD>N<EFBFBD><4E><12>@<01><07><>@RW<01> @RW<01>'<27><><EFBFBD><07><><EFBFBD><07><>@RX<01><07><>U<>`<60>@RV<01><07>l<EFBFBD><07><>@RU<01><><12><01><07><>7<<3C><0E>(<28><> <12><01><07><><EFBFBD> @<0B><01>'<27><><EFBFBD><07><><EFBFBD> /@RE<01><08>O<EFBFBD><4F>
|
||||
<02><01>U<>`<60>@R><01><><12><01>/<11><>!U<>`<60><><07><>@R<10>0<01><07><><EFBFBD>J<EFBFBD><4A><EFBFBD> /<02>+<11><>"4<>$@R<01><08><> <12>
|
||||
<01><07>H<EFBFBD>@U<>`<60><11><>!@Q<><01> @Q<><01><07><>@R<01><08>@Q<><01><1B> @Q<><01>'<27>h<EFBFBD><07>hU<>a<08><1C><07><>@Q<><01><07>h<EFBFBD>'<27><><EFBFBD><07><><EFBFBD><07><>@Q<><01><><12><01><07><><EFBFBD> <01>'<27><><EFBFBD><07><>@Q<><01> @Q<>#<23><>$b(<11><>"(<28><07><>@Q<><11><>"(U<>a@Q<><01><07><>@Q<><01> @Q<>%<25><>$<24>8<11><>"8<><07><>@Q<><11><>"8U<>a@Q<><11><>"(@Q<>'<27><>$<24><<11><>"8@Q<>)<29><>%" +<2B><>c<><63><EFBFBD><02>-<2D><><05><><EFBFBD><EFBFBD><02>
|
||||
<11><>#<23>@<0B><11><>#<23>@b<10>%U<>!@Q<>U<>!$@Q<>U<>!T<><07><>@Q<>U<>!p<><07><>@Q<>/<2F><>㐀<><02>
|
||||
U<>!<21><13><>c<><15><><02><>@Q<>U<>!<21>@Q<>1<><31>",<2C><07>D<EFBFBD><44><16>R5<><35><06>,<2C><07>D<EFBFBD><44><EFBFBD><16>J<11><>",<2C>* <02><07>H<EFBFBD><02> @Qh<01><08><07><>@Qd<01><1B> @Qc<01>'<27>h<17><><02>,<2C>*<2A><02><07>H<EFBFBD>@U<>a<><61><07>h<EFBFBD><07><>@QZ<1F><><03>,<2C>+<2B><02><07>H<EFBFBD>@@QM<01><08><07><>@QI<01><1B> @QH<01>'<27>d%<25><><04>,<2C>,<2C><02><07>H<EFBFBD>U<>a<><61><07>d<EFBFBD><07><>@Q?<01><07>d<EFBFBD><07>h<EFBFBD><07><>@<01><07>d@QL<01><07>h@QI+<2B><>b,<2C>`-<2D><>%<25>,<10><><EFBFBD><10><01><07><><EFBFBD><07><><EFBFBD><07><>@<01> @Q<01><><EFBFBD><08><>?<3F><><EFBFBD>bȝ<62><C89D><01>'<27>D<EFBFBD>'<27>H<EFBFBD>'<27>L<EFBFBD>'<27>@<40>'<27><<3C>'<27>8<11><>#<23><><EFBFBD><02> <11><>!U<>a<><61><07>H@P<><13><>c<><63><EFBFBD>`<04>
|
||||
<11><>!U<>a<><61><07>D<EFBFBD><07>H@P<>U<>!<21>@P<><01><08><07>D@P<><01><1D> @P<><01>'<27><><EFBFBD><07><>U<>a<><61><07>D@P<><15><><02><><EFBFBD><EFBFBD>
|
||||
<04> <11><>!U<>a<><61><07><>@P<><01><07>P<EFBFBD><07><>@P<><01><><02><><01><07>D<EFBFBD><07><><EFBFBD>$@P<><01><><16><>U<>"@P<><01><08><07>H@P<><01><1D> @P<><01>'<27>H<EFBFBD><07>HU<>b<14><07>H@P<>U<>"@P<><01><08><07>H@P<><01><1D> @P<><01>'<27>D<EFBFBD><07>DU<>b$<24><07>H@P<><01><07>H<EFBFBD> @
|
||||
V<01>'<27>H<17><> <><04> <11><>!U<>b,<2C><07>H@P<><01><07>P<EFBFBD><07>H@P<><01><><02>
|
||||
<01><07>D<EFBFBD><07>D<EFBFBD>$@P<><01><><04>S<19><>#<23><><EFBFBD><12>N<1B><>c<><63><EFBFBD>
|
||||
<12><01><07><><1F><><03><<3C><02>U<>b@<11><>!@Pb!<21><>#<23><><EFBFBD><02><01><07><>@<0B><01><07>H<EFBFBD><07><>@=<10>1<01><07><>#<23><>b<<3C>@U<>"X@Ps<01><07>H<EFBFBD><07>H<15><><02> @Py<01><><12> <01><07>H'<27><><04> <20>L<EFBFBD><13><> /<02>
|
||||
<01><07><>+<2B><>b<<3C><02><15><07>HU<>"h@PZ<10><01><07>H-<2D><><05> <20>@<16><07><>/<2F><><05><<3C><02>U<>"|@PL<01><07><>@PL<01><07>H<EFBFBD>'<27><><EFBFBD>
|
||||
<EFBFBD>'<27>L<EFBFBD><07>L<EFBFBD><4C><04>`<01><07>P<EFBFBD><07><>@P4<01><><12>R<01><07>d9<<3C><0E>(<28><>@<12> <01><07><><EFBFBD> @ <09><01>'<27><><10>B<01><07>d<<3C>
|
||||
@
|
||||
<20><><EFBFBD><12>9<01><07><>U<>b<>@P/<01>'<27><><EFBFBD><EFBFBD><02>.<11><>"4<>$<24><07><>@P(<11><>"4@O<><1B><>b3<62>*
|
||||
<EFBFBD><07><>@P<11><>"4@O<><01> @O<><01>'<27><><EFBFBD><07><><13><>b4@O<><1F><> <><02> <11><>!U<>b<><62><07><>@O<><01><07><>@P<10><10><10><10><01><07>L<EFBFBD>$ <01>'<27>L<10><><EFBFBD><01><07>L<EFBFBD><4C><14>%<25><><04><><EFBFBD><EFBFBD><12> <11><>!U<>b<><62><07><>@O<><01>'<27>8<EFBFBD><07><>@O<><01><><02>'<27><><04>0<EFBFBD><30><EFBFBD><02><01><07><>@O<><10><>U<>"<22>@O<><01>'<27>܀<EFBFBD><02><><01><07><>@O<><01>'<27><EFBFBD><02><><01><07>ؐ
|
||||
@O<><01><> <1A><10><><EFBFBD><01><07>ؐ
|
||||
@O<><01><07>ؐ<08> U<>b<>@O<><01><><02><10><><EFBFBD><11><>"4<><07><>@O<><11><>"4U<>b<>@O<><01><07>ؒ`
|
||||
<11><>"4@O}<01><07>ؐ
|
||||
<EFBFBD><07>P@O<><01><><02><11><>"4@O<><10><><EFBFBD><01><07>8<EFBFBD><38><02><01>!,@O_<01><07>,<2C>%<25>(<28><07>,<2C><05>(<28>'<27>,<10><01>!,@OU<01>'<27>8<EFBFBD><07>8<EFBFBD>'<27>,<2C><07>,<2C>&<26>(<28><07>,<2C>&<26><11><>"4@OG<01> @OG<01><07>,<2C>'<27><07>,<2C>@<13><>b4@OE<01><07>ؐ
|
||||
@O8<01><07>ؔ`
|
||||
<EFBFBD><02><08>*<2A><><EFBFBD><07>ؐ
|
||||
@O0<01> @O0<01><07>,<2C># <04><07>,<2C>`<04><07>ؒ`
|
||||
@O.<01><07>ؐ
|
||||
@O!<01><07>,<2C>#<23><08><07>,<2C> <10><07>P<EFBFBD><04><><EFBFBD>$`<60><><04><><EFBFBD>$`<60><> <20><>%<25><04><04><16>$@<16>%<25><04><04><16>$@<16>%<25><04><04><16>$@<16><><EFBFBD><04><04><12><><EFBFBD><EFBFBD>$@<16><07>,<2C> <01>%<25><><EFBFBD><07>,<2C>&a$<10><>c<01><07><>@O<<01>'<27>@<40><07>D@O,<01><><02>5<><35><06>0<EFBFBD><30><EFBFBD><02><01><07>D@O$<10><>U<>"<22>@O!<01>'<27>܀<EFBFBD><02><><01><07><>@O<01>'<27><EFBFBD><02><><01><07><><EFBFBD>N<EFBFBD>
|
||||
<EFBFBD><EFBFBD> .<02><01><07>ؐ
|
||||
U<>b<>@N<><01><><12><10><><EFBFBD><11><>"4<><07>D@N<><11><>"4U<>b<>@N<><01><07>ؒ`
|
||||
<11><>"4@N<><01><07>ؐ
|
||||
<EFBFBD><07>P@N<><01><><02><01><07>ؒ`
|
||||
U<>"<22>@N<><01><><02><11><>"4@N<><10><><EFBFBD><01><07>@<40><><02><01>!,@N<><01><07>4<EFBFBD>"a(<28><07>4<EFBFBD><02>(<28>'<27>4<10><01>!,@N<><01>'<27>@<40><07>@<40>'<27>4<EFBFBD><07>4<EFBFBD>#a(<28><07>4<EFBFBD>#<23><11><>"4@N<><01> @N<><01><07>4<EFBFBD>$<24><07>4<EFBFBD>@<13><>b4@N<><01><07>ؐ
|
||||
@N}<01> @N}<01><07>4<EFBFBD>$<24><04><07>4<EFBFBD><04><04><07>ؒ`
|
||||
@N{<01><07>ؐ
|
||||
@Nn<01><07>4<EFBFBD>% <08><07>4<EFBFBD>`<10><07>P<EFBFBD><05><><EFBFBD>%<25><><EFBFBD><05><><EFBFBD>%<25><><EFBFBD> <20><>&<26><04><05><1A>%<25><1A>&<26><04><05><1A>%<25><1A>&<26><04><05><1A>%<25><1A><><EFBFBD><04><05><12><><EFBFBD><EFBFBD>%<25><1A><07>4<EFBFBD> <01>&<26><><EFBFBD><07>d<<3C>@<10><>@
|
||||
<12>$<01><07>ؐ
|
||||
<EFBFBD><07>P@NW<01><><12><01><07>4<EFBFBD><02><><EFBFBD><07>P<EFBFBD>`<60><># <20><>`<60><># <20><> <20><>$<24><04>@<12>#<12>$<24><04>@<12>#<12>$<24><04>@<12>#<12><><EFBFBD><04>@<12><><EFBFBD><EFBFBD>#<12><07>4<EFBFBD> <01>$<24>$<10><01><07>4<EFBFBD>%a$<10><>B<01><07><>@N`<01>'<27><<3C><07>L<EFBFBD><4C><12><><01><07>H@NL<01><><02>/<2F><><05>0<EFBFBD><30><EFBFBD><02><01><07>H@ND<10><>U<>"<22>@NA<01>'<27>܀<EFBFBD><02><><01><07><>@N=<01>'<27><EFBFBD><02><><01><07><><EFBFBD>N
|
||||
<EFBFBD><EFBFBD>`.<02><01><07>ؐ
|
||||
U<>b<>@N
|
||||
<01><><12><10><><EFBFBD><11><>"4<><07>H@M<><11><>"4U<>b<>@M<><01><07>ؒ`
|
||||
<11><>"4@M<><01><07>ؐ
|
||||
<EFBFBD><07>P@M<><01><><02><11><>"4@N<10><><EFBFBD><01><07><<3C><><02><01>!,@M<><01><07>0<EFBFBD>&<26>(<28><07>0<EFBFBD>!(<28>'<27>0<10><01>!,@M<><01>'<27><<3C><07><<3C>'<27>0<EFBFBD><07>0<EFBFBD>"a(<28><07>0<EFBFBD>"<22><11><>"4@M<><01> @M<><01><07>0<EFBFBD>"<22><><07>0<EFBFBD><13><>b4@M<><01><07>ؐ
|
||||
@M<><01> @M<><01><07>0<EFBFBD>#`<04><07>0<EFBFBD><03><04><07>ؒ`
|
||||
@M<><01><07>ؐ
|
||||
@M<><01><07>0<EFBFBD>$ <08><07>0<EFBFBD>`<60><><07>P<EFBFBD><04><><EFBFBD>$<24><><EFBFBD><04><><EFBFBD>$<24><><EFBFBD> <20><>%<25><04><04><16>$<24><16>%<25><04><04><16>$<24><16>%<25><04><04><16>$<24><16><><EFBFBD><04><04><12><><EFBFBD><EFBFBD>$<24><16><07>0<EFBFBD> <01>%<25>$<24><07>d5<<3C>@9(<28><><EFBFBD><12><01><07>ؐ
|
||||
<EFBFBD><07>P@M<><01><07>0<EFBFBD>`<10><07>P<EFBFBD>`<60><>" <20><>`<60><>" <20><> <20><># <04>@<0C>"<0C># <04>@<0C>"<0C># <04>@<0C>"<0C><> <04>@<12><><EFBFBD><EFBFBD>"<0C><07>0<EFBFBD> <01>#`<60><10><>R<01><07><>@M<>!<21><>#<23><><EFBFBD><02> <11><>!U<>b<><62><07>D@M9<01><07>@<40>'<27>4<EFBFBD><07>4<EFBFBD><34><02><03>'<27><> <><E38080><04><01><07>4<EFBFBD> <04><07>4<EFBFBD>@U<>c<11><>!@M$<01>'<27>(<28><07>4<EFBFBD><05><08><07>4<EFBFBD> <04>@<17>&<26><02>'<27>H<EFBFBD><07>4<EFBFBD> <08><>`<06><<01><07>HU<>c@@M6<01><><12><01><07>(<28> <01>'<27>(<13><>c<><63><EFBFBD> <12><15><><02><><EFBFBD><EFBFBD><EFBFBD><04><11><>!U<>cD@L<><10><03><01><07>HU<>cX@M<01><><12><01><07>(<28><02><01>'<27>(<19><>#<23><><EFBFBD><12><1B><>c<><63><EFBFBD>`<04><11><>!U<>c\@L<><10><03><11><>#<23>@L<><01><08><07>4<EFBFBD><03><13><>c<>@M<01><><12><01><07>(<28> <01>'<27>(#<23><>c<><63><EFBFBD><12>%<25><><04><><EFBFBD><EFBFBD><EFBFBD><04><11><>!U<>cp@L<><10>u<01><07>4<EFBFBD><04>U<>c<>@L<><01><><12>)<29><>#<23><><EFBFBD> <04><11><>!U<>c<>@L<><10>_+<2B><>cĀ<63><12><01><07>4<EFBFBD><05>U<>c<>@L<><01><><12>/<2F><> <><E38080><04><11><>!U<>c<>@L<><10>D1<><31>#<23><><EFBFBD><12>"<01><07>4<EFBFBD>`<60><><EFBFBD><02><01><07>4<EFBFBD><06>$;<<3C> <20><> <12><01><07>4<EFBFBD><02>$<24>
|
||||
<EFBFBD>I<EFBFBD><EFBFBD> I<12><1B><>c<><63><EFBFBD>`<04><11><>!U<>c<>@Lf<10><01><07><<3C>'<27>0<EFBFBD><07>0<EFBFBD><30><02><01><07>0<EFBFBD>`<08><07>4<EFBFBD><04><08><><12><01><07>4<EFBFBD>`<04><07>0<EFBFBD><05>@Lu<01><><12><01><07>0<EFBFBD><05><0C> <01>%<25><10><01><07>0<EFBFBD>a(<28>'<27>0<10><><EFBFBD>7<><37> <><E38080><04><01><07>0<EFBFBD><30><02><01><07>0<EFBFBD>`<04><07>0<EFBFBD>U<>c<><11><>!@L0<10><11><>!V<>`@L(<01><07>4<EFBFBD>`<60><><EFBFBD>
|
||||
<02>8<01><07>4<EFBFBD><02>$<<3C>
|
||||
!<10><><EFBFBD><12>0#<23><>c<><63><EFBFBD><12><01><07>4<EFBFBD><04>$<24><><02>
|
||||
<01><07>4<EFBFBD> <20>-<<3C>
|
||||
@1(<28><><EFBFBD><02>3<><33>c<><63><EFBFBD>`<04><11><>!V<>` @K<><01><07>4<EFBFBD><06><><07>0<EFBFBD><30> <02><01><07>0<EFBFBD><06><10><01><07>4<EFBFBD><07><07>L<4C><7F><EFBFBD><10><02><01><07>8<EFBFBD>'<27>,<2C><07>,<2C><><02><01><07>,<2C>`<08><07>4<EFBFBD><02><08><>
|
||||
<12><01><07>4<EFBFBD>`<04><07>,<2C><03>@K<><01><><12><01><07>,<2C> <0C>`<01>$ <10><01><07>,<2C><04>(<28>'<27>,<10><><EFBFBD>)<29><>#<23><><EFBFBD> <04><01><07>,<2C><><02><01><07>,<2C><05><04><07>,<2C><05>V<>`0<11><>!@K<><10><11><>!V<>`X@K<><01><07>,<2C><><12>/<01><07>0<EFBFBD><30><12>+<01><07>4<EFBFBD><06><08><><EFBFBD><04><01><07>4<EFBFBD> <08><07>4<EFBFBD> <04><1D>" V<>`h@K<><01><><12><01><07>(<28>`<01>'<27>(<15><><02><><EFBFBD><EFBFBD>
|
||||
<02><01><07>(<28><><12>
|
||||
<01><07>4<EFBFBD><1B><>b<<3C><02>
|
||||
V<>`p<11><>!@K<><01><07>,<2C><><02><01><07>,<2C> <20><><EFBFBD><02><01><07>0<EFBFBD><30><02> <01><07>,<2C><04>P<EFBFBD><07>0<EFBFBD>`P<><50><EFBFBD><16>/<2F><>㔀<><02>Q<01><07>0<EFBFBD><30><02>M3<><33>c<><63><EFBFBD>`<04><11><>!V<>`<60>@KX<01><07>0<EFBFBD><30><02>1<01><07>0<EFBFBD><06>P<EFBFBD><07>4<EFBFBD>`P<><50><16>*<13><>c<><63><EFBFBD>`<04><11><>!V<>`<60>@KB<01><07>4<EFBFBD><02>$<24><><EFBFBD><EFBFBD><02><19><>#<23><><EFBFBD><12>
|
||||
<01><07>4<EFBFBD>@<1F><><03><<3C><02>V<>`<60><11><>!@K-<10><01>!<21><>#<23><><EFBFBD><12>
|
||||
<01><07>4<EFBFBD>@%<25><><04><<3C><02>V<>`<60><11><>!@K'<27><><04><><EFBFBD><EFBFBD><02><01><07>0<EFBFBD>!$<24><><02><01><07>0<EFBFBD><05><>1<<3C>
|
||||
<EFBFBD>5(<28><>@<12><01><07>0<EFBFBD><06><> @<04><01>'<27><><EFBFBD> <01>'<27><><10><01><07>0<EFBFBD>@<40>'<27><><10><01><07>0<EFBFBD>@<40>'<27><><17><>㐀<><02>><19><>#<23><><EFBFBD><02><01><07>4<EFBFBD>@<13><>cȐ <20><07><><19><>#<23>@<05><10>-<01><07><><13><>b8<15><><02> @K
|
||||
<01><><02><01><07>4<EFBFBD><03>!<21><>"<<3C><02><13><>c<>V<> <20><><07><><19><>#<23>@J<><10><01><07>4<EFBFBD>@%<25><><04><<3C><02><12><07><>'<27><><04> <20><02>V<>!<13><>c<><19><>#<23>@J<>)<29><>#<23><><EFBFBD><02><01><07>4<EFBFBD>@@-<2D><><05><><EFBFBD><EFBFBD><02> <01><07>4<EFBFBD><05><><07><>@<05><10><01><07>4<EFBFBD><06><07><>@<10>M<01><07><><13><>b8<15><><02> @J<><01><><02>"<01><07>4<EFBFBD>@5<><35><06><<3C>@V<>!4@J<><01><07>4<EFBFBD><06>9<EFBFBD><39>"<<3C><02><13><>c<><63><EFBFBD> <02><13><>`<10><13><>`V<>!D<><07><>@J<><10>#<01><07>4<EFBFBD>@<11><>"<<3C>@V<>!T@J<><01><07><><13><>b <20><02> <09><07>4<EFBFBD><02><19><>"<<3C><02><13><>c<><63><EFBFBD> <02><13><>` <10><13><>`(V<>!d@Jv<1B><>c<><63><EFBFBD>
|
||||
<12><1F><>㸀<><02><01><07>0<EFBFBD> $<24>
|
||||
om<EFBFBD>a$<24><07>4<EFBFBD>@@<10><01><07>0<EFBFBD><04>$<24>
|
||||
om<EFBFBD>a$<24><07>4<EFBFBD><04>)<29><>"<<3C><02>V<>!|@JU<01><07>䀐<02><01><07><>@JQ<10>
|
||||
-<2D><><05><><EFBFBD><EFBFBD><EFBFBD><04><11><>!V<>a<>@J<10><>/<2F><> <><E38080><04><11><>!V<>a<>@J
|
||||
<01><07>,<2C><><02><><01><07>,<2C>`P<><07>4<EFBFBD><06>P<EFBFBD><50><16><>;<3B><>c<><63><EFBFBD>`<04><11><>!V<>a<>@I<><01><07>4<EFBFBD> $<24><>`<60><02><15><><02><><EFBFBD><EFBFBD>
|
||||
<12>
|
||||
<01><07>4<EFBFBD><02><19><>"<<3C><02>V<>a<><11><>!@I<><10><><1B><>c<><63><EFBFBD>
|
||||
<12>
|
||||
<01><07>4<EFBFBD><03>!<21><>"<<3C><02>V<>b<11><>!@I<>#<23><>c<><63><EFBFBD><02><01><07>,<2C><04><04><07>4<EFBFBD><04><><07><><13><>c<><19><>#<23>@<04>)<29><>#<23><><EFBFBD><12><01><07>4<EFBFBD>@<40><07><>@<05><10>b<01><07><><EFBFBD><07>H<15><><02> @I<><01><><12> <01><07><>/<2F><><05> <20>M<EFBFBD><17><> /<02>(3<><33>c<><63><EFBFBD><02><01><07>,<2C><06><04><07>4<EFBFBD><06>9<EFBFBD><39>"<<3C><1C><07><><15><><02><>V<>"$<1B><>c<>@I<>;<3B><>c<><63><EFBFBD><12><01><07>4<EFBFBD><13><>b<<3C><02> <09><07><>V<>"L@I<><10>,<15><><02><><EFBFBD><EFBFBD>
|
||||
<02><01><07>,<2C><02><04><07><><19><>" <20>@<0C><07>4<EFBFBD>@<1F><><03><<3C><15><><02><>V<>"h<1B><>c<>@I<>!<21><>#<23><><EFBFBD><12><01><07><>#<23><>b <20>@<11><07>4<EFBFBD><04>'<27><><04><<3C><02>V<>"<22>@I{<10>
|
||||
)<29><>#<23><><EFBFBD> <04><11><>!V<>b<>@IG<01><07>4<EFBFBD>a(<28>'<27>4<10><>
|
||||
/<2F><> <><02> <11><>!V<>b<><62><07>H@I6<01><07><<3C>'<27>0<EFBFBD><07>0<EFBFBD><30><02>"<01><07>0<EFBFBD><06><0C><><02><10><01><07>0<EFBFBD> V<>b<>@IG<01><><12><10>;<3B><>cĀ<63><12><01><07>0<EFBFBD> V<>b<>@I7<01><><12><13><>c<><63><EFBFBD>`<04><11><>!V<>c@I<10><01><01><07>8<EFBFBD>'<27>,<2C><07>,<2C><><02><01><07>,<2C> <08><07>0<EFBFBD><03><08><>
|
||||
<12>
|
||||
<01><07>0<EFBFBD>`<04><07>,<2C><04>@I<01><><12><10><01><07>,<2C><04>(<28>'<27>,<10><><EFBFBD><01><07>,<2C><><02>-<2D><><05><><EFBFBD><EFBFBD><12><01><07>,<2C><05>P<EFBFBD><07>0<EFBFBD>`P<><50><EFBFBD><16><10><01><01><07>,<2C><06><0C> <01>&<26><0C><07>0<EFBFBD>`<08><07>0<EFBFBD>`<04><02><08>"<22><02>'<27>H<EFBFBD><07>0<EFBFBD>`<08><><EFBFBD><06>&<01><07>HV<>c@H<><01><><12><01><07>(<28> <01>'<27>(#<23><>c<><63><EFBFBD><12><10><01><01><07>HV<>c @H<><01><><12><01><07>(<28><04><01>'<27>('<27><>㤀<><12><10><01>)<29><>#<23><><EFBFBD><12><11><>#<23>@H<><01><08><07>0<EFBFBD>`<13><>c<>@H<><01><><12><10>x<01><07>D@H<><01><07>0<EFBFBD><05><08><17> @H<><01>'<27><><EFBFBD><07><><EFBFBD><07>D@H<><01><07><>V<>c$@H<><01><07>0<EFBFBD> <04><07><>@H<><01><07>0<EFBFBD>`$7<<3C><0E>;<10><><12><><01><07>L<EFBFBD><4C><12><><13><>c<><63><EFBFBD> <02><><15><><02><><EFBFBD><EFBFBD>
|
||||
<12><01><07><><17><><02><<3C><02>V<>c(<11><>!@HS<19><>#<23><><EFBFBD><12>O<01><07>0<EFBFBD>a$<24><><02>J<01><07>0<EFBFBD> <20>%<<3C>@)(<28><><EFBFBD><12>B+<2B><>c<><63><EFBFBD><02>
|
||||
<01><07>0<EFBFBD><05><> @<01><01>'<27><><10><01><07>0<EFBFBD><05><>'<27><>3<EFBFBD><33>c<><63><EFBFBD><02><01><07><><EFBFBD><07><>@<10>"<01><07><><EFBFBD><07>H<15><><02> @HS<01><><02>
|
||||
<01><07><>5<EFBFBD><35><06><<3C><02><1A><07><>V<>#@@H;<10><01><07><>7<EFBFBD><37><06> <20>@<1B><07><>9<EFBFBD><39>"<<3C><02>V<>#T@H-<01><07><>@H-<10>1;<3B><>c<><63><EFBFBD><02><01><07><>@c<01><07><>@<01><07><><EFBFBD>!<21>@<03><10><01><07><><11><>"<<3C>@V<>#l@H<01><07><><15><><02><<3C>@
|
||||
V<>#|@H<01><07><><17><><02><<3C>@V<>#<23>@G<><01><07>0<EFBFBD><03><07><><EFBFBD><07>L<4C><7F><EFBFBD><10><1B><>c<><63><EFBFBD>
|
||||
<12><01><07><><1F><><03><<3C><02>V<>c<><11><>!@G<><10><>!<21><>#<23><><EFBFBD><02><01><07>0<EFBFBD>a$<24><><02><01><07>0<EFBFBD><04><>+<<3C>
|
||||
/(<28><><EFBFBD><12><01><07>0<EFBFBD><06> @l<01>'<27><><EFBFBD> <01>'<27><><10><01><07>0<EFBFBD><06><>'<27><><EFBFBD>'<27><><10><01><07>0<EFBFBD><07>'<27><><EFBFBD>'<27><><11><>#<23><><EFBFBD><12><01><07><><13><>b<<3C><02> V<>c<><11><>!@G<><15><><02><><EFBFBD><EFBFBD>
|
||||
<02><17><>㠀<><02><01><07><><EFBFBD><07><>@c<10><01><07><><EFBFBD><07><>@<02><10>8<01><07><><EFBFBD><07>H<15><><02> @G<><01><><02><01><07><><19><>"<<3C><02><13><>c<><63><EFBFBD> <02><13><>`,<10><13><>`4V<>#<23><><07><>@G~<10><01><07><><1B><>b <20><02>
|
||||
<EFBFBD><07><><1F><><03><<3C><02><13><>c<><63><EFBFBD> <02><13><>`8<10><13><>`@V<>#<23>@Ge!<21><>#<23><><EFBFBD><12>#<23><>c<><63><EFBFBD><02><01><07>0<EFBFBD><04>$<24>
|
||||
om<EFBFBD>a$<24><07><>@<10><01><07>0<EFBFBD><04>$<24>
|
||||
om<EFBFBD>a$<24><07><>)<29><>"<<3C><02>V<>#<23>@GF<01><07>䀐<02><01><07><>@GB<01><07><>@G?<01><07>0<EFBFBD><05>(<28>'<27>0<10><><EFBFBD>1<><31>#<23><><EFBFBD><02> <11><>!W<>`<08><07><>@G<01><07>8<EFBFBD>'<27>,<2C><07>,<2C><><02>y<01><07>,<2C><06><0C><><02><10>m<01><07>D@G<01><07>,<2C>`<08> <09> @G<01>'<27><><EFBFBD><07><><EFBFBD><07>D@G<01><07><>W<>`$@F<><01><07>,<2C><02><04><07><>@F<><17><><><12><01><07><><19><>"<<3C><02>W<>`(<11><>!@F<><1B><>c<><63><EFBFBD>
|
||||
<02>
|
||||
<1F><>㜀<><12><01><07><><EFBFBD><07><>@<02><10>3<01><07><><EFBFBD><07>H<15><><02> @F<><01><><12> <01><07><>#<23><>b <20>L<11><><EFBFBD>/<02>'<27><>㜀<><12><01><07><>)<29><>"<<3C><02><14><07><>W<> <@F<><10>+<2B><>c<><63><EFBFBD><12><01><07><>-<2D><><05> <20>@<16><07><>/<2F><><05><<3C><02>W<> T@F<><01><07><>@F<><01><07>,<2C>!(<28>'<27>,<10><><EFBFBD><01><07>@<40><><02><01><07>@<40>'<27>4<EFBFBD><07>4<EFBFBD>!(<28>'<27>@<40><07>4<EFBFBD>@F<><01><07>4<EFBFBD>`@F<><01><07>4@F<><10><><EFBFBD><01><07><<3C><>
|
||||
<02><01><07><<3C>'<27>0<EFBFBD><07>0<EFBFBD>!(<28>'<27><<3C><07>0<EFBFBD><03>@F<><01><07>0<EFBFBD> @F<><01><07>0@F<><10><><EFBFBD><01><07>8<EFBFBD><38><02><01><07>8<EFBFBD>'<27>,<2C><07>,<2C><04>(<28>'<27>8<EFBFBD><07>,<2C>@@Fx<01><07>,<2C><05>@Ft<01><07>,@Fq<10><><EFBFBD><01><07><>@Fl<10><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD><07>D<EFBFBD>'<27><><13><>c<><63><EFBFBD> <02>
|
||||
<11><>!W<>`l<><07><>@F+<11><>!@Fu<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<16>e<01><07><><13><>b4<62>$@FL<01>'<27><><EFBFBD><EFBFBD><16><10>Y<01><07><><19><>"4<>*<2A><1B><>Kb4<62><34>`/<02>2<01><07><><EFBFBD> /@F*<01>'<27><><EFBFBD><EFBFBD><02><01><07><><EFBFBD>+<2B><11><>"4@F<01><08><07><>@F
|
||||
<01><1D> @F <01>'<27><><EFBFBD><07><>W<>`<60><><07><><17><><12>4@F<10><11><>"4@E<><01> @E<><01>'<27><><EFBFBD><07><><13><>b4@E<><10><11><>"4@E<><01> @E<><01>'<27><><EFBFBD><07><><13><>b4@E<><01><07>H<EFBFBD> <01>'<27>H<EFBFBD>$ <01><><02><01><07><>@E<><01><07><><EFBFBD>'<27><><EFBFBD><07><><EFBFBD><04><01>'<27><><10><><EFBFBD><01><07>H<EFBFBD><48><12><01><07><>@E<><01> @E<><01>'<27><><EFBFBD><07><><EFBFBD><07><>@E<><01><07><><EFBFBD>'<27><>-<2D><><05><><EFBFBD><EFBFBD><02>
|
||||
<11><>!W<>`<60><><07><>@E<><11><>!@E<><01><07><><10><01><08><><EFBFBD><08><>?<3F><><EFBFBD>c<08><><EFBFBD><01>'<27>D<EFBFBD><07>t<EFBFBD><07>D@E<><01><>?<3F><02>\<01><07><><<3C>
|
||||
<10><><EFBFBD><12>R<01><07>D@E<><01>'<27>p<EFBFBD><07>p<EFBFBD><70><02>H<01><07>p@E<><01>'<27>l<EFBFBD><6C><02>;<01><07>l<EFBFBD>
|
||||
W<>`<60>@E<><01><><02>0<01><07>l<EFBFBD>
|
||||
W<>`<60>@E<><01><><02>'<01><07>l<EFBFBD>
|
||||
@Ep<01><08><07>D@El<01><1D> @Ek<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD>
|
||||
<02><01><07><><EFBFBD><07>D@Eh<01><07><>W<>`<60>@Ef<01><07>l<EFBFBD>`
|
||||
<EFBFBD><07><>@Ea<01><07><><EFBFBD><7F><EFBFBD><01><07><>@Ej<10><><EFBFBD><01><07>p@E<><01><07>D@E<><10><01><07>D@E<><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD><07>D<EFBFBD> @E<><01><>?<3F><12><11><>"0<><30> <12><01><07>D<EFBFBD>!<21>@Ew<01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD><07>D<EFBFBD><07>H@Eo<01><>?<3F><12><01><07>H@EN<01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD>'<27>L<EFBFBD>'<27>P<EFBFBD>'<27>T@E`<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD>?<3F><12>W<> <20>@E9<10>Q<01><07><><EFBFBD><EFBFBD> <12>?<01><07>D<EFBFBD><44>
|
||||
<02><01><07>D@E)<01><>?<3F><12>W<> <20>@E%<10>,<01><07>T<EFBFBD>! <09>!<21>@E?<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><12><01><07>T@E<01> @D<><11><> <20>@E3<01><08><07><>@E2<11><>!@E+<01><08><07><>@E*<01><07>H<EFBFBD><07>H<EFBFBD><07>L<EFBFBD><07>P<EFBFBD> @E&<01><07>H@D<><01> @D<><01> @E <01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD><02><01><07><><EFBFBD><EFBFBD><EFBFBD><02><10><><EFBFBD><01><><EFBFBD><08><>?<3F><><EFBFBD>c<18><><EFBFBD><01>'<27>D<EFBFBD><07>x<EFBFBD><07>D@D<><01><>?<3F><02><01><07><><<3C>
|
||||
<10><><EFBFBD><02><01><07>D@D<><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD><07>D<EFBFBD> @D<><01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD>?<3F><12><01><07>D@D<><10>M<01><07>H<EFBFBD>!<01>!<21>@D<><01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD><EFBFBD><12>
|
||||
<01><07>H@D<><01><07><>@D<><10>;<01><07><><EFBFBD><07><><EFBFBD>$@D<><01>'<27><><EFBFBD><EFBFBD><04><01><07><><EFBFBD><07><><EFBFBD><07><>@D<><01>'<27><><EFBFBD><EFBFBD><04><01><07><><EFBFBD><07><><EFBFBD>"<22>
|
||||
<EFBFBD>'<27><><EFBFBD><EFBFBD><02><10><><EFBFBD><01><07><><EFBFBD><EFBFBD>?<3F><12><10><10><><EFBFBD><01><07><><EFBFBD><EFBFBD><EFBFBD><12><01><07>D@D<><10> <01><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><12><01><07>H@Dw<01><07><>@D<><01><07><>@D<><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD><07>D<EFBFBD><07>H@D<><01><>?<3F><12><01><07>D@D`<01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H@Du<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD>?<3F><12>W<> <20>@DN<10>1<01><07><><EFBFBD><EFBFBD> <12><01><07>D@DB<01><>?<3F><12>W<> <20>@D><10><11><> D<13><>`H<15><><12>L<EFBFBD><07>H<EFBFBD> @D\W<> <20>@D.<01> @C<><01> @DU<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD>
|
||||
<02><01><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><10><><EFBFBD><01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD><07>D<EFBFBD>!<21>@DO<01><>?<3F><12><01><07>D@D
|
||||
<01><><EFBFBD><08><>?<3F><><EFBFBD>c<EFBFBD><63><EFBFBD><EFBFBD><01>'<27>D<EFBFBD>'<27>H<EFBFBD><07>H@DB<01>'<27><><EFBFBD><07><><EFBFBD><EFBFBD><12><11><>!W<>`<60><><07>H@C<><10><01><07><><EFBFBD>`<08>?<3F><><07>D@D1<01><><EFBFBD><08><><EFBFBD>㿠<EFBFBD><E3BFA0><EFBFBD><08><>8)`*|<7C><><EFBFBD><EFBFBD>H,<04><><EFBFBD><EFBFBD>H.<11><><EFBFBD><EFBFBD><EFBFBD>H0 <10><><EFBFBD><EFBFBD><EFBFBD>H3<11><08><><EFBFBD><EFBFBD>H<><48><EFBFBD><EFBFBD>H<10>d<><64><EFBFBD><EFBFBD>H<><48><EFBFBD><EFBFBD>H;,PL<><4C><EFBFBD><EFBFBD>H<><48><EFBFBD><EFBFBD>H <11>!<11><><EFBFBD><EFBFBD><EFBFBD>H#$<24><><EFBFBD><EFBFBD>H<><48><EFBFBD><EFBFBD>H&x<><78><EFBFBD><EFBFBD>Husage: %s [options] [-W <working dir>] [-S <RCS dir>] [subdir ...]
|
||||
|
||||
options:
|
||||
-i[Aaoxm]
|
||||
clone: A - all the following
|
||||
a - "*.a" files
|
||||
o - "*.o" files
|
||||
x - executables ('x' mode bits set)
|
||||
m - "Makefile*" files
|
||||
-v verbose (the more, the verboser)
|
||||
source files
|
||||
-L take checked out source over RCS regardless of time
|
||||
-O don't check out new files, Only create symbolic links to exiting files
|
||||
(this option is for cloning build trees from controlled source trees)
|
||||
-R don't create any RCS links
|
||||
-l symbolicly link files instead of copying them
|
||||
-m make any missing directories
|
||||
-q quiet
|
||||
-d diff new versions of existing files
|
||||
-c<cmd> use <cmd> to do diffs (default is diffc)
|
||||
-o<out> write diffs to <out> instead of /tmp/,out??????
|
||||
-W<dir> use working directory <dir> (default is ".")
|
||||
-S<dir> use RCS/source directory <dir>
|
||||
(default is /RCS directories of working tree)
|
||||
-f follow source-tree links to non-RCS dirs (old behavior)
|
||||
-X execute instead of generating shell script
|
||||
-C process SCCS directories if present
|
||||
-s do not resolve symbolic links for files. use file name
|
||||
%s: can't get current working directory
|
||||
%s/%s/RCS/RCSusing sourcedir of "%s"
|
||||
%s: can't get current working directory
|
||||
%s/%s//#!/bin/sh
|
||||
#
|
||||
# the following makes things more readeable
|
||||
|
||||
w='%s' # Working directory
|
||||
s='%s' # Source directory
|
||||
rm -rf %s; touch %s
|
||||
|
||||
%s/%s%s/%sScanning directory "%s"
|
||||
>> GetNew("%s", "%s")
|
||||
/RCS%s/RCS>> RcsDir="%s"
|
||||
/RCS%s/RCS/RCS%s/RCS>> RCS RcsDir="%s"
|
||||
%s: creating symlink
|
||||
rm -f ${w}/%s
|
||||
ln -s %s ${w}/%s
|
||||
ln -s ${s}/%s ${w}/%s
|
||||
r>> soft link RcsDir="%s"
|
||||
%s: >10 "soft" links
|
||||
.,v/.../RCS.../>> Pass 1: scanning WorkingDir "%s"
|
||||
>> keyname="%s", fullname="%s"
|
||||
.o>> .o -- ignored
|
||||
.a>> .a -- ignored
|
||||
>> Makefile* -- ignored
|
||||
RCS>> RCS -- ignored
|
||||
SCCS>> SCCS -- ignored
|
||||
>> executable -- ignored
|
||||
source: keyname="%s" fullname="%s"
|
||||
no source file
|
||||
>> directory
|
||||
rcs: keyname="%s" fullname="%s"
|
||||
no rcs file
|
||||
.snf%s: no source or RCS file
|
||||
>> source newer than rcs
|
||||
>> source newer than working
|
||||
%s: writable -- not updated
|
||||
%s: newer file
|
||||
%s ${w}/%s %s >>%s 2>&1
|
||||
%s ${w}/%s ${s}/%s >>%s 2>&1
|
||||
rm -f ${w}/%s
|
||||
%s %s ${w}/%s
|
||||
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.apollo.binary
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.apollo.binary
Executable file
Binary file not shown.
1674
cde/admin/BuildTools/fnrclone/findnewrcs.c
Normal file
1674
cde/admin/BuildTools/fnrclone/findnewrcs.c
Normal file
File diff suppressed because it is too large
Load Diff
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.osf.400s
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.osf.400s
Executable file
Binary file not shown.
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.osf.pa
Executable file
BIN
cde/admin/BuildTools/fnrclone/findnewrcs.osf.pa
Executable file
Binary file not shown.
140
cde/admin/BuildTools/fnrclone/fnrclone
Executable file
140
cde/admin/BuildTools/fnrclone/fnrclone
Executable 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
|
||||
|
||||
58
cde/admin/BuildTools/fnrclone/makefindnewrcs
Executable file
58
cde/admin/BuildTools/fnrclone/makefindnewrcs
Executable 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}");
|
||||
}
|
||||
144
cde/admin/BuildTools/master_build/ListTheTree
Executable file
144
cde/admin/BuildTools/master_build/ListTheTree
Executable 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");
|
||||
54
cde/admin/BuildTools/master_build/builds
Normal file
54
cde/admin/BuildTools/master_build/builds
Normal 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
|
||||
|
||||
|
||||
|
||||
121
cde/admin/BuildTools/master_build/cleanLinks
Executable file
121
cde/admin/BuildTools/master_build/cleanLinks
Executable 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";
|
||||
}
|
||||
}
|
||||
28
cde/admin/BuildTools/master_build/cleanLogs
Executable file
28
cde/admin/BuildTools/master_build/cleanLogs
Executable 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
|
||||
23
cde/admin/BuildTools/master_build/cleanfnr
Executable file
23
cde/admin/BuildTools/master_build/cleanfnr
Executable 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
|
||||
29
cde/admin/BuildTools/master_build/cleansrctree
Executable file
29
cde/admin/BuildTools/master_build/cleansrctree
Executable 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 {} \;
|
||||
69
cde/admin/BuildTools/master_build/cron_example
Normal file
69
cde/admin/BuildTools/master_build/cron_example
Normal 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
|
||||
50
cde/admin/BuildTools/master_build/fixSourceDirPerm
Executable file
50
cde/admin/BuildTools/master_build/fixSourceDirPerm
Executable 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 {} \;
|
||||
89
cde/admin/BuildTools/master_build/manageBInstallDirs
Executable file
89
cde/admin/BuildTools/master_build/manageBInstallDirs
Executable 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";
|
||||
}
|
||||
520
cde/admin/BuildTools/master_build/master_build
Executable file
520
cde/admin/BuildTools/master_build/master_build
Executable 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
|
||||
55
cde/admin/BuildTools/master_build/mkPreviousLink
Executable file
55
cde/admin/BuildTools/master_build/mkPreviousLink
Executable 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";
|
||||
|
||||
20
cde/admin/BuildTools/master_build/remote_build
Executable file
20
cde/admin/BuildTools/master_build/remote_build
Executable 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 $*"
|
||||
9
cde/admin/BuildTools/setup/README
Normal file
9
cde/admin/BuildTools/setup/README
Normal 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!!!
|
||||
22
cde/admin/BuildTools/setup/hpversioncheck
Executable file
22
cde/admin/BuildTools/setup/hpversioncheck
Executable 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
|
||||
|
||||
|
||||
144
cde/admin/BuildTools/setup/ibmversioncheck
Executable file
144
cde/admin/BuildTools/setup/ibmversioncheck
Executable 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");
|
||||
}'
|
||||
BIN
cde/admin/BuildTools/setup/perl.hp.tar.Z
Normal file
BIN
cde/admin/BuildTools/setup/perl.hp.tar.Z
Normal file
Binary file not shown.
BIN
cde/admin/BuildTools/setup/perl.ibm.tar.Z
Normal file
BIN
cde/admin/BuildTools/setup/perl.ibm.tar.Z
Normal file
Binary file not shown.
BIN
cde/admin/BuildTools/setup/perl.sun.tar.Z
Normal file
BIN
cde/admin/BuildTools/setup/perl.sun.tar.Z
Normal file
Binary file not shown.
158
cde/admin/BuildTools/tog/build_id
Executable file
158
cde/admin/BuildTools/tog/build_id
Executable 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
|
||||
207
cde/admin/BuildTools/tog/build_project
Executable file
207
cde/admin/BuildTools/tog/build_project
Executable 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
|
||||
751
cde/admin/BuildTools/tog/build_summary
Executable file
751
cde/admin/BuildTools/tog/build_summary
Executable 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
|
||||
124
cde/admin/BuildTools/tog/build_summary_cron
Executable file
124
cde/admin/BuildTools/tog/build_summary_cron
Executable 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
|
||||
662
cde/admin/BuildTools/tog/build_world
Executable file
662
cde/admin/BuildTools/tog/build_world
Executable 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
|
||||
348
cde/admin/BuildTools/tog/cc_checkedout
Executable file
348
cde/admin/BuildTools/tog/cc_checkedout
Executable 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
|
||||
334
cde/admin/BuildTools/tog/cc_submissions
Executable file
334
cde/admin/BuildTools/tog/cc_submissions
Executable 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
|
||||
59
cde/admin/BuildTools/tog/cde.components
Normal file
59
cde/admin/BuildTools/tog/cde.components
Normal 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
|
||||
237
cde/admin/BuildTools/tog/cde.crondb
Normal file
237
cde/admin/BuildTools/tog/cde.crondb
Normal 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
|
||||
5
cde/admin/BuildTools/tog/cde.crontab
Normal file
5
cde/admin/BuildTools/tog/cde.crontab
Normal file
@@ -0,0 +1,5 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Builds and reports
|
||||
#
|
||||
15 * * * * /project/dt/scripts/cron_scripts -db /project/dt/admin/cron/cde.crondb
|
||||
9
cde/admin/BuildTools/tog/cdedoc.components
Normal file
9
cde/admin/BuildTools/tog/cdedoc.components
Normal 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
|
||||
54
cde/admin/BuildTools/tog/cdetest.components
Normal file
54
cde/admin/BuildTools/tog/cdetest.components
Normal 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
|
||||
173
cde/admin/BuildTools/tog/compress_msg
Executable file
173
cde/admin/BuildTools/tog/compress_msg
Executable 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
|
||||
162
cde/admin/BuildTools/tog/cron_scripts
Executable file
162
cde/admin/BuildTools/tog/cron_scripts
Executable 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
|
||||
32
cde/admin/BuildTools/tog/dt_errors.msg
Normal file
32
cde/admin/BuildTools/tog/dt_errors.msg
Normal 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
|
||||
7
cde/admin/BuildTools/tog/dt_ignore.msg
Normal file
7
cde/admin/BuildTools/tog/dt_ignore.msg
Normal 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
|
||||
10
cde/admin/BuildTools/tog/dt_make.msg
Normal file
10
cde/admin/BuildTools/tog/dt_make.msg
Normal 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
|
||||
8
cde/admin/BuildTools/tog/dt_warnings.msg
Normal file
8
cde/admin/BuildTools/tog/dt_warnings.msg
Normal file
@@ -0,0 +1,8 @@
|
||||
WARNING
|
||||
Warning
|
||||
Warning:
|
||||
warning
|
||||
warning:
|
||||
warning\(
|
||||
\(E\)
|
||||
mkcatdefs: no
|
||||
278
cde/admin/BuildTools/tog/extract_log
Executable file
278
cde/admin/BuildTools/tog/extract_log
Executable 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
|
||||
67
cde/admin/BuildTools/tog/extract_log.awk
Normal file
67
cde/admin/BuildTools/tog/extract_log.awk
Normal 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
|
||||
}
|
||||
239
cde/admin/BuildTools/tog/extract_msg
Executable file
239
cde/admin/BuildTools/tog/extract_msg
Executable 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
|
||||
139
cde/admin/BuildTools/tog/initialize_view
Executable file
139
cde/admin/BuildTools/tog/initialize_view
Executable 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
|
||||
190
cde/admin/BuildTools/tog/install_world
Executable file
190
cde/admin/BuildTools/tog/install_world
Executable 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
|
||||
99
cde/admin/BuildTools/tog/make_report_dir
Executable file
99
cde/admin/BuildTools/tog/make_report_dir
Executable 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
|
||||
13
cde/admin/BuildTools/tog/motif.components
Normal file
13
cde/admin/BuildTools/tog/motif.components
Normal file
@@ -0,0 +1,13 @@
|
||||
bindings
|
||||
bitmaps
|
||||
clients/mwm
|
||||
clients/uil
|
||||
clients/xmbind
|
||||
config
|
||||
demos
|
||||
doc
|
||||
lib/Xm
|
||||
lib/Mrm
|
||||
localized
|
||||
tests
|
||||
tools/wml
|
||||
96
cde/admin/BuildTools/tog/prune_logs
Executable file
96
cde/admin/BuildTools/tog/prune_logs
Executable 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
|
||||
96
cde/admin/BuildTools/tog/prune_logs_compress
Executable file
96
cde/admin/BuildTools/tog/prune_logs_compress
Executable 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
|
||||
155
cde/admin/BuildTools/tog/script_setup.ksh
Normal file
155
cde/admin/BuildTools/tog/script_setup.ksh
Normal 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"
|
||||
85
cde/admin/BuildTools/tog/x11.components
Normal file
85
cde/admin/BuildTools/tog/x11.components
Normal 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
|
||||
8
cde/admin/Imakefile
Normal file
8
cde/admin/Imakefile
Normal file
@@ -0,0 +1,8 @@
|
||||
XCOMM $XConsortium: Imakefile /main/4 1995/10/30 13:41:46 rswiston $
|
||||
#define IHaveSubdirs
|
||||
#define PassCDebugFlags
|
||||
|
||||
SUBDIRS = IntegTools
|
||||
|
||||
MakeSubdirs($(SUBDIRS))
|
||||
DependSubdirs($(SUBDIRS))
|
||||
44
cde/admin/IntegTools/Imakefile
Normal file
44
cde/admin/IntegTools/Imakefile
Normal file
@@ -0,0 +1,44 @@
|
||||
XCOMM $XConsortium: Imakefile /main/5 1996/04/21 19:06:35 drk $
|
||||
#define IHaveSubdirs
|
||||
#define PassCDebugFlags
|
||||
|
||||
SUBDIRS = post_install dbTools updateTools
|
||||
|
||||
#ifdef RsArchitecture
|
||||
OVERRIDE=install.dt.ibm
|
||||
#endif
|
||||
|
||||
#ifdef HPArchitecture
|
||||
OVERRIDE=install.dt.hp
|
||||
#endif
|
||||
|
||||
#ifdef SunArchitecture
|
||||
LOCAL_CPP_DEFINES=-Usun
|
||||
OVERRIDE=install.dt.sun
|
||||
#endif
|
||||
|
||||
#ifdef UXPArchitecture
|
||||
LOCAL_CPP_DEFINES=-Uuxp
|
||||
OVERRIDE=install.dt.uxp
|
||||
#endif
|
||||
|
||||
#ifdef USLArchitecture
|
||||
LOCAL_CPP_DEFINES=-Uusl
|
||||
OVERRIDE=install.dt.usl
|
||||
#endif
|
||||
|
||||
#ifdef AlphaArchitecture
|
||||
OVERRIDE=install.dt.dec
|
||||
#endif
|
||||
|
||||
|
||||
MakeSubdirs($(SUBDIRS))
|
||||
|
||||
AllTarget(install.dt $(OVERRIDE) dinstall.dt)
|
||||
|
||||
CppScriptTarget(install.dt,install.dt.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppScriptTarget($(OVERRIDE),$(OVERRIDE).src,$(LOCAL_CPP_DEFINES),)
|
||||
CppScriptTarget(dinstall.dt,dinstall.dt.src,$(LOCAL_CPP_DEFINES),)
|
||||
|
||||
depend::
|
||||
|
||||
213
cde/admin/IntegTools/config/config.dec
Normal file
213
cde/admin/IntegTools/config/config.dec
Normal file
@@ -0,0 +1,213 @@
|
||||
####################################################
|
||||
### Configuration Instructions for DEC OSF1 Systems ###
|
||||
####################################################
|
||||
|
||||
|
||||
FIXME FIXME: Need to change this. Discuss /sbin/init.d/xdm script
|
||||
and its operation.... -mcb
|
||||
|
||||
|
||||
|
||||
There are two ways to start the desktop:
|
||||
|
||||
|
||||
* You can manually start the desktop Login Manager. The advantage
|
||||
of using this method is that you will not have to edit
|
||||
/etc/inittab.
|
||||
|
||||
* You can enable the system to automatically start the desktop
|
||||
when the system is rebooted. This is done by editing
|
||||
/etc/inittab.
|
||||
|
||||
Removing the Developer's Conference CDE Desktop
|
||||
===============================================
|
||||
|
||||
It is imperative that Snapshot 1 and Snapshot 2 desktops do not
|
||||
co-mingle. Installers and users should ensure that old clients and
|
||||
configuration files are exited or removed.
|
||||
|
||||
|
||||
Upgrading systems in a networked environment
|
||||
--------------------------------------------
|
||||
|
||||
If CDE is installed in a network environment, it is imperative that
|
||||
all systems be upgraded at the same time.
|
||||
|
||||
|
||||
Removing the Snapshot 1 desktop
|
||||
-------------------------------
|
||||
|
||||
Installers are advised to remove the Snapshot 1 Desktop files from
|
||||
their systems. Those clients and files are obsolete.
|
||||
|
||||
|
||||
Stopping Desktop clients before installing Snapshot 2
|
||||
-----------------------------------------------------
|
||||
|
||||
If the Snapshot 1 desktop is not removed, ensure that all desktop
|
||||
clients are inactive before installing the Snapshot 2 desktop. If the
|
||||
desktop was started via /etc/inittab, issue the telinit command to
|
||||
stop dtlogin and any other desktop client.
|
||||
|
||||
|
||||
Removing the users's .dtprofile and .dt directory
|
||||
-------------------------------------------------
|
||||
|
||||
It is strongly advised that all CDE users on the system remove or
|
||||
rename their .dt directory and their .dtprofile. The Snapshot 2
|
||||
Desktop is not compatible with the Snapshot 1 Desktop versions of
|
||||
these files.
|
||||
|
||||
If users have customized their .dt/dtwmrc file and want to keep it,
|
||||
they will need to cut and paste the appropriate pieces into the new
|
||||
dtwmrc provided.
|
||||
|
||||
|
||||
|
||||
Before You Start the Desktop (HP-UX)
|
||||
======================================
|
||||
|
||||
Special Configurations
|
||||
----------------------
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See
|
||||
chapter 2 of the Getting Started Guide:
|
||||
|
||||
|
||||
* If the system console is a non-bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
|
||||
The Subprocess Control Daemon
|
||||
=============================
|
||||
|
||||
If you are working in an environment where a CDE Desktop action needs
|
||||
to start an application on another workstation running CDE, the
|
||||
Subprocess Control Daemon configuration must be completed on both
|
||||
workstations.
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. For authentication, the user's home directory on a remote system
|
||||
must be mounted to the local system.
|
||||
|
||||
3. To run an application with a WINDOW_TYPE of NO_STDIO (see Appendix
|
||||
A, Advanced User's and System Administrator's Guide), you will need
|
||||
to provide NFS-access by the local (client) system to the remote
|
||||
(application server) system's /var directory (if /var is a distinct
|
||||
volume), or / directory (if it is not). The mount point must be
|
||||
/nfs/<remote_host>/var (again, if /var is a distinct volume) or
|
||||
/nfs/<remote_host>/ (if it is not). Export the appropriate
|
||||
directory in /etc/exports on both the local and remote hosts.
|
||||
|
||||
|
||||
To Start And Stop the Desktop Manually
|
||||
======================================
|
||||
|
||||
To Start the Desktop:
|
||||
--------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Enter:
|
||||
|
||||
/usr/dt/bin/dtlogin -daemon
|
||||
|
||||
This starts the Login Manager and displays the Login screen.
|
||||
Logging in starts a desktop session.
|
||||
|
||||
To Stop the Desktop:
|
||||
--------------------
|
||||
|
||||
When you stop the Login Manager, you automatically kill all
|
||||
X servers and desktop sessions that it started.
|
||||
|
||||
1. In a terminal emulator window, log in as root.
|
||||
|
||||
2. Obtain the process id of the parent Login Manager by entering:
|
||||
|
||||
cat /var/dt/Xpid
|
||||
|
||||
3. Kill the Login Manager by entering:
|
||||
|
||||
kill -TERM <process_id>
|
||||
|
||||
where <process_id> is the value obtained from Xpid.
|
||||
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
========================================
|
||||
|
||||
When your system is configured to start the desktop automatically, the
|
||||
desktop Login Manager runs when the system is booted.
|
||||
|
||||
To start the desktop automatically, you must edit /etc/inittab to:
|
||||
|
||||
* Add a line that starts the CDE Desktop.
|
||||
|
||||
* Set the default run level to the run level assigned to the CDE
|
||||
Desktop.
|
||||
|
||||
NOTE: Edit /etc/inittab very carefully.
|
||||
Errors in the file can prevent the system from booting
|
||||
successfully.
|
||||
|
||||
|
||||
To Enable Desktop Auto-Start
|
||||
----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. If you are running HP VUE, shut it down by entering:
|
||||
|
||||
/etc/telinit <n>; exit
|
||||
|
||||
where <n> is a run level assigned to the console and not
|
||||
assigned to HP VUE or to halting the system. You can find a
|
||||
run level by examinining the lines beginning with cons and vue
|
||||
in /etc/inittab. For example, the following lines indicate
|
||||
that you can use run levels other than 3, 4, or 6.
|
||||
|
||||
halt:6:wait:/usr/lib/X11/ignition/shutdown.ksh
|
||||
cons:012456:respawn:/etc/getty -h console console
|
||||
vue :34:respawn:/etc/vuerc
|
||||
|
||||
|
||||
3. Make a backup copy of /etc/inittab.
|
||||
|
||||
4. Open /etc/inittab for editing (in a diskless cluster, /etc/inittab
|
||||
is a context-dependent file).
|
||||
|
||||
5. Look for the line that sets the default run level (starting with
|
||||
init:). Set the default run level to 5.
|
||||
|
||||
init:5:initdefault:
|
||||
|
||||
|
||||
6. Add a line that starts the desktop at that run level:
|
||||
|
||||
dt :5:respawn:/usr/dt/bin/dtrc
|
||||
|
||||
|
||||
To Disable Desktop Auto-Start
|
||||
-----------------------------
|
||||
|
||||
You can restore a console by changing to a run level assigned to a
|
||||
console and not assigned to the desktop.
|
||||
|
||||
|
||||
Switching Between CDE and HP VUE
|
||||
--------------------------------
|
||||
You can switch back and forth between CDE and HP VUE by executing:
|
||||
|
||||
/etc/telinit <n>; exit
|
||||
|
||||
|
||||
where <n>=3 switches to HP VUE and <n>=5 switches to CDE.
|
||||
|
||||
|
||||
207
cde/admin/IntegTools/config/config.hp
Normal file
207
cde/admin/IntegTools/config/config.hp
Normal file
@@ -0,0 +1,207 @@
|
||||
####################################################
|
||||
### Configuration Instructions for HP-UX Systems ###
|
||||
####################################################
|
||||
|
||||
There are two ways to start the desktop:
|
||||
|
||||
|
||||
* You can manually start the desktop Login Manager. The advantage
|
||||
of using this method is that you will not have to edit
|
||||
/etc/inittab.
|
||||
|
||||
* You can enable the system to automatically start the desktop
|
||||
when the system is rebooted. This is done by editing
|
||||
/etc/inittab.
|
||||
|
||||
Removing the Developer's Conference CDE Desktop
|
||||
===============================================
|
||||
|
||||
It is imperative that Snapshot 1 and Snapshot 2 desktops do not
|
||||
co-mingle. Installers and users should ensure that old clients and
|
||||
configuration files are exited or removed.
|
||||
|
||||
|
||||
Upgrading systems in a networked environment
|
||||
--------------------------------------------
|
||||
|
||||
If CDE is installed in a network environment, it is imperative that
|
||||
all systems be upgraded at the same time.
|
||||
|
||||
|
||||
Removing the Snapshot 1 desktop
|
||||
-------------------------------
|
||||
|
||||
Installers are advised to remove the Snapshot 1 Desktop files from
|
||||
their systems. Those clients and files are obsolete.
|
||||
|
||||
|
||||
Stopping Desktop clients before installing Snapshot 2
|
||||
-----------------------------------------------------
|
||||
|
||||
If the Snapshot 1 desktop is not removed, ensure that all desktop
|
||||
clients are inactive before installing the Snapshot 2 desktop. If the
|
||||
desktop was started via /etc/inittab, issue the telinit command to
|
||||
stop dtlogin and any other desktop client.
|
||||
|
||||
|
||||
Removing the users's .dtprofile and .dt directory
|
||||
-------------------------------------------------
|
||||
|
||||
It is strongly advised that all CDE users on the system remove or
|
||||
rename their .dt directory and their .dtprofile. The Snapshot 2
|
||||
Desktop is not compatible with the Snapshot 1 Desktop versions of
|
||||
these files.
|
||||
|
||||
If users have customized their .dt/dtwmrc file and want to keep it,
|
||||
they will need to cut and paste the appropriate pieces into the new
|
||||
dtwmrc provided.
|
||||
|
||||
|
||||
|
||||
Before You Start the Desktop (HP-UX)
|
||||
======================================
|
||||
|
||||
Special Configurations
|
||||
----------------------
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See
|
||||
chapter 2 of the Getting Started Guide:
|
||||
|
||||
|
||||
* If the system console is a non-bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
|
||||
The Subprocess Control Daemon
|
||||
=============================
|
||||
|
||||
If you are working in an environment where a CDE Desktop action needs
|
||||
to start an application on another workstation running CDE, the
|
||||
Subprocess Control Daemon configuration must be completed on both
|
||||
workstations.
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. For authentication, the user's home directory on a remote system
|
||||
must be mounted to the local system.
|
||||
|
||||
3. To run an application with a WINDOW_TYPE of NO_STDIO (see Appendix
|
||||
A, Advanced User's and System Administrator's Guide), you will need
|
||||
to provide NFS-access by the local (client) system to the remote
|
||||
(application server) system's /var directory (if /var is a distinct
|
||||
volume), or / directory (if it is not). The mount point must be
|
||||
/nfs/<remote_host>/var (again, if /var is a distinct volume) or
|
||||
/nfs/<remote_host>/ (if it is not). Export the appropriate
|
||||
directory in /etc/exports on both the local and remote hosts.
|
||||
|
||||
|
||||
To Start And Stop the Desktop Manually
|
||||
======================================
|
||||
|
||||
To Start the Desktop:
|
||||
--------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Enter:
|
||||
|
||||
/usr/dt/bin/dtlogin -daemon
|
||||
|
||||
This starts the Login Manager and displays the Login screen.
|
||||
Logging in starts a desktop session.
|
||||
|
||||
To Stop the Desktop:
|
||||
--------------------
|
||||
|
||||
When you stop the Login Manager, you automatically kill all
|
||||
X servers and desktop sessions that it started.
|
||||
|
||||
1. In a terminal emulator window, log in as root.
|
||||
|
||||
2. Obtain the process id of the parent Login Manager by entering:
|
||||
|
||||
cat /var/dt/Xpid
|
||||
|
||||
3. Kill the Login Manager by entering:
|
||||
|
||||
kill -TERM <process_id>
|
||||
|
||||
where <process_id> is the value obtained from Xpid.
|
||||
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
========================================
|
||||
|
||||
When your system is configured to start the desktop automatically, the
|
||||
desktop Login Manager runs when the system is booted.
|
||||
|
||||
To start the desktop automatically, you must edit /etc/inittab to:
|
||||
|
||||
* Add a line that starts the CDE Desktop.
|
||||
|
||||
* Set the default run level to the run level assigned to the CDE
|
||||
Desktop.
|
||||
|
||||
NOTE: Edit /etc/inittab very carefully.
|
||||
Errors in the file can prevent the system from booting
|
||||
successfully.
|
||||
|
||||
|
||||
To Enable Desktop Auto-Start
|
||||
----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. If you are running HP VUE, shut it down by entering:
|
||||
|
||||
/etc/telinit <n>; exit
|
||||
|
||||
where <n> is a run level assigned to the console and not
|
||||
assigned to HP VUE or to halting the system. You can find a
|
||||
run level by examinining the lines beginning with cons and vue
|
||||
in /etc/inittab. For example, the following lines indicate
|
||||
that you can use run levels other than 3, 4, or 6.
|
||||
|
||||
halt:6:wait:/usr/lib/X11/ignition/shutdown.ksh
|
||||
cons:012456:respawn:/etc/getty -h console console
|
||||
vue :34:respawn:/etc/vuerc
|
||||
|
||||
|
||||
3. Make a backup copy of /etc/inittab.
|
||||
|
||||
4. Open /etc/inittab for editing (in a diskless cluster, /etc/inittab
|
||||
is a context-dependent file).
|
||||
|
||||
5. Look for the line that sets the default run level (starting with
|
||||
init:). Set the default run level to 5.
|
||||
|
||||
init:5:initdefault:
|
||||
|
||||
|
||||
6. Add a line that starts the desktop at that run level:
|
||||
|
||||
dt :5:respawn:/usr/dt/bin/dtrc
|
||||
|
||||
|
||||
To Disable Desktop Auto-Start
|
||||
-----------------------------
|
||||
|
||||
You can restore a console by changing to a run level assigned to a
|
||||
console and not assigned to the desktop.
|
||||
|
||||
|
||||
Switching Between CDE and HP VUE
|
||||
--------------------------------
|
||||
You can switch back and forth between CDE and HP VUE by executing:
|
||||
|
||||
/etc/telinit <n>; exit
|
||||
|
||||
|
||||
where <n>=3 switches to HP VUE and <n>=5 switches to CDE.
|
||||
|
||||
|
||||
285
cde/admin/IntegTools/config/config.ibm
Normal file
285
cde/admin/IntegTools/config/config.ibm
Normal file
@@ -0,0 +1,285 @@
|
||||
|
||||
=================================
|
||||
Instructions for IBM AIX Systems 04/11/94
|
||||
=================================
|
||||
|
||||
The following instructions assume you have already installed the Common Desktop
|
||||
Environment according to the Installation Instructions on the CD jacket. If
|
||||
CDE is used in a networked environment, all systems should be upgraded at the
|
||||
same time.
|
||||
|
||||
There are two ways to start the desktop:
|
||||
|
||||
* You can manually start the desktop Login Manager. This method can be used to
|
||||
avoid rebooting the system. See the section To Start and Stop the Desktop
|
||||
Manually .
|
||||
|
||||
* You can configure the system to start the desktop automatically upon reboot.
|
||||
See the section To Enable and Disable Desktop Auto-Start..
|
||||
|
||||
Before You Start the Desktop
|
||||
============================
|
||||
******************************************************************************
|
||||
If you have a previous Common Desktop Environment (CDE) version on the system:
|
||||
******************************************************************************
|
||||
|
||||
Advise all CDE users on the system to remove or rename their $HOME/.dt directory
|
||||
and their $HOME/.dtprofile. The new files are not compatible with the old
|
||||
ones. If users have customized the $HOME/.dt/dtwmrc file and want to keep
|
||||
it, they will need to cut and paste the appropriate pieces into the new dtwmrc
|
||||
file provided.
|
||||
|
||||
Become the root user on the system. Make sure all other users on the system
|
||||
are logged out of CDE. Kill the Login Manager.
|
||||
|
||||
cat /etc/opt/dt/Xpid (obtain Login Manager process_id)
|
||||
|
||||
kill -TERM <process_id>
|
||||
|
||||
Killing the Login Manager process works no matter how the process was started.
|
||||
An alternate method is to stop the system resource control for the desktop.
|
||||
This method should only be used if CDE was configured on the system with
|
||||
/opt/dt/bin/dtconfig -e. If you don't know how CDE was configured on the
|
||||
system, lssrc -s dtsrc will return the status of dtsrc. If no status
|
||||
is returned, use the kill method in the previous paragraph.
|
||||
|
||||
stopsrc -c -s dtsrc
|
||||
|
||||
Completely remove the /etc/opt and /opt directory structures from the system.
|
||||
The install script mentioned in the README should have already given you the
|
||||
chance to remove these. Remove the dtsrc subsystem only if CDE was configured
|
||||
on the system with /opt/dt/bin/dtconfig -e:
|
||||
|
||||
rmssys -s dtsrc
|
||||
|
||||
Default Configuration
|
||||
|
||||
The Instructions for IBM AIX Systems show basic installation information.
|
||||
We recommend following these instructions before doing any personal
|
||||
customization work except in the case of the Special Configurations.
|
||||
|
||||
Special Configurations
|
||||
|
||||
If your system has one of these special configurations, you may need to edit
|
||||
certain Login Manager files before starting the desktop. More detailed
|
||||
information is in the CDE Getting Started Guide.
|
||||
|
||||
* If the system console is a non-bitmap device (e.g. an ascii
|
||||
terminal)i, comment out the following line in /usr/dt/config/Xservers that
|
||||
starts the Xserver on the console.
|
||||
|
||||
# :0 Local local@console /path/X [options] :0
|
||||
|
||||
* If the system is an X terminal or a host for X terminals,
|
||||
CDE must be running on the host and X Display Manager Control Protocol
|
||||
(XDMCP) must be enabled for the X terminal and must direct the Xterminal to
|
||||
contact the Login Manager on a specified host.
|
||||
|
||||
* If the system has more than one display, see Configuring
|
||||
Multiple Displays in the CDE Getting Started Guide.
|
||||
|
||||
To Start and Stop the Desktop Manually
|
||||
--------------------------------------
|
||||
There are two manual methods to start the desktop:
|
||||
|
||||
* You can manually start the CDE Login Manager. To use this method, you must
|
||||
have permission to log in as root. This method is preferable, because Login
|
||||
Manager sets certain environment variables that are needed during desktop
|
||||
sessions. See the section Manually Starting and Stopping Login Manager.
|
||||
|
||||
* You can log in using conventional methods, and then manually run the
|
||||
CDE Session Manager, which starts a desktop session. See the section
|
||||
Manually Starting and Stopping Session Manager.
|
||||
|
||||
Manually Starting and Stopping Login Manager
|
||||
--------------------------------------------
|
||||
To manually start Login Manager:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Enter:
|
||||
|
||||
/usr/dt/bin/dtlogin -daemon
|
||||
|
||||
This starts the Login Manager and displays the Login screen.
|
||||
Logging in starts a desktop session.
|
||||
|
||||
To manually stop Login Manager:
|
||||
|
||||
When you stop the Login Manager, you automatically kill all X servers and
|
||||
desktop sessions that it started.
|
||||
|
||||
1. In a terminal emulator window, log in as root.
|
||||
|
||||
2. Obtain the process id of the Login Manager by entering:
|
||||
|
||||
cat /var/dt/Xpid
|
||||
|
||||
3. Kill the Login Manager by entering:
|
||||
|
||||
kill -TERM <process_id>
|
||||
|
||||
where <process_id> is the value obtained from Xpid.
|
||||
|
||||
Manually Starting and Stopping Session Manager
|
||||
----------------------------------------------
|
||||
Using this method
|
||||
|
||||
* leaves you responsible for setting certain environment variables to values
|
||||
required by the desktop if suitable values are not already set in your
|
||||
environment.
|
||||
|
||||
|
||||
* allows you to use CDE while others serving from the same system, including
|
||||
the console are not.
|
||||
|
||||
1. Log in. (You do not need to log in as root).
|
||||
|
||||
2. With no window system running, from the command line enter:
|
||||
|
||||
/usr/bin/X11/xinit /usr/dt/bin/Xsession
|
||||
|
||||
HINT: if a .Xinitrc file is enabled, make sure it is NOT starting another
|
||||
window manager. Do NOT put the /usr/dt/bin/Xsession in your .profile!
|
||||
|
||||
Session Manager stops when you log out.
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
----------------------------------------
|
||||
AIX can be configured to start the CDE Desktop automatically when the system
|
||||
is booted. This method starts CDE as the Session Manager for all users on
|
||||
the system.
|
||||
|
||||
There are several ways to do this configuration:
|
||||
|
||||
* From a command line.
|
||||
|
||||
* Using SMIT menus.
|
||||
|
||||
* Using SMIT fastpath.
|
||||
|
||||
From a Command Line
|
||||
-------------------
|
||||
To Enable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/dt/bin/dtconfig -e
|
||||
|
||||
3. Reboot the machine.
|
||||
|
||||
When the system is rebooted, a dtlogin screen will appear. If you prefer not
|
||||
to reboot at this time, this command will start the Login Manager now.
|
||||
|
||||
startsrc -s dtsrc
|
||||
|
||||
To Disable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/dt/bin/dtconfig -d
|
||||
|
||||
3. Reboot the machine.
|
||||
|
||||
When the system is rebooted, CDE is no longer configured. If you prefer not
|
||||
to reboot at this time, this command will stop the Login Manager now.
|
||||
|
||||
stopsrc -c -s dtsrc
|
||||
|
||||
Using SMIT Menus
|
||||
----------------
|
||||
To Enable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/bin/smit
|
||||
|
||||
3. Go to System Environments.
|
||||
|
||||
4. Go to Change System User Interface.
|
||||
|
||||
5. Select CDE environment.
|
||||
|
||||
6. Press [Enter] when using ASCII SMIT or Click "Do" when using GUI
|
||||
SMIT interface.
|
||||
|
||||
7. Exit SMIT.
|
||||
|
||||
8. Reboot the machine.
|
||||
|
||||
To Disable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter
|
||||
|
||||
/usr/bin/smit
|
||||
|
||||
3. Go to System Environments.
|
||||
|
||||
4. Go to Change System User Interface.
|
||||
|
||||
5. Select Command-line environment.
|
||||
|
||||
6. Press [Enter] when using ASCII SMIT or Click "Do" when
|
||||
using GUI SMIT interface.
|
||||
|
||||
7. Exit out of SMIT.
|
||||
|
||||
8. Reboot the machine.
|
||||
|
||||
Using SMIT `fastpath'
|
||||
---------------------
|
||||
To Enable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/bin/smit dtconfig
|
||||
|
||||
3. Select CDE environment.
|
||||
|
||||
4. Press [Enter] when using ASCII SMIT or Click "Do" when using GUI
|
||||
SMIT interface.
|
||||
|
||||
5. Exit SMIT.
|
||||
|
||||
6. Reboot the machine.
|
||||
|
||||
To Disable Desktop Auto-Start:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/bin/smit dtconfig
|
||||
|
||||
3. Select Command-line environment.
|
||||
|
||||
4. Press [Enter] when using ASCII SMIT or Click "Do" when using GUI
|
||||
SMIT interface.
|
||||
|
||||
5. Exit out of SMIT.
|
||||
|
||||
6. Reboot the machine.
|
||||
|
||||
Deinstall Instructions
|
||||
======================
|
||||
The CD also includes a script for deinstallation. With the CD-ROM mounted
|
||||
according to the Installation Instructions on the CD jacket, enter:
|
||||
|
||||
./dinstall.dt
|
||||
|
||||
or
|
||||
|
||||
./DINSTALL.DT
|
||||
|
||||
Everything installed from the installation scripts will be deinstalled.
|
||||
|
||||
79
cde/admin/IntegTools/config/config.sco
Normal file
79
cde/admin/IntegTools/config/config.sco
Normal file
@@ -0,0 +1,79 @@
|
||||
####################################
|
||||
### Instructions for SCO Systems ###
|
||||
####################################
|
||||
|
||||
System Requirements
|
||||
===================
|
||||
|
||||
* SCO Open Desktop or SCO Open Server Version 3.0
|
||||
* 386-33, 486, or Pentium based processor
|
||||
* 16MB memory
|
||||
* 1024x768, 256 color graphics system
|
||||
* 70MB free disk space
|
||||
* 30MB Swap Space
|
||||
|
||||
|
||||
Before You Start the Desktop
|
||||
============================
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See
|
||||
chapter 2 of the Getting Started Guide:
|
||||
|
||||
|
||||
* If the system console is a non-bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
|
||||
|
||||
To Start and Stop the Desktop
|
||||
============================
|
||||
|
||||
1. Log in as the user who will use the desktop and be running the Korn or
|
||||
Bourne shells (ksh or sh).
|
||||
|
||||
2. First, add the following two lines to your .profile:
|
||||
|
||||
PATH=$PATH:/opt/dt/bin
|
||||
. /opt/dt/bin/dtsearchpath
|
||||
|
||||
These lines add the desktop search path to your PATH variable.
|
||||
|
||||
3. If you have a .startxrc file in your home directory, move it to a
|
||||
backup location or name by entering:
|
||||
|
||||
mv .startxrc old.startxrc
|
||||
|
||||
4. Copy /etc/opt/dt/dt.startxrc to your home directory and rename it
|
||||
to .startxrc by entering:
|
||||
|
||||
cp /etc/opt/dt/dt.startxrc .startxrc
|
||||
|
||||
5. Do one of the following:
|
||||
|
||||
* Log out of your ODT session and log in via Scologin.
|
||||
|
||||
* Or, at a shell prompt on a multiscreen not running the X
|
||||
server, run startx by entering:
|
||||
|
||||
startx
|
||||
|
||||
Be sure to log out to reinvoke your .profile correctly.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
207
cde/admin/IntegTools/config/config.sun
Normal file
207
cde/admin/IntegTools/config/config.sun
Normal file
@@ -0,0 +1,207 @@
|
||||
#################################################### 04/08/94
|
||||
### Instructions for the Sun Solaris Environment ###
|
||||
####################################################
|
||||
|
||||
|
||||
Removing the October '93 Developer's Conference CDE Desktop
|
||||
===========================================================
|
||||
|
||||
It is imperative that CDE Snapshot 1 and Snapshot 2 desktops do not
|
||||
co-mingle. Installers and users should ensure that old clients and
|
||||
configuration files are exited or removed. Use the instructions
|
||||
in this section if the October '93 Snapshot 1 version of CDE is
|
||||
installed on your system.
|
||||
|
||||
|
||||
Upgrading systems in a networked environment
|
||||
--------------------------------------------
|
||||
|
||||
If CDE is installed in a network environment, it is imperative that
|
||||
all systems be upgraded at the same time.
|
||||
|
||||
|
||||
Removing the Snapshot 1 desktop
|
||||
-------------------------------
|
||||
|
||||
Installers are advised to remove the Snapshot 1 Desktop files from
|
||||
their systems. Those clients and files are obsolete. The dinstall.dt
|
||||
script which was provided on the Snapshot 1 CD may be used for this
|
||||
purpose.
|
||||
|
||||
|
||||
Stopping Desktop clients before installing Snapshot 2
|
||||
-----------------------------------------------------
|
||||
|
||||
If the Snapshot 1 desktop is not removed, ensure that all desktop
|
||||
clients are inactive before installing the Snapshot 2 desktop.
|
||||
|
||||
|
||||
Removing the users's .dtprofile and .dt directory
|
||||
-------------------------------------------------
|
||||
|
||||
It is strongly advised that all CDE users on the system remove or
|
||||
rename their .dt directory and their .dtprofile. The Snapshot 2
|
||||
Desktop is not compatible with the Snapshot 1 Desktop versions of
|
||||
these files.
|
||||
|
||||
If users have customized their .dt/dtwmrc file and want to keep it,
|
||||
they will need to cut and paste the appropriate pieces into the new
|
||||
dtwmrc provided.
|
||||
|
||||
|
||||
Before You Start the Desktop
|
||||
============================
|
||||
|
||||
You can start the CDE Desktop by:
|
||||
|
||||
* Configuring the system to auto-start the CDE Desktop when
|
||||
the system is booted.
|
||||
|
||||
* Or, manually starting the desktop Login Manager.
|
||||
|
||||
|
||||
Special Configurations
|
||||
----------------------
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See the
|
||||
Advanced User's and System Administrator's Guide:
|
||||
|
||||
* If the system console is a non-bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
========================================
|
||||
|
||||
When auto-start is enabled, the CDE Login Manager runs automatically
|
||||
each time the system is booted. You then log in using the
|
||||
CDE Login Screen.
|
||||
|
||||
To Enable Desktop Auto-Start
|
||||
----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
/usr/dt/bin/dtconfig -e
|
||||
|
||||
A CDE Login screen will appear the next time the system is booted.
|
||||
|
||||
|
||||
To Disable Desktop Auto-Start
|
||||
-----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From a command line, enter:
|
||||
|
||||
/usr/dt/bin/dtconfig -d
|
||||
|
||||
A conventional ascii login will appear the next time the system
|
||||
is booted.
|
||||
|
||||
|
||||
To Start and Stop the Desktop Manually
|
||||
======================================
|
||||
|
||||
There are two ways to start the desktop manually:
|
||||
|
||||
* You can manually start the CDE Login Manager, which will display the
|
||||
desktop Login screen. To use this method, you must have permission
|
||||
to log in as root.
|
||||
|
||||
This method is the preferable manual method, since Login Manager sets
|
||||
certain environment variables that are needed during desktop sessions.
|
||||
|
||||
* You can log in using conventional methods, and then manually run the CDE
|
||||
Session Manager, which starts a desktop session.
|
||||
|
||||
|
||||
Manually Starting and Stopping Login Manager
|
||||
--------------------------------------------
|
||||
|
||||
When you use this method, you log in using the desktop Login screen.
|
||||
When you log in, a desktop session starts.
|
||||
|
||||
To manually start Login Manager:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. With no window system running, from the command line enter:
|
||||
|
||||
/usr/dt/bin/dtlogin
|
||||
|
||||
|
||||
To manually stop Login Manager:
|
||||
|
||||
1. If you are in a desktop session, exit (via front panel button).
|
||||
|
||||
2. On the Login screen, choose Options->Command Line
|
||||
to return to a command line.
|
||||
|
||||
3. On the command line, enter [Ctrl]c (hold down [Ctrl] as
|
||||
you press [c]).
|
||||
|
||||
You are now back to your root login with a command line prompt.
|
||||
|
||||
|
||||
Manually Starting and Stopping Session Manager
|
||||
----------------------------------------------
|
||||
|
||||
If you use this method, you are responsible for setting certain environment
|
||||
variables to values required by the desktop if suitable values are
|
||||
not already set in your environment. See the Advanced User's and System
|
||||
Administrator's Guide.
|
||||
|
||||
1. Log in. (You do not need to log in as root).
|
||||
|
||||
If you set LD_LIBRARY_PATH (its not required for CDE), make sure the
|
||||
/usr/dt/lib directory is at head of list. In addition, you should
|
||||
set the environment variable OPENWINHOME to /usr/openwin.
|
||||
|
||||
2. With no window system running, from the command line enter:
|
||||
|
||||
/usr/openwin/bin/xinit /usr/dt/bin/Xsession
|
||||
|
||||
This starts your CDE desktop session. Exit button is on front panel.
|
||||
|
||||
|
||||
|
||||
To Configure Subprocess Control Daemon remote access
|
||||
====================================================
|
||||
|
||||
If you are working in an environment where a CDE Desktop action needs to
|
||||
start an application on another workstation running CDE, the Subprocess
|
||||
Control Daemon must have access to the /tmp directory of the remote
|
||||
workstation.
|
||||
|
||||
The following procedure will provide this.
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Provide NFS-access by the local (client) system to the remote (application
|
||||
server) system's /tmp directory. The mount point must be
|
||||
/nfs/<remote_host>/tmp.
|
||||
|
||||
On systems running automount, the following procedure provides this mount:
|
||||
|
||||
a. Enter:
|
||||
|
||||
mkdir /nfs
|
||||
|
||||
b. Add the following lines to /etc/auto_master:
|
||||
|
||||
/nfs -hosts -nosuid
|
||||
|
||||
c. To allow export of the /tmp directory, add the following line
|
||||
to /etc/dfs/dfstab:
|
||||
|
||||
shared -F nfs -o rw /tmp
|
||||
|
||||
3. The subprocess control daemon will have correct access the next time
|
||||
the workstation is booted.
|
||||
207
cde/admin/IntegTools/config/config.usl
Normal file
207
cde/admin/IntegTools/config/config.usl
Normal file
@@ -0,0 +1,207 @@
|
||||
#########################################################################
|
||||
# Configuration Instructions for the UnixWare 1.1 or later Environments #
|
||||
#########################################################################
|
||||
|
||||
The following instructions assume you have already installed the Common Desktop
|
||||
Environment according to the Installation Instructions on the CD jacket.
|
||||
|
||||
There are two ways to start the desktop:
|
||||
|
||||
* You can manually start the desktop Login Manager. This method can be used to
|
||||
avoid rebooting the system. See the section To Start and Stop the Desktop
|
||||
Manually .
|
||||
|
||||
* You can configure the system to start the desktop automatically upon reboot.
|
||||
See the section To Enable and Disable Desktop Auto-Start..
|
||||
|
||||
|
||||
|
||||
Before You Start the Desktop
|
||||
============================
|
||||
******************************************************************************
|
||||
If you have a previous Common Desktop Environment (CDE) version on the system:
|
||||
******************************************************************************
|
||||
|
||||
*Advise all CDE users on the system to remove or rename their $HOME/.dt directory
|
||||
and their $HOME/.dtprofile. The new files are not compatible with the old
|
||||
ones. If users have customized the $HOME/.dt/dtwmrc file and want to keep
|
||||
it, they will need to cut and paste the appropriate pieces into the new dtwmrc
|
||||
file provided.
|
||||
|
||||
*Become the root user on the system. Make sure all other users on the system
|
||||
are logged out of CDE. Kill the Login Manager if running.
|
||||
|
||||
kill -15 `cat /etc/opt/dt/Xpid`
|
||||
|
||||
Killing the Login Manager process works no matter how the process was started.
|
||||
An alternate method is to stop the system resource control for the desktop.
|
||||
This method should only be used if CDE was configured on the system by
|
||||
replacing the /etc/rc2.d/S69xdm script. You can tell if CDE was configured
|
||||
this way by checking the existence of /etc/S69xdm.old. If this file
|
||||
exists, then do the following:
|
||||
|
||||
mv /etc/S69xdm.old /etc/rc2.d/S69xdm
|
||||
|
||||
|
||||
|
||||
Special Configurations
|
||||
----------------------
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See the
|
||||
Advanced User's and System Administrator's Guide:
|
||||
|
||||
* If the system console is not a UnixWare supported bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
To Start and Stop the Desktop Manually
|
||||
======================================
|
||||
|
||||
There are two ways to start the desktop manually:
|
||||
|
||||
|
||||
* You can manually start the CDE Login Manager, which will
|
||||
display the desktop Login screen. To use this method, you
|
||||
must have permission to log in as root.
|
||||
|
||||
This method is preferable, since Login Manager sets certain
|
||||
environment variables that are needed during desktop sessions.
|
||||
|
||||
* You can log in using conventional methods, and then manually
|
||||
run the CDE Session Manager, which starts a desktop session.
|
||||
See the section Manually Starting and Stopping the Session
|
||||
Manager.
|
||||
|
||||
Manually Starting and Stopping Login Manager
|
||||
--------------------------------------------
|
||||
|
||||
When you use this method, you log in using the CDE Login screen.
|
||||
When you log in, a desktop session starts.
|
||||
|
||||
To manually start Login Manager:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Type:
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/dt/lib:/usr/X/lib export LD_LIBRARY_PATH
|
||||
|
||||
3. With no window system running, from the command line enter:
|
||||
|
||||
/usr/dt/bin/dtlogin -daemon
|
||||
|
||||
The CDE Graphical Login screen will appear.
|
||||
|
||||
4. For security reasons, you need to exit the shell that invoked dtlogin.
|
||||
Type <Alt><SysRq> p
|
||||
(i.e. Press the <Alt> and <SysRq> keys at the same time,
|
||||
release both and then hit 'p'. )
|
||||
|
||||
You should return to an ASCII terminal session.
|
||||
|
||||
5. Type:
|
||||
<return>
|
||||
exit
|
||||
|
||||
6. You will be asked if you want your virtual terminals closed at once.
|
||||
Type: n
|
||||
|
||||
The CDE Graphical Login screen will reappear.
|
||||
|
||||
|
||||
To manually stop Login Manager:
|
||||
|
||||
1. Log out of the CDE Desktop.
|
||||
|
||||
2. From the options menu of the CDE Graphical Login choose Command Line.
|
||||
|
||||
This will give you the ASCII login screen.
|
||||
|
||||
3. Log in as root.
|
||||
|
||||
4. Type:
|
||||
kill -15 `cat /usr/dt/config/Xpid`
|
||||
|
||||
|
||||
|
||||
Manually Starting and Stopping Session Manager
|
||||
----------------------------------------------
|
||||
|
||||
If you use this method, you are responsible for setting certain
|
||||
environment variables to values required by the desktop if suitable
|
||||
values are not already set in your environment. Refer to the Getting
|
||||
Started Guide for setting the necessary environment variables.
|
||||
|
||||
|
||||
1. Log in. (You do not need to log in as root).
|
||||
|
||||
2. With no window system running, from the command line enter:
|
||||
|
||||
LD_LIBRARY_PATH=/usr/dt/lib:/usr/X/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH
|
||||
|
||||
PATH=$PATH:/usr/X/bin
|
||||
export PATH
|
||||
|
||||
/usr/X/bin/olinit /usr/dt/bin/Xsession
|
||||
|
||||
The Session Manager stops when you log out.
|
||||
When auto-start is enabled, the CDE Login Manager runs
|
||||
automatically each time the system is booted. You then log
|
||||
in using the CDE Login Screen.
|
||||
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
========================================
|
||||
UnixWare can be configured to start the CDE Desktop automatically when the system
|
||||
is booted. This method starts CDE as the Session Manager for all users on
|
||||
the system.
|
||||
|
||||
|
||||
To Enable Desktop Auto-Start
|
||||
----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
NOTE: Step 'a' is necessay only if the /etc/rc2.d/S69xdm
|
||||
script has been modified after UnixWare was
|
||||
installed on your system and if the graphical login
|
||||
is enabled. A copy of the S69xdm script that
|
||||
came with the UnixWare installation is located
|
||||
in /usr/X/adm.
|
||||
|
||||
a. cp /etc/rc2.d/S69xdm /etc/S69xdm.preCDE
|
||||
b. cp /usr/dt/config/S69xdm /etc/rc2.d/S69xdm
|
||||
|
||||
A CDE Login screen will appear the next time the system is booted.
|
||||
|
||||
|
||||
To Disable Desktop Auto-Start
|
||||
-----------------------------
|
||||
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From a command line, enter:
|
||||
|
||||
rm /etc/rc2.d/S69xdm
|
||||
|
||||
If you would like the original UnixWare Desktop Manager Login
|
||||
to appear upon reboot:
|
||||
|
||||
/usr/X/bin/enable_glogin
|
||||
|
||||
- OR -
|
||||
|
||||
If a copy of S69xdm was saved as outlined in the section
|
||||
"To Enable Desktop Auto-Start":
|
||||
|
||||
mv /etc/S69xdm.preCDE /etc/rc2.d/S69xdm
|
||||
|
||||
The UnixWare Desktop Manager Login will appear
|
||||
the next time the system is rebooted.
|
||||
207
cde/admin/IntegTools/config/config.uxp
Normal file
207
cde/admin/IntegTools/config/config.uxp
Normal file
@@ -0,0 +1,207 @@
|
||||
#########################################################################
|
||||
# Configuration Instructions for the Fujitsu UXP/DS Environments #
|
||||
#########################################################################
|
||||
|
||||
The following instructions assume you have already installed the Common Desktop
|
||||
Environment according to the Installation Instructions on the CD jacket.
|
||||
|
||||
There are two ways to start the desktop:
|
||||
|
||||
* You can manually start the desktop Login Manager. This method can be used to
|
||||
avoid rebooting the system. See the section To Start and Stop the Desktop
|
||||
Manually .
|
||||
|
||||
* You can configure the system to start the desktop automatically upon reboot.
|
||||
See the section To Enable and Disable Desktop Auto-Start..
|
||||
|
||||
|
||||
|
||||
Before You Start the Desktop
|
||||
============================
|
||||
******************************************************************************
|
||||
If you have a previous Common Desktop Environment (CDE) version on the system:
|
||||
******************************************************************************
|
||||
|
||||
*Advise all CDE users on the system to remove or rename their $HOME/.dt directory
|
||||
and their $HOME/.dtprofile. The new files are not compatible with the old
|
||||
ones. If users have customized the $HOME/.dt/dtwmrc file and want to keep
|
||||
it, they will need to cut and paste the appropriate pieces into the new dtwmrc
|
||||
file provided.
|
||||
|
||||
*Become the root user on the system. Make sure all other users on the system
|
||||
are logged out of CDE. Kill the Login Manager if running.
|
||||
|
||||
kill -15 `cat /etc/opt/dt/Xpid`
|
||||
|
||||
Killing the Login Manager process works no matter how the process was started.
|
||||
An alternate method is to stop the system resource control for the desktop.
|
||||
This method should only be used if CDE was configured on the system by
|
||||
replacing the /etc/rc2.d/S69xdm script. You can tell if CDE was configured
|
||||
this way by checking the existence of /etc/S69xdm.old. If this file
|
||||
exists, then do the following:
|
||||
|
||||
mv /etc/S69xdm.old /etc/rc2.d/S69xdm
|
||||
|
||||
|
||||
|
||||
Special Configurations
|
||||
----------------------
|
||||
|
||||
If your system has one of these special configurations, you may need to
|
||||
edit certain Login Manager files before starting the desktop. See the
|
||||
Advanced User's and System Administrator's Guide:
|
||||
|
||||
* If the system console is not a UnixWare supported bitmap device.
|
||||
|
||||
* If the system is an X terminal or a host for X terminals.
|
||||
|
||||
* If the system has more than one display.
|
||||
|
||||
|
||||
To Start and Stop the Desktop Manually
|
||||
======================================
|
||||
|
||||
There are two ways to start the desktop manually:
|
||||
|
||||
|
||||
* You can manually start the CDE Login Manager, which will
|
||||
display the desktop Login screen. To use this method, you
|
||||
must have permission to log in as root.
|
||||
|
||||
This method is preferable, since Login Manager sets certain
|
||||
environment variables that are needed during desktop sessions.
|
||||
|
||||
* You can log in using conventional methods, and then manually
|
||||
run the CDE Session Manager, which starts a desktop session.
|
||||
See the section Manually Starting and Stopping the Session
|
||||
Manager.
|
||||
|
||||
Manually Starting and Stopping Login Manager
|
||||
--------------------------------------------
|
||||
|
||||
When you use this method, you log in using the CDE Login screen.
|
||||
When you log in, a desktop session starts.
|
||||
|
||||
To manually start Login Manager:
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. Type:
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/dt/lib:/usr/X/lib export LD_LIBRARY_PATH
|
||||
|
||||
3. With no window system running, from the command line enter:
|
||||
|
||||
/usr/dt/bin/dtlogin -daemon
|
||||
|
||||
The CDE Graphical Login screen will appear.
|
||||
|
||||
4. For security reasons, you need to exit the shell that invoked dtlogin.
|
||||
Type <Alt><SysRq> p
|
||||
(i.e. Press the <Alt> and <SysRq> keys at the same time,
|
||||
release both and then hit 'p'. )
|
||||
|
||||
You should return to an ASCII terminal session.
|
||||
|
||||
5. Type:
|
||||
<return>
|
||||
exit
|
||||
|
||||
6. You will be asked if you want your virtual terminals closed at once.
|
||||
Type: n
|
||||
|
||||
The CDE Graphical Login screen will reappear.
|
||||
|
||||
|
||||
To manually stop Login Manager:
|
||||
|
||||
1. Log out of the CDE Desktop.
|
||||
|
||||
2. From the options menu of the CDE Graphical Login choose Command Line.
|
||||
|
||||
This will give you the ASCII login screen.
|
||||
|
||||
3. Log in as root.
|
||||
|
||||
4. Type:
|
||||
kill -15 `cat /usr/dt/config/Xpid`
|
||||
|
||||
|
||||
|
||||
Manually Starting and Stopping Session Manager
|
||||
----------------------------------------------
|
||||
|
||||
If you use this method, you are responsible for setting certain
|
||||
environment variables to values required by the desktop if suitable
|
||||
values are not already set in your environment. Refer to the Getting
|
||||
Started Guide for setting the necessary environment variables.
|
||||
|
||||
|
||||
1. Log in. (You do not need to log in as root).
|
||||
|
||||
2. With no window system running, from the command line enter:
|
||||
|
||||
LD_LIBRARY_PATH=/usr/dt/lib:/usr/X/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH
|
||||
|
||||
PATH=$PATH:/usr/X/bin
|
||||
export PATH
|
||||
|
||||
/usr/X/bin/olinit /usr/dt/bin/Xsession
|
||||
|
||||
The Session Manager stops when you log out.
|
||||
When auto-start is enabled, the CDE Login Manager runs
|
||||
automatically each time the system is booted. You then log
|
||||
in using the CDE Login Screen.
|
||||
|
||||
|
||||
To Enable and Disable Desktop Auto-Start
|
||||
========================================
|
||||
UnixWare can be configured to start the CDE Desktop automatically when the system
|
||||
is booted. This method starts CDE as the Session Manager for all users on
|
||||
the system.
|
||||
|
||||
|
||||
To Enable Desktop Auto-Start
|
||||
----------------------------
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From the command line, enter:
|
||||
|
||||
NOTE: Step 'a' is necessay only if the /etc/rc2.d/S69xdm
|
||||
script has been modified after UnixWare was
|
||||
installed on your system and if the graphical login
|
||||
is enabled. A copy of the S69xdm script that
|
||||
came with the UnixWare installation is located
|
||||
in /usr/X/adm.
|
||||
|
||||
a. cp /etc/rc2.d/S69xdm /etc/S69xdm.preCDE
|
||||
b. cp /usr/dt/config/S69xdm /etc/rc2.d/S69xdm
|
||||
|
||||
A CDE Login screen will appear the next time the system is booted.
|
||||
|
||||
|
||||
To Disable Desktop Auto-Start
|
||||
-----------------------------
|
||||
|
||||
|
||||
1. Log in as root.
|
||||
|
||||
2. From a command line, enter:
|
||||
|
||||
rm /etc/rc2.d/S69xdm
|
||||
|
||||
If you would like the original UnixWare Desktop Manager Login
|
||||
to appear upon reboot:
|
||||
|
||||
/usr/X/bin/enable_glogin
|
||||
|
||||
- OR -
|
||||
|
||||
If a copy of S69xdm was saved as outlined in the section
|
||||
"To Enable Desktop Auto-Start":
|
||||
|
||||
mv /etc/S69xdm.preCDE /etc/rc2.d/S69xdm
|
||||
|
||||
The UnixWare Desktop Manager Login will appear
|
||||
the next time the system is rebooted.
|
||||
11
cde/admin/IntegTools/dbTools/Imakefile
Normal file
11
cde/admin/IntegTools/dbTools/Imakefile
Normal file
@@ -0,0 +1,11 @@
|
||||
XCOMM $XConsortium: Imakefile /main/5 1996/04/23 21:26:14 drk $
|
||||
|
||||
LOCAL_CPP_DEFINES = -DCDE_INSTALLATION_TOP=$(CDE_INSTALLATION_TOP) \
|
||||
-DCDE_CONFIGURATION_TOP=$(CDE_CONFIGURATION_TOP) \
|
||||
-DCDE_LOGFILES_TOP=$(CDE_LOGFILES_TOP) \
|
||||
-Usun -Uusl -Uuxp -Uaix -Udec -UAIX -Uibm -Uhp
|
||||
|
||||
AllTarget(installCDE dinstallCDE)
|
||||
|
||||
CppScriptTarget(installCDE,installCDE.src,$(LOCAL_CPP_DEFINES),)
|
||||
CppScriptTarget(dinstallCDE,dinstallCDE.src,$(LOCAL_CPP_DEFINES),)
|
||||
216
cde/admin/IntegTools/dbTools/UDB.format
Normal file
216
cde/admin/IntegTools/dbTools/UDB.format
Normal file
@@ -0,0 +1,216 @@
|
||||
|
||||
UDB FILE FORMAT
|
||||
|
||||
The udb (universal data base) format attempts to allow product delivery
|
||||
information for several closely related products to co-exist in the
|
||||
same database file. This is an HP Corvallis home-grown format which
|
||||
was originally created to deal with the delivery of similar products
|
||||
on hp-ux, domain and osf platforms.
|
||||
|
||||
The format is meant to be more or less free form without regard to
|
||||
intervening newlines or whitespace. Comments violate this principle
|
||||
by being line oriented. Any line whose first non-whitespace character
|
||||
is a '#' is considered a comment. A semi-colon may be placed between
|
||||
two identifiers to break them up into separate tokens. If more than
|
||||
one keyword/value pair is placed on a line, semi-colons can be used
|
||||
to separate them visually. The semi-colons are ignored by the parser.
|
||||
|
||||
The special syntax characters ( "{",":",";","=","}") may be embedded
|
||||
in an identifier by escaping them with a backslash.
|
||||
|
||||
Semantic Note:
|
||||
The tools associated with the udb databases apply semantic meaning
|
||||
to seven kinds of information about a file. There are seven Special
|
||||
Tokens which may be used to identify the keywords with which the
|
||||
semantic information should be associated.
|
||||
|
||||
Special Token description
|
||||
------------ -----------
|
||||
<SRC> The path (relative to the top of a
|
||||
build tree) to the source of a
|
||||
product deliverable file.
|
||||
|
||||
<DEST> The full destination path location of
|
||||
a deliverable file in the target
|
||||
machine's file system.
|
||||
|
||||
<LNK> The full path name (in the target
|
||||
machine's file system) of the source
|
||||
file for a symbolic link. (i.e. The file
|
||||
pointed to).
|
||||
|
||||
<TYPE> The kind of file object being installed.
|
||||
(i.e. file, sym_link, hard_link,
|
||||
directory, etc. )
|
||||
|
||||
<MODE> The (numeric) permissions assigned to
|
||||
the new object. This value should be
|
||||
in the usual octal notation.
|
||||
|
||||
<OWNER> The symbolic name of the owner of the
|
||||
new file.
|
||||
|
||||
<GROUP> The symbolic name of the group of the
|
||||
new file.
|
||||
|
||||
The hp-ux fileset databases have traditionally used the
|
||||
following keywords for these items:
|
||||
|
||||
hpux keyword Special Token
|
||||
------------ -----------
|
||||
a_out_location : <SRC>
|
||||
install_target : <DEST>
|
||||
link_source : <LNK>
|
||||
type : <TYPE>
|
||||
mode : <MODE>
|
||||
owner : <OWNER>
|
||||
group : <GROUP>
|
||||
|
||||
The default for the udb databases is to associate the <SRC> semantics
|
||||
with the "a_out_location" keyword, the <DEST> semantics with the
|
||||
"install_target" keyword, etc. This behavior may be modified by
|
||||
assigning a special token to a keyword in the Release Definition
|
||||
Section of the database file.
|
||||
|
||||
|
||||
General Format:
|
||||
A udb file has two sections. First, a Release Definition Section,
|
||||
which describes the keyword pairs to be maintained for a given
|
||||
release stream and second, the individual file records for each
|
||||
file which is to be delivered.
|
||||
|
||||
1) Release Definition Section
|
||||
|
||||
The Release Definition Section defines the keyword-value
|
||||
pairs which are to be maintained for each release. The
|
||||
release_id is an identifier which is used to identify the
|
||||
set of defaults for a particular release. The special
|
||||
release_id of "default" is used specify the default set
|
||||
of keyword/value pairs for an undefined release_id. The
|
||||
values associated with keywords in this section provide
|
||||
defaults for those keywords in later File Entries.
|
||||
|
||||
The name and number of these pairs need not be the same for
|
||||
all release streams.
|
||||
------------------------------
|
||||
For example:
|
||||
The following entry in the Release Definition Section
|
||||
|
||||
{ hpux : defaults
|
||||
src = <SRC>
|
||||
dest = <DEST>
|
||||
link_source =
|
||||
type = file
|
||||
perm = <MODE>
|
||||
perm = 0555
|
||||
owner = bin
|
||||
group = bin
|
||||
project = xwindows
|
||||
}
|
||||
|
||||
defines the defaults for the "hpux" release stream. It
|
||||
states that we should maintain information about src, dest, link_source, type, perm, owner, group and project in the database. Furthermore
|
||||
the semantics of <SRC> are to be associated with the keyword "src",
|
||||
<DEST> with "dest", link_source is associated with <LNK> by default,
|
||||
and type is associated with <TYPE> by default. Note that we associate
|
||||
perm with <MODE> semantics and supply a default value (0555) different
|
||||
from the automatic 0444 default. Owner and group have their usual
|
||||
meaning and a field called "project" is defined with a default value
|
||||
of "xwindows". No semantic information is known about the "project"
|
||||
field but it's value will be maintained.
|
||||
-------------------------
|
||||
|
||||
|
||||
2) File Entries
|
||||
After the Release Definition Section, come the entries for
|
||||
the deliverable files comprising the release. The build-tree-top
|
||||
relative path name of a source file is followed by one or more
|
||||
destination specifications which describe where in the product
|
||||
this file should go, as well as the ownerships/permissions etc. that
|
||||
should be associated with it. Any missing keyword/value pairs will
|
||||
be filled in by the defaults provided in the Release Definition
|
||||
Section.
|
||||
Information may differ between release
|
||||
streams. If there is no destination spec for a given release and
|
||||
there is no "default" destination spec then that souce file will
|
||||
not be delivered for that release. The "default" destination spec
|
||||
(if it exists) should come last and is applied for release streams
|
||||
that do not have more specific destination specs.
|
||||
|
||||
-------------------
|
||||
For example The following file entry:
|
||||
|
||||
cose/unity1/types/coe.vf
|
||||
{ hp-ux
|
||||
install_target = /usr/coe/newconfig/coe.vf
|
||||
}
|
||||
{ aix
|
||||
install_target = /usr/coe/types/coe.vf
|
||||
}
|
||||
{ default
|
||||
install_target = /var/coe/types/coe.vf
|
||||
owner = sys
|
||||
group = admin
|
||||
}
|
||||
|
||||
states that on hp-ux the file found at
|
||||
$(TOP)/cose/unity1/types/coe.vf in the build tree, is to be delivered
|
||||
to "/usr/coe/newconfig/coe.vf" on hp-ux; "/usr/coe/types/coe.vf" on
|
||||
aix; and "/var/coe/types/coe.vf" on all other release platforms. In
|
||||
addition, on all platforms other than hp-ux and aix the default
|
||||
owner and group (usually bin,bin) are replaced by sys,admin for this
|
||||
file.
|
||||
------------------
|
||||
|
||||
Pseudo-BNF:
|
||||
Here follows a pseudo-BNF description of the syntax of a
|
||||
udb file:
|
||||
---------------------------------------------------------------------
|
||||
|
||||
udbFile = release_definition_section file_records
|
||||
|
||||
release_definition_section = release_def release_definition_section |
|
||||
release_def
|
||||
|
||||
release_def = "{" release_id ":" "defaults" record_defs "}"
|
||||
|
||||
release_id = "hp-ux" | "aix" | "sun" | "usl" | "uxp" | "default"
|
||||
|
||||
record_defs = keyword_def "=" special_token |
|
||||
keyword_def "=" keyword_value
|
||||
|
||||
special_token = "<SRC>" | "<DEST>" | "<LNK>" |
|
||||
"<TYPE>" | "<MODE>" | "<OWNER>" | "<GROUP>"
|
||||
|
||||
keyword_def = identifier
|
||||
keyword_value = identifier
|
||||
|
||||
file_records = file_rec file_records |
|
||||
file_rec
|
||||
|
||||
file_rec = src_spec dest_specs
|
||||
|
||||
src_spec = a_out_loc | link_path
|
||||
|
||||
a_out_loc = < the build tree-top relative path to the source file >
|
||||
|
||||
link_path = < the full path to the link source in the product >
|
||||
|
||||
dest_specs = dest_spec dest_specs |
|
||||
dest_spec
|
||||
|
||||
dest_spec = "{" release_id value_specs "}"
|
||||
|
||||
|
||||
value_spec = keyword "=" value
|
||||
|
||||
keyword = identifier
|
||||
value = identifier
|
||||
|
||||
identifier = < any sequence of non-whitespace characters which
|
||||
does not contain an unescaped instance of one of
|
||||
the syntax_chars >
|
||||
|
||||
syntax_chars = "{", ":", ";", "=", "}"
|
||||
|
||||
|
||||
82
cde/admin/IntegTools/dbTools/UDB.tools
Normal file
82
cde/admin/IntegTools/dbTools/UDB.tools
Normal file
@@ -0,0 +1,82 @@
|
||||
|
||||
UDB TOOLS
|
||||
---------
|
||||
|
||||
The udb tools are located in the shared source tree in:
|
||||
/x/cdesrc/admin/IntegTools/dbTools
|
||||
|
||||
The basic tools for manipulating "udb" databases are:
|
||||
|
||||
udbParseLib.awk -- the awk parser for "udb" files.
|
||||
This awk file contains functions which read the udb
|
||||
databases into memory and set up awk-style
|
||||
associative arrays of keyword value pairs
|
||||
for all the file entries. This "library"
|
||||
also contains the default set of print
|
||||
routines that allow the database information
|
||||
to be printed in a number of different
|
||||
formats.
|
||||
Custom print routines can easily
|
||||
be written by following the conventions used
|
||||
in the default print routines.
|
||||
This parser is used by "udbToAny.ksh" and other
|
||||
scripts which manipulate the ".udb" databases.
|
||||
|
||||
udbToAny.ksh -- A ksh front end which allows the contents of the
|
||||
"udb" file to be transformed into a number of different
|
||||
formats. It also accepts the name of "custom" awk print
|
||||
routine which can do new and mysterious things. The
|
||||
most useful output at present is the "-toLst" option which
|
||||
produces output suitable for the "mkProd" script.
|
||||
NOTE: This script accepts more than one "udb" file
|
||||
as input but only the Release Definitions from the first
|
||||
udb file will be applied.
|
||||
|
||||
mkProd -- a ksh script which will create a product tree from the
|
||||
files in a build tree based on the contents of its input.
|
||||
This script takes a one-line format (.lst format) as input.
|
||||
This one-line format can be generated from a "udb" file by
|
||||
using the "-toLst" option in "udbToAny.ksh".
|
||||
This script calls two other ksh scripts "uncomment"
|
||||
and "linksLast". They do very simple tasks and should
|
||||
probably be rewritten as simple ksh functions in mkProd.
|
||||
NOTE: There is shell code to do automatic stripping of
|
||||
executables and compression of man pages etc. but
|
||||
most of that is turned off.
|
||||
|
||||
|
||||
There are other more complicated tools that act on "udb" databases,
|
||||
but they are hp-ux specific.
|
||||
|
||||
Example 1
|
||||
---------
|
||||
Suppose /x/cde_hpux is a build tree containing a successful hpux build.
|
||||
Suppose COE-RUN.udb and COE-RUN-ADMIN.udb are databases defining the
|
||||
COE-RUN product.
|
||||
To create a product tree at: "/prod/hpux/COE-RUN"
|
||||
run the following two commands (as root):
|
||||
|
||||
1) udbToAny.ksh -ReleaseStream hp-ux -toLst COE-RUN.udb COE-RUN-ADMIN.udb > COE-RUN.lst
|
||||
2) mkProd -D /prod/hpux/COE-RUN -S /x/cde_hpux COE-RUN.lst
|
||||
|
||||
NOTE: mkProd -f COE-RUN -D /prod/hpux -S /x/cde_hpux COE-RUN.lst
|
||||
would produce essentially the same results as 2) above.
|
||||
|
||||
Example 2
|
||||
---------
|
||||
Suppose we wanted to install the above bits on a test system. Then
|
||||
as root:
|
||||
|
||||
1) udbToAny.ksh -ReleaseStream hp-ux -toLst COE-RUN.udb COE-RUN-ADMIN.udb
|
||||
| mkProd -D / -S /x/cde_hpux
|
||||
|
||||
will install the bits on your root file system.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
311
cde/admin/IntegTools/dbTools/dinstallCDE.src
Executable file
311
cde/admin/IntegTools/dbTools/dinstallCDE.src
Executable file
@@ -0,0 +1,311 @@
|
||||
XCOMM! /bin/ksh
|
||||
XCOMM $XConsortium: dinstallCDE.src /main/8 1996/11/25 14:20:36 drk $
|
||||
|
||||
XCOMM
|
||||
XCOMM This script uses the 'CDE' configuration scripts to de-install the Desktop
|
||||
XCOMM environment.
|
||||
XCOMM
|
||||
XCOMM this script accepts the following parameters:
|
||||
XCOMM
|
||||
XCOMM Optional parameters:
|
||||
XCOMM
|
||||
XCOMM -f <filesets> -- a quoted, space-separated list of
|
||||
XCOMM filesets to unload. The .udb
|
||||
XCOMM extension is not required.
|
||||
XCOMM
|
||||
XCOMM -clean -- remove the temporaray and configuration directories
|
||||
XCOMM -cleanVar-- remove the temporary directory but NOT the
|
||||
XCOMM configuration directory
|
||||
XCOMM -prog -- load only the development environment
|
||||
XCOMM -runtime -- load only the runtime environment
|
||||
XCOMM
|
||||
XCOMM ##########################################################################
|
||||
|
||||
#define HASH #
|
||||
#define STAR *
|
||||
|
||||
REVISION="$(echo "$Revision: /main/8 $" | awk '{print $2}')"
|
||||
|
||||
Log()
|
||||
{
|
||||
echo "$1" | tee -a /tmp/dinstallCDE.log
|
||||
}
|
||||
|
||||
DoFilesetScript()
|
||||
{
|
||||
typeset ScriptName
|
||||
|
||||
FilesetName=$1
|
||||
ScriptName=$2 # use long config file name (configFoo)
|
||||
|
||||
test_string=${DATABASE_FILES#*$FilesetName}
|
||||
if (( ${#DATABASE_FILES} > ${#test_string} ))
|
||||
then
|
||||
if [ -x $POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $PLATFORM specific $FilesetName de-customize script"
|
||||
$POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName -d 2>&1 | \
|
||||
tee -a /tmp/$ScriptName.dverify
|
||||
elif [ -x $POST_INSTALL_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $FilesetName de-customize script"
|
||||
$POST_INSTALL_DIR/$ScriptName -d 2>&1 | tee -a /tmp/$ScriptName.dverify
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
DoLangScript()
|
||||
{
|
||||
typeset ScriptName
|
||||
|
||||
if [ "$BUILD_TREE" = "" ]; then
|
||||
ScriptName=$2 # use short config file name (foo.cfg)
|
||||
else
|
||||
ScriptName=$1 # use long config file name (configFoo)
|
||||
fi
|
||||
|
||||
if [ $CDECONFIGDIR = "CONFIG" ]; then
|
||||
typeset -u ScriptName
|
||||
fi
|
||||
|
||||
if [ -x $POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $PLATFORM specific $FilesetName de-customize script"
|
||||
$POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName -d $3 2>&1 | \
|
||||
tee -a /tmp/$ScriptName.dverify
|
||||
elif [ -x $POST_INSTALL_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $FilesetName de-customize script"
|
||||
$POST_INSTALL_DIR/$ScriptName -d $3 2>&1 | tee -a /tmp/$ScriptName.dverify
|
||||
fi
|
||||
}
|
||||
|
||||
DoScripts()
|
||||
{
|
||||
Log " "
|
||||
|
||||
DoFilesetScript CDE-TT configTT tt.cfg
|
||||
DoFilesetScript CDE-MIN configMin min.cfg
|
||||
DoFilesetScript CDE-RUN configRun run.cfg
|
||||
DoFilesetScript CDE-HELP-C configHelp help.cfg
|
||||
DoFilesetScript CDE-HELP-PRG configHelpPrg helpprg.cfg
|
||||
DoFilesetScript CDE-HELP-RUN configHelpRun helprun.cfg
|
||||
DoFilesetScript CDE-SHLIBS configShlibs shlibs.cfg
|
||||
DoFilesetScript CDE-DEMOS configDemos demos.cfg
|
||||
DoFilesetScript CDE-FONTS configFonts fonts.cfg
|
||||
DoFilesetScript CDE-ICONS configIcons icons.cfg
|
||||
DoFilesetScript CDE-INC configInc inc.cfg
|
||||
DoFilesetScript CDE-MAN configMan man.cfg
|
||||
DoFilesetScript CDE-MAN-DEV configManDev mandev.cfg
|
||||
DoFilesetScript CDE-MSG-C configMsgCat msgcat.cfg
|
||||
DoFilesetScript CDE-PRG configPrg prg.cfg
|
||||
|
||||
HASH see if a lang has been specified and configure backdrops and
|
||||
HASH palettes if it has.
|
||||
|
||||
if [ "$LangOption" != "" ]
|
||||
then
|
||||
DoLangScript configLang lang.cfg $theLang
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
USAGE()
|
||||
{
|
||||
echo "Usage: $(basename $0) [options]"
|
||||
echo ""
|
||||
echo "\tOptions:"
|
||||
echo ""
|
||||
echo "\t[-a <udb directory>]\t\talternate place to get the"
|
||||
echo "\t\t\t\t\tudb files from."
|
||||
echo "\t[-f <filesets>]\t\t\tspecify filesets to be unloaded."
|
||||
echo "\t\t\t\t\tThe list should be double-quoted,"
|
||||
echo "\t\t\t\t\tspace-separated, with no .udb"
|
||||
echo "\t\t\t\t\textensions."
|
||||
echo ""
|
||||
echo "\t[-clean]\t\t\tremove the temporary and configuration"
|
||||
echo "\t\t\t\t\tdirectories"
|
||||
echo "\t[-cleanVar]\t\t\tremove the temporary but NOT the "
|
||||
echo "\t\t\t\t\tconfiguration directory"
|
||||
echo "\t[-prog]\t\t\t\tload only the development environment"
|
||||
echo "\t[-runtime]\t\t\tload only the runtime environment"
|
||||
echo "\t[-relative]\t\t\trun the relative-located config scripts"
|
||||
echo "\t[-lang LANG]\t\t\tspecify LANG to use for backdrops and"
|
||||
echo "\t\t\t\t\tpalettes"
|
||||
echo ""
|
||||
}
|
||||
|
||||
ORIGINAL_COMMAND_LINE="$*"
|
||||
|
||||
XCOMM Set which system we are on
|
||||
BUILDSYSTEM=$(uname)
|
||||
|
||||
PLATFORM=""
|
||||
PLATFORM_SCRIPT_DIR=""
|
||||
|
||||
XCOMM
|
||||
XCOMM Set system
|
||||
XCOMM
|
||||
if [ $BUILDSYSTEM = "AIX" ];
|
||||
then
|
||||
PLATFORM=aix
|
||||
PLATFORM_SCRIPT_DIR=ibm
|
||||
elif [ $BUILDSYSTEM = "SunOS" ];
|
||||
then
|
||||
PLATFORM=sun
|
||||
PLATFORM_SCRIPT_DIR=sun
|
||||
elif [ $BUILDSYSTEM = "UNIX_SV" ];
|
||||
then
|
||||
PLATFORM=usl
|
||||
PLATFORM_SCRIPT_DIR=usl
|
||||
elif [ $BUILDSYSTEM = "UNIX_System_V" ];
|
||||
then
|
||||
PLATFORM=uxp
|
||||
PLATFORM_SCRIPT_DIR=uxp
|
||||
elif [ $BUILDSYSTEM = "OSF1" ];
|
||||
then
|
||||
PLATFORM=dec
|
||||
PLATFORM_SCRIPT_DIR=dec
|
||||
else # Build system = HP
|
||||
PLATFORM=hp-ux
|
||||
PLATFORM_SCRIPT_DIR=hp
|
||||
fi
|
||||
|
||||
if [ "$PLATFORM" = "aix" ];
|
||||
then
|
||||
USER=`/bin/whoami`
|
||||
elif [ "$PLATFORM" = "sun" -o "$PLATFORM" = "usl" -o "$PLATFORM" = "uxp" ];
|
||||
then
|
||||
USER=`/usr/ucb/whoami`
|
||||
else
|
||||
USER=`/usr/bin/whoami`
|
||||
fi
|
||||
|
||||
if [ "$USER" != "root" ];
|
||||
then
|
||||
USAGE
|
||||
echo ""
|
||||
echo "You must be root to run this script"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PATH=/bin:/usr/bin:/etc:/usr/bin/X11:
|
||||
export PATH
|
||||
|
||||
CLEANING="no"
|
||||
CLEANING_ETC="no"
|
||||
USE_ALTERNATE_UDB_DIR="no"
|
||||
USE_RELATIVE="no"
|
||||
STARTING_DIR=$PWD
|
||||
DATABASE_FILES=""
|
||||
LeaveLinks="no"
|
||||
REMOVE_LINKS="no"
|
||||
CLEAN_DAEMONS="yes"
|
||||
theLang=""
|
||||
DEVELOP_ENV="yes"
|
||||
RUNTIME_ENV="yes"
|
||||
|
||||
rm -f /tmp/dinstallCDE.log
|
||||
|
||||
Log "Options specified..."
|
||||
while [ $# -ne 0 ]; do
|
||||
case $1 in
|
||||
-a) Log " - alternate place to get the udb files from"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ALTERNATE_UDB_DIR=$1
|
||||
USE_ALTERNATE_UDB_DIR="yes"
|
||||
shift;
|
||||
;;
|
||||
-f) Log " - load specific filesets"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
DATABASE_FILES=$1
|
||||
shift;
|
||||
;;
|
||||
-clean) Log " - delete all three cde directories"
|
||||
CLEANING="yes"
|
||||
CLEANING_ETC="yes"
|
||||
shift;
|
||||
;;
|
||||
-cleanVar) Log " - delete only temporary and installation directories"
|
||||
CLEANING="yes"
|
||||
shift;
|
||||
;;
|
||||
-relative) Log " - run the relative-located config scripts"
|
||||
USE_RELATIVE="yes"
|
||||
shift;
|
||||
;;
|
||||
-prog) Log " - remove only the development environment"
|
||||
RUNTIME_ENV="no"
|
||||
shift;
|
||||
;;
|
||||
-runtime) Log " - remove only the runtime environment"
|
||||
DEVELOP_ENV="no"
|
||||
shift;
|
||||
;;
|
||||
-lang) Log " - configure backdrops and palettes for LANG"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
theLang=$1
|
||||
shift;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo ""
|
||||
|
||||
TOOL_DIR=$BUILD_TREE/admin/IntegTools/dbTools
|
||||
if [ "$USE_RELATIVE" = "yes" ]
|
||||
then
|
||||
POST_INSTALL_DIR=../post_install
|
||||
else
|
||||
POST_INSTALL_DIR=$BUILD_TREE/admin/IntegTools/post_install
|
||||
fi
|
||||
|
||||
if [ "$USE_ALTERNATE_UDB_DIR" = "yes" ]
|
||||
then
|
||||
DATABASE_DIR=$ALTERNATE_UDB_DIR/databases
|
||||
else
|
||||
DATABASE_DIR=$BUILD_TREE/databases
|
||||
fi
|
||||
|
||||
if [ "$DATABASE_FILES" = "" ]
|
||||
then
|
||||
if [ "$DEVELOP_ENV" = "yes" -a "$RUNTIME_ENV" = "yes" ]
|
||||
then
|
||||
DATABASE_FILES="CDE-RUN CDE-MIN CDE-TT CDE-MAN CDE-HELP-RUN CDE-C \
|
||||
CDE-MSG-C CDE-HELP-C CDE-SHLIBS CDE-HELP-PRG \
|
||||
CDE-PRG CDE-INC CDE-DEMOS CDE-MAN-DEV CDE-ICONS \
|
||||
CDE-FONTS"
|
||||
elif [ "$DEVELOP_ENV" = "yes" ]
|
||||
then
|
||||
DATABASE_FILES="CDE-HELP-PRG CDE-PRG CDE-INC CDE-DEMOS \
|
||||
CDE-MAN-DEV CDE-SHLIBS"
|
||||
elif [ "$RUNTIME_ENV" = "yes" ]
|
||||
then
|
||||
DATABASE_FILES="CDE-RUN CDE-MIN CDE-TT CDE-MAN CDE-HELP-RUN CDE-C \
|
||||
CDE-HELP-C CDE-MSG-C CDE-SHLIBS CDE-ICONS CDE-FONTS"
|
||||
fi
|
||||
fi
|
||||
|
||||
INSTALL_LOCATION=CDE_INSTALLATION_TOP
|
||||
CONFIGURE_LOCATION=CDE_CONFIGURATION_TOP
|
||||
LOGFILES_LOCATION=CDE_LOGFILES_TOP
|
||||
|
||||
DoScripts
|
||||
|
||||
echo "Done."
|
||||
echo ""
|
||||
echo "See /tmp/dinstallCDE.log for a log of this de-install session."
|
||||
echo ""
|
||||
964
cde/admin/IntegTools/dbTools/installCDE.src
Executable file
964
cde/admin/IntegTools/dbTools/installCDE.src
Executable file
@@ -0,0 +1,964 @@
|
||||
XCOMM! /bin/ksh
|
||||
XCOMM $XConsortium: installCDE.src /main/20 1996/11/25 14:21:13 drk $
|
||||
|
||||
XCOMM
|
||||
XCOMM This script uses the 'CDE' databases to install either the Desktop
|
||||
XCOMM environment on a specified machine or creates a tar ball to be used
|
||||
XCOMM in an install process.
|
||||
XCOMM
|
||||
XCOMM this script accepts the following parameters:
|
||||
XCOMM -s <source> -- The top of build tree where the files are
|
||||
XCOMM gathered from.
|
||||
XCOMM -z <package> -- The desktop install package
|
||||
XCOMM
|
||||
XCOMM Optional parameters:
|
||||
XCOMM
|
||||
XCOMM -t <package destination> -- where to store install package
|
||||
XCOMM -pI <actual install location> -- where CDE_INSTALLATION_TOP will be linked to.
|
||||
XCOMM -pC <actual config location> -- where CDE_CONFIGURATION_TOP will be linked to.
|
||||
XCOMM -pV <actual var location> -- where CDE_LOGFILES_TOP will be linked to.
|
||||
XCOMM -a <alternate udb directory>
|
||||
XCOMM -f <filesets> -- a quoted, space-separated list of
|
||||
XCOMM filesets to load. The .udb extension
|
||||
XCOMM is not required.
|
||||
XCOMM
|
||||
XCOMM -clean -- remove the temporary, configuration and installation
|
||||
XCOMM directories
|
||||
XCOMM -cleanTwo-- remove the temporary and installation directories
|
||||
XCOMM but NOT the configuration directory
|
||||
XCOMM -cleanEtc-- remove the configuration directories
|
||||
XCOMM -prog -- load only the development environment
|
||||
XCOMM -runtime -- load only the runtime environment
|
||||
XCOMM -pack -- create packing list
|
||||
XCOMM -pseudo -- don't configure the desktop
|
||||
XCOMM -nocompress -- don't compress the tarball (-t only)
|
||||
XCOMM
|
||||
XCOMM -Lang -- load the localized filesets
|
||||
XCOMM -LinkStepOnly -- set up the -pI, -pC, and -pV links
|
||||
XCOMM then exit
|
||||
XCOMM -DontRunScripts -- stop after installation
|
||||
XCOMM -RunScriptsOnly -- only execute the scripts
|
||||
XCOMM -configureOnly -- only configure the desktop
|
||||
XCOMM
|
||||
XCOMM ##########################################################################
|
||||
|
||||
#define HASH #
|
||||
#define STAR *
|
||||
|
||||
|
||||
REVISION="$(echo "$Revision: /main/20 $" | awk '{print $2}')"
|
||||
|
||||
Log()
|
||||
{
|
||||
echo "$1" | tee -a /tmp/installCDE.log
|
||||
}
|
||||
|
||||
MakeTarball()
|
||||
{
|
||||
Log "\nGenerating UNIX Desktop install package $DATE in $TARBALL_LOCATION"
|
||||
HASH
|
||||
HASH create installable tarball
|
||||
HASH
|
||||
Log "Creating tarball..."
|
||||
|
||||
if [ $PLATFORM = "usl" -o "$PLATFORM" = "uxp" ]
|
||||
then
|
||||
ulimit -f unlimited
|
||||
fi
|
||||
|
||||
DIRNAME=build.$DATE
|
||||
mkdir -p $TARBALL_LOCATION/$DIRNAME
|
||||
cd /
|
||||
echo $DATE >$LOGFILES_LOCATION/.build.$DATE
|
||||
chown bin $LOGFILES_LOCATION/.build.$DATE
|
||||
|
||||
if [ "$COMPRESS_TARBALL" = "yes" ]; then
|
||||
tar -cf - $INSTALL_LOCATION/STAR \
|
||||
2>$TARBALL_LOCATION/$DIRNAME/extract.err |
|
||||
compress -c >$TARBALL_LOCATION/$DIRNAME/dttar.Z
|
||||
else
|
||||
tar -cf $TARBALL_LOCATION/$DIRNAME/dt.tar \
|
||||
$INSTALL_LOCATION/STAR \
|
||||
2>$TARBALL_LOCATION/$DIRNAME/extract.err 2>&1
|
||||
fi
|
||||
|
||||
if [ "$ACTUAL_INSTALLATION_LOC" = "" ]; then
|
||||
actualInstallDir=$INSTALL_LOCATION
|
||||
else
|
||||
actualInstallDir=$ACTUAL_INSTALLATION_LOC
|
||||
fi
|
||||
let size=$(du -s $actualInstallDir | awk '{print $1}')*512
|
||||
|
||||
HASH load installation fileset *after* tarball generated
|
||||
LoadFileSet "" "CDE-INSTALL"
|
||||
|
||||
HASH create config dir
|
||||
destPost=$TARBALL_LOCATION/$DIRNAME/config
|
||||
mkdir $destPost
|
||||
|
||||
HASH copy config and platform config scripts
|
||||
src=$INSTALL_LOCATION/install/$PLATFORM_SCRIPT_DIR
|
||||
cp $src/config/STAR.cfg $destPost
|
||||
|
||||
HASH copy this script and install.dt platform overrides
|
||||
cp $src/install.dto $TARBALL_LOCATION/$DIRNAME/install.dto
|
||||
cp $src/install.cde $TARBALL_LOCATION/$DIRNAME/install.cde
|
||||
chmod 755 $TARBALL_LOCATION/$DIRNAME/install.cde
|
||||
|
||||
cd /
|
||||
|
||||
Log "done."
|
||||
|
||||
cat >$TARBALL_LOCATION/$DIRNAME/dt.pkg <<FIN
|
||||
PLATFORM: $PLATFORM
|
||||
VERSION: $REVISION
|
||||
TS: $DATE
|
||||
COMPRESSED: $COMPRESS_TARBALL
|
||||
SIZE: $size
|
||||
CL: $ORIGINAL_COMMAND_LINE
|
||||
FILESETS: $DATABASE_FILES
|
||||
FIN
|
||||
|
||||
cat >$TARBALL_LOCATION/$DIRNAME/build.status <<FIN
|
||||
The UNIX Desktop
|
||||
|
||||
BUILD: $DATE
|
||||
OVERALL STATUS: <not yet tested>
|
||||
OVERALL PERFORMANCE: <not yet tested>
|
||||
MAJOR PROBLEMS: <not yet tested>
|
||||
|
||||
FIN
|
||||
|
||||
chmod g+w $TARBALL_LOCATION/$DIRNAME/build.status
|
||||
}
|
||||
|
||||
DoFilesetScript()
|
||||
{
|
||||
typeset ScriptName
|
||||
|
||||
FilesetName=$1
|
||||
if [ "$BUILD_TREE" = "" ]; then
|
||||
ScriptName=$3 # use short config file name (foo.cfg)
|
||||
else
|
||||
ScriptName=$2 # use long config file name (configFoo)
|
||||
fi
|
||||
|
||||
if [ $CDECONFIGDIR = "CONFIG" ]; then
|
||||
typeset -u ScriptName
|
||||
fi
|
||||
|
||||
test_string=${DATABASE_FILES#*$FilesetName}
|
||||
if (( ${#DATABASE_FILES} > ${#test_string} ))
|
||||
then
|
||||
if [ -x $POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $PLATFORM specific $FilesetName customize script"
|
||||
$POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName -e 2>&1 | \
|
||||
tee -a /tmp/installCDE.log
|
||||
elif [ -x $POST_INSTALL_DIR/$ScriptName ]
|
||||
then
|
||||
Log "Executing $FilesetName customize script"
|
||||
$POST_INSTALL_DIR/$ScriptName -e 2>&1 | tee -a /tmp/installCDE.log
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
DoScripts()
|
||||
{
|
||||
Log " "
|
||||
|
||||
DoFilesetScript CDE-TT configTT tt.cfg
|
||||
DoFilesetScript CDE-MIN configMin min.cfg
|
||||
DoFilesetScript CDE-SHLIBS configShlibs shlibs.cfg
|
||||
DoFilesetScript CDE-RUN configRun run.cfg
|
||||
}
|
||||
|
||||
CreatePackingList()
|
||||
{
|
||||
Log " "
|
||||
Log "Creating packing list."
|
||||
touch $INSTALL_LOCATION/Packing_list
|
||||
for i in `echo $DATABASE_FILES`
|
||||
do
|
||||
Log " for $i"
|
||||
$TOOL_DIR/udbToAny.ksh -toDB -ReleaseStream $PLATFORM $DATABASE_DIR/${i}.udb > /tmp/${i}.db
|
||||
if [ -r /tmp/${i}.db ]
|
||||
then
|
||||
for file in `fgrep install_target /tmp/${i}.db | cut -sf 2 -d \: `
|
||||
do
|
||||
echo "$file" >>$INSTALL_LOCATION/Packing_list
|
||||
done
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
CleanDaemons()
|
||||
{
|
||||
HASH kill these processes so that they can be removed and new ones
|
||||
HASH installed
|
||||
|
||||
for i in inetd rpc.ttdbserver rpc.cmsd
|
||||
do
|
||||
if [ "$PLATFORM" = "aix" -a $i = "inetd" ]
|
||||
then
|
||||
lssrc -s inetd >/dev/null 2>&1
|
||||
if [ $? = "0" ]
|
||||
then
|
||||
stopsrc -s inetd >>/tmp/installCDE.log 2>&1
|
||||
fi
|
||||
else
|
||||
ps -ef | grep $i | grep -v grep >/tmp/tmppsout
|
||||
if [ -s /tmp/tmppsout ]
|
||||
then
|
||||
awk '{print "kill " $2}' /tmp/tmppsout | /bin/csh -f
|
||||
sleep 2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
rm -f /tmp/tmppsout
|
||||
}
|
||||
|
||||
RestartInetd()
|
||||
{
|
||||
HASH now restart inetd
|
||||
|
||||
OLDPWD=`pwd`
|
||||
cd /
|
||||
if [ "$PLATFORM" = "sun" -o "$PLATFORM" = "usl" -o "$PLATFORM" = "uxp" ]
|
||||
then
|
||||
/usr/sbin/inetd -s
|
||||
elif [ "$PLATFORM" = "aix" ]
|
||||
then
|
||||
startsrc -s inetd >>/tmp/installCDE.log 2>&1
|
||||
elif [ "$PLATFORM" = "dec" ]
|
||||
then
|
||||
/usr/sbin/inetd
|
||||
else
|
||||
#ifdef hpV4
|
||||
/usr/sbin/inetd
|
||||
#else
|
||||
/etc/inetd
|
||||
#endif
|
||||
fi
|
||||
cd $OLDPWD
|
||||
}
|
||||
|
||||
CheckForActualLocations()
|
||||
{
|
||||
XCOMM
|
||||
XCOMM if different actual locations specified, set up the links
|
||||
XCOMM
|
||||
|
||||
|
||||
if [ "$CLEAN_DAEMONS" = "yes" ]
|
||||
then
|
||||
CleanDaemons
|
||||
fi
|
||||
|
||||
HASH remove the contents of the installation directory then the directory
|
||||
HASH itself
|
||||
|
||||
if [ "$CLEANING" = "yes" ]
|
||||
then
|
||||
Log "Removing $INSTALL_LOCATION contents... "
|
||||
if [ -d $INSTALL_LOCATION ]
|
||||
then
|
||||
rm -rf $INSTALL_LOCATION/STAR
|
||||
if [ "$LeaveLinks" = "yes" ]
|
||||
then
|
||||
if [ ! -L $INSTALL_LOCATION ]
|
||||
then
|
||||
rm -rf $INSTALL_LOCATION
|
||||
fi
|
||||
else
|
||||
if [ -L $INSTALL_LOCATION ]
|
||||
then
|
||||
rm -f $INSTALL_LOCATION
|
||||
else
|
||||
rm -rf $INSTALL_LOCATION
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CONFIGURE_ONLY" = "no" ]
|
||||
then
|
||||
if [ "$ACTUAL_INSTALLATION_LOC" != "" ]
|
||||
then
|
||||
|
||||
HASH
|
||||
HASH first create the actual directory - if not there
|
||||
HASH
|
||||
|
||||
if [ ! -d $ACTUAL_INSTALLATION_LOC ]
|
||||
then
|
||||
mkdir -p $ACTUAL_INSTALLATION_LOC
|
||||
if [ ! -d $ACTUAL_INSTALLATION_LOC ]
|
||||
then
|
||||
Log "cannot create $ACTUAL_INSTALLATION_LOC directory"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
ln -s $ACTUAL_INSTALLATION_LOC $INSTALL_LOCATION
|
||||
|
||||
else
|
||||
if [ ! -d $INSTALL_LOCATION -a ! -L $INSTALL_LOCATION ];
|
||||
then
|
||||
mkdir -p $INSTALL_LOCATION
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CLEAN_DAEMONS" = "yes" ]
|
||||
then
|
||||
RestartInetd
|
||||
fi
|
||||
|
||||
HASH remove the contents of the configuration directory
|
||||
|
||||
if [ "$CLEANING_ETC" = "yes" ]
|
||||
then
|
||||
Log "Removing $CONFIGURE_LOCATION contents... "
|
||||
if [ -d $CONFIGURE_LOCATION ]
|
||||
then
|
||||
rm -rf $CONFIGURE_LOCATION/STAR
|
||||
if [ "$LeaveLinks" = "yes" ]
|
||||
then
|
||||
if [ ! -L $CONFIGURE_LOCATION ]
|
||||
then
|
||||
rm -rf $CONFIGURE_LOCATION
|
||||
fi
|
||||
else
|
||||
if [ -L $CONFIGURE_LOCATION ]
|
||||
then
|
||||
rm -f $CONFIGURE_LOCATION
|
||||
else
|
||||
rm -rf $CONFIGURE_LOCATION
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$ACTUAL_CONFIGURATION_LOC" != "" ]
|
||||
then
|
||||
if [ ! -d $ACTUAL_CONFIGURATION_LOC ]
|
||||
then
|
||||
mkdir -p $ACTUAL_CONFIGURATION_LOC
|
||||
if [ ! -d $ACTUAL_CONFIGURATION_LOC ]
|
||||
then
|
||||
Log "cannot create $ACTUAL_CONFIGURATION_LOC directory"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
ln -s $ACTUAL_CONFIGURATION_LOC $CONFIGURE_LOCATION
|
||||
|
||||
else
|
||||
if [ ! -d $CONFIGURE_LOCATION -a ! -L $CONFIGURE_LOCATION ];
|
||||
then
|
||||
mkdir -p $CONFIGURE_LOCATION
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CLEANING" = "yes" ]
|
||||
then
|
||||
Log "Removing $LOGFILES_LOCATION contents... "
|
||||
if [ -d $LOGFILES_LOCATION ]
|
||||
then
|
||||
rm -rf $LOGFILES_LOCATION/STAR
|
||||
if [ "$LeaveLinks" = "yes" ]
|
||||
then
|
||||
if [ ! -L $LOGFILES_LOCATION ]
|
||||
then
|
||||
rm -rf $LOGFILES_LOCATION
|
||||
fi
|
||||
else
|
||||
if [ -L $LOGFILES_LOCATION ]
|
||||
then
|
||||
rm -f $LOGFILES_LOCATION
|
||||
else
|
||||
rm -rf $LOGFILES_LOCATION
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$ACTUAL_VAR_LOC" != "" ]
|
||||
then
|
||||
if [ ! -d $ACTUAL_VAR_LOC ]
|
||||
then
|
||||
mkdir -p $ACTUAL_VAR_LOC
|
||||
if [ ! -d $ACTUAL_VAR_LOC ]
|
||||
then
|
||||
Log "cannot create $ACTUAL_VAR_LOC directory"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
ln -s $ACTUAL_VAR_LOC $LOGFILES_LOCATION
|
||||
|
||||
else
|
||||
if [ ! -d $LOGFILES_LOCATION -a ! -L $LOGFILES_LOCATION ];
|
||||
then
|
||||
mkdir -p $LOGFILES_LOCATION
|
||||
fi
|
||||
fi
|
||||
|
||||
Log " "
|
||||
}
|
||||
|
||||
USAGE()
|
||||
{
|
||||
echo "Usage: $(basename $0) {-s <source>|-z <package>} [options]"
|
||||
echo ""
|
||||
echo "\t-s <source>\t\t\tthe top of the build tree"
|
||||
echo "\t-z <package>\t\tthe desktop install package"
|
||||
echo ""
|
||||
echo "\tOptions:"
|
||||
echo ""
|
||||
echo "\t[-t <package_destination>]\tif specified create an"
|
||||
echo "\t\t\t\t\tinstall package and store it in the"
|
||||
echo "\t\t\t\t\tdestination."
|
||||
echo "\t[-pI <actual install location>]\twhere" CDE_INSTALLATION_TOP "will be linked to."
|
||||
echo "\t[-pC <actual config location>]\twhere" CDE_CONFIGURATION_TOP "will be linked to."
|
||||
echo "\t[-pV <actual var location>]\twhere" CDE_LOGFILES_TOP "will be linked to."
|
||||
echo ""
|
||||
echo "\t[-a <udb directory>]\t\talternate place to get the"
|
||||
echo "\t\t\t\t\tudb files from."
|
||||
echo "\t[-f <filesets>]\t\t\tspecify filesets to be loaded."
|
||||
echo "\t\t\t\t\tThe list should be double-quoted,"
|
||||
echo "\t\t\t\t\tspace-separated, with no .udb"
|
||||
echo "\t\t\t\t\textensions."
|
||||
echo ""
|
||||
echo "\t[-clean]\t\t\tremove the temporary, configuration, and"
|
||||
echo "\t\t\t\t\tinstallation directory"
|
||||
echo "\t[-cleanTwo]\t\t\tremove the temporary and installation "
|
||||
echo "\t\t\t\t\tdirectory, but NOT the configuration directory"
|
||||
echo "\t[-cleanEtc]\t\t\tremove the configuration directory, but "
|
||||
echo "\t\t\t\t\NOT the temporary and installation directories"
|
||||
echo "\t[-prog]\t\t\t\tload only the development environment"
|
||||
echo "\t[-runtime]\t\t\tload only the runtime environment"
|
||||
echo "\t[-relative]\t\t\trun the relative-located config scripts"
|
||||
echo "\t[-pack]\t\t\t\tcreate a packing list"
|
||||
echo "\t[-pseudo]\t\t\tdo not configure desktop when installing"
|
||||
echo "\t[-nocompress]\t\t\tdo not compress tarball when creating package"
|
||||
echo "\t[-lang LANG]\t\t\tspecify LANG to load appropriate localized"
|
||||
echo "\t\t\t\t\tfilesets"
|
||||
echo "\t[-LeaveLinks]\t\t\t\tdo not delete the links after cleaning"
|
||||
echo ""
|
||||
echo "\t[-LinkStepOnly]\t\t\tset up the -pI, -pC, and -pV links"
|
||||
echo "\t\t\t\t\tthen exit"
|
||||
echo "\t[-DontRunScripts]\t\tstop after installation"
|
||||
echo "\t[-RunScriptsOnly]\t\tonly execute the scripts"
|
||||
echo "\t[-configureOnly]\t\tonly configure the desktop"
|
||||
echo ""
|
||||
echo "\tExamples:"
|
||||
echo ""
|
||||
echo "\tinstallCDE -s /x/cde_hp700_90"
|
||||
echo "\tinstallCDE -s /x/cde_aix_32 -f \"CDE_MIN CDE-SHLIBS\""
|
||||
echo "\tinstallCDE -s /x/cde_sun_52 -pI /bigdisk/opt/dt -clean"
|
||||
echo "\tinstallCDE -s /x/cde_sun_52 -pI /dtinstall -clean\\"
|
||||
echo "\t\t-pseudo -t /dtpackages -nocompress"
|
||||
}
|
||||
|
||||
XCOMM
|
||||
XCOMM LoadFileSet() - load a UDB file
|
||||
XCOMM $1 - fileset number
|
||||
XCOMM $2 - fileset name
|
||||
XCOMM
|
||||
LoadFileSet()
|
||||
{
|
||||
if [ "$1" = "" ]; then
|
||||
num=""
|
||||
else
|
||||
num="$1."
|
||||
fi
|
||||
|
||||
Log " $num installing database $2"
|
||||
Log " - creating ${2}.lst file"
|
||||
$TOOL_DIR/udbToAny.ksh -toLst -ReleaseStream $PLATFORM \
|
||||
$DATABASE_DIR/${2}.udb > /tmp/${2}.lst
|
||||
|
||||
Log " - installing ... \c"
|
||||
$TOOL_DIR/mkProd -D / -S $BUILD_TREE /tmp/${2}.lst \
|
||||
2>/tmp/${2}.err 1>/tmp/${2}.good
|
||||
Log "done."
|
||||
|
||||
Log " - checking for errors ..."
|
||||
rm -f /tmp/${2}.missing
|
||||
awk '{if ($1 == "ERROR:") print " " $4}' \
|
||||
/tmp/${2}.err >> /tmp/${2}.missing
|
||||
if [ -s /tmp/${2}.missing ]
|
||||
then
|
||||
Log " - missing files:"
|
||||
cat /tmp/${2}.missing | tee -a /tmp/installCDE.log
|
||||
fi
|
||||
}
|
||||
|
||||
ORIGINAL_COMMAND_LINE="$*"
|
||||
|
||||
XCOMM Set which system we are on
|
||||
BUILDSYSTEM=$(uname)
|
||||
|
||||
PLATFORM=""
|
||||
PLATFORM_SCRIPT_DIR=""
|
||||
|
||||
XCOMM
|
||||
XCOMM Set system
|
||||
XCOMM
|
||||
if [ $BUILDSYSTEM = "AIX" ];
|
||||
then
|
||||
PLATFORM=aix
|
||||
PLATFORM_SCRIPT_DIR=ibm
|
||||
elif [ $BUILDSYSTEM = "SunOS" ];
|
||||
then
|
||||
PLATFORM=sun
|
||||
PLATFORM_SCRIPT_DIR=sun
|
||||
elif [ $BUILDSYSTEM = "UNIX_SV" ];
|
||||
then
|
||||
PLATFORM=usl
|
||||
PLATFORM_SCRIPT_DIR=usl
|
||||
elif [ $BUILDSYSTEM = "UNIX_System_V" ];
|
||||
then
|
||||
PLATFORM=uxp
|
||||
PLATFORM_SCRIPT_DIR=uxp
|
||||
elif [ $BUILDSYSTEM = "OSF1" ];
|
||||
then
|
||||
PLATFORM=dec
|
||||
PLATFORM_SCRIPT_DIR=dec
|
||||
else # Build system = HP
|
||||
PLATFORM=hp-ux
|
||||
PLATFORM_SCRIPT_DIR=hp
|
||||
fi
|
||||
|
||||
if [ "$PLATFORM" = "aix" ];
|
||||
then
|
||||
USER=`/bin/whoami`
|
||||
elif [ "$PLATFORM" = "sun" -o "$PLATFORM" = "usl" -o "$PLATFORM" = "uxp" ];
|
||||
then
|
||||
USER=`/usr/ucb/whoami`
|
||||
else
|
||||
USER=`/usr/bin/whoami`
|
||||
fi
|
||||
|
||||
if [ "$USER" != "root" ];
|
||||
then
|
||||
USAGE
|
||||
echo ""
|
||||
echo "You must be root to run this script"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$PLATFORM" = "usl" -o "$PLATFORM" = "uxp" ]
|
||||
then
|
||||
umask 000
|
||||
fi
|
||||
|
||||
unset TMPDIR
|
||||
|
||||
PATH=/bin:/usr/bin:/etc:/usr/bin/X11:
|
||||
export PATH
|
||||
|
||||
CLEANING="no"
|
||||
CLEANING_ETC="no"
|
||||
TARBALL="no"
|
||||
COMPRESS_TARBALL="yes"
|
||||
USE_ALTERNATE_UDB_DIR="no"
|
||||
DEVELOP_ENV="no"
|
||||
RUNTIME_ENV="no"
|
||||
USE_RELATIVE="no"
|
||||
STARTING_DIR=$PWD
|
||||
ACTUAL_INSTALLATION_LOC=""
|
||||
ACTUAL_CONFIGURATION_LOC=""
|
||||
ACTUAL_VAR_LOC=""
|
||||
CREATE_PACKING_LIST="no"
|
||||
DO_LINK_STEP_ONLY="no"
|
||||
DO_INSTALL_ONLY="no"
|
||||
RUN_SCRIPTS="yes"
|
||||
RUN_SCRIPTS_ONLY="no"
|
||||
DATABASE_FILES=""
|
||||
BUILD_TREE=""
|
||||
TAR_DIR=""
|
||||
LeaveLinks="no"
|
||||
REMOVE_LINKS="no"
|
||||
CLEAN_DAEMONS="yes"
|
||||
theLang=""
|
||||
CONFIGURE_ONLY="no"
|
||||
|
||||
rm -f /tmp/installCDE.log
|
||||
|
||||
Log "Options specified..."
|
||||
while [ $# -ne 0 ]; do
|
||||
case $1 in
|
||||
-s) Log " - get the build tree to extract from"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
BUILD_TREE=$1
|
||||
shift;
|
||||
;;
|
||||
-z) Log " - get the install package to extract from"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
TAR_TREE=$1
|
||||
shift;
|
||||
;;
|
||||
-t) Log " - where to put the install package"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
if [ "$SOURCE_TAR_FILE" = "" ]
|
||||
then
|
||||
TARBALL="yes"
|
||||
TARBALL_LOCATION=$1
|
||||
fi
|
||||
shift;
|
||||
;;
|
||||
-a) Log " - alternate place to get the udb files from"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ALTERNATE_UDB_DIR=$1
|
||||
USE_ALTERNATE_UDB_DIR="yes"
|
||||
shift;
|
||||
;;
|
||||
-f) Log " - load specific filesets"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
DATABASE_FILES=$1
|
||||
shift;
|
||||
;;
|
||||
-p) Log " - get all locations"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ACTUAL_INSTALLATION_LOC=$1
|
||||
ACTUAL_CONFIGURATION_LOC=$1
|
||||
ACTUAL_VAR_LOC=$1
|
||||
shift;
|
||||
;;
|
||||
-pI) Log " - get actual installation location"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ACTUAL_INSTALLATION_LOC=$1
|
||||
shift;
|
||||
;;
|
||||
-pC) Log " - get actual configuration location"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ACTUAL_CONFIGURATION_LOC=$1
|
||||
shift;
|
||||
;;
|
||||
-pV) Log " - get actual var location"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
ACTUAL_VAR_LOC=$1
|
||||
shift;
|
||||
;;
|
||||
-clean) Log " - delete all three cde directories"
|
||||
CLEANING="yes"
|
||||
CLEANING_ETC="yes"
|
||||
shift;
|
||||
;;
|
||||
-cleanTwo) Log " - delete only temporary and installation directories"
|
||||
CLEANING="yes"
|
||||
shift;
|
||||
;;
|
||||
-cleanEtc) Log " - delete only the configuration directory"
|
||||
CLEANING_ETC="yes"
|
||||
shift;
|
||||
;;
|
||||
-prog) Log " - load only the development environment"
|
||||
DEVELOP_ENV="yes"
|
||||
RUNTIME_ENV="no"
|
||||
shift;
|
||||
;;
|
||||
-runtime) Log " - load only the runtime environment"
|
||||
RUNTIME_ENV="yes"
|
||||
DEVELOP_ENV="no"
|
||||
shift;
|
||||
;;
|
||||
-relative) Log " - run the relative-located config scripts"
|
||||
USE_RELATIVE="yes"
|
||||
shift;
|
||||
;;
|
||||
-pack) Log " - create a packing list"
|
||||
CREATE_PACKING_LIST="yes"
|
||||
shift;
|
||||
;;
|
||||
-LeaveLinks) Log " - do not remove the links"
|
||||
LeaveLinks="yes"
|
||||
shift;
|
||||
;;
|
||||
-LinkStepOnly) Log " - do link step only"
|
||||
DO_LINK_STEP_ONLY="yes"
|
||||
shift;
|
||||
;;
|
||||
-DontRunScripts) Log " - stop after installation"
|
||||
DO_INSTALL_ONLY="yes"
|
||||
shift;
|
||||
;;
|
||||
-RunScriptsOnly) Log " - only run scripts"
|
||||
RUN_SCRIPTS_ONLY="yes"
|
||||
shift;
|
||||
;;
|
||||
-pseudo) Log " - pseudo install"
|
||||
RUN_SCRIPTS="no"
|
||||
REMOVE_LINKS="yes"
|
||||
CLEAN_DAEMONS="no"
|
||||
shift;
|
||||
;;
|
||||
-nocompress) Log " - do not compress tarball"
|
||||
COMPRESS_TARBALL="no"
|
||||
shift;
|
||||
;;
|
||||
-lang) Log " - load localized filesets"
|
||||
shift;
|
||||
[ $# -ne 0 ] || {
|
||||
USAGE
|
||||
exit 1;
|
||||
}
|
||||
theLang=$1
|
||||
shift;
|
||||
;;
|
||||
-configureOnly) Log " - Configure only"
|
||||
CONFIGURE_ONLY="yes"
|
||||
CLEAN_DAEMONS="yes"
|
||||
shift;
|
||||
;;
|
||||
*) Log " - unknown option"
|
||||
USAGE
|
||||
exit 1;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo ""
|
||||
|
||||
if [ -z "$BUILD_TREE" -a -z "$TAR_TREE" ]
|
||||
then
|
||||
USAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$BUILD_TREE" != "" -a ! -d "$BUILD_TREE" ]
|
||||
then
|
||||
Log "Build tree does not exist."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$TAR_TREE" != "" -a ! -d "$TAR_TREE" ]
|
||||
then
|
||||
Log "Tar tree does not exist."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CDEPACKAGE=dt.pkg
|
||||
CDETARFILE=dt.tar
|
||||
CDETARFILEZ=dttar.Z
|
||||
CDECONFIGDIR=config
|
||||
|
||||
XCOMM
|
||||
XCOMM get the current time stamp if going to create a tarball
|
||||
XCOMM
|
||||
|
||||
if [ $TARBALL = "yes" ];
|
||||
then
|
||||
set -- `/bin/date`
|
||||
DATE=$2_$3_$4_$6
|
||||
fi
|
||||
|
||||
if [ -z "$BUILD_TREE" -a ${0##STAR/} = INSTALL.CDE ]; then
|
||||
typeset -u CDEPACKAGE
|
||||
typeset -u CDETARFILE
|
||||
typeset -u CDETARFILEZ
|
||||
typeset -u CDECONFIGDIR
|
||||
fi
|
||||
|
||||
TOOL_DIR=$BUILD_TREE/admin/IntegTools/dbTools
|
||||
if [ "$USE_RELATIVE" = "yes" ]
|
||||
then
|
||||
POST_INSTALL_DIR=../post_install
|
||||
else
|
||||
if [ -z "$BUILD_TREE" ]
|
||||
then
|
||||
POST_INSTALL_DIR=$TAR_TREE/$CDECONFIGDIR
|
||||
else
|
||||
POST_INSTALL_DIR=$BUILD_TREE/admin/IntegTools/post_install
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$USE_ALTERNATE_UDB_DIR" = "yes" ]
|
||||
then
|
||||
DATABASE_DIR=$ALTERNATE_UDB_DIR/databases
|
||||
else
|
||||
DATABASE_DIR=$BUILD_TREE/databases
|
||||
fi
|
||||
|
||||
if [ "$DATABASE_FILES" = "" ]
|
||||
then
|
||||
if [ "$DEVELOP_ENV" = "yes" ]
|
||||
then
|
||||
DATABASE_FILES="CDE-HELP-PRG CDE-PRG CDE-INC CDE-DEMOS \
|
||||
CDE-MAN-DEV CDE-SHLIBS"
|
||||
elif [ "$RUNTIME_ENV" = "yes" ]
|
||||
then
|
||||
DATABASE_FILES="CDE-RUN CDE-MIN CDE-TT CDE-MAN CDE-HELP-RUN CDE-C \
|
||||
CDE-HELP-C CDE-MSG-C CDE-SHLIBS CDE-ICONS CDE-FONTS \
|
||||
CDE-INFO CDE-INFOLIB-C"
|
||||
else
|
||||
DATABASE_FILES="CDE-RUN CDE-MIN CDE-TT CDE-MAN CDE-HELP-RUN CDE-C \
|
||||
CDE-MSG-C CDE-HELP-C CDE-SHLIBS CDE-HELP-PRG \
|
||||
CDE-PRG CDE-INC CDE-DEMOS CDE-MAN-DEV CDE-ICONS \
|
||||
CDE-FONTS CDE-INFO CDE-INFOLIB-C"
|
||||
fi
|
||||
|
||||
HASH now load any localized filesets
|
||||
|
||||
if [ "$DEVELOP_ENV" != "yes" ]
|
||||
then
|
||||
if [ "$theLang" != "" ]
|
||||
then
|
||||
DATABASE_FILES="$DATABASE_FILES CDE-$theLang CDE-MSG-$theLang \
|
||||
CDE-HELP-$theLang"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
INSTALL_LOCATION=CDE_INSTALLATION_TOP
|
||||
CONFIGURE_LOCATION=CDE_CONFIGURATION_TOP
|
||||
LOGFILES_LOCATION=CDE_LOGFILES_TOP
|
||||
|
||||
if [ -L $INSTALL_LOCATION -a "$CONFIGURE_ONLY" != "yes" ]
|
||||
then
|
||||
touch $INSTALL_LOCATION/foo >/dev/null 2>/dev/null
|
||||
if [ ! -f $INSTALL_LOCATION/foo ]
|
||||
then
|
||||
Log "Insufficient permissions to install CDE files in $INSTALL_LOCATION"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -O $INSTALL_LOCATION/foo ]
|
||||
then
|
||||
Log "Root access to $INSTALL_LOCATION is required for CDE installation."
|
||||
exit 1
|
||||
fi
|
||||
rm $INSTALL_LOCATION/foo
|
||||
fi
|
||||
|
||||
if [ -d $INSTALL_LOCATION ]
|
||||
then
|
||||
if [ -x $INSTALL_LOCATION/bin -a ! -d $INSTALL_LOCATION/bin ]
|
||||
then
|
||||
rm -f $INSTALL_LOCATION/bin
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$CONFIGURE_ONLY" = "yes" ]
|
||||
then
|
||||
CheckForActualLocations
|
||||
DoScripts
|
||||
Log "Configuration completed."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$RUN_SCRIPTS_ONLY" = "yes" ]
|
||||
then
|
||||
DoScripts
|
||||
exit 0
|
||||
fi
|
||||
|
||||
CheckForActualLocations
|
||||
|
||||
if [ "$DO_LINK_STEP_ONLY" = "yes" ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$CREATE_PACKING_LIST" = "yes" ]
|
||||
then
|
||||
CreatePackingList
|
||||
exit 0
|
||||
fi
|
||||
|
||||
XCOMM
|
||||
XCOMM we are ready to load the environment ...
|
||||
XCOMM
|
||||
|
||||
if [ "$BUILD_TREE" != "" ]
|
||||
then
|
||||
Log "Load the Desktop from $BUILD_TREE"
|
||||
|
||||
cd $STARTING_DIR
|
||||
let j=1
|
||||
for i in `echo $DATABASE_FILES`
|
||||
do
|
||||
LoadFileSet "$j" "$i"
|
||||
let j=j+1
|
||||
done
|
||||
else
|
||||
Log "Load the Desktop from $TAR_TREE"
|
||||
compressed=$(awk '/COMPRESSED: /{print $2}' $TAR_TREE/$CDEPACKAGE)
|
||||
if [ "$compressed" = "yes" ]; then
|
||||
uncompress <$TAR_TREE/$CDETARFILEZ | tar xvf - $INSTALL_LOCATION
|
||||
else
|
||||
tar -xvf $TAR_TREE/$CDETARFILE $INSTALL_LOCATION
|
||||
fi
|
||||
DATABASE_FILES=$(awk 'BEGIN {FS=":"} /FILESETS: /{print $2}' $TAR_TREE/$CDEPACKAGE)
|
||||
fi
|
||||
|
||||
Log " "
|
||||
Log "Desktop installed in $INSTALL_LOCATION"
|
||||
|
||||
if [ "$DO_INSTALL_ONLY" = "yes" ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ $TARBALL = "yes" ];
|
||||
then
|
||||
MakeTarball
|
||||
fi
|
||||
|
||||
cd $STARTING_DIR
|
||||
|
||||
if [ "$RUN_SCRIPTS" = "yes" ]
|
||||
then
|
||||
DoScripts
|
||||
fi
|
||||
|
||||
if [ "$REMOVE_LINKS" = "yes" ]
|
||||
then
|
||||
[ -L /usr/dt ] && rm /usr/dt
|
||||
[ -L /etc/dt ] && rm /etc/dt
|
||||
[ -L /var/dt ] && rm /var/dt
|
||||
fi
|
||||
|
||||
echo "Done."
|
||||
echo ""
|
||||
echo "See /tmp/installCDE.log for a log of this install session."
|
||||
echo ""
|
||||
23
cde/admin/IntegTools/dbTools/linksLast
Executable file
23
cde/admin/IntegTools/dbTools/linksLast
Executable file
@@ -0,0 +1,23 @@
|
||||
#! /bin/ksh
|
||||
|
||||
#
|
||||
# Script to move all link refereces in a ".lst" file
|
||||
# to the end of the file.
|
||||
#
|
||||
|
||||
USAGE="Usage: $0 file.lst"
|
||||
|
||||
case $# in
|
||||
0) echo $USAGE;;
|
||||
1);;
|
||||
*) echo $USAGE;;
|
||||
esac
|
||||
|
||||
awk '
|
||||
/hard_link|sym_link/ { links[i++] = $0 ; next; }
|
||||
{ print $0 }
|
||||
END {
|
||||
if ( i > 0 )
|
||||
for ( i in links) print links[i];
|
||||
}
|
||||
' $@
|
||||
650
cde/admin/IntegTools/dbTools/mkProd
Executable file
650
cde/admin/IntegTools/dbTools/mkProd
Executable file
@@ -0,0 +1,650 @@
|
||||
#! /bin/ksh
|
||||
|
||||
export SYSTYPE=bsd4.3
|
||||
|
||||
# This script is aimed at producing Apollo product tree but
|
||||
# it should work as well on hp-ux systems. There is at least
|
||||
# one special rule "-n" which should not be generated on hp-ux systems
|
||||
# where it is not necessary to run nroff on the man page sources.
|
||||
|
||||
|
||||
# Put "/etc" in the path
|
||||
# because this is where "chown" appears on bsd4.3 systems (i.e. apollo).
|
||||
# Put "/usr/apollo/bin" on the path to access "chacl" on apollo systems.
|
||||
|
||||
export PATH=":/etc:$PATH:/usr/apollo/bin:"
|
||||
typeset STRIP=""
|
||||
|
||||
|
||||
# this alias makes for more "beautiful" output.
|
||||
alias echo=print
|
||||
|
||||
#
|
||||
# Shell script to read a file full of destination/perm/source triples and
|
||||
# create data base entries in a format suitable for 8.0 release. All other
|
||||
# information defaults to the default values for now -- this should be correct
|
||||
# in most cases but may require editing of the result for those cases
|
||||
# needing special handling.
|
||||
#
|
||||
# Lst file syntax:
|
||||
# [<install-flags>] <destination_path> <perm> <src> [ <type> <owner> <group> <status> <processor> <resp_proj> ]
|
||||
#
|
||||
# <install-rule> ==> [optional] 2 character field encoding special actions to be invoked when
|
||||
# creating the product tree. In the absence of this field the file is subject
|
||||
# to defaults based on its name,destination directory and permissions.
|
||||
# valid values:
|
||||
# -- Do nothing special
|
||||
# c- compress the file
|
||||
# -n run it through an nroff pipeline
|
||||
# -s strip the file (should be a binary executable)
|
||||
#
|
||||
# <destination_path> ===> full path name on target system
|
||||
# <perm> ===> numeric permission (with leading 0)
|
||||
# <src> ===> build tree path name (relative to build tree root)
|
||||
# | full path name of link source
|
||||
# | "-" to ignore this field (source for directory not required)
|
||||
# <type> ===> "file" | "empty_dir" | "directory" | "hard_link" | NULL
|
||||
# <owner> ===> file owner name -- defaults to bin
|
||||
# <group> ===> file group ownership --- defaults to bin
|
||||
# <status> ===> "di----" default
|
||||
# <processor> ===> valid processor "3-" | "-8" | "38" -- defaults to "38"
|
||||
# <resp_proj> ===> responsible project --- defaults to "xwindows"
|
||||
#
|
||||
|
||||
Usage="Usage: $0 [-f filesetName] -D <desttree> -S <srctree> <file> ...\n
|
||||
\tfilesetName \t==> (optional) used to create subdirectory in desttree\n
|
||||
\tdesttree \t==> destination directory\n
|
||||
\tsrctree \t==> usually a build tree containing the source\n
|
||||
\tfile \t\t==> data base file in \".lst\" format"
|
||||
|
||||
FILE='file'
|
||||
STATUS='di----'
|
||||
PROCESSOR='378'
|
||||
DESTTREE='.'
|
||||
|
||||
if [ -f /com/ctnode ]; then
|
||||
# Apollo systems
|
||||
OWNER='root'
|
||||
GROUP='staff'
|
||||
# set flag used to test for soft links
|
||||
LNKTST="L"
|
||||
else
|
||||
# hp-ux systems (and all other systems)
|
||||
OWNER='bin'
|
||||
GROUP='bin'
|
||||
# set flag used to test for soft links
|
||||
LNKTST="h"
|
||||
fi
|
||||
|
||||
BUILD_TARGET='/'
|
||||
INSTALL_RULE='--'
|
||||
INSTALL_FLAGS=''
|
||||
ORDER='0'
|
||||
RESP_PROJ='xwindows'
|
||||
|
||||
# Set which system we are on
|
||||
BUILDSYSTEM=$(uname)
|
||||
|
||||
# Set system
|
||||
if [ $BUILDSYSTEM = "AIX" ];
|
||||
then
|
||||
PLATFORM=aix
|
||||
elif [ $BUILDSYSTEM = "SunOS" ];
|
||||
then
|
||||
PLATFORM=sun
|
||||
elif [ $BUILDSYSTEM = "UNIX_SV" ];
|
||||
then
|
||||
PLATFORM=usl
|
||||
elif [ $BUILDSYSTEM = "UNIX_System_V" ];
|
||||
then
|
||||
PLATFORM=uxp
|
||||
elif [ $BUILDSYSTEM = "OSF1" ];
|
||||
then
|
||||
PLATFORM=dec
|
||||
else # Build system = HP
|
||||
PLATFORM=hp-ux
|
||||
fi
|
||||
|
||||
if [ $PLATFORM = "aix" ];
|
||||
then
|
||||
USER=`/bin/whoami`
|
||||
elif [ $PLATFORM = "sun" -o $PLATFORM = "usl" -o $PLATFORM = "uxp" ];
|
||||
then
|
||||
USER=`/usr/ucb/whoami`
|
||||
else
|
||||
USER=`/usr/bin/whoami`
|
||||
fi
|
||||
|
||||
awkit() {
|
||||
awk '
|
||||
BEGIN {
|
||||
print "#"
|
||||
print "# TYPE RULE SRC DEST MODE OWNER GROUP LINKSRC"
|
||||
print ""
|
||||
}
|
||||
|
||||
/^[ ]*#/ { next }
|
||||
{
|
||||
# initialize install_rule to NULL
|
||||
install_rule=""
|
||||
|
||||
# skip blank lines
|
||||
if ( NF == 0 )
|
||||
next
|
||||
# do a little syntax checking
|
||||
|
||||
if ( $1 !~ /\// ) {
|
||||
# check for special install_rule values
|
||||
if ( $1 ~ /[-c][-ns]/ ) {
|
||||
# set the special install rule
|
||||
install_rule=$1
|
||||
|
||||
# shift the rest of the fields left
|
||||
for ( i = 1; i < NF; i++) {
|
||||
$i = $(i+1)
|
||||
}
|
||||
NF=NF-1
|
||||
}
|
||||
else {
|
||||
print "Syntax Error (line " NR ") destination path: " $1
|
||||
print "text: " $0
|
||||
next
|
||||
}
|
||||
}
|
||||
|
||||
if ( NF > 9 ) {
|
||||
print "Syntax Error (line " NR ") number of fields"
|
||||
print "text: " $0
|
||||
exit
|
||||
}
|
||||
|
||||
if ( $2 !~ /0[0-7][0-7]*/ ) {
|
||||
print "Syntax Error (line " NR ") perm : " $2
|
||||
print "text: " $0
|
||||
next
|
||||
}
|
||||
# if ( $4 ~ /link/ && $3 !~ /^\// && $3 !~ /`node_data/) {
|
||||
# changed to allow local link (using ./file syntax) -- Should this be
|
||||
# domain only?
|
||||
#
|
||||
if ( $4 ~ /link/ && $3 !~ /^\// && $3 !~ /`node_data/ && \
|
||||
$3 !~ /^\.\// && $3 !~ /^\.\.\// ) {
|
||||
print "Syntax Error (line " NR ") source: " $3
|
||||
print "text: " $0
|
||||
next
|
||||
}
|
||||
|
||||
# Check for special install rules
|
||||
# man pages are compressed use rule "c-"
|
||||
# font files are compressed use rule "c-"
|
||||
# directories have no source i.e. src = "-"
|
||||
|
||||
src = $3;
|
||||
link_src = "";
|
||||
type = "'$FILE'";
|
||||
owner = "'$OWNER'";
|
||||
group = "'$GROUP'";
|
||||
status = "'$STATUS'";
|
||||
processor = "'$PROCESSOR'";
|
||||
resp_proj = "'$RESP_PROJ'";
|
||||
if ( $4 != "" )
|
||||
{
|
||||
type = $4;
|
||||
if ( $4 ~ /link/ ) {
|
||||
src = "";
|
||||
if ( $3 ~ /^\// || $3 ~ /`node_data/ || \
|
||||
$3 ~ /^\.\// || $3 ~ /^\.\.\// )
|
||||
link_src = $3;
|
||||
else {
|
||||
print "Syntax Error (line " NR ") link_src: " $3
|
||||
print "text: " $0
|
||||
next;
|
||||
};
|
||||
}
|
||||
else if ( $4 == "directory" )
|
||||
if ( $3 != "-" )
|
||||
{
|
||||
print "Syntax Error (line " NR ") directory: " $3;
|
||||
print "text: " $0;
|
||||
next;
|
||||
}
|
||||
else
|
||||
src="";
|
||||
else if ( $4 == "empty_dir" )
|
||||
{
|
||||
resp_proj = "common";
|
||||
status = "------";
|
||||
if ( $3 != "-" )
|
||||
{
|
||||
print "Syntax Error (line " NR ") empty_dir: " $3;
|
||||
print "text: " $0;
|
||||
next;
|
||||
}
|
||||
else
|
||||
src="";
|
||||
}
|
||||
else if ( $4 == "file" && $3 == "-" )
|
||||
if ( $7 == "---cu-")
|
||||
src = "";
|
||||
}
|
||||
#
|
||||
# If owner an/or group are specified all previous fields (including
|
||||
# type) must be specified.
|
||||
#
|
||||
if ( $5 != "" )
|
||||
owner = $5;
|
||||
|
||||
if ( $6 != "" )
|
||||
group = $6;
|
||||
|
||||
if ( $7 != "" )
|
||||
status = $7
|
||||
|
||||
if ( $8 != "" )
|
||||
processor = $8;
|
||||
|
||||
if ($9 != "" )
|
||||
resp_proj= $9;
|
||||
|
||||
if ( install_rule != "" ) {
|
||||
; # install rule has been explicitly set -- do nothing
|
||||
}
|
||||
else if ( $1 ~ /\/usr\/man\/man.*\.Z\// )
|
||||
{
|
||||
install_rule = "c-";
|
||||
}
|
||||
else if ( $1 ~ /\/usr\/X11\/man\/cat[1-9]\/.*[1-9]/ )
|
||||
{
|
||||
install_rule = "-n";
|
||||
}
|
||||
else if ( $1 ~ /\/bsd4.3\/usr\/man\/cat[1-9]\/.*[1-9]/ )
|
||||
{
|
||||
install_rule = "-n";
|
||||
}
|
||||
else if ( $1 ~ /\/sys5.3\/usr\/catman\/.*man[1-9]\/.*[1-9]/ )
|
||||
{
|
||||
install_rule = "-n";
|
||||
}
|
||||
else if ( $1 ~ /.*\/fonts\/.*.scf$/ && $3 ~ /.*.snf$/ )
|
||||
{
|
||||
install_rule = "c-";
|
||||
}
|
||||
else if ( $1 ~ /.*\/fonts\/.*.snf\.Z$/ && $3 ~ /.*.snf$/ )
|
||||
{
|
||||
install_rule = "c-";
|
||||
}
|
||||
else if ( $1 ~ /^\/integration\// && $3 ~ /^doc\/upinfo\// )
|
||||
{
|
||||
install_rule = "";
|
||||
}
|
||||
else if ( $2 ~ /[1357]/ && $4 == "file" )
|
||||
{ # executable files may be stripped
|
||||
install_rule = "-s";
|
||||
}
|
||||
else
|
||||
install_rule = "'$INSTALL_RULE'";
|
||||
|
||||
|
||||
# print "install_target : " $1
|
||||
# print "fileset : " "'$FILESET'"
|
||||
# print "type : " type
|
||||
# print "status : " status
|
||||
# print "processor : " processor
|
||||
# print "mode : " $2
|
||||
# print "owner : " owner
|
||||
# print "group : " group
|
||||
# print "link_source : " link_src
|
||||
# print "build_target : " "'$BUILD_TARGET'"
|
||||
# print "install_rule_name : " install_rule
|
||||
# print "install_flags : " "'$INSTALL_FLAGS'"
|
||||
# print "a_out_location : " src
|
||||
# print "order : " "'$ORDER'"
|
||||
# print "responsible_project : " resp_proj
|
||||
# print "#"
|
||||
|
||||
if ( type ~ /.*link/ )
|
||||
src= link_src
|
||||
else if ( type ~ /.*directory/ )
|
||||
src="-"
|
||||
|
||||
print type, install_rule, src, $1, $2, owner ,group
|
||||
}
|
||||
|
||||
' $1
|
||||
}
|
||||
|
||||
#
|
||||
# createPath
|
||||
# function to create a directory path. (mkdir -p replacement on bsd4.3)
|
||||
#
|
||||
createPath()
|
||||
{
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "ERROR: \"$0\" invalid argument count" >&2
|
||||
echo " ARGS=$@"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Since we are SYSTYPE bsd4.3 "-x" won't work.
|
||||
if [ -r /sys5.3/bin/mkdir ]; then
|
||||
/sys5.3/bin/mkdir -p $1
|
||||
return
|
||||
fi
|
||||
if hp9000s300 > /dev/null 2>&1 || hp9000s800 > /dev/null 2>&1; then
|
||||
mkdir -p $1
|
||||
return
|
||||
fi
|
||||
|
||||
#
|
||||
# We can't use mkdir -p so do the hard way.
|
||||
# starting at the root check/create all the directories
|
||||
# in the given path
|
||||
#
|
||||
|
||||
typeset xdirs=""
|
||||
typeset nextdir=""
|
||||
typeset fulldirs
|
||||
|
||||
# provide extra slash for apollo systems (//hp* syntax)?
|
||||
|
||||
if [ "$1" = "${1##/}" ]; then
|
||||
# not a full path name so attach path to current directory
|
||||
fulldirs=`/bin/pwd`/$1
|
||||
xdirs="/" # added to support apollo "//host" syntax
|
||||
elif [ "$1" != "${1##//}" ]; then
|
||||
# using "//host" syntax
|
||||
fulldirs=$1
|
||||
xdirs="/"
|
||||
else
|
||||
fulldirs=$1
|
||||
xdirs=""
|
||||
fi
|
||||
|
||||
echo creating path: $1
|
||||
|
||||
while nextdir=`expr /$fulldirs/ : '/*\([^/]*\)/.*'`; do
|
||||
xdirs=$xdirs/$nextdir
|
||||
if [ ! -d $xdirs ]; then
|
||||
mkdir $xdirs
|
||||
fi
|
||||
|
||||
fulldirs=`expr $fulldirs : '/*[^/]*/\(.*\)'`
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
# doit
|
||||
# function to put the source file into the product tree. This function
|
||||
# reads its stdin for file movement rules.
|
||||
#
|
||||
doit()
|
||||
{
|
||||
if [ $# -ne 0 ]; then
|
||||
echo "ERROR: \"$0\" incorrect arg count" >&2
|
||||
echo "ARGS: $@" >&2
|
||||
fi
|
||||
|
||||
typeset TYPE
|
||||
typeset RULE
|
||||
typeset SRC
|
||||
typeset DEST
|
||||
typeset MODE
|
||||
typeset OWNER
|
||||
typeset GROUP
|
||||
|
||||
while read TYPE RULE SRC DEST MODE OWNER GROUP; do
|
||||
# ignore blank lines
|
||||
if [ -z "$TYPE" ]; then
|
||||
continue;
|
||||
fi
|
||||
# ignore comment lines (match longest string starting with '#')
|
||||
if [ "${TYPE###}" != "$TYPE" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
DEST=$DESTTREE/$FILESET${DEST}
|
||||
CMD=""
|
||||
|
||||
case $TYPE in
|
||||
directory)
|
||||
if [ ! -d "$DEST" ]; then
|
||||
CMD="createPath $DEST"
|
||||
fi
|
||||
;;
|
||||
file)
|
||||
SRC=$SRCTREE/$SRC
|
||||
if [ "$CHECK_BEFORE" = "yes" ]
|
||||
then
|
||||
if [ ! -f $SRC ]
|
||||
then
|
||||
echo "Missing: $SRC"
|
||||
echo "Missing: $SRC" >>/tmp/mkprod.missing
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
if [ ! -f $SRC ]; then
|
||||
echo "ERROR: Cannot read \"$SRC\"." >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP " >&2
|
||||
continue
|
||||
fi
|
||||
case $RULE in
|
||||
c-) # compress rule
|
||||
CMD="compress -c $SRC > $DEST"
|
||||
;;
|
||||
-n) # nroff rule (for apollo man pages)
|
||||
if egrep -c '^\.TH[ ]|^\.ds[ ]' $SRC > /dev/null ; then
|
||||
CMD="tbl $SRC|eqn|nroff -man|col -b> $DEST"
|
||||
else
|
||||
CMD="cp $SRC $DEST"
|
||||
fi
|
||||
;;
|
||||
-s) # strip rule
|
||||
# Domain Only
|
||||
# if [ "$(find $SRC -typeuid coff -print)" = "$SRC" ]; then
|
||||
# hp-ux
|
||||
if [ -z "$STRIP" ]; then
|
||||
CMD="cp $SRC $DEST"
|
||||
else if file $SRC | grep -q "not stripped"; then
|
||||
CMD="cp $SRC $DEST; strip $DEST"
|
||||
else
|
||||
CMD="cp $SRC $DEST"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
--) # default (no special processing)
|
||||
CMD="cp $SRC $DEST"
|
||||
;;
|
||||
*) # huh?
|
||||
echo "ERROR: Unrecognized rule: \"$RULE\"" >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP " >&2
|
||||
continue;
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sym_link)
|
||||
if [ -z "$SRC" ]; then
|
||||
echo "ERROR: No link source for \"$DEST\"" >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP " >&2
|
||||
continue;
|
||||
fi
|
||||
if [ "${SRC#\`node_data}" != "$SRC" ]; then
|
||||
# apollo-style special link
|
||||
echo "WARNING: encountered special link: $SRC" >&2
|
||||
# try to make link to this SRC by adding a
|
||||
# backslash to protect the tic mark.
|
||||
SRC=\\$SRC
|
||||
elif [ "${SRC#/}" = "$SRC" ]; then
|
||||
# echo "ERROR: Relative link \"$SRC\"" >&2
|
||||
# echo "WARNING: Relative link \"$SRC\"" >&2
|
||||
# echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP " >&2
|
||||
# Protect the potential variant link variable
|
||||
# (eg lnk_$(LNK))
|
||||
SRC=\'$SRC\'
|
||||
# continue;
|
||||
fi
|
||||
CMD="ln -s $SRC $DEST"
|
||||
# Remove existing link if one already exists
|
||||
[ -${LNKTST} "$DEST" ] && rm $DEST
|
||||
;;
|
||||
hard_link)
|
||||
# Hard links are assumed to be made only to other
|
||||
# files in the submittal -- not to existing system
|
||||
# files.
|
||||
SRC="$DESTTREE/$FILESET${SRC}"
|
||||
if [ -z "$SRC" ]; then
|
||||
echo "ERROR: No link source for \"$DEST\"" >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP" >&2
|
||||
continue;
|
||||
fi
|
||||
CMD="ln $SRC $DEST"
|
||||
;;
|
||||
*) echo "ERROR: Unrecognized type: \"$TYPE\"" >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP" >&2
|
||||
continue;
|
||||
;;
|
||||
esac
|
||||
|
||||
# createPath issues its own error messages
|
||||
if [ ! -d ${DEST%/*} ]; then
|
||||
createPath ${DEST%/*} || continue
|
||||
fi
|
||||
[ -z "$CMD" ] && continue
|
||||
eval "$CMD" || {
|
||||
echo "ERROR: \"$CMD\" failed" >&2
|
||||
echo " LINE=$TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP" >&2;
|
||||
continue;
|
||||
}
|
||||
# set permissions for non-links
|
||||
if [ "${TYPE%link}" = "$TYPE" ]; then
|
||||
if [ "$USER" = "root" ]; then
|
||||
chmod $MODE $DEST ||
|
||||
echo "ERROR: \"chmod $MODE $DEST\" failed" >&2
|
||||
chgrp $GROUP $DEST ||
|
||||
echo "ERROR: \"chgrp $GROUP $DEST\" failed" >&2
|
||||
chown $OWNER $DEST ||
|
||||
echo "ERROR: \"chown $OWNER $DEST\" failed" >&2
|
||||
fi
|
||||
fi
|
||||
|
||||
echo $TYPE $RULE $SRC $DEST $MODE $OWNER $GROUP
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
###################################################
|
||||
# MAIN BODY
|
||||
###################################################
|
||||
|
||||
#
|
||||
# Check Path for chmod, chown, and chgrp
|
||||
#
|
||||
whence chmod > /dev/null || {
|
||||
echo "ERROR: \"chmod\" not in PATH." >&2
|
||||
exit 1
|
||||
}
|
||||
whence chown > /dev/null || {
|
||||
echo "ERROR: \"chown\" not in PATH." >&2
|
||||
exit 1
|
||||
}
|
||||
whence chgrp > /dev/null || {
|
||||
echo "ERROR: \"chgrp\" not in PATH." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
CHECK_BEFORE="no"
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
case $1 in
|
||||
-f*)
|
||||
FILESET=${1#-f}
|
||||
if [ -z "$FILESET" ]; then
|
||||
if [ $# -ge 1 ]; then
|
||||
shift;
|
||||
FILESET=$1
|
||||
else
|
||||
echo $Usage
|
||||
exit 1;
|
||||
fi
|
||||
fi;;
|
||||
-S*) SRCTREE=${1#-S}
|
||||
if [ -z "$SRCTREE" ]; then
|
||||
if [ $# -ge 1 ]; then
|
||||
shift;
|
||||
SRCTREE=$1
|
||||
else
|
||||
echo $Usage
|
||||
exit 1;
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
-D*) DESTTREE=${1#-D}
|
||||
if [ -z "$DESTTREE" ]; then
|
||||
if [ $# -ge 1 ]; then
|
||||
shift;
|
||||
DESTTREE=$1
|
||||
else
|
||||
echo $Usage
|
||||
exit 1;
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
-P*) CHECK_BEFORE="yes"
|
||||
;;
|
||||
|
||||
*) files="$files $1";;
|
||||
esac
|
||||
if [ $# -ge 1 ]; then
|
||||
shift;
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$files" -o -z "$SRCTREE" ]; then
|
||||
echo $Usage >&2
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [ ! -d "$SRCTREE" ]; then
|
||||
echo "ERROR: Cannot access \"$SRCTREE\"." >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -d "$DESTTREE" ]; then
|
||||
echo "ERROR: Cannot access \"$DESTTREE\"." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
umask 022
|
||||
if [ -f /com/ctnode ]; then
|
||||
#
|
||||
# Make sure berkely style permissions are applied to the product tree
|
||||
# This should cause directories to be created with permissions based
|
||||
# on the umask (which is otherwise ignored on "open security model"
|
||||
# file systems).
|
||||
#
|
||||
chacl -RB $DESTTREE
|
||||
fi
|
||||
|
||||
# Debug Stmts
|
||||
echo FILESET=$FILESET
|
||||
echo files=$files
|
||||
echo SRCTREE=$SRCTREE
|
||||
echo DESTTREE=$DESTTREE
|
||||
echo "#-------------- $(date) --------------"
|
||||
echo ""
|
||||
|
||||
TOOL_DIR=$SRCTREE/admin/IntegTools/dbTools
|
||||
|
||||
#
|
||||
# Avoid making duplicate entries
|
||||
# make sure links are referred to AFTER the files to which they point.
|
||||
#
|
||||
if [ $PLATFORM = "uxp" ]; then
|
||||
$TOOL_DIR/uncomment $files | sort | uniq | $TOOL_DIR/linksLast - > /tmp/awk.in
|
||||
cat /tmp/awk.in | awkit > /tmp/awk.out
|
||||
cat /tmp/awk.out | doit
|
||||
else
|
||||
$TOOL_DIR/uncomment $files | sort | uniq | $TOOL_DIR/linksLast - | awkit | doit
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "#-------------- $(date) --------------"
|
||||
765
cde/admin/IntegTools/dbTools/udbParseLib.awk
Normal file
765
cde/admin/IntegTools/dbTools/udbParseLib.awk
Normal file
@@ -0,0 +1,765 @@
|
||||
|
||||
# Awk Library file for parsing UDB files
|
||||
#
|
||||
function parseUdb() {
|
||||
# nawk has already read the initial line.
|
||||
# Tokenize it before doing anything else.
|
||||
tokenize()
|
||||
readDefaults(defaults)
|
||||
# assign hp-ux ".db" file src and link defaults
|
||||
# if none were designated.
|
||||
if ( SrcDefault == "" )
|
||||
SrcDefault = "a_out_location"
|
||||
if ( LnkDefault == "" )
|
||||
LnkDefault = "link_source"
|
||||
if ( TypDefault == "" )
|
||||
TypDefault = "type"
|
||||
if ( DestDefault == "" )
|
||||
DestDefault = "install_target"
|
||||
if ( ModeDefault == "" )
|
||||
ModeDefault = "mode"
|
||||
if ( OwnerDefault == "" )
|
||||
OwnerDefault = "owner"
|
||||
if ( GroupDefault == "" )
|
||||
GroupDefault = "group"
|
||||
readData()
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# readDefaults
|
||||
# This routine reads the defaults at the front section
|
||||
# of the universal database and salts the defaults away.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function readDefaults(dflts)
|
||||
{
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function readDefaults" > DeBugFile
|
||||
}
|
||||
do {
|
||||
os = getOS()
|
||||
if ( osQual != "defaults" )
|
||||
syntaxError("No defaults for: " BlockToken)
|
||||
if ( os == BlockToken || os == "default" )
|
||||
break
|
||||
skipToToken("}")
|
||||
} while ( 1 )
|
||||
fillDefaults()
|
||||
if ( DeBug > 1 )
|
||||
print "Skipping remaining defaults" > DeBugFile
|
||||
# skip remaining default specs
|
||||
while ( lookAhead() == "{" ) {
|
||||
# This should be another default spec
|
||||
# skip it. (watch out for syntax errors)
|
||||
os = getOS()
|
||||
if ( osQual != "defaults" )
|
||||
syntaxError("Expected os:defaults found: \"" os ":" osQual "\"")
|
||||
if ( os == BlockToken && fileName == FILENAME )
|
||||
syntaxError("Only one \"defaults\" record allowed per os" )
|
||||
|
||||
skipToToken("}");
|
||||
}
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# syntaxError
|
||||
# bail out
|
||||
#
|
||||
# (optionally) mail a message to an administrator if a syntax
|
||||
# error occurs in a database.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function syntaxError(reason) {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function syntaxError:" > DeBugFile
|
||||
}
|
||||
print "Syntax ERROR line: " NR " of file: " FILENAME
|
||||
if (reason)
|
||||
print " " reason
|
||||
system( "rm -f /tmp/SyntaxError" )
|
||||
system( "touch /tmp/SyntaxError" )
|
||||
print "Syntax ERROR line: " NR " of file: " FILENAME > "/tmp/SyntaxError"
|
||||
if (reason)
|
||||
print " " reason >> "/tmp/SyntaxError"
|
||||
close( "/tmp/SyntaxError" )
|
||||
if ( mailTo != "" ) {
|
||||
system( "mailx -s \"database syntax error\" "mailTo" < /tmp/SyntaxError" )
|
||||
}
|
||||
system( "rm -f /tmp/SyntaxError" )
|
||||
exit 1
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# fillDefaults
|
||||
# This routine reads the defaults in the OS
|
||||
# defaults section of the database. It saves the defaults
|
||||
# in the "defaults" awk-style string array.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function fillDefaults() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function fillDefaults:" > DeBugFile
|
||||
}
|
||||
tempDflt = ""
|
||||
NumEntries = 1
|
||||
do {
|
||||
if ( tempDflt != "" ) {
|
||||
keyword = tempDflt
|
||||
tempDflt = ""
|
||||
}
|
||||
else
|
||||
keyword = nextToken()
|
||||
|
||||
if ( keyword == "}" )
|
||||
break;
|
||||
if ( "=" != nextToken())
|
||||
syntaxError("Keyword: " keyword " not followed by \"=\" ");
|
||||
tempDflt = nextToken();
|
||||
if ( lookAhead() == "=" )
|
||||
defaults[keyword]=""
|
||||
else {
|
||||
if ( tempDflt == "<SRC>" ) {
|
||||
SrcDefault = keyword;
|
||||
tempDflt = ""
|
||||
}
|
||||
if ( tempDflt == "<LNK>" ) {
|
||||
LnkDefault = keyword;
|
||||
tempDflt = ""
|
||||
}
|
||||
if ( tempDflt == "<TYPE>" ) {
|
||||
TypDefault = keyword;
|
||||
tempDflt = "file"
|
||||
}
|
||||
if ( tempDflt == "<DEST>" ) {
|
||||
DestDefault = keyword;
|
||||
tempDflt = ""
|
||||
}
|
||||
if ( tempDflt == "<MODE>" ) {
|
||||
ModeDefault = keyword;
|
||||
tempDflt = "0444"
|
||||
}
|
||||
if ( tempDflt == "<OWNER>" ) {
|
||||
OwnerDefault = keyword;
|
||||
tempDflt = "bin"
|
||||
}
|
||||
if ( tempDflt == "<GROUP>" ) {
|
||||
GroupDefault = keyword;
|
||||
tempDflt = "bin"
|
||||
}
|
||||
defaults[keyword]= tempDflt
|
||||
|
||||
tempDflt = ""
|
||||
}
|
||||
defOrder[NumEntries++] = keyword;
|
||||
} while ( 1 )
|
||||
if ( DeBug > 3 ) {
|
||||
DBGprintArray(defaults,"defaults")
|
||||
print "SrcDefault =" SrcDefault > DeBugFile
|
||||
print "LnkDefault =" LnkDefault > DeBugFile
|
||||
print "TypDefault =" TypDefault > DeBugFile
|
||||
}
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# getOS
|
||||
# This routine scans the database for an
|
||||
# open brace, then a token, then a ":" indicating
|
||||
# the start of an OS defaults section.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function getOS()
|
||||
{
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function getOS:" > DeBugFile
|
||||
}
|
||||
osQual = ""
|
||||
gotOS = 0
|
||||
|
||||
if ( "{" != nextToken() )
|
||||
syntaxError("Missing initial {")
|
||||
os = nextToken();
|
||||
if ( lookAhead() == ":" ) {
|
||||
nextToken();
|
||||
osQual= nextToken();
|
||||
} else
|
||||
osQual= ""
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return os
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# nextToken
|
||||
# parse the incoming data stream into tokens.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function nextToken() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function nextToken:" > DeBugFile
|
||||
}
|
||||
if ( EOF_Reached == 1 )
|
||||
syntaxError("Premature EOF");
|
||||
tmpToken=tokens[TK++]
|
||||
while ( TK > Ntokens || tokens[TK] == ";" ) {
|
||||
TK++
|
||||
if ( TK > Ntokens )
|
||||
if ( newLine() <= 0 ) {
|
||||
EOF_Reached = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( DeBug > 2 )
|
||||
print "Returning token: " tmpToken > DeBugFile
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return tmpToken
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# lookAhead
|
||||
# return the token at the head of the current list of
|
||||
# tokens, but do not bump the token count in TK
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function lookAhead() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function lookAhead" > DeBugFile
|
||||
}
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return tokens[TK];
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# newLine, tokenize
|
||||
# read a new line of input and tokenize it.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function newLine() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function newLine:" > DeBugFile
|
||||
}
|
||||
if ( (retval = getline) <= 0 ) {
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return retval
|
||||
}
|
||||
retval = tokenize()
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return retval
|
||||
}
|
||||
function tokenize() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function tokenize:" > DeBugFile
|
||||
}
|
||||
# Skip blank/comment lines
|
||||
while ( NF == 0 || $0 ~ /^[ ]*#/ ) {
|
||||
if ( (getline) <= 0 ) {
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Make sure syntactically meaningful characters are surrounded by
|
||||
# white space. (I gave up on gsub for this purpose).
|
||||
#
|
||||
last=1
|
||||
Str="" # temp string for modified input line
|
||||
tstStr=$0 # part of input line being tested
|
||||
newStr=$0 # current input line image with modifications
|
||||
##########################################################################
|
||||
# REPLACE THE FOLLOWING LINE WITH A WORK_AROUND FOR A PROBLEM WITH
|
||||
# THE MATCH FUNCTION FOR THE SUN VERSION OF "nawk"
|
||||
#
|
||||
# while ( match(tstStr,"[^\\\][:=}{;]") ) {
|
||||
#
|
||||
while ( match(tstStr,"[:=}{;]") ) {
|
||||
if ( RSTART-1 > 0 && substr(tstStr,RSTART-1,1) != "\\") {
|
||||
RSTART=RSTART-1
|
||||
LENGTH=LENGTH+1
|
||||
} else {
|
||||
#
|
||||
# The character was escaped with a backslash.
|
||||
# Patch things up -- continue testing the rest
|
||||
# of the line.
|
||||
#
|
||||
Str=Str substr($0,last,RSTART+1)
|
||||
last = last + RSTART + 1
|
||||
tstStr =substr($0,last)
|
||||
newStr = Str tstStr
|
||||
continue;
|
||||
}
|
||||
####################### end of workaround ################################
|
||||
############################################################################
|
||||
if ( DeBug > 1 ) {
|
||||
print "Tokenize: Match found in: " tstStr
|
||||
print "RSTART= " RSTART " ; RLENGTH = " RLENGTH
|
||||
}
|
||||
# match found --
|
||||
# the temp string is now modified to contain:
|
||||
# 1) all characters up to the match and the first char of match
|
||||
# 2) blank before the syntactically significant char
|
||||
# 3) the significant character
|
||||
# 4) blank following the significant character
|
||||
|
||||
Str=Str substr($0,last,RSTART) " " substr($0,last+RSTART,1) " "
|
||||
last = last + RSTART + 1;
|
||||
#
|
||||
# Test remaining part of input line for additional occurances
|
||||
# of syntactically significant characters.
|
||||
#
|
||||
tstStr=substr($0,last)
|
||||
#
|
||||
# Our best guess for the new string is the part of the
|
||||
# input line already tested plus the part yet to be tested.
|
||||
#
|
||||
newStr=Str tstStr
|
||||
}
|
||||
#
|
||||
# Check for any instances of syntax chars at the start of the line
|
||||
#
|
||||
sub("^[:=}{;]","& ",newStr);
|
||||
$0 = newStr
|
||||
|
||||
#
|
||||
# allow escaping of significant syntax characters
|
||||
#
|
||||
gsub("[\\\][{]","{")
|
||||
gsub("\\\:",":")
|
||||
gsub("\\\;",";")
|
||||
gsub("\\\=","=")
|
||||
gsub("[\\\][}]","}")
|
||||
|
||||
#
|
||||
# Having insured that interesting chars are surrounded by blanks
|
||||
# now tokenize the input line.
|
||||
#
|
||||
|
||||
Ntokens = split($0,tokens)
|
||||
TK = 1
|
||||
if ( DeBug > 3 )
|
||||
DBGprintTokens()
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return Ntokens
|
||||
}
|
||||
function DBGprintTokens()
|
||||
{
|
||||
for ( i = 1; i <= Ntokens ; i++ )
|
||||
print "tokens[" i "] = " tokens[i] > DeBugFile
|
||||
return 0
|
||||
}
|
||||
function DBGprintArray(array,name) {
|
||||
for ( i in array) {
|
||||
print name "[" i "] = " array[i] > DeBugFile
|
||||
}
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# skipToToken
|
||||
# read until the passed in token is encountered
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function skipToToken(tok)
|
||||
{
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function skipToToken:" > DeBugFile
|
||||
}
|
||||
while ( nextToken() != tok )
|
||||
;
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
# -------------------------------------------------------------
|
||||
# readData
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function readData() {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function readData" > DeBugFile
|
||||
}
|
||||
while ( EOF_Reached == 0 ) {
|
||||
if ( fileName != FILENAME ) {
|
||||
if ( DeBug > 1 ) {
|
||||
print "====>Files Changed" > DeBugFile
|
||||
print "fileName= " fileName > DeBugFile
|
||||
print "FILENAME= " FILENAME > DeBugFile
|
||||
}
|
||||
fileName = FILENAME
|
||||
# skip over defaults section of the new file
|
||||
while ( lookAhead() == "{" ) {
|
||||
# This should be another default spec
|
||||
# skip it. (watch out for syntax errors)
|
||||
os = getOS()
|
||||
if ( osQual != "defaults" )
|
||||
syntaxError("Expected os:defaults found: \"" os ":" osQual "\"")
|
||||
#
|
||||
# Relax this restriction since we are
|
||||
# ignoring this defaults record
|
||||
#if ( os == BlockToken )
|
||||
# syntaxError("Only one \"defaults\" record allowed per os" )
|
||||
|
||||
skipToToken("}");
|
||||
}
|
||||
}
|
||||
if ( getNextRecord(record) > 0 )
|
||||
PRTREC(record);
|
||||
# skip remaining os entries for this source
|
||||
# sorry no error checking.
|
||||
while ( EOF_Reached == 0 && lookAhead() == "{" )
|
||||
skipToToken("}")
|
||||
if ( DeBug > 1 )
|
||||
print "EOF_Reached = " EOF_Reached > DeBugFile
|
||||
}
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# getNextRecord
|
||||
#
|
||||
# this function fills the rec[] array with defaults
|
||||
#
|
||||
# then it scans for a block that has a token maching
|
||||
# BlockToken, or accepts a block with the "default"
|
||||
# token. The "default" token is not accepted if
|
||||
# defaults are disallowed.
|
||||
#
|
||||
# finally fillRecord is called to read in the lines
|
||||
# in the block and override the entries in the rec[] array.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
function getNextRecord(rec) {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering function getNextRecord:" > DeBugFile
|
||||
}
|
||||
# fill with defaults
|
||||
for ( i in defaults )
|
||||
rec[i] = defaults[i];
|
||||
do {
|
||||
src = nextToken()
|
||||
if ( DeBug > 2 )
|
||||
print "src=" src > DeBugFile
|
||||
# Allow special characters to appear in src names if they have been backslashed
|
||||
# if ( src ~ /[{:=}]/ )
|
||||
# syntaxError("Invalid source: \"" src "\"");
|
||||
do {
|
||||
os = getOS()
|
||||
if ( DeBug > 1 ) {
|
||||
print "Got os " os " and qual= " osQual > DeBugFile
|
||||
print "NR= " NR " : " $0 > DeBugFile
|
||||
}
|
||||
if (( os != BlockToken || osQual == "not" ) \
|
||||
&& ( os != "default" || UseDefaultBlocks != "Y" ) ) {
|
||||
|
||||
if ( DeBug > 2)
|
||||
print "Skipping to end of os rec" > DeBugFile
|
||||
skipToToken("}");
|
||||
}
|
||||
if ( EOF_Reached == 1 || fileName != FILENAME ){
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return 0
|
||||
}
|
||||
if ( DeBug > 2 )
|
||||
print "Look Ahead is: " tokens[TK] > DeBugFile
|
||||
} while ( lookAhead() == "{" )
|
||||
} while (( os != BlockToken ) && ( os != "default" || UseDefaultBlocks != "Y"))
|
||||
if ( DeBug > 2)
|
||||
print "About to call fillRecord" > DeBugFile
|
||||
fillRecord(rec)
|
||||
if ( DeBug > 0 ) Depth--
|
||||
return 1
|
||||
}
|
||||
function fillRecord(rec) {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering fillRecord:" > DeBugFile
|
||||
}
|
||||
tempEntry = ""
|
||||
do {
|
||||
if ( tempEntry != "" ) {
|
||||
keyword = tempEntry;
|
||||
tempEntry = ""
|
||||
} else
|
||||
keyword = nextToken();
|
||||
if ( keyword == "}" )
|
||||
break;
|
||||
if ( "=" != nextToken())
|
||||
syntaxError("Keyword: " keyword " not followed by \"=\"");
|
||||
tempEntry = nextToken();
|
||||
if ( lookAhead() == "=" )
|
||||
rec[keyword] = ""
|
||||
else {
|
||||
rec[keyword] = tempEntry
|
||||
tempEntry = ""
|
||||
}
|
||||
} while (1)
|
||||
#
|
||||
# check for source entry
|
||||
# THIS IMPLIES KNOWLEDGE OF .db FILE ENTRIES!!
|
||||
if ( DeBug > 2)
|
||||
print "TYPE= " rec[TypDefault] > DeBugFile
|
||||
if ( src == "-" )
|
||||
if ( rec[TypDefault]=="directory" || rec[TypDefault]=="empty_dir")
|
||||
{
|
||||
# no source required for a directory
|
||||
if ( rec[SrcDefault] != "" )
|
||||
syntaxError(SrcDefault " \"" rec[SrcDefault] "\" specified for a directory.")
|
||||
if ( rec[LnkDefault] != "" )
|
||||
syntaxError(LnkDefault " \"" rec[LnkDefault] "\" specfied for a directory.")
|
||||
|
||||
rec[SrcDefault] = src;
|
||||
} else if ( rec["status"] == "---cu-" ) {
|
||||
# This is used for some reason (X11-SERV.db)
|
||||
if ( rec[SrcDefault] != "" )
|
||||
syntaxError( "File: \"" rec["install_target"] "\" with special status: \"---cu-\" should have no source.");
|
||||
} else
|
||||
syntaxError("Invalid source: \"" src "\" for type: \"" rec[TypDefault] )
|
||||
else if ( rec[TypDefault] ~ /link/ )
|
||||
if ( src ~ /^\// || src ~ /^\./ ) {
|
||||
if ( rec[SrcDefault] != "")
|
||||
syntaxError( SrcDefault ": \"" rec[SrcDefault] "\" specified for link: \"" src "\"")
|
||||
if ( rec[LnkDefault] == "" )
|
||||
rec[LnkDefault]=src;
|
||||
} else
|
||||
syntaxError("Invalid source: \"" src "\" for type: \"" rec[TypDefault] "\"")
|
||||
else if ( rec[TypDefault] == "file" || rec[TypDefault] == "control" )
|
||||
rec[SrcDefault] = src;
|
||||
else
|
||||
syntaxError("Unrecognized type:\"" rec[TypDefault] "\"")
|
||||
|
||||
if ( DeBug > 0 ) Depth--
|
||||
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# printDB
|
||||
# Print records in ".db" format
|
||||
# -------------------------------------------------------------
|
||||
function printDb(rec) {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering printDb:" > DeBugFile
|
||||
}
|
||||
# NumEntries should be one greater than the number of defaults
|
||||
# read in.
|
||||
for ( i = 1; i< NumEntries; i++ ) {
|
||||
printf("%-40s %s %s\n",defOrder[i], ":",rec[defOrder[i]])
|
||||
}
|
||||
print "#"
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# printLst
|
||||
# Print records in ".lst" format
|
||||
# -------------------------------------------------------------
|
||||
function printLst(rec) {
|
||||
if ( DeBug > 0 ) {
|
||||
Depth++
|
||||
for ( i=1; i < Depth; i++ )
|
||||
printf(" ") > DeBugFile
|
||||
print "Entering printLst:" > DeBugFile
|
||||
}
|
||||
if ( rec[TypDefault] ~ /link/ )
|
||||
Source = LnkDefault
|
||||
else
|
||||
Source = SrcDefault
|
||||
|
||||
printf("%s %s %s %s %s %s %s %s %s\n",
|
||||
rec[ DestDefault],
|
||||
rec[ ModeDefault ],
|
||||
rec[ Source ],
|
||||
rec[ TypDefault ],
|
||||
rec[ OwnerDefault ],
|
||||
rec[ GroupDefault ],
|
||||
rec[ "status" ],
|
||||
rec[ "processor" ],
|
||||
rec[ "responsible_project" ] )
|
||||
|
||||
if ( DeBug > 0 ) Depth--
|
||||
}
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# printGather
|
||||
# print records in one of the formats expected by Gather.ksh
|
||||
# (Jim Andreas print routine).
|
||||
# -------------------------------------------------------------
|
||||
function printGather(rec) {
|
||||
# print "Entering printRecord: "
|
||||
|
||||
if (( BlockToken == "hp-ux" ) && ( rec[ "processor" ] != "378" ))
|
||||
{
|
||||
if ( index( rec[ "processor" ], Machine ) == 0 )
|
||||
{
|
||||
#printf( "skipping %s, Machine %s machines %s\n", src, Machine, rec[ "processor" ] );
|
||||
return
|
||||
}
|
||||
}
|
||||
if ( action == "toSDD" )
|
||||
{
|
||||
if ( rec[ "type" ] == "file" )
|
||||
{
|
||||
printf("%s:F:%s:%s:%s:*::\n",
|
||||
rec[ "install_target" ], rec[ "owner" ],
|
||||
rec[ "group" ], rec[ "mode" ])
|
||||
}
|
||||
}
|
||||
else if ( action == "toReleaseTree" )
|
||||
{
|
||||
if ( ( rec[ "type" ] == "hard_link" ) ||
|
||||
( rec[ "type" ] == "sym_link" ) ||
|
||||
( rec[ "type" ] == "file" ) )
|
||||
{
|
||||
|
||||
#
|
||||
# if this is a link, then fudge a source file for Gather.ksh
|
||||
# to check on. Really we are linking two dest files together
|
||||
# so the hack is to get around the check in Gather.ksh
|
||||
#
|
||||
|
||||
if ( ( rec[ "type" ] == "hard_link" ) ||
|
||||
( rec[ "type" ] == "sym_link" ) )
|
||||
{
|
||||
printf( " {s}%s {d}%s\n", "-", rec[ "install_target" ] );
|
||||
}
|
||||
else if ( length( src ) > 34 )
|
||||
printf( " {s}%s {d}%s\n", src, rec[ "install_target" ] );
|
||||
else
|
||||
printf( " {s}%-34s {d}%s\n", src, rec[ "install_target" ] );
|
||||
|
||||
if ( rec[ "install_rule_name" ] == "c-" )
|
||||
{
|
||||
printf( "compress -c < {s}%s > {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
else if ( rec[ "type" ] == "sym_link" )
|
||||
{
|
||||
printf( "ln -s %s {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
else if ( rec[ "type" ] == "hard_link" )
|
||||
{
|
||||
printf( "ln {d}%s {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
else if ( rec[ "uncompress" ] == "true" )
|
||||
{
|
||||
printf( "uncompress -c < {s}%s > {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
else if ( length( src ) > 34 )
|
||||
{
|
||||
printf( "cp {s}%s {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf( "cp {s}%-34s {d}%s\n", src,
|
||||
rec[ "install_target" ] );
|
||||
}
|
||||
printf( "%s %s %s\n", rec[ "owner" ], rec[ "group" ], rec[ "mode" ])
|
||||
rec[ "install_rule_name" ] = "";
|
||||
rec[ "uncompress" ] = "";
|
||||
}
|
||||
}
|
||||
else if ( action == "toDeliverArgs" )
|
||||
{
|
||||
temp = rec[ "install_target" ];
|
||||
m = n = index( temp, "/" );
|
||||
while ( n != 0 )
|
||||
{
|
||||
temp = substr( temp, n+1 );
|
||||
n = index( temp, "/" );
|
||||
m += n;
|
||||
}
|
||||
dirnametarget = substr( rec[ "install_target" ], 1, m-1 );
|
||||
|
||||
if ( length( rec[ "install_target" ] ) > 40 )
|
||||
{
|
||||
printf("%s -d .%s\n", rec[ "install_target" ], dirnametarget );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("%-40s -d .%s\n", rec[ "install_target" ], dirnametarget );
|
||||
}
|
||||
}
|
||||
else if ( action == "toCheckBuild" )
|
||||
{
|
||||
# print "Entering printRecord - toCheckBuild: "
|
||||
#
|
||||
# skip any link info
|
||||
#
|
||||
if ( rec[ "type" ] == "file" )
|
||||
{
|
||||
#
|
||||
# just print the source path for the checker tool
|
||||
#
|
||||
printf("%s\n", src );
|
||||
}
|
||||
}
|
||||
else if ( action == "toFileList" )
|
||||
{
|
||||
#
|
||||
# skip any link info
|
||||
#
|
||||
if ( rec[ "type" ] == "file" )
|
||||
{
|
||||
#
|
||||
# print the source and install_target for the human person
|
||||
#
|
||||
if ( length( src ) > 40 || length( rec[ "install_target" ] ) > 40 )
|
||||
{
|
||||
printf("%s -> %s %s\n", src,
|
||||
rec[ "install_target" ], rec[ "mode" ] );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("%-40s -> %-40s %s\n", src,
|
||||
rec[ "install_target" ], rec[ "mode" ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( action == "toTargetList" )
|
||||
{
|
||||
#
|
||||
# skip any link info
|
||||
#
|
||||
if ( rec[ "type" ] == "file" )
|
||||
{
|
||||
#
|
||||
# just print the install_target
|
||||
#
|
||||
printf("%s\n", rec[ "install_target" ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
437
cde/admin/IntegTools/dbTools/udbToAny.ksh
Executable file
437
cde/admin/IntegTools/dbTools/udbToAny.ksh
Executable file
@@ -0,0 +1,437 @@
|
||||
#!/bin/ksh
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# udbToAny.ksh
|
||||
#
|
||||
# This script was leveraged from "databaseConversionTool.ksh"
|
||||
# it should provide a superset of the functionality of that script;
|
||||
# however the primary motivation was to get away from the use of
|
||||
# multiple divergent parsers for the ".udb" style database. The
|
||||
# parser has been moved into an awk "library" file: udbParseLib.awk.
|
||||
# this parser can and should be used by all scripts wishing to parse
|
||||
# the ".udb" data bases.
|
||||
#
|
||||
# ----------------------------
|
||||
# new features:
|
||||
#
|
||||
# -toDB to convert to old mksubmit-style ".db" format
|
||||
# -toLst to convert to old domain-port-style ".lst" files
|
||||
# -toCustom <prt> to specify a print routine for a custom format
|
||||
# -custom <awklib> to specify a library containing custom print routines.
|
||||
# -udbParseLib <awkLib> to specify a library containing an alternate parser.
|
||||
# -mailTo <user> to specify an administrator who will receive mail
|
||||
# concerning parsing errors.
|
||||
#
|
||||
# -Database is now obsolete (although it will still work)
|
||||
# <udbfile> ... ... The script can now take multiple udb files (Only the
|
||||
# defaults specified in the first udb file will apply).
|
||||
#
|
||||
# ----------------------------
|
||||
#
|
||||
# This script converts a universal database to an
|
||||
# HP OSF style System Definition Database (SDD) file,
|
||||
# or a set of args suitable to supply to the Chelmsford deliver
|
||||
# tool, or a set of commands to build a delivery tree.
|
||||
# For more details, please refer to the "X11 and VUE for HP_OSF/1.0"
|
||||
# document.
|
||||
#
|
||||
# This script was leveraged (read hacked extensively) from
|
||||
# the "udbToDb" script by Jim Andreas. Ron Voll authored the
|
||||
# original "udbToDb" script.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
|
||||
# usage: databaseToSDD.ksh Option udbFile
|
||||
#
|
||||
# where Option is one of the following:
|
||||
#
|
||||
# -toDB convert a .udb to ".db" format
|
||||
# -toLst convert a .udb to ".lst" format
|
||||
# -toSDD convert a .udb to SDD format
|
||||
# -toDeliverArgs convert a .udb to args that the deliver tool likes
|
||||
# -toReleaseTree convert a .udb to a script to build a delivery tree
|
||||
# -toCheckBuild convert a .udb to a script to check the items in a build
|
||||
# -toFileList convert a .udb to a list of files for carbon units
|
||||
# -Machine specifies 3,7,8 for hp-ux releases
|
||||
# -ReleaseStream {hp-ux, osf, whatever}
|
||||
# -NoDefaults do not convert any records labeled default
|
||||
# -toTargetList convert a .udb to a list of target files in product tree
|
||||
# the leading path is stripped and just the target
|
||||
# file is left - for easy diffing with some other
|
||||
# version of a release
|
||||
# -custom <awkFile> Supply a custom "awk" print library
|
||||
# -toCustom <prt routine>
|
||||
# -udbParseLib <awkFile> Supply an alternate "awk" parser library
|
||||
|
||||
|
||||
# -------------------------------------------------------------
|
||||
# ConvertRoutine
|
||||
#
|
||||
# This ksh function invokes awk to do all of the dirty
|
||||
# work. The DoAction variable is consulted only in the
|
||||
# final stages of printing the desired info after the
|
||||
# .udb "phrases" are parsed.
|
||||
#
|
||||
# -------------------------------------------------------------
|
||||
ConvertRoutine()
|
||||
{
|
||||
|
||||
|
||||
#
|
||||
# set what we are going to do
|
||||
#
|
||||
typeset DoAction=$1
|
||||
|
||||
#
|
||||
# set the "release stream" or token in a block in the .udb
|
||||
# file for which we will scan.
|
||||
#
|
||||
typeset BlockToken=$2
|
||||
|
||||
#
|
||||
# and for HP-UX releases, the particular machine 68k/Snake/S800 3/7/8
|
||||
#
|
||||
typeset machine=$3
|
||||
#
|
||||
# set flag if default blocks are to be processed
|
||||
#
|
||||
typeset UseDefaultBlocks=$4
|
||||
|
||||
shift
|
||||
shift
|
||||
shift
|
||||
shift
|
||||
|
||||
AWK=/usr/bin/awk
|
||||
if [ -x /usr/bin/nawk ]; then
|
||||
AWK=/usr/bin/nawk
|
||||
fi
|
||||
|
||||
#
|
||||
# Custom print routines may use the following parser variables:
|
||||
# defOrder[] --- An array containing the names of the fields in
|
||||
# a data base record (in the correct order).
|
||||
# NumEntries --- One MORE than the number of entries in the
|
||||
# "defOrder" array. This is the number of fields
|
||||
# in a data base record.
|
||||
# rec[] --- An associative array indexed by data base record
|
||||
# field name containing the value of the field.
|
||||
#
|
||||
# Assign custom print routines to be used for output. The default is to
|
||||
# use the "printDb" function associated with the library.
|
||||
#
|
||||
|
||||
typeset PRT=printDb
|
||||
case "$DoAction" in
|
||||
toDB)
|
||||
PRT=printDb
|
||||
;;
|
||||
toLst)
|
||||
PRT=printLst
|
||||
;;
|
||||
toFileList|toTargetList|toCheckBuild|toReleaseTree|toDeliverArgs|toSDD)
|
||||
PRT=printGather;
|
||||
;;
|
||||
toCustom)
|
||||
CUSTOM_PRINT="-f $CUSTOM_PRINT_LIB"
|
||||
PRT=$CUS_PRT
|
||||
;;
|
||||
*) # Unknown Action
|
||||
echo "$0: Unknown Action>> \"$doAction\""
|
||||
exit 1;
|
||||
;;
|
||||
esac
|
||||
|
||||
cat > /tmp/awk$$ <<EOF
|
||||
#
|
||||
# The function name "PRTREC" is used by the parsing routines
|
||||
# to do the output. By providing a custom output function you
|
||||
# can print the database any way you want. The default is to
|
||||
# use the "printRecord" function built defined in the awk file
|
||||
# containing the awk parser.
|
||||
#
|
||||
function PRTREC(rec) {
|
||||
$PRT(rec)
|
||||
}
|
||||
BEGIN {
|
||||
parseUdb()
|
||||
}
|
||||
{
|
||||
print "Getting New Line AWK style -- Problem?"
|
||||
exit 1
|
||||
}
|
||||
EOF
|
||||
|
||||
#
|
||||
# Create a single awk file for use with the "-f" parameter.
|
||||
# IBM's awk only allows one "-f"
|
||||
#
|
||||
cat "$UDB_PARSE_LIB" >> /tmp/awk$$
|
||||
[ -z "$CUSTOM_PRINT" ] || cat "$CUSTOM_PRINT_LIB" >> /tmp/awk$$
|
||||
|
||||
$AWK -v mailTo="$Administrator" \
|
||||
-v action="$DoAction" \
|
||||
-v BlockToken="$BlockToken" \
|
||||
-v Machine="$machine" \
|
||||
-v UseDefaultBlocks="$UseDefaultBlocks" \
|
||||
-v DeBugFile="$DEBUGFILE" \
|
||||
-v DeBug="$DEBUGLEVEL" \
|
||||
-f /tmp/awk$$ $*
|
||||
|
||||
|
||||
#
|
||||
# Removed from parameter list because IBM's awk only allows one "-f"
|
||||
# $CUSTOM_PRINT \
|
||||
# -f "$UDB_PARSE_LIB" \
|
||||
#
|
||||
|
||||
rm /tmp/awk$$
|
||||
}
|
||||
|
||||
#
|
||||
# print a handy usage message to stderr (file descriptor 2 )
|
||||
#
|
||||
#
|
||||
usage()
|
||||
{
|
||||
exec >&2
|
||||
|
||||
echo "$ScriptName: usage:"
|
||||
echo ""
|
||||
echo " $ScriptName [Options] <UdbFile> ..."
|
||||
echo ""
|
||||
echo " -toDB convert a .udb to \".db\" format"
|
||||
echo " -toLst convert a .udb to \".lst\" format"
|
||||
echo " -toSDD convert a .udb to SDD format"
|
||||
echo " -toDeliverArgs convert a .udb to args that the deliver tool likes"
|
||||
echo " -toReleaseTree convert a .udb to a script to build a delivery tree"
|
||||
echo " -toCheckBuild convert a .udb to a script to check a build"
|
||||
echo " -toFileList convert a .udb to a list of files"
|
||||
echo " -toTargetList convert a .udb to a list of product files"
|
||||
echo " -ReleaseStream {hp-ux, osf, whatever}"
|
||||
echo " -Machine specifies machine 3,7,8 for hp-ux"
|
||||
echo " -NoDefaults do not convert any records labeled \"default\""
|
||||
echo " -Database path (obsolete) specifies full path to the .udb file to convert"
|
||||
echo " -mailTo <user> Specify a user to receive mail on errors."
|
||||
echo " -toCustom <prt> Specify the name of a custom print routine."
|
||||
echo " -custom <awkFile> Supply a custom "awk" print library."
|
||||
echo " -udbParseLib <awkFile> Supply an alternate 'awk' parser library"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
# OK, here is where we really start execution.
|
||||
# Check that the first argument defines what this script is
|
||||
# supposed to do:
|
||||
|
||||
# Obscurity footprint-in-the-sand: "${1##*/}" is equivalent
|
||||
# to basename(1)
|
||||
#
|
||||
ScriptName=${0##*/}
|
||||
|
||||
# -toSDD convert a .udb to SDD format
|
||||
# -toDeliverArgs convert a .udb to args that the deliver tool likes
|
||||
# -toReleaseTree convert a .udb to a script to build a delivery tree
|
||||
# -toCheckBuild convert a .udb to a script to check the items in a build
|
||||
|
||||
if [ $# -le 3 ]; then
|
||||
usage $0
|
||||
fi
|
||||
|
||||
typeset TakeDefaultBlocks="Y"
|
||||
typeset Administrator=""
|
||||
#typeset DBTOOLSRC=/x/toolsrc/dbTools
|
||||
typeset DBTOOLSRC=`dirname $0`
|
||||
typeset UDB_PARSE_LIB="$DBTOOLSRC/udbParseLib.awk"
|
||||
typeset CUSTOM_PRINT_LIB=""
|
||||
typeset DEBUGFILE="/dev/tty"
|
||||
typeset DEBUGLEVEL=0
|
||||
|
||||
if [ $# -gt 2 ]; then
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
case $1 in
|
||||
-NoDefaults)
|
||||
TakeDefaultBlocks=N
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toDB)
|
||||
Action=toDB
|
||||
shift;
|
||||
continue;
|
||||
;;
|
||||
-toLst)
|
||||
Action=toLst
|
||||
shift;
|
||||
continue;
|
||||
;;
|
||||
-toSDD)
|
||||
Action=toSDD
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toDeliverArgs)
|
||||
Action=toDeliverArgs
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toReleaseTree)
|
||||
Action=toReleaseTree
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toCheckBuild)
|
||||
Action=toCheckBuild
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toTargetList)
|
||||
Action=toTargetList
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toFileList)
|
||||
Action=toFileList
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-Machine)
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
Machine=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-ReleaseStream)
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
ReleaseStream=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-Database)
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
if [ ! -r "$2" ]; then
|
||||
usage
|
||||
fi
|
||||
Database="$Database $2"
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-udbParseLib) # specify alternate "awk" parser location
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
if [ ! -r "$2" ]; then
|
||||
usage
|
||||
fi
|
||||
UDB_PARSE_LIB=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-toCustom) # specify custom "awk" print routines
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
Action=toCustom
|
||||
CUS_PRT=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-custom) # specify custom "awk" print routines
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
if [ ! -r "$2" ]; then
|
||||
usage
|
||||
fi
|
||||
CUSTOM_PRINT_LIB=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-mailTo) # specify an administrator who receives mail about errors.
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
Administrator=$2
|
||||
shift
|
||||
shift
|
||||
continue
|
||||
;;
|
||||
-DeBugFile) # specify a debug file and debug level for parser debug info
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
if [ "x$3" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
DEBUGFILE=$2
|
||||
shift 2
|
||||
continue
|
||||
;;
|
||||
-DeBugLevel) # specify a debug level for parser debug info
|
||||
if [ "x$2" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
if [ "x$3" = "x" ]; then
|
||||
usage
|
||||
fi
|
||||
DEBUGLEVEL=$2
|
||||
shift 2
|
||||
continue
|
||||
;;
|
||||
-*)
|
||||
echo "unknown option: $1"
|
||||
echo ""
|
||||
usage
|
||||
exit 1;
|
||||
;;
|
||||
*) if [ ! -r $1 ]; then
|
||||
usage
|
||||
fi
|
||||
Database="$Database $1"
|
||||
shift;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$Action" = "toCustom" ]; then
|
||||
if [ -z "$CUSTOM_PRINT_LIB" ]; then
|
||||
echo "You Must specify an awk file containing the custom print routine \"$CUS_PRT\""
|
||||
exit 1;
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ "$Machine" = "" ]; then
|
||||
Machine=NA
|
||||
elif [ "$Machine" = "300" ]; then
|
||||
Machine="3"
|
||||
elif [ "$Machine" = "700" ]; then
|
||||
Machine="7"
|
||||
elif [ "$Machine" = "800" ]; then
|
||||
Machine="8"
|
||||
fi
|
||||
if [ "$ReleaseStream" = "" ]; then
|
||||
echo "$ScriptName: need to specify a -ReleaseStream" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ "$Database" = "" ]; then
|
||||
echo "$ScriptName: need to specify a -Database" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
ConvertRoutine $Action $ReleaseStream $Machine $TakeDefaultBlocks $Database
|
||||
9
cde/admin/IntegTools/dbTools/uncomment
Executable file
9
cde/admin/IntegTools/dbTools/uncomment
Executable file
@@ -0,0 +1,9 @@
|
||||
#! /bin/ksh
|
||||
|
||||
#
|
||||
# Script to remove comments and blank lines from ".lst" files
|
||||
# and coalesce multiple blanks/tabs into a single blank
|
||||
#
|
||||
|
||||
cat $@ | egrep -v '^[ ]*#|^[ ]*$' | sed 's/[ ][ ]*/ /g'|\
|
||||
sed 's/ $//'
|
||||
8
cde/admin/IntegTools/deinstall.dt
Normal file
8
cde/admin/IntegTools/deinstall.dt
Normal file
@@ -0,0 +1,8 @@
|
||||
#=============================================================================
|
||||
#=============================================================================
|
||||
# deinstall.dt
|
||||
#
|
||||
# This script has been replaced with dinstall.dt.src.
|
||||
#
|
||||
#=============================================================================
|
||||
#=============================================================================
|
||||
783
cde/admin/IntegTools/dinstall.dt.src
Executable file
783
cde/admin/IntegTools/dinstall.dt.src
Executable file
@@ -0,0 +1,783 @@
|
||||
XCOMM!/bin/ksh
|
||||
XCOMM $XConsortium: dinstall.dt.src /main/6 1996/04/23 11:18:22 drk $
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
XCOMM deinstall.dt
|
||||
XCOMM
|
||||
XCOMM Script to deinstall the April 1994 Snapshot Desktop on
|
||||
XCOMM HP, IBM, Sun, Fujitsu, or Novell Unix systems from a CDROM
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
XCOMM ==========================================================================
|
||||
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiClearScreen - clears the screen
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
#define HASH #
|
||||
#define STAR *
|
||||
|
||||
DtiClearScreen() {
|
||||
clear 1>&2
|
||||
HASH DtiPrint "clear"
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM Log - echo to log
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to echo to log
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
Log()
|
||||
{
|
||||
printf "$1" $2 $3 $4 $5 >> $LOG_FILE
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiPrint - echo to stderr and log
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to echo to stdout
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiPrint()
|
||||
{
|
||||
printf "$1" $2 $3 $4 $5 $6 $7 $8 $9 >&2
|
||||
Log "$1" $2 $3 $4 $5 $6 $7 $8 $9
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiShow - echo to stdout
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to echo to stdout
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiShow()
|
||||
{
|
||||
printf "$1" $2 $3 $4 $5 $6 $7 $8 $9 >&2
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiReturn - return a string to stdout
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to return
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiReturn()
|
||||
{
|
||||
echo "$1"
|
||||
}
|
||||
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DtiWhoami
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM result of system 'whoami' command
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DtiWhoami()
|
||||
{
|
||||
$WHOAMI_PATH/whoami
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM Exit - log and exit
|
||||
XCOMM
|
||||
XCOMM Input
|
||||
XCOMM $1 - data to echo to log
|
||||
XCOMM Output - none
|
||||
XCOMM Return -none
|
||||
XCOMM ==========================================================================
|
||||
|
||||
Exit()
|
||||
{
|
||||
Log "\n==================================================================\n"
|
||||
Log "* $(date) $($WHOAMI_PATH/whoami)@$(hostname)*"
|
||||
Log "* $1*"
|
||||
Log "\n*exit_code = $2*"
|
||||
Log "\n==================================================================\n"
|
||||
exit $2
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM GetPlatform
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM "hpux"
|
||||
XCOMM "aix"
|
||||
XCOMM "sun"
|
||||
XCOMM "uxp"
|
||||
XCOMM "usl"
|
||||
XCOMM "dec"
|
||||
XCOMM ==========================================================================
|
||||
|
||||
GetPlatform()
|
||||
{
|
||||
if [ -z "$getPlatform" ]; then
|
||||
os=`uname -s`
|
||||
case $os in
|
||||
*HP-UX*) getPlatform=hp;;
|
||||
*AIX*) getPlatform=ibm;;
|
||||
*SunOS*) getPlatform=sun;;
|
||||
*UNIX_System_V*) getPlatform=uxp;;
|
||||
*UNIX_SV*) getPlatform=usl;;
|
||||
*OSF1*) getPlatform=dec;;
|
||||
esac
|
||||
fi
|
||||
DtiReturn $getPlatform
|
||||
}
|
||||
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM ValidOS - Verify OS is valid to deinstall on
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - Error message if invalid platform, will exit.
|
||||
XCOMM Return
|
||||
XCOMM "hpux"
|
||||
XCOMM "aix"
|
||||
XCOMM "sun"
|
||||
XCOMM "uxp"
|
||||
XCOMM "usl"
|
||||
XCOMM "dec"
|
||||
XCOMM ==========================================================================
|
||||
|
||||
ValidOS()
|
||||
{
|
||||
platform=$(GetPlatform)
|
||||
case "$platform" in
|
||||
hp|ibm|sun|uxp|usl|dec)
|
||||
DtiReturn $platform
|
||||
;;
|
||||
*) Exit $INVALID_OS_MSG 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM ResolvePathName
|
||||
XCOMM
|
||||
XCOMM Input - File Name to be resolved to actual file
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM Actual File Name resolved down to through all links
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
ResolvePathName() {
|
||||
if [ "/" = "$1" ]; then
|
||||
echo $1$2
|
||||
elif [ -L $1 ]; then
|
||||
ResolvePathName `/bin/ls -l $1 | awk '{print $NF}'` $2
|
||||
else
|
||||
ResolvePathName `dirname $1` `basename $1`${2+/}$2
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM FileIsLink
|
||||
XCOMM
|
||||
XCOMM Input - File Name
|
||||
XCOMM Output - none
|
||||
XCOMM Return
|
||||
XCOMM TRUE, if file is a link
|
||||
XCOMM FALSE, if file is not a link
|
||||
XCOMM ==========================================================================
|
||||
FileIsLink() {
|
||||
if [[ -L $1 ]] && [[ -a $1 ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
else
|
||||
DtiReturn "FALSE"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM StateObjective - States the objective of the Script to the user
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
|
||||
StateObjective() {
|
||||
|
||||
XCOMM Display information to the user, ask if user wishes to continue
|
||||
|
||||
while :
|
||||
do
|
||||
DtiClearScreen
|
||||
DtiShow "$HERALD_MSG"
|
||||
DtiPrint "$OBJECTIVE_MSG"
|
||||
DtiPrint "$YESNO_MSG"
|
||||
|
||||
read response
|
||||
Log "$RESPONSE_MSG"
|
||||
Log "$response"
|
||||
Log "\n"
|
||||
|
||||
case $response in
|
||||
[yY]*) return 0
|
||||
;;
|
||||
[nN]*) exit 0
|
||||
;;
|
||||
*) continue
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DoFilesetScript - Runs a unconfiguration script in the post_install dirs
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
DoFilesetScript()
|
||||
{
|
||||
FilesetName=$1
|
||||
|
||||
HASH
|
||||
HASH Check for the lowercase PLATFORM dir. If doesn't exist then
|
||||
HASH the tree is in uppercase.
|
||||
HASH
|
||||
if [ ! -f $TAR_TREE/dt.pkg ];
|
||||
then
|
||||
typeset -u ScriptName
|
||||
fi
|
||||
|
||||
|
||||
if [ "$BUILD_TREE" = "" ]
|
||||
then
|
||||
ScriptName=$3
|
||||
else
|
||||
ScriptName=$2
|
||||
fi
|
||||
|
||||
test_string=${DATABASE_FILES#*$FilesetName}
|
||||
if (( ${#DATABASE_FILES} > ${#test_string} ))
|
||||
then
|
||||
if [ -x $POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName ]
|
||||
then
|
||||
DtiPrint "\n\nExecuting $PLATFORM specific $FilesetName unconfigure script...\n"
|
||||
$POST_INSTALL_DIR/$PLATFORM_SCRIPT_DIR/$ScriptName -d 2>&1 | \
|
||||
tee -a $LOG_FILE
|
||||
elif [ -x $POST_INSTALL_DIR/$ScriptName ]
|
||||
then
|
||||
DtiPrint "\n\nExecuting $FilesetName unconfigure script...\n"
|
||||
$POST_INSTALL_DIR/$ScriptName -d 2>&1 | tee -a $LOG_FILE
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM RunUnconfigScripts - Runs relevant unconfiguration scripts, based on
|
||||
XCOMM fileset installed, calls DoFilesetScript
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
RunUnconfigScripts()
|
||||
{
|
||||
DtiPrint "\n\nRunning unconfigure scripts...\n"
|
||||
|
||||
DoFilesetScript CDE-TT configTT tt.cfg
|
||||
DoFilesetScript CDE-MIN configMin min.cfg
|
||||
DoFilesetScript CDE-RUN configRun run.cfg
|
||||
DoFilesetScript CDE-HELP configHelp help.cfg
|
||||
DoFilesetScript CDE-HELP-PRG configHelpPrg helpprg.cfg
|
||||
DoFilesetScript CDE-HELP-RUN configHelpRun helprun.cfg
|
||||
DoFilesetScript CDE-SHLIBS configShlibs shlibs.cfg
|
||||
DoFilesetScript CDE-AB configAb ab.cfg
|
||||
DoFilesetScript CDE-DEMOS configDemos demos.cfg
|
||||
DoFilesetScript CDE-ICONS configIcons icons.cfg
|
||||
DoFilesetScript CDE-INC configInc inc.cfg
|
||||
DoFilesetScript CDE-MAN configMan man.cfg
|
||||
DoFilesetScript CDE-MAN-DEV configManDev mandev.cvg
|
||||
DoFilesetScript CDE-MSG-CAT configMsgCat msgcat.cfg
|
||||
DoFilesetScript CDE-PRG configPrg prg.cfg
|
||||
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM ValidConfiguration - Checks to see if the desktop was installed or
|
||||
XCOMM partially installed on your system
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return - TRUE, if valid configuration
|
||||
XCOMM FALSE, for no desktop was found on the system
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
ValidConfiguration() {
|
||||
if (( [[ -a $ABSOLUTE_USR_LOCATION ]] || [[ -a $DEFAULT_USR_LOCATION ]] ) &&
|
||||
( [[ -a $ABSOLUTE_ETC_LOCATION ]] || [[ -a $DEFAULT_ETC_LOCATION ]] ) &&
|
||||
( [[ -a $ABSOLUTE_VAR_LOCATION ]] || [[ -a $DEFAULT_VAR_LOCATION ]] ))
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
else
|
||||
STATUS="FALSE"
|
||||
|
||||
for i in $ABSOLUTE_USR_LOCATION $ABSOLUTE_ETC_LOCATION \
|
||||
$ABSLOUTE_VAR_LOCATION $DEFAULT_USR_LOCATION \
|
||||
$DEFAULT_ETC_LOCATION $DEFAULT_VAR_LOCATION
|
||||
do
|
||||
if [ -a $i ]
|
||||
then
|
||||
STATUS="TRUE"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
DtiReturn "$STATUS"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DisplayDirs - Determines if directories should be presented
|
||||
XCOMM to the user to determin if they will be deleted or not.
|
||||
XCOMM
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return - TRUE, if some directories will be deleted
|
||||
XCOMM FALSE, if NO directories will be deleted
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
DisplayDirs() {
|
||||
if [[ -d $ABSOLUTE_USR_LOCATION ]] && [[ -a $ABSOLUTE_USR_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
elif [[ -d $ABSOLUTE_ETC_LOCATION ]] && [[ -a $ABSOLUTE_ETC_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
elif
|
||||
[[ -d $ABSOLUTE_VAR_LOCATION ]] && [[ -a $ABSOLUTE_VAR_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
else
|
||||
DtiReturn "FALSE"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM DisplayDirs - Determines if links should be presented
|
||||
XCOMM to the user to determine if they will be deleted or not.
|
||||
XCOMM
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM Return - TRUE, if some links will be deleted
|
||||
XCOMM FALSE, if NO links will be deleted
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
DisplayLinks() {
|
||||
if [[ -L $DEFAULT_USR_LOCATION ]] && [[ -a $DEFAULT_USR_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
elif [[ -L $DEFAULT_ETC_LOCATION ]] && [[ -a $DEFAULT_ETC_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
elif
|
||||
[[ -L $DEFAULT_VAR_LOCATION ]] && [[ -a $DEFAULT_VAR_LOCATION ]]
|
||||
then
|
||||
DtiReturn "TRUE"
|
||||
else
|
||||
DtiReturn "FALSE"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM ShowDirsToBeDeleted - Shows what dirs and links will be deleted to the user
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
|
||||
ShowDirsToBeDeleted() {
|
||||
|
||||
XCOMM Display information to the user, ask if user wishes to continue
|
||||
|
||||
while :
|
||||
do
|
||||
DtiClearScreen
|
||||
DtiShow "$HERALD_MSG"
|
||||
|
||||
if [ $(DisplayDirs) = "TRUE" ]
|
||||
then
|
||||
DtiPrint "$DELETE_DIRS_MSG"
|
||||
if [ -a $ABSOLUTE_USR_LOCATION ]
|
||||
then
|
||||
DtiPrint "$DIR_MSG" "$ABSOLUTE_USR_LOCATION"
|
||||
fi
|
||||
|
||||
if [ -a $ABSOLUTE_ETC_LOCATION ]
|
||||
then
|
||||
DtiPrint "$DIR_MSG" "$ABSOLUTE_ETC_LOCATION"
|
||||
fi
|
||||
|
||||
if [ -a $ABSOLUTE_VAR_LOCATION ]
|
||||
then
|
||||
DtiPrint "$DIR_MSG" "$ABSOLUTE_VAR_LOCATION"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $(DisplayLinks) = "TRUE" ]
|
||||
then
|
||||
DtiPrint "\n\n$DELETE_LINKS_MSG"
|
||||
if [ $(FileIsLink $DEFAULT_USR_LOCATION) = "TRUE" ]
|
||||
then
|
||||
DtiPrint "$LINK_DIR_MSG" "$DEFAULT_USR_LOCATION"
|
||||
fi
|
||||
|
||||
if [ $(FileIsLink $DEFAULT_ETC_LOCATION) = "TRUE" ]
|
||||
then
|
||||
DtiPrint "$LINK_DIR_MSG" "$DEFAULT_ETC_LOCATION"
|
||||
fi
|
||||
|
||||
if [ $(FileIsLink $DEFAULT_VAR_LOCATION) = "TRUE" ]
|
||||
then
|
||||
DtiPrint "$LINK_DIR_MSG" "$DEFAULT_VAR_LOCATION"
|
||||
fi
|
||||
fi
|
||||
|
||||
DtiPrint "\n\n$WARNING_MSG"
|
||||
DtiPrint "\n\n\n$YESNO_MSG"
|
||||
|
||||
read response
|
||||
Log "$RESPONSE_MSG"
|
||||
Log "$response"
|
||||
Log "\n"
|
||||
|
||||
case $response in
|
||||
[yY]*) return 0
|
||||
;;
|
||||
[nN]*) exit 0
|
||||
;;
|
||||
*) continue
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM StopDesktop - Stops the desktop if it was running
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
StopDesktop() {
|
||||
|
||||
if [ -f $ABSOLUTE_VAR_LOCATION/Xpid ]
|
||||
then
|
||||
DtiPrint "\n\nStopping Desktop... \n"
|
||||
kill -TERM `cat $ABSOLUTE_VAR_LOCATION/Xpid` 2> /dev/null
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM RemoveDesktop - Deletes Desktop files from the system
|
||||
XCOMM
|
||||
XCOMM Input - none
|
||||
XCOMM Output - none
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
RemoveDesktop () {
|
||||
|
||||
DtiPrint "Removing files from Desktop Directories...\n"
|
||||
rm -rf $ABSOLUTE_USR_LOCATION
|
||||
rm -rf $ABSOLUTE_ETC_LOCATION
|
||||
rm -rf $ABSOLUTE_VAR_LOCATION
|
||||
|
||||
rm -rf $DEFAULT_USR_LOCATION
|
||||
rm -rf $DEFAULT_ETC_LOCATION
|
||||
rm -rf $DEFAULT_VAR_LOCATION
|
||||
DtiPrint "The Desktop was successfully removed from your system.\n"
|
||||
|
||||
}
|
||||
|
||||
|
||||
XCOMM ==========================================================================
|
||||
XCOMM
|
||||
XCOMM
|
||||
XCOMM This is the MAIN of the script
|
||||
XCOMM
|
||||
XCOMM
|
||||
XCOMM ==========================================================================
|
||||
|
||||
XCOMM Set up Messages
|
||||
USAGE_MSG="\
|
||||
Usage: deinstall.dt [-noprompt]\n"
|
||||
|
||||
PERMISSION_MSG="\
|
||||
You must be ROOT to run this command\n"
|
||||
|
||||
RESPONSE_MSG="\n
|
||||
response is: "
|
||||
|
||||
HERALD_MSG="\
|
||||
The Common Open Systems Environment Desktop\n\
|
||||
April 1994 Snapshot Deinstallation Procedure\n\n"
|
||||
|
||||
OBJECTIVE_MSG="\
|
||||
This procedure will REMOVE the Desktop from your system.\n\n\n"
|
||||
|
||||
YESNO_MSG="\
|
||||
Do you wish to continue? [y/n] "
|
||||
|
||||
DELETE_DIRS_MSG="\
|
||||
The deinstallation will remove files from the following\n\
|
||||
directories listed below:\n\n"
|
||||
|
||||
DIR_MSG="\
|
||||
'%s'\n"
|
||||
|
||||
DELETE_LINKS_MSG="\
|
||||
The deinstallation will remove the following symbolic \n\
|
||||
link(s) listed below:\n\n"
|
||||
|
||||
LINK_DIR_MSG="\
|
||||
'%s'\n"
|
||||
|
||||
WARNING_MSG="\
|
||||
Any customizations made will be LOST!\n"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INVALID_OS_MSG="\
|
||||
The Desktop does not support this system configuration.\n\
|
||||
The deinstallation procedure will terminate.\n"
|
||||
|
||||
INVALID_CONFIGURATION_MSG="\
|
||||
The deinstallation procedure could not locate any Desktop files\n\
|
||||
on your system. The deinstallation will terminate. Please check\n\
|
||||
that you are running the deinstallation script on a system that\n\
|
||||
has the Desktop already installed.\n"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
XCOMM Set up variables
|
||||
NO_PROMPT="FALSE"
|
||||
|
||||
DEFAULT_USR_LOCATION="/usr/dt"
|
||||
DEFAULT_ETC_LOCATION="/etc/dt"
|
||||
DEFAULT_VAR_LOCATION="/var/dt"
|
||||
|
||||
ABSOLUTE_USR_LOCATION=$(ResolvePathName $DEFAULT_USR_LOCATION)
|
||||
ABSOLUTE_ETC_LOCATION=$(ResolvePathName $DEFAULT_ETC_LOCATION)
|
||||
ABSOLUTE_VAR_LOCATION=$(ResolvePathName $DEFAULT_VAR_LOCATION)
|
||||
|
||||
|
||||
XCOMM Set up the log file
|
||||
LOG_FILE="/tmp/dinstall.dt.log"
|
||||
if [ -f $LOG_FILE ]
|
||||
then
|
||||
rm -rf $LOG_FILE 2>/dev/null
|
||||
fi
|
||||
touch $LOG_FILE 2>/dev/null
|
||||
chmod 777 $LOG_FILE 2>/dev/null
|
||||
|
||||
|
||||
|
||||
|
||||
XCOMM change directories to deinstall.dt location as all
|
||||
XCOMM installation packages are relative to this
|
||||
XCOMM
|
||||
if [ ${0%/STAR} != "dinstall.dt" ]; then
|
||||
cd ${0%/STAR}
|
||||
fi
|
||||
|
||||
|
||||
XCOMM set up the TOP directory of where the CD is mounted
|
||||
TOP=`pwd`
|
||||
|
||||
|
||||
XCOMM set up the path for whoami command
|
||||
WHOAMI_PATH=/bin
|
||||
platform=$(GetPlatform)
|
||||
case "$platform" in
|
||||
hp) WHOAMI_PATH=/usr/bin
|
||||
;;
|
||||
ibm) WHOAMI_PATH=/bin
|
||||
;;
|
||||
sun) WHOAMI_PATH=/usr/ucb
|
||||
;;
|
||||
uxp) WHOAMI_PATH=/usr/ucb
|
||||
;;
|
||||
usl) WHOAMI_PATH=/usr/ucb
|
||||
;;
|
||||
dec) WHOAMI_PATH=/usr/bin
|
||||
;;
|
||||
esac
|
||||
|
||||
DTIDINSTALLDT=dinstall.dt
|
||||
DTICONFIGDIR=config
|
||||
dtiPlatform=$(GetPlatform)
|
||||
DTIPLATFORMDIR=$dtiPlatform
|
||||
DTIREADME=config/config.$dtiPlatform
|
||||
|
||||
if [ ${0##STAR/} != $DTIDINSTALLDT ]; then
|
||||
HASH
|
||||
HASH CDROM driver folds filenames to uppercase
|
||||
HASH
|
||||
typeset -u DTIDINSTALLDT
|
||||
typeset -u DTICONFIGDIR
|
||||
typeset -u DTIPLATFORMDIR
|
||||
typeset -u DTIREADME
|
||||
fi
|
||||
|
||||
|
||||
XCOMM Parse the command line
|
||||
while [ $# -ne 0 ];
|
||||
do
|
||||
case $1 in
|
||||
-noprompt) NO_PROMPT=TRUE
|
||||
print "NO_PROMPT is set"
|
||||
shift
|
||||
;;
|
||||
*) print "$USAGE_MSG"
|
||||
DtiPrint $USAGE
|
||||
exit 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
XCOMM Verify that we have the Root User
|
||||
if [ $(DtiWhoami) != "root" ]
|
||||
then
|
||||
DtiShow "$PERMISSION_MSG"
|
||||
Exit "$PERMISSION_MSG" 1
|
||||
fi
|
||||
|
||||
XCOMM Check to see if the Desktop is actually installed on the system
|
||||
if [ $(ValidConfiguration ) != "TRUE" ]
|
||||
then
|
||||
DtiPrint "$INVALID_CONFIGURATION_MSG"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
XCOMM Determine if the OS is supported
|
||||
PLATFORM=$(ValidOS)
|
||||
|
||||
XCOMM
|
||||
XCOMM Initially PLATFORM is in lower case.
|
||||
XCOMM Check if the $PLATFORM directory exists.
|
||||
XCOMM if doesn't exist translate all to upper case.
|
||||
XCOMM
|
||||
|
||||
if [ -d $PLATFORM ]
|
||||
then
|
||||
TAR_TREE=$TOP/$PLATFORM
|
||||
POST_INSTALL_DIR=$TAR_TREE/config
|
||||
DATABASE_FILES=$(awk 'BEGIN {FS=":"} /FILESETS: /{print $2}' $TAR_TREE/dt.pkg 2>/dev/null)
|
||||
else
|
||||
PLATFORM=`echo "$PLATFORM" | /usr/bin/tr "[a-z]" "[A-Z]"`
|
||||
TAR_TREE=$TOP/$PLATFORM
|
||||
POST_INSTALL_DIR=$TAR_TREE/CONFIG
|
||||
DATABASE_FILES=$(awk 'BEGIN {FS=":"} /FILESETS: /{print $2}' $TAR_TREE/DT.PKG 2>/dev/null)
|
||||
fi
|
||||
|
||||
|
||||
XCOMM Tell the user what is going to happen
|
||||
if [ $NO_PROMPT = FALSE ]
|
||||
then
|
||||
StateObjective
|
||||
fi
|
||||
|
||||
XCOMM Show the user what directories are going to be deleted
|
||||
if [ $NO_PROMPT = FALSE ]
|
||||
then
|
||||
ShowDirsToBeDeleted
|
||||
fi
|
||||
|
||||
|
||||
XCOMM Stop the Desktop
|
||||
StopDesktop
|
||||
|
||||
XCOMM Run the Unconfigure Scripts
|
||||
RunUnconfigScripts
|
||||
|
||||
XCOMM Remove the Desktop Files
|
||||
RemoveDesktop
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
91
cde/admin/IntegTools/ezinstall.hp
Executable file
91
cde/admin/IntegTools/ezinstall.hp
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/bin/ksh
|
||||
|
||||
echo ""
|
||||
echo "ezinstall.hp is a very plain, very vanilla, very simple installation"
|
||||
echo "script that installs the CDE Desktop and executes a set of config-"
|
||||
echo "uration scripts. It assumes that you have set aside ample space - "
|
||||
echo "about 46 Mb - for installation."
|
||||
echo ""
|
||||
echo "The Desktop is installed into the directory /usr/dt. This is the"
|
||||
echo "logical top of CDE. If you wish to change the physical location"
|
||||
echo "of the files, set up a symbolic link between /usr/dt and the actual"
|
||||
echo "location. E.g., if you wish to physically locate the CDE files in"
|
||||
echo "/bigdisk/opt, do a 'ln -s /bigdisk/opt /usr/dt' before executing the"
|
||||
echo "ezinstall.hp script."
|
||||
echo ""
|
||||
echo "Okay?"
|
||||
echo ""
|
||||
|
||||
read response
|
||||
|
||||
if [ `/usr/bin/whoami` != "root" ]
|
||||
then
|
||||
echo ""
|
||||
echo "You must be root to run this script"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "" -o "$2" = "" ]
|
||||
then
|
||||
echo "Usage: ezinstall <the compressed tar of dt> <the tar of the scripts>"
|
||||
echo " [ -clean ]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ztar=$1
|
||||
star=$2
|
||||
|
||||
#
|
||||
# have to install in /usr/dt
|
||||
#
|
||||
# clean it first
|
||||
#
|
||||
|
||||
if [ "$3" = "-clean" ]
|
||||
then
|
||||
rm -rf /usr/dt/*
|
||||
rm -rf /var/dt/*
|
||||
fi
|
||||
|
||||
if [ "$1" != "skip" ]
|
||||
then
|
||||
compress -d <$ztar | tar xvf -
|
||||
fi
|
||||
|
||||
#
|
||||
# place the scripts in /tmp/ez
|
||||
#
|
||||
|
||||
mkdir /tmp/ez
|
||||
echo "$PWD: copying $star to /tmp/ez"
|
||||
cp $star /tmp/ez
|
||||
|
||||
cd /tmp/ez
|
||||
tarfile=${star##*/}
|
||||
tar xvf $tarfile
|
||||
|
||||
#
|
||||
# execute each of the scripts
|
||||
#
|
||||
|
||||
for i in config* hp/config*
|
||||
do
|
||||
if [ -f $i ]
|
||||
then
|
||||
if [ ! -x $i ]
|
||||
then
|
||||
chmod 555 $i
|
||||
fi
|
||||
echo "executing $i script"
|
||||
./$i
|
||||
fi
|
||||
done
|
||||
|
||||
cd /tmp
|
||||
rm -rf /tmp/ez
|
||||
|
||||
echo ""
|
||||
echo "All done!"
|
||||
echo "type /usr/dt/bin/dtlogin to start CDE"
|
||||
echo ""
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user