# $Id: Makefile.host,v 2.11 2012/10/08 18:38:23 ksb Exp $ # We depend on ${HOME} falling into the current environment, which old-school # make did not so. --ksb # $Targets: grep -A1 "^#-" %f | sed -e "/^--/d" -e "s/: .*//" |${PAGER:-less} SOURCE=Makefile README TODO ITO.spec 1d home.html update.m4 # The 3 pad targets pun this recipe to be m4 capable and still work w/o it. pad1: : changequote([,]) : [ O=` Q=' pad2: : ] : changequote(`,') : \` # The system needs # op: the pamdevel installed, root privs to install # installus: root privs to install # sudop: needs op installed as root TRACE= #TRACE=set -x; MPS=msrc.sac.fedex.com CFG=dmz.cf MSRCMUX=msrcmux MENV=DESTDIR=${HOME} TF=/tmp/juggle1 all: ${HOME}/lib/perl5 install_base .PHONY: ad-hoc-list clean-src clean-all hosttype msrc_base install_base entomb_base charon clean-src: FRC rm -rf ${HOME}/usr/src clean-all: clean-src rm -rf ${HOME}/lib/perl5 ${HOME}/usr/local # Build the leaves ${HOME}/lib ${HOME}/bin: mkdir -p $@ ${HOME}/bin/cc: -[ -x /usr/sfw/bin/gcc ] && ln -s /usr/sfw/bin/gcc $@ -[ -x /usr/local/bin/gcc ] && ln -s /usr/local/bin/gcc $@ -ln -s ${O}which gcc || which cc${O} $@ ${HOME}/bin/id: PATH=/usr/xpg4/bin:$$PATH ln -s ${O}which id${O} $@ ${HOME}/bin/gcc: PATH=/usr/sfw/bin:$$PATH:/usr/local/bin ln -s ${O}which gcc${O} $@ ${HOME}/bin/install: PATH=/usr/ucb:$$PATH ln -s ${O}which install${O} $@ ${HOME}/bin/rsync: PATH=/opt/fedex/sac/peg-1.1/bin:$$PATH ln -s ${O}which rsync${O} $@ ${HOME}/bin/gzcat: ln -s ${O}which gzcat || which zcat${O} $@ # We really need perl headers ${HOME}/lib/perl5: ${TRACE}mkdir -p $@ && \ cd /usr/include && \ h2ph -d $@ -r -l . # Set below to --port=3002 to honor a port forward for ssh like: # -R 3002:$local_MPS:873 -R 3001:$local_MPS:1 RSYNC_PORT_OPT= #RSYNC_PORT_OPT=--port=3002 ${HOME}/bin/muxcat: perl -e "require ${Q}sysexits.ph${Q};" || make -e ${HOME}/lib/perl5 ${TRACE}rsync ${RSYNC_PORT_OPT} ${MPS}::msrc/local/bin/muxcat/muxcat.pl $@ && \ perl -w $@ -V && \ chmod +x $@ && \ echo ${Q}in .profile add: export PERL5LIB=$$HOME/lib/perl5${Q} && \ echo ${Q}in .profile add: export PATH=$$HOME/usr/local/bin:$$HOME/usr/local/sbin:$$PATH${Q} && \ echo ${Q}source in your .profile, then "make -e install_base"${Q} # No longer needed by the boot sequence. The recursion with the SILENT # variable works great. ${HOME}/bin/1d: ${HOME}/bin/muxcat s2p -e 1d >$@ chmod +x $@ # (ZZZ) Replace with m4 markup up to rsync. #- The first thing you want to build here. hosttype: ${HOME}/bin ${HOME}/bin/cc ${HOME}/bin/gcc ${HOME}/bin/id ${HOME}/bin/install \ ${HOME}/bin/rsync ${HOME}/bin/muxcat case ${O}uname -o 2>/dev/null || uname -s${O} in *Linux*|*LINUX*) make ${HOME}/bin/gzcat ;; esac # Source directory and binary directory builds ${HOME}/usr/src/local/bin ${HOME}/usr/src/local/sbin \ ${HOME}/usr/src/local/lib ${HOME}/usr/src/local/libexec \ ${HOME}/usr/local/bin ${HOME}/usr/local/sbin \ ${HOME}/usr/local/lib ${HOME}/usr/local/libexec \ ${HOME}/usr/src/opt/ksb: mkdir -p $@ ${HOME}/usr/local/man/man1 ${HOME}/usr/local/man/man2 \ ${HOME}/usr/local/man/man3 ${HOME}/usr/local/man/man4 \ ${HOME}/usr/local/man/man5 ${HOME}/usr/local/man/man6 \ ${HOME}/usr/local/man/man7 ${HOME}/usr/local/man/man8 \ ${HOME}/usr/local/man/man9: mkdir -p $@ man-dirs: ${HOME}/usr/local/man/man1 ${HOME}/usr/local/man/man2 \ ${HOME}/usr/local/man/man3 ${HOME}/usr/local/man/man4 \ ${HOME}/usr/local/man/man5 ${HOME}/usr/local/man/man6 \ ${HOME}/usr/local/man/man7 ${HOME}/usr/local/man/man8 \ ${HOME}/usr/local/man/man9 man-all: man-dirs find usr/src/ -name \*.man -print | \ xapply -fi /dev/tty ${Q}mk -DDESTDIR="$$(pwd)" -mInstall${Q} - ${HOME}/usr/local/sbin/mmsrc: ${HOME}/bin/muxcat make -e ${HOME}/usr/src/local/sbin ${HOME}/usr/local/sbin ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p mmsrc && cd mmsrc && \ muxcat ${MPS} ${MSRCMUX} local/sbin/mmsrc ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} DEBUG=-D${Q}DEF_HXMD_LIB=\".:${HOME}/usr/local/lib/hxmd:${HOME}/usr/local/lib/distrib\"${Q}\ -D${Q}DEF_MSRC_LIB=\"${HOME}/usr/local/lib/msrc:${HOME}/usr/local/lib/hxmd\"${Q} mmsrc boot && \ [ -x $@ ] ${HOME}/usr/local/lib/mkcmd: make -e ${HOME}/usr/src/local/lib ${HOME}/usr/local/lib ${TRACE}cd ${HOME}/usr/src/local/lib && \ mkdir -p mkcmd && cd mkcmd && \ muxcat ${MPS} ${MSRCMUX} local/lib/mkcmd ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} boot && \ [ -d $@ ] ${HOME}/usr/local/bin/mkcmd: ${HOME}/usr/local/sbin/mmsrc make -e ${HOME}/usr/src/local/bin ${HOME}/usr/local/bin -[ -d ${HOME}/usr/local/lib/mkcmd ] || make -e ${HOME}/usr/local/lib/mkcmd ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p mkcmd && cd mkcmd && \ muxcat ${MPS} ${MSRCMUX} local/bin/mkcmd ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} DEBUG=-D${Q}DEFDIR=\"${HOME}/usr/local/lib/mkcmd:${HOME}/usr/local/share/mkcmd:${HOME}/usr/local/lib/mkcmd/type:${HOME}/usr/local/share/mkcmd/type\"${Q} mkcmd boot [ -x $@ ] ${HOME}/usr/local/lib/explode: make -e ${HOME}/usr/src/local/lib ${HOME}/usr/local/lib ${TRACE}cd ${HOME}/usr/src/local/lib && \ mkdir -p explode && cd explode && \ muxcat ${MPS} ${MSRCMUX} local/lib/explode ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} boot && \ [ -d $@ ] ${HOME}/usr/local/bin/explode: ${HOME}/usr/local/bin/mkcmd -[ -d ${HOME}/usr/local/lib/explode ] || make -e ${HOME}/usr/local/lib/explode ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p explode && cd explode && \ muxcat ${MPS} ${MSRCMUX} local/bin/explode ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} DEBUG=-D${Q}DEFINCL=\"${HOME}/usr/local/lib/explode:${HOME}/usr/share/lib/explode:~/lib/explode\"${Q} explode boot [ -x $@ ] ${HOME}/usr/local/bin/ptbw: ${HOME}/usr/local/bin/explode ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p ptbw && cd ptbw && \ muxcat ${MPS} ${MSRCMUX} local/bin/ptbw ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean ptbw boot && \ [ -x $@ ] ${HOME}/usr/local/bin/xclate: ${HOME}/usr/local/bin/explode ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p xclate && cd xclate && \ muxcat ${MPS} ${MSRCMUX} local/bin/xclate ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} boot && \ [ -x $@ ] ${HOME}/usr/local/bin/xapply: ${HOME}/usr/local/bin/xclate ${HOME}/usr/local/bin/ptbw ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p xapply && cd xapply && \ muxcat ${MPS} ${MSRCMUX} local/bin/xapply ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} boot && \ [ -x $@ ] ${HOME}/usr/local/bin/wrapw: ${HOME}/usr/local/bin/xapply ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p wrapw && cd wrapw && \ muxcat ${MPS} ${MSRCMUX} local/bin/wrapw ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} boot && \ [ -x $@ ] ${HOME}/usr/local/sbin/hxmd: ${HOME}/usr/local/bin/wrapw ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p hxmd && cd hxmd && \ muxcat ${MPS} ${MSRCMUX} local/sbin/hxmd ${CFG} >${TF} && \ tar xf ${TF} && \ chmod +w hostdb.m && \ make -e ${MENV} clean && make -e ${MENV} DEBUG=-D${Q}DEF_HXMD_LIB=\".:${HOME}/usr/local/lib/hxmd:${HOME}/usr/local/lib/distrib\"${Q} hxmd boot [ -x $@ ] ${HOME}/usr/local/lib/hxmd: make -e ${HOME}/usr/local/lib ${HOME}/usr/src/local/lib ${TRACE}cd ${HOME}/usr/src/local/lib && \ mkdir -p hxmd && cd hxmd && \ muxcat ${MPS} ${MSRCMUX} local/lib/hxmd ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} boot && \ [ -d $@ ] ${HOME}/usr/local/sbin/msrc: ${HOME}/usr/local/lib/hxmd ${HOME}/usr/local/sbin/hxmd ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p msrc && cd msrc && \ muxcat ${MPS} ${MSRCMUX} local/sbin/msrc ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} DEBUG=-D${Q}MSRC_LIB=\"${HOME}/usr/local/lib/msrc:${HOME}/usr/local/lib/hxmd\"${Q} boot && \ [ -x $@ ] # We do not generally build this one ${HOME}/usr/local/lib/msrc: mkdir $@ #- The msrc_base level3 package msrc_base: ${HOME}/usr/local/sbin/msrc # ${HOME}/usr/local/lib/msrc make -e ${HOME}/usr/local/libexec ${HOME}/usr/src/local/libexec make -e man-dirs echo ${Q}next "make -e install_base"${Q} # Make install.cf if we need install to void install.d touching an empty one. ${HOME}/usr/local/bin/install: ${HOME}/usr/local/sbin/msrc ${TRACE}cd ${HOME}/usr/src/local/lib && \ mkdir -p install.cf && cd install.cf && \ muxcat ${MPS} ${MSRCMUX} local/lib/install.cf ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} boot && \ [ -r ${HOME}/usr/local/lib/install.cf ] ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p install.d && cd install.d && \ muxcat ${MPS} ${MSRCMUX} local/bin/install.d ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -x $@ ] ${HOME}/usr/local/sbin/purge: ${HOME}/usr/local/bin/install ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p purge && cd purge && \ muxcat ${MPS} ${MSRCMUX} local/sbin/purge ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -x $@ ] ${HOME}/usr/local/sbin/instck: ${HOME}/usr/local/sbin/purge ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p instck && cd instck && \ muxcat ${MPS} ${MSRCMUX} local/sbin/instck ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -x $@ ] ${HOME}/usr/local/bin/vinst: ${HOME}/usr/local/sbin/instck ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p vinst && cd vinst && \ muxcat ${MPS} ${MSRCMUX} local/bin/vinst ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -x $@ ] ${HOME}/usr/local/lib/mk: ${TRACE}cd ${HOME}/usr/src/local/lib && \ mkdir -p mk && cd mk && \ muxcat ${MPS} ${MSRCMUX} local/lib/mk ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -d $@ ] ${HOME}/usr/local/bin/mk: ${HOME}/usr/local/bin/install -[ -d ${HOME}/usr/local/lib/mk ] || make -e ${HOME}/usr/local/lib/mk ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p mk && cd mk && \ muxcat ${MPS} ${MSRCMUX} local/bin/mk ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} DEBUG=-D${Q}AUXDIR=\"${HOME}/usr/local/lib/mk\"${Q} install && \ [ -x $@ ] # Nothing depends on installus, except my local site policy # We make the dir +r to allow the manual page to install ${HOME}/usr/local/sbin/installus: ${HOME}/usr/local/bin/mk ${HOME}/usr/local/bin/vinst ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p installus && cd installus && \ muxcat ${MPS} ${MSRCMUX} local/sbin/installus ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -x $@ ] chmod 755 . chmod 755 ${HOME}/usr/src/local/sbin/installus ${HOME}/usr/local/lib/op: ${HOME}/usr/local/lib install -drv -mrws--x--x $@ # If you have local op rules, pull them now, you should run this # as root when op is setuid root (of course) ${HOME}/usr/local/lib/op/class.cf: ${HOME}/usr/local/lib/op ${TRACE}cd ${HOME}/usr/src/local/lib && \ mkdir -p op && cd op && \ muxcat ${MPS} ${MSRCMUX} local/lib/op ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} LIB=${HOME}/usr/local/lib RUN_LIB=${HOME}/usr/local/lib BIN=${HOME}/usr/local/bin RUN_BIN=${HOME}/usr/local/bin/op install && \ [ -f $@ ] chmod 755 ${HOME}/usr/src/local/lib/op ${HOME}/usr/src/local/bin/op/Makefile: -[ -d ${HOME}/usr/local/lib/op ] || make -e ${HOME}/usr/local/lib/op ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p op && cd op && \ muxcat ${MPS} ${MSRCMUX} local/bin/op ${CFG} >${TF} && \ tar xf ${TF} && \ chmod 755 ${HOME}/usr/src/local/bin/op && \ [ -f Makefile ] # Vinst -U depends on op, but we do not install a non-setuid op all-the-same # We make the dir +r to allow the manual page to install ${HOME}/usr/local/bin/op: ${HOME}/usr/src/local/bin/op/Makefile ${TRACE}cd ${HOME}/usr/src/local/bin/op && \ make -e ${MENV} clean && make -e ${MENV} LIB=${HOME}/usr/local/lib RUN_LIB=${HOME}/usr/local/lib BIN=${HOME}/usr/local/bin RUN_BIN=${HOME}/usr/local/bin install && \ [ -x $@ ] -if [ -d /etc/pam.d -a ! -f /etc/pam.d/op] ; then \ ln /etc/pam.d/su /etc/pam.d/op || \ ln /etc/pam.d/sudo /etc/pam.d/op || \ ln /etc/pam.d/login /etc/pam.d/op ; \ fi # Sentinel installation of op GROUP=wheel ${HOME}/bin/op: ${HOME}/usr/src/local/bin/op/Makefile ${TRACE}cd ${HOME}/usr/src/local/bin/op && \ make -e ${MENV} clean && make -e ${MENV} DEBUG=-DRUN_AS_MORTAL \ LIB=${HOME}/lib BIN=${HOME}/bin \ RUN_LIB=${HOME}/lib RUN_BIN=${HOME}/bin all && \ install -o $${USER:-$${LOGNAME?"set USER"}} -g ${GROUP} -m 6511 op ${HOME}/bin/${GROUP} && \ install -d -o $${USER:-$${LOGNAME}} -m 0700 ${HOME}/lib/op && \ install -cm 0400 -g ${GROUP} /dev/null ${HOME}/lib/op/access.cf && \ [ -x ${HOME}/bin/op ] # This assumes we will recurse to this recipe file, that is to say that # the name of the recipe is "Makefile". We remove the boot-strap link # to the BSD compatible install, if one was made. We prefer ksb-install. #- The install_base level3 package install_base: ${HOME}/usr/local/bin/mk ${HOME}/usr/local/bin/vinst \ ${HOME}/usr/src/local/bin/op/Makefile -${HOME}/usr/local/bin/install -R ${HOME}/bin/install 2>/dev/null -if [ -x ${HOME}/bin/install -a -x ${HOME}/usr/local/bin/install ] ; then ${HOME}/usr/local/bin/install -R ${HOME}/bin/install ; fi -if [ ${O}id -ur${O} -eq 0 ] ; then make -e ${HOME}/usr/local/sbin/installus; else echo "*** Mortal install of installus skipped" ; fi -if [ ${O}id -ur${O} -eq 0 ] ; then make -e ${HOME}/usr/local/bin/op; else echo "*** Mortal install of op skipped" ; fi echo ${Q}If you need it, "make -e entomb_base" or "make -e ad-hoc-list"${Q} # (LLL) The "entomb" program has traditionally been in local/lib, and I # believe some programs hard code it. Try to move it to libexec. because # I am sure libtomb.a is the only place I reference it anymore. {But # the master source will be in local/lib for a long time, sorry.} --ksb # If you change the charon uid/gid you might have to diddle the source too. #ENTOMB_IN=lib ENTOMB_IN=libexec CHARON_GROUP=602 CHARON_LOGIN=11520 #- The entombing pseudo-user to own files yet-to-be-preend charon: if ! id -g charon >/dev/null ; then \ groupadd -g ${CHARON_GROUP} charon ; \ fi if ! id charon >/dev/null ; then \ useradd -u ${CHARON_LOGIN} -g charon -h /home/Tomb -s /sbin/nologin charon ; \ fi #- The support library to access file entombing. ${HOME}/usr/local/lib/libtomb.a: echo "*** We install only if we can make files owner charon, you might need to su/op." && \ echo "*** The id commands stop us when login charon and group charon are unavailable." && \ id -g charon && id -u charon ${TRACE}cd ${HOME}/usr/src/local/lib && \ mkdir -p libtomb && cd libtomb && \ muxcat ${MPS} ${MSRCMUX} local/lib/libtomb ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} -DENTOMB_PATH=${Q}"${HOME}/usr/local/libexec/entomb"${Q} install && \ [ -f $@ ] #- The support program to entomb files. ${HOME}/usr/local/${ENTOMB_IN}/entomb: ${HOME}/usr/local/${ENTOMB_IN} ${HOME}/usr/local/lib/libtomb.a ${TRACE}cd ${HOME}/usr/src/local/${ENTOMB_IN} && \ mkdir -p entomb && cd entomb && \ muxcat ${MPS} ${MSRCMUX} local/lib/entomb ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -x $@ ] #- Purge tombs of old/large files. ${HOME}/usr/local/sbin/preend: ${HOME}/usr/local/lib/libtomb.a ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p preend && cd preend && \ muxcat ${MPS} ${MSRCMUX} local/sbin/preend ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -x $@ ] #- Restore entombed files. ${HOME}/usr/local/bin/unrm: ${HOME}/usr/local/sbin/preend ${HOME}/usr/local/${ENTOMB_IN}/entomb ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p unrm && cd unrm && \ muxcat ${MPS} ${MSRCMUX} local/bin/unrm ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -x $@ ] #- Remove files with meta characters in their name. ${HOME}/usr/local/bin/rmfile: ${HOME}/usr/local/sbin/preend ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p rmfile && cd rmfile && \ muxcat ${MPS} ${MSRCMUX} local/bin/rmfile ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -x $@ ] #- Build all of entombing, but do not replace rm/mv/cp. entomb_base: FRC @PATH=$$PATH:/usr/sbin:/sbin make -e charon ${HOME}/usr/local/bin/unrm ${HOME}/usr/local/bin/rmfile && \ @echo "*** Install a system startup for preend, see ${HOME}/usr/local/sbin/preend" && \ echo ${Q}*** Make anything else you want by name:${Q} && \ make -e ad-hoc-list | sed -e ${Q}s|${HOME}|~|${Q} | fmt # Part 2, the level 2 packages ad-hoc-list: FRC sed -n -e ${Q}1,/mEtA_dElEtE_tOkEn/d${Q} -e ${Q}s|^$${HOME}\([^:]*\):.*|${HOME}\1|p${Q} ${TF} && \ tar xf ${TF} && \ BINGRP=${O}id -gn${O} BINOWN=${O}id -un${O} && \ T__1=${O}mmsrc -b BASE${O} && \ make -e ${MENV} CONF_FORCE=--prefix=${HOME}/usr/local $$T__1 && \ cd $$T__1 && \ make BINGRP=$$BINGRP BINOWN=$$BINOWN install && \ [ -e $@ ] #- Only unique elements, like "sort -u" but way faster in a pipeline. ${HOME}/usr/local/bin/oue: ${HOME}/usr/local/bin/mk ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p oue && cd oue && \ muxcat ${MPS} ${MSRCMUX} local/bin/oue ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} INCLUDE=-I${Q}${HOME}/usr/local/include${Q} LIBGDBM=${Q}${HOME}/usr/local/lib/libgdbm.a${Q} install && \ [ -x $@ ] #- Extract from meta-data, and hxmd optimization for reporting. ${HOME}/usr/local/sbin/efmd: ${HOME}/usr/local/sbin/msrc ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p efmd && cd efmd && \ muxcat ${MPS} ${MSRCMUX} local/sbin/efmd ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} DEBUG=-D${Q}DEF_HXMD_LIB=\".:${HOME}/usr/local/lib/hxmd:${HOME}/usr/local/lib/distrib\"${Q} install && \ [ -x $@ ] #- Check out level 2 directories by symbolic label or revision number. ${HOME}/usr/local/bin/rcsvg: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p rcsvg && cd rcsvg && \ muxcat ${MPS} ${MSRCMUX} local/bin/rcsvg ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Frisk a level 2 directory for consistency. ${HOME}/usr/local/sbin/msync: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p msync && cd msync && \ muxcat ${MPS} ${MSRCMUX} local/sbin/msync ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Add a stock copyright notice/license to a package. ${HOME}/usr/local/sbin/addlic: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p addlic && cd addlic && \ muxcat ${MPS} ${MSRCMUX} local/sbin/addlic ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- The level 2 directory manager tool. ${HOME}/usr/local/sbin/level2s: ${HOME}/usr/local/bin/rcsvg \ ${HOME}/usr/local/sbin/msync ${HOME}/usr/local/sbin/addlic ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p level2s && cd level2s && \ muxcat ${MPS} ${MSRCMUX} local/sbin/level2s ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Turn a list of globs into a list of files on stdout for a pipeline. ${HOME}/usr/local/bin/glob: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p glob && cd glob && \ muxcat ${MPS} ${MSRCMUX} local/bin/glob ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Sleep forever, a wrapper shim better than the colon (:) mode ${HOME}/usr/local/bin/forever: ${HOME}/usr/local/bin/mk ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p forever && cd forever && \ muxcat ${MPS} ${MSRCMUX} local/bin/forever ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} clean && make -e ${MENV} install && \ [ -x $@ ] #- Locally update master source products via rsync and mmsrc. ${HOME}/usr/local/sbin/mpull: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p mpull && cd mpull && \ muxcat ${MPS} ${MSRCMUX} local/sbin/mpull ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Synchronize backup partitions, a way to roll-back level 4 changes. ${HOME}/usr/local/sbin/sbp: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p sbp && cd sbp && \ muxcat ${MPS} ${MSRCMUX} local/sbin/sbp ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # No depends, as I am trying to not depend this directory anymore. # But it is still the default location of local.defs, for now. --ksb ${HOME}/usr/local/lib/distrib: ${TRACE}cd ${HOME}/usr/src/local/lib && \ mkdir -p distrib && cd distrib && \ muxcat ${MPS} ${MSRCMUX} local/lib/distrib ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # ZZZ gibberish on stdout before the tar file # put in a INIT_CMD to redirect stdout in the script to /dev/null? #- The previous version of msrc, does not read make recipes. ${HOME}/usr/local/sbin/distrib: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p distrib && cd distrib && \ muxcat ${MPS} ${MSRCMUX} local/sbin/distrib ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} DEBUG=-D${Q}ALT_CONFIG_PATH=\"${HOME}/usr/local/lib/distrib\"${Q} install && \ [ -x $@ ] #- The service that supports this recipe! A strange loop, mayhap. ${HOME}/usr/local/libexec/msrcmux: ${TRACE}cd ${HOME}/usr/src/local/libexec && \ mkdir -p ${MSRCMUX} && cd ${MSRCMUX} && \ muxcat ${MPS} ${MSRCMUX} local/libexec/msrcmux ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Remove files large/old from /tmp, an ftp spool or the like. ${HOME}/usr/local/sbin/kruft: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p kruft && cd kruft && \ muxcat ${MPS} ${MSRCMUX} local/sbin/kruft ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Remind teammates of stale RCS locks ${HOME}/usr/local/sbin/tickle: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p tickle && cd tickle && \ muxcat ${MPS} ${MSRCMUX} local/sbin/tickle ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Turn cron into a batch job injection tool to smooth out report processing ${HOME}/usr/local/sbin/kicker: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p kicker && cd kicker && \ muxcat ${MPS} ${MSRCMUX} local/sbin/kicker ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Pack files or parameters into fix sized chunks, with rounding. ${HOME}/usr/local/bin/binpack: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p binpack && cd binpack && \ muxcat ${MPS} ${MSRCMUX} local/bin/binpack ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] padSUN5: : \'"ifelse(HOSTTYPE,SUN5,,"\`\` #- Show a process tree with indentation (and little clutter) ${HOME}/usr/local/bin/ptree: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p ptree && cd ptree && \ muxcat ${MPS} ${MSRCMUX} local/bin/ptree ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] endSUN5: : \'\'\)\` #- A "tail -f" that remembers where you left off, combine with tmbuf and oue ${HOME}/usr/local/bin/since: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p since && cd since && \ muxcat ${MPS} ${MSRCMUX} local/bin/since ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- A time-slice of a stream. We will not keep you waiting forever. ${HOME}/usr/local/bin/tmbuf: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p tmbuf && cd tmbuf && \ muxcat ${MPS} ${MSRCMUX} local/bin/tmbuf ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Use xapply to drive multiple screens for interactive tasks. ${HOME}/usr/local/bin/sapply: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p sapply && cd sapply && \ muxcat ${MPS} ${MSRCMUX} local/bin/sapply ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Expand or compress csh-style curly-brace globs. ${HOME}/usr/local/bin/curly ${HOME}/usr/local/bin/uncurly: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p curly && cd curly && \ muxcat ${MPS} ${MSRCMUX} local/bin/curly ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Convert plain text to PostScript(tm) for older printers ${HOME}/usr/local/bin/txt2ps: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p txt2ps && cd txt2ps && \ muxcat ${MPS} ${MSRCMUX} local/bin/txt2ps ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- A shell archiver that binpacks the files. ${HOME}/usr/local/bin/nushar: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p nushar && cd nushar && \ muxcat ${MPS} ${MSRCMUX} local/bin/nushar ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- A replacement for tee(1) with fewer limits. ${HOME}/usr/local/bin/Tee: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p Tee && cd Tee && \ muxcat ${MPS} ${MSRCMUX} local/bin/Tee ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Send a data stream to an RCS1078 service. ${HOME}/usr/local/bin/muxsend: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p muxsend && cd muxsend && \ muxcat ${MPS} ${MSRCMUX} local/bin/muxsend ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Ask an RFC1078 service for a data stream. ${HOME}/usr/local/bin/muxcat: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p muxcat && cd muxcat && \ muxcat ${MPS} ${MSRCMUX} local/bin/muxcat ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Libpcap needs a version of flex, build one if you do not have one. ${HOME}/usr/local/bin/flex: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p flex && cd flex && \ muxcat ${MPS} ${MSRCMUX} local/bin/flex ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # cdecl needs bison -y (or yacc), there is conflict with our use of # DESTDIR and the recipe bison uses, and make -e. So the level2 # recipe explicitly unsets DESTDIR for install. --ksb ${HOME}/usr/local/bin/bison: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p bison && cd bison && \ muxcat ${MPS} ${MSRCMUX} local/bin/bison ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # Scdpn below needs libpcap.h, RPM install it or build it. ${HOME}/usr/local/include/pcap.h: -[ -x /usr/bin/flex -o -x /usr/local/bin/flex -o -x ${HOME}/usr/local/bin/flex ] || make ${HOME}/usr/local/bin/flex ${TRACE}cd ${HOME}/usr/src/local/lib && \ mkdir -p libpcap && cd libpcap && \ muxcat ${MPS} ${MSRCMUX} local/lib/libpcap ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -e $@ ] #- Ask our network switch for port information via Cisco Discovery Protocol. ${HOME}/usr/local/sbin/scdpn: ${HOME}/usr/local/include/pcap.h ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p scdpn && cd scdpn && \ muxcat ${MPS} ${MSRCMUX} local/sbin/scdpn ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Start a process with a pid file, but make sure it goes before we exit OK. ${HOME}/usr/local/sbin/daemon: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p daemon && cd daemon && \ muxcat ${MPS} ${MSRCMUX} local/sbin/daemon ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- The message shell for account that need to be told why we terminated them. ${HOME}/usr/local/libexec/msh: ${TRACE}cd ${HOME}/usr/src/local/libexec && \ mkdir -p msh && cd msh && \ muxcat ${MPS} ${MSRCMUX} local/libexec/msh ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- An RFC1078 service to record client streams in a spool area. ${HOME}/usr/local/libexec/recvmux: ${TRACE}cd ${HOME}/usr/src/local/libexec && \ mkdir -p recvmux && cd recvmux && \ muxcat ${MPS} ${MSRCMUX} local/libexec/recvmux ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Make up a random password for a new account. ${HOME}/usr/local/bin/passgen: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p passgen && cd passgen && \ muxcat ${MPS} ${MSRCMUX} local/bin/passgen ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # (LLL) This should to more ciphers. #- Turn a password into a crypt hash. ${HOME}/usr/local/bin/epass: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p epass && cd epass && \ muxcat ${MPS} ${MSRCMUX} local/bin/epass ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Explain C variable declaration, or do the inverse. ${HOME}/usr/local/bin/cdecl: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p cdecl && cd cdecl && \ muxcat ${MPS} ${MSRCMUX} local/bin/cdecl ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Show the structure of a C program. ${HOME}/usr/local/bin/calls: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p calls && cd calls && \ muxcat ${MPS} ${MSRCMUX} local/bin/calls ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Update transitive dependencies in a make recipe. ${HOME}/usr/local/bin/maketd: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p maketd && cd maketd && \ muxcat ${MPS} ${MSRCMUX} local/bin/maketd ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Add or subtract dates and times. ${HOME}/usr/local/bin/datecalc: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p datecalc && cd datecalc && \ muxcat ${MPS} ${MSRCMUX} local/bin/datecalc ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Filter a tar archive to split two subsets of the aggregated files. ${HOME}/usr/local/bin/tart: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p tart && cd tart && \ muxcat ${MPS} ${MSRCMUX} local/bin/tart ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # Must be root to install, see above #- A program that can look like sudo, but run op to do the work. ${HOME}/usr/local/bin/sudop: ${HOME}/usr/local/bin/op ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p sudop && cd sudop && \ muxcat ${MPS} ${MSRCMUX} local/bin/sudop ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # Note /opt/SUNWspro/bin/cc builds code that works, gcc does not. # Plus you must diddle PERL5LIB too. --ksb #- Check if this host has an interface bound to the given IP or name ${HOME}/usr/local/bin/haveip: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p haveip && cd haveip && \ muxcat ${MPS} ${MSRCMUX} local/bin/haveip ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- The classic ksb conserver, very simple and old-school. ${HOME}/usr/local/sbin/conserver: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p conserver && cd conserver && \ muxcat ${MPS} ${MSRCMUX} local/sbin/conserver ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- The client for the old-school console server. ${HOME}/usr/local/sbin/console: ${HOME}/usr/local/sbin/conserver ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p console && cd console && \ muxcat ${MPS} ${MSRCMUX} local/sbin/console ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Login a tty on system startup. Now days use "al=login" to do this. ${HOME}/usr/local/sbin/autologin: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p autologin && cd autologin && \ muxcat ${MPS} ${MSRCMUX} local/sbin/autologin ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # Below here we have no ITO.spec files? #- Lock a file with BSD-style advisory locking. ${HOME}/usr/local/bin/flock: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p flock && cd flock && \ muxcat ${MPS} ${MSRCMUX} local/bin/flock ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- The old-school version of seq. ${HOME}/usr/local/bin/jot: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p jot && cd jot && \ muxcat ${MPS} ${MSRCMUX} local/bin/jot ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # ZZZ this does not work because Msrc.hxmd will not let clients pull it # from the real msrc. We must fix it in a shadow copy! --ksb #- My site policy for every host in production. ${HOME}/usr/local/libexec/hostlint-policy: ${TRACE}cd ${HOME}/usr/src/local/libexec && \ mkdir -p hostlint-policy && cd hostlint-policy && \ muxcat ${MPS} ${MSRCMUX} local/libexec/hostlint-policy ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -d $@ ] #- The level 4 site policy checker for a single host. ${HOME}/usr/local/libexec/hostlint: ${HOME}/usr/local/libexec/hostlint-policy ${TRACE}cd ${HOME}/usr/src/local/libexec && \ mkdir -p hostlint && cd hostlint && \ muxcat ${MPS} ${MSRCMUX} local/libexec/hostlint ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # XXX The policy does not have any tune to move the root of the local tools # for the version check logic. #- The level 4 site policy checker for a network with hosts attached. ${HOME}/usr/local/libexec/netlint-plugins: ${TRACE}cd ${HOME}/usr/src/local/libexec && \ mkdir -p netlint-plugins && cd netlint-plugins && \ muxcat ${MPS} ${MSRCMUX} local/libexec/netlint-plugins ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # ZZZ Has no tune to move the plugins directory, so you must edit # the script (in 2 places) to add dollar-HOME as a prefix. # XXX There is no way to change the paths for the base tools checks. #- The driver for collecting data from a single host on a network. ${HOME}/usr/local/libexec/netlint: ${HOME}/usr/local/libexec/netlint-plugins ${TRACE}cd ${HOME}/usr/src/local/libexec && \ mkdir -p netlint && cd netlint && \ muxcat ${MPS} ${MSRCMUX} local/libexec/netlint ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # ZZZ build the hostlint collector to be a pull-only adventure! yeah! #- The RFC1078 service if you want to change ports or on older Linux. ${HOME}/usr/local/libexec/tcpmux: ${TRACE}cd ${HOME}/usr/src/local/libexec && \ mkdir -p tcpmux && cd tcpmux && \ muxcat ${MPS} ${MSRCMUX} local/libexec/tcpmux ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Allow a trusted local IP to RFC1078 connect to backup our data. ${HOME}/usr/local/libexec/dumpmux: ${TRACE}cd ${HOME}/usr/src/local/libexec && \ mkdir -p dumpmux && cd dumpmux && \ muxcat ${MPS} ${MSRCMUX} local/libexec/dumpmux ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- The op jacket collection, X display, authorization tokens, wrappers, etc. ${HOME}/usr/local/libexec/jacket: ${TRACE}cd ${HOME}/usr/src/local/libexec && \ mkdir -p jacket && cd jacket && \ muxcat ${MPS} ${MSRCMUX} local/libexec/jacket ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] #- Copy unique files back to minimum safe distance, aka a forensic archive. ${HOME}/usr/local/sbin/msd: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p msd && cd msd && \ muxcat ${MPS} ${MSRCMUX} local/sbin/msd ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] ${HOME}/usr/local/bin/untmp: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p untmp && cd untmp && \ muxcat ${MPS} ${MSRCMUX} local/bin/untmp ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] ${HOME}/usr/local/bin/rrdup: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p rrdup && cd rrdup && \ muxcat ${MPS} ${MSRCMUX} local/bin/rrdup ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] ${HOME}/usr/local/bin/webconstats: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p webconstats && cd webconstats && \ muxcat ${MPS} ${MSRCMUX} local/bin/webconstats ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] ${HOME}/usr/local/libexec/unixstats: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p unixstats && cd unixstats && \ muxcat ${MPS} ${MSRCMUX} local/libexec/unixstats ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] ${HOME}/usr/local/libexec/pegdiag: ${TRACE}cd ${HOME}/usr/src/local/bin && \ mkdir -p pegdiag && cd pegdiag && \ muxcat ${MPS} ${MSRCMUX} local/libexec/pegdiag ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # ZZZ not complete yet #- The level 3 package manipulation tool. ${HOME}/usr/local/sbin/level3s: ${TRACE}cd ${HOME}/usr/src/local/sbin && \ mkdir -p level3s && cd level3s && \ muxcat ${MPS} ${MSRCMUX} local/sbin/level3s ${CFG} >${TF} && \ tar xf ${TF} && \ make -e ${MENV} install && \ [ -x $@ ] # Reload this make recipe by pulling a fresh source from msrc, then apply # an edit to update the 3 data-source parameters. --ksb update: update.m4 ${TRACE}hxmd -Cauto.cf -Glocalhost -BMSRCMUX -N "%0echo fail; exit 69" \ "sh %1 | install -c - ${HOME}/Makefile" update.m4 # This is local site policy: where do you keep the main pull recipe? # I use "msrc/opt/ksb/home/", but I am sure you have a better name for it. # Others use "home/pullmsrc/" for example. reload: ${HOME}/usr/src/opt/ksb ${TRACE}cd ${HOME}/usr/src/opt/ksb && \ mkdir -p home && cd home && \ muxcat ${MPS} ${MSRCMUX} opt/ksb/home ${CFG} >${TF} && \ tar xf ${TF} && \ make -e update # This show the hxmd configuration for this client which:${HOME}/usr/src/opt/ksb ${TRACE}cd ${HOME}/usr/src/opt/ksb && \ mkdir -p which && cd which && \ muxcat ${MPS} ${MSRCMUX} opt/ksb/which ${CFG} >${TF} && \ tar xf ${TF} && \ make all FRC: : \'