Subject: bug#66111: is there a problem with --prefix?

From: Ambrose Kofi Laing <[email-masked]>
Date: Tue, 19 Sep 2023 13:59:26 -0400

Hello,

I'm trying to install emacs_29.1 at a nonstandard location, with the
following commands:

cd src/emacs-29.1
> ./autogen.sh
> ./configure --prefix=/home/myname/my/custom/emacs29
> --with-native-compilation=aot --with-imagemagick --with-json
> --with-tree-sitter --with-xft --without-compress-install
> make -j 4

and I get an error message because of permission denied while trying to
write under /usr/local (that is where the script stops).  In addition,
there are two locations where it says the following:

make -C src BIN_DESTDIR=''/usr/local/bin/'' \
ELN_DESTDIR='/usr/local/lib/emacs/29.1/' all

And I don't think it should be trying to put anything under those two
directories?

This happens twice (please see below the ps under my signature for the full
transcript of "make install" to see the exact context in which it
happens).  It seems to be that the --prefix does not override certain
locations that it is supposed to?

Are there other variables I need to set (other than the --prefix option to
configure) that will ensure that the compilation and installation will not
try to write under /usr/local ?

Thanks for any pointers,

Ambrose

ps.

myhost:emacs-29.1$ make install
> make -C lib all
> make[1]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lib'
> make[1]: Nothing to be done for 'all'.
> make[1]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lib'
> make -C lib-src all
> make[1]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lib-src'
> make[1]: Nothing to be done for 'all'.
> make[1]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lib-src'
> make -C src BIN_DESTDIR=''/usr/local/bin/'' \
> ELN_DESTDIR='/usr/local/lib/emacs/29.1/' all
> make[1]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/src'
> make -C ../admin/charsets all
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make -C ../admin/unidata charscript.el
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make[2]: Nothing to be done for 'charscript.el'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make -C ../admin/unidata emoji-zwj.el
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make[2]: Nothing to be done for 'emoji-zwj.el'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make -C ../admin/unidata all EMACS="../../src/bootstrap-emacs"
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make -C ../admin/charsets cp51932.el
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make[2]: Nothing to be done for 'cp51932.el'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make -C ../admin/charsets eucjp-ms.el
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make[2]: Nothing to be done for 'eucjp-ms.el'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make[1]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/src'
> make -C lisp all
> make[1]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lisp'
> make -C ../leim all EMACS="../src/emacs"
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/leim'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/leim'
> make -C ../admin/grammars all EMACS="../../src/emacs"
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/grammars'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/grammars'
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lisp'
> make[2]: Nothing to be done for 'compile-targets'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lisp'
>   GEN      autoloads
>   INFO     Scraping files for loaddefs...
>   INFO     Scraping files for loaddefs...done
>   INFO     Scraping files for loaddefs...
>   INFO     Scraping files for loaddefs...done
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lisp'
> make[2]: Nothing to be done for 'compile-targets'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lisp'
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/leim'
> make[2]: Nothing to be done for 'generate-ja-dic'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/leim'
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lisp'
> make[2]: Nothing to be done for 'compile-targets'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lisp'
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/doc/misc'
> make[2]: 'org.texi' is up to date.
> make[2]: 'modus-themes.texi' is up to date.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/doc/misc'
> make[1]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/lisp'
> make -C doc/lispref info
> make[1]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/doc/lispref'
> make[1]: Nothing to be done for 'info'.
> make[1]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/doc/lispref'
> make -C doc/lispintro info
> make[1]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/doc/lispintro'
> make[1]: Nothing to be done for 'info'.
> make[1]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/doc/lispintro'
> make -C doc/emacs info
> make[1]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/doc/emacs'
> make[1]: Nothing to be done for 'info'.
> make[1]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/doc/emacs'
> make -C doc/misc info
> make[1]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/doc/misc'
> make[1]: Nothing to be done for 'info'.
> make[1]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/doc/misc'
> make -C src BIN_DESTDIR=''/usr/local/bin/''
> ELN_DESTDIR='/usr/local/lib/emacs/29.1/'
> make[1]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/src'
> make -C ../admin/charsets all
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make -C ../admin/unidata charscript.el
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make[2]: Nothing to be done for 'charscript.el'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make -C ../admin/unidata emoji-zwj.el
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make[2]: Nothing to be done for 'emoji-zwj.el'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make -C ../admin/unidata all EMACS="../../src/bootstrap-emacs"
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make[2]: Nothing to be done for 'all'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/unidata'
> make -C ../admin/charsets cp51932.el
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make[2]: Nothing to be done for 'cp51932.el'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make -C ../admin/charsets eucjp-ms.el
> make[2]: Entering directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make[2]: Nothing to be done for 'eucjp-ms.el'.
> make[2]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/admin/charsets'
> make[1]: Leaving directory
> '/home/myname/my/custom/emacs29/src/emacs-29.1/src'
> umask 022; /usr/bin/mkdir -p "/usr/local/share/info"
> /usr/bin/mkdir: cannot create directory ‘/usr/local/share/info’:
> Permission denied
> make: *** [Makefile:779: install-info] Error 1
> myhost:emacs-29.1$