-
Notifications
You must be signed in to change notification settings - Fork 30.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
build: require --openssl-no-asm if no suitable assemble on x86_64 and ia32 #20226
Conversation
The current openssl checks assembler version only x86_64 or ia32 target arch for use of AES-NI, AVX and AVX2. This requires --openssl-no-asm option during configure when an older assembler version is found only on x86_64 or ia32.
I made CI in https://ci.nodejs.org/job/node-test-commit/17948/ and run this again in https://ci.nodejs.org/job/node-test-pull-request/14442/. |
BUILDING.md
Outdated
|
||
* 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. | ||
Otherwise, configure is failed. Install one or build with --openssl-no-asm. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
configure
-> `configure`
?
--openssl-no-asm
-> `--openssl-no-asm`
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@vsemozhetbyt Thanks and very sorry for I often missed backquotes. Fixed in 0388dbd.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is OK, cryptography domain is complicated enough to not also track all the doc nits)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor nit: 'Otherwise configure
will fail with an error. This can be avoided by either providing a new enough assembler as per the list above or by using the --openssl-no-asm
flag.'
This is my summary.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is indeed debatable if this is semver major. Fine to get into 10.0.0 IMO.
BUILDING.md
Outdated
|
||
* 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. | ||
Otherwise, configure is failed. Install one or build with --openssl-no-asm. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor nit: 'Otherwise configure
will fail with an error. This can be avoided by either providing a new enough assembler as per the list above or by using the --openssl-no-asm
flag.'
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. This only touches the compilation tool chain and ensures that people are not going to be broken when building.
I think this should be Semver-Patch imho. The breaking change was in the OpenSSL upgrade, this is a bugfix
BUILDING.md
Outdated
|
||
* 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. | ||
Otherwise `configure` will fail with an error. This can be avoided by | ||
either providing a new enough assembler as per the list above or by |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: s/new enough assembler/a newer
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 36becf8. Thanks.
sys.exit() | ||
Please make sure you have a C compiler installed on your system and/or | ||
consider adjusting the CC environment variable if you installed | ||
it in a non-standard prefix.''') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
did we want to remove the sys.exit()
here
sys.exit() | ||
Please make sure you have a C compiler installed on your system and/or | ||
consider adjusting the CC environment variable if you installed | ||
it in a non-standard prefix.''') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same as above re: sys.exit
sys.exit() | ||
Please make sure you have a C compiler installed on your system and/or | ||
consider adjusting the CC environment variable if you installed | ||
it in a non-standard prefix.''') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same here re: sys.exit()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@MylesBorins This is in def error(msg)
and sys.exit(1)
is included in it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for explaining 😄
I removed semver-major tag to follow the comments. |
Oops, I did it https://ci.nodejs.org/job/node-test-pull-request/14453/ and just cancelled it. |
There was some red on linux... appears to be a flaky test, trying again https://ci.nodejs.org/job/node-test-commit-linux/18222/ |
Ok, things look good between the two CI runs. There are still a couple running on one but they passed on the others and the red that is remaining is known. Will be landing this and will be doing another CI run on 10.0.0 just to make certain. |
Yes. The failures on alpine linux are due to its timezone problem and I think it is nothing to do with this PR. |
The current openssl checks assembler version only x86_64 or ia32 target arch for use of AES-NI, AVX and AVX2. This requires --openssl-no-asm option during configure when an older assembler version is found only on x86_64 or ia32. PR-URL: #20226 Fixes: #19944 Refs: #20217 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
The current openssl checks assembler version only x86_64 or ia32 target arch for use of AES-NI, AVX and AVX2. This requires --openssl-no-asm option during configure when an older assembler version is found only on x86_64 or ia32. PR-URL: #20226 Fixes: #19944 Refs: #20217 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Landed in 65db8c7, de968999, and 3bcd857 |
Thanks. Happy release of Node-v10.0.0! |
thanks @shigeki! sometimes I wonder if you even sleep. |
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passesThis is a copy of #20217 (review) and add an additional commit to limit assembler check only on x86_64 and ia32 and BUILDING.md updates.
I submit a new PR with fast-track for only 5 hours left to land semver-major on Node-v10.0.0 until PST noon as described in #20217 (comment).
Fixes: #19944
Refs: #20217
@rvagg @mhdawson @danbev @jasnell @bnoordhuis @nodejs/build @nodejs/tsc