QEF home page
The QEF Quick Reference Card

This page contains the quick reference card plus a link to ftp the PDF or PostScript form.


Technical Documentation, Overviews, Tutorials, and Papers
Software Engineering Definitions
QEF Architecture
A Comparison of QEF and Make
A Cook's Tour of the QEF System
An Introductory Guide to QEF
The QEF Quick Reference Card
The QEF Specialist's Reference Card
Short descriptions of all the QEF tools
QEF Papers, Talks, and Presentations

FTP the QEF Quick Reference Card: (PDF) (PostScript)

Sections of the QEF Reference Card

The QEF Quick Reference Card
	 
 User Setup
	+ Set $QTREE to Q-Tree directory tree to be used:
	    export QTREE=qtree-root (possibly `lclqtree`)
	+ Add $QTREE/bin to your $PATH
	    export PATH=$QTREE/bin:$PATH
	+ Define qd used to chdir using qds:
	    eval `qfunc qd` # add -c if using csh
	+ A useful function to edit a file from the source path:
	    eds() { $EDITOR $(sls $*) ; }
	+ To set up ~/.qtree directory:
	    dirsetup -d $HOME dotqtree
	+ To set up ~/.qtree directory with alternative name:
	    dirsetup -d $HOME -m .qtree=name dotqtree
	    export HOME_QTREE=$HOME/name
	 
 Documentation
	+ Manual pages are in $QTREE/man
	+ qefgui can be used to view man pages and x_db databases
	+ Every Q-Tree program has an -x flag that outputs synopsis,
	  one line description, summary of flags and options.
	+ quete or xdbs can be used to list or query x_db databases
	  xdbs will list available x-* databases
	+ qef.gts.org contains The Guide and other documentation
	 
 Documentation Conventions
	+ topic(x-dbnm) refers to entry called topic in the x_db
	  database dbnm.  To access this topic use: x-dbnm topic
	+ @Variable refers to a qvrs variable.  For documentation on
	  such a variable use: x-qvrs Variable
	 
 Navigating the Forest
	Fields of a qdsrv path records:
	  Index Project Revision TreeType User Host Config Pathdirs ...
	qds selection flags (i.e., a path-spec):
	  -p project *; -r revision *; -t treetype **;
	  -u user *; -h host *; -c config
	  -num -- explicit path number
	  * use `.' for current value; automatically applied, if
	    necessary, unless the -a flag is specified.
	  ** -o == -tobject, -b == -tbaseline, -w == -tworking
	qds -b -pproj  # Find the baseline for project proj
	qds -u. -a  # Find all your paths
	qds -R  # Find the path of the current tree
	qdid -s123  # Bind user's qdid to a specific path (e.g., 123)
	qdid -s  # Bind user's qdid to the current tree
	qd -i  # chdir to current path bound to user's qdid identifier
	qd -I path-spec  # chdir to selected path and
	    simultaneously bind user's qdid to it
	qd -n  # chdir to next (i.e., parent) tree in current @RootPath
	qd path-spec subdir  # chdir to subdir of selected path;
	    use /subdir to choose directory relative to root
	qdmgt list -P  # list current projects in the database
	qdmgt -X  # list messages supported by qdsrv
	qdchk  # check user's paths on current host
	qhost host # check access to host and retrieve qtree and home
	 
 Setting Up Working and Object Trees
	qd -pproject -b  # chdir to project's baseline tree
	mkqtree -w working-dir [sub-dirs ...]  # create working
	    tree; use argument `.' to suppress creation of sub-dirs
	qd -pathnum  # chdir to new working tree
	mkqtree -o object-directory  # create an object tree
	treedirs [sub-dirs ...]  # create a tree's sub-directories --
	    defaults to all sub-trees.  If in object tree, defaults
	    to those sub-trees in the working directory.
	 
 Examining Your Current Configuration
	qvrs  # list current qvrs variables
	qvrs -f  # list current qvrs files
	qvrs -Pr  # output root.vrs
	qvrs -Pc  # output conf.vrs
	confvrs  # output settings by conf.vrs
	confvrs -d  # compare conf.vrs to default
	qvrs @Variable ...  # retrieve value of a qvrs variable
	qvrs -W Var ...  # list where qvrs variables set
	qvrs -l  # list library mapping controls
	qvrs -XI  # list cc -I flags
	qvrs -VD  # output value of @_DestDir_
	qvrs -V?  # output list of -V and -X short-cuts
	 
 Configuring Tree's root.vrs & conf.vrs
	rootvrs -d dir  # set _DestDir_
	rootvrs -A dir  # set RootAlias
	rootvrs -c conf  # set ConfigName
	rootvrs -B host  # set BuildHost -- use . for current host
	rootvrs -h sys  # name type of build system
	rootvrs -H  # equivalent to -h `system`
	rootvrs -u  # update current root.vrs from parent's root.vrs
	Note: Can use +Variable=value to set variable
	Note: Some settings may result in creation of new qdsrv path.
	      Use `qdmgt delete -number' to delete obsolete entry.
	qconfset -v V=Val  # add/change variable to conf.vrs
	qconfset -o Opt  # turn on option Opt
	qconfset -n Opt  # turn off option Opt
	 
 Reduced Qef -x
	qef [-x2cFkMntvX] [-A...] [-d dir] [-[DUGL]...] [-P process] [-f file]
		[-T {012}] [-m <num>] [args ...]
	-x		display this explanation
	-c		suppress the @ForbidQef check -- use at own risk
	-t		suppress the time check -- use at own risk
	-n		suppress execution by backend
	-F		force execution by backend
	-v		report all subcommands
	-D mac=value	set macro to value -- see qefdirs
	-L var=value	define qvrs value (e.g., -LDEBUGGING)
	-P process	apply special process -- see below
	-d dir		chdir to dir
	-m <num>	set maximum parallel processes to <num>
	args ...	arguments to backend -- assigned to @QefArgs
			defaults to @_DefaultArgs_
	 
 Commonly Used -P Processes
	halt		halt qefs started from directory (chmod -w %qef*.hlt)
	ppscript	output macro processed script
	script		output script but don't process it
	targets		list target descriptions for directory
	treewalk	walk tree, but do nothing
	inclswalk	walk tree refresning running incls
	 
 Detaching Long Running Processes, etc.
	go cmmd  # detaches command -- merged outputs to ,.g
	go -d cmmd  # detaches command -- merged output to
	    ~/.qtree/goes/<host>/<pid><key>,g
	g  # view newest go file -- add -d to see go -d output
	g -o  # view second newest go file
	g -num  # view numth newest go file
	g -O  # view oldest go file
	g -l  # list go files
	g -h  # output head of selected go file
	g -t  # output tail of selected go file
	g -q  # show current qefs for all gofiles
	g -Q  # show qef termination lines for all gofiles
	g -f  # tail -f ,.g
	g -R  # remove go file and show next
	goes  # show go audit trail for current host
	goes -hhost  # show go audit trail for specified host
	goes -h  # show audit trails for all hosts
	goes -p  # purge completed jobs from current host go audit
	gomonitor  # monitors go messages
	 
 Running a Remote Command
	qremote cmmd  # run command on appropriate @BuildHost
	qremote -<num> cmmd  # run command in path number <num>
	qremote -g ...  # go -d the command on the selected host
	qremote -v ...  # verbosely report the full command
	qremote -Sservice ...  # run on one @_Servers_[service] hosts
	 
 Sls, Libs, Incls, Qhy, Qsg, Qefdirs ...
	sls  # list the files in the source path
	sls -c  # do it in columns
	sls fname  # find and list 1st file called fname in path
	sls -a fname  # find and list all files called fname in path
	sls -S suffix  # find all *.suffix files in source path
	sls -g t_\*  # find files that match t_* in path
	sls -n fname  # find and list file fname but not in cwd
	libs file  # list libraries for `sls file`
	libs -a file  # list libraries -- all forms
	incls file  # list includes for `sls file`
	qhy module  # output why and how module was last built
	qhy -r module  # qhy for module and each of its prereqs
	qsg -M  # most common script generator -- qsg the qeffile
	    using srclist._ as arguments -- usually generated by sls -Ls
	qsg -c command ...  # run qsg command
	qsgdump -S hanoi  # view source for qsg hanoi script
	x-qsg -L \*scripts  # list qsg scripts
	qefdirs -L  # show levels for current directory
	    -- use qef -DIto=4 to suppress Installs up to level 4
	    -- use qef -DDoto=8 to suppress builds after level 8
	qefdirs -ldir  # show dir's level
	cush -d dir -E eset -sVar=Val cmmd ...  # run cmmd
	    in directory dir, using envset set eset,
	    setting environment variable $Var to Val
	 
 Special @ Sequences in Qvrs
	@@		A literal @
	@<newline>	Replaced by a space -- used to split up long lines
	@.		Null -- used to terminate variable name
	@#		A literal #
	@NotSet		Replaced by @NotSet
	@var *		Replaced by value of variable var
	@var[index] *	index evaluated before lookup done
	@(func ...) *	Call to function func -- see functions(x-qvrs)
	@char		Replaced by char
	* may be followed by ~ operators -- see tildeops(x-qsg)
	 
	See also: syntax(x-qvrs) expansion(x-qvrs) keywords(x-qvrs)
	 
 Special @ Sequences in Qsg
	@<newline>	Replaced by space -- used to split up long lines
	@<space>	A literal space
	@<tab>		A literal tab
	@@		A literal @
	@#...		Ignore balance of the line or function arguments
	@var *		A value of variable var
	@(name ...) *	Call to function name
	@[Var List ...] *  Value of List assigned to Var
	@[/List ...]	Global variable named by first element set to
			balance of list and list returned
	@{Var} *	Replaced by qvrs variable Var
	@<script ...> *	Invokes named script
	* may be followed by ~ operators -- see tildeops(x-qsg)
	 
	See also: qsg-input(x-qsg) qsg-syntax(x-qsg) functions(x-qsg) faq2 faq3
	 
	For qefdirs syntax see: qefdirs-input(x-qefdirs)
	 

See also: The Specialist's Reference Card and Short Descriptions of the QEF Tools

Technical Documentation, Overviews, Tutorials, and Papers Software Engineering Definitions QEF Architecture A Comparison of QEF and Make A Cook's Tour of the QEF System An Introductory Guide to QEF The QEF Quick Reference Card
The QEF Specialist's Reference Card Short descriptions of all the QEF tools QEF Papers, Talks, and Presentations
quickref.qh - 1.18 - 05/09/23 QEF home page