--- /dev/null
+#!/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