-
-
Notifications
You must be signed in to change notification settings - Fork 11.3k
Conversation
Ugh. Devel-only? This is the kind of thing that makes me really frustrated with homebrew -- this is the most stable release of iojs; it's not like a bleeding edge release that will supersede another, more stable one. |
As long as this is a stable release then that's fine. I'm curious about the "beta" tag, but 1.0.0 is a relatively unambiguous number. |
78df17c
to
fe03990
Compare
The API won't change; there may be bugs. This is true of all stable software. |
Added conflict markers and based the formula off of node current |
@aredridel You may want to add a message to the conflicts_with, e.g.:
|
Yeah, I'd love to remove the conflicts when it doesn't conflict. Incremental progress is an option! But if you ask around nobody can define what |
v1.0.1 and note about conflict. |
Thanks! |
As most of code is identical as the
etc. |
cd986c1
to
ceab7c9
Compare
|
||
# This should eventually be able to use the system icu4c, but right now | ||
# it expects to find this dependency using pkgconfig. | ||
if build.head? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. The handling of icu stuff is very tightly managed to keep the size of the node binary down.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some details here, from a formula I made for the nightly: smockle-archive/homebrew-iojs@7ebfaf6#commitcomment-9251951.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, mostly or entirely. The most recently changed are the most likely to be different of course.
|
||
conflicts_with "node", :because => "io.js includes a symlink named node for compatibility." | ||
|
||
bottle do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, awesome. Will do for future new formulae then.
Is there a way to have a formula depend on one of two formulas? I'd love to make npm depend on node or iojs |
Oh! that explains why I got the error I did. I thought it was just "npm requires node, you have iojs installed" but it's aliased and saying "No, node conflicts with iojs" |
Another thing we may want to consider: adding a symlink from /Library/Aliases/io.js to /Library/Formula/iojs.rb. Since some people may try |
Yeah. Long-term, I'd like to make them not conflict -- the way io.js is handling this is to only install the node symlink if node is not present. Weird, but does what people intend mostly; may need tweaking of the concept for homebrew. |
@DomT4 Isaac Schlueter, founder of npm, Inc. blogged about npm's commitment to io.js and node:
That's not the exhaustive test you describe, but it at least says something about the npm project's intentions. |
@DomT4 Would running npm's tests (https://github.com/npm/npm/blob/master/Makefile#L227-228) on supported operating systems with both node and io.js be sufficient? |
How install iojs formula and npm together? |
What if users want to install something that requires A lot of these similar arguments are (and have been) made about Again, I'm open to gradually improving this situation once this gets included. What I'm worried about is it gets included at we get even more issues due to users being confused when things break and we're in a situation where we can't really revoke it. @jacknagel Any thoughts on any of this? |
On a purely technical point, if Homebrew did include If it goes in |
Could we env-script it? |
My two cents as no one in particular, who develops web apps on Node: While I'd like to try out IO.js, I'm not really interested in anything that would break my standard Node.js development setup. Most devs I know use bower, grunt, gulp, or similar tools that all use node. So the only way this package will see much use (in my opinion), will be if it can be installed alongside the current Node.js. So, without taking over the |
@tdsmith For
Even after using the script and successfully moving the |
I think keg-only is a useful starting point and nicer than conflicts_with. I agree with Misty that providing a npm solution seems important. Do iojs and node proper have different default module search paths or will iojs look in e.g. /usr/local/node_modules? If we don't need to separate the package libraries for node and iojs immediately, maybe we just recommend that users install node to get npm. CLI scripts will be invoked with node; presumably that's okay for the near term. If we do want to separate the iojs and node package libraries and CLI scripts and we can't do anything to control the shebangs of the CLI scripts that npm writes for the packages it installs, integrating npm this way will be more challenging. FWIW, I wish that python, python3, and system Python didn't all attempt to write CLI scripts to HOMEBREW_PREFIX/bin. Using a path like |
npm's responsibility ends at making sure that the links to package scripts are set up properly during install -- the shebang lines in the individual scripts shipped by packages are the responsibility of the package developers. It would be a nontrivial change to modify npm to rewrite shebang lines by default (except on Windows, which uses the Speaking as the npm CLI team lead, we draw no distinction between joyent/node and iojs/io.js. We support them both equally. npm, Inc. is not using iojs in production -- yet -- but if iojs users encounter difficulties using npm with iojs, we will treat them as seriously as issues using npm with node. As far as we're concerned, if Homebrew offered a Debian-like Speaking as myself, a longtime Node user, making iojs a keg-only link by default seems backwards. Developers are curious about iojs -- because it has a new V8, it has many features from the draft ES6 standard, it includes the API changes that have been in the long-under-development 0.11 node -- and they want to play with it interactively. Were I to have both installed side-by-side using Homebrew, I'd want node to be the keg-only install used by grunt, bower, etc, and iojs the tool that gets fired up when |
Doing a little test now to see if we can plonk them in separate directories so at least the libs don't clash. Since we handle the Edit - It didn't work. I'll try a new angle.
Agree with this so very much. If we had more control over where things were scripted into, it would make life a lot easier in terms of reducing conflict, potential break-points, etc. One day, one day.
This gives me an idea. Give me like... an hour.
Sadly, this would be a bit of a nightmare to implement at this point in time. It would mean a recompile of everything that shows up under the
I don't think this is impossible, but it would be a major shift from Homebrew's current way of handling conflict. In many ways, Debian's alternatives mechanism is almost a package manager inside a package manager. Someone would probably have to be lovely and port it to Ruby as well 😉. |
Closes Homebrew#35853. Signed-off-by: Misty De Meo <[email protected]>
Well, that took longer than an hour. But I've pushed an alternative implementation for discussion in #36039. I considered dumping it in a Gist or something, but if maintainers want to compare the ideas and test them locally and such it's easier to have two PRs to play with instead of one PR, one Gist, or similar. It fits in with @tdsmith's ponderings further up, which I kinda rolled into my own and went to town. There are probably some choices I've made there that will confuse the heck out of people. Feel free to dump questions on my doorstep and I'll do my best to explain. The implementation isn't perfect, It isn't pretty, It isn't elegant. It is more "Hmm, here's an idea" than it is "This is how we should do this". |
This made me curious - though I'm well aware that 'tap's can change this dynamic, I would note that
Just in case that's something that factors into anyone's consideration (and do correct me if that's the wrong list - |
Yeah, It's not a huge list right now - At least, that we're aware of. There would also have to be small changes to Homebrew's core in addition to any formulae changes, particularly around language_modules referencing 3 is tricky, but at least is relatively easy to test. IMO, and this is IMO, it is a little premature to talk about effectively replacing Node as the default Node-esque formula just yet. It requires a chunk of work, both here and potentially by upstream devs - and I'm not 100% sure there's a firm demand to kill Node off as a default completely just yet. I kinda live in fear that Homebrew makes these big changes and then get pounded by issues asking what on earth Homebrew has done, heh - Most users won't even see or join these discussions, sadly. But anyway, that last paragraph is a subjective thing, and evidently from previous posts opinions lead to people getting snapped at and thus, I'd be happier keeping the discussion more technical. If the maintainers want to talk popularity, that ain't my ballgame to field. |
I think where I'm at now:
|
What problem is having 'npm' not be installed by iojs solving? If it's the duplication with node, why not just factor that into another file and include it? Can mix in ... |
It's partly the duplication with |
LOL this discussion is hilarious. Just a thought @MikeMcQuaid, but why not have each package being installed individually and have iojs symlink to node only if the symlink doesn't already exits. After all, npm is not part of node, and since npm doesn't differentiate between iojs and node, it shouldn't install node then. However, if there is no iojs or node, then npm installs iojs (because npm's lead developer said he rather have npm running on iojs by default) I can not see this situation being fixed without touching all 3 packages in some way. Botton line, the nodejs, npm and io.js situation is quite unique and so is the solution to this conundrum. |
I agree. Unless @Homebrew/owners object though I think we'll go with the solution I've specified above until |
If you're proposing moving to shipping an
Various implementations discussed are It's just trying to find the balance between convenience and not causing users or the maintainers here endless pain I guess 😸. |
Going back to @othiym23’s comment
I agree the proposal to cripple the
That is stopping |
Let's stop the conversation here, please. No-one is crippling anything. The way |
Merged the version in #36193 which met the requirements I'd mentioned previously. Well done to @bcomnes, @DomT4 and @aredridel for all contributing parts to get this merged. To some people in this thread and those who have indulged in namecalling on Twitter: consider whether your actions helped motivate or demotivate the Homebrew maintainers (all of whom work in their spare time for free, I've personally been on vacation away from home for the majority of this thread) to work on fixing issues that may arise in future with iojs. |
No description provided.