#!/bin/sh # # pbuilder hook script: choose optional compiler rather than default one # # Sometimes we want to choose other compiler than default, because of improving # code to conform to standard, check compiler quality or so. This script will # ease it. Try enable hook script and set "CHOOSE_COMPILER" variables as clang, # gcc-*, or other compilers (note: however, now only clang and gcc can works # well and others fails to build). # # i.e.) # $ sudo CHOOSE_COMPILER="clang" pbuilder --build foobar_1.0-1.dsc # $ sudo CHOOSE_COMPILER="gcc-4.6" pbuilder --build foobar_1.0-1.dsc # set -e # check whether we are asked to change the compiler. case "$CHOOSE_COMPILER" in clang) newcc=/usr/bin/"$CHOOSE_COMPILER" newcxx=/usr/bin/"$CHOOSE_COMPILER"++ ;; gcc-*) use_gcc_version=`echo $CHOOSE_COMPILER | sed -e s/gcc-//` gxx_package=g++-"$use_gcc_version" newcc=/usr/bin/"$CHOOSE_COMPILER" newcxx=/usr/bin/g++-"$use_gcc_version" ;; tcc) newcc=/usr/bin/"$CHOOSE_COMPILER" newcxx=/bin/false not_gcc_compat=1 ;; pcc) newcc=/usr/bin/"$CHOOSE_COMPILER" newcxx=/bin/false not_gcc_compat=1 ;; asn1c) newcc=/usr/bin/"$CHOOSE_COMPILER" newcxx=/bin/false not_gcc_compat=1 ;; *) exit 0 ;; esac for compiler in $CHOOSE_COMPILER $gxx_package do apt-get -y install "$compiler" || { echo >&2 "E: Installing the compiler "$compiler" failed" exit 1 } done test -x /usr/bin/"$CHOOSE_COMPILER" || { echo >&2 "E: Package "$CHOOSE_COMPILER" does not contain compiler driver?" exit 1 } ln -sf "$newcc" /usr/bin/cc ln -sf "$newcxx" /usr/bin/c++ if [ x"$not_gcc_compat" = x ]; then (cd /usr/bin; ln -sf "$newcc" gcc; ln -sf "$newcxx" g++) else rm -f /usr/bin/gcc /usr/bin/g++ fi exit 0