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

CentOS 6 Update + devtoolset-6 option #1223

Closed
wants to merge 7 commits into from
Closed

CentOS 6 Update + devtoolset-6 option #1223

wants to merge 7 commits into from

Conversation

rvagg
Copy link
Member

@rvagg rvagg commented Apr 10, 2018

Trying again with a new version of my last CentOS 6 PR. This one includes most of those changes but takes a slightly different approach to a few things.

Most notably, it includes devtoolset-2 and devtoolset-6 and doesn't include them in the PATH anywhere.

Instead, what I've done is given the two workers "centos6-64-gcc48" and "centos6-64-gcc6", assigned both labels to node-test-commit-linux and included this in the VersionSelectorScript:

  if (buildType != 'release' && builderLabel == "centos6-64-gcc48" && nodeMajorVersion >= 10)
    return false
  if (buildType != 'release' && builderLabel == "centos6-64-gcc6" && nodeMajorVersion < 10)
    return false

Unfortunately that's not enough so I've also edited Jenkins so it makes the PATH adjustments (note that this is for all Linuxes so it has to be generic too):

exec_cmd=" \
  NODE_TEST_DIR=${HOME}/node-tmp \
  PYTHON=python \
  FLAKY_TESTS=$FLAKY_TESTS_MODE \
  make run-ci $MAKE_ARGS \
"

if test $nodes = "centos6-64-gcc48"; then
  exec_cmd=". /opt/rh/devtoolset-2/enable; $exec_cmd"
elif test $nodes = "centos6-64-gcc6"; then
  exec_cmd=". /opt/rh/devtoolset-6/enable; $exec_cmd"
fi

sh -c "$exec_cmd"

(the previous version just executed the command directly)

And it's working nicely in ci now. Node master (10+) compiles with gcc6, everything else with gcc4.8.

ci-release hasn't been done yet, it probably needs exactly the same treatment.

@seishun

@rvagg
Copy link
Member Author

rvagg commented Apr 10, 2018

Oh yeah, and I also included a way to upgrade git on here, so they're running git 2.16 instead of 1.17 and I'm hoping this will clear up some more of those Jenkins git clone errors that appear sometimes. Debian 8 would be the remaining troublemaker so I'll have to figure out a git upgrade for that next.

@rvagg
Copy link
Member Author

rvagg commented Apr 10, 2018

so .... https://ci.nodejs.org/job/node-test-commit-linux/17808/nodes=centos7-64/ ... it looks like I need to do the same thing to CentOS7 eh @seishun?

$ ssh test-softlayer-centos7-x64-1 gcc -v
...
gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)

@seishun
Copy link
Contributor

seishun commented Apr 10, 2018

A commit that requires gcc 4.9 successfully builds on CentOS 6 again: https://ci.nodejs.org/job/node-test-commit-linux/17808/nodes=centos6-64-gcc6/

it looks like I need to do the same thing to CentOS7 eh @seishun?

Correct, CentOS 7 requires an upgrade too. I intended to work on that once #1034 is resolved.

@rvagg
Copy link
Member Author

rvagg commented Apr 11, 2018

OK, I've implemented some of the same changes for CentOS 7

  • manual SCLo repo setup for arm64
  • setup via centos-release-scl.rpm for x64
  • devtoolset-6 from SCLo
  • IUS repo setup for x64 to get latest git
  • no IUS for arm64 (aarch64) unfortunately so I don't yet have a way to get an updated git so it's stuck on 1.8

I've updated the VersionSelectorScript to choose between /centos[67]-(arm)?64-gcc(48|6)/ for <10 & >=10 and updated the hosts with those labels (duplicate for each of them) and included them in the jobs. Then in the Jenkins script for node-test-commit-linux I now have:

if test $nodes = "centos6-64-gcc48"; then
  exec_cmd=". /opt/rh/devtoolset-2/enable; $exec_cmd"
elif [[ "$nodes" =~ centos[67]-(arm)?64-gcc6 ]]; then
  exec_cmd=". /opt/rh/devtoolset-6/enable; $exec_cmd"
fi

i.e. centos6 uses devtoolset-2 to get gcc4.8, centos7 has it natively, but they both use devtoolset-6 to get gcc6

And node-test-commit-arm, which is already doing Debian selection for Node version, has been amended to have the second rule since it only has centos7:

  if [[ "$nodes" =~ centos[67]-(arm)?64-gcc6 ]]; then
    exec_cmd=". /opt/rh/devtoolset-6/enable; $exec_cmd"
  fi

Running master and v8.x on them both now and I have submitted a rerun of @seishun PR with gcc 4.8 incompatible c++ @ https://ci.nodejs.org/job/node-test-commit/17630/

@seishun
Copy link
Contributor

seishun commented Apr 11, 2018

@rvagg
Copy link
Member Author

rvagg commented Apr 11, 2018

Yeah, it did work, https://ci.nodejs.org/job/node-test-commit-linux/17849/nodes=centos7-64-gcc6/

After that run I realised I didn't remove the centos7-64 label when I added in both centos7-64-gcc48 and centos7-64-gcc6. So the job you're linking to was just a vanilla centos7, same configuration as centos7-64-gcc48 which shouldn't have run. It was removed after that run.

Here's your PR again https://ci.nodejs.org/job/node-test-commit-linux/17861/

@rvagg
Copy link
Member Author

rvagg commented Apr 11, 2018

FYI the only genuine failure remaining in that PR is aix61-ppc64, the other failures are all the same flaky which is currently being fixed in master. So we're close.

@rvagg
Copy link
Member Author

rvagg commented Apr 11, 2018

Made this work against centos6 release machines, it took a bit of tweaking, however. Unfortunately there's no official devtoolset-6 from SCLo for x86 so I had to use someone's custom build in Copr https://copr.fedorainfracloud.org/coprs/mlampe/devtoolset-6.1/

Latest nightlies were rebuilt with this config, https://nodejs.org/download/nightly/v10.0.0-nightly2018041142d8976dff/ and I've requested testing @ nodejs/node#19091 (comment) but I don't imagine there's going to be many people using testing & nightly builds with older Linuxes.

@seishun
Copy link
Contributor

seishun commented Apr 11, 2018

Made this work against centos6 release machines, it took a bit of tweaking, however. Unfortunately there's no official devtoolset-6 from SCLo for x86 so I had to use someone's custom build in Copr https://copr.fedorainfracloud.org/coprs/mlampe/devtoolset-6.1/

Didn't we decide to drop 32-bit Linux builds? #885

@rvagg rvagg closed this Apr 13, 2018
@rvagg rvagg deleted the rvagg/centos6 branch April 13, 2018 04:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants