Subject: bug#66111: closed (Re: bug#66111: is there a problem with --prefix?)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 30 Sep 2023 23:30:03 +0000

Your bug report

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

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
66111: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66111
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#66111: is there a problem with --prefix?
From: Stefan Kangas <[email-masked]>
To: Ambrose Kofi Laing <[email-masked]>
Cc: Eli Zaretskii <[email-masked]>, [email-masked]
Date: Sat, 30 Sep 2023 16:29:15 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Ambrose Kofi Laing <[email-masked]> writes:

> Hi Eli,
>
> Thanks for your response.  I was indeed building from the tarball.
>
> I commented out the autogen.sh call, and still the installation went into
> /usr/local, instead of to the /nonstandard/location.  So that was not the only
> problem.  After fiddling with it some more I discovered the following (sequence of errors):
>
> - One of the arguments to my configure script was: --with-tree-sitter
>
> - libtree-sitter-dev was not available on my system [First Mistake]
>
> - I was running configure inside a bash shell script, and I had not put "set
>   -e" at the top of that bash script. [Second Mistake]
>
> - As a result, configure correctly detected that libtree-sitter was missing and failed (and did not produce a Makefile).
>
> - Since I hadn't "set -e", the bash script went on ahead to run make anyway,
>   instead of stopping right there.
>
> - make did not find a Makefile, but found a GNUMakefile, and since there was
>   no Makefile, make ran configure (without arguments) to generate a Makefile,
>   and naturally this invocation of configure did not include my setting of
>   --prefix=/nonstandard/location from the previous call which failed.
>
> - Finally when the install happened, it went into /usr/local instead of
>   /nonstandard/location.
>
> - To fix, this, I have to provide  tree-sitter obviously, but the quick
>   fix was to remove --with-tree-sitter from the arguments of configure.
>
> - Once that was done, configure ran correctly and generated a Makefile, I
>   would assume including my setting of /nonstandard/location.  By this time I had removed the autogen.sh call.
>
> - Then running configure and make and make install installed correctly to
>   /nonstandard/location.
>
> So technically there is nothing wrong, but I can't help wondering if it would
> not be more helpful for the GNUMakefile to echo a message saying "I can't find
> a Makefile, please run configure yourself to generate one", instead of being
> helpful and trying to run configure for me and not quite doing it the way I
> wanted.  I know however that things like GNUMakefiles have a lot of history
> and this behavior is probably unlikely to change.
>
> Anyway, I'm all set now, thank you for your help!!

The issue seems resolved, so I'm closing the bug report.

Subject: is there a problem with --prefix?
From: Ambrose Kofi Laing <[email-masked]>
To: [email-masked]
Date: Tue, 19 Sep 2023 13:59:26 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

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$