Differences between Python's OpenSSL in SVN and OpenSSL's in GitHub

Hello Python Developers! Why is it that the OpenSSL v1.0.2d that is found on Python's SVN repo<http://svn.python.org/projects/external/openssl-1.0.2d/> is quite different from what OpenSSL has on their GitHub repository<https://github.com/openssl/openssl/tree/OpenSSL_1_0_2d> for OpenSSL v1.0.2d? I am asking because I am able to successfully download OpenSSL's GitHub version during the cpython build process but when I try to build cpython, I get failures because Visual Studio isn't able to find files like openssl/opensslconf.h and this is because Python's OpenSSL version in SVN is the only one that has a directory inside the include directory. The GitHub repo is missing this directory however, and these are not the only differences. If I checkout the GitHub version and then replace it with what is in the SVN repo, you get these untracked files. MINFO Makefile Makefile.bak apps/CA.pl apps/md4.c crypto/buildinf.h crypto/buildinf.h.orig crypto/buildinf_amd64.h crypto/buildinf_x86.h crypto/opensslconf.h crypto/opensslconf.h.bak crypto/opensslconf_amd64.h crypto/opensslconf_x86.h inc64/ include/openssl/ ms/bcb.mak ms/libeay32.def ms/nt.mak ms/nt64.mak ms/ntdll.mak ms/ssleay32.def ms/uptable.asm ms/uptable.obj ms/version32.rc out64/ test/bftest.c test/bntest.c test/casttest.c test/constant_time_test.c test/destest.c test/dhtest.c test/dsatest.c test/ecdhtest.c test/ecdsatest.c test/ectest.c test/enginetest.c test/evp_extra_test.c test/evp_test.c test/evptests.txt test/exptest.c test/heartbeat_test.c test/hmactest.c test/ideatest.c test/jpaketest.c test/md2test.c test/md4test.c test/md5test.c test/mdc2test.c test/randtest.c test/rc2test.c test/rc4test.c test/rc5test.c test/rmdtest.c test/rsa_test.c test/sha1test.c test/sha256t.c test/sha512t.c test/shatest.c test/srptest.c test/ssltest.c test/v3nametest.c test/verify_extra_test.c test/wp_test.c tmp/ tmp32/ tmp64/ tools/c_rehash Does anyone know why this is the case? What was the motivation behind these changes? Thanks! Andres Guzman-Ballen Scripting Analyzers & Tools Team Intel Americas, Inc. 1906 Fox Dr, Champaign IL 61820

On 14Aug2015 0856, Guzman-ballen, Andres wrote:
To build OpenSSL on Windows you also need a copy of Perl and you need to run the preparation script to generate some extra code files. Otherwise you don't get a Windows makefile (which we don't use anymore because it builds significantly faster and more reliably with a Visual C++ project) and the generated assembly code. The copy we have in SVN has already had these scripts generated, but nothing else should be different from the original repository. It's possible you got a slightly different version out of github? I believe we use their released tarballs, but Zach will know for sure as he did the last update IIRC. Cheers, Steve

On Fri, Aug 14, 2015 at 10:56 AM, Guzman-ballen, Andres <andres.guzman-ballen@intel.com> wrote:
The reason for the difference is to avoid requiring Perl to be installed to be able to build Python. The svn.python.org version of openssl-1.0.2d at revision 89058should match 1.0.2d from Github (if it doesn't that's a bug in OpenSSL's packaging or my checking it into SVN). Revision 89059 checks in all of the changes, all of which are made by running 'PCbuild\prepare_ssl.py' on the vanilla sources, and you should be able to produce the same set of changes by running 'PCbuild\prepare_ssl.py' over the sources checked out from Github. Note that to run that script successfully, you'll need to have the Visual Studio environment set up ('PCbuild\env.bat' will do it for you), Perl and NASM on your PATH, and run the script with Python 3.4 or later. Hope this answers your question, -- Zach

On 14Aug2015 0856, Guzman-ballen, Andres wrote:
To build OpenSSL on Windows you also need a copy of Perl and you need to run the preparation script to generate some extra code files. Otherwise you don't get a Windows makefile (which we don't use anymore because it builds significantly faster and more reliably with a Visual C++ project) and the generated assembly code. The copy we have in SVN has already had these scripts generated, but nothing else should be different from the original repository. It's possible you got a slightly different version out of github? I believe we use their released tarballs, but Zach will know for sure as he did the last update IIRC. Cheers, Steve

On Fri, Aug 14, 2015 at 10:56 AM, Guzman-ballen, Andres <andres.guzman-ballen@intel.com> wrote:
The reason for the difference is to avoid requiring Perl to be installed to be able to build Python. The svn.python.org version of openssl-1.0.2d at revision 89058should match 1.0.2d from Github (if it doesn't that's a bug in OpenSSL's packaging or my checking it into SVN). Revision 89059 checks in all of the changes, all of which are made by running 'PCbuild\prepare_ssl.py' on the vanilla sources, and you should be able to produce the same set of changes by running 'PCbuild\prepare_ssl.py' over the sources checked out from Github. Note that to run that script successfully, you'll need to have the Visual Studio environment set up ('PCbuild\env.bat' will do it for you), Perl and NASM on your PATH, and run the script with Python 3.4 or later. Hope this answers your question, -- Zach
participants (3)
-
Guzman-ballen, Andres
-
Steve Dower
-
Zachary Ware