21 Jul 2004 caspar 20040721
1. | ||
2. | ||
3. | ||
4. | ||
5. | ||
6. | ||
7. | ||
8. | ||
9. | ||
10. | ||
11. | ||
12. |
caspar - Makefile snippets for common tasks
include caspar/mk/caspar.mkor
include caspar/mk/docbook.mkor
include caspar/mk/pod.mk.
The typesetting functionality is delivered by docbook.mk and pod.mk. This is documented in caspar-typesetting(7).
The installing-stuff-under-version-control functionality is delivered by caspar.mk. (That's what the rest of the manual will talk about.) It enables one to run 'make install' from within a CVS (or Subversion or any other version control system, for that matter) tree.
It is useful in cases like this: all configuration files of some host are under version control, and, after commiting a change to CVS, you want to be able to easily install the new configuration file on the host.
With caspar, all you have to do is specify the hostname in one place, and specify the name of the target directory in each CVS directory.
csp_SUH = root@some.host.somewhere include caspar/mk/caspar.mk. Within each other directory of the CVS tree which holds files, create a Makefile, which looks like e.g.
csp_DIR = /some/dir/ectory/ include ../../include/install.mk. From within the CVS tree, one can call:
make <filename>-install make install make load make
csp_CP | ||
cp binary, just "cp" by default
|
||
csp_CPFLAGS | ||
extra arguments to pass to cp invocation, none by
default
|
||
csp_SCP | ||
scp binary, just "scp" by default
|
||
csp_SCPFLAGS | ||
extra arguments to pass to scp invocation, e.g.
'-i .ssh/id_rsa-root'
|
||
csp_SUH | ||
ssh-reachable user@host (Secure User at Host)
|
||
csp_SUHS | ||
space separated list of ssh-reachable user@host
items (Secure User at HostS)
|
||
csp_CPDIR | ||
directory to which we can cp(1), instead of scp
(CoPy DIRectory)
|
||
csp_CPDIRS | ||
space separated list of directories to which we can
copy (CoPy DIRectorieS)
|
||
csp_SCPDIR | ||
directory on ssh reachable host, with trailing /
(Secure CoPy DIRectory)
|
||
csp_SUHDIRS | ||
this is the list $(csp_SUH):$(dir) for each
$(dir) in $(csp_SUHS) (or where dir = $(csp_SCPDIR), in
case csp_SUHS is not set).
However, more items can get added to this list on the fly.
|
||
csp_LOAD | ||
targets which should depend on the `load' target.
|
csp_CPDIR = $(HOME)/etc/ csp_LOAD = crontab-load include ../include/install.mk crontab-load: crontab $(csp_CPDIR)/crontabwhile ../include/install.mk is just
include caspar/mk/caspar.mk. Using csp_SCPDIR and csp_LOAD: etc/Makefile is
csp_SCPDIR = /etc/ csp_LOAD = aliases-load include ../include/install.mk aliases-load: ssh $(csp_SUH) "cd /etc; postalias aliases; postfix reload"while ../include/install.mk is
csp_SUH = root@some.host.somewhere include caspar/mk/caspar.mkMore advanced tricks: supply e.g.
csp_SUHS = root@localhost root@some.host.somewherein install.mk, to install on multiple hosts. Run
csp_SUH=joe@otherhost make filename-installto install filename as joe@otherhost, instead of the default as given in install.mk. When you don't want to ssh to root@some.host.somewhere directly, you could do
sudo rsync -az /path/to/your/config_archive /etc.
caspar/mk/caspar.mk, caspar/mk/docbook.mk, caspar/mk/pod.mk
The caspar homepage is at http://mdcc.cx/caspar/ .
The `cvs-conf' package ( http://project.tuxfamily.org/cvs-conf, http://packages.debian.org/stable/utils/cvs-conf.html ) probably offers about the same functionality as caspar.mk. However, this package seems largely unmaintained (between September 2002 and May 2004, at least).
docbookmk, by Michael Wiedmann ( http://www.miwie.org/docbkmake/ ) offers probably a superset of Caspar's docbook.mk functionality.
SUP, the Software Upgrade Protocol and it's implementation by Carnegie Mellon University offers another way to distribute (configuration)files. Beware though: between Nov 1996 and June 2004, no new release has been published. The Debian ( ftp://ftp.debian.org/debian/pool/main/s/sup/ ) and NetBSD packages are likely still maintained, though.