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

v8 5.8.48 #9343

Closed
wants to merge 1 commit into from
Closed

v8 5.8.48 #9343

wants to merge 1 commit into from

Conversation

oaleynik
Copy link

  • Have you followed the guidelines for contributing?
  • Have you checked that there aren't other open pull requests for the same formula update/change?
  • Have you built your formula locally with brew install --build-from-source <formula>, where <formula> is the name of the formula you're submitting?
  • Does your build pass brew audit --strict <formula> (after doing brew install <formula>)?

This defaults v8 to 5.8.48, targets d8 only and allows build latest HEAD with --HEAD option

Based on: https://github.com/pinepain/homebrew-devtools/blob/master/Formula/v8%405.7.rb

@oaleynik oaleynik changed the title v8: update to 5.8.48 v8 5.8.48 Jan 27, 2017
@nijikon
Copy link
Contributor

nijikon commented Jan 28, 2017

@BrewTestBot test this please

@nijikon nijikon added the CI-requeued PR has been re-added to the queue label Jan 28, 2017
@mathiasbynens mathiasbynens mentioned this pull request Jan 28, 2017
cd output_path do
lib.install Dir["lib*"]
bin.install "d8"
end
Copy link
Contributor

@mathiasbynens mathiasbynens Jan 28, 2017

Choose a reason for hiding this comment

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

👍

Could even do bin.install "d8" => "v8" IMHO. The v8 shell in the code base is just an example with little real-world use — d8 should be used instead. But it makes sense to give it a more appropriate name (just like "ch" => "chakra" when installing brew install chakra).

Copy link
Author

@oaleynik oaleynik Jan 28, 2017

Choose a reason for hiding this comment

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

@mathiasbynens can I amend this commit and force push to the branch? Or it is ok to have two commits? I see there is a rule of atomic commits: one commit - one formula, one formula - one commit. So want to make sure.

Copy link
Author

Choose a reason for hiding this comment

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

Indeed. I've been going to make that (d8 => v8), but was not sure is it ok :)

Copy link
Contributor

Choose a reason for hiding this comment

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

Since GitHub supports squash-and-merge nowadays, I’d assume Homebrew core devs are fine with either. Not sure though

Copy link
Author

Choose a reason for hiding this comment

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

@mathiasbynens pushed as separated commit. I can change it if will be needed :) Thanks for suggestion!

@pinepain
Copy link
Contributor

5.8 breaks BC with 5.1 which is default now. Maybe let's use versioned formula -v8@5.8?

@pinepain
Copy link
Contributor

To clarify: v8 releases doesn't follow semantic versioning at all: it even breaks BC in path releases, which happens on everyday basis, with php-v8 I track v8 changes to public API almost on everyday basis. If there are packages who depends on default v8, they may stop working. Also, prior to 5.6 (or 5.7?) you had to build your binaries with v8 static lib, which is not necessary nowadays as v8 build complete dynamic library.

I'd suggest just bring my v8@5.7 in, update it patch version to lkgr (last known good release) and creage v8@5.8 from it with lkgr patch version. Later default v8 could be phased out when in will be out of use (it could be tracked with homebrew build-in analytic and bintray downloads statistic).

P.S.: Apart of that - 👍, thanks for bringing it up!

@mathiasbynens
Copy link
Contributor

Versioning is being discussed here: Homebrew/brew#620

@pinepain
Copy link
Contributor

@mathiasbynens I'm aware of, thanks. Do you think it would be better to move further discussion about this PR BC & versioning there?

@mathiasbynens
Copy link
Contributor

@pinepain Thanks for your work on creating and maintaining V8 formulae!

My comment wasn’t aimed at you specifically — it was meant as a useful remark for anyone reading this thread now that you’ve brought up versioning.

Do you think it would be better to move further discussion about this PR BC & versioning there?

@ilovezfs already said as much, so yeah :) FWIW your proposal sounds 👍 to me.

@pinepain
Copy link
Contributor

pinepain commented Jan 28, 2017

For further readers, about versioning in homebrew - http://docs.brew.sh/Versions.html.

@mathiasbynens got it, good remark, thank you. Last time @ilovezfs opened my eyes with poiting to that discussion which i somehow missed. I originally asked here as last time i brought the issue about v8 versioning it come up that no one was interested in that and that that time versions repository, which is deprecated now, had a strict rules about number of versions to support.

Will bring it up there and create few PRs if we come up to some decision.

As to exposing d8 as v8, I'd rather symlink or create some proxy script (see my note on diff).

@pinepain pinepain mentioned this pull request Jan 28, 2017
6 tasks
@pinepain
Copy link
Contributor

This defaults v8 to 5.8.48, targets d8 only

@oaleynik Does this formula builds all necessary headers and libs so that other devs can reuse it, or it d8 only, as you originally wrote?

If it d8-only, it limit it usage significantly and definitely breaks BC, at this time at least php{5x,7x}-v8js formulae depends on it.

@oaleynik
Copy link
Author

@pinepain it is d8 only. Intent is to have easy way for developers to check newest features in different JavaScript engines. It can make sense to create v8-shell formula which exposes d8 as v8 only.

Ref: mathiasbynens/todo#17

@oaleynik
Copy link
Author

IMHO for me it feels that v8 formula should reference latest stable V8. At least I would expect to get latest V8 if I run brew install v8

@pinepain
Copy link
Contributor

@oaleynik 👍, one day it would be this way, but nowadays it may or even will unnecessary break things we may not even aware of. I'd suggest to go with some v8-shell@x.y which would depend on v8@x.y and expose d8 binary as v8 (see my note about ICU data file) or with version-independent v8-version which would expose/switch current d8/v8.

FTR, latest stable is 5.6, not 5.8.

@oaleynik
Copy link
Author

The idea is to have the way to check latest features. Not use the latest stable version. But I agree that v8-shell would be better as it clearly indicates what it exposes.

@pinepain
Copy link
Contributor

@oaleynik I would also to have latest feature =), but v8 releases pop up almost every hour, sometimes even more often. You may want to build them with --head, or ask google v8 folks to package every it build for homebrew (if you will, ask please to build for ubuntu/debs and for centos/rhel families, internet won't forget that 😃). I'd prefer not to add --head option to version at this time, mostly because it's a bit cumbersome to get latest patch release version, but I will try to get it with x.y-lkgr, which should be far more enough for vast majority cases, normally lkgr is just a few patch versions behind (read, few hours behind).

So will you be OK if I just PR my formula to homebrew-core (sure, adjusting to 5.8)? Then you can go with simple v8-shell (though, I'd suggest to make it versioned, v8-shell@x.y to prevent any misunderstandings or go with some d8 version switcher when multiple v8 versions installed).

@oaleynik
Copy link
Author

@pinepain I agree with either. IMHO, before installing anything I would know what I need (dev deps or shell or whatever...) so I don't see an issue with having up-to-date version of V8 under v8 formula. On the other hand, I think it will be correct to have formula named after its intent - v8-devel, v8-shell, etc.. too.

@pinepain
Copy link
Contributor

@oaleynik have you looked what formulae depends on v8? Note, that homebrew-core is not the only tap, it is just a default one. Without being sure that nothing will be broken, I would not recommend to upgrade this core formula. Also notice, that because of internal changes to v8, js code run withing different v8 versions may provide different result, so if any depend on v8 formula, they may be very surprised, but I would count just direct dependencies as the latter one is is incidental dependency and undetectable from out position.

P.S. having --head for 5.8 is really cumbersome as there is not lkgr yet, maybe it will be referenced later.

@oaleynik
Copy link
Author

oaleynik commented Jan 28, 2017

@pinepain in homebrew-core I see just one package which depends on v8 https://github.com/Homebrew/homebrew-core/blob/0e6b8fcf56ca7976b1ae8489323771fed4e6813a/Formula/gjstest.rb

and one which has v8 as optional:
https://github.com/Homebrew/homebrew-core/blob/496e1baa572036290610551bb7f5db19a87e27f0/Formula/uwsgi.rb

I'm not sure about all the taps around

@pinepain pinepain mentioned this pull request Jan 28, 2017
4 tasks
@MikeMcQuaid
Copy link
Member

oaleynik commented 22 hours ago • edited
@pinepain in homebrew-core I see just one package which depends on v8 https://github.com/Homebrew/homebrew-core/blob/0e6b8fcf56ca7976b1ae8489323771fed4e6813a/Formula/gjstest.rb

and one which has v8 as optional:
https://github.com/Homebrew/homebrew-core/blob/496e1baa572036290610551bb7f5db19a87e27f0/Formula/uwsgi.rb

I'm not sure about all the taps around

As long as we don't break these I'm fine with updating the V8 version here.

sha256 "487f2ca72096ee27d13533a6dad2d472a92ba40ef518a45226f19e94d4a79242" => :el_capitan
sha256 "dc9af3e08eda8a4acd1ff3c6b47a4c5170a92dbab7d2d79958a14d8aa42eefac" => :yosemite
sha256 "7bcd1bbd66c11305eeea0c36ca472de8a639f511abe0909c8815b1208dbce7b6" => :mavericks
end
Copy link
Member

Choose a reason for hiding this comment

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

Leave this as-is, it'll be updated when we merge.

@pinepain
Copy link
Contributor

pinepain commented Jan 29, 2017

@MikeMcQuaid this PR is fundamentally broken, not even mention that it breaks dependencies (not only listed one). So please, don't even consider to merge it.

I would vote to use my PR #9392 which also provides working d8 (d8 from this PR won't work properly because of how ICU data file loaded by default, in referenced PR I patched that).

@MikeMcQuaid
Copy link
Member

@MikeMcQuaid this PR is fundamentally broken, not even mention that it breaks dependencies (not only listed one).

@pinepain It may be but it can be improved. I'll comment on your PR.

@pinepain
Copy link
Contributor

@MikeMcQuaid sure it could be, but even if we copy the formula from my PR we can't do such update in v8 formula itself as it will break all deps. V8 changed significantly between 5.1 and 5.8 in many aspects, from breaking API/ABI to building process.

@MikeMcQuaid
Copy link
Member

as it will break all deps

We should try to fix these deps and report issues to upstream projects. In this PRs case it only seems to break a single formula.

@pinepain
Copy link
Contributor

@MikeMcQuaid this PR drop all .dylib building, so any deps won't work with it. As well as relocating d8 will lead to semi-working shell (see my comments above). Also, as you mentioned, 5.8 is not a stable (5.6 is). But @oaleynik interested in having latest v8 shell with latest ES features, if I get it right. While I'm absolutely for this changes, I'd rather keep them in a separate version, like I submitted.

We should try to fix these deps and report issues to upstream projects
it might take from weeks to months, as a lot of changed in V8 API between 5.1 to 5.8 (I work with V8 actively since 4.8).

@MikeMcQuaid
Copy link
Member

it might take from weeks to months, as a lot of changed in V8 API between 5.1 to 5.8 (I work with V8 actively since 4.8).

That's fine. That's our typical process for major upgrades like this.

@MikeMcQuaid
Copy link
Member

this PR drop all .dylib building, so any deps won't work with it.

We should continue to build dylibs or have dependencies build statically.

@pinepain
Copy link
Contributor

pinepain commented Jan 29, 2017

OK, let's sum up what we want to achieve:

  • do we want to upgrade v8 to 5.8 in this formula?
  • do we want to upgrade v8 to just a stable version?

P.S.: 5.8.48 or 5.8.60 doesn't matter at all as v8 releases pop up few times a day.

FTR: https://omahaproxy.appspot.com/ shows what v8 version considered as a "stable". Effectively stable for v8 means that it is inclued in stable chrome build and not that it stable by itself.

@MikeMcQuaid
Copy link
Member

If we upgrade v8 it should be to a stable version. We could consider adding 5.8 as a devel block regardless.

@pinepain
Copy link
Contributor

@MikeMcQuaid could devel version be bottled? What is the main issue having v8@5.8 versioned formula?

@pinepain
Copy link
Contributor

pinepain commented Jan 29, 2017

@oaleynik ftr, I added v8@5.8 to pinepain/devtools, so if you up to give it a try, just brew tap pinepain/devtools && brew install v8@5.8. The d8 exposed as v8, the only thing you will need to do, is to add opt_bin path to your $PATH. I tested it and I guess it's what you need. Any later improvements are highly welcomed and thank you a lot for bringing the issue up! You did enormous work! I know how it time consuming to play around v8 and how many caveats does it have, so thank you one more time.

@MikeMcQuaid
Copy link
Member

What is the main issue having v8@5.8 versioned formula?

It'll have to be maintained indefinitely and it's not a stable release which is against our packaging guidelines.

@oaleynik
Copy link
Author

oaleynik commented Jan 30, 2017

@MikeMcQuaid I've cleared all the audit errors. This is my first PR to Homebrew - I've missed initially that I can't run audit on my fork (or probably I've done it wrong). Branch has been rebased over latest upstream master and all intermediary commits have been squashed. Also, I've set version to 5.6.326 which is the version of V8 used in Chrome stable. It is still possible to build from HEAD. @pinepain there is no 5.8-lgkr tag or branch for V8 FYI.

@pinepain Although I found your #9343 (comment) a bit insulting and disrespectful, which can turndown any desire to continue contributing to Homebrew - I highly appriciate all your help and suggestions. I believe that you have not had in mind any means to attack somebody or be aggressive. As I said a few comments above your concerns regarding such an optimistic update of v8 are reasonable. But I also think that having latest (well, at least stable, with an ability to build from HEAD) V8 under v8 formula will be correct as well.

I'm not at the position of making the final decision here, however I believe that all together we can find the optimal solution!

@pinepain
Copy link
Contributor

pinepain commented Jan 30, 2017

@oaleynik I'm sorry that you found it in this way, though it was targets not your personality, but the profound effect of what this changes will make on all dependencies.

It you want to contribute, just take formula from my pr, rename formula class to V8 and replace version with 5.6.326.42. If I get you right, you need working d8, if it is, that's probably what you want. Thought, it would be just a 5.6.

@pinepain there is no 5.8-lgkr tag or branch for V8 FYI.

That's true, but when it appears, I don't have to add one.

P.S.: I'm deeply sorry that you found it this way.

@pinepain
Copy link
Contributor

It'll have to be maintained indefinitely and it's not a stable release which is against our packaging guidelines.

@MikeMcQuaid yeah, makes sense, then I'll keep it in a separate tap as before.

@MikeMcQuaid
Copy link
Member

@oaleynik I'm sorry that you found it in this way, though it was targets not your personality, but the profound effect of what this changes will make on all dependencies.

Just FYI: "I'm sorry that you X" is not an apology (it doesn't imply your actions are at fault but the other person was) and I agree that there's definitely more diplomatic ways of phrasing things than "fundamentally broken". Let's all try and assume the best in each other: everyone here is trying to make Homebrew better.

@MikeMcQuaid yeah, makes sense, then I'll keep it in a separate tap as before.

If you're not going to be making your own bottles then a devel build here is probably just as good but ultimately: up to you.

@pinepain
Copy link
Contributor

pinepain commented Jan 30, 2017

To prevent further misunderstanding, I'll drop few lines in Russian.

@oaleynik Олег, я действительно не хотел ничего такого обидного написать, извини. Основная идея в первоначальном виде данные изменения реально ломает очень много чего, т.е. не просто зависимости он ломает, а даже концепцию данной формулы. d8 просто консольная утилита, к слову, довольно примитивная если сравнивать с нодой (src), в то время как основная логика здесь в динамических библиотеках, сборка которых и выхлоп собственно очень сильно поменялась. Раньше собирались статические и динамические библиотеки, но примерно в 5.4 в v8 наконец-то довернули систему сборки и статические стали ненужны. И если для зависимостей решить проблему сборки путем исключения линкования статических библиотек не есть большая проблема, то вот тот ворох изменений в API v8 вряд ли кто-то будет разгребать. Вот собственно что я и имел в виду, но изложил из рук вон плохо. Впредь я таки лучше распишу лишний раз чем просто писать "fundamentally broken".

@MikeMcQuaid:

  • Can we depends on --devel from other formula?
  • Is it ok to bump v8 version in devel?
  • Are there any chance that homebrew will bottle devel version in forseable future? Are there any discussions or some other resources where I can read.

@MikeMcQuaid
Copy link
Member

Can we depends on --devel from other formula?

We cannot. That's another good case for a separate formula in your tap (until we need it in homebrew-core).

Is it ok to bump v8 version in devel?

Yep.

Are there any chance that homebrew will bottle devel version in forseable future? Are there any discussions or some other resources where I can read.

If someone submits a PR for it: yep. There's no active plans for feature issue tracking this currently.

@stale stale bot added the stale No recent activity label May 6, 2017
@stale
Copy link

stale bot commented May 6, 2017

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

@stale stale bot closed this May 13, 2017
@Homebrew Homebrew locked and limited conversation to collaborators May 4, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
CI-requeued PR has been re-added to the queue stale No recent activity
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants