Re: [PATCH 05/10] install: check for non-SysV version (Solaris support)

2012-11-05 Thread Jani Nikula
On Mon, 05 Nov 2012, Blake Jones bla...@foo.net wrote:
  +INSTALL=install
  +printf Checking for working \install\ program... 
  +mkdir _tmp_
 
 This doesn't feel like a hot idea.

 Out of curiosity, why not?

Note that I'm only referring to creating temp directories like this to
check for the install tool compatibility; otherwise I'm fine with the
general approach.

Jani.
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH 05/10] install: check for non-SysV version (Solaris support)

2012-11-05 Thread Blake Jones
 On Mon, 05 Nov 2012, Blake Jones bla...@foo.net wrote:
   +INSTALL=install
   +printf Checking for working \install\ program... 
   +mkdir _tmp_
  
  This doesn't feel like a hot idea.
 
  Out of curiosity, why not?
 
 Note that I'm only referring to creating temp directories like this to
 check for the install tool compatibility; otherwise I'm fine with the
 general approach.

Sure.  But what's wrong with creating a temp directory?  The configure
script creates plenty of temp files for testing compiler features and
library symbol availability.

Blake
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH 05/10] install: check for non-SysV version (Solaris support)

2012-11-04 Thread Jani Nikula
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