X-Git-Url: https://iankelling.org/git/?p=buildscripts;a=blobdiff_plain;f=mu4e;fp=mu4e;h=b87990c7a4dc3b6b1ab93e28ef1cf6a5e53c85fb;hp=0000000000000000000000000000000000000000;hb=2734f99556feff8f8861a193d77c438ac9b8aa11;hpb=6d5364acaf732814110b7ab98ef1d266276f64ee diff --git a/mu4e b/mu4e new file mode 100755 index 0000000..b87990c --- /dev/null +++ b/mu4e @@ -0,0 +1,81 @@ +#!/bin/bash + +if [[ -s ~/.bashrc ]];then . ~/.bashrc;fi + + +cd /a/opt/mu + +recompile=false +dryrun=false + +while [[ $1 == -* ]]; do + case $1 in + -n) dryrun=true ;; + -r) recompile=true ;; + --no-r) recompile=false ;; + --) break ;; + *) echo "$0: error: bad arg: $1" >&2; exit 1 ;; + esac + shift +done + +bootstrap=false + +#git repo +dir=/a/opt/mu-$(distro-name)$(distro-num) +last_build=$dir/iank-mu-build + +if [[ -e $dir ]]; then + m cd $dir + rev=$(cat $last_build 2>/dev/null) ||: + head=$(git rev-parse HEAD) + if ! $recompile && ! $bootstrap && [[ $rev == "$head" ]]; then + echo "already compiled, exiting" + exit 0 + fi + echo rev=$rev head=$head + if [[ $rev != "$head" ]]; then + bootstrap=true + fi +else + head=$(git rev-parse HEAD) + bootstrap=true +fi + +if $dryrun; then + e recompile=$recompile bootstrap=$bootstrap + exit 0 +fi + +if $bootstrap; then + m rsync --delete -ra /a/opt/mu/ $dir + recompile=true + cd $dir +fi + + +if [[ $(debian-codename) == flidas ]]; then + # use the flidas branch, stuck behind because + # needs newer crypt libraries that are too troublesome. + cd /a/opt/muflidas +else + # libgmime-3.0-dev is a newer version than build-dep installs for buster + # note, currently, need newer meson than t10 + m pi libgmime-3.0-dev meson +fi +if $recompile; then + m git clean -xfffd + m ./autogen.sh && make -j`nproc` + # note uninstall is implemented + m sudo make install +else + # Workaround for some indecipherable build error + # that only happens after syncing the mu dir and not building from + # scratch. It seems there is some state somewhere, like ~/.local + # that doesn't get copied. Found the workaround by reading the Makefile, + # then doing a more verbose build with: + # ninja -C $PWD/build -v -d explain + sudo touch -d @$(($(stat -c%Y build/build.ninja) - 100)) /usr/local/bin/emacs + m sudo make install +fi +echo $head >$last_build