Template to bootstrap configure/automake projects for C++, libtool, Qt, NodeJS, PHP, Shell-Scripts, etc.
Extends autotools, by building packages for Debian and RPM, specifying generic library dependencies, creating desktop applications with icons, etc.
https://mrw.sh/development/bootstrap-build-environment
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.5 KiB
120 lines
3.5 KiB
#!/bin/bash -e |
|
|
|
#check for a text in a docker volume log |
|
function check() { |
|
if test $(docker inspect -f {{.State.Running}} $1) = "false"; then |
|
echo |
|
echo "**** ERROR: container $1 not running" |
|
exit 1 |
|
fi |
|
docker logs $1 2>&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 <port>]" |
|
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
|
|
|