Great.  I'll stay the course on prepping 1.4.x...if anyone pops up here
asking for 1.3.x and VS 2019, we'll just point them at your email.  =)

I know APR, APR-util, and Expat all have CMake files already - I haven't
seen anything yet for SVN...am I just missing that?  I've gotten as far as
building APR, APR-util, Expat, and OpenSSL with VS 2019 on my Windows box;
but, I haven't sat down yet and gotten Serf itself to build.  Ideally,
after Serf, it'd be good for SVN to pick up CMake too...would also like to
pick up httpd too if I could.  But, toddler steps...  =)

Cheers.  -- justin

On Mon, Apr 20, 2020 at 7:59 AM Johan Corveleyn <jcor...@gmail.com> wrote:

> Hi Justin,
>
> Ah, I hadn't checked the 1.3.x branch. Good to know that Python3 for
> the build is supported there. :-). And I didn't see the things in
> 1.3.x/STATUS.
>
> I can certainly sympathize with trying to find the right focus while
> having (very) limited resources. So I think getting 1.4 out the door
> is more important. And if it doesn't have those problems (and the
> CMake build works on Windows), great!
> For me personally the problem is already solved (I found the necessary
> workarounds, and got SVN built with serf 1.3.9 combined with openssl
> 1.1.1f). If you (or anyone in dev@serf) feel like it, you might
> perform some last fixes or document the kwown issues / workarounds in
> README on the 1.3.x branch. That might still be a useful improvement,
> even if you don't cut a new 1.3.10 anymore. But if you don't get
> around to it, no problem ... 1.4.x is probably the way forward in any
> case.
>
> As soon as you cut a 1.4 release, with a CMake build that would work
> on Windows (with VS 2019), I will certainly try it for my next SVN
> build. I'm subscribed to this list now, so I should be able to see the
> announcement :-).
>
> Thanks for your efforts,
> --
> Johan
>
> On Mon, Apr 20, 2020 at 1:34 PM Justin Erenkrantz <jus...@erenkrantz.com>
> wrote:
> >
> > Johan,
> >
> > Thanks for the note!
> >
> > The Python3 patches should already be in 1.3.x branch ready for our next
> release.  We've also got 2 +1s in STATUS for VS 2017 support for 1.3.x, but
> I've yet to be able to confirm it for 2017 myself and also there's now 2019
> as well...so, I've held off merging that change.  And, I haven't yet gotten
> as far as trying to compile with OpenSSL 1.1.x either on Windows; so, I
> expect if I got to that, your patch is very helpful for SCons.
> >
> > However, I posted a few weeks ago on-list and there wasn't a lot of
> interest in making a new 1.3.x release; so, I've been focusing on the 1.4.x
> branch which switches over to CMake as that seems to be where the world is
> going now.  Most of the issues that we have right now seem to stem from
> Python and our creaky build system - not actual serf bugs.  Though it is a
> bit of a slog for me to get CMake up, so I don't have a firm ETA on a
> release there.
> >
> > If we can muster two other interested folks for a 1.3.10 release, I
> think that I can shift gears a bit and focus on completing the 1.3.x stuff
> which should include most of the relevant build fixes for modern
> toolchains...but, it's probably not the right focus long-term as there's a
> bunch of cool features in 1.4.x that would love to see the light of day.
> >
> > Cheers.  -- justin
> >
> > On Sun, Apr 19, 2020 at 9:47 AM Johan Corveleyn <jcor...@gmail.com>
> wrote:
> >>
> >> Hi serf devs,
> >>
> >> I've been building Subversion 1.14.0-rc2 on Windows last week, and for
> >> doing that I needed to build serf again (1.3.9, but I also tried from
> >> branch 1.4.x). I ran into three different problems during that build.
> >> I worked around them, but wanted to report them here so perhaps the
> >> serf build scripts can be improved.
> >>
> >> I have scons 3.1.2 and Visual Studio 2019 Community Edition (Version
> 16.5.3).
> >>
> >> I'm running this command from within the serf-1.3.9 directory, after I
> >> built apr (1.6.5), apr-util (1.6.1), openssl (1.1.1f) and zlib
> >> (1.2.11):
> >>
> >>     scons APR=..\apr-1.6.5 APU=..\apr-util-1.6.1
> >> OPENSSL=..\openssl-1.1.1f ZLIB=..\zlib-1.2.11
> >>
> >> 1) Running this with Python 3.8.2 gives this error:
> >>
> >> [[[
> >> scons: Reading SConscript files ...
> >>   File "C:\research\svn\dev\deps\serf-1.3.9\SConstruct", line 186
> >>
> >>     print 'Warning: Used unknown variables:', ', '.join(unknown.keys())
> >>
> >>           ^
> >>
> >> SyntaxError: invalid syntax
> >> ]]]
> >>
> >> Putting Python 2.7 in front in my PATH allows it to continue.
> >>
> >>
> >> 2) Now I get this error:
> >>
> >> [[[
> >> scons: Reading SConscript files ...
> >>
> >> scons: *** Invalid value for option MSVC_VERSION: 14.2.  Valid values
> >> are: ('14.0', '12.0', '11.0', '10.0', '9.0', '8.0', '6.0')
> >> File "C:\research\svn\dev\deps\serf-1.3.9\SConstruct", line 157, in
> <module>
> >> ]]]
> >>
> >> Interestingly, if I delete the file .saved_config (which actually
> >> contains the value "MSVC_VERSION = '14.2'"), scons will continue (and
> >> save a new .saved_config file ... i.e. I can always run it if I just
> >> remember to delete that file first).
> >>
> >>
> >> 3) Now, linking with openssl 1.1.1f fails:
> >>
> >> [[[
> >> scons: Reading SConscript files ...
> >> scons: done reading SConscript files.
> >> scons: Building targets ...
> >> cl /Fobuckets\ssl_buckets.obj /c buckets\ssl_buckets.c /nologo /W4
> >> /wd4100 /O2 /MD /DNDEBUG /DWIN32 /DWIN32_LEAN_AND_MEAN /DNOUSER
> >> /DNOGDI /DNONLS /DNOCRYPT /DSERF_HAVE_SSPI /I.
> >> /IC:\research\svn\dev\deps\httpd-2.4.43\srclib\apr\include
> >> /IC:\research\svn\dev\deps\httpd-2.4.43\srclib\apr-util\include
> >> /IC:\research\svn\dev\deps\zlib-1.2.11
> >> /IC:\research\svn\dev\deps\openssl-1.1.1f\inc32 /Z7
> >> ssl_buckets.c
> >> buckets\ssl_buckets.c(37): fatal error C1083: Cannot open include
> >> file: 'openssl/bio.h': No such file or directory
> >> scons: *** [buckets\ssl_buckets.obj] Error 2
> >> scons: building terminated because of errors.
> >> ]]]
> >>
> >> The reason is that, as of openssl 1.1.x:
> >> * headers are in 'include' rather than 'inc32'
> >> * libs come in the root folder of the openssl folder instead of 'out32'
> >> * libs are now named libcrypto.lib and libssl.lib instead of
> >> libeay32.lib and ssleay32.lib
> >>
> >> If I patch SConstruct as follows then I can link successfully with
> >> openssl 1.1.1.f:
> >>
> >> [[[
> >> --- SConstruct.orig     2020-04-19 15:36:16.257450600 +0200
> >> +++ SConstruct  2020-04-19 15:36:51.855740800 +0200
> >> @@ -335,7 +335,7 @@
> >>                 LIBPATH=['$ZLIB'])
> >>
> >>    # openssl
> >> -  env.Append(LIBS=['libeay32.lib', 'ssleay32.lib'])
> >> +  env.Append(LIBS=['libcrypto.lib', 'libssl.lib'])
> >>    if not env.get('SOURCE_LAYOUT', None):
> >>      env.Append(CPPPATH=['$OPENSSL/include/openssl'],
> >>                 LIBPATH=['$OPENSSL/lib'])
> >> @@ -343,8 +343,8 @@
> >>      env.Append(CPPPATH=['$OPENSSL/inc32'],
> >>                 LIBPATH=['$OPENSSL/out32'])
> >>    else:
> >> -    env.Append(CPPPATH=['$OPENSSL/inc32'],
> >> -               LIBPATH=['$OPENSSL/out32dll'])
> >> +    env.Append(CPPPATH=['$OPENSSL/include'],
> >> +               LIBPATH=['$OPENSSL'])
> >>  else:
> >>    if os.path.isdir(apr):
> >>      apr = os.path.join(apr, 'bin', 'apr-1-config')
> >> ]]]
> >>
> >> But then it won't work with openssl 1.0.x anymore. So I'm not sure,
> >> perhaps the openssl version should be detected and the appropriate
> >> configuration should be set accordingly.
> >>
> >> For some inspiration:
> >>
> >> - the httpd build requires one to explicitly run:
> >>     perl srclib\apr\build\cvtdsp.pl -ossl11
> >> to build with openssl 1.1.x. So not auto-adapting, but at least it's
> >> documented and there is an easy script.
> >>
> >> - the subversion build auto-detects the openssl version and adapts the
> >> necessary include paths and library filenames accordingly. See
> >> function _find_openssl() in
> >>
> https://svn.apache.org/repos/asf/subversion/trunk/build/generator/gen_win_dependencies.py
> >>
> >>
> >> After fixing / working around the above three problems I can
> >> successfully build serf 1.3.9, phew :-).
> >>
> >> Thanks,
> >> --
> >> Johan
>

Reply via email to