Re: [HTCondor-devel] Problems building htcondor on Windows


Date: Mon, 28 Dec 2015 20:19:52 +0000
From: John M Knoeller <johnkn@xxxxxxxxxxx>
Subject: Re: [HTCondor-devel] Problems building htcondor on Windows
I appreciate the time you spent looking,  

I happen to know for sure that cmake 3.x does not work with current configuration files because a student and It tried it with HTCondor 4.2 only a few week ago. 

As for switching compilers,  I have a firm policy of not switching compilers during a series.  We might consider switching for the 8.6 series, to do that we would need to be building 8.5 with both 2012 and 2015 for a at least few weeks if not a few months by the HTCondor week.

The MSI's that we supply don't support XP as of 8.4, but HTCondor will still support XP if built with vs2008 which still did work as of a few weeks ago. 

-----Original Message-----
From: HTCondor-devel [mailto:htcondor-devel-bounces@xxxxxxxxxxx] On Behalf Of Ziliang Guo
Sent: Thursday, December 24, 2015 10:17 PM
To: htcondor-devel@xxxxxxxxxxx
Subject: Re: [HTCondor-devel] Problems building htcondor on Windows

And assuming the original poster's questions were not fully answered, the way that the cmake config works for Condor is very limited.
Specifically the cmake files assume you are building with either Visual Studio 2008 or 2012, nothing else. This was done because all of the binary externals that the build downloads need to be targeted at a specific VC++ runtime, otherwise you would need to do source builds for those as well and due to the differing methods of building for each external, that was deemed too troublesome on Windows. When I did the initial work to get VS2012 support I went and built all of the externals by hand to produce usable binaries. Which are probably all out of date now.

Boost I think can be made conditional on requesting the python bindings and/or on using VS2008 for a build, I think but I'm not positive that VS2012 has enough smart pointer support that it wouldn't be needed for that and the last time I checked that was all we needed from it in the HTCondor proper. Aside from the python bindings. Though I'm still confused as to where the actual demand for those bindings on Windows is coming from.

PCRE on the other hand if I recall correctly actually underpins the classad library so trying to remove it would be, difficult. On the other hand it is one of the easier things to build on Windows from scratch.

Microsoft recently made a promise to create a 'universal' CRT so that developers would no longer need to deal with this multiple VC++ version issue and it shipped with Windows 10 and Visual Studio 2015.
There are also installers for the ucrt for older versions all the way down to Vista I believe. So in theory effort could be put into one "final" migration to kick all of the binary externals to link against the ucrt and never have to worry about incompatibility between different VS versions post 2015 again. There are two gotchas though.
The first is everyone (sorry Todd) building HTCondor on Windows would need to use VS2015 or newer. This actually isn't that bad of an issue since the community edition is free and has most of the features of the enterprise edition. The second issue is no more support for XP.
Looking at the current cmake files in master the build options for
VS2012 still appends the flags to generate XP compatible binaries.
Seeing as the ucrt does not support XP, that will no longer be possible. Though I would personally see this as an excuse to finally put XP support out to pasture.

All this is of course contingent on MS not screwing up the ucrt somehow. They've already buggered the manifests for bundling the ucrt into installers so it's up to the team to decide how much faith to invest in MS' promise.

Sidenote: I'm not sure if cmake 3.x has actually broken compatibility with the syntax from 2.x yet. The "" expansion still defaults to the old behavior so cmake generation still works, for now. There are enough instances of macros being used in quotes that it's going to suck going through the cmake files to figure out which ones will blow up when the behavior changes, but not so many that it's an impossible task. Still thankless though.

Yes, I had nothing better to do on Christmas eve than take a peek at HTCondor's build system again. Though considering how many times I've been in there there's a remarkable amount that I've forgotten.

On Thu, Dec 24, 2015 at 4:21 PM, Ziliang Guo <ziliang@xxxxxxxxxxx> wrote:
> So out of curiosity, is the dependency on CMake 2.x because of the 
> lack of support on Linux platforms, or just lack of time to make the 
> changeover?
>
> On Tue, Dec 22, 2015 at 2:23 PM, Todd Tannenbaum <tannenba@xxxxxxxxxxx> wrote:
>> On 12/22/2015 9:29 AM, Rowe, Thomas wrote:
>>
>>> Can anyone report building HtCondor from scratch on Windows with 
>>> CMake and Visual Studio without error? Is there something obvious 
>>> I'm missing? How exactly is the build system that produces the 
>>> Windows installer set up?
>>
>>
>> I build HTCondor on my Windows laptop all the time.  FWIW, my laptop 
>> is Windows 7 and I have Visual Studio 2008 Professional installed 
>> (yes, I need to upgrade soon).
>>
>> I pretty much followed the VS2008 build instructions here:
>>
>> https://htcondor-wiki.cs.wisc.edu/index.cgi/wiki?p=BuildingHtcondorOn
>> WindowsVsNine
>>
>> I use CMake 2.8.6.  You will note that the wiki says to NOT use cmake 
>> 3.x, since cmake 3.x broke compatibility with cmake 2.x.  I think 
>> some of the problems you are encountering could be because you are 
>> using an incompatible CMake version.
>>
>> I almost always just do the "default" cmake build on Windows, i.e. I 
>> do not bother with customizing the cmake options.  I think the 
>> default is to not build the regression test programs.
>>
>> I definitely did the "optional" step #5 on the above wiki page of 
>> setting the CONDOR_BLD_EXTERNAL_STAGE environment variable, which prevents having to
>> rebuild things like boost and over and over.   Set this environment variable
>> and re-run CMake, then do a build.  All the downloaded source and 
>> compiled object files should then live inside auto-generated 
>> subdirectories in your CONDOR_BLD_EXTERNAL_STAGE folder.  Now re-run 
>> CMake again so it notices everything is pre-staged (and precompiled), 
>> and you should be able to build quickly while offline (iirc I have 
>> built HTCondor on Windows while on an airplane).
>>
>> Note for VS2012 you prolly wanna follow the instructions here:
>> https://htcondor-wiki.cs.wisc.edu/index.cgi/wiki?p=BuildingHtcondorOn
>> Windows
>>
>> Hope the above helps
>> Todd
>>
>> _______________________________________________
>> HTCondor-devel mailing list
>> HTCondor-devel@xxxxxxxxxxx
>> https://lists.cs.wisc.edu/mailman/listinfo/htcondor-devel
_______________________________________________
HTCondor-devel mailing list
HTCondor-devel@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/htcondor-devel
[← Prev in Thread] Current Thread [Next in Thread→]