You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Require openssl-no-asm option explicitly if older assembler version is found. #19944
Currently openssl asm support requires assembler versions as described in BUILDING.md and automatically falls back to no-asm build with warning.
Should we stop building then require and opt-in to have --openssl-no-asm option in that case?
CC @nodejs/build
#### OpenSSL asm support
OpenSSL-1.1.0 requires the following asssembler version for use of asm
support.
* gas (GNU assembler) version 2.23 or higher
* xcode version 5.0 or higher
* llvm version 3.3 or higher
* nasm version 2.10 or higher in Windows
Otherwise, `--openssl-no-asm` is added with warning in configure.
*Note:* The forthcoming OpenSSL-1.1.1 will require higher
version. Please refer
https://www.openssl.org/docs/man1.1.1/man3/OPENSSL_ia32cap.html for
details.
+1 consistent with #19943 if we accept that one too. I'm going with @bnoordhuis on this one that you should opt in.
Your notes about versions had me wondering if our infra even supports this and our Linux release builders didn't until today! So nightlies, and the last 10.0.0 test build for Linux (@ https://nodejs.org/download/test/v10.0.0-test20180410edd9cc466a/) would have been built without asm support if it was falling back to no-asm silently. as was 2.20.
I also still need to make sure our macOS machines are fully updated with xcode too.
It would have been nice to get build failures because as was too old instead of silently building suboptimal binaries. Hence, +1 on this from me.
When we make opt-in, we should consider the future upgrade to OpenSSL-1.1.1 which needs higher version so as not to be semver-major update.
Following to the requirements in 1.1.1, asm support is
#### OpenSSL asm support
OpenSSL requires the following asssembler version for use of asm
support.
* gas (GNU assembler) version 2.26 or higher
* xcode version 5.0 or higher
* llvm version 3.3 or higher
* nasm version 2.11.8 or higher in Windows
Otherwise, build with `--openssl-no-asm` in configure.
*Note:* This requirements come from the forthcoming OpenSSL-1.1.1. See
https://www.openssl.org/docs/man1.1.1/man3/OPENSSL_ia32cap.html for
details.
At the current ,the following CI would be failed due to the older assembler version.
^C-bash-4.3$ as --version
Assembler:
line 1: 1252-168 --version is not a recognized flag.
line 1: 1252-170 Usage: as [-a{32|64}] -l[ListFile] -s[ListFile] -n Name
-o ObjectFile [-w|-W] -x[XCrossFile] -u
-m ModeName [-i] [-p{off|on}] [-E{off|on}] [-v] [InputFile]
@gireeshpunathil can you take a look at the requirements for as in openssl for AIX to figure out if we need an additional or newer version of the as tool or if the detection logic needs a tweek.
^C-bash-4.3$ as --version
Assembler:
line 1: 1252-168 --version is not a recognized flag.
line 1: 1252-170 Usage: as [-a{32|64}] -l[ListFile] -s[ListFile] -n Name
-o ObjectFile [-w|-W] -x[XCrossFile] -u
-m ModeName [-i] [-p{off|on}] [-E{off|on}] [-v] [InputFile]
That's almost certainly not the GNU assembler and looks like it is the AIX assembler.
Node.js' configure explicitly looks for GNU assembler:
@jBarz@mmalecki can you help @shigeki get what he needs? @shigeki we can also get you access to one of the linuxOne machines in the community CI as well. I've opened the issue to request access for you here: nodejs/build#1246
I found that OpenSSL built on s390 does not check assembler version.
What does "check assembler version" mean here? Are you suggesting the sha512-s390x.pl check for as version too? Not sure if I see similar checks in other platform's OpenSSL ASM perl scripts.
Activity
rvagg commentedon Apr 11, 2018
+1 consistent with #19943 if we accept that one too. I'm going with @bnoordhuis on this one that you should opt in.
Your notes about versions had me wondering if our infra even supports this and our Linux release builders didn't until today! So nightlies, and the last 10.0.0 test build for Linux (@ https://nodejs.org/download/test/v10.0.0-test20180410edd9cc466a/) would have been built without asm support if it was falling back to no-asm silently.
aswas 2.20.I also still need to make sure our macOS machines are fully updated with xcode too.
It would have been nice to get build failures because
aswas too old instead of silently building suboptimal binaries. Hence, +1 on this from me.shigeki commentedon Apr 12, 2018
When we make opt-in, we should consider the future upgrade to OpenSSL-1.1.1 which needs higher version so as not to be semver-major update.
Following to the requirements in 1.1.1, asm support is
At the current ,the following CI would be failed due to the older assembler version.
mhdawson commentedon Apr 19, 2018
ppcle, s390x how use higher versions for Node 10.x and higher.
aix we'll have to check why it reports as no_asm.
mhdawson commentedon Apr 19, 2018
as is on the machine but reports:
^C-bash-4.3$ as --version
Assembler:
line 1: 1252-168 --version is not a recognized flag.
line 1: 1252-170 Usage: as [-a{32|64}] -l[ListFile] -s[ListFile] -n Name
-o ObjectFile [-w|-W] -x[XCrossFile] -u
-m ModeName [-i] [-p{off|on}] [-E{off|on}] [-v] [InputFile]
mhdawson commentedon Apr 19, 2018
@gireeshpunathil can you take a look at the requirements for as in openssl for AIX to figure out if we need an additional or newer version of the as tool or if the detection logic needs a tweek.
gireeshpunathil commentedon Apr 20, 2018
sure
richardlau commentedon Apr 20, 2018
That's almost certainly not the GNU assembler and looks like it is the AIX assembler.
Node.js'
configureexplicitly looks for GNU assembler:node/configure
Lines 679 to 701 in 0857790
on one of IBM's internal AIX systems, the equivalent
gcccommand produces:which doesn't match the regexp so we end up with
'gas_version': '0'.Does openssl support AIX's assembler?
cc @nodejs/platform-aix
shigeki commentedon Apr 20, 2018
I found that OpenSSL built on s390 does not check assembler version.
https://github.com/nodejs/node/blob/master/deps/openssl/openssl/crypto/sha/asm/sha512-s390x.pl
It should be fixed but I never had an experience to build openssl on s390.
In order to check generated assembler exactly, can I login and build OpenSSL on it?
Otherwise, please build openssl-1.1.0h on s390 with
and then give me build sources in tar ball.
shigeki commentedon Apr 20, 2018
And also please give me a stdout logs of
configandmake.richardlau commentedon Apr 20, 2018
cc @nodejs/platform-s390 @nodejs/build
mhdawson commentedon Apr 20, 2018
@jBarz @mmalecki can you help @shigeki get what he needs? @shigeki we can also get you access to one of the linuxOne machines in the community CI as well. I've opened the issue to request access for you here: nodejs/build#1246
joransiu commentedon Apr 20, 2018
What does "check assembler version" mean here? Are you suggesting the sha512-s390x.pl check for
asversion too? Not sure if I see similar checks in other platform's OpenSSL ASM perl scripts.shigeki commentedon Apr 23, 2018
Other architectures have checks assembler version such as
node/deps/openssl/openssl/crypto/poly1305/asm/poly1305-x86_64.pl
Lines 57 to 74 in 8b012e1
build: require --openssl-no-asm if old assembler
build: limit assembler version check on x86
build: extract error() function in configure
build: require --openssl-no-asm if old assembler
build: limit assembler version check on x86
build: extract error() function in configure