OpenBSD Journal

p2k17 Hackathon report: Jeremy Evans on ruby progress, postgresql and webdriver work

Contributed by Peter N. M. Hansteen on from the ruby is a hacker's best friend dept.

The p2k17 hackathon reports keep flowing in, here's one from Jeremy Evans (jeremy@):
I had a very productive hackathon and worked on a lot of different areas.

I started out p2k17 by removing ruby 1.8, 2.1, and 2.2 from the ports tree, along with some ruby 1.8-specific ports. I also removed some old ruby database drivers that are no longer used by anything in the tree.

I also updated quirks so that all ruby19-*, ruby20-*, ruby21-*, and ruby22-* ports are marked as obsolete, which has been requested by a few people. Thankfully that turned out to be easy as it was just the modifying of a regular expression.

I switched the default version of ruby in the tree from 2.3 to 2.4 in ruby.port.mk. This caused a little bit of followout, which was pointed out by naddy@ and fixed by me (I think ajacoutot@ fixed one of the issues as well). Around the same time I modified the package name for a few ruby library packages from ruby-* to rubyXY-*, so they are more similar to how all of our other ruby library packages are named. I also simplified a lot of ruby.port.mk now that we don't need to support older ruby versions. In addition, I simplified the ruby 2.3 and 2.4 port Makefiles, moving most of the shared code into ruby's Makefile.inc.

That change to Makefile.inc made it easier for me when I worked on a port for ruby 2.5.0-preview1. This was not intended for commit, but for early testing by people who develop ruby software on OpenBSD. I also worked on a small change to ruby.port.mk to build ruby25-* packages along side ruby23-* and ruby24-* packages, and tested all of the ruby gem ports with native extensions on ruby 2.5.

I worked on a port for PostgreSQL 10.0, as well as updates to some of the ports depending on it so that they continue to work. pea@, our PostgreSQL maintainer, is looking at my port and comparing it to his own port, and hopefully that update will go in sometime soon (maybe after 10.1). I upgraded all of my personal databases from PostgreSQL 9.6 to PostgreSQL 10 using pg_upgrade, and all of that went smoothly.

Related to PostgreSQL, I imported postgresql-plr, a procedural language for PostgreSQL that integrates with R. This port was interesting because I had originally worked on it at p2k12. After some recent interest on the mailing list, feinerer@ updated it to the current version, and gave me the OK to import it.

Another new port I imported during the hackathon is ruby-tk. ruby-tk used to be shipped with ruby up until ruby 2.3, but starting in ruby 2.4 it was moved to a separate download. I originally worked on a port for it at b2k16, but it segfaulted at exit, so I didn't submit it. The segfault at exit issue was fixed in the most recent release, and I imported the port after jasper@ gave me the OK.

One of the things that has bothered me for years when upgrading my home network is that I use scp in my PKG_PATH (now TRUSTED_PKG_PATH). This used to cause pkg_add to spew lots of ugly warnings on stderr. I sent espie@ a patch to silence the warnings, which he rightly rejected, but he was able to track down the underlying issue and send me a diff to fix it, which got committed after testing.

I spent a lot of time in the last half of the hackathon building and rebuilding chrome and firefox in order to enable chromedriver and geckodriver, their respective WebDriver implementations. The chromedriver fix was committed with some help from robert@. ian@ was able to test that chromedriver works from Java using Maven, and I tested that it works from ruby using selenium-webdriver.

geckodriver was not committed. There is an underlying build issue that is prepending a space to the compiler path that I was never able to track down despite many hours of trying to debug the combination of Makefile, python, and rust used. I did eventually get geckodriver building reliably using an ugly workaround that builds it before the normal build instead of during the normal build, which I sent to landry@. It may be committed alongside the Firefox 57 update or not, that depends on landry@. I did test that geckodriver does work correctly in ruby using selenium-webdriver.

While waiting for chrome and firefox to compile, I started work on updating our MariaDB port from 10.0.33 to 10.2.10. Upstream made many backwards incompatible changes between the two versions that are going to cause a lot of ports tree churn. In addition to updating MariaDB itself, I also updated about 10 or so dependencies, including the database drivers for perl, python, php, and ruby. I also spent way more time than I wanted to getting mysqlcc updated to support MariaDB 10.2, though after running the software I'd be surprised if anyone still uses it. I sent that diff to the maintainers of the affected ports, but don't plan on working on it more myself as I don't use it at all outside of testing.

I did some regular port updates to the latest version, including updates to Scintilla, SciTE, mruby, libv8, and updates to all of the ruby gem ports with compiled code. This included an update to ruby-passenger, the most difficult ruby port to update, which thankfully was less difficult than in previous upgrades. It also included updating and renabling ruby-therubyracer, which had been marked broken for a while.

I worked on an update to the xapian search engine that brings it to the latest version, enabling support for extracting snippets from search results. It also enables the building of the ruby binding, which I tested and confirmed worked correctly in a small project. This wasn't committed during p2k17 as I didn't get feedback, but will probably be committed in a week or so unless I receive an objection.

I looked at the list of ports I maintain, and found that I hadn't updated c3270 (a mainframe terminal emulator) in quite a while, so I updated that. I still need to test it against a real mainframe before I can commit it. I also worked on a minor update for mednafen (an emulator for multiple video game systems), which should significantly improve the Saturn support added recently. I need to do more testing on that before committing it.

I worked on adding support for the headers_more module to our nginx port as an additional subpackage, and hopefully I can commit that after getting an OK from one of the maintainers.

I did some review of other ports so that they can be imported, including reviewing bentley@'s ppsspp port, which is the ports tree's first Sony PSP emulator.

I spent some time analyzing all of the pure ruby gems in the ports tree so I could find ones that weren't required by another port and were very old. I found over 20 ports that are over 7 years old and basically untouched other than housekeeing since import. I emailed ports@ with this list asking if anyone wants to keep the ports. Unless someone responds affirmatively, those ports will be removed soon.

I finished up p2k17 working on an update for ruby-rack (the underlying gem used by pretty much all ruby web stuff). This caused a cascade of updates for ports that depend on rack, one of which has a new dependency which requires the import of a new port. I'm still waiting on an OK to import the dependency before I can commit those updates.

Finally, I'd like to thank stsp@, benno@, The OpenBSD Foundation, IN-Berlin, and everyone else who made p2k17 possible.


Credits

Copyright © - Daniel Hartmeier. All rights reserved. Articles and comments are copyright their respective authors, submission implies license to publish on this web site. Contents of the archive prior to as well as images and HTML templates were copied from the fabulous original deadly.org with Jose's and Jim's kind permission. This journal runs as CGI with httpd(8) on OpenBSD, the source code is BSD licensed. undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]