fixes
authorIan Kelling <iank@fsf.org>
Sat, 4 Sep 2021 19:13:07 +0000 (15:13 -0400)
committerIan Kelling <iank@fsf.org>
Sat, 4 Sep 2021 19:13:07 +0000 (15:13 -0400)
emacs
rust

diff --git a/emacs b/emacs
index 5300c3cbf32c1e0bc143a43685c68f3777585577..b1d3e6b86a7b855116cb34ab90deade7fa8b3930 100755 (executable)
--- a/emacs
+++ b/emacs
@@ -42,7 +42,15 @@ export CFLAGS="-Og -g3"
 
 export DEBIAN_FRONTEND=noninteractive
 pupdate
+
+# some distros, the package name is like emacs25, some its just emacs
+ver=$(apt-cache showsrc emacs | sed -rn 's/^Version: 1:([0-9]+).*/\1/p' | sort -n | tail -n1) ||:
 for x in {35..25} ""; do
+  if [[ $ver ]] && (( ver >= x )); then
+    echo latest_emacs=emacs
+    latest_emacs=emacs
+    break
+  fi
   if apt-cache showsrc emacs$x 2>/dev/null |grep . &>/dev/null; then
     echo latest_emacs=$x
     latest_emacs=emacs$x
@@ -70,6 +78,10 @@ fi
 
 #building emacs, INSTALL.BZR
 
+# gawk and attr were no longer automatically installed in stretch,
+# looking back, i assume i got some error.
+# autoconf-archive due to come error
+pi ${pkgs[@]}
 
 #git repo
 dir=/a/opt/emacs-$(distro-name)$(distro-num)
@@ -86,7 +98,6 @@ if [[ -e $dir ]]; then
   head=$(git rev-parse HEAD)
   if ! $recompile && ! $bootstrap && [[ $rev == "$head" ]]; then
     echo "already compiled, exiting"
-    exit 0
   fi
   if [[ $rev != "$head" ]]; then
     bootstrap=true
@@ -102,51 +113,45 @@ if $bootstrap; then
   recompile=true
 fi
 
-# gawk and attr were no longer automatically installed in stretch,
-# looking back, i assume i got some error.
-# autoconf-archive due to come error
-pi ${pkgs[@]}
+case $(distro-name) in
+  fedora )
+    logq s yum-builddep -y emacs
+    logq pi texlive-dvipng
+    ;;&
+  debian|ubuntu|trisquel)
+    # todo: unknown for other distros, this will fail
+    logq p -y build-dep maildir-utils/$(debian-codename)
+    # oddly, on ubuntu 14.04 this installs postfix, but I dun care
+    # ubuntu 14.04 gave this error message
+    # Unable to satisfy the build-depends: Build-Depends: libpng-dev
+    # this is satisfied by dvipng. the build-dep is just wrong
+    # minor bug I'm not going to bother reporting.
+    #
+    # note, useful command to see build dep packagages:
+    # apt-rdepends --build-depends --follow=DEPENDS emacs25
+    logq p -y build-dep $latest_emacs
+    ;;&
+esac
 
 if $recompile; then
-  case $(distro-name) in
-    fedora )
-      logq s yum-builddep -y emacs
-      logq pi texlive-dvipng
-      ;;&
-    debian|ubuntu|trisquel)
-      # todo: unknown for other distros, this will fail
-      logq p -y build-dep maildir-utils/$(debian-codename)
-      # oddly, on ubuntu 14.04 this installs postfix, but I dun care
-      # ubuntu 14.04 gave this error message
-      # Unable to satisfy the build-depends: Build-Depends: libpng-dev
-      # this is satisfied by dvipng. the build-dep is just wrong
-      # minor bug I'm not going to bother reporting.
-      #
-      # note, useful command to see build dep packagages:
-      # apt-rdepends --build-depends --follow=DEPENDS emacs25
-      logq p -y build-dep $latest_emacs
-      ;;&
-  esac
-fi
 
-nox=false
-for d in ${dirs[@]}; do
-  if $nox; then
-    # todo: this doesnt account for
-    m mkdir -p ${d%/*}
-    m rsync --delete -ra $dir/ $d
-    mp=$HOME/.iank/e/e
-    if mountpoint $mp &>/dev/null; then
-      m sudo umount $mp
+  nox=false
+  for d in ${dirs[@]}; do
+    if $nox; then
+      # todo: this doesnt account for
+      m mkdir -p ${d%/*}
+      m rsync --delete -ra $dir/ $d
+      mp=$HOME/.iank/e/e
+      if mountpoint $mp &>/dev/null; then
+        m sudo umount $mp
+      fi
+      m mkdir -p $mp
+      m sudo mount -o bind $d $mp
+      m sudo chown $USER:$USER $mp
+      m cd $mp
+    else
+      m cd $d
     fi
-    m mkdir -p $mp
-    m sudo mount -o bind $d $mp
-    m sudo chown $USER:$USER $mp
-    m cd $mp
-  else
-    m cd $d
-  fi
-  if $recompile || [[ ! -e configure ]]; then
     # todo, consider when this should be uncommented
     #logq s make uninstall
     m find ~/.emacs.d/ -name '*.elc' -delete
@@ -171,31 +176,32 @@ for d in ${dirs[@]}; do
     export CFLAGS='-g3 -Og'
     #CFLAGS='-std=gnu99 -g3 -O2' logq ./configure --enable-link-time-optimization
     # on ubuntu 12.04, the above fails, says my c compiler won't work, so intead, just use defaults
-  fi
-  if $nox; then
-    # mix of flags from arch and debians build flags
-    # note, youd think we could just run make again, but the
-    # build system isnt smart enough, we have to recompile
-    # from scratch.
-    logq ./configure --without-x --without-sound --without-gsettings --without-gconf
-    ln -s ~/.emacs.d .
-  else
-    logq ./configure
-  fi
-  if $recompile; then
+    if $nox; then
+      # mix of flags from arch and debians build flags
+      # note, youd think we could just run make again, but the
+      # build system isnt smart enough, we have to recompile
+      # from scratch.
+      logq ./configure --without-x --without-sound --without-gsettings --without-gconf
+      ln -s ~/.emacs.d .
+    else
+      logq ./configure
+    fi
     logq make -j `nproc` bootstrap
-  fi
-
-  logq make -j `nproc`
-  if ! $nox; then
-    logq sudo make install
-    # make emacs always work for root
-    sudo /a/exe/lnf /usr/local/bin/emacs /usr/bin
-  fi
-  nox=true
-done
-echo $head >$last_build
-
+    logq make -j `nproc`
+    if ! $nox; then
+      logq sudo make install
+      # make emacs always work for root
+      sudo /a/exe/lnf /usr/local/bin/emacs /usr/bin
+    fi
+    nox=true
+  done
+  echo $head >$last_build
+else
+  m cd ${dirs[0]}
+  logq sudo make install
+  # make emacs always work for root
+  m sudo /a/exe/lnf /usr/local/bin/emacs /usr/bin
+fi
 
 #git clone https://github.com/djcb/mu
 # note: master failed on t8, i moved back to the commit before a bug
@@ -209,22 +215,23 @@ last_build=$PWD/iank-mu-build
 
 rev=$(cat $last_build 2>/dev/null) ||:
 head=$(git rev-parse HEAD)
-if $recompile || [[ $rev != "$head" ]]; then
 
-  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
-    # newer version than build-dep installs for buster
-    sudo apt-get -y install --purge --auto-remove libgmime-3.0-dev
-  fi
-  git clean -xfffd
-  ./autogen.sh
-  make
-  sudo make install
-  echo $head >~/.local/mu-build-git-revision
+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
+  # newer version than build-dep installs for buster
+  m sudo apt-get -y install --purge --auto-remove libgmime-3.0-dev
+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 >~/.local/mu-build-git-revision
+else
+  m sudo make install
 fi
 
 if $recompile; then
diff --git a/rust b/rust
index 08aea33679f53721af1df82b812a22c90ed1d33f..ceaf4c21a4832a0ca971f58bb80c276c6b26dedc 100755 (executable)
--- a/rust
+++ b/rust
@@ -16,13 +16,15 @@ source /a/bin/distro-functions/src/package-manager-abstractions
 PATH="$PATH:$HOME/.cargo/bin"
 hash -r
 
+# todo: this should happen in some kind of sandbox or vm
+
 # install rust.
 if type -t rustc &>/dev/null; then
   rustup update
 else
   curl https://sh.rustup.rs -sSf | bash -s -- -y
 fi
-# todo: update this. updates in rust are stupidly complicate
+
 if ! which rg &>/dev/null; then
   cargo install ripgrep
 fi