git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* Install-prefix when building should not be hardcoded
@ 2022-10-04  7:38 darkdragon
  2022-10-04  7:57 ` Đoàn Trần Công Danh
  0 siblings, 1 reply; 7+ messages in thread
From: darkdragon @ 2022-10-04  7:38 UTC (permalink / raw)
  To: git

Even though in Makefile, it is stated that git will figure out
gitexecdir at runtime based on the path to the executable, there are
many output files where $(prefix) will be hardcoded. Even git
--exec-path will print out $(compile_prefix)/libexec/git-core instead
of using run_prefix.

Example: We are building git in Docker at a separate stage to /deploy
(since /usr/local is populated with our compiler toolchain). The final
image is assembled by copying the contents of /deploy to /usr/local.
Commands like "git submodule" will fail because of the wrong git exec
path. Searching via "grep -r /deploy" in /deploy after make install
yields many results.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Install-prefix when building should not be hardcoded
  2022-10-04  7:38 Install-prefix when building should not be hardcoded darkdragon
@ 2022-10-04  7:57 ` Đoàn Trần Công Danh
  2022-10-04  8:40   ` darkdragon
  2022-10-05 19:34   ` Junio C Hamano
  0 siblings, 2 replies; 7+ messages in thread
From: Đoàn Trần Công Danh @ 2022-10-04  7:57 UTC (permalink / raw)
  To: darkdragon; +Cc: git

On 2022-10-04 09:38:24+0200, darkdragon <darkdragon-001@web.de> wrote:
> Even though in Makefile, it is stated that git will figure out
> gitexecdir at runtime based on the path to the executable, there are
> many output files where $(prefix) will be hardcoded. Even git
> --exec-path will print out $(compile_prefix)/libexec/git-core instead
> of using run_prefix.

I'm not sure about this part.

> Example: We are building git in Docker at a separate stage to /deploy
> (since /usr/local is populated with our compiler toolchain). The final
> image is assembled by copying the contents of /deploy to /usr/local.
> Commands like "git submodule" will fail because of the wrong git exec
> path. Searching via "grep -r /deploy" in /deploy after make install
> yields many results.

But you may be interested in $(DESTDIR)

	make prefix=/usr/local all
	make prefix=/usr/local DESTDIR=/deploy install

Does that work for you?

-- 
Danh

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Install-prefix when building should not be hardcoded
  2022-10-04  7:57 ` Đoàn Trần Công Danh
@ 2022-10-04  8:40   ` darkdragon
  2022-10-05 19:34   ` Junio C Hamano
  1 sibling, 0 replies; 7+ messages in thread
From: darkdragon @ 2022-10-04  8:40 UTC (permalink / raw)
  To: Đoàn Trần Công Danh; +Cc: git

Thanks for the hint to DESTDIR, it helps!

Nevertheless, I would like to point towards the following section in
the [MAKEFILE][1]:
```Makefile
# Among the variables below, these:
# gitexecdir
# ...
# can be specified as a relative path some/where/else;
# this is interpreted as relative to $(prefix) and "git" at
# runtime figures out where they are based on the path to the executable.
# ...
# This can help installing the suite in a relocatable way.
# ...
gitexecdir = libexec/git-core
```

[1]: https://github.com/git/git/blob/master/Makefile#L525-L547

On Tue, Oct 4, 2022 at 9:57 AM Đoàn Trần Công Danh <congdanhqx@gmail.com> wrote:
>
> On 2022-10-04 09:38:24+0200, darkdragon <darkdragon-001@web.de> wrote:
> > Even though in Makefile, it is stated that git will figure out
> > gitexecdir at runtime based on the path to the executable, there are
> > many output files where $(prefix) will be hardcoded. Even git
> > --exec-path will print out $(compile_prefix)/libexec/git-core instead
> > of using run_prefix.
>
> I'm not sure about this part.
>
> > Example: We are building git in Docker at a separate stage to /deploy
> > (since /usr/local is populated with our compiler toolchain). The final
> > image is assembled by copying the contents of /deploy to /usr/local.
> > Commands like "git submodule" will fail because of the wrong git exec
> > path. Searching via "grep -r /deploy" in /deploy after make install
> > yields many results.
>
> But you may be interested in $(DESTDIR)
>
>         make prefix=/usr/local all
>         make prefix=/usr/local DESTDIR=/deploy install
>
> Does that work for you?
>
> --
> Danh

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Install-prefix when building should not be hardcoded
  2022-10-04  7:57 ` Đoàn Trần Công Danh
  2022-10-04  8:40   ` darkdragon
@ 2022-10-05 19:34   ` Junio C Hamano
  2022-10-05 20:23     ` darkdragon
  1 sibling, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2022-10-05 19:34 UTC (permalink / raw)
  To: Đoàn Trần Công Danh; +Cc: darkdragon, git

Đoàn Trần Công Danh  <congdanhqx@gmail.com> writes:

> On 2022-10-04 09:38:24+0200, darkdragon <darkdragon-001@web.de> wrote:
>> Even though in Makefile, it is stated that git will figure out
>> gitexecdir at runtime based on the path to the executable, there are
>> many output files where $(prefix) will be hardcoded. Even git
>> --exec-path will print out $(compile_prefix)/libexec/git-core instead
>> of using run_prefix.
>
> I'm not sure about this part.

Perhaps it is related to the use of RUNTIME_PREFIX (which I don't
use myself)?

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Install-prefix when building should not be hardcoded
  2022-10-05 19:34   ` Junio C Hamano
@ 2022-10-05 20:23     ` darkdragon
  2022-10-05 21:21       ` Junio C Hamano
  0 siblings, 1 reply; 7+ messages in thread
From: darkdragon @ 2022-10-05 20:23 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Đoàn Trần Công Danh, git

On Wed, Oct 5, 2022 at 9:34 PM Junio C Hamano <gitster@pobox.com> wrote:
>
> Đoàn Trần Công Danh  <congdanhqx@gmail.com> writes:
>
> > On 2022-10-04 09:38:24+0200, darkdragon <darkdragon-001@web.de> wrote:
> >> Even though in Makefile, it is stated that git will figure out
> >> gitexecdir at runtime based on the path to the executable, there are
> >> many output files where $(prefix) will be hardcoded. Even git
> >> --exec-path will print out $(compile_prefix)/libexec/git-core instead
> >> of using run_prefix.
> >
> > I'm not sure about this part.
>
> Perhaps it is related to the use of RUNTIME_PREFIX (which I don't
> use myself)?

This seems to do the trick! Thanks a lot!

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Install-prefix when building should not be hardcoded
  2022-10-05 20:23     ` darkdragon
@ 2022-10-05 21:21       ` Junio C Hamano
  2022-10-06  1:32         ` [PATCH] Makefile: clarify runtime relative gitexecdir Đoàn Trần Công Danh
  0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2022-10-05 21:21 UTC (permalink / raw)
  To: darkdragon; +Cc: Đoàn Trần Công Danh, git

darkdragon <darkdragon-001@web.de> writes:

> On Wed, Oct 5, 2022 at 9:34 PM Junio C Hamano <gitster@pobox.com> wrote:
>>
>> Đoàn Trần Công Danh  <congdanhqx@gmail.com> writes:
>>
>> > On 2022-10-04 09:38:24+0200, darkdragon <darkdragon-001@web.de> wrote:
>> >> Even though in Makefile, it is stated that git will figure out
>> >> gitexecdir at runtime based on the path to the executable, there are
>> >> many output files where $(prefix) will be hardcoded. Even git
>> >> --exec-path will print out $(compile_prefix)/libexec/git-core instead
>> >> of using run_prefix.
>> >
>> > I'm not sure about this part.
>>
>> Perhaps it is related to the use of RUNTIME_PREFIX (which I don't
>> use myself)?
>
> This seems to do the trick! Thanks a lot!

I guess somebody needs to send a patch to the Makefile to clarify
the comment that led us confused in this thread.  Volunteers?

Thanks.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] Makefile: clarify runtime relative gitexecdir
  2022-10-05 21:21       ` Junio C Hamano
@ 2022-10-06  1:32         ` Đoàn Trần Công Danh
  0 siblings, 0 replies; 7+ messages in thread
From: Đoàn Trần Công Danh @ 2022-10-06  1:32 UTC (permalink / raw)
  To: git
  Cc: Đoàn Trần Công Danh, darkdragon-001,
	Junio C Hamano

"git" built with RUNTIME_PREFIX flag turned on could figure out
gitexecdir and other paths as relative to "git" executable.

However, in the section specifies gitexecdir, RUNTIME_PREFIX wasn't
mentioned, thus users may wrongly assume that "git" always locates
gitexecdir as relative path to the executable.

Let's clarify that only "git" built with RUNTIME_PREFIX will locate
gitexecdir as relative path.

Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
---
 Makefile | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index cac3452edb..8a58be440f 100644
--- a/Makefile
+++ b/Makefile
@@ -529,8 +529,9 @@ GIT-VERSION-FILE: FORCE
 #   template_dir
 #   sysconfdir
 # can be specified as a relative path some/where/else;
-# this is interpreted as relative to $(prefix) and "git" at
-# runtime figures out where they are based on the path to the executable.
+# this is interpreted as relative to $(prefix) and "git" built with
+# RUNTIME_PREFIX flag will figure out (at runtime) where they are
+# based on the path to the executable.
 # Additionally, the following will be treated as relative by "git" if they
 # begin with "$(prefix)/":
 #   mandir
-- 
2.38.0.1.ge44e9fe867


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-10-06  1:32 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-04  7:38 Install-prefix when building should not be hardcoded darkdragon
2022-10-04  7:57 ` Đoàn Trần Công Danh
2022-10-04  8:40   ` darkdragon
2022-10-05 19:34   ` Junio C Hamano
2022-10-05 20:23     ` darkdragon
2022-10-05 21:21       ` Junio C Hamano
2022-10-06  1:32         ` [PATCH] Makefile: clarify runtime relative gitexecdir Đoàn Trần Công Danh

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).