Ruby 3.3
by Vít Ondruch
Hi,
It is again the time to look at where Ruby 3.3 development stands. So
here is PR with the changes:
https://src.fedoraproject.org/rpms/ruby/pull-request/159
and scratch build:
https://koji.fedoraproject.org/koji/taskinfo?taskID=106071236
You probably remember, that I used to create the PR from private branch.
However this time I have decided to create the PR from my fork. This
should allow me to force pushes, which should help me in doing rebases
and possibly extracting some changes into stable branches.
Now let me list some modifications in random order.
* `%gem_spec` macro with options:
https://src.fedoraproject.org/fork/vondruch/rpms/ruby/blob/77c580dfa85f92...
This is my initial version, just to enable to use this macro in
ruby.spec. I think I'll similarly modify all the related macros. While
they'll be more complex, their use in ruby.spec will outweigh that. And
I should add some documentation ...
BTW there are several possibilities in choosing how complex/flexible
this macro will be and I think this is one of the changes which could be
backported to Ruby 3.2. So feedback is appreciated. Looking at the
macro, this bit `%{?1:%{expand:%{%{1}_version}}}%{!?1:%{version}}` is
probably not very good idea for possible use in rubygem-*.gemspec.
* There is still problem with syntax-suggest test suite, which tries to
download some pieces from interned :/ However, I have replaced the
"revert" patches with custom patch disabling the syntax-suggest test
case in a hope that this will be easier to maintain. Those previous
patches weren't. Trying to modify them for Ruby 3.3 proved to be
problematic.
* I have reordered build dependencies a bit, trying to group them
* readline-devel was dropped, since upstream replaced readline-ext by reline
* Dependency on Rust is still optional and does not influence too much.
I don't think it even impacts `%files` section. That is still good.
* MJIT was replaced by RJIT. I have not tested functionality, but at
least it resolves some issues with misplaced files.
* For a while, since upstream migrated from minitest back to test-unit,
the skipped test were not easily identifiable. Luckily, I have
discovered `--show-skip` option, which lists the skipped tests. And
there are some issues to resolve, upstream as well as downstream. I have
yet to investigate them.
* Racc is now bundled gem instead of default gem. That means it will
live in ruby-bundled-gems. I don't think this should have impact on
anything. However, it made me realize, that we don't have `bundled`
provides for the bundled/default gems. This is a bit annoying, because
maintaining this list is PITA. I have to explore what improvements were
done in the generators area in RPM.
And this is mostly it. Please note that I did very little (or possibly
even less than that ;) ) testing. So be careful. And as always, looking
for your feedback here, in BZ, or PR.
Best,
Vít
4 days, 15 hours
[heads-up] Ruby on Rails 7.0.8 in F39
by Pavel Valena
Hello,
please let me know if you think $SUBJ should be an issue (identical commits
to Rawhide). I've started the build in side-tag already.
Regards,
Pavel
2 months
Re: F39 Change Proposal: Allow Removal of tzdata (System-Wide)
by Mamoru TASAKA
Hello, ruby-sig folks:
From devel list:
Zbigniew Jędrzejewski-Szmek wrote on 2023/09/22 23:01:
> On Fri, Sep 22, 2023 at 10:43:05AM +0200, Vít Ondruch wrote:
>> https://bugzilla.redhat.com/show_bug.cgi?id=2233281#c3
>>
>> This probably answers my question. So heads up to others.
>>
>> Dne 22. 09. 23 v 10:39 Vít Ondruch napsal(a):
>>> Was this implemented in past days? I am asking because this FTBFS
>>> suggest so:
>>>
>>> https://koschei.fedoraproject.org/package/rubygem-timecop?collection=f40
>
> Yes. The change was done in rawhide a while ago, but it got pushed to F39
> only recently, see https://bugzilla.redhat.com/show_bug.cgi?id=2233281#c3.
>
> Zbyszek
Now again I tried rebuilding all rubygem- packages, and
now due to this tzdata removal changes, the following packages
are now additionally FTBFS:
rubygem-activemodel-serializers-xml
rubygem-globalid
rubygem-haml
rubygem-importmap-rails
rubygem-jekyll
rubygem-rails-controller-testing
rubygem-sassc-rails
rubygem-slim
rubygem-sprockets-rails
rubygem-timecop
rubygem-web-console
And all of these seems like:
/usr/share/gems/gems/tzinfo-2.0.6/lib/tzinfo/data_sources/zoneinfo_data_source.rb:252:in `initialize': None of the paths included in TZInfo::DataSources::ZoneinfoDataSource.search_path are valid zoneinfo directories. (TZInfo::DataSources::ZoneinfoDirectoryNotFound)
from /usr/share/gems/gems/tzinfo-2.0.6/lib/tzinfo/data_source.rb:157:in `new'
from /usr/share/gems/gems/tzinfo-2.0.6/lib/tzinfo/data_source.rb:157:in `create_default_data_source'
from /usr/share/gems/gems/tzinfo-2.0.6/lib/tzinfo/data_source.rb:55:in `block in get'
from /usr/share/gems/gems/tzinfo-2.0.6/lib/tzinfo/data_source.rb:54:in `synchronize'
from /usr/share/gems/gems/tzinfo-2.0.6/lib/tzinfo/data_source.rb:54:in `get'
from /usr/share/gems/gems/activesupport-7.0.8/lib/active_support/railtie.rb:88:in `block in <class:Railtie>'
from /usr/share/gems/gems/railties-7.0.8/lib/rails/initializable.rb:32:in `instance_exec'
from /usr/share/gems/gems/railties-7.0.8/lib/rails/initializable.rb:32:in `run'
from /usr/share/gems/gems/railties-7.0.8/lib/rails/initializable.rb:61:in `block in run_initializers'
from /usr/share/ruby/tsort.rb:231:in `block in tsort_each'
from /usr/share/ruby/tsort.rb:353:in `block (2 levels) in each_strongly_connected_component'
from /usr/share/ruby/tsort.rb:434:in `each_strongly_connected_component_from'
from /usr/share/ruby/tsort.rb:352:in `block in each_strongly_connected_component'
from /usr/share/ruby/tsort.rb:350:in `each'
from /usr/share/ruby/tsort.rb:350:in `call'
from /usr/share/ruby/tsort.rb:350:in `each_strongly_connected_component'
from /usr/share/ruby/tsort.rb:229:in `tsort_each'
from /usr/share/ruby/tsort.rb:208:in `tsort_each'
from /usr/share/gems/gems/railties-7.0.8/lib/rails/initializable.rb:60:in `run_initializers'
from /usr/share/gems/gems/railties-7.0.8/lib/rails/application.rb:372:in `initialize!'
.....
So initializer of rails tries to initialize tzdata, and if it is not found exception is raised:
The related code is:
https://github.com/rails/rails/blob/fc734f28e65ef8829a1a939ee6702c1f349a1...
So what is the proper fix for this?
A. Make every package above have "BuildRequires: tzdata"
B. Make rubygem-tzinfo or rubygem-activesupport have "Requires (not Recommends) tzdata"
C. Or ask rubygem-activesupport upstream to make the code work even if tzdata is absent
My current thought is that as currently RoR code explicitly requests to have tzdata installed,
B. is the best option.
Regards,
Mamoru
2 months, 1 week
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
SPDX Status for Rubygems in Fedora as of 2023-09-21
by Jarek Prokop
Hi,
New report for 2023-09-21.
Regards,
Jarek
* 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: 374/455
* license-validate with converted conjunctions: 376/455
* Action required: 78/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-uuid, MIT or CC-BY-SA
rubygem-vault, MPLv2.0
rubygem-vte, LGPLv2
rubygem-webrick, Ruby and BSD-2-Clause
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, ruby-packagers-sig
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, rcallicotte
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-uuid: valtri
rubygem-vault: logic
rubygem-vte: mtasaka
rubygem-webrick: pvalena, ruby-packagers-sig, tdawson
rubygem-websocket-driver: vondruch, ruby-packagers-sig, pvalena, jaruga
rubygem-xmlparser: schwicke
rubygem-xmlrpc: pvalena
rubygem-zoom: mtasaka
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
rpms/ruby rawhide FTBFS by checksec
by Jun Aruga (he / him)
Note that I am trying to fix the FTBFS on the current rpms/ruby rawhide.
Below is the scratch build with the modification to print the output
of the checksec command below.
https://koji.fedoraproject.org/koji/taskinfo?taskID=105910607
```
diff --git a/ruby.spec b/ruby.spec
index 51ada32..f61c3fe 100644
--- a/ruby.spec
+++ b/ruby.spec
@@ -855,6 +855,7 @@ rm -rf
%{buildroot}%{gem_dir}/gems/rake-%{rake_version}/.github
%check
%if 0%{?with_hardening_test}
# Check Ruby hardening.
+checksec --file=%{_vpath_builddir}/libruby.so.%{ruby_version}
checksec --file=%{_vpath_builddir}/libruby.so.%{ruby_version} | \
grep "Full RELRO.*Canary found.*NX enabled.*DSO.*No RPATH.*No
RUNPATH.*Yes.*\d*.*\d*.*libruby.so.%{ruby_version}"
%endif
```
On only s390x build, there is another error in root.log. I am asking
how to fix it on devel@ mailing list now.
https://kojipkgs.fedoraproject.org//work/tasks/753/105910753/root.log
```
DEBUG util.py:442: No matches found for the following disable plugin
patterns: local, spacewalk, versionlock
DEBUG util.py:442: Error:-
DEBUG util.py:442: Problem: conflicting requests
DEBUG util.py:442: - nothing provides nm needed by
checksec-2.6.0-5.fc40.noarch from build
DEBUG util.py:442: - nothing provides python3.12dist(unicorn) >=
1.0.2~rc1 needed by python3-pwntools-4.9.0-4.fc39.noarch from build
```
--
Jun | He - Him | Timezone: UTC+1 or 2, Czech Republic
See <https://www.worldtimebuddy.com/czech-republic-prague-to-utc> for
the timezone.
2 months, 3 weeks