- merge branches/py-lib, revisions 265-325 to trunk

git-svn-id: https://svn.ibp.de/svn/capisuite/trunk/capisuite@328 4ebea2bb-67d4-0310-8558-a5799e421b66
master
gernot 18 years ago
parent b75a6e0f54
commit a22481c4fc
  1. 1
      AUTHORS
  2. 119
      ChangeLog
  3. 58
      Makefile.in
  4. 25
      NEWS
  5. 17
      SConscript
  6. 192
      SConscript-Config
  7. 43
      SConscript-Options
  8. 246
      SConstruct
  9. 15
      TODO
  10. 92
      configure
  11. 2
      configure.in
  12. 15
      docs/Makefile.in
  13. 66
      docs/SConscript
  14. 2
      rc.capisuite.in
  15. 70
      scripts/Makefile.in
  16. 53
      scripts/SConscript
  17. 25
      scripts/answering_machine.confin
  18. 131
      scripts/capisuite-checkconfig
  19. 285
      scripts/capisuitefax.in
  20. 572
      scripts/cs_helpers.pyin
  21. 49
      scripts/fax.confin
  22. 369
      scripts/idle.py
  23. 990
      scripts/incoming.py
  24. 134
      scripts/remote-connect.py
  25. 18
      scripts/waves/Makefile.in
  26. 14
      scripts/waves/SConscript
  27. 2
      src/Makefile.am
  28. 49
      src/Makefile.in
  29. 23
      src/SConscript
  30. 27
      src/application/Makefile.in
  31. 9
      src/application/SConscript
  32. 6
      src/application/capisuitemodule.cpp
  33. 23
      src/backend/Makefile.in
  34. 8
      src/backend/SConscript
  35. 12
      src/capisuite-py/Makefile.am
  36. 347
      src/capisuite-py/Makefile.in
  37. 27
      src/capisuite-py/SConscript
  38. 24
      src/capisuite-py/__init__.py
  39. 216
      src/capisuite-py/config.py.in
  40. 38
      src/capisuite-py/consts.py
  41. 433
      src/capisuite-py/core.py
  42. 34
      src/capisuite-py/exceptions.py
  43. 252
      src/capisuite-py/fax.py
  44. 158
      src/capisuite-py/fileutils.py
  45. 216
      src/capisuite-py/pychecker.rc
  46. 176
      src/capisuite-py/voice.py
  47. 30
      src/modules/Makefile.in
  48. 11
      src/modules/SConscript

@ -1 +1,2 @@
Gernot Hillier <gernot@hillier.de>
Hartmut Goebel <h.goebel@crazy-compilers.com>

@ -1,9 +1,32 @@
2004-10-25 Gernot Hillier <gernot@hillier.de>
* src/capisuite-py/config.py.in: minor documentation changes
* src/capisuite-py/__init__.py: Likewise.
* src/capisuite-py/config.py.in (class NoGlobalSectionError): moved
to exceptions.py
* src/capisuite-py/exceptions.py: Likewise.
2004-09-04 Gernot Hillier <gernot@hillier.de>
* scripts/cs_helpers.pyin (__sendmail, __call, sff2tif, cff2ps,
la2wav, sendMIMEMail): fix several bugs, answering machine now seems
to work basically
* scripts/answering_machine.confin: update description of parameter
voice_email to new behaviour (empty string not allowed any more)
* NEWS: Likewise.
2004-07-15 Gernot Hillier <gernot@hillier.de>
* configure.in: support new parameter in ALERT_REQ of newer capi4linux
versions, thx to Steffen Barszus for reporting and the fix
* src/backend/capi.cpp (Capi::alert_req): Likewise.
* acinclude.m4 (CS_TEST_CAPI4LINUX): Likewise.
2004-06-12 Gernot Hillier <gernot@hillier.de>
* scripts/incoming.py (voiceIncoming): create file in received queue
only if necessary (i.e. as late as possible)
* src/capisuite-py/fileutils.py (_releaseLock): ignore insignificant
error resulting from race condition
* src/capisuite-py/voice.py (createReceivedJob): fix argument passing
* scripts/cs_helpers.pyin (sendMIMEMail): stringify exception instance
2004-06-10 Gernot Hillier <gernot@hillier.de>
* src/backend/connection.cpp (info_ind_called_party_nr): prevent
CapiSuite from crashing when a too high DDIBaseLength was configured,
@ -17,9 +40,33 @@
to avoid using phony targets in man page creation
* docs/manual.docbook.in: see above.
2004-05-10 Gernot Hillier <gernot@hillier.de>
* src/capisuite-py/core.py (Call.log,Call.__init__,Call.reject,
Call.disconnect): fix minor bugs in function calls, import some
additional symbols from _capisuite to our namespace, rename call_from
and call_to attributes of class Call to from_nr and to_nr, don't set
_handle to None after disconnect/reject
* scripts/incoming.py (callIncoming,faxIncoming,voiceIncoming): rename
call_from and call_to attributes of class Call to from_nr and to_nr;
use them everywhere instead of old global variables
* src/application/capisuitemodule.cpp (convertConnRef,convertCapiRef):
improve misleading error message
2004-04-18 Gernot Hillier <gernot@hillier.de>
* scripts/capisuitefax.in: allow * and # in destination numbers
2004-04-09 Gernot Hillier <gernot@hillier.de>
* src/capisuite-py/core.py (Capi.call_voice,Capi.call_faxG3): fix
some namespace problems and typos
2004-04-04 Gernot Hillier <gernot@hillier.de>
* configure.in: add support to install new capisuite Python module
* src/Makefile.am: Likewise
* src/capisuite-py/Makefile.am: Likewise (new file)
* src/capisuite-py/core.py (class Call): new method Call.log
* scripts/incoming.py (callIncoming,faxIncoming,voiceIncoming): use
Call.log instead of core.log where appropriate
2004-03-24 Gernot Hillier <gernot@hillier.de>
* docs/Makefile.am: change pathes to Docbook stylesheets to reflect
changes in SUSE 9.1
@ -31,16 +78,72 @@
2004-03-23 Gernot Hillier <gernot@hillier.de>
* docs/manual-de.docbook (capicodes_protocol): fix small typo
2004-03-21 Hartmut Goebel <h.goebel@crazy-compilers.com>
* scripts/fax.confin: Removed spaces from section names "Mail ...".
* scripts/answering_machine.confin: Likewise.
* scripts/incoming.py: Likewise.
* scripts/idle.py: Likewise.
* rc.capisuite.in: Likewise within a comment.
* scripts/incoming.py: Removed some outdated comments.
2004-03-20 Gernot Hillier <gernot@hillier.de>
* src/application/pythonscript.h: extend prefix() so that it can create
a short prefix, too; use short prefix for Python traceback (fixes bug
* src/application/pythonscript.h (prefix): add support for short
logging prefixes; use them for Python tracebacks (fixes bug
#63, reported anonymously)
* src/application/pythonscript.cpp: Likewise.
* src/application/pythonscript.cpp (prefix,run): Likewise.
* scripts/incoming.py: Fix typo.
2004-03-19 Gernot Hillier <gernot@hillier.de>
* scripts/idle.py: Remove old CVS history
* scripts/incoming.py: Likewise.
* scripts/incoming.py: changed some comments, moved connection
accept code to voiceIncoming
2004-03-14 Hartmut Goebel <h.goebel@crazy-compilers.com>
* scripts/incoming.py: Use capisuite.core instead of _capisuite.
* src/capisuite-py/fax.py: Removed faxInfo2dict.
* src/capisuite-py/core.py: Added OO layer for _capisuite
functions and classes Capi and Call.
* src/capisuite-py/core.py: New class FaxInfo.
2004-03-09 Hartmut Goebel <h.goebel@crazy-compilers.com>
* src/application/idlescript.cpp: Reduced delay until
* SConstruct: new file for building with SCons build-system.
* SConscript: Likewise.
* SConscript-Config: Likewise.
* SConscript-Options: Likewise.
* docs/SConscript: Likewise.
* scripts/SConscript: Likewise.
* scripts/waves/SConscript: Likewise.
* src/SConscript: Likewise.
* src/application/SConscript: Likewise.
* src/backend/SConscript: Likewise.
* src/modules/SConscript: Likewise.
* src/application/capisuitemodule.cpp (capisuitemodule_init): Renamed
built-in module to '_capisuite'
* src/application/idlescript.cpp (run): Reduced delay until
idlescript.py is called the first time after startup.
* src/capisuite-py: Added python library modules.
* src/capisuite-py/SConscript: Likewise.
* src/capisuite-py/__init__.py: Likewise.
* src/capisuite-py/config.py.in: Likewise.
* src/capisuite-py/consts.py: Likewise.
* src/capisuite-py/core.py: Likewise.
* src/capisuite-py/exceptions.py: Likewise.
* src/capisuite-py/fax.py: Likewise.
* src/capisuite-py/fileutils.py: Likewise.
* src/capisuite-py/pychecker.rc: Likewise.
* src/capisuite-py/voice.py: Likewise.
* scripts/fax.confin: Added sections 'Mail Fax|Voice ...'.
* scripts/answering_machine.confin: Likewise.
* rc.capisuite.in: Added 'todo' note.
* scripts/capisuite-checkconfig: new file (thx to
carsten@capimin.cbclass.net for the idea and a first version).
* scripts/cs_helper.pyin: Changed to use new python library.
* scripts/capisuitefax.in: Reworked to use new python library.
* scripts/idle.py: Likewise.
* scripts/incoming.py: Likewise.
* scripts/remote-connect.py: Likewise.
* ChangeLog, TODO, AUTHORS: updated.
2004-03-07 Gernot Hillier <gernot@hillier.de>
* docs/manual.docbook: update links to new web site structure
@ -69,7 +172,7 @@
confused the config file parser when not deleted by the user
* scripts/fax.confin: Likewise.
2004-02-20 Hartmut Goebel <h.goeben@goebel-consult.de>
2004-02-20 Hartmut Goebel <h.goebel@crazy-compilers.com>
* docs/Doxyfile.in: modified variable replacement for possible
change of build system
* docs/Makefile.am: Likewise.
@ -216,13 +319,13 @@
2003-10-19 Gernot Hillier <gernot@hillier.de>
* docs/manual.docbook (creating_alaw): add note how to convert vbox
to inversed A-Law files (thx to Thomas Niesel)
to inversed A-Law files (thx to Thomas Niesel)
* docs/manual-de.docbook (creating_alaw): see above
* docs/manual.docbook (require_soft): updated link to jpeg2ps (thx to
Achim Bohnet)
Achim Bohnet)
* docs/manual-de.docbook (require_soft): see above
* scripts/cs_helpers.pyin (sendMIMEMail): better wording for some error
messages
messages
2003-10-05 Gernot Hillier <gernot@hillier.de>

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.8.3 from Makefile.am.
# Makefile.in generated by automake 1.9.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -38,7 +38,7 @@ subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
TODO depcomp install-sh missing mkinstalldirs
TODO depcomp install-sh missing mkinstalldirs py-compile
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
@ -57,6 +57,12 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
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 = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(docdir)"
docDATA_INSTALL = $(INSTALL_DATA)
DATA = $(doc_DATA)
@ -136,6 +142,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
datadir = @datadir@
@ -235,7 +243,7 @@ install-docDATA: $(doc_DATA)
test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
@list='$(doc_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f="`echo $$p | sed -e 's|^.*/||'`"; \
f=$(am__strip_dir) \
echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
$(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
done
@ -243,7 +251,7 @@ install-docDATA: $(doc_DATA)
uninstall-docDATA:
@$(NORMAL_UNINSTALL)
@list='$(doc_DATA)'; for p in $$list; do \
f="`echo $$p | sed -e 's|^.*/||'`"; \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
rm -f "$(DESTDIR)$(docdir)/$$f"; \
done
@ -321,14 +329,16 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if (etags --etags-include --version) >/dev/null 2>&1; then \
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 && \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
@ -338,9 +348,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@ -393,15 +405,17 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
list='$(SUBDIRS)'; for subdir in $$list; do \
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| mkdir "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="../$(top_distdir)" \
distdir="../$(distdir)/$$subdir" \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
@ -412,15 +426,15 @@ distdir: $(DISTFILES)
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
$(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
@ -433,7 +447,7 @@ dist-zip: distdir
$(am__remove_distdir)
dist dist-all: distdir
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
@ -442,13 +456,13 @@ dist dist-all: distdir
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ;;\
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(AMTAR) xf - ;;\
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | unshar ;;\
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
@ -530,7 +544,7 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"

25
NEWS

@ -1,6 +1,11 @@
0.5 (CVS nn):
=============
* scripts: removed the special support for giving an empty voice_email/
fax_email parameter. This is NOT allowed any more and will result in
an error when sending the mail. Simply don't set these parameters
any more if you don't need them!
* core: use shorter, more readable format for Python traceback logging
* documentation: 5 man pages are now also created: capisuite(8),
@ -13,6 +18,22 @@
* scripts: capisuitefax now also accepts PDF files (thx to Jochen Meyer
and Eckhard Rüggeberg for reporting)
* scripts: capisuitefax now submits a single job if several
files are given (implemented by Hartmut Goebel, fixes bug #38)
* scripts: New script capisuite-checkconfig for checking the
configuration (thx to carsten@capimin.cbclass.net for the
idea and a first version, improved by Hartmut Goebel).
* core: major refactoring of the Python based interface has
been done. Now a complete new Python module library
implements a lot of useful functions and offers handy
abstractions. (planned and implemented by Hartmut Goebel)
* scripts: the mails sent can now be configured in the special sections
MailFaxReceived, MailFaxSent, MailFaxFailed and MailVoiceReceived in
answering_machine.conf and fax.conf (implemented by Hartmut Goebel)
* core: fixed a bug which could lead to a crash when some unexpected
CAPI messages arrived (thx to Karsten Keil for analyzing)
@ -42,8 +63,8 @@
should only contain important changes from a user's point of view, while
ChangeLog records all changes in detail.
0.4.4 (CVS tag NN):
===================
0.4.4
=====
* Makefiles: fixed "make" to not trying to create directories any more -
this prevented normal users to call "make" sometimes (thx to Steffen

@ -0,0 +1,17 @@
# -*- python -*-
# build top level files
# this is a SConscript, too, to support really build-dirs
Import('env')
cronfile = env.FileSubst('capisuite.cron', 'capisuite.cronin')
rcfile = env.FileSubst('rc.capisuite', 'rc.capisuite.in')
env.AddPostAction([cronfile, rcfile], 'chmod gu+x $TARGET')
Alias('install',
env.Install('$docdir', Split('COPYING NEWS README')),
env.Install('$sysconfdir/init.d/capisuite', rcfile),
env.InstallAs('$sysconfdir/cron.daily/capisuite', cronfile),
env.InstallAs('$pkgsysconfdir/cronjob.conf','cronjob.conf'),
)

@ -0,0 +1,192 @@
# -*- python -*-
"""
Check the build environment for CapiSuite
(c) Copyright 2004 by Hartmut Goebel <h.goebel@crazy-compilers.com>
"""
Import(['env'])
headerfilename = 'config.h'
havedict = {}
open(headerfilename, 'w') # clear file contents
###--- hack SCons.SConftest ---###
import SCons.Conftest, string
from types import IntType
def _Have(context, key, have):
"""
Slightly modified version of SCons.Conftest._Have which uses
global havedict and headerfilename instead of context.*. This is
necessary until SCons support a way to actually use this feature.
In addition this writes '#define ... 1'.
"""
key_up = string.upper(key)
key_up = string.replace(key_up, ':', '_')
key_up = string.replace(key_up, '.', '_')
key_up = string.replace(key_up, '/', '_')
key_up = string.replace(key_up, ' ', '_')
havedict[key_up] = have
if headerfilename:
f = open(headerfilename, "a")
if have == 1:
f.write("#define %s 1\n" % key_up)
elif have == 0:
f.write("/* #undef %s */\n" % key_up)
elif type(have) == IntType:
f.write("#define %s %d\n" % (key_up, have))
else:
f.write('#define %s "%s"\n' % (key_up, str(have)))
f.close()
# need to monkey-patch it into SCons.Conftest :-(
SCons.Conftest._Have = _Have
_Have(None, 'PACKAGE', env['PACKAGE'])
_Have(None, 'VERSION', env['VERSION'])
## these were defined by auto-rools but are unused:
## #define PACKAGE_BUGREPORT ""
## #define PACKAGE_NAME ""
## #define PACKAGE_STRING ""
## #define PACKAGE_TARNAME ""
## #define PACKAGE_VERSION ""
###--- autoconf-like checks ---###
### these tests are build like the corresponding autoconf tests
def CheckHeadersStdC(context):
context.Message("Checking for ANSI C header files ... ")
text = """
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>
\n"""
# Some tests for SunOS 4.x, ISC 2.0.2 and Irix-4.0.5 skipped here,
# since CapiSuite requires Linux anway.
ret = context.CompileProg(text, '.cpp')
SCons.Conftest._YesNoResult(context, ret, "STDC_HEADERS", text)
context.did_show_result = 1
return ret
def CheckHeaderTime(context):
context.Display("Checking whether time.h and sys/time.h may both be "
"included ... ")
text = """
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
int main() {
if ((struct tm *) 0) return 0;
return 0;
}
\n"""
ret = context.CompileProg(text, '.cpp')
SCons.Conftest._YesNoResult(context, ret, "TIME_WITH_SYS_TIME", text)
context.did_show_result = 1
return ret
###--- custom checks for CapiSuite ---###
def CheckStringClear(context):
context.Display('Checking for string::clear method ... ')
text = """
#include <string>
int main() {
std::string a; a.clear();
}
\n"""
ret = context.CompileProg(text, '.cpp')
SCons.Conftest._YesNoResult(context, ret, "HAVE_STRING_CLEAR", text)
context.did_show_result = 1
return ret
conf = Configure(env,
custom_tests = {'CheckHeadersStdC': CheckHeadersStdC,
'CheckHeaderTime': CheckHeaderTime,
'CheckStringClear': CheckStringClear,
},
conf_dir = '.sconf_temp', # no '#' to build in build-dir
log_file = 'config.log' # no '#' to build in build-dir
)
conf.CheckHeadersStdC()
missing = 0
for h in Split("sys/types.h sys/stat.h stdlib.h string.h "
"memory.h strings.h inttypes.h stdint.h unistd.h"):
missing += not conf.CheckHeader(h, language='C++')
if missing:
print 'Required headers missing - aborting.'
Exit(5)
conf.CheckFunc('gettimeofday', language='C++')
conf.CheckHeader('sys/time.h', language='C++')
conf.CheckHeaderTime()
###--- CapiSuite specials ---###
# new gcc3 feature: we can #include<ostream> instead of ostream.h
conf.CheckHeader('ostream', language='C++')
conf.CheckStringClear() # checking for string::clear method
###--- libs required by CapiSuite ---###
# checking for capi20_register in -lcapi20... yes
if not conf.CheckLib('capi20', 'capi20_register', language='C++'):
print 'libcapi not found - aborting'
Exit(5)
# checking for pthread_create in -lpthread... yes
if not conf.CheckLib('pthread', 'pthread_create', language='C++'):
print 'lipthread not found - aborting'
Exit(5)
# todo
# Which(doxygen)
# Which(pychecker)
conf.Finish()
"""
These are the checks 'configure' does
Legende:
- not neccessary
+ Scons build-in
? unsure
~ implemented in SConscript/SConstruct
-checking for a BSD-compatible install... /usr//bin/install -c
-checking whether build environment is sane... yes
-checking for gawk... gawk
-checking whether make sets $(MAKE)... yes
+checking for gcc... gcc
+checking for C compiler default output... a.out
+checking whether the C compiler works... yes
?checking whether we are cross compiling... no
+checking for suffix of executables...
+checking for suffix of object files... o
?checking whether we are using the GNU C compiler... yes
?checking whether gcc accepts -g... yes
?checking for gcc option to accept ANSI C... none needed
-checking for style of include used by make... GNU
-checking dependency style of gcc... gcc3
+checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
-checking dependency style of g++... gcc3
-checking for a BSD-compatible install... /usr//bin/install -c
+checking for ranlib... ranlib
-checking whether make sets $(MAKE)... (cached) yes
+checking how to run the C++ preprocessor... g++ -E
-checking for egrep... grep -E
"""

@ -0,0 +1,43 @@
# -*- python -*-
"""
Options for building CapiSuite
(c) Copyright 2004 by Hartmut Goebel <h.goebel@crazy-compilers.com>
"""
# default prefix
prefix = '/usr/local'
oldincludedir = '/usr/include'
opts = Options('options.cache', ARGUMENTS)
opts.AddOptions(
# Installation directories:
('prefix', 'install architecture-independent files in prefix', prefix),
('execprefix','install architecture-dependent files in execprefix','$prefix'),
# Fine tuning of the installation directories:
('bindir', 'user executables', '$execprefix/bin'),
('sbindir', 'system admin executables', '$execprefix/sbin'),
('libexecdir', 'program executables', '$execprefix/libexec'),
('datadir', 'read-only architecture-independent data','$prefix/share'),
('sysconfdir', 'read-only single-machine data', '$prefix/etc',),
('sharedstatedir','modifiable architecture-independent data','$prefix/com',),
('localstatedir', 'modifiable single-machine data', '$prefix/var'),
('libdir', 'object code libraries', '$execprefix/lib'),
('includedir', 'C header files', '$prefix/include'),
('oldincludedir', 'C header files for non-gcc', oldincludedir),
('infodir', 'info documentation', '$prefix/info'),
('mandir', 'man documentation', '$prefix/man'),
# install into another filesystem base
('INSTALL_BASE', 'base dir for installation (userfull for RPMs)',
'#/dist'),
# this is a capisuite-special
('docdir', 'other documentation', '$datadir/doc/capisuite'),
)
Import(['env', '__targets__'])
opts.Update(env)
Help(opts.GenerateHelpText(env) + __targets__)
opts.Save('options.cache', env)

@ -0,0 +1,246 @@
# -*- python -*-
"""
Main SCons build script for CapiSuite
(c) Copyright 2004 by Hartmut Goebel <h.goebel@crazy-compilers.com>
CapiSuite is (c) Copyright by Gernot Hiller <gernot@hiller.de>
Use 'scons --help' for a list of available options.
Options have only to be given once, since they are cached in a file
'options.cache'. To change an option, simply pass it again with a
different value.
Example:
scons prefix=/ # build for prefix=/
scons # prefix=/ is taken from 'options.cache'
scons prefix=/usr/local # build for prefix=/usr/local
# since this is the default, the entry in options.cache
# will be renmoved
scons # default prefix is used
"""
__targets__ = """
Additional targets:
configure : build the 'configure' script
(this is automatically done if 'config.h' is missing)
pycheck : check Python sources with PyChecker (not yet implemented)
install : install all files
install-pylib : install only the python library
install-scripts : install only the python scripts
install-exec : install only the executables
For all install-targets base may be set with INSTALL_BASE=...
"""
# File-Content Substitution will (hopefully ) be part of SCons 0.95
def _file_subst(target, source, env):
import os, re
import SCons.Util
def _substitute(matchobj, env=env):
sym = matchobj.group(1)
try:
return env.subst(str(env[sym]))
except: # TypeError: # sym not a string
print 'Not substituting', sym
return matchobj.group(0) # matched
delim = re.escape(env.get('SUBST_DELIM', '@'))
subst_pattern = re.compile('%s(.*?)%s' % (delim, delim))
for t, s in zip(target, source):
t = str(t)
s = s.rstr()
text = open(s, 'rb').read()
text = subst_pattern.sub(_substitute, text)
open(t, 'wb').write(text)
os.chmod(t, os.stat(s)[0])
return None
def _fs_strfunc(target, source, env):
return "generating '%s' from '%s'" % (target[0], source[0])
_fs_builder = Builder(action = Action(_file_subst, strfunction = _fs_strfunc))
import sys, os, os.path
import SCons.Util
import SCons.Node.FS
EnsurePythonVersion(2,2) # capisuite requires this
#EnsureSConsVersion(0,94)
build_dir = Dir('#/build')
class InstallableEnv(Environment):
def Install(self, dir, source):
"""Install specified files in the given directory."""
if self.has_key('INSTALL_BASE'):
def _Dir(name):
return SCons.Node.FS.Dir(name, parent, self.fs)
parent = self['INSTALL_BASE']
dir = self.arg2nodes(dir, _Dir)
return Environment.Install(self, dir, source)
def InstallAs(self, target, source):
"""Install sources as targets."""
def _File(name):
return SCons.Node.FS.File(name, dir, self.fs)
if self.has_key('INSTALL_BASE'):
dir = self['INSTALL_BASE']
targets = self.arg2nodes(target, _File)
return Environment.InstallAs(self, target, source)
env = InstallableEnv()
env.Append(
BUILDERS={'FileSubst' : _fs_builder},
PACKAGE = 'capisuite',
VERSION = '0.5.cvs',
srcdir = build_dir,
pkgdatadir = '${datadir}/${PACKAGE}',
pkglibdir = '${libdir}/${PACKAGE}',
pkgincludedir = '${includedir}/${PACKAGE}',
pkgbindir = '${bindir}',
pkgsbindir = '${sbindir}',
pkgsysconfdir = '${sysconfdir}/${PACKAGE}',
#pkglibdir = '${prefix}/lib',
spooldir = '${localstatedir}/spool/${PACKAGE}',
docdir = '${pkgdatadir}/doc/${PACKAGE}',
)
env.SConscript('SConscript-Options', exports=['env', '__targets__'])
if env.has_key('INSTALL_BASE'):
env.Replace(INSTALL_BASE=env.Dir('$INSTALL_BASE'))
Export('env')
env.BuildDir(build_dir=build_dir, src_dir='.')
###---####---###---####---###---####---###---####---###---####---###---###
# call configure if required
# if config.h does not exist, build it using Scons' conftest
if not os.path.exists(str(File('config.h', build_dir))) \
or 'configure' in COMMAND_LINE_TARGETS:
env.SConscript('SConscript-Config', build_dir=build_dir)
###---####---###---####---###---####---###---####---###---####---###---###
def GetPythonModuleSetup(env):
"""
Get configuration for linking with the Python library.
"""
import distutils.sysconfig
from distutils.sysconfig import get_python_lib, get_config_vars, \
get_config_var
env.Append(
python_version = distutils.sysconfig.get_python_version(),
python_prefix = distutils.sysconfig.PREFIX,
python_execprefix = distutils.sysconfig.EXEC_PREFIX,
python_libdir = get_python_lib(plat_specific=1, standard_lib=1),
python_moduledir = get_python_lib(plat_specific=0, standard_lib=0),
python_moduleexecdir = get_python_lib(plat_specific=1, standard_lib=0),
python_includespec = get_config_vars('INCLUDEPY', 'CONFINCLUDEPY'),
python_linkforshared = get_config_var('LINKFORSHARED'),
pkgpython_moduledir = '${python_moduledir}/${PACKAGE}',
pkgpython_moduleexecdir = '${python_moduleexecdir}/${PACKAGE}',
LINKFLAGS = ['${python_linkforshared}'],
LIBS = ['python${python_version}'],
)
env.Append(
CPPPATH = env['python_includespec'],
PYTHON = sys.executable,
)
def GetPythonEmbeddedSetup(env):
"""
Get configuration for linking an embedded Python application.
"""
# Base idea on which variable to check are from the INN 2.3.1 package
import distutils.sysconfig
print 'Checking how to link an embedded Python application:',
libvars = Split("LIBS LIBC LIBM LOCALMODLIBS BASEMODLIBS")
python_libspec = []
for libvar in distutils.sysconfig.get_config_vars(*libvars):
libvar = libvar.split()
for lib in libvar:
# sanity check
if not lib.startswith('-l'):
print "Error in Python Makefile: shared lib spec does ", \
"not start with '-l':", lib
python_libspec.append(lib[2:])
env.Append(python_libspec = python_libspec,
python_configdir = distutils.sysconfig.get_config_var('LIBPL'),
# preferable these should be '$python..', but SCons
# doe not yet support this (SCons 0.94)
LIBS = python_libspec,
LIBPATH = ['${python_configdir}'],
)
print ' '.join(python_libspec)
#print '>>>', env['LIBS']
GetPythonModuleSetup(env)
GetPythonEmbeddedSetup(env)
env.Append(
CCFLAGS = Split('-g -O2'),
LIBS = Split('pthread capi20'),
CPPDEFINES={'LOCALSTATEDIR': r'\"${localstatedir}\"',
'PKGDATADIR' : r'\"${pkgdatadir}\"',
'PKGSYSCONFDIR': r'\"${pkgsysconfdir}\"',
'PKGLIBDIR' : r'\"${pkglibdir}\"',
},
)
## # build debug?
## if ARGUMENTS.get('debug', 0):
## env.Append(CXXFLAGS = ['-g', '-DDEBUG'])
## else:
## env.Append(CXXFLAGS = ['-O2'])
##
## if env['CXX'] in ('g++', 'c++'):
## env.Append(CXXFLAGS = ['-Wall', '-Wno-non-virtual-dtor'])
###---####---###---####---###---####---###---####---###---####---###---###
# snippet for unittest
#mytest = env.program(...)
#Alias( 'unittest', mytest )
#Alias( 'all', 'unittest' )
#unittetsInstall = env.Install(...)
#Alias('unittest', unitteststInstall)
# now build the subdirectories' stuff
env.SConscript(dirs=[Dir('.', build_dir),
Dir('src', build_dir),
Dir('scripts', build_dir),
Dir('scripts/waves', build_dir),
Dir('docs', build_dir),
])
#env.SourceCode('.',
# env.CVS('pserver:anonymous@cvs.capisuite.berlios.de:/cvsroot/capisuite',
# 'capisuite'))
"""
make DESTDIR=$RPM_BUILD_ROOT install
mkdir -p $RPM_BUILD_ROOT/usr/sbin
ln -sf ../../etc/init.d/capisuite $RPM_BUILD_ROOT/usr/sbin/rccapisuite
"""
#EXTRA_DIST = rc.capisuite.in capisuite.cronin cronjob.conf
#install-data-local:
# mkdir -p $(DESTDIR)$(localstatedir)/log
# $(mkinstalldirs) $(DESTDIR)$(spooldir)/sendq
# $(mkinstalldirs) $(DESTDIR)$(spooldir)/done
# $(mkinstalldirs) $(DESTDIR)$(spooldir)/failed
# $(mkinstalldirs) $(DESTDIR)$(spooldir)/users

15
TODO

@ -1,4 +1,18 @@
Important for 0.5.0/capisuite-py:
* Check and fix all 'todo:'s in the python library and scripts.
* Update documentation to include
- capisuite-checkconfig
- the python library modules.
- 'Mail Fax|Voice ...' sections in config files
* Add update instructions for 0.5.0/capisuite-py
- 'Mail Fax|Voice ...' sections in config files
- new modulename '_capisuite' (but use capisuite.core instead)
* Add option '--is-configured' to capisuite-checkconfig to be used
by rc-file.
* Add 'scons-local' to distribution.
NICE:
- more checks/options for capisuite-checkconfig
- ?valgrind-clean the used libs and Python?
- support more than one send_controller
- don't use 34xx codes, define constants instead and print meaningful messages
@ -7,4 +21,3 @@ FUTURE PLANS:
- setuid away from root (problem: chown of recorded file to user)
- test-implement the whole application part in Python
- rewrite capisuitefax and idle.py to use named socket communication

92
configure vendored

@ -309,7 +309,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB doxygen CXXCPP EGREP docdir PYTHON PYTHON_VERSION PYTHON_PREFIX PYTHON_EXEC_PREFIX PYTHON_PLATFORM pythondir pkgpythondir pyexecdir pkgpyexecdir python_version python_prefix python_execprefix python_configdir python_moduledir python_moduleexecdir python_includespec python_linkforshared LIBOBJS LTLIBOBJS'
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB doxygen CXXCPP EGREP docdir PYTHON PYTHON_VERSION PYTHON_PREFIX PYTHON_EXEC_PREFIX PYTHON_PLATFORM pythondir pkgpythondir pyexecdir pkgpyexecdir python_version python_prefix python_execprefix python_configdir python_moduledir python_moduleexecdir python_includespec python_linkforshared LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@ -1311,7 +1311,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
am__api_version="1.8"
am__api_version="1.9"
ac_aux_dir=
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
if test -f $ac_dir/install-sh; then
@ -1488,13 +1488,21 @@ echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
fi
if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
# Keeping the `.' argument allows $(mkdir_p) to be used without
# argument. Indeed, we sometimes output rules like
# We used to keeping the `.' as first argument, in order to
# allow $(mkdir_p) to be used without argument. As in
# $(mkdir_p) $(somedir)
# where $(somedir) is conditionally defined.
# (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
# expensive solution, as it forces Make to start a sub-shell.)
mkdir_p='mkdir -p -- .'
# where $(somedir) is conditionally defined. However this is wrong
# for two reasons:
# 1. if the package is installed by a user who cannot write `.'
# make install will fail,
# 2. the above comment should most certainly read
# $(mkdir_p) $(DESTDIR)$(somedir)
# so it does not work when $(somedir) is undefined and
# $(DESTDIR) is not.
# To support the latter case, we have to write
# test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
# so the `.' trick is pointless.
mkdir_p='mkdir -p --'
else
# On NextStep and OpenStep, the `mkdir' command does not
# recognize any option. It will interpret all options as
@ -1638,9 +1646,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
AMTAR=${AMTAR-"${am_missing_run}tar"}
install_sh=${install_sh-"$am_aux_dir/install-sh"}
# Installed binaries are usually stripped using `strip' when the user
@ -1733,6 +1738,13 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
# Always define AMTAR for backward compatibility.
AMTAR=${AMTAR-"${am_missing_run}tar"}
am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
@ -2811,9 +2823,14 @@ else
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
# (even with -Werror). So we grep stderr for any message
# that says an option was ignored.
if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
# When given -MP, icc 7.0 and 7.1 complain thusly:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
if (grep 'ignoring option' conftest.err ||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_CC_dependencies_compiler_type=$depmode
break
fi
@ -3270,9 +3287,14 @@ else
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
# (even with -Werror). So we grep stderr for any message
# that says an option was ignored.
if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
# When given -MP, icc 7.0 and 7.1 complain thusly:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
if (grep 'ignoring option' conftest.err ||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_CXX_dependencies_compiler_type=$depmode
break
fi
@ -4692,6 +4714,7 @@ echo "$as_me: error: too old" >&2;}
{ (exit 1); exit 1; }; }
fi
am_display_PYTHON=$PYTHON
else
# Otherwise, try each interpreter until we find one that satisfies
# VERSION.
@ -4902,7 +4925,7 @@ echo "${ECHO_T}${python_libspec}" >&6
CPPFLAGS='-DLOCALSTATEDIR=\"$(localstatedir)\" -DPKGDATADIR=\"$(pkgdatadir)\" -DPKGSYSCONFDIR=\"$(sysconfdir)/capisuite\" -DPKGLIBDIR=\"$(pkglibdir)\" $(python_includespec)'
ac_config_files="$ac_config_files Makefile src/Makefile src/backend/Makefile src/modules/Makefile src/application/Makefile scripts/Makefile scripts/waves/Makefile docs/Makefile"
ac_config_files="$ac_config_files Makefile src/Makefile src/backend/Makefile src/modules/Makefile src/application/Makefile src/capisuite-py/Makefile scripts/Makefile scripts/waves/Makefile docs/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
@ -5464,6 +5487,7 @@ do
"src/backend/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/backend/Makefile" ;;
"src/modules/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/modules/Makefile" ;;
"src/application/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/application/Makefile" ;;
"src/capisuite-py/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/capisuite-py/Makefile" ;;
"scripts/Makefile" ) CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
"scripts/waves/Makefile" ) CONFIG_FILES="$CONFIG_FILES scripts/waves/Makefile" ;;
"docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
@ -5565,7 +5589,6 @@ s,@AUTOCONF@,$AUTOCONF,;t t
s,@AUTOMAKE@,$AUTOMAKE,;t t
s,@AUTOHEADER@,$AUTOHEADER,;t t
s,@MAKEINFO@,$MAKEINFO,;t t
s,@AMTAR@,$AMTAR,;t t
s,@install_sh@,$install_sh,;t t
s,@STRIP@,$STRIP,;t t
s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
@ -5574,6 +5597,9 @@ s,@mkdir_p@,$mkdir_p,;t t
s,@AWK@,$AWK,;t t
s,@SET_MAKE@,$SET_MAKE,;t t
s,@am__leading_dot@,$am__leading_dot,;t t
s,@AMTAR@,$AMTAR,;t t
s,@am__tar@,$am__tar,;t t
s,@am__untar@,$am__untar,;t t
s,@CC@,$CC,;t t
s,@CFLAGS@,$CFLAGS,;t t
s,@LDFLAGS@,$LDFLAGS,;t t
@ -6243,27 +6269,21 @@ echo X"$mf" |
else
continue
fi
grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
# Extract the definition of DEP_FILES from the Makefile without
# running `make'.
# Extract the definition of DEPDIR, am__include, and am__quote
# from the Makefile without running `make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
U=`sed -n 's/^U = //p' < "$mf"`
test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
# We invoke sed twice because it is the simplest approach to
# changing $(DEPDIR) to its actual value in the expansion.
for file in `sed -n '
/^DEP_FILES = .*\\\\$/ {
s/^DEP_FILES = //
:loop
s/\\\\$//
p
n
/\\\\$/ b loop
p
}
/^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue

@ -26,4 +26,4 @@ AM_PATH_PYTHON(2.2)
PGAC_CHECK_PYTHON_EMBED_SETUP
CPPFLAGS='-DLOCALSTATEDIR=\"$(localstatedir)\" -DPKGDATADIR=\"$(pkgdatadir)\" -DPKGSYSCONFDIR=\"$(sysconfdir)/capisuite\" -DPKGLIBDIR=\"$(pkglibdir)\" $(python_includespec)'
AC_OUTPUT(Makefile src/Makefile src/backend/Makefile src/modules/Makefile src/application/Makefile scripts/Makefile scripts/waves/Makefile docs/Makefile)
AC_OUTPUT(Makefile src/Makefile src/backend/Makefile src/modules/Makefile src/application/Makefile src/capisuite-py/Makefile scripts/Makefile scripts/waves/Makefile docs/Makefile)

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.8.3 from Makefile.am.
# Makefile.in generated by automake 1.9.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -46,7 +46,8 @@ CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
man1dir = $(mandir)/man1
am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"
am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \
"$(DESTDIR)$(man8dir)"
man5dir = $(mandir)/man5
man8dir = $(mandir)/man8
NROFF = nroff
@ -114,6 +115,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
datadir = @datadir@
@ -381,7 +384,7 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@ -435,9 +438,9 @@ uninstall-am: uninstall-info-am uninstall-local uninstall-man
uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8
.PHONY: all all-am check check-am clean clean-generic distclean \
distclean-generic distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am \
.PHONY: all all-am check check-am clean clean-generic dist-hook \
distclean distclean-generic distdir dvi dvi-am html html-am \
info info-am install install-am install-data install-data-am \
install-data-local install-exec install-exec-am install-info \
install-info-am install-man install-man1 install-man5 \
install-man8 install-strip installcheck installcheck-am \

@ -0,0 +1,66 @@
# -*- python -*-
Import('env')
#EXTRA_DIST = Doxyfile.in mainpage.doxy manual.docbook manual.README
## dist-hook: manual-html manual-pdf reference-html
## mkdir $(distdir)/manual
## cp -r $(srcdir)/manual/* $(distdir)/manual/
## mkdir $(distdir)/reference
## cp $(srcdir)/reference/* $(distdir)/reference/
## cp manual.pdf $(distdir)/
import re
def patch_version(target, source, env):
"""
Change version contained in the <title> tag.
This is done in-place to avoid yet another .in file.
"""
text = source[0].get_contents()
text = re.sub(r'<title>CapiSuite [\w.]*</title>',
r'<title>CapiSuite %s</title>' % env['VERSION'],
text)
open(source[0].abspath, 'w').write(text)
env.Append(docbuilddir=Dir('.'))
manualdir = Dir('manual')
stylesheetdir = Dir('/usr/share/sgml/docbook/xsl-stylesheets')
#images = Install(Dir('images', manualdir), images)
# create HTML manual
manual_html = env.Command(File('index.html', manualdir),
'manual.docbook', [
patch_version,
['xmllint', '--noout', '--valid', '$SOURCE'],
['xsltproc', '-o', '${TARGET.dir}/',
File('xhtml/chunk.xsl', stylesheetdir), '$SOURCE']
])
#env.Depends(manual_html, images)
# copy missing images
env.AddPostAction(manual_html, [ \
['rm', '-fr', Dir('images', manualdir)],
['cp', '-r', Dir('images', stylesheetdir), Dir(manualdir)]
])
# create PDF manual
manual_pdf = env.Command('manual.pdf', 'manual.docbook',
'db2pdf -o ${TARGET.dir} $SOURCE'
)
# substitute version, capisuite_sources, srcdir
doxyfile = env.FileSubst('Doxyfile', 'Doxyfile.in')
ref_html = env.Command('reference/index.html', doxyfile, [ \
['doxygen', doxyfile]
])
Alias('install',
env.Install('$docdir', manual_pdf),
#env.Install('$docdir', 'manual'),
#env.Install('$docdir', 'reference'),
)

@ -82,6 +82,8 @@ case "$1" in
# answering machine. Otherwise exit.
# IMPORTANT: Change this or comment it out if you want to use
# your own CapiSuite scripts.
# todo: change these tests since they are not longer valid due to
# [Mail...] sections. Consider using capisuite-checkconfig!
while read -r sec rest ; do
if [ "${sec:0:1}" = "[" -a "$sec" != "[GLOBAL]" ]; then
configured_fax=yes

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.8.3 from Makefile.am.
# Makefile.in generated by automake 1.9.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -46,7 +46,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(pkgsysconfdir)" "$(DESTDIR)$(python_moduledir)"
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibdir)" \
"$(DESTDIR)$(pkgsysconfdir)" "$(DESTDIR)$(python_moduledir)"
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
SCRIPTS = $(bin_SCRIPTS)
SOURCES =
@ -57,6 +58,12 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
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 = `echo $$p | sed -e 's|^.*/||'`;
dist_pkglibDATA_INSTALL = $(INSTALL_DATA)
pkgsysconfDATA_INSTALL = $(INSTALL_DATA)
python_moduleDATA_INSTALL = $(INSTALL_DATA)
@ -127,6 +134,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
datadir = @datadir@
@ -227,7 +236,7 @@ install-dist_pkglibDATA: $(dist_pkglib_DATA)
test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)"
@list='$(dist_pkglib_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f="`echo $$p | sed -e 's|^.*/||'`"; \
f=$(am__strip_dir) \
echo " $(dist_pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
$(dist_pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
done
@ -235,7 +244,7 @@ install-dist_pkglibDATA: $(dist_pkglib_DATA)
uninstall-dist_pkglibDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_pkglib_DATA)'; for p in $$list; do \
f="`echo $$p | sed -e 's|^.*/||'`"; \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
done
@ -244,7 +253,7 @@ install-pkgsysconfDATA: $(pkgsysconf_DATA)
test -z "$(pkgsysconfdir)" || $(mkdir_p) "$(DESTDIR)$(pkgsysconfdir)"
@list='$(pkgsysconf_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f="`echo $$p | sed -e 's|^.*/||'`"; \
f=$(am__strip_dir) \
echo " $(pkgsysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgsysconfdir)/$$f'"; \
$(pkgsysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgsysconfdir)/$$f"; \
done
@ -252,7 +261,7 @@ install-pkgsysconfDATA: $(pkgsysconf_DATA)
uninstall-pkgsysconfDATA:
@$(NORMAL_UNINSTALL)
@list='$(pkgsysconf_DATA)'; for p in $$list; do \
f="`echo $$p | sed -e 's|^.*/||'`"; \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(pkgsysconfdir)/$$f'"; \
rm -f "$(DESTDIR)$(pkgsysconfdir)/$$f"; \
done
@ -261,7 +270,7 @@ install-python_moduleDATA: $(python_module_DATA)
test -z "$(python_moduledir)" || $(mkdir_p) "$(DESTDIR)$(python_moduledir)"
@list='$(python_module_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f="`echo $$p | sed -e 's|^.*/||'`"; \
f=$(am__strip_dir) \
echo " $(python_moduleDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(python_moduledir)/$$f'"; \
$(python_moduleDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(python_moduledir)/$$f"; \
done
@ -269,7 +278,7 @@ install-python_moduleDATA: $(python_module_DATA)
uninstall-python_moduleDATA:
@$(NORMAL_UNINSTALL)
@list='$(python_module_DATA)'; for p in $$list; do \
f="`echo $$p | sed -e 's|^.*/||'`"; \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(python_moduledir)/$$f'"; \
rm -f "$(DESTDIR)$(python_moduledir)/$$f"; \