chiark / gitweb /
dot/zshrc: Turn off `KSH_GLOB'.
[profile] / Makefile
index e98e9467506f24e78baf79032c40c626638384b3..4df8c56e5d7561aaaeafc0978df862db06395004 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -69,7 +69,8 @@ ifneq ($(EMACS),nil)
 EMACSLIB                = $(HOME)/lib/emacs
 
 EMACS_VERSION          := $(shell $(EMACS) 2>&1 -Q --batch --eval \
-       '(message "%s %s" emacs-major-version emacs-minor-version)')
+       '(message "%s %s" emacs-major-version emacs-minor-version)' | \
+       tail -n1)
 emacs-version-p                 = $(shell set -- $(EMACS_VERSION); \
        if [ $$1 -gt $1 ] || ([ $$1 -eq $1 ] && [ $$2 -ge $2 ]); then \
          echo t; \
@@ -150,7 +151,7 @@ SCRIPTLINKS         += update-buildable-branch
 
 ## Shells.
 DOTLINKS               += .profile .shell-rc .shell-logout
-DOTLINKS               += .shrc .rcrc
+DOTLINKS               += .shrc
 DOTLINKS               += .zprofile .zshrc .zlogout .zshenv
 DOTLINKS               += .bash_profile .bash_completion .bash_logout
 DOTLINKS               += .bashrc .inputrc
@@ -159,6 +160,14 @@ DOTLINKS           += .bashrc .inputrc
 .bash_logout_SRC        = shell-logout
 .zlogout_SRC            = shell-logout
 
+## The Plan 9 `rc' shell.  This needs special hacking, because the Linux port
+## and Plan 9 From User Space have incompatible syntax.
+DOTLINKS               += lib/profile
+lib/profile_SRC                 = rcrc
+all:: $(HOME)/.rcrc
+$(HOME)/.rcrc: dot/rcrc
+       $(call v_tag,SED)sed 's/; if not/else/' $< >$@.new && mv $@.new $@
+
 ## Git.
 DOTSUBST               += .gitconfig
 SCRIPTLINKS            += git-copyright-dates
@@ -270,11 +279,17 @@ DOTLINKS          += .config/gtk-3.0/settings.ini
 SCRIPTLINKS            += xinitcmd lock-screen xshutdown
 SCRIPTLINKS            += un-backslashify-selection
 SCRIPTLINKS            += xpra-start-xdummy
+SCRIPTLINKS            += play-rawk
 
 DOTCPP                 += .Xdefaults
 Xdefaults_DEFS          = -DEMACSWD=$(call mdw-conf,emacs-width,77)
 $(HOME)/.Xdefaults: $(HOME)/.mdw.conf
 
+ifeq ($(shell case $${DISPLAY-nil} in (:[0-9]*) echo t ;; (*) echo nil ;; esac),t)
+dotfile-hook/.Xdefaults = \
+       $(call v_tag,XRDB)xrdb -override $<
+endif
+
 endif
 
 ###--------------------------------------------------------------------------
@@ -292,6 +307,7 @@ $(addprefix $(HOME)/, $(subst %,\%,$(DOTLINKS))): $(HOME)/%: \
                rm -f $@.new && \
                ln -s $(call dotfile-source,$*) $@.new && \
                mv $@.new $@
+       $(dotfile-hook/$*)
 
 ## Hack with the C preprocessor.
 all:: $(addprefix $(HOME)/, $(DOTCPP))
@@ -301,6 +317,7 @@ $(addprefix $(HOME)/, $(subst %,\%,$(DOTCPP))): $(HOME)/%: \
                rm -f $@.new && \
                cpp -P -o$@.new $($*_DEFS) $< && \
                mv $@.new $@
+       $(dotfile-hook/$*)
 
 ## Hack by making simple substitutions.
 substvar                = -e $(call quote,s\a@$1@\a$2\ag)
@@ -308,7 +325,7 @@ SUBSTS                      += $(call substvar,home,$(HOME))
 SUBSTS                 += $(call substvar,profile,$(HERE))
 all:: $(addprefix $(HOME)/, $(DOTSUBST))
 $(addprefix $(HOME)/, $(subst %,\%,$(DOTSUBST))): $(HOME)/%: \
-               $$(call dotsubst-source,$$*,.in) Makefile
+               $$(call dotfile-source,$$*,.in) Makefile
        $(call v_tag,SUBST)mkdir -p $(dir $@) && \
                rm -f $@.new && \
                sed -e "1i\
@@ -316,11 +333,25 @@ $(relax)### generated by $(HERE)/Makefile; do not edit!" \
                        $(SUBSTS) $($*_SUBSTS) \
                        $(call dotfile-source,$*,.in) >$@.new && \
                mv $@.new $@
+       $(dotfile-hook/$*)
 
 ###--------------------------------------------------------------------------
 ### Processing script links.
 
 script-source           = $(HERE)/bin/$(or $($1_SRC), $1)
+
+ifeq ($(prefix-shebang-p),t)
+all:: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
+$(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \
+               $$(call script-source,$$*) Makefile
+       $(call v_tag,SHEBANG)mkdir -p $(dir $@) && \
+               rm -f $@.new && \
+               sed "1s\a\(#! *\)/\a\1$(SHEBANG_PREFIX)/\a" \
+                       $(call script-source,$*) >$@.new && \
+               chmod --reference=$(call script-source,$*) $@.new && \
+               mv $@.new $@
+       $(script-hook/$*)
+else
 scriptlink-ok-p                 = \
        $(call symlink-ok-p,$(HOME)/bin/$1,$(call script-source,$1))
 all:: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
@@ -330,6 +361,8 @@ $(addprefix $(HOME)/bin/, $(SCRIPTLINKS)): $(HOME)/bin/%: \
                rm -f $@.new && \
                ln -s $(call script-source,$*) $@.new && \
                mv $@.new $@
+       $(script-hook/$*)
+endif
 
 all:: $(addprefix $(HOME)/bin/, $(SCRIPTLINKS))
 
@@ -386,6 +419,7 @@ $(foreach p, $(PACKAGES), $(call pkg-stamp,$p,install)): \
        $(call v_tag,INSTALL)cd $(dir $@) && \
                $(MAKE) $($*_MAKEFLAGS) install >>buildlog 2>&1 && \
                touch install-stamp
+       $(package-hook/$*)
 
 all:: $(foreach p, $(PACKAGES), $(DEP_$p))
 $(foreach p, $(PACKAGES), $(eval _pkg.$p: $(call pkg-stamp,$p,install)))