#!/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