RFC: Install scripts with absolute paths by default

classic Classic list List threaded Threaded
4 messages Options
David Bremner-2 David Bremner-2
Reply | Threaded
Open this post in threaded view
|

RFC: Install scripts with absolute paths by default

I know this is a sortof revert of some changes we have made over the
years, but Linux distros are going to (increasingly?) insist on
absolute paths in shebangs [1]. We could just punt that on to the
distro maintainers, but in the case of Debian that is basically me.

I'm thinking a reasonable compromise is to leave /usr/bin/env in the
source (to allow testing without configure or with a broken
configure), and substitute on install. Thoughts?

If the general approach sounds plausible, then we can move on to
nitpicking my Make/shell

[1]: See e.g. https://pagure.io/packaging-committee/issue/700, or
https://www.debian.org/doc/debian-policy/ch-files.html#scripts


_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch
David Bremner-2 David Bremner-2
Reply | Threaded
Open this post in threaded view
|

[PATCH 1/2] configure: absolute path of bash

This can be used to set shebang lines during install.
---
 configure | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/configure b/configure
index ab7e1610..20961763 100755
--- a/configure
+++ b/configure
@@ -53,6 +53,7 @@ fi
 
 # Set several defaults (optionally specified by the user in
 # environment variables)
+BASH=${BASH:-bash}
 CC=${CC:-cc}
 CXX=${CXX:-c++}
 CFLAGS=${CFLAGS:--g -O2}
@@ -557,6 +558,16 @@ else
     errors=$((errors + 1))
 fi
 
+printf "Checking for bash... "
+if command -v ${BASH} > /dev/null; then
+    have_bash=1
+    bash_absolute=$(command -v ${BASH})
+    printf "Yes (%s).\n" "$bash_absolute"
+else
+    have_bash=0
+    printf "No. (%s not found)\n" "${BASH}"
+fi
+
 printf "Checking for python... "
 have_python=0
 
@@ -1081,6 +1092,10 @@ emacslispdir=${EMACSLISPDIR}
 # be installed
 emacsetcdir=${EMACSETCDIR}
 
+# Whether bash exists, and if so where
+HAVE_BASH = ${have_bash}
+BASH_ABSOLUTE = ${bash_absolute}
+
 # Whether there's an emacs binary available for byte-compiling
 HAVE_EMACS = ${have_emacs}
 
@@ -1262,6 +1277,10 @@ NOTMUCH_DEFAULT_XAPIAN_BACKEND=${default_xapian_backend}
 # do we have man pages?
 NOTMUCH_HAVE_MAN=$((have_sphinx))
 
+# Whether bash exists, and if so where
+NOTMUCH_HAVE_BASH=${have_bash}
+NOTMUCH_BASH_ABSOLUTE=${bash_absolute}
+
 # Name of python interpreter
 NOTMUCH_PYTHON=${python}
 
--
2.18.0

_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch
David Bremner-2 David Bremner-2
Reply | Threaded
Open this post in threaded view
|

[PATCH 2/2] build: install notmuch-emacs-mua with absolute shebang

In reply to this post by David Bremner-2
Follow distro-centric rules to reduce the chance of surprising
behaviour due to PATH changes
---
 emacs/Makefile.local | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/emacs/Makefile.local b/emacs/Makefile.local
index 1b3ef584..3ec381e3 100644
--- a/emacs/Makefile.local
+++ b/emacs/Makefile.local
@@ -110,7 +110,10 @@ endif
  mkdir -p "$(DESTDIR)$(emacsetcdir)"
  install -m0644 $(emacs_images) "$(DESTDIR)$(emacsetcdir)"
  mkdir -p "$(DESTDIR)$(prefix)/bin/"
- install $(emacs_mua) "$(DESTDIR)$(prefix)/bin"
+ifeq ($(HAVE_BASH),1)
+ sed "1s|^#!.*$$|#! $(BASH_ABSOLUTE)|" < $(emacs_mua) > $(DESTDIR)$(prefix)/bin/notmuch-emacs-mua
+ chmod 755 $(DESTDIR)$(prefix)/bin/notmuch-emacs-mua
+endif
 ifeq ($(WITH_DESKTOP),1)
  mkdir -p "$(DESTDIR)$(desktop_dir)"
  desktop-file-install --mode 0644 --dir "$(DESTDIR)$(desktop_dir)" $(emacs_mua_desktop)
--
2.18.0

_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch
Tomi Ollila-2 Tomi Ollila-2
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH 2/2] build: install notmuch-emacs-mua with absolute shebang

On Sun, Sep 09 2018, David Bremner wrote:

> Follow distro-centric rules to reduce the chance of surprising
> behaviour due to PATH changes
> ---
>  emacs/Makefile.local | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/emacs/Makefile.local b/emacs/Makefile.local
> index 1b3ef584..3ec381e3 100644
> --- a/emacs/Makefile.local
> +++ b/emacs/Makefile.local
> @@ -110,7 +110,10 @@ endif
>   mkdir -p "$(DESTDIR)$(emacsetcdir)"
>   install -m0644 $(emacs_images) "$(DESTDIR)$(emacsetcdir)"
>   mkdir -p "$(DESTDIR)$(prefix)/bin/"
> - install $(emacs_mua) "$(DESTDIR)$(prefix)/bin"
> +ifeq ($(HAVE_BASH),1)
> + sed "1s|^#!.*$$|#! $(BASH_ABSOLUTE)|" < $(emacs_mua) > $(DESTDIR)$(prefix)/bin/notmuch-emacs-mua

1/2 is OK(*). This change is OK too -- although the trailing $$ could be
dropped -- regexps are greedy by default so .* will consume rest of
the input anyway.

Tomi

(*) we have not cared $IFS characters in user input, as there is no danger
users shooting themselves this way ;D





> + chmod 755 $(DESTDIR)$(prefix)/bin/notmuch-emacs-mua
> +endif
>  ifeq ($(WITH_DESKTOP),1)
>   mkdir -p "$(DESTDIR)$(desktop_dir)"
>   desktop-file-install --mode 0644 --dir "$(DESTDIR)$(desktop_dir)" $(emacs_mua_desktop)
> --
> 2.18.0
>
> _______________________________________________
> notmuch mailing list
> [hidden email]
> https://notmuchmail.org/mailman/listinfo/notmuch
_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch