diff options
Diffstat (limited to 'wayland.sh')
-rwxr-xr-x | wayland.sh | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/wayland.sh b/wayland.sh new file mode 100755 index 0000000..e09771c --- /dev/null +++ b/wayland.sh @@ -0,0 +1,97 @@ +#!/bin/bash + +# hbased on ttp://wayland.freedesktop.org/building.html + +WLD=/opt/wayland +LD_LIBRARY_PATH=$WLD/lib +PKG_CONFIG_PATH=$WLD/lib/pkgconfig/:$WLD/share/pkgconfig/ +ACLOCAL="aclocal -I $WLD/share/aclocal" +C_INCLUDE_PATH=$WLD/include +LIBRARY_PATH=$WLD/lib +PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 + +#export WLD LD_LIBRARY_PATH PKG_CONFIG_PATH ACLOCAL C_INCLUDE_PATH LIBRARY_PATH PKG_CONFIG_ALLOW_SYSTEM_CFLAGS + +BUILD_DIR=${BUILD_DIR:-~/local} +FORCE_AUTOGEN=0 +FORCE_DISTCLEAN=0 +SUDO_PASSWD="" +for arg in $@; do + option=`echo "'$arg'" | cut -d'=' -f1 | tr -d "'"` + value=`echo "'$arg'" | cut -d'=' -f2- | tr -d "'"` + case $option in + "-f") FORCE_AUTOGEN=1;; + "-c") FORCE_DISTCLEAN=1;; + "-s") SUDO_PASSWD=$value;; + esac +done + +RESET="\033[0m" +RED="\033[0;31m" +GREEN="\033[0;32m" + +function say () { echo -e "$GREEN$1$RESET"; } + +function error () { echo -e "${RED}FAILURE${RESET} $1" && exit 1; } + +sudo -K +TMP=/tmp/sudo.test +[ -e "$TMP" ] && rm -f "$TMP" +echo "$SUDO_PASSWD" | sudo -S touch "$TMP" &>/dev/null +if [ ! -e "$TMP" ]; then + error "cmdline provided sudo password failed!" +else + echo "$SUDO_PASSWD" | sudo -S rm -f "$TMP" +fi +echo + +function build () { + if [ $FORCE_AUTOGEN -eq 1 -o ! -e Makefile ]; then + say " * autogen --prefix=$WLD $my_configure_opts" && ./autogen.sh --prefix=$WLD $my_configure_opts + fi + if [ $FORCE_DISTCLEAN -eq 1 ]; then + say " * make distclean" && make distclean >/dev/null + fi + tmp=/tmp/$my_dir.build + say " * make" && make >$tmp && say " * install" && echo "$SUDO_PASSWD" | sudo -S -E make install +} + +function update () { + SHA_PREV=$(git log --pretty="format:%H" HEAD~1..) + say " * pull" && git pull || return 1 + SHA_HEAD=$(git log --pretty="format:%H" HEAD~1..) + if [ $FORCE_AUTOGEN -eq 1 -o $FORCE_DISTCLEAN -eq 1 ]; then + build + else + [ "$SHA_PREV" = "$SHA_HEAD" ] && return 0 + build + fi +} + +function do_your_job () { + if [ -d "$my_dir" ]; then + cd "$my_dir" && update && cd .. || error + else + say " * clone $my_src" && git clone "$my_src" "$my_dir" && cd "$my_dir" && autogen && cd .. || error + fi + say " * SUCCESS\n" +} + +cd $BUILD_DIR || exit 1 + +# WAYLAND +say "wayland" +my_dir=wayland +my_src=git://anongit.freedesktop.org/wayland/wayland +my_configure_opts= +do_your_job + +# WAYLAND-DEMOS +say "wayland-demos" +my_dir=wayland-demos +my_src=git://anongit.freedesktop.org/wayland/wayland-demos +my_configure_opts= +do_your_job + +say "DONE" + |