improved build, tested on wily and xenial

master
Marc Wäckerlin 7 years ago
parent 35f5aa9676
commit 704c31c378
  1. 2
      COPYING
  2. 395
      ChangeLog
  3. 2
      INSTALL
  4. 100
      ax_cxx_compile_stdcxx_11.m4
  5. 206
      ax_init_standard_project.m4
  6. 633
      bootstrap.sh
  7. 11
      build-in-docker.conf
  8. 105
      build-in-docker.sh
  9. 4
      debian/control.in
  10. 4
      resolve-debbuilddeps.sh
  11. 37
      resolve-rpmbuilddeps.sh
  12. 16
      sql-to-dot.sed

@ -1 +1 @@
/usr/share/automake-1.14/COPYING
/usr/share/automake-1.15/COPYING

@ -1,300 +1,331 @@
2016-06-08 09:07
* ax_init_standard_project.m4, bootstrap.sh,
resolve-rpmbuilddeps.sh, scripts/90wt-mode.wt,
scripts/makefile.am, scripts/wt-mode.el, src/commands.hxx,
src/exceptions.hxx: new commands: include, case and fail; new
emacs wt-mode for webtester files
* [r79] ax_init_standard_project.m4, bootstrap.sh,
resolve-rpmbuilddeps.sh, scripts/90wt-mode.wt[ADD],
scripts/makefile.am, scripts/wt-mode.el[ADD], src/commands.hxx,
src/exceptions.hxx:
new commands: include, case and fail; new emacs wt-mode for
webtester files
2016-05-13 15:02
* bootstrap.sh, src/commands.hxx: if can have a variable test or a
content check
* [r78] bootstrap.sh, src/commands.hxx:
if can have a variable test or a content check
2016-05-11 09:07
* ChangeLog, src/testgui.hxx, src/webpage.hxx: fix text-selection
to exists feature; ignore javascript popups
* [r77] ChangeLog, src/testgui.hxx, src/webpage.hxx:
fix text-selection to exists feature; ignore javascript popups
2016-05-05 09:58
* build-in-docker.sh: fixed build
* [r76] build-in-docker.sh:
fixed build
2016-05-05 09:48
* build-in-docker.sh: fixed build
* [r75] build-in-docker.sh:
fixed build
2016-05-05 09:23
* debian/control.in: xvfb is not required
* [r74] debian/control.in:
xvfb is not required
2016-05-05 09:12
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
build-in-docker.sh: update build system
* [r73] ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
build-in-docker.sh:
update build system
2016-05-03 06:52
* src/commands.hxx: some smaller fixes and improvements for joomla
testing
* [r72] src/commands.hxx:
some smaller fixes and improvements for joomla testing
2016-05-02 15:25
* src/commands.hxx, src/testgui.hxx: some smaller fixes and
improvements for joomla testing
* [r71] src/commands.hxx, src/testgui.hxx:
some smaller fixes and improvements for joomla testing
2016-05-02 11:02
* COPYING, ChangeLog, INSTALL, autogen.sh,
* [r70] COPYING, ChangeLog, INSTALL, autogen.sh[ADD],
ax_init_standard_project.m4, bootstrap.sh, build-in-docker.conf,
build-in-docker.sh, mac-create-app-bundle.sh,
resolve-debbuilddeps.sh, resolve-rpmbuilddeps.sh,
src/commands.hxx, src/testgui.hxx, src/version.cxx,
src/version.hxx: add new commane clear-cookies; select text on
testgui sets an expectation
src/version.hxx:
add new commane clear-cookies; select text on testgui sets an
expectation
2016-04-03 16:19
* configure.ac, debian/control.in: after svn-server restore
* [r69] configure.ac, debian/control.in:
after svn-server restore
2015-12-26 00:13 marc
* COPYING, ChangeLog, INSTALL, ax_init_standard_project.m4,
bootstrap.sh, build-in-docker.conf, build-in-docker.sh,
resolve-debbuilddeps.sh, src/version.cxx, src/version.hxx: fixed
build-in-docker
* [r68] COPYING, ChangeLog, INSTALL, ax_init_standard_project.m4,
bootstrap.sh, build-in-docker.conf[ADD], build-in-docker.sh,
resolve-debbuilddeps.sh, src/version.cxx, src/version.hxx:
fixed build-in-docker
2015-12-21 22:14 marc
* sql-to-dot.sed, test/runtests.sh, webtester.desktop.in: build in
docker
* [r67] sql-to-dot.sed[ADD], test/runtests.sh[ADD],
webtester.desktop.in[ADD]:
build in docker
2015-12-21 21:27 marc
* ChangeLog, src/commands.hxx: new command to set
offline-storage-path
* [r66] ChangeLog, src/commands.hxx:
new command to set offline-storage-path
2015-11-16 12:37 marc
* doc/doxyfile.in: SVG must not be interactive for embedding in
redmine
* [r65] doc/doxyfile.in:
SVG must not be interactive for embedding in redmine
2015-11-09 22:33 marc
* ChangeLog, bootstrap.sh, src/commands.hxx, src/exceptions.hxx,
src/webpage.hxx: allow local storage; prevent crash if line is
missing
* [r64] ChangeLog, bootstrap.sh, src/commands.hxx,
src/exceptions.hxx, src/webpage.hxx:
allow local storage; prevent crash if line is missing
2015-11-07 10:47 marc
* bootstrap.sh, debian/control.in: there is no qt4-default
* [r63] bootstrap.sh, debian/control.in:
there is no qt4-default
2015-11-07 09:23 marc
* bootstrap.sh: there is no qt4-default
* [r62] bootstrap.sh:
there is no qt4-default
2015-11-04 11:59 marc
* src/commands.hxx: removed empty lines and comments from test
results
* [r61] src/commands.hxx:
removed empty lines and comments from test results
2015-11-04 10:34 marc
* bootstrap.sh, build-in-docker.sh, configure.ac,
debian/control.in, examples, resolve-debbuilddeps.sh,
webtester.spec.in: build in docker tested
* [r60] bootstrap.sh, build-in-docker.sh[ADD], configure.ac,
debian/control.in, examples[DEL], resolve-debbuilddeps.sh,
webtester.spec.in[ADD]:
build in docker tested
2015-11-04 08:52 marc
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
configure.ac, examples, examples/makefile.am, makefile.am, test,
test/makefile.am: examples is test
* [r59] ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
configure.ac, examples, examples/makefile.am[ADD], makefile.am,
test[CPY], test/makefile.am:
examples is test
2015-11-03 21:54 marc
* debian/control.in: updated dependencies
* [r58] debian/control.in:
updated dependencies
2015-11-03 14:30 marc
* ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4,
* [r57] ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4,
bootstrap.sh, resolve-debbuilddeps.sh, src/commands.hxx,
src/testgui.hxx, src/testgui.ui: prepared for build in a docker
instance on jenkins
src/testgui.hxx, src/testgui.ui:
prepared for build in a docker instance on jenkins
2015-11-02 08:00 marc
* ChangeLog, debian/control.in: test requires xvfb-run
* [r56] ChangeLog, debian/control.in:
test requires xvfb-run
2015-11-02 00:01 marc
* AUTHORS, ChangeLog, bootstrap.sh, resolve-debbuilddeps.sh: new
author url
* [r55] AUTHORS, ChangeLog, bootstrap.sh, resolve-debbuilddeps.sh:
new author url
2015-10-11 19:45 marc
* examples/test-commands.wt: added test for multidimensional for
loop
* [r54] examples/test-commands.wt:
added test for multidimensional for loop
2015-10-11 15:28 marc
* bootstrap.sh, examples/test-commands.wt, src/commands.hxx: added
test for multidimensional for loop
* [r53] bootstrap.sh, examples/test-commands.wt, src/commands.hxx:
added test for multidimensional for loop
2015-10-10 18:05 marc
* bootstrap.sh, doc/doxyfile.in: no search index when embedded in
redmine
* [r52] bootstrap.sh, doc/doxyfile.in:
no search index when embedded in redmine
2015-10-10 15:27 marc
* examples/makefile.am: added xvfb-run to run on headless systems
* [r51] examples/makefile.am:
added xvfb-run to run on headless systems
2015-10-10 15:00 marc
* examples/SwissSign_Silver_CA_-_G2.pem, examples/ca.pem,
examples/client.key, examples/client.pem, examples/makefile.am,
examples/test-commands.wt, src/commands.hxx: new for loop
successfull tested
* [r50] examples/SwissSign_Silver_CA_-_G2.pem[DEL],
examples/ca.pem[ADD], examples/client.key[ADD],
examples/client.pem[ADD], examples/makefile.am,
examples/test-commands.wt, src/commands.hxx:
new for loop successfull tested
2015-10-10 14:09 marc
* ax_init_standard_project.m4, configure.ac, examples,
examples/SwissSign_Silver_CA_-_G2.pem, examples/makefile.am,
examples/test-commands.wt, makefile.am, src/commands.hxx,
src/webrunner.cxx: includes example and test; new command echo
* [r49] ax_init_standard_project.m4, configure.ac, examples[ADD],
examples/SwissSign_Silver_CA_-_G2.pem[ADD],
examples/makefile.am[ADD], examples/test-commands.wt[ADD],
makefile.am, src/commands.hxx, src/webrunner.cxx:
includes example and test; new command echo
2015-10-10 10:48 marc
* ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4,
bootstrap.sh, build-resource-file.sh, mac-create-app-bundle.sh,
resolve-debbuilddeps.sh, resolve-rpmbuilddeps.sh,
src/commands.hxx: new feature: «for»-loop; updated buildsystem
* [r48] ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4,
bootstrap.sh, build-resource-file.sh[ADD],
mac-create-app-bundle.sh[ADD], resolve-debbuilddeps.sh[ADD],
resolve-rpmbuilddeps.sh[ADD], src/commands.hxx:
new feature: «for»-loop; updated buildsystem
2015-10-09 15:01 marc
* src/commands.hxx, src/networkaccessmanager.hxx: unfinished: new
feature: for loop
* [r47] src/commands.hxx, src/networkaccessmanager.hxx:
unfinished: new feature: for loop
2015-07-12 18:38 marc
* debian/control.in: requires qt5
* [r46] debian/control.in:
requires qt5
2015-07-12 18:16 marc
* debian/control.in: requires qt5
* [r45] debian/control.in:
requires qt5
2015-05-20 15:22 marc
* src/commands.hxx: some bugs fixed, logging is quite good now
* [r44] src/commands.hxx:
some bugs fixed, logging is quite good now
2015-05-20 14:35 marc
* src/commands.hxx: fixed stupid error in Do::execute; nicer
logging
* [r43] src/commands.hxx:
fixed stupid error in Do::execute; nicer logging
2015-05-20 11:52 marc
* src/commands.hxx, src/exceptions.hxx, src/testgui.hxx,
src/webrunner.cxx: improved logging, bugfix in function handling
* [r42] src/commands.hxx, src/exceptions.hxx, src/testgui.hxx,
src/webrunner.cxx:
improved logging, bugfix in function handling
2015-05-19 14:34 marc
* src/commands.hxx, src/testgui.hxx: click has an optional
clicktype; do has an optional selector; better detection and
handling of moo-tool (joomla3) elements
* [r41] src/commands.hxx, src/testgui.hxx:
click has an optional clicktype; do has an optional selector;
better detection and handling of moo-tool (joomla3) elements
2015-05-11 12:13 marc
* src/commands.hxx, src/exceptions.hxx: new command check to
compare two values or to compare a value to the result of a
command - command call now returns the value of the last
statement
* [r40] src/commands.hxx, src/exceptions.hxx:
new command check to compare two values or to compare a value to
the result of a command - command call now returns the value of
the last statement
2015-05-11 09:54 marc
* ChangeLog, doc/makefile.amto, src/commands.hxx: now also supports
optional else after command if
* [r39] ChangeLog, doc/makefile.amto[DEL], src/commands.hxx:
now also supports optional else after command if
2015-05-09 12:27 marc
* ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4,
bootstrap.sh, doc/makefile.amto, src/commands.hxx,
src/testgui.hxx, src/webrunner.cxx: new commands testsuite and
testcase
* [r38] ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4,
bootstrap.sh, doc/makefile.amto[ADD], src/commands.hxx,
src/testgui.hxx, src/webrunner.cxx:
new commands testsuite and testcase
2015-05-08 15:34 marc
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
* [r37] ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
docker/Dockerfile, src/commands.hxx, src/exceptions.hxx,
src/testgui.hxx: new feature: if tatement for conditions in
functions
src/testgui.hxx:
new feature: if tatement for conditions in functions
2015-05-06 23:09 marc
* ChangeLog, bootstrap.sh, doc/doxyfile.in,
scripts/doxygen-webtester.sed, scripts/example.wt,
scripts/makefile.am: better doxygen support
* [r36] ChangeLog, bootstrap.sh, doc/doxyfile.in,
scripts/doxygen-webtester.sed, scripts/example.wt[DEL],
scripts/makefile.am:
better doxygen support
2015-05-06 16:56 marc
* debian/control.in: reprepo requires a section
* [r35] debian/control.in:
reprepo requires a section
2015-05-06 14:51 marc
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
configure.ac, makefile.am, scripts,
scripts/doxygen-webtester.sed, scripts/example.wt,
scripts/makefile.am: added doxygen-webtester.sed do generate
doxygen from webtester files
* [r34] ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
configure.ac, makefile.am, scripts[ADD],
scripts/doxygen-webtester.sed[ADD], scripts/example.wt[ADD],
scripts/makefile.am[ADD]:
added doxygen-webtester.sed do generate doxygen from webtester
files
2015-05-06 07:56 marc
* ChangeLog, debian/.dirs, debian/.install, debian/webtester.dirs,
debian/webtester.install: no need for install and dirs in debian
* [r33] ChangeLog, debian/.dirs[DEL], debian/.install[DEL],
debian/webtester.dirs[DEL], debian/webtester.install[DEL]:
no need for install and dirs in debian
2015-05-05 20:31 marc
* ax_init_standard_project.m4, bootstrap.sh, configure.ac, debian,
debian/.dirs, debian/.install, debian/changelog.in,
debian/compat, debian/control.in, debian/docs, debian/rules,
debian/webtester.dirs, debian/webtester.install: some build
environment updates
* [r32] ax_init_standard_project.m4, bootstrap.sh, configure.ac,
debian, debian/.dirs[ADD], debian/.install[ADD],
debian/changelog.in[ADD], debian/compat[ADD],
debian/control.in[ADD], debian/docs[ADD], debian/rules[ADD],
debian/webtester.dirs[ADD], debian/webtester.install[ADD]:
some build environment updates
2015-05-05 15:06 marc
* README, ax_check_qt.m4, ax_init_standard_project.m4,
* [r31] README, ax_check_qt.m4, ax_init_standard_project.m4,
bootstrap.sh, src/version.cxx, src/version.hxx,
src/webrunner.cxx: massively improved build system
src/webrunner.cxx:
massively improved build system
2015-05-05 08:30 marc
* ChangeLog, README, ax_check_qt.m4, ax_cxx_compile_stdcxx_11.m4,
ax_init_standard_project.m4, bootstrap.sh, configure.ac, debian,
debian/changelog.in, debian/compat, debian/control.in,
debian/docs, debian/rules, debian/webtester.dirs,
debian/webtester.install, doc, doc/doxyfile.in, doc/makefile.am,
* [r30] ChangeLog, README, ax_check_qt.m4[ADD],
ax_cxx_compile_stdcxx_11.m4[ADD],
ax_init_standard_project.m4[ADD], bootstrap.sh, configure.ac,
debian, debian/changelog.in[ADD], debian/compat[ADD],
debian/control.in[ADD], debian/docs[ADD], debian/rules[ADD],
debian/webtester.dirs[ADD], debian/webtester.install[ADD],
doc[ADD], doc/doxyfile.in[ADD], doc/makefile.am[ADD],
docker/Dockerfile, makefile.am, src/makefile.am, src/testgui.hxx,
src/version.cxx, src/version.hxx, src/web.ui, src/webrunner.cxx:
src/version.cxx[ADD], src/version.hxx[ADD], src/web.ui[DEL],
src/webrunner.cxx:
new build system
2015-05-03 20:32 marc
* src/commands.hxx, src/exceptions.hxx, src/testgui.hxx: new
feature: define and call functions using the two new commands
* [r29] src/commands.hxx, src/exceptions.hxx, src/testgui.hxx:
new feature: define and call functions using the two new commands
function and call
2015-04-30 14:25 marc
* configure.ac, docker, docker/Dockerfile, docker/runtests.sh,
src/commands.hxx, src/testgui.hxx, src/testgui.ui,
src/webrunner.cxx, src/webtester.cxx: More features: have a
seperate setup script, where global variable replacements can be
placed, new commandline parameters, command window, better
recording, chose click type, ...
* [r28] configure.ac, docker[ADD], docker/Dockerfile[ADD],
docker/runtests.sh[ADD], src/commands.hxx, src/testgui.hxx,
src/testgui.ui, src/webrunner.cxx, src/webtester.cxx:
More features: have a seperate setup script, where global
variable replacements can be placed, new commandline parameters,
command window, better recording, chose click type, ...
2015-04-24 14:39 marc
* src/commands.hxx, src/exceptions.hxx,
* [r27] src/commands.hxx, src/exceptions.hxx,
src/networkaccessmanager.hxx, src/testgui.hxx, src/webtester.cxx:
some more improvements, new commands, new simpler ecpect load
command, certificate handling for self signed ca plus for client
@ -302,121 +333,143 @@
2015-04-02 14:28 marc
* src/networkaccessmanager.hxx: more information in cae of network
error
* [r26] src/networkaccessmanager.hxx:
more information in cae of network error
2015-04-02 09:42 marc
* src/commands.hxx: new command «certificate» to install CA
certificate for SSL - file needs to be open ...
* [r25] src/commands.hxx:
new command «certificate» to install CA certificate for SSL -
file needs to be open ...
2015-04-02 09:07 marc
* src/commands.hxx: new command «certificate» to install CA
certificate for SSL - need to register the new class ...
* [r24] src/commands.hxx:
new command «certificate» to install CA certificate for SSL -
need to register the new class ...
2015-04-02 08:25 marc
* src/commands.hxx: new command «certificate» to install CA
certificate for SSL
* [r23] src/commands.hxx:
new command «certificate» to install CA certificate for SSL
2015-04-02 08:25 marc
* src/commands.hxx: new command «certificate» to install CA
certificate for SSL
* [r22] src/commands.hxx:
new command «certificate» to install CA certificate for SSL
2015-04-02 07:45 marc
* src/commands.hxx, src/exceptions.hxx, src/testgui.hxx: new
command «certificate» to install CA certificate for SSL
* [r21] src/commands.hxx, src/exceptions.hxx, src/testgui.hxx:
new command «certificate» to install CA certificate for SSL
2015-03-04 15:31 marc
* src/commands.hxx, src/testgui.ui: added date/time to attachment
file names, so the images are sorted correctly
* [r20] src/commands.hxx, src/testgui.ui:
added date/time to attachment file names, so the images are
sorted correctly
2015-02-27 15:39 marc
* src/commands.hxx, src/testgui.hxx: detect and handle
Moo-Tools-Comboboxes
* [r19] src/commands.hxx, src/testgui.hxx:
detect and handle Moo-Tools-Comboboxes
2015-02-24 08:54 marc
* debian/control.in: precise: QCommandLineParser: No such file or
directory - minimum requirement ist Qt 5.2
* [r18] debian/control.in:
precise: QCommandLineParser: No such file or directory - minimum
requirement ist Qt 5.2
2015-02-24 08:48 marc
* debian/control.in: precise: QCommandLineParser: No such file or
directory
* [r17] debian/control.in:
precise: QCommandLineParser: No such file or directory
2015-02-24 08:40 marc
* debian/control.in: Project ERROR: Unknown module(s) in QT: quick
* [r16] debian/control.in:
Project ERROR: Unknown module(s) in QT: quick
2015-02-24 08:04 marc
* debian/control.in: Project ERROR: Unknown module(s) in QT: quick
* [r15] debian/control.in:
Project ERROR: Unknown module(s) in QT: quick
2015-02-23 16:31 marc
* debian/control.in: qtchooser is sufficient
* [r14] debian/control.in:
qtchooser is sufficient
2015-02-23 16:27 marc
* debian/control.in: svn2cl not available in old distributions
* [r13] debian/control.in:
svn2cl not available in old distributions
2015-02-23 14:01 marc
* configure.ac: fix choosing qt
* [r12] configure.ac:
fix choosing qt
2015-02-23 13:40 marc
* configure.ac, src/webtester.pro: fix choosing qt
* [r11] configure.ac, src/webtester.pro:
fix choosing qt
2015-02-23 13:00 marc
* src/makefile.am: makefile fixed
* [r10] src/makefile.am:
makefile fixed
2015-02-23 12:52 marc
* README: README filled
* [r9] README:
README filled
2015-02-23 12:18 marc
* configure.ac, debian/control.in, src/makefile.am: qt detection
* [r8] configure.ac, debian/control.in, src/makefile.am:
qt detection
2015-02-16 09:19 marc
* debian/control.in: better definition of deb-dependencies
* [r7] debian/control.in:
better definition of deb-dependencies
2015-02-06 15:50 marc
* src/makefile.am: make distcheck works
* [r6] src/makefile.am:
make distcheck works
2015-02-06 15:00 marc
* AUTHORS, COPYING, ChangeLog, INSTALL, NEWS, README, bootstrap.sh,
configure.ac, debian, debian/changelog.in, debian/compat,
debian/control.in, debian/docs, debian/rules, makefile.am,
src/makefile, src/makefile.am: ready to build debian packages
* [r5] AUTHORS[ADD], COPYING[ADD], ChangeLog[ADD], INSTALL[ADD],
NEWS[ADD], README[ADD], bootstrap.sh[ADD], configure.ac[ADD],
debian[ADD], debian/changelog.in[ADD], debian/compat[ADD],
debian/control.in[ADD], debian/docs[ADD], debian/rules[ADD],
makefile.am[ADD], src/makefile[DEL], src/makefile.am[CPY]:
ready to build debian packages
2015-02-05 14:53 marc
* src/makefile: 1st makefile
* [r4] src/makefile[ADD]:
1st makefile
2015-02-04 14:05 marc
* src/webrunner.cxx: successful build
* [r3] src/webrunner.cxx:
successful build
2015-02-04 14:01 marc
* src, src/commands.hxx, src/exceptions.hxx,
src/networkaccessmanager.hxx, src/testgui.hxx, src/testgui.ui,
src/web.ui, src/webpage.hxx, src/webrunner.cxx,
src/webtester.cxx, src/webtester.pro: initial sources
* [r2] src[ADD], src/commands.hxx[ADD], src/exceptions.hxx[ADD],
src/networkaccessmanager.hxx[ADD], src/testgui.hxx[ADD],
src/testgui.ui[ADD], src/web.ui[ADD], src/webpage.hxx[ADD],
src/webrunner.cxx[ADD], src/webtester.cxx[ADD],
src/webtester.pro[ADD]:
initial sources
2015-02-04 13:48 marc
* .: initial
* [r1] .[ADD]:
initial

@ -1 +1 @@
/usr/share/automake-1.14/INSTALL
/usr/share/automake-1.15/INSTALL

@ -4,12 +4,16 @@
#
# SYNOPSIS
#
# AX_REQUIRE_STDCXX_11
# AX_REQUIRE_STDCXX_14
# AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
# AX_CXX_COMPILE_STDCXX_14([ext|noext],[mandatory|optional])
#
# DESCRIPTION
#
# Check for baseline language coverage in the compiler for the C++11
# standard; if necessary, add switches to CXXFLAGS to enable support.
# or C++14 standard; if necessary, add switches to CXXFLAGS to
# enable support.
#
# The first argument, if specified, indicates whether you insist on an
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
@ -131,3 +135,97 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
AC_SUBST(HAVE_CXX11)
fi
])
AC_DEFUN([AX_CXX_COMPILE_STDCXX_14], [dnl
m4_if([$1], [], [],
[$1], [ext], [],
[$1], [noext], [],
[m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_14])])dnl
m4_if([$2], [], [ax_cxx_compile_cxx14_required=true],
[$2], [mandatory], [ax_cxx_compile_cxx14_required=true],
[$2], [optional], [ax_cxx_compile_cxx14_required=false],
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_14])])dnl
AC_LANG_PUSH([C++])dnl
ac_success=no
AC_CACHE_CHECK(whether $CXX supports C++14 features by default,
ax_cv_cxx_compile_cxx14,
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
[ax_cv_cxx_compile_cxx14=yes],
[ax_cv_cxx_compile_cxx14=no])])
if test x$ax_cv_cxx_compile_cxx14 = xyes; then
ac_success=yes
fi
m4_if([$1], [noext], [], [dnl
if test x$ac_success = xno; then
for switch in -std=gnu++14 -std=gnu++0y; do
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx14_$switch])
AC_CACHE_CHECK(whether $CXX supports C++14 features with $switch,
$cachevar,
[ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $switch"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
[eval $cachevar=yes],
[eval $cachevar=no])
CXXFLAGS="$ac_save_CXXFLAGS"])
if eval test x\$$cachevar = xyes; then
CXXFLAGS="$CXXFLAGS $switch"
ac_success=yes
break
fi
done
fi])
m4_if([$1], [ext], [], [dnl
if test x$ac_success = xno; then
for switch in -std=c++14 -std=c++0y; do
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx14_$switch])
AC_CACHE_CHECK(whether $CXX supports C++14 features with $switch,
$cachevar,
[ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $switch"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
[eval $cachevar=yes],
[eval $cachevar=no])
CXXFLAGS="$ac_save_CXXFLAGS"])
if eval test x\$$cachevar = xyes; then
CXXFLAGS="$CXXFLAGS $switch"
ac_success=yes
break
fi
done
fi])
AC_LANG_POP([C++])
if test x$ax_cxx_compile_cxx14_required = xtrue; then
if test x$ac_success = xno; then
AC_MSG_ERROR([*** A compiler with support for C++14 language features is required.])
fi
else
if test x$ac_success = xno; then
HAVE_CXX14=0
AC_MSG_NOTICE([No compiler with C++14 support was found])
AX_CXX_COMPILE_STDCXX_11([$1], [optional])
else
HAVE_CXX11=1
HAVE_CXX14=1
AC_DEFINE(HAVE_CXX14,1,
[define if the compiler supports basic C++14 syntax])
AC_DEFINE(HAVE_CXX11,1,
[define if the compiler supports basic C++14 syntax])
fi
AC_SUBST(HAVE_CXX11)
AC_SUBST(HAVE_CXX14)
fi
])
AC_DEFUN([AX_REQUIRE_STDCXX_11], [
if test x${HAVE_CXX11} != x1; then
AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.])
fi
])
AC_DEFUN([AX_REQUIRE_STDCXX_14], [
if test x${HAVE_CXX14} != x1; then
AC_MSG_ERROR([*** A compiler with support for C++14 language features is required.])
fi
])

@ -7,7 +7,7 @@
m4_define([mrw_esyscmd_s], [m4_normalize(m4_esyscmd([$1]))])
# define least version number from subversion's revision number:
# it is taken modulo 256 due to a bug on Apple's MacOSX
# it is taken modulo 256 due to a bug on Apple's MaxOSX
m4_define(x_least, m4_ifdef([x_least_fix], [x_least_fix],
m4_ifdef([x_least_diff],
mrw_esyscmd_s([
@ -36,10 +36,7 @@ m4_define(x_least, m4_ifdef([x_least_fix], [x_least_fix],
fi
done
# Mac does not support LEAST > 255
echo $ECHO_N $(($VCS_REVISION%256))
])
)
))
echo $ECHO_N $(($VCS_REVISION%256))]))))
# define version number from subversion's revision number:
# it is taken modulo 256 due to a bug on Apple's MacOSX
@ -57,8 +54,8 @@ m4_define(x_minor_diff, m4_ifdef([x_least_fix], 0, mrw_esyscmd_s([
fi;
done
# Mac does not support LEAST > 255
echo $ECHO_N $(($VCS_REVISION/256))
])))
echo $ECHO_N $(($VCS_REVISION/256))])))
# setup version number
m4_define(x_version, [x_major.m4_ifdef([x_least_diff], x_minor, m4_eval(x_minor+x_minor_diff)).m4_eval(m4_ifdef([x_least_diff], [x_least-x_least_diff], [x_least]))])
@ -129,7 +126,7 @@ AC_DEFUN([AX_SUBST], [
# m4_define(x_minor, MINOR_NUMBER) # project's minor version
# m4_include(ax_init_standard_project.m4)
# AC_INIT(x_package_name, x_version, x_bugreport, x_package_name)
# AM_INIT_AUTOMAKE([1.9 tar-pax])
# AM_INIT_AUTOMAKE([1.9 tar-pax parallel-tests color-tests])
# AX_INIT_STANDARD_PROJECT
#
# you change nothing but: YOUR_PACKAGE_NAME, MAJOR_NUMBER, MINOR_NUMBER
@ -170,15 +167,61 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
AM_CPPFLAGS+=" '-DMAKE_STRING(X)=\#X' '-DNAMESPACE=${PACKAGE_TARNAME//[^a-zA-Z0-9]/_}'"
AX_SUBST(NUMBERS)
AX_SUBST(HOME)
README=$(tail -n +3 README)
if test -f README.md; then
README=$(tail -n +3 README.md)
DESCRIPTION=$(head -1 README.md)
else
README=$(tail -n +3 README)
DESCRIPTION=$(head -1 README)
fi
README_ESCAPED=$(echo "$README" | sed ':a;N;$!ba;s/\n/\\n/g;s,",\\",g')
if which pandoc 2>&1 > /dev/null; then
README_HTML=$(echo "$README" | pandoc -f markdown_github -t html | sed ':a;N;$!ba;s,\\\(.\),\\\\<span>\1</span>,g;s/\n/\\n/g;s,",\\",g;s, ,\&nbsp;\&nbsp;,g')
else
README_HTML="${README}"
fi
AX_SUBST(README)
_AM_SUBST_NOTMAKE([README])
DESCRIPTION=$(head -1 README)
AX_SUBST(README_ESCAPED)
_AM_SUBST_NOTMAKE([README_ESCAPED])
AX_SUBST(README_HTML)
_AM_SUBST_NOTMAKE([README_HTML])
AX_SUBST(DESCRIPTION)
_AM_SUBST_NOTMAKE([DESCRIPTION])
LICENSE=$(echo $(head -1 COPYING))
AX_SUBST(LICENSE)
COPYING=$(<COPYING)
AX_SUBST(COPYING)
_AM_SUBST_NOTMAKE([COPYING])
CHANGELOG=$(<ChangeLog)
AC_SUBST(CHANGELOG)
_AM_SUBST_NOTMAKE([CHANGELOG])
DEB_CHANGELOG=$(sed '/^[[^\t]]/{h;N;d};s,\t, ,g;/^ \* /{s,,,;H;g;s,^, * ,;s,\n\([[^ ]]*\) *, \1\n ,}' ChangeLog)
if test -z "$DEB_CHANGELOG"; then
DEB_CHANGELOG=" * see file ChangeLog and project management web site"
fi
AC_SUBST(DEB_CHANGELOG)
_AM_SUBST_NOTMAKE([DEB_CHANGELOG])
AUTHOR=$(head -1 AUTHORS)
AUTHOR_NAME=$(echo $AUTHOR | sed 's, *[[<(]].*$,,')
AUTHOR_URL=$(echo $AUTHOR | sed 's,.*(\(http[[^)]]*\)).*,\1,')
AUTHOR_MAIL=$(echo $AUTHOR | sed 's,.*<\(.*@.*\)>.*,\1,')
PACKAGER=$(gpg -K --display-charset utf-8 --lock-never 2>/dev/null | sed -n 's,uid *\(\[[ultimate\]] *\)\?,,p' | head -1)
if test -z "${PACKAGER}"; then
PACKAGER="$AUTHOR"
fi
AX_SUBST(AUTHOR)
_AM_SUBST_NOTMAKE([AUTHOR])
AX_SUBST(AUTHOR_NAME)
AX_SUBST(AUTHOR_URL)
AX_SUBST(AUTHOR_MAIL)
AX_SUBST(PACKAGER)
PROJECT_URL="${PROJECT_URL:-${AUTHOR_URL}/projects/${PACKAGE_NAME}}"
SOURCE_DOWNLOAD="${SOURCE_DOWNLOAD:-${AUTHOR_URL}/downloads/${PACKAGE_NAME}}"
AX_SUBST(PROJECT_URL)
AX_SUBST(SOURCE_DOWNLOAD)
VENDOR=$((lsb_release -is 2>/dev/null || echo unknown) | tr ' ' '_')
AX_SUBST(VENDOR)
DISTRO=$(lsb_release -sc 2>/dev/null || uname -s 2>/dev/null)
AX_SUBST(DISTRO)
ARCH=$((@<:@@<:@ $(uname -sm) =~ 64 @:>@@:>@ && echo amd64) || (@<:@@<:@ $(uname -sm) =~ 'i?86' @:>@@:>@ && echo i386 || uname -sm))
@ -242,6 +285,25 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
else
AM_CPPFLAGS="${AM_CPPFLAGS} -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG"
fi
AC_ARG_WITH(gcov,
[AS_HELP_STRING([--with-gcov=FILE],
[enable gcov, set gcov file (defaults to gcov)])],
[GCOV="$enableval"], [GCOV="no"])
AM_CONDITIONAL(COVERAGE, test "$GCOV" != "no")
if test "$GCOV" != "no"; then
if test "$GCOV" == "yes"; then
GCOV=gcov
fi
AC_CHECK_PROG(has_gcov, [$GCOV], [yes], [no])
if test "$has_gcov" != "yes"; then
AC_MSG_ERROR([gcov: program $GCOV not found])
fi
AC_MSG_NOTICE([Coverage tests enabled, using ${GCOV}]);
AM_CXXFLAGS="${AM_CXXFLAGS:-} -O0 --coverage -fprofile-arcs -ftest-coverage"
AM_LDFLAGS="${AM_LDFLAGS} -O0 --coverage -fprofile-arcs"
AX_SUBST(GCOV)
fi
if test -f ${PACKAGE_NAME}.desktop.in; then
AC_CONFIG_FILES([${PACKAGE_NAME}.desktop])
@ -273,7 +335,7 @@ EOF
AC_DEFUN([AX_USE_CXX], [
m4_include(ax_cxx_compile_stdcxx_11.m4)
AC_LANG(C++)
AX_CXX_COMPILE_STDCXX_11(noext, optional)
AX_CXX_COMPILE_STDCXX_14(noext, optional)
AC_PROG_CXX
AC_PROG_CPP
@ -362,7 +424,7 @@ EOF
# use this in configure.ac to support CppUnit for C++ unit tests
AC_DEFUN([AX_USE_CPPUNIT], [
AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"])
PKG_CHECK_MODULES(CPPUNIT, cppunit, [have_cppunit="yes"], [have_cppunit="no"])
# infos and warnings
if test "$have_cppunit" = "no"; then
AC_MSG_WARN([Missing cppunit development library!
@ -383,6 +445,47 @@ maintainer-clean-example-targets:
EOF
])
# use this in configure.ac to support NodeJS
AC_DEFUN([AX_USE_NODEJS], [
AC_PATH_PROG(ANDROID, [android], [0],
[${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools])
AC_CONFIG_FILES([nodejs/package.json])
AC_CONFIG_FILES([nodejs/makefile])
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-nodejs-targets], [nodejs/makefile.in])
test -f nodejs/makefile.in && cat >> nodejs/makefile.in <<EOF
#### Begin: Appended by $0
maintainer-clean-nodejs-targets:
-rm makefile.in
#### End: $0
EOF
])
# use this in configure.ac to support Cordova
AC_DEFUN([AX_USE_CORDOVA], [
AC_PATH_PROG(ANDROID, [android], [0],
[${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools])
AC_PATH_PROG(CORDOVA, [cordova], [0],
[${PATH}${PATH_SEPARATOR}$(pwd)/node_modules/cordova/bin])
if test ${CORDOVA} = 0; then
AC_MSG_WARN([cordova is missing, on ubuntu install cordova-cli from repository ppa:cordova-ubuntu/ppa])
fi
if test ${ANDROID} = 0; then
AC_MSG_WARN([android sdk is missing, set variable ANDROID_HOME after installation])
fi
AM_CONDITIONAL(HAVE_CORDOVA, [test ${CORDOVA} != 0 -a ${ANDROID} != 0])
AX_SUBST(CORDOVA)
AC_CONFIG_FILES([cordova/makefile])
AC_CONFIG_FILES([cordova/config.xml])
EOF
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-cordova-targets], [cordova/makefile.in])
test -f cordova/makefile.in && cat >> cordova/makefile.in <<EOF
#### Begin: Appended by $0
maintainer-clean-cordova-targets:
-rm makefile.in
#### End: $0
EOF
])
# use this in configure.ac to support HTML data for webservers
AC_DEFUN([AX_BUILD_HTML], [
AC_CONFIG_FILES([html/makefile])
@ -425,7 +528,11 @@ EOF
# use this in configure.ac to support debian packages
AC_DEFUN([AX_USE_DEBIAN_PACKAGING], [
README_DEB=$(tail -n +3 README | sed -e 's/^ *$/./g' -e 's/^/ /g')
if test -f README.md; then
README_DEB=$(tail -n +3 README.md | sed -e 's/^ *$/./g' -e 's/^/ /g')
else
README_DEB=$(tail -n +3 README | sed -e 's/^ *$/./g' -e 's/^/ /g')
fi
AC_SUBST(README_DEB)
_AM_SUBST_NOTMAKE([README_DEB])
AC_CONFIG_FILES([debian/changelog debian/control])
@ -455,6 +562,7 @@ AC_DEFUN([AX_USE_RPM_PACKAGING], [
EXTRA_DIST += \${PACKAGE_NAME}.spec.in
rpm: dist
rpmbuild -ba --define "_topdir \$\$(pwd)" --define "_sourcedir \$\$(pwd)" \${PACKAGE_NAME}.spec
rpmsign --define "_gpg_name \${PACKAGER}" --addsign RPMS/*/*.rpm SRPMS/*.rpm
clean-rpm-targets:
-rm -rf BUILD BUILDROOT RPMS SPECS SRPMS
distclean-rpm-targets:
@ -473,6 +581,7 @@ AC_DEFUN([AX_USE_DOXYGEN], [
AC_CHECK_PROG(have_doxygen, doxygen, yes, no)
AC_CHECK_PROG(have_dot, dot, yes, no)
AC_CHECK_PROG(have_mscgen, mscgen, yes, no)
AM_CONDITIONAL(NEED_PLANTUML, test "$have_doxygen" = "yes" -a "1.8.11" != $((echo "1.8.11"; doxygen -v) | sort -V | head -1))
PDF_DOC=${PACKAGE_NAME}-${PACKAGE_VERSION}.pdf
AC_SUBST(PDF_DOC)
if test "$have_doxygen" = "no"; then
@ -487,22 +596,38 @@ AC_DEFUN([AX_USE_DOXYGEN], [
AC_MSG_WARN([Missing program mscgen!
- when you rebild documentation, there are no message state charts
- there are precompiled derived files in the distribution]); fi
AC_CONFIG_FILES([doc/makefile doc/doxyfile])
AC_CONFIG_FILES([doc/makefile doc/doxyfile doc/header.html doc/footer.html])
AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-documentation], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-documentation], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-documentation], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([install-data-am], [install-data-documentation], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-am], [uninstall-documentation], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([all], [doc], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([.PHONY], [pdf], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([.PHONY], [pdf gen-uml-images], [doc/makefile.in])
test -f doc/makefile.in && cat >> doc/makefile.in <<EOF
#### Begin: Appended by $0
doc: doxyfile
doc: doxyfile @NEED_PLANTUML_TRUE@ gen-uml-images
@NEED_PLANTUML_TRUE@ doxyadd() { grep -q "\$\$[1] += \$\$[2]" doxyfile || sed -i '/^'"\$\$[1]"' *=/a'"\$\$[1]"' += '"\$\$[2]" doxyfile; }; \\
@NEED_PLANTUML_TRUE@ doxyadd ALIASES '"startuml{1}=@image html \\\\1\\\\n@image latex \\\\1\\\\n\\\\if DontIgnorePlantUMLCode"'; \\
@NEED_PLANTUML_TRUE@ doxyadd ALIASES '"enduml=\\\\endif"'; \\
@NEED_PLANTUML_TRUE@ doxyadd IMAGE_PATH '"gen-uml-images"';
doxygen doxyfile
@PEDANTIC_TRUE@ test \! -s doxygen.errors
@NEED_PLANTUML_TRUE@EXTRA_DIST = ${EXTRA_DIST} plantuml.jar
@NEED_PLANTUML_TRUE@
@NEED_PLANTUML_TRUE@gen-uml-images:
@NEED_PLANTUML_TRUE@ test -d gen-uml-images || mkdir gen-uml-images
@NEED_PLANTUML_TRUE@ eval \$\$(sed -n 's, *INPUT *\\(+\\?\\)= *\\(.*\\),INPUT\\1=" \\2",gp' doxyfile); \\
@NEED_PLANTUML_TRUE@ eval \$\$(sed -n 's, *FILE_PATTERNS *\\(+\\?\\)= *\\(.*\\),FILE_PATTERNS\\1=" \\2",gp' doxyfile); \\
@NEED_PLANTUML_TRUE@ SOURCES="**.("\$\$(echo \$\${FILE_PATTERNS} | sed 's,*.,,g;s, ,|,g')")"; \\
@NEED_PLANTUML_TRUE@ for src in \$\$INPUT; do \\
@NEED_PLANTUML_TRUE@ java -Djava.awt.headless=true -jar \${top_srcdir}/doc/plantuml.jar -v -o \$\$(pwd)/gen-uml-images "\$\$src/\$\$SOURCES"; \\
@NEED_PLANTUML_TRUE@ done
clean-documentation:
-rm doxygen.errors @PDF_DOC@
@NEED_PLANTUML_TRUE@ -rm -rf gen-uml-images
distclean-documentation:
-rm -r html
-rm @PACKAGE_NAME@.doxytag
@ -519,6 +644,55 @@ uninstall-documentation:
EOF
])
# use this in configure.ac to support Doxygen documentation generation
AC_DEFUN([AX_USE_PERLDOC], [
PERL_SOURCES="m4_default([$1], [perl])"
AX_SUBST(PERL_SOURCES)
if test -z "$PERL_SOURCES"; then
AC_MSG_ERROR([You must specify the path to perl files
- use [AX]_[USE]_PERLDOC([[pathes to perldoc]])]); fi
AC_CHECK_PROG(have_perldoc, pods2html, yes, no)
if test "$have_doxygen" = "no"; then
AC_MSG_WARN([Missing program pods2html!
- you cannot rebuild the documentation
- there are precompiled derived files in the distribution
- if you need to generate documentation, install libpod-tree-perl]); fi
AC_CONFIG_FILES([doc/makefile])
AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-perldoc], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-perldoc], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([install-data-am], [install-data-perldoc], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-am], [uninstall-perldoc], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([all], [doc], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([.PHONY], [doc], [doc/makefile.in])
test -f doc/makefile.in && cat >> doc/makefile.in <<EOF
#### Begin: Appended by $0
doc: perldoc/index.html
perldoc/index.html: \${PERL_SOURCES:%=perldoc/%}
echo "<html><head><title>Perl Documentation</title></head><body><h1>Perl Documentation</h1><ul>" > perldoc/index.html
for p in \${PERL_SOURCES:%=perldoc/%}; do \
echo '<li><a href="'"\$\${p#perldoc/}"'/index.html">'"\$\${p#perldoc/}"'</a></li>' >> perldoc/index.html; \
done
echo "</ul></body></html>" >> perldoc/index.html
perldoc/%:
pods2html --notoc --empty --index index @top_srcdir@/\${@:perldoc/%=%} \$[@]
distclean-perldoc:
-rm -r perldoc
maintainer-clean-perldoc:
-rm makefile.in
install-data-perldoc:
test -d \$(DESTDIR)\${docdir} || mkdir -p \$(DESTDIR)\${docdir}
chmod -R u+w \$(DESTDIR)\${docdir}
cp -r perldoc \$(DESTDIR)\${docdir}/
uninstall-perldoc:
-chmod -R u+w \$(DESTDIR)\${docdir}
-rm -rf \$(DESTDIR)\${docdir}/perldoc
#### End: $0
EOF
])
# require a specific package, with fallback: test for a header
# - parameter:
# $1 = unique id (no special characters)

@ -129,6 +129,7 @@ GENERATED FILES
* ax_init_standard_project.m4 - auxiliary macro definition file
* ax_cxx_compile_stdcxx_11.m4 - auxiliary macro definition file
* ax_check_qt.m4 - auxiliary macro definition file
* makefile_test.inc.am - makefile to be included in tests
* resolve-debbuilddeps.sh - script to install debian package dependencies
* resolve-rpmbuilddeps.sh - script to install RPM package dependencies
* build-in-docker.sh - script to build the project encapsulated in a docker container
@ -148,9 +149,30 @@ GENERATED FILES
* src/version.cxx - if you enabled AX_USE_CXX
* html/makefile.am - if you enabled AX_BUILD_HTML
* scripts/makefile.am - if you enabled AX_USE_SCRIPTS
* doc/makefile.am - if you enabled AX_USE_DOXYGEN
* nodejs/makefile.am - if you add AX_USE_NODEJS
* nodejs/${DEFAULT_PROJECT_NAME}.js - if you add AX_USE_NODEJS
* nodejs/package.json.in - if you add AX_USE_NODEJS
* nodejs/etc/${DEFAULT_PROJECT_NAME}.json - if you add AX_USE_NODEJS
* nodejs/etc/default/${DEFAULT_PROJECT_NAME} - if you add AX_USE_NODEJS
* nodejs/etc/init/${DEFAULT_PROJECT_NAME}.conf - if you add AX_USE_NODEJS
* nodejs/etc/systemd/system/${DEFAULT_PROJECT_NAME}.service - if you add AX_USE_NODEJS
* nodejs/public - if you add AX_USE_NODEJS
* nodejs/public/images - if you add AX_USE_NODEJS
* nodejs/public/javascripts/${DEFAULT_PROJECT_NAME}.js - if you add AX_USE_NODEJS
* nodejs/public/stylesheets/style.styl - if you add AX_USE_NODEJS
* nodejs/routes/index.js - if you add AX_USE_NODEJS
* nodejs/sockets/index.js - if you add AX_USE_NODEJS
* nodejs/views/index.ejs - if you add AX_USE_NODEJS
* nodejs/views/layout.ejs - if you add AX_USE_NODEJS
* nodejs/node_modules - if you add AX_USE_NODEJS
* doc/makefile.am - if you enabled AX_USE_DOXYGEN or AX_USE_PERLDOC
* doc/doxyfile.in - if you enabled AX_USE_DOXYGEN
* test/makefile.am - if you enabled AX_BUILD_TEST or AX_USE_CPPUNIT
* doc/header.html.in - if you enabled AX_USE_DOXYGEN
* doc/footer.html.in - if you enabled AX_USE_DOXYGEN
* doc/style.css - if you enabled AX_USE_DOXYGEN
* doc/plantuml.jar - if you enable AX_USE_DOXYGEN
* test/makefile.am - if you enabled AX_USE_CPPUNIT and AX_USE_CXX
* test/${DEFAULT_PROJECT_NAME#lib}.cxx - if you enabled AX_BUILD_TEST or AX_USE_CPPUNIT
* examples/makefile.am - if you enabled AX_BUILD_EXAMPLES
* debian/changelog.in - if you enabled AX_USE_DEBIAN_PACKAGING
* debian/control.in - if you enabled AX_USE_DEBIAN_PACKAGING
@ -191,6 +213,7 @@ FILES TO EDIT
* src/makefile.am
* html/makefile.am
* test/makefile.am
* test/${DEFAULT_PROJECT_NAME}.cxx
* examples/makefile.am
FILE DEPENDENCIES
@ -201,8 +224,8 @@ FILE DEPENDENCIES
* test/makefile.am depends on AX_USE_LIBTOOL
* html/makefile.am depends on AX_BUILD_HTML
* doc/doxyfile.in depends on AX_BUILD_EXAMPLES
* debian/control.in depends on AX_USE_DOXYGEN, AX_USE_CPPUNIT
AX_CXX_QT, AX_CHECK_QT, AX_REQUIRE_QT, AX_USE_LIBTOOL
* debian/control.in depends on AX_USE_DOXYGEN, AX_USE_PERLDOC,
AX_USE_CPPUNIT AX_CXX_QT, AX_CHECK_QT, AX_REQUIRE_QT, AX_USE_LIBTOOL
* debian/${DEFAULT_PROJECT_NAME}.install depends on AX_USE_LIBTOOL
* debian/${DEFAULT_PROJECT_NAME}.dirs depends on AX_USE_LIBTOOL
* debian/${DEFAULT_PROJECT_NAME}-dev.install depends on AX_USE_LIBTOOL
@ -235,7 +258,9 @@ FILES
* Enable C++: AX_USE_CXX
* Enable LibTool library creation: AX_USE_LIBTOOL
* Enable Scripts: AX_USE_SCRIPTS
* Enable NodeJS project: AX_USE_NODEJS
* Enable Doxygen documentation generation: AX_USE_DOXYGEN
* Enable Perldoc documentation generation: AX_USE_PERLDOC
* Enable Debian packaging by calling "make deb": AX_USE_DEBIAN_PACKAGING
* Enable RPM packaging by calling "make rpm": AX_USE_RPM_PACKAGING
* Enable C++ testing using CppUnit: AX_USE_CPPUNIT
@ -276,11 +301,13 @@ VCS=""
VCSDEPENDS=""
if test -d .svn; then
VCS="svn"
VCSDEPENDS="subversion,"
VCSDEPENDS_DEB="svn2cl, subversion, subversion-tools,"
VCSDEPENDS_RPM="subversion,"
echo -e " \e[32msuccess\e[0m detected ${VCS}"
elif test -d .git; then
VCS="git"
VCSDEPENDS="git,"
VCSDEPENDS_DEB="git2cl, git,"
VCSDEPENDS_RPM="git,"
echo -e " \e[32msuccess\e[0m detected ${VCS}"
else
echo -e " \e[33mignored\e[0m"
@ -433,6 +460,9 @@ copy() {
source="${0%/*}/$1"
fi
fi
if test "${1%/*}" != "$1"; then
test -d "${1%/*}" || svn mkdir "${1%/*}"
fi
run cp "${source}" "$1"
if test $exists -eq 0; then
if test -n "${VCS}" -a $novcs -eq 0 && ! contains "$1" "${excludevcs[@]}"; then
@ -476,6 +506,8 @@ vcs2cl() {
if test -x $(which ${VCS}2cl); then
if test "${VCS}" = "git"; then
${VCS}2cl > ChangeLog
elif test "${VCS}" = "svn"; then
${VCS}2cl --break-before-msg -a -i
elif test -n "${VCS}"; then
${VCS}2cl
fi
@ -500,13 +532,14 @@ copy ${MY_NAME}
copy ax_init_standard_project.m4
copy ax_cxx_compile_stdcxx_11.m4
copy ax_check_qt.m4
copy makefile_test.inc.am
copy resolve-debbuilddeps.sh
copy resolve-rpmbuilddeps.sh
copy build-in-docker.sh
copy build-resource-file.sh
copy sql-to-dot.sed
copy mac-create-app-bundle.sh
AUTHOR=$(gpg -K | sed -n 's,uid *,,p' | sort | head -1)
AUTHOR=$(gpg -K 2>/dev/null | sed -n 's,uid *\(\[ultimate\] *\)\?,,p' | head -1)
if test -z "${AUTHOR}"; then
AUTHOR="FIRSTNAME LASTNAME (URL) <EMAIL>"
fi
@ -522,7 +555,11 @@ ${DEFAULT_PROJECT_NAME}
add description for ${DEFAULT_PROJECT_NAME}
EOF
to configure.ac <<EOF && notice "please edit configure.ac, then rerun $0" && exit 0
${HEADER}m4_define(x_package_name, ${DEFAULT_PROJECT_NAME}) # project's name
${HEADER}# default is generated from AUTHORS and project name
PROJECT_URL=
SOURCE_DOWNLOAD=
m4_define(x_package_name, ${DEFAULT_PROJECT_NAME}) # project's name
m4_define(x_major, 0) # project's major version
m4_define(x_minor, 0) # project's minor version
m4_include(ax_init_standard_project.m4)
@ -534,7 +571,9 @@ AX_INIT_STANDARD_PROJECT
#AX_USE_CXX
#AX_USE_LIBTOOL
#AX_USE_SCRIPTS
#AX_USE_NODEJS
#AX_USE_DOXYGEN
#AX_USE_PERLDOC
#AX_USE_DEBIAN_PACKAGING
#AX_USE_RPM_PACKAGING
#AX_USE_CPPUNIT
@ -562,6 +601,20 @@ if ! testtag AX_CHECK_QT && \
! testtag AX_REQUIRE_QT; then
echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | \
to --condition AX_USE_CXX src/makefile.am
if ! ls src/*.[ch]xx; then
to --condition AX_USE_CXX src/${PACKAGE_NAME#lib}.hxx <<EOF
${CHEADER}#ifndef ${PackageName^^}_HXX
#define ${PackageName^^}_HXX
/** @mainpage @description
@readme
*/
#endif
EOF
fi
elif ! test -e src/makefile.am; then
to --condition AX_USE_CXX src/makefile.am <<EOF
${HEADER}bin_PROGRAMS = ${PACKAGE_NAME}
@ -652,10 +705,17 @@ int main(int argc, char *argv[]) try {
return 1;
}
EOF
to --condition AX_USE_CXX src/${PACKAGE_NAME}.hxx <<EOF
if ! ls src/*.[ch]xx; then
to --condition AX_USE_CXX src/${PACKAGE_NAME#lib}.hxx <<EOF
${CHEADER}#ifndef ${PackageName^^}_HXX
#define ${PackageName^^}_HXX
/** @mainpage @description
@readme
*/
#include <QMainWindow>
#include <ui_${PACKAGE_NAME}.hxx>
@ -672,7 +732,8 @@ class ${PackageName}: public QMainWindow, protected Ui::${PackageName} {
#endif
EOF
to --condition AX_USE_CXX src/${PACKAGE_NAME}.ui <<EOF
fi
to --condition AX_USE_CXX src/${PACKAGE_NAME#lib}.ui <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>${PackageName}</class>
@ -754,7 +815,7 @@ EOF
to --condition AX_USE_CXX src/version.cxx <<EOF
/*! @file
@id $Id\$
@id \$Id\$
*/
// 1 2 3 4 5 6 7 8
// 45678901234567890123456789012345678901234567890123456789012345678901234567890
@ -798,7 +859,350 @@ ${HEADER}dist_bin_SCRIPTS =
MAINTAINERCLEANFILES = makefile.in
EOF
echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition AX_USE_DOXYGEN doc/makefile.am
if testtag AX_USE_NODEJS; then
checkdir nodejs
checkdir nodejs/public
checkdir nodejs/public/images
checkdir nodejs/etc
checkdir nodejs/etc/systemd
fi
to --condition AX_USE_NODEJS nodejs/makefile.am <<EOF
${HEADER}EXTRA_DIST = @PACKAGE_NAME@.js package.json.in public routes sockets views
nodejsdir = \${pkgdatadir}/nodejs
sysconfdefaultdir = \${sysconfdir}/default
sysconfinitdir = \${sysconfdir}/init
dist_sysconf_DATA = \${sysconfdir}/@PACKAGE_NAME@.json
dist_sysconfdefault_DATA = \${sysconfdir}/default/@PACKAGE_NAME@
dist_sysconfinit_DATA = \${sysconfdir}/init/@PACKAGE_NAME@.conf
all: node_modules
node_modules: package.json.in
HOME=. npm install
clean-local:
-rm -r node_modules .npm
install-data-hook:
test -d \$(DESTDIR)\${nodejsdir} || mkdir -p \$(DESTDIR)\${nodejsdir}
chmod -R u+w \$(DESTDIR)\${nodejsdir}
cp -r . \$(DESTDIR)\${nodejsdir}
uninstall-local:
-chmod -R u+w \$(DESTDIR)\${nodejsdir}
-rm -rf \$(DESTDIR)\${nodejsdir}
MAINTAINERCLEANFILES = makefile.in
EOF
to --condition AX_USE_NODEJS nodejs/${PACKAGE_NAME}.js <<EOF
${CHEADER}try {
process.on('uncaughtException', function(e) {
console.log("**** UNCAUGHT EXCEPTION ****");
console.log(e);
console.log(e.stack);
process.exit(1);
});
/**
* Module dependencies.
*/
var express = require('express')
, routes = require(__dirname+'/routes');
var app = module.exports = express.createServer();
var io = require('socket.io').listen(app);
var package = require(__dirname+'/package.json');
var config = require(package.path.config);
var authentication = require(__dirname+'/authentication')(config.restrict);
var sockets = require(__dirname+'/sockets')(io, authentication);
// Configuration
process.argv.forEach(function(val, index) {
if (index<2) {return}
if (index!=2 || isNaN(val)) {
console.log("**** ERROR: Unexpected Argument - allowed is only a port number");
process.exit(1);
}
config.port = parseInt(val);
});
if (typeof config.port != 'number') {
console.log("**** WARNING: no valid port given, defaults to 8888");
config.port = 8888;
}
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(require('stylus').middleware({ src: __dirname + '/public' }));
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
app.get('/', routes.index);
app.listen(config.port, function() {
console.log("Express server listening on port %d in %s mode",
app.address().port, app.settings.env);
});
} catch (e) {
console.log("**** EXCEPTION ****");
console.log(e);
console.log(e.stack);
process.exit(1);
}
EOF
to --condition AX_USE_NODEJS nodejs/package.json.in <<EOF
{
"name": "@PACKAGE_NAME@",
"version": "@PACKAGE_VERSION@",
"private": true,
"dependencies": {
"express": "~2.5.8",
"stylus": "~0.53.0",
"ejs": ">= 0.0.1",
"socket.io": "~1.4.4",
"socketio-auth": "0.0.5",
"ldapauth": "git+https://github.com/DimensionSoftware/node-ldapauth.git"
},
"description": "@DESCRIPTION@",
"main": "@PACKAGE_NAME@.js",
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "@AUTHOR@",
"license": "@LICENSE@",
"path": {
"prefix": "@PREFIX@",
"sysconf": "@SYSCONFDIR@",
"pkgdata": "@PKGDATADIR@",
"localstate": "@LOCALSTATEDIR@",
"log": "@LOCALSTATEDIR@/log/@PACKAGE_NAME@.log",
"config": "@SYSCONFDIR@/@PACKAGE_NAME@.json",
"nodejs": "@PKGDATADIR@/nodejs"
}
}
EOF
to --condition AX_USE_NODEJS nodejs/etc/${PACKAGE_NAME}.json <<EOF
{
"port": 8888,
"restrict": {
"passwords": {
"foo": ["sha256", "fcde2b2edxx56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9"]
},
"ldap": {
"url": "ldap://dev.marc.waeckerlin.org",
"adminDn": "cn=tmp,ou=system,ou=people,dc=dev,dc=marc,dc=waeckerlin,dc=org",
"adminPassword": "secret",
"searchBase": "ou=person,ou=people,dc=dev,dc=marc,dc=waeckerlin,dc=org",
"searchFilter": "(uid={{username}})"
}
}
}
EOF
to --condition AX_USE_NODEJS nodejs/etc/default/${PACKAGE_NAME} <<EOF
#EXEC_${PACKAGE_NAME^^}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}"
#${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME^^}.log"
#${PACKAGE_NAME^^}="${PACKAGE_NAME}"
#${PACKAGE_NAME^^}_PORT="8888"
EOF
to --condition AX_USE_NODEJS nodejs/etc/init/${PACKAGE_NAME}.conf <<EOF
#!upstart
description "$(head -1 README)"
author "$(head -1 AUTHORS)"
start on (local-filesystems and net-device-up)
stop on runlevel [!2345]
respawn
script
echo \$\$ > /var/run/${PACKAGE_NAME}.pid
# there are some useful defaults
# do not edit this file, overwrite values in /etc/default/${PACKAGE_NAME}
EXEC_${PACKAGE_NAME^^}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}"
${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log"
${PACKAGE_NAME^^}_USER="${PACKAGE_NAME}"
${PACKAGE_NAME^^}_PORT=""
[ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
if test -n "\${${PACKAGE_NAME^^}_USER}"; then
exec sudo -u "\${${PACKAGE_NAME^^}_USER}" \${EXEC_${PACKAGE_NAME^^}} \${${PACKAGE_NAME^^}_PORT} >> \${${PACKAGE_NAME^^}_LOG} 2>&1
else
exec \${EXEC_${PACKAGE_NAME^^}} \${${PACKAGE_NAME^^}_PORT} >> \${${PACKAGE_NAME^^}_LOG} 2>&1
fi
end script
pre-start script
${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log"
[ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
# Date format same as (new Date()).toISOString() for consistency
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> \${${PACKAGE_NAME^^}_LOG}
end script
pre-stop script
${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log"
[ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME}
rm /var/run/${PACKAGE_NAME}.pid
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> \${${PACKAGE_NAME^^}_LOG}
end script
EOF
to --condition AX_USE_NODEJS nodejs/etc/systemd/system/${PACKAGE_NAME}.service <<EOF
[Unit]
Description=$(head -1 README)
[Service]
ExecStart=/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME} > /var/log/${PACKAGE_NAME}.log
Restart=on-abort
[Install]
WantedBy=multi-user.target
EOF
to --condition AX_USE_NODEJS nodejs/public/javascripts/${PACKAGE_NAME}.js <<EOF
${CHEADER}var socket = null;
function init() {
socket = io.connect();
/*
socket
.io
.on("connect", connect)
.on("reconnect", connect)
.on("disconnect", disconnected)
.on("error", disconnected);
socket
.on("authenticated", authenticated)
.on("unauthorized", unauthorized)
.on("fail", error);
*/
}
/// On Load, Call @ref start
/*
\$(window.onbeforeunload = function() {
return "Are you sure you want to navigate away?";
});
*/
\$(init);
EOF
to --condition AX_USE_NODEJS nodejs/public/stylesheets/style.styl <<EOF
body
padding: 50px
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif
a
color: #00B7FF
EOF
to --condition AX_USE_NODEJS nodejs/routes/index.js <<EOF
${CHEADER}var package = require(__dirname+"/../package.json");
exports.index = function(req, res) {
res.render('index', {
packagename: package.name,
packageversion: package.version
});
};
EOF
to --condition AX_USE_NODEJS nodejs/sockets/index.js <<EOF
module.exports = function(io, authentication) {
var module={};
function broadcast(signal, data) {
console.log("<= signal: "+signal);
io.sockets.emit(signal, data);
}
function fail(txt, data) {
console.log("** "+txt, data);
}
function connection(socket, userdata) {
console.log("=> new connection from "+userdata.username);
function emit(signal, data, info) {
if (typeof data == 'string' && !data.match("\n")) {
console.log("<- signal: "+signal+"("+data+")");
} else {
console.log("<- signal: "+signal);
}
if (info) console.log(info);
socket.emit(signal, data);
}
function fail(txt, data) {
console.log("** "+txt, data);
emit("fail", txt);
}
/*
socket
.on("xxx", xxx)
.on("yyy", yyy;
*/
}
// Handle Connection
require('socketio-auth')(io, {
authenticate: function (socket, data, callback) {
console.log("=> authenticate: ", data.username);
//get credentials sent by the client
var username = data.username;
var password = data.password;
authentication(data.username, data.password,
function() {
console.log("####LOGIN-SUCESS####");
callback(null, true)
},
function() {
console.log("####LOGIN-FAIL####");
callback(new Error("wrong credentials"))
});
},
postAuthenticate: connection,
timeout: "none"
});
return module;
}
EOF
to --condition AX_USE_NODEJS nodejs/views/index.ejs <<EOF
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width initial-scale=1" />
<link href="stylesheets/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript" src="javascripts/${PACKAGE_NAME}.js"></script>
<title>$(head -1 README)</title>
</head>
<body>
<h1>$(head -1 README)</h1>
<p>generated by bootstrap, please edit</p>
</body>
</html>
EOF
to --condition AX_USE_NODEJS nodejs/views/layout.ejs <<EOF
<%- body %>
EOF
echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition 'AX_USE_DOXYGEN|AX_USE_PERLDOC' doc/makefile.am
if testtag AX_BUILD_TEST; then
to test/runtests.sh < ${0%/*}/test/runtests.sh
fi
@ -809,16 +1213,51 @@ AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src
AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs
$(if testtag AX_USE_LIBTOOL; then
cat <<EOF3
LDADD = -l${PACKAGE_NAME#lib}
LDADD = -lcppunit -l${PACKAGE_NAME#lib}
EOF3
fi)
EOF2
fi)
TESTS =
check_PROGRAMS = ${PACKAGE_NAME#lib}
TESTS = \${check_PROGRAMS}
${PACKAGE_NAME#lib}_SOURCES = ${PACKAGE_NAME#lib}.cxx
MAINTAINERCLEANFILES = makefile.in
EOF
to --condition AX_USE_CPPUNIT --condition AX_USE_CXX test/${PACKAGE_NAME#lib}.cxx <<EOF
${CHEADER}
#include <cppunit/TestFixture.h>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/XmlOutputter.h>
#include <fstream>
/// @todo Rename DummyTest and DummyTest::dummy()
/// @todo Write test cases
class DummyTest: public CppUnit::TestFixture {
public:
void dummy() {
}
CPPUNIT_TEST_SUITE(DummyTest);
CPPUNIT_TEST(dummy);
CPPUNIT_TEST_SUITE_END();
};
CPPUNIT_TEST_SUITE_REGISTRATION(DummyTest);
int main(int argc, char** argv) try {
std::ofstream ofs((*argv+std::string(".xml")).c_str());
CppUnit::TextUi::TestRunner runner;
runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
return runner.run() ? 0 : 1;
} catch (std::exception& e) {
std::cerr<<"***Exception: "<<e.what()<<std::endl;
return 1;
}
EOF
to --condition AX_BUILD_EXAMPLES examples/makefile.am <<EOF
${HEADER}AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src
AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs
@ -834,6 +1273,94 @@ www_DATA =
MAINTAINERCLEANFILES = makefile.in
EOF
to --condition AX_USE_DOXYGEN doc/header.html.in <<EOF
<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen \$doxygenversion"/>
<!--BEGIN PROJECT_NAME--><title>\$projectname: \$title</title><!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--><title>\$title</title><!--END !PROJECT_NAME-->
<link href="\$relpath^tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="\$relpath^jquery.js"></script>
<script type="text/javascript" src="\$relpath^dynsections.js"></script>
\$treeview
\$search
\$mathjax
<link href="\$relpath^\$stylesheet" rel="stylesheet" type="text/css" />
\$extrastylesheet
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<div id="projecthead">
<div id="projectlogo"><img alt="" src="\$relpath^\$projectlogo"/></div>
<div id="projectname">\$projectname</span>&#160;<span id="projectnumber">\$projectnumber</div>
<div id="projectbrief">\$projectbrief</div>
</div>
<nav>
<a href="@PROJECT_URL@" target="_blank">Project Management</a>
<a href="@SOURCE_DOWNLOAD@" target="_blank">Download</a>
<div>\$searchbox</div>
</nav>
</div>
EOF
to --condition AX_USE_DOXYGEN doc/footer.html.in <<EOF
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
\$navpath
<li class="footer"><a href="@AUTHOR_URL@" target="_blank">@AUTHOR_NAME@</a></li>
</ul>
</div>
</body>
</html>
EOF
to --condition AX_USE_DOXYGEN doc/style.css <<EOF
#titlearea {
display: flex;
justify-content: space-between;
align-items: flex-begin;
}
#titlearea nav {
padding: 0;
margin: 0;
}
#titlearea nav a {
background-color: lightgray;
border: 1px solid gray;
color: black;
padding: 1ex;
margin: 0;
}
img, object {
max-width: 100% !important;
}
@media (max-width: 50em) {
#navrow1, #navrow2 {
display: block
}
#side-nav, #splitbar, .ui-resizable-handle ui-resizable-e, .ui-resizable-handle ui-resizable-s {
display: none;
}
#doc-content {
margin-left: 0 !important;
}
}
@media (min-width: 50em) {
#navrow1, #navrow2 {
display: none;
}
#side-nav, #splitbar, .ui-resizable-handle ui-resizable-e, .ui-resizable-handle ui-resizable-s {
display: block
}
}
EOF
if testtag AX_USE_DOXYGEN; then
copy doc/plantuml.jar
fi
if testtag AX_USE_DOXYGEN; then
if ! checkfile doc/doxyfile.in || \
contains doc/doxyfile.in "${rebuildfiles[@]}"; then
@ -854,12 +1381,16 @@ if testtag AX_USE_DOXYGEN; then
doxyreplace MULTILINE_CPP_IS_BRIEF YES
doxyreplace TAB_SIZE 2
doxyreplace ALIASES '"id=\\par File-ID\\n"'
doxyadd ALIASES '"copy=\\par Copyright\\n"'
doxyadd ALIASES '"copy=\\par Copyright by <a href="@AUTHOR_URL@" target="_blank">@AUTHOR_NAME@</a>\\n"'
doxyadd ALIASES '"license=\\par License\\n"'
doxyadd ALIASES '"classmutex=\\par Reentrant:\\nAccess is locked with class static mutex @c "'
doxyadd ALIASES '"instancemutex=\\par Reentrant:\\nAccess is locked with per instance mutex @c "'
doxyadd ALIASES '"mutex=\\par Reentrant:\\nAccess is locked with mutex @c "'
doxyadd ALIASES '"api=\\xrefitem api \\"API Call\\" \\"\\""'
doxyadd ALIASES '"description=@DESCRIPTION@"'
doxyadd ALIASES '"readme=@README_HTML@"'
doxyadd ALIASES '"author=<a href="@AUTHOR_URL@" target="_blank">@AUTHOR_NAME@</a>"'
doxyreplace PLANTUML_JAR_PATH '"@top_srcdir@/doc/plantuml.jar"'
doxyreplace ENABLE_PREPROCESSING YES
doxyreplace MACRO_EXPANSION YES
doxyadd PREDEFINED '"NAMESPACE=@PACKAGE_NAME@"'
@ -886,9 +1417,20 @@ if testtag AX_USE_DOXYGEN; then
if testtag AX_BUILD_TEST AX_USE_CPPUNIT; then
doxyadd INPUT "@top_srcdir@/test"
fi
if testtag AX_USE_NODEJS; then
doxyadd INPUT "@top_srcdir@/nodejs"
doxyadd EXCLUDE "@top_srcdir@/nodejs/node_modules"
doxyadd EXCLUDE "@top_srcdir@/nodejs/public/javascripts/ext"
fi
doxyreplace FILE_PATTERNS '*.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.idl *.ddl *.odl *.h *.hh *.hxx *.hpp *.h++ *.cs *.d *.php *.php4 *.php5 *.phtml *.inc *.m *.markdown *.md *.mm *.dox *.py *.f90 *.f *.for *.tcl *.vhd *.vhdl *.ucf *.qsf *.as *.js *.wt *.sql'
doxyreplace RECURSIVE YES
doxyreplace EXCLUDE_PATTERNS "moc_* uic_* qrc_*"
doxyreplace EXCLUDE_PATTERNS "moc_* uic_* qrc_* version.[ch]xx"
doxyreplace HTML_HEADER header.html
doxyreplace HTML_FOOTER footer.html
doxyreplace HTML_EXTRA_STYLESHEET style.css
doxyreplace HTML_DYNAMIC_SECTIONS YES
doxyreplace DISABLE_INDEX NO
doxyreplace GENERATE_TREEVIEW YES
if testtag AX_BUILD_EXAMPLES; then
doxyreplace EXAMPLE_PATH @top_srcdir@/examples
fi
@ -897,7 +1439,6 @@ if testtag AX_USE_DOXYGEN; then
doxyreplace SOURCE_BROWSER YES
doxyreplace INLINE_SOURCES YES
doxyreplace GENERATE_TESTLIST YES
doxyreplace GENERATE_TREEVIEW NO
doxyreplace SEARCHENGINE NO
doxyreplace GENERATE_HTML YES
doxyreplace GENERATE_LATEX NO
@ -920,15 +1461,15 @@ if testtag AX_USE_DEBIAN_PACKAGING; then
to debian/changelog.in <<EOF
@PACKAGE@ (@PACKAGE_VERSION@~@DISTRO@.@BUILD_NUMBER@) @DISTRO@; urgency=low
* Please see ChangeLog of @PACKAGE@
@DEB_CHANGELOG@
-- @AUTHOR@ @BUILD_DATE@
-- @PACKAGER@ @BUILD_DATE@
EOF
BUILD_DEPENDS="debhelper, ${VCSDEPENDS} pkg-config, automake, libtool, autotools-dev, lsb-release $(if testtag AX_USE_DOXYGEN; then echo -n ", doxygen, graphviz, mscgen"; fi; if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-dev"; fi; if testtag AX_CXX_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n ", qt5-default | libqt4-core | libqtcore4, qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools"; fi)"
BUILD_DEPENDS="debhelper, fakeroot, ${VCSDEPENDS_DEB} pkg-config, automake, libtool, autotools-dev, pandoc, lsb-release, fakeroot, $(if testtag AX_USE_DOXYGEN; then echo -n ", doxygen, graphviz, mscgen, default-jre-headless|default-jre"; fi; if testtag AX_USE_PERLDOC; then echo -n ", libpod-tree-perl"; fi; if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-dev"; fi; if testtag AX_CXX_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n ", qt5-default | libqt4-core | libqtcore4, qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools"; fi)"
to debian/control.in <<EOF
Source: @PACKAGE_NAME@
Priority: extra
Maintainer: @AUTHOR@
Maintainer: @PACKAGER@
Build-Depends: ${BUILD_DEPENDS}
Package: @PACKAGE_NAME@
@ -995,18 +1536,45 @@ else
fi)
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: gnupg, ${VCSDEPENDS} make, automake, autoconf, rpm-build$(
BuildRequires: gnupg, ${VCSDEPENDS_RPM} make, automake, autoconf, rpm-build$(
if testtag AX_USE_CXX; then
echo -n ", binutils-devel, gcc-c++"
fi
if testtag AX_USE_LIBTOOL; then
echo -n ", libtool";
fi
if testtag AX_USE_DOXYGEN; then
echo -n ", doxygen";
fi)
echo -n ", doxygen, java-openjdk";
fi
if testtag AX_USE_PERLDOC; then
echo -n ", libpod-tree-perl";
fi
)
%if 0%{?fedora} != 20
$(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: graphviz"; fi)
%endif
%if 0%{?fedora} || 0%{?rhel} || 0%{?rhl} || 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version}
BuildRequires: pkgconfig, redhat-lsb$(
if testtag AX_USE_CPPUNIT; then
echo -n ", cppunit-devel";
fi)
%if 0%{?fedora} || 0%{?rhel} || 0%{?rhl} || 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} || 0%{?mageia}
BuildRequires: which, pkgconfig$(
if testtag AX_USE_LIBTOOL; then
echo -n ", cppunit-devel"
fi
)
%if 0%{?rhel} > 6 || 0%{?rhl} > 6 || 0%{?centos} > 6 || 0%{?fedora} || 0%{?mageia}
BuildRequires: rpm-sign
%endif
%if 0%{?mageia}
BuildRequires: gnupg, lsb-release$(
if testtag AX_USE_LIBTOOL; then
echo -n ", libltdl-devel"
fi
)
%else
BuildRequires: gpg, redhat-lsb$(
if testtag AX_USE_LIBTOOL; then
echo -n ", libtool-ltdl-devel"
fi
)
%endif
%if ! ( 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} )
$(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: mscgen"; fi)
$(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: qt5-qtbase-devel, qt5-qttools, qt5-qtwebkit-devel"; fi)
@ -1057,6 +1625,7 @@ else
echo '/usr/bin/*'
echo '/usr/share/applications/*'
fi)
/usr/share/@PACKAGE_NAME@
%doc
$(if testtag AX_USE_LIBTOOL; then
cat <<EOF2
@ -1068,7 +1637,7 @@ $(if testtag AX_USE_LIBTOOL; then
/usr/share/doc/packages/@PACKAGE_NAME@/README
EOF2
else
echo '/usr/share/*'
echo '/usr/share/doc/packages/@PACKAGE_NAME@'
fi)
$(if testtag AX_USE_LIBTOOL; then
@ -1109,7 +1678,7 @@ fi
if testtag AX_USE_SCRIPTS; then
SUBDIRS="${SUBDIRS} scripts"
fi
if testtag AX_USE_DOXYGEN; then
if testtag 'AX_USE_DOXYGEN|AX_USE_PERLDOC'; then
SUBDIRS="${SUBDIRS} doc"
fi
if testtag AX_BUILD_EXAMPLES; then
@ -1125,7 +1694,7 @@ for d in src test scripts doc examples html; do
done
to --mode "u=rwx,g=rwx,o=rx" autogen.sh <<EOF
#!/bin/bash -e
if test -n "$VCS" -a -d .$VCS -a -e -x $(which ${VCS}2cl); then
if test -n "$VCS" -a -d ".$VCS" -a -e -x "\$(which ${VCS}2cl)"; then
$(case "$VCS" in
(svn) echo " ${VCS}2cl";;
(git) echo " ${VCS}2cl > ChangeLog";;

@ -1,7 +1,6 @@
repos+=("Debian|Ubuntu-precise::::::universe")
repos+=("Ubuntu-precise:::'deb http://archive.ubuntu.com/ubuntu precise universe'")
repos+=("https://dev.marc.waeckerlin.org/repository")
repos+=("Ubuntu:::universe")
repos+=("Debian|Ubuntu:::https://dev.marc.waeckerlin.org/repository")
repos+=("openSUSE:::https://dev.marc.waeckerlin.org/repository/opensuse/marc-waeckerlin.repo")
repos+=("Fedora:::https://dev.marc.waeckerlin.org/repository/fedora/marc-waeckerlin.repo")
repos+=("CentOS:::https://dev.marc.waeckerlin.org/repository/centos/marc-waeckerlin.repo")
keys+=("https://dev.marc.waeckerlin.org/repository/PublicKey")
envs+=("-e 'HOME=${HOME}'")
dirs+=("-v ${HOME}/.gnupg:${HOME}/.gnupg:ro")
packages+=("Debian-sid:::mrw-c\\+\\+")

@ -2,21 +2,29 @@
set -o errtrace
# build and test everything in a fresh docker installation
mode="apt"
myarch=$(dpkg --print-architecture)
if test "${arch}" = "amd64"; then
myarch="amd64|i386"
fi
mode="deb"
img="ubuntu:latest"
repos=()
keys=()
envs=()
dirs=("-v $(pwd):/workdir")
envs=("-e LANG=${LANG}" "-e HOME=/home/$(id -un)" "-e TERM=xterm" "-e DEBIAN_FRONTEND=noninteractive" "-e DEBCONF_NONINTERACTIVE_SEEN=true")
dirs=("-v $(pwd):/workdir" "-v ${HOME}/.gnupg:/home/$(id -un)/.gnupg")
packages=()
targets="all check distcheck"
commands=()
arch=$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)
host=
flags=()
wait=0
if test -e ./build-in-docker.conf; then
# you can preconfigure the variables in file build-in-docker.conf
# if you do so, add the file to EXTRA_DIST in makefile.am
source ./build-in-docker.conf
fi
while test $# -gt 0; do
case "$1" in
(-h|--help)
@ -25,9 +33,12 @@ while test $# -gt 0; do
echo "OPTIONS:"
echo
echo " -h, --help show this help"
echo " -m, --mode <type> mode: apt or yum, default: ${mode}"
echo " -m, --mode <type> mode: deb, rpm, win, default: ${mode}"
echo " -i, --image <image> use given docker image instead of ${img}"
echo " -a, --arch <arch> build for given hardware architecture"
echo " -t, --targets targets specify build targets, default: ${targets}"
echo " --host <target-arch> host for cross compiling, e.g. i686-w64-mingw32"
echo " -f, --flag <flag> add flag to ./bootstrap.sh or ./configure"
echo " -r, --repo <url> add given apt repository"
echo " -k, --key <url> add public key from url"
echo " -e, --env <var>=<val> set environment variable in docker"
@ -37,6 +48,10 @@ while test $# -gt 0; do
echo " -w, --wait on error keep docker container and wait for enter"
echo
echo " The option -i must be after -m, because mode sets a new default image"
echo " The option -m must be after -t, because mode may be auto detected from targets"
echo " The option -m must be after -h, because mode may set a host"
echo " If target is either deb or rpm, mode is set to the same value"
echo " If target is win, host is set to i686-w64-mingw32"
echo
echo " The options -r -k -e -d -p -c can be repeated several times."
echo
@ -67,8 +82,11 @@ while test $# -gt 0; do
(-m|--mode) shift;
mode="$1"
case "$mode" in
(apt) img="ubuntu:latest";;
(deb|apt) img="ubuntu:latest";;
(rpm|zypper) img="opensuse:latest";;
(yum) img="centos:latest";;
(dnf) img="fedora:latest";;
(win) img="ubuntu:latest"; host="${host:---host=i686-w64-mingw32}";;
(*)
echo "**** ERROR: unknown mode '$1', try --help" 1>&2
exit 1
@ -78,10 +96,25 @@ while test $# -gt 0; do
(-i|--image) shift;
img="$1"
;;
(-a|--arch) shift;
arch="$1"
;;
(-t|--targets) shift;
targets="$1"
if test "$1" = "deb" -o "$1" = "rpm"; then
# set mode to same value
set -- "-m" "$@"
continue
fi
;;
(--host) shift;
host="--host=$1"
;;
(-f|--flag) shift;
flags+=("$1")
;;
(-r|--repo) shift;
echo "OPTION: $1"
repos+=("$1")
;;
(-k|--key) shift;
@ -140,7 +173,8 @@ function traperror() {
read
fi
echo -n " ... cleanup docker: "
docker rm -f "${DOCKER_ID}"
docker stop "${DOCKER_ID}" || true
docker rm "${DOCKER_ID}"
echo "returning status: $e"
echo "--->"
exit $e
@ -167,14 +201,14 @@ function ifthenelse() {
os="${arg%%:::*}"
thenpart="${arg#*:::}"
if test "${thenpart/:::/}" = "${thenpart}"; then
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; fi'
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; fi'
else
elsepart="${thenpart##*:::}"
thenpart="${thenpart%:::*}"
if test -n "${thenpart}"; then
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; else '"${cmd//ARG/${elsepart}}"'; fi'
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)" =~ ${os} ]]; then '"${cmd//ARG/${thenpart}}"'; else '"${cmd//ARG/${elsepart}}"'; fi'
else
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$(dpkg --print-architecture)" =~ ${os} ]]; then true; else '"${cmd//ARG/${elsepart}}"'; fi'
docker exec ${DOCKER_ID} bash -c 'os="'$os'"; if [[ "$(lsb_release -is)-$(lsb_release -cs)-$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)" =~ ${os} ]]; then true; else '"${cmd//ARG/${elsepart}}"'; fi'
fi
fi
fi
@ -183,10 +217,25 @@ function ifthenelse() {
set -x
docker pull $img
DOCKER_ID=$(docker run -d ${dirs[@]} ${envs[@]} -w /workdir $img sleep infinity)
DOCKER_ID=$(docker create ${dirs[@]} ${envs[@]} -w /workdir $img sleep infinity)
trap 'traperror '"${DOCKER_ID}"' "$? ${PIPESTATUS[@]}" $LINENO $BASH_LINENO "$BASH_COMMAND" "${FUNCNAME[@]}" "${FUNCTION}"' SIGINT INT TERM EXIT
if ! [[ $arch =~ $myarch ]]; then
docker cp "/usr/bin/qemu-${arch}-static" "${DOCKER_ID}:/usr/bin/qemu-${arch}-static"
fi
docker start "${DOCKER_ID}"
if ! docker exec ${DOCKER_ID} getent group $(id -g) > /dev/null 2>&1; then
docker exec ${DOCKER_ID} groupadd -g $(id -g) $(id -gn)
fi
if ! docker exec ${DOCKER_ID} getent passwd $(id -u) > /dev/null 2>&1; then
docker exec ${DOCKER_ID} useradd -m -u $(id -u) -g $(id -g) -d"${HOME}" $(id -un)
fi
docker exec ${DOCKER_ID} chown $(id -u):$(id -g) "${HOME}"
case $mode in
(apt)
(deb|apt)
if [[ "${img}" =~ "ubuntu" ]]; then
docker exec ${DOCKER_ID} locale-gen ${LANG}
docker exec ${DOCKER_ID} update-locale LANG=${LANG}
fi
OPTIONS='-o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew -y --force-yes --no-install-suggests --no-install-recommends'
for f in 'libpam-systemd:amd64' 'policykit*' 'colord'; do
docker exec ${DOCKER_ID} bash -c "echo 'Package: $f' >> /etc/apt/preferences"
@ -199,7 +248,7 @@ case $mode in
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} software-properties-common apt-transport-https dpkg-dev lsb-release || \
docker exec ${DOCKER_ID} apt-get install ${OPTIONS} python-software-properties apt-transport-https dpkg-dev lsb-release;
for repo in "${repos[@]}"; do
ifthenelse "${repo}" "apt-add-repository ARG"
ifthenelse "${repo}" "apt-add-repository 'ARG'"
done
for key in "${keys[@]}"; do
wget -O- "$key" \
@ -214,8 +263,7 @@ case $mode in
done
docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh
;;
(yum)
./bootstrap.sh -t dist
(rpm|yum|dnf|zypper|urpmi)
if [[ "$img" =~ "centos" ]]; then
docker exec ${DOCKER_ID} yum install -y redhat-lsb
docker exec -i ${DOCKER_ID} bash -c 'cat > /etc/yum.repos.d/wandisco-svn.repo' <<EOF
@ -228,10 +276,29 @@ enabled=1
gpgcheck=0
EOF
fi
docker exec ${DOCKER_ID} yum install -y rpm-build
docker exec ${DOCKER_ID} groupadd -g $(id -g) build
docker exec ${DOCKER_ID} useradd -g $(id -g) -u $(id -u) build
docker exec ${DOCKER_ID} ./resolve-rpmbuilddeps.sh || true
INSTALL_TOOL=$((docker exec ${DOCKER_ID} test -x /usr/bin/zypper && echo zypper install -y) || (docker exec ${DOCKER_ID} test -x /usr/bin/dnf && echo dnf install -y) || (docker exec ${DOCKER_ID} test -x /usr/bin/yum && echo yum install -y) || (docker exec ${DOCKER_ID} test -x /usr/sbin/urpmi && echo urpmi --auto))
docker exec ${DOCKER_ID} ${INSTALL_TOOL} rpm-build automake libtool subversion gcc-c++ pkgconfig wget /usr/bin/lsb_release
i=0
for key in "${keys[@]}"; do
wget -Orpm-key "$key"
docker exec -i ${DOCKER_ID} rpm --import rpm-key
rm rpm-key
done
for repo in "${repos[@]}"; do
INSTALL_REPO=$((docker exec ${DOCKER_ID} test -x /usr/bin/zypper && echo zypper ar) || (docker exec ${DOCKER_ID} test -x /usr/bin/dnf && echo dnf config-manager --add-repo) || (docker exec ${DOCKER_ID} test -x /usr/bin/yum && echo wget -O/etc/yum.repos.d/additional$i.repo) || (docker exec ${DOCKER_ID} test -x /usr/sbin/urpmi && echo true))
ifthenelse "${repo}" "${INSTALL_REPO} 'ARG'"
((++i))
done
docker exec ${DOCKER_ID} ./resolve-rpmbuilddeps.sh
;;
(win)
if [[ "${img}" =~ "ubuntu" ]]; then
docker exec ${DOCKER_ID} locale-gen ${LANG}
docker exec ${DOCKER_ID} update-locale LANG=${LANG}
fi
docker exec ${DOCKER_ID} apt-get update ${OPTIONS}
docker exec ${DOCKER_ID} apt-get install -y mingw-w64
docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh
;;
esac
docker exec -u $(id -u):$(id -g) ${DOCKER_ID} ./bootstrap.sh -t "${targets}"
docker exec -u $(id -u):$(id -g) ${DOCKER_ID} ./bootstrap.sh -t "${targets}" ${host} ${flags[@]}

4
debian/control.in vendored

@ -1,7 +1,7 @@
Source: @PACKAGE_NAME@
Priority: extra
Maintainer: @AUTHOR@
Build-Depends: debhelper, subversion, pkg-config, automake, libtool, autotools-dev, lsb-release , doxygen, graphviz, mscgen, qtbase5-dev, qtbase5-dev-tools, qttools5-dev, libqt5webkit5-dev, libqt5svg5-dev, mrw-c++-dev, libxml-cxx-dev
Maintainer: @PACKAGER@
Build-Depends: debhelper, fakeroot, svn2cl, subversion, subversion-tools, pkg-config, automake, libtool, autotools-dev, pandoc, lsb-release, fakeroot, , doxygen, graphviz, mscgen, default-jre-headless|default-jre, qt5-default, qt5-qmake, qtbase5-dev, qtbase5-dev-tools, qttools5-dev-tools, qttools5-dev-tools, libqt5webkit5-dev, libqt5svg5-dev, mrw-c++-dev, libxml-cxx-dev
Package: @PACKAGE_NAME@
Section: web

@ -16,7 +16,7 @@ if test -n "${SCHROOTNAME}"; then
SUDO="schroot -c "${SCHROOTNAME}" -u root -d / --"
else
DO=""
if grep -q '/docker/' /proc/1/cgroup; then
if grep -q '/docker' /proc/1/cgroup; then
SUDO=""
else
SUDO="sudo"
@ -35,7 +35,7 @@ TO_INSTALL=
if test -e debian/control.in -a ! -e debian/control; then
for f in $(sed -n 's, *AX_DEB_DEPEND_IFEXISTS(\([^)]*\)).*,\1,p' configure.ac); do
if test -n "$(${DO} apt-cache policy -q ${f})" && ! "$(${DO} apt-cache policy ${f} 2>&1 | grep -q 'N: Unable to locate package')" && ! ${DO} dpkg -l "${f}"; then
if test -n "$(${DO} apt-cache policy -q ${f})" && ((! $(${DO} apt-cache policy ${f} 2>&1 | grep -q 'N: Unable to locate package')) && (! ${DO} dpkg -l "${f}")); then
TO_INSTALL+=" ${f}"
fi
done

@ -10,35 +10,34 @@
## 1 2 3 4 5 6 7 8
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
INSTALL_TOOL=${INSTALL_TOOL:-$((test -x /usr/bin/zypper && echo zypper install -y) || (test -x /usr/bin/dnf && echo dnf install -y) || (test -x /usr/bin/yum && echo yum install -y) || (test -x /usr/sbin/urpmi && echo urpmi --auto))}
SCHROOTNAME="$1"
PACKAGE_NAME=$(sed -n 's/^ *m4_define(x_package_name, \(.*\)).*/\1/p' configure.ac)
PKGCONFIGS="${2:-epel-release}" # packages to configure yum
TRAP_CMD=
if test -e ${PACKAGE_NAME}.spec.in -a ! -e ${PACKAGE_NAME}.spec; then
TRAP_CMD+="rm ${PACKAGE_NAME}.spec;"
trap "${TRAP_CMD}" INT TERM EXIT
sed 's,@RPM_DEPEND_IFEXISTS@,,g' ${PACKAGE_NAME}.spec.in | \
sed 's,@[^@]*@, dummytext,g' > ${PACKAGE_NAME}.spec
fi
TGZFILE=$(sed -n '/^Name: */{s///;h};/^Version: */{s///;H;x;s/\n/-/;s/$/.tar.gz/;p}' ${PACKAGE_NAME}.spec)
if ! test -e $TGZFILE; then
TRAP_CMD+="rm ${TGZFILE};"
trap "${TRAP_CMD}" INT TERM EXIT
touch $TGZFILE
fi
if test -n "${SCHROOTNAME}"; then
FILES=$(LANG= schroot -c ${SCHROOTNAME} -- rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p')
if test -n "${FILES}"; then
FIRST=$(echo "${FILES}" | egrep -o "${PKGCONFIGS// /|}")
if test -n "${FIRST}"; then
schroot -c ${SCHROOTNAME} -u root -- yum install -y ${FIRST} || \
schroot -c ${SCHROOTNAME} -u root -- zypper install -y ${FIRST} || \
schroot -c ${SCHROOTNAME} -u root -- dnf install -y ${FIRST}
fi
schroot -c ${SCHROOTNAME} -u root -- yum install -y ${FILES} || \
schroot -c ${SCHROOTNAME} -u root -- zypper install -y ${FILES} || \
schroot -c ${SCHROOTNAME} -u root -- dnf install -y ${FILES}
schroot -c ${SCHROOTNAME} -u root -- ${INSTALL_TOOL} ${FILES}
fi
else
FILES=$(LANG= rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p')
if test -n "${FILES}"; then
FIRST=$(echo "${FILES}" | egrep -o "${PKGCONFIGS// /|}")
if test -n "${FIRST}"; then
yum install -y ${FIRST} || \
zypper install -y ${FIRST} || \
dnf install -y ${FIRST}
fi
yum install -y ${FILES} || \
zypper install -y ${FILES} || \
dnf install -y ${FILES}
${INSTALL_TOOL} ${FILES}
fi
fi

@ -11,6 +11,11 @@ H;$!d;$x
# remove all single-line comment lines
s/\n--[^\n]*//g
# encode html entities
s/&/\&amp##SEMICOLON##/g
s/</\&lt##SEMICOLON##/g
s/>/\&gt##SEMICOLON##/g
# reduce spaces
s,\t\| \+, ,g
@ -21,7 +26,7 @@ s,\t\| \+, ,g
s,\n\+,\n,g
# remove unknown commands
s,\(;\|\n\) *\(DELIMITER\|USE\|DROP\|CREATE[ \n]\+DATABASE\)[ \n]\+[^;]*;\+,,ig
s,\(;\|\n\) *\(INSERT\|DELIMITER\|USE\|DROP\|CREATE[ \n]\+DATABASE\)[ \n]\+[^;]*;\+,,ig
# convert special characters within quotes
:a;s/^\(\([^"]*"[^",]*"\)*[^"]*"[^"]*\),\([^"]*".*\)/\1\##COMMA##\3/g;ta
@ -34,17 +39,18 @@ h
s,.*\(create[ \n]\+table[^;]*;\).*,\1,ig
# start html table node
s|CREATE[ \n]\+TABLE[ \n]\+\(if[ \n]\+not[ \n]\+exists[ \n]\+\)\?`\?\(\w\+\)`\?| \2\n [shape=none, margin=0, label=<\n <table bgcolor="#dddddd">\n <tr><td bgcolor="#ddddff" colspan="4"><b>\2</b></td></tr>|ig
s|CREATE[ \n]\+TABLE[ \n]\+\(IF[ \n]\+NOT[ \n]\+EXISTS[ \n]\+\)\?`\?\(\w\+\)`\?| \2\n [shape=none, margin=0, label=<\n <table bgcolor="#dddddd">\n <tr><td bgcolor="#ddddff" colspan="4"><b>\2</b></td></tr>|ig
# remove key definitions
s/[),][\n ]*\(PRIMARY[ \n]\+\)\?KEY[ \n]\+[^(]*([^)]*)//gi
s/[),][\n ]*\(\(UNIQUE\|PRIMARY\)[ \n]\+\)\?KEY[ \n]\+[^(]*([^)]*)//gi
# move foreign keys as relation to the end
:b;s/\(\w\+\)\([^;]*\)FOREIGN[\n ]\+KEY[ \n]*([ \n]*`\?\([a-z]\+\)`\?[ \n]*)[ \n]*REFERENCES[ \n]*`\?\([a-z]\+\)`\?[ \n]*([ \n]*`\?\([a-z]\+\)`\?[ \n]*)[ \n]*\([^,)]*\)\([,)].*\)/\1\2\7\n \1:\3 -> \4:\5 [label="\6"]##SEMICOLON##/ig;tb
# create table rows
s|[(,][ \n]*`\?\(\w\+\)`\?[ \n]\+\(\w\+\(([^)]\+)\)\?\)[ \n]*\([^,)]*\)[ \n]\+COMMENT[ \n]*["']\([^"']*\)["'][ \n]*|\n <tr><td align="left" port="\1"><b>\1</b></td><td align="left">\2</td><td align="left">\4</td><td align="left">\5</td></tr>|gi
s|[(,][ \n]*`\?\(\w\+\)`\?[ \n]\+\(\w\+\(([^)]\+)\)\?\)[ \n]*\([^,)]*\)|\n <tr><td align="left" port="\1"><b>\1</b></td><td align="left">\2</td><td align="left">\4</td></tr>|g
s|[(,][ \n]*`\?\(\w\+\)`\?[ \n]\+\(\w\+\(([^)]\+)\)\?\)[ \n]*\([^,)]*\)|\n <tr><td align="left" port="\1"><b>\1</b></td><td align="left">\2</td><td align="left">\4</td><td></td></tr>|g
# extract comment
s|\(<td\( *\w*="\w*"\)* *>[^<]*\)COMMENT[ \n]\+["']\([^"']*\)["']\([^<]*</td>\)<td></td>|\1\4<td align="left">\3</td>|g
# add line breaks for long lines
s|\(<td[^>]*>[^<]\{30,40\}\)[ \n]\+\([^<]\{20,\}</td>\)|\1<br/>\2|g

Loading…
Cancel
Save