git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH 0/1] Fix incorrectly reported CPU in 32-bit Windows
@ 2019-02-07 10:46 Johannes Schindelin via GitGitGadget
  2019-02-07 10:46 ` [PATCH 1/1] mingw: fix CPU reporting in `git version --build-options` Johannes Schindelin via GitGitGadget
  2019-02-07 21:13 ` [PATCH 0/1] Fix incorrectly reported CPU in 32-bit Windows Junio C Hamano
  0 siblings, 2 replies; 6+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2019-02-07 10:46 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano

While in review, Git for Windows' original design was changed, to use the
output of uname -m instead of (necessarily incomplete) pre-processor magic
to determine which CPU to report.

Both 32-bit and 64-bit versions of Git for Windows are built in the 64-bit
Git for Windows SDK, however, whose uname -m always reports x86_64. Even for
32-bit Git for Windows.

Let's fix that by going back to the pre-processor magic, making it specific
to Git for Windows' SDK (where it actually is complete).

This is yet another patch I forgot to upstream, and I hope that it will make
it into v2.21.0-rc1.

Johannes Schindelin (1):
  mingw: fix CPU reporting in `git version --build-options`

 compat/mingw.h | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)


base-commit: d62dad7a7dca3f6a65162bf0e52cdf6927958e78
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-121%2Fdscho%2Fmingw-build-options-fix-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-121/dscho/mingw-build-options-fix-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/121
-- 
gitgitgadget

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

* [PATCH 1/1] mingw: fix CPU reporting in `git version --build-options`
  2019-02-07 10:46 [PATCH 0/1] Fix incorrectly reported CPU in 32-bit Windows Johannes Schindelin via GitGitGadget
@ 2019-02-07 10:46 ` Johannes Schindelin via GitGitGadget
  2019-02-08 22:39   ` Eric Sunshine
  2019-02-07 21:13 ` [PATCH 0/1] Fix incorrectly reported CPU in 32-bit Windows Junio C Hamano
  1 sibling, 1 reply; 6+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2019-02-07 10:46 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Schindelin

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

We cannot rely on `uname -m` in Git for Windows' SDK to tell us what
architecture we are compiling for, as we can compile both 32-bit and
64-bit `git.exe` from a 64-bit SDK, but the `uname -m` in that SDK will
always report `x86_64`.

So let's go back to our original design. And make it explicitly
Windows-specific.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 compat/mingw.h | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/compat/mingw.h b/compat/mingw.h
index 30d9fb3e36..98407744f2 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -6,6 +6,25 @@ typedef _sigset_t sigset_t;
 #include <winsock2.h>
 #include <ws2tcpip.h>
 
+#ifdef __MINGW64_VERSION_MAJOR
+/*
+ * In Git for Windows, we cannot rely on `uname -m` to report the correct
+ * architecture: /usr/bin/uname.exe will report the architecture with which the
+ * current MSYS2 runtime was built, not the architecture for which we are
+ * currently compiling (both 32-bit and 64-bit `git.exe` is built in the 64-bit
+ * Git for Windows SDK).
+ */
+#undef GIT_HOST_CPU
+/* This was figured out by looking at `cpp -dM </dev/null`'s output */
+#if defined(__x86_64__)
+#define GIT_HOST_CPU "x86_64"
+#elif defined(__i686__)
+#define GIT_HOST_CPU "i686"
+#else
+#error "Unknown architecture"
+#endif
+#endif
+
 /* MinGW-w64 reports to have flockfile, but it does not actually have it. */
 #ifdef __MINGW64_VERSION_MAJOR
 #undef _POSIX_THREAD_SAFE_FUNCTIONS
-- 
gitgitgadget

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

* Re: [PATCH 0/1] Fix incorrectly reported CPU in 32-bit Windows
  2019-02-07 10:46 [PATCH 0/1] Fix incorrectly reported CPU in 32-bit Windows Johannes Schindelin via GitGitGadget
  2019-02-07 10:46 ` [PATCH 1/1] mingw: fix CPU reporting in `git version --build-options` Johannes Schindelin via GitGitGadget
@ 2019-02-07 21:13 ` Junio C Hamano
  2019-02-07 22:41   ` Johannes Schindelin
  1 sibling, 1 reply; 6+ messages in thread
From: Junio C Hamano @ 2019-02-07 21:13 UTC (permalink / raw)
  To: Johannes Schindelin via GitGitGadget; +Cc: git

"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:

> This is yet another patch I forgot to upstream, and I hope that it will make
> it into v2.21.0-rc1.

I guess this affects nobody other than you and perhaps J6t, the
point not being "there are only just two" but being "all of them
know how to deal with possible breakages if any in this change".

I am tempted to bypass the usual "from pu down to next down to
master" dance on this one, because of that.

;-)


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

* Re: [PATCH 0/1] Fix incorrectly reported CPU in 32-bit Windows
  2019-02-07 21:13 ` [PATCH 0/1] Fix incorrectly reported CPU in 32-bit Windows Junio C Hamano
@ 2019-02-07 22:41   ` Johannes Schindelin
  0 siblings, 0 replies; 6+ messages in thread
From: Johannes Schindelin @ 2019-02-07 22:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johannes Schindelin via GitGitGadget, git

Hi Junio,

On Thu, 7 Feb 2019, Junio C Hamano wrote:

> "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
> writes:
> 
> > This is yet another patch I forgot to upstream, and I hope that it
> > will make it into v2.21.0-rc1.
> 
> I guess this affects nobody other than you and perhaps J6t, the
> point not being "there are only just two" but being "all of them
> know how to deal with possible breakages if any in this change".

Correct. This patch is already in Git for Windows, so contributors
building from that fork will have had the problem already.

> I am tempted to bypass the usual "from pu down to next down to
> master" dance on this one, because of that.
> 
> ;-)

I would be very grateful for that :-)

Ciao,
Dscho

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

* Re: [PATCH 1/1] mingw: fix CPU reporting in `git version --build-options`
  2019-02-07 10:46 ` [PATCH 1/1] mingw: fix CPU reporting in `git version --build-options` Johannes Schindelin via GitGitGadget
@ 2019-02-08 22:39   ` Eric Sunshine
  2019-02-13  9:59     ` Johannes Schindelin
  0 siblings, 1 reply; 6+ messages in thread
From: Eric Sunshine @ 2019-02-08 22:39 UTC (permalink / raw)
  To: Johannes Schindelin via GitGitGadget
  Cc: Git List, Junio C Hamano, Johannes Schindelin

On Thu, Feb 7, 2019 at 5:46 AM Johannes Schindelin via GitGitGadget
<gitgitgadget@gmail.com> wrote:
> We cannot rely on `uname -m` in Git for Windows' SDK to tell us what
> architecture we are compiling for, as we can compile both 32-bit and
> 64-bit `git.exe` from a 64-bit SDK, but the `uname -m` in that SDK will
> always report `x86_64`.
>
> So let's go back to our original design. And make it explicitly
> Windows-specific.

b22894049f (version --build-options: also report host CPU, 2017-12-15)
took this sort of case into consideration by introducing Makefile
variable HOST_CPU (which takes precedence over `uname -m`), with the
intention that, when cross-compiling, your build environment should
(somehow) set HOST_CPU to the canonical name of the CPU on which the
built Git will run (for instance, "x86_64" or "i686"). It would be
nice to employ this mechanism to solve this issue rather than
(re-)introducing a manually-maintained list of CPU names.

Can you say a few words (here in the email thread) about how the Git
for Windows SDK is instructed to build for one architecture or the
other? With such information, perhaps we can figure out how to get the
build environment itself to set HOST_CPU automatically so we don't
have to resort to and worry about maintenance costs of a hard-coded
CPU name list.

> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
> diff --git a/compat/mingw.h b/compat/mingw.h
> @@ -6,6 +6,25 @@ typedef _sigset_t sigset_t;
> +#ifdef __MINGW64_VERSION_MAJOR
> +/*
> + * In Git for Windows, we cannot rely on `uname -m` to report the correct
> + * architecture: /usr/bin/uname.exe will report the architecture with which the
> + * current MSYS2 runtime was built, not the architecture for which we are
> + * currently compiling (both 32-bit and 64-bit `git.exe` is built in the 64-bit
> + * Git for Windows SDK).
> + */
> +#undef GIT_HOST_CPU
> +/* This was figured out by looking at `cpp -dM </dev/null`'s output */
> +#if defined(__x86_64__)
> +#define GIT_HOST_CPU "x86_64"
> +#elif defined(__i686__)
> +#define GIT_HOST_CPU "i686"
> +#else
> +#error "Unknown architecture"
> +#endif
> +#endif

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

* Re: [PATCH 1/1] mingw: fix CPU reporting in `git version --build-options`
  2019-02-08 22:39   ` Eric Sunshine
@ 2019-02-13  9:59     ` Johannes Schindelin
  0 siblings, 0 replies; 6+ messages in thread
From: Johannes Schindelin @ 2019-02-13  9:59 UTC (permalink / raw)
  To: Eric Sunshine
  Cc: Johannes Schindelin via GitGitGadget, Git List, Junio C Hamano

Hi Eric,

On Fri, 8 Feb 2019, Eric Sunshine wrote:

> On Thu, Feb 7, 2019 at 5:46 AM Johannes Schindelin via GitGitGadget
> <gitgitgadget@gmail.com> wrote:
> > We cannot rely on `uname -m` in Git for Windows' SDK to tell us what
> > architecture we are compiling for, as we can compile both 32-bit and
> > 64-bit `git.exe` from a 64-bit SDK, but the `uname -m` in that SDK will
> > always report `x86_64`.
> >
> > So let's go back to our original design. And make it explicitly
> > Windows-specific.
> 
> b22894049f (version --build-options: also report host CPU, 2017-12-15)
> took this sort of case into consideration by introducing Makefile
> variable HOST_CPU (which takes precedence over `uname -m`), with the
> intention that, when cross-compiling, your build environment should
> (somehow) set HOST_CPU to the canonical name of the CPU on which the
> built Git will run (for instance, "x86_64" or "i686"). It would be
> nice to employ this mechanism to solve this issue rather than
> (re-)introducing a manually-maintained list of CPU names.

Heh, this is also manually-maintained, but I agree that it is cleaner.

> Can you say a few words (here in the email thread) about how the Git
> for Windows SDK is instructed to build for one architecture or the
> other?

To cross-compile a 32-bit Git in a 64-bit Git for Windows SDK, use this
incantation:

	MSYSTEM=MINGW32 PATH=/mingw32/bin:$PATH make

> With such information, perhaps we can figure out how to get the build
> environment itself to set HOST_CPU automatically so we don't have to
> resort to and worry about maintenance costs of a hard-coded CPU name
> list.

Indeed, we can set HOST_CPU in the same conditionals as prefix (which is
/mingw32 for 32-bit and /mingw64 for 64-bit) in config.mak.uname.

Patch incoming,
Dscho

> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> > ---
> > diff --git a/compat/mingw.h b/compat/mingw.h
> > @@ -6,6 +6,25 @@ typedef _sigset_t sigset_t;
> > +#ifdef __MINGW64_VERSION_MAJOR
> > +/*
> > + * In Git for Windows, we cannot rely on `uname -m` to report the correct
> > + * architecture: /usr/bin/uname.exe will report the architecture with which the
> > + * current MSYS2 runtime was built, not the architecture for which we are
> > + * currently compiling (both 32-bit and 64-bit `git.exe` is built in the 64-bit
> > + * Git for Windows SDK).
> > + */
> > +#undef GIT_HOST_CPU
> > +/* This was figured out by looking at `cpp -dM </dev/null`'s output */
> > +#if defined(__x86_64__)
> > +#define GIT_HOST_CPU "x86_64"
> > +#elif defined(__i686__)
> > +#define GIT_HOST_CPU "i686"
> > +#else
> > +#error "Unknown architecture"
> > +#endif
> > +#endif
> 

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

end of thread, other threads:[~2019-02-13 10:00 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-07 10:46 [PATCH 0/1] Fix incorrectly reported CPU in 32-bit Windows Johannes Schindelin via GitGitGadget
2019-02-07 10:46 ` [PATCH 1/1] mingw: fix CPU reporting in `git version --build-options` Johannes Schindelin via GitGitGadget
2019-02-08 22:39   ` Eric Sunshine
2019-02-13  9:59     ` Johannes Schindelin
2019-02-07 21:13 ` [PATCH 0/1] Fix incorrectly reported CPU in 32-bit Windows Junio C Hamano
2019-02-07 22:41   ` Johannes Schindelin

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).