caspar-20220907/ 0000755 0001750 0001750 00000000000 14306131360 010230 5 0000000 0000000 caspar-20220907/NEWS 0000644 0001750 0001750 00000047040 14306130107 010652 0000000 0000000 Refer to ChangeLog for detailed per-file info.
caspar version 20220907 - The Stanowischt Release
- Caspar now processes .md markdown files:
+ caspar/mk/markdown.mk: Added.
+ caspar/doc/caspar-typesetting.azm: Document this.
- configure.ac: update copyright years.
caspar version 20200611 - The Minneapolis Release
- This release dedicated to James Baldwin (★ 1924 – † 1987).
- doc/caspar.azm: add missing {, so that sections like FILES, ENVIRONMENT,
SEE ALSO are no longer skipped from typesetting the caspar(7) manpage.
- bootstrap: update from automake/aclocal 1.15 to 1.16 as shipped with current
Debian stable.
caspar version 20180315 - The Romstjern Release
- caspar/mk/caspar.mk: Patch contributed by Wessel Dankers: csp_* variables
are part of caspar's public interface. However, in some cases
(csp_scp_FUNC and friends) we overwrote those unconditionally. This patch
fixes that behavior: from now on, existing values for csp_scp_FUNC are not
overwritten any more.
- bootstrap: update from automake/aclocal 1.14 to 1.15 as shipped with current
Debian stable.
caspar version 20170830 - The Bleukbos Release
- mk/pod.mk: drop ps2pdf, use pod2pdf (as shipped with e.g. Debian 8 "jessie")
for generating PDF from POD.
- mk/caspar.mk: apply patch contributed by Wessel Dankers:
1) Add support for foo-verify make targets. Such make targets will be
executed by caspar and should verify if the file "foo" is correct in terms
of syntax and integrity.
2) Add a csp_CHECK that works identically to csp_LOAD except that no
csp_LOAD actions are attempted unless and until csp_CHECK completes
successfully.
Use this to validate config remotely before loading (and potentially
breaking) your service.
3) Officially deprecate csp_BUILD.
4) Officially deprecate the "for suh in $(csp_UHOSTS) ..." idiom.
Please note that if you have multiple csp_LOAD targets or multiple csp_CHECK
targets, these are NOT necessarily executed in the order you specify them!
The documentation used to (erroneously) suggest that specifying a check
target and a load target in csp_LOAD in the correct order would cause the
check to run before the load. This is not true in general, and specifically
in the case of make -j.
caspar version 20140919 - The Prnjavor Release
- mk/caspar.mk: apply patch contributed by Wessel Dankers, Aug 8 2014:
1) Localize variables:
previously, caspar would use a few generic variable names (such as “FILES”)
and assign values to them, blithely overwriting any variable of the same name
that the user might be using. With this change, all variables internal to
caspar are prefixed using ‘_csp_’.
2) Stop changing input variables:
variables that serve as input to caspar should be read-only as far as caspar
is concerned. Before this change it would change the value of (at least)
csp_UHOSTS, which broke certain advanced usage patterns. With this change,
caspar uses internal variables for computations.
These modifications do not change the caspar interface.
- doc/caspar.azm: updated links for ansible, cfengine and puppet.
- bootstrap: update from automake/aclocal 1.11 to 1.14 (only relevant
for developers building caspar from within a git checkout).
caspar version 20140203 - The Matonge, BXL Release
- Makefile.am: explictly set path of setversion: use $(top_srcdir)/setversion.
Specify DISTCLEANFILES. Tweak EXTRADIST. No longer set VERSION.
- configure.ac, setversion: use generic AD1_VERSION, not CASPAR_VERSION
- configure.ac: AC_PREREQ(2.67), reintroduce and update AC_COPYRIGHT, set
AC_REVISION.
- setversion: simplify: rip out support for manually overwriting autogenerated
version.
- bootstrap: downgrade from autotools 1.14 to autotools 1.11, so that building
from git works on current Ubuntu LTS.
- doc/csp_helper.azm: documented csp_mkdircp.
- doc/caspar.azm: started documenting 'make diff'.
caspar version 20140106 - The Bakertand Release
- script/csp_sucp: bugfix: feed not just $3, but also any more args
as files to tar. Now passing more than just one file to csp_sucp actually
works.
- bootstrap: update from automake/aclocal 1.11 to 1.14 (only relevant
for developers building caspar from within a git checkout).
- Makefile.am: no longer ship caspar-.tar.bz2, do ship
caspar-.tar.xz.
caspar version 20131119 - The Sint Agatha Release
[ Joost van Baal-Ilić ]
- doc/csp_helper.azm, script/csp_sucp: Fixes in csp_sucp(1):
+ update csp_sucp description: since version 20120514 we use tar, not cat.
document how to use csp_sucp with interactive sudo password prompt.
+ we no longer suffer from password-prompt bug: run sudo non-interactive
(-n) when stdin is filled with tar data ; explicitly get rid of tty when
stdin is filled with tar in order to make sure this data will not get
interpreted as password for sudo; pass -t to ssh, not -T, when refreshing
sudo password, gets rid of error message "sudo: no tty present and no
askpass program specified ".
+ explicitly pass c to tar. (GNU tar) 1.26 needs at least one option.
- mk/caspar.mk: Swap dealing with $(csp_TABOOFILES) and $(csp_BUILD) in
contructing FILES to be install-ed. Now $(csp_TABOOFILES) is subtracted
from $(csp_BUILD) (was: $(csp_BUILD) gets added to result of subtracting
$(csp_TABOOFILES) from list of FILES. So, now "csp_BUILD = check" and
"csp_TABOOFILES_ADD = check" no longer results in caspar trying to install
a file called 'check'.
caspar version 20120530 - The Miekoekse Release
[Wessel Dankers]
- mk/caspar.mk: do not run bulktargets if no files are available
[Joost van Baal-Ilić]
- script/csp_mkdircp: add yet another caspar helper
caspar version 20120514 - The Железничка Release
[Joost van Baal-Ilić]
- caspar/script/csp_sucp: csp_sucp is reimplemented: now with "multisupport"
for "bulktargets", it no longer uses cat, but tar.
- caspar/mk/caspar.mk: csp_SUCP now again supports setting csp_SUCP_USER from
within Makefile: interface restored to the one in caspar <= 20101204.
[Wessel Dankers]
- caspar/mk/caspar.mk: Introduce "bulktargets" in caspar.mk. Running "make" or
"make install" now installs all files in current directory in just one
csp_PUSH call. In case csp_PUSH is set to default "scp", scp is called
just once; this makes caspar much more efficient.
caspar version 20120508 - The Sint Katelijne Release
[Joost van Baal-Ilić]
- caspar/doc/Makefile.am: assume html is in utf8; this fixes a bug
introduced in version 20120420: manpages were empty.
caspar version 20120420 - The Lamprais Release, for Danishka Navin
[Joost van Baal-Ilić]
- caspar/script/csp_sucp: csp_sucp now honors CSP_DEBUG
- caspar/NEWS, caspar/doc/caspar.azm: document new csp_PUSH
interface, support for csp_XARG is dropped
- caspar/mk/caspar.mk: add (undocumented) target "debug". fix bug,
caspar now somewhat usable again.
caspar version 20120417 - The Kokki Release
[Joost van Baal-Ilić]
- We now support installing multiple local files in one scp call.
The destination directory of a push script is now passed as the first
argument. Therefore, one can now implement one's own push mechanism in a
more efficient way. The arguments of a push implementation can get shifted,
one can treat remaining args as "$@".
- User interface for caspar helpers csp_* changed in INCOMPATIBLE way.
- If you've written your own csp_PUSH implementation, update it. arguments
now are <[user@]host> (was:
<[user@]host> [])
+ caspar/script/csp_sucp, caspar/script/csp_scp_keep_mode: swap
arguments: now csp_* <[user@]host> (was:
<[user@]host> [su-user])
+ caspar/script/csp_install: swap arguments: now
csp_install
- csp_DIFFXARG support reimplemented (in a slightly less flexible way)
- caspar/script/csp_sucp: fix bug in $CSP_SUCP_USER processing.
caspar version 20120322 - The Kothu Roti Release
[Joost van Baal-Ilić]
- caspar/mk/caspar.mk: backwards INCOMPATIBLE change: csp_CPDIRS and csp_CPDIR
(and 'localtargets') are no longer honored. If you'd like to use cp(1) to
install to csp_CPDIR, define
csp_UHOST = dummy
csp_PUSH = $(csp_cp_FUNC)
and set csp_DIR accordingly. Support for installing in multiple different
directories using cp(1) is dropped. (Likely it's possible to implement it
via some dirty hack.)
- caspar/doc/caspar.azm, caspar/mk/caspar.mk: implement function
csp_scpmkdir_FUNC (and variable csp_MKDIRP): no longer need to define this
function in Makefile.
- caspar/doc/caspar.azm: document csp_UHOSTS_SKIP.
- caspar/doc/caspar.azm: document more advanced way of using csp_LOAD: refer
to $1 in definition of load target, keep loop over hosts implicit.
- caspar/doc/*.azm, caspar/doc/include*: converting syntax to
aephea >= 10.008-1, zoem >= 11-166-1.
- caspar/doc/caspar.azm, caspar/doc/csp_helper.azm: various improvements
in manpages.
caspar version 20101204
[Wessel Dankers]
- caspar/mk/caspar.mk: add $(csp_UHOSTS_SKIP) feature: exclude hosts
- caspar/mk/caspar.mk: combine file lists less clumsily
caspar version 20100624
- Bugfix release
[Wessel Dankers]
- caspar/mk/caspar.mk: fix load-target-as-a-variable didn't work
because $(call ...) was expanded too early
caspar version 20100223
[Joost van Baal]
- Converted from CVS to git.
+ use git2cl (no longer cvs2cl)
- Add (.so request) manpages for csp_install, csp_scp_keep_mode and csp_sucp.
[Wessel Dankers]
- Fixed "target given more than once in the same rule" errors.
- Caspar now shows each command as it is run, and aborts on errors.
- csp_LOAD values are now defined as variables with $1 being the host
they push to.
caspar version 20091115
- Renamed caspar(1) to casparize(1).
- Some tweaking on manpages.
caspar version 20091114
- Preliminary manpage csp_helper(1) added, documenting helper scripts
csp_install, csp_scp_keep_mode and csp_sucp. (The separate csp_sucp manpage
is gone.)
- Adjusted caspar.mk so that it's actually possible to hook csp_install
and csp_scp_keep_mode into caspar.
caspar version 20090926
- Unstable bleeding edge snapshot release.
- Added (not yet documented) new scripts csp_install and csp_scp_keep_mode,
allowing for more robust installs.
- Add script caspar(1), for generating caspar-style Makefiles, contributed
by Jeroen Hoppenbrouwers.
- setversion: allow for user override of version of caspar release.
- TODO: updated
caspar version 20090406
- BEWARE! Backwards INcompatible change in user interface! mk/caspar.mk does
no longer supply backward compatibility with caspar <= 20060216: Support for
csp_SUH, csp_SUHS, csp_SUHDIRS and csp_SCPDIR is dropped. If you use
old-style Makefiles, you'll have to fix these now:
for csp_SUHS now use csp_UHOSTS
for csp_SUH now use csp_UHOST
for csp_SCPDIR now use csp_DIR
(There is no replacement variable for csp_SUHDIRS; csp_CPDIRS for now is
still supported.) See the 20060216 NEWS item for more details. A crude way
to update your Makefiles would be to run something along the lines of:
% find . -name Makefile -o -name install.mk | while read f; do
sed -i 's/csp_SUHS/csp_UHOSTS/g; s/csp_SUH/csp_UHOST/g;
s/csp_SCPDIR/csp_DIR/g' $f;
done
This kinda worked for me. YMMV. (Please mail the author if you need help
converting your Makefiles and you've explicitly used the variable
csp_SUHDIRS.)
(No other incompatible change will get introduced during the Debian "squeeze"
nor during the "squeeze + 1" release cycle: caspar in squeeze + 1 will be
backwards compatible with this caspar version. History of incompatible
changes and Debian GNU/Linux releases:
Debian release caspar version incompatible?
-------------- -------------- -------------
woody (oldoldoldstable) none -
sarge (oldoldstable) 20050302-1 YES
etch (oldstable) 20060618-1 -
lenny (stable) 20070729-1 -
squeeze (testing) > 20070729-1 YES
[1] caspar version 20040721-1 was the first one uploaded to the Debian
archives.)
- Added preliminary support for "make diff" and "make -diff": this
shows the diff between filename in current directory and filename at remote
location. One can use this to test wether the file on the server is in
sync with (e.g.) a previous SVN version before scp-ing it. This prevents
overwrites of "illegal" (i.e. without having used SVN (but possibly useful))
edits directly on the remote server. New variables introduced:
csp_DIFFXARG (default: -u)
csp_DIFF (default: csp_diff_FUNC; overwrite this if you want to tweak the
way the diff is computed)
as well as csp_SSH, csp_CAT, csp_Diff and csp_diff_FUNC. For now, this
feature works out of the box in case csp_PUSH is $(csp_scp_FUNC) (the
default scp-based install mechanism) and in case csp_PUSH is
$(csp_sucp_FUNC). If you use cp(1) to install, and have set csp_PUSH to
$(csp_cp_FUNC), for now do set
csp_DIFF = $(csp_Diff) $(4) $(3)/$(1) $(1)
to get this feature working. Very likely, this will no longer be needed in
the feature: out of the box support for all push mechanisms is planned.
Thanks Fred Vos and Jeroen Hoppenbrouwers for joining the discussion about
this feature.
- Added preliminary support for using rsync(1) as push mechanism. Use it by
setting
csp_PUSH = $(csp_rsync_FUNC)
Use csp_rsyncssh_FUNC instead of csp_rsync_FUNC if you don't want to use
the rsync daemon, but ssh (or rsh). Other new variables introduced:
csp_RSYNC (default: rsync),
csp_RSYNCFLAGS (default: -zPt --chmod=ugo=rwX).
Thanks Ko van der Sloot for suggesting this feature.
- Caspar is now licensed under the GNU GPL version 3 or later (no longer v2 or
later).
- Various improvements in caspar(7) manpage. E.g. example added about
using sudo without ssh.
- Bugfix in sgml/print.dsl as used by docbook.mk. The error
`jade:/usr/share/sgml/caspar/print.dsl:126:24:E: element "SYSTEMITEM"
undefined' will no longer show up.
- Bugfix in caspar.mk: deal sane with files named like
"debian-lenny-install.txt": files which had "-install" in their name
never got installed.
- Now uses automake 1.10 for building (was 1.9).
caspar version 20070729
- Caspar now supports a smart way for temporary overrides of csp_UHOSTS, using
csp_UHOSTS_SUBSET. (Actually, this was implemented in release 20070713).
- Improvements in caspar(7) manpage: documented csp_BUILD, improved csp_LOAD
examples, added example on how to add a "check" target.
caspar version 20070713
- Fix bug in csp_sucp(1) when using fourth argument (e.g. via CSP_XARG).
This bug caused sudo to die with error "sudo: the `-u' and '-v' options may
not be used together".
- Minor improvements in caspar(7) manpage.
- TODO: recorded lots of new ideas for improvements, thanks to caspar user
community at UvT.
caspar version 20060618
- Various improvements in caspar(7) manpage.
caspar version 20060610
- The variables csp_scp_DIR, csp_scp_UHOSTS, csp_scp_UHOST and csp_cp_DIR,
which were introduced in snapshot version 20060216, are no longer supported.
These variable were redundant. (Very likely, you'll need csp_UHOST[S],
csp_DIR, and maybe csp_PUSH and csp_LOAD only.)
caspar version 20060608
- Unstable bleeding edge snapshot release.
- Fixed section of csp_sucp(1) manpage.
- Minor bugfixes in caspar.mk.
- Various improvements in caspar(7) manpage.
caspar version 20060531
- Yet another unstable bleeding edge snapshot release.
- Typo in caspar.mk which lead to "invalid syntax in conditional" error is
fixed.
- Added csp_sucp(1) manpage. This script now gets installed.
- Minor improvements on other manpages.
caspar version 20060216
- Beware! This is an unstable bleeding edge snapshot release. Test results
are welcomed.
- caspar.mk now has support for installing files using sudo, wrapped in ssh:
it runs something like
ssh foo@bar "sudo sh -c \"cat - > /duh/blah\"" < blah
. To facilitate this, new variables have been introduced: csp_PUSH (default:
a csp_scp make function), csp_SUCP, csp_UHOST, csp_UHOSTS, csp_DIR, csp_XARG.
A script csp_sucp, dealing with the wrapping, is now shipped; it honors a
CSP_SUCP_USER environment variable.
Lots of variables are now deprecated:
for csp_SUHS now use csp_UHOSTS
for csp_SUH now use csp_UHOST
for csp_SCPDIR now use csp_DIR
The variable csp_CPDIRS will be phased out: no more multiple cp target dirs.
Don't worry yet: we still supply full backwards compatibity.
- mk/caspar.mk: install and load now are .PHONY targets, as they should be.
You'll like this if you have files named "install" or "load". Thanks Guus
Sliepen.
caspar version 20050424
- (This release was shipped with Debian. We'll try to remain compatibility.)
- New variable csp_EXTRAFILES added. This enables one to succesfully run e.g.
make .bashrc-install
. Aren't you all happy now? Thanks Guus Sliepen for the patch.
- In order to have csp_EXTRAFILES behave nice, .%.swp is added to
csp_TABOOFILES_DEFAULT and .svn is added to csp_TABOODIRS_DEFAULT.
caspar version 20050302
- (This release was shipped with Debian. We'll try to remain compatibility.)
- Fixed caspar(7) manpage: the last part was not typesetted. Duh.
caspar version 20050301
- BEWARE! BACKWARDS INCOMPATIBILITY! mk/caspar.mk does no longer supply backward
compatibility with caspar <= 20030825. If you use old-style Makefiles, you'll
have to fix these now. See the 20040531 NEWS item for details.
A crude way to update your Makefiles would be to run something along the lines
of:
% find . -name Makefile | while read f; \
do sed -i 's/SDIR/csp_SCPDIR/g; s/(SUH)/(csp_SUH)/g; \
s/^LOAD /csp_LOAD /; s/(SUHS)/(csp_SUHS)/g; \
s/^SUH /csp_SUH /; s/^SUHS /csp_SUHS /' $f; done
% find . -name install.mk | while read f; \
do sed -i 's/^SRDIRS /csp_SUHDIRS /g' $f; done
This kinda worked for me. YMMV.
- New variables csp_TABOO{DIRS,FILES}_{ADD,SKIP} in caspar.mk. See caspar(7).
caspar version 20040721
- This release is planned to get shipped with Debian: it will be available
from the Debian archive.
- No functional changes, just some minor documentation updates and tweaks of
the build system (interesting only for people building a tarball from CVS).
caspar version 20040531
- The caspar CVS is moved to http://alioth.debian.org/. Thanks to the Alioth
admins!
- Experimental install-recursive target added. If you'd like to play with it,
you won't need to adjust your Makefile's. Just type `make install-recursive'
and decide wether you like this feature.
- BEWARE! Change in user interface! caspar.mk variables have been renamed:
new name old name
======== ========
csp_CP CP
csp_CPFLAGS CPFLAGS
csp_CPDIR CDIR
csp_CPDIRS CPDIRS
csp_LOAD LOAD
csp_SCP SCP
csp_SCPFLAGS SCPFLAGS
csp_SCPDIR SDIR
csp_SUH SUH
csp_SUHS SUHS
csp_SUHDIRS SRDIRS
This is done to make sure no unexpected name clashes occur.
For now, we offer a backward compatibility hack: your old Makefile's will
continue to work. However, you're advised to switch to the new user
interface a.s.a.p.
caspar version 20030825
- CPFLAGS and SCPFLAGS added to caspar.mk. See caspar(7), as well as the
caspar.mk file itself.
caspar version 20030809
- Added manpages caspar(7) and caspar-typesetting(7). Installed in
/usr[/local]/share/doc/caspar too, in various formats.
caspar version 20030803
- See doc/ChangeLog.2002 for news about caspar 20030803 and earlier
# This file is maintained at http://git.mdcc.cx/caspar
caspar-20220907/README 0000644 0001750 0001750 00000007333 13721721100 011033 0000000 0000000 # This file is maintained at http://git.mdcc.cx/caspar
caspar - Makefile snippets for common tasks
See doc/caspar.txt for general information about this package, see INSTALL
for generic installation instructions.
The caspar homepage is at http://mdcc.cx/caspar/ . Feedback (bugs, feature
requests, etc.) can be sent to joostvb *dash* caspar *at* mdcc *dot* cx.
After install, directories /usr/local/share/doc/caspar/,
/usr/local/share/caspar/mk/ /usr/local/include/caspar/mk/
/usr/local/share/sgml/caspar/ are created and populated, and manpages caspar(7)
and caspar-typesetting(7) are installed.
- requirements, packages - - - - - - - - - - - - - - - - - - - - - - - - -
GNU make.
For the typesetting functionality, one needs Jade, LaTeX, W3M, Ghostscript, and
Docbook DSSSL.
Debian and Ubuntu ship a packaged caspar.
If you're interested in a caspar RPM, the spec file on
http://mdcc.cx/pub/caspar/caspar.spec might be helpful.
- gimme some of the stuff you've been smoking! - - - - - - - - - - - - - - - -
"What've you been smoking!? A completely fullblown autoconfiscated tarball for
just a eeny weeny Makefile snippet, to be able to install my hosts
configuration files from CVS!? I'm not gonna install that! No way!"
Well, there's no accounting for taste... If I use the same files on many
hosts, I prefer to install them from a tarball. If you were asked to work with
a caspar-ized CVS tree, you can work around installing the tarball by doing
something like this:
cd ~/cvs/kingkong/include
kingkong is a CVS module, holding files which should get installed on host
kingkong.
Create a file install.mk there, which looks like
csp_UHOST = admin@kingkong.example.org
include caspar/mk/caspar.mk
Now, do
echo caspar >> .cvsignore
mkdir -p caspar/mk
and copy caspar.mk to the just created directory caspar/mk/ .
- hacking on caspar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Since 2009-12, the caspar code is maintained using git on
http://git.mdcc.cx/caspar; start using it by running
git clone http://git.mdcc.cx/caspar.git
.
Contact the author if you'd like to get commit messages in your mailbox. I
might get to setting up a mailinglist for that.
(The page at http://alioth.debian.org/projects/caspar/ is no longer very
useful.)
- some thoughts on include path - - - - - - - - - - - - - - - - - - - - - - - -
The default GNU make include path is .:PREFIX/include:/usr/gnu/include:
/usr/local/include:/usr/include . See make.info, node `Include'. FHS however
says: '/usr/include [...] is where all of the system's general-use include
files for the C and C++ programming languages should be placed.' This makes
GNU make somewhat incompatible with the FHS :( . GNU make could better use
something like '/usr/share/mk' in its default include path.
We work around this by creating the following symlink when being 'make
install'-ed:
/usr/local/include/caspar/mk/caspar.mk ->
/usr/local/share/caspar/mk/caspar.mk
.
This enables us to be able to call
include caspar/mk/caspar.mk
from a Makefile.
- some thoughts on implicit rules - - - - - - - - - - - - - - - - - - - - - - -
Add our implicit pattern rules to Make built-in implicit rules?
When no ./Makefile exists, but ./foo.c does, make knows what to do when asked
to ``make foo''. Furthermore, in absence of ./Makefile, ``TEX=latex make
blah.dvi'' does something sane with blah.tex.
It'd be cool if we could add to Make's built-in implicit rules, and have our
implicit rules work, even if no Makefile exists in the current directory.
However, I don't think this is possible with current (3.80-6) Make. The
built-in implicit rules are compiled in make binary, so adding the caspar ones
to some magic directory will likely not work.
caspar-20220907/missing 0000755 0001750 0001750 00000015336 13774524144 011575 0000000 0000000 #! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard , 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
case $1 in
--is-lightweight)
# Used by our autoconf macros to check whether the available missing
# script is modern enough.
exit 0
;;
--run)
# Back-compat with the calling convention used by older automake.
shift
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
to PROGRAM being missing or too old.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
Supported PROGRAM values:
aclocal autoconf autoheader autom4te automake makeinfo
bison yacc flex lex help2man
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
'g' are ignored when checking the name.
Send bug reports to ."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: unknown '$1' option"
echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
esac
# Run the given program, remember its exit status.
"$@"; st=$?
# If it succeeded, we are done.
test $st -eq 0 && exit 0
# Also exit now if we it failed (or wasn't found), and '--version' was
# passed; such an option is passed most likely to detect whether the
# program is present and works.
case $2 in --version|--help) exit $st;; esac
# Exit code 63 means version mismatch. This often happens when the user
# tries to use an ancient version of a tool on a file that requires a
# minimum version.
if test $st -eq 63; then
msg="probably too old"
elif test $st -eq 127; then
# Program was missing.
msg="missing on your system"
else
# Program was found and executed, but failed. Give up.
exit $st
fi
perl_URL=https://www.perl.org/
flex_URL=https://github.com/westes/flex
gnu_software_URL=https://www.gnu.org/software
program_details ()
{
case $1 in
aclocal|automake)
echo "The '$1' program is part of the GNU Automake package:"
echo "<$gnu_software_URL/automake>"
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
echo "<$gnu_software_URL/autoconf>"
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
autoconf|autom4te|autoheader)
echo "The '$1' program is part of the GNU Autoconf package:"
echo "<$gnu_software_URL/autoconf/>"
echo "It also requires GNU m4 and Perl in order to run:"
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
esac
}
give_advice ()
{
# Normalize program name to check for.
normalized_program=`echo "$1" | sed '
s/^gnu-//; t
s/^gnu//; t
s/^g//; t'`
printf '%s\n' "'$1' is $msg."
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
case $normalized_program in
autoconf*)
echo "You should only need it if you modified 'configure.ac',"
echo "or m4 files included by it."
program_details 'autoconf'
;;
autoheader*)
echo "You should only need it if you modified 'acconfig.h' or"
echo "$configure_deps."
program_details 'autoheader'
;;
automake*)
echo "You should only need it if you modified 'Makefile.am' or"
echo "$configure_deps."
program_details 'automake'
;;
aclocal*)
echo "You should only need it if you modified 'acinclude.m4' or"
echo "$configure_deps."
program_details 'aclocal'
;;
autom4te*)
echo "You might have modified some maintainer files that require"
echo "the 'autom4te' program to be rebuilt."
program_details 'autom4te'
;;
bison*|yacc*)
echo "You should only need it if you modified a '.y' file."
echo "You may want to install the GNU Bison package:"
echo "<$gnu_software_URL/bison/>"
;;
lex*|flex*)
echo "You should only need it if you modified a '.l' file."
echo "You may want to install the Fast Lexical Analyzer package:"
echo "<$flex_URL>"
;;
help2man*)
echo "You should only need it if you modified a dependency" \
"of a man page."
echo "You may want to install the GNU Help2man package:"
echo "<$gnu_software_URL/help2man/>"
;;
makeinfo*)
echo "You should only need it if you modified a '.texi' file, or"
echo "any other file indirectly affecting the aspect of the manual."
echo "You might want to install the Texinfo package:"
echo "<$gnu_software_URL/texinfo/>"
echo "The spurious makeinfo call might also be the consequence of"
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
echo "want to install GNU make:"
echo "<$gnu_software_URL/make/>"
;;
*)
echo "You might have modified some files without having the proper"
echo "tools for further handling them. Check the 'README' file, it"
echo "often tells you about the needed prerequisites for installing"
echo "this package. You may also peek at any GNU archive site, in"
echo "case some other package contains this missing '$1' program."
;;
esac
}
give_advice "$1" | sed -e '1s/^/WARNING: /' \
-e '2,$s/^/ /' >&2
# Propagate the correct exit status (expected to be 127 for a program
# not found, 63 for a program that failed due to version mismatch).
exit $st
# Local variables:
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
caspar-20220907/INSTALL 0000644 0001750 0001750 00000036614 13774524144 011231 0000000 0000000 Installation Instructions
*************************
Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.
Basic Installation
==================
Briefly, the shell command './configure && make && make install'
should configure, build, and install this package. The following
more-detailed instructions are generic; see the 'README' file for
instructions specific to this package. Some packages provide this
'INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
The 'configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a 'Makefile' in each directory of the package.
It may also create one or more '.h' files containing system-dependent
definitions. Finally, it creates a shell script 'config.status' that
you can run in the future to recreate the current configuration, and a
file 'config.log' containing compiler output (useful mainly for
debugging 'configure').
It can also use an optional file (typically called 'config.cache' and
enabled with '--cache-file=config.cache' or simply '-C') that saves the
results of its tests to speed up reconfiguring. Caching is disabled by
default to prevent problems with accidental use of stale cache files.
If you need to do unusual things to compile the package, please try
to figure out how 'configure' could check whether to do them, and mail
diffs or instructions to the address given in the 'README' so they can
be considered for the next release. If you are using the cache, and at
some point 'config.cache' contains results you don't want to keep, you
may remove or edit it.
The file 'configure.ac' (or 'configure.in') is used to create
'configure' by a program called 'autoconf'. You need 'configure.ac' if
you want to change it or regenerate 'configure' using a newer version of
'autoconf'.
The simplest way to compile this package is:
1. 'cd' to the directory containing the package's source code and type
'./configure' to configure the package for your system.
Running 'configure' might take a while. While running, it prints
some messages telling which features it is checking for.
2. Type 'make' to compile the package.
3. Optionally, type 'make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.
4. Type 'make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the 'make install' phase executed with root
privileges.
5. Optionally, type 'make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
regular user, particularly if the prior 'make install' required
root privileges, verifies that the installation completed
correctly.
6. You can remove the program binaries and object files from the
source code directory by typing 'make clean'. To also remove the
files that 'configure' created (so you can compile the package for
a different kind of computer), type 'make distclean'. There is
also a 'make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
7. Often, you can also type 'make uninstall' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide 'make
distcheck', which can by used by developers to test that all other
targets like 'make install' and 'make uninstall' work correctly.
This target is generally not run by end users.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the 'configure' script does not know about. Run './configure --help'
for details on some of the pertinent environment variables.
You can give 'configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here is
an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU 'make'. 'cd' to the
directory where you want the object files and executables to go and run
the 'configure' script. 'configure' automatically checks for the source
code in the directory that 'configure' is in and in '..'. This is known
as a "VPATH" build.
With a non-GNU 'make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use 'make distclean' before
reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple '-arch' options to the
compiler but only a single '-arch' option to the preprocessor. Like
this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
using the 'lipo' tool if you have problems.
Installation Names
==================
By default, 'make install' installs the package's commands under
'/usr/local/bin', include files under '/usr/local/include', etc. You
can specify an installation prefix other than '/usr/local' by giving
'configure' the option '--prefix=PREFIX', where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like '--bindir=DIR' to specify different values for particular
kinds of files. Run 'configure --help' for a list of the directories
you can set and what kinds of files go in them. In general, the default
for these options is expressed in terms of '${prefix}', so that
specifying just '--prefix' will affect all of the other directory
specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the
correct locations to 'configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
'make install' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
affected directory. For example, 'make install
prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of
'${prefix}'. Any directories that were specified during 'configure',
but not in terms of '${prefix}', must each be overridden at install time
for the entire installation to be relocated. The approach of makefile
variable overrides for each directory variable is required by the GNU
Coding Standards, and ideally causes no recompilation. However, some
platforms have known limitations with the semantics of shared libraries
that end up requiring recompilation when using this method, particularly
noticeable in packages that use GNU Libtool.
The second method involves providing the 'DESTDIR' variable. For
example, 'make install DESTDIR=/alternate/directory' will prepend
'/alternate/directory' before all installation names. The approach of
'DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of '${prefix}'
at 'configure' time.
Optional Features
=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving 'configure' the
option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
Some packages pay attention to '--enable-FEATURE' options to
'configure', where FEATURE indicates an optional part of the package.
They may also pay attention to '--with-PACKAGE' options, where PACKAGE
is something like 'gnu-as' or 'x' (for the X Window System). The
'README' should mention any '--enable-' and '--with-' options that the
package recognizes.
For packages that use the X Window System, 'configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the 'configure' options '--x-includes=DIR' and
'--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the
execution of 'make' will be. For these packages, running './configure
--enable-silent-rules' sets the default to minimal output, which can be
overridden with 'make V=1'; while running './configure
--disable-silent-rules' sets the default to verbose, which can be
overridden with 'make V=0'.
Particular systems
==================
On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
HP-UX 'make' updates targets which have the same time stamps as their
prerequisites, which makes it generally unusable when shipped generated
files such as 'configure' are involved. Use GNU 'make' instead.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its '' header file. The option '-nodtk' can be used as a
workaround. If GNU CC is not installed, it is therefore recommended to
try
./configure CC="cc"
and if that doesn't work, try
./configure CC="cc -nodtk"
On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
directory contains several dysfunctional programs; working variants of
these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
in your 'PATH', put it _after_ '/usr/bin'.
On Haiku, software installed for all users goes in '/boot/common',
not '/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common
Specifying the System Type
==========================
There may be some features 'configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, 'configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
'--build=TYPE' option. TYPE can either be a short name for the system
type, such as 'sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS
KERNEL-OS
See the file 'config.sub' for the possible values of each field. If
'config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option '--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with '--host=TYPE'.
Sharing Defaults
================
If you want to set default values for 'configure' scripts to share,
you can create a site shell script called 'config.site' that gives
default values for variables like 'CC', 'cache_file', and 'prefix'.
'configure' looks for 'PREFIX/share/config.site' if it exists, then
'PREFIX/etc/config.site' if it exists. Or, you can set the
'CONFIG_SITE' environment variable to the location of the site script.
A warning: not all 'configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to 'configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the 'configure' command line, using 'VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified 'gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
Autoconf limitation. Until the limitation is lifted, you can use this
workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
'configure' Invocation
======================
'configure' recognizes the following options to control how it
operates.
'--help'
'-h'
Print a summary of all of the options to 'configure', and exit.
'--help=short'
'--help=recursive'
Print a summary of the options unique to this package's
'configure', and exit. The 'short' variant lists options used only
in the top level, while the 'recursive' variant lists options also
present in any nested packages.
'--version'
'-V'
Print the version of Autoconf used to generate the 'configure'
script, and exit.
'--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally 'config.cache'. FILE defaults to '/dev/null' to
disable caching.
'--config-cache'
'-C'
Alias for '--cache-file=config.cache'.
'--quiet'
'--silent'
'-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to '/dev/null' (any error
messages will still be shown).
'--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
'configure' can determine that directory automatically.
'--prefix=DIR'
Use DIR as the installation prefix. *note Installation Names:: for
more details, including other options available for fine-tuning the
installation locations.
'--no-create'
'-n'
Run the configure checks, but stop before creating any output
files.
'configure' also accepts some other, not widely useful, options. Run
'configure --help' for more details.
caspar-20220907/setversion 0000755 0001750 0001750 00000001461 13721721100 012276 0000000 0000000 # This file is maintained at http://git.mdcc.cx/caspar
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
##if test -e stamp.day -a -e stamp.month -a -e stamp.year -a -e VERSION
##then
# user has overwritten autogenerated version
date=$( echo -n $(cat VERSION) )
# echo 'm4_define([CASPAR_VERSION], ['$date'])' > VERSION.m4
echo 'm4_define([AD1_VERSION], ['`date +%Y%m%d`'])' > VERSION.m4
##else
echo 'm4_define([AD1_VERSION], ['`date +%Y%m%d`'])' > VERSION.m4
# echo 'm4_define([CASPAR_VERSION], ['`date +%Y%m%d`'])' > VERSION.m4
# compatibility with other mdcc.cx/ad1810 packages
date +%Y%m%d > VERSION
# zoem stuff
date +%e > stamp.day
date +%b > stamp.month
date +%Y > stamp.year
##fi
caspar-20220907/Makefile.in 0000644 0001750 0001750 00000065315 14306130117 012226 0000000 0000000 # Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/VERSION.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
install-exec-recursive install-html-recursive \
install-info-recursive install-pdf-recursive \
install-ps-recursive install-recursive installcheck-recursive \
installdirs-recursive pdf-recursive ps-recursive \
tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(docdir)"
DATA = $(doc_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
$(RECURSIVE_TARGETS) \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope distdir distdir-am dist dist-all distcheck
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \
INSTALL NEWS README THANKS TODO install-sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
if test -d "$(distdir)"; then \
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -rf "$(distdir)" \
|| { sleep 5 && rm -rf "$(distdir)"; }; \
else :; fi
am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz
GZIP_ENV = --best
DIST_TARGETS = dist-xz dist-gzip
# Exists only to be overridden by the user if desired.
AM_DISTCHECK_DVI_TARGET = dvi
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
PACKAGE = @PACKAGE_TARNAME@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = $(datadir)/doc/$(PACKAGE)
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
CONFIGURE_DEPENDENCIES = VERSION.m4
AUTOMAKE_OPTIONS = dist-xz check-news
SUBDIRS = doc mk sgml script
doc_DATA = AUTHORS COPYING ChangeLog README THANKS TODO NEWS
MY_RHOST = beskar.mdcc.cx
MY_RDIR = $(MY_RHOST):www/mdcc.cx/pub/caspar/
EXTRA_DIST = bootstrap setversion stamp.day stamp.month stamp.year VERSION.m4 VERSION
DISTCLEANFILES = VERSION.m4 VERSION stamp.day stamp.month stamp.year
all: all-recursive
.SUFFIXES:
am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
$(am__cd) $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):
install-docDATA: $(doc_DATA)
@$(NORMAL_INSTALL)
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
done
uninstall-docDATA:
@$(NORMAL_UNINSTALL)
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
@fail=; \
if $(am__make_keepgoing); then \
failcom='fail=yes'; \
else \
failcom='exit 1'; \
fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-recursive
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscope: cscope.files
test ! -s cscope.files \
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
clean-cscope:
-rm -f cscope.files
cscope.files: clean-cscope cscopelist
cscopelist: cscopelist-recursive
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@case `sed 15q $(srcdir)/NEWS` in \
*"$(VERSION)"*) : ;; \
*) \
echo "NEWS not updated; not releasing" 1>&2; \
exit 1;; \
esac
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
$(am__make_dryrun) \
|| test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
-test -n "$(am__skip_mode_fix)" \
|| find "$(distdir)" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
$(am__post_remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__post_remove_distdir)
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__post_remove_distdir)
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
dist-zstd: distdir
tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
$(am__post_remove_distdir)
dist-tarZ: distdir
@echo WARNING: "Support for distribution archives compressed with" \
"legacy program 'compress' is deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
@echo WARNING: "Support for shar distribution archives is" \
"deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
$(am__post_remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__post_remove_distdir)
dist dist-all:
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
$(am__post_remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
*.tar.zst*) \
zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build/sub \
&& ../../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
--srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
$(am__post_remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@test -n '$(distuninstallcheck_dir)' || { \
echo 'ERROR: trying to run $@ with an empty' \
'$$(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
$(am__cd) '$(distuninstallcheck_dir)' || { \
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(DATA)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(docdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am: install-docDATA
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-docDATA
.MAKE: $(am__recursive_targets) install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--refresh check check-am clean clean-cscope clean-generic \
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
dist-zstd distcheck distclean distclean-generic distclean-tags \
distcleancheck distdir distuninstallcheck dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-docDATA install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am uninstall-docDATA
.PRECIOUS: Makefile
ChangeLog: NEWS
git log --pretty --numstat --summary | sed 's/][^>]*>//g; s/][^>]*>//g' | git2cl >ChangeLog
VERSION.m4 VERSION stamp.year stamp.month stamp.day: ChangeLog
$(top_srcdir)/setversion
sign:
for i in $(DIST_ARCHIVES); do echo "gpg --armor --detach-sign $$i"; gpg --armor --detach-sign $$i; done
publish:
for i in $(DIST_ARCHIVES); do echo "scp $$i $$i.asc $(MY_RDIR)"; scp $$i $$i.asc $(MY_RDIR); done
@echo now run ssh $(MY_RHOST) update-tar-symlinks caspar
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
caspar-20220907/doc/ 0000755 0001750 0001750 00000000000 14306131360 010775 5 0000000 0000000 caspar-20220907/doc/csp_sucp.1 0000644 0001750 0001750 00000000036 14306130401 012610 0000000 0000000 .\" foo
.so man1/csp_helper.1
caspar-20220907/doc/csp_helper.1 0000644 0001750 0001750 00000007537 14306130432 013136 0000000 0000000 .\" Copyright (c) 2022 Joost van Baal-Ilić
.TH "csp_helper" 1 "7 сеп 2022" "csp_helper 20220907" "USER COMMANDS "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
csp_helper \- A collection of caspar helper scripts
.SH SYNOPSIS
\fBcsp_install\fP \fBdir\fP (\fIdirectory\fP) \fBfile\fP (\fIfile\fP)
\fBcsp_mkdircp\fP \fBdir\fP (\fIdirectory\fP) \fBfile\fP (\fIfile\fP)
\fBcsp_scp_keep_mode\fP \fBh\fP (\fI[user@]host\fP) \fBdir\fP (\fIdirectory\fP) \fBfile\fP (\fIfile\fP)
\fBcsp_sucp\fP
\fBh\fP (\fI[user@]host\fP)
\fBdir\fP (\fIdirectory\fP)
\fBfile\fP (\fIfile\fP)
.SH DESCRIPTION
The scripts \fBcsp_install\fP, \fBcsp_mkdircp\fP, \fBcsp_scp_keep_mode\fP and \fBcsp_sucp\fP are helpers for
\fBcaspar(7)\fP\&. These scripts typically are not invoked directly,
but via a Makefile which uses \fBcaspar\fP\&. See the notes on csp_PUSH in
\fBcaspar(7)\fP for information on how to link \fBcsp_install\fP,
\fBcsp_scp_keep_mode\fP and \fBcsp_sucp\fP to \fBcaspar\fP\&.
.SH install DESCRIPTION
\fBcsp_install\fP creates the required directory (if needed) and installs the file,
preserving timestamps\&. It uses install(1)\&.
.SH install EXAMPLES
.di ZV
.in 0
.nf \fC
csp_INSTALL_OPTIONS=\&'--owner=www-data --group=www-data\&' \e
csp_INSTALL_MODE=ugo=r \e
csp_install /srv/www index\&.html
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.di ZV
.in 0
.nf \fC
csp_INSTALL_MODE=u=rwx,go= csp_install /usr/local/sbin mkpasswd
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.SH install ENVIRONMENT
\fBcsp_install\fP honors csp_INSTALL_OPTIONS and csp_INSTALL_MODE (default is
u=rw,go=r)\&.
.SH mkdircp DESCRIPTION
\fBcsp_mkdircp\fP calls mkdir(1) and cp(1)\&.
\fBcsp_mkdircp\fP is used like csp_CP\&. use \fBcsp_mkdircp\fP if you frequently have to
bootstrap installation on a fresh system, on which needed directories don\&'t
exist yet\&. \fBcsp_mkdircp\fP makes sure the target directory exists before calling
cp(1), by calling mkdir -p first\&.
.SH scp_keep_mode DESCRIPTION
\fBcsp_scp_keep_mode\fP uses ssh to copy a file to a remote host, keeping its file
permission mode\&. The trick used is a combination of mktemp(1) and mv(1)\&.
Useful if you\&'d like to be sure a file gets installed e\&.g\&. group writable,
without fiddling with permission bits on the remote host\&.
.SH scp_keep_mode EXAMPLE
.di ZV
.in 0
.nf \fC
chmod g+w rc
csp_scp_keep_mode root@gandalf /etc/uruk rc
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.SH scp_keep_mode ENVIRONMENT
\fBcsp_scp_keep_mode\fP honors csp_SSH ("ssh" by default)\&.
.SH sucp DESCRIPTION
\fBcsp_sucp\fP calls tar(1) from within sudo(1) from within ssh(1)\&. This allows one
to copy files to accounts on hosts one can only reach by calling sudo on the
ssh-reachable remote host\&.
Typically, one wants to install a root-owned file, but one does not want to
allow access to the root-account directly from ssh\&. Typically sudo is used as
an extra line of defense\&.
NB: if your sudo prompts for a password, be sure to have line
.di ZV
.in 0
.nf \fC
Defaults !tty_tickets
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
in your sudoers file: we first call sudo -v, than we call sudo to write the
data\&. Since we use ssh to get to the host, we\&'ll use a different tty for both
sudo calls\&.
.SH sucp EXAMPLES
Some examples:
.di ZV
.in 0
.nf \fC
csp_sucp rms@bilbo /etc fstab
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.di ZV
.in 0
.nf \fC
csp_sucp monty-python commit/ trailer\&.txt
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.SH AUTHOR
Joost van Baal-Ilić
.SH SEE ALSO
\fBcaspar(7)\fP
The caspar homepage is at http://mdcc\&.cx/caspar/ \&.
caspar-20220907/doc/caspar.txt 0000644 0001750 0001750 00000044021 14306131350 012727 0000000 0000000 7 сеп 2022 caspar 20220907
1.
NAME
2.
SYNOPSIS
3.
DESCRIPTION
4.
USAGE
5.
VARIABLES
6.
EXAMPLES
7.
FILES
8.
ENVIRONMENT
9.
BUGS
10.
TRIVIA
11.
AUTHOR
12.
SEE ALSO
NAME
caspar - Makefile snippets for common tasks
SYNOPSIS
In a Makefile, write 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
(configuration) files, 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 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 tree which typically holds configuration files, managed using
Subversion (or git or any other version control system, for that matter).
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.
It is comparable with other tools for Unix system administrators like puppet
and cfengine. Main difference: the caspar code consists of less than 100 lines
of GNU Make.
USAGE
Within a CVS tree, create a file include/install.mk, with contents like e.g.
csp_UHOST = 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
. If you'd like to use the install-recursive target too, in directories which
hold subdirectories (but not files), you'll have to create a Makefile which
looks something like
include ../../include/install.mk
. From within the CVS tree, one can call:
make -diff make -install make diff make install make load
make make install-recursive
Calling make -diff shows the diff between the local file and the file
as currently installed on the remote location. Calling make install (or make)
now will scp all files in the current directory to the remote location. The
install-recursive target descends down the tree, and calls make install in each
subdirectory.
Of course, you'll have to be able to ssh directly as root to the remote host to
get this working (if you'd like to use csp_UHOST = root@some.host.somewhere).
If you don't like this, and would like to have a PermitRootLogin no in your /
etc/ssh/sshd_config, you can use csp_sucp(1). See below.
VARIABLES
The variables one can set in a calling Makefile are:
csp_UHOST
user@host, reachable using $(csp_PUSH) (which is scp by default)
csp_UHOSTS
space separated list of user@host items, reachable using $(csp_PUSH)
csp_DIR
directory on host, reachable using function $(csp_PUSH)
csp_PUSH
make function for pushing files to remote location. Usually, this is a wrapper
around a script or program. The function will be passed 4 arguments: [user@]
host, remote directory and local filename. [user@]host will be set to all
elements of $(csp_UHOSTS); directory will be set to $(csp_DIR). Currently, $
(csp_scp_FUNC), $(csp_cp_FUNC) and $(csp_sucp_FUNC) are supported as push
plugins. If csp_PUSH is unset, the default $(csp_scp_FUNC) is used.
csp_LOAD
the `load' target depends upon these targets.
csp_BUILD
the `build' target depends upon these targets.
csp_CP
cp binary, just "cp" by default
csp_SCP
scp binary, just "scp" by default
csp_SUCP
script wrapping sudo in ssh, "csp_sucp" by default
csp_EXTRAFILES
extra files which should be installed. Can be used to include files starting
with a dot.
csp_TABOOFILES
files which should never be installed. Set to Makefile .%.swp %~ #%#
pod2htmd.tmp pod2htmi.tmp by default.
csp_TABOOFILES_ADD
extra files which should never be installed; added to list in csp_TABOOFILES.
csp_TABOOFILES_SKIP
files which should be installed, even if in initial csp_TABOOFILES list.
Removed from csp_TABOOFILES list.
csp_TABOODIRS
directories to exclude in install-recursive target. set to CVS .svn by default.
csp_TABOODIRS_ADD, csp_TABOODIRS_SKIP
see csp_TABOOFILES equivalents.
csp_UHOSTS_SUBSET
override csp_UHOSTS: don't push to csp_UHOSTS, but to the intersection of this
space separated list of user@host items and csp_UHOSTS.
The following variables might get phased out or removed soonish:
csp_CPFLAGS
extra arguments to pass to cp invocation, none by default
csp_SCPFLAGS
extra arguments to pass to scp invocation, e.g. '-i .ssh/id_rsa-root'
EXAMPLES
Some examples:
Using csp_UHOST
This is the simplest way to use caspar. Makefile is
csp_UHOST = root@some.host.somewhere csp_DIR = /etc/ include caspar/mk/
caspar.mk
Now, running "make" will scp all files in the current directory to
root@some.host.somewhere:/etc/.
More hosts, not scp but sudo via ssh: using csp_PUSH
Makefile is
csp_UHOSTS = root@some.host.somewhere root@some.other.host csp_PUSH = $
(csp_sucp_FUNC) csp_DIR = /etc/ include caspar/mk/caspar.mk
Now, running "make" will use csp_sucp(1) to install all files in the current
directory to both root@some.host.somewhere:/etc/ and root@some.other.host:/etc
/. If a file named fstab is present in the current directory, running "make
fstab-install" will just install that one file. If you need to sudo(1) to
another user on the remote host, add something like
csp_XARG = postgres
. (If such a username is not supplied, sudo (and csp_sucp) use the default:
root.)
Overriding csp_UHOSTS: csp_UHOSTS_SKIP
If one or some of your hosts are temporarily unavailable, and you'd like to
push your files to the hosts which are alive, you can temporarily override your
csp_UHOSTS. E.g., when some.other.host is not available:
% cat Makefile csp_UHOSTS = root@some.host.somewhere root@some.other.host
csp_DIR = /etc/ include caspar/mk/caspar.mk % make install csp_UHOSTS_SKIP=
root@some.other.host scp hosts root@some.host.somewhere:/etc/ scp fstab
root@some.host.somewhere:/etc/
Overriding csp_UHOSTS in a smart way: csp_UHOSTS_SUBSET. Using multiple groups
of hosts. Recursive make made easy.
If you have lots of subdirectories holding information for lots of groups of
hosts, while this run you just want to install for a small group (or 1) hosts,
csp_UHOSTS_SUBSET is useful. Suppose your casparized tree looks like
Makefile apache/include/install.mk apache/etc/apache2/Makefile apache/etc/
apache2/envvars php/include/install.mk php/etc/php4/apache/Makefile php/etc/
php4/apache/php.ini grub/include/install.mk grub/boot/grub/Makefile grub/boot/
grub/menu.lst logrotate/include/install.mk logrotate/etc/Makefile logrotate/etc
/logrotate.conf nrpe/include/install.mk nrpe/debian/etc/default/Makefile nrpe/
debian/etc/default/nagios-nrpe-server
The file apache/etc/apache2/Makefile is:
csp_DIR = /etc/apache2/ include ../../include/install.mk
(all other Makefiles are similar). The file apache/include/install.mk is
csp_UHOSTS = root@a root@b include caspar/mk/caspar.mk
The file php/include/install.mk is the same. The files grub/include/install.mk
and logrotate/include/install.mk are
csp_UHOSTS = root@d root@e root@f root@g include caspar/mk/caspar.mk
The file nrpe/include/install.mk is
csp_UHOSTS = root@d root@e root@f root@n include caspar/mk/caspar.mk
The toplevel Makefile is
dirs = $(patsubst %/Makefile,%,$(shell find * -mindepth 1 -name Makefile)) all:
for i in $(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i; done install for i in $
(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i install; done load for i in $(dirs); do
$(MAKE) -$(MAKEFLAGS) -C $$i load; done
(we don't feel like sticking a Makefile in all non-leaf nodes of our tree).
Now, when running "csp_UHOSTS_SUBSET='root@e root@f root@m root@n' make" in the
toplevel, caspar just takes the intersection of csp_UHOSTS_SUBSET and
csp_UHOSTS for each csp_UHOSTS list. So, caspar will not push anything for
apache/ and php/. The files grub/boot/grub/menu.lst and logrotate/etc/
logrotate.conf will get pushed to root@e and root@f only. The file nrpe/debian/
etc/default/nagios-nrpe-server will get pushed to root@e, root@f and root@n.
This is often better than just overriding csp_UHOSTS on the commandline (or in
your shell's environment): if the intersection of the original csp_UHOSTS and
your new csp_UHOSTS is empty, chances are big you've just forgotten to clean
your environment.
Creating remote directories if needed
Makefile is
csp_DIR = /some/dir/ectory/ csp_PUSH = $(csp_scpmkdir_FUNC) csp_UHOST =
root@some.host.somewhere include caspar/mk/caspar.mk
Now, before calling scp, caspar will run 'mkdir -p' to create any missing
remote directories.
Using csp_CP and csp_LOAD
username/etc/Makefile is
csp_UHOST = dummy csp_PUSH = $(csp_cp_FUNC) csp_DIR = $(HOME)/etc/ csp_LOAD =
crontab-load include ../include/install.mk crontab-load = crontab $(csp_DIR)/
crontab
while ../include/install.mk is just
include caspar/mk/caspar.mk
. Setting csp_PUSH to $(csp_cp_FUNC) causes cp(1) to get executed by "make
install" (not scp(1)). Setting csp_LOAD causes "make load" to execute the
crontab command. Just running "make" is OK too, since "make" calls both "make
install" and "make load".
Using csp_DIR, csp_LOAD and install(1)
To install a file on the local host, create e.g. a file etc/uruk/Makefile like:
csp_UHOST = dummy csp_DIR = /etc/uruk/ csp_PUSH = $(csp_install_FUNC) csp_LOAD
= uruk-load include caspar/mk/caspar.mk uruk-load = sudo invoke-rc.d uruk
force-reload
Using csp_DIR and csp_LOAD, take 2
etc/Makefile is
csp_DIR = /etc/ csp_LOAD = aliases-load include ../include/install.mk
aliases-load = $(csp_SSH) $1 "cd /etc && postalias aliases; postfix reload"
while ../include/install.mk is
csp_UHOST = root@some.host.somewhere include caspar/mk/caspar.mk
Building files locally
Note: csp_BUILD is deprecated. You should not use it. If you'd like to build
some files locally from local sources, before installing the just built files,
do e.g.:
csp_UHOST = root@some.host.somewhere csp_DIR = /etc/ csp_EXTRAFILES =
sshd_config csp_TABOOFILES_ADD = sshd_config.m4 include caspar/mk/caspar.mk
sshd_config: sshd_config.m4 m4 $< > $@
List all source files in csp_TABOOFILES_ADD: this way, they won't get installed
on the csp_UHOST.
Using csp_sucp_FUNC and csp_LOAD
If you'd like to use csp_sucp and want a `load' target, do something like:
csp_PUSH = $(csp_sucp_FUNC) csp_UHOST = foobar.example.com csp_DIR = /etc/uruk/
csp_LOAD = rc-load include caspar/mk/caspar.mk rc-load = $(csp_SSH) $1 sudo
invoke-rc.d uruk force-reload
Using the "verify" target
If you want to do some syntax check on the local host for a configuration file,
define a -verify target (or pattern target):
bar.pem-verify: bar.pem.asc bar.pem gpg --verify $^ %.php-verify: %.php php -l
$<
This command will be invoked when you "make verify" and "make install".
Using the "check" target
If you want to do some syntax check on the remote host, before loading the just
installed configuration file, do
csp_UHOST = foobar.example.com csp_DIR = /etc/ csp_LOAD = my-load csp_CHECK =
my-check my-check = $(csp_SSH) $1 do-check-stuff my-load = $(csp_SSH) $1
do-load-stuff include caspar/mk/caspar.mk
This way, "make load" won't cause the file to load if the check fails (which is
probably what you want). You could even give the file a temporary name and have
the load target rename it to its real name only after a successful check. As a
convenience, if a foo-check variable is defined, it is automatically added as a
dependency for any csp_LOAD targets named foo or foo-something.
Combining the csp_LOAD target with multiple hosts; building files remotely
Here's an example doing some preprocessing on the remote hosts before reloading
the configuration:
csp_DIR = /etc/ssh/ csp_UHOSTS = root@some.host.somewhere root@some.other.host
csp_LOAD = sshd_config-load sshd_config-load = $(csp_SSH) $1 "set -e; \ cd $
(csp_DIR); \ m4 sshd_config.m4 >sshd_config; \ service ssh reload" include
caspar/mk/caspar.mk
(The old, deprecated way is to explicitly specify the loop over the hosts:
csp_DIR = /etc/ssh/ sshd_config-load: for suh in $(csp_UHOSTS); do \ $(csp_SSH)
$$suh "set -e; cd $(csp_DIR); \ m4 sshd_config.m4 > sshd_config; \ service ssh
reload"; \ done
. You should not use this method. Please consider rewriting any existing caspar
snippets using the simpler method described above.)
Using the csp_TABOOFILES_{ADD,SKIP} variables; another way to perform remote
builds
Using the csp_TABOOFILES_{ADD,SKIP} variables is handy if you want to install a
Makefile, instead of using it: Create Makefile just as you'd like to have it
installed on the remote location. Now, create GNUmakefile as e.g.
csp_TABOOFILES_SKIP = Makefile csp_TABOOFILES_ADD = GNUmakefile csp_DIR = /etc/
foobar/ csp_UHOST = root@some.host.somewhere include caspar/mk/caspar.mk load:
$(csp_SSH) $(csp_UHOST) "make -C $(csp_DIR)"
Now, make install and make load will do the right thing.
Using the csp_EXTRAFILES variable
Using the csp_EXTRAFILES variable can be handy if you want to install files
with a leading dot. E.g.:
csp_EXTRAFILES = .bashrc csp_UHOST = root@some.host.somewhere csp_DIR = include
caspar/mk/caspar.mk
Overriding csp_UHOSTS
Supply e.g.
csp_UHOSTS = root@localhost root@some.host.somewhere
in install.mk, to install on multiple hosts. Run
make filename-install csp_UHOSTS=joe@otherhost
to install filename as joe@otherhost, instead of the default as given in
install.mk. If you want to enable passing csp_UHOSTS as a shell environment
variable, you'll have to use conditional assignment in your Makefile:
csp_UHOSTS ?= root@localhost root@some.host.somewhere
This allows it to run
% export csp_UHOSTS=foo@bar % make filename-install
to install on foo@bar.
Using sudo locally for installing files
If you'd like to install files like
sudo cp foo.rc /etc/foobar/
you could set up your Makefile as
csp_DIR = /etc/foobar/ csp_UHOST = dummy csp_PUSH = sudo cp $(1) $(3) include
caspar/mk/caspar.mk
This is like csp_sucp, but without the ssh wrapping: it works on localhost
only.
Plugging your own install script in caspar
If your script foobar should be called as e.g.
foobar --file=fstab --user@host=joe@some.host \ --dir=/etc/ --debuglevel=3
then make sure your Makefile features something like
csp_foobar_FUNC = foobar --file=$(1) --user@host=$(2) \ --dir=$(3) --debuglevel
=$(4) csp_PUSH = $(csp_foobar_FUNC) csp_XARG = 3
You can now use csp_UHOST and csp_DIR just as you're used to.
More advanced tricks
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
on some.host.somewhere (e.g. from cron).
FILES
caspar/mk/caspar.mk, caspar/mk/docbook.mk, caspar/mk/pod.mk
ENVIRONMENT
For caspar.mk: csp_CP, csp_LOAD, csp_SCP, csp_UHOST, csp_PUSH, ...
BUGS
Very likely, GNU Make is not the best tool for doing the stuff caspar.mk is
doing. For the list of reported bugs, see http://bugs.debian.org/src:caspar.
See also TODO, 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-Ilić
SEE ALSO
caspar-typesetting(7) csp_helper(1)
The caspar homepage is at http://mdcc.cx/caspar/ .
The document "Versiebeheer en software-packages: Waarom en Hoe" (in Dutch)
describes some of the reasons why people might want to use tools like caspar.
Jeroen Hoppenbrouwers blogs about the way he uses caspar, in "Using Subversion
and Caspar to maintain a Linux host".
Lots of tools overlap (partly) with caspar in their functionality. Here's a
list.
ansible (http://www.ansible.com/); code is on github (https://github.com/
ansible/ansible)
cfengine (http://www.cfengine.org/), by Mark Burgess e.a., builds expert
systems to administrate and configure large computer networks: it delivers a
very big superset of caspar's installation mechanism.
Puppet (http://reductivelabs.com/projects/puppet), also something like a
configuration management system.
Here's an older list; a big part of it was collected by Ray Miller (http://
users.ox.ac.uk/~raym/) of Oxford University, and published in the article
"Configuration Management with Subversion, YAML and Perl Template Toolkit" in
the SANE 2006 (http://www.sane.nl/sane2006/) conference proceedings. FIXME:
Check urls, update
docbookmk, by Michael Wiedmann (http://www.miwie.org/docbkmake/) offers
probably a superset of Caspar's docbook.mk functionality.
latex-make by the LaTeX Utils project on http://gforge.inria.fr/projects/
latex-utils/ seems to provide similar functionality as docbook.mk for LaTeX
documents.
Latexmk by John Collins e.a. on http://www.phys.psu.edu/~collins/software/
latexmk-jcc/ is another implementation of this idea.
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.
PIKT (http://www.pikt.org/) is intended primarily for system monitoring, but
does do configuration management too.
LCFG (http://www.lcfg.org/) is another configuration management system.
The Arusha Project (ARK, at http://ark.sf.net/) provides a framework for
collaborative system administration.
Bcfg2 (http://trac.mcs.anl.gov/projects/bcfg2/) is yet another configuration
management system.
quattor (http://quattor.web.cern.ch/) is a system administration toolkit for
installation, configuration and management of Unix systems.
rb3 and friends, as written and used by Ray Miller e.a. at Oxford University, (
http://users.ox.ac.uk/~raym/software/configuration-management/).
The svk version control system is said to be quite usable for handling
configuration file management (without a separate install mechanism like
caspar). See also this discussion on the Debian development list.
On the http://www.infrastructures.org/ website on automated (Unix) system
administration, you can find some thoughts on managing configuration files
using a version control system.
caspar-20220907/doc/casparize.azm 0000644 0001750 0001750 00000005377 13721721100 013420 0000000 0000000 \: vim:syntax=tex
\: this is a manpage in zoem format. see http://micans.org/zoem/ and man_zmm(7)
\: This file is maintained at http://git.mdcc.cx/caspar
\: casparize script manpage
\: Copyright (C) 2009 Jeroen Hoppenbrouwers
\:
\: This program is free software: you can redistribute it and/or modify
\: it under the terms of the GNU General Public License as published by
\: the Free Software Foundation, either version 3 of the License, or
\: (at your option) any later version.
\:
\: This program is distributed in the hope that it will be useful,
\: but WITHOUT ANY WARRANTY; without even the implied warranty of
\: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\: GNU General Public License for more details.
\:
\: You should have received a copy of the GNU General Public License
\: along with this program. If not, see .
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{casparize}
{html_title}{casparize}
{section}{1}
\man_share
}
\${html}{\"pud::man::maketoc"}
\def{caspar}{\bf{caspar}}
\def{casparize}{\bf{casparize}}
\sec{name}{NAME}
\NAME{casparize}{Set up \caspar Makefile in a new directory}
\sec{synopsis}{SYNOPSIS}
\par{
\casparize
\synreqopt{dir}{/path/to/config/dir}
}
\par{
\casparize
\synreqopt{file}{/path/to/config/dir/file}
}
\sec{description}{DESCRIPTION}
\casparize creates a new configuration working directory in your current
working directory, sets up a Makefile for \sibref{caspar}{caspar(7)} in
this new directory,
and optionally copies an original configuration file from its original
system place to the newly created configuration working directory.
\sec{usage}{USAGE}
You typically use \casparize when you already have created the root
configuration working directory with its include directory and install.mk
Caspar include file. By analysing your current working directory and the
configuration directory path you give on the command line, casparize can
deduce the contents of the Makefile in the newly created configuration
working directory. It creates the new directory, creates the correct
Makefile, and optionally copies the given configuration file in the new
directory, ready for its first version commit.
\sec{examples}{EXAMPLES}
A typical example:
\verbatim{
$ cd /etc
$ casparize /etc/postfix/main.cf}
creates the directory /etc/postfix, creates /etc/postfix/Makefile
including the proper content, and copies /etc/postfix/main.cf into
/etc/postfix/main.cf. You can now directly add and commit the new
directory.
\sec{bugs}{BUGS}
Non known at this moment.
\sec{author}{AUTHOR}
Jeroen Hoppenbrouwers
\sec{seealso}{SEE ALSO}
\sibref{caspar}{caspar(7)}
The caspar homepage is at \httpref{http://mdcc.cx/caspar/} .
\end{pud::man}
caspar-20220907/doc/csp_helper.html 0000644 0001750 0001750 00000022760 14306130464 013742 0000000 0000000
csp_helper
7 сеп 2022
csp_helper
20220907
NAME
csp_helper — A collection of caspar helper scripts
SYNOPSIS
csp_install dir (directory) file (file)
csp_mkdircp dir (directory) file (file)
csp_scp_keep_mode h ([user@]host) dir (directory) file (file)
csp_sucp
h ([user@]host)
dir (directory)
file (file)
DESCRIPTION
The scripts csp_install, csp_mkdircp, csp_scp_keep_mode and csp_sucp are helpers for
caspar(7). These scripts typically are not invoked directly,
but via a Makefile which uses caspar. See the notes on csp_PUSH in
caspar(7) for information on how to link csp_install,
csp_scp_keep_mode and csp_sucp to caspar.
install DESCRIPTION
csp_install creates the required directory (if needed) and installs the file,
preserving timestamps. It uses install(1).
install EXAMPLES
csp_INSTALL_OPTIONS='--owner=www-data --group=www-data' \
csp_INSTALL_MODE=ugo=r \
csp_install /srv/www index.html
csp_INSTALL_MODE=u=rwx,go= csp_install /usr/local/sbin mkpasswd
install ENVIRONMENT
csp_install honors csp_INSTALL_OPTIONS and csp_INSTALL_MODE (default is
u=rw,go=r).
mkdircp DESCRIPTION
csp_mkdircp calls mkdir(1) and cp(1).
csp_mkdircp is used like csp_CP. use csp_mkdircp if you frequently have to
bootstrap installation on a fresh system, on which needed directories don't
exist yet. csp_mkdircp makes sure the target directory exists before calling
cp(1), by calling mkdir -p first.
scp_keep_mode DESCRIPTION
csp_scp_keep_mode uses ssh to copy a file to a remote host, keeping its file
permission mode. The trick used is a combination of mktemp(1) and mv(1).
Useful if you'd like to be sure a file gets installed e.g. group writable,
without fiddling with permission bits on the remote host.
scp_keep_mode EXAMPLE
chmod g+w rc
csp_scp_keep_mode root@gandalf /etc/uruk rc
scp_keep_mode ENVIRONMENT
csp_scp_keep_mode honors csp_SSH ("ssh" by default).
sucp DESCRIPTION
csp_sucp calls tar(1) from within sudo(1) from within ssh(1). This allows one
to copy files to accounts on hosts one can only reach by calling sudo on the
ssh-reachable remote host.
Typically, one wants to install a root-owned file, but one does not want to
allow access to the root-account directly from ssh. Typically sudo is used as
an extra line of defense.
NB: if your sudo prompts for a password, be sure to have line
Defaults !tty_tickets
in your sudoers file: we first call sudo -v, than we call sudo to write the
data. Since we use ssh to get to the host, we'll use a different tty for both
sudo calls.
sucp EXAMPLES
Some examples:
csp_sucp rms@bilbo /etc fstab
csp_sucp monty-python commit/ trailer.txt
AUTHOR
Joost van Baal-Ilić
SEE ALSO
caspar(7)
The caspar homepage is at http://mdcc.cx/caspar/ .
caspar-20220907/doc/Makefile.in 0000644 0001750 0001750 00000043471 14306130117 012772 0000000 0000000 # Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = doc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/VERSION.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
man1dir = $(mandir)/man1
am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man7dir)" \
"$(DESTDIR)$(docdir)"
man7dir = $(mandir)/man7
NROFF = nroff
MANS = $(man_MANS)
DATA = $(doc_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
PACKAGE = @PACKAGE_TARNAME@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = $(datadir)/doc/$(PACKAGE)
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
TROFF = groff
ZOEM = zoem
# FIXME likely it's better NOT to ignore errors from tidy. if you do, building on a
# host which lacks tidy will fail terribly _and_ silently! Or: test here if tidy
# is installed...
TIDY = tidy -quiet -utf8
W3M = w3m
azms = casparize.azm csp_helper.azm caspar.azm caspar-typesetting.azm
typetargets = casparize.html casparize.ps casparize.txt csp_helper.html \
csp_helper.ps csp_helper.txt caspar.html caspar.ps \
caspar.txt caspar-typesetting.html caspar-typesetting.ps \
caspar-typesetting.txt
man1s = csp_install.1 csp_mkdircp.1 csp_scp_keep_mode.1 csp_sucp.1
manazms = casparize.1 csp_helper.1 caspar.7 caspar-typesetting.7
tmpfiles = casparize.zmr casparize.zmt caspar-typesetting.zmr \
caspar-typesetting.zmt caspar.zmr caspar.zmt csp_helper.zmr csp_helper.zmt
doc_DATA = $(typetargets) $(azms) ChangeLog.2002
man_MANS = $(man1s) $(manazms)
EXTRA_DIST = $(doc_DATA) $(man_MANS)
SUFFIXES = .1 .7 .azm .html .ps .txt
MAINTAINERCLEANFILES = $(manazms) $(typetargets) $(tmpfiles)
DISTCLEANFILES = $(typetargets)
all: all-am
.SUFFIXES:
.SUFFIXES: .1 .7 .azm .html .ps .txt
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-man1: $(man_MANS)
@$(NORMAL_INSTALL)
@list1=''; \
list2='$(man_MANS)'; \
test -n "$(man1dir)" \
&& test -n "`echo $$list1$$list2`" \
|| exit 0; \
echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
{ for i in $$list1; do echo "$$i"; done; \
if test -n "$$list2"; then \
for i in $$list2; do echo "$$i"; done \
| sed -n '/\.1[a-z]*$$/p'; \
fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
done | \
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
sed 'N;N;s,\n, ,g' | { \
list=; while read file base inst; do \
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
fi; \
done; \
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
while read files; do \
test -z "$$files" || { \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
done; }
uninstall-man1:
@$(NORMAL_UNINSTALL)
@list=''; test -n "$(man1dir)" || exit 0; \
files=`{ for i in $$list; do echo "$$i"; done; \
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
sed -n '/\.1[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
install-man7: $(man_MANS)
@$(NORMAL_INSTALL)
@list1=''; \
list2='$(man_MANS)'; \
test -n "$(man7dir)" \
&& test -n "`echo $$list1$$list2`" \
|| exit 0; \
echo " $(MKDIR_P) '$(DESTDIR)$(man7dir)'"; \
$(MKDIR_P) "$(DESTDIR)$(man7dir)" || exit 1; \
{ for i in $$list1; do echo "$$i"; done; \
if test -n "$$list2"; then \
for i in $$list2; do echo "$$i"; done \
| sed -n '/\.7[a-z]*$$/p'; \
fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
done | \
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
sed 'N;N;s,\n, ,g' | { \
list=; while read file base inst; do \
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man7dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man7dir)/$$inst" || exit $$?; \
fi; \
done; \
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
while read files; do \
test -z "$$files" || { \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man7dir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(man7dir)" || exit $$?; }; \
done; }
uninstall-man7:
@$(NORMAL_UNINSTALL)
@list=''; test -n "$(man7dir)" || exit 0; \
files=`{ for i in $$list; do echo "$$i"; done; \
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
sed -n '/\.7[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
dir='$(DESTDIR)$(man7dir)'; $(am__uninstall_files_from_dir)
install-docDATA: $(doc_DATA)
@$(NORMAL_INSTALL)
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
done
uninstall-docDATA:
@$(NORMAL_UNINSTALL)
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(MANS) $(DATA)
installdirs:
for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man7dir)" "$(DESTDIR)$(docdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-docDATA install-man
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man: install-man1 install-man7
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-docDATA uninstall-man
uninstall-man: uninstall-man1 uninstall-man7
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
ctags-am distclean distclean-generic distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-docDATA install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-man1 \
install-man7 install-pdf install-pdf-am install-ps \
install-ps-am install-strip installcheck installcheck-am \
installdirs maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \
uninstall uninstall-am uninstall-docDATA uninstall-man \
uninstall-man1 uninstall-man7
.PRECIOUS: Makefile
.azm.1:
$(ZOEM) -d roff -i $< -o $@ || true
$(ZOEM) -d roff -i $< -o $@
.azm.7:
$(ZOEM) -d roff -i $< -o $@ || true
$(ZOEM) -d roff -i $< -o $@
.7.ps:
$(TROFF) -man $< > $@
.1.ps:
$(TROFF) -man $< > $@
.azm.html:
$(ZOEM) -d html -i $< -o $@ || true
$(ZOEM) -d html -i $< -o $@
-$(TIDY) -e $@
.html.txt:
$(W3M) -dump $< > $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
caspar-20220907/doc/csp_mkdircp.1 0000644 0001750 0001750 00000000033 14306130367 013277 0000000 0000000 .\"
.so man1/csp_helper.1
caspar-20220907/doc/csp_helper.ps 0000644 0001750 0001750 00000026460 14306130464 013421 0000000 0000000 %!PS-Adobe-3.0
%%Creator: groff version 1.22.4
%%CreationDate: Wed Sep 7 14:56:52 2022
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Courier
%%DocumentSuppliedResources: procset grops 1.22 4
%%Pages: 2
%%PageOrder: Ascend
%%DocumentMedia: Default 595 842 0 () ()
%%Orientation: Portrait
%%EndComments
%%BeginDefaults
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
%%BeginResource: procset grops 1.22 4
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/MANUAL{
statusdict begin/manualfeed true store end
}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
DEFS/BPhook known{DEFS begin BPhook end}if
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/Fr{
setrgbcolor fill
}bind def
/setcmykcolor where{
pop
/Fk{
setcmykcolor fill
}bind def
}if
/Fg{
setgray fill
}bind def
/FL/fill load def
/LW/setlinewidth load def
/Cr/setrgbcolor load def
/setcmykcolor where{
pop
/Ck/setcmykcolor load def
}if
/Cg/setgray load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne
2 index/UniqueID ne
and
{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
/setpagedevice{}def
mark
}bind def
/PEND{
cleartomark
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%EndProlog
%%BeginSetup
%%BeginFeature: *PageSize Default
<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice
%%EndFeature
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Italic
%%IncludeResource: font Courier
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE
/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 131.795(csp_helper\(1\) USER)20 48 R 134.295
(COMMANDS csp_helper\(1\))2.5 F/F1 10.95/Times-Bold@0 SF -.219(NA)20 84
S(ME).219 E F0(csp_helper \255 A collection of caspar helper scripts)100
96 Q F1(SYNOPSIS)20 112.8 Q/F2 10/Times-Bold@0 SF(csp_install dir)100
124.8 Q F0(\()2.5 E/F3 10/Times-Italic@0 SF(dir)A(ectory)-.37 E F0(\))A
F2(\214le)2.5 E F0(\()2.5 E F3(\214le)A F0(\))A F2(csp_mkdir)100 148.8 Q
(cp dir)-.18 E F0(\()2.5 E F3(dir)A(ectory)-.37 E F0(\))A F2(\214le)2.5
E F0(\()2.5 E F3(\214le)A F0(\))A F2(csp_scp_k)100 172.8 Q(eep_mode h)
-.1 E F0(\()2.5 E F3([user@]host)A F0(\))A F2(dir)2.5 E F0(\()2.5 E F3
(dir)A(ectory)-.37 E F0(\))A F2(\214le)2.5 E F0(\()2.5 E F3(\214le)A F0
(\))A F2(csp_sucp h)100 196.8 Q F0(\()2.5 E F3([user@]host)A F0(\))A F2
(dir)2.5 E F0(\()2.5 E F3(dir)A(ectory)-.37 E F0(\))A F2(\214le)2.5 E F0
(\()2.5 E F3(\214le)A F0(\))A F1(DESCRIPTION)20 213.6 Q F0 .775
(The scripts)100 225.6 R F2(csp_install)3.275 E F0(,)A F2(csp_mkdir)
3.275 E(cp)-.18 E F0(,)A F2(csp_scp_k)3.275 E(eep_mode)-.1 E F0(and)
3.275 E F2(csp_sucp)3.275 E F0 .775(are helpers for)3.275 F F2(cas-)
3.275 E(par\(7\))100 237.6 Q F0 3.411(.T)C .911
(hese scripts typically are not in)-3.411 F -.2(vo)-.4 G -.1(ke).2 G
3.411(dd).1 G(irectly)-3.411 E 3.411(,b)-.65 G .912(ut via a Mak)-3.611
F .912(e\214le which uses)-.1 F F2(caspar)3.412 E F0(.)A 3.798
(See the notes on csp_PUSH in)100 249.6 R F2(caspar\(7\))6.298 E F0
3.798(for information on ho)6.298 F 6.297(wt)-.25 G 6.297(ol)-6.297 G
(ink)-6.297 E F2(csp_install)6.297 E F0(,)A F2(csp_scp_k)100 261.6 Q
(eep_mode)-.1 E F0(and)2.5 E F2(csp_sucp)2.5 E F0(to)2.5 E F2(caspar)2.5
E F0(.)A F1(install DESCRIPTION)20 278.4 Q F2(csp_install)100 290.4 Q F0
.163(creates the required directory \(if needed\) and installs the \214\
le, preserving timestamps.)2.662 F(It uses install\(1\).)100 302.4 Q F1
(install EXAMPLES)20 319.2 Q/F4 10/Courier@0 SF
(csp_INSTALL_OPTIONS='--owner=www-data --group=www-data' \\)106 331.2 Q
(csp_INSTALL_MODE=ugo=r \\)112 343.2 Q(csp_install /srv/www index.html)
112 355.2 Q
(csp_INSTALL_MODE=u=rwx,go= csp_install /usr/local/sbin mkpasswd)106
391.2 Q F1(install ENVIR)20 420 Q(ONMENT)-.329 E F2(csp_install)100 432
Q F0 8.147(honors csp_INST)10.647 F 8.147(ALL_OPTIONS and csp_INST)-.93
F 8.146(ALL_MODE \(def)-.93 F 8.146(ault is)-.1 F(u=rw)100 444 Q
(,go=r\).)-.65 E F1(mkdir)20 460.8 Q(cp DESCRIPTION)-.197 E F2
(csp_mkdir)100 472.8 Q(cp)-.18 E F0 .42(calls mkdir\(1\) and cp\(1\).)
2.92 F F2(csp_mkdir)5.42 E(cp)-.18 E F0 .42(is used lik)2.92 F 2.92(ec)
-.1 G .42(sp_CP. use)-2.92 F F2(csp_mkdir)2.92 E(cp)-.18 E F0(if)2.92 E
1.673(you frequently ha)100 484.8 R 1.973 -.15(ve t)-.2 H 4.173(ob).15 G
1.672
(ootstrap installation on a fresh system, on which needed directories)
-4.173 F(don')100 496.8 Q 2.746(te)-.18 G .246(xist yet.)-2.896 F F2
(csp_mkdir)2.746 E(cp)-.18 E F0(mak)2.746 E .246(es sure the tar)-.1 F
.246(get directory e)-.18 F .247(xists before calling cp\(1\), by call-)
-.15 F(ing mkdir -p \214rst.)100 508.8 Q F1(scp_k)20 525.6 Q
(eep_mode DESCRIPTION)-.11 E F2(csp_scp_k)100 537.6 Q(eep_mode)-.1 E F0
.573(uses ssh to cop)3.073 F 3.073(ya\214)-.1 G .573
(le to a remote host, k)-3.073 F .572
(eeping its \214le permission mode.)-.1 F .635
(The trick used is a combination of mktemp\(1\) and mv\(1\).)100 549.6 R
.635(Useful if you')5.635 F 3.135(dl)-.5 G(ik)-3.135 E 3.135(et)-.1 G
3.135(ob)-3.135 G 3.135(es)-3.135 G .635(ure a \214le)-3.135 F(gets ins\
talled e.g. group writable, without \214ddling with permission bits on \
the remote host.)100 561.6 Q F1(scp_k)20 578.4 Q(eep_mode EXAMPLE)-.11 E
F4(chmod g+w rc)112 590.4 Q(csp_scp_keep_mode root@gandalf /etc/uruk rc)
112 602.4 Q F1(scp_k)20 631.2 Q(eep_mode ENVIR)-.11 E(ONMENT)-.329 E F2
(csp_scp_k)100 643.2 Q(eep_mode)-.1 E F0(honors csp_SSH \("ssh" by def)
2.5 E(ault\).)-.1 E F1(sucp DESCRIPTION)20 660 Q F2(csp_sucp)100 672 Q
F0 .965
(calls tar\(1\) from within sudo\(1\) from within ssh\(1\). This allo)
3.466 F .965(ws one to cop)-.25 F 3.465<798c>-.1 G .965(les to)-3.465 F
(accounts on hosts one can only reach by calling sudo on the ssh-reacha\
ble remote host.)100 684 Q -.8(Ty)100 708 S(pically).8 E 3.552(,o)-.65 G
1.052(ne w)-3.552 F 1.052(ants to install a root-o)-.1 F 1.052
(wned \214le, b)-.25 F 1.052(ut one does not w)-.2 F 1.053(ant to allo)
-.1 F 3.553(wa)-.25 G 1.053(ccess to the)-3.553 F
(root-account directly from ssh. T)100 720 Q
(ypically sudo is used as an e)-.8 E(xtra line of defense.)-.15 E
(csp_helper 20220907)20 768 Q 2.5<37d1>117.58 G-2.5
E(1)198.4 E 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 131.795(csp_helper\(1\) USER)20 48 R 134.295
(COMMANDS csp_helper\(1\))2.5 F(NB: if your sudo prompts for a passw)100
84 Q(ord, be sure to ha)-.1 E .3 -.15(ve l)-.2 H(ine).15 E/F1 10
/Courier@0 SF(Defaults !tty_tickets)112 120 Q F0 .137
(in your sudoers \214le: we \214rst call sudo -v)100 144 R 2.636(,t)-.65
G .136(han we call sudo to write the data. Since we use ssh to)-2.636 F
(get to the host, we')100 156 Q(ll use a dif)-.1 E
(ferent tty for both sudo calls.)-.25 E/F2 10.95/Times-Bold@0 SF
(sucp EXAMPLES)20 172.8 Q F0(Some e)100 184.8 Q(xamples:)-.15 E F1
(csp_sucp rms@bilbo /etc fstab)112 220.8 Q
(csp_sucp monty-python commit/ trailer.txt)112 256.8 Q F2 -.548(AU)20
285.6 S(THOR).548 E F0(Joost v)100 297.6 Q(an Baal-Ili\304)-.25 E F2
(SEE ALSO)20 314.4 Q/F3 10/Times-Bold@0 SF(caspar\(7\))100 326.4 Q F0
(The caspar homepage is at http://mdcc.cx/caspar/ .)2.5 E
(csp_helper 20220907)20 768 Q 2.5<37d1>117.58 G-2.5
E(2)198.4 E 0 Cg EP
%%Trailer
end
%%EOF
caspar-20220907/doc/casparize.html 0000644 0001750 0001750 00000013376 14306130464 013602 0000000 0000000
casparize
7 сеп 2022
casparize
20220907
NAME
casparize — Set up caspar Makefile in a new directory
SYNOPSIS
casparize
dir (/path/to/config/dir)
casparize
file (/path/to/config/dir/file)
DESCRIPTION
casparize creates a new configuration working directory in your current
working directory, sets up a Makefile for caspar(7) in
this new directory,
and optionally copies an original configuration file from its original
system place to the newly created configuration working directory.
USAGE
You typically use casparize when you already have created the root
configuration working directory with its include directory and install.mk
Caspar include file. By analysing your current working directory and the
configuration directory path you give on the command line, casparize can
deduce the contents of the Makefile in the newly created configuration
working directory. It creates the new directory, creates the correct
Makefile, and optionally copies the given configuration file in the new
directory, ready for its first version commit.
EXAMPLES
A typical example:
$ cd <svn>/etc
$ casparize /etc/postfix/main.cf
creates the directory <svn>/etc/postfix, creates <svn>/etc/postfix/Makefile
including the proper content, and copies /etc/postfix/main.cf into
<svn>/etc/postfix/main.cf. You can now directly add and commit the new
directory.
BUGS
Non known at this moment.
AUTHOR
Jeroen Hoppenbrouwers
SEE ALSO
caspar(7)
The caspar homepage is at http://mdcc.cx/caspar/ .
caspar-20220907/doc/caspar.azm 0000644 0001750 0001750 00000053754 14306131145 012716 0000000 0000000 \: vim:syntax=tex
\: This file is maintained at http://git.mdcc.cx/caspar
\: this is a manpage in zoem format. see http://micans.org/zoem/ and man_zmm(7)
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{caspar}
{html_title}{caspar}
{section}{7}
\man_share
}
\${html}{\"pud::man::maketoc"}
\def{"docbook.mk"}{\it{docbook.mk}}
\def{"pod.mk"}{\it{pod.mk}}
\def{"caspar.mk"}{\it{caspar.mk}}
\def{caspar}{\bf{caspar}}
\def{"install.mk"}{\it{install.mk}}
\sec{name}{NAME}
caspar - Makefile snippets for common tasks
\sec{synopsis}{SYNOPSIS}
In a Makefile, write either
\verbatim{
include caspar/mk/caspar.mk
}
or
\verbatim{
include caspar/mk/docbook.mk
}
or
\verbatim{
include caspar/mk/pod.mk
}
.
\sec{description}{DESCRIPTION}
Caspar offers Makefile snippets for common tasks, like installing
(configuration) files, or typesetting LaTeX, DocBook XML and DocBook SGML
documents.
\par{
The typesetting functionality is delivered by \"docbook.mk" and \"pod.mk".
This is documented in \sibref{caspar-typesetting}{caspar-typesetting(7)}.
} \par{
The installing-stuff 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 tree which typically holds configuration files,
managed using Subversion (or git or any other version control system, for that
matter).
} \par{
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.
} \par{
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.
} \par{
It is comparable with other tools for Unix system administrators like
puppet and cfengine. Main difference: the caspar code consists of less than
100 lines of GNU Make.
}
\sec{usage}{USAGE}
Within a CVS tree, create a file \it{include/install.mk}, with contents like
e.g.
\verbatim{
csp_UHOST = 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.
\verbatim{
csp_DIR = /some/dir/ectory/
include ../../include/install.mk
}
.
If you'd like to use the \it{install-recursive} target too, in directories
which hold subdirectories (but not files), you'll have to create a Makefile
which looks something like
\verbatim{
include ../../include/install.mk
}
. From within the CVS tree, one can call:
\verbatim{
make -diff
make -install
make diff
make install
make load
make
make install-recursive
}
Calling \tt{make -diff} shows the diff between the local file
and the file as currently installed on the remote location.
Calling \tt{make install} (or \tt{make}) now will scp all files in the current
directory to the remote location. The \it{install-recursive} target descends
down the tree, and calls \tt{make install} in each subdirectory.
\par{
Of course, you'll have to be able to ssh directly as root to the remote host to
get this working (if you'd like to use \tt{csp_UHOST =
root@some.host.somewhere}). If you don't like this, and would like to have a
\tt{PermitRootLogin no} in your \tt{/etc/ssh/sshd_config}, you can use
csp_sucp(1). See below.
}
\sec{variables}{VARIABLES}
\par{
The variables one can set in a calling Makefile are:
\begin{itemize}{
{contiguous}{1}
{w1}{7}
}
\item{\tt{csp_UHOST}} user@host, reachable using \tt{$(csp_PUSH)} (which
is scp by default)
\item{\tt{csp_UHOSTS}} space separated list of user@host items, reachable
using \tt{$(csp_PUSH)}
\item{\tt{csp_DIR}} directory on host, reachable using function
\tt{$(csp_PUSH)}
\item{\tt{csp_PUSH}} make function for pushing files to remote location.
Usually, this is a wrapper around a script or
program. The function will be passed 4 arguments:
\it{[user@]host}, remote \it{directory} and local
\it{filename}.
\it{[user@]host} will be set
to all elements of \tt{$(csp_UHOSTS)};
\it{directory} will be set to \tt{$(csp_DIR)}.
Currently, \tt{$(csp_scp_FUNC)}, \tt{$(csp_cp_FUNC)}
and \tt{$(csp_sucp_FUNC)} are supported as push
plugins. If \tt{csp_PUSH} is unset, the default
\tt{$(csp_scp_FUNC)} is used.
\item{\tt{csp_LOAD}} the `load' target depends upon these targets.
\item{\tt{csp_BUILD}} the `build' target depends upon these targets.
\item{\tt{csp_CP}} cp binary, just "cp" by default
\item{\tt{csp_SCP}} scp binary, just "scp" by default
\item{\tt{csp_SUCP}} script wrapping sudo in ssh, "csp_sucp" by default
\item{\tt{csp_EXTRAFILES}} extra files which should be installed.
Can be used to include files starting with a dot.
\item{\tt{csp_TABOOFILES}} files which should never be installed. Set to
\tt{Makefile .%.swp %~ #%# pod2htmd.tmp pod2htmi.tmp} by default.
\item{\tt{csp_TABOOFILES_ADD}} extra files which should never be installed;
added to list in \tt{csp_TABOOFILES}.
\item{\tt{csp_TABOOFILES_SKIP}} files which should be installed, even if
in initial \tt{csp_TABOOFILES} list. Removed from \tt{csp_TABOOFILES}
list.
\item{\tt{csp_TABOODIRS}} directories to exclude in install-recursive target.
set to \tt{CVS .svn} by default.
\item{\tt{csp_TABOODIRS_ADD}, \tt{csp_TABOODIRS_SKIP}} see
\tt{csp_TABOOFILES} equivalents.
\item{\tt{csp_UHOSTS_SUBSET}} override csp_UHOSTS: don't push to csp_UHOSTS, but
to the intersection of this space separated list of user@host items and
csp_UHOSTS.
\end{itemize}
}
\par{
The following variables might get phased out or removed soonish:
\begin{itemize}{
{contiguous}{1}
{w1}{7}
}
\item{\tt{csp_CPFLAGS}} extra arguments to pass to cp invocation, none by
default
\item{\tt{csp_SCPFLAGS}} extra arguments to pass to scp invocation, e.g.
'\tt{-i .ssh/id_rsa-root}'
\end{itemize}
}
\sec{examples}{EXAMPLES}
\par{
Some examples:
}
\cpar{Using csp_UHOST}{
This is the simplest way to use caspar. \it{Makefile} is
\verbatim{
csp_UHOST = root@some.host.somewhere
csp_DIR = /etc/
include caspar/mk/caspar.mk
}
Now, running "make" will scp all files in the current directory to
\tt{root@some.host.somewhere:/etc/}.
}
\cpar{More hosts, not scp but sudo via ssh: using csp_PUSH}{
\it{Makefile} is
\verbatim{
csp_UHOSTS = root@some.host.somewhere root@some.other.host
csp_PUSH = $(csp_sucp_FUNC)
csp_DIR = /etc/
include caspar/mk/caspar.mk
}
Now, running "make" will use csp_sucp(1) to install all files in the current
directory to both root@some.host.somewhere:/etc/ and
root@some.other.host:/etc/. If a file named \tt{fstab} is present in the
current directory, running "make fstab-install" will just install that one
file.
If you need to sudo(1) to another user on the remote host, add something like
\verbatim{
csp_XARG = postgres
}
. (If such a username is not supplied, sudo (and csp_sucp) use the default:
root.)
}
\cpar{Overriding csp_UHOSTS: csp_UHOSTS_SKIP}{
If one or some of your hosts are temporarily unavailable, and you'd like to
push your files to the hosts which are alive, you can temporarily override your
csp_UHOSTS. E.g., when some.other.host is not available:
\verbatim{
% cat Makefile
csp_UHOSTS = root@some.host.somewhere root@some.other.host
csp_DIR = /etc/
include caspar/mk/caspar.mk
% make install csp_UHOSTS_SKIP=root@some.other.host
scp hosts root@some.host.somewhere:/etc/
scp fstab root@some.host.somewhere:/etc/
}
}
\cpar{Overriding csp_UHOSTS in a smart way: csp_UHOSTS_SUBSET. Using multiple
groups of hosts. Recursive make made easy.}{
If you have lots of subdirectories holding information for lots of groups of
hosts, while this run you just want to install for a small group (or 1) hosts,
csp_UHOSTS_SUBSET is useful.
Suppose your casparized tree looks like
\verbatim{
Makefile
apache/include/install.mk
apache/etc/apache2/Makefile
apache/etc/apache2/envvars
php/include/install.mk
php/etc/php4/apache/Makefile
php/etc/php4/apache/php.ini
grub/include/install.mk
grub/boot/grub/Makefile
grub/boot/grub/menu.lst
logrotate/include/install.mk
logrotate/etc/Makefile
logrotate/etc/logrotate.conf
nrpe/include/install.mk
nrpe/debian/etc/default/Makefile
nrpe/debian/etc/default/nagios-nrpe-server
}
The file \it{apache/etc/apache2/Makefile} is:
\verbatim{
csp_DIR = /etc/apache2/
include ../../include/install.mk
}
(all other \it{Makefile}s are similar).
The file \it{apache/include/install.mk} is
\verbatim{
csp_UHOSTS = root@a root@b
include caspar/mk/caspar.mk
}
The file \it{php/include/install.mk} is the same. The files
\it{grub/include/install.mk} and \it{logrotate/include/install.mk} are
\verbatim{
csp_UHOSTS = root@d root@e root@f root@g
include caspar/mk/caspar.mk
}
The file \it{nrpe/include/install.mk} is
\verbatim{
csp_UHOSTS = root@d root@e root@f root@n
include caspar/mk/caspar.mk
}
The toplevel \it{Makefile} is
\verbatim{
dirs = $(patsubst %/Makefile,%,$(shell find * -mindepth 1
-name Makefile))
all:
for i in $(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i; done
install
for i in $(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i install; done
load
for i in $(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i load; done
}
(we don't feel like sticking a \it{Makefile} in all non-leaf nodes of our tree).
} \par{
Now, when running "\tt{csp_UHOSTS_SUBSET='root@e root@f root@m root@n' make}"
in the toplevel, caspar just takes the intersection of csp_UHOSTS_SUBSET and
csp_UHOSTS for each csp_UHOSTS list. So, caspar will not push anything for
\it{apache/} and \it{php/}. The files \it{grub/boot/grub/menu.lst} and
\it{logrotate/etc/logrotate.conf} will get pushed to \tt{root@e} and
\tt{root@f} only. The file \it{nrpe/debian/etc/default/nagios-nrpe-server}
will get pushed to \tt{root@e}, \tt{root@f} and \tt{root@n}.
} \par{
This is often better than just overriding csp_UHOSTS on the commandline (or in
your shell's environment): if the intersection of the original csp_UHOSTS and
your new csp_UHOSTS is empty, chances are big you've just forgotten to clean
your environment.
}
\cpar{Creating remote directories if needed}{
\it{Makefile} is
\verbatim{
csp_DIR = /some/dir/ectory/
csp_PUSH = $(csp_scpmkdir_FUNC)
csp_UHOST = root@some.host.somewhere
include caspar/mk/caspar.mk
}
Now, before calling scp, caspar will run 'mkdir -p' to create any missing
remote directories.
}
\cpar{Using csp_CP and csp_LOAD}{
\it{username/etc/Makefile} is
\verbatim{
csp_UHOST = dummy
csp_PUSH = $(csp_cp_FUNC)
csp_DIR = $(HOME)/etc/
csp_LOAD = crontab-load
include ../include/install.mk
crontab-load = crontab $(csp_DIR)/crontab
}
while \it{../include/install.mk} is just
\verbatim{
include caspar/mk/caspar.mk
}
.
Setting \tt{csp_PUSH} to \tt{$(csp_cp_FUNC)} causes cp(1) to get executed
by "make install" (not scp(1)).
Setting \tt{csp_LOAD} causes "make load" to execute the crontab command. Just
running "make" is OK too, since "make" calls both "make install" and "make
load".
}
\cpar{Using csp_DIR, csp_LOAD and install(1)}{
To install a file on the local host, create e.g. a file \it{etc/uruk/Makefile}
like:
\verbatim{
csp_UHOST = dummy
csp_DIR = /etc/uruk/
csp_PUSH = $(csp_install_FUNC)
csp_LOAD = uruk-load
include caspar/mk/caspar.mk
uruk-load = sudo invoke-rc.d uruk force-reload
}
}
\cpar{Using csp_DIR and csp_LOAD, take 2}{
\it{etc/Makefile} is
\verbatim{
csp_DIR = /etc/
csp_LOAD = aliases-load
include ../include/install.mk
aliases-load = $(csp_SSH) $1 "cd /etc && postalias aliases; postfix reload"
}
while \it{../include/install.mk} is
\verbatim{
csp_UHOST = root@some.host.somewhere
include caspar/mk/caspar.mk
}
}
\cpar{Building files locally}{
Note: csp_BUILD is deprecated. You should not use it.
If you'd like to build some files locally from local sources, before installing
the just built files, do e.g.:
\verbatim{
csp_UHOST = root@some.host.somewhere
csp_DIR = /etc/
csp_EXTRAFILES = sshd_config
csp_TABOOFILES_ADD = sshd_config.m4
include caspar/mk/caspar.mk
sshd_config: sshd_config.m4
m4 $< > $@
}
List all source files in csp_TABOOFILES_ADD: this way, they won't get installed
on the csp_UHOST.
}
\cpar{Using csp_sucp_FUNC and csp_LOAD}{
If you'd like to use csp_sucp and want a `load' target, do something like:
\verbatim{
csp_PUSH = $(csp_sucp_FUNC)
csp_UHOST = foobar.example.com
csp_DIR = /etc/uruk/
csp_LOAD = rc-load
include caspar/mk/caspar.mk
rc-load = $(csp_SSH) $1 sudo invoke-rc.d uruk force-reload
}
}
\cpar{Using the "verify" target}{
If you want to do some syntax check on the local host for a configuration
file, define a -verify target (or pattern target):
\verbatim{
bar.pem-verify: bar.pem.asc bar.pem
gpg --verify $^
%.php-verify: %.php
php -l $<
}
This command will be invoked when you "make verify" and "make install".
}
\cpar{Using the "check" target}{
If you want to do some syntax check on the remote host, before loading the just
installed configuration file, do
\verbatim{
csp_UHOST = foobar.example.com
csp_DIR = /etc/
csp_LOAD = my-load
csp_CHECK = my-check
my-check = $(csp_SSH) $1 do-check-stuff
my-load = $(csp_SSH) $1 do-load-stuff
include caspar/mk/caspar.mk
}
This way, "make load" won't cause the file to load if the check fails
(which is probably what you want).
You could even give the file a temporary name and have the load target
rename it to its real name only after a successful check.
As a convenience, if a foo-check variable is defined, it is automatically
added as a dependency for any csp_LOAD targets named foo or foo-something.
}
\cpar{Combining the csp_LOAD target with multiple hosts; building files remotely}{
Here's an example doing some preprocessing on the remote hosts before reloading the configuration:
\verbatim{
csp_DIR = /etc/ssh/
csp_UHOSTS = root@some.host.somewhere root@some.other.host
csp_LOAD = sshd_config-load
sshd_config-load = $(csp_SSH) $1 "set -e; \\
cd $(csp_DIR); \\
m4 sshd_config.m4 >sshd_config; \\
service ssh reload"
include caspar/mk/caspar.mk
}
(The old, deprecated way is to explicitly specify the loop over the hosts:
\verbatim{
csp_DIR = /etc/ssh/
sshd_config-load:
for suh in $(csp_UHOSTS); do \\
$(csp_SSH) $$suh "set -e;
cd $(csp_DIR); \\
m4 sshd_config.m4 > sshd_config; \\
service ssh reload"; \\
done
}
.
You should not use this method.
Please consider rewriting any existing caspar snippets using the simpler method described above.)
}
\cpar{Using the csp_TABOOFILES_{ADD,SKIP} variables; another way to perform remote builds}{
Using the csp_TABOOFILES_{ADD,SKIP} variables is handy if you want to
\it{install} a \it{Makefile}, instead of using it: Create \it{Makefile} just
as you'd like to have it installed on the remote location. Now, create
\it{GNUmakefile} as e.g.
\verbatim{
csp_TABOOFILES_SKIP = Makefile
csp_TABOOFILES_ADD = GNUmakefile
csp_DIR = /etc/foobar/
csp_UHOST = root@some.host.somewhere
include caspar/mk/caspar.mk
load:
$(csp_SSH) $(csp_UHOST) "make -C $(csp_DIR)"
}
Now, \tt{make install} and \tt{make load} will do the right thing.
}
\cpar{Using the csp_EXTRAFILES variable}{
Using the csp_EXTRAFILES variable can be handy if you want to install files
with a leading dot. E.g.:
\verbatim{
csp_EXTRAFILES = .bashrc
csp_UHOST = root@some.host.somewhere
csp_DIR =
include caspar/mk/caspar.mk
}
}
\cpar{Overriding csp_UHOSTS}{
Supply e.g.
\verbatim{
csp_UHOSTS = root@localhost root@some.host.somewhere
}
in \it{install.mk}, to install on multiple hosts. Run
\verbatim{
make filename-install csp_UHOSTS=joe@otherhost
}
to install filename as \tt{joe@otherhost}, instead of the default as given in
\it{install.mk}. If you want to enable passing csp_UHOSTS as a shell
environment variable, you'll have to use conditional assignment in your
Makefile:
\verbatim{
csp_UHOSTS ?= root@localhost root@some.host.somewhere
}
This allows it to run
\verbatim{
% export csp_UHOSTS=foo@bar
% make filename-install
}
to install on \tt{foo@bar}.
}
\cpar{Using sudo locally for installing files}{
If you'd like to install files like
\verbatim{
sudo cp foo.rc /etc/foobar/
}
you could set up your \it{Makefile} as
\verbatim{
csp_DIR = /etc/foobar/
csp_UHOST = dummy
csp_PUSH = sudo cp $(1) $(3)
include caspar/mk/caspar.mk
}
This is like csp_sucp, but without the ssh wrapping: it works on localhost
only.
}
\cpar{Plugging your own install script in caspar}{
If your script \tt{foobar} should be called as e.g.
\verbatim{
foobar --file=fstab --user@host=joe@some.host \\
--dir=/etc/ --debuglevel=3
}
then make sure your \it{Makefile} features something like
\verbatim{
csp_foobar_FUNC = foobar --file=$(1) --user@host=$(2) \\
--dir=$(3) --debuglevel=$(4)
csp_PUSH = $(csp_foobar_FUNC)
csp_XARG = 3
}
You can now use \tt{csp_UHOST} and \tt{csp_DIR} just as you're used to.
}
\cpar{More advanced tricks}{
When you don't want to ssh to \tt{root@some.host.somewhere} directly, you could
do
\verbatim{
sudo rsync -az /path/to/your/config_archive /etc
}
on some.host.somewhere (e.g. from cron).
}
\sec{files}{FILES}
\it{caspar/mk/caspar.mk}, \it{caspar/mk/docbook.mk}, \it{caspar/mk/pod.mk}
\sec{environment}{ENVIRONMENT}
For \"caspar.mk": \tt{csp_CP}, \tt{csp_LOAD},
\tt{csp_SCP}, \tt{csp_UHOST}, \tt{csp_PUSH}, ...
\sec{bugs}{BUGS}
Very likely, GNU Make is not the best tool for doing the stuff \"caspar.mk" is
doing.
For the list of reported bugs, see \httpref{http://bugs.debian.org/src:caspar}.
See also TODO, distributed with the caspar package. (And online at
\httpref{http://mdcc.cx/pub/caspar/caspar-latest/TODO}.)
\sec{trivia}{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.
\sec{author}{AUTHOR}
\"man::author"
\sec{seealso}{SEE ALSO}
\sibref{caspar-typesetting}{caspar-typesetting(7)}
\sibref{csp_helper}{csp_helper(1)}
\par{
The caspar homepage is at \httpref{http://mdcc.cx/caspar/} .
} \par{
The document
\aref{http://non-gnu.uvt.nl/pub/uvt-unix-doc/packaging/}{"Versiebeheer en
software-packages: Waarom en Hoe"} (in Dutch) describes some of the reasons why
people might want to use tools like caspar.
} \par{
Jeroen Hoppenbrouwers blogs about the way he uses caspar, in
\aref{http://www.hoppie.nl/pub/node/79}{"Using Subversion and Caspar to
maintain a Linux host"}.
} \par{
Lots of tools overlap (partly) with caspar in their functionality. Here's a
list.
} \par{
ansible (\httpref{http://www.ansible.com/}); code is on github
(\httpref{https://github.com/ansible/ansible})
} \par{
cfengine (\httpref{http://www.cfengine.org/}), by Mark Burgess e.a., builds
expert systems to administrate and configure large computer networks: it
delivers a very big superset of caspar's installation mechanism.
} \par{
Puppet (\httpref{http://reductivelabs.com/projects/puppet}), also something
like a configuration management system.
} \par{
Here's an older list; a big part of it was collected by Ray Miller
(\httpref{http://users.ox.ac.uk/~raym/}) of Oxford University, and published in
the article "Configuration Management with Subversion, YAML and Perl Template
Toolkit" in the SANE 2006 (\httpref{http://www.sane.nl/sane2006/}) conference
proceedings. FIXME: Check urls, update
} \par{
\: The `cvs-conf' package (\httpref{http://project.tuxfamily.org/cvs-conf},
\: \httpref{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 (\httpref{http://www.miwie.org/docbkmake/})
offers probably a superset of Caspar's \"docbook.mk" functionality.
} \par{
latex-make by the LaTeX Utils project on
\httpref{http://gforge.inria.fr/projects/latex-utils/} seems to provide similar
functionality as \"docbook.mk" for LaTeX documents.
} \par{
Latexmk by John Collins e.a. on
\httpref{http://www.phys.psu.edu/~collins/software/latexmk-jcc/} is another
implementation of this idea.
} \par{
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 (\httpref{ftp://ftp.debian.org/debian/pool/main/s/sup/}) and NetBSD
packages are likely still maintained, though.
} \par{
PIKT (\httpref{http://www.pikt.org/}) is intended primarily for system
monitoring, but does do configuration management too.
} \par{
LCFG (\httpref{http://www.lcfg.org/}) is another configuration management
system.
} \par{
The Arusha Project (ARK, at \httpref{http://ark.sf.net/}) provides a framework
for collaborative system administration.
} \par{
Bcfg2 (\httpref{http://trac.mcs.anl.gov/projects/bcfg2/}) is yet another
configuration management system.
} \par{
quattor (\httpref{http://quattor.web.cern.ch/}) is a system administration
toolkit for installation, configuration and management of Unix systems.
} \par{
rb3 and friends, as written and used by Ray Miller e.a. at Oxford University,
(\httpref{http://users.ox.ac.uk/~raym/software/configuration-management/}).
} \par{
The \aref{http://svk.elixus.org/}{svk} version control system is said to be
quite usable for handling configuration file management (without a separate
install mechanism like caspar). See also
\aref{http://lists.debian.org/debian-devel/2005/02/thrd2.html#00495}{this
discussion on the Debian development list}.
} \par{
On the \httpref{http://www.infrastructures.org/} website on automated (Unix)
system administration, you can find some thoughts on managing configuration
files using a version control system.
}
\end{pud::man}
caspar-20220907/doc/caspar-typesetting.html 0000644 0001750 0001750 00000020473 14306131350 015436 0000000 0000000
caspar-typesetting
7 сеп 2022
caspar-typesetting
20220907
NAME
caspar-typesetting - Makefile snippets for common typesetting tasks
SYNOPSIS
In a Makefile, write
include caspar/mk/docbook.mk
or
include caspar/mk/pod.mk
or
include caspar/mk/markdown.mk
.
DESCRIPTION
The caspar docbook.mk, pod.mk and markdown.mk files are Makefile snippets for common
typesetting tasks, like typesetting LaTeX (see [3]), DocBook
XML, DocBook SGML (see [2]), POD (see [1]) and Markdown (see [4]) documents.
You just have to type make, instead of stuff like jade -t tex -d
caspar/print.dsl /usr/share/sgml/declaration/xml.dcl foobar.dbx.
USAGE
In a directory where you maintain .dbx (Docbook XML) or .tex (LaTeX) files, do
$ echo include caspar/mk/docbook.mk > Makefile
$ vi karenina.dbx
$ make karenina.view
$ make karenina.print
$ vi svejk.tex
$ make svejk.view
$ make svejk.print
$ make
$ make clean
Other targets: filename.ps, filename.pdf, filename.2ps, filename.html,
filename.printbig, filename.dvi.
Variables you might like to set in your Makefile: XMLDCL (default is
/usr/share/sgml/declaration/xml.dcl; if you're not on a Debian GNU/Linux
system, you'll likely have to adjust this), HTML_DSL, PRINT_DSL.
In a directory where you maintain .pod files, do
$ echo include caspar/mk/pod.mk > Makefile
$ vi lire.pod
$ perldoc ./lire.pod
$ make lire.pdf
$ make
$ less lire.overstrike-txt
$ make clean
Other targets: filename.ps, filename.html, filename.txt, ...
(Similar to the ones supplied by docbook.mk).
In a directory where you maintain .md files, do
$ echo include caspar/mk/markdown.mk > Makefile
$ vi lire.md
$ make lire.html
$ make
$ make clean
.
EXAMPLES
Some examples: Overriding the caspar-supplied DSSSL files: Create your own
print.dls and html.dsl, in the same directory as your Docbook XML files. Your
Makefile should read:
PRINT_DSL = print.dsl
HTML_DSL = html.dsl
include caspar/mk/docbook.mk
Overriding the standard html-to-text convertor:
$ W3M=lynx make svejk.txt
.
FILES
caspar/mk/docbook.mk, caspar/mk/pod.mk, caspar/mk/markdown.mk.
ENVIRONMENT
For docbook.mk: files: XMLDCL, HTML_DSL, PRINT_DSL;
utilities: JADE, PDFJADETEX, PDFLATEX, JADETEX, LATEX,
W3M, DVIPS, PSNUP, LPR, GV; settings:
JADE_MAXERRORS. These variables can get adjusted in Makefile, as well as
in the shell environment.
The files pod.mk and markdown.mk use no environment variables.
AUTHOR
Joost van Baal-Ilić
SEE ALSO
caspar(7)
[1]
perlpod(1) about Perl's Plain Old Documentation format
[2]
DocBook: The Definitive Guide on http://docbook.org/,
[3]
The LaTeX Project Homepage on http://www.latex-project.org/.
[4]
John Gruber's Markdown homepage on
https://daringfireball.net/projects/markdown/.
Some comments on advanced usage are in the files docbook.mk and pod.mk
itself.
caspar-20220907/doc/caspar.7 0000644 0001750 0001750 00000056742 14306131350 012273 0000000 0000000 .\" Copyright (c) 2022 Joost van Baal-Ilić
.TH "caspar" 7 "7 сеп 2022" "caspar 20220907" "MISCELLANEOUS "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
caspar - Makefile snippets for common tasks
.SH SYNOPSIS
In a Makefile, write either
.di ZV
.in 0
.nf \fC
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
or
.di ZV
.in 0
.nf \fC
include caspar/mk/docbook\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
or
.di ZV
.in 0
.nf \fC
include caspar/mk/pod\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&.
.SH DESCRIPTION
Caspar offers Makefile snippets for common tasks, like installing
(configuration) files, or typesetting LaTeX, DocBook XML and DocBook SGML
documents\&.
The typesetting functionality is delivered by \fIdocbook\&.mk\fP and \fIpod\&.mk\fP\&.
This is documented in \fBcaspar-typesetting(7)\fP\&.
The installing-stuff functionality is delivered by \fIcaspar\&.mk\fP\&.
(That\&'s what the rest of the manual will talk about\&.) It enables one to run
\&'make install\&' from within a tree which typically holds configuration files,
managed using Subversion (or git or any other version control system, for that
matter)\&.
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 \fBcaspar\fP, all you have to do is specify the hostname in one place, and
specify the name of the target directory in each CVS directory\&.
It is comparable with other tools for Unix system administrators like
puppet and cfengine\&. Main difference: the caspar code consists of less than
100 lines of GNU Make\&.
.SH USAGE
Within a CVS tree, create a file \fIinclude/install\&.mk\fP, with contents like
e\&.g\&.
.di ZV
.in 0
.nf \fC
csp_UHOST = root@some\&.host\&.somewhere
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&. Within each other directory of the CVS tree which holds files, create a
Makefile, which looks like e\&.g\&.
.di ZV
.in 0
.nf \fC
csp_DIR = /some/dir/ectory/
include \&.\&./\&.\&./include/install\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&.
If you\&'d like to use the \fIinstall-recursive\fP target too, in directories
which hold subdirectories (but not files), you\&'ll have to create a Makefile
which looks something like
.di ZV
.in 0
.nf \fC
include \&.\&./\&.\&./include/install\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&. From within the CVS tree, one can call:
.di ZV
.in 0
.nf \fC
make -diff
make -install
make diff
make install
make load
make
make install-recursive
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Calling \fCmake -diff\fP shows the diff between the local file
and the file as currently installed on the remote location\&.
Calling \fCmake install\fP (or \fCmake\fP) now will scp all files in the current
directory to the remote location\&. The \fIinstall-recursive\fP target descends
down the tree, and calls \fCmake install\fP in each subdirectory\&.
Of course, you\&'ll have to be able to ssh directly as root to the remote host to
get this working (if you\&'d like to use \fCcsp_UHOST =
root@some\&.host\&.somewhere\fP)\&. If you don\&'t like this, and would like to have a
\fCPermitRootLogin no\fP in your \fC/etc/ssh/sshd_config\fP, you can use
csp_sucp(1)\&. See below\&.
.SH VARIABLES
The variables one can set in a calling Makefile are:
.ZI 2m "\fCcsp_UHOST\fP"
\&
.br
user@host, reachable using \fC$(csp_PUSH)\fP (which
is scp by default)
.in -2m
.ZI 2m "\fCcsp_UHOSTS\fP"
\&
.br
space separated list of user@host items, reachable
using \fC$(csp_PUSH)\fP
.in -2m
.ZI 2m "\fCcsp_DIR\fP"
\&
.br
directory on host, reachable using function
\fC$(csp_PUSH)\fP
.in -2m
.ZI 2m "\fCcsp_PUSH\fP"
\&
.br
make function for pushing files to remote location\&.
Usually, this is a wrapper around a script or
program\&. The function will be passed 4 arguments:
\fI[user@]host\fP, remote \fIdirectory\fP and local
\fIfilename\fP\&.
\fI[user@]host\fP will be set
to all elements of \fC$(csp_UHOSTS)\fP;
\fIdirectory\fP will be set to \fC$(csp_DIR)\fP\&.
Currently, \fC$(csp_scp_FUNC)\fP, \fC$(csp_cp_FUNC)\fP
and \fC$(csp_sucp_FUNC)\fP are supported as push
plugins\&. If \fCcsp_PUSH\fP is unset, the default
\fC$(csp_scp_FUNC)\fP is used\&.
.in -2m
.ZI 2m "\fCcsp_LOAD\fP"
\&
.br
the \&`load\&' target depends upon these targets\&.
.in -2m
.ZI 2m "\fCcsp_BUILD\fP"
\&
.br
the \&`build\&' target depends upon these targets\&.
.in -2m
.ZI 2m "\fCcsp_CP\fP"
\&
.br
cp binary, just "cp" by default
.in -2m
.ZI 2m "\fCcsp_SCP\fP"
\&
.br
scp binary, just "scp" by default
.in -2m
.ZI 2m "\fCcsp_SUCP\fP"
\&
.br
script wrapping sudo in ssh, "csp_sucp" by default
.in -2m
.ZI 2m "\fCcsp_EXTRAFILES\fP"
\&
.br
extra files which should be installed\&.
Can be used to include files starting with a dot\&.
.in -2m
.ZI 2m "\fCcsp_TABOOFILES\fP"
\&
.br
files which should never be installed\&. Set to
\fCMakefile \&.%\&.swp %~ #%# pod2htmd\&.tmp pod2htmi\&.tmp\fP by default\&.
.in -2m
.ZI 2m "\fCcsp_TABOOFILES_ADD\fP"
\&
.br
extra files which should never be installed;
added to list in \fCcsp_TABOOFILES\fP\&.
.in -2m
.ZI 2m "\fCcsp_TABOOFILES_SKIP\fP"
\&
.br
files which should be installed, even if
in initial \fCcsp_TABOOFILES\fP list\&. Removed from \fCcsp_TABOOFILES\fP
list\&.
.in -2m
.ZI 2m "\fCcsp_TABOODIRS\fP"
\&
.br
directories to exclude in install-recursive target\&.
set to \fCCVS \&.svn\fP by default\&.
.in -2m
.ZI 2m "\fCcsp_TABOODIRS_ADD\fP, \fCcsp_TABOODIRS_SKIP\fP"
\&
.br
see
\fCcsp_TABOOFILES\fP equivalents\&.
.in -2m
.ZI 2m "\fCcsp_UHOSTS_SUBSET\fP"
\&
.br
override csp_UHOSTS: don\&'t push to csp_UHOSTS, but
to the intersection of this space separated list of user@host items and
csp_UHOSTS\&.
.in -2m
The following variables might get phased out or removed soonish:
.ZI 2m "\fCcsp_CPFLAGS\fP"
\&
.br
extra arguments to pass to cp invocation, none by
default
.in -2m
.ZI 2m "\fCcsp_SCPFLAGS\fP"
\&
.br
extra arguments to pass to scp invocation, e\&.g\&.
\&'\fC-i \&.ssh/id_rsa-root\fP\&'
.in -2m
.SH EXAMPLES
Some examples:
\fBUsing csp_UHOST\fP
.br
This is the simplest way to use caspar\&. \fIMakefile\fP is
.di ZV
.in 0
.nf \fC
csp_UHOST = root@some\&.host\&.somewhere
csp_DIR = /etc/
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Now, running "make" will scp all files in the current directory to
\fCroot@some\&.host\&.somewhere:/etc/\fP\&.
\fBMore hosts, not scp but sudo via ssh: using csp_PUSH\fP
.br
\fIMakefile\fP is
.di ZV
.in 0
.nf \fC
csp_UHOSTS = root@some\&.host\&.somewhere root@some\&.other\&.host
csp_PUSH = $(csp_sucp_FUNC)
csp_DIR = /etc/
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Now, running "make" will use csp_sucp(1) to install all files in the current
directory to both root@some\&.host\&.somewhere:/etc/ and
root@some\&.other\&.host:/etc/\&. If a file named \fCfstab\fP is present in the
current directory, running "make fstab-install" will just install that one
file\&.
If you need to sudo(1) to another user on the remote host, add something like
.di ZV
.in 0
.nf \fC
csp_XARG = postgres
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&. (If such a username is not supplied, sudo (and csp_sucp) use the default:
root\&.)
\fBOverriding csp_UHOSTS: csp_UHOSTS_SKIP\fP
.br
If one or some of your hosts are temporarily unavailable, and you\&'d like to
push your files to the hosts which are alive, you can temporarily override your
csp_UHOSTS\&. E\&.g\&., when some\&.other\&.host is not available:
.di ZV
.in 0
.nf \fC
% cat Makefile
csp_UHOSTS = root@some\&.host\&.somewhere root@some\&.other\&.host
csp_DIR = /etc/
include caspar/mk/caspar\&.mk
% make install csp_UHOSTS_SKIP=root@some\&.other\&.host
scp hosts root@some\&.host\&.somewhere:/etc/
scp fstab root@some\&.host\&.somewhere:/etc/
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\fBOverriding csp_UHOSTS in a smart way: csp_UHOSTS_SUBSET\&. Using multiple
groups of hosts\&. Recursive make made easy\&.\fP
.br
If you have lots of subdirectories holding information for lots of groups of
hosts, while this run you just want to install for a small group (or 1) hosts,
csp_UHOSTS_SUBSET is useful\&.
Suppose your casparized tree looks like
.di ZV
.in 0
.nf \fC
Makefile
apache/include/install\&.mk
apache/etc/apache2/Makefile
apache/etc/apache2/envvars
php/include/install\&.mk
php/etc/php4/apache/Makefile
php/etc/php4/apache/php\&.ini
grub/include/install\&.mk
grub/boot/grub/Makefile
grub/boot/grub/menu\&.lst
logrotate/include/install\&.mk
logrotate/etc/Makefile
logrotate/etc/logrotate\&.conf
nrpe/include/install\&.mk
nrpe/debian/etc/default/Makefile
nrpe/debian/etc/default/nagios-nrpe-server
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
The file \fIapache/etc/apache2/Makefile\fP is:
.di ZV
.in 0
.nf \fC
csp_DIR = /etc/apache2/
include \&.\&./\&.\&./include/install\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
(all other \fIMakefile\fPs are similar)\&.
The file \fIapache/include/install\&.mk\fP is
.di ZV
.in 0
.nf \fC
csp_UHOSTS = root@a root@b
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
The file \fIphp/include/install\&.mk\fP is the same\&. The files
\fIgrub/include/install\&.mk\fP and \fIlogrotate/include/install\&.mk\fP are
.di ZV
.in 0
.nf \fC
csp_UHOSTS = root@d root@e root@f root@g
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
The file \fInrpe/include/install\&.mk\fP is
.di ZV
.in 0
.nf \fC
csp_UHOSTS = root@d root@e root@f root@n
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
The toplevel \fIMakefile\fP is
.di ZV
.in 0
.nf \fC
dirs = $(patsubst %/Makefile,%,$(shell find * -mindepth 1
-name Makefile))
all:
for i in $(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i; done
install
for i in $(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i install; done
load
for i in $(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i load; done
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
(we don\&'t feel like sticking a \fIMakefile\fP in all non-leaf nodes of our tree)\&.
Now, when running "\fCcsp_UHOSTS_SUBSET=\&'root@e root@f root@m root@n\&' make\fP"
in the toplevel, caspar just takes the intersection of csp_UHOSTS_SUBSET and
csp_UHOSTS for each csp_UHOSTS list\&. So, caspar will not push anything for
\fIapache/\fP and \fIphp/\fP\&. The files \fIgrub/boot/grub/menu\&.lst\fP and
\fIlogrotate/etc/logrotate\&.conf\fP will get pushed to \fCroot@e\fP and
\fCroot@f\fP only\&. The file \fInrpe/debian/etc/default/nagios-nrpe-server\fP
will get pushed to \fCroot@e\fP, \fCroot@f\fP and \fCroot@n\fP\&.
This is often better than just overriding csp_UHOSTS on the commandline (or in
your shell\&'s environment): if the intersection of the original csp_UHOSTS and
your new csp_UHOSTS is empty, chances are big you\&'ve just forgotten to clean
your environment\&.
\fBCreating remote directories if needed\fP
.br
\fIMakefile\fP is
.di ZV
.in 0
.nf \fC
csp_DIR = /some/dir/ectory/
csp_PUSH = $(csp_scpmkdir_FUNC)
csp_UHOST = root@some\&.host\&.somewhere
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Now, before calling scp, caspar will run \&'mkdir -p\&' to create any missing
remote directories\&.
\fBUsing csp_CP and csp_LOAD\fP
.br
\fIusername/etc/Makefile\fP is
.di ZV
.in 0
.nf \fC
csp_UHOST = dummy
csp_PUSH = $(csp_cp_FUNC)
csp_DIR = $(HOME)/etc/
csp_LOAD = crontab-load
include \&.\&./include/install\&.mk
crontab-load = crontab $(csp_DIR)/crontab
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
while \fI\&.\&./include/install\&.mk\fP is just
.di ZV
.in 0
.nf \fC
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&.
Setting \fCcsp_PUSH\fP to \fC$(csp_cp_FUNC)\fP causes cp(1) to get executed
by "make install" (not scp(1))\&.
Setting \fCcsp_LOAD\fP causes "make load" to execute the crontab command\&. Just
running "make" is OK too, since "make" calls both "make install" and "make
load"\&.
\fBUsing csp_DIR, csp_LOAD and install(1)\fP
.br
To install a file on the local host, create e\&.g\&. a file \fIetc/uruk/Makefile\fP
like:
.di ZV
.in 0
.nf \fC
csp_UHOST = dummy
csp_DIR = /etc/uruk/
csp_PUSH = $(csp_install_FUNC)
csp_LOAD = uruk-load
include caspar/mk/caspar\&.mk
uruk-load = sudo invoke-rc\&.d uruk force-reload
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\fBUsing csp_DIR and csp_LOAD, take 2\fP
.br
\fIetc/Makefile\fP is
.di ZV
.in 0
.nf \fC
csp_DIR = /etc/
csp_LOAD = aliases-load
include \&.\&./include/install\&.mk
aliases-load = $(csp_SSH) $1 "cd /etc && postalias aliases; postfix reload"
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
while \fI\&.\&./include/install\&.mk\fP is
.di ZV
.in 0
.nf \fC
csp_UHOST = root@some\&.host\&.somewhere
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\fBBuilding files locally\fP
.br
Note: csp_BUILD is deprecated\&. You should not use it\&.
If you\&'d like to build some files locally from local sources, before installing
the just built files, do e\&.g\&.:
.di ZV
.in 0
.nf \fC
csp_UHOST = root@some\&.host\&.somewhere
csp_DIR = /etc/
csp_EXTRAFILES = sshd_config
csp_TABOOFILES_ADD = sshd_config\&.m4
include caspar/mk/caspar\&.mk
sshd_config: sshd_config\&.m4
m4 $< > $@
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
List all source files in csp_TABOOFILES_ADD: this way, they won\&'t get installed
on the csp_UHOST\&.
\fBUsing csp_sucp_FUNC and csp_LOAD\fP
.br
If you\&'d like to use csp_sucp and want a \&`load\&' target, do something like:
.di ZV
.in 0
.nf \fC
csp_PUSH = $(csp_sucp_FUNC)
csp_UHOST = foobar\&.example\&.com
csp_DIR = /etc/uruk/
csp_LOAD = rc-load
include caspar/mk/caspar\&.mk
rc-load = $(csp_SSH) $1 sudo invoke-rc\&.d uruk force-reload
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\fBUsing the "verify" target\fP
.br
If you want to do some syntax check on the local host for a configuration
file, define a -verify target (or pattern target):
.di ZV
.in 0
.nf \fC
bar\&.pem-verify: bar\&.pem\&.asc bar\&.pem
gpg --verify $^
%\&.php-verify: %\&.php
php -l $<
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
This command will be invoked when you "make verify" and "make install"\&.
\fBUsing the "check" target\fP
.br
If you want to do some syntax check on the remote host, before loading the just
installed configuration file, do
.di ZV
.in 0
.nf \fC
csp_UHOST = foobar\&.example\&.com
csp_DIR = /etc/
csp_LOAD = my-load
csp_CHECK = my-check
my-check = $(csp_SSH) $1 do-check-stuff
my-load = $(csp_SSH) $1 do-load-stuff
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
This way, "make load" won\&'t cause the file to load if the check fails
(which is probably what you want)\&.
You could even give the file a temporary name and have the load target
rename it to its real name only after a successful check\&.
As a convenience, if a foo-check variable is defined, it is automatically
added as a dependency for any csp_LOAD targets named foo or foo-something\&.
\fBCombining the csp_LOAD target with multiple hosts; building files remotely\fP
.br
Here\&'s an example doing some preprocessing on the remote hosts before reloading the configuration:
.di ZV
.in 0
.nf \fC
csp_DIR = /etc/ssh/
csp_UHOSTS = root@some\&.host\&.somewhere root@some\&.other\&.host
csp_LOAD = sshd_config-load
sshd_config-load = $(csp_SSH) $1 "set -e; \e
cd $(csp_DIR); \e
m4 sshd_config\&.m4 >sshd_config; \e
service ssh reload"
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
(The old, deprecated way is to explicitly specify the loop over the hosts:
.di ZV
.in 0
.nf \fC
csp_DIR = /etc/ssh/
sshd_config-load:
for suh in $(csp_UHOSTS); do \e
$(csp_SSH) $$suh "set -e;
cd $(csp_DIR); \e
m4 sshd_config\&.m4 > sshd_config; \e
service ssh reload"; \e
done
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&.
You should not use this method\&.
Please consider rewriting any existing caspar snippets using the simpler method described above\&.)
\fBUsing the csp_TABOOFILES_{ADD,SKIP} variables; another way to perform remote builds\fP
.br
Using the csp_TABOOFILES_{ADD,SKIP} variables is handy if you want to
\fIinstall\fP a \fIMakefile\fP, instead of using it: Create \fIMakefile\fP just
as you\&'d like to have it installed on the remote location\&. Now, create
\fIGNUmakefile\fP as e\&.g\&.
.di ZV
.in 0
.nf \fC
csp_TABOOFILES_SKIP = Makefile
csp_TABOOFILES_ADD = GNUmakefile
csp_DIR = /etc/foobar/
csp_UHOST = root@some\&.host\&.somewhere
include caspar/mk/caspar\&.mk
load:
$(csp_SSH) $(csp_UHOST) "make -C $(csp_DIR)"
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Now, \fCmake install\fP and \fCmake load\fP will do the right thing\&.
\fBUsing the csp_EXTRAFILES variable\fP
.br
Using the csp_EXTRAFILES variable can be handy if you want to install files
with a leading dot\&. E\&.g\&.:
.di ZV
.in 0
.nf \fC
csp_EXTRAFILES = \&.bashrc
csp_UHOST = root@some\&.host\&.somewhere
csp_DIR =
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\fBOverriding csp_UHOSTS\fP
.br
Supply e\&.g\&.
.di ZV
.in 0
.nf \fC
csp_UHOSTS = root@localhost root@some\&.host\&.somewhere
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
in \fIinstall\&.mk\fP, to install on multiple hosts\&. Run
.di ZV
.in 0
.nf \fC
make filename-install csp_UHOSTS=joe@otherhost
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
to install filename as \fCjoe@otherhost\fP, instead of the default as given in
\fIinstall\&.mk\fP\&. If you want to enable passing csp_UHOSTS as a shell
environment variable, you\&'ll have to use conditional assignment in your
Makefile:
.di ZV
.in 0
.nf \fC
csp_UHOSTS ?= root@localhost root@some\&.host\&.somewhere
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
This allows it to run
.di ZV
.in 0
.nf \fC
% export csp_UHOSTS=foo@bar
% make filename-install
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
to install on \fCfoo@bar\fP\&.
\fBUsing sudo locally for installing files\fP
.br
If you\&'d like to install files like
.di ZV
.in 0
.nf \fC
sudo cp foo\&.rc /etc/foobar/
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
you could set up your \fIMakefile\fP as
.di ZV
.in 0
.nf \fC
csp_DIR = /etc/foobar/
csp_UHOST = dummy
csp_PUSH = sudo cp $(1) $(3)
include caspar/mk/caspar\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
This is like csp_sucp, but without the ssh wrapping: it works on localhost
only\&.
\fBPlugging your own install script in caspar\fP
.br
If your script \fCfoobar\fP should be called as e\&.g\&.
.di ZV
.in 0
.nf \fC
foobar --file=fstab --user@host=joe@some\&.host \e
--dir=/etc/ --debuglevel=3
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
then make sure your \fIMakefile\fP features something like
.di ZV
.in 0
.nf \fC
csp_foobar_FUNC = foobar --file=$(1) --user@host=$(2) \e
--dir=$(3) --debuglevel=$(4)
csp_PUSH = $(csp_foobar_FUNC)
csp_XARG = 3
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
You can now use \fCcsp_UHOST\fP and \fCcsp_DIR\fP just as you\&'re used to\&.
\fBMore advanced tricks\fP
.br
When you don\&'t want to ssh to \fCroot@some\&.host\&.somewhere\fP directly, you could
do
.di ZV
.in 0
.nf \fC
sudo rsync -az /path/to/your/config_archive /etc
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
on some\&.host\&.somewhere (e\&.g\&. from cron)\&.
.SH FILES
\fIcaspar/mk/caspar\&.mk\fP, \fIcaspar/mk/docbook\&.mk\fP, \fIcaspar/mk/pod\&.mk\fP
.SH ENVIRONMENT
For \fIcaspar\&.mk\fP: \fCcsp_CP\fP, \fCcsp_LOAD\fP,
\fCcsp_SCP\fP, \fCcsp_UHOST\fP, \fCcsp_PUSH\fP, \&.\&.\&.
.SH BUGS
Very likely, GNU Make is not the best tool for doing the stuff \fIcaspar\&.mk\fP is
doing\&.
For the list of reported bugs, see http://bugs\&.debian\&.org/src:caspar\&.
See also TODO, distributed with the caspar package\&. (And online at
http://mdcc\&.cx/pub/caspar/caspar-latest/TODO\&.)
.SH 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\&.
.SH AUTHOR
Joost van Baal-Ilić
.SH SEE ALSO
\fBcaspar-typesetting(7)\fP
\fBcsp_helper(1)\fP
The caspar homepage is at http://mdcc\&.cx/caspar/ \&.
The document
\fI"Versiebeheer en
software-packages: Waarom en Hoe"\fP (in Dutch) describes some of the reasons why
people might want to use tools like caspar\&.
Jeroen Hoppenbrouwers blogs about the way he uses caspar, in
\fI"Using Subversion and Caspar to
maintain a Linux host"\fP\&.
Lots of tools overlap (partly) with caspar in their functionality\&. Here\&'s a
list\&.
ansible (http://www\&.ansible\&.com/); code is on github
(https://github\&.com/ansible/ansible)
cfengine (http://www\&.cfengine\&.org/), by Mark Burgess e\&.a\&., builds
expert systems to administrate and configure large computer networks: it
delivers a very big superset of caspar\&'s installation mechanism\&.
Puppet (http://reductivelabs\&.com/projects/puppet), also something
like a configuration management system\&.
Here\&'s an older list; a big part of it was collected by Ray Miller
(http://users\&.ox\&.ac\&.uk/~raym/) of Oxford University, and published in
the article "Configuration Management with Subversion, YAML and Perl Template
Toolkit" in the SANE 2006 (http://www\&.sane\&.nl/sane2006/) conference
proceedings\&. FIXME: Check urls, update
docbookmk, by Michael Wiedmann (http://www\&.miwie\&.org/docbkmake/)
offers probably a superset of Caspar\&'s \fIdocbook\&.mk\fP functionality\&.
latex-make by the LaTeX Utils project on
http://gforge\&.inria\&.fr/projects/latex-utils/ seems to provide similar
functionality as \fIdocbook\&.mk\fP for LaTeX documents\&.
Latexmk by John Collins e\&.a\&. on
http://www\&.phys\&.psu\&.edu/~collins/software/latexmk-jcc/ is another
implementation of this idea\&.
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\&.
PIKT (http://www\&.pikt\&.org/) is intended primarily for system
monitoring, but does do configuration management too\&.
LCFG (http://www\&.lcfg\&.org/) is another configuration management
system\&.
The Arusha Project (ARK, at http://ark\&.sf\&.net/) provides a framework
for collaborative system administration\&.
Bcfg2 (http://trac\&.mcs\&.anl\&.gov/projects/bcfg2/) is yet another
configuration management system\&.
quattor (http://quattor\&.web\&.cern\&.ch/) is a system administration
toolkit for installation, configuration and management of Unix systems\&.
rb3 and friends, as written and used by Ray Miller e\&.a\&. at Oxford University,
(http://users\&.ox\&.ac\&.uk/~raym/software/configuration-management/)\&.
The \fIsvk\fP version control system is said to be
quite usable for handling configuration file management (without a separate
install mechanism like caspar)\&. See also
\fIthis
discussion on the Debian development list\fP\&.
On the http://www\&.infrastructures\&.org/ website on automated (Unix)
system administration, you can find some thoughts on managing configuration
files using a version control system\&.
caspar-20220907/doc/casparize.txt 0000644 0001750 0001750 00000003041 14306130464 013441 0000000 0000000 7 сеп 2022 casparize 20220907
1.
NAME
2.
SYNOPSIS
3.
DESCRIPTION
4.
USAGE
5.
EXAMPLES
6.
BUGS
7.
AUTHOR
8.
SEE ALSO
NAME
casparize — Set up caspar Makefile in a new directory
SYNOPSIS
casparize dir (/path/to/config/dir)
casparize file (/path/to/config/dir/file)
DESCRIPTION
casparize creates a new configuration working directory in your current working
directory, sets up a Makefile for caspar(7) in this new directory, and
optionally copies an original configuration file from its original system place
to the newly created configuration working directory.
USAGE
You typically use casparize when you already have created the root
configuration working directory with its include directory and install.mk
Caspar include file. By analysing your current working directory and the
configuration directory path you give on the command line, casparize can deduce
the contents of the Makefile in the newly created configuration working
directory. It creates the new directory, creates the correct Makefile, and
optionally copies the given configuration file in the new directory, ready for
its first version commit.
EXAMPLES
A typical example:
$ cd /etc $ casparize /etc/postfix/main.cf
creates the directory /etc/postfix, creates /etc/postfix/Makefile
including the proper content, and copies /etc/postfix/main.cf into /etc/
postfix/main.cf. You can now directly add and commit the new directory.
BUGS
Non known at this moment.
AUTHOR
Jeroen Hoppenbrouwers
SEE ALSO
caspar(7) The caspar homepage is at http://mdcc.cx/caspar/ .
caspar-20220907/doc/csp_scp_keep_mode.1 0000644 0001750 0001750 00000000032 14306130375 014441 0000000 0000000 .\"
.so man1/csp_helper.1
caspar-20220907/doc/csp_helper.azm 0000644 0001750 0001750 00000007444 13721721100 013560 0000000 0000000 \: vim:syntax=tex
\: This file is maintained at http://git.mdcc.cx/caspar
\: this is a manpage in zoem format. see http://micans.org/zoem/ and man_zmm(7)
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{csp_helper}
{html_title}{csp_helper}
{section}{1}
\man_share
}
\${html}{\"pud::man::maketoc"}
\def{caspar}{\bf{caspar}}
\def{csp_install}{\bf{csp_install}}
\def{csp_mkdircp}{\bf{csp_mkdircp}}
\def{csp_scp_keep_mode}{\bf{csp_scp_keep_mode}}
\def{csp_sucp}{\bf{csp_sucp}}
\sec{name}{NAME}
\NAME{csp_helper}{A collection of caspar helper scripts}
\sec{synopsis}{SYNOPSIS}
\csp_install \synreqopt{dir}{directory} \synreqopt{file}{file}
\par{
\csp_mkdircp \synreqopt{dir}{directory} \synreqopt{file}{file}
} \par{
\csp_scp_keep_mode \synreqopt{h}{[user@]host} \synreqopt{dir}{directory} \synreqopt{file}{file}
} \par{
\csp_sucp
\synreqopt{h}{[user@]host}
\synreqopt{dir}{directory}
\synreqopt{file}{file}
}
\sec{description}{DESCRIPTION}
The scripts \csp_install, \csp_mkdircp, \csp_scp_keep_mode and \csp_sucp are helpers for
\sibref{caspar}{caspar(7)}. These scripts typically are not invoked directly,
but via a Makefile which uses \caspar. See the notes on csp_PUSH in
\sibref{caspar}{caspar(7)} for information on how to link \csp_install,
\csp_scp_keep_mode and \csp_sucp to \caspar.
\sec{install_description}{install DESCRIPTION}
\csp_install creates the required directory (if needed) and installs the file,
preserving timestamps. It uses install(1).
\sec{install_examples}{install EXAMPLES}
\verbatim{
csp_INSTALL_OPTIONS='--owner=www-data --group=www-data' \\
csp_INSTALL_MODE=ugo=r \\
csp_install /srv/www index.html}
\verbatim{
csp_INSTALL_MODE=u=rwx,go= csp_install /usr/local/sbin mkpasswd}
\sec{install_environment}{install ENVIRONMENT}
\csp_install honors csp_INSTALL_OPTIONS and csp_INSTALL_MODE (default is
u=rw,go=r).
\sec{mkdircp_description}{mkdircp DESCRIPTION}
\csp_mkdircp calls mkdir(1) and cp(1).
\csp_mkdircp is used like csp_CP. use \csp_mkdircp if you frequently have to
bootstrap installation on a fresh system, on which needed directories don't
exist yet. \csp_mkdircp makes sure the target directory exists before calling
cp(1), by calling mkdir -p first.
\sec{scp_keep_mode_description}{scp_keep_mode DESCRIPTION}
\csp_scp_keep_mode uses ssh to copy a file to a remote host, keeping its file
permission mode. The trick used is a combination of mktemp(1) and mv(1).
Useful if you'd like to be sure a file gets installed e.g. group writable,
without fiddling with permission bits on the remote host.
\sec{scp_keep_mode_examples}{scp_keep_mode EXAMPLE}
\verbatim{
chmod g+w rc
csp_scp_keep_mode root@gandalf /etc/uruk rc}
\sec{scp_keep_mode_environment}{scp_keep_mode ENVIRONMENT}
\csp_scp_keep_mode honors csp_SSH ("ssh" by default).
\sec{sucp_description}{sucp DESCRIPTION}
\csp_sucp calls tar(1) from within sudo(1) from within ssh(1). This allows one
to copy files to accounts on hosts one can only reach by calling sudo on the
ssh-reachable remote host.
\par{
Typically, one wants to install a root-owned file, but one does not want to
allow access to the root-account directly from ssh. Typically sudo is used as
an extra line of defense.
}
\par{NB: if your sudo prompts for a password, be sure to have line
\verbatim{
Defaults !tty_tickets}
in your sudoers file: we first call sudo -v, than we call sudo to write the
data. Since we use ssh to get to the host, we'll use a different tty for both
sudo calls.
}
\sec{sucp_examples}{sucp EXAMPLES}
Some examples:
\verbatim{
csp_sucp rms@bilbo /etc fstab}
\verbatim{
csp_sucp monty-python commit/ trailer.txt}
\sec{author}{AUTHOR}
\"man::author"
\sec{seealso}{SEE ALSO}
\sibref{caspar}{caspar(7)}
The caspar homepage is at \httpref{http://mdcc.cx/caspar/} .
\end{pud::man}
caspar-20220907/doc/caspar-typesetting.txt 0000644 0001750 0001750 00000005470 14306131350 015311 0000000 0000000 7 сеп 2022 caspar-typesetting 20220907
1.
NAME
2.
SYNOPSIS
3.
DESCRIPTION
4.
USAGE
5.
EXAMPLES
6.
FILES
7.
ENVIRONMENT
8.
AUTHOR
9.
SEE ALSO
NAME
caspar-typesetting - Makefile snippets for common typesetting tasks
SYNOPSIS
In a Makefile, write
include caspar/mk/docbook.mk
or
include caspar/mk/pod.mk
or
include caspar/mk/markdown.mk
.
DESCRIPTION
The caspar docbook.mk, pod.mk and markdown.mk files are Makefile snippets for
common typesetting tasks, like typesetting LaTeX (see [3]), DocBook XML,
DocBook SGML (see [2]), POD (see [1]) and Markdown (see [4]) documents. You
just have to type make, instead of stuff like jade -t tex -d caspar/print.dsl /
usr/share/sgml/declaration/xml.dcl foobar.dbx.
USAGE
In a directory where you maintain .dbx (Docbook XML) or .tex (LaTeX) files, do
$ echo include caspar/mk/docbook.mk > Makefile $ vi karenina.dbx $ make
karenina.view $ make karenina.print $ vi svejk.tex $ make svejk.view $ make
svejk.print $ make $ make clean
Other targets: filename.ps, filename.pdf, filename.2ps, filename.html,
filename.printbig, filename.dvi.
Variables you might like to set in your Makefile: XMLDCL (default is /usr/share
/sgml/declaration/xml.dcl; if you're not on a Debian GNU/Linux system, you'll
likely have to adjust this), HTML_DSL, PRINT_DSL.
In a directory where you maintain .pod files, do
$ echo include caspar/mk/pod.mk > Makefile $ vi lire.pod $ perldoc ./lire.pod $
make lire.pdf $ make $ less lire.overstrike-txt $ make clean
Other targets: filename.ps, filename.html, filename.txt, ... (Similar to the
ones supplied by docbook.mk).
In a directory where you maintain .md files, do
$ echo include caspar/mk/markdown.mk > Makefile $ vi lire.md $ make lire.html $
make $ make clean
.
EXAMPLES
Some examples: Overriding the caspar-supplied DSSSL files: Create your own
print.dls and html.dsl, in the same directory as your Docbook XML files. Your
Makefile should read:
PRINT_DSL = print.dsl HTML_DSL = html.dsl include caspar/mk/docbook.mk
Overriding the standard html-to-text convertor:
$ W3M=lynx make svejk.txt
.
FILES
caspar/mk/docbook.mk, caspar/mk/pod.mk, caspar/mk/markdown.mk.
ENVIRONMENT
For docbook.mk: files: XMLDCL, HTML_DSL, PRINT_DSL; utilities: JADE,
PDFJADETEX, PDFLATEX, JADETEX, LATEX, W3M, DVIPS, PSNUP, LPR, GV; settings:
JADE_MAXERRORS. These variables can get adjusted in Makefile, as well as in the
shell environment.
The files pod.mk and markdown.mk use no environment variables.
AUTHOR
Joost van Baal-Ilić
SEE ALSO
caspar(7) [1] perlpod(1) about Perl's Plain Old Documentation format
[2] DocBook: The Definitive Guide on http://docbook.org/,
[3] The LaTeX Project Homepage on http://www.latex-project.org/.
[4] John Gruber's Markdown homepage on https://daringfireball.net/projects/
markdown/.
Some comments on advanced usage are in the files docbook.mk and pod.mk itself.
caspar-20220907/doc/caspar-typesetting.7 0000644 0001750 0001750 00000010271 14306131350 014633 0000000 0000000 .\" Copyright (c) 2022 Joost van Baal-Ilić
.TH "caspar-typesetting" 7 "7 сеп 2022" "caspar-typesetting 20220907" "MISCELLANEOUS "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
caspar-typesetting - Makefile snippets for common typesetting tasks
.SH SYNOPSIS
In a Makefile, write
.di ZV
.in 0
.nf \fC
include caspar/mk/docbook\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
or
.di ZV
.in 0
.nf \fC
include caspar/mk/pod\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
or
.di ZV
.in 0
.nf \fC
include caspar/mk/markdown\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&.
.SH DESCRIPTION
The caspar \fIdocbook\&.mk\fP, \fIpod\&.mk\fP and \fImarkdown\&.mk\fP files are Makefile snippets for common
typesetting tasks, like typesetting LaTeX (see [3]), DocBook
XML, DocBook SGML (see [2]), POD (see [1]) and Markdown (see [4]) documents\&.
You just have to type \fCmake\fP, instead of stuff like \fCjade -t tex -d
caspar/print\&.dsl /usr/share/sgml/declaration/xml\&.dcl foobar\&.dbx\fP\&.
.SH USAGE
In a directory where you maintain \&.dbx (Docbook XML) or \&.tex (LaTeX) files, do
.di ZV
.in 0
.nf \fC
$ echo include caspar/mk/docbook\&.mk > Makefile
$ vi karenina\&.dbx
$ make karenina\&.view
$ make karenina\&.print
$ vi svejk\&.tex
$ make svejk\&.view
$ make svejk\&.print
$ make
$ make clean
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Other targets: \fCfilename\&.ps\fP, \fCfilename\&.pdf\fP, \fCfilename\&.2ps\fP, \fCfilename\&.html\fP,
\fCfilename\&.printbig\fP, \fCfilename\&.dvi\fP\&.
Variables you might like to set in your Makefile: \fCXMLDCL\fP (default is
\fC/usr/share/sgml/declaration/xml\&.dcl\fP; if you\&'re not on a Debian GNU/Linux
system, you\&'ll likely have to adjust this), \fCHTML_DSL\fP, \fCPRINT_DSL\fP\&.
In a directory where you maintain \&.pod files, do
.di ZV
.in 0
.nf \fC
$ echo include caspar/mk/pod\&.mk > Makefile
$ vi lire\&.pod
$ perldoc \&./lire\&.pod
$ make lire\&.pdf
$ make
$ less lire\&.overstrike-txt
$ make clean
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Other targets: \fCfilename\&.ps\fP, \fCfilename\&.html\fP, \fCfilename\&.txt\fP, \&.\&.\&.
(Similar to the ones supplied by \fIdocbook\&.mk\fP)\&.
In a directory where you maintain \&.md files, do
.di ZV
.in 0
.nf \fC
$ echo include caspar/mk/markdown\&.mk > Makefile
$ vi lire\&.md
$ make lire\&.html
$ make
$ make clean
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&.
.SH EXAMPLES
Some examples: Overriding the caspar-supplied DSSSL files: Create your own
print\&.dls and html\&.dsl, in the same directory as your Docbook XML files\&. Your
Makefile should read:
.di ZV
.in 0
.nf \fC
PRINT_DSL = print\&.dsl
HTML_DSL = html\&.dsl
include caspar/mk/docbook\&.mk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Overriding the standard html-to-text convertor:
.di ZV
.in 0
.nf \fC
$ W3M=lynx make svejk\&.txt
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&.
.SH FILES
\fIcaspar/mk/docbook\&.mk\fP, \fIcaspar/mk/pod\&.mk\fP, \fIcaspar/mk/markdown\&.mk\fP\&.
.SH ENVIRONMENT
For \fIdocbook\&.mk\fP: files: \fCXMLDCL\fP, \fCHTML_DSL\fP, \fCPRINT_DSL\fP;
utilities: \fCJADE\fP, \fCPDFJADETEX\fP, \fCPDFLATEX\fP, \fCJADETEX\fP, \fCLATEX\fP,
\fCW3M\fP, \fCDVIPS\fP, \fCPSNUP\fP, \fCLPR\fP, \fCGV\fP; settings:
\fCJADE_MAXERRORS\fP\&. These variables can get adjusted in Makefile, as well as
in the shell environment\&.
The files \fIpod\&.mk\fP and \fImarkdown\&.mk\fP use no environment variables\&.
.SH AUTHOR
Joost van Baal-Ilić
.SH SEE ALSO
\fBcaspar(7)\fP
[1]
perlpod(1) about Perl\&'s Plain Old Documentation format
[2]
\fIDocBook: The Definitive Guide\fP on http://docbook\&.org/,
[3]
The LaTeX Project Homepage on http://www\&.latex-project\&.org/\&.
[4]
John Gruber\&'s Markdown homepage on
https://daringfireball\&.net/projects/markdown/\&.
Some comments on advanced usage are in the files \fIdocbook\&.mk\fP and \fIpod\&.mk\fP
itself\&.
caspar-20220907/doc/ChangeLog.2002 0000644 0001750 0001750 00000010044 13721721100 013045 0000000 0000000 caspar (20030803)
* mk/Makefile.am, sgml/Makefile.am: bugfix. new build system needs new
PACKAGE variable. stuff got installed in /usr/share/mk/ (not
/usr/share/caspar/mk/)
-- Joost van Baal Sun, 03 Aug 2003 00:06:34 +0200
caspar (20030802)
* more bugfixes: generating pdf from LaTeX was broken since caspar 20030716.
* mk/docbook.mk: now uses pdflatex for generating PDF directly from LaTeX
(without intermediate PostScript). calls latex 3 times: make sure tocs
get created. no longer uses ps2pdf.
* mk/caspar.mk: get rid of non-portable 'echo -n': this made caspar fail
on Solaris. Tnx Piet Lauwen for bugreport and suggestion for fix.
* Makefile.am, bootstrap, setversion, configure.ac/configure.in:
moved to autoconf 2.53 style, renamed configure.in to configure.ac: new
autotools naming convention. (Now uses same build system as AD1810
Firewall ( http://mdcc.cx/ad1810-firewall/ ).
-- Joost van Baal Sat, 02 Aug 2003 23:26:06 +0200
caspar (20030718)
* bugfix release
* mk/docbook.mk: run pdfjadetex 3 times: fixes toc. rm -f intermediate
files: no sure wether they will get created. added license referal
-- Joost van Baal Fri, 18 Jul 2003 11:12:43 +0200
caspar (20030716)
* TODO: I'd like a TOC in HTML output from DocBook. (Even while we're doing
nochunks mode)
* README: added link to http://www.miwie.org/docbkmake/ , which seems
similar to docbook.mk in it's goals
* mk/docbook.mk: use pdfjadetex for generating pdf: fonts look better
-- Joost van Baal Wed, 16 Jul 2003 21:03:17 +0200
caspar (20030331)
* mk/caspar.mk: ommitting SDIR results in scp to get skipped
* mk/caspar.mk: added SUHS hack: now possible to install on multiple hosts.
* mk/docbook.mk: sane default target added.
* mk/Makefile.am: some fiddling to get make distcheck working with
automake 1.7
* README: documented new tricks.
-- Joost van Baal Mon, 31 Mar 2003 22:04:18 +0200
caspar (20030203)
* TODO: Found bug in caspar.mk.
* README: Added note about cvs-conf. Added pointer to Debian package.
Added note about usage with rsync.
* mk/pod.mk: Added: support for typesetting Perl's Plain Old Documentation.
-- Joost van Baal Mon, 03 Feb 2003 16:23:09 +0100
caspar (20020331)
* mk/docbook.mk: jade will quit after max 10 errors, not 200: we will be
able to see the very first error without having to scroll back. Added
support for DocBook SGML sourcefiles. Added some more comments on usage.
* README: updated.
-- Joost van Baal Sun, 31 Mar 2002 12:04:31 +0200
caspar (20020313)
* mk/docbook.mk: clean target more robust: `-rm' instead of `rm'. Now uses
caspar/{html,print}.dsl.
* sgml/{html,print}.dsl: added. Used by mk/docbook.mk.
-- Joost van Baal Wed, 13 Mar 2002 13:09:09 +0100
caspar (20020301)
* README: added requirements section.
* mk/docbook.mk: added: useful for generating PostScript and stuff from LaTeX
or DocBook XML sources.
-- Joost van Baal Fri, 1 Mar 2002 16:18:54 +0100
caspar (20020227)
* README: finally got to document it.
* mk/caspar.mk: renamed `DIR' to `SDIR'; renamed XXTARGETS to LOAD: more
descriptive name.
* mk/caspar.mk: used to be called mk/install.mk.
* mk/caspar.mk: added target `load'. added variable CDIR. got rid of
obsolete comments.
-- Joost van Baal Wed, 27 Feb 2002 18:06:16 +0100
caspar (20020226)
* mk/install.mk: we conditionally set SRDIRS using SUH and DIR: now Makefiles
can use these two vars too.
* mk/install.mk: Now CPDIRS uses -install as targetname, as SRDIRS
already did.
* First tarball build; preliminary release
-- Joost van Baal Tue, 26 Feb 2002 18:36:49 +0100
(First work on caspar's predecessors began in 2000, probably.)
caspar-20220907/doc/caspar.ps 0000644 0001750 0001750 00000120724 14306131350 012537 0000000 0000000 %!PS-Adobe-3.0
%%Creator: groff version 1.22.4
%%CreationDate: Wed Sep 7 15:04:08 2022
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Courier
%%+ font Times-Italic
%%DocumentSuppliedResources: procset grops 1.22 4
%%Pages: 11
%%PageOrder: Ascend
%%DocumentMedia: Default 595 842 0 () ()
%%Orientation: Portrait
%%EndComments
%%BeginDefaults
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
%%BeginResource: procset grops 1.22 4
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/MANUAL{
statusdict begin/manualfeed true store end
}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
DEFS/BPhook known{DEFS begin BPhook end}if
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/Fr{
setrgbcolor fill
}bind def
/setcmykcolor where{
pop
/Fk{
setcmykcolor fill
}bind def
}if
/Fg{
setgray fill
}bind def
/FL/fill load def
/LW/setlinewidth load def
/Cr/setrgbcolor load def
/setcmykcolor where{
pop
/Ck/setcmykcolor load def
}if
/Cg/setgray load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne
2 index/UniqueID ne
and
{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
/setpagedevice{}def
mark
}bind def
/PEND{
cleartomark
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%EndProlog
%%BeginSetup
%%BeginFeature: *PageSize Default
<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice
%%EndFeature
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Courier
%%IncludeResource: font Times-Italic
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Times-Italic@0 ENC0/Times-Italic RE/Courier@0 ENC0/Courier RE
/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E/F1 10.95/Times-Bold@0 SF -.219(NA)20 84 S(ME).219
E F0(caspar - Mak)100 96 Q(e\214le snippets for common tasks)-.1 E F1
(SYNOPSIS)20 112.8 Q F0(In a Mak)100 124.8 Q(e\214le, write either)-.1 E
/F2 10/Courier@0 SF(include caspar/mk/caspar.mk)112 160.8 Q F0(or)100
184.8 Q F2(include caspar/mk/docbook.mk)112 220.8 Q F0(or)100 244.8 Q F2
(include caspar/mk/pod.mk)112 280.8 Q F0(.)100 304.8 Q F1(DESCRIPTION)20
321.6 Q F0 .8(Caspar of)100 333.6 R .8(fers Mak)-.25 F .8
(e\214le snippets for common tasks, lik)-.1 F 3.3(ei)-.1 G .8
(nstalling \(con\214guration\) \214les, or type-)-3.3 F(setting LaT)100
345.6 Q(eX, DocBook XML and DocBook SGML documents.)-.7 E 1.351
(The typesetting functionality is deli)100 369.6 R -.15(ve)-.25 G 1.352
(red by).15 F/F3 10/Times-Italic@0 SF(docbook.mk)3.852 E F0(and)3.852 E
F3(pod.mk)3.852 E F0 6.352(.T)C 1.352(his is documented in)-6.352 F/F4
10/Times-Bold@0 SF(caspar)100 381.6 Q(-typesetting\(7\))-.37 E F0(.)A
.456(The installing-stuf)100 405.6 R 2.956(ff)-.25 G .456
(unctionality is deli)-2.956 F -.15(ve)-.25 G .456(red by).15 F F3
(caspar.mk)2.955 E F0 5.455(.\()C(That')-5.455 E 2.955(sw)-.55 G .455
(hat the rest of the manual)-2.955 F 1.22
(will talk about.\) It enables one to run 'mak)100 417.6 R 3.721(ei)-.1
G 1.221(nstall' from within a tree which typically holds)-3.721 F 1.199
(con\214guration \214les, managed using Sub)100 429.6 R -.15(ve)-.15 G
1.199(rsion \(or git or an).15 F 3.698(yo)-.15 G 1.198(ther v)-3.698 F
1.198(ersion control system, for)-.15 F(that matter\).)100 441.6 Q .536
(It is useful in cases lik)100 465.6 R 3.036(et)-.1 G .537
(his: all con\214guration \214les of some host are under v)-3.036 F .537
(ersion control, and,)-.15 F .167
(after commiting a change to CVS, you w)100 477.6 R .166
(ant to be able to easily install the ne)-.1 F 2.666(wc)-.25 G .166
(on\214guration \214le)-2.666 F(on the host.)100 489.6 Q -.4(Wi)100
513.6 S(th).4 E F4(caspar)3.267 E F0 3.267(,a)C .767(ll you ha)-3.267 F
1.067 -.15(ve t)-.2 H 3.267(od).15 G 3.267(oi)-3.267 G 3.267(ss)-3.267 G
.767(pecify the hostname in one place, and specify the name of)-3.267 F
(the tar)100 525.6 Q(get directory in each CVS directory.)-.18 E .324
(It is comparable with other tools for Unix system administrators lik)
100 549.6 R 2.823(ep)-.1 G .323(uppet and cfengine. Main)-2.823 F(dif)
100 561.6 Q
(ference: the caspar code consists of less than 100 lines of GNU Mak)
-.25 E(e.)-.1 E F1(USA)20 578.4 Q(GE)-.602 E F0 -.4(Wi)100 590.4 S
(thin a CVS tree, create a \214le).4 E F3(include/install.mk)2.5 E F0
2.5(,w)C(ith contents lik)-2.5 E 2.5(ee)-.1 G(.g.)-2.5 E F2
(csp_UHOST = root@some.host.somewhere)106 626.4 Q
(include caspar/mk/caspar.mk)106 638.4 Q F0 3.156(.W)100 662.4 S .657(i\
thin each other directory of the CVS tree which holds \214les, create a\
Mak)-3.556 F .657(e\214le, which looks)-.1 F(lik)100 674.4 Q 2.5(ee)-.1
G(.g.)-2.5 E(caspar 20220907)20 768 Q 2.5<37d1>135.36 G
-2.5 E(1)198.4 E 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E/F1 10/Courier@0 SF(csp_DIR = /some/dir/ectory/)
106 84 Q(include ../../include/install.mk)106 96 Q F0 5.041(.I)100 120 S
2.541(fy)-5.041 G(ou')-2.541 E 2.541(dl)-.5 G(ik)-2.541 E 2.541(et)-.1 G
2.541(ou)-2.541 G .041(se the)-2.541 F/F2 10/Times-Italic@0 SF
(install-r)2.541 E(ecur)-.37 E(sive)-.1 E F0(tar)2.541 E .04
(get too, in directories which hold subdirectories \(b)-.18 F(ut)-.2 E
(not \214les\), you')100 132 Q(ll ha)-.1 E .3 -.15(ve t)-.2 H 2.5(oc).15
G(reate a Mak)-2.5 E(e\214le which looks something lik)-.1 E(e)-.1 E F1
(include ../../include/install.mk)106 168 Q F0 2.5(.F)100 192 S
(rom within the CVS tree, one can call:)-2.5 E F1(make -diff)
112 228 Q(make -install)112 240 Q(make diff)112 252 Q
(make install)112 264 Q(make load)112 276 Q(make)112 288 Q
(make install-recursive)112 300 Q F0(Calling)100 324 Q F1 .961
(make -diff)3.461 F F0(sho)3.461 E .961(ws the dif)-.25 F
3.461(fb)-.25 G .962(etween the local \214le and the \214le as cur)
-3.461 F(-)-.2 E 1.055(rently installed on the remote location.)100 336
R(Calling)6.055 E F1 1.055(make install)3.555 F F0(\(or)3.555 E F1(make)
3.555 E F0 3.555(\)n)C 1.555 -.25(ow w)-3.555 H 1.055(ill scp all).25 F
.818(\214les in the current directory to the remote location. The)100
348 R F2(install-r)3.318 E(ecur)-.37 E(sive)-.1 E F0(tar)3.318 E .818
(get descends do)-.18 F(wn)-.25 E(the tree, and calls)100 360 Q F1
(make install)2.5 E F0(in each subdirectory.)2.5 E .277(Of course, you')
100 384 R .277(ll ha)-.1 F .577 -.15(ve t)-.2 H 2.777(ob).15 G 2.777(ea)
-2.777 G .277
(ble to ssh directly as root to the remote host to get this w)-2.777 F
.277(orking \(if)-.1 F(you')100 396 Q 3.444(dl)-.5 G(ik)-3.444 E 3.444
(et)-.1 G 3.444(ou)-3.444 G(se)-3.444 E F1 .944
(csp_UHOST = root@some.host.somewhere)3.444 F F0 .945(\). If you don')B
3.445(tl)-.18 G(ik)-3.445 E 3.445(et)-.1 G(his,)-3.445 E .582(and w)100
408 R .582(ould lik)-.1 F 3.082(et)-.1 G 3.082(oh)-3.082 G -2.25 -.2
(av e)-3.082 H(a)3.282 E F1 .582(PermitRootLogin no)3.082 F F0 .582
(in your)3.082 F F1(/etc/ssh/sshd_config)3.081 E F0 3.081(,y)C(ou)-3.081
E(can use csp_sucp\(1\). See belo)100 420 Q(w.)-.25 E/F3 10.95
/Times-Bold@0 SF -1.478(VA)20 436.8 S(RIABLES)1.478 E F0(The v)100 448.8
Q(ariables one can set in a calling Mak)-.25 E(e\214le are:)-.1 E F1
(csp_UHOST)100 472.8 Q F0(user@host, reachable using)120 484.8 Q F1
($\(csp_PUSH\))2.5 E F0(\(which is scp by def)2.5 E(ault\))-.1 E F1
(csp_UHOSTS)100 496.8 Q F0
(space separated list of user@host items, reachable using)120 508.8 Q F1
($\(csp_PUSH\))2.5 E(csp_DIR)100 520.8 Q F0
(directory on host, reachable using function)120 532.8 Q F1
($\(csp_PUSH\))2.5 E(csp_PUSH)100 544.8 Q F0(mak)120 556.8 Q 4.06(ef)-.1
G 1.56(unction for pushing \214les to remote location.)-4.06 F(Usually)
6.561 E 4.061(,t)-.65 G 1.561(his is a wrapper around a)-4.061 F 1.827
(script or program. The function will be passed 4 ar)120 568.8 R
(guments:)-.18 E F2([user@]host)120 580.8 Q F0 3.125(,r)C(emote)-3.125 E
F2(dir)3.125 E(ectory)-.37 E F0 .625(and local)3.125 F F2(\214lename)
3.125 E F0(.)A F2([user@]host)5.625 E F0 .625
(will be set to all elements)3.125 F(of)120 592.8 Q F1($\(csp_UHOSTS\))
11.692 E F0(;)A F2(dir)11.692 E(ectory)-.37 E F0 9.191(will be set to)
11.691 F F1($\(csp_DIR\))11.691 E F0 14.191(.C)C(urrently)-14.191 E(,)
-.65 E F1($\(csp_scp_FUNC\))120 604.8 Q F0(,)A F1($\(csp_cp_FUNC\))3.513
E F0(and)3.513 E F1($\(csp_sucp_FUNC\))3.513 E F0 1.014
(are supported as)3.513 F(push plugins. If)120 616.8 Q F1(csp_PUSH)2.5 E
F0(is unset, the def)2.5 E(ault)-.1 E F1($\(csp_scp_FUNC\))2.5 E F0
(is used.)2.5 E F1(csp_LOAD)100 628.8 Q F0(the `load' tar)120 640.8 Q
(get depends upon these tar)-.18 E(gets.)-.18 E F1(csp_BUILD)100 652.8 Q
F0(the `b)120 664.8 Q(uild' tar)-.2 E(get depends upon these tar)-.18 E
(gets.)-.18 E F1(csp_CP)100 676.8 Q F0(cp binary)120 688.8 Q 2.5(,j)-.65
G(ust "cp" by def)-2.5 E(ault)-.1 E F1(csp_SCP)100 700.8 Q F0
(scp binary)120 712.8 Q 2.5(,j)-.65 G(ust "scp" by def)-2.5 E(ault)-.1 E
F1(csp_SUCP)100 724.8 Q F0(caspar 20220907)20 768 Q 2.5<37d1>135.36 G
-2.5 E(2)198.4 E 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E(script wrapping sudo in ssh, "csp_sucp" by def)
120 84 Q(ault)-.1 E/F1 10/Courier@0 SF(csp_EXTRAFILES)100 96 Q F0 -.15
(ex)120 108 S(tra \214les which should be installed.).15 E
(Can be used to include \214les starting with a dot.)5 E F1
(csp_TABOOFILES)100 120 Q F0 5.457(\214les which should ne)120 132 R
-.15(ve)-.25 G 7.957(rb).15 G 7.956(ei)-7.957 G 5.456(nstalled. Set to)
-7.956 F F1 5.456(Makefile .%.swp %~ #%#)7.956 F
(pod2htmd.tmp pod2htmi.tmp)120 144 Q F0(by def)2.5 E(ault.)-.1 E F1
(csp_TABOOFILES_ADD)100 156 Q F0 -.15(ex)120 168 S
(tra \214les which should ne).15 E -.15(ve)-.25 G 2.5(rb).15 G 2.5(ei)
-2.5 G(nstalled; added to list in)-2.5 E F1(csp_TABOOFILES)2.5 E F0(.)A
F1(csp_TABOOFILES_SKIP)100 180 Q F0 1.04
(\214les which should be installed, e)120 192 R -.15(ve)-.25 G 3.54(ni)
.15 G 3.54(fi)-3.54 G 3.54(ni)-3.54 G(nitial)-3.54 E F1(csp_TABOOFILES)
3.54 E F0 1.04(list. Remo)3.54 F -.15(ve)-.15 G 3.54(df).15 G(rom)-3.54
E F1(csp_TABOOFILES)120 204 Q F0(list.)2.5 E F1(csp_TABOODIRS)100 216 Q
F0(directories to e)120 228 Q(xclude in install-recursi)-.15 E .3 -.15
(ve t)-.25 H(ar).15 E 2.5(get. set)-.18 F(to)2.5 E F1(CVS .svn)2.5 E F0
(by def)2.5 E(ault.)-.1 E F1(csp_TABOODIRS_ADD)100 240 Q F0(,)A F1
(csp_TABOODIRS_SKIP)2.5 E F0(see)120 252 Q F1(csp_TABOOFILES)2.5 E F0
(equi)2.5 E -.25(va)-.25 G(lents.).25 E F1(csp_UHOSTS_SUBSET)100 264 Q
F0 -.15(ove)120 276 S 1.12(rride csp_UHOSTS: don').15 F 3.619(tp)-.18 G
1.119(ush to csp_UHOSTS, b)-3.619 F 1.119
(ut to the intersection of this space)-.2 F
(separated list of user@host items and csp_UHOSTS.)120 288 Q(The follo)
100 312 Q(wing v)-.25 E(ariables might get phased out or remo)-.25 E
-.15(ve)-.15 G 2.5(ds).15 G(oonish:)-2.5 E F1(csp_CPFLAGS)100 336 Q F0
-.15(ex)120 348 S(tra ar).15 E(guments to pass to cp in)-.18 E -.2(vo)
-.4 G(cation, none by def).2 E(ault)-.1 E F1(csp_SCPFLAGS)100 360 Q F0
-.15(ex)120 372 S(tra ar).15 E(guments to pass to scp in)-.18 E -.2(vo)
-.4 G(cation, e.g.).2 E(')5 E F1(-i .ssh/id_rsa-root)A F0(')A/F2 10.95
/Times-Bold@0 SF(EXAMPLES)20 388.8 Q F0(Some e)100 400.8 Q(xamples:)-.15
E/F3 10/Times-Bold@0 SF(Using csp_UHOST)100 424.8 Q F0
(This is the simplest w)100 436.8 Q(ay to use caspar.)-.1 E/F4 10
/Times-Italic@0 SF(Mak)2.5 E(e\214le)-.1 E F0(is)2.5 E F1
(csp_UHOST = root@some.host.somewhere)112 472.8 Q(csp_DIR = /etc/)112
484.8 Q(include caspar/mk/caspar.mk)112 496.8 Q F0(No)100 520.8 Q 1.997
-.65(w, r)-.25 H .697(unning "mak).65 F .698
(e" will scp all \214les in the current directory to)-.1 F F1
(root@some.host.some-)3.198 E(where:/etc/)100 532.8 Q F0(.)A F3(Mor)100
556.8 Q 2.5(eh)-.18 G(osts, not scp b)-2.5 E
(ut sudo via ssh: using csp_PUSH)-.2 E F4(Mak)100 568.8 Q(e\214le)-.1 E
F0(is)2.5 E F1
(csp_UHOSTS = root@some.host.somewhere root@some.other.host)112 604.8 Q
(csp_PUSH = $\(csp_sucp_FUNC\))112 616.8 Q(csp_DIR = /etc/)112 628.8 Q
(include caspar/mk/caspar.mk)112 640.8 Q F0(No)100 664.8 Q 2.803 -.65
(w, r)-.25 H 1.503(unning "mak).65 F 1.503(e" will use csp_sucp\(1\) to\
install all \214les in the current directory to both)-.1 F
(root@some.host.some)100 676.8 Q 2.726
(where:/etc/ and root@some.other.host:/etc/. If a \214le named)-.25 F F1
(fstab)5.227 E F0(is)5.227 E .264(present in the current directory)100
688.8 R 2.764(,r)-.65 G .264(unning "mak)-2.764 F 2.764(ef)-.1 G .264
(stab-install" will just install that one \214le.)-2.764 F .264(If you)
5.264 F(need to sudo\(1\) to another user on the remote host, add somet\
hing lik)100 700.8 Q(e)-.1 E(caspar 20220907)20 768 Q 2.5<37d1>135.36 G
-2.5 E(3)198.4 E 0 Cg EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E/F1 10/Courier@0 SF(csp_XARG = postgres)106 84 Q
F0 2.5(.\()100 108 S
(If such a username is not supplied, sudo \(and csp_sucp\) use the def)
-2.5 E(ault: root.\))-.1 E/F2 10/Times-Bold@0 SF(Ov)100 132 Q
(erriding csp_UHOSTS: csp_UHOSTS_SKIP)-.1 E F0 .243
(If one or some of your hosts are temporarily una)100 144 R -.25(va)-.2
G .243(ilable, and you').25 F 2.743(dl)-.5 G(ik)-2.743 E 2.744(et)-.1 G
2.744(op)-2.744 G .244(ush your \214les to the)-2.744 F 4.989
(hosts which are ali)100 156 R -.15(ve)-.25 G 7.488(,y).15 G 4.988
(ou can temporarily o)-7.488 F -.15(ve)-.15 G 4.988
(rride your csp_UHOSTS. E.g., when).15 F(some.other.host is not a)100
168 Q -.25(va)-.2 G(ilable:).25 E F1 6(%c)106 204 S(at Makefile)-6 E
(csp_UHOSTS = root@some.host.somewhere root@some.other.host)106 216 Q
(csp_DIR = /etc/)106 228 Q(include caspar/mk/caspar.mk)106 240 Q 6(%m)
106 264 S(ake install csp_UHOSTS_SKIP=root@some.other.host)-6 E
(scp hosts root@some.host.somewhere:/etc/)106 276 Q
(scp fstab root@some.host.somewhere:/etc/)106 288 Q F2(Ov)100 312 Q .543
(erriding csp_UHOSTS in a smart way: csp_UHOSTS_SUBSET. Using multiple \
gr)-.1 F(oups)-.18 E(of hosts. Recursi)100 324 Q .2 -.1(ve m)-.1 H(ak).1
E 2.5(em)-.1 G(ade easy.)-2.5 E F0 .507(If you ha)100 336 R .807 -.15
(ve l)-.2 H .506(ots of subdirectories holding information for lots of \
groups of hosts, while this run).15 F .725(you just w)100 348 R .725(an\
t to install for a small group \(or 1\) hosts, csp_UHOSTS_SUBSET is use\
ful.)-.1 F(Sup-)5.726 E(pose your casparized tree looks lik)100 360 Q(e)
-.1 E F1(Makefile)106 396 Q(apache/include/install.mk)106 420 Q
(apache/etc/apache2/Makefile)106 432 Q(apache/etc/apache2/envvars)106
444 Q(php/include/install.mk)106 468 Q(php/etc/php4/apache/Makefile)106
480 Q(php/etc/php4/apache/php.ini)106 492 Q(grub/include/install.mk)106
516 Q(grub/boot/grub/Makefile)106 528 Q(grub/boot/grub/menu.lst)106 540
Q(logrotate/include/install.mk)106 552 Q(logrotate/etc/Makefile)106 564
Q(logrotate/etc/logrotate.conf)106 576 Q(nrpe/include/install.mk)106 600
Q(nrpe/debian/etc/default/Makefile)106 612 Q
(nrpe/debian/etc/default/nagios-nrpe-server)106 624 Q F0(The \214le)100
648 Q/F3 10/Times-Italic@0 SF(apac)2.5 E(he/etc/apac)-.15 E(he2/Mak)-.15
E(e\214le)-.1 E F0(is:)2.5 E F1(csp_DIR = /etc/apache2/)106 684 Q
(include ../../include/install.mk)106 696 Q F0(\(all other)100 720 Q F3
(Mak)2.5 E(e\214le)-.1 E F0 2.5(sa)C(re similar\).)-2.5 E(The \214le)5 E
F3(apac)2.5 E(he/include/install.mk)-.15 E F0(is)2.5 E(caspar 20220907)
20 768 Q 2.5<37d1>135.36 G-2.5 E(4)198.4 E 0 Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E/F1 10/Courier@0 SF(csp_UHOSTS = root@a root@b)106
84 Q(include caspar/mk/caspar.mk)106 96 Q F0 1.383(The \214le)100 120 R
/F2 10/Times-Italic@0 SF(php/include/install.mk)3.883 E F0 1.383
(is the same. The \214les)3.883 F F2(grub/include/install.mk)3.883 E F0
(and)3.883 E F2(lo)3.883 E(gr)-.1 E(otate/in-)-.45 E(clude/install.mk)
100 132 Q F0(are)2.5 E F1(csp_UHOSTS = root@d root@e root@f root@g)106
168 Q(include caspar/mk/caspar.mk)106 180 Q F0(The \214le)100 204 Q F2
(nrpe/include/install.mk)2.5 E F0(is)2.5 E F1
(csp_UHOSTS = root@d root@e root@f root@n)106 240 Q
(include caspar/mk/caspar.mk)106 252 Q F0(The tople)100 276 Q -.15(ve)
-.25 G(l).15 E F2(Mak)2.5 E(e\214le)-.1 E F0(is)2.5 E F1
(dirs = $\(patsubst %/Makefile,%,$\(shell find * -mindepth 1)106 312 Q
(-name Makefile\)\))112 324 Q(all:)106 348 Q
(for i in $\(dirs\); do $\(MAKE\) -$\(MAKEFLAGS\) -C $$i; done)130 360 Q
(install)106 384 Q
(for i in $\(dirs\); do $\(MAKE\) -$\(MAKEFLAGS\) -C $$i install; done)
130 396 Q(load)106 420 Q
(for i in $\(dirs\); do $\(MAKE\) -$\(MAKEFLAGS\) -C $$i load; done)130
432 Q F0(\(we don')100 456 Q 2.5(tf)-.18 G(eel lik)-2.5 E 2.5(es)-.1 G
(ticking a)-2.5 E F2(Mak)2.5 E(e\214le)-.1 E F0
(in all non-leaf nodes of our tree\).)2.5 E(No)100 480 Q 4.735 -.65
(w, w)-.25 H 3.435(hen running ").65 F F1 3.435
(csp_UHOSTS_SUBSET='root@e root@f root@m root@n')B(make)100 492 Q F0
5.824("i)C 5.824(nt)-5.824 G 3.324(he tople)-5.824 F -.15(ve)-.25 G
3.324(l, caspar just tak).15 F 3.323
(es the intersection of csp_UHOSTS_SUBSET and)-.1 F 1.389
(csp_UHOSTS for each csp_UHOSTS list. So, caspar will not push an)100
504 R 1.39(ything for)-.15 F F2(apac)3.89 E(he/)-.15 E F0(and)3.89 E F2
(php/)100 516 Q F0 5.609(.T)C 3.109(he \214les)-5.609 F F2
(grub/boot/grub/menu.lst)5.609 E F0(and)5.609 E F2(lo)5.609 E(gr)-.1 E
(otate/etc/lo)-.45 E(gr)-.1 E(otate.conf)-.45 E F0 3.109
(will get pushed to)5.609 F F1(root@e)100 528 Q F0(and)2.686 E F1
(root@f)2.686 E F0 .187(only. The \214le)2.686 F F2
(nrpe/debian/etc/default/na)2.687 E(gios-nrpe-server)-.1 E F0 .187
(will get pushed)2.687 F(to)100 540 Q F1(root@e)2.5 E F0(,)A F1(root@f)
2.5 E F0(and)2.5 E F1(root@n)2.5 E F0(.)A 1.071
(This is often better than just o)100 564 R -.15(ve)-.15 G 1.071
(rriding csp_UHOSTS on the commandline \(or in your shell').15 F(s)-.55
E(en)100 576 Q 1.233(vironment\): if the intersection of the original c\
sp_UHOSTS and your ne)-.4 F 3.734(wc)-.25 G 1.234(sp_UHOSTS is)-3.734 F
(empty)100 588 Q 2.5(,c)-.65 G(hances are big you')-2.5 E .3 -.15(ve j)
-.5 H(ust for).15 E(gotten to clean your en)-.18 E(vironment.)-.4 E/F3
10/Times-Bold@0 SF(Cr)100 612 Q(eating r)-.18 E(emote dir)-.18 E
(ectories if needed)-.18 E F2(Mak)100 624 Q(e\214le)-.1 E F0(is)2.5 E F1
(csp_DIR = /some/dir/ectory/)112 660 Q
(csp_PUSH = $\(csp_scpmkdir_FUNC\))112 672 Q
(csp_UHOST = root@some.host.somewhere)112 684 Q
(include caspar/mk/caspar.mk)112 696 Q F0(No)100 720 Q 1.3 -.65(w, b)
-.25 H(efore calling scp, caspar will run 'mkdir -p' to create an).65 E
2.5(ym)-.15 G(issing remote directories.)-2.5 E(caspar 20220907)20 768 Q
2.5<37d1>135.36 G-2.5 E(5)198.4 E 0 Cg EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E/F1 10/Times-Bold@0 SF(Using csp_CP and csp_LO)100
84 Q(AD)-.4 E/F2 10/Times-Italic@0 SF(username/etc/Mak)100 96 Q(e\214le)
-.1 E F0(is)2.5 E/F3 10/Courier@0 SF(csp_UHOST = dummy)112 132 Q
(csp_PUSH = $\(csp_cp_FUNC\))112 144 Q(csp_DIR = $\(HOME\)/etc/)112 156
Q(csp_LOAD = crontab-load)112 168 Q(include ../include/install.mk)112
180 Q(crontab-load = crontab $\(csp_DIR\)/crontab)112 204 Q F0(while)100
228 Q F2(../include/install.mk)2.5 E F0(is just)2.5 E F3
(include caspar/mk/caspar.mk)112 264 Q F0 6.523(.S)100 288 S(etting)
-6.523 E F3(csp_PUSH)4.023 E F0(to)4.023 E F3($\(csp_cp_FUNC\))4.023 E
F0 1.522(causes cp\(1\) to get e)4.023 F -.15(xe)-.15 G 1.522
(cuted by "mak).15 F 4.022(ei)-.1 G(nstall")-4.022 E .176
(\(not scp\(1\)\).)100 300 R(Setting)5.177 E F3(csp_LOAD)2.677 E F0 .177
(causes "mak)2.677 F 2.677(el)-.1 G .177(oad" to e)-2.677 F -.15(xe)-.15
G .177(cute the crontab command. Just run-).15 F(ning "mak)100 312 Q
(e" is OK too, since "mak)-.1 E(e" calls both "mak)-.1 E 2.5(ei)-.1 G
(nstall" and "mak)-2.5 E 2.5(el)-.1 G(oad".)-2.5 E F1
(Using csp_DIR, csp_LO)100 336 Q(AD and install\(1\))-.4 E F0 1.6 -.8
(To i)100 348 T(nstall a \214le on the local host, create e.g. a \214le)
.8 E F2(etc/uruk/Mak)2.5 E(e\214le)-.1 E F0(lik)2.5 E(e:)-.1 E F3
(csp_UHOST = dummy)112 384 Q(csp_DIR = /etc/uruk/)112 396 Q
(csp_PUSH = $\(csp_install_FUNC\))112 408 Q(csp_LOAD = uruk-load)112 420
Q(include caspar/mk/caspar.mk)112 444 Q
(uruk-load = sudo invoke-rc.d uruk force-reload)112 468 Q F1
(Using csp_DIR and csp_LO)100 492 Q(AD, tak)-.4 E 2.5(e2)-.1 G F2
(etc/Mak)100 504 Q(e\214le)-.1 E F0(is)2.5 E F3(csp_DIR = /etc/)112 540
Q(csp_LOAD = aliases-load)112 552 Q(include ../include/install.mk)112
564 Q(aliases-load = $\(csp_SSH\) $1 "cd /etc && postalias aliases; pos\
tfix reload")112 588 Q F0(while)100 612 Q F2(../include/install.mk)2.5 E
F0(is)2.5 E F3(csp_UHOST = root@some.host.somewhere)112 648 Q
(include caspar/mk/caspar.mk)112 660 Q F1(Building \214les locally)100
684 Q F0 .471(Note: csp_B)100 696 R .471(UILD is deprecated. Y)-.1 F
.471(ou should not use it.)-1.1 F .471(If you')5.471 F 2.97(dl)-.5 G(ik)
-2.97 E 2.97(et)-.1 G 2.97(ob)-2.97 G .47(uild some \214les locally)
-3.17 F(from local sources, before installing the just b)100 708 Q
(uilt \214les, do e.g.:)-.2 E(caspar 20220907)20 768 Q 2.5<37d1>135.36 G
-2.5 E(6)198.4 E 0 Cg EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E/F1 10/Courier@0 SF
(csp_UHOST = root@some.host.somewhere)106 84 Q(csp_DIR = /etc/)106 96 Q
(csp_EXTRAFILES = sshd_config)106 108 Q
(csp_TABOOFILES_ADD = sshd_config.m4)106 120 Q
(include caspar/mk/caspar.mk)106 144 Q(sshd_config: sshd_config.m4)106
168 Q(m4 $< > $@)130 180 Q F0 2.317(List all source \214les in csp_T)100
204 R 2.318(ABOOFILES_ADD: this w)-.93 F(ay)-.1 E 4.818(,t)-.65 G(he)
-4.818 E 4.818(yw)-.15 G(on')-4.918 E 4.818(tg)-.18 G 2.318
(et installed on the)-4.818 F(csp_UHOST.)100 216 Q/F2 10/Times-Bold@0 SF
(Using csp_sucp_FUNC and csp_LO)100 240 Q(AD)-.4 E F0(If you')100 252 Q
2.5(dl)-.5 G(ik)-2.5 E 2.5(et)-.1 G 2.5(ou)-2.5 G(se csp_sucp and w)-2.5
E(ant a `load' tar)-.1 E(get, do something lik)-.18 E(e:)-.1 E F1
(csp_PUSH = $\(csp_sucp_FUNC\))106 288 Q(csp_UHOST = foobar.example.com)
106 300 Q(csp_DIR = /etc/uruk/)106 312 Q(csp_LOAD = rc-load)106 324 Q
(include caspar/mk/caspar.mk)106 348 Q
(rc-load = $\(csp_SSH\) $1 sudo invoke-rc.d uruk force-reload)106 372 Q
F2(Using the "v)100 396 Q(erify" tar)-.1 E(get)-.1 E F0 .817(If you w)
100 408 R .817(ant to do some syntax check on the local host for a con\
\214guration \214le, de\214ne a -v)-.1 F(erify)-.15 E(tar)100 420 Q
(get \(or pattern tar)-.18 E(get\):)-.18 E F1
(bar.pem-verify: bar.pem.asc bar.pem)106 456 Q(gpg --verify $^)136 468 Q
(%.php-verify: %.php)106 492 Q(php -l $<)130 504 Q F0
(This command will be in)100 528 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G
(hen you "mak)-2.5 E 2.5(ev)-.1 G(erify" and "mak)-2.65 E 2.5(ei)-.1 G
(nstall".)-2.5 E F2(Using the "check" tar)100 552 Q(get)-.1 E F0 .152
(If you w)100 564 R .152(ant to do some syntax check on the remote host\
, before loading the just installed con\214g-)-.1 F(uration \214le, do)
100 576 Q F1(csp_UHOST = foobar.example.com)112 612 Q(csp_DIR = /etc/)
112 624 Q(csp_LOAD = my-load)112 636 Q(csp_CHECK = my-check)112 648 Q
(my-check = $\(csp_SSH\) $1 do-check-stuff)112 672 Q
(my-load = $\(csp_SSH\) $1 do-load-stuff)112 684 Q
(include caspar/mk/caspar.mk)112 708 Q F0(caspar 20220907)20 768 Q 2.5
<37d1>135.36 G-2.5 E(7)198.4 E 0 Cg EP
%%Page: 8 8
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E .079(This w)100 84 R(ay)-.1 E 2.579(,")-.65 G
(mak)-2.579 E 2.579(el)-.1 G .079(oad" w)-2.579 F(on')-.1 E 2.579(tc)
-.18 G .078(ause the \214le to load if the check f)-2.579 F .078
(ails \(which is probably what you)-.1 F -.1(wa)100 96 S 3.181(nt\). Y)
.1 F .681(ou could e)-1.1 F -.15(ve)-.25 G 3.181(ng).15 G -2.15 -.25
(iv e)-3.181 H .682(the \214le a temporary name and ha)3.431 F .982 -.15
(ve t)-.2 H .682(he load tar).15 F .682(get rename it to its)-.18 F .453
(real name only after a successful check.)100 108 R .453(As a con)5.453
F -.15(ve)-.4 G .453(nience, if a foo-check v).15 F .453
(ariable is de\214ned, it)-.25 F(is automatically added as a dependenc)
100 120 Q 2.5(yf)-.15 G(or an)-2.5 E 2.5(yc)-.15 G(sp_LO)-2.5 E(AD tar)
-.35 E(gets named foo or foo-something.)-.18 E/F1 10/Times-Bold@0 SF
(Combining the csp_LO)100 144 Q(AD tar)-.4 E(get with multiple hosts; b)
-.1 E(uilding \214les r)-.2 E(emotely)-.18 E F0(Here')100 156 Q 3.068
(sa)-.55 G 3.068(ne)-3.068 G .569(xample doing some preprocessing on th\
e remote hosts before reloading the con\214gu-)-3.218 F(ration:)100 168
Q/F2 10/Courier@0 SF(csp_DIR = /etc/ssh/)112 204 Q
(csp_UHOSTS = root@some.host.somewhere root@some.other.host)112 216 Q
(csp_LOAD = sshd_config-load)112 228 Q
(sshd_config-load = $\(csp_SSH\) $1 "set -e; \\)112 240 Q
(cd $\(csp_DIR\); \\)154 252 Q(m4 sshd_config.m4 >sshd_config; \\)154
264 Q(service ssh reload")154 276 Q(include caspar/mk/caspar.mk)112 288
Q F0(\(The old, deprecated w)100 312 Q(ay is to e)-.1 E
(xplicitly specify the loop o)-.15 E -.15(ve)-.15 G 2.5(rt).15 G
(he hosts:)-2.5 E F2(csp_DIR = /etc/ssh/)112 348 Q(sshd_config-load:)112
360 Q(for suh in $\(csp_UHOSTS\); do \\)136 372 Q
($\(csp_SSH\) $$suh "set -e;)148 384 Q(cd $\(csp_DIR\); \\)154 396 Q
(m4 sshd_config.m4 > sshd_config; \\)154 408 Q(service ssh reload"; \\)
154 420 Q(done)136 432 Q F0 5.573(.Y)100 456 S .572
(ou should not use this method.)-6.673 F .572(Please consider re)5.572 F
.572(writing an)-.25 F 3.072(ye)-.15 G .572
(xisting caspar snippets using)-3.222 F
(the simpler method described abo)100 468 Q -.15(ve)-.15 G(.\)).15 E F1
2.592(Using the csp_T)100 492 R 2.592(ABOOFILES_{ADD,SKIP} v)-.9 F 2.593
(ariables; another way to perf)-.1 F 2.593(orm r)-.25 F(emote)-.18 E -.2
(bu)100 504 S(ilds).2 E F0 .124(Using the csp_T)100 516 R .124
(ABOOFILES_{ADD,SKIP} v)-.93 F .123(ariables is handy if you w)-.25 F
.123(ant to)-.1 F/F3 10/Times-Italic@0 SF(install)2.623 E F0(a)2.623 E
F3(Mak)2.623 E(e\214le)-.1 E F0(,)A .436(instead of using it: Create)100
528 R F3(Mak)2.936 E(e\214le)-.1 E F0 .436(just as you')2.936 F 2.936
(dl)-.5 G(ik)-2.936 E 2.937(et)-.1 G 2.937(oh)-2.937 G -2.25 -.2(av e)
-2.937 H .437(it installed on the remote location.)3.137 F(No)100 540 Q
1.3 -.65(w, c)-.25 H(reate).65 E F3(GNUmak)2.5 E(e\214le)-.1 E F0
(as e.g.)2.5 E F2(csp_TABOOFILES_SKIP = Makefile)112 576 Q
(csp_TABOOFILES_ADD = GNUmakefile)112 588 Q(csp_DIR = /etc/foobar/)112
612 Q(csp_UHOST = root@some.host.somewhere)112 624 Q
(include caspar/mk/caspar.mk)112 636 Q(load:)112 660 Q
($\(csp_SSH\) $\(csp_UHOST\) "make -C $\(csp_DIR\)")148 672 Q F0(No)100
696 Q -.65(w,)-.25 G F2(make install)3.15 E F0(and)2.5 E F2(make load)
2.5 E F0(will do the right thing.)2.5 E F1(Using the csp_EXTRAFILES v)
100 720 Q(ariable)-.1 E F0(caspar 20220907)20 768 Q 2.5<37d1>135.36 G
-2.5 E(8)198.4 E 0 Cg EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E 1.022(Using the csp_EXTRAFILES v)100 84 R 1.022
(ariable can be handy if you w)-.25 F 1.022
(ant to install \214les with a leading)-.1 F(dot. E.g.:)100 96 Q/F1 10
/Courier@0 SF(csp_EXTRAFILES = .bashrc)112 132 Q
(csp_UHOST = root@some.host.somewhere)112 144 Q(csp_DIR =)112 156 Q
(include caspar/mk/caspar.mk)112 168 Q/F2 10/Times-Bold@0 SF(Ov)100 192
Q(erriding csp_UHOSTS)-.1 E F0(Supply e.g.)100 204 Q F1
(csp_UHOSTS = root@localhost root@some.host.somewhere)106 240 Q F0(in)
100 264 Q/F3 10/Times-Italic@0 SF(install.mk)2.5 E F0 2.5(,t)C 2.5(oi)
-2.5 G(nstall on multiple hosts. Run)-2.5 E F1
(make filename-install csp_UHOSTS=joe@otherhost)106 300 Q F0 1.406
(to install \214lename as)100 324 R F1(joe@otherhost)3.906 E F0 3.906
(,i)C 1.406(nstead of the def)-3.906 F 1.407(ault as gi)-.1 F -.15(ve)
-.25 G 3.907(ni).15 G(n)-3.907 E F3(install.mk)3.907 E F0 3.907(.I)C
3.907(fy)-3.907 G(ou)-3.907 E -.1(wa)100 336 S .522
(nt to enable passing csp_UHOSTS as a shell en).1 F .522(vironment v)-.4
F .522(ariable, you')-.25 F .522(ll ha)-.1 F .822 -.15(ve t)-.2 H 3.022
(ou).15 G .522(se condi-)-3.022 F(tional assignment in your Mak)100 348
Q(e\214le:)-.1 E F1
(csp_UHOSTS ?= root@localhost root@some.host.somewhere)106 384 Q F0
(This allo)100 408 Q(ws it to run)-.25 E F1 6(%e)106 444 S
(xport csp_UHOSTS=foo@bar)-6 E 6(%m)106 456 S(ake filename-install)-6 E
F0(to install on)100 480 Q F1(foo@bar)2.5 E F0(.)A F2
(Using sudo locally f)100 504 Q(or installing \214les)-.25 E F0(If you')
100 516 Q 2.5(dl)-.5 G(ik)-2.5 E 2.5(et)-.1 G 2.5(oi)-2.5 G
(nstall \214les lik)-2.5 E(e)-.1 E F1(sudo cp foo.rc /etc/foobar/)112
552 Q F0(you could set up your)100 576 Q F3(Mak)2.5 E(e\214le)-.1 E F0
(as)2.5 E F1(csp_DIR = /etc/foobar/)106 612 Q(csp_UHOST = dummy)106 624
Q(csp_PUSH = sudo cp $\(1\) $\(3\))106 636 Q
(include caspar/mk/caspar.mk)106 648 Q F0(This is lik)100 672 Q 2.5(ec)
-.1 G(sp_sucp, b)-2.5 E(ut without the ssh wrapping: it w)-.2 E
(orks on localhost only.)-.1 E F2(Plugging y)100 696 Q(our o)-.25 E
(wn install script in caspar)-.1 E F0(If your script)100 708 Q F1
(foobar)2.5 E F0(should be called as e.g.)2.5 E(caspar 20220907)20 768 Q
2.5<37d1>135.36 G-2.5 E(9)198.4 E 0 Cg EP
%%Page: 10 10
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E/F1 10/Courier@0 SF
(foobar --file=fstab --user@host=joe@some.host \\)112 84 Q
(--dir=/etc/ --debuglevel=3)124 96 Q F0(then mak)100 120 Q 2.5(es)-.1 G
(ure your)-2.5 E/F2 10/Times-Italic@0 SF(Mak)2.5 E(e\214le)-.1 E F0
(features something lik)2.5 E(e)-.1 E F1
(csp_foobar_FUNC = foobar --file=$\(1\) --user@host=$\(2\) \\)112 156 Q
(--dir=$\(3\) --debuglevel=$\(4\))124 168 Q
(csp_PUSH = $\(csp_foobar_FUNC\))112 180 Q(csp_XARG = 3)112 192 Q F0
-1.1(Yo)100 216 S 2.5(uc)1.1 G(an no)-2.5 E 2.5(wu)-.25 G(se)-2.5 E F1
(csp_UHOST)2.5 E F0(and)2.5 E F1(csp_DIR)2.5 E F0(just as you')2.5 E
(re used to.)-.5 E/F3 10/Times-Bold@0 SF(Mor)100 240 Q 2.5(ea)-.18 G(dv)
-2.5 E(anced tricks)-.1 E F0(When you don')100 252 Q 2.5(tw)-.18 G
(ant to ssh to)-2.6 E F1(root@some.host.somewhere)2.5 E F0(directly)2.5
E 2.5(,y)-.65 G(ou could do)-2.5 E F1
(sudo rsync -az /path/to/your/config_archive /etc)106 288 Q F0
(on some.host.some)100 312 Q(where \(e.g. from cron\).)-.25 E/F4 10.95
/Times-Bold@0 SF(FILES)20 328.8 Q F2(caspar/mk/caspar.mk)100 340.8 Q F0
(,)A F2(caspar/mk/docbook.mk)2.5 E F0(,)A F2(caspar/mk/pod.mk)2.5 E F4
(ENVIR)20 357.6 Q(ONMENT)-.329 E F0 -.15(Fo)100 369.6 S(r).15 E F2
(caspar.mk)2.5 E F0(:)A F1(csp_CP)2.5 E F0(,)A F1(csp_LOAD)2.5 E F0(,)A
F1(csp_SCP)2.5 E F0(,)A F1(csp_UHOST)2.5 E F0(,)A F1(csp_PUSH)2.5 E F0
2.5(,.)C(..)-2.5 E F4 -.11(BU)20 386.4 S(GS).11 E F0 -1.11(Ve)100 398.4
S .122(ry lik)1.11 F(ely)-.1 E 2.622(,G)-.65 G .122(NU Mak)-2.622 F
2.622(ei)-.1 G 2.622(sn)-2.622 G .123
(ot the best tool for doing the stuf)-2.622 F(f)-.25 E F2(caspar.mk)
2.623 E F0 .123(is doing.)2.623 F -.15(Fo)5.123 G 2.623(rt).15 G .123
(he list of)-2.623 F .18(reported b)100 410.4 R .18(ugs, see http://b)
-.2 F(ugs.debian.or)-.2 E 2.68(g/src:caspar. See)-.18 F .18(also T)2.68
F .18(ODO, distrib)-.18 F .18(uted with the caspar)-.2 F
(package. \(And online at http://mdcc.cx/pub/caspar/caspar)100 422.4 Q
(-latest/T)-.2 E(ODO.\))-.18 E F4(TRIVIA)20 439.2 Q F0 1.202
(Caspar is named after Caspar the Friendly Ghost, since that')100 451.2
R 3.703(st)-.55 G 1.203(he title of the Daniel Johnston)-3.703 F
(song I w)100 463.2 Q(as listening to when deciding to package my home)
-.1 E(gro)-.15 E(wn scripts.)-.25 E F4 -.548(AU)20 480 S(THOR).548 E F0
(Joost v)100 492 Q(an Baal-Ili\304)-.25 E F4(SEE ALSO)20 508.8 Q F3
(caspar)100 520.8 Q(-typesetting\(7\) csp_helper\(1\))-.37 E F0
(The caspar homepage is at http://mdcc.cx/caspar/ .)100 544.8 Q .2
(The document)100 568.8 R F2("V)2.7 E(er)-1.11 E .2
(siebeheer en softwar)-.1 F(e-pac)-.37 E(ka)-.2 E -.1(ge)-.1 G .2(s: W)
.1 F(aar)-.92 E .2(om en Hoe")-.45 F F0 .2(\(in Dutch\) describes some)
2.7 F(of the reasons wh)100 580.8 Q 2.5(yp)-.05 G(eople might w)-2.5 E
(ant to use tools lik)-.1 E 2.5(ec)-.1 G(aspar.)-2.5 E .684
(Jeroen Hoppenbrouwers blogs about the w)100 604.8 R .685
(ay he uses caspar)-.1 F 3.185(,i)-.4 G(n)-3.185 E F2 .685
("Using Subver)3.185 F .685(sion and Caspar)-.1 F
(to maintain a Linux host")100 616.8 Q F0(.)A(Lots of tools o)100 640.8
Q -.15(ve)-.15 G
(rlap \(partly\) with caspar in their functionality. Here').15 E 2.5
(sal)-.55 G(ist.)-2.5 E(ansible \(http://www.ansible.com/\); code is on\
github \(https://github.com/ansible/ansible\))100 664.8 Q .043
(cfengine \(http://www.cfengine.or)100 688.8 R .043(g/\), by Mark Bur)
-.18 F .043(gess e.a., b)-.18 F .043(uilds e)-.2 F .043
(xpert systems to administrate)-.15 F 1.303(and con\214gure lar)100
700.8 R 1.304(ge computer netw)-.18 F 1.304(orks: it deli)-.1 F -.15(ve)
-.25 G 1.304(rs a v).15 F 1.304(ery big superset of caspar')-.15 F 3.804
(si)-.55 G(nstallation)-3.804 E(mechanism.)100 712.8 Q(caspar 20220907)
20 768 Q 2.5<37d1>135.36 G-2.5 E(10)193.4 E 0 Cg EP
%%Page: 11 11
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 151.385(caspar\(7\) MISCELLANEOUS)20 48 R
(caspar\(7\))156.385 E 1.1(Puppet \(http://reducti)100 84 R -.15(ve)-.25
G 1.1(labs.com/projects/puppet\), also something lik).15 F 3.6(eac)-.1 G
1.1(on\214guration manage-)-3.6 F(ment system.)100 96 Q(Here')100 120 Q
2.821(sa)-.55 G 2.821(no)-2.821 G .321(lder list; a big part of it w)
-2.821 F .322
(as collected by Ray Miller \(http://users.ox.ac.uk/~raym/\) of)-.1 F
1.53(Oxford Uni)100 132 R -.15(ve)-.25 G(rsity).15 E 4.03(,a)-.65 G 1.53
(nd published in the article "Con\214guration Management with Sub)-4.03
F -.15(ve)-.15 G(rsion,).15 E -1.2(YA)100 144 S 1.353(ML and Perl T)1.2
F 1.353(emplate T)-.7 F 1.353
(oolkit" in the SANE 2006 \(http://www.sane.nl/sane2006/\) confer)-.8 F
(-)-.2 E(ence proceedings. FIXME: Check urls, update)100 156 Q 1.228
(docbookmk, by Michael W)100 180 R 1.228(iedmann \(http://www.miwie.or)
-.4 F(g/docbkmak)-.18 E 1.227(e/\) of)-.1 F 1.227(fers probably a su-)
-.25 F(perset of Caspar')100 192 Q(s)-.55 E/F1 10/Times-Italic@0 SF
(docbook.mk)2.5 E F0(functionality.)2.5 E(late)100 216 Q(x-mak)-.15 E
2.822(eb)-.1 G 2.822(yt)-2.822 G .322(he LaT)-2.822 F .322
(eX Utils project on http://gfor)-.7 F(ge.inria.fr/projects/late)-.18 E
.322(x-utils/ seems to pro-)-.15 F(vide similar functionality as)100 228
Q F1(docbook.mk)2.5 E F0(for LaT)2.5 E(eX documents.)-.7 E(Late)100 252
Q 1.094(xmk by John Collins e.a. on http://www.ph)-.15 F
(ys.psu.edu/~collins/softw)-.05 E(are/late)-.1 E 1.093(xmk-jcc/ is an-)
-.15 F(other implementation of this idea.)100 264 Q(SUP)100 288 Q 2.83
(,t)-1.11 G .33(he Softw)-2.83 F .33(are Upgrade Protocol and it')-.1 F
2.83(si)-.55 G .33(mplementation by Carne)-2.83 F .33(gie Mellon Uni)
-.15 F -.15(ve)-.25 G .33(rsity of-).15 F .67(fers another w)100 300 R
.669(ay to distrib)-.1 F .669(ute \(con\214guration\)\214les. Be)-.2 F
-.1(wa)-.25 G .669(re though: between No).1 F 3.169(v1)-.15 G .669
(996 and June)-3.169 F 8.505(2004, no ne)100 312 R 11.005(wr)-.25 G
8.506(elease has been published. The Debian \(ftp://ftp.debian.or)
-11.005 F(g/de-)-.18 E
(bian/pool/main/s/sup/\) and NetBSD packages are lik)100 324 Q
(ely still maintained, though.)-.1 E .259(PIKT \(http://www.pikt.or)100
348 R .258(g/\) is intended primarily for system monitoring, b)-.18 F
.258(ut does do con\214gura-)-.2 F(tion management too.)100 360 Q
(LCFG \(http://www.lcfg.or)100 384 Q
(g/\) is another con\214guration management system.)-.18 E 1.169
(The Arusha Project \(ARK, at http://ark.sf.net/\) pro)100 408 R 1.169
(vides a frame)-.15 F -.1(wo)-.25 G 1.169(rk for collaborati).1 F 1.47
-.15(ve s)-.25 H(ystem).15 E(administration.)100 420 Q
(Bcfg2 \(http://trac.mcs.anl.go)100 444 Q
(v/projects/bcfg2/\) is yet another con\214guration management system.)
-.15 E .243(quattor \(http://quattor.web.cern.ch/\) is a system adminis\
tration toolkit for installation, con\214gura-)100 468 R
(tion and management of Unix systems.)100 480 Q 6.405
(rb3 and friends, as written and used by Ray Miller e.a. at Oxford Uni)
100 504 R -.15(ve)-.25 G(rsity).15 E(,)-.65 E
(\(http://users.ox.ac.uk/~raym/softw)100 516 Q
(are/con\214guration-management/\).)-.1 E(The)100 540 Q F1(svk)2.769 E
F0 -.15(ve)2.769 G .269(rsion control system is said to be quite usable\
for handling con\214guration \214le manage-).15 F .522
(ment \(without a separate install mechanism lik)100 552 R 3.022(ec)-.1
G .522(aspar\). See also)-3.022 F F1 .522(this discussion on the Debian)
3.022 F(de)100 564 Q(velopment list)-.15 E F0(.)A .543
(On the http://www.infrastructures.or)100 588 R .542
(g/ website on automated \(Unix\) system administration, you)-.18 F
(can \214nd some thoughts on managing con\214guration \214les using a v)
100 600 Q(ersion control system.)-.15 E(caspar 20220907)20 768 Q 2.5
<37d1>135.36 G-2.5 E(11)193.4 E 0 Cg EP
%%Trailer
end
%%EOF
caspar-20220907/doc/casparize.ps 0000644 0001750 0001750 00000021323 14306130464 013247 0000000 0000000 %!PS-Adobe-3.0
%%Creator: groff version 1.22.4
%%CreationDate: Wed Sep 7 14:56:52 2022
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Courier
%%DocumentSuppliedResources: procset grops 1.22 4
%%Pages: 1
%%PageOrder: Ascend
%%DocumentMedia: Default 595 842 0 () ()
%%Orientation: Portrait
%%EndComments
%%BeginDefaults
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
%%BeginResource: procset grops 1.22 4
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/MANUAL{
statusdict begin/manualfeed true store end
}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
DEFS/BPhook known{DEFS begin BPhook end}if
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/Fr{
setrgbcolor fill
}bind def
/setcmykcolor where{
pop
/Fk{
setcmykcolor fill
}bind def
}if
/Fg{
setgray fill
}bind def
/FL/fill load def
/LW/setlinewidth load def
/Cr/setrgbcolor load def
/setcmykcolor where{
pop
/Ck/setcmykcolor load def
}if
/Cg/setgray load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne
2 index/UniqueID ne
and
{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
/setpagedevice{}def
mark
}bind def
/PEND{
cleartomark
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%EndProlog
%%BeginSetup
%%BeginFeature: *PageSize Default
<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice
%%EndFeature
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Italic
%%IncludeResource: font Courier
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE
/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 137.915(casparize\(1\) USER)20 48 R 140.415
(COMMANDS casparize\(1\))2.5 F/F1 10.95/Times-Bold@0 SF -.219(NA)20 84 S
(ME).219 E F0(casparize \255 Set up)100 96 Q/F2 10/Times-Bold@0 SF
(caspar)2.5 E F0(Mak)2.5 E(e\214le in a ne)-.1 E 2.5(wd)-.25 G(irectory)
-2.5 E F1(SYNOPSIS)20 112.8 Q F2(casparize dir)100 124.8 Q F0(\()2.5 E
/F3 10/Times-Italic@0 SF(/path/to/con\214g/dir)A F0(\))A F2
(casparize \214le)100 148.8 Q F0(\()2.5 E F3
(/path/to/con\214g/dir/\214le)A F0(\))A F1(DESCRIPTION)20 165.6 Q F2
(casparize)100 177.6 Q F0 .511(creates a ne)3.011 F 3.011(wc)-.25 G .511
(on\214guration w)-3.011 F .511(orking directory in your current w)-.1 F
.51(orking directory)-.1 F 3.01(,s)-.65 G(ets)-3.01 E .031(up a Mak)100
189.6 R .031(e\214le for)-.1 F F2(caspar\(7\))2.531 E F0 .031
(in this ne)2.531 F 2.531(wd)-.25 G(irectory)-2.531 E 2.532(,a)-.65 G
.032(nd optionally copies an original con\214guration)-2.532 F
(\214le from its original system place to the ne)100 201.6 Q
(wly created con\214guration w)-.25 E(orking directory.)-.1 E F1(USA)20
218.4 Q(GE)-.602 E F0 -1.1(Yo)100 230.4 S 3.39(ut)1.1 G .89
(ypically use)-3.39 F F2(casparize)3.39 E F0 .89(when you already ha)
3.39 F 1.19 -.15(ve c)-.2 H .89(reated the root con\214guration w).15 F
.89(orking di-)-.1 F .854(rectory with its include directory and instal\
l.mk Caspar include \214le. By analysing your current)100 242.4 R -.1
(wo)100 254.4 S .36
(rking directory and the con\214guration directory path you gi).1 F .66
-.15(ve o)-.25 H 2.86(nt).15 G .36(he command line, casparize)-2.86 F
.351(can deduce the contents of the Mak)100 266.4 R .351
(e\214le in the ne)-.1 F .352(wly created con\214guration w)-.25 F .352
(orking directory. It)-.1 F .581(creates the ne)100 278.4 R 3.081(wd)
-.25 G(irectory)-3.081 E 3.081(,c)-.65 G .581(reates the correct Mak)
-3.081 F .581(e\214le, and optionally copies the gi)-.1 F -.15(ve)-.25 G
3.08(nc).15 G(on\214gu-)-3.08 E(ration \214le in the ne)100 290.4 Q 2.5
(wd)-.25 G(irectory)-2.5 E 2.5(,r)-.65 G(eady for its \214rst v)-2.5 E
(ersion commit.)-.15 E F1(EXAMPLES)20 307.2 Q F0 2.5(At)100 319.2 S
(ypical e)-2.5 E(xample:)-.15 E/F4 10/Courier@0 SF 6($c)112 355.2 S 6
(d<)-6 G(svn>/etc)-6 E 6($c)112 367.2 S(asparize /etc/postfix/main.cf)-6
E F0 1.011(creates the directory /etc/post\214x, creates /etc\
/post\214x/Mak)100 391.2 R 1.012(e\214le including the proper)-.1 F .088
(content, and copies /etc/post\214x/main.cf into /etc/post\214x/ma\
in.cf. Y)100 403.2 R .088(ou can no)-1.1 F 2.588(wd)-.25 G .088
(irectly add)-2.588 F(and commit the ne)100 415.2 Q 2.5(wd)-.25 G
(irectory.)-2.5 E F1 -.11(BU)20 432 S(GS).11 E F0(Non kno)100 444 Q
(wn at this moment.)-.25 E F1 -.548(AU)20 460.8 S(THOR).548 E F0
(Jeroen Hoppenbrouwers)100 472.8 Q F1(SEE ALSO)20 489.6 Q F2
(caspar\(7\))100 501.6 Q F0
(The caspar homepage is at http://mdcc.cx/caspar/ .)2.5 E
(casparize 20220907)20 768 Q 2.5<37d1>123.7 G-2.5 E
(1)198.4 E 0 Cg EP
%%Trailer
end
%%EOF
caspar-20220907/doc/caspar.html 0000644 0001750 0001750 00000077055 14306131350 013071 0000000 0000000
caspar
7 сеп 2022
caspar
20220907
NAME
caspar - Makefile snippets for common tasks
SYNOPSIS
In a Makefile, write 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
(configuration) files, 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 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 tree which typically holds configuration files,
managed using Subversion (or git or any other version control system, for that
matter).
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.
It is comparable with other tools for Unix system administrators like
puppet and cfengine. Main difference: the caspar code consists of less than
100 lines of GNU Make.
USAGE
Within a CVS tree, create a file include/install.mk, with contents like
e.g.
csp_UHOST = 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
.
If you'd like to use the install-recursive target too, in directories
which hold subdirectories (but not files), you'll have to create a Makefile
which looks something like
include ../../include/install.mk
. From within the CVS tree, one can call:
make <filename>-diff
make <filename>-install
make diff
make install
make load
make
make install-recursive
Calling make <filename>-diff shows the diff between the local file
and the file as currently installed on the remote location.
Calling make install (or make) now will scp all files in the current
directory to the remote location. The install-recursive target descends
down the tree, and calls make install in each subdirectory.
Of course, you'll have to be able to ssh directly as root to the remote host to
get this working (if you'd like to use csp_UHOST =
root@some.host.somewhere). If you don't like this, and would like to have a
PermitRootLogin no in your /etc/ssh/sshd_config, you can use
csp_sucp(1). See below.
VARIABLES
The variables one can set in a calling Makefile are:
user@host, reachable using $(csp_PUSH) (which
is scp by default)
space separated list of user@host items, reachable
using $(csp_PUSH)
directory on host, reachable using function
$(csp_PUSH)
make function for pushing files to remote location.
Usually, this is a wrapper around a script or
program. The function will be passed 4 arguments:
[user@]host, remote directory and local
filename.
[user@]host will be set
to all elements of $(csp_UHOSTS);
directory will be set to $(csp_DIR).
Currently, $(csp_scp_FUNC), $(csp_cp_FUNC)
and $(csp_sucp_FUNC) are supported as push
plugins. If csp_PUSH is unset, the default
$(csp_scp_FUNC) is used.
the `load' target depends upon these targets.
the `build' target depends upon these targets.
cp binary, just "cp" by default
scp binary, just "scp" by default
script wrapping sudo in ssh, "csp_sucp" by default
extra files which should be installed.
Can be used to include files starting with a dot.
files which should never be installed. Set to
Makefile .%.swp %~ #%# pod2htmd.tmp pod2htmi.tmp by default.
extra files which should never be installed;
added to list in csp_TABOOFILES.
files which should be installed, even if
in initial csp_TABOOFILES list. Removed from csp_TABOOFILES
list.
directories to exclude in install-recursive target.
set to CVS .svn by default.
csp_TABOODIRS_ADD, csp_TABOODIRS_SKIP
see
csp_TABOOFILES equivalents.
override csp_UHOSTS: don't push to csp_UHOSTS, but
to the intersection of this space separated list of user@host items and
csp_UHOSTS.
The following variables might get phased out or removed soonish:
extra arguments to pass to cp invocation, none by
default
extra arguments to pass to scp invocation, e.g.
'-i .ssh/id_rsa-root'
EXAMPLES
Some examples:
Using csp_UHOST
This is the simplest way to use caspar. Makefile is
csp_UHOST = root@some.host.somewhere
csp_DIR = /etc/
include caspar/mk/caspar.mk
Now, running "make" will scp all files in the current directory to
root@some.host.somewhere:/etc/.
More hosts, not scp but sudo via ssh: using csp_PUSH
Makefile is
csp_UHOSTS = root@some.host.somewhere root@some.other.host
csp_PUSH = $(csp_sucp_FUNC)
csp_DIR = /etc/
include caspar/mk/caspar.mk
Now, running "make" will use csp_sucp(1) to install all files in the current
directory to both root@some.host.somewhere:/etc/ and
root@some.other.host:/etc/. If a file named fstab is present in the
current directory, running "make fstab-install" will just install that one
file.
If you need to sudo(1) to another user on the remote host, add something like
csp_XARG = postgres
. (If such a username is not supplied, sudo (and csp_sucp) use the default:
root.)
Overriding csp_UHOSTS: csp_UHOSTS_SKIP
If one or some of your hosts are temporarily unavailable, and you'd like to
push your files to the hosts which are alive, you can temporarily override your
csp_UHOSTS. E.g., when some.other.host is not available:
% cat Makefile
csp_UHOSTS = root@some.host.somewhere root@some.other.host
csp_DIR = /etc/
include caspar/mk/caspar.mk
% make install csp_UHOSTS_SKIP=root@some.other.host
scp hosts root@some.host.somewhere:/etc/
scp fstab root@some.host.somewhere:/etc/
Overriding csp_UHOSTS in a smart way: csp_UHOSTS_SUBSET. Using multiple
groups of hosts. Recursive make made easy.
If you have lots of subdirectories holding information for lots of groups of
hosts, while this run you just want to install for a small group (or 1) hosts,
csp_UHOSTS_SUBSET is useful.
Suppose your casparized tree looks like
Makefile
apache/include/install.mk
apache/etc/apache2/Makefile
apache/etc/apache2/envvars
php/include/install.mk
php/etc/php4/apache/Makefile
php/etc/php4/apache/php.ini
grub/include/install.mk
grub/boot/grub/Makefile
grub/boot/grub/menu.lst
logrotate/include/install.mk
logrotate/etc/Makefile
logrotate/etc/logrotate.conf
nrpe/include/install.mk
nrpe/debian/etc/default/Makefile
nrpe/debian/etc/default/nagios-nrpe-server
The file apache/etc/apache2/Makefile is:
csp_DIR = /etc/apache2/
include ../../include/install.mk
(all other Makefiles are similar).
The file apache/include/install.mk is
csp_UHOSTS = root@a root@b
include caspar/mk/caspar.mk
The file php/include/install.mk is the same. The files
grub/include/install.mk and logrotate/include/install.mk are
csp_UHOSTS = root@d root@e root@f root@g
include caspar/mk/caspar.mk
The file nrpe/include/install.mk is
csp_UHOSTS = root@d root@e root@f root@n
include caspar/mk/caspar.mk
The toplevel Makefile is
dirs = $(patsubst %/Makefile,%,$(shell find * -mindepth 1
-name Makefile))
all:
for i in $(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i; done
install
for i in $(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i install; done
load
for i in $(dirs); do $(MAKE) -$(MAKEFLAGS) -C $$i load; done
(we don't feel like sticking a Makefile in all non-leaf nodes of our tree).
Now, when running "csp_UHOSTS_SUBSET='root@e root@f root@m root@n' make"
in the toplevel, caspar just takes the intersection of csp_UHOSTS_SUBSET and
csp_UHOSTS for each csp_UHOSTS list. So, caspar will not push anything for
apache/ and php/. The files grub/boot/grub/menu.lst and
logrotate/etc/logrotate.conf will get pushed to root@e and
root@f only. The file nrpe/debian/etc/default/nagios-nrpe-server
will get pushed to root@e, root@f and root@n.
This is often better than just overriding csp_UHOSTS on the commandline (or in
your shell's environment): if the intersection of the original csp_UHOSTS and
your new csp_UHOSTS is empty, chances are big you've just forgotten to clean
your environment.
Creating remote directories if needed
Makefile is
csp_DIR = /some/dir/ectory/
csp_PUSH = $(csp_scpmkdir_FUNC)
csp_UHOST = root@some.host.somewhere
include caspar/mk/caspar.mk
Now, before calling scp, caspar will run 'mkdir -p' to create any missing
remote directories.
Using csp_CP and csp_LOAD
username/etc/Makefile is
csp_UHOST = dummy
csp_PUSH = $(csp_cp_FUNC)
csp_DIR = $(HOME)/etc/
csp_LOAD = crontab-load
include ../include/install.mk
crontab-load = crontab $(csp_DIR)/crontab
while ../include/install.mk is just
include caspar/mk/caspar.mk
.
Setting csp_PUSH to $(csp_cp_FUNC) causes cp(1) to get executed
by "make install" (not scp(1)).
Setting csp_LOAD causes "make load" to execute the crontab command. Just
running "make" is OK too, since "make" calls both "make install" and "make
load".
Using csp_DIR, csp_LOAD and install(1)
To install a file on the local host, create e.g. a file etc/uruk/Makefile
like:
csp_UHOST = dummy
csp_DIR = /etc/uruk/
csp_PUSH = $(csp_install_FUNC)
csp_LOAD = uruk-load
include caspar/mk/caspar.mk
uruk-load = sudo invoke-rc.d uruk force-reload
Using csp_DIR and csp_LOAD, take 2
etc/Makefile is
csp_DIR = /etc/
csp_LOAD = aliases-load
include ../include/install.mk
aliases-load = $(csp_SSH) $1 "cd /etc && postalias aliases; postfix reload"
while ../include/install.mk is
csp_UHOST = root@some.host.somewhere
include caspar/mk/caspar.mk
Building files locally
Note: csp_BUILD is deprecated. You should not use it.
If you'd like to build some files locally from local sources, before installing
the just built files, do e.g.:
csp_UHOST = root@some.host.somewhere
csp_DIR = /etc/
csp_EXTRAFILES = sshd_config
csp_TABOOFILES_ADD = sshd_config.m4
include caspar/mk/caspar.mk
sshd_config: sshd_config.m4
m4 $< > $@
List all source files in csp_TABOOFILES_ADD: this way, they won't get installed
on the csp_UHOST.
Using csp_sucp_FUNC and csp_LOAD
If you'd like to use csp_sucp and want a `load' target, do something like:
csp_PUSH = $(csp_sucp_FUNC)
csp_UHOST = foobar.example.com
csp_DIR = /etc/uruk/
csp_LOAD = rc-load
include caspar/mk/caspar.mk
rc-load = $(csp_SSH) $1 sudo invoke-rc.d uruk force-reload
Using the "verify" target
If you want to do some syntax check on the local host for a configuration
file, define a -verify target (or pattern target):
bar.pem-verify: bar.pem.asc bar.pem
gpg --verify $^
%.php-verify: %.php
php -l $<
This command will be invoked when you "make verify" and "make install".
Using the "check" target
If you want to do some syntax check on the remote host, before loading the just
installed configuration file, do
csp_UHOST = foobar.example.com
csp_DIR = /etc/
csp_LOAD = my-load
csp_CHECK = my-check
my-check = $(csp_SSH) $1 do-check-stuff
my-load = $(csp_SSH) $1 do-load-stuff
include caspar/mk/caspar.mk
This way, "make load" won't cause the file to load if the check fails
(which is probably what you want).
You could even give the file a temporary name and have the load target
rename it to its real name only after a successful check.
As a convenience, if a foo-check variable is defined, it is automatically
added as a dependency for any csp_LOAD targets named foo or foo-something.
Combining the csp_LOAD target with multiple hosts; building files remotely
Here's an example doing some preprocessing on the remote hosts before reloading the configuration:
csp_DIR = /etc/ssh/
csp_UHOSTS = root@some.host.somewhere root@some.other.host
csp_LOAD = sshd_config-load
sshd_config-load = $(csp_SSH) $1 "set -e; \
cd $(csp_DIR); \
m4 sshd_config.m4 >sshd_config; \
service ssh reload"
include caspar/mk/caspar.mk
(The old, deprecated way is to explicitly specify the loop over the hosts:
csp_DIR = /etc/ssh/
sshd_config-load:
for suh in $(csp_UHOSTS); do \
$(csp_SSH) $$suh "set -e;
cd $(csp_DIR); \
m4 sshd_config.m4 > sshd_config; \
service ssh reload"; \
done
.
You should not use this method.
Please consider rewriting any existing caspar snippets using the simpler method described above.)
Using the csp_TABOOFILES_{ADD,SKIP} variables; another way to perform remote builds
Using the csp_TABOOFILES_{ADD,SKIP} variables is handy if you want to
install a Makefile, instead of using it: Create Makefile just
as you'd like to have it installed on the remote location. Now, create
GNUmakefile as e.g.
csp_TABOOFILES_SKIP = Makefile
csp_TABOOFILES_ADD = GNUmakefile
csp_DIR = /etc/foobar/
csp_UHOST = root@some.host.somewhere
include caspar/mk/caspar.mk
load:
$(csp_SSH) $(csp_UHOST) "make -C $(csp_DIR)"
Now, make install and make load will do the right thing.
Using the csp_EXTRAFILES variable
Using the csp_EXTRAFILES variable can be handy if you want to install files
with a leading dot. E.g.:
csp_EXTRAFILES = .bashrc
csp_UHOST = root@some.host.somewhere
csp_DIR =
include caspar/mk/caspar.mk
Overriding csp_UHOSTS
Supply e.g.
csp_UHOSTS = root@localhost root@some.host.somewhere
in install.mk, to install on multiple hosts. Run
make filename-install csp_UHOSTS=joe@otherhost
to install filename as joe@otherhost, instead of the default as given in
install.mk. If you want to enable passing csp_UHOSTS as a shell
environment variable, you'll have to use conditional assignment in your
Makefile:
csp_UHOSTS ?= root@localhost root@some.host.somewhere
This allows it to run
% export csp_UHOSTS=foo@bar
% make filename-install
to install on foo@bar.
Using sudo locally for installing files
If you'd like to install files like
sudo cp foo.rc /etc/foobar/
you could set up your Makefile as
csp_DIR = /etc/foobar/
csp_UHOST = dummy
csp_PUSH = sudo cp $(1) $(3)
include caspar/mk/caspar.mk
This is like csp_sucp, but without the ssh wrapping: it works on localhost
only.
Plugging your own install script in caspar
If your script foobar should be called as e.g.
foobar --file=fstab --user@host=joe@some.host \
--dir=/etc/ --debuglevel=3
then make sure your Makefile features something like
csp_foobar_FUNC = foobar --file=$(1) --user@host=$(2) \
--dir=$(3) --debuglevel=$(4)
csp_PUSH = $(csp_foobar_FUNC)
csp_XARG = 3
You can now use csp_UHOST and csp_DIR just as you're used to.
More advanced tricks
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
on some.host.somewhere (e.g. from cron).
FILES
caspar/mk/caspar.mk, caspar/mk/docbook.mk, caspar/mk/pod.mk
ENVIRONMENT
For caspar.mk: csp_CP, csp_LOAD,
csp_SCP, csp_UHOST, csp_PUSH, ...
BUGS
Very likely, GNU Make is not the best tool for doing the stuff caspar.mk is
doing.
For the list of reported bugs, see http://bugs.debian.org/src:caspar.
See also TODO, 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-Ilić
SEE ALSO
caspar-typesetting(7)
csp_helper(1)
The caspar homepage is at http://mdcc.cx/caspar/ .
The document
"Versiebeheer en
software-packages: Waarom en Hoe" (in Dutch) describes some of the reasons why
people might want to use tools like caspar.
Jeroen Hoppenbrouwers blogs about the way he uses caspar, in
"Using Subversion and Caspar to
maintain a Linux host".
Lots of tools overlap (partly) with caspar in their functionality. Here's a
list.
ansible (http://www.ansible.com/); code is on github
(https://github.com/ansible/ansible)
cfengine (http://www.cfengine.org/), by Mark Burgess e.a., builds
expert systems to administrate and configure large computer networks: it
delivers a very big superset of caspar's installation mechanism.
Puppet (http://reductivelabs.com/projects/puppet), also something
like a configuration management system.
Here's an older list; a big part of it was collected by Ray Miller
(http://users.ox.ac.uk/~raym/) of Oxford University, and published in
the article "Configuration Management with Subversion, YAML and Perl Template
Toolkit" in the SANE 2006 (http://www.sane.nl/sane2006/) conference
proceedings. FIXME: Check urls, update
docbookmk, by Michael Wiedmann (http://www.miwie.org/docbkmake/)
offers probably a superset of Caspar's docbook.mk functionality.
latex-make by the LaTeX Utils project on
http://gforge.inria.fr/projects/latex-utils/ seems to provide similar
functionality as docbook.mk for LaTeX documents.
Latexmk by John Collins e.a. on
http://www.phys.psu.edu/~collins/software/latexmk-jcc/ is another
implementation of this idea.
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.
PIKT (http://www.pikt.org/) is intended primarily for system
monitoring, but does do configuration management too.
LCFG (http://www.lcfg.org/) is another configuration management
system.
The Arusha Project (ARK, at http://ark.sf.net/) provides a framework
for collaborative system administration.
Bcfg2 (http://trac.mcs.anl.gov/projects/bcfg2/) is yet another
configuration management system.
quattor (http://quattor.web.cern.ch/) is a system administration
toolkit for installation, configuration and management of Unix systems.
rb3 and friends, as written and used by Ray Miller e.a. at Oxford University,
(http://users.ox.ac.uk/~raym/software/configuration-management/).
The svk version control system is said to be
quite usable for handling configuration file management (without a separate
install mechanism like caspar). See also
this
discussion on the Debian development list.
On the http://www.infrastructures.org/ website on automated (Unix)
system administration, you can find some thoughts on managing configuration
files using a version control system.
caspar-20220907/doc/csp_install.1 0000644 0001750 0001750 00000000033 14306130363 013310 0000000 0000000 .\"
.so man1/csp_helper.1
caspar-20220907/doc/csp_helper.txt 0000644 0001750 0001750 00000005647 14306130464 013622 0000000 0000000 7 сеп 2022 csp_helper 20220907
1.
NAME
2.
SYNOPSIS
3.
DESCRIPTION
4.
install DESCRIPTION
5.
install EXAMPLES
6.
install ENVIRONMENT
7.
mkdircp DESCRIPTION
8.
scp_keep_mode DESCRIPTION
9.
scp_keep_mode EXAMPLE
10.
scp_keep_mode ENVIRONMENT
11.
sucp DESCRIPTION
12.
sucp EXAMPLES
13.
AUTHOR
14.
SEE ALSO
NAME
csp_helper — A collection of caspar helper scripts
SYNOPSIS
csp_install dir (directory) file (file)
csp_mkdircp dir (directory) file (file)
csp_scp_keep_mode h ([user@]host) dir (directory) file (file)
csp_sucp h ([user@]host) dir (directory) file (file)
DESCRIPTION
The scripts csp_install, csp_mkdircp, csp_scp_keep_mode and csp_sucp are
helpers for caspar(7). These scripts typically are not invoked directly, but
via a Makefile which uses caspar. See the notes on csp_PUSH in caspar(7) for
information on how to link csp_install, csp_scp_keep_mode and csp_sucp to
caspar.
install DESCRIPTION
csp_install creates the required directory (if needed) and installs the file,
preserving timestamps. It uses install(1).
install EXAMPLES
csp_INSTALL_OPTIONS='--owner=www-data --group=www-data' \ csp_INSTALL_MODE=ugo=
r \ csp_install /srv/www index.html
csp_INSTALL_MODE=u=rwx,go= csp_install /usr/local/sbin mkpasswd
install ENVIRONMENT
csp_install honors csp_INSTALL_OPTIONS and csp_INSTALL_MODE (default is u=rw,go
=r).
mkdircp DESCRIPTION
csp_mkdircp calls mkdir(1) and cp(1). csp_mkdircp is used like csp_CP. use
csp_mkdircp if you frequently have to bootstrap installation on a fresh system,
on which needed directories don't exist yet. csp_mkdircp makes sure the target
directory exists before calling cp(1), by calling mkdir -p first.
scp_keep_mode DESCRIPTION
csp_scp_keep_mode uses ssh to copy a file to a remote host, keeping its file
permission mode. The trick used is a combination of mktemp(1) and mv(1). Useful
if you'd like to be sure a file gets installed e.g. group writable, without
fiddling with permission bits on the remote host.
scp_keep_mode EXAMPLE
chmod g+w rc csp_scp_keep_mode root@gandalf /etc/uruk rc
scp_keep_mode ENVIRONMENT
csp_scp_keep_mode honors csp_SSH ("ssh" by default).
sucp DESCRIPTION
csp_sucp calls tar(1) from within sudo(1) from within ssh(1). This allows one
to copy files to accounts on hosts one can only reach by calling sudo on the
ssh-reachable remote host.
Typically, one wants to install a root-owned file, but one does not want to
allow access to the root-account directly from ssh. Typically sudo is used as
an extra line of defense.
NB: if your sudo prompts for a password, be sure to have line
Defaults !tty_tickets
in your sudoers file: we first call sudo -v, than we call sudo to write the
data. Since we use ssh to get to the host, we'll use a different tty for both
sudo calls.
sucp EXAMPLES
Some examples:
csp_sucp rms@bilbo /etc fstab
csp_sucp monty-python commit/ trailer.txt
AUTHOR
Joost van Baal-Ilić
SEE ALSO
caspar(7) The caspar homepage is at http://mdcc.cx/caspar/ .
caspar-20220907/doc/caspar-typesetting.ps 0000644 0001750 0001750 00000030076 14306131350 015114 0000000 0000000 %!PS-Adobe-3.0
%%Creator: groff version 1.22.4
%%CreationDate: Wed Sep 7 15:04:08 2022
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Courier
%%+ font Times-Italic
%%DocumentSuppliedResources: procset grops 1.22 4
%%Pages: 3
%%PageOrder: Ascend
%%DocumentMedia: Default 595 842 0 () ()
%%Orientation: Portrait
%%EndComments
%%BeginDefaults
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
%%BeginResource: procset grops 1.22 4
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/MANUAL{
statusdict begin/manualfeed true store end
}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
DEFS/BPhook known{DEFS begin BPhook end}if
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/Fr{
setrgbcolor fill
}bind def
/setcmykcolor where{
pop
/Fk{
setcmykcolor fill
}bind def
}if
/Fg{
setgray fill
}bind def
/FL/fill load def
/LW/setlinewidth load def
/Cr/setrgbcolor load def
/setcmykcolor where{
pop
/Ck/setcmykcolor load def
}if
/Cg/setgray load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne
2 index/UniqueID ne
and
{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
/setpagedevice{}def
mark
}bind def
/PEND{
cleartomark
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%EndProlog
%%BeginSetup
%%BeginFeature: *PageSize Default
<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice
%%EndFeature
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Courier
%%IncludeResource: font Times-Italic
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Times-Italic@0 ENC0/Times-Italic RE/Courier@0 ENC0/Courier RE
/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(caspar)20 48 Q 104.365
(-typesetting\(7\) MISCELLANEOUS)-.2 F(caspar)109.365 E
(-typesetting\(7\))-.2 E/F1 10.95/Times-Bold@0 SF -.219(NA)20 84 S(ME)
.219 E F0(caspar)100 96 Q(-typesetting - Mak)-.2 E
(e\214le snippets for common typesetting tasks)-.1 E F1(SYNOPSIS)20
112.8 Q F0(In a Mak)100 124.8 Q(e\214le, write)-.1 E/F2 10/Courier@0 SF
(include caspar/mk/docbook.mk)112 160.8 Q F0(or)100 184.8 Q F2
(include caspar/mk/pod.mk)112 220.8 Q F0(or)100 244.8 Q F2
(include caspar/mk/markdown.mk)112 280.8 Q F0(.)100 304.8 Q F1
(DESCRIPTION)20 321.6 Q F0 .173(The caspar)100 333.6 R/F3 10
/Times-Italic@0 SF(docbook.mk)2.673 E F0(,)A F3(pod.mk)2.673 E F0(and)
2.673 E F3(markdown.mk)2.673 E F0 .172(\214les are Mak)2.673 F .172
(e\214le snippets for common type-)-.1 F .275(setting tasks, lik)100
345.6 R 2.775(et)-.1 G .275(ypesetting LaT)-2.775 F .276
(eX \(see [3]\), DocBook XML, DocBook SGML \(see [2]\), POD)-.7 F .574
(\(see [1]\) and Markdo)100 357.6 R .574(wn \(see [4]\) documents.)-.25
F -1.1(Yo)5.574 G 3.074(uj)1.1 G .574(ust ha)-3.074 F .874 -.15(ve t)-.2
H 3.074(ot).15 G(ype)-3.074 E F2(make)3.074 E F0 3.073(,i)C .573
(nstead of stuf)-3.073 F 3.073(fl)-.25 G(ik)-3.073 E(e)-.1 E F2 10.4
(jade -t tex -d caspar/print.dsl /usr/share/sgml/declara-)100 369.6 R
(tion/xml.dcl foobar.dbx)100 381.6 Q F0(.)A F1(USA)20 398.4 Q(GE)-.602 E
F0(In a directory where you maintain .dbx \(Docbook XML\) or .te)100
410.4 Q 2.5(x\()-.15 G(LaT)-2.5 E(eX\) \214les, do)-.7 E F2 6($e)118
446.4 S(cho include caspar/mk/docbook.mk > Makefile)-6 E 6($v)118 470.4
S 6(ik)-6 G(arenina.dbx)-6 E 6($m)118 482.4 S(ake karenina.view)-6 E 6
($m)118 494.4 S(ake karenina.print)-6 E 6($v)118 518.4 S 6(is)-6 G
(vejk.tex)-6 E 6($m)118 530.4 S(ake svejk.view)-6 E 6($m)118 542.4 S
(ake svejk.print)-6 E 6($m)118 566.4 S(ake)-6 E 6($m)118 578.4 S
(ake clean)-6 E F0 5.094(Other tar)100 602.4 R(gets:)-.18 E F2
(filename.ps)7.594 E F0(,)A F2(filename.pdf)7.594 E F0(,)A F2
(filename.2ps)7.594 E F0(,)A F2(filename.html)7.594 E F0(,)A F2
(filename.printbig)100 614.4 Q F0(,)A F2(filename.dvi)2.5 E F0(.)A -1.11
(Va)100 638.4 S 10.286(riables you might lik)1.11 F 12.786(et)-.1 G
12.786(os)-12.786 G 10.286(et in your Mak)-12.786 F(e\214le:)-.1 E F2
(XMLDCL)12.787 E F0(\(def)12.787 E 10.287(ault is)-.1 F F2
(/usr/share/sgml/declaration/xml.dcl)100 650.4 Q F0 2.872(;i)C 2.872(fy)
-2.872 G(ou')-2.872 E .371(re not on a Debian GNU/Linux sys-)-.5 F
(tem, you')100 662.4 Q(ll lik)-.1 E(ely ha)-.1 E .3 -.15(ve t)-.2 H 2.5
(oa).15 G(djust this\),)-2.5 E F2(HTML_DSL)2.5 E F0(,)A F2(PRINT_DSL)2.5
E F0(.)A(In a directory where you maintain .pod \214les, do)100 686.4 Q
(caspar)20 768 Q(-typesetting 20220907)-.2 E 2.5<37d1>88.34 G
-2.5 E(1)198.4 E 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(caspar)20 48 Q 104.365
(-typesetting\(7\) MISCELLANEOUS)-.2 F(caspar)109.365 E
(-typesetting\(7\))-.2 E/F1 10/Courier@0 SF 6($e)118 84 S
(cho include caspar/mk/pod.mk > Makefile)-6 E 6($v)118 96 S 6(il)-6 G
(ire.pod)-6 E 6($p)118 108 S(erldoc ./lire.pod)-6 E 6($m)118 120 S
(ake lire.pdf)-6 E 6($m)118 132 S(ake)-6 E 6($l)118 144 S
(ess lire.overstrike-txt)-6 E 6($m)118 156 S(ake clean)-6 E F0 .984
(Other tar)100 180 R(gets:)-.18 E F1(filename.ps)3.484 E F0(,)A F1
(filename.html)3.484 E F0(,)A F1(filename.txt)3.484 E F0 3.484(,.)C
3.485(.. \(Similar)-3.484 F .985(to the ones)3.485 F(supplied by)100 192
Q/F2 10/Times-Italic@0 SF(docbook.mk)2.5 E F0(\).)A
(In a directory where you maintain .md \214les, do)100 216 Q F1 6($e)118
252 S(cho include caspar/mk/markdown.mk > Makefile)-6 E 6($v)118 264 S 6
(il)-6 G(ire.md)-6 E 6($m)118 276 S(ake lire.html)-6 E 6($m)118 288 S
(ake)-6 E 6($m)118 300 S(ake clean)-6 E F0(.)100 324 Q/F3 10.95
/Times-Bold@0 SF(EXAMPLES)20 340.8 Q F0 1.86(Some e)100 352.8 R 1.859
(xamples: Ov)-.15 F 1.859(erriding the caspar)-.15 F 1.859
(-supplied DSSSL \214les: Create your o)-.2 F 1.859(wn print.dls and)
-.25 F(html.dsl, in the same directory as your Docbook XML \214les. Y)
100 364.8 Q(our Mak)-1.1 E(e\214le should read:)-.1 E F1
(PRINT_DSL = print.dsl)106 400.8 Q(HTML_DSL = html.dsl)106 412.8 Q
(include caspar/mk/docbook.mk)106 424.8 Q F0(Ov)100 448.8 Q
(erriding the standard html-to-te)-.15 E(xt con)-.15 E -.15(ve)-.4 G
(rtor:).15 E F1 6($W)106 484.8 S(3M=lynx make svejk.txt)-6 E F0(.)100
508.8 Q F3(FILES)20 525.6 Q F2(caspar/mk/docbook.mk)100 537.6 Q F0(,)A
F2(caspar/mk/pod.mk)2.5 E F0(,)A F2(caspar/mk/markdown.mk)2.5 E F0(.)A
F3(ENVIR)20 554.4 Q(ONMENT)-.329 E F0 -.15(Fo)100 566.4 S(r).15 E F2
(docbook.mk)4.552 E F0 4.552<3a8c>C(les:)-4.552 E F1(XMLDCL)4.552 E F0
(,)A F1(HTML_DSL)4.552 E F0(,)A F1(PRINT_DSL)4.553 E F0 4.553(;u)C
(tilities:)-4.553 E F1(JADE)4.553 E F0(,)A F1(PDFJADETEX)4.553 E F0(,)A
F1(PDFLATEX)100 578.4 Q F0(,)A F1(JADETEX)4.487 E F0(,)A F1(LATEX)4.487
E F0(,)A F1(W3M)4.487 E F0(,)A F1(DVIPS)4.487 E F0(,)A F1(PSNUP)4.487 E
F0(,)A F1(LPR)4.487 E F0(,)A F1(GV)4.486 E F0 4.486(;s)C(ettings:)-4.486
E F1(JADE_MAXER-)4.486 E(RORS)100 590.4 Q F0 2.5(.T)C(hese v)-2.5 E
(ariables can get adjusted in Mak)-.25 E
(e\214le, as well as in the shell en)-.1 E(vironment.)-.4 E(The \214les)
100 614.4 Q F2(pod.mk)2.5 E F0(and)2.5 E F2(markdown.mk)2.5 E F0
(use no en)2.5 E(vironment v)-.4 E(ariables.)-.25 E F3 -.548(AU)20 631.2
S(THOR).548 E F0(Joost v)100 643.2 Q(an Baal-Ili\304)-.25 E F3(SEE ALSO)
20 660 Q/F4 10/Times-Bold@0 SF(caspar\(7\))100 672 Q F0
([1] perlpod\(1\) about Perl')2.5 E 2.5(sP)-.55 G
(lain Old Documentation format)-2.5 E([2])100 696 Q F2
(DocBook: The De\214nitive Guide)2.5 E F0(on http://docbook.or)2.5 E
(g/,)-.18 E([3] The LaT)100 720 Q
(eX Project Homepage on http://www.late)-.7 E(x-project.or)-.15 E(g/.)
-.18 E(caspar)20 768 Q(-typesetting 20220907)-.2 E 2.5<37d1>88.34 G
-2.5 E(2)198.4 E 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(caspar)20 48 Q 104.365
(-typesetting\(7\) MISCELLANEOUS)-.2 F(caspar)109.365 E
(-typesetting\(7\))-.2 E([4] John Gruber')100 84 Q 2.5(sM)-.55 G(arkdo)
-2.5 E(wn homepage on https://daring\214reball.net/projects/markdo)-.25
E(wn/.)-.25 E(Some comments on adv)100 108 Q
(anced usage are in the \214les)-.25 E/F1 10/Times-Italic@0 SF
(docbook.mk)2.5 E F0(and)2.5 E F1(pod.mk)2.5 E F0(itself.)2.5 E(caspar)
20 768 Q(-typesetting 20220907)-.2 E 2.5<37d1>88.34 G
-2.5 E(3)198.4 E 0 Cg EP
%%Trailer
end
%%EOF
caspar-20220907/doc/casparize.1 0000644 0001750 0001750 00000004050 14306130432 012756 0000000 0000000 .\" Copyright (c) 2022 Joost van Baal-Ilić
.TH "casparize" 1 "7 сеп 2022" "casparize 20220907" "USER COMMANDS "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
casparize \- Set up \fBcaspar\fP Makefile in a new directory
.SH SYNOPSIS
\fBcasparize\fP
\fBdir\fP (\fI/path/to/config/dir\fP)
\fBcasparize\fP
\fBfile\fP (\fI/path/to/config/dir/file\fP)
.SH DESCRIPTION
\fBcasparize\fP creates a new configuration working directory in your current
working directory, sets up a Makefile for \fBcaspar(7)\fP in
this new directory,
and optionally copies an original configuration file from its original
system place to the newly created configuration working directory\&.
.SH USAGE
You typically use \fBcasparize\fP when you already have created the root
configuration working directory with its include directory and install\&.mk
Caspar include file\&. By analysing your current working directory and the
configuration directory path you give on the command line, casparize can
deduce the contents of the Makefile in the newly created configuration
working directory\&. It creates the new directory, creates the correct
Makefile, and optionally copies the given configuration file in the new
directory, ready for its first version commit\&.
.SH EXAMPLES
A typical example:
.di ZV
.in 0
.nf \fC
$ cd /etc
$ casparize /etc/postfix/main\&.cf
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
creates the directory /etc/postfix, creates /etc/postfix/Makefile
including the proper content, and copies /etc/postfix/main\&.cf into
/etc/postfix/main\&.cf\&. You can now directly add and commit the new
directory\&.
.SH BUGS
Non known at this moment\&.
.SH AUTHOR
Jeroen Hoppenbrouwers
.SH SEE ALSO
\fBcaspar(7)\fP
The caspar homepage is at http://mdcc\&.cx/caspar/ \&.
caspar-20220907/doc/Makefile.am 0000644 0001750 0001750 00000004667 14242230053 012764 0000000 0000000 ## Process this file with automake to produce Makefile.in
## This file is maintained at http://git.mdcc.cx/caspar
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
## Copyright (C) 2003, 2004, 2005, 2006 Joost van Baal
## based upon work by Stijn van Dongen
TROFF = groff
## Zoem is a an interpretive macro language, for creating mark-up languages, by
## Stijn van Dongen. Information about zoem can be found on the zoem webpage at
## http://micans.org/zoem/ .
ZOEM = zoem
## tidy is a HTML syntax checker and reformatter, available from
## http://www.w3.org/People/Raggett/tidy/ , by Dave Raggett
# FIXME likely it's better NOT to ignore errors from tidy. if you do, building on a
# host which lacks tidy will fail terribly _and_ silently! Or: test here if tidy
# is installed...
TIDY = tidy -quiet -utf8
## http://w3m.sourceforge.net/
## w3m is a text-based web browser, which can be used as a text formatting tool
## which typesets HTML into plain text.
W3M = w3m
PACKAGE = @PACKAGE_TARNAME@
docdir = $(datadir)/doc/$(PACKAGE)
azms = casparize.azm csp_helper.azm caspar.azm caspar-typesetting.azm
typetargets = casparize.html casparize.ps casparize.txt csp_helper.html \
csp_helper.ps csp_helper.txt caspar.html caspar.ps \
caspar.txt caspar-typesetting.html caspar-typesetting.ps \
caspar-typesetting.txt
man1s = csp_install.1 csp_mkdircp.1 csp_scp_keep_mode.1 csp_sucp.1
manazms = casparize.1 csp_helper.1 caspar.7 caspar-typesetting.7
tmpfiles = casparize.zmr casparize.zmt caspar-typesetting.zmr \
caspar-typesetting.zmt caspar.zmr caspar.zmt csp_helper.zmr csp_helper.zmt
doc_DATA = $(typetargets) $(azms) ChangeLog.2002
man_MANS = $(man1s) $(manazms)
EXTRA_DIST = $(doc_DATA) $(man_MANS)
SUFFIXES = .1 .7 .azm .html .ps .txt
.azm.1:
$(ZOEM) -d roff -i $< -o $@ || true
$(ZOEM) -d roff -i $< -o $@
.azm.7:
$(ZOEM) -d roff -i $< -o $@ || true
$(ZOEM) -d roff -i $< -o $@
.7.ps:
$(TROFF) -man $< > $@
.1.ps:
$(TROFF) -man $< > $@
.azm.html:
$(ZOEM) -d html -i $< -o $@ || true
$(ZOEM) -d html -i $< -o $@
-$(TIDY) -e $@
## $(TIDY) -e $@
## alternative, one could call something like
## groff -man -Tascii $< > $@
## for generating ascii directly from roff.
## However, this generates output which uses the boldface-^H trick
.html.txt:
$(W3M) -dump $< > $@
MAINTAINERCLEANFILES = $(manazms) $(typetargets) $(tmpfiles)
DISTCLEANFILES = $(typetargets)
caspar-20220907/doc/caspar-typesetting.azm 0000644 0001750 0001750 00000007530 14306131324 015261 0000000 0000000 \: vim:syntax=tex
\: This file is maintained at http://git.mdcc.cx/caspar
\: this is a manpage in zoem format. see http://micans.org/zoem/ and man_zmm(7)
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{caspar-typesetting}
{html_title}{caspar-typesetting}
{section}{7}
\man_share
}
\${html}{\"pud::man::maketoc"}
\def{"docbook.mk"}{\it{docbook.mk}}
\def{"pod.mk"}{\it{pod.mk}}
\def{"markdown.mk"}{\it{markdown.mk}}
\sec{name}{NAME}
caspar-typesetting - Makefile snippets for common typesetting tasks
\sec{synopsis}{SYNOPSIS}
In a Makefile, write
\verbatim{
include caspar/mk/docbook.mk
}
or
\verbatim{
include caspar/mk/pod.mk
}
or
\verbatim{
include caspar/mk/markdown.mk
}
.
\sec{description}{DESCRIPTION}
The caspar \"docbook.mk", \"pod.mk" and \"markdown.mk" files are Makefile snippets for common
typesetting tasks, like typesetting LaTeX (see \refer{latex}), DocBook
XML, DocBook SGML (see \refer{dbx}), POD (see \refer{pod}) and Markdown (see \refer{markdown}) documents.
You just have to type \tt{make}, instead of stuff like \tt{jade -t tex -d
caspar/print.dsl /usr/share/sgml/declaration/xml.dcl foobar.dbx}.
\sec{usage}{USAGE}
In a directory where you maintain .dbx (Docbook XML) or .tex (LaTeX) files, do
\verbatim{
$ echo include caspar/mk/docbook.mk > Makefile
$ vi karenina.dbx
$ make karenina.view
$ make karenina.print
$ vi svejk.tex
$ make svejk.view
$ make svejk.print
$ make
$ make clean
}
Other targets: \tt{filename.ps}, \tt{filename.pdf}, \tt{filename.2ps}, \tt{filename.html},
\tt{filename.printbig}, \tt{filename.dvi}.
\par{
Variables you might like to set in your Makefile: \tt{XMLDCL} (default is
\tt{/usr/share/sgml/declaration/xml.dcl}; if you're not on a Debian GNU/Linux
system, you'll likely have to adjust this), \tt{HTML_DSL}, \tt{PRINT_DSL}.
} \par{
In a directory where you maintain .pod files, do
\verbatim{
$ echo include caspar/mk/pod.mk > Makefile
$ vi lire.pod
$ perldoc ./lire.pod
$ make lire.pdf
$ make
$ less lire.overstrike-txt
$ make clean
}
Other targets: \tt{filename.ps}, \tt{filename.html}, \tt{filename.txt}, ...
(Similar to the ones supplied by \"docbook.mk").
} \par{
In a directory where you maintain .md files, do
\verbatim{
$ echo include caspar/mk/markdown.mk > Makefile
$ vi lire.md
$ make lire.html
$ make
$ make clean
}
. }
\sec{examples}{EXAMPLES}
\par{
Some examples: Overriding the caspar-supplied DSSSL files: Create your own
print.dls and html.dsl, in the same directory as your Docbook XML files. Your
Makefile should read:
\verbatim{
PRINT_DSL = print.dsl
HTML_DSL = html.dsl
include caspar/mk/docbook.mk
}
Overriding the standard html-to-text convertor:
\verbatim{
$ W3M=lynx make svejk.txt
}
.
}
\sec{files}{FILES}
\it{caspar/mk/docbook.mk}, \it{caspar/mk/pod.mk}, \it{caspar/mk/markdown.mk}.
\sec{environment}{ENVIRONMENT}
For \"docbook.mk": files: \tt{XMLDCL}, \tt{HTML_DSL}, \tt{PRINT_DSL};
utilities: \tt{JADE}, \tt{PDFJADETEX}, \tt{PDFLATEX}, \tt{JADETEX}, \tt{LATEX},
\tt{W3M}, \tt{DVIPS}, \tt{PSNUP}, \tt{LPR}, \tt{GV}; settings:
\tt{JADE_MAXERRORS}. These variables can get adjusted in Makefile, as well as
in the shell environment.
\par{
The files \"pod.mk" and \"markdown.mk" use no environment variables.
}
\sec{author}{AUTHOR}
\"man::author"
\sec{seealso}{SEE ALSO}
\sibref{caspar}{caspar(7)}
\reference{pod}
perlpod(1) about Perl's Plain Old Documentation format
\par{
\reference{dbx}
\it{DocBook: The Definitive Guide} on \httpref{http://docbook.org/},
} \par{
\reference{latex}
The LaTeX Project Homepage on \httpref{http://www.latex-project.org/}.
} \par{
\reference{markdown}
John Gruber's Markdown homepage on
\httpref{https://daringfireball.net/projects/markdown/}.
} \par{
Some comments on advanced usage are in the files \"docbook.mk" and \"pod.mk"
itself.
}
\end{pud::man}
caspar-20220907/install-sh 0000755 0001750 0001750 00000035776 13774524144 012214 0000000 0000000 #!/bin/sh
# install - install a program, script, or datafile
scriptversion=2020-11-14.01; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
tab=' '
nl='
'
IFS=" $tab$nl"
# Set DOITPROG to "echo" to test this script.
doit=${DOITPROG-}
doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_mkdir=
# Desired mode of installed file.
mode=0755
# Create dirs (including intermediate dirs) using mode 755.
# This is like GNU 'install' as of coreutils 8.32 (2020).
mkdir_umask=22
backupsuffix=
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-p pass -p to $cpprog.
-s $stripprog installed files.
-S SUFFIX attempt to back up existing files, with suffix SUFFIX.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
By default, rm is invoked with -f; when overridden with RMPROG,
it's up to you to specify -f if you want it.
If -S is not specified, no backups are attempted.
Email bug reports to bug-automake@gnu.org.
Automake home page: https://www.gnu.org/software/automake/
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-p) cpprog="$cpprog -p";;
-s) stripcmd=$stripprog;;
-S) backupsuffix="$2"
shift;;
-t)
is_target_a_directory=always
dst_arg=$2
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
# We allow the use of options -d and -T together, by making -d
# take the precedence; this is for compatibility with GNU install.
if test -n "$dir_arg"; then
if test -n "$dst_arg"; then
echo "$0: target directory not allowed when installing a directory." >&2
exit 1
fi
fi
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
if test $# -gt 1 || test "$is_target_a_directory" = always; then
if test ! -d "$dst_arg"; then
echo "$0: $dst_arg: Is not a directory." >&2
exit 1
fi
fi
fi
if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names problematic for 'test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
# Don't chown directories that already exist.
if test $dstdir_status = 0; then
chowncmd=""
fi
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# If destination is a directory, append the input filename.
if test -d "$dst"; then
if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dstbase=`basename "$src"`
case $dst in
*/) dst=$dst$dstbase;;
*) dst=$dst/$dstbase;;
esac
dstdir_status=0
else
dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
fi
case $dstdir in
*/) dstdirslash=$dstdir;;
*) dstdirslash=$dstdir/;;
esac
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
# The $RANDOM variable is not portable (e.g., dash). Use it
# here however when possible just to lower collision chance.
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap '
ret=$?
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
exit $ret
' 0
# Because "mkdir -p" follows existing symlinks and we likely work
# directly in world-writeable /tmp, make sure that the '$tmpdir'
# directory is successfully created first before we actually test
# 'mkdir -p'.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
test_tmpdir="$tmpdir/a"
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
trap '' 0;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
oIFS=$IFS
IFS=/
set -f
set fnord $dstdir
shift
set +f
IFS=$oIFS
prefixes=
for d
do
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=${dstdirslash}_inst.$$_
rmtmp=${dstdirslash}_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask &&
{ test -z "$stripcmd" || {
# Create $dsttmp read-write so that cp doesn't create it read-only,
# which would cause strip to fail.
if test -z "$doit"; then
: >"$dsttmp" # No need to fork-exec 'touch'.
else
$doit touch "$dsttmp"
fi
}
} &&
$doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# If $backupsuffix is set, and the file being installed
# already exists, attempt a backup. Don't worry if it fails,
# e.g., if mv doesn't support -f.
if test -n "$backupsuffix" && test -f "$dst"; then
$doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
fi
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
caspar-20220907/configure 0000755 0001750 0001750 00000316442 14306130117 012070 0000000 0000000 #! /bin/sh
# From configure.ac 20220907.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for Caspar 20220907.
#
# Report bugs to .
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
#
#
# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Joost van Baal
# Copyright (C) 2012, 2013, 2014, 2017, 2018, 2020, 2022 Joost van Baal-Ilić
#
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
esac
fi
as_nl='
'
export as_nl
# Printing a long string crashes Solaris 7 /usr/bin/printf.
as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
# Prefer a ksh shell builtin over an external printf program on Solaris,
# but without wasting forks for bash or zsh.
if test -z "$BASH_VERSION$ZSH_VERSION" \
&& (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
as_echo='print -r --'
as_echo_n='print -rn --'
elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
as_echo='printf %s\n'
as_echo_n='printf %s'
else
if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
as_echo_n='/usr/ucb/echo -n'
else
as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
as_echo_n_body='eval
arg=$1;
case $arg in #(
*"$as_nl"*)
expr "X$arg" : "X\\(.*\\)$as_nl";
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
esac;
expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
'
export as_echo_n_body
as_echo_n='sh -c $as_echo_n_body as_echo'
fi
export as_echo_body
as_echo='sh -c $as_echo_body as_echo'
fi
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
PATH_SEPARATOR=';'
}
fi
# IFS
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
done
IFS=$as_save_IFS
;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
$as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
# Unset variables that we do not need and which cause bugs (e.g. in
# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
# suppresses any "Segmentation fault" message there. '((' could
# trigger a bug in pdksh 5.2.14.
for as_var in BASH_ENV ENV MAIL MAILPATH
do eval test x\${$as_var+set} = xset \
&& ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done
PS1='$ '
PS2='> '
PS4='+ '
# NLS nuisances.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
_as_can_reexec=no; export _as_can_reexec;
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
as_fn_exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
else
case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
esac
fi
"
as_required="as_fn_return () { (exit \$1); }
as_fn_success () { as_fn_return 0; }
as_fn_failure () { as_fn_return 1; }
as_fn_ret_success () { return 0; }
as_fn_ret_failure () { return 1; }
exitcode=0
as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
if (eval "$as_required") 2>/dev/null; then :
as_have_required=yes
else
as_have_required=no
fi
if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
as_found=:
case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
as_shell=$as_dir/$as_base
if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
{ $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
CONFIG_SHELL=$as_shell as_have_required=yes
if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
break 2
fi
fi
done;;
esac
as_found=false
done
$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
{ $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
CONFIG_SHELL=$SHELL as_have_required=yes
fi; }
IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
if test x$as_have_required = xno; then :
$as_echo "$0: This script requires a shell more modern than all"
$as_echo "$0: the shells that I found on your system."
if test x${ZSH_VERSION+set} = xset ; then
$as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
$as_echo "$0: be upgraded to zsh 4.3.4 or later."
else
$as_echo "$0: Please tell bug-autoconf@gnu.org and
$0: joostvb-caspar@mdcc.cx about your system, including any
$0: error possibly output before this message. Then install
$0: a modern shell, or manually run the script under such a
$0: shell if you do have one."
fi
exit 1
fi
fi
fi
SHELL=${CONFIG_SHELL-/bin/sh}
export SHELL
# Unset more variables known to interfere with behavior of common tools.
CLICOLOR_FORCE= GREP_OPTIONS=
unset CLICOLOR_FORCE GREP_OPTIONS
## --------------------- ##
## M4sh Shell Functions. ##
## --------------------- ##
# as_fn_unset VAR
# ---------------
# Portably unset VAR.
as_fn_unset ()
{
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
return $1
} # as_fn_set_status
# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
} # as_fn_exit
# as_fn_mkdir_p
# -------------
# Create "$as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{
case $as_dir in #(
-*) as_dir=./$as_dir;;
esac
test -d "$as_dir" || eval $as_mkdir_p || {
as_dirs=
while :; do
case $as_dir in #(
*\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
} || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
} # as_fn_mkdir_p
# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f "$1" && test -x "$1"
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
else
as_fn_append ()
{
eval $1=\$$1\$2
}
fi # as_fn_append
# as_fn_arith ARG...
# ------------------
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
else
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
$as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
$as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
as_expr=expr
else
as_expr=false
fi
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
as_basename=basename
else
as_basename=false
fi
if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
as_dirname=dirname
else
as_dirname=false
fi
as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
}
/^X\/\(\/\/\)$/{
s//\1/
q
}
/^X\/\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
as_lineno_1=$LINENO as_lineno_1a=$LINENO
as_lineno_2=$LINENO as_lineno_2a=$LINENO
eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
# Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
sed -n '
p
/[$]LINENO/=
' <$as_myself |
sed '
s/[$]LINENO.*/&-/
t lineno
b
:lineno
N
:loop
s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
t loop
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
# in an infinite loop. This has already happened in practice.
_as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
. "./$as_me.lineno"
# Exit status is that of the last command.
exit
}
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
case `echo 'xy\c'` in
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
xy) ECHO_C='\c';;
*) echo `echo ksh88 bug on AIX 6.1` > /dev/null
ECHO_T=' ';;
esac;;
*)
ECHO_N='-n';;
esac
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
if ln -s conf$$.file conf$$ 2>/dev/null; then
as_ln_s='ln -s'
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
# In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -pR'
fi
else
as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
if mkdir -p . 2>/dev/null; then
as_mkdir_p='mkdir -p "$as_dir"'
else
test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
as_test_x='test -x'
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
test -n "$DJDIR" || exec 7<&0 &1
# Name of the host.
# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
# so uname gets run too.
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
#
# Initializations.
#
ac_default_prefix=/usr/local
ac_clean_files=
ac_config_libobj_dir=.
LIBOBJS=
cross_compiling=no
subdirs=
MFLAGS=
MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Caspar'
PACKAGE_TARNAME='caspar'
PACKAGE_VERSION='20220907'
PACKAGE_STRING='Caspar 20220907'
PACKAGE_BUGREPORT='joostvb-caspar@mdcc.cx'
PACKAGE_URL=''
ac_subst_vars='LTLIBOBJS
LIBOBJS
LN_S
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
AM_V
am__untar
am__tar
AMTAR
am__leading_dot
SET_MAKE
AWK
mkdir_p
MKDIR_P
INSTALL_STRIP_PROGRAM
STRIP
install_sh
MAKEINFO
AUTOHEADER
AUTOMAKE
AUTOCONF
ACLOCAL
VERSION
PACKAGE
CYGPATH_W
am__isrc
INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
target_alias
host_alias
build_alias
LIBS
ECHO_T
ECHO_N
ECHO_C
DEFS
mandir
localedir
libdir
psdir
pdfdir
dvidir
htmldir
infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
datadir
datarootdir
libexecdir
sbindir
bindir
program_transform_name
prefix
exec_prefix
PACKAGE_URL
PACKAGE_BUGREPORT
PACKAGE_STRING
PACKAGE_VERSION
PACKAGE_TARNAME
PACKAGE_NAME
PATH_SEPARATOR
SHELL'
ac_subst_files=''
ac_user_opts='
enable_option_checking
enable_silent_rules
'
ac_precious_vars='build_alias
host_alias
target_alias'
# Initialize some variables set by options.
ac_init_help=
ac_init_version=false
ac_unrecognized_opts=
ac_unrecognized_sep=
# The variables have the same names as the options, with
# dashes changed to underlines.
cache_file=/dev/null
exec_prefix=NONE
no_create=
no_recursion=
prefix=NONE
program_prefix=NONE
program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
srcdir=
verbose=
x_includes=NONE
x_libraries=NONE
# Installation directory options.
# These are left unexpanded so users can "make install exec_prefix=/foo"
# and all the variables that are supposed to be based on exec_prefix
# by default will actually change.
# Use braces instead of parens because sh, perl, etc. also accept them.
# (The list follows the same order as the GNU Coding Standards.)
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
datarootdir='${prefix}/share'
datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
infodir='${datarootdir}/info'
htmldir='${docdir}'
dvidir='${docdir}'
pdfdir='${docdir}'
psdir='${docdir}'
libdir='${exec_prefix}/lib'
localedir='${datarootdir}/locale'
mandir='${datarootdir}/man'
ac_prev=
ac_dashdash=
for ac_option
do
# If the previous option needs an argument, assign it.
if test -n "$ac_prev"; then
eval $ac_prev=\$ac_option
ac_prev=
continue
fi
case $ac_option in
*=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
*=) ac_optarg= ;;
*) ac_optarg=yes ;;
esac
# Accept the important Cygnus configure options, so we can diagnose typos.
case $ac_dashdash$ac_option in
--)
ac_dashdash=yes ;;
-bindir | --bindir | --bindi | --bind | --bin | --bi)
ac_prev=bindir ;;
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
bindir=$ac_optarg ;;
-build | --build | --buil | --bui | --bu)
ac_prev=build_alias ;;
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
build_alias=$ac_optarg ;;
-cache-file | --cache-file | --cache-fil | --cache-fi \
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
ac_prev=cache_file ;;
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
cache_file=$ac_optarg ;;
--config-cache | -C)
cache_file=config.cache ;;
-datadir | --datadir | --datadi | --datad)
ac_prev=datadir ;;
-datadir=* | --datadir=* | --datadi=* | --datad=*)
datadir=$ac_optarg ;;
-datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
| --dataroo | --dataro | --datar)
ac_prev=datarootdir ;;
-datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
| --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
datarootdir=$ac_optarg ;;
-disable-* | --disable-*)
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
"*) ;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval enable_$ac_useropt=no ;;
-docdir | --docdir | --docdi | --doc | --do)
ac_prev=docdir ;;
-docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
docdir=$ac_optarg ;;
-dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
ac_prev=dvidir ;;
-dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
dvidir=$ac_optarg ;;
-enable-* | --enable-*)
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
"*) ;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval enable_$ac_useropt=\$ac_optarg ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
| --exec | --exe | --ex)
ac_prev=exec_prefix ;;
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
| --exec=* | --exe=* | --ex=*)
exec_prefix=$ac_optarg ;;
-gas | --gas | --ga | --g)
# Obsolete; use --with-gas.
with_gas=yes ;;
-help | --help | --hel | --he | -h)
ac_init_help=long ;;
-help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
ac_init_help=recursive ;;
-help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
ac_init_help=short ;;
-host | --host | --hos | --ho)
ac_prev=host_alias ;;
-host=* | --host=* | --hos=* | --ho=*)
host_alias=$ac_optarg ;;
-htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
ac_prev=htmldir ;;
-htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
| --ht=*)
htmldir=$ac_optarg ;;
-includedir | --includedir | --includedi | --included | --include \
| --includ | --inclu | --incl | --inc)
ac_prev=includedir ;;
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
| --includ=* | --inclu=* | --incl=* | --inc=*)
includedir=$ac_optarg ;;
-infodir | --infodir | --infodi | --infod | --info | --inf)
ac_prev=infodir ;;
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
infodir=$ac_optarg ;;
-libdir | --libdir | --libdi | --libd)
ac_prev=libdir ;;
-libdir=* | --libdir=* | --libdi=* | --libd=*)
libdir=$ac_optarg ;;
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
| --libexe | --libex | --libe)
ac_prev=libexecdir ;;
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
| --libexe=* | --libex=* | --libe=*)
libexecdir=$ac_optarg ;;
-localedir | --localedir | --localedi | --localed | --locale)
ac_prev=localedir ;;
-localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
localedir=$ac_optarg ;;
-localstatedir | --localstatedir | --localstatedi | --localstated \
| --localstate | --localstat | --localsta | --localst | --locals)
ac_prev=localstatedir ;;
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
| --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
localstatedir=$ac_optarg ;;
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
mandir=$ac_optarg ;;
-nfp | --nfp | --nf)
# Obsolete; use --without-fp.
with_fp=no ;;
-no-create | --no-create | --no-creat | --no-crea | --no-cre \
| --no-cr | --no-c | -n)
no_create=yes ;;
-no-recursion | --no-recursion | --no-recursio | --no-recursi \
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
no_recursion=yes ;;
-oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
| --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
| --oldin | --oldi | --old | --ol | --o)
ac_prev=oldincludedir ;;
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
oldincludedir=$ac_optarg ;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
prefix=$ac_optarg ;;
-program-prefix | --program-prefix | --program-prefi | --program-pref \
| --program-pre | --program-pr | --program-p)
ac_prev=program_prefix ;;
-program-prefix=* | --program-prefix=* | --program-prefi=* \
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
program_prefix=$ac_optarg ;;
-program-suffix | --program-suffix | --program-suffi | --program-suff \
| --program-suf | --program-su | --program-s)
ac_prev=program_suffix ;;
-program-suffix=* | --program-suffix=* | --program-suffi=* \
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
program_suffix=$ac_optarg ;;
-program-transform-name | --program-transform-name \
| --program-transform-nam | --program-transform-na \
| --program-transform-n | --program-transform- \
| --program-transform | --program-transfor \
| --program-transfo | --program-transf \
| --program-trans | --program-tran \
| --progr-tra | --program-tr | --program-t)
ac_prev=program_transform_name ;;
-program-transform-name=* | --program-transform-name=* \
| --program-transform-nam=* | --program-transform-na=* \
| --program-transform-n=* | --program-transform-=* \
| --program-transform=* | --program-transfor=* \
| --program-transfo=* | --program-transf=* \
| --program-trans=* | --program-tran=* \
| --progr-tra=* | --program-tr=* | --program-t=*)
program_transform_name=$ac_optarg ;;
-pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
ac_prev=pdfdir ;;
-pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
pdfdir=$ac_optarg ;;
-psdir | --psdir | --psdi | --psd | --ps)
ac_prev=psdir ;;
-psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
psdir=$ac_optarg ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
| --sbi=* | --sb=*)
sbindir=$ac_optarg ;;
-sharedstatedir | --sharedstatedir | --sharedstatedi \
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \
| --sharedst | --shareds | --shared | --share | --shar \
| --sha | --sh)
ac_prev=sharedstatedir ;;
-sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
| --sha=* | --sh=*)
sharedstatedir=$ac_optarg ;;
-site | --site | --sit)
ac_prev=site ;;
-site=* | --site=* | --sit=*)
site=$ac_optarg ;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
srcdir=$ac_optarg ;;
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
| --syscon | --sysco | --sysc | --sys | --sy)
ac_prev=sysconfdir ;;
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
sysconfdir=$ac_optarg ;;
-target | --target | --targe | --targ | --tar | --ta | --t)
ac_prev=target_alias ;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
target_alias=$ac_optarg ;;
-v | -verbose | --verbose | --verbos | --verbo | --verb)
verbose=yes ;;
-version | --version | --versio | --versi | --vers | -V)
ac_init_version=: ;;
-with-* | --with-*)
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
"*) ;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval with_$ac_useropt=\$ac_optarg ;;
-without-* | --without-*)
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
"*) ;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval with_$ac_useropt=no ;;
--x)
# Obsolete; use --with-x.
with_x=yes ;;
-x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
| --x-incl | --x-inc | --x-in | --x-i)
ac_prev=x_includes ;;
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
x_includes=$ac_optarg ;;
-x-libraries | --x-libraries | --x-librarie | --x-librari \
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
ac_prev=x_libraries ;;
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries=$ac_optarg ;;
-*) as_fn_error $? "unrecognized option: \`$ac_option'
Try \`$0 --help' for more information"
;;
*=*)
ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
# Reject names that are not valid shell variable names.
case $ac_envvar in #(
'' | [0-9]* | *[!_$as_cr_alnum]* )
as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
esac
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
*)
# FIXME: should be removed in autoconf 3.0.
$as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
$as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
esac
done
if test -n "$ac_prev"; then
ac_option=--`echo $ac_prev | sed 's/_/-/g'`
as_fn_error $? "missing argument to $ac_option"
fi
if test -n "$ac_unrecognized_opts"; then
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
*) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
# Check all directory arguments for consistency.
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
case $ac_val in
*/ )
ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
eval $ac_var=\$ac_val;;
esac
# Be sure to have absolute directory names.
case $ac_val in
[\\/$]* | ?:[\\/]* ) continue;;
NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
esac
as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
done
# There might be people who depend on the old broken behavior: `$host'
# used to hold the argument of --host etc.
# FIXME: To remove some day.
build=$build_alias
host=$host_alias
target=$target_alias
# FIXME: To remove some day.
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
fi
ac_tool_prefix=
test -n "$host_alias" && ac_tool_prefix=$host_alias-
test "$silent" = yes && exec 6>/dev/null
ac_pwd=`pwd` && test -n "$ac_pwd" &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
as_fn_error $? "working directory cannot be determined"
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
as_fn_error $? "pwd does not report name of working directory"
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then the parent directory.
ac_confdir=`$as_dirname -- "$as_myself" ||
$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_myself" : 'X\(//\)[^/]' \| \
X"$as_myself" : 'X\(//\)$' \| \
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
srcdir=$ac_confdir
if test ! -r "$srcdir/$ac_unique_file"; then
srcdir=..
fi
else
ac_srcdir_defaulted=no
fi
if test ! -r "$srcdir/$ac_unique_file"; then
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
fi
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
ac_abs_confdir=`(
cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
pwd)`
# When building in place, set srcdir=.
if test "$ac_abs_confdir" = "$ac_pwd"; then
srcdir=.
fi
# Remove unnecessary trailing slashes from srcdir.
# Double slashes in file names in object file debugging info
# mess up M-x gdb in Emacs.
case $srcdir in
*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
esac
for ac_var in $ac_precious_vars; do
eval ac_env_${ac_var}_set=\${${ac_var}+set}
eval ac_env_${ac_var}_value=\$${ac_var}
eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
eval ac_cv_env_${ac_var}_value=\$${ac_var}
done
#
# Report the --help message.
#
if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures Caspar 20220907 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print \`checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for \`--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or \`..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
an installation prefix other than \`$ac_default_prefix' using \`--prefix',
for instance \`--prefix=\$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/caspar]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]
_ACEOF
cat <<\_ACEOF
Program names:
--program-prefix=PREFIX prepend PREFIX to installed program names
--program-suffix=SUFFIX append SUFFIX to installed program names
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
_ACEOF
fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of Caspar 20220907:";;
esac
cat <<\_ACEOF
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-silent-rules less verbose build output (undo: "make V=1")
--disable-silent-rules verbose build output (undo: "make V=0")
Report bugs to .
_ACEOF
ac_status=$?
fi
if test "$ac_init_help" = "recursive"; then
# If there are subdirs, report their specific --help.
for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
test -d "$ac_dir" ||
{ cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
continue
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
esac ;;
esac
ac_abs_top_builddir=$ac_pwd
ac_abs_builddir=$ac_pwd$ac_dir_suffix
# for backward compatibility:
ac_top_builddir=$ac_top_build_prefix
case $srcdir in
.) # We are building in place.
ac_srcdir=.
ac_top_srcdir=$ac_top_builddir_sub
ac_abs_top_srcdir=$ac_pwd ;;
[\\/]* | ?:[\\/]* ) # Absolute name.
ac_srcdir=$srcdir$ac_dir_suffix;
ac_top_srcdir=$srcdir
ac_abs_top_srcdir=$srcdir ;;
*) # Relative name.
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_build_prefix$srcdir
ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
cd "$ac_dir" || { ac_status=$?; continue; }
# Check for guested configure.
if test -f "$ac_srcdir/configure.gnu"; then
echo &&
$SHELL "$ac_srcdir/configure.gnu" --help=recursive
elif test -f "$ac_srcdir/configure"; then
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
Caspar configure 20220907
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Joost van Baal
Copyright (C) 2012, 2013, 2014, 2017, 2018, 2020, 2022 Joost van Baal-Ilić
_ACEOF
exit
fi
## ------------------------ ##
## Autoconf initialization. ##
## ------------------------ ##
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by Caspar $as_me 20220907, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
_ACEOF
exec 5>>config.log
{
cat <<_ASUNAME
## --------- ##
## Platform. ##
## --------- ##
hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`
/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
_ASUNAME
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
$as_echo "PATH: $as_dir"
done
IFS=$as_save_IFS
} >&5
cat >&5 <<_ACEOF
## ----------- ##
## Core tests. ##
## ----------- ##
_ACEOF
# Keep a trace of the command line.
# Strip out --no-create and --no-recursion so they do not pile up.
# Strip out --silent because we don't want to record it for future runs.
# Also quote any args containing shell meta-characters.
# Make two passes to allow for proper duplicate-argument suppression.
ac_configure_args=
ac_configure_args0=
ac_configure_args1=
ac_must_keep_next=false
for ac_pass in 1 2
do
for ac_arg
do
case $ac_arg in
-no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
2)
as_fn_append ac_configure_args1 " '$ac_arg'"
if test $ac_must_keep_next = true; then
ac_must_keep_next=false # Got value, back to normal.
else
case $ac_arg in
*=* | --config-cache | -C | -disable-* | --disable-* \
| -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
| -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
| -with-* | --with-* | -without-* | --without-* | --x)
case "$ac_configure_args0 " in
"$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
esac
;;
-* ) ac_must_keep_next=true ;;
esac
fi
as_fn_append ac_configure_args " '$ac_arg'"
;;
esac
done
done
{ ac_configure_args0=; unset ac_configure_args0;}
{ ac_configure_args1=; unset ac_configure_args1;}
# When interrupted or exit'd, cleanup temporary files, and complete
# config.log. We remove comments because anyway the quotes in there
# would cause problems or look ugly.
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
# Save into config.log some information that might help in debugging.
{
echo
$as_echo "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
echo
# The following way of writing the cache mishandles newlines in values,
(
for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
eval ac_val=\$$ac_var
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
*_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
*) { eval $ac_var=; unset $ac_var;} ;;
esac ;;
esac
done
(set) 2>&1 |
case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
*${as_nl}ac_space=\ *)
sed -n \
"s/'\''/'\''\\\\'\'''\''/g;
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
;; #(
*)
sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
;;
esac |
sort
)
echo
$as_echo "## ----------------- ##
## Output variables. ##
## ----------------- ##"
echo
for ac_var in $ac_subst_vars
do
eval ac_val=\$$ac_var
case $ac_val in
*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
$as_echo "$ac_var='\''$ac_val'\''"
done | sort
echo
if test -n "$ac_subst_files"; then
$as_echo "## ------------------- ##
## File substitutions. ##
## ------------------- ##"
echo
for ac_var in $ac_subst_files
do
eval ac_val=\$$ac_var
case $ac_val in
*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
$as_echo "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
if test -s confdefs.h; then
$as_echo "## ----------- ##
## confdefs.h. ##
## ----------- ##"
echo
cat confdefs.h
echo
fi
test "$ac_signal" != 0 &&
$as_echo "$as_me: caught signal $ac_signal"
$as_echo "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
exit $exit_status
' 0
for ac_signal in 1 2 13 15; do
trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
done
ac_signal=0
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
$as_echo "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
cat >>confdefs.h <<_ACEOF
#define PACKAGE_NAME "$PACKAGE_NAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_VERSION "$PACKAGE_VERSION"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_STRING "$PACKAGE_STRING"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_URL "$PACKAGE_URL"
_ACEOF
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
ac_site_file1=NONE
ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
# We do not want a PATH search for config.site.
case $CONFIG_SITE in #((
-*) ac_site_file1=./$CONFIG_SITE;;
*/*) ac_site_file1=$CONFIG_SITE;;
*) ac_site_file1=./$CONFIG_SITE;;
esac
elif test "x$prefix" != xNONE; then
ac_site_file1=$prefix/share/config.site
ac_site_file2=$prefix/etc/config.site
else
ac_site_file1=$ac_default_prefix/share/config.site
ac_site_file2=$ac_default_prefix/etc/config.site
fi
for ac_site_file in "$ac_site_file1" "$ac_site_file2"
do
test "x$ac_site_file" = xNONE && continue
if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
$as_echo "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
|| { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See \`config.log' for more details" "$LINENO" 5; }
fi
done
if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
$as_echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
$as_echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
for ac_var in $ac_precious_vars; do
eval ac_old_set=\$ac_cv_env_${ac_var}_set
eval ac_new_set=\$ac_env_${ac_var}_set
eval ac_old_val=\$ac_cv_env_${ac_var}_value
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
# differences in whitespace do not lead to failure.
ac_old_val_w=`echo x $ac_old_val`
ac_new_val_w=`echo x $ac_new_val`
if test "$ac_old_val_w" != "$ac_new_val_w"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
ac_cache_corrupted=:
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
eval $ac_var=\$ac_old_val
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
*\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
*" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
*) as_fn_append ac_configure_args " '$ac_arg'" ;;
esac
fi
done
if $ac_cache_corrupted; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
## -------------------- ##
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
am__api_version='1.16'
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
if test -f "$ac_dir/install-sh"; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install-sh -c"
break
elif test -f "$ac_dir/install.sh"; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install.sh -c"
break
elif test -f "$ac_dir/shtool"; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/shtool install -c"
break
fi
done
if test -z "$ac_aux_dir"; then
as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
fi
# These three variables are undocumented and unsupported,
# and are intended to be withdrawn in a future Autoconf release.
# They can cause serious problems if a builder's source tree is in a directory
# whose full name contains unusual characters.
ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
# incompatible versions:
# SysV /etc/install, /usr/sbin/install
# SunOS /usr/etc/install
# IRIX /sbin/install
# AIX /bin/install
# AmigaOS /C/install, which installs bootblocks on floppy discs
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
# Reject install programs that cannot install multiple files.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
$as_echo_n "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
if ${ac_cv_path_install+:} false; then :
$as_echo_n "(cached) " >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
# Account for people who put trailing slashes in PATH elements.
case $as_dir/ in #((
./ | .// | /[cC]/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
/usr/ucb/* ) ;;
*)
# OSF1 and SCO ODT 3.0 have their own names for install.
# Don't use installbsd from OSF since it installs stuff as root
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
elif test $ac_prog = install &&
grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# program-specific install script used by HP pwplus--don't use.
:
else
rm -rf conftest.one conftest.two conftest.dir
echo one > conftest.one
echo two > conftest.two
mkdir conftest.dir
if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
test -s conftest.one && test -s conftest.two &&
test -s conftest.dir/conftest.one &&
test -s conftest.dir/conftest.two
then
ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
break 3
fi
fi
fi
done
done
;;
esac
done
IFS=$as_save_IFS
rm -rf conftest.one conftest.two conftest.dir
fi
if test "${ac_cv_path_install+set}" = set; then
INSTALL=$ac_cv_path_install
else
# As a last resort, use the slow shell script. Don't cache a
# value for INSTALL within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
INSTALL=$ac_install_sh
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
$as_echo "$INSTALL" >&6; }
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
$as_echo_n "checking whether build environment is sane... " >&6; }
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
'
case `pwd` in
*[\\\"\#\$\&\'\`$am_lf]*)
as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
esac
case $srcdir in
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
esac
# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
am_has_slept=no
for am_try in 1 2; do
echo "timestamp, slept: $am_has_slept" > conftest.file
set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
if test "$*" = "X"; then
# -L didn't work.
set X `ls -t "$srcdir/configure" conftest.file`
fi
if test "$*" != "X $srcdir/configure conftest.file" \
&& test "$*" != "X conftest.file $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
alias in your environment" "$LINENO" 5
fi
if test "$2" = conftest.file || test $am_try -eq 2; then
break
fi
# Just in case.
sleep 1
am_has_slept=yes
done
test "$2" = conftest.file
)
then
# Ok.
:
else
as_fn_error $? "newly created file is older than distributed files!
Check your system clock" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
# If we didn't sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
if grep 'slept: no' conftest.file >/dev/null 2>&1; then
( sleep 1 ) &
am_sleep_pid=$!
fi
rm -f conftest.file
test "$program_prefix" != NONE &&
program_transform_name="s&^&$program_prefix&;$program_transform_name"
# Use a double $ so make ignores it.
test "$program_suffix" != NONE &&
program_transform_name="s&\$&$program_suffix&;$program_transform_name"
# Double any \ or $.
# By default was `s,x,x', remove it if useless.
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
# Expand $ac_aux_dir to an absolute path.
am_aux_dir=`cd "$ac_aux_dir" && pwd`
if test x"${MISSING+set}" != xset; then
MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
am_missing_run="$MISSING "
else
am_missing_run=
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
*)
install_sh="\${SHELL} $am_aux_dir/install-sh"
esac
fi
# Installed binaries are usually stripped using 'strip' when the user
# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the 'STRIP' environment variable to overrule this program.
if test "$cross_compiling" != no; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_STRIP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$STRIP"; then
ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
$as_echo "$STRIP" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
if test -z "$ac_cv_prog_STRIP"; then
ac_ct_STRIP=$STRIP
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_STRIP"; then
ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
$as_echo "$ac_ct_STRIP" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test "x$ac_ct_STRIP" = x; then
STRIP=":"
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_ct_STRIP
fi
else
STRIP="$ac_cv_prog_STRIP"
fi
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
if ${ac_cv_path_mkdir+:} false; then :
$as_echo_n "(cached) " >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
'mkdir (GNU coreutils) '* | \
'mkdir (coreutils) '* | \
'mkdir (fileutils) '4.1*)
ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
break 3;;
esac
done
done
done
IFS=$as_save_IFS
fi
test -d ./--version && rmdir ./--version
if test "${ac_cv_path_mkdir+set}" = set; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
# As a last resort, use the slow shell script. Don't cache a
# value for MKDIR_P within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
MKDIR_P="$ac_install_sh -d"
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
$as_echo "$MKDIR_P" >&6; }
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AWK+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
$as_echo "$AWK" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
test -n "$AWK" && break
done
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
$as_echo_n "(cached) " >&6
else
cat >conftest.make <<\_ACEOF
SHELL = /bin/sh
all:
@echo '@@@%%%=$(MAKE)=@@@%%%'
_ACEOF
# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
case `${MAKE-make} -f conftest.make 2>/dev/null` in
*@@@%%%=?*=@@@%%%*)
eval ac_cv_prog_make_${ac_make}_set=yes;;
*)
eval ac_cv_prog_make_${ac_make}_set=no;;
esac
rm -f conftest.make
fi
if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
SET_MAKE=
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
SET_MAKE="MAKE=${MAKE-make}"
fi
rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
if test -d .tst; then
am__leading_dot=.
else
am__leading_dot=_
fi
rmdir .tst 2>/dev/null
# Check whether --enable-silent-rules was given.
if test "${enable_silent_rules+set}" = set; then :
enableval=$enable_silent_rules;
fi
case $enable_silent_rules in # (((
yes) AM_DEFAULT_VERBOSITY=0;;
no) AM_DEFAULT_VERBOSITY=1;;
*) AM_DEFAULT_VERBOSITY=1;;
esac
am_make=${MAKE-make}
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
if ${am_cv_make_support_nested_variables+:} false; then :
$as_echo_n "(cached) " >&6
else
if $as_echo 'TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am__doit:
@$(TRUE)
.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
am_cv_make_support_nested_variables=yes
else
am_cv_make_support_nested_variables=no
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
$as_echo "$am_cv_make_support_nested_variables" >&6; }
if test $am_cv_make_support_nested_variables = yes; then
AM_V='$(V)'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
else
AM_V=$AM_DEFAULT_VERBOSITY
AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
fi
AM_BACKSLASH='\'
if test "`cd $srcdir && pwd`" != "`pwd`"; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
# is not polluted with repeated "-I."
am__isrc=' -I$(srcdir)'
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
fi
fi
# test whether we have cygpath
if test -z "$CYGPATH_W"; then
if (cygpath --version) >/dev/null 2>/dev/null; then
CYGPATH_W='cygpath -w'
else
CYGPATH_W=echo
fi
fi
# Define the identity of the package.
PACKAGE='caspar'
VERSION='20220907'
cat >>confdefs.h <<_ACEOF
#define PACKAGE "$PACKAGE"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define VERSION "$VERSION"
_ACEOF
# Some tools Automake needs.
ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
#
#
mkdir_p='$(MKDIR_P)'
# We need awk for the "check" target (and possibly the TAP driver). The
# system "awk" is bad on some platforms.
# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar pax cpio none'
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
# POSIX will say in a future version that running "rm -f" with no argument
# is OK; and we want to be able to make that assumption in our Makefile
# recipes. So use an aggressive probe to check that the usage we want is
# actually supported "in the wild" to an acceptable degree.
# See automake bug#10828.
# To make any issue more visible, cause the running configure to be aborted
# by default if the 'rm' program in use doesn't match our expectations; the
# user can still override this though.
if rm -f && rm -fr && rm -rf; then : OK; else
cat >&2 <<'END'
Oops!
Your 'rm' program seems unable to run without file operands specified
on the command line, even when the '-f' option is present. This is contrary
to the behaviour of most rm programs out there, and not conforming with
the upcoming POSIX standard:
Please tell bug-automake@gnu.org about your system, including the value
of your $PATH and any error possibly output before this message. This
can help us improve future automake versions.
END
if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
echo 'Configuration will proceed anyway, since you have set the' >&2
echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
echo >&2
else
cat >&2 <<'END'
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
that behaves properly: .
If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
to "yes", and re-run configure.
END
as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
$as_echo_n "checking whether ln -s works... " >&6; }
LN_S=$as_ln_s
if test "$LN_S" = "ln -s"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
$as_echo "no, using $LN_S" >&6; }
fi
ac_config_files="$ac_config_files Makefile doc/Makefile mk/Makefile sgml/Makefile script/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
# scripts and configure runs, see configure's option --config-cache.
# It is not useful on other systems. If it contains results you don't
# want to keep, you may remove or edit it.
#
# config.status only pays attention to the cache file if you give it
# the --recheck option to rerun configure.
#
# `ac_cv_env_foo' variables (set or unset) will be overridden when
# loading this file, other *unset* `ac_cv_foo' will be assigned the
# following values.
_ACEOF
# The following way of writing the cache mishandles newlines in values,
# but we know of no workaround that is simple, portable, and efficient.
# So, we kill variables containing newlines.
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
(
for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
eval ac_val=\$$ac_var
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
*_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
*) { eval $ac_var=; unset $ac_var;} ;;
esac ;;
esac
done
(set) 2>&1 |
case $as_nl`(ac_space=' '; set) 2>&1` in #(
*${as_nl}ac_space=\ *)
# `set' does not quote correctly, so add quotes: double-quote
# substitution turns \\\\ into \\, and sed turns \\ into \.
sed -n \
"s/'/'\\\\''/g;
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
;; #(
*)
# `set' quotes correctly as required by POSIX, so do not add quotes.
sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
;;
esac |
sort
) |
sed '
/^ac_cv_env_/b end
t clear
:clear
s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
t end
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
if test "x$cache_file" != "x/dev/null"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
$as_echo "$as_me: updating cache $cache_file" >&6;}
if test ! -f "$cache_file" || test -h "$cache_file"; then
cat confcache >"$cache_file"
else
case $cache_file in #(
*/* | ?:*)
mv -f confcache "$cache_file"$$ &&
mv -f "$cache_file"$$ "$cache_file" ;; #(
*)
mv -f confcache "$cache_file" ;;
esac
fi
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
test "x$prefix" = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
# Transform confdefs.h into DEFS.
# Protect against shell expansion while executing Makefile rules.
# Protect against Makefile macro expansion.
#
# If the first sed substitution is executed (which looks for macros that
# take arguments), then branch to the quote section. Otherwise,
# look for a macro that doesn't take arguments.
ac_script='
:mline
/\\$/{
N
s,\\\n,,
b mline
}
t clear
:clear
s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
t quote
s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
t quote
b any
:quote
s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
s/\[/\\&/g
s/\]/\\&/g
s/\$/$$/g
H
:any
${
g
s/^\n//
s/\n/ /g
p
}
'
DEFS=`sed -n "$ac_script" confdefs.h`
ac_libobjs=
ac_ltlibobjs=
U=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
done
LIBOBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
$as_echo_n "checking that generated files are newer than configure... " >&6; }
if test -n "$am_sleep_pid"; then
# Hide warnings about reused PIDs.
wait $am_sleep_pid 2>/dev/null
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
$as_echo "done" >&6; }
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
as_write_fail=0
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
# Generated by $as_me.
# Run this file to recreate the current configuration.
# Compiler output produced by configure, useful for debugging
# configure, is in config.log if it exists.
debug=false
ac_cs_recheck=false
ac_cs_silent=false
SHELL=\${CONFIG_SHELL-$SHELL}
export SHELL
_ASEOF
cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
esac
fi
as_nl='
'
export as_nl
# Printing a long string crashes Solaris 7 /usr/bin/printf.
as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
# Prefer a ksh shell builtin over an external printf program on Solaris,
# but without wasting forks for bash or zsh.
if test -z "$BASH_VERSION$ZSH_VERSION" \
&& (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
as_echo='print -r --'
as_echo_n='print -rn --'
elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
as_echo='printf %s\n'
as_echo_n='printf %s'
else
if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
as_echo_n='/usr/ucb/echo -n'
else
as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
as_echo_n_body='eval
arg=$1;
case $arg in #(
*"$as_nl"*)
expr "X$arg" : "X\\(.*\\)$as_nl";
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
esac;
expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
'
export as_echo_n_body
as_echo_n='sh -c $as_echo_n_body as_echo'
fi
export as_echo_body
as_echo='sh -c $as_echo_body as_echo'
fi
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
PATH_SEPARATOR=';'
}
fi
# IFS
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
done
IFS=$as_save_IFS
;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
$as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
# Unset variables that we do not need and which cause bugs (e.g. in
# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
# suppresses any "Segmentation fault" message there. '((' could
# trigger a bug in pdksh 5.2.14.
for as_var in BASH_ENV ENV MAIL MAILPATH
do eval test x\${$as_var+set} = xset \
&& ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done
PS1='$ '
PS2='> '
PS4='+ '
# NLS nuisances.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
$as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
$as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
return $1
} # as_fn_set_status
# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
} # as_fn_exit
# as_fn_unset VAR
# ---------------
# Portably unset VAR.
as_fn_unset ()
{
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
else
as_fn_append ()
{
eval $1=\$$1\$2
}
fi # as_fn_append
# as_fn_arith ARG...
# ------------------
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
else
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
as_expr=expr
else
as_expr=false
fi
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
as_basename=basename
else
as_basename=false
fi
if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
as_dirname=dirname
else
as_dirname=false
fi
as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
}
/^X\/\(\/\/\)$/{
s//\1/
q
}
/^X\/\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
case `echo 'xy\c'` in
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
xy) ECHO_C='\c';;
*) echo `echo ksh88 bug on AIX 6.1` > /dev/null
ECHO_T=' ';;
esac;;
*)
ECHO_N='-n';;
esac
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
if ln -s conf$$.file conf$$ 2>/dev/null; then
as_ln_s='ln -s'
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
# In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -pR'
fi
else
as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
# as_fn_mkdir_p
# -------------
# Create "$as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{
case $as_dir in #(
-*) as_dir=./$as_dir;;
esac
test -d "$as_dir" || eval $as_mkdir_p || {
as_dirs=
while :; do
case $as_dir in #(
*\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
} || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
} # as_fn_mkdir_p
if mkdir -p . 2>/dev/null; then
as_mkdir_p='mkdir -p "$as_dir"'
else
test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f "$1" && test -x "$1"
} # as_fn_executable_p
as_test_x='test -x'
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
exec 6>&1
## ----------------------------------- ##
## Main body of $CONFIG_STATUS script. ##
## ----------------------------------- ##
_ASEOF
test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Save the log message, to keep $0 and so on meaningful, and to
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by Caspar $as_me 20220907, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
CONFIG_COMMANDS = $CONFIG_COMMANDS
$ $0 $@
on `(hostname || uname -n) 2>/dev/null | sed 1q`
"
_ACEOF
case $ac_config_files in *"
"*) set x $ac_config_files; shift; ac_config_files=$*;;
esac
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# Files that config.status was made for.
config_files="$ac_config_files"
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
ac_cs_usage="\
\`$as_me' instantiates files and other configuration actions
from templates according to the current configuration. Unless the files
and actions are specified as TAGs, all are instantiated by default.
Usage: $0 [OPTION]... [TAG]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
--config print configuration, then exit
-q, --quiet, --silent
do not print progress messages
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
--file=FILE[:TEMPLATE]
instantiate the configuration file FILE
Configuration files:
$config_files
Report bugs to ."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
Caspar config.status 20220907
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
INSTALL='$INSTALL'
MKDIR_P='$MKDIR_P'
AWK='$AWK'
test -n "\$AWK" || AWK=awk
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# The default lists apply if the user does not specify any file.
ac_need_defaults=:
while test $# != 0
do
case $1 in
--*=?*)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
ac_shift=:
;;
--*=)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=
ac_shift=:
;;
*)
ac_option=$1
ac_optarg=$2
ac_shift=shift
;;
esac
case $ac_option in
# Handling of the options.
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
$as_echo "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
$as_echo "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
'') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
ac_need_defaults=false;;
--he | --h | --help | --hel | -h )
$as_echo "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
# This is an error.
-*) as_fn_error $? "unrecognized option: \`$1'
Try \`$0 --help' for more information." ;;
*) as_fn_append ac_config_targets " $1"
ac_need_defaults=false ;;
esac
shift
done
ac_configure_extra_args=
if $ac_cs_silent; then
exec 6>/dev/null
ac_configure_extra_args="$ac_configure_extra_args --silent"
fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
exec "\$@"
fi
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
exec 5>>config.log
{
echo
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
$as_echo "$ac_log"
} >&5
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Handling of arguments.
for ac_config_target in $ac_config_targets
do
case $ac_config_target in
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
"mk/Makefile") CONFIG_FILES="$CONFIG_FILES mk/Makefile" ;;
"sgml/Makefile") CONFIG_FILES="$CONFIG_FILES sgml/Makefile" ;;
"script/Makefile") CONFIG_FILES="$CONFIG_FILES script/Makefile" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
done
# If the user did not use the arguments to specify the items to instantiate,
# then the envvar interface is used. Set only those that are not.
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
fi
# Have a temporary directory for convenience. Make it in the build tree
# simply because there is no reason against having it here, and in addition,
# creating and moving files from /tmp can sometimes cause problems.
# Hook for its removal unless debugging.
# Note that there is a small window in which the directory will not be cleaned:
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
tmp= ac_tmp=
trap 'exit_status=$?
: "${ac_tmp:=$tmp}"
{ test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
' 0
trap 'as_fn_exit 1' 1 2 13 15
}
# Create a (secure) tmp directory for tmp files.
{
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
test -d "$tmp"
} ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir "$tmp")
} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
ac_tmp=$tmp
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
# This happens for instance with `./config.status config.h'.
if test -n "$CONFIG_FILES"; then
ac_cr=`echo X | tr X '\015'`
# On cygwin, bash can eat \r inside `` if the user requested igncr.
# But we know of no other shell where ac_cr would be empty at this
# point, so we can use a bashism as a fallback.
if test "x$ac_cr" = x; then
eval ac_cr=\$\'\\r\'
fi
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null`
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
ac_cs_awk_cr='\\r'
else
ac_cs_awk_cr=$ac_cr
fi
echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
_ACEOF
{
echo "cat >conf$$subs.awk <<_ACEOF" &&
echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
echo "_ACEOF"
} >conf$$subs.sh ||
as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
. ./conf$$subs.sh ||
as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
if test $ac_delim_n = $ac_delim_num; then
break
elif $ac_last_try; then
as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
done
rm -f conf$$subs.sh
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
_ACEOF
sed -n '
h
s/^/S["/; s/!.*/"]=/
p
g
s/^[^!]*!//
:repl
t repl
s/'"$ac_delim"'$//
t delim
:nl
h
s/\(.\{148\}\)..*/\1/
t more1
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
p
n
b repl
:more1
s/["\\]/\\&/g; s/^/"/; s/$/"\\/
p
g
s/.\{148\}//
t nl
:delim
h
s/\(.\{148\}\)..*/\1/
t more2
s/["\\]/\\&/g; s/^/"/; s/$/"/
p
b
:more2
s/["\\]/\\&/g; s/^/"/; s/$/"\\/
p
g
s/.\{148\}//
t delim
' >$CONFIG_STATUS || ac_write_fail=1
rm -f conf$$subs.awk
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
for (key in S) S_is_set[key] = 1
FS = ""
}
{
line = $ 0
nfields = split(line, field, "@")
substed = 0
len = length(field[1])
for (i = 2; i < nfields; i++) {
key = field[i]
keylen = length(key)
if (S_is_set[key]) {
value = S[key]
line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
len += length(value) + length(field[++i])
substed = 1
} else
len += 1 + keylen
}
print line
}
_ACAWK
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
else
cat
fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
|| as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF
# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
h
s///
s/^/:/
s/[ ]*$/:/
s/:\$(srcdir):/:/g
s/:\${srcdir}:/:/g
s/:@srcdir@:/:/g
s/^:*//
s/:*$//
x
s/\(=[ ]*\).*/\1/
G
s/\n//
s/^[^=]*=[ ]*$//
}'
fi
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
fi # test -n "$CONFIG_FILES"
eval set X " :F $CONFIG_FILES "
shift
for ac_tag
do
case $ac_tag in
:[FHLC]) ac_mode=$ac_tag; continue;;
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
:L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
ac_save_IFS=$IFS
IFS=:
set x $ac_tag
IFS=$ac_save_IFS
shift
ac_file=$1
shift
case $ac_mode in
:L) ac_source=$1;;
:[FH])
ac_file_inputs=
for ac_f
do
case $ac_f in
-) ac_f="$ac_tmp/stdin";;
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
# because $ac_f cannot contain `:'.
test -f "$ac_f" ||
case $ac_f in
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
$as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
`' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
$as_echo "$as_me: creating $ac_file" >&6;}
fi
# Neutralize special characters interpreted by sed in replacement strings.
case $configure_input in #(
*\&* | *\|* | *\\* )
ac_sed_conf_input=`$as_echo "$configure_input" |
sed 's/[\\\\&|]/\\\\&/g'`;; #(
*) ac_sed_conf_input=$configure_input;;
esac
case $ac_tag in
*:-:* | *:-) cat >"$ac_tmp/stdin" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
esac
;;
esac
ac_dir=`$as_dirname -- "$ac_file" ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
as_dir="$ac_dir"; as_fn_mkdir_p
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
esac ;;
esac
ac_abs_top_builddir=$ac_pwd
ac_abs_builddir=$ac_pwd$ac_dir_suffix
# for backward compatibility:
ac_top_builddir=$ac_top_build_prefix
case $srcdir in
.) # We are building in place.
ac_srcdir=.
ac_top_srcdir=$ac_top_builddir_sub
ac_abs_top_srcdir=$ac_pwd ;;
[\\/]* | ?:[\\/]* ) # Absolute name.
ac_srcdir=$srcdir$ac_dir_suffix;
ac_top_srcdir=$srcdir
ac_abs_top_srcdir=$srcdir ;;
*) # Relative name.
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_build_prefix$srcdir
ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
case $ac_mode in
:F)
#
# CONFIG_FILE
#
case $INSTALL in
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
esac
ac_MKDIR_P=$MKDIR_P
case $MKDIR_P in
[\\/$]* | ?:[\\/]* ) ;;
*/*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
esac
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# If the template does not know about datarootdir, expand it.
# FIXME: This hack should be removed a few years after 2.60.
ac_datarootdir_hack=; ac_datarootdir_seen=
ac_sed_dataroot='
/datarootdir/ {
p
q
}
/@datadir@/p
/@docdir@/p
/@infodir@/p
/@localedir@/p
/@mandir@/p'
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
s&@datadir@&$datadir&g
s&@docdir@&$docdir&g
s&@infodir@&$infodir&g
s&@localedir@&$localedir&g
s&@mandir@&$mandir&g
s&\\\${datarootdir}&$datarootdir&g' ;;
esac
_ACEOF
# Neutralize VPATH when `$srcdir' = `.'.
# Shell code in configure.ac might set extrasub.
# FIXME: do we really want to maintain this feature?
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_sed_extra="$ac_vpsub
$extrasub
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
s|@configure_input@|$ac_sed_conf_input|;t t
s&@top_builddir@&$ac_top_builddir_sub&;t t
s&@top_build_prefix@&$ac_top_build_prefix&;t t
s&@srcdir@&$ac_srcdir&;t t
s&@abs_srcdir@&$ac_abs_srcdir&;t t
s&@top_srcdir@&$ac_top_srcdir&;t t
s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
s&@builddir@&$ac_builddir&;t t
s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
s&@INSTALL@&$ac_INSTALL&;t t
s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
>$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
"$ac_tmp/out"`; test -z "$ac_out"; } &&
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$ac_tmp/stdin"
case $ac_file in
-) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
*) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
esac \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
;;
esac
done # for ac_tag
as_fn_exit 0
_ACEOF
ac_clean_files=$ac_clean_files_save
test $ac_write_fail = 0 ||
as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
# configure is writing to config.log, and then calls config.status.
# config.status does its own redirection, appending to config.log.
# Unfortunately, on DOS this fails, as config.log is still kept open
# by configure, so config.status won't be able to write to it; its
# output is simply discarded. So we exec the FD to /dev/null,
# effectively closing config.log, so it can be properly (re)opened and
# appended to by config.status. When coming back to configure, we
# need to make the FD available again.
if test "$no_create" != yes; then
ac_cs_success=:
ac_config_status_args=
test "$silent" = yes &&
ac_config_status_args="$ac_config_status_args --quiet"
exec 5>/dev/null
$SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
$ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
caspar-20220907/TODO 0000644 0001750 0001750 00000035545 14306130061 010651 0000000 0000000 # This file is maintained at http://git.mdcc.cx/caspar
document this:
this:
mkdir d; cd d; touch foo.pod
echo 'include caspar/mk/pod.mk' | make -f - -n
gives:
pod2text foo.pod foo.txt
[...]
pod2pdf foo.pod > foo.pdf
refer to pandoc in description: superset of caspar-typesetting
(((
this one got closed on сре, 7. сеп 2022. 16:52:18 CEST :
Debian Bug report logs - #835408
caspar: does not behave as documented: sshd_config-load = ssh $1 [...] (was: Re: Bug in documentatie van caspar #2 (ter info))
Date: Thu, 25 Aug 2016 12:03:02 UTC
From: Joost van Baal-Ilić
Package: caspar
Severity: normal
Tag: upstream
Hi Maarten,
On Thu, Aug 25, 2016 at 12:11:31PM +0200, Maarten Horden wrote:
> On 08/23/2016 05:17 PM, Maarten Horden wrote:
> >
> > Er zit een bug in je documentatie van caspar (gekopieerd van
> > http://mdcc.cx/pub/caspar/caspar-latest/doc/caspar.html):
> >
> > /*
> > Combining the csp_LOAD target with multiple hosts; building files remotely
> > You'll have to loop over csp_UHOSTS to execute load-command. Here's an
> > example doing some preprocessing on the remote hosts too.
> >
> > csp_DIR = /etc/ssh/
> > csp_UHOSTS = root@some.host.somewhere root@some.other.host
> > csp_LOAD = sshd_config-load
> > sshd_config-load = ssh $1 "cd $(csp_DIR); \
> > m4 sshd_config.m4 >sshd_config && \
> > PATH=$$PATH:/sbin /etc/init.d/ssh restart"
> > include caspar/mk/caspar.mk
>
> Bovenstaand voorbeeld met $ssh werkt *niet*, onderstaand voorbeeld werkt
> *wel*:
>
> > (Alternatively, you could explicitly specify the loop over the hosts:
> >
> > csp_DIR = /etc/ssh/
> > sshd_config-load:
> > for suh in $(csp_UHOSTS); do \
> > ssh $$suh "cd $(csp_DIR); \
> > m4 sshd_config.m4 > sshd_config && \
> > PATH=$$PATH:/sbin /etc/init.d/ssh restart"; \
> > done
> > ).
> > */
>
> Zoals bijvoorbeeld te zien is in:
> ... evj shared/usr/local/share/request-tracker4/po/Makefile>
Excellent example; thanks. Will get fixed, RSN.
Bye,
Joost
------------------------------
Subject: Re: #835408: caspar: does not behave as documented: sshd_config-load [...]
To: 835408-close@bugs.debian.org
Hi Maarten,
"Werkt niet" seems not to be true: it works for me now, here on Debian
GNU/Linux 11 (bullseye) with caspar 20200611-2 . So: sorry, cannot reproduce.
Please reopen if you're still interested in this.
And sorry for this embarassingly late reply...
Bye,
Joost
)))
------------------------
уто, 2. апр 2019.:
create package for arch linux and it's derivates. see
https://wiki.archlinux.org/index.php/Arch_User_Repository#Getting_started
https://wiki.archlinux.org/index.php/Arch_package_guidelines
https://aur.archlinux.org/register/
vi arch/PKGBUILD
to be processed by makepkg to generated a pacman package for arch linux and
derivatives like antergos
as of april 2, we have an account joostvb at aur.archlinux.org
as of сре, 3. апр 2019. 08:48:16 CEST, it only works with:
сре 03 08:46 < vdrvenne> makepkg --skipchecksums --skippgpcheck
сре 03 08:55 < vdrvenne> pacman -U /home/vdrvenne/caspar-20180315-1-any.pkg.tar
ship in doc/examples oid: printallehosts getgroups in its-unix/systems/juptile/include/install.mk
user interface (as of 2016-03-04)
joostvb@incagijs:~/sv...its-unix/systems/juptile% make -f include/install.mk printallehosts | less
link to : https://nulpunt.nu/ caspar users
Patrick "Argure" Godschalk https://github.com/Argure
--- release critical ----
- decide upon scp keep_mode: purge, and suggest scp -p ? it currently
lacks multisupport.
- "make install" fails when csp_PUSH is set to function without multi-support.
fix csp_install: add multisupport (also: keep_mode, sucp. rest might just
work)
- caspar.mk is not completely tested yet, first and second example in manpage
succeed, test 3rd and later.
$ CSP_DEBUG=yes CSP_SUCP_USER=jantje csp_sucp joe@bilbo /etc/ inittab
works fine. "export CSP_SUCP_USER=joe; make" works fine too.
"make CSP_SUCP_USER=joe" works fine too.
csp_SUCP_USER = joe
csp_PUSH = $(csp_sucp_FUNC)
make
works too. at least, it did in release 20120508....
- doc/Makefile.am: no longer ignore errors from tidy(1).
- fix manpage typesetting: install tidy @ buildhost, my name in caspar.ps
looks like crap
- The "csp_install -t dir file [file]" issue
zo 13 17:34 < Fruit> die tooltjes die meegeleverd worden
zo 13 17:35 < Fruit> die hebben typisch een destination directory en een stel
bestanden als argumenten
zo 13 17:35 < Fruit> het zou handig zijn voor de shellscripter als die
destination directory het eerste argument was
zo 13 17:38 < joostvb> das natuurlijk totaal backwards incompatible met alles
zo 13 17:38 < Fruit> valt wel mee
zo 13 17:38 < joostvb> maar iig wel n goed idee
zo 13 17:38 < Fruit> cp -t destdir file1 file2
zo 13 17:38 < joostvb> -t , die doet t m
zo 13 17:38 < Fruit> ik weet niet of scp dat kent
zo 13 17:39 < joostvb> nou ja, als 1ste arg van csp_PUSH -t is, dan
zo 13 17:39 < Fruit> magoe dat maakt ook niet zoveel uit
zo 13 17:39 < joostvb> implementeren volgens nieuw interface
zo 13 17:39 < Fruit> want bij csp_PUSH kun je toch de volgorde van de
argumenten zelf bepalen
zo 13 17:39 < Fruit> hm hacken op -t lijkt me een heel lelijk en slecht idee
zo 13 17:40 < Fruit> je hoeft echt alleen maar die tooltjes aan te passen, en
de plaatsen in caspar zelf waar precies en alleen díe
tooltjes aangeroepen worden
zo 13 17:40 < Fruit> er hoeft geen caspar api-wijziging
zo 13 17:40 < joostvb> en als mensen hun eigen tooltjes geschreven hebben?
zo 13 17:40 < joostvb> hun eigen csp_PUSH gebouwd?
zo 13 17:41 < Fruit> dan hebben ze de aanroep daarvan zelf onder controle
zo 13 17:41 < Fruit> misschien nieuwe set tooltjes introduceren met andere namen
zo 13 17:41 < Fruit> op dit moment accepteert elk van die tooltjes 1 file en 1
dir
zo 13 17:41 < Fruit> da's jammer.
zo 13 17:42 < Fruit> omdat shellscripts een beetje beperkt zijn, is n files
gevolgd door 1 dir moeilijk te implementeren
zo 13 17:42 < joostvb> csp_install dir file [file]
zo 13 17:42 < Fruit> dat idee
zo 13 17:43 < Fruit> csp_mkdirscpomgwtfbbqrofl dir file1 [file2 ...]
zo 13 17:43 < joostvb> ok, dan kan ik maken:
zo 13 17:43 < joostvb> csp_install -t dir file [file]
zo 13 17:43 < joostvb> naast:
zo 13 17:43 < joostvb> csp_install file dir
zo 13 17:43 < joostvb> das backwards compatible
zo 13 17:43 < Fruit> true
zo 13 17:44 < joostvb> en over 5 jaar wordt "-t" optioneel
zo 13 17:44 < Fruit> en je kunt geen files meer installeren die ‘-t’ heten.
zo 13 17:44 < joostvb> klopt
zo 13 17:44 < joostvb> fuk die mensen
zo 13 17:44 < joostvb> :)
zo 13 17:44 < Fruit> maar robuust gedrag met spaties en andere tekens in
bestandsnamen is nooit een sterk punt van caspar geweest.
zo 13 17:44 < joostvb> pcies
zo 13 17:44 < joostvb> van make ook niet
zo 13 17:45 < Fruit> ja! fuk die mensen. alle bestanden moeten gewoon foo.txt
heten. en die hippies met hun bar.txt kunnen de boom in
zo 13 17:45 < joostvb> zo is t maar net
0.-3) add to documentation:
vr 25 16:37 < casper> bah, maar het werkt wel, de reverse cowboy: make diff |
patch -R -p0
[16:43] [joostvb(+i)] [3:#root(+ips)] irc.uvt.nl
0.-2) fix FIXME's in doc/caspar.azm
0.-1) complete documentation of "make diff" and "make -diff" in
caspar.azm, see NEWS (not trivial...)
1.1) finish convert to git: announce on webpage, create public repo
( http://git.fruit.je/caspar , http://git.mdcc.cx/ ,
ssh://git/~joostvb/git/caspar.git )
update README on git status (see FIXME's). set up commit list.
1.3) documenteer de new style loadtarget hack even better: run "make load"
with: combining new load-style is usefull too:
csp_LOAD = lolwut
lolwut = echo ssh $1 DFHKSJDHFJKSDHJK
lolwut:
for h in $(csp_UHOSTS);do echo ssh $$h DFHKSJDHFJKSDHJK;done
use case: /etc/nsd/zones/ , first push to auth servers, then ssh to al caches
for a forced flush of cache.
--- ook best wel belangrijk ---
2.3) test & document rsync support
2.5) Ideas insprired by a discussion with Fred Vos:
(Lots of users have asked for such a feature.)
a "make check" could be usefull: test wether previous svn version is on server
before scp-ing.
za 14 21:29 < hoppie> en als je dan helemaal over the top wilt, kun je
eventueel dat linken aan install, zodat alleen waar dat
nodig is geïnstalleerd wordt. Maar da's echt optioneel.
Preliminary support added; Document this! Nice trick:
make diff || make install
make foobar-diff || make foobar-install
Make this work out of the box for all push mechanisms: add generic csp_REXEC
next to csp_PUSH.
--- typesetting stuff ---
3.1) get toc printed in html mode. even while using nochunks mode.
3.2) license should be printed, see rh vs deb doc.
3.3) add zoem.mk, for zoem ( http://micans.org/zoem ) typesetting.
--- install stuff ---
4.1) ma 13 14:07 < arvid> joostvb, ik heb een feature request voor caspar :p
ma 13 14:13 < arvid> joostvb, een exclude host mogelijkheid
ma 13 14:13 < arvid> je bijv. een heleboel host en je wilt alleen 1 host
uitsluiten
ma 13 14:14 < arvid> s/host/hosts
ma 13 14:16 < joostvb> een csp_TABOOUHOSTS wil je dus, i c
ma 13 14:17 < arvid> joostvb, yep dat klopt
[14:18] [joostvb(+i)] [13:meuknet/#root(+ips)]
2009-07 Arvid Gibas
4.2) add standard target: "make print-hosts"
4.4) "install" should depend upon "load". (should it?) ("make" currently does
both "install" and "load"; it does not do "build". (really!?)). and/or:
caspar should support "make build-recursive".
4.5) csp_BUILD is a broken concept.
Users are better off declaring csp_EXTRAFILES and creating rules for each
file that needs to be built.
csp_BUILD is an alias to csp_EXTRAFILES for backwards compatibility.
4.6) caspar chokes on spaces in filenames:
Makefile:
csp_CPDIR = /var/php/public/jccpmanu/https
include caspar/mk/caspar.mk
joostvb@scriptix:~/sv...k/sources/jccpmanu/https% ls
JCCP logo.jpg Makefile index.html logo.html
JCCPlogo.jpg empty.html loginform.html php3
joostvb@scriptix:~/sv...k/sources/jccpmanu/https% make -n
/bin/sh: line 1: test: JCCP: binary operator expected
/bin/sh: line 1: test: JCCP: binary operator expected
cp "JCCPlogo.jpg" /var/php/public/jccpmanu/https;
cp "empty.html" /var/php/public/jccpmanu/https;
cp "index.html" /var/php/public/jccpmanu/https;
cp "loginform.html" /var/php/public/jccpmanu/https;
cp "logo.html" /var/php/public/jccpmanu/https;
make does not support arrays, but space-separated strings, so: tag won't fix.
4.7) caspar chokes on : in filenames:
Makefile:
csp_SCPDIR = /etc/sysconfig/network-scripts/
csp_SUH = root@cauchy
include caspar/mk/caspar.mk
joostvb@kovalevskaya:~/sv...ysconfig/network-scripts% ls
Makefile ifcfg-eth0 ifcfg-eth0:1
joostvb@kovalevskaya:~/sv...ysconfig/network-scripts% make
caspar/mk/caspar.mk:87: *** multiple target patterns. Stop.
Bug found by Johan Hoeke.
4.29) caspar chokes on files named ";anything"
joostvb@bruhat:~% touch ';q'
joostvb@bruhat:~% make -n
caspar/mk/caspar.mk:94: *** missing rule before commands. Stop.
4.8) Suggest (or offer) a more generic interface than my_EXEC for the load
target. Users are invited to extend the interface.
They can add extra variables to their push mechanisms. So we might be
able to abstract LOAD one day. Perhaps something like
$(foreach uh,$(csp_UHOSTS),$(call csp_EXEC,$(uh),$(csp_DIR),$(csp_XARG));)
could work. If a user's exec wrapper needs more arguments, these can get
introduced as implicit variables, outside $1, $2, ...
4.9) Explain why it's good practice to do
include ../../include/install.mk
in manpage example.
4.10) Don't do
csp_scp_FUNC = $(csp_SCP) $(csp_CPFLAGS) $(1) $(2):$(3)
but do
csp_scp_FUNC = $(csp_SCP) $(4) $(1) $(2):$(3)
and use $(csp_CPFLAGS) for csp_XARGS.
_Do_ test this!
4.11) load stuff:
- Create a ``load-recursive'' target.
- supply daemons.mk: csp_SSHDEBIANLOAD csp_URUKREDHATLOAD , etc, to use
in load targets
4.12) install-recursive should call mkdir if appropriate. install should, too.
Thu 31 15:16 < Fruit> kan ik 'm ook vertellen dat-ie voordat gaat kopiëren ff
mkdir -p op de smurfer doet?
Thu 31 15:19 < joostvb> een eigen csp_PUSH schrijven
Thu 31 15:20 < joostvb> csp_PUSH krijgt zowel filenaam als directory mee als
argument
Thu 31 15:20 < joostvb> dus das kei makkelijk
Thu 31 15:20 < Fruit> csp_OLD_PUSH := $(csp_PUSH)
Thu 31 15:20 < Fruit> csp_PUSH := ssh $iets mkdir $dir; $(csp_OLD_PUSH)
4.13) The scp invocation is inefficient:
% make -n README.txt-install net.txt-install
scp "README.txt" pong:/data/www/doc/doc/;
scp "net.txt" pong:/data/www/doc/doc/;
Should be:
scp "README.txt" "net.txt" pong:/data/www/doc/doc/;
$@ vs $? might be helpful.
4.14) test wether file is up to date before scp-ing it, in order to prevent us from
doing useless (and expensive) installs. use ControlMaster
ssh_config(5) to reuse one ssh conection? Perhaps this:
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
in your ~/.ssh/config (and having an ssh connection open to all relevant
hosts) fixes all "troubles". (This option is not available on Debian sarge.)
4.15) Ideas insprired by a discussion with Fred Vos:
Perhaps a note on how to use commit-hooks could be added to
documentation. Perhaps a note on ssh forced commands could be added. Perhaps
a note on a "make commit" could be added.
4.16) document this: including an included Makefile:
here := $(dir $(lastword $(MAKEFILE_LIST)))
include $(here)../../foo/bar/install.mk
Thanks Wessel.
Alternative: /usr/local/foo, as used in svn/its-unix
4.17) if one really wants, one can overrule caspar's default target:
---------
csp_SCPDIR = /etc/ssl/chains/
csp_TABOOFILES_ADD = %.asc
all: install
install: check makedir
include ../../../include/install.mk
check:
for cert in *.pem; do \
echo "$$cert:"; \
gpg --verify $$cert.asc $$cert; \
done
makedir:
for suh in $(csp_SUHS); do \
ssh $$suh mkdir -p /etc/ssl/chains; \
done
.PHONY: check makedir
---------
very likely, one could better use the "build" target for this.
4.18) it's not necessary to have Makefile in all directories of a tree, provided
caspar is fixed:
replace
DIRS := $(shell for d in *; do test -d $$d && echo $$d; done)
by
DIRS := $(patsubst %/Makefile,%,$(shell find * -mindepth 1 -name Makefile))
thanks Wessel. (This might break for trees combining GNUmakefile with Makefile
[za 14 22:29 dat breekt niet voor dat soort directories, ga maar na!
;)] .) Once this fix is implemented, get rid of the example toplevel Makefile
in caspar(7).
caspar-20220907/VERSION 0000644 0001750 0001750 00000000011 14306130116 011206 0000000 0000000 20220907
caspar-20220907/script/ 0000755 0001750 0001750 00000000000 14306131360 011534 5 0000000 0000000 caspar-20220907/script/casparize 0000755 0001750 0001750 00000010160 13721721100 013356 0000000 0000000 #!/bin/bash
# This file is maintained at http://git.mdcc.cx/caspar
# casparize - create Makefile-populated directories
# Copyright (C) 2009 Jeroen Hoppenbrouwers
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
# Creates a directory in working directory named like the last path
# element of the parameter, and creates a Makefile in the new directory
# containing standard caspar(7) setup that refers to the parameter path.
# If relevant, also copies the original config file into the new dir.
# Is reasonably picky about path names, tries to avoid common errors.
#
# V1.3 2009-07-25
# Abort on first error.
set -e
if [ -z "$1" ]; then
echo "Usage:"
echo " casparize /path/to/config/dir"
echo " Creates dir in working directory and"
echo " sets up caspar(7) Makefile in it."
echo " casparize /path/to/config/dir/file"
echo " Creates dir in working directory and"
echo " sets up caspar(7) Makefile in it,"
echo " then copies the config file into it."
echo ""
echo "Typical example:"
echo " \$ cd /etc"
echo " \$ casparize /etc/postfix/main.cf"
echo ""
echo "Will never overwrite anything that already exists."
exit 1
fi
# Complain if config path is not absolute.
if [ "${1:0:1}" != "/" ]; then
echo "ERROR: config path must be absolute".
exit 1
fi
# If given config path is a file, split it off and continue with just the
# config directory (until at the end where the file comes in).
if [ -d "$1" ]; then
# Target is a directory; just continue.
conffile=""
confdir=$1
else
# Target is a file; split off.
conffile=`basename $1`
confdir=`dirname $1`
fi
# Two options are covered:
# 1. New directory required, create in working directory.
# 2. New dir and file required, create dir in working directory and file
# in the newly created directory.
# What is NOT covered is "create file in working directory" because we
# assume that it is rare to not have the working directory set up with a
# Makefile. But it could be done.
# Complain if working directory basename is not equal to one-but-last
# element of the given config directory path. This catches most "oops"
# cases.
here=`pwd`
here=`basename $here`
target=`dirname $confdir`
target=`basename $target`
if [ "$here" != "$target" ]; then
echo "ERROR: Check config directory versus working directory."
exit 1
fi
# Find the include/install.mk file by looking up the tree from working dir.
scandir=`pwd`
uplevels=""
until [ -a "${uplevels}include/install.mk" ]; do
scandir=`dirname $scandir`
if [ "$scandir" = "/" ]; then
echo "ERROR: could not find include/install.mk anywhere up the path."
exit 1
fi
uplevels+="../"
done
# Directory to be created in working directory.
base=`basename $confdir`
# If the directory to be created already exists, don't complain.
# It may be that caspar(1) is used to create the Makefile only.
mkdir -pv $base
if [ -e "${base}/Makefile" ]; then
# Complain if the Makefile already exists.
echo "WARNING: $base/Makefile already exists; not overwriting."
else
# Create the Makefile.
echo "csp_DIR = $confdir" > ${base}/Makefile
echo "include ${uplevels}../include/install.mk" >> ${base}/Makefile
echo "casparize: created file \`$base/Makefile'"
fi
# If required, create the configuration file as well (copy over).
if [ -n "${conffile}" ]; then
if [ -e "${base}/${conffile}" ]; then
echo "WARNING: ${base}/${conffile} already exists; not overwriting."
else
cp ${confdir}/${conffile} $base
echo "casparize: created file \`${base}/${conffile}'"
fi
fi
exit 0
caspar-20220907/script/csp_install 0000755 0001750 0001750 00000001274 13721721100 013716 0000000 0000000 #!/bin/sh
# This file is maintained at http://git.mdcc.cx/caspar
# csp_install - wrapper for install(1), to be used in caspar-ized Makefiles
#
# usage: csp_install
#
# honors optionally set environment variable csp_INSTALL_OPTIONS.
# use e.g.
# export csp_INSTALL_OPTIONS='--owner=www-data --group=www-data'
#
# Generally, this script is to be used by stating e.g.
#
# csp_UHOST = dummy
# csp_PUSH = $(csp_install_FUNC)
# csp_DIR = /etc/
# include caspar/mk/caspar.mk
#
# in a Makefile
: ${csp_INSTALL_MODE:=u=rw,go=r}
install --directory $1
exec install --backup=off --preserve-timestamps --mode=$csp_INSTALL_MODE --no-target-directory $csp_INSTALL_OPTIONS $2 $1/$2
caspar-20220907/script/Makefile.in 0000644 0001750 0001750 00000032720 14306130117 013524 0000000 0000000 # Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = script
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/VERSION.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(bindir)"
SCRIPTS = $(bin_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
bin_SCRIPTS = casparize csp_install csp_mkdircp csp_scp_keep_mode csp_sucp
EXTRA_DIST = $(bin_SCRIPTS)
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu script/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu script/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n' \
-e 'h;s|.*|.|' \
-e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) { files[d] = files[d] " " $$1; \
if (++n[d] == $(am__install_max)) { \
print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
else { print "f", d "/" $$4, $$1 } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binSCRIPTS:
@$(NORMAL_UNINSTALL)
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 's,.*/,,;$(transform)'`; \
dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(SCRIPTS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binSCRIPTS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binSCRIPTS
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
ctags-am distclean distclean-generic distdir dvi dvi-am html \
html-am info info-am install install-am install-binSCRIPTS \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am tags-am uninstall uninstall-am \
uninstall-binSCRIPTS
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
caspar-20220907/script/csp_scp_keep_mode 0000755 0001750 0001750 00000001705 13721721100 015044 0000000 0000000 #!/bin/sh
# This file is maintained at http://git.mdcc.cx/caspar
# csp_scp_keep_mode - use ssh to copy a file, keeping its file permission mode
# based upon an idea of Wessel Dankers
# user joe pushed file bar to host murphy, in directory /foo/. on murphy,
# /foo/bar is owned by joe:joe. Now, ann wants to change murphy:/foo/bar. She
# however lacks permissions. Using a new group "hackers", and performing chmod
# g+s on murphy:/foo/ fixes this partially: the files now belong to the right
# group "hackers". However, a mode g+w on a file is generally _not_ preserved
# when scp-ing a new version of the file.
#
# Zorg dat op alle desktops het scriptje "csp_install_origal_mode" ergens
# in het $PATH van de gebruikers staat.
# Voorzie de include/install.mk verder van:
#
# csp_scp_keep_mode_FUNC = csp_scp_keep_mode $(1) $(2) $(3)
# csp_PUSH = $(csp_scp_keep_mode_FUNC)
#
: ${csp_SSH:=ssh}
exec $csp_SSH $1 't=`mktemp` && cat >$t && mv $t $2/$3' < $3
caspar-20220907/script/csp_sucp 0000755 0001750 0001750 00000001710 13721721100 013215 0000000 0000000 #!/bin/sh
# This file is maintained at http://git.mdcc.cx/caspar
#
# csp_sucp - mix scp with sudo
#
# usage:
# csp_sucp [user@]host dir file
#
# examples:
# csp_sucp rms@bilbo /etc file
# csp_sucp monty-python trailer.txt commit
#
# warning:
# csp_sucp won't prevent the given password from being echoed!
#
if test -z "$3"
then
echo "usage: csp_sucp [user@]host dir file [file ...]"
exit 1
fi
# command line argument overrules environment variable
test -n "$CSP_SUCP_USER" && opt_u="-u $CSP_SUCP_USER"
# first make sure our sudo-timestamp is fresh
ssh -t $1 sudo -v
# now run sudo: we won't be prompted for a password; and
# can use stdin for our data
test -n "$CSP_DEBUG" && echo $1 $opt_u $2 $3
#exec ssh $1 "sudo $opt_u sh -c \"cat - > $2/$3\"" < $3
host=$1; shift
dir=$1; shift
# files now in $@
test -n "$CSP_DEBUG" && echo exec tar c "$@" \| ssh -T $host sudo -n $opt_u tar xC $dir
exec tar c "$@" | ssh -T $host sudo -n $opt_u tar xC $dir
caspar-20220907/script/Makefile.am 0000644 0001750 0001750 00000000242 13721721100 013503 0000000 0000000 ## Process this file with automake to produce Makefile.in
bin_SCRIPTS = casparize csp_install csp_mkdircp csp_scp_keep_mode csp_sucp
EXTRA_DIST = $(bin_SCRIPTS)
caspar-20220907/script/csp_mkdircp 0000755 0001750 0001750 00000000216 13721721100 013674 0000000 0000000 #! /bin/sh
# This file is maintained at http://git.mdcc.cx/caspar
set -e
dir=$1
shift
mkdir -p "$DESTDIR$dir"
exec cp "$@" "$DESTDIR$dir"
caspar-20220907/bootstrap 0000755 0001750 0001750 00000001722 13721721100 012112 0000000 0000000 #!/bin/sh -e
# This file is maintained at http://git.mdcc.cx/caspar
# bootstrap - script to bootstrap the distribution rolling engine
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
# usage:
# ./bootstrap && ./configure && make distcheck
#
# this yields a tarball (and a .tar.bz2 too) which one can install doing
#
# $ tar zxf PACKAGENAME-*.tar.gz
# $ cd PACKAGENAME-*
# $ ./configure
# $ make
# # make install
# requirements:
# GNU autoconf, from e.g. ftp.gnu.org:/pub/gnu/autoconf/
# GNU automake, from e.g. ftp.cygnus.com:/pub/tromey/
# git2cl, from e.g. http://josefsson.org/git2cl/, and git
set -x
test -f ChangeLog || {
# we want no unprotected emailadresses in the cl
git log --pretty --numstat --summary | sed 's/<[^>][^>]*>//g' | \
git2cl > ChangeLog
}
test -f VERSION.m4 || ./setversion
AUTOMAKE=automake-1.16 ACLOCAL=aclocal-1.16 autoreconf --install --symlink
caspar-20220907/stamp.day 0000644 0001750 0001750 00000000003 14306130116 011762 0000000 0000000 7
caspar-20220907/stamp.year 0000644 0001750 0001750 00000000005 14306130116 012147 0000000 0000000 2022
caspar-20220907/sgml/ 0000755 0001750 0001750 00000000000 14306131360 011172 5 0000000 0000000 caspar-20220907/sgml/Makefile.in 0000644 0001750 0001750 00000031431 14306130117 013160 0000000 0000000 # Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = sgml
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/VERSION.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(sgmldir)"
DATA = $(sgml_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
PACKAGE = @PACKAGE_TARNAME@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
sgmldir = $(datadir)/sgml/$(PACKAGE)
sgml_DATA = print.dsl html.dsl
EXTRA_DIST = $(sgml_DATA)
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sgml/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu sgml/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-sgmlDATA: $(sgml_DATA)
@$(NORMAL_INSTALL)
@list='$(sgml_DATA)'; test -n "$(sgmldir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(sgmldir)'"; \
$(MKDIR_P) "$(DESTDIR)$(sgmldir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sgmldir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(sgmldir)" || exit $$?; \
done
uninstall-sgmlDATA:
@$(NORMAL_UNINSTALL)
@list='$(sgml_DATA)'; test -n "$(sgmldir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(sgmldir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(sgmldir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-sgmlDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-sgmlDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
ctags-am distclean distclean-generic distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-sgmlDATA install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am tags-am uninstall uninstall-am \
uninstall-sgmlDATA
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
caspar-20220907/sgml/print.dsl 0000644 0001750 0001750 00000012445 13721721100 012755 0000000 0000000
]>
;; See dbparam.dsl for definitions of refentries
(define %section-autolabel% #t) ;; Sections are enumerated
(define %chapter-autolabel% #t) ;; Chapters are enumerated
(define %generate-article-toc% #t) ;; A Table of Contents should
;; be produced for Articles
(define %generate-article-titlepage-on-separate-page% #f)
(define %generate-article-titlepage% #t)
(define %generate-article-toc-on-titlepage% #t)
;; (define %visual-acuity% "normal") ;; General measure of document text
;; size. See dbparam.dsl. bf-size maps
;; visual-acuity to normal-param text
;; size. normal is 10pt, presbyopic is
;; 12pt.
;; we want it to look like default LaTeX. One could also choose
;; "Times New Roman" here.
(define %title-font-family% "Computer Modern")
;; The font family used in titles
(define %body-font-family% "Computer Modern")
;; The font family used in body text
(define %default-quadding% 'justify) ;; The default quadding ('start',
;; 'center', 'justify', or 'end').
(define %body-start-indent% 0em) ;; The default indent of body text.
;; Some elements may have more or
;; less indentation. 4pi is default
;; value
;; we have vertical whitespace between paragraphs
;; (define %para-indent% 2em) ;; First line start-indent for
;; paragraphs (other than the first)
(define article-titlepage-recto-style
(style
font-family-name: %title-font-family%
font-size: (HSIZE 1))) ;; overrule font of title on
;; titlepage, see dbttlpg.dsl. tnx
;;; setting to HSIZE 2 or 5 has no effect...
;; flacoste
(define (article-titlepage-recto-elements)
(list (normalize "title")
(normalize "subtitle")
(normalize "corpauthor")
(normalize "authorgroup")
(normalize "author")
(normalize "abstract")))
;; (normalize "revhistory"))) ;; revhistory added
;; article-titlepage-recto-elements in dbttlpg.dsl
(define (toc-depth nd) 2) ;; see dbautoc.dsl, default 1 for
;; article, 7 for book
(define (first-page-inner-footer gi)
(cond
((equal? (normalize gi) (normalize "dedication")) (empty-sosofo))
((equal? (normalize gi) (normalize "lot")) (empty-sosofo))
((equal? (normalize gi) (normalize "part")) (empty-sosofo))
((equal? (normalize gi) (normalize "toc")) (empty-sosofo))
(else
(with-mode footer-copyright-mode
(process-node-list (select-elements (children (current-node))
(normalize "articleinfo")))))))
(define (page-inner-footer gi)
(cond
((equal? (normalize gi) (normalize "dedication")) (empty-sosofo))
((equal? (normalize gi) (normalize "lot")) (empty-sosofo))
((equal? (normalize gi) (normalize "part")) (empty-sosofo))
((equal? (normalize gi) (normalize "toc")) (empty-sosofo))
(else
(with-mode footer-id-mode
(process-node-list (select-elements (children (current-node))
(normalize "articleinfo")))))))
(mode footer-id-mode
;; Prevent elements with PCDATA content
;; from being processed
(element title
(empty-sosofo))
(element subtitle
(empty-sosofo))
(element copyright
(empty-sosofo))
(element author
(empty-sosofo))
(element revnumber
(empty-sosofo))
(element date
(empty-sosofo))
(element revremark
(process-children-trim))
(default
(process-children-trim)))
(define (make-footer-rule)
(make rule
orientation: 'escapement
position-point-shift: 0.75cm
length: 5cm
layer: 1
line-thickness: 0.4pt))
;; make sure systemitem gets typesetted in typewriter font
(element systemitem ($mono-seq$))
(mode footer-copyright-mode
;; Prevent elements with PCDATA content
;; from being processed
(element title
(empty-sosofo))
(element subtitle
(empty-sosofo))
(element author
(empty-sosofo))
(element revnumber
(empty-sosofo))
(element date
(empty-sosofo))
(element revhistory
(empty-sosofo))
(element copyright
(let ((year (select-elements (children (current-node))
(normalize "year")))
(holder (select-elements (children (current-node))
(normalize "holder"))))
(make sequence
(make-footer-rule)
(literal "Copyright © ")
(process-node-list year)
(literal " ")
(process-node-list holder))))
(default
(process-children-trim)))
caspar-20220907/sgml/html.dsl 0000644 0001750 0001750 00000002200 13721721100 012551 0000000 0000000
]>
;; See dbparam.dsl for definitions of refentries
(define %section-autolabel% #t) ;; Sections are enumerated
(define %chapter-autolabel% #t) ;; Chapters are enumerated
(define nochunks #t) ;; Dont make multiple pages
(define rootchunk #t) ;; Do make a 'root' page
(define %use-id-as-filename% #t) ;; Use book id as filename
(define %html-ext% ".html") ;; give it a proper html extension
;; %generate-set-toc% and %generate-book-toc% are #t in dbparam.dsl
;; %generate-book-titlepage% and %generate-article-titlepage% are #t
;; %generate-part-toc-on-titlepage% is #t
;; it seems toc is generated, but not printed in nochunks mode
caspar-20220907/sgml/Makefile.am 0000644 0001750 0001750 00000000265 13721721100 013146 0000000 0000000 ## Process this file with automake to produce Makefile.in
PACKAGE = @PACKAGE_TARNAME@
sgmldir = $(datadir)/sgml/$(PACKAGE)
sgml_DATA = print.dsl html.dsl
EXTRA_DIST = $(sgml_DATA)
caspar-20220907/THANKS 0000644 0001750 0001750 00000001242 13721721100 011057 0000000 0000000 Stijn van Dongen, for writing zoem, and inventing the zoem-ized hooks in the
build environment.
Joost Kooij, for helping with the embrionic caspar mk/ implementation,
looooong ago (in 2000, I believe).
Francis J. Lacoste, for helping me writing print.dsl and html.dsl.
Guus Sliepen, for contributing an excellent and much wanted patch.
Anton Sluijtman, for offering a patch to caspar.mk, adding useful
functionality.
Wessel Dankers, for giving lots of useful suggestions for improvements.
Jeroen Hoppenbrouwers, for promoting caspar and giving useful feedback and
contributions.
Tilburg University (http://www.uvt.nl/), for using this software, and giving
comments.
caspar-20220907/stamp.month 0000644 0001750 0001750 00000000007 14306130116 012336 0000000 0000000 сеп
caspar-20220907/aclocal.m4 0000644 0001750 0001750 00000065115 14306130116 012016 0000000 0000000 # generated automatically by aclocal 1.16.3 -*- Autoconf -*-
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
# Copyright (C) 2002-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.16.3], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
# _AM_AUTOCONF_VERSION(VERSION)
# -----------------------------
# aclocal traces this macro to find the Autoconf version.
# This is a private macro too. Using m4_define simplifies
# the logic in aclocal, which can simply ignore this definition.
m4_define([_AM_AUTOCONF_VERSION], [])
# AM_SET_CURRENT_AUTOMAKE_VERSION
# -------------------------------
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.16.3])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
# therefore $ac_aux_dir as well) can be either absolute or relative,
# depending on how configure is run. This is pretty annoying, since
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
# source directory, any form will work fine, but in subdirectories a
# relative path needs to be adjusted first.
#
# $ac_aux_dir/missing
# fails when called from a subdirectory if $ac_aux_dir is relative
# $top_srcdir/$ac_aux_dir/missing
# fails if $ac_aux_dir is absolute,
# fails when called from a subdirectory in a VPATH build with
# a relative $ac_aux_dir
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
# harmless because $srcdir is '.', but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
# and then we would define $MISSING as
# MISSING="\${SHELL} $am_aux_dir/missing"
# This will work as long as MISSING is not called from configure, because
# unfortunately $(top_srcdir) has no meaning in configure.
# However there are other variables, like CC, which are often used in
# configure, and could therefore not use this "fixed" $ac_aux_dir.
#
# Another solution, used here, is to always expand $ac_aux_dir to an
# absolute PATH. The drawback is that using absolute paths prevent a
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
# Expand $ac_aux_dir to an absolute path.
am_aux_dir=`cd "$ac_aux_dir" && pwd`
])
# Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
m4_define([AC_PROG_CC],
m4_defn([AC_PROG_CC])
[_AM_PROG_CC_C_O
])
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
# -----------------------------------------------
# The call with PACKAGE and VERSION arguments is the old style
# call (pre autoconf-2.50), which is being phased out. PACKAGE
# and VERSION should now be passed to AC_INIT and removed from
# the call to AM_INIT_AUTOMAKE.
# We support both call styles for the transition. After
# the next Automake release, Autoconf can make the AC_INIT
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.65])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
if test "`cd $srcdir && pwd`" != "`pwd`"; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
# is not polluted with repeated "-I."
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
fi
# test whether we have cygpath
if test -z "$CYGPATH_W"; then
if (cygpath --version) >/dev/null 2>/dev/null; then
CYGPATH_W='cygpath -w'
else
CYGPATH_W=echo
fi
fi
AC_SUBST([CYGPATH_W])
# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
[AC_DIAGNOSE([obsolete],
[$0: two- and three-arguments forms are deprecated.])
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
m4_if(
m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
[ok:ok],,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
_AM_IF_OPTION([no-define],,
[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
AM_MISSING_PROG([AUTOCONF], [autoconf])
AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
AM_MISSING_PROG([AUTOHEADER], [autoheader])
AM_MISSING_PROG([MAKEINFO], [makeinfo])
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
#
#
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
# We need awk for the "check" target (and possibly the TAP driver). The
# system "awk" is bad on some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
[_AM_DEPENDENCIES([CC])],
[m4_define([AC_PROG_CC],
m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
[_AM_DEPENDENCIES([CXX])],
[m4_define([AC_PROG_CXX],
m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
[_AM_DEPENDENCIES([OBJC])],
[m4_define([AC_PROG_OBJC],
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
[_AM_DEPENDENCIES([OBJCXX])],
[m4_define([AC_PROG_OBJCXX],
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
])
AC_REQUIRE([AM_SILENT_RULES])dnl
dnl The testsuite driver may need to know about EXEEXT, so add the
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
# POSIX will say in a future version that running "rm -f" with no argument
# is OK; and we want to be able to make that assumption in our Makefile
# recipes. So use an aggressive probe to check that the usage we want is
# actually supported "in the wild" to an acceptable degree.
# See automake bug#10828.
# To make any issue more visible, cause the running configure to be aborted
# by default if the 'rm' program in use doesn't match our expectations; the
# user can still override this though.
if rm -f && rm -fr && rm -rf; then : OK; else
cat >&2 <<'END'
Oops!
Your 'rm' program seems unable to run without file operands specified
on the command line, even when the '-f' option is present. This is contrary
to the behaviour of most rm programs out there, and not conforming with
the upcoming POSIX standard:
Please tell bug-automake@gnu.org about your system, including the value
of your $PATH and any error possibly output before this message. This
can help us improve future automake versions.
END
if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
echo 'Configuration will proceed anyway, since you have set the' >&2
echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
echo >&2
else
cat >&2 <<'END'
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
that behaves properly: .
If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
to "yes", and re-run configure.
END
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
fi
fi
dnl The trailing newline in this macro's definition is deliberate, for
dnl backward compatibility and to allow trailing 'dnl'-style comments
dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
# When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header
# that is generated. The stamp files are numbered to have different names.
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
# loop where config.status creates the headers, so we can generate
# our stamp files there.
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
[# Compute $1's index in $config_headers.
_am_arg=$1
_am_stamp_count=1
for _am_header in $config_headers :; do
case $_am_header in
$_am_arg | $_am_arg:* )
break ;;
* )
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
esac
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
*)
install_sh="\${SHELL} $am_aux_dir/install-sh"
esac
fi
AC_SUBST([install_sh])])
# Copyright (C) 2003-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
[rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
if test -d .tst; then
am__leading_dot=.
else
am__leading_dot=_
fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
[AC_REQUIRE([AM_MISSING_HAS_RUN])
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
# AM_MISSING_HAS_RUN
# ------------------
# Define MISSING if not defined so far and test if it is modern enough.
# If it is, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
if test x"${MISSING+set}" != xset; then
MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
am_missing_run="$MISSING "
else
am_missing_run=
AC_MSG_WARN(['missing' script is too old or missing])
fi
])
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
# --------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
# _AM_SET_OPTIONS(OPTIONS)
# ------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
# -------------------------------------------
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
'
case `pwd` in
*[[\\\"\#\$\&\'\`$am_lf]]*)
AC_MSG_ERROR([unsafe absolute working directory name]);;
esac
case $srcdir in
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
esac
# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
am_has_slept=no
for am_try in 1 2; do
echo "timestamp, slept: $am_has_slept" > conftest.file
set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
if test "$[*]" = "X"; then
# -L didn't work.
set X `ls -t "$srcdir/configure" conftest.file`
fi
if test "$[*]" != "X $srcdir/configure conftest.file" \
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
if test "$[2]" = conftest.file || test $am_try -eq 2; then
break
fi
# Just in case.
sleep 1
am_has_slept=yes
done
test "$[2]" = conftest.file
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
AC_MSG_RESULT([yes])
# If we didn't sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
if grep 'slept: no' conftest.file >/dev/null 2>&1; then
( sleep 1 ) &
am_sleep_pid=$!
fi
AC_CONFIG_COMMANDS_PRE(
[AC_MSG_CHECKING([that generated files are newer than configure])
if test -n "$am_sleep_pid"; then
# Hide warnings about reused PIDs.
wait $am_sleep_pid 2>/dev/null
fi
AC_MSG_RESULT([done])])
rm -f conftest.file
])
# Copyright (C) 2009-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_SILENT_RULES([DEFAULT])
# --------------------------
# Enable less verbose build rules; with the default set to DEFAULT
# ("yes" being less verbose, "no" or empty being verbose).
AC_DEFUN([AM_SILENT_RULES],
[AC_ARG_ENABLE([silent-rules], [dnl
AS_HELP_STRING(
[--enable-silent-rules],
[less verbose build output (undo: "make V=1")])
AS_HELP_STRING(
[--disable-silent-rules],
[verbose build output (undo: "make V=0")])dnl
])
case $enable_silent_rules in @%:@ (((
yes) AM_DEFAULT_VERBOSITY=0;;
no) AM_DEFAULT_VERBOSITY=1;;
*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
esac
dnl
dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
dnl do not support nested variable expansions.
dnl See automake bug#9928 and bug#10237.
am_make=${MAKE-make}
AC_CACHE_CHECK([whether $am_make supports nested variables],
[am_cv_make_support_nested_variables],
[if AS_ECHO([['TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am__doit:
@$(TRUE)
.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
am_cv_make_support_nested_variables=yes
else
am_cv_make_support_nested_variables=no
fi])
if test $am_cv_make_support_nested_variables = yes; then
dnl Using '$V' instead of '$(V)' breaks IRIX make.
AM_V='$(V)'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
else
AM_V=$AM_DEFAULT_VERBOSITY
AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
fi
AC_SUBST([AM_V])dnl
AM_SUBST_NOTMAKE([AM_V])dnl
AC_SUBST([AM_DEFAULT_V])dnl
AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
AM_BACKSLASH='\'
AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor 'install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
# is unlikely to handle the host's binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
# always use install-sh in "make install-strip", and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
# Installed binaries are usually stripped using 'strip' when the user
# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the 'STRIP' environment variable to overrule this program.
dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
# This macro is traced by Automake.
AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE)
# --------------------------
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
# FORMAT should be one of 'v7', 'ustar', or 'pax'.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
# $tardir.
# tardir=directory && $(am__tar) > result.tar
#
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
#
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}'])
# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
m4_if([$1], [v7],
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
[m4_case([$1],
[ustar],
[# The POSIX 1988 'ustar' format is defined with fixed-size fields.
# There is notably a 21 bits limit for the UID and the GID. In fact,
# the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
# and bug#13588).
am_max_uid=2097151 # 2^21 - 1
am_max_gid=$am_max_uid
# The $UID and $GID variables are not portable, so we need to resort
# to the POSIX-mandated id(1) utility. Errors in the 'id' calls
# below are definitely unexpected, so allow the users to see them
# (that is, avoid stderr redirection).
am_uid=`id -u || echo unknown`
am_gid=`id -g || echo unknown`
AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
if test $am_uid -le $am_max_uid; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
_am_tools=none
fi
AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
if test $am_gid -le $am_max_gid; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
_am_tools=none
fi],
[pax],
[],
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
# Go ahead even if we have the value already cached. We do so because we
# need to set the values for the 'am__tar' and 'am__untar' variables.
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
for _am_tool in $_am_tools; do
case $_am_tool in
gnutar)
for _am_tar in tar gnutar gtar; do
AM_RUN_LOG([$_am_tar --version]) && break
done
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
# Must skip GNU tar: if it does not support --format= it doesn't create
# ustar tarball either.
(tar --version) >/dev/null 2>&1 && continue
am__tar='tar chf - "$$tardir"'
am__tar_='tar chf - "$tardir"'
am__untar='tar xf -'
;;
pax)
am__tar='pax -L -x $1 -w "$$tardir"'
am__tar_='pax -L -x $1 -w "$tardir"'
am__untar='pax -r'
;;
cpio)
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
am__untar='cpio -i -H $1 -d'
;;
none)
am__tar=false
am__tar_=false
am__untar=false
;;
esac
# If the value was cached, stop now. We just wanted to have am__tar
# and am__untar set.
test -n "${am_cv_prog_tar_$1}" && break
# tar/untar a dummy directory, and stop if the command works.
rm -rf conftest.dir
mkdir conftest.dir
echo GrepMe > conftest.dir/file
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
rm -rf conftest.dir
if test -s conftest.tar; then
AM_RUN_LOG([$am__untar /dev/null 2>&1 && break
fi
done
rm -rf conftest.dir
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
caspar-20220907/ChangeLog 0000644 0001750 0001750 00000210361 14306130116 011723 0000000 0000000 2022-09-07 Joost van Baal-Ilić
* caspar/NEWS, caspar/configure.ac, debian/changelog,
debian/copyright: update copyright years
2022-09-07 Joost van Baal-Ilić
* caspar/TODO: dealing with #835408
2022-09-07 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO: more to do: document yet another
debuggging trick
2022-09-05 Joost van Baal-Ilić
* caspar/TODO: tnx marty
2022-05-22 Joost van Baal-Ilić
* debian/changelog, debian/control: * debian/control: add: Suggests: markdown.
2022-05-22 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO: todo: fix debian bug #835408
2022-05-22 Joost van Baal-Ilić
* caspar/NEWS: at least one more thing to do beefore release
2022-05-21 Joost van Baal-Ilić
* caspar/NEWS, caspar/doc/Makefile.am: hack: do not fail on error on
first zoem run (fixes "make distcheck")
2022-05-21 Joost van Baal-Ilić
* caspar/NEWS: name this release
2022-05-21 Joost van Baal-Ilić
* caspar/NEWS, caspar/doc/caspar-typesetting.azm,
caspar/mk/markdown.mk: finish and document mk/markdown.mk
2022-05-20 Joost van Baal-Ilić
* caspar/mk/markdown.mk: add comment on state of markdown
2022-05-20 Joost van Baal-Ilić
* caspar/NEWS, caspar/mk/markdown.mk: first shot add implementing
markdown.mk
2020-07-10 Joost van Baal-Ilić
* debian/changelog: Reupload as source-only in order to facilitate
migration to testing.
2020-06-17 Joost van Baal-Ilić
* debian/changelog, debian/control: debian/control: require current
debhelper compat version 13, obsolete 10.
2020-06-17 Joost van Baal-Ilić
* debian/changelog: .deb: ship it (?)
2020-06-16 Joost van Baal-Ilić
* debian/changelog, debian/control: debian/control: add explicit
"Rules-Requires-Root: binary-targets".
2020-06-16 Joost van Baal-Ilić
* debian/changelog, debian/control: debian/control: require current
debhelper compat version (= 13), as shipped with Debian 11
"bullseye" and with buster-backports; not obsolete (>= 10).
2020-06-14 Joost van Baal-Ilić
* debian/changelog, debian/copyright: debian/copyright: converted to
machine-readable DEP5 debian/copyright file, no longer refer to
common-licenses/GPL but to versioned
/usr/share/common-licenses/GPL-3.
2020-06-14 Joost van Baal-Ilić
* debian/changelog: E: caspar source: debian-watch-file-pubkey-file-is-missing: fixed,
no changes here needed
2020-06-14 Joost van Baal-Ilić
* debian/changelog: fix bug in personal build system
2020-06-13 Joost van Baal-Ilić
* debian/changelog: stuff to do: lintian
2020-06-13 Joost van Baal-Ilić
* debian/changelog: ...
2020-06-13 Joost van Baal-Ilić
* debian/changelog: ...
2020-06-11 Joost van Baal-Ilić
* debian/changelog: new upstream
2020-06-11 Joost van Baal-Ilić
* caspar/NEWS: ship it: version 20200611 - The Minneapolis Release
2020-06-09 Joost van Baal-Ilić
* caspar/NEWS, caspar/doc/caspar.azm: add missing {, so that
sections like FILES, ENVIRONMENT, SEE ALSO are no longer skipped
from typesetting the caspar(7) manpage
2020-06-09 Joost van Baal-Ilić
* caspar/NEWS, caspar/bootstrap: update from automake/aclocal 1.15
to 1.16 as shipped with current Debian stable
2019-04-03 Joost van Baal-Ilić
* caspar/TODO: arch linux
2019-04-03 Joost van Baal-Ilić
* caspar/TODO: arch linux
2019-04-02 Joost van Baal-Ilić
* arch/PKGBUILD: sha256sums for verification
2019-04-02 Joost van Baal-Ilić
* arch/PKGBUILD: fix for "ERROR: Integrity checks are missing for:
source" : WiP
2019-04-02 Joost van Baal-Ilić
* arch/PKGBUILD: could work like this
2019-04-02 Joost van Baal-Ilić
* arch/PKGBUILD, caspar/TODO: it just might work
2019-04-02 Joost van Baal-Ilić
* arch/PKGBUILD: PKGBUILD, for pacman package for Arch Linux
2019-04-02 Joost van Baal-Ilić
* caspar/TODO: more to do: create arch linux package
2018-09-23 Joost van Baal-Ilić
* debian/changelog: ship it: caspar (20180315-2)
2018-09-23 Joost van Baal-Ilić
* debian/changelog, debian/compat, debian/control: debian/compat,
debian/control: updated debhelper compatibility level from 9 to 10.
Now needs stretch/9 (stable) (or 8/jessie-backports) to build. (We
should still run fine on 7/wheezy.)
2018-09-23 Joost van Baal-Ilić
* debian/changelog: trailing whitespace
2018-09-23 Joost van Baal-Ilić
* debian/changelog, debian/upstream/signing-key.asc, debian/watch: * debian/watch: updated version from 3 to 4. * debian/upstream/signing-key.asc: added in order to automagically
verify upstream signature.
2018-09-23 Joost van Baal-Ilić
* debian/changelog: see
https://wiki.debian.org/Multiarch/CrossDependencies and
https://wiki.debian.org/MultiArch/Hints#ma-foreign for Multiarch
stuff
2018-09-23 Joost van Baal-Ilić
* debian/changelog, debian/control: debian/control: caspar-doc
marked "Multiarch: foreign" since it is Architecture: all, does not
contain any maintainer scripts and does not have any dependencies on
architecture-dependent packages. Thanks Multiarch hinter.
2018-05-04 Joost van Baal-Ilić
* debian/changelog, debian/watch: debian/watch: now actually usable:
no longer matches caspar-latest.tar.gz
2018-03-15 Joost van Baal-Ilić
* debian/changelog: ship it
2018-03-15 Joost van Baal-Ilić
* debian/changelog, debian/control: debian/control: bumped
Standards-Version: from 3.9.7 to 3.9.8 (no changes needed).
2018-03-15 Joost van Baal-Ilić
* debian/changelog, debian/compat, debian/control:
debian/{compat,control}: update from debhelper 7 to 9.
2018-03-15 Joost van Baal-Ilić
* debian/changelog, debian/control: * New upstream release - The Romstjern Release * debian/control: update Suggests: "please transition from jadetex
to texlive-formats-extra". Thanks PREINING Norbert. (closes:
#871753, #871746)
2018-03-15 Joost van Baal-Ilić
* caspar/NEWS: ship it: version 20180815 - The Romstjern Release.
Thanks Wessel Dankers for suggesting this releases name.
2018-03-15 Joost van Baal-Ilić
* caspar/NEWS, caspar/bootstrap: update from automake/aclocal 1.14
to 1.15 as shipped with current Debian stable
2018-03-15 Joost van Baal-Ilić
* caspar/NEWS: record changes
2018-02-23 Joost van Baal-Ilić
* caspar/mk/caspar.mk: Patch contributed by Wessel Dankers: csp_* variables are part of caspar's public interface. However, in
some cases (csp_scp_FUNC and friends) we overwrote those
unconditionally. This patch fixes that behavior: from now on, existing values for
csp_scp_FUNC are not overwritten any more.
2017-08-30 Joost van Baal-Ilić
* debian/changelog: new upstream
2017-08-30 Joost van Baal-Ilić
* caspar/NEWS: ship it: version 20170830 - The Bleukbos Release
2017-08-30 Joost van Baal-Ilić
* caspar/NEWS, caspar/doc/caspar.azm, caspar/mk/caspar.mk: apply
patch contibuted Wed, 23 Aug 2017 by Wessel Dankers in Message-Id:
<1503487613-786418-1-git-send-email-wsl@fruit.je>: add check and
verify targets and update the docs a little
2017-04-03 Joost van Baal-Ilić
* caspar/mk/pod.mk: its 2017. utf-8 is here
2017-03-27 Joost van Baal-Ilić
* caspar/NEWS, caspar/mk/pod.mk: mk/pod.mk: drop ps2pdf, use pod2pdf
(as shipped with e.g. Debian 8 "jessie") for generating PDF from
POD.
2016-03-04 Joost van Baal-Ilić
* debian/changelog, debian/control: * debian/control: bumped Standards-Version: from 3.9.5 to 3.9.7 (no changes needed: caspar-doc behaves as now specified in policy
12.3). * debian/control: fix Homepage and Vcs-Git fields: work around bug
in my current bozohttpd webserver.
2016-03-04 Joost van Baal-Ilić
* caspar/TODO: zo werkt dat
2016-03-04 Joost van Baal-Ilić
* caspar/TODO: another idea for improvement
2015-07-17 Joost van Baal-Ilić
* caspar/NEWS: start next release
2015-07-17 Joost van Baal-Ilić
* caspar/TODO: some stuff has been done
2014-09-24 Joost van Baal-Ilić
* debian/changelog, debian/control: New upstream release - The
Prnjavor Release * New upstream release - The Prnjavor Release * debian/control: bumped Standards-Version: from 3.9.3 to 3.9.5 (no changes needed).
2014-09-19 Joost van Baal-Ilić
* caspar/NEWS: ship it: version 20140919 - The Prnjavor Release
2014-09-19 Joost van Baal-Ilić
* caspar/NEWS: choosen a name for this release
2014-09-19 Joost van Baal-Ilić
* caspar/NEWS: record missed changes: automaken
2014-09-19 Joost van Baal-Ilić
* caspar/NEWS, caspar/bootstrap: record changes
2014-09-02 Joost van Baal-Ilić
* caspar/NEWS: git demo
2014-08-08 Joost van Baal-Ilić
* caspar/mk/caspar.mk: apply patch contributed by Wessel Dankers in
Message-ID: <20140808141010.GB112039@homsar.uvt.nl>: commit b0646dd118d0847e5a7b4af03de664cd261cf6e1 Author: Wessel Dankers Date: Fri Aug 8 16:02:27 2014 +0200 Localize variables, stop changing input variables 1) Localize variables: previously, caspar would use a few generic variable names (such as “FILES”) and assign values to them, blithely overwriting any variable of the same name that the
user might be using. With this change, all variables internal to caspar are prefixed using ‘_csp_’. 2) Stop changing input variables: variables that serve as input to caspar should be read-only as far as caspar is concerned.
Before this change it would change the value of (at least)
csp_UHOSTS, which broke certain advanced usage patterns. With this
change, caspar uses internal variables for computations. These modifications do not change the caspar interface.
2014-02-26 Joost van Baal-Ilić
* caspar/doc/caspar.azm: new links
2014-02-07 Joost van Baal-Ilić
* debian/changelog: ship it: caspar_20140203-1_all.deb
2014-02-06 Joost van Baal-Ilić
* debian/changelog: fix spelling error. tnx lintian
2014-02-05 Joost van Baal-Ilić
* caspar/NEWS, debian/changelog: start .deb, start next upstream
release
2014-02-03 Joost van Baal-Ilić
* caspar/Makefile.am: oops: git2cl/ChangeLog
2014-02-03 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO: ship it: 20140203 - The Matonge, BXL
Release
2014-02-03 Joost van Baal-Ilić
* caspar/Makefile.am, caspar/NEWS, caspar/configure.ac,
caspar/doc/Makefile.am, caspar/setversion: distcheck works now...
2014-02-02 Joost van Baal-Ilić
* caspar/NEWS, caspar/configure.ac: update AC_COPYRIGHT
2014-02-02 Joost van Baal-Ilić
* caspar/TODO: nothing
2014-02-02 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO, caspar/doc/caspar.azm: started
documenting "make diff"
2014-02-02 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO, caspar/doc/Makefile.am: do not ignore
errors from tidy
2014-02-02 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO, caspar/doc/csp_helper.azm: documented
csp_mkdircp
2014-02-02 Joost van Baal-Ilić
* caspar/NEWS: more to do
2014-02-02 Joost van Baal-Ilić
* caspar/Makefile.am, caspar/NEWS, caspar/configure.ac,
caspar/setversion: make distcheck works again, reintroduce
m4_include
2014-02-02 Joost van Baal-Ilić
* caspar/Makefile.am, caspar/NEWS, caspar/configure.ac: Makefile.am:
explictly set path of setversion: use $(top_srcdir)/setversion.
Specify DISTCLEANFILES. Add some workarounds in order to make sure
"make distcheck" completes again.
2014-02-01 Joost van Baal-Ilić
* caspar/Makefile.am, caspar/NEWS: nope, automake-1.11 wont help us
2014-02-01 Joost van Baal-Ilić
* caspar/Makefile.am, caspar/NEWS, caspar/bootstrap: s/1.14/1.11/ :
maybe older autotools works better...
2014-02-01 Joost van Baal-Ilić
* caspar/NEWS: name release, stuff to do
2014-01-06 Joost van Baal-Ilić
* debian/changelog: have uploaded
2014-01-06 Joost van Baal-Ilić
* caspar/NEWS: start next release
2014-01-06 Joost van Baal-Ilić
* caspar/TODO: another autobug found
2014-01-06 Joost van Baal-Ilić
* debian/changelog: (preparing) release 20140106-1
2014-01-06 Joost van Baal-Ilić
* debian/changelog: release names
2014-01-06 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO: ship it: version 20140106 - The
Bakertand Release
2014-01-06 Joost van Baal-Ilić
* caspar/TODO: autotools investigation
2014-01-06 Joost van Baal-Ilić
* caspar/NEWS, caspar/configure.ac: update upcoming VERSION in NEWS
2013-12-06 Joost van Baal-Ilić
* : commit d0f10b2954b794c689cee50e3789f44381cd68c7 Author: Joost
van Baal-Ilić Date: Mon Nov 25 07:20:47 2013 +0100
2013-11-22 Joost van Baal-Ilić
* caspar/TODO: tnx casper for noticing me
2013-11-21 Joost van Baal-Ilić
* caspar/NEWS: pick a name for upcoming release. Bakertand, near
Trouwlaan and Katsbogte
2013-11-21 Joost van Baal-Ilić
* caspar/TODO: чет 21 07:26 < joostvb_arrr> Fruit: 1.2) wait for
and apply Fruit patches чет 21 07:26 < joostvb_arrr> Fruit: staat
in caspar TODO чет 21 07:26 < joostvb_arrr> Fruit: had je nog wat
liggen? чет 21 07:26 < joostvb_arrr> Fruit: nu is het moment
чет 21 08:31 < Fruit> euhw. geen idee чет 21 09:12 <
joostvb_arrr> Fruit: a ok dan чет 21 09:56 < joostvb_arrr> n bug
in mn todo dus :)
2013-11-21 Joost van Baal-Ilić
* caspar/NEWS: document changes
2013-11-21 Joost van Baal-Ilić
* caspar/TODO, caspar/doc/Makefile.am: working on tidy-bug
2013-11-21 Joost van Baal-Ilić
* caspar/TODO: two bugs have been fixed, update TODO
2013-11-21 Joost van Baal-Ilić
* caspar/bootstrap: update from automake/aclocal 1.11 to 1.14
2013-11-21 Joost van Baal-Ilić
* caspar/TODO, caspar/doc/csp_helper.azm: working on fixing the
csp_mkdircp documentation bug
2013-11-21 Joost van Baal-Ilić
* caspar/TODO, caspar/doc/caspar.azm: one bug has been fixed, update
TODO
2013-11-19 Joost van Baal-Ilić
* caspar/NEWS: start next release
2013-11-19 Joost van Baal-Ilić
* caspar/script/csp_sucp: feed not just $3, but also any more args
as files to tar
2013-11-19 Joost van Baal-Ilić
* caspar/NEWS: ship it: version 20131119 - The Sint Agatha Release
2013-11-19 Joost van Baal-Ilić
* caspar/NEWS: update NEWS"
2013-05-21 Joost van Baal-Ilić
* caspar/doc/csp_helper.azm: update csp_sucp description: we use
tar, not cat. furthermore, we no longer suffer from password-prompt
bug
2013-05-21 Joost van Baal-Ilić
* caspar/doc/csp_helper.azm: document how to use csp_sucp with
interactive sudo password prompt
2013-05-21 Joost van Baal-Ilić
* caspar/script/csp_sucp: run sudo non-interactive (-n) when stdin
is filled with tar data
2013-05-21 Joost van Baal-Ilić
* caspar/script/csp_sucp: csp_sucp: explicitly get rid of tty when
stdin is filled with tar in order to make sure this data will not
get interpreted as password for sudo
2013-05-21 Joost van Baal-Ilić
* caspar/script/csp_sucp: csp_sucp: explicitly pass c to tar. (GNU
tar) 1.26 needs at least one option.
2013-05-21 Joost van Baal-Ilić
* caspar/script/csp_sucp: csp_sucp: pass -t to ssh, not -T, when
refreshing sudo password. gets rid of error message "sudo: no tty
present and no askpass program specified "
2013-03-19 Joost van Baal-Ilić
* caspar/mk/caspar.mk: Swap dealing with $(csp_TABOOFILES) and
$(csp_BUILD) in contructing FILES to be install-ed. Now
$(csp_TABOOFILES) is subtracted from $(csp_BUILD) (was: $(csp_BUILD)
gets added to result of subtracting $(csp_TABOOFILES) from list of
FILES. So, now "csp_BUILD = check" and "csp_TABOOFILES_ADD = check"
no longer results in caspar trying to install a file called 'check'.
2013-03-18 Joost van Baal-Ilić
* caspar/TODO: tnx Wessel
2012-10-15 Joost van Baal-Ilić
* caspar/NEWS: name the upcoming release. Kruisheren Klooster
2012-05-31 Joost van Baal-Ilić
* debian/changelog: oops, we _did_ upload 20120514-1
2012-05-30 Joost van Baal-Ilić
* debian/changelog: new debian upload: 20120530-1
2012-05-30 Joost van Baal-Ilić
* caspar/NEWS: start next release
2012-05-30 Joost van Baal-Ilić
* caspar/NEWS: version 20120530 - The Miekoekse Release
2012-05-29 Joost van Baal-Илић
* caspar/doc/Makefile.am, caspar/doc/csp_helper.azm,
caspar/doc/csp_mkdircp.1, caspar/script/Makefile.am,
caspar/script/csp_mkdircp: install csp_mkdircp, install manpage
2012-05-29 Joost van Baal-Илић
* caspar/script/csp_install: remove obsolete comment
2012-05-16 Joost van Baal-Ilić
* caspar/NEWS: remove extraneous entry
2012-05-14 Wessel Dankers
* caspar/NEWS, caspar/mk/caspar.mk: caspar/mk/caspar.mk: do not run
bulktargets if no files are available Signed-off-by: Joost van Baal-Ilić
2012-05-16 Joost van Baal-Ilić
* debian/changelog: new upstream
2012-05-14 Joost van Baal-Ilić
* caspar/TODO, caspar/mk/caspar.mk: new csp_PUSH mechanism:
csp_mkdircp_FUNC
2012-05-14 Joost van Baal-Ilić
* caspar/script/csp_mkdircp: add yet another caspar helper
2012-05-14 Joost van Baal-Ilić
* caspar/TODO: http://mdcc.cx/caspar updated: bug fixed
2012-05-14 Joost van Baal-Ilić
* caspar/NEWS: caspar version 20120514 - The Железничка
Release
2012-05-14 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO: cosmetics
2012-05-14 Joost van Baal-Ilić
* caspar/TODO: plan for fixing breakage
2012-05-14 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO, caspar/script/csp_sucp: new csp_sucp:
s/cat/tar/, multisupport
2012-05-11 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO: document breakage introduced by
bulktargets support
2012-05-11 Joost van Baal-Ilić
* caspar/NEWS: start documenting Wessel patch
2012-05-11 Wessel Dankers
* caspar/mk/caspar.mk: prevent spurious whitespace from being
introduced Signed-off-by: Joost van Baal-Ilić
2012-05-11 Wessel Dankers
* caspar/mk/caspar.mk: install multiple files in one bulk operation Signed-off-by: Joost van Baal-Ilić
2012-05-11 Joost van Baal-Ilić
* caspar/TODO, caspar/mk/caspar.mk: csp_SUCP now supports setting
csp_SUCP_USER from within Makefile: interface restored (still not
fully documented)
2012-05-09 Joost van Baal-Ilić
* caspar/TODO: more test results
2012-05-09 Joost van Baal-Ilić
* caspar/TODO: tnx Wessel
2012-05-09 Joost van Baal-Ilić
* : commit 2967718261c46501dec5f562ab5f59265363054f Author: Joost
van Baal-Ilić Date: Wed May 9 09:17:16 2012 +0200
2012-05-08 Joost van Baal-Ilić
* debian/changelog: ship it
2012-05-08 Joost van Baal-Ilić
* caspar/Makefile.am, caspar/NEWS: start the The
Железничка Release
2012-05-08 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO, caspar/doc/Makefile.am: release 20120508
2012-05-08 Joost van Baal-Ilić
* caspar/doc/caspar-typesetting.azm, caspar/doc/caspar.azm,
caspar/doc/csp_helper.azm: attempt to fix zoem syntax errors
2012-05-08 Joost van Baal-Ilić
* debian/changelog, debian/watch: add watch for uscan
2012-05-08 Joost van Baal-Ilić
* caspar/doc/Makefile.am, debian/watch: caspar documentation
typesetting: be picky upon errors (and warnings) about html syntax.
assume html is in utf8
2012-05-08 Joost van Baal-Ilić
* debian/changelog: new .deb release
2012-05-08 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO, debian/changelog: start next release
2012-05-07 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO: release 20120420, for Danishka Navin
2012-05-07 Joost van Baal-Ilić
* caspar/NEWS: cosmetics
2012-05-07 Joost van Baal-Ilić
* caspar/NEWS: fix dedication
2012-05-07 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO: prepare release 20120420
2012-04-20 Joost van Baal-Ilić
* caspar/script/csp_sucp: csp_sucp now honors CSP_DEBUG
2012-04-19 Joost van Baal-Ilić
* caspar/TODO: cleanup
2012-04-19 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO: upcoming release is for Danishka from
Ambalagoda
2012-04-18 Joost van Baal-Ilić
* caspar/NEWS, caspar/doc/caspar.azm: document new csp_PUSH
interface, support for csp_XARG is dropped
2012-04-18 Joost van Baal-Ilić
* caspar/NEWS: record some changes
2012-04-18 Joost van Baal-Ilić
* caspar/NEWS: named singalese caspar releases
2012-04-17 Joost van Baal-Ilić
* caspar/mk/caspar.mk: add (undocumented) target "debug". fix bug,
caspar now somewhat usable again, first example of caspar manpage
works
2012-04-17 Joost van Baal-Ilić
* caspar/TODO: stuff to do: unbreak
2012-04-17 Joost van Baal-Ilić
* caspar/NEWS, debian/changelog: preliminary experimental
non-published release 20120417
2012-04-17 Joost van Baal-Ilić
* caspar/Makefile.am: deal more sane with suppressing emailadresses
in ChangeLog generating
2012-04-16 Joost van Baal-Ilić
* caspar/NEWS: started documenting changes
2012-04-16 Joost van Baal-Ilić
* caspar/mk/caspar.mk: csp_DIFFXARG support reimplemented (in a
slightly less flexible way)
2012-04-16 Joost van Baal-Ilić
* caspar/mk/caspar.mk: csp_DIFFXARG no longer supported
2012-04-16 Joost van Baal-Ilić
* caspar/mk/caspar.mk: fixed csp_scp_FUNC and some other FUNCs to
use new csp_PUSH argument ordering
2012-04-16 Joost van Baal-Ilić
* caspar/doc/csp_helper.azm: updated for new helper arguments
2012-04-15 Joost van Baal-Ilić
* caspar/mk/caspar.mk: the -t-issue: swap args. wip. now completely
borken
2012-04-15 Joost van Baal-Ilić
* caspar/script/csp_sucp: fix bug in $CSP_SUCP_USER processing
2012-04-15 Joost van Baal-Ilić
* caspar/script/csp_sucp: swap arguments: now csp_sucp
(was: file [user@]host dir [su-user])
2012-04-15 Joost van Baal-Ilić
* caspar/script/csp_scp_keep_mode: swap arguments: now
csp_scp_keep_mode
2012-04-15 Joost van Baal-Ilić
* caspar/script/csp_install: swap arguments: now csp_install
2012-04-14 Joost van Baal-Ilić
* caspar/TODO: the -t-issue
2012-04-13 Joost van Baal-Ilić
* debian/changelog, debian/control: debian/control: bumped
Standards-Version: from 3.9.1 to 3.9.3 (no changes needed).
2012-04-13 Joost van Baal-Ilić
* debian/changelog, debian/rules: debian/rules: add build-arch and
build-indep targets (thanks lintian).
2012-04-13 Joost van Baal-Ilić
* debian/caspar-doc.doc-base.caspar-typesetting, debian/changelog:
debian/caspar-doc.doc-base.caspar-typesetting: fix spelling error
(thanks lintian).
2012-04-13 Joost van Baal-Ilić
* debian/changelog, debian/control: update my name
2012-04-13 Joost van Baal-Ilić
* debian/changelog, debian/copyright: copyright updated
2012-04-12 Joost van Baal-Ilić
* debian/changelog: new upstream
2012-04-12 Joost van Baal-Ilić
* debian/changelog: no longer inspect DEB_BUILD_OPTIONS for debug or
nostrip: we are arch independent
2012-04-12 Joost van Baal-Ilić
* debian/rules: no longer inspect DEB_BUILD_OPTIONS for debug or
nostrip: we are arch independent
2012-03-22 Joost van Baal-Ilić
* caspar/TODO, caspar/doc/include.zmm: new zoem syntax, still
2012-03-22 Joost van Baal-Ilić
* caspar/TODO: more to do
2012-03-22 Joost van Baal-Ilić
* caspar/TODO: more to do
2012-03-22 Joost van Baal-Ilić
* caspar/doc/casparize.azm: new zoem syntax
2012-03-22 Joost van Baal-Ilić
* caspar/doc/Makefile.am: "make maintainerclean" now more
aggresively
2012-03-22 Joost van Baal-Ilić
* caspar/Makefile.am: moved caspar website to new host
2012-03-22 Joost van Baal-Ilić
* caspar/AUTHORS, caspar/Makefile.am, caspar/doc/include.zmm,
caspar/mk/caspar.mk: updated year of copyright, updated my name
2012-03-22 Joost van Baal-Ilić
* caspar/TODO: found autotools buildproblem
2012-03-22 Joost van Baal-Ilić
* caspar/TODO: one more thing to do before release
2012-03-22 Joost van Baal-Ilić
* caspar/doc/caspar-typesetting.azm, caspar/doc/caspar.azm:
converting to new zoem syntax: ongoing
2012-03-22 Joost van Baal-Ilić
* caspar/NEWS, caspar/doc/caspar-typesetting.azm,
caspar/doc/caspar.azm, caspar/doc/casparize.azm,
caspar/doc/csp_helper.azm: converting to new zoem syntax
2012-03-22 Joost van Baal-Ilić
* caspar/setversion: never include date +%b output in VERSION
2012-03-21 Joost van Baal-Ilić
* caspar/NEWS: document changes
2012-03-21 Joost van Baal-Ilić
* caspar/doc/caspar-typesetting.azm, caspar/doc/caspar.azm,
caspar/doc/casparize.azm, caspar/doc/csp_helper.azm,
caspar/doc/include.zmm: converting to aephea >= 10.008-1, zoem >=
11-166-1
2012-03-21 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO, caspar/doc/caspar.azm,
caspar/mk/caspar.mk: drop support for csp_CPDIR and csp_CPDIRS
2012-03-21 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO, caspar/doc/caspar.azm: document csp_LOAD
$1 trick
2012-03-21 Joost van Baal-Ilić
* caspar/NEWS, caspar/TODO, caspar/doc/caspar.azm: document
csp_UHOSTS_SKIP
2012-03-21 Joost van Baal-Ilić
* caspar/NEWS: document changes
2012-03-21 Joost van Baal-Ilić
* caspar/TODO, caspar/doc/caspar.azm, caspar/mk/caspar.mk: implement
csp_scpmkdir_FUNC (and csp_MKDIRP)
2011-11-13 Joost van Baal-Ilić
* caspar/TODO: tnx Wessel for another idea
2011-11-13 Joost van Baal-Ilić
* caspar/TODO: some stuff is done
2011-11-13 Joost van Baal-Ilić
* caspar/TODO, caspar/doc/caspar.azm: manpage improvement
2011-11-13 Joost van Baal-Ilić
* caspar/NEWS: record changes
2011-11-11 Joost van Baal-Ilić
* caspar/TODO: more to do
2011-11-11 Joost van Baal-Ilić
* caspar/doc/caspar.azm: document csp_scpmkdir_FUNC-trick. thanks
Casper Gielen for idea
2011-06-18 Joost van Baal-Ilić
* caspar/doc/caspar.azm: add example: using csp_install_FUNC for
installing on local host
2011-06-18 Joost van Baal-Ilić
* caspar/doc/caspar.azm, caspar/doc/csp_helper.azm: finished
csp_helper manpage: no more FIXMEs
2011-06-08 Joost van Baal-Ilić
* : more to do
2011-03-11 Joost van Baal
* caspar/TODO, caspar/doc/caspar.azm: got rid of some FIXMEs in
manpage: s/ssh/csp_SSH/
2011-02-25 Joost van Baal
* caspar/TODO: tnx Casper Gielen
2011-02-12 Joost van Baal
* caspar/TODO, caspar/doc/caspar.azm: more to do
2011-02-12 Joost van Baal
* debian/control: fix typo in description
2011-02-12 Joost van Baal
* caspar/TODO: more to do
2011-02-12 Joost van Baal
* caspar/README: update info on commit mailing list
2011-02-12 Joost van Baal
* caspar/doc/Makefile.am: make sure .1 without source does not get
removed in "clean" target
2011-02-12 Joost van Baal
* debian/changelog, debian/control: new debian packages
2011-02-12 Joost van Baal
* caspar/doc/caspar.azm, debian/changelog, debian/control: enhance
description, mention puppet/cfengine
2011-02-12 Joost van Baal
* debian/changelog, debian/control: update suggests: new
packagenames
2011-02-12 Joost van Baal
* debian/changelog, debian/rules: new debhelper features
2011-02-12 Joost van Baal
* debian/changelog, debian/compat, debian/control: bump debhelper
2011-02-12 Joost van Baal
* debian/changelog, debian/control: bumped standards
2011-02-12 Joost van Baal
* debian/caspar-doc.install, debian/changelog, debian/compat,
debian/control, debian/docs, debian/rules: remove obsolete CVS tags
2011-01-20 Joost van Baal
* debian/changelog: new upstream
2010-12-04 Joost van Baal
* caspar/Makefile.am: enhance private publish-target
2010-12-04 Joost van Baal
* caspar/NEWS: record changes, release
2010-12-04 Joost van Baal
* caspar/TODO: TODO: document UI change introduced by latest
contributed patch
2010-11-19 Wessel Dankers
* caspar/mk/caspar.mk: add $(csp_UHOSTS_SKIP) feature: exclude hosts Signed-off-by: Joost van Baal
2010-11-19 Wessel Dankers
* caspar/mk/caspar.mk: combine file lists less clumsily Signed-off-by: Joost van Baal
2010-06-24 Joost van Baal
* debian/changelog: new upstream
2010-06-24 Joost van Baal
* caspar/NEWS: record changes, release 20100624
2010-05-31 Wessel Dankers
* caspar/mk/caspar.mk: fix load-target-as-a-variable didn't work
because $(call ...) was expanded too early Signed-off-by: Joost van Baal
2010-04-25 Joost van Baal
* debian/changelog: Switch to dpkg-source 3.0 (quilt) format
2010-04-25 Joost van Baal
* debian/source/format: Switch to dpkg-source 3.0 (quilt) format
2010-03-29 Joost van Baal
* debian/changelog: upload
2010-02-28 Joost van Baal
* caspar/TODO: found another bug, encountered when dealing with
wacky filenames
2010-02-23 Joost van Baal
* caspar/TODO: start draft documenting loadtarget
2010-02-23 Joost van Baal
* debian/changelog, debian/control: housekeeping
2010-02-23 Joost van Baal
* caspar/doc/Makefile.am: get rid of files left in build directory
after distclean
2010-02-23 Joost van Baal
* caspar/NEWS: record changes
2010-02-23 Joost van Baal
* caspar/doc/csp_install.1, caspar/doc/csp_scp_keep_mode.1,
caspar/doc/csp_sucp.1: extra manpages: so requests
2010-02-23 Joost van Baal
* caspar/TODO: ship it: 20100223
2010-02-23 Joost van Baal
* caspar/Makefile.am, caspar/TODO, caspar/bootstrap: get rid of
cvs2cl references
2010-02-23 Joost van Baal
* caspar/Makefile.am, caspar/NEWS, caspar/bootstrap: use git2cl
2010-02-23 Joost van Baal
* caspar/TODO, caspar/mk/caspar.mk: update year in copyright
2010-01-15 Wessel Dankers
* caspar/mk/caspar.mk: handle special characters in filenames a
little better Signed-off-by: Joost van Baal
2009-12-18 Wessel Dankers
* caspar/NEWS, caspar/TODO, caspar/mk/caspar.mk: csp_LOAD values are
now defined as variables Signed-off-by: Joost van Baal
2009-12-16 Joost van Baal
* caspar/NEWS: tweak layout
2009-12-15 Wessel Dankers
* caspar/TODO: Number entries in TODO file (awk
'BEGIN{a=1;b=1}/^---/{a++;b=1}{if(gsub("^- ", a"."b") ")) b++}1') Signed-off-by: Joost van Baal
2009-12-15 Wessel Dankers
* caspar/NEWS, caspar/TODO, caspar/mk/caspar.mk: fix error checking
when running commands Signed-off-by: Joost van Baal
2009-12-16 Joost van Baal
* caspar/TODO: Revert "Number entries in TODO file"; since this
patch was not cleanly cherrypickable. This reverts commit 18d15886c98a5a553f78dd74514fbf0540a5d02d.
2009-12-15 Wessel Dankers
* caspar/TODO: Number entries in TODO file (awk
'BEGIN{a=1;b=1}/^---/{a++;b=1}{if(gsub("^- ", a"."b") ")) b++}1')
2009-12-13 Joost van Baal
* caspar/README, caspar/TODO: migration to git
2009-12-13 Joost van Baal
* caspar/TODO: more stuff to to for migrating from CVS to git
2009-12-13 Joost van Baal
* caspar/NEWS, caspar/TODO: conversion from CVS to git
2009-11-14 joostvb
* debian/changelog, debian/control: oops
2009-11-14 joostvb
* debian/changelog: ship it
2009-11-14 joostvb
* caspar/NEWS, caspar/doc/.cvsignore, caspar/doc/casparize.azm:
caspar version 20091115
2009-11-14 joostvb
* debian/caspar-doc.install, debian/caspar.README.Debian,
debian/changelog, debian/control, debian/rules: shuffle docs between
caspar and caspar-doc
2009-11-14 joostvb
* debian/caspar-doc.doc-base.csp_helper,
debian/caspar-doc.doc-base.csp_sucp, debian/changelog, debian/rules:
Renamed caspar-doc.doc-base.csp_sucp to
caspar-doc.doc-base.csp_helper.
2009-11-14 joostvb
* caspar/NEWS, caspar/TODO, caspar/doc/caspar-typesetting.azm,
caspar/doc/caspar.azm, caspar/doc/casparize.azm,
caspar/doc/csp_helper.azm: fixed manpage crosslinking
2009-11-14 joostvb
* caspar/doc/casparize.azm: caspar(1) is now called casparize
2009-11-14 joostvb
* caspar/NEWS, caspar/TODO, caspar/doc/Makefile.am,
caspar/doc/{caspar1.azm => casparize.azm},
caspar/script/Makefile.am, caspar/script/{caspar => casparize}:
Renamed caspar(1) to casparize(1)
2009-11-14 joostvb
* caspar/TODO: one more before the debian upload
2009-11-14 joostvb
* caspar/doc/csp_helper.azm: fix typo
2009-11-14 joostvb
* caspar/NEWS, caspar/TODO: release 20091114
2009-11-14 joostvb
* caspar/doc/.cvsignore: [no log message]
2009-11-14 joostvb
* caspar/doc/.cvsignore, caspar/doc/Makefile.am,
caspar/doc/csp_install.1, caspar/doc/csp_scp_keep_mode.1,
caspar/doc/csp_sucp.1: csp_helper(1) is the same manpage as
csp_install(1), csp_scp_keep_mode(1) and csp_sucp(1)
2009-11-14 joostvb
* caspar/doc/csp_helper.azm, caspar/doc/csp_sucp.azm: csp_sucp
manpage merged in new csp_helper(1)
2009-10-27 joostvb
* caspar/TODO: reschedule
2009-10-24 joostvb
* caspar/TODO: apply patch from Wessel Dankers
2009-09-29 joostvb
* caspar/mk/caspar.mk, caspar/script/csp_install: define
csp_install_FUNC and csp_scp_keep_mode_FUNC in caspar.mk in order to
make UI more usable
2009-09-26 joostvb
* debian/changelog: changelog timestamp should be time of _last_
change
2009-09-26 joostvb
* debian/changelog, debian/control: bumped standards
2009-09-26 joostvb
* caspar/NEWS, caspar/THANKS: fixed a bug in caspar1.azm, this is
release 20090926 (really)
2009-09-26 joostvb
* caspar/bootstrap, caspar/doc/caspar1.azm, caspar/setversion: move
from automake 1.10 to 1.11
2009-09-26 joostvb
* caspar/NEWS, caspar/TODO, caspar/script/csp_scp_keep_mode: version
20090926
2009-09-26 joostvb
* caspar/NEWS, caspar/TODO, caspar/script/Makefile.am,
caspar/script/csp_install, caspar/script/csp_scp_keep_mode: add
csp_install and csp_scp_keep_mode: 2 scripts for more robust
installs
2009-09-09 joostvb
* caspar/TODO: thanks Thijs K, Wessel
2009-09-01 joostvb
* caspar/TODO: another way to call mkdir if needed
2009-08-12 joostvb
* caspar/doc/Makefile.am, caspar/doc/caspar1.azm,
caspar/script/Makefile.am, caspar/script/caspar: typeset and install
docs and script, cvs tags
2009-08-12 joostvb
* caspar/doc/caspar1.azm, caspar/script/caspar: add license info as
per: wo 12 15:08 < joostvb> hoppie: en is t gpl v 3 or (at your
option) any later version ? wo 12 15:08 < hoppie> any later wo 12
15:09 < joostvb> hu wat? wo 12 15:09 < hoppie> Ik ga even proberen
om dit te schrijven, maar ik weet niet of ik Zoom c.s. heb staan.
GPL 3 en later. [18:16] [joostvb(+i)] [9:meuknet/#uvt]
2009-08-12 joostvb
* caspar/doc/caspar1.azm, caspar/script/caspar: Add contributions
from Jeroen Hoppenbrouwers, in Message-ID:
, Date:
Sat, 25 Jul 2009 14:18:43 +0200 and Message-Id:
<20090812153730.AD9DC108005@hoppie.nl>, Date: Wed, 12 Aug 2009
17:37:30 +0200 (CEST).
2009-07-13 joostvb
* caspar/TODO: record feature request from Arvid Gibas
2009-06-22 joostvb
* debian/changelog, debian/copyright: pending commit: license
2009-06-22 joostvb
* debian/TODO, debian/caspar-doc.doc-base.caspar,
debian/caspar-doc.doc-base.caspar-typesetting,
debian/caspar-doc.doc-base.csp_sucp, debian/changelog: fix doc-bae
stuff, release
2009-06-22 joostvb
* debian/TODO, debian/caspar-doc.doc-base.caspar, debian/changelog,
debian/control: bumped standards
2009-06-22 joostvb
* caspar/NEWS, caspar/TODO, caspar/setversion: allow for user
override of version
2009-04-07 joostvb
* caspar/TODO: more wishlist bugs by Wessel Dankers
2009-04-07 joostvb
* debian/changelog, debian/copyright: license
2009-04-07 joostvb
* debian/changelog, debian/control: tnx lintian
2009-04-06 joostvb
* caspar/NEWS: (snapshot) release 20090406
2009-04-06 joostvb
* caspar/NEWS, caspar/mk/caspar.mk: use csp_DIFF for user interface,
not csp_COMP: consistency
2009-04-06 joostvb
* caspar/NEWS, caspar/TODO, caspar/mk/caspar.mk: add support for
rsync(1). Thanks Ko van der Sloot for the suggestion
2009-04-06 joostvb
* caspar/NEWS, caspar/TODO: documented behaviour of diff target when
using csp_CP_FUNC in NEWS, added plan for fix to TODO
2009-04-05 joostvb
* caspar/NEWS, caspar/TODO, caspar/mk/caspar.mk: implent "diff" make
target
2009-04-05 joostvb
* caspar/NEWS, caspar/TODO: add upgrade scenario
2009-04-05 joostvb
* caspar/NEWS, caspar/TODO: record changes: GPL v3
2009-04-05 joostvb
* caspar/bootstrap, caspar/configure.ac, caspar/doc/Makefile.am,
caspar/mk/caspar.mk, caspar/mk/docbook.mk, caspar/mk/pod.mk: Now
licensed under GPL v3 (not 2). Use automake 1.10, not 1.9
2009-03-15 joostvb
* caspar/NEWS, caspar/THANKS: record changes, add hoppie to THANKS
2009-03-15 joostvb
* caspar/NEWS, caspar/README, caspar/TODO, caspar/doc/caspar.azm,
caspar/mk/caspar.mk: Support for csp_SUH, csp_SUHS, csp_SUHDIRS and
csp_SCPDIR is dropped.
2009-03-15 joostvb
* caspar/TODO: tnx Fruit
2009-03-14 joostvb
* caspar/TODO: more user feedback for wishlist bug prio
2009-03-14 joostvb
* caspar/TODO: [no log message]
2009-03-14 joostvb
* caspar/TODO: reschedule prio of wishlist bugs, by popular request
2009-02-05 joostvb
* caspar/TODO: Bug: ``The function $(subst -install,,$@) in
caspar.mk breaks when filename itself has the substring -install.
We should strip only a _trailing_ '-install' from the maketarget.''
is now fixed.
2009-02-05 joostvb
* caspar/mk/caspar.mk: bugfix: deal sane with files named like
"debian-lenny-install.txt": files which had "-install" in their
never got install-ed
2008-12-21 joostvb
* caspar/doc/caspar.azm: tnx hoppie for caspar blog
2008-12-15 joostvb
* caspar/sgml/print.dsl: bugfix:
jade:/usr/share/sgml/caspar/print.dsl:126:24:E: element "SYSTEMITEM"
undefined
2008-09-21 joostvb
* caspar/TODO: added another wishlist bug
2008-04-28 joostvb
* caspar/doc/caspar.azm: add another example: sudo without ssh
2007-11-23 joostvb
* caspar/TODO: jhoeke found a bug: caspar chokes on : in filenames
2007-09-02 joostvb
* caspar/TODO: [no log message]
2007-09-02 joostvb
* caspar/TODO.local: remove obsolete stuff
2007-08-15 joostvb
* debian/changelog: release it
2007-08-15 joostvb
* debian/control: new debhelper
2007-07-31 joostvb
* caspar/TODO: add some new ideas. thanks Fred Vos
2007-07-29 joostvb
* caspar/TODO: [no log message]
2007-07-29 joostvb
* caspar/TODO: more to do
2007-07-29 joostvb
* debian/changelog, debian/compat, debian/dirs, debian/docs: [no log
message]
2007-07-29 joostvb
* debian/changelog, debian/compat: bump dh compat
2007-07-29 joostvb
* debian/changelog, debian/rules: conditionally run make distclean
2007-07-29 joostvb
* debian/changelog, debian/compat, debian/rules: Move DH_COMPAT from
debian/rules to debian/compat
2007-07-29 joostvb
* debian/changelog, debian/control: get rid of obsolete cruft
2007-07-29 joostvb
* debian/changelog, debian/control: fix typo
2007-07-29 joostvb
* caspar/NEWS, caspar/THANKS, caspar/doc/ChangeLog.2002: [no log
message]
2007-07-29 joostvb
* caspar/Makefile.am: new host for publishing tarball: mdcc.cx
hoster moved
2007-07-29 joostvb
* caspar/NEWS: release 20070729
2007-07-29 joostvb
* caspar/TODO.local, caspar/mk/caspar.mk: [no log message]
2007-07-29 joostvb
* caspar/TODO: reported a bug in csp_BUILD
2007-07-29 joostvb
* caspar/doc/caspar.azm: added another usage example for csp_LOAD:
adding a "check" target
2007-07-29 joostvb
* caspar/doc/caspar.azm: added example usage of csp_BUILD
2007-07-29 joostvb
* caspar/NEWS, caspar/README, caspar/THANKS, caspar/TODO,
caspar/doc/caspar.azm: refer to document "Versiebeheer en
software-packages: Waarom en Hoe". plan phaseout of obsolete
variables csp_SUHS
2007-07-29 joostvb
* caspar/TODO: Tested csp_UHOSTS_SUBSET. Gave example toplevel
Makefile without need to install Makefiles in all non-leaf
directories too in caspar(7). Thanks Wessel Dankers.
2007-07-29 joostvb
* caspar/doc/caspar.azm: documented csp_UHOSTS_SUBSET
2007-07-28 joostvb
* caspar/TODO: users vote for a quick implementation of
csp_UHOSTS_SUBSET
2007-07-28 joostvb
* caspar/TODO: some cleanup of TODO items
2007-07-13 joostvb
* caspar/NEWS: release 20070713
2007-07-13 joostvb
* caspar/TODO: report more issues found by UvT caspar user community
2007-05-21 joostvb
* caspar/NEWS: be more clear about the fixed bug
2007-05-19 joostvb
* caspar/doc/caspar.azm: the cvs-conf package has disappeared from
the internet: stop mentioning it
2007-05-12 joostvb
* caspar/doc/caspar.azm: add infrastructures.org link
2007-04-18 joostvb
* debian/changelog, debian/control: changes inspired by tetex-live
entering debian
2007-03-15 joostvb
* caspar/TODO: bug found by Mark van Diem
2007-02-14 joostvb
* caspar/TODO: two more wishlist bugs
2007-02-09 joostvb
* caspar/doc/caspar.azm: improved manpage after suggestion from Jan
Kooistra
2007-02-06 joostvb
* caspar/TODO: hint for migration
2007-02-05 joostvb
* caspar/TODO: more stuff to document
2007-01-30 joostvb
* rpm/caspar.spec, rpm/rpm.log: install doc, now builds
2007-01-30 joostvb
* rpm/caspar.spec: first shot at building an rpm for this package
2007-01-11 joostvb
* caspar/TODO: found out about ssh ControlMaster
2007-01-11 joostvb
* caspar/TODO: people _keep_ asking for this
2006-12-12 joostvb
* caspar/NEWS: [no log message]
2006-12-12 joostvb
* caspar/script/csp_sucp: sudo: the `-u' and '-v' options may not be
used together
2006-11-30 joostvb
* caspar/TODO: document idea for toplevel Makefile from Wessel
Dankers
2006-10-29 joostvb
* caspar/mk/caspar.mk: deal sane with empty csp_UHOSTS_SUBSET
2006-10-23 joostvb
* caspar/TODO, caspar/mk/caspar.mk: first untested and undocumented
implementation of csp_UHOSTS_SUBSET
2006-10-23 joostvb
* caspar/TODO: clarify what we want
2006-08-31 joostvb
* caspar/TODO: one way to call mkdir if appropriate. Thanks Wessel
Dankers
2006-07-09 joostvb
* caspar/doc/caspar.azm: yet another alternative
2006-06-18 joostvb
* debian/changelog: announce change in ui
2006-06-18 joostvb
* debian/changelog: new upstream
2006-06-18 joostvb
* caspar/NEWS: release 20060618
2006-06-18 joostvb
* caspar/TODO: caspar(7) can get improved even more
2006-06-18 joostvb
* caspar/doc/caspar.azm: cosmetics
2006-06-18 joostvb
* caspar/doc/caspar.azm: minor bugfixes
2006-06-18 joostvb
* caspar/TODO, caspar/doc/caspar.azm: added example combining
csp_sucp_FUNC and csp_LOAD to caspar(7)
2006-06-12 joostvb
* caspar/TODO: another real-life example
2006-06-10 joostvb
* caspar/Makefile.am: don't rebuild before publishing tarballs
2006-06-10 joostvb
* debian/changelog, debian/copyright: [no log message]
2006-06-10 joostvb
* caspar/NEWS: (snapshot) release 20060610
2006-06-10 joostvb
* caspar/doc/caspar.azm: document csp_UHOST
2006-06-10 joostvb
* caspar/TODO, caspar/doc/caspar.azm: suggest private variable
my_EXEC for abstracting ssh. caspar now abstracts scp and csp_sucp;
for now users should deal with abstracting ssh and sudo themselves
2006-06-10 joostvb
* caspar/TODO, caspar/doc/caspar.azm: add note on (in)sanity of
choosing GNU Make to implement caspar
2006-06-10 joostvb
* caspar/TODO, caspar/doc/Makefile.am, caspar/doc/caspar.azm,
caspar/doc/include.zmm, caspar/mk/caspar.mk, caspar/mk/docbook.mk:
updated copyright: 2006
2006-06-10 joostvb
* caspar/TODO, caspar/mk/caspar.mk: remove support for csp_scp_DIR
csp_scp_UHOSTS csp_scp_UHOST csp_cp_DIR from caspar.mk
2006-06-10 joostvb
* caspar/NEWS, caspar/TODO, caspar/doc/caspar.azm: removing *_scp_*
variables, phase 1
2006-06-09 joostvb
* caspar/TODO: more ideas after brainstorming with Wessel Dankers.
Tnx.
2006-06-08 joostvb
* debian/changelog: [no log message]
2006-06-08 joostvb
* caspar/NEWS: (snapshot) release 20060608
2006-06-08 joostvb
* caspar/TODO, caspar/doc/caspar.azm: add example "Plugging your own
install script in caspar" to caspar(7)
2006-06-07 joostvb
* caspar/NEWS, caspar/TODO: updates
2006-06-07 joostvb
* caspar/TODO, caspar/mk/caspar.mk: new variable csp_BUILD, to
execute optional build target before install
2006-06-07 joostvb
* caspar/mk/caspar.mk: fix bug in combining csp_SCPFLAGS with
csp_UHOSTS
2006-06-07 joostvb
* caspar/NEWS, caspar/mk/caspar.mk: Drop support for csp_sucp_UHOST,
csp_sucp_DIR, and csp_sucp_USER. One should just uses csp_UHOST(S),
csp_DIR and csp_XARG, and set csp_PUSH. Removed backwards
compatibility rule from caspar.mk.
2006-06-07 joostvb
* caspar/doc/caspar.azm: add some examples for simple usage
2006-06-05 joostvb
* caspar/TODO: [no log message]
2006-06-05 joostvb
* caspar/doc/caspar.azm: use new style variable names in all
examples. more details on overruling variables on commandline
2006-06-05 joostvb
* caspar/mk/caspar.mk: fix bug in backwards compatibility mode.
would have shown up when combining csp_SCPDIR with csp_SUHS
2006-06-01 joostvb
* caspar/TODO, caspar/doc/caspar.azm: fixed first example in
caspar(7)
2006-05-31 joostvb
* debian/caspar-doc.doc-base.csp_sucp, debian/caspar-doc.install,
debian/changelog, debian/control, debian/rules: [no log message]
2006-05-31 joostvb
* debian/changelog: [no log message]
2006-05-31 joostvb
* caspar/doc/caspar-typesetting.azm, caspar/doc/caspar.azm,
caspar/doc/csp_sucp.azm, caspar/doc/include.zmm: make csp_sucp(1)
announce itself under the right man section
2006-05-31 joostvb
* caspar/TODO: idea to make the default install rule more pluggable
2006-05-31 joostvb
* caspar/NEWS: snapshot release 20060531
2006-05-31 joostvb
* caspar/doc/caspar.azm: fix typesetting
2006-05-31 joostvb
* caspar/NEWS, caspar/doc/caspar-typesetting.azm,
caspar/doc/caspar.azm, caspar/script/Makefile.am: make it typeset
with zoem 06-080
2006-05-31 joostvb
* caspar/TODO, caspar/doc/caspar-typesetting.azm,
caspar/doc/caspar.azm, caspar/doc/csp_sucp.azm: add note on
sshd_config PermitRootLogin to caspar(7)
2006-05-31 joostvb
* caspar/doc/.cvsignore, caspar/script/.cvsignore: [no log message]
2006-05-31 joostvb
* caspar/TODO, caspar/doc/caspar-typesetting.azm: add reference to
latex-make utility
2006-05-31 joostvb
* debian/caspar-doc.doc-base.caspar-typesetting, debian/changelog:
[no log message]
2006-05-19 joostvb
* caspar/TODO, caspar/doc/caspar.azm: add caspar alternatives to
caspar(7)
2006-05-19 joostvb
* caspar/TODO: more to do: alternatives
2006-05-19 joostvb
* caspar/doc/caspar.azm: extra example. tnx to Jurrit for helping me
find out such an example was lacking
2006-04-25 joostvb
* caspar/TODO: more to do
2006-03-19 joostvb
* caspar/NEWS: [no log message]
2006-03-19 joostvb
* caspar/NEWS: [no log message]
2006-03-19 joostvb
* caspar/Makefile.am, caspar/NEWS, caspar/TODO,
caspar/configure.ac, caspar/doc/Makefile.am,
caspar/doc/csp_sucp.azm, caspar/script/Makefile.am: document
csp_sucp in manpage. Install csp_sucp and csp_sucp.1
2006-03-18 joostvb
* caspar/TODO: we need more testing
2006-03-18 joostvb
* caspar/script/csp_sucp: fail gracefully in case no args are passed
2006-02-16 joostvb
* caspar/doc/caspar.azm, caspar/mk/caspar.mk: fix typo which leads
to "caspar/mk/caspar.mk:27: *** invalid syntax in conditional.
Stop."
2006-02-16 joostvb
* caspar/NEWS: snapshot release 20060216
2006-02-16 joostvb
* caspar/TODO, caspar/doc/caspar.azm, caspar/script/csp_sucp: add
example for csp_sucp usage to manpage, update list of supported
variables
2006-02-16 joostvb
* caspar/NEWS, caspar/TODO, caspar/mk/caspar.mk: work on
csp_PUSH-plugin architecture: a make function for each plugin
2006-02-15 joostvb
* caspar/TODO, caspar/mk/caspar.mk: investigating make functions
2006-02-15 joostvb
* caspar/NEWS, caspar/TODO, caspar/script/csp_sucp: [no log message]
2006-02-15 joostvb
* caspar/TODO, caspar/doc/caspar.azm, caspar/mk/caspar.mk,
caspar/script/csp_sucp: csp_sucp honor CSP_SUCP_USER env var;
caspar.mk honors csp_sucp_USER make var
2006-02-15 joostvb
* debian/changelog, debian/control, debian/copyright: [no log
message]
2006-02-15 joostvb
* debian/changelog, debian/control: o my, ftbfs!
2006-02-08 joostvb
* caspar/TODO, caspar/script/csp_sucp: csp_sucp groks an optional
fourth argument
2006-02-07 joostvb
* caspar/TODO: we will drop support for csp_CPDIRS
2006-02-07 joostvb
* caspar/mk/caspar.mk: enabled csp_PUSH rule, listed some variables
as to be phased out (and kept for backward compatibility)
2006-02-07 joostvb
* caspar/doc/caspar.azm: updated examples to new UI
2006-01-29 joostvb
* caspar/Makefile.am, caspar/NEWS: [no log message]
2006-01-29 joostvb
* caspar/doc/include.zmm: adapted for zoem >= 05-328
2006-01-29 joostvb
* caspar/Makefile.am, caspar/configure.ac, caspar/mk/caspar.mk:
updated copyright statement
2006-01-29 joostvb
* caspar/TODO, caspar/bootstrap: use the autoreconf wrapper
2006-01-28 joostvb