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

Node v0.12 & io.js support. #4955

Merged
merged 1 commit into from
Mar 9, 2015
Merged

Node v0.12 & io.js support. #4955

merged 1 commit into from
Mar 9, 2015

Conversation

halfdan
Copy link
Contributor

@halfdan halfdan commented Feb 26, 2015

fixes #4811, refs #4240


This adds io.js and node v0.12 to the build matrix and upgrades dependencies to support these versions. io.js can for now only be tested with v1.2.0 as pre-built binaries for node-sass aren't available for v1.0/v1.1/v1.3 (https://github.com/sass/node-sass-binaries/).

@@ -46,7 +46,8 @@ GhostServer.prototype.closeConnections = function () {

GhostServer.prototype.logStartMessages = function () {
// Tell users if their node version is not supported, and exit
if (!semver.satisfies(process.versions.node, packageInfo.engines.node)) {
if (!semver.satisfies(process.versions.node, packageInfo.engines.node) &&
!semver.satisfies(process.versions.node, packageInfo.engines.iojs)) {

This comment was marked as abuse.

@halfdan halfdan mentioned this pull request Feb 27, 2015
@ErisDS
Copy link
Member

ErisDS commented Feb 27, 2015

Just so I'm fully understanding, what's the WIP part of this PR? Are we waiting for node-sass?

Also - I know it's just the way it's gotta be - but sheeeeesh is that a big build matrix!

@halfdan
Copy link
Contributor Author

halfdan commented Feb 27, 2015

WIP is regarding the comment I added. The line checks for the iojs version as defined in package.json. However if node at some point reaches v1.2.0 this will also match (as I don't see a way to distinguish between the two).

What this PR adds is a v0.12 and iojs-v1.2.0 build (only iojs-v1.2.0 can be tested as node-sass only provides prebuilt binaries for this version).


  • Can we support v0.12: yes.
  • Can we support iojs: Maybe. Since node-sass is only a development dependency that is not installed for production use (e.g. with the .zip download), Ghost will run with any iojs version. Installing Ghost with dev dependencies in iojs != v1.2.0 will fail because of the missing prebuilt binaries for node-sass.
0.10 0.12 iojs-v1.0.0 iojs-v1.1.0 iojs-v1.2.0 iojs-v1.3.0
Tested on Travis y y n n y n
Runs (w/ prebuilt assets) y y y y y y

@JohnONolan
Copy link
Member

I'm starting to get really sick of SASS getting in the way of you guys - it's becoming more of a hinderance than a help to everyone, given how little ongoing SASS work there actually is. @PaulAdamDavis ... dare I say it - but maybe we should consider using something else entirely? <can-of-worms>

@framerate
Copy link

I believe the problems with node-sass have been rectified on their end, right? Or are their new problems? My build stack for my company got fixed a few weeks ago (node-sass and grunt-contrib-sass I believe we the breaking factor)

@ErisDS
Copy link
Member

ErisDS commented Mar 6, 2015

However if node at some point reaches v1.2.0 this will also match (as I don't see a way to distinguish between the two).

Can we assume that this problem will be fixed by someone else before that happens? i.e. there'll be a standard way to do it?

Can we support iojs: Maybe. Since node-sass is only a development dependency that is not installed for production use (e.g. with the .zip download), Ghost will run with any iojs version. Installing Ghost with dev dependencies in iojs != v1.2.0 will fail because of the missing prebuilt binaries for node-sass.

So the issue is, if people trying to build Ghost try to use a version of iojs we don't support, they're going to have pain? If so, we can make sure we include compatibility notices in the readme etc & other than that it's up to developers to get it right?

Ideally, I'd like to get this in before the next release, and I'd like that next release to be some time next week ;)

@halfdan
Copy link
Contributor Author

halfdan commented Mar 6, 2015

@framerate Yes and no. node-sass provides prebuilt binaries for v0.10 and v0.12 and iojs-v.1.2.0 - however not for other minor iojs versions. This means that users would have to build the package themselves which requires a few other dependencies and doesn't seem to be an easy task.

@ErisDS

Can we assume that this problem will be fixed by someone else before that happens? i.e. there'll be a standard way to do it?

Hopefully this will be resolved by npm - there are similar discussions going on over at io.js and express on how to handle engine compatibility.

So the issue is, if people trying to build Ghost try to use a version of iojs we don't support, they're going to have pain? If so, we can make sure we include compatibility notices in the readme etc & other than that it's up to developers to get it right?

Correct. As mentioned above, for iojs versions where node-sass doesn't provide prebuilt binaries, people installing Ghost development dependencies will have to compile node-sass themselves -> Pain. Another problem is that we can't run tests on travis for iojs versions where node-sass binaries aren't available, because node-sass doesn't build there (at least not without some work to install the build dependencies there first). It may very well be possible that Ghost breaks in some future iojs version but we won't notice it unless we run the test suite locally (and go through the hassle of building node-sass).

@ErisDS
Copy link
Member

ErisDS commented Mar 7, 2015

Then I think we need to un-WIP this and merge it?

Ghost is pre-built for the majority of people, if you really want to build it and use io.js then you're going to need to pay careful attention to compatibility notices. If we release Ghost with support and find that we get too many issues with people trying to build on the wrong io.js version, then we'll drop support again until we're able to more safely detect io.js and message users when they try to do the wrong thing.

@halfdan halfdan changed the title [WIP] Node v0.12 & io.js support. Node v0.12 & io.js support. Mar 9, 2015
ErisDS added a commit to ErisDS/Ghost that referenced this pull request Mar 9, 2015
refs TryGhost#4955

- needed to build on ubuntu 14.14 with node 12 (DO image)
- barely used anyway, as release task has it disabled
@ErisDS
Copy link
Member

ErisDS commented Mar 9, 2015

@halfdan just noticed, this PR doesn't have a travis build :/

fixes TryGhost#4811, refs TryGhost#4240
- Add v0.12 to the build
- Fix express tests to work with iojs/0.12
- Add iojs-v1.2.0 to the build matrix
ErisDS added a commit that referenced this pull request Mar 9, 2015
Node v0.12 & io.js support.
@ErisDS ErisDS merged commit 45010c9 into TryGhost:master Mar 9, 2015
@martell
Copy link

martell commented Mar 9, 2015

It is a shame 0.5.9 was released 9 days ago :(
This change while quite small does alone deserve a new release tag :)
If it does in fact work as intended

@novaugust
Copy link
Contributor

@martell Not to worry; Ghost believes in a rapid release workflow. I don't think you'll be waiting too long ;)

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.

Add support for io.js
6 participants