Building 1.1.1a on Windows - how to "make update"?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Building 1.1.1a on Windows - how to "make update"?

Lynch, Andrew
Hi,

I have been working with OpenSSL 1.1.1a on Linux.  We have a number of patches that are applied, including a specific version of cmpossl.  To ensure that all new error codes, objects etc. are available I run "make update" after config.  I.e. the build process is

Unpack original distribution openssl-1.1.1a.tar.gz
Apply list of patches
./config
make update && make && make test

Some colleagues have asked me for a Windows executable, so I have now installed ActivePerl 5.26.3 and Visual Studio 2019 on my Windows 7 desktop.

The unmodified openssl-1.1.1a builds and runs just fine using Configure VC-WIN64A-masm.  But with our patches applied the build fails once it gets to crypto/cmp because the include files cmperr.h and crmferr.h do not exist.  On Linux these are created by make update.  The Windows Makefile does not have a target "update" (or "errors" for that matter).

So what is the equivalent of make update or make errors on Windows?

I am wondering if I can simply copy the updated files from Linux (new _err.h, modified obj_dat.h and probably a few more) but I would prefer an official way to (re)generate them on Windows.

Regards,
Andrew.

Reply | Threaded
Open this post in threaded view
|

Re: Building 1.1.1a on Windows - how to "make update"?

Richard Levitte - VMS Whacker-2
The diverse things that 'make update' generates is supposed to be the
same across platforms, so the intention is that they get generated on
one platform (Linux / Unix) and that these changes get distributed to
all others.

Cheers,
Richard

On Fri, 24 May 2019 14:38:14 +0200,
Lynch, Andrew wrote:

>
> Hi,
>
> I have been working with OpenSSL 1.1.1a on Linux.  We have a number of patches that are applied, including a specific version of cmpossl.  To ensure that all new error codes, objects etc. are available I run "make update" after config.  I.e. the build process is
>
> Unpack original distribution openssl-1.1.1a.tar.gz
> Apply list of patches
> ./config
> make update && make && make test
>
> Some colleagues have asked me for a Windows executable, so I have now installed ActivePerl 5.26.3 and Visual Studio 2019 on my Windows 7 desktop.
>
> The unmodified openssl-1.1.1a builds and runs just fine using Configure VC-WIN64A-masm.  But with our patches applied the build fails once it gets to crypto/cmp because the include files cmperr.h and crmferr.h do not exist.  On Linux these are created by make update.  The Windows Makefile does not have a target "update" (or "errors" for that matter).
>
> So what is the equivalent of make update or make errors on Windows?
>
> I am wondering if I can simply copy the updated files from Linux (new _err.h, modified obj_dat.h and probably a few more) but I would prefer an official way to (re)generate them on Windows.
>
> Regards,
> Andrew.
>
--
Richard Levitte         [hidden email]
OpenSSL Project         http://www.openssl.org/~levitte/
Reply | Threaded
Open this post in threaded view
|

RE: Building 1.1.1a on Windows - how to "make update"?

Lynch, Andrew
Ok, understood.  I have now managed to build an executable with our patches and it is currently chugging through the tests (which seem to run much slower native than they did inside a Linux VM on the same host...)

There was one more hiccup with a mkdef.pl failure ("does not have a number assigned").  Initially I had not copied util/libcrypto.num across because of a comment at the top of mkdef.pl:  "Intermediary files are created, call libcrypto.num and libssl.num."  That did not seem to happen in the way I expected.

For reference, these are the files I copied from the updated Linux tree to Windows:
include/openssl/cmperr.h
include/openssl/crmferr.h
crypto/cmp/cmp_err.c
crypto/crmf/crmf_err.c
crypto/err/openssl.txt
util/libcrypto.num

It turns out the applied patches did not include any new objects.  obj_dat.h had only been touched by make update to bump the copyright year from 2018 to 2019.

Regards,
Andrew.

-----Original Message-----
From: openssl-users [mailto:[hidden email]] On Behalf Of Richard Levitte
Sent: Friday, May 24, 2019 4:18 PM
To: [hidden email]
Subject: Re: Building 1.1.1a on Windows - how to "make update"?

The diverse things that 'make update' generates is supposed to be the same across platforms, so the intention is that they get generated on one platform (Linux / Unix) and that these changes get distributed to all others.

Cheers,
Richard

On Fri, 24 May 2019 14:38:14 +0200,
Lynch, Andrew wrote:

>
> Hi,
>
> I have been working with OpenSSL 1.1.1a on Linux.  We have a number of
> patches that are applied, including a specific version of cmpossl.  To
> ensure that all new error codes, objects etc. are available I run
> "make update" after config.  I.e. the build process is
>
> Unpack original distribution openssl-1.1.1a.tar.gz Apply list of
> patches ./config make update && make && make test
>
> Some colleagues have asked me for a Windows executable, so I have now installed ActivePerl 5.26.3 and Visual Studio 2019 on my Windows 7 desktop.
>
> The unmodified openssl-1.1.1a builds and runs just fine using Configure VC-WIN64A-masm.  But with our patches applied the build fails once it gets to crypto/cmp because the include files cmperr.h and crmferr.h do not exist.  On Linux these are created by make update.  The Windows Makefile does not have a target "update" (or "errors" for that matter).
>
> So what is the equivalent of make update or make errors on Windows?
>
> I am wondering if I can simply copy the updated files from Linux (new _err.h, modified obj_dat.h and probably a few more) but I would prefer an official way to (re)generate them on Windows.
>
> Regards,
> Andrew.
>
--
Richard Levitte         [hidden email]
OpenSSL Project         http://www.openssl.org/~levitte/
Reply | Threaded
Open this post in threaded view
|

Re: Building 1.1.1a on Windows - how to "make update"?

Matt Caswell-2


On 24/05/2019 16:38, Lynch, Andrew wrote:
> Ok, understood.  I have now managed to build an executable with our patches and it is currently chugging through the tests (which seem to run much slower native than they did inside a Linux VM on the same host...)
>
> There was one more hiccup with a mkdef.pl failure ("does not have a number assigned").  Initially I had not copied util/libcrypto.num across because of a comment at the top of mkdef.pl:  "Intermediary files are created, call libcrypto.num and libssl.num."  That did not seem to happen in the way I expected.
>
> For reference, these are the files I copied from the updated Linux tree to Windows:
> include/openssl/cmperr.h
> include/openssl/crmferr.h
> crypto/cmp/cmp_err.c
> crypto/crmf/crmf_err.c

Are you sure the Linux tree you are using is a clean version of 1.1.1? Similarly
with your original Windows tree? The 1.1.1 distribution does not have any files
names cmperr.h or crmferr.h, and neither are there cmp or crmf subdirectories in
the crypto dir. "make update" certainly should not be creating those files.
These things *do* exist in master, but not in 1.1.1.

I suggest starting from scratch with clean trees.


Matt

> crypto/err/openssl.txt
> util/libcrypto.num
>
> It turns out the applied patches did not include any new objects.  obj_dat.h had only been touched by make update to bump the copyright year from 2018 to 2019.
>
> Regards,
> Andrew.
>
> -----Original Message-----
> From: openssl-users [mailto:[hidden email]] On Behalf Of Richard Levitte
> Sent: Friday, May 24, 2019 4:18 PM
> To: [hidden email]
> Subject: Re: Building 1.1.1a on Windows - how to "make update"?
>
> The diverse things that 'make update' generates is supposed to be the same across platforms, so the intention is that they get generated on one platform (Linux / Unix) and that these changes get distributed to all others.
>
> Cheers,
> Richard
>
> On Fri, 24 May 2019 14:38:14 +0200,
> Lynch, Andrew wrote:
>>
>> Hi,
>>
>> I have been working with OpenSSL 1.1.1a on Linux.  We have a number of
>> patches that are applied, including a specific version of cmpossl.  To
>> ensure that all new error codes, objects etc. are available I run
>> "make update" after config.  I.e. the build process is
>>
>> Unpack original distribution openssl-1.1.1a.tar.gz Apply list of
>> patches ./config make update && make && make test
>>
>> Some colleagues have asked me for a Windows executable, so I have now installed ActivePerl 5.26.3 and Visual Studio 2019 on my Windows 7 desktop.
>>
>> The unmodified openssl-1.1.1a builds and runs just fine using Configure VC-WIN64A-masm.  But with our patches applied the build fails once it gets to crypto/cmp because the include files cmperr.h and crmferr.h do not exist.  On Linux these are created by make update.  The Windows Makefile does not have a target "update" (or "errors" for that matter).
>>
>> So what is the equivalent of make update or make errors on Windows?
>>
>> I am wondering if I can simply copy the updated files from Linux (new _err.h, modified obj_dat.h and probably a few more) but I would prefer an official way to (re)generate them on Windows.
>>
>> Regards,
>> Andrew.
>>
Reply | Threaded
Open this post in threaded view
|

RE: Building 1.1.1a on Windows - how to "make update"?

Lynch, Andrew
Hi Matt,

Neither tree is "clean" at this point.  That is the very reason for my problem.  My set of patches leaves out some changes because they can be generated by "make update".  This works fine on Unix but not on Windows.

Starting with a clean version of 1.1.1a I have to apply up to a dozen patch files to get our bespoke version.  These include a specific version of cmpossl, which is where cmp and crmf come from (currently being integrated into master but not available in any release yet), plus some of our own patches on top of that which add yet more functions and error codes.  Hence the err files and libcrypto.num will differ depending on which of these patches are applied for a particular build.

Running "make update" includes "make errors" which does create any missing err.h and _err.c files.  (Obviously the new libnames have to be patched into openssl.ec.)

In hindsight maybe the cumulative changes to those err files and libcrypto.num should have been part of the individual patches.  At the time it seemed cleaner to simply use "make update" and have them generated cleanly for whatever subset of patches has been applied.

Regards,
Andrew.

-----Original Message-----
From: openssl-users [mailto:[hidden email]] On Behalf Of Matt Caswell
Sent: Monday, May 27, 2019 10:34 AM
To: [hidden email]
Subject: Re: Building 1.1.1a on Windows - how to "make update"?



On 24/05/2019 16:38, Lynch, Andrew wrote:

> Ok, understood.  I have now managed to build an executable with our
> patches and it is currently chugging through the tests (which seem to
> run much slower native than they did inside a Linux VM on the same
> host...)
>
> There was one more hiccup with a mkdef.pl failure ("does not have a number assigned").  Initially I had not copied util/libcrypto.num across because of a comment at the top of mkdef.pl:  "Intermediary files are created, call libcrypto.num and libssl.num."  That did not seem to happen in the way I expected.
>
> For reference, these are the files I copied from the updated Linux tree to Windows:
> include/openssl/cmperr.h
> include/openssl/crmferr.h
> crypto/cmp/cmp_err.c
> crypto/crmf/crmf_err.c

Are you sure the Linux tree you are using is a clean version of 1.1.1? Similarly with your original Windows tree? The 1.1.1 distribution does not have any files names cmperr.h or crmferr.h, and neither are there cmp or crmf subdirectories in the crypto dir. "make update" certainly should not be creating those files.
These things *do* exist in master, but not in 1.1.1.

I suggest starting from scratch with clean trees.


Matt

> crypto/err/openssl.txt
> util/libcrypto.num
>
> It turns out the applied patches did not include any new objects.  obj_dat.h had only been touched by make update to bump the copyright year from 2018 to 2019.
>
> Regards,
> Andrew.
>
> -----Original Message-----
> From: openssl-users [mailto:[hidden email]] On
> Behalf Of Richard Levitte
> Sent: Friday, May 24, 2019 4:18 PM
> To: [hidden email]
> Subject: Re: Building 1.1.1a on Windows - how to "make update"?
>
> The diverse things that 'make update' generates is supposed to be the same across platforms, so the intention is that they get generated on one platform (Linux / Unix) and that these changes get distributed to all others.
>
> Cheers,
> Richard
>
> On Fri, 24 May 2019 14:38:14 +0200,
> Lynch, Andrew wrote:
>>
>> Hi,
>>
>> I have been working with OpenSSL 1.1.1a on Linux.  We have a number
>> of patches that are applied, including a specific version of cmpossl.  
>> To ensure that all new error codes, objects etc. are available I run
>> "make update" after config.  I.e. the build process is
>>
>> Unpack original distribution openssl-1.1.1a.tar.gz Apply list of
>> patches ./config make update && make && make test
>>
>> Some colleagues have asked me for a Windows executable, so I have now installed ActivePerl 5.26.3 and Visual Studio 2019 on my Windows 7 desktop.
>>
>> The unmodified openssl-1.1.1a builds and runs just fine using Configure VC-WIN64A-masm.  But with our patches applied the build fails once it gets to crypto/cmp because the include files cmperr.h and crmferr.h do not exist.  On Linux these are created by make update.  The Windows Makefile does not have a target "update" (or "errors" for that matter).
>>
>> So what is the equivalent of make update or make errors on Windows?
>>
>> I am wondering if I can simply copy the updated files from Linux (new _err.h, modified obj_dat.h and probably a few more) but I would prefer an official way to (re)generate them on Windows.
>>
>> Regards,
>> Andrew.
>>