-
-
Notifications
You must be signed in to change notification settings - Fork 78
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
Proposal: Haxelib shim #193
Comments
There have been similar discussions before but I can't find them right now. I think we agreed that the current version of selfupdate is not really sustainable, but I don't remember if there was a consensus on alternatives. |
That would be nice if people having update issues could comment on the proposed implementation |
@jgranick could you confirm on which system you have been testing the changes ? |
I have successfully used this on both my Linux VPS and my Windows system, I will check Mac now |
It worked perfectly on the Mac as well |
I added build instructions to the README https://github.com/jgranick/haxelib-shim/blob/master/README.md |
What about the distinction of system-wide and per-user installs and upgrades respectively? |
I like the general idea but I'm not sure about the concrete implementation. There are some path conventions going on there (if file x exists do this, else do that) which I was hoping would be something we back away from. We should give this some more thought and aim for inclusion in the Haxe 3.3 release. |
March 2015: Haxe 3.2.0 (currently release candidate) Seems that there's about a 1-year release cycle on Haxe. If we wait until 3.3 does that mean it will take another year before this feature becomes available? That's a bit long in my opinion. |
It has haxelib's same logic |
As someone who had to manually help the I'd even go a little bit further and make And for the implementation itself and the way it finds the haxelib folder, seems good to me. @larsiusprime +1 |
Thanks, I will look into this now. We've still got one week until 3.2.0 final, the way I understood it. |
Yes but let's not do this for 3.2.0, this really isn't the kind of change you make between RC and release. I'm not opposed to making another 3.2.x release in a couple of weeks once we have a bit more data on this than "it works on Joshua's computer". |
@Simn in general I would agree with you, but it seem many people have had issues updating haxelib, so if we ship the current one with 3.2.0-final and it can't be updated, it means people will be stuck with it until 3.3 (or longer if they don't update to 3.3 immediately). I think we should make sure the update works well, then we can do all the necessary changes post 3.2 and people will be able to update haxelib independently from Haxe |
That's why I said I'm not opposed to making another dot release in a couple weeks. I find this change too drastic to just implement it over lunch. It might very well break more than it fixes and then I'm the idiot release manager who let something like this in a stable release. |
@Simn release is a collective responsibility, don't take it as a personal one because it's not |
It's hard not to when I'm the one handling the entirety of it. I didn't really mind having the responsibility, but in combination with not having the power to make final decisions about it it's rather frustrating. So... you guys do what you think is right. I'll make the 3.2.0 release either way and then we'll see what happens. |
@Simn what I meant is that while it's your responsibility to take care of the release, don't take it a personal offense when there are broken things that were not because of your choices/actions. I can understand it can be frustrating, let's discuss our release process at WWX |
Any updates on this? We still are getting reports from users who cannot use OpenFL or Lime due to problems from older haxelib releases. Avoiding this scenario in this future (with the easy upgrade), would REALLY help. Thanks everyone |
A little feedback, I've been using it for the last 15 days, |
So... am I supposed to wait for this or not? |
I don't think so. This is just a proof of concept and I'm quite certain that it unfortunately won't live up to Joshua's enthusiasm. The build merely uses We could also work around the dependency, if all the required code were statically linked, in which case we roughly have a ~1MB binary on our hands. Which might be fine, I don't know. And even then, with xcross being covered in a thick layer of dust, I have no real idea how to actually build one. Also, this proposal assumes the presence of neko a second time, by blindly preferring neko binaries. Assuming we bundle precompiled versions of In the case of a statically linked executable, we might be able to use The general idea is valid of course. But there's still a lot of ground to cover from the status quo to a state where "The risk is very low, and something like this would forever improve the use of haxelib." So we need:
I currently lack the time to do the above to a level of quality that I would feel comfortable with, even less so with the pressure of the whole Haxe release depending on it. Making |
|
Use of the shim would allow common users to have a current version of haxelib installed. This would open the door for us to make continued efforts to improve haxelib |
Duplicate of #172? |
Not technically a duplicate, but it was solved by #291 anyway. |
Haxelib Shim
Current Problems
Many users experience problems running
haxelib selfupdate
On a Mac or Linux system, "/usr/lib/haxe/haxelib" may require elevated system privileges, and may be locked.
On Windows, running "haxe update.hxml" afterward feels messy.
Experienced developers I know do not run
haxelib selfupdate
at all -- they have never heard of it.If we make vital improvements to the Haxe package manager, we need a mechanism that allows users to receive the update.
Improvements to Development Process
There is no simple way to test changes to the Haxelib client, currently. If you could
haxelib dev haxelib_client path/to/dev/client
it could improve the workflow for improving haxelib.If more developers can contribute to haxelib, it may help prevent critical issues we have had.
Proposal
I propose that we create a shim that is able to detect updated versions of the haxelib client, and prefer those if they are available. However, I propose that it also includes a full compiled version of the haxelib, itself, which allows it run as normal if an update is not found.
Haxe always comes with a haxelib binary. Alone, the shim functions identically.
If a user would run
haxelib upgrade
and find a newhaxelib_client
library, the shim would prefer this version. The user could alsohaxelib set haxelib_client
to choose a version, they couldhaxelib dev haxelib_client
to work with a development version, or do none of these to use the original.Prototype
I have built a prototype here:
https://github.com/jgranick/haxelib-shim/blob/master/Main.hx
https://github.com/jgranick/haxelib-shim/blob/master/build.hxml
It is currently working perfectly on my system. I can
set
,dev
, orremove
each version and it responds properly.I would be happy to discuss this further.
The risk is very low, and something like this would forever improve the use of haxelib.
The text was updated successfully, but these errors were encountered: