Upgrade to OpenSSL-1.1.0h by shigeki · Pull Request #19794 · nodejs/node (original) (raw)
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passes- tests and/or benchmarks are included
- documentation is changed or added
- commit message follows commit guidelines
This has very big patches due to the source updates from OpenSSL-1.0.2o to 1.1.0h and generated asm files which are not necessary to be reviewed in this PR.
In order to see the differences easily for reviewers, I made two branches in which those changes are removed. Please refer the branch diffs as below in reviewing for it has just several thousands kb diffs.
shigeki/node@raw_upgrade_openssl110h...shigeki:no_archfiles_upgrade_openssl110h
Note that this has a new build requirement of assembler for asm support. Especially nasm is needed to build Windows that is required by OpenSSL. Please refer 9e38498 for details.
CC @nodejs/crypto @nodejs/tsc
The following is the description written in deps/openssl/README.md
This has a new binding scheme in builing OpenSSL-1.1.0 library with
Node.js. OpenSSL-1.1.0 uses a new build system with perl for various
supported platforms. See openssl/Configurations/README
andopenssl/Configurations/README.design
in the OpenSSL source for
details.
In order to build OpenSSL library without perl in the build of Node.js
for various supported platforms, platform dependent files (e.g. asm
and header files ) are pre-generated and stored into theconfig/archs
directory.
config/Makefile
andconfig/generate_gypi.pl
Makefile has supported platform list and generates and copies
platform dependent files (e.g. asm files) into arch directory with
generate.pl. Platform dependent gypi files also created obtaining
build information fromconfigdata.pm
that is generated withConfigure
in the OpenSSL build system.
For Windows,Configure
generates makefile that is only available to
nmake command.config/Makefile_VC-WIN32
andconfig/Makefile_VC-WIN64A
are made created by hand for the use of
GNU make. If make rules or targets are changed in the version up of
OpenSSL, they should be also updated.- gyp and gypi files (
openssl*.{gyp,gypi}
)openssl.gyp
has two targets of openssl and openssl-cli referred
fromnode.gyp
. They includes asm and no_asm gypi files with arch
dependent gypi according to its build options and platforms . The
gyp data which is common with asm and no_asm are stored in
openssl_common.gypi. - header files (
config/*.{h,h.tmpl}
)bn_conf.h
,dso_conf.h
andopensslconf.h
are platform dependent
in the OpenSSL sources. They are replaced withconfig/*.h.tmpl
files to include the file in the../../../config/
and referred to
each arch files that depends on asm and no-asm option.
Supported architectures for use of ASM
Here is a list of supported architectures for use of ASM in OpenSSL.
--dest-os | --dest-cpu | OpenSSL target arch | CI |
---|---|---|---|
aix | ppc | aix-gcc | o |
aix | ppc64 | aix64-gcc | o |
linux | ia32 | linux-elf | o |
linux | x32 | linux-x32 | - |
linux | x64 | linux-x86_64 | o |
linux | arm | linux-armv4 | o |
linux | arm64 | linux-aarch64 | o |
linux | ppc | linux-ppc | o |
linux | ppc64 | linux-ppc64 | o |
linux | ppc64 | linux-ppc64le | o |
linux | s390 | linux32-s390x | o |
linux | s390x | linux64-s390x | o |
mac | ia32 | darwin-i386-cc | - |
mac | x64 | darwin64-x86-cc | o |
win | ia32 | VC-WIN32 | - |
win | x64 | VC-WIN64A | o |
solaris | ia32 | solaris-x86-gcc | o |
solaris | x64 | solaris64-x86_64-gcc | o |
freebsd | ia32 | BSD-x86 | - |
freebsd | x64 | BSD-x86_64 | o |
openbsd | ia32 | BSD-x86 | - |
openbsd | x64 | BSD-x86_64 | - |
others | others | linux-elf | - |
These are listed in <config/Makefile>.
Please refer <config/opensslconf%5Fasm.h> for details.
Upgrading OpenSSL
Please refer <config/README.md> .