summaryrefslogtreecommitdiffstats
path: root/setup_env_container.sh
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2014-09-03 23:10:16 (GMT)
committerJames Meyer <james.meyer@operamail.com>2014-09-03 23:10:16 (GMT)
commit8bef8020a022c52a8d1d4bb373b5c8cdc256284f (patch)
treeb4ff9cf1c0cbddbc751d93ad18cae4f9b6aaa676 /setup_env_container.sh
parentf93d353b9b47120e0ed102342ab4b66f314aff70 (diff)
downloadlinhes_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-xsetup_env_container.sh208
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
+
+
+
+
+
+
+
+