-
Notifications
You must be signed in to change notification settings - Fork 29.6k
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: fix IBM i build with Python 3.9 #48056
Conversation
Review requested:
|
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.
Assuming build passes
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
Unfortunately it did not (after just shy of 8 hours)😞. Errors look like this 20:51:27 Assembler:
20:51:27 /home/IOJS/build/cc49avPB.s: line 11: 1252-016 The specified opcode or pseudo-op is not valid.
20:51:27 Use supported instructions or pseudo-ops only.
20:51:27 /home/IOJS/build/cc49avPB.s: line 12: 1252-016 The specified opcode or pseudo-op is not valid.
20:51:27 Use supported instructions or pseudo-ops only.
... I'm not 100% sure but it looks like this might be an intermediate/generated file during v8 (v8_snapshot?) -- the openssl bits that this PR was fixing were much earlier in the log. @abmusse Could you possibly take a look? |
Just took a peek at the log had scroll a bunch of Looks like the command just before the first opcode error was:
|
Does v8 link with openssl? I'm not sure how your changes to the embedded openssl results in v8 compile failure. FYI for our IBM i releases of node we build with Is it possible for us to do the same in the CI, i.e. Install our openssl3 and build with |
I tried passing 23:13:27 { 'target_defaults': { 'cflags': [],
23:13:27 'default_configuration': 'Release',
23:13:27 'defines': [ 'NODE_OPENSSL_CONF_NAME=nodejs_conf',
23:13:27 'ICU_NO_USER_DATA_OVERRIDE'],
23:13:27 'include_dirs': ['/QOpenSys/pkgs/include'],
23:13:27 'libraries': [ '-L/QOpenSys/pkgs/lib',
23:13:27 '-lcrypto',
23:13:27 '-lssl']},
...
23:13:31 'node_shared_openssl': 'true', That run was on |
Ah yes, I suspect we still need these changes: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This is the only patch we apply in our Node 20 build as v8 has not merged this yet. Should we make a PR with these changes? |
We generally avoid floating patches on top of V8 as it complicates updating V8 versions in Node.js. We need to get https://chromium-review.googlesource.com/c/v8/v8/+/4259330 merged upstream in V8 first and then we can cherry-pick or update V8 in Node.js. Perhaps @miladfarca could help advise how to get that CL merged into V8. Refs: https://github.com/nodejs/node/blob/main/doc/contributing/maintaining/maintaining-V8.md In the meantime I'll make node-test-commit-ibmi run with Python 3.6 until we have the V8 patch merged. |
If contributing for the first time make sure you have signed a CLA: https://v8.dev/docs/contribute#sign-the-cla |
Since Meng Xu is no longer working on IBM i, I think we'll have to take over his PR. @abmusse let's work on getting you set up to take the upstream PR over. |
I've gained approval to contribute to v8 through the IBM process. Should be good with signing the CLA. |
Got setup and created a CL with the minimal amount of changes needed |
@abmusse Click on "Reply > Suggest Owners > show all owners" and select at least one owner to review your CL. |
Thanks, I've added the reviewers! |
CC @richardlau UPDATE: The above CL got merged 🎉 |
@abmusse Could you open a V8 backport PR? |
Original commit message: fix: EmbeddedTargetOs on IBM i with Python 3.9 For some context, Python 3.9 on IBM i returns "os400" for sys.platform instead of "aix". We used to build with Python 3.6 which returned "aix" as the platform When attempting to build Node.js with python 3.9 on IBM i we run into a build error. Ref: nodejs#48056 Ref: nodejs#48056 (comment) I'm not quite sure where target_os is being passed down to the function ToEmbeddedTargetOs. It seems as though target_os is being generated from sys.platform or similar call from python as we started running into this issue after building with Python 3.9. This PR supersedes initial changes proposed in: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This PR contains the minimal changes to successfully build Node.js (builds v8 as an internal dep) on IBM i with Python 3.9. Change-Id: I32d43197bce994a72a0d85091e91f80eeea4482d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846413 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#89981} Refs: v8/v8@8ec2651
When built with Python 3.9 on IBM i, `process.platform` will return `os400` instead of `aix`. In preparation for this, make `common.isAIX` only return true for AIX and update the tests to add checks for `common.isIBMi` where they were missing. PR-URL: nodejs#48056 Refs: nodejs#46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Python 3.9 on IBM i returns "os400" for `sys.platform`. PR-URL: nodejs#48056 Refs: nodejs#46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Original commit message: fix: EmbeddedTargetOs on IBM i with Python 3.9 For some context, Python 3.9 on IBM i returns "os400" for sys.platform instead of "aix". We used to build with Python 3.6 which returned "aix" as the platform When attempting to build Node.js with python 3.9 on IBM i we run into a build error. Ref: nodejs#48056 Ref: nodejs#48056 (comment) I'm not quite sure where target_os is being passed down to the function ToEmbeddedTargetOs. It seems as though target_os is being generated from sys.platform or similar call from python as we started running into this issue after building with Python 3.9. This PR supersedes initial changes proposed in: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This PR contains the minimal changes to successfully build Node.js (builds v8 as an internal dep) on IBM i with Python 3.9. Change-Id: I32d43197bce994a72a0d85091e91f80eeea4482d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846413 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#89981} Refs: v8/v8@8ec2651
Original commit message: fix: EmbeddedTargetOs on IBM i with Python 3.9 For some context, Python 3.9 on IBM i returns "os400" for sys.platform instead of "aix". We used to build with Python 3.6 which returned "aix" as the platform When attempting to build Node.js with python 3.9 on IBM i we run into a build error. Ref: nodejs#48056 Ref: nodejs#48056 (comment) I'm not quite sure where target_os is being passed down to the function ToEmbeddedTargetOs. It seems as though target_os is being generated from sys.platform or similar call from python as we started running into this issue after building with Python 3.9. This PR supersedes initial changes proposed in: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This PR contains the minimal changes to successfully build Node.js (builds v8 as an internal dep) on IBM i with Python 3.9. Change-Id: I32d43197bce994a72a0d85091e91f80eeea4482d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846413 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#89981} Refs: v8/v8@8ec2651
Original commit message: fix: EmbeddedTargetOs on IBM i with Python 3.9 For some context, Python 3.9 on IBM i returns "os400" for sys.platform instead of "aix". We used to build with Python 3.6 which returned "aix" as the platform When attempting to build Node.js with python 3.9 on IBM i we run into a build error. Ref: nodejs#48056 Ref: nodejs#48056 (comment) I'm not quite sure where target_os is being passed down to the function ToEmbeddedTargetOs. It seems as though target_os is being generated from sys.platform or similar call from python as we started running into this issue after building with Python 3.9. This PR supersedes initial changes proposed in: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This PR contains the minimal changes to successfully build Node.js (builds v8 as an internal dep) on IBM i with Python 3.9. Change-Id: I32d43197bce994a72a0d85091e91f80eeea4482d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846413 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#89981} Refs: v8/v8@8ec2651
Original commit message: fix: EmbeddedTargetOs on IBM i with Python 3.9 For some context, Python 3.9 on IBM i returns "os400" for sys.platform instead of "aix". We used to build with Python 3.6 which returned "aix" as the platform When attempting to build Node.js with python 3.9 on IBM i we run into a build error. Ref: #48056 Ref: #48056 (comment) I'm not quite sure where target_os is being passed down to the function ToEmbeddedTargetOs. It seems as though target_os is being generated from sys.platform or similar call from python as we started running into this issue after building with Python 3.9. This PR supersedes initial changes proposed in: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This PR contains the minimal changes to successfully build Node.js (builds v8 as an internal dep) on IBM i with Python 3.9. Change-Id: I32d43197bce994a72a0d85091e91f80eeea4482d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846413 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#89981} Refs: v8/v8@8ec2651 PR-URL: #49639 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
When built with Python 3.9 on IBM i, `process.platform` will return `os400` instead of `aix`. In preparation for this, make `common.isAIX` only return true for AIX and update the tests to add checks for `common.isIBMi` where they were missing. PR-URL: #48056 Refs: #46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Python 3.9 on IBM i returns "os400" for `sys.platform`. PR-URL: #48056 Refs: #46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Original commit message: fix: EmbeddedTargetOs on IBM i with Python 3.9 For some context, Python 3.9 on IBM i returns "os400" for sys.platform instead of "aix". We used to build with Python 3.6 which returned "aix" as the platform When attempting to build Node.js with python 3.9 on IBM i we run into a build error. Ref: nodejs#48056 Ref: nodejs#48056 (comment) I'm not quite sure where target_os is being passed down to the function ToEmbeddedTargetOs. It seems as though target_os is being generated from sys.platform or similar call from python as we started running into this issue after building with Python 3.9. This PR supersedes initial changes proposed in: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This PR contains the minimal changes to successfully build Node.js (builds v8 as an internal dep) on IBM i with Python 3.9. Change-Id: I32d43197bce994a72a0d85091e91f80eeea4482d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846413 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#89981} Refs: v8/v8@8ec2651 PR-URL: nodejs#49862 Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Michael Dawson <midawson@redhat.com>
When built with Python 3.9 on IBM i, `process.platform` will return `os400` instead of `aix`. In preparation for this, make `common.isAIX` only return true for AIX and update the tests to add checks for `common.isIBMi` where they were missing. PR-URL: nodejs#48056 Refs: nodejs#46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Python 3.9 on IBM i returns "os400" for `sys.platform`. PR-URL: nodejs#48056 Refs: nodejs#46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Original commit message: fix: EmbeddedTargetOs on IBM i with Python 3.9 For some context, Python 3.9 on IBM i returns "os400" for sys.platform instead of "aix". We used to build with Python 3.6 which returned "aix" as the platform When attempting to build Node.js with python 3.9 on IBM i we run into a build error. Ref: nodejs#48056 Ref: nodejs#48056 (comment) I'm not quite sure where target_os is being passed down to the function ToEmbeddedTargetOs. It seems as though target_os is being generated from sys.platform or similar call from python as we started running into this issue after building with Python 3.9. This PR supersedes initial changes proposed in: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This PR contains the minimal changes to successfully build Node.js (builds v8 as an internal dep) on IBM i with Python 3.9. Change-Id: I32d43197bce994a72a0d85091e91f80eeea4482d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846413 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#89981} Refs: v8/v8@8ec2651 PR-URL: nodejs#49639 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Original commit message: fix: EmbeddedTargetOs on IBM i with Python 3.9 For some context, Python 3.9 on IBM i returns "os400" for sys.platform instead of "aix". We used to build with Python 3.6 which returned "aix" as the platform When attempting to build Node.js with python 3.9 on IBM i we run into a build error. Ref: #48056 Ref: #48056 (comment) I'm not quite sure where target_os is being passed down to the function ToEmbeddedTargetOs. It seems as though target_os is being generated from sys.platform or similar call from python as we started running into this issue after building with Python 3.9. This PR supersedes initial changes proposed in: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This PR contains the minimal changes to successfully build Node.js (builds v8 as an internal dep) on IBM i with Python 3.9. Change-Id: I32d43197bce994a72a0d85091e91f80eeea4482d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846413 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#89981} Refs: v8/v8@8ec2651 PR-URL: #49862 Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Michael Dawson <midawson@redhat.com>
When built with Python 3.9 on IBM i, `process.platform` will return `os400` instead of `aix`. In preparation for this, make `common.isAIX` only return true for AIX and update the tests to add checks for `common.isIBMi` where they were missing. PR-URL: #48056 Refs: #46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Python 3.9 on IBM i returns "os400" for `sys.platform`. PR-URL: #48056 Refs: #46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Original commit message: fix: EmbeddedTargetOs on IBM i with Python 3.9 For some context, Python 3.9 on IBM i returns "os400" for sys.platform instead of "aix". We used to build with Python 3.6 which returned "aix" as the platform When attempting to build Node.js with python 3.9 on IBM i we run into a build error. Ref: nodejs#48056 Ref: nodejs#48056 (comment) I'm not quite sure where target_os is being passed down to the function ToEmbeddedTargetOs. It seems as though target_os is being generated from sys.platform or similar call from python as we started running into this issue after building with Python 3.9. This PR supersedes initial changes proposed in: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This PR contains the minimal changes to successfully build Node.js (builds v8 as an internal dep) on IBM i with Python 3.9. Change-Id: I32d43197bce994a72a0d85091e91f80eeea4482d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846413 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#89981} Refs: v8/v8@8ec2651 PR-URL: nodejs#49862 Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Michael Dawson <midawson@redhat.com>
When built with Python 3.9 on IBM i, `process.platform` will return `os400` instead of `aix`. In preparation for this, make `common.isAIX` only return true for AIX and update the tests to add checks for `common.isIBMi` where they were missing. PR-URL: nodejs#48056 Refs: nodejs#46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Python 3.9 on IBM i returns "os400" for `sys.platform`. PR-URL: nodejs#48056 Refs: nodejs#46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Original commit message: fix: EmbeddedTargetOs on IBM i with Python 3.9 For some context, Python 3.9 on IBM i returns "os400" for sys.platform instead of "aix". We used to build with Python 3.6 which returned "aix" as the platform When attempting to build Node.js with python 3.9 on IBM i we run into a build error. Ref: nodejs#48056 Ref: nodejs#48056 (comment) I'm not quite sure where target_os is being passed down to the function ToEmbeddedTargetOs. It seems as though target_os is being generated from sys.platform or similar call from python as we started running into this issue after building with Python 3.9. This PR supersedes initial changes proposed in: https://chromium-review.googlesource.com/c/v8/v8/+/4259330 This PR contains the minimal changes to successfully build Node.js (builds v8 as an internal dep) on IBM i with Python 3.9. Change-Id: I32d43197bce994a72a0d85091e91f80eeea4482d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846413 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#89981} Refs: v8/v8@8ec2651 PR-URL: nodejs#49639 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
When built with Python 3.9 on IBM i, `process.platform` will return `os400` instead of `aix`. In preparation for this, make `common.isAIX` only return true for AIX and update the tests to add checks for `common.isIBMi` where they were missing. PR-URL: nodejs/node#48056 Refs: nodejs/node#46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Python 3.9 on IBM i returns "os400" for `sys.platform`. PR-URL: nodejs/node#48056 Refs: nodejs/node#46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
When built with Python 3.9 on IBM i, `process.platform` will return `os400` instead of `aix`. In preparation for this, make `common.isAIX` only return true for AIX and update the tests to add checks for `common.isIBMi` where they were missing. PR-URL: nodejs/node#48056 Refs: nodejs/node#46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Python 3.9 on IBM i returns "os400" for `sys.platform`. PR-URL: nodejs/node#48056 Refs: nodejs/node#46739 Refs: nodejs/build#3358 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Python 3.9 on IBM i returns "os400" for
sys.platform
.Refs: #46739
Refs: nodejs/build#3358
cc @nodejs/platform-ibmi