123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- #!/bin/bash
- exec 2>&1
- ROOT_UID="0"
- #Check if run as root
- if [ "$UID" -ne "$ROOT_UID" ] ; then
- echo "You must have 'sudo' right to do that!"
- exit 1
- fi
- rm -rf ./liquidsoap-compile_logs
- mkdir -p ./liquidsoap-compile_logs
- showhelp () {
- echo "Usage: run.sh [options] [parameters]
- -c all|ubuntu_lucid_32 Compile liquidsoap on all platforms or specified platform.
- -b all|ubuntu_lucid_32 Build shroot environments for all platforms or specified platform.
- -u username Local username will be used as sudo user of chroot env. Must be assigned before -b options"
- exit 0
- }
- build_env () {
- if [ $sudo_user = "-1" ];then
- echo "Please use -u to assign sudo username before build environments."
- exit 1
- fi
-
- echo "build_env $1"
- #exec > >(tee ./liquidsoap_compile_logs/build_env_$1.log)
- os=`echo $1 | awk '/(debian)/'`
- cpu=`echo $1 | awk '/(64)/'`
- dist=`echo $1 | awk -F "_" '{print $2}'`
- rm -f /etc/schroot/chroot.d/$1.conf
- if cat /etc/passwd | awk -F:'{print $1}' | grep "tmp" >/dev/null 2>&1;then
- echo "User tmp exists."
- else
- useradd tmp
- echo "User tmp is created."
- fi
-
- apt-get update
- apt-get --force-yes -y install debootstrap dchroot
- echo [$1] > /etc/schroot/chroot.d/$1.conf
- echo description=$1 >> /etc/schroot/chroot.d/$1.conf
- echo directory=/srv/chroot/$1 >> /etc/schroot/chroot.d/$1.conf
- echo type=directory >> /etc/schroot/chroot.d/$1.conf
- echo users=$sudo_user,tmp >> /etc/schroot/chroot.d/$1.conf
- echo root-users=$sudo_user >> /etc/schroot/chroot.d/$1.conf
- rm -rf /srv/chroot/$1
- mkdir -p /srv/chroot/$1
- #cp liquidsoap_compile.sh /srv/chroot/$1/
- if [ "$os" = "" ];then
- if [ "$cpu" = "" ];then
- echo "debootstrap --variant=buildd --arch=i386 $dist /srv/chroot/$1 http://archive.ubuntu.com/ubuntu/"
- debootstrap --variant=buildd --arch=i386 $dist /srv/chroot/$1 http://archive.ubuntu.com/ubuntu/
- else
- echo "debootstrap --variant=buildd --arch=amd64 $dist /srv/chroot/$1 http://archive.ubuntu.com/ubuntu/"
- debootstrap --variant=buildd --arch=amd64 $dist /srv/chroot/$1 http://archive.ubuntu.com/ubuntu/
- fi
- else
- if [ "$cpu" = "" ];then
- echo "debootstrap --variant=buildd --arch=i386 $dist /srv/chroot/$1 http://ftp.debian.com/debian/"
- debootstrap --variant=buildd --arch=i386 $dist /srv/chroot/$1 http://ftp.debian.com/debian/
- else
- echo "debootstrap --variant=buildd --arch=amd64 $dist /srv/chroot/$1 http://ftp.debian.com/debian/"
- debootstrap --variant=buildd --arch=amd64 $dist /srv/chroot/$1 http://ftp.debian.com/debian/
- fi
- fi
- }
- compile_liq () {
- echo "complie_liq $1"
- #exec > >(tee ./liquidsoap_compile_logs/compile_liq_$1.log)
- binfilename=`echo $1 | sed -e 's/ubuntu/liquidsoap/g' -e 's/debian/liquidsoap/g' -e 's/32/i386/g' -e 's/64/amd64/g'`
- rm -f /srv/chroot/$1/liquidsoap-compile.sh
- rm -f /srv/chroot/$1/liquidsoap
- cp liquidsoap-compile.sh /srv/chroot/$1/
- schroot -c $1 -u root -d / -- /liquidsoap-compile.sh
- cp /srv/chroot/$1/liquidsoap ./$binfilename
- if [ $? = 0 ];then
- echo "$binfilename is generated successfully"
- else
- mv ./liquidsoap-compile_logs/compile_liq_$1.log ./liquidsoap-compile_logs/fail_to_compile_liq_$1.log
- fi
- }
- os_versions=("ubuntu_lucid_32" "ubuntu_lucid_64" "ubuntu_precise_32" "ubuntu_precise_64" "ubuntu_quantal_32" "ubuntu_quantal_64" "ubuntu_raring_32" "ubuntu_raring_64" "debian_squeeze_32" "debian_squeeze_64" "debian_wheezy_32" "debian_wheezy_64")
- num=${#os_versions[@]}
- flag=
- os=
- sudo_user="-1"
- if [ x$1 = x ];then
- showhelp
- fi
- while getopts b:c:u: arg
- do
- case $arg in
- b)
- if [ "$OPTARG" = "all" ];then
- echo "Building all platforms on server..."
- for i in $(seq 0 $(($num -1)));
- do
- build_env ${os_versions[$i]} | tee ./liquidsoap-compile_logs/build_env_${os_versions[$i]}.log
- done
- else
- flag=1
- for i in $(seq 0 $(($num -1)));
- do
- if [ "$OPTARG" = ${os_versions[$i]} ];then
- echo "Building platform: $OPTARG ..."
- build_env ${os_versions[$i]} | tee ./liquidsoap-compile_logs/build_env_${os_versions[$i]}.log
- flag=0
- fi
- done
- if [ $flag = 1 ];then
- echo "Unsupported Platform from:"
- for j in "${os_versions[@]}"
- do
- echo $j
- done
- exit 1
- fi
- fi
- ;;
- c)
- if [ "$OPTARG" = "all" ];then
- echo "Compiling liquidsoap for all platforms on server..."
- for i in $(seq 0 $(($num -1)))
- do
- compile_liq ${os_versions[$i]} | tee ./liquidsoap-compile_logs/compile_liq_${os_versions[$i]}.log
- done
- else
- flag=1
- for i in $(seq 0 $(($num -1)));
- do
- if [ "$OPTARG" = ${os_versions[$i]} ];then
- echo "Compiling liquidsoap for platform: $OPTARG ..."
- compile_liq ${os_versions[$i]} | tee ./liquidsoap-compile_logs/compile_liq_${os_versions[$i]}.log
- flag=0
- fi
- done
- if [ $flag = 1 ];then
- echo "Unsupported Platform from:"
- for k in "${os_versions[@]}"
- do
- echo $k
- done
- exit 1
- fi
- fi
- ;;
- u)
- sudo_user="$OPTARG"
- echo "sudo_user is set as $sudo_user."
- ;;
- ?)
- showhelp
- ;;
- esac
- done
|