diff options
author | James Meyer <james.meyer@operamail.com> | 2014-09-03 23:10:16 (GMT) |
---|---|---|
committer | James Meyer <james.meyer@operamail.com> | 2014-09-03 23:10:16 (GMT) |
commit | 8bef8020a022c52a8d1d4bb373b5c8cdc256284f (patch) | |
tree | b4ff9cf1c0cbddbc751d93ad18cae4f9b6aaa676 /setup_env_container.sh | |
parent | f93d353b9b47120e0ed102342ab4b66f314aff70 (diff) | |
download | linhes_dev-8bef8020a022c52a8d1d4bb373b5c8cdc256284f.zip |
Convert dev chroot to a container.
This was needed to play nice with systemd and the way it mounts /dev/pts inside the chroot as public (breaking the default kernel policy). When public after /dev/pts inside the chroot is unmounted it also unmounts /dev/pts for the host.
Same general steps as before.
- Create new container with ./setup_env_container.sh
- Enter container using ./enter_dev_container.$ARCH.$TS
Diffstat (limited to 'setup_env_container.sh')
-rwxr-xr-x | setup_env_container.sh | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/setup_env_container.sh b/setup_env_container.sh new file mode 100755 index 0000000..3c293e5 --- /dev/null +++ b/setup_env_container.sh @@ -0,0 +1,208 @@ +#!/bin/bash +# Script to setup the LinHES development enviroment +# ./setup_env.sh ( i686|x86_64 ) devID +# This script assumes that /tmp is usable. +START_DIR=`pwd` +TS=`date +%Y%h%d_%H%M%S` + +function arg_check { + case $1 in + i686) ARCH=$1 ;; + x86_64) ARCH=$1 ;; + *) + echo "invalid arch specified" + echo "valid options include i686 and x86_64" + echo "EX: ./setup_env.sh i686 " + echo "EX: ./setup_env.sh x86_64 " + exit 1 + ;; + esac + + + case $2 in + release) BENV="release" ;; + testing) BENV="testing" ;; + + *) + echo "invalid env specified" + echo "valid options include release, testing" + echo "EX: ./setup_env.sh i686 testing" + echo "EX: ./setup_env.sh x86_64 testing" + exit 1 + ;; + esac + + + if [ ! x$3 = x ] + then + USER=$3 + #check if developer template is present + fi + +} + + +function pacman_check { + for i in pacman pacstrap + do + which $i + status=$? + if [ ! $status = 0 ] + then + echo "Can not find $i in the path." + exit 1 + fi + done + + +} + + +function checkout_repo { + mkdir -p $BENV/$ARCH + cd $BENV/$ARCH + + git clone git@linhes.org:linhes_dev + git clone git@linhes.org:linhes_pkgbuild + + # git clone $USER@knoppmyth.net:linhes_pkgbuild + # git clone $USER@knoppmyth.net:linhes_dev + + + if [ $BENV == "testing" ] + then + echo "=====================================" + echo "switching linhes_pkgbuild to testing" + + cd linhes_pkgbuild + git checkout -b testing origin/testing + cd - + + echo "=====================================" + fi + + if [ $BENV == "testing" ] + then + echo "=====================================" + echo "switching linhes_dev to testing" + + cd linhes_dev + git checkout -b testing origin/testing + cd - + + echo "=====================================" + fi + +} + +create_pkg_mirror_dir(){ + #create the local pkg dir's for mirror and creating pkg's + + [ -e $MIRROR_DIR ] || mkdir -p $MIRROR_DIR + + for i in i686 x86_64 + do + [ -e $MIRROR_DIR/$i ] || mkdir -p $MIRROR_DIR/$i + for y in core extra core-testing extra-testing + do + [ -e $MIRROR_DIR/$i/$y ] || mkdir -p $MIRROR_DIR/$i/$y + [ -e $MIRROR_DIR/src_packages/$y ] || mkdir -p $MIRROR_DIR/src_packages/$y + done + done + + [ -e $MIRROR_DIR/sources ] || mkdir -p $MIRROR_DIR/sources + [ -e $MIRROR_DIR/packages ] || mkdir -p $MIRROR_DIR/packages + +} + +create_container(){ + #correct pacman.conf to use the correct ARCH to build the chroot + cd $START_DIR/$BENV/$ARCH/linhes_dev + sed -e "s/REPLACEME/$ARCH/g" templates/pacman.conf.chroot > /tmp/pacman.conf.chroot + + #create the container + cd $START_DIR + #mkdir -p $START_DIR/$BENV/$ARCH/linhes_container_root.$ARCH + mkdir -p $CONTAINER_DIR + pacstrap -i -c -d -C /tmp/pacman.conf.chroot $CONTAINER_DIR base base-devel openssh unison + status=$? + + if [ ! $status = 0 ] + then + printf "\n" + printf "%s\n" "********************************************************" + printf "*** %-48s ***\n" " An error occured creating the container" + printf "%s\n" "********************************************************" + exit 1 + fi +} + + +copy_custom_developer_file(){ + cd $START_DIR/$BENV/$ARCH/linhes_dev + if [ -d templates/developers/$USER ] + then + #check for login run + if [ -f templates/developers/$USER/loginrun.sh ] + then + echo "copy loginrun.sh for $USER" + cp -f templates/developers/$USER/loginrun.sh $CONTAINER_DIR/root/loginrun.sh + fi + + if [ -f templates/developers/$USER/custom_chroot.sh ] + then + echo "running custom_chroot.sh for $USER" + cd templates/developers/$USER + BROOT=$CONTAINER_DIR ./custom_chroot.sh $ARCH + cd - + fi + + fi +} + +create_entry_files() { + + #create custom enter_dev_chroot.sh script + cp templates/enter_dev_container.sh ../enter_dev_container.$ARCH.$TS + sed -i "s/REPLACE_ARCH/$ARCH/" ../enter_dev_container.$ARCH.$TS + sed -i "s/REPLACE_TS/$TS/" ../enter_dev_container.$ARCH.$TS + + chmod 755 ../enter_dev_container.$ARCH.$TS + + printf "%s\n" "********************************************************" + printf "** %-50s **\n" " To enter the container (linhes_container_root.$ARCH.$TS) run:" + printf "** %-50s **\n" " cd $BENV/$ARCH" + printf "** %-50s **\n" " ./enter_dev_container.$ARCH.$TS" + printf "%s\n" "********************************************************" + + #copy makepkg.conf into the chroot + sed -e "s/REPLACEME/$ARCH/g" templates/makepkg.conf > ../linhes_container_root.$ARCH.$TS/etc/makepkg.conf + + #copy pacman.conf into the chroot + sed -e "s/REPLACEME/$ARCH/g" templates/pacman.conf.chroot > ../linhes_container_root.$ARCH.$TS/etc/pacman.conf +} + + + + +#----------------------------------------------- + +arg_check $1 $2 $3 +#checkout_repo +pacman_check + +MIRROR_DIR=$START_DIR/$BENV/pkg_repo +create_pkg_mirror_dir + +CONTAINER_DIR=$START_DIR/$BENV/$ARCH/linhes_container_root.$ARCH.$TS +create_container +copy_custom_developer_file +create_entry_files + + + + + + + + |