21 Jul 2004    caspar 20040721

1.  
2.  
3.  
4.  
5.  
6.  
7.  
8.  
9.  
10.  
11.  
12.  

NAME

caspar - Makefile snippets for common tasks

SYNOPSIS

In a Makefile, do either
  include caspar/mk/caspar.mk
or
  include caspar/mk/docbook.mk
or
  include caspar/mk/pod.mk
.

DESCRIPTION

Caspar offers Makefile snippets for common tasks, like installing stuff you've got under version control, or typesetting LaTeX, DocBook XML and DocBook SGML documents.

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.

USAGE

Within a CVS tree, create a file include/install.mk, with contents like e.g.
 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

VARIABLES

The variables one can set in a calling Makefile are:
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.

EXAMPLES

Some examples: Using csp_CPDIR and csp_LOAD: username/etc/Makefile is
  csp_CPDIR = $(HOME)/etc/
  csp_LOAD = crontab-load
  include ../include/install.mk

  crontab-load:
        crontab $(csp_CPDIR)/crontab
while ../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.mk
More advanced tricks: supply e.g.
 csp_SUHS = root@localhost root@some.host.somewhere
in install.mk, to install on multiple hosts. Run
 csp_SUH=joe@otherhost make filename-install
to 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
.

FILES

caspar/mk/caspar.mk, caspar/mk/docbook.mk, caspar/mk/pod.mk

ENVIRONMENT

For caspar.mk: csp_CPDIR, csp_CP, csp_CPFLAGS, csp_LOAD, csp_SCP, csp_SCPFLAGS, csp_SUH, csp_SUHS.

BUGS

See TODO and/or BUGS, distributed with the caspar package. (And online at http://mdcc.cx/pub/caspar/caspar-latest/TODO.)

TRIVIA

caspar is named after Caspar the Friendly Ghost, since that's the title of the Daniel Johnston song I was listening to when deciding to package my homegrown scripts.

AUTHOR

Joost van Baal

SEE ALSO

caspar-typesetting(7)

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.