RE: FeatureRequest: Build improvements for Windows

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I searched in code and found instances of #ifdef _MSC_VER in https://github.com/git/git (original repository, not the fork).

I am coming from github, where I have found many native lib repositories have two build files, build.sh and build.cmd with

some windows-specific code turds like #ifdef _MSC_VER etc. which nobody appreciate because CL.exe up until last VS release

wasn't C99 complaint. This has changed with VS2015.


If git/git does not share this philosophy of having a build file for both nix and win, then I wonder why do we even have MS compiler

directives in git codebase in first place? That was the main source of confusion.


If the repo owner is willing to drop the old compiler support for Windows, since many windows users do not build from source

and tend to download the compiled binaries anyway.  If they want, they can always use MinGW and VS2015 to build. 


The idea is to keep the codebase clean from outdated _MSC_VER conditions. In this age,

free CI service (like AppVeyor) will build your code with latest compiler (MinGW GCC and MSVCR 2015) in a matter of minutes

and then make the release artifacts available for download. I really don't see any point in still using 8 years old compiler on a 15

years old OS when we can just throw a .yml (appveyor config) file in the repo root and let the cloud handle the build business and

verify the build by running tests. (well we are still using mailing lists, aren't we ;-)


Besides, I had no idea about this fork: https://github.com/msysgit/git but it seems to be falling behind significantly from the

upstream master (git/git).



----------------------------------------
> From: philipoakley@xxxxxxx
> To: danglingpointer@xxxxxxxxxxx
> CC: jacob.keller@xxxxxxxxx; git@xxxxxxxxxxxxxxx
> Subject: Re: FeatureRequest: Build improvements for Windows
> Date: Sun, 26 Jul 2015 12:27:19 +0100
>
> (In-line posting preferred; top-posting deprecated ;-)
> (retain all cc's)
>
>> Hmm, it is already happening, isn't it? There is already a support of
>> MSVCR in git's code base. I am referring to replacing that current
>> support of 'older' MSVCR in favor of the latest one, so to make the
>> git's code base comparatively coherent and organized (as some/many
>> instances of #ifdef _MSC_VER and #if define (_MSC_VER) && _MSC_VER <
>> xxx etc. will be gone, for instance we don't need fallback for sprint
>> or snprintf since C99 std support for those is provisioned).
>>
>
> It's not clear if you (DP) are asking about using being able to use the
> Visual Studio IDE and gui to help visualise and develop the code, or to
> simply use the underlying MS compiler when making (using the Makefile)
> the Git code base.
>
> One can compile the codebase using the MS compiler (given a suitable
> environment, and setting the right Makefile flags), but that may not be
> what you were thinking of.
>
> The Windows team recently decided that the older Msysgit approach should
> be retired (can't find the link just now) and a new approach based on
> Msys2 started (http://git-for-windows.github.io/ and
> https://github.com/git-for-windows/git/wiki/FAQ). This is nearing
> completion.
>
> Meanwhile I have been working on fixing the msvc-build script, which can
> produce a git.sln and associated files (targeted originally at VS2008),
> and is now at the 'Validate this with the Windows guys' stage
> (http://marc.info/?l=git&m=143750907804881&w=2 et.seq.).
>
> My code, for the new G4W SDK, has been rebased from the msygit version,
> and is now at https://github.com/git-for-windows/git/pull/256
>
> Does that help for creating an IDE compilable version?
>
> Also, many thanks for yournote about the new VS Community edition (I'm
> still mainly working on an XP notebook for ease of carry).
>
> As an open community of independently minded folks it can tae a time to
> gel around a reasonably common approach, especially as Git will always
> be primarily focussed on Linux (it **is** the Linux (Linus's) VCS!).
>
>>
>>>> From: jacob.keller@xxxxxxxxx
>>>> On Sat, Jul 25, 2015 at 11:23 PM, Dangling Pointer
>>>> <danglingpointer@xxxxxxxxxxx> wrote:
>>>>> Hello,
>>>>>
>>>>> In my understanding, the ratio between the mere consumers of git on
>>>>> Windows vs. people who compile git for Windows is 100,000 : 1. If
>>>>> there is a breaking change in the workflow of the latter set, who
>>>>> use Visual Studio to build git from source, I assume that is doable
>>>>> given a good reason, hence this post.
>>>>>
>>>>> With VS 2015, C99 support is "finally" added with some C11 features
>>>>> as well. See this blog:
>>>>> http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx.
>>>>> One of the edition of new VS is Community edition, which is like
>>>>> professional edition but is free (also much superior than Express
>>>>> edition) and meant for open source projects. VS2015 also has the
>>>>> ability to target compiler for Wind-XP.
>>>>>
>>>>
>>>> I think the big issue is whether it has support for the various unix
>>>> interfaces and unix shell commands we use. MinGW/MSYS comes with
>>>> support for the unix interface, which I don't believe is that
>>>> actually
>>>> supported via MSYS and I don't know if VS2015 is supported? I don't
>>>> think it's due to the C99 but due to need of posix interface which
>>>> is
>>>> not normally (fully) provided by Windows.
>
> Git's code retains a C89 compatibility (IIUC).
>
>>>>
>>>> Regards,
>>>> Jake --
> --
> Philip
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html 		 	   		  --
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]