In this section we build the rest of the project and introduce qefdirs, the multi-directory manager. |
|
|
Before we leave this directory, let's build and install the balance.
|
% qef Install Man #{ Install Man @gobo 2003/07/20 02:22:32 # QEFHALTFILE: /g/dt/cook/obj/ctoe/%qef31186b.hlt + cc -c -I. -I/g/dt/cook/work/ctoe -I/p/cook/s3.4/ctoe \ -I/p/qtree/9.1/linux2_0i/include \ /p/cook/s3.4/ctoe/ctoe.c + qyacc -h -yctoe /p/cook/s3.4/ctoe/ctoey.y + qlex -yctoe /p/cook/s3.4/ctoe/ctoel.l yacc: 6 shift/reduce conflicts. + instal -d /g/dt/cook/dest/man/man1/ctoe.1 /p/cook/s3.4/ctoe/ctoe.1 + instal -d /g/dt/cook/dest/man/man1/etoc.1 /p/cook/s3.4/ctoe/etoc.1 + cc -c -I. -I/g/dt/cook/work/ctoe -I/p/cook/s3.4/ctoe \ -I/p/qtree/9.1/linux2_0i/include ctoey.c + cc -c -I. -I/g/dt/cook/work/ctoe -I/p/cook/s3.4/ctoe \ -I/p/qtree/9.1/linux2_0i/include ctoel.c + cc -o ctoe ctoe.o ctoey.o ctoel.o \ -L/p/qtree/9.1/linux2_0i/lib -ldt \ /p/qtree/9.1/linux2_0i/lib/libl.a + instal -E -d /g/dt/cook/dest/bin/ctoe ctoe + instal -E -d /g/dt/cook/dest/bin/etoc etoc #} E0 gobo@/g/dt/cook/obj/ctoe 2003/07/20 02:22:42(10) The Instal Log |
|
One of the features of the instal (used for most installations) is the audit trail named by the qvrs variable InstLog. This variable is usually set in the project's top level tree.vrs file using the following: cset InstLog @RootDir/instal.logTo examine the @InstLog file: % qvrs @InstLog # retrieve value of InstLog /g/dt/cook/obj/instal.log % tail `!!` # tail the instal log # /*^ cleanilog -puv ^F dest/man/man1/ctoe.1 dt 20030720 02:22 ctoe:src/ctoe/ctoe.1 dest/man/man1/etoc.1 dt 20030720 02:22 ctoe:src/ctoe/etoc.1 dest/bin/ctoe dt 20030720 02:22 ctoe:ctoe dest/bin/etoc dt 20030720 02:22 ctoe:etoc The com line (/*^ cleanilog) is the command to clean up the log (e.g., remove duplicate entries and references to non-existent files). This line was added manually. The fields of the instal record are:
Why is instal misspelled? |
|
% x-qmisc faq8 faq8(x-qmisc) Why is Q-Tree's instal program misspelled? Because so many versions of install are mis-implemented. The second `l' is elided to ensure that the Q-Tree instal is used as versus implementations of install that often vary greatly and are never as paranoid as instal. One of the primary objectives of the qef package is consistent behaviour across all platforms. This often means that the system must provide its own utilities, rather than risk wide variations in semantics and interfaces. Note: On one university system the author found over two dozen variations of install, with a wide range of semantics and syntaxes. Note instal will not install an empty file unless the -e flag is specified because that same university's file system so often quietly created empty files. instal has a variety of flags to control the installation of a file. The qvrs variable _F_instal is used to specify universal flags, whereas _F_instal[file] is used to specify the flags for file. The _F_instal flag is usually set in the default and prototype file to: cset _F_instal -qIsThe q quiets instal, that is suppresses the default reporting of sub-commands. The s specifies that installed programs are to be stripped. instal -I and the instal.fix file |
| Some flags, such as o user, g group, or M mode can fail due to permissions. The I flag specifies that instal is not to fail (i.e., exit with a non-zero status) in the event of such a failure. In such instances a record is added to a file whose name is determined by changing the '.log' of InstLog to '.fix'. The records are in the form read by tchown, as illustrated by the following example lines: 102755 ^ mail /p/qtree/9.1/linux2_0i/bin/mvmail 104755 root ^ /p/qtree/9.1/linux2_0i/bin/sc This features allows one to install software as a user other than root (which we believe is a good thing) and then make the ownership, group, and mode changes as required by a user with appropriate permission after validation that the settings are kosher. |
cook21.qh - 1.17 - 03/10/24 |