X-Git-Url: https://iankelling.org/git/?p=buildscripts;a=blobdiff_plain;f=emacs;h=b2c97406a9c12f44c032806cbf2a5116fa70555a;hp=b9cc53b60824c2d67a1d73ee91a71690c173bdf4;hb=HEAD;hpb=6d5364acaf732814110b7ab98ef1d266276f64ee diff --git a/emacs b/emacs index b9cc53b..5fe4e2f 100755 --- a/emacs +++ b/emacs @@ -1,5 +1,12 @@ #!/bin/bash -# Copyright (C) 2016 Ian Kelling +# I, Ian Kelling, follow the GNU license recommendations at +# https://www.gnu.org/licenses/license-recommendations.en.html. They +# recommend that small programs, < 300 lines, be licensed under the +# Apache License 2.0. This file contains or is part of one or more small +# programs. If a small program grows beyond 300 lines, I plan to switch +# its license to GPL. + +# Copyright 2024 Ian Kelling # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,6 +20,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + if [[ -s ~/.bashrc ]];then . ~/.bashrc;fi #set -x @@ -97,19 +105,27 @@ last_build=$dir/iank-emacs-build dirs=($dir $dir-nox) +m cd /a/opt/emacs 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" + echo "already compiled" + installed_info=$(file $(readlink -f $(type -P emacs))) + build_info=$(file $dir/src/emacs) + if [[ $installed_info == "$build_info" ]]; then + echo "already installed exiting" + # this isn't perfect, because install could partially fail or the + # command after it could + exit 0 + fi fi if [[ $rev != "$head" ]]; then bootstrap=true fi else - m cd /a/opt/emacs head=$(git rev-parse HEAD) bootstrap=true fi @@ -211,7 +227,6 @@ if $recompile; then fi nox=true done - echo $head >$last_build else m cd ${dirs[0]} logq sudo make install @@ -225,37 +240,6 @@ fi # from its HACKING file -cd /a/opt/mu - -last_build=$PWD/iank-mu-build - -rev=$(cat $last_build 2>/dev/null) ||: -head=$(git rev-parse HEAD) - -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 - m sudo apt-get -y install --purge --auto-remove libgmime-3.0-dev meson -fi -if $recompile || [[ $rev != "$head" ]]; then - m git clean -xfffd - m ./autogen.sh && make -j`nproc` - # note uninstall is implemented - m sudo make install - echo $head >$last_build -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 if $recompile; then # note, not totally sure its right to put this within recompile, but its taking up most of the time, so going for it. @@ -286,3 +270,5 @@ fi # logq make my-update-info-dir + +echo $head >$last_build