git@vger.kernel.org mailing list mirror (one of many)
 help / Atom feed
* [PATCH 0/1] Windows: force-recompile git.res for differing architectures
@ 2018-11-06 14:55 Johannes Schindelin via GitGitGadget
  2018-11-06 14:55 ` [PATCH 1/1] " Johannes Schindelin via GitGitGadget
  0 siblings, 1 reply; 7+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2018-11-06 14:55 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano

This is a patch designed to help maintaining Git for Windows better: when
the same source code is "cross-compiled" for i686 as well as x86_64, we want
to rebuild the whole thing, including the resource file git.res.

Note: regular C files are re-compiled appropriately, as the default prefix
in Git for Windows is /mingw32 or /mingw64 depending on the architecture,
and this difference is manifested in the CFLAGS (which, upon change, trigger
a complete rebuild).

As non-Windows platforms do not even compile these .res files, this patch
should have exactly no effect on non-Windows builds.

Johannes Schindelin (1):
  Windows: force-recompile git.res for differing architectures

 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


base-commit: cd69ec8cde54af1817630331fc441f493866f0d4
Published-As: https://github.com/gitgitgadget/git/releases/tags/pr-67%2Fdscho%2Fmingw-git.res-bitness-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-67/dscho/mingw-git.res-bitness-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/67
-- 
gitgitgadget

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

* [PATCH 1/1] Windows: force-recompile git.res for differing architectures
  2018-11-06 14:55 [PATCH 0/1] Windows: force-recompile git.res for differing architectures Johannes Schindelin via GitGitGadget
@ 2018-11-06 14:55 ` " Johannes Schindelin via GitGitGadget
  2018-11-06 21:44   ` Johannes Sixt
  0 siblings, 1 reply; 7+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2018-11-06 14:55 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Schindelin

From: Johannes Schindelin <johannes.schindelin@gmx.de>

When git.rc is compiled into git.res, the result is actually dependent
on the architecture. That is, you cannot simply link a 32-bit git.res
into a 64-bit git.exe.

Therefore, to allow 32-bit and 64-bit builds in the same directory, we
let git.res depend on GIT-PREFIX so that it gets recompiled when
compiling for a different architecture (this works because the exec path
changes based on the architecture: /mingw32/libexec/git-core for 32-bit
and /mingw64/libexec/git-core for 64-bit).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index bbfbb4292d..8375736c32 100644
--- a/Makefile
+++ b/Makefile
@@ -2110,7 +2110,7 @@ $(SCRIPT_LIB) : % : %.sh GIT-SCRIPT-DEFINES
 	$(QUIET_GEN)$(cmd_munge_script) && \
 	mv $@+ $@
 
-git.res: git.rc GIT-VERSION-FILE
+git.res: git.rc GIT-VERSION-FILE GIT-PREFIX
 	$(QUIET_RC)$(RC) \
 	  $(join -DMAJOR= -DMINOR= -DMICRO= -DPATCHLEVEL=, $(wordlist 1, 4, \
 	    $(shell echo $(GIT_VERSION) 0 0 0 0 | tr '.a-zA-Z-' ' '))) \
-- 
gitgitgadget

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

* Re: [PATCH 1/1] Windows: force-recompile git.res for differing architectures
  2018-11-06 14:55 ` [PATCH 1/1] " Johannes Schindelin via GitGitGadget
@ 2018-11-06 21:44   ` Johannes Sixt
  2018-11-07  1:32     ` Junio C Hamano
  0 siblings, 1 reply; 7+ messages in thread
From: Johannes Sixt @ 2018-11-06 21:44 UTC (permalink / raw)
  To: Johannes Schindelin via GitGitGadget, Johannes Schindelin
  Cc: git, Junio C Hamano

Am 06.11.18 um 15:55 schrieb Johannes Schindelin via GitGitGadget:
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
> 
> When git.rc is compiled into git.res, the result is actually dependent
> on the architecture. That is, you cannot simply link a 32-bit git.res
> into a 64-bit git.exe.
> 
> Therefore, to allow 32-bit and 64-bit builds in the same directory, we
> let git.res depend on GIT-PREFIX so that it gets recompiled when
> compiling for a different architecture (this works because the exec path
> changes based on the architecture: /mingw32/libexec/git-core for 32-bit
> and /mingw64/libexec/git-core for 64-bit).

On Linux, when I recompile for a different architecture, CFLAGS would 
change, so I would have thought that GIT-CFLAGS were the natural choice 
for a dependency. Don't they change in this case on Windows, too?

> 
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>   Makefile | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index bbfbb4292d..8375736c32 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -2110,7 +2110,7 @@ $(SCRIPT_LIB) : % : %.sh GIT-SCRIPT-DEFINES
>   	$(QUIET_GEN)$(cmd_munge_script) && \
>   	mv $@+ $@
>   
> -git.res: git.rc GIT-VERSION-FILE
> +git.res: git.rc GIT-VERSION-FILE GIT-PREFIX
>   	$(QUIET_RC)$(RC) \
>   	  $(join -DMAJOR= -DMINOR= -DMICRO= -DPATCHLEVEL=, $(wordlist 1, 4, \
>   	    $(shell echo $(GIT_VERSION) 0 0 0 0 | tr '.a-zA-Z-' ' '))) \
> 


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

* Re: [PATCH 1/1] Windows: force-recompile git.res for differing architectures
  2018-11-06 21:44   ` Johannes Sixt
@ 2018-11-07  1:32     ` Junio C Hamano
  2018-11-07  6:55       ` Johannes Sixt
  0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2018-11-07  1:32 UTC (permalink / raw)
  To: Johannes Sixt
  Cc: Johannes Schindelin via GitGitGadget, Johannes Schindelin, git

Johannes Sixt <j6t@kdbg.org> writes:

> Am 06.11.18 um 15:55 schrieb Johannes Schindelin via GitGitGadget:
>> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>>
>> When git.rc is compiled into git.res, the result is actually dependent
>> on the architecture. That is, you cannot simply link a 32-bit git.res
>> into a 64-bit git.exe.
>>
>> Therefore, to allow 32-bit and 64-bit builds in the same directory, we
>> let git.res depend on GIT-PREFIX so that it gets recompiled when
>> compiling for a different architecture (this works because the exec path
>> changes based on the architecture: /mingw32/libexec/git-core for 32-bit
>> and /mingw64/libexec/git-core for 64-bit).
>
> On Linux, when I recompile for a different architecture, CFLAGS would
> change, so I would have thought that GIT-CFLAGS were the natural
> choice for a dependency. Don't they change in this case on Windows,
> too?

Depending on GIT-CFLAGS would have a better chance of being safe, I
guess, even though it can at times be overly safe, than GIT-PREFIX,
I suspect.  As a single user target in Makefile, which is only used
by Dscho, who intends to stick to /mingw(32|64)/ convention til the
end of time, I think the posted patch is OK, though.


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

* Re: [PATCH 1/1] Windows: force-recompile git.res for differing architectures
  2018-11-07  1:32     ` Junio C Hamano
@ 2018-11-07  6:55       ` Johannes Sixt
  2018-11-07  9:03         ` Junio C Hamano
  0 siblings, 1 reply; 7+ messages in thread
From: Johannes Sixt @ 2018-11-07  6:55 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Schindelin via GitGitGadget, Johannes Schindelin, git

Am 07.11.18 um 02:32 schrieb Junio C Hamano:
> Johannes Sixt <j6t@kdbg.org> writes:
>> On Linux, when I recompile for a different architecture, CFLAGS would
>> change, so I would have thought that GIT-CFLAGS were the natural
>> choice for a dependency. Don't they change in this case on Windows,
>> too?
> 
> Depending on GIT-CFLAGS would have a better chance of being safe, I
> guess, even though it can at times be overly safe, than GIT-PREFIX,
> I suspect.  As a single user target in Makefile, which is only used
> by Dscho, who intends to stick to /mingw(32|64)/ convention til the
> end of time, I think the posted patch is OK, though.

I think that it's not only Dscho who uses the target (my build 
environment, for example, is different from Dscho's and compiles 
git.res, too). But since the patch helps him most and doesn't hurt 
others, it is good to go. No objection from my side.

-- Hannes

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

* Re: [PATCH 1/1] Windows: force-recompile git.res for differing architectures
  2018-11-07  6:55       ` Johannes Sixt
@ 2018-11-07  9:03         ` Junio C Hamano
  2018-11-07 11:25           ` Johannes Schindelin
  0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2018-11-07  9:03 UTC (permalink / raw)
  To: Johannes Sixt
  Cc: Johannes Schindelin via GitGitGadget, Johannes Schindelin, git

Johannes Sixt <j6t@kdbg.org> writes:

> Am 07.11.18 um 02:32 schrieb Junio C Hamano:
>> Johannes Sixt <j6t@kdbg.org> writes:
>>> On Linux, when I recompile for a different architecture, CFLAGS would
>>> change, so I would have thought that GIT-CFLAGS were the natural
>>> choice for a dependency. Don't they change in this case on Windows,
>>> too?
>>
>> Depending on GIT-CFLAGS would have a better chance of being safe, I
>> guess, even though it can at times be overly safe, than GIT-PREFIX,
>> I suspect.  As a single user target in Makefile, which is only used
>> by Dscho, who intends to stick to /mingw(32|64)/ convention til the
>> end of time, I think the posted patch is OK, though.
>
> I think that it's not only Dscho who uses the target (my build
> environment, for example, is different from Dscho's and compiles
> git.res, too). But since the patch helps him most and doesn't hurt
> others, it is good to go. No objection from my side.

Yeah, that was phrased poorly.  What I meant was by "only by Dscho"
was "only by those who share the convention that GIT-PREFIX is
changed if and only if targetting a different arch".

Anyway, I just wanted to say that GIT-PREFIX may not be precise
enough but would give sufficient signal; GIT-CFLAGS may be a more
cautious choice, but it may change a bit too often ;-).

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

* Re: [PATCH 1/1] Windows: force-recompile git.res for differing architectures
  2018-11-07  9:03         ` Junio C Hamano
@ 2018-11-07 11:25           ` Johannes Schindelin
  0 siblings, 0 replies; 7+ messages in thread
From: Johannes Schindelin @ 2018-11-07 11:25 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johannes Sixt, Johannes Schindelin via GitGitGadget, git

Hi,

On Wed, 7 Nov 2018, Junio C Hamano wrote:

> Johannes Sixt <j6t@kdbg.org> writes:
> 
> > Am 07.11.18 um 02:32 schrieb Junio C Hamano:
> >> Johannes Sixt <j6t@kdbg.org> writes:
> >>> On Linux, when I recompile for a different architecture, CFLAGS would
> >>> change, so I would have thought that GIT-CFLAGS were the natural
> >>> choice for a dependency. Don't they change in this case on Windows,
> >>> too?
> >>
> >> Depending on GIT-CFLAGS would have a better chance of being safe, I
> >> guess, even though it can at times be overly safe, than GIT-PREFIX,
> >> I suspect.  As a single user target in Makefile, which is only used
> >> by Dscho, who intends to stick to /mingw(32|64)/ convention til the
> >> end of time, I think the posted patch is OK, though.
> >
> > I think that it's not only Dscho who uses the target (my build
> > environment, for example, is different from Dscho's and compiles
> > git.res, too). But since the patch helps him most and doesn't hurt
> > others, it is good to go. No objection from my side.
> 
> Yeah, that was phrased poorly.  What I meant was by "only by Dscho"
> was "only by those who share the convention that GIT-PREFIX is
> changed if and only if targetting a different arch".
> 
> Anyway, I just wanted to say that GIT-PREFIX may not be precise
> enough but would give sufficient signal; GIT-CFLAGS may be a more
> cautious choice, but it may change a bit too often ;-).

I am fine with GIT-CFLAGS, too. Do you want me to "rick-roll" a v2?

Ciao,
Dscho

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

end of thread, back to index

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-06 14:55 [PATCH 0/1] Windows: force-recompile git.res for differing architectures Johannes Schindelin via GitGitGadget
2018-11-06 14:55 ` [PATCH 1/1] " Johannes Schindelin via GitGitGadget
2018-11-06 21:44   ` Johannes Sixt
2018-11-07  1:32     ` Junio C Hamano
2018-11-07  6:55       ` Johannes Sixt
2018-11-07  9:03         ` Junio C Hamano
2018-11-07 11:25           ` Johannes Schindelin

git@vger.kernel.org mailing list mirror (one of many)

Archives are clonable:
	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git
	nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git
	nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git
	nntp://news.gmane.org/gmane.comp.version-control.git

 note: .onion URLs require Tor: https://www.torproject.org/
       or Tor2web: https://www.tor2web.org/

AGPL code for this site: git clone https://public-inbox.org/ public-inbox