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


Date: Thu, 24 Dec 2015 22:17:29 -0600
From: Ziliang Guo <ziliang@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=BuildingHtcondorOnWindowsVsNine
>>
>> 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=BuildingHtcondorOnWindows
>>
>> Hope the above helps
>> Todd
>>
>> _______________________________________________
>> HTCondor-devel mailing list
>> HTCondor-devel@xxxxxxxxxxx
>> https://lists.cs.wisc.edu/mailman/listinfo/htcondor-devel
[← Prev in Thread] Current Thread [Next in Thread→]