Ruby 2.2
by Vít Ondruch
Hi everybody,
Since Ruby 2.2 is going to be released during Christmas and -preview1
release is imminent (this Wednesday?), it is probably time to start
looking into its packaging. So here is the updated .spec file [1] and
scratch build [2], which can be finally build on all platforms. Sorry,
no Copr for you, since Ruby's build fails there due to old RHEL kernel :/.
What has changed from packaging point of view? Luckily, not much, but
here are a few bullets which comes to my mind:
* RPM 4.12 introduces new %load function, which is used to load RPM
macros during RPM build. This allowed to drop my custom RPM macro [3].
On the other hand, you'll be able to build the Ruby only on F21+
(luckily, you should be able to build SRPM everywhere).
* The RubyGems filesystem was not explicit enough, so there might be
something accidentally packages. This is now more explicit, so we should
be safer.
* Ruby now ships with MiniTest and Test::Unit. The very good news is
that they are installed so far as a regular gems. This means that you
have to always specify them in your Gemfile, if you are using Bundler,
but this is generally step in good direction. I hope that upstream will
not change their mind :) Due to this change, we have new subpackages
rubygem-test-unit (and rubygem-power_assert, which is now Test::Unit's
dependency). No more %{_bindir}/testrb (but nobody is using it these
days anyway, right? ;)
* Some prevailing test failures were resolved, some others introduced,
but hopefully they'll get resolved prior stable release.
Generally, I'd say that not much has changed since 2.1, which is good news.
Please test the packaging if you can and let me know about any issues
you encountered.
Also, if you have any other suggestions about Ruby packaging in general,
what we could improve etc, this is probably good time to share. It seems
that OpenSUSE guys are improving their packaging, so you might want to
get some inspiration there [4, 5, 6] ;)
Vít
[1] http://pkgs.fedoraproject.org/cgit/ruby.git/log/?h=private-ruby-2.2
[2] http://koji.fedoraproject.org/koji/taskinfo?taskID=7578843
[3]
http://pkgs.fedoraproject.org/cgit/ruby.git/commit/?h=private-ruby-2.2&id...
[4] https://build.opensuse.org/package/show/home:darix:ruby/ruby-common
[5] https://build.opensuse.org/package/show/home:darix:ruby/ruby2.2
[6] https://github.com/openSUSE/gem2rpm/commits/master
2 months, 1 week
mass prebuild
by Vít Ondruch
Looking at the failures reported by Koschei after last rubygem-minitest
rebase, I'd like to suggest everybody to use the mass-prebuild tool:
https://gitlab.com/fedora/packager-tools/mass-prebuild
This tool allows to rebuild all reverse dependencies in copr, preventing
breakages. This would be the minimal config required for minitest:
~~~
$ cat mpb.config
archs: x86_64
chroot: fedora-rawhide
name: mpb
packages:
rubygem-minitest:
src_type: file
src:
/home/vondruch/fedora-scm/own/rubygem-minitest/rubygem-minitest-5.19.0-200.fc39.src.rpm
verbose: 1
retry: 2
~~~
Which is then executed via simple `mpb` command. Because I'd like to
start from scratch, I also like to clean the results of prior run:
~~~
$ mpb --clean --buildid 1
$ rm -rf ~/.mpb/
~~~
This should delete the copr `mpb` repository as well as the
mass-prebuild database. But feel free to experiment with the tool. It
provides more knobs which allows you to tune the experience to your needs.
HTH
Vít
2 months, 2 weeks
SPDX Status for Rubygems in Fedora as of 2023-08-24
by Jarek Prokop
Hi all,
update on the rubygems SPDX status in Fedora
Regards,
Jarek Prokop
~~~
* Total rubygems in Fedora: 460
* Excluded gems:
rubygem-krb5-auth
rubygem-rgen
rubygem-net-irc
* Total rubygems checked: 455
* Fedora License field and gem2rpm license match and license-validate
succeeds: 289/455
* license-validate says they are OK SPDX, but licenses may or may not
match between Fedora and upstream: 372/455
* license-validate with converted conjunctions: 374/455
* Action required: 80/455
Packages that need to convert to valid SPDX:
rubygem-, fedora_license
rubygem-allison, AFL
rubygem-ansi, BSD
rubygem-aws-sigv4, ASL 2.0
rubygem-bcrypt, MIT and Public Domain and ISC
rubygem-bcrypt_pbkdf, MIT and BSD and ISC
rubygem-between_meals, ASL 2.0
rubygem-colorize, GPLv2
rubygem-contracts, BSD
rubygem-cookiejar, BSD
rubygem-daemons, MIT and (GPLv2+ or Ruby)
rubygem-dnsruby, ASL 2.0
rubygem-elasticsearch-transport,ASL 2.0
rubygem-eventmachine, GPLv2 or Ruby
rubygem-ffi, BSD
rubygem-gem2rpm, GPLv2+
rubygem-goocanvas, LGPLv2
rubygem-gtk2, LGPLv2
rubygem-gtksourceview2, LGPLv2
rubygem-haml, MIT and WTFPL
rubygem-hashery, BSD
rubygem-hashicorp-checkpoint, MPLv2.0
rubygem-hiera-vault, ASL 2.0
rubygem-highline, GPLv2 or Ruby or BSD
rubygem-hiredis, BSD
rubygem-hocon, ASL 2.0
rubygem-hrx, ASL 2.0
rubygem-httpclient, (Ruby or BSD) and Public Domain
rubygem-icaro, GPLv3
rubygem-idn, ASL 2.0 and LGPLv2+
rubygem-imagesize, GPLv2 or Ruby
rubygem-levenshtein, GPLv2
rubygem-log4r, LGPLv3
rubygem-logstash-event, ASL 2.0
rubygem-macaddr, Ruby or BSD
rubygem-marcel, MIT and ASL 2.0
rubygem-mixlib-cli, ASL 2.0
rubygem-mixlib-config, ASL 2.0
rubygem-mixlib-log, ASL 2.0
rubygem-mixlib-shellout, ASL 2.0
rubygem-mongo, ASL 2.0
rubygem-msgpack, ASL 2.0
rubygem-narray, BSD and Ruby
rubygem-ncursesw, LGPLv2+
rubygem-nifti, LGPLv3+
rubygem-nio4r, MIT and (BSD or GPLv2+)
rubygem-open4, BSD or Ruby
rubygem-opennebula, ASL 2.0
rubygem-pathspec, ASL 2.0
rubygem-pdf-core, GPLv2 or GPLv3 or Ruby
rubygem-pdf-inspector, GPLv2 or GPLv3 or Ruby
rubygem-prawn, (GPLv2 or GPLv3 or Ruby) and APAFML
rubygem-prawn-icon, Ruby or GPLv2 or GPLv3
rubygem-prawn-table, Ruby or GPLv2 or GPLv3
rubygem-prawn-templates, Ruby or GPLv2 or GPLv3
rubygem-rack, MIT and BSD
rubygem-rb-readline, BSD
rubygem-rchardet, LGPLv2
rubygem-rdoc, GPL-2.0 AND Ruby AND BSD-3-Clause AND
CC-BY-2.5 AND OFL-1.1-RFN
rubygem-rmail, BSD
rubygem-ruby-libvirt, LGPLv2+
rubygem-ruby-shadow, Public Domain
rubygem-rubyzip, Ruby or BSD
rubygem-sassc-rails, MIT and OFL
rubygem-scanf, BSD
rubygem-selenium-webdriver, ASL 2.0
rubygem-serialport, GPLv2
rubygem-sinatra-rabbit, ASL 2.0
rubygem-sugarjar, ASL 2.0
rubygem-sys-uname, ASL 2.0
rubygem-ttfunk, GPLv2 or GPLv3 or Ruby
rubygem-unf, BSD
rubygem-uuid, MIT or CC-BY-SA
rubygem-vault, MPLv2.0
rubygem-vte, LGPLv2
rubygem-webrick, Ruby and BSD-2-Clause
rubygem-webrobots, BSD
rubygem-websocket-driver, ASL 2.0
rubygem-xmlparser, GPLv2+ and ( Ruby or GPLv2+ or MIT ) and
( GPLv2+ or Artistic )
rubygem-xmlrpc, Ruby or BSD
rubygem-zoom, LGPLv2+
Package author list:
package, owner(, other contributors)
rubygem-allison: mtasaka
rubygem-ansi: stevetraylen
rubygem-aws-sigv4: valtri
rubygem-bcrypt: vondruch, ruby-packagers-sig
rubygem-bcrypt_pbkdf: pvalena
rubygem-between_meals: dcavalca, filbranden, salimma
rubygem-colorize: ctria
rubygem-contracts: mtasaka, tdawson
rubygem-cookiejar: pvalena
rubygem-daemons: sseago, stahnma
rubygem-dnsruby: pwouters
rubygem-elasticsearch-transport: stevetraylen, sbonazzo
rubygem-eventmachine: vondruch, ruby-packagers-sig
rubygem-ffi: vondruch, ruby-packagers-sig, bkearney, tdawson
rubygem-gem2rpm: vondruch, ruby-packagers-sig, stahnma
rubygem-goocanvas: mtasaka
rubygem-gtk2: mtasaka
rubygem-gtksourceview2: mtasaka
rubygem-haml: pvalena
rubygem-hashery: pvalena, ruby-packagers-sig
rubygem-hashicorp-checkpoint: pvalena, humaton
rubygem-hiera-vault: logic
rubygem-highline: tdawson, stahnma
rubygem-hiredis: pvalena, tdawson
rubygem-hocon: stevetraylen
rubygem-hrx: leigh123linux, ruby-packagers-sig, tdawson, jcpunk
rubygem-httpclient: tdawson, brandfbb, maxamillion
rubygem-icaro: aeperezt
rubygem-idn: spstarr, tdawson
rubygem-imagesize: mtasaka
rubygem-levenshtein: mtasaka
rubygem-log4r: vondruch, humaton
rubygem-logstash-event: valtri
rubygem-macaddr: valtri
rubygem-marcel: pvalena, ruby-packagers-sig
rubygem-mixlib-cli: jdunn
rubygem-mixlib-config: jdunn
rubygem-mixlib-log: dcavalca
rubygem-mixlib-shellout: jdunn
rubygem-mongo: tdawson
rubygem-msgpack: spredzy
rubygem-narray: besser82
rubygem-ncursesw: dcallagh
rubygem-nifti: ilgrad, neuro-sig
rubygem-nio4r: pvalena, ruby-packagers-sig, vondruch
rubygem-open4: vondruch, tdawson
rubygem-opennebula: valtri
rubygem-pathspec: athoscr, ignatenkobrain
rubygem-pdf-core: vondruch, fale, pvalena, snecker, tdawson
rubygem-pdf-inspector: pvalena
rubygem-prawn: vondruch, fale, pvalena, tdawson, snecker
rubygem-prawn-icon: tripledes, evgeni, fale, snecker
rubygem-prawn-table: vondruch, fale, snecker
rubygem-prawn-templates: tripledes, evgeni, fale, snecker
rubygem-rack: pvalena, ruby-packagers-sig, vondruch, tdawson
rubygem-rb-readline: mtasaka
rubygem-rchardet: stevetraylen
rubygem-rdoc: vondruch, ruby-packagers-sig, jstribny
rubygem-rmail: dcallagh
rubygem-ruby-libvirt: vondruch, ruby-packagers-sig, clalance, jstribny,
tdawson
rubygem-ruby-shadow: terjeros, ignatenkobrain
rubygem-rubyzip: vondruch, ruby-packagers-sig
rubygem-sassc-rails: pvalena
rubygem-scanf: ekohl, brandfbb
rubygem-selenium-webdriver: vondruch, ruby-packagers-sig
rubygem-serialport: aeperezt
rubygem-sinatra-rabbit: athoscr
rubygem-sugarjar: jaymzh
rubygem-sys-uname: pvalena, tdawson
rubygem-ttfunk: vondruch, tdawson, snecker
rubygem-unf: mtasaka
rubygem-uuid: valtri
rubygem-vault: logic
rubygem-vte: mtasaka
rubygem-webrick: pvalena, ruby-packagers-sig, tdawson
rubygem-webrobots: mtasaka
rubygem-websocket-driver: vondruch, ruby-packagers-sig, pvalena, jaruga
rubygem-xmlparser: schwicke
rubygem-xmlrpc: pvalena
rubygem-zoom: mtasaka
~~~
3 months, 1 week
Alternative way to package RDoc and other default gems that come with
Ruby
by Jarek Prokop
Hi,
I recently had an idea of faking load paths [0] to satisfy bundler's
loading and help bring our behavior closer to upstream while still
unbundling the libraries.
To automatically test for the usual user's workflow with bundler and a
default gem (only RDoc so far),
I have created small TMT test suite [1]. It pulls the Ruby RPMs from my
copr repo
https://copr.fedorainfracloud.org/coprs/jackorp/ruby-rdoc-default-gem/ .
It is adjustable to fit your own copr if you wish to do your own changes
[2], TMT can also install RPMs from a local directory, but that's going
off-topic.
One of my TODO item here is to validate this against some rbenv Ruby
install.
To the loading itself and my examination.
Default gems seem to skip bundler somewhere and go their own path which
is more similar to regular `Kernel.require` without bundler.
Therefore, just having it on the default load path, where default gems
are expected to exist is enough.
However, regular Ruby loading also means that it expects a certain
layout that it won't search for itself if it can't find a subfile, see
Rake and `rdoc/task` below.
So, if we place `rdoc.rb` into `/usr/share/ruby/` that adjusts the load
path accordingly and then just passes on the require, that's enough if
the code is either
~~~
$ cat foo.rb
require 'rdoc'
p RDoc::VERSION # Demonstrate that RDoc is available
~~~
and run with bundler `bundle exec ruby ./foo.rb`.
or in CLI like this: `bundle exec ruby -rrdoc -e 'p RDoc::VERSION'`.
In both cases, the associated Gemfile is empty. No gems are recored in
the file.
My approach, at this point in time, falls apart with Rake and RDoc using
`require rdoc/task`, as there is no /usr/share/ruby/rdoc/task.rb. I am
unable to track down the exact code path,
but it seems to skip some places inside bundler, even rubygems, that
could otherwise make it possible to work (with a few minor adjustments
of course).
This demostrated a problem, we'd have to fake out the whole structure of
any gem we'd like to unbundle this way.
That, of course, is a possibility.
So the pros / cons of this approach currently seem:
+ we'd unbundle default gems away
+ no more symlinks.
+ closer to upstream behavior for the users
- We'd have to retain the structure and provide each "fake" path to a file.
* Though we are doing something a small bit similar with the symlinks.
- added complexity of writing correct paths into the files on their
correct places.
Alternatively, this is just an academic idea, populate the default load
path with default gems.
I, however, do not know where would the right place for that be, or what
would be the cons of this approach
(apart from potentially breaking expectations set accross the whole Ruby
environment for loadables).
Also to adjust the Kernel.require, but that feels very wrong (also
potentially unsafe, as the code is in C AFAICT, and very divergent from
upstream).
But I have quickly dismissed these as I have high doubts such patches
would ever be accepted upstream and maintainability of such approaches
is quetionable at best.
Additionally, I am not sure what should be the behaviour with the plain
rdoc executable and bundler executed like this: `bundle exec rdoc`
I will try to apply the approach of faking the whole gem directory and
file tree in /usr/share/ruby for RDoc and record my findings.
I am open to discussion, should you want to share your thoughts or ideas
regarding this topic.
Regards,
Jarek Prokop
[0]
https://src.fedoraproject.org/fork/jackorp/rpms/ruby/c/1f660500090ad6d176...
[1] https://gitlab.com/jackorp/test_default_gem_fedora_ruby
[2]
https://gitlab.com/jackorp/test_default_gem_fedora_ruby/-/blob/7658195644...
3 months, 2 weeks
SPDX Status for Rubygems in Fedora as of 2023-08-10
by Jarek Prokop
Hi,
Another 2 weeks had gone by, I am back with another report.
Regards,
Jarek Prokop
* Total rubygems in Fedora: 460
* Excluded gems:
rubygem-krb5-auth
rubygem-rgen
rubygem-net-irc
* Total rubygems checked: 455
* Fedora License field and gem2rpm license match and license-validate
succeeds: 289/455
* license-validate says they are OK SPDX, but licenses may or may not
match between Fedora and upstream: 372/455
* license-validate with converted conjunctions: 374/455
* Action required: 80/455
Packages that need to convert to valid SPDX:
rubygem-, fedora_license
rubygem-allison, AFL
rubygem-ansi, BSD
rubygem-aws-sigv4, ASL 2.0
rubygem-bcrypt, MIT and Public Domain and ISC
rubygem-bcrypt_pbkdf, MIT and BSD and ISC
rubygem-between_meals, ASL 2.0
rubygem-colorize, GPLv2
rubygem-contracts, BSD
rubygem-cookiejar, BSD
rubygem-daemons, MIT and (GPLv2+ or Ruby)
rubygem-dnsruby, ASL 2.0
rubygem-elasticsearch-transport,ASL 2.0
rubygem-eventmachine, GPLv2 or Ruby
rubygem-ffi, BSD
rubygem-gem2rpm, GPLv2+
rubygem-goocanvas, LGPLv2
rubygem-gtk2, LGPLv2
rubygem-gtksourceview2, LGPLv2
rubygem-haml, MIT and WTFPL
rubygem-hashery, BSD
rubygem-hashicorp-checkpoint, MPLv2.0
rubygem-hiera-vault, ASL 2.0
rubygem-highline, GPLv2 or Ruby or BSD
rubygem-hiredis, BSD
rubygem-hocon, ASL 2.0
rubygem-hrx, ASL 2.0
rubygem-httpclient, (Ruby or BSD) and Public Domain
rubygem-icaro, GPLv3
rubygem-idn, ASL 2.0 and LGPLv2+
rubygem-imagesize, GPLv2 or Ruby
rubygem-levenshtein, GPLv2
rubygem-log4r, LGPLv3
rubygem-logstash-event, ASL 2.0
rubygem-macaddr, Ruby or BSD
rubygem-marcel, MIT and ASL 2.0
rubygem-mixlib-cli, ASL 2.0
rubygem-mixlib-config, ASL 2.0
rubygem-mixlib-log, ASL 2.0
rubygem-mixlib-shellout, ASL 2.0
rubygem-mongo, ASL 2.0
rubygem-msgpack, ASL 2.0
rubygem-narray, BSD and Ruby
rubygem-ncursesw, LGPLv2+
rubygem-nifti, LGPLv3+
rubygem-nio4r, MIT and (BSD or GPLv2+)
rubygem-open4, BSD or Ruby
rubygem-opennebula, ASL 2.0
rubygem-pathspec, ASL 2.0
rubygem-pdf-core, GPLv2 or GPLv3 or Ruby
rubygem-pdf-inspector, GPLv2 or GPLv3 or Ruby
rubygem-prawn, (GPLv2 or GPLv3 or Ruby) and APAFML
rubygem-prawn-icon, Ruby or GPLv2 or GPLv3
rubygem-prawn-table, Ruby or GPLv2 or GPLv3
rubygem-prawn-templates, Ruby or GPLv2 or GPLv3
rubygem-rack, MIT and BSD
rubygem-rb-readline, BSD
rubygem-rchardet, LGPLv2
rubygem-rdoc, GPL-2.0 AND Ruby AND BSD-3-Clause AND
CC-BY-2.5 AND OFL-1.1-RFN
rubygem-rmail, BSD
rubygem-ruby-libvirt, LGPLv2+
rubygem-ruby-shadow, Public Domain
rubygem-rubyzip, Ruby or BSD
rubygem-sassc-rails, MIT and OFL
rubygem-scanf, BSD
rubygem-selenium-webdriver, ASL 2.0
rubygem-serialport, GPLv2
rubygem-sinatra-rabbit, ASL 2.0
rubygem-sugarjar, ASL 2.0
rubygem-sys-uname, ASL 2.0
rubygem-ttfunk, GPLv2 or GPLv3 or Ruby
rubygem-unf, BSD
rubygem-uuid, MIT or CC-BY-SA
rubygem-vault, MPLv2.0
rubygem-vte, LGPLv2
rubygem-webrick, Ruby and BSD-2-Clause
rubygem-webrobots, BSD
rubygem-websocket-driver, ASL 2.0
rubygem-xmlparser, GPLv2+ and ( Ruby or GPLv2+ or MIT ) and
( GPLv2+ or Artistic )
rubygem-xmlrpc, Ruby or BSD
rubygem-zoom, LGPLv2+
Package author list:
package, owner(, other contributors)
rubygem-allison: mtasaka
rubygem-ansi: stevetraylen
rubygem-aws-sigv4: valtri
rubygem-bcrypt: vondruch, ruby-packagers-sig
rubygem-bcrypt_pbkdf: pvalena
rubygem-between_meals: dcavalca, filbranden, salimma
rubygem-colorize: ctria
rubygem-contracts: mtasaka, tdawson
rubygem-cookiejar: pvalena
rubygem-daemons: sseago, stahnma
rubygem-dnsruby: pwouters
rubygem-elasticsearch-transport: stevetraylen, sbonazzo
rubygem-eventmachine: vondruch, ruby-packagers-sig
rubygem-ffi: vondruch, ruby-packagers-sig, bkearney, tdawson
rubygem-gem2rpm: vondruch, ruby-packagers-sig, stahnma
rubygem-goocanvas: mtasaka
rubygem-gtk2: mtasaka
rubygem-gtksourceview2: mtasaka
rubygem-haml: pvalena
rubygem-hashery: pvalena, ruby-packagers-sig
rubygem-hashicorp-checkpoint: pvalena, humaton
rubygem-hiera-vault: logic
rubygem-highline: tdawson, stahnma
rubygem-hiredis: pvalena, tdawson
rubygem-hocon: stevetraylen
rubygem-hrx: leigh123linux, ruby-packagers-sig, tdawson, jcpunk
rubygem-httpclient: tdawson, brandfbb, maxamillion
rubygem-icaro: aeperezt
rubygem-idn: spstarr, tdawson
rubygem-imagesize: mtasaka
rubygem-levenshtein: mtasaka
rubygem-log4r: vondruch, humaton
rubygem-logstash-event: valtri
rubygem-macaddr: valtri
rubygem-marcel: pvalena, ruby-packagers-sig
rubygem-mixlib-cli: jdunn
rubygem-mixlib-config: jdunn
rubygem-mixlib-log: dcavalca
rubygem-mixlib-shellout: jdunn
rubygem-mongo: tdawson
rubygem-msgpack: spredzy
rubygem-narray: besser82
rubygem-ncursesw: dcallagh
rubygem-nifti: ilgrad, neuro-sig
rubygem-nio4r: pvalena, ruby-packagers-sig, vondruch
rubygem-open4: vondruch, tdawson
rubygem-opennebula: valtri
rubygem-pathspec: athoscr, ignatenkobrain
rubygem-pdf-core: vondruch, fale, pvalena, snecker, tdawson
rubygem-pdf-inspector: pvalena
rubygem-prawn: vondruch, fale, pvalena, tdawson, snecker
rubygem-prawn-icon: tripledes, evgeni, fale, snecker
rubygem-prawn-table: vondruch, fale, snecker
rubygem-prawn-templates: tripledes, evgeni, fale, snecker
rubygem-rack: pvalena, ruby-packagers-sig, vondruch, tdawson
rubygem-rb-readline: mtasaka
rubygem-rchardet: stevetraylen
rubygem-rdoc: vondruch, ruby-packagers-sig, jstribny
rubygem-rmail: dcallagh
rubygem-ruby-libvirt: vondruch, ruby-packagers-sig, clalance, jstribny,
tdawson
rubygem-ruby-shadow: terjeros, ignatenkobrain
rubygem-rubyzip: vondruch, ruby-packagers-sig
rubygem-sassc-rails: pvalena
rubygem-scanf: ekohl, brandfbb
rubygem-selenium-webdriver: vondruch, ruby-packagers-sig
rubygem-serialport: aeperezt
rubygem-sinatra-rabbit: athoscr
rubygem-sugarjar: jaymzh
rubygem-sys-uname: pvalena, tdawson
rubygem-ttfunk: vondruch, tdawson, snecker
rubygem-unf: mtasaka
rubygem-uuid: valtri
rubygem-vault: logic
rubygem-vte: mtasaka
rubygem-webrick: pvalena, ruby-packagers-sig, tdawson
rubygem-webrobots: mtasaka
rubygem-websocket-driver: vondruch, ruby-packagers-sig, pvalena, jaruga
rubygem-xmlparser: schwicke
rubygem-xmlrpc: pvalena
rubygem-zoom: mtasaka
3 months, 3 weeks