On Sun, 04 Nov 2012, Blake Jones bla...@foo.net wrote:
Solaris ships a program called install in /usr/sbin, which performs a
task that's fairly similar to the GNU and BSD install programs but
which uses very different command line arguments. In particular, if it
is invoked without -c, -f, or -n, it will search the target
directory for a file with the same name as the one being installed, and
it will only install the file if it finds a matching name. More
excitingly, if it doesn't find a match, it will look in /bin, /usr/bin,
/etc, /lib, and /usr/lib and try to do the same there.
The standard workaround for this is to use GNU install.
It is available via the standard Solaris packaging system (in
file/gnu-coreutils), and installs itself as /usr/bin/ginstall.
This patch adds a check to configure to see if install behaves in a
way that's compatible with GNU and BSD install, and if not, it uses a
program called ginstall instead. It also modifies configure to set
the $(INSTALL) variable, and changes various Makefiles to use it.
---
Makefile.local|2 +-
completion/Makefile.local |4 ++--
configure | 19 +++
emacs/Makefile.local |6 +++---
lib/Makefile.local|4 ++--
man/Makefile.local|6 +++---
vim/Makefile |6 ++
7 files changed, 32 insertions(+), 15 deletions(-)
diff --git a/Makefile.local b/Makefile.local
index 2b91946..7ccb1cd 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -286,7 +286,7 @@ notmuch-shared: $(notmuch_client_modules)
lib/$(LINKER_NAME)
.PHONY: install
install: all install-man
mkdir -p $(DESTDIR)$(prefix)/bin/
- install notmuch-shared $(DESTDIR)$(prefix)/bin/notmuch
+ $(INSTALL) notmuch-shared $(DESTDIR)$(prefix)/bin/notmuch
ifeq ($(MAKECMDGOALS), install)
@echo
@echo Notmuch is now installed to $(DESTDIR)$(prefix)
diff --git a/completion/Makefile.local b/completion/Makefile.local
index dfc1271..a648a78 100644
--- a/completion/Makefile.local
+++ b/completion/Makefile.local
@@ -14,9 +14,9 @@ install-$(dir):
@echo $@
ifeq ($(WITH_BASH),1)
mkdir -p $(DESTDIR)$(bash_completion_dir)
- install -m0644 $(bash_script) $(DESTDIR)$(bash_completion_dir)/notmuch
+ $(INSTALL) -m0644 $(bash_script)
$(DESTDIR)$(bash_completion_dir)/notmuch
endif
ifeq ($(WITH_ZSH),1)
mkdir -p $(DESTDIR)$(zsh_completion_dir)
- install -m0644 $(zsh_script) $(DESTDIR)$(zsh_completion_dir)/_notmuch
+ $(INSTALL) -m0644 $(zsh_script)
$(DESTDIR)$(zsh_completion_dir)/_notmuch
endif
diff --git a/configure b/configure
index 5c5139f..dae837e 100755
--- a/configure
+++ b/configure
@@ -591,6 +591,21 @@ for flag in -Wmissing-declarations; do
done
printf \n\t${WARN_CFLAGS}\n
+INSTALL=install
+printf Checking for working \install\ program...
+mkdir _tmp_
This doesn't feel like a hot idea. Don't tell me you'd need to create a
compatibility script for using mktemp --tmpdir too...
Or how about just always using ginstall on Solaris?
BR,
Jani.
+cd _tmp_
+echo 1 1
+mkdir dest
+if install 1 dest /dev/null 21 ; then
+ printf \install\ works fine.\n
+else
+ INSTALL=ginstall
+ printf using \ginstall\.\n
+fi
+cd ..
+rm -rf _tmp_
+
rm -f minimal minimal.c
cat EOF
@@ -777,4 +792,8 @@ CONFIGURE_CXXFLAGS = -DHAVE_GETLINE=\$(HAVE_GETLINE)
\$(GMIME_CFLAGS)\\
-DSTD_ASCTIME=\$(STD_ASCTIME)
CONFIGURE_LDFLAGS = \$(GMIME_LDFLAGS) \$(TALLOC_LDFLAGS) \$(XAPIAN_LDFLAGS)
\\
\$(LIBNSL_LDFLAGS)
+
+# Which install program to use
+INSTALL = ${INSTALL}
+
EOF
diff --git a/emacs/Makefile.local b/emacs/Makefile.local
index fb82247..ee778cb 100644
--- a/emacs/Makefile.local
+++ b/emacs/Makefile.local
@@ -36,11 +36,11 @@ endif
.PHONY: install-emacs
install-emacs:
mkdir -p $(DESTDIR)$(emacslispdir)
- install -m0644 $(emacs_sources) $(DESTDIR)$(emacslispdir)
+ $(INSTALL) -m0644 $(emacs_sources) $(DESTDIR)$(emacslispdir)
ifeq ($(HAVE_EMACS),1)
- install -m0644 $(emacs_bytecode) $(DESTDIR)$(emacslispdir)
+ $(INSTALL) -m0644 $(emacs_bytecode) $(DESTDIR)$(emacslispdir)
endif
mkdir -p $(DESTDIR)$(emacsetcdir)
- install -m0644 $(emacs_images) $(DESTDIR)$(emacsetcdir)
+ $(INSTALL) -m0644 $(emacs_images) $(DESTDIR)$(emacsetcdir)
CLEAN := $(CLEAN) $(emacs_bytecode)
diff --git a/lib/Makefile.local b/lib/Makefile.local
index 7785944..0c6b258 100644
--- a/lib/Makefile.local
+++ b/lib/Makefile.local
@@ -89,11 +89,11 @@ install: install-$(dir)
install-$(dir): $(dir)/$(LIBNAME)
mkdir -p $(DESTDIR)$(libdir)/
- install -m0644 $(lib)/$(LIBNAME) $(DESTDIR)$(libdir)/
+ $(INSTALL) -m0644 $(lib)/$(LIBNAME) $(DESTDIR)$(libdir)/
ln -sf $(LIBNAME) $(DESTDIR)$(libdir)/$(SONAME)
ln -sf $(LIBNAME) $(DESTDIR)$(libdir)/$(LINKER_NAME)
mkdir -p