diff --git a/ChangeLog b/ChangeLog index f5f93e1..4681453 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,31 @@ +2015-11-09 15:13 marc + + * scripts/bootstrap.sh, scripts/resolve-debbuilddeps.sh, + scripts/sql-to-dot.sed: better documentation + +2015-11-07 10:47 marc + + * bootstrap.sh, scripts/bootstrap.sh: there is no qt4-default + +2015-11-07 09:23 marc + + * bootstrap.sh, scripts/bootstrap.sh: there is no qt4-default + +2015-11-07 00:20 marc + + * README: set Section + +2015-11-07 00:11 marc + + * ChangeLog, ax_init_standard_project.m4, bootstrap.sh, + scripts/ax_init_standard_project.m4, scripts/bootstrap.sh: fixed + debian readme issue + +2015-11-06 15:34 marc + + * scripts/sql-to-dot.sed: new script to convert sql schema files + into graphviz dot + 2015-11-05 15:59 marc * README, scripts/ax_init_standard_project.m4, diff --git a/README b/README index 751950c..23fb03c 100644 --- a/README +++ b/README @@ -68,6 +68,10 @@ Then I continue, I rerun bootstrap.sh, this time with option -b which calls make ../../bootstrap-build-environment/scripts/bootstrap.sh -b +Add some additional files: + + svn add trunk/{COPYING,INSTALL,ChangeLog} + Everything is fine, so checkin the changes and cleanup the system: cd .. diff --git a/bootstrap.sh b/bootstrap.sh index a342cec..69db5cc 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -110,7 +110,9 @@ GENERATED FILES * resolve-rpmbuilddeps.sh - script to install RPM package dependencies * build-in-docker.sh - script to build the project encapsulated in a docker container * build-resource-file.sh - build resource.qrc file from a resource directory + * sql-to-dot.sed - script to convert SQL schema files to graphviz dot in doxygen * mac-create-app-bundle.sh - script to create apple mac os-x app-bundle + * test/runtests.sh - template file to run test scripts, i.e. docker based * AUTHORS - replace your name in AUTHORS before first run * NEWS - empty file add your project's news * README - add project description (first line is header, followed by an empty line) @@ -196,7 +198,7 @@ FILES debian/control fi -if test -n "${SCHROOTNAME}"; then - schroot -c "${SCHROOTNAME}" -u root -d / -- apt-get -y install dpkg-dev - DEPS=$(schroot -c "${SCHROOTNAME}" -- dpkg-checkbuilddeps 2>&1 || true) -else - apt-get -y install dpkg-dev - DEPS=$(dpkg-checkbuilddeps 2>&1 || true) -fi +install dpkg-dev +DEPS=$(${DO} dpkg-checkbuilddeps 2>&1 || true) DEPS=$(echo "$DEPS" | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}') for pa in ${DEPS}; do diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index fafd381..fb14847 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -112,6 +112,7 @@ GENERATED FILES * build-resource-file.sh - build resource.qrc file from a resource directory * sql-to-dot.sed - script to convert SQL schema files to graphviz dot in doxygen * mac-create-app-bundle.sh - script to create apple mac os-x app-bundle + * test/runtests.sh - template file to run test scripts, i.e. docker based * AUTHORS - replace your name in AUTHORS before first run * NEWS - empty file add your project's news * README - add project description (first line is header, followed by an empty line) @@ -197,7 +198,7 @@ FILES &1 | grep -q "$2" +} + +# call with volume name +function wait_for_mysql() { + check $1 "mysqld: ready for connections" +} + +# run a countdown and call a check function +# $1: expected time in seconds +# $2-: check function +function countdown() { + set +x + expect=$1 + shift + max=$1 + shift + for ((i=0; i<$((expect+max)); ++i)); do + echo -en "\rPlease wait: $((expect-i))s " + $* && break || sleep 1 + done + echo -e "\rdone in ${i}s: $* " + echo + set -x +} + +# should not be called with sudo root +if test "$(whoami)" = "root"; then + echo "**** ERROR: call as non root user" + exit 1 +fi + +# option checks +NEED_XVFB=0 +NEED_DOCKER=0 +NEED_WEBTESTER=0 +while test $# -gt 0; do + case "$1" in + (--help|-h) + echo "$0 [OPTIONS] [PORTS ]" + echo + echo "OPTIONS:" + echo + exit 0 + ;; + (*) echo "**** ERROR: unknown option '$1', try --help"; exit 1;; + esac + if test $# -eq 0; then + echo "**** ERROR: missing value, try --help"; exit 1; + fi + shift +done + +error=0; + +# test for xvfb (needed by webtester) +if test ${NEED_XVFB} -eq 1 -a \! -e "$(which xvfb-run)"; then + echo "**** ERROR: XVFB Not Installed" + echo "you need to install xvfb" + echo "please execute as root:" + echo " apt-get install xvfb" + error=1 +fi + +# test for docker if needed +if test ${NEED_DOCKER} -eq 1 -a \! -e "$(which docker)"; then + echo "**** ERROR: Docker Not Installed" + echo "you need to install the latest docker" + echo "please execute as root:" + echo " apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 \\" + echo " --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9" + echo " echo 'deb https://get.docker.io/ubuntu docker main' \\" + echo " > /etc/apt/sources.list.d/docker.list" + echo " apt-get update" + echo " apt-get install lxc-docker" + echo " adduser $(whoami) docker" + echo "you need to add the following line to /etc/default/docker:" + echo ' DOCKER_OPTS="--insecure-registry dev0004:5000"' + echo "logout $(whoami) and login again to run $(whoami) with group docker" + echo "additionals note:" + echo " if you run docker inside a VM (not recommended), you probably" + echo " need to foollow the instructions in chapter \"Changing Bridge" + echo " Subnetwork\" on https://marc.wäckerlin.ch/computer/docker-overview" + echo "introduction to docker, see:" + echo " https://marc.wäckerlin.ch/computer/docker-overview" + error=1 +fi + +# check for webtester +if test ${NEED_WEBTESTER} -eq 1 -a \! -e "$(which webrunner)"; then + echo "**** ERROR: Webtester Not Installed" + echo "you need to install webtester" + echo "please execute as root:" + echo " apt-get install -y wget software-properties-common apt-transport-https" + echo " apt-add-repository https://dev.marc.waeckerlin.org/repository" + echo " wget -O- https://dev.marc.waeckerlin.org/repository/PublicKey \\" + echo " | apt-key add -" + echo " apt-get update -y" + echo " apt-get install -y webtester" + echo "more information, see:" + echo " https://dev.marc.waeckerlin.org/redmine/projects/webtester" + error=1 +fi + +if test "$error" = "1"; then + exit 1 +fi + +set -x + +# Add tests here diff --git a/sql-to-dot.sed b/sql-to-dot.sed new file mode 100755 index 0000000..99b8b17 --- /dev/null +++ b/sql-to-dot.sed @@ -0,0 +1,41 @@ +#! /bin/sed -f +1i\ +/** @page database Database Schema\ +\ +@dot\ +digraph schema { + +# remove newlines +:a;N;$!ba;s/\n/ /g +# reduce spaces +s, \+, ,g + +s| *CREATE *TABLE *\(if *not *exists\)\? *`\?\([a-z]\+\)`\? *|\n \2\n [shape=none, margin=0, label=<\n \n \n|ig + +s/varchar *( *\([0-9]\+\) *)/varchar[\1]/ig + +s/ *PRIMARY KEY *( *`\?\([a-z]\+\)`\? *) *[,)]//ig + +:b;s/\([a-z]\+\)\([^;]*\)FOREIGN KEY *( *`\?\([a-z]\+\)`\? *) *REFERENCES *`\?\([a-z]\+\)`\? *( *`\?\([a-z]\+\)`\? *) *\([^,)]*\)[,)]\(.*\)/\1\2\7\n \1:\3 -> \4:\5/ig;tb + +:c;s|\n[(,] *`\?\([a-z]\+\)`\? *\([^ ]\+\)*\([^,)]*\) *COMMENT *[`"']\([^`"']*\)[`"'] *[,)]|\n \n,|ig;tc + +s| \+||g +s|\)|\1
\2|g +:d;s|\(
[^<]\{30,40\}\) \+\([^<]\{20,\}\)|\1
\2|g;td + +s| *COMMENT *= *["']\?\([^"']*\)["']\?|\n |ig + +s| \+||g +s|\)|\1
\2|g +:e;s|\(
[^<]\{60,80\}\) \+\([^<]\{30,\}\)|\1
\2|g;te + +s/\n,[^\n]*/\n/g +s|;|\n
\2
\1\2\3\4
\+||g +s|\(]*>[^<]\{30,40\}\) \+\([^<]\{20,\}
\1
\+||g +s|\(]*>[^<]\{60,80\}\) \+\([^<]\{30,\}
\n >];\n|ig + +$a\ +}\ +@enddot\ +*/