build everithing in docker now
This commit is contained in:
@@ -20,7 +20,7 @@ DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/}
|
|||||||
configure=0
|
configure=0
|
||||||
build=0
|
build=0
|
||||||
docker=0
|
docker=0
|
||||||
buildtarget="distcheck"
|
buildtarget=""
|
||||||
overwrite=0
|
overwrite=0
|
||||||
rebuild=0
|
rebuild=0
|
||||||
rebuildfiles=()
|
rebuildfiles=()
|
||||||
@@ -28,8 +28,9 @@ while test $# -gt 0; do
|
|||||||
case "$1" in
|
case "$1" in
|
||||||
(--configure|-c) configure=1;;
|
(--configure|-c) configure=1;;
|
||||||
(--docker|-d) docker=1;;
|
(--docker|-d) docker=1;;
|
||||||
(--build|-b) configure=1; build=1;;
|
(--build|-b) configure=1; build=1; buildtarget+=" distcheck";;
|
||||||
(--target|-t) shift; configure=1; build=1; buildtarget="$1";;
|
(--target|-t) shift; configure=1; build=1; buildtarget+=" $1";;
|
||||||
|
(--clean) shift; configure=1; build=1; buildtarget+=" maintainer-clean";;
|
||||||
(--overwrite|-o) overwrite=1;;
|
(--overwrite|-o) overwrite=1;;
|
||||||
(--rebuild|-r) rebuild=1;;
|
(--rebuild|-r) rebuild=1;;
|
||||||
(--rebuild-file|-f) shift; rebuildfiles+=("$1");;
|
(--rebuild-file|-f) shift; rebuildfiles+=("$1");;
|
||||||
|
5
build-in-docker.conf
Normal file
5
build-in-docker.conf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
repos="ppa:cordova-ubuntu/ppa"
|
||||||
|
if test -n "${ANDROID_HOME}"; then
|
||||||
|
envs="-e ANDROID_HOME=${ANDROID_HOME}"
|
||||||
|
dirs="-v ${ANDROID_HOME}:${ANDROID_HOME}:ro"
|
||||||
|
fi
|
@@ -1,20 +1,90 @@
|
|||||||
#! /bin/bash -ex
|
#! /bin/bash -e
|
||||||
|
|
||||||
# build and test everything in a fresh docker installation
|
# build and test everything in a fresh docker installation
|
||||||
|
img="ubuntu:latest"
|
||||||
|
repos=""
|
||||||
|
keys=""
|
||||||
|
envs=""
|
||||||
|
dirs="-v $(pwd):/workdir"
|
||||||
|
targets="all check distcheck"
|
||||||
|
if test -e ./build-in-docker.conf; then
|
||||||
|
# you can preconfigure the variables in file build-in-docker.conf
|
||||||
|
# if you do so, add the file to EXTRA_DIST in makefile.am
|
||||||
|
source ./build-in-docker.conf
|
||||||
|
fi
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case "$1" in
|
||||||
|
(-h|--help)
|
||||||
|
echo "$0 [OPTIONS]"
|
||||||
|
echo
|
||||||
|
echo "OPTIONS:"
|
||||||
|
echo " -h, --help show this help"
|
||||||
|
echo " -i --image <image> use given docker image instead of ${img}"
|
||||||
|
echo " -t --targets targets specify build targets, default: ${targets}"
|
||||||
|
echo " -r --repo <url> add given apt repository"
|
||||||
|
echo " -k --key <url> add public key from url"
|
||||||
|
echo " -e --env <var>=<val> set environment variable in docker"
|
||||||
|
echo " -d --dir <dir> access given directory read only"
|
||||||
|
echo
|
||||||
|
echo "EXAMPLE:"
|
||||||
|
echo
|
||||||
|
echo "$0 -i mwaeckerlin/ubuntu:trusty-i386 \\"
|
||||||
|
echo " -t deb \\"
|
||||||
|
echo " -e ANDROID_HOME=/opt/local/android \\"
|
||||||
|
echo " -d /opt/local/android \\"
|
||||||
|
echo " -r universe \\"
|
||||||
|
echo " -r https://dev.marc.waeckerlin.org/repository \\"
|
||||||
|
echo " -k https://dev.marc.waeckerlin.org/repository/PublicKey"
|
||||||
|
echo
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
(-i|--image) shift;
|
||||||
|
img="$1"
|
||||||
|
;;
|
||||||
|
(-t|--targets) shift;
|
||||||
|
targets="$1"
|
||||||
|
;;
|
||||||
|
(-r|--repo) shift;
|
||||||
|
repos+=" $1"
|
||||||
|
;;
|
||||||
|
(-k|--key) shift;
|
||||||
|
keys+=" $1"
|
||||||
|
;;
|
||||||
|
(-e|--env) shift;
|
||||||
|
envs+=" -e $1"
|
||||||
|
;;
|
||||||
|
(-d|--dirs) shift;
|
||||||
|
dirs+=" -v $1:$1:ro"
|
||||||
|
;;
|
||||||
|
(*)
|
||||||
|
echo "**** ERROR: unknown option '$1', try --help" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if test $# -eq 0; then
|
||||||
|
echo "**** ERROR: missing value, try --help" 2>61
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
DOCKER_ID=$(docker run -d -v $(pwd):/workdir -w /workdir ubuntu sleep infinity)
|
set -x
|
||||||
|
|
||||||
|
DOCKER_ID=$(docker run -d ${dirs} ${envs} -w /workdir $img sleep infinity)
|
||||||
trap "docker rm -f ${DOCKER_ID}" INT TERM EXIT
|
trap "docker rm -f ${DOCKER_ID}" INT TERM EXIT
|
||||||
docker exec ${DOCKER_ID} apt-get install -y software-properties-common apt-transport-https dpkg-dev
|
docker exec ${DOCKER_ID} apt-get install -y software-properties-common apt-transport-https dpkg-dev
|
||||||
docker exec ${DOCKER_ID} apt-add-repository universe
|
if test -n "${repos}"; then
|
||||||
docker exec ${DOCKER_ID} apt-add-repository https://dev.marc.waeckerlin.org/repository
|
for repo in ${repos}; do
|
||||||
wget -O- https://dev.marc.waeckerlin.org/repository/PublicKey \
|
docker exec ${DOCKER_ID} apt-add-repository ${repo}
|
||||||
| docker exec -i ${DOCKER_ID} apt-key add -
|
done
|
||||||
if test -n "$*"; then
|
fi
|
||||||
for p in $*; do
|
if test -n "${keys}"; then
|
||||||
docker exec ${DOCKER_ID} apt-add-repository $p
|
for key in ${keys}; do
|
||||||
|
wget -O- ${key} \
|
||||||
|
| docker exec -i ${DOCKER_ID} apt-key add -
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
docker exec ${DOCKER_ID} apt-get update
|
docker exec ${DOCKER_ID} apt-get update
|
||||||
docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh
|
docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh
|
||||||
docker exec -u $(id -u) ${DOCKER_ID} svn upgrade || true
|
docker exec -u $(id -u) ${DOCKER_ID} svn upgrade || true
|
||||||
docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "all check distcheck"
|
docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "${targets}"
|
||||||
|
@@ -34,6 +34,12 @@ AC_PATH_PROG(ANDROID, [android], [0],
|
|||||||
[${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools])
|
[${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools])
|
||||||
AC_PATH_PROG(CORDOVA, [cordova], [0],
|
AC_PATH_PROG(CORDOVA, [cordova], [0],
|
||||||
[${PATH}${PATH_SEPARATOR}$(pwd)/node_modules/cordova/bin])
|
[${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])
|
AM_CONDITIONAL(HAVE_CORDOVA, [test ${CORDOVA} != 0 -a ${ANDROID} != 0])
|
||||||
AX_SUBST(CORDOVA)
|
AX_SUBST(CORDOVA)
|
||||||
|
|
||||||
|
@@ -8,6 +8,11 @@
|
|||||||
|
|
||||||
SUBDIRS = scripts doc html cordova test
|
SUBDIRS = scripts doc html cordova test
|
||||||
|
|
||||||
|
EXTRA_DIST = build-in-docker.conf
|
||||||
|
|
||||||
doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
||||||
|
|
||||||
|
maintainer-clean-local:
|
||||||
|
-rm -rf node_modules
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = makefile.in
|
MAINTAINERCLEANFILES = makefile.in
|
||||||
|
Reference in New Issue
Block a user