Module: check_mk
Branch: master
Commit: dfc0195f2757387b48839b00fd88f988e75b8b57
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=dfc0195f275738…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Oct 4 17:32:39 2017 +0200
The chroot path can now be configured via environment
Change-Id: I3f8253a9422e776a186317e28bc87664aff6fd3a
---
agents/windows/do-chroot | 35 +++++++++++++++++-------------
agents/windows/make-agent | 13 +++++++-----
agents/windows/make-chroot | 53 +++++++++++++++++++++++++---------------------
3 files changed, 57 insertions(+), 44 deletions(-)
diff --git a/agents/windows/do-chroot b/agents/windows/do-chroot
index be4ccd8..eaef0cb 100755
--- a/agents/windows/do-chroot
+++ b/agents/windows/do-chroot
@@ -9,32 +9,37 @@ unset LANG
CHROOTNAME=WinAgent
BASE="$(dirname "$(dirname "$(cd "$(dirname
"${BASH_SOURCE[0]}")" && pwd)")")"
-MNT=$BASE/agents/windows/chroot
-if [ ! -e $MNT/proc/self ] ; then
- mount -t proc proc $MNT/proc
+if [ -z $CHROOT_PATH ]; then
+ echo "ERROR: CHROOT_PATH not set"
+ exit 1
fi
-if [ ! -e $MNT/dev/sda ] ; then
- mount -o bind /dev $MNT/dev
+
+if [ ! -e $CHROOT_PATH/proc/self ] ; then
+ mount -t proc proc $CHROOT_PATH/proc
+fi
+
+if [ ! -e $CHROOT_PATH/dev/sda ] ; then
+ mount -o bind /dev $CHROOT_PATH/dev
fi
-if [ ! -e $MNT/dev/pts/ptmx ] ; then
- mount -t devpts devpts $MNT/dev/pts 2>/dev/null || true
+if [ ! -e $CHROOT_PATH/dev/pts/ptmx ] ; then
+ mount -t devpts devpts $CHROOT_PATH/dev/pts 2>/dev/null || true
fi
-if [ ! -e $MNT/build/Makefile ] ; then
- mount -o bind $BASE $MNT/build
+if [ ! -e $CHROOT_PATH/build/Makefile ] ; then
+ mount -o bind $BASE $CHROOT_PATH/build
fi
if [ -n "$CMD" ] ; then
- chroot chroot /usr/bin/env CHROOTNAME=$CHROOTNAME bash -c "$CMD"
+ chroot $CHROOT_PATH /usr/bin/env CHROOTNAME=$CHROOTNAME bash -c "$CMD"
else
- chroot chroot /usr/bin/env CHROOTNAME=$CHROOTNAME bash -l
+ chroot $CHROOT_PATH /usr/bin/env CHROOTNAME=$CHROOTNAME bash -l
fi
-umount $MNT/build
-umount $MNT/dev/pts
+umount $CHROOT_PATH/build
+umount $CHROOT_PATH/dev/pts
sleep 2
-umount $MNT/dev
-umount $MNT/proc
+umount $CHROOT_PATH/dev
+umount $CHROOT_PATH/proc
diff --git a/agents/windows/make-agent b/agents/windows/make-agent
index 4c646aa..2bf473e 100755
--- a/agents/windows/make-agent
+++ b/agents/windows/make-agent
@@ -17,7 +17,10 @@ chroot_dependencies=(nsis lcab debootstrap debian-archive-keyring)
versionfile=chroot_version
base="$(dirname "$(dirname "$(cd "$(dirname
"${BASH_SOURCE[0]}")" && pwd)")")"
-mnt=$base/agents/windows/chroot
+
+# May be set from external environment. Otherwise use chroot
+# directory in agents/windows
+export CHROOT_PATH=${CHROOT_PATH:-$base/agents/windows/chroot}
setup() {
sudo apt-get install "${chroot_dependencies[@]}"
@@ -25,11 +28,11 @@ setup() {
ensure_chroot() {
# Ensure that versionfile exists...
- if [ ! -f "$mnt/$versionfile" ] ; then
+ if [ ! -f "$CHROOT_PATH/$versionfile" ] ; then
echo "chroot version not found."
create=yes
# ... and it is up to date.
- elif [ $(cat "$mnt/$versionfile") -ne $(cat
"$base/agents/windows/$versionfile") ] ; then
+ elif [ $(cat "$CHROOT_PATH/$versionfile") -ne $(cat
"$base/agents/windows/$versionfile") ] ; then
echo "chroot is out of date."
create=yes
fi
@@ -38,7 +41,7 @@ ensure_chroot() {
echo "chroot is up to date."
else
setup
- sudo VERSIONFILE=$versionfile ./make-chroot
+ sudo VERSIONFILE=$versionfile CHROOT_PATH=$CHROOT_PATH ./make-chroot
fi
}
@@ -76,7 +79,7 @@ fi
ensure_chroot
# Pass remaining targets to make inside chroot.
-sudo ./do-chroot "cd build/agents/windows; make $targets"
+sudo CHROOT_PATH=$CHROOT_PATH ./do-chroot "cd build/agents/windows; make
$targets"
# Some cleanup: chown build artifacts to the original user.
find . -maxdepth 1 -regextype egrep \
diff --git a/agents/windows/make-chroot b/agents/windows/make-chroot
index f61586f..25e3beb 100755
--- a/agents/windows/make-chroot
+++ b/agents/windows/make-chroot
@@ -11,18 +11,23 @@ export HOSTNAME=cmk-windows-agent-chroot
export LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LANG=en_US.UTF-8
BASE="$(dirname "$(dirname "$(cd "$(dirname
"${BASH_SOURCE[0]}")" && pwd)")")"
-MNT=$BASE/agents/windows/chroot
+
+if [ -z $CHROOT_PATH ]; then
+ echo "ERROR: CHROOT_PATH not set"
+ exit 1
+fi
+
cleanup_chroot() {
- PIDS=$(lsof -Fp $MNT 2>/dev/null | cut -dp -f2)
+ PIDS=$(lsof -Fp $CHROOT_PATH 2>/dev/null | cut -dp -f2)
[ -n "$PIDS" ] && kill -9 $PIDS 2>&1
- [ -e $MNT/dev/pts/ptmx ] && umount $MNT/dev/pts && sleep 2
- [ -e $MNT/dev/sda ] && umount $MNT/dev && sleep 2
- [ -e $MNT/proc/self ] && umount $MNT/proc && sleep 2
+ [ -e $CHROOT_PATH/dev/pts/ptmx ] && umount $CHROOT_PATH/dev/pts &&
sleep 2
+ [ -e $CHROOT_PATH/dev/sda ] && umount $CHROOT_PATH/dev && sleep 2
+ [ -e $CHROOT_PATH/proc/self ] && umount $CHROOT_PATH/proc && sleep 2
- if mount | grep $MNT >/dev/null; then
- echo "Error: There are still mounts below $MNT. Terminating."
+ if mount | grep $CHROOT_PATH >/dev/null; then
+ echo "Error: There are still mounts below $CHROOT_PATH. Terminating."
exit 1
fi
}
@@ -38,7 +43,7 @@ echo "+ CLEANING UP CHROOT"
cleanup_chroot
# chroot leer machen
-rm -rf $MNT/*
+rm -rf $CHROOT_PATH/*
echo "+ INSTALLING SYSTEM"
@@ -99,10 +104,10 @@ packages=$(IFS=,; echo "${package_names[*]}")
debootstrap \
--components=main,universe \
--include="$packages" \
- --arch amd64 $DISTRO $MNT $MIRROR
+ --arch amd64 $DISTRO $CHROOT_PATH $MIRROR
# Need to be installed for installation.
-cat <<EOF > $MNT/etc/fstab
+cat <<EOF > $CHROOT_PATH/etc/fstab
# created by make-chroot
/dev/sda1 / ext2 rw,noatime,nodiratime,errors=continue 0 1
EOF
@@ -110,42 +115,42 @@ EOF
# Nun ein kleiner Hack um zu verhindern, dass beim Installieren der Pakete
# die Daemonen der Pakete gestartet werden. Ist nicht dramatisch, erzeugt
# aber doofe Fehlermeldungen.
-echo exit 101 > $MNT/usr/sbin/policy-rc.d
-chmod +x $MNT/usr/sbin/policy-rc.d
+echo exit 101 > $CHROOT_PATH/usr/sbin/policy-rc.d
+chmod +x $CHROOT_PATH/usr/sbin/policy-rc.d
-cp /etc/resolv.conf $MNT/etc/resolv.conf
+cp /etc/resolv.conf $CHROOT_PATH/etc/resolv.conf
-if [ ! -e $MNT/bin/hostname.bin ] ; then
- mv $MNT/bin/hostname{,.bin}
+if [ ! -e $CHROOT_PATH/bin/hostname.bin ] ; then
+ mv $CHROOT_PATH/bin/hostname{,.bin}
fi
-cat <<EOF > $MNT/bin/hostname
+cat <<EOF > $CHROOT_PATH/bin/hostname
echo $HOSTNAME
EOF
-chmod +x $MNT/bin/hostname
+chmod +x $CHROOT_PATH/bin/hostname
# Uses debian_chroot, but use it for all distros!
#debian_chroot=\$(hostname)
-cat <<EOF > $MNT/root/.bashrc
+cat <<EOF > $CHROOT_PATH/root/.bashrc
debian_chroot=$(hostname)
PS1='\${debian_chroot:+(\$debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\\$
'
PS1="\[\e]0;\${debian_chroot:+(\$debian_chroot)}\u@\h: \w\a\]\$PS1"
EOF
# Debian pkg installation does not seem to link python executable
-if [ ! -h $MNT/usr/bin/python ] ; then
- cd $MNT/usr/bin
+if [ ! -h $CHROOT_PATH/usr/bin/python ] ; then
+ cd $CHROOT_PATH/usr/bin
ln -s python2.7 python
cd -
fi
-mkdir $MNT/build
-cp "$BASE/agents/windows/$VERSIONFILE" "$MNT/"
+mkdir $CHROOT_PATH/build
+cp "$BASE/agents/windows/$VERSIONFILE" "$CHROOT_PATH/"
echo "+ CLEANING UP"
# Raeume apt-cache auf
-ls $MNT/var/cache/apt/archives/*.deb >/dev/null 2>&1 \
- && rm $MNT/var/cache/apt/archives/*.deb 2>&1 || true
+ls $CHROOT_PATH/var/cache/apt/archives/*.deb >/dev/null 2>&1 \
+ && rm $CHROOT_PATH/var/cache/apt/archives/*.deb 2>&1 || true
# Alle Prozesse aus dem chroot killen
cleanup_chroot