-
Notifications
You must be signed in to change notification settings - Fork 166
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
Use gcc 4.9.4 in CI #762
Comments
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 |
@seishun old ansible scripts are in The |
@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? |
@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 |
@seishun in theory yes. Actually that document should really be ported over to |
There are 5 remaining platforms in CI with outdated gcc:
|
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 |
Done for linuxOne #1023 |
@joaocgreis Looks like it uses |
Or is someone already working on upgrading gcc on that machine? |
@rvagg I seem to remember you already mentioning doing some work for 4.9.4 on the raspberry PIs |
No, I was working on 4.9 for the armv7 wheezy release machines but couldn't come up with a solution for it that didn't rely on a newer libc that screwed up release builds, we suffer from the same problem with the release pi's too. This is all on Wheezy which we are using on release armv6 and armv7. We're using the same compiler for both, which is bad because we get armv6 binaries on armv7 but I don't have a solution yet. |
Support for Wheezy ends on 31st May 2018, which is shortly after Node 10.x release, so dropping it at least on master is reasonable. |
+1 but how should we document this? tbh I'm not at all happy with this approach of documenting kernel versions, nobody thinks in terms of kernel versions. libc versions are a tiny bit more relevant but perhaps we need to use distribution names or release timeframes, or at least make note of it in our supported systems documentation. |
The documentation already mentions that EOL distros are not supported: https://github.com/nodejs/node/blob/master/BUILDING.md#supported-platforms-1 |
It looks like things have changed since 29 Nov 2017 (#762 (comment)).
|
@seishun the About the compiler, I don't know what other compiler we can use. If someone wants to give it a try, we can probably give access or work out some way. |
@joaocgreis Also, is there a particular reason why it uses binaries under https://github.com/raspberrypi/tools/tree/master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin? Is there something special about them? For example, why not use binaries under https://github.com/raspberrypi/tools/tree/master/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin instead? (4.9.3 < 4.9.4, but it should work as a stopgap measure) |
Instructions for setup are here: https://github.com/nodejs/build/tree/master/setup/raspberry-pi (at least that is what I used when I setup the one for the release CI a little while ago) |
Are these instructions meant for the cross-compiling setup? The installation of GCC makes me suspect it isn't. And it doesn't mention the OS. |
No, for compilation on the machines themselves. Maybe @rvagg know about cross-compiling. |
About the folder with 4.9.3 binaries, it did not yet exist when I set up the cross-compile machine. I gave those a try locally and they seem to work, but they can't compile V8 6.5. The cross-compile machine should be very easy to update if that's the way forward, but the release machines compile natively and I don't know what compiler we can use there - it doesn't make sense to update the test CI if the releases would fail. About the CI setup, cross-compiling is essential to reduce the time it takes to compile (up to 1 day in some conditions), but there's no other reason to use it. Thus, the Raspberry Pi workers connected to test CI don't compile node, but compile the addons - in Testing this locally is not very hard, at lease should not require Ansible. To compile just follow and adapt the script of If there is no supported compiler that we can use for Raspberry Pi, shouldn't we be talking about dropping support for it in node v10 instead? Are there sill supported OSs for the Pi 1? |
What was the error?
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?
According to Wikipedia, Jessie works on Raspberry Pi 1. |
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. |
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? |
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. |
Then it was a bug in V8 that has been fixed upstream: nodejs/node-v8#35 (comment). |
Status update. There are now 5 platforms in CI that require a compiler upgrade:
|
Per #1150 (comment), the CentOS 6 machines were redeployed using Can someone confirm the above? I would be glad to update the |
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): exec_cmd="make -j $JOBS binary-upload \
DESTCPU=\"$DESTCPU\" \
ARCH=\"$ARCH\" \
DISTTYPE=\"$disttype\" \
DATESTRING=\"$datestring\" \
COMMIT=\"$commit\" \
CUSTOMTAG=\"$CUSTOMTAG\" \
RELEASE_URLBASE=\"$RELEASE_URLBASE\" \
CONFIG_FLAGS=\"$CONFIG_FLAGS\" \
"
if [[ "$NODE_LABELS" =~ pi1-docker ]]; then
echo "$exec_cmd" > node-ci-exec
if test $NODE_MAJOR_VERSION -ge 10; then
sudo docker-node-exec.sh -v jessie
else
sudo docker-node-exec.sh -v wheezy
fi
else
sh -c "$exec_cmd"
fi 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. |
Wasn't that discussed back and forth in #797 and #809? Binaries produced by |
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 .... |
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. |
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. |
I believe this has been resolved by installing GCC-6 and documenting in e6a71a0 |
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.
The text was updated successfully, but these errors were encountered: