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

build: remove support for VS2015 #16969

Merged
merged 1 commit into from
Dec 12, 2017
Merged

build: remove support for VS2015 #16969

merged 1 commit into from
Dec 12, 2017

Conversation

seishun
Copy link
Contributor

@seishun seishun commented Nov 12, 2017

Refs: #16868

Previous similar PRs for the curious:
#156
#8067

@nodejs/build VS2015 needs to be removed from CI (at least on master for now. I'm not sure how "backporting" to 9.x works). Do I need to create an issue in nodejs/build for that?

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • commit message follows commit guidelines
Affected core subsystem(s)

build

@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. windows Issues and PRs related to the Windows platform. labels Nov 12, 2017
@refack
Copy link
Contributor

refack commented Nov 12, 2017

/CC @nodejs/lts for consideration whether this is semver-major or not.
Summary: it doesn't not change compatibility with native-addons (they will not need to be recompiled), but it does require users who build from source to upgrade their toolset.

@refack
Copy link
Contributor

refack commented Nov 12, 2017

/CC @nodejs/build we need to have the nightly release machine ready, and exclude VS2015 from CI.

@rvagg
Copy link
Member

rvagg commented Nov 13, 2017

@joaocgreis this one's for you, could you document any actions you take in this thread for us for future reference please?

Re semver-major, on balance I'd prefer this be done at the semver-major boundary to cause minimal disruption.

@gibfahn
Copy link
Member

gibfahn commented Nov 13, 2017

/CC @nodejs/lts for consideration whether this is semver-major or not.

I'd say it's not semver-major, but I think we should only change 9.x and up.

@joaocgreis
Copy link
Member

About semver: it doesn't apply to what we support to build (but it'd be nice if we could treat removals like this as breaking, to minimize impact for developers and custom build farms). Semver should apply to what users need to have installed on their machines to use node, but this time we are oddly safe in that because VS2015 and VS2017 are binary compatible, and for now we still support VS2015 for building native modules. Still, it wouldn't be surprising to see odd issues appear after a change like this.

So @nodejs/lts my recommendation is that we do this for v10, and possibly also for v9.x but only if needed. Do we need to update V8 in v9.x to an incompatible version (6.4)? Do we know when? If we need to, having it done for v10 before will make the transition smoother.

I am working on the release machine, as agreed before.

Copy link
Member

@joaocgreis joaocgreis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This cannot land until the test and release infra is ready. Also, this should be treated as semver-major unless there is a strong reason not to (update V8 to an incompatible version in 9.x).

@refack
Copy link
Contributor

refack commented Nov 13, 2017

I'd argue that embedders and vendors are users, and breaking changes to the build process should be semver-major.
Equivalent to node having breakage when V8 breaks build compatibility upstream, i.e. if V8 would have communicated them dropping VS2015 support we could have pushed this change for node9.

@bnoordhuis
Copy link
Member

breaking changes to the build process should be semver-major.

I disagree. There are parallels with the centos5 debate: it's reasonable to expect your users to have an up-to-date system.

Downstream users not willing to do that can put in the work, that's not our responsibility.

@joaocgreis
Copy link
Member

Release machines ready, the next nightlies of v10 should be built with VS2017. If all goes well and no issue appears in the next few days, I'll go ahead with the modifications to the test CI required for this PR to pass CI and land.

Copy link
Member

@joaocgreis joaocgreis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Infrastructure is ready. LGTM pending CI (needs a rebase).

@seishun
Copy link
Contributor Author

seishun commented Dec 7, 2017

@seishun
Copy link
Contributor Author

seishun commented Dec 7, 2017

CI is green, landing in 24 hours.

@@ -185,20 +181,19 @@ if %target_arch%==x64 if %msvs_host_arch%==amd64 set vcvarsall_arg=amd64

@rem Look for Visual Studio 2017
:vs-set-2017
if defined target_env if "%target_env%" NEQ "vs2017" goto vs-set-2015
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line should not be removed, it'll be needed again when we add a new VS version.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would need to be changed now anyway. And when we add a new VS version, it will need to be changed again. I'd rather remove it now and add it back if and when it's needed than keep a useless line around for likely at least a year.

That said, I don't really mind either way. If anyone else feels strongly about it, I'll put it back.

FWIW it was also removed in #8067.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A new version would go on top, so it would stay the same if changed now. I'd rather these blocks behaved more atomically, and I see this as part of the vs2017 parameter. But it works either way, feel free to go ahead.

@refack
Copy link
Contributor

refack commented Dec 7, 2017

I disagree. There are parallels with the centos5 debate: it's reasonable to expect your users to have an up-to-date system.

Downstream users not willing to do that can put in the work, that's not our responsibility.

AFAIR the push to stop supporting centos5 was because it went EoL, and that's why we added the platform EoL disclaimer - #12672

IMHO we should minimize breaking build flow, unless there's a good reason to. In this example if we want to bump V8 to 6.4 in node9. Until then I'm Ok with landing this as is with the don't-land-on-X labels.

@BridgeAR
Copy link
Member

@seishun this needs a rebase

@seishun
Copy link
Contributor Author

seishun commented Dec 10, 2017

New CI due to rebase: https://ci.nodejs.org/job/node-test-pull-request/12030/

PR-URL: #16969
Refs: #16868
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: João Reis <reis@janeasystems.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build Issues and PRs related to build files or the CI. windows Issues and PRs related to the Windows platform.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants