Skip to content
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

Fix up Compiler levels for PPC machines #1020

Closed
mhdawson opened this issue Nov 29, 2017 · 38 comments
Closed

Fix up Compiler levels for PPC machines #1020

mhdawson opened this issue Nov 29, 2017 · 38 comments

Comments

@mhdawson
Copy link
Member

mhdawson commented Nov 29, 2017

Compilers on PPC were update to 4.9 recently.

What I'd like to do is:

  1. On BE just revert. We are already working on dropping BE from builds for 8.X and later. (I've removed from main download page, next step is to stop building in releases). (4.9 is only need to build later releases)

  2. on LE leave it at 4.9, validate that the binaries run on machines with gcc 4.8 installed and if ok update the release machine to match.

  3. Figure out how we have multiple compilers on each machine. We are likely to need this in the future and it would be good to know how we are going to accomplish this going forward.

  4. Update the ansible scripts so they do the right thing on PPC again.

@mhdawson
Copy link
Member Author

@jBarz @refack FYI

@seishun
Copy link
Contributor

seishun commented Nov 29, 2017

I assume BE will be dropped from CI as well?

@gibfahn
Copy link
Member

gibfahn commented Nov 29, 2017

I assume BE will be dropped from CI as well?

For newer release lines yes.

@mhdawson
Copy link
Member Author

mhdawson commented Nov 29, 2017

@seishun as gibfahn says, BE machines will still be in the CI and will be used to test the release lines before 8.X. The CI jobs will be updated to that for BE they don't run and simply pass as we have done in other similar instances.

@mhdawson
Copy link
Member Author

Added this to release job

if [[ $ARCH == ppc64 && ${NODE_MAJOR_VERSION} -gt 7 ]]; then
  echo "Not building $disttype on PPC Big Endian slave $NODE_NAME as not supported for v8.x and later"
  exit 0
fi

So we'll no longer build on for releases 8.x and above on PPC Big Endian.

Will keep an eye on builds for next little while to make sure it does the right thing (I tested in a separate job and I believe it is good) and then add to test jobs.

@mhdawson
Copy link
Member Author

mhdawson commented Nov 29, 2017

Note that archi is ppc64le for the LE machines so PPC sill still build on PPC LE for all versions.

@refack
Copy link
Contributor

refack commented Nov 30, 2017

Because of incompatibility with the libuv test jobs, I had to revert the default to gcc4.8 on all the 4 ppc machines (gcc4.9 is still installed).
Now we just need to add a condition that will pick gcc4.9 for node>=9

@mhdawson
Copy link
Member Author

@refack be-1 seems broken now for Node.js test, while be-2 seems ok.

The failures are:

test-commit-plinux/nodes/ppcbe-ubuntu1404/out/Release/obj.target/v8_init/deps/v8/src/setup-isolate-full.o ../deps/v8/src/setup-isolate-full.cc
In file included from ../deps/v8/src/base/logging.h:8:0,
                 from ../deps/v8/src/setup-isolate-full.cc:7:
/usr/include/c++/4.8/cstring:41:28: fatal error: bits/c++config.h: No such file or directory
 #include <bits/c++config.h>
                            ^
compilation terminated.
make[2]: *** [/home/iojs/build/wor

@mhdawson
Copy link
Member Author

Is it possible you missed some steps on be-1 ?

Can you also list the exact steps you followed so that we know how to update the ansible scripts to get to the same state ?

@mhdawson
Copy link
Member Author

Good forward, one more request is that we only change 1 machine at a time, validate that all is ok for a few days and then update the second machine once we are confident in the changes.

@mhdawson
Copy link
Member Author

mhdawson commented Nov 30, 2017

Seems like only be-1 of the 2 BE machines were reverted.

root@test-osuosl-ubuntu1404-ppc64-be-2:~# gcc --version
gcc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Last login: Thu Nov 30 17:49:56 2017 from 32.97.110.56
root@test-osuosl-ubuntu1404-ppc64-be-1:~# gcc --version
gcc (Ubuntu 4.8.5-2ubuntu1~14.04.1) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

So seems the revert has not reverted back to the prior state.

Both the le machines look like they were reversted.

@mhdawson
Copy link
Member Author

One thing I think may be related is that I think the default on PPCBE is 32 bit versus the 64 bit compiler and that may be related.

@mhdawson
Copy link
Member Author

@refack is it possible when installing/reverting 'g++-4.8-multilib' may have been removed ?

@mhdawson
Copy link
Member Author

I think that multilib may no longer be there:

root@test-osuosl-ubuntu1404-ppc64-be-1:~# dpkg -l g++-4.8-multilib
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                               Version                Architecture           Description
+++-==================================-======================-======================-==========================================================================
un  g++-4.8-multilib                   <none>                 <none>                 (no description available)

@mhdawson
Copy link
Member Author

@refack I'd like to have the steps you used for the revert to understand the sequence to see if re-installing multilib makes sense.

@refack
Copy link
Contributor

refack commented Nov 30, 2017

I did the following (build-essentials overwrites the gcc/g++ symlinks which are used by default)

apt-get install build-essential
apt-get install libtool automake m4 g++ gcc

RE multilib, if I remember correctly it's simply named gcc-multilib:

root@test-osuosl-ubuntu1404-ppc64-be-1:~# dpkg -l gcc-multilib
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                           Version                      Architecture                 Description
+++-==============================================-============================-============================-=================================================================================================
ii  gcc-multilib                                   4:4.8.2-1ubuntu6             powerpc                      GNU C compiler (multilib files)

@mhdawson
Copy link
Member Author

@refack those were the commands for the revert ?

@refack
Copy link
Contributor

refack commented Nov 30, 2017

@mhdawson yes.

Also, I then run a libuv-test-commit-linux to see if it passes, it also prints gcc --version showing 4.8.
I then run node-test-commit-plinux to verify everything builds.

@mhdawson
Copy link
Member Author

Not sure how to explain those results as the CI is failing every time on the be-1 https://ci.nodejs.org/job/node-test-commit-plinux/. For recent runs: red is be-1, green is be-2

@mhdawson
Copy link
Member Author

be-2 is still gcc 4.9 though, so if the run you launched there is would have been ok.

root@test-osuosl-ubuntu1404-ppc64-be-2:~# gcc --version
gcc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

@mhdawson
Copy link
Member Author

mhdawson commented Nov 30, 2017

I think it is most likely related to multilib so I guess I'll try re-installing g++-4.8-multilib as done by the ansible scripts.

@mhdawson
Copy link
Member Author

apt-get told me it was not installed, and it installed 2 new packages. Testing out a build now on be-1

@mhdawson
Copy link
Member Author

Seems to have resolved the issue when testing from the command line. Will re-enable in CI and kickoff some tests to validate there.

@mhdawson
Copy link
Member Author

mhdawson commented Nov 30, 2017

@mhdawson
Copy link
Member Author

Job passed, so re-installed seems to have resolved.

@refack you reverted because of some issues with libuv, is there a CI job I should run on be-1 to validate that side is now ok as well ?

@mhdawson
Copy link
Member Author

I'm guessing it is libuv-test-commit-linux, running that now

@mhdawson
Copy link
Member Author

@mhdawson
Copy link
Member Author

libuv ran passed. @refack anything else I should check before updating be-2 in the same way. It seems to still have the 4.9 compiler.

@refack
Copy link
Contributor

refack commented Nov 30, 2017

https://ci.nodejs.org/view/All/job/node-test-commit-v8-linux/, but I see you covered that.

@mhdawson
Copy link
Member Author

@refack ok thanks.

@refack
Copy link
Contributor

refack commented Dec 1, 2017

BTW I found Ben's comment about compatibility: nodejs/node#13466 (comment) (mentioned in #762)

@mhdawson
Copy link
Member Author

mhdawson commented Dec 1, 2017

Ok, don't see any failures on be-1 today, will plan to revert to 4.8 on be-2 on monday

@mhdawson
Copy link
Member Author

mhdawson commented Dec 4, 2017

Reverted be-2, local compile test was ok, running CI now https://ci.nodejs.org/job/node-test-commit-plinux/nodes=ppcbe-ubuntu1404/13674/

@mhdawson
Copy link
Member Author

mhdawson commented Dec 5, 2017

Created test-osuosl-ubuntu14-ppc64-le-3 for use in testing new ansible scripts/install of both 4.8 and 4.9 compilers at the same time.

@seishun
Copy link
Contributor

seishun commented Jan 4, 2018

@mhdawson what's the status of this? I assume dropping CI for BE is covered in #1068, but LE still uses an outdated compiler: https://ci.nodejs.org/job/node-test-commit-plinux/14374/nodes=ppcle-ubuntu1404/

@mhdawson
Copy link
Member Author

mhdawson commented Jan 4, 2018

@jBarz is working on validating a dual compiler config for the power machines, getting him access in #1032. With the holidays it is stretching out a bit longer than expected.

@mhdawson
Copy link
Member Author

mhdawson commented Feb 9, 2018

Making progress, landed new ansible scripts for PPC le, still need to roll out to all of the machines.

@mhdawson
Copy link
Member Author

This is complete, closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants