-
Notifications
You must be signed in to change notification settings - Fork 303
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
Looking for a Maintainer for Ruby 2.2 and 2.3 releases #348
Comments
Hi, |
Hello @redcodefinal, thank you for your interest. I don't believe there is an official guide for this, but will try to cover here the requisites and the steps involved in doing a release for each version of Ruby. Bear with me on the length and also might not get all the details straight since been 2 years since last time I did one of these releases. RequisitesIn order to build the installers, you will require the following elements be installed on a clean (hopefully virus free) Windows 7+ computer:
Note: perhaps some of the points about the rdoc and rdoc_chm gem can be automated (by using Bundler and a Building an installerIn order to build a installer for an specific version, Ruby and it's dependencies must be fetched, compiled and linked. Since RubyInstaller targets both 32bits (x86) and 64bits (x64) versions, different compilers needs to be used. These version of the compilers are indicated in the DevKit version, and those needs to be used when building each version of Ruby. Say you want to build the theoretical version of Ruby 2.3.9 in both 32 and 64 bits. First, you will require to update the configuration files that define the version and update the URLs where it will grab the related package:
With all the requisites in place and the changes, you will now require to build Ruby for one of the compilers (say the 32bits one). Since Ruby 2.3 uses GCC from
This will fetch all the required source files, binaries and dependencies to setup the compiler (DevKit) and build that version of Ruby. Next, is a good practice to confirm that the obtained build works and most of the tests pass, so you will invoke the
On each upgrade/release, you will notice that links to the results in the commits, like this one: Now that you checked that it work, you will be building the installer package for that version:
Documentation using HTMLHelp and Testing the installerIs a good practice now that the installer was generated, do a clean installation to test that it works, that gems can be installed and that it doesn't blow up on first run 😄 Doing a releaseNow is time to upload the binary packages ( For this, the
Important: this requires both You can now build the same version using a different compiler, which will require you change the DevKit version. A good practice I had was trash the Update the website and perform the announcementWith binaries in place, it is now time for you to update the website. As mentioned in other issues like #346, current website is an application (not an static website) so it involves manual updating. My first recommendation will be clone the repository and take a look to the Using above and the README, try to produce a local installer and test it out. I guess that a good thing will be add this to the documentation and perhaps automate the other aspects mentioned above too, but getting your feet wet is a good start. Let us know if you have questions. Cheers. |
Here's where the fun part starts.
I think there's still a problem with
The latest InnoSetup doesn't like the format of the internationalization files we have.
|
Thank you @Azolo for the updates! Indeed lot of fun! 😁 Based on the points you mention:
|
Hello, Thank you for all of your hard work @Azolo and respect your decision and efforts to find sustainability. I just wanted to add a thing about rdoc, and I'm happy to help find a way to fix |
@zzak Thanks for the offer again! I'm going to shift the conversation over to vertiginous/rdoc_chm#7, where I added some more context. |
Hey, I got here from a tweet of Luis' https://twitter.com/luislavena/status/806555329018339328 I have a fair bit of interest in Ruby for Windows and Open source on Windows. It's not my primary dev environment anymore, but I still care about it, and I'd like to help. I've got no particular experience with building the ruby installer itself, but it's a thing I've used for actual production software, and I'd like to try to contribute back if it needs help. |
Thank you @snarfmason for showing interest. I believe the next step will be for you to confirm that details covered in this comment works on your end. |
I'll find some time over the holidays to try a build, and post back. |
I suggest taking a hard look at the current build process for
opportunities to simplify.
I don't contribute to rubyinstaller anymore and only use ruby for (a)
non-production uses, and (b) maintaining a cross-platform ruby env mgr
(https://bitbucket.org/jonforums/uru). But I do think refining the
current build recipes would ease maintainer load and enable more
timely releases.
For example,
1) I rewrote much of the Inno installer and find the Pascal syntax
tiresome to support. Consider retiring the installer in favor of .7z
archives and ruby-based installation scripts. This has serious
downstream automation and end-user implications.
2) Scrap CHM and rdoc_chm. These aren't necessary as there are good
online ruby doc sites.
3) Invest time in providing end-user documentation on how to build .7z
archives. People can then easily build the ruby patch releases as they
become available from core.
While the current build recipes could use some work, they are really
powerful. They'll download toolchains and dependencies. I added
override (e.g. - *.rb files under override/ for many uses including
using newer deps) and devkit selection (e.g. - dkver=mingw64-32-6.2.0)
capabilities. Dependencies can be built with external knapsack
recipes, artifacts on bintray, etc, etc...
For example, using overrides I build patch releases similar to the
following and never have to wait for a new rubyinstaller to be
released.
C:\Users\Jon\Documents\RubyDev\ri-git
$ rake rubyXY make_opt=-j8
local=C:\Users\Jon\Documents\RubyDev\ruby-git openssl=1.1.0c
libffi=3.2.1 libyaml=0.1.7 notk=1 rbreadline=0.5.3
dkver=mingw64-32-6.2.0
If rubyinstaller becomes overly complex, taking too much time for any
maintainer to support, the project is going to stagnate and may lose
relevance. Simplify, simplify, simplify.
Jon
…On 12/19/16, Jonathan Mason ***@***.***> wrote:
I'll find some time over the holidays to try a build, and post back.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
#348 (comment)
|
My compiling experience is limited to working with C#, and hence, not really applicable. I've tried to update It does compile 2.33 and 2.40, both allow me build several gems (thin, eventmachine, nokogiri). But --
Never bothered with the installer or the chm (see https://msp-greg.github.io/)
|
I use InnoSetup and Pascal/Delphi on a regular basis, so if there's something to do in that specific area I would gladly help. Are there any pressing issues to solve? (After I quick glance the only installer related issue is #136 (MSI), but perhaps I overlooked something)
I couldn't agree more. It is nice for offline use, but there are other ways for that specific use case.
I believe this is the most important step. Right now all that knowledge is scattered across the wiki, several issues and some Google groups discussions. It would also help setting up a CI solution (#321) since the one setting it up needs to know what has to be done anyway. |
I proposed the same thing a while back, and though I agree with you that dispensing with InnoSetup is going a bit too far, I think RubyInstaller is suffering from a bit of a scope creep problem. Just think of all the things it's trying to do, from providing a full stack required to build Unix software on Windows, to educating the next generation of Rubyists on how to program, with books and offline documentation to boot. Let me put it this way: there is no other solution out there on any other platform that attempts to do for Ruby what RubyInstaller is attempting to do for it on Windows. Yet if you ask in any public forum whether one should use Windows to program in Ruby, what will you hear? It's a shame, really... |
Anyway, I volunteer @avdi to be the maintainer of Ruby on Windows since I read his https://www.rubytapas.com/2016/12/14/ruby-code-on-windows/ article 😜 At least in my imaginary universe 🦄 🌈 🦋 |
You don't want that. I'm the worst maintainer ever, that's why I give away all my OSS projects to people who actually keep up with their email. |
I haven't forgotten about you guys. I forgot that my house is house sitting some 4 month old kittens over Christmas and I've been distracted. I'm planning try a build on this on Friday. It's on my shortlist todo for early January. |
@MSP-Greg you'll likely need to build your own openssl 1.1.0c using something similar to https://github.com/jonforums/buildlets/blob/master/build_openssl.ps1#L35-L74 or the knapsack build recipe. That said, I'm running into an issue that 2.4.0 doesn't build ruby's openssl ext https://bugs.ruby-lang.org/issues/13080 @daniel-rikowski I'm not aware of anything currently broken with the Inno installer. A lot of hard work was put into it before me and by be, and the installer appears to be stable enough. That said, it's yet one more thing for a maintainer to have to install/learn/manage. @vais while I think a .7z + ruby-based install script + doco would be fine even for noobs, scrapping the installer may be too much. There is nice branding, all-in-one-place ease-of-use, downstream use, etc that shouldn't be thrown away especially since there hasn't been any changes needed for awhile. It's my personal rant against the overuse of installers bleeding through. @vais if by "full stack..to build Unix software" you're including the integrated build devkit, I disagree. One of the strengths of the current recipes is that someone can quickly download all the pieces needed to build ruby on windows and just do it. No need to first figure out how to install msys2+mingw64, then the library deps, etc. I've not looked into it in awhile, but I recall StrawberryPerl taking a stronger position on their devkit equivalent. I'm making the survival argument. Make the hard call to pare down to the essentials so that it is much easier to maintain this project. Maintainer != prison time. When new maintainers can easily onboard, the probability dramatically increases for the sustainable delivery of timely, usable ruby-on-windows solutions. Solutions that ruby-core has failed to deliver for a number of years. |
@MSP-Greg don't get me wrong, I think the "full stack..to build Unix software" is absolutely the essential core of what RubyInstaller does. I.e. if all else had to go, this is the piece that would be left. |
@MSP-Greg just to be clear, what I think RubyInstaller should not try to do is popularize Ruby (for lack of a better word). That means the book, online help, related website content, etc, should probably be made available elsewhere and by someone else who is interested in working specifically on that. If someone wants the .chm file, there could be a project for that. This alone would take a painful step out of maintaining RubyInstaller if I understood @Azolo correctly. I think moving .chm help out to an independent project where it can be maintained at its own pace is a reasonable compromise. |
The other big problem is having to use a physical machine for builds. Quoting @Azolo:
Does anyone know what the problem is? Because I could see some kind benefactor (like AppVeyor, hint, hint) providing a VM for automated builds, but this apparently not even being possible for hard technical reasons is a big show stopper. Needless to say that using known 3rd party servers to make builds is very important from a trust perspective. So this issue of not being able to use VMs for builds looks like an elephant in the room. |
I'm sorry if I inferred that RubyInstaller should popularize Ruby, but I think that better support of the Windows OS could be a goal. After all, the point has been made to give consideration to the needs of first time programmers (starting with Ruby), possibly without a 24/7 internet connection. Regardless, I think RubyInstaller's purpose should be narrowed to only creating the installer, with hopefully an option for in place upgrades. Your point about VM's or 'cloud based' automated builds is a very good one. The doc site I've started essentially requires one click to check all the repos for new commits, then updates all the doc files. If a cloud based system could do automated builds of Ruby 'trunk' and 'stable', I think the Ruby team (and gem teams/authors) could give a lot more support to Windows... |
The test results between my local build system and a hypervised system seem to been different. I get a lot of additional errors on a VM than on my local machine. |
As you guys are considering test results and potential CI opportunities, entice @luislavena to weigh in. As I recall, Luis spent effort, time, and $$ to build a Jenkins-based solution. While this was generally good, it also highlighted a key project maintenance issue. From my pov, it appeared very difficult to get ruby-core to pay much attention to the test results and resolving some of the more tricky Consider declaring build and CI "success" as simply passing I think build automation could be a maintainer time saver. But since this project is a bolt-on that solves a deficiency in the current ruby-core project, what does automated testing really mean and how much value does it add? Are you trying to test the build recipes (low value), or are you attempting to take on testing responsibility for ruby-on-windows source plus all needed deps? @luislavena's experiences rather than my memories should take precedence as Luis was the primary gauntlet runner on this one. |
Okay, first attempt:
That seems to have worked, but for some reason I don't have a
Any thoughts on why that task might not exist? |
Moving on, I get:
Looking over @Azolo's notes here, I just realized that I have InnoSetup 5.5.9, not 5.4.2 installed. Does that error seem consistent there? I did do this part:
|
I'll try again with 5.4.2, but I have a family thing I have to go deal with now. |
Hello folks, I've read the conversation but would like to take a proper time to respond to most of the points in detail. Please bear with me a few days as I'm travelling right now. Thank you. |
I've heard mention that I hacked together a version from a few branches, with 6.2.0 compiler. Using Ruby trunk, the tests from appveyor.yml pass (excepting
Running --
Produced --
For test-all, I needed to comment out the highlighted lines in test/ruby/test_enum.rb, otherwise I got a segmentation fault. Two tests, both involve callcc. Also, looking at the error messages, some could be caused by my security settings or the fact that all my git repos (and the build) are on D:, but my system files (and TEMP/TMP folder) are on C:. Shortened version of results are at GitHub Gist Anyway, are the quantities listed (15 failures, 2 errors) a reasonable amount of failures (three failures are bugs - 1, 6, 15), or is the threshold 0 and 0? Reminder, I don't write c or c++. I do have three things re RubyInstaller:
Really, I'll wait until all of you that are familiar with compiling (and c) weigh in... |
|
So just to be clear, in your 'sandbox', when building 'local', the gems listed in bundled_gems are installed? I must have missed some code... Re the Git ruby clone, the v2_4_0 tag existed several days before the 'stable' Ruby_2_4 branch.
I don't know how many people are using RubyInstaller vs making use of the downloads at rubyinstaller.org. I thought if the dependency generation code was in RubyInstaller, and it also cached the results, it would possibly result in less work for maintainers. I don't know how often the recipes change from version to version, as opposed to just the vers, url, and hash.
At present, neither do I. It was just an example, and I recall that it has a lot of dependencies. I installed it to double check the documentation of it. I've been mostly working on ruby builds, I'll try the DevKit again with some of my 'extension' gems. I never did get libxml-ruby to install... Lastly, thanks for the response, and is the failure / error counts I'm getting in the ballpark? I thought it odd that the AppVeyer script that the Ruby team uses does not do a test-all check... |
@MSP-Greg oh I have been away from ruby for awhile...I thought you meant re: deps, builds are faster when using cached binary ruby dep (e.g. - libyaml) downloads rather than building all from source everytime. Having the dep build infrastructure separate doesn't really put extra work on a maintainer as the updates are often easy. Luis did a nice job making usable dep build recipes. Your |
Hi all, I'm using RubyInstaller since 13 years now, so that I want to say a big thank you to Luis and all others! However the current RubyInstaller is based on the outdated MSYS1, so that it needs to switch to a newer toolchain. Also the DevKit is too limited, since it doesn't provide any libraries to link to. Therefore and because of this "looking for a maintainer" call, if started a new version of RubyInstaller based on MSYS2. I would be happy for some feedback! |
Hi guys, Sorry I haven't written in a while. I'm still very interested in helping with this project, but I feel I'm a little out of my depth at the moment. I've done Java, C#, and Ruby development - mainly using this Ruby Installer - on Windows. But my experience with the Unix-like toolsets in Windows is minimal. I've installed cygwin a time or two, but never really used it. I've always been a multi-platform guy, and I just do Unix-type things on Ubuntu or MacOS (I have machines running all 3 at the moment). I don't even really know what MSYS2 is. I'm going to spend some time getting up to speed on the tools here, and I still hope to contribute to Ruby Installer in the future, but right now I don't think I'd be good at taking on partial maintainer duties to get releases out more quickly. cheers, |
@luislavena (and @Azolo) do you guys agree that a new MSYS2 based branch would be the way forward for this? Or should I focus learning on the existing MSYS1 codebase? |
@snarfmason You should definitively go with MSYS2! It's working great for me. It's very close to the Linux experience. It's also way less intrusive than Cygwin (IMHO). Give it a try. @larskanis wrote a very good introduction in the README.md for the Rubyinstaller2 project. (https://github.com/larskanis/rubyinstaller2) |
@snarfmason I haven't looked entirely the work done by Lars, but knowing his past contributions to RubyInstaller and many other projects, I wouldn't be surprised if is a great alternative to the current build process and potentially a longer term solution than current RubyInstaller+DevKit. However, said that, there is nothing bad on reading and understanding current process, specially since new one also involves InnoSetup, MSYS (new version, but still have Last but not least, I believe there is value releasing at least the new patchlevels with current setup before switching to MSYS2: no test for x86 done yet, installers and installations might require more testing and documentation might be needed. Then focus the new installer only on a single version of Ruby (say 2.4.0) and continue from there. Of course, just my comments without having looked at the code or tried anything in detail (still travelling and with lot of work). Cheers. |
Hi, is there any of you sucessfully build ruby 2.4.1? the rubyinstaller release now still at 2.3 and I want to try new version. I download 2.4.1 and try to compile and after steps: make -> ok Is there anyone can help or interested in discussion to form a group that will build ruby? |
Please see https://github.com/oneclick/rubyinstaller2/
Sorry for top posting. Sent from mobile.
…On Apr 10, 2017 23:18, "Luc Vu" ***@***.***> wrote:
Hi, is there any of you sucessfully build ruby 2.4.1? the rubyinstaller
release now still at 2.3 and I want to try new version. I download 2.4.1
and try to compile and after steps:
make -> ok
make test -> ok
make install : Some error happen, extensions gdb, gdbm, zlib are done able
to install.
Is there anyone can help or interested in discussion to form a group that
will build ruby?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#348 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAAQVmoIbwzxNNQCAs4jBqNvoX1Jcvdnks5ruuLWgaJpZM4LGFlU>
.
|
Thank you, that is what I am looking. Hope we can have some post to rubyinstaller so other can know where to download? Is the source code attached must be modified to build or just from ruby-lang page? |
Please see this thread and specially the latest comments:
#352 (comment)
Sorry for top posting. Sent from mobile.
…On Apr 11, 2017 01:47, "Luc Vu" ***@***.***> wrote:
Thank you, that is what I am looking. Hope we can have some post to
rubyinstaller so other can know where to download? Is the source code
attached must be modified to build or just from ruby-lang page?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#348 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAAQVgVXBpb6x1jBTABXIwbsxbj9O3HRks5ruwXZgaJpZM4LGFlU>
.
|
Thank you, I will try to build again. |
From #344 (comment):
Expanding on that, I feel like I'm doing an injustice to @luislavena and the rest of the community. But these releases are time consuming and taxing. Most of the time that I'm not building new releases is spent trying to automate this process or make this process easier on myself usually to no avail.
Until this need is met, I'll continue doing what I've been doing but as a result the releases will be on a delayed schedule. Especially the likely Christmas release of 2.4.0.
The text was updated successfully, but these errors were encountered: