Ruby’s packages in PLD are decent (I made most of them), but there’s some nasty quirks around ri because it doesn’t play nice with RPM: a package that adds methods to a core class like Array generates a new cdesc-Classname.yaml file, which would require a programatic merge (and worse, unmerge) from the installed copy. This isn’t acceptable, because it makes MD5 checksum verification much more fragile, which is one reason people use an RPM-based system: the validity checks are powerful when the packages are made right.
I’m planning on doing several things to PLD’s ruby packaging in the coming time:
PackageI have a copy in CVS right now, but I’m manually synching it with upstream, and there’s no versioning that way. Now, I can declare which version ofsetup.rbas a package in its own right, for build scripts to draw on.setup.rbI coded the package spec against, so that when I updatesetup.rb, I’ll know what packages have to be updated to match, since there are no backward-compatibility guarantees.- Patch
rito use more than one YAML file for its class description format. Or maybe scrap it entirely sinceriis amazingly slow, when compared toman(1). - Make a new, less ugly and more useful and easier to index RDoc template.
- Perhaps centralize ruby docs into
/usr/share/doc/ruby/{core,stdlib,packagename}, for easy mass-publishing to the web, since most docs require a browser to read effectively. - Package some of the Heretix system administration scripts, to toy with at least.
- Pipe dream: find an effective way to replace
init(8)andrc-scriptswith ruby, and make the boot sequence faster and better organized. - Code a nice full-text index to the installed documentation, and an
XMLHTTPRequest-based UI for it, for efficient searching of the entire installed set of package docs. - Patch Ruby (or maybe just Ruby’s build) to look for architecture-independent libraries in
/usr/shareinstead of/usr/lib{,64}, so that noarch packages can be built, and are actually the same when built on all architectures. Sparc64 and AMD64 are problematic in that there is both a/usr/liband/usr/lib64, but Ruby only looks at the one it was built with, and in/usr/sharenot at all.