This section does the complete project build, demonstrates the relinfo and fsic package. |
|
|
First we need to chdir to the root of the object tree
and make the missing directories.
|
% qd -o / ; pwd /g/dt/cook/obj % treedirs -a + mkdir QefAdm/fsic + mkdir QefAdm/relinfo + mkdir QefAdm/touchdir % cats qeffile set _DefaultArgs_ All Begin qefdirs P = Post # add Post construction key P # qefdirs already provides I==Install, L==Local, M==Man All = Install Man Post appl ILm ctoe ILm + QefAdm/relinfo P QefAdm/fsic P Doing the Whole Build |
|
Note the setting of _DefaultArgs_ to All which is bound within the qefdirs script to Install, Man, and Post and note the addition of a new key P for Post. Let's build what's left to build given we have done level 1 Installs: % qef -DIto=1 # All is the default #{ -DIto=1 @gobo 2003/07/20 07:35:37 # QEFHALTFILE: /g/dt/cook/obj/%qef01121b.hlt #-{ -d appl Man @gobo 2003/07/20 07:35:37 #--{ -d man Man @gobo 2003/07/20 07:35:37 #--} E0 gobo@/g/dt/cook/obj/appl/man 2003/07/20 07:35:37(0) #-} E0 gobo@/g/dt/cook/obj/appl 2003/07/20 07:35:37(0) #-{ -d ctoe Man @gobo 2003/07/20 07:35:37 #-} E0 gobo@/g/dt/cook/obj/ctoe 2003/07/20 07:35:37(0) Produce the relinfo file |
|
#-{ -d QefAdm/relinfo Post @gobo 2003/07/20 07:35:37 + mkvernum -o relinfo -0Cook -1"" -u/p/qtree/9.1/linux2_0i/relinfo -l relinfo.vf release + cush -o+ relinfo echo "Qvrs settings:" + cush -o+ relinfo qvrs -Rn + instal -S /g/dt/cook/dest/relinfo relinfo #-} E0 gobo@/g/dt/cook/obj/QefAdm/relinfo 2003/07/20 07:35:37(0) Run FSIC |
|
#-{ -d QefAdm/fsic Post @gobo 2003/07/20 07:35:37 + cush -o. ,inst.rls -d /g/dt/cook/dest rls -sN/ + cush -o. ,objs.rls -d .. rls -sN/ + bfsic -I ,inst.rls -O ,objs.rls > ,p.errors + rm ,inst.rls ,objs.rls + transl '/g/dt/cook/dest/\0' ,i.tmps | sort -o ,i.tmps + rep -Z '/<_|[!$_][on]>\#' ,i.tmps | linked -nf | rmlist -f + fexists -l ,i.tmps | sort -o ,i.tmps + fexists -e ,[iop].* | rmlist -q + untouch -c ,o.tmps + (cd ..; ls QefAdm/fsic/,*) | sort -u -o ,o.tmps - ,o.tmps + fixflist -aq -r -d.. -s'..' ../QefAdm/fsic/,o.tmps + lls -o .FL ,[iop].* | rtabs -T 8l16l6R ,o.tmps 6 ,p.errors 2 #-} E0 gobo@/g/dt/cook/obj/QefAdm/fsic 2003/07/20 07:35:38(1) #} E0 gobo@/g/dt/cook/obj 2003/07/20 07:35:38(1) Given that the manual sections have also been processed, all that needs to be done is the creation and installation of the relinfo file and the file system integrity check (i.e., FSIC). The relinfo file |
|
% cats QefAdm/relinfo/qeffile Begin qsg relinfo -Q -u @<qtree relinfo> @# create relinfo % sed 10q QefAdm/relinfo/relinfo Cook 3.4(16) - Linux-2.0.34-i686 - 2003/07/20 07:35:37 EDT dt on gobo in /g/dt/cook/obj Using: Qtree(full) 9.1(57) - Linux-2.0.34-i686 - 2003/07/19 07:00:44 EDT Qvrs settings: AsSuffix s BeginLine qefdirs Branch . BuildHost gobo BuildPath /p/qtree/9.1/linux2_0i/bin /bin /usr/bin The relinfo file is installed in the destination so that the product is clearly identified as to its builder, build host, build location, and the set of qvrs settings. The File System Integrity Check (FSIC) |
| The fsic package is an important facility that should be used to check the integrity of your object and installed (a.k.a. _DestDir_ or product) trees. The list of files in these file systems is compared against a model of what they should be expressed by files in the source tree. The database makes provisions for configuration dependent exceptions and optional or normal deviations from the model (e.g., man/cat1/*.1). The run above reported 6 temporary files and 2 errors. # remove non-existent files from list % fixflist -ra QefAdm/fsic/,o.tmps % cat QefAdm/fsic/,o.tmps ,.g # go diagnostic output QefAdm/fsic/,o.tmps QefAdm/fsic/,p.errors % cat QefAdm/fsic/,p.errors man/man1/ctoe.1 # i05 new inst file (type=F) man/man1/etoc.1 # i05 new inst file (type=F) % x-qfsic i05 # x-qfsic explains messages and solutions [io]05 : new <inst|objs> file Example messages: dir/file # i05 new inst file (type=F) dir/file # o05 new objs file (type=f) Explanation: dir/file exists in the inst (objs) tree, but is not named in inst.fl (objs.fl), and is not typed E (e) or I (i) in except/<sysnm>.fl. To Fix: # rest of item suppressed Given the errors listed, let us fix the problems and rerun the fsic package: % g -R # remove the go file - rm ,.g g: No following ,g file % bfsic -AL man/man1/ctoe.1 man/man1/etoc.1 # update database % qef -d QefAdm/fsic # rerun fsic package #{ -d QefAdm/fsic @gobo 2003/07/20 08:03:10 # suppressed commands as shown above + lls -o .FL ,[iop].* | rtabs -T 8l16l6R ,o.tmps 2 #} E0 gobo@/g/dt/cook/obj/QefAdm/fsic 2003/07/20 08:03:10(0) ,o.tmps will usually contain itself and a qef._ temporary so 2 files is okay. The fsic package also has facilities to check the integrity of a source file system. Let's look at the fsic qeffile. % cats QefAdm/fsic/qeffile # lets look at that qeffile if @(match /@TreeType /source /baseline) set PermitQef allowed in source directory fi if (@(match /@VCSys /sccs) && !@(exists SCCS)) @ || (@(match /@VCSys /rcs) && !@(exists RCS)) set NoSfiles 1 fi Begin qsg fsic @{QefArgs} The PermitQef setting is to override the prohibition of running qef in a baseline directory or on the wrong machine, as will be demonstrated on the next page. For example, if we were on MOKEY (a WindowsNt machine) and tried to do a build: % qd -46 /ctoe Using 46 cook 3.4 object dt gobo linux2_0i /g/dt/cook/obj ... Warning: mapping /g/dt/cook/obj to //J/dt/cook/obj % qef etoc #{ @MOKEY 2003/07/20 08:44:31 # QEFHALTFILE: //J/dt/cook/obj/ctoe/%qefqbzaaa.hlt qef: Running qef to build target `Linux-2.0.34-i686' on system `Windows_NT-4.0-pentium' prohibited #} E-1 MOKEY@//J/dt/cook/obj/ctoe 2003/07/20 08:44:32(1) There is a mechanism to permit some cross platform builds, but we'll leave that to another day. |
cook24.qh - 1.15 - 03/10/23 |