#!/bin/bash # # Gemaakt voor RuG-CIT 2017-05-27 Door: Rein van Weerden # ====================================================================== # buildKern Copyright dVR H&S Sys. 2017 # ====================================================================== # # build is used to check a flag file set by a webhook and if # go and build a kernel in a virtualbox # # ____ # <. .\ # \..| # \ |___(\--/) # __/ ( . . ) # "'._. '-.O.' # '-. \ "|\ # '.,,/'., dVR # if [[ -n ${DX} ]] then exec 1>>/tmp/${0##*/}.log 2>&1 set -${DX} # Are you going to debug? (DX is set to 'x' (set DX='x') or unset) fi # cd ${HOME}/build if [[ ! -f /tmp/flg.build ]] then exit else if [[ -f flg.building ]] then echo "Busy with a build. Try again later" exit else sudo mv /tmp/flg.build flg.building fi fi DATUM="$(/bin/date '+%a %d %b (%V) %Y %H:%M:%S %Z')" EPOCH="$(/bin/date '+%s')" VBOXMANAGE=$(which VBoxManage) VBOXMANAGE=${VBOXMANAGE:-"/usr/local/bin/VBoxManage"} if [[ ! -x "${VBOXMANAGE}" ]] then echo "Command 'VBoxManage' not found, bailing out" exit 1 fi CLONENAME=$(/usr/local/bin/uuidgen -t) CLONENAME=${CLONENAME%%-*} cat << EOF > .gitconfig [user] name = plReynaerde email = plreynaerde@dvrhss.net [push] default = simple [filter "media"] clean = git media clean %f smudge = git media smudge %f required = true [http] sslVerify = false EOF REPONAME=$(cat flg.building |sed -n '2p') BRANCHNAME=$(cat flg.building |sed -n '3p') CONFIGFILE=$(cat flg.building |sed -n '4p') # CONFIGFILE=$(echo ${CONFIGFILE} |sed -e 's/:2242//') KERNELSET=${CONFIGFILE%/*} KERNELSET=${KERNELSET}/Kernel.git cat << EOF > getAndBuild #!/bin/bash -x # # Gemaakt voor RuG-CIT 2017-05-27 Door: Rein van Weerden # ====================================================================== # getAndBuild Copyright dVR H&S Sys. 2017 # ====================================================================== # # getAndBuild is used to check a flag file set by a webhook and if # go and build a kernel in a virtualbox # # ____ # <. .\ # \..| # \ |___(\--/) # __/ ( . . ) # "'._. '-.O.' # '-. \ "|\ # '.,,/'., dVR # if [[ -n \${DX} ]] then exec 1>>/tmp/\${0##*/}.log 2>&1 set -\${DX} # Are you going to debug? (DX is set to 'x' (set DX='x') or unset) fi # date > /home/rein/getAndBuild.run.time cd /home/rein/bin mv mvGet2here mvGet2here.done sudo mv /media/sf_VM-sfolder/build/vr_genetlink.c.new /home/rein/src sudo chown rein:rein /home/rein/src/vr_genetlink.c.new sudo chmod a-wx,a+r,u+w /home/rein/src/vr_genetlink.c.new cd /home/rein echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections sudo dpkg --configure -a sudo apt-get update # sudo apt-get -y install autoconf automake bison debhelper flex libcurl4-openssl-dev libexpat1-dev libgettextpo0 libprotobuf-dev libtool libxml2-utils make protobuf-compiler python-all python-lxml python-setuptools python-sphinx ruby-ronn scons unzip vim-common python-netsnmp librdkafka-dev librdkafka1 sudo apt-get -y install autoconf automake bison debhelper flex libcurl4-openssl-dev libexpat1-dev libgettextpo0 libprotobuf-dev libtool libxml2-utils make protobuf-compiler python-all python-lxml python-setuptools python-sphinx ruby-ronn scons unzip vim-common python-netsnmp sudo apt-get -y install python-dev sudo apt-get -y install libfixbuf3-dev sudo apt-get -y install xz-utils cpio pax sudo apt-get -y install libncurses5-dev sudo apt-get -y install libssl-dev sudo mv /media/sf_VM-sfolder/build/libssl1.0.0_1.0.2g-1ubuntu4_amd64.deb . sudo apt-get -f install sudo apt-get -y install git sudo apt-get -y install g++ g++-multilib # sudo apt-get -y install gcc-4.9-plugin-dev sudo apt-get -y install gcc-5-plugin-dev sudo apt-get -y --no-install-recommends install dselect build-essential fakeroot kernel-package sudo apt-get -y install libboost-dev libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-system-dev libcurl4-openssl-dev google-mock libgoogle-perftools-dev liblog4cplus-dev libtbb-dev libhttp-parser-dev libxml2-dev libicu-dev # sudo apt-get -y install libuv1 libuv1-dev sudo apt-get -y install libpcap-dev sudo apt-get -y install libnl-3-200 libnl-3-dev libnl-genl-3-200 libnl-genl-3-dev sudo apt-get -y install cmake cmake-data cmake-extras sudo apt-get -y install w3m sudo apt-get -y install repo sudo apt-get -y install nmon sudo apt-get -y -f install sudo apt-get update sudo apt-get -y dist-upgrade sudo apt-get -y autoremove sudo rm -f /media/sf_VM-sfolder/build/dpkg-gencontrol date >> /home/rein/getAndBuild.run.time MAKEOPTIES="--jobs \$(nproc) V=1 -d" mkdir -p src/Linux cd src/Linux # git clone ${KERNELSET} # git clone ${CONFIGFILE} # cd ~/src/Linux/build # ln -s ../Kernel source # if make \${MAKEOPTIES} prepare > make.prepare.lst 2>&1 # then # if make \${MAKEOPTIES} modules > make.modules.lst 2>&1 # then # if make \${MAKEOPTIES} all > make.all.lst 2>&1 # then # if sudo make \${MAKEOPTIES} modules_install > make.modules_install.lst 2>&1 # then # if sudo make \${MAKEOPTIES} headers_install > make.headers_install.lst 2>&1 # then # if sudo make \${MAKEOPTIES} install > make.install.lst 2>&1 # then # VERSION=\$(cat include/config/kernel.release) # cd /boot # sudo update-grub # sudo update-initramfs -c -k \${VERSION} # sudo update-grub # sudo update-initramfs -u -k \${VERSION} # sudo update-grub # fi # fi # fi # fi # fi # fi date >> /home/rein/getAndBuild.run.time # cd ~/src/Linux/build # KR=\$(cat include/config/kernel.release) KR=\$(uname -r) echo \${KR} > ~/kernel.version # sudo mkdir -p /usr/src/linux-headers-\${KR} # sudo cp -a * /usr/src/linux-headers-\${KR}/ # cd /usr/src/ # sudo chown -R root:root linux-headers-\${KR} date >> /home/rein/getAndBuild.run.time echo "JuniperControllerBuild" > next sleep 5 sudo reboot EOF chmod 777 getAndBuild mkdir -p ~/VM-sfolder/build cp getAndBuild ~/VM-sfolder/build cp .gitconfig ~/VM-sfolder/build cp dpkg-gencontrol ~/VM-sfolder/build cp vr_genetlink.c.new ~/VM-sfolder/build #cp JuniperVRouterBuild ~/VM-sfolder/build cp openssl-1.1.0f.tar.gz ~/VM-sfolder/build cp libipfix_110209.tgz ~/VM-sfolder/build cp JuniperControllerBuild ~/VM-sfolder/build cp mpackages.xml ~/VM-sfolder/build BUILDERNAME="build-${CLONENAME}" UUID=$(${VBOXMANAGE} showvminfo builder|grep 'Hardware UUID:'|cut -f5 -d' ') ${VBOXMANAGE} clonevm --mode all --name "${BUILDERNAME}" --register "${UUID}" ${VBOXMANAGE} startvm "${BUILDERNAME}" --type headless echo "To connet to the VM use: ssh \$(getVMIPAddress ${BUILDERNAME})" sudo rm -f .gitconfig flg.building getAndBuild