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. 202
      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 2016-06-08 09:07
* ax_init_standard_project.m4, bootstrap.sh, * [r79] ax_init_standard_project.m4, bootstrap.sh,
resolve-rpmbuilddeps.sh, scripts/90wt-mode.wt, resolve-rpmbuilddeps.sh, scripts/90wt-mode.wt[ADD],
scripts/makefile.am, scripts/wt-mode.el, src/commands.hxx, scripts/makefile.am, scripts/wt-mode.el[ADD], src/commands.hxx,
src/exceptions.hxx: new commands: include, case and fail; new src/exceptions.hxx:
emacs wt-mode for webtester files new commands: include, case and fail; new emacs wt-mode for
webtester files
2016-05-13 15:02 2016-05-13 15:02
* bootstrap.sh, src/commands.hxx: if can have a variable test or a * [r78] bootstrap.sh, src/commands.hxx:
content check if can have a variable test or a content check
2016-05-11 09:07 2016-05-11 09:07
* ChangeLog, src/testgui.hxx, src/webpage.hxx: fix text-selection * [r77] ChangeLog, src/testgui.hxx, src/webpage.hxx:
to exists feature; ignore javascript popups fix text-selection to exists feature; ignore javascript popups
2016-05-05 09:58 2016-05-05 09:58
* build-in-docker.sh: fixed build * [r76] build-in-docker.sh:
fixed build
2016-05-05 09:48 2016-05-05 09:48
* build-in-docker.sh: fixed build * [r75] build-in-docker.sh:
fixed build
2016-05-05 09:23 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 2016-05-05 09:12
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh, * [r73] ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
build-in-docker.sh: update build system build-in-docker.sh:
update build system
2016-05-03 06:52 2016-05-03 06:52
* src/commands.hxx: some smaller fixes and improvements for joomla * [r72] src/commands.hxx:
testing some smaller fixes and improvements for joomla testing
2016-05-02 15:25 2016-05-02 15:25
* src/commands.hxx, src/testgui.hxx: some smaller fixes and * [r71] src/commands.hxx, src/testgui.hxx:
improvements for joomla testing some smaller fixes and improvements for joomla testing
2016-05-02 11:02 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, ax_init_standard_project.m4, bootstrap.sh, build-in-docker.conf,
build-in-docker.sh, mac-create-app-bundle.sh, build-in-docker.sh, mac-create-app-bundle.sh,
resolve-debbuilddeps.sh, resolve-rpmbuilddeps.sh, resolve-debbuilddeps.sh, resolve-rpmbuilddeps.sh,
src/commands.hxx, src/testgui.hxx, src/version.cxx, src/commands.hxx, src/testgui.hxx, src/version.cxx,
src/version.hxx: add new commane clear-cookies; select text on src/version.hxx:
testgui sets an expectation add new commane clear-cookies; select text on testgui sets an
expectation
2016-04-03 16:19 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 2015-12-26 00:13 marc
* COPYING, ChangeLog, INSTALL, ax_init_standard_project.m4, * [r68] COPYING, ChangeLog, INSTALL, ax_init_standard_project.m4,
bootstrap.sh, build-in-docker.conf, build-in-docker.sh, bootstrap.sh, build-in-docker.conf[ADD], build-in-docker.sh,
resolve-debbuilddeps.sh, src/version.cxx, src/version.hxx: fixed resolve-debbuilddeps.sh, src/version.cxx, src/version.hxx:
build-in-docker fixed build-in-docker
2015-12-21 22:14 marc 2015-12-21 22:14 marc
* sql-to-dot.sed, test/runtests.sh, webtester.desktop.in: build in * [r67] sql-to-dot.sed[ADD], test/runtests.sh[ADD],
docker webtester.desktop.in[ADD]:
build in docker
2015-12-21 21:27 marc 2015-12-21 21:27 marc
* ChangeLog, src/commands.hxx: new command to set * [r66] ChangeLog, src/commands.hxx:
offline-storage-path new command to set offline-storage-path
2015-11-16 12:37 marc 2015-11-16 12:37 marc
* doc/doxyfile.in: SVG must not be interactive for embedding in * [r65] doc/doxyfile.in:
redmine SVG must not be interactive for embedding in redmine
2015-11-09 22:33 marc 2015-11-09 22:33 marc
* ChangeLog, bootstrap.sh, src/commands.hxx, src/exceptions.hxx, * [r64] ChangeLog, bootstrap.sh, src/commands.hxx,
src/webpage.hxx: allow local storage; prevent crash if line is src/exceptions.hxx, src/webpage.hxx:
missing allow local storage; prevent crash if line is missing
2015-11-07 10:47 marc 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 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 2015-11-04 11:59 marc
* src/commands.hxx: removed empty lines and comments from test * [r61] src/commands.hxx:
results removed empty lines and comments from test results
2015-11-04 10:34 marc 2015-11-04 10:34 marc
* bootstrap.sh, build-in-docker.sh, configure.ac, * [r60] bootstrap.sh, build-in-docker.sh[ADD], configure.ac,
debian/control.in, examples, resolve-debbuilddeps.sh, debian/control.in, examples[DEL], resolve-debbuilddeps.sh,
webtester.spec.in: build in docker tested webtester.spec.in[ADD]:
build in docker tested
2015-11-04 08:52 marc 2015-11-04 08:52 marc
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh, * [r59] ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
configure.ac, examples, examples/makefile.am, makefile.am, test, configure.ac, examples, examples/makefile.am[ADD], makefile.am,
test/makefile.am: examples is test test[CPY], test/makefile.am:
examples is test
2015-11-03 21:54 marc 2015-11-03 21:54 marc
* debian/control.in: updated dependencies * [r58] debian/control.in:
updated dependencies
2015-11-03 14:30 marc 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, bootstrap.sh, resolve-debbuilddeps.sh, src/commands.hxx,
src/testgui.hxx, src/testgui.ui: prepared for build in a docker src/testgui.hxx, src/testgui.ui:
instance on jenkins prepared for build in a docker instance on jenkins
2015-11-02 08:00 marc 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 2015-11-02 00:01 marc
* AUTHORS, ChangeLog, bootstrap.sh, resolve-debbuilddeps.sh: new * [r55] AUTHORS, ChangeLog, bootstrap.sh, resolve-debbuilddeps.sh:
author url new author url
2015-10-11 19:45 marc 2015-10-11 19:45 marc
* examples/test-commands.wt: added test for multidimensional for * [r54] examples/test-commands.wt:
loop added test for multidimensional for loop
2015-10-11 15:28 marc 2015-10-11 15:28 marc
* bootstrap.sh, examples/test-commands.wt, src/commands.hxx: added * [r53] bootstrap.sh, examples/test-commands.wt, src/commands.hxx:
test for multidimensional for loop added test for multidimensional for loop
2015-10-10 18:05 marc 2015-10-10 18:05 marc
* bootstrap.sh, doc/doxyfile.in: no search index when embedded in * [r52] bootstrap.sh, doc/doxyfile.in:
redmine no search index when embedded in redmine
2015-10-10 15:27 marc 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 2015-10-10 15:00 marc
* examples/SwissSign_Silver_CA_-_G2.pem, examples/ca.pem, * [r50] examples/SwissSign_Silver_CA_-_G2.pem[DEL],
examples/client.key, examples/client.pem, examples/makefile.am, examples/ca.pem[ADD], examples/client.key[ADD],
examples/test-commands.wt, src/commands.hxx: new for loop examples/client.pem[ADD], examples/makefile.am,
successfull tested examples/test-commands.wt, src/commands.hxx:
new for loop successfull tested
2015-10-10 14:09 marc 2015-10-10 14:09 marc
* ax_init_standard_project.m4, configure.ac, examples, * [r49] ax_init_standard_project.m4, configure.ac, examples[ADD],
examples/SwissSign_Silver_CA_-_G2.pem, examples/makefile.am, examples/SwissSign_Silver_CA_-_G2.pem[ADD],
examples/test-commands.wt, makefile.am, src/commands.hxx, examples/makefile.am[ADD], examples/test-commands.wt[ADD],
src/webrunner.cxx: includes example and test; new command echo makefile.am, src/commands.hxx, src/webrunner.cxx:
includes example and test; new command echo
2015-10-10 10:48 marc 2015-10-10 10:48 marc
* ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4, * [r48] ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4,
bootstrap.sh, build-resource-file.sh, mac-create-app-bundle.sh, bootstrap.sh, build-resource-file.sh[ADD],
resolve-debbuilddeps.sh, resolve-rpmbuilddeps.sh, mac-create-app-bundle.sh[ADD], resolve-debbuilddeps.sh[ADD],
src/commands.hxx: new feature: «for»-loop; updated buildsystem resolve-rpmbuilddeps.sh[ADD], src/commands.hxx:
new feature: «for»-loop; updated buildsystem
2015-10-09 15:01 marc 2015-10-09 15:01 marc
* src/commands.hxx, src/networkaccessmanager.hxx: unfinished: new * [r47] src/commands.hxx, src/networkaccessmanager.hxx:
feature: for loop unfinished: new feature: for loop
2015-07-12 18:38 marc 2015-07-12 18:38 marc
* debian/control.in: requires qt5 * [r46] debian/control.in:
requires qt5
2015-07-12 18:16 marc 2015-07-12 18:16 marc
* debian/control.in: requires qt5 * [r45] debian/control.in:
requires qt5
2015-05-20 15:22 marc 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 2015-05-20 14:35 marc
* src/commands.hxx: fixed stupid error in Do::execute; nicer * [r43] src/commands.hxx:
logging fixed stupid error in Do::execute; nicer logging
2015-05-20 11:52 marc 2015-05-20 11:52 marc
* src/commands.hxx, src/exceptions.hxx, src/testgui.hxx, * [r42] src/commands.hxx, src/exceptions.hxx, src/testgui.hxx,
src/webrunner.cxx: improved logging, bugfix in function handling src/webrunner.cxx:
improved logging, bugfix in function handling
2015-05-19 14:34 marc 2015-05-19 14:34 marc
* src/commands.hxx, src/testgui.hxx: click has an optional * [r41] src/commands.hxx, src/testgui.hxx:
clicktype; do has an optional selector; better detection and click has an optional clicktype; do has an optional selector;
handling of moo-tool (joomla3) elements better detection and handling of moo-tool (joomla3) elements
2015-05-11 12:13 marc 2015-05-11 12:13 marc
* src/commands.hxx, src/exceptions.hxx: new command check to * [r40] src/commands.hxx, src/exceptions.hxx:
compare two values or to compare a value to the result of a new command check to compare two values or to compare a value to
command - command call now returns the value of the last the result of a command - command call now returns the value of
statement the last statement
2015-05-11 09:54 marc 2015-05-11 09:54 marc
* ChangeLog, doc/makefile.amto, src/commands.hxx: now also supports * [r39] ChangeLog, doc/makefile.amto[DEL], src/commands.hxx:
optional else after command if now also supports optional else after command if
2015-05-09 12:27 marc 2015-05-09 12:27 marc
* ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4, * [r38] ChangeLog, ax_check_qt.m4, ax_init_standard_project.m4,
bootstrap.sh, doc/makefile.amto, src/commands.hxx, bootstrap.sh, doc/makefile.amto[ADD], src/commands.hxx,
src/testgui.hxx, src/webrunner.cxx: new commands testsuite and src/testgui.hxx, src/webrunner.cxx:
testcase new commands testsuite and testcase
2015-05-08 15:34 marc 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, docker/Dockerfile, src/commands.hxx, src/exceptions.hxx,
src/testgui.hxx: new feature: if tatement for conditions in src/testgui.hxx:
functions new feature: if tatement for conditions in functions
2015-05-06 23:09 marc 2015-05-06 23:09 marc
* ChangeLog, bootstrap.sh, doc/doxyfile.in, * [r36] ChangeLog, bootstrap.sh, doc/doxyfile.in,
scripts/doxygen-webtester.sed, scripts/example.wt, scripts/doxygen-webtester.sed, scripts/example.wt[DEL],
scripts/makefile.am: better doxygen support scripts/makefile.am:
better doxygen support
2015-05-06 16:56 marc 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 2015-05-06 14:51 marc
* ChangeLog, ax_init_standard_project.m4, bootstrap.sh, * [r34] ChangeLog, ax_init_standard_project.m4, bootstrap.sh,
configure.ac, makefile.am, scripts, configure.ac, makefile.am, scripts[ADD],
scripts/doxygen-webtester.sed, scripts/example.wt, scripts/doxygen-webtester.sed[ADD], scripts/example.wt[ADD],
scripts/makefile.am: added doxygen-webtester.sed do generate scripts/makefile.am[ADD]:
doxygen from webtester files added doxygen-webtester.sed do generate doxygen from webtester
files
2015-05-06 07:56 marc 2015-05-06 07:56 marc
* ChangeLog, debian/.dirs, debian/.install, debian/webtester.dirs, * [r33] ChangeLog, debian/.dirs[DEL], debian/.install[DEL],
debian/webtester.install: no need for install and dirs in debian debian/webtester.dirs[DEL], debian/webtester.install[DEL]:
no need for install and dirs in debian
2015-05-05 20:31 marc 2015-05-05 20:31 marc
* ax_init_standard_project.m4, bootstrap.sh, configure.ac, debian, * [r32] ax_init_standard_project.m4, bootstrap.sh, configure.ac,
debian/.dirs, debian/.install, debian/changelog.in, debian, debian/.dirs[ADD], debian/.install[ADD],
debian/compat, debian/control.in, debian/docs, debian/rules, debian/changelog.in[ADD], debian/compat[ADD],
debian/webtester.dirs, debian/webtester.install: some build debian/control.in[ADD], debian/docs[ADD], debian/rules[ADD],
environment updates debian/webtester.dirs[ADD], debian/webtester.install[ADD]:
some build environment updates
2015-05-05 15:06 marc 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, 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 2015-05-05 08:30 marc
* ChangeLog, README, ax_check_qt.m4, ax_cxx_compile_stdcxx_11.m4, * [r30] ChangeLog, README, ax_check_qt.m4[ADD],
ax_init_standard_project.m4, bootstrap.sh, configure.ac, debian, ax_cxx_compile_stdcxx_11.m4[ADD],
debian/changelog.in, debian/compat, debian/control.in, ax_init_standard_project.m4[ADD], bootstrap.sh, configure.ac,
debian/docs, debian/rules, debian/webtester.dirs, debian, debian/changelog.in[ADD], debian/compat[ADD],
debian/webtester.install, doc, doc/doxyfile.in, doc/makefile.am, 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, 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 new build system
2015-05-03 20:32 marc 2015-05-03 20:32 marc
* src/commands.hxx, src/exceptions.hxx, src/testgui.hxx: new * [r29] src/commands.hxx, src/exceptions.hxx, src/testgui.hxx:
feature: define and call functions using the two new commands new feature: define and call functions using the two new commands
function and call function and call
2015-04-30 14:25 marc 2015-04-30 14:25 marc
* configure.ac, docker, docker/Dockerfile, docker/runtests.sh, * [r28] configure.ac, docker[ADD], docker/Dockerfile[ADD],
src/commands.hxx, src/testgui.hxx, src/testgui.ui, docker/runtests.sh[ADD], src/commands.hxx, src/testgui.hxx,
src/webrunner.cxx, src/webtester.cxx: More features: have a src/testgui.ui, src/webrunner.cxx, src/webtester.cxx:
seperate setup script, where global variable replacements can be More features: have a seperate setup script, where global
placed, new commandline parameters, command window, better variable replacements can be placed, new commandline parameters,
recording, chose click type, ... command window, better recording, chose click type, ...
2015-04-24 14:39 marc 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: src/networkaccessmanager.hxx, src/testgui.hxx, src/webtester.cxx:
some more improvements, new commands, new simpler ecpect load some more improvements, new commands, new simpler ecpect load
command, certificate handling for self signed ca plus for client command, certificate handling for self signed ca plus for client
@ -302,121 +333,143 @@
2015-04-02 14:28 marc 2015-04-02 14:28 marc
* src/networkaccessmanager.hxx: more information in cae of network * [r26] src/networkaccessmanager.hxx:
error more information in cae of network error
2015-04-02 09:42 marc 2015-04-02 09:42 marc
* src/commands.hxx: new command «certificate» to install CA * [r25] src/commands.hxx:
certificate for SSL - file needs to be open ... new command «certificate» to install CA certificate for SSL -
file needs to be open ...
2015-04-02 09:07 marc 2015-04-02 09:07 marc
* src/commands.hxx: new command «certificate» to install CA * [r24] src/commands.hxx:
certificate for SSL - need to register the new class ... new command «certificate» to install CA certificate for SSL -
need to register the new class ...
2015-04-02 08:25 marc 2015-04-02 08:25 marc
* src/commands.hxx: new command «certificate» to install CA * [r23] src/commands.hxx:
certificate for SSL new command «certificate» to install CA certificate for SSL
2015-04-02 08:25 marc 2015-04-02 08:25 marc
* src/commands.hxx: new command «certificate» to install CA * [r22] src/commands.hxx:
certificate for SSL new command «certificate» to install CA certificate for SSL
2015-04-02 07:45 marc 2015-04-02 07:45 marc
* src/commands.hxx, src/exceptions.hxx, src/testgui.hxx: new * [r21] src/commands.hxx, src/exceptions.hxx, src/testgui.hxx:
command «certificate» to install CA certificate for SSL new command «certificate» to install CA certificate for SSL
2015-03-04 15:31 marc 2015-03-04 15:31 marc
* src/commands.hxx, src/testgui.ui: added date/time to attachment * [r20] src/commands.hxx, src/testgui.ui:
file names, so the images are sorted correctly added date/time to attachment file names, so the images are
sorted correctly
2015-02-27 15:39 marc 2015-02-27 15:39 marc
* src/commands.hxx, src/testgui.hxx: detect and handle * [r19] src/commands.hxx, src/testgui.hxx:
Moo-Tools-Comboboxes detect and handle Moo-Tools-Comboboxes
2015-02-24 08:54 marc 2015-02-24 08:54 marc
* debian/control.in: precise: QCommandLineParser: No such file or * [r18] debian/control.in:
directory - minimum requirement ist Qt 5.2 precise: QCommandLineParser: No such file or directory - minimum
requirement ist Qt 5.2
2015-02-24 08:48 marc 2015-02-24 08:48 marc
* debian/control.in: precise: QCommandLineParser: No such file or * [r17] debian/control.in:
directory precise: QCommandLineParser: No such file or directory
2015-02-24 08:40 marc 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 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 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 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 2015-02-23 14:01 marc
* configure.ac: fix choosing qt * [r12] configure.ac:
fix choosing qt
2015-02-23 13:40 marc 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 2015-02-23 13:00 marc
* src/makefile.am: makefile fixed * [r10] src/makefile.am:
makefile fixed
2015-02-23 12:52 marc 2015-02-23 12:52 marc
* README: README filled * [r9] README:
README filled
2015-02-23 12:18 marc 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 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 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 2015-02-06 15:00 marc
* AUTHORS, COPYING, ChangeLog, INSTALL, NEWS, README, bootstrap.sh, * [r5] AUTHORS[ADD], COPYING[ADD], ChangeLog[ADD], INSTALL[ADD],
configure.ac, debian, debian/changelog.in, debian/compat, NEWS[ADD], README[ADD], bootstrap.sh[ADD], configure.ac[ADD],
debian/control.in, debian/docs, debian/rules, makefile.am, debian[ADD], debian/changelog.in[ADD], debian/compat[ADD],
src/makefile, src/makefile.am: ready to build debian packages 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 2015-02-05 14:53 marc
* src/makefile: 1st makefile * [r4] src/makefile[ADD]:
1st makefile
2015-02-04 14:05 marc 2015-02-04 14:05 marc
* src/webrunner.cxx: successful build * [r3] src/webrunner.cxx:
successful build
2015-02-04 14:01 marc 2015-02-04 14:01 marc
* src, src/commands.hxx, src/exceptions.hxx, * [r2] src[ADD], src/commands.hxx[ADD], src/exceptions.hxx[ADD],
src/networkaccessmanager.hxx, src/testgui.hxx, src/testgui.ui, src/networkaccessmanager.hxx[ADD], src/testgui.hxx[ADD],
src/web.ui, src/webpage.hxx, src/webrunner.cxx, src/testgui.ui[ADD], src/web.ui[ADD], src/webpage.hxx[ADD],
src/webtester.cxx, src/webtester.pro: initial sources src/webrunner.cxx[ADD], src/webtester.cxx[ADD],
src/webtester.pro[ADD]:
initial sources
2015-02-04 13:48 marc 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 # SYNOPSIS
# #
# AX_REQUIRE_STDCXX_11
# AX_REQUIRE_STDCXX_14
# AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional]) # AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
# AX_CXX_COMPILE_STDCXX_14([ext|noext],[mandatory|optional])
# #
# DESCRIPTION # DESCRIPTION
# #
# Check for baseline language coverage in the compiler for the C++11 # 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 # 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. # 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) AC_SUBST(HAVE_CXX11)
fi 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]))]) m4_define([mrw_esyscmd_s], [m4_normalize(m4_esyscmd([$1]))])
# define least version number from subversion's revision number: # 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_define(x_least, m4_ifdef([x_least_fix], [x_least_fix],
m4_ifdef([x_least_diff], m4_ifdef([x_least_diff],
mrw_esyscmd_s([ mrw_esyscmd_s([
@ -36,10 +36,7 @@ m4_define(x_least, m4_ifdef([x_least_fix], [x_least_fix],
fi fi
done done
# Mac does not support LEAST > 255 # 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: # define 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 MacOSX
@ -57,8 +54,8 @@ m4_define(x_minor_diff, m4_ifdef([x_least_fix], 0, mrw_esyscmd_s([
fi; fi;
done done
# Mac does not support LEAST > 255 # Mac does not support LEAST > 255
echo $ECHO_N $(($VCS_REVISION/256)) echo $ECHO_N $(($VCS_REVISION/256))])))
])))
# setup version number # 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]))]) 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_define(x_minor, MINOR_NUMBER) # project's minor version
# m4_include(ax_init_standard_project.m4) # m4_include(ax_init_standard_project.m4)
# AC_INIT(x_package_name, x_version, x_bugreport, x_package_name) # 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 # AX_INIT_STANDARD_PROJECT
# #
# you change nothing but: YOUR_PACKAGE_NAME, MAJOR_NUMBER, MINOR_NUMBER # 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]/_}'" AM_CPPFLAGS+=" '-DMAKE_STRING(X)=\#X' '-DNAMESPACE=${PACKAGE_TARNAME//[^a-zA-Z0-9]/_}'"
AX_SUBST(NUMBERS) AX_SUBST(NUMBERS)
AX_SUBST(HOME) AX_SUBST(HOME)
if test -f README.md; then
README=$(tail -n +3 README.md)
DESCRIPTION=$(head -1 README.md)
else
README=$(tail -n +3 README) 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) AX_SUBST(README)
_AM_SUBST_NOTMAKE([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) AX_SUBST(DESCRIPTION)
_AM_SUBST_NOTMAKE([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=$(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) AX_SUBST(AUTHOR)
_AM_SUBST_NOTMAKE([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) DISTRO=$(lsb_release -sc 2>/dev/null || uname -s 2>/dev/null)
AX_SUBST(DISTRO) AX_SUBST(DISTRO)
ARCH=$((@<:@@<:@ $(uname -sm) =~ 64 @:>@@:>@ && echo amd64) || (@<:@@<:@ $(uname -sm) =~ 'i?86' @:>@@:>@ && echo i386 || uname -sm)) ARCH=$((@<:@@<:@ $(uname -sm) =~ 64 @:>@@:>@ && echo amd64) || (@<:@@<:@ $(uname -sm) =~ 'i?86' @:>@@:>@ && echo i386 || uname -sm))
@ -243,6 +286,25 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
AM_CPPFLAGS="${AM_CPPFLAGS} -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG" AM_CPPFLAGS="${AM_CPPFLAGS} -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG"
fi 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 if test -f ${PACKAGE_NAME}.desktop.in; then
AC_CONFIG_FILES([${PACKAGE_NAME}.desktop]) AC_CONFIG_FILES([${PACKAGE_NAME}.desktop])
fi fi
@ -273,7 +335,7 @@ EOF
AC_DEFUN([AX_USE_CXX], [ AC_DEFUN([AX_USE_CXX], [
m4_include(ax_cxx_compile_stdcxx_11.m4) m4_include(ax_cxx_compile_stdcxx_11.m4)
AC_LANG(C++) AC_LANG(C++)
AX_CXX_COMPILE_STDCXX_11(noext, optional) AX_CXX_COMPILE_STDCXX_14(noext, optional)
AC_PROG_CXX AC_PROG_CXX
AC_PROG_CPP AC_PROG_CPP
@ -362,7 +424,7 @@ EOF
# use this in configure.ac to support CppUnit for C++ unit tests # use this in configure.ac to support CppUnit for C++ unit tests
AC_DEFUN([AX_USE_CPPUNIT], [ 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 # infos and warnings
if test "$have_cppunit" = "no"; then if test "$have_cppunit" = "no"; then
AC_MSG_WARN([Missing cppunit development library! AC_MSG_WARN([Missing cppunit development library!
@ -383,6 +445,47 @@ maintainer-clean-example-targets:
EOF 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 # use this in configure.ac to support HTML data for webservers
AC_DEFUN([AX_BUILD_HTML], [ AC_DEFUN([AX_BUILD_HTML], [
AC_CONFIG_FILES([html/makefile]) AC_CONFIG_FILES([html/makefile])
@ -425,7 +528,11 @@ EOF
# use this in configure.ac to support debian packages # use this in configure.ac to support debian packages
AC_DEFUN([AX_USE_DEBIAN_PACKAGING], [ AC_DEFUN([AX_USE_DEBIAN_PACKAGING], [
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') README_DEB=$(tail -n +3 README | sed -e 's/^ *$/./g' -e 's/^/ /g')
fi
AC_SUBST(README_DEB) AC_SUBST(README_DEB)
_AM_SUBST_NOTMAKE([README_DEB]) _AM_SUBST_NOTMAKE([README_DEB])
AC_CONFIG_FILES([debian/changelog debian/control]) AC_CONFIG_FILES([debian/changelog debian/control])
@ -455,6 +562,7 @@ AC_DEFUN([AX_USE_RPM_PACKAGING], [
EXTRA_DIST += \${PACKAGE_NAME}.spec.in EXTRA_DIST += \${PACKAGE_NAME}.spec.in
rpm: dist rpm: dist
rpmbuild -ba --define "_topdir \$\$(pwd)" --define "_sourcedir \$\$(pwd)" \${PACKAGE_NAME}.spec rpmbuild -ba --define "_topdir \$\$(pwd)" --define "_sourcedir \$\$(pwd)" \${PACKAGE_NAME}.spec
rpmsign --define "_gpg_name \${PACKAGER}" --addsign RPMS/*/*.rpm SRPMS/*.rpm
clean-rpm-targets: clean-rpm-targets:
-rm -rf BUILD BUILDROOT RPMS SPECS SRPMS -rm -rf BUILD BUILDROOT RPMS SPECS SRPMS
distclean-rpm-targets: distclean-rpm-targets:
@ -473,6 +581,7 @@ AC_DEFUN([AX_USE_DOXYGEN], [
AC_CHECK_PROG(have_doxygen, doxygen, yes, no) AC_CHECK_PROG(have_doxygen, doxygen, yes, no)
AC_CHECK_PROG(have_dot, dot, yes, no) AC_CHECK_PROG(have_dot, dot, yes, no)
AC_CHECK_PROG(have_mscgen, mscgen, 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 PDF_DOC=${PACKAGE_NAME}-${PACKAGE_VERSION}.pdf
AC_SUBST(PDF_DOC) AC_SUBST(PDF_DOC)
if test "$have_doxygen" = "no"; then if test "$have_doxygen" = "no"; then
@ -487,22 +596,38 @@ AC_DEFUN([AX_USE_DOXYGEN], [
AC_MSG_WARN([Missing program mscgen! AC_MSG_WARN([Missing program mscgen!
- when you rebild documentation, there are no message state charts - when you rebild documentation, there are no message state charts
- there are precompiled derived files in the distribution]); fi - 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([clean-am], [clean-documentation], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-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([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([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([uninstall-am], [uninstall-documentation], [doc/makefile.in])
AX_ADD_MAKEFILE_TARGET_DEP([all], [doc], [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 test -f doc/makefile.in && cat >> doc/makefile.in <<EOF
#### Begin: Appended by $0 #### 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 doxygen doxyfile
@PEDANTIC_TRUE@ test \! -s doxygen.errors @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: clean-documentation:
-rm doxygen.errors @PDF_DOC@ -rm doxygen.errors @PDF_DOC@
@NEED_PLANTUML_TRUE@ -rm -rf gen-uml-images
distclean-documentation: distclean-documentation:
-rm -r html -rm -r html
-rm @PACKAGE_NAME@.doxytag -rm @PACKAGE_NAME@.doxytag
@ -519,6 +644,55 @@ uninstall-documentation:
EOF 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 # require a specific package, with fallback: test for a header
# - parameter: # - parameter:
# $1 = unique id (no special characters) # $1 = unique id (no special characters)

@ -129,6 +129,7 @@ GENERATED FILES
* ax_init_standard_project.m4 - auxiliary macro definition file * ax_init_standard_project.m4 - auxiliary macro definition file
* ax_cxx_compile_stdcxx_11.m4 - auxiliary macro definition file * ax_cxx_compile_stdcxx_11.m4 - auxiliary macro definition file
* ax_check_qt.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-debbuilddeps.sh - script to install debian package dependencies
* resolve-rpmbuilddeps.sh - script to install RPM 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 * 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 * src/version.cxx - if you enabled AX_USE_CXX
* html/makefile.am - if you enabled AX_BUILD_HTML * html/makefile.am - if you enabled AX_BUILD_HTML
* scripts/makefile.am - if you enabled AX_USE_SCRIPTS * 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 * 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 * examples/makefile.am - if you enabled AX_BUILD_EXAMPLES
* debian/changelog.in - if you enabled AX_USE_DEBIAN_PACKAGING * debian/changelog.in - if you enabled AX_USE_DEBIAN_PACKAGING
* debian/control.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 * src/makefile.am
* html/makefile.am * html/makefile.am
* test/makefile.am * test/makefile.am
* test/${DEFAULT_PROJECT_NAME}.cxx
* examples/makefile.am * examples/makefile.am
FILE DEPENDENCIES FILE DEPENDENCIES
@ -201,8 +224,8 @@ FILE DEPENDENCIES
* test/makefile.am depends on AX_USE_LIBTOOL * test/makefile.am depends on AX_USE_LIBTOOL
* html/makefile.am depends on AX_BUILD_HTML * html/makefile.am depends on AX_BUILD_HTML
* doc/doxyfile.in depends on AX_BUILD_EXAMPLES * doc/doxyfile.in depends on AX_BUILD_EXAMPLES
* debian/control.in depends on AX_USE_DOXYGEN, AX_USE_CPPUNIT * debian/control.in depends on AX_USE_DOXYGEN, AX_USE_PERLDOC,
AX_CXX_QT, AX_CHECK_QT, AX_REQUIRE_QT, AX_USE_LIBTOOL 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}.install depends on AX_USE_LIBTOOL
* debian/${DEFAULT_PROJECT_NAME}.dirs 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 * debian/${DEFAULT_PROJECT_NAME}-dev.install depends on AX_USE_LIBTOOL
@ -235,7 +258,9 @@ FILES
* Enable C++: AX_USE_CXX * Enable C++: AX_USE_CXX
* Enable LibTool library creation: AX_USE_LIBTOOL * Enable LibTool library creation: AX_USE_LIBTOOL
* Enable Scripts: AX_USE_SCRIPTS * Enable Scripts: AX_USE_SCRIPTS
* Enable NodeJS project: AX_USE_NODEJS
* Enable Doxygen documentation generation: AX_USE_DOXYGEN * 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 Debian packaging by calling "make deb": AX_USE_DEBIAN_PACKAGING
* Enable RPM packaging by calling "make rpm": AX_USE_RPM_PACKAGING * Enable RPM packaging by calling "make rpm": AX_USE_RPM_PACKAGING
* Enable C++ testing using CppUnit: AX_USE_CPPUNIT * Enable C++ testing using CppUnit: AX_USE_CPPUNIT
@ -276,11 +301,13 @@ VCS=""
VCSDEPENDS="" VCSDEPENDS=""
if test -d .svn; then if test -d .svn; then
VCS="svn" VCS="svn"
VCSDEPENDS="subversion," VCSDEPENDS_DEB="svn2cl, subversion, subversion-tools,"
VCSDEPENDS_RPM="subversion,"
echo -e " \e[32msuccess\e[0m detected ${VCS}" echo -e " \e[32msuccess\e[0m detected ${VCS}"
elif test -d .git; then elif test -d .git; then
VCS="git" VCS="git"
VCSDEPENDS="git," VCSDEPENDS_DEB="git2cl, git,"
VCSDEPENDS_RPM="git,"
echo -e " \e[32msuccess\e[0m detected ${VCS}" echo -e " \e[32msuccess\e[0m detected ${VCS}"
else else
echo -e " \e[33mignored\e[0m" echo -e " \e[33mignored\e[0m"
@ -433,6 +460,9 @@ copy() {
source="${0%/*}/$1" source="${0%/*}/$1"
fi fi
fi fi
if test "${1%/*}" != "$1"; then
test -d "${1%/*}" || svn mkdir "${1%/*}"
fi
run cp "${source}" "$1" run cp "${source}" "$1"
if test $exists -eq 0; then if test $exists -eq 0; then
if test -n "${VCS}" -a $novcs -eq 0 && ! contains "$1" "${excludevcs[@]}"; 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 -x $(which ${VCS}2cl); then
if test "${VCS}" = "git"; then if test "${VCS}" = "git"; then
${VCS}2cl > ChangeLog ${VCS}2cl > ChangeLog
elif test "${VCS}" = "svn"; then
${VCS}2cl --break-before-msg -a -i
elif test -n "${VCS}"; then elif test -n "${VCS}"; then
${VCS}2cl ${VCS}2cl
fi fi
@ -500,13 +532,14 @@ copy ${MY_NAME}
copy ax_init_standard_project.m4 copy ax_init_standard_project.m4
copy ax_cxx_compile_stdcxx_11.m4 copy ax_cxx_compile_stdcxx_11.m4
copy ax_check_qt.m4 copy ax_check_qt.m4
copy makefile_test.inc.am
copy resolve-debbuilddeps.sh copy resolve-debbuilddeps.sh
copy resolve-rpmbuilddeps.sh copy resolve-rpmbuilddeps.sh
copy build-in-docker.sh copy build-in-docker.sh
copy build-resource-file.sh copy build-resource-file.sh
copy sql-to-dot.sed copy sql-to-dot.sed
copy mac-create-app-bundle.sh 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 if test -z "${AUTHOR}"; then
AUTHOR="FIRSTNAME LASTNAME (URL) <EMAIL>" AUTHOR="FIRSTNAME LASTNAME (URL) <EMAIL>"
fi fi
@ -522,7 +555,11 @@ ${DEFAULT_PROJECT_NAME}
add description for ${DEFAULT_PROJECT_NAME} add description for ${DEFAULT_PROJECT_NAME}
EOF EOF
to configure.ac <<EOF && notice "please edit configure.ac, then rerun $0" && exit 0 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_major, 0) # project's major version
m4_define(x_minor, 0) # project's minor version m4_define(x_minor, 0) # project's minor version
m4_include(ax_init_standard_project.m4) m4_include(ax_init_standard_project.m4)
@ -534,7 +571,9 @@ AX_INIT_STANDARD_PROJECT
#AX_USE_CXX #AX_USE_CXX
#AX_USE_LIBTOOL #AX_USE_LIBTOOL
#AX_USE_SCRIPTS #AX_USE_SCRIPTS
#AX_USE_NODEJS
#AX_USE_DOXYGEN #AX_USE_DOXYGEN
#AX_USE_PERLDOC
#AX_USE_DEBIAN_PACKAGING #AX_USE_DEBIAN_PACKAGING
#AX_USE_RPM_PACKAGING #AX_USE_RPM_PACKAGING
#AX_USE_CPPUNIT #AX_USE_CPPUNIT
@ -562,6 +601,20 @@ if ! testtag AX_CHECK_QT && \
! testtag AX_REQUIRE_QT; then ! testtag AX_REQUIRE_QT; then
echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | \ echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | \
to --condition AX_USE_CXX src/makefile.am 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 elif ! test -e src/makefile.am; then
to --condition AX_USE_CXX src/makefile.am <<EOF to --condition AX_USE_CXX src/makefile.am <<EOF
${HEADER}bin_PROGRAMS = ${PACKAGE_NAME} ${HEADER}bin_PROGRAMS = ${PACKAGE_NAME}
@ -652,10 +705,17 @@ int main(int argc, char *argv[]) try {
return 1; return 1;
} }
EOF 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 ${CHEADER}#ifndef ${PackageName^^}_HXX
#define ${PackageName^^}_HXX #define ${PackageName^^}_HXX
/** @mainpage @description
@readme
*/
#include <QMainWindow> #include <QMainWindow>
#include <ui_${PACKAGE_NAME}.hxx> #include <ui_${PACKAGE_NAME}.hxx>
@ -672,7 +732,8 @@ class ${PackageName}: public QMainWindow, protected Ui::${PackageName} {
#endif #endif
EOF 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"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>${PackageName}</class> <class>${PackageName}</class>
@ -754,7 +815,7 @@ EOF
to --condition AX_USE_CXX src/version.cxx <<EOF to --condition AX_USE_CXX src/version.cxx <<EOF
/*! @file /*! @file
@id $Id\$ @id \$Id\$
*/ */
// 1 2 3 4 5 6 7 8 // 1 2 3 4 5 6 7 8
// 45678901234567890123456789012345678901234567890123456789012345678901234567890 // 45678901234567890123456789012345678901234567890123456789012345678901234567890
@ -798,7 +859,350 @@ ${HEADER}dist_bin_SCRIPTS =
MAINTAINERCLEANFILES = makefile.in MAINTAINERCLEANFILES = makefile.in
EOF 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 if testtag AX_BUILD_TEST; then
to test/runtests.sh < ${0%/*}/test/runtests.sh to test/runtests.sh < ${0%/*}/test/runtests.sh
fi fi
@ -809,16 +1213,51 @@ AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src
AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs
$(if testtag AX_USE_LIBTOOL; then $(if testtag AX_USE_LIBTOOL; then
cat <<EOF3 cat <<EOF3
LDADD = -l${PACKAGE_NAME#lib} LDADD = -lcppunit -l${PACKAGE_NAME#lib}
EOF3 EOF3
fi) fi)
EOF2 EOF2
fi) fi)
TESTS = check_PROGRAMS = ${PACKAGE_NAME#lib}
TESTS = \${check_PROGRAMS}
${PACKAGE_NAME#lib}_SOURCES = ${PACKAGE_NAME#lib}.cxx
MAINTAINERCLEANFILES = makefile.in MAINTAINERCLEANFILES = makefile.in
EOF 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 to --condition AX_BUILD_EXAMPLES examples/makefile.am <<EOF
${HEADER}AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src ${HEADER}AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src
AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs
@ -834,6 +1273,94 @@ www_DATA =
MAINTAINERCLEANFILES = makefile.in MAINTAINERCLEANFILES = makefile.in
EOF 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 testtag AX_USE_DOXYGEN; then
if ! checkfile doc/doxyfile.in || \ if ! checkfile doc/doxyfile.in || \
contains doc/doxyfile.in "${rebuildfiles[@]}"; then contains doc/doxyfile.in "${rebuildfiles[@]}"; then
@ -854,12 +1381,16 @@ if testtag AX_USE_DOXYGEN; then
doxyreplace MULTILINE_CPP_IS_BRIEF YES doxyreplace MULTILINE_CPP_IS_BRIEF YES
doxyreplace TAB_SIZE 2 doxyreplace TAB_SIZE 2
doxyreplace ALIASES '"id=\\par File-ID\\n"' 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 '"license=\\par License\\n"'
doxyadd ALIASES '"classmutex=\\par Reentrant:\\nAccess is locked with class static mutex @c "' 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 '"instancemutex=\\par Reentrant:\\nAccess is locked with per instance mutex @c "'
doxyadd ALIASES '"mutex=\\par Reentrant:\\nAccess is locked with mutex @c "' doxyadd ALIASES '"mutex=\\par Reentrant:\\nAccess is locked with mutex @c "'
doxyadd ALIASES '"api=\\xrefitem api \\"API Call\\" \\"\\""' 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 ENABLE_PREPROCESSING YES
doxyreplace MACRO_EXPANSION YES doxyreplace MACRO_EXPANSION YES
doxyadd PREDEFINED '"NAMESPACE=@PACKAGE_NAME@"' doxyadd PREDEFINED '"NAMESPACE=@PACKAGE_NAME@"'
@ -886,9 +1417,20 @@ if testtag AX_USE_DOXYGEN; then
if testtag AX_BUILD_TEST AX_USE_CPPUNIT; then if testtag AX_BUILD_TEST AX_USE_CPPUNIT; then
doxyadd INPUT "@top_srcdir@/test" doxyadd INPUT "@top_srcdir@/test"
fi 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 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 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 if testtag AX_BUILD_EXAMPLES; then
doxyreplace EXAMPLE_PATH @top_srcdir@/examples doxyreplace EXAMPLE_PATH @top_srcdir@/examples
fi fi
@ -897,7 +1439,6 @@ if testtag AX_USE_DOXYGEN; then
doxyreplace SOURCE_BROWSER YES doxyreplace SOURCE_BROWSER YES
doxyreplace INLINE_SOURCES YES doxyreplace INLINE_SOURCES YES
doxyreplace GENERATE_TESTLIST YES doxyreplace GENERATE_TESTLIST YES
doxyreplace GENERATE_TREEVIEW NO
doxyreplace SEARCHENGINE NO doxyreplace SEARCHENGINE NO
doxyreplace GENERATE_HTML YES doxyreplace GENERATE_HTML YES
doxyreplace GENERATE_LATEX NO doxyreplace GENERATE_LATEX NO
@ -920,15 +1461,15 @@ if testtag AX_USE_DEBIAN_PACKAGING; then
to debian/changelog.in <<EOF to debian/changelog.in <<EOF
@PACKAGE@ (@PACKAGE_VERSION@~@DISTRO@.@BUILD_NUMBER@) @DISTRO@; urgency=low @PACKAGE@ (@PACKAGE_VERSION@~@DISTRO@.@BUILD_NUMBER@) @DISTRO@; urgency=low
* Please see ChangeLog of @PACKAGE@ @DEB_CHANGELOG@
-- @AUTHOR@ @BUILD_DATE@ -- @PACKAGER@ @BUILD_DATE@
EOF 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 to debian/control.in <<EOF
Source: @PACKAGE_NAME@ Source: @PACKAGE_NAME@
Priority: extra Priority: extra
Maintainer: @AUTHOR@ Maintainer: @PACKAGER@
Build-Depends: ${BUILD_DEPENDS} Build-Depends: ${BUILD_DEPENDS}
Package: @PACKAGE_NAME@ Package: @PACKAGE_NAME@
@ -995,18 +1536,45 @@ else
fi) fi)
Source0: %{name}-%{version}.tar.gz Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root 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 if testtag AX_USE_DOXYGEN; then
echo -n ", doxygen"; echo -n ", doxygen, java-openjdk";
fi) fi
if testtag AX_USE_PERLDOC; then
echo -n ", libpod-tree-perl";
fi
)
%if 0%{?fedora} != 20 %if 0%{?fedora} != 20
$(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: graphviz"; fi) $(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: graphviz"; fi)
%endif %endif
%if 0%{?fedora} || 0%{?rhel} || 0%{?rhl} || 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} %if 0%{?fedora} || 0%{?rhel} || 0%{?rhl} || 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} || 0%{?mageia}
BuildRequires: pkgconfig, redhat-lsb$( BuildRequires: which, pkgconfig$(
if testtag AX_USE_CPPUNIT; then if testtag AX_USE_LIBTOOL; then
echo -n ", cppunit-devel"; echo -n ", cppunit-devel"
fi) 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 ! ( 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} )
$(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: mscgen"; fi) $(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) $(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/bin/*'
echo '/usr/share/applications/*' echo '/usr/share/applications/*'
fi) fi)
/usr/share/@PACKAGE_NAME@
%doc %doc
$(if testtag AX_USE_LIBTOOL; then $(if testtag AX_USE_LIBTOOL; then
cat <<EOF2 cat <<EOF2
@ -1068,7 +1637,7 @@ $(if testtag AX_USE_LIBTOOL; then
/usr/share/doc/packages/@PACKAGE_NAME@/README /usr/share/doc/packages/@PACKAGE_NAME@/README
EOF2 EOF2
else else
echo '/usr/share/*' echo '/usr/share/doc/packages/@PACKAGE_NAME@'
fi) fi)
$(if testtag AX_USE_LIBTOOL; then $(if testtag AX_USE_LIBTOOL; then
@ -1109,7 +1678,7 @@ fi
if testtag AX_USE_SCRIPTS; then if testtag AX_USE_SCRIPTS; then
SUBDIRS="${SUBDIRS} scripts" SUBDIRS="${SUBDIRS} scripts"
fi fi
if testtag AX_USE_DOXYGEN; then if testtag 'AX_USE_DOXYGEN|AX_USE_PERLDOC'; then
SUBDIRS="${SUBDIRS} doc" SUBDIRS="${SUBDIRS} doc"
fi fi
if testtag AX_BUILD_EXAMPLES; then if testtag AX_BUILD_EXAMPLES; then
@ -1125,7 +1694,7 @@ for d in src test scripts doc examples html; do
done done
to --mode "u=rwx,g=rwx,o=rx" autogen.sh <<EOF to --mode "u=rwx,g=rwx,o=rx" autogen.sh <<EOF
#!/bin/bash -e #!/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 $(case "$VCS" in
(svn) echo " ${VCS}2cl";; (svn) echo " ${VCS}2cl";;
(git) echo " ${VCS}2cl > ChangeLog";; (git) echo " ${VCS}2cl > ChangeLog";;

@ -1,7 +1,6 @@
repos+=("Debian|Ubuntu-precise::::::universe") repos+=("Ubuntu:::universe")
repos+=("Ubuntu-precise:::'deb http://archive.ubuntu.com/ubuntu precise universe'") repos+=("Debian|Ubuntu:::https://dev.marc.waeckerlin.org/repository")
repos+=("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") 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 set -o errtrace
# build and test everything in a fresh docker installation # 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" img="ubuntu:latest"
repos=() repos=()
keys=() keys=()
envs=() 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") dirs=("-v $(pwd):/workdir" "-v ${HOME}/.gnupg:/home/$(id -un)/.gnupg")
packages=() packages=()
targets="all check distcheck" targets="all check distcheck"
commands=() commands=()
arch=$((which dpkg > /dev/null 2> /dev/null && dpkg --print-architecture) || echo amd64)
host=
flags=()
wait=0 wait=0
if test -e ./build-in-docker.conf; then if test -e ./build-in-docker.conf; then
# you can preconfigure the variables in file build-in-docker.conf # you can preconfigure the variables in file build-in-docker.conf
# if you do so, add the file to EXTRA_DIST in makefile.am # if you do so, add the file to EXTRA_DIST in makefile.am
source ./build-in-docker.conf source ./build-in-docker.conf
fi fi
while test $# -gt 0; do while test $# -gt 0; do
case "$1" in case "$1" in
(-h|--help) (-h|--help)
@ -25,9 +33,12 @@ while test $# -gt 0; do
echo "OPTIONS:" echo "OPTIONS:"
echo echo
echo " -h, --help show this help" 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 " -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 " -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 " -r, --repo <url> add given apt repository"
echo " -k, --key <url> add public key from url" echo " -k, --key <url> add public key from url"
echo " -e, --env <var>=<val> set environment variable in docker" 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 " -w, --wait on error keep docker container and wait for enter"
echo echo
echo " The option -i must be after -m, because mode sets a new default image" 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
echo " The options -r -k -e -d -p -c can be repeated several times." echo " The options -r -k -e -d -p -c can be repeated several times."
echo echo
@ -67,8 +82,11 @@ while test $# -gt 0; do
(-m|--mode) shift; (-m|--mode) shift;
mode="$1" mode="$1"
case "$mode" in case "$mode" in
(apt) img="ubuntu:latest";; (deb|apt) img="ubuntu:latest";;
(rpm|zypper) img="opensuse:latest";;
(yum) img="centos: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 echo "**** ERROR: unknown mode '$1', try --help" 1>&2
exit 1 exit 1
@ -78,10 +96,25 @@ while test $# -gt 0; do
(-i|--image) shift; (-i|--image) shift;
img="$1" img="$1"
;; ;;
(-a|--arch) shift;
arch="$1"
;;
(-t|--targets) shift; (-t|--targets) shift;
targets="$1" 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; (-r|--repo) shift;
echo "OPTION: $1"
repos+=("$1") repos+=("$1")
;; ;;
(-k|--key) shift; (-k|--key) shift;
@ -140,7 +173,8 @@ function traperror() {
read read
fi fi
echo -n " ... cleanup docker: " echo -n " ... cleanup docker: "
docker rm -f "${DOCKER_ID}" docker stop "${DOCKER_ID}" || true
docker rm "${DOCKER_ID}"
echo "returning status: $e" echo "returning status: $e"
echo "--->" echo "--->"
exit $e exit $e
@ -167,14 +201,14 @@ function ifthenelse() {
os="${arg%%:::*}" os="${arg%%:::*}"
thenpart="${arg#*:::}" thenpart="${arg#*:::}"
if test "${thenpart/:::/}" = "${thenpart}"; then 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 else
elsepart="${thenpart##*:::}" elsepart="${thenpart##*:::}"
thenpart="${thenpart%:::*}" thenpart="${thenpart%:::*}"
if test -n "${thenpart}"; then 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 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 fi
fi fi
@ -183,10 +217,25 @@ function ifthenelse() {
set -x set -x
docker pull $img 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 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 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' 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 for f in 'libpam-systemd:amd64' 'policykit*' 'colord'; do
docker exec ${DOCKER_ID} bash -c "echo 'Package: $f' >> /etc/apt/preferences" 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} 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; docker exec ${DOCKER_ID} apt-get install ${OPTIONS} python-software-properties apt-transport-https dpkg-dev lsb-release;
for repo in "${repos[@]}"; do for repo in "${repos[@]}"; do
ifthenelse "${repo}" "apt-add-repository ARG" ifthenelse "${repo}" "apt-add-repository 'ARG'"
done done
for key in "${keys[@]}"; do for key in "${keys[@]}"; do
wget -O- "$key" \ wget -O- "$key" \
@ -214,8 +263,7 @@ case $mode in
done done
docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh
;; ;;
(yum) (rpm|yum|dnf|zypper|urpmi)
./bootstrap.sh -t dist
if [[ "$img" =~ "centos" ]]; then if [[ "$img" =~ "centos" ]]; then
docker exec ${DOCKER_ID} yum install -y redhat-lsb 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 docker exec -i ${DOCKER_ID} bash -c 'cat > /etc/yum.repos.d/wandisco-svn.repo' <<EOF
@ -228,10 +276,29 @@ enabled=1
gpgcheck=0 gpgcheck=0
EOF EOF
fi fi
docker exec ${DOCKER_ID} yum install -y rpm-build 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} groupadd -g $(id -g) build docker exec ${DOCKER_ID} ${INSTALL_TOOL} rpm-build automake libtool subversion gcc-c++ pkgconfig wget /usr/bin/lsb_release
docker exec ${DOCKER_ID} useradd -g $(id -g) -u $(id -u) build i=0
docker exec ${DOCKER_ID} ./resolve-rpmbuilddeps.sh || true 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 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@ Source: @PACKAGE_NAME@
Priority: extra Priority: extra
Maintainer: @AUTHOR@ Maintainer: @PACKAGER@
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 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@ Package: @PACKAGE_NAME@
Section: web Section: web

@ -16,7 +16,7 @@ if test -n "${SCHROOTNAME}"; then
SUDO="schroot -c "${SCHROOTNAME}" -u root -d / --" SUDO="schroot -c "${SCHROOTNAME}" -u root -d / --"
else else
DO="" DO=""
if grep -q '/docker/' /proc/1/cgroup; then if grep -q '/docker' /proc/1/cgroup; then
SUDO="" SUDO=""
else else
SUDO="sudo" SUDO="sudo"
@ -35,7 +35,7 @@ TO_INSTALL=
if test -e debian/control.in -a ! -e debian/control; then 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 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}" TO_INSTALL+=" ${f}"
fi fi
done done

@ -10,35 +10,34 @@
## 1 2 3 4 5 6 7 8 ## 1 2 3 4 5 6 7 8
## 45678901234567890123456789012345678901234567890123456789012345678901234567890 ## 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" SCHROOTNAME="$1"
PACKAGE_NAME=$(sed -n 's/^ *m4_define(x_package_name, \(.*\)).*/\1/p' configure.ac) 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 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') 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 if test -n "${FILES}"; then
FIRST=$(echo "${FILES}" | egrep -o "${PKGCONFIGS// /|}") schroot -c ${SCHROOTNAME} -u root -- ${INSTALL_TOOL} ${FILES}
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}
fi fi
else else
FILES=$(LANG= rpmbuild -bb --clean --nobuild --define "_topdir ." --define "_sourcedir ." ${PACKAGE_NAME}.spec 2>&1 | sed -n 's, is needed by.*,,p') 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 if test -n "${FILES}"; then
FIRST=$(echo "${FILES}" | egrep -o "${PKGCONFIGS// /|}") ${INSTALL_TOOL} ${FILES}
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}
fi fi
fi fi

@ -11,6 +11,11 @@ H;$!d;$x
# remove all single-line comment lines # remove all single-line comment lines
s/\n--[^\n]*//g s/\n--[^\n]*//g
# encode html entities
s/&/\&amp##SEMICOLON##/g
s/</\&lt##SEMICOLON##/g
s/>/\&gt##SEMICOLON##/g
# reduce spaces # reduce spaces
s,\t\| \+, ,g s,\t\| \+, ,g
@ -21,7 +26,7 @@ s,\t\| \+, ,g
s,\n\+,\n,g s,\n\+,\n,g
# remove unknown commands # 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 # convert special characters within quotes
:a;s/^\(\([^"]*"[^",]*"\)*[^"]*"[^"]*\),\([^"]*".*\)/\1\##COMMA##\3/g;ta :a;s/^\(\([^"]*"[^",]*"\)*[^"]*"[^"]*\),\([^"]*".*\)/\1\##COMMA##\3/g;ta
@ -34,17 +39,18 @@ h
s,.*\(create[ \n]\+table[^;]*;\).*,\1,ig s,.*\(create[ \n]\+table[^;]*;\).*,\1,ig
# start html table node # 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 # 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 # 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 :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 # 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><td></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></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 # add line breaks for long lines
s|\(<td[^>]*>[^<]\{30,40\}\)[ \n]\+\([^<]\{20,\}</td>\)|\1<br/>\2|g s|\(<td[^>]*>[^<]\{30,40\}\)[ \n]\+\([^<]\{20,\}</td>\)|\1<br/>\2|g

Loading…
Cancel
Save