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
Now that nodejs/node#13466 has landed, we need to make sure all our boxes have the newer compiler levels.
According to @bnoordhuis in nodejs/node#13466 (comment), binaries built with the later version should run everywhere they did before, so there shouldn't be a problem just updating the level on all our boxes.
I'd assume most/all of our older machines are using gcc 4.8.4.
This might be a good time to test out our ansible scripts.
I would like to work on this, but I couldn't find documentation on how this whole thing works and how I can test it locally. I would be grateful if someone can point me in the right direction.
@seishun old ansible scripts are in setup/, new ones are in ansible/, we're trying to move over to the new scripts, but they're not completely tested yet.
The README in the ansible directory should have the info you need to get started, and the scripts should be documented. If you run into any issues with it let us know.
@seishun I tried to follow the guides once but got distracted... You doing it for the first time is a good chance to document missing pieces and hidden assumption, so it would be great if you open a doc PR or pass the info to me and I'll PR it.
There are 5 remaining platforms in CI with outdated gcc:
centos7-64. This should be simple, just need to figure out if the ansible/ scripts work well for CentOS 7 or the old scripts in setup/ should be changed instead.
aix61-ppc64. Same as above - is setup/aix61 the right script? Is there any way I can test this?
cc-armv6 and cc-armv7. These two run on a machine called node-msft-cross-compiler-1, which is absent in both ansible/inventory.yml and setup/ansible-inventory. Which OS does it run? Are there Ansible scripts for it?
For rhel72-s390x, @jBarz is working on this. The problem is that new ansible templates were created which did not included full support for all platforms. The old templates were, still are used to deploy to the existing machines. Please don't update without co-ordinating with @jBarz
For aix61-ppc64 - I think @gibfahn is looking into that, please don't update without co-ordinating with him.
Support for Wheezy ends on 31st May 2018, I assume it will be dropped in Node 10. Jessie seems to have gcc 4.9.2 in the repos, can that compile V8 6.5?
But we are stuck with it for previous versions of Node, we need to be careful not to drop support for distros, compilers and libc that we are still going to be shipping in 4, 6, 8 even if we're moving to deprecating them for future versions. We are running Wheezy on the Pi1 and Pi2's and so far have no plan to migrate to Jessie for them. I'm not really happy with this push to move our compiler versions up without a solid plan to continue to test and support our older LTS branches that we have locked in minimum libc version commitments to.
But we are stuck with it for previous versions of Node, we need to be careful not to drop support for distros, compilers and libc that we are still going to be shipping in 4, 6, 8 even if we're moving to deprecating them for future versions. We are running Wheezy on the Pi1 and Pi2's and so far have no plan to migrate to Jessie for them.
Is there an issue with upgrading gcc on the Pi3s and leaving the Pi1s and Pi2s as-is?
I'm not really happy with this push to move our compiler versions up without a solid plan to continue to test and support our older LTS branches that we have locked in minimum libc version commitments to.
I gave those a try locally and they seem to work, but they can't compile V8 6.5.
What was the error?
The error is exactly the same as the one in nodejs/node-v8#35. Strange thing there is that it happens while compiling native code, but I tried it in a machine with gcc 5.4.0 and it still happens.
Per #1150 (comment), the CentOS 6 machines were redeployed using ansible/ scripts that still install an old gcc version. This is surprising because they previously didn't work (#801) and the offending lines haven't been fixed. Though it's alluded to in #1076, which does seem to fix #801.
Can someone confirm the above? I would be glad to update the ansible/ scripts to install a newer gcc version, but it seems I'll have to wait until #1076 lands. cc @rvagg
So v10+ will build under Jessie, which has 4.9.2 but 9 and prior will be with Wheezy which is 4.8. Trying it out now with the latest nightly but there's quite a cache to build up for Jessie now so it'll be slow for a couple of days.
@seishun yeah, I used ansible/ to redeploy a whole new set of centos6 machines iirc. it should work with that PR but there's an outstanding issue with ARCH & DESTCPU that's still outstanding. I'll work to get that resolved but you should be able to assume that it'll get merged in almost the form that it's in now and you're welcome to build on top of it with updates. Remember though that we are building releases with centos6 so we still need to be able to support older compilers too. It'd be good if we could have two variations, one for old and one for new, and we can apply them as appropriate. I don't really like the idea of having to have double the number of CentOS6 machines but perhaps we can do compiler selection in the Jenkins job like the PPC jobs do now.
Remember though that we are building releases with centos6 so we still need to be able to support older compilers too.
Wasn't that discussed back and forth in #797 and #809? Binaries produced by devtoolset work just fine on vanilla OSs, so there is no need to build LTS with gcc 4.8 specifically. For instance, #809 (comment) and #797 (comment).
At least one job (node-cross-compile) uses a gcc version older than 4.9.4 (4.9.3 specifically), but it seems it would take significant effort to use a newer version there, and it's probably not worth it.
At least one job (node-cross-compile) uses a gcc version older than 4.9.4 (4.9.3 specifically), but it seems it would take significant effort to use a newer version there, and it's probably not worth it.
Activity
seishun commentedon Jun 17, 2017
I would like to work on this, but I couldn't find documentation on how this whole thing works and how I can test it locally. I would be grateful if someone can point me in the right direction.
/cc @nodejs/build
gibfahn commentedon Jun 17, 2017
@seishun old ansible scripts are in
setup/, new ones are inansible/, we're trying to move over to the new scripts, but they're not completely tested yet.The
READMEin the ansible directory should have the info you need to get started, and the scripts should be documented. If you run into any issues with it let us know.seishun commentedon Jun 17, 2017
@gibfahn I'm a complete noob here, would https://github.com/nodejs/build/blob/master/setup/TESTING_LOCALLY.md still work for testing new scripts?
refack commentedon Jun 17, 2017
@seishun I tried to follow the guides once but got distracted... You doing it for the first time is a good chance to document missing pieces and hidden assumption, so it would be great if you open a
docPR or pass the info to me and I'll PR it.gibfahn commentedon Jun 17, 2017
@seishun in theory yes. Actually that document should really be ported over to
ansible/.seishun commentedon Nov 29, 2017
There are 5 remaining platforms in CI with outdated gcc:
ansible/scripts work well for CentOS 7 or the old scripts insetup/should be changed instead.node-msft-cross-compiler-1, which is absent in both ansible/inventory.yml and setup/ansible-inventory. Which OS does it run? Are there Ansible scripts for it?mhdawson commentedon Nov 29, 2017
For rhel72-s390x, @jBarz is working on this. The problem is that new ansible templates were created which did not included full support for all platforms. The old templates were, still are used to deploy to the existing machines. Please don't update without co-ordinating with @jBarz
For aix61-ppc64 - I think @gibfahn is looking into that, please don't update without co-ordinating with him.
seishun commentedon Nov 30, 2017
Are there issues for tracking these?
mhdawson commentedon Nov 30, 2017
AIX is coverd in #925
rhel72-s390x, possibly not, I more recently asked jBarz to start working on that. @jBarz can you open an issue for tracking the work on linuxOne.
jBarz commentedon Dec 1, 2017
Done for linuxOne #1023
joaocgreis commentedon Dec 7, 2017
@seishun about the cross compiler, there is a PR that never landed: #244
15 remaining items
rvagg commentedon Jan 24, 2018
But we are stuck with it for previous versions of Node, we need to be careful not to drop support for distros, compilers and libc that we are still going to be shipping in 4, 6, 8 even if we're moving to deprecating them for future versions. We are running Wheezy on the Pi1 and Pi2's and so far have no plan to migrate to Jessie for them. I'm not really happy with this push to move our compiler versions up without a solid plan to continue to test and support our older LTS branches that we have locked in minimum libc version commitments to.
seishun commentedon Jan 27, 2018
Is there an issue with upgrading gcc on the Pi3s and leaving the Pi1s and Pi2s as-is?
Can you suggest a better plan, then?
joaocgreis commentedon Jan 30, 2018
The error is exactly the same as the one in nodejs/node-v8#35. Strange thing there is that it happens while compiling native code, but I tried it in a machine with gcc 5.4.0 and it still happens.
seishun commentedon Jan 30, 2018
Then it was a bug in V8 that has been fixed upstream: nodejs/node-v8#35 (comment).
seishun commentedon Mar 30, 2018
Status update.
cc-armv6andcc-armv7now use gcc 4.9 on master andnode-test-commit-arm-fannedsuccessfully builds a commit that requires gcc 4.9.There are now 5 platforms in CI that require a compiler upgrade:
centos7-arm64. I asked about it in Use gcc 4.9.4 in CI #762 (comment) but didn't get a response. cc @nodejs/buildcentos6-64. This is unexpected because it was upgraded in ansible: use gcc 4.9 on CentOS 6 #809. Did someone revert the changes?centos7-64. This is a simple change in the Ansible scripts if Duplicate 'centos7' in theinitdictionary #1034 is resolved.rhel72-s390x. Waiting for linuxOne: gcc upgrade #1023.aix61-ppc64. Waiting for AIX: gcc upgrade requirement #925.seishun commentedon Mar 30, 2018
Per #1150 (comment), the CentOS 6 machines were redeployed using
ansible/scripts that still install an old gcc version. This is surprising because they previously didn't work (#801) and the offending lines haven't been fixed. Though it's alluded to in #1076, which does seem to fix #801.Can someone confirm the above? I would be glad to update the
ansible/scripts to install a newer gcc version, but it seems I'll have to wait until #1076 lands. cc @rvaggrvagg commentedon Mar 31, 2018
I've converted one of the two release Raspberry Pis to the new Docker setup and have this in ci-release (covers most *nix's, not just the Pis):
So v10+ will build under Jessie, which has 4.9.2 but 9 and prior will be with Wheezy which is 4.8. Trying it out now with the latest nightly but there's quite a cache to build up for Jessie now so it'll be slow for a couple of days.
rvagg commentedon Apr 1, 2018
@seishun yeah, I used ansible/ to redeploy a whole new set of centos6 machines iirc. it should work with that PR but there's an outstanding issue with ARCH & DESTCPU that's still outstanding. I'll work to get that resolved but you should be able to assume that it'll get merged in almost the form that it's in now and you're welcome to build on top of it with updates. Remember though that we are building releases with centos6 so we still need to be able to support older compilers too. It'd be good if we could have two variations, one for old and one for new, and we can apply them as appropriate. I don't really like the idea of having to have double the number of CentOS6 machines but perhaps we can do compiler selection in the Jenkins job like the PPC jobs do now.
seishun commentedon Apr 1, 2018
Wasn't that discussed back and forth in #797 and #809? Binaries produced by
devtoolsetwork just fine on vanilla OSs, so there is no need to build LTS with gcc 4.8 specifically. For instance, #809 (comment) and #797 (comment).mhdawson commentedon Apr 3, 2018
Just want to mention that building with 4.9.4 broke compatibility for RHEL 7.X for PPCLE, not sure if that is the case for X86 as well ....
mhdawson commentedon Apr 3, 2018
In the end I went back to using 4.8 for 9.X and lower and set it to use 4.9.X for 10 and higher.
seishun commentedon Apr 19, 2018
Looks like every platform now uses gcc 4.9 or newer on master: https://ci.nodejs.org/job/node-test-commit/17876/
At least one job (node-cross-compile) uses a gcc version older than 4.9.4 (4.9.3 specifically), but it seems it would take significant effort to use a newer version there, and it's probably not worth it.
I think this issue can be closed now.
joaocgreis commentedon Apr 20, 2018
@rvagg did it: #1237
refack commentedon Jun 2, 2019
I believe this has been resolved by installing GCC-6 and documenting in e6a71a0