X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/ed2a32e196fd49027d5e0460889a3131484d93d3..297d60aa2dad7081062fe15a517412565f45053d:/setup diff --git a/setup b/setup index 633336f..5f0ce0e 100755 --- a/setup +++ b/setup @@ -1,13 +1,13 @@ -#! /bin/sh +#! /bin/bash set -e umask 002 -sub= up=; +sub= mkdir -p $HOME$sub -: ${REPO=http://guvnor.distorted.org.uk/ftp/pub/mdw} +: ${REPO=http://guvnor.distorted.org.uk/ftp/pub/mdw/profile} export PATH=/usr/local/bin:$HOME$sub/bin:/usr/bin:/usr/ccs/bin:/bin @@ -26,11 +26,6 @@ done ### Find out where I am here=$(pwd) -case "$here" in - $HOME/*) ;; - *) echo >&2 "$0: must be below $HOME"; exit 1;; -esac -down=$(echo $here | sed "s#^$HOME/##") ### Suss out how to print things out=$(echo -n "foo"; echo "bar") @@ -72,7 +67,11 @@ fi ### Install necessary things echo "Installing useful scripts..." -for script in lesspipe.sh start-ssh-agent svnwrap; do +scripts=" + lesspipe.sh start-ssh-agent svnwrap" +[ "$xstuff" ] && scripts="$scripts + xrun" +for script in $scripts; do $echon " $script:$echoc" found= for p in /bin /usr/bin /usr/local/bin $(echo $PATH | tr : ' '); do @@ -132,29 +131,66 @@ for system in $systems; do done echo " all done." +### Install global configuration +echo -n "Installing dotfile configuration:" +if [ -f $HOME$sub/.mdw.conf ]; then + echo " already installed." +else + cp mdw.conf $HOME$sub/.mdw.conf + echo " done." +fi + ### Symlink the various dotfiles into place dotfiles=" - bash_profile bash_logout bashrc + bash_profile bash_logout bashrc inputrc emacs emacs-calc vm mailrc - cmucl-init.lisp clisprc.lisp sbclrc - dircolors screenrc" -[ "$xstuff" ] && dotfiles="$dotfiles xinitrc xsession Xdefaults" + lisp-init.lisp:.cmucl-init.lisp + lisp-init.lisp:.sbclrc + lisp-init.lisp:.clisprc.lisp + dircolors screenrc cvsrc" +[ "$xstuff" ] && dotfiles="$dotfiles + xinitrc xsession Xdefaults + eterm-theme.cfg:.Eterm/themes/Eterm/theme.cfg + e-keybindings.cfg:.enlightenment/keybindings.cfg + jue-peek.jpg:.enlightenment/backgrounds/jue-peek.jpg" mkdir -p $HOME/test echo "Installing dotfiles..." for d in $dotfiles; do - [ -f $d ] - rm -f "$HOME$sub/.$d" - ln -s $up$down/$d $HOME$sub/.$d - echo " .$d" + target=.$d + case $d in + *:*) target=${d#*:} d=${d%%:*};; + esac + ft=$HOME$sub/$target + dir=${ft%/*} + mkdir -p $dir + ln -s $here/$d $ft.new + mv $ft.new $ft + echo " $target" done echo " all done." ### Set up the Emacs config +$echon "Finding a suitable emacs:$echoc" +emacs=no +for i in emacs21 emacs; do + if type -p >/dev/null $i; then + emacs=$i + break + fi +done +if [ $emacs = no ]; then + echo " failed." + emacs=: +else + echo " $emacs." +fi + echo "Installing Emacs packages..." for elib in make-regexp; do $echon " $elib:$echoc" - if $false emacs >/dev/null 2>&1 --batch --eval ' + if $false $emacs >/dev/null 2>&1 --no-site-file --batch --eval ' + (setq load-path (nconc load-path (list "~/lib/emacs"))) (kill-emacs (condition-case nil (progn (load-library "make-regexp") 0) (error 1)))'; then @@ -164,7 +200,7 @@ for elib in make-regexp; do $GETURL $HOME$sub/lib/emacs/make-regexp.el $REPO/make-regexp.el $echon " compiling$echoc" (cd $HOME$sub/lib/emacs; - emacs >/dev/null 2>&1 --batch \ + $emacs >/dev/null 2>&1 --no-site-file --batch \ --eval '(byte-compile-file "make-regexp.el")') echo " done." fi @@ -176,9 +212,9 @@ $echon " linking$echoc" for link in dot-emacs.el:dot-emacs.el emacs-Makefile:Makefile; do set -- $(echo $link | tr : ' ') from=$1 to=$2 - rm -f $HOME$sub/lib/emacs/$to - ln -s ../../$up$down/$from $HOME$sub/lib/emacs/$to + ln -s $here/$from $HOME$sub/lib/emacs/$to.new + mv $HOME$sub/lib/emacs/$to.new $HOME$sub/lib/emacs/$to done $echon " compiling$echoc" -make >/dev/null 2>&1 -C $HOME$sub/lib/emacs +make >/dev/null 2>&1 -C $HOME$sub/lib/emacs EMACS=$emacs echo " done."