Summary: | Пути в $LOAD_PATH и %ruby_sitearchdir версионированы по PATCH | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Vitaly Chikunov <vt> |
Component: | ruby | Assignee: | majioa <majioa> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P5 | CC: | 3aHyga, cas, imz, iv, ldv, led, majioa, mike, nbr, pav, rider, stalker |
Version: | unstable | ||
Hardware: | x86 | ||
OS: | Linux | ||
See Also: | https://bugzilla.altlinux.org/show_bug.cgi?id=44173 |
Description
Vitaly Chikunov
2022-01-11 07:38:01 MSK
Да, кстати, макрос %ruby_version сейчас определен как 2.7.0. (Ответ для Vitaly Chikunov на комментарий #0) > Макрос %ruby_sitearchdir определён как > /usr/lib/ruby/site_ruby/2.7.5/x86_64-linux то есть содержит версию ruby > "2.7.5", а не MAJOR.MINOR.0 т.е. "2.7.0" как принято в других дистрибутивах, > AFAIK, в opensгse, debian, fedora такая же схема как в Ubuntu (с путями где > PATCH=0). > > Для контраста -- пути к gems и макрос %ruby_gemsextdir определен правильно в > смысле версионирования: > /usr/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0 > > То есть собираемые gems не будут требовать обновления при каждом обновлении > PATCH версии ruby. Само предложение выглядит здраво, rvm скажем собирает в правильными путями, т.е. c 2.7.0, хотя ссылка на другие дистрибутивы выглядит странно. Думаю, стоит ориентироваться тут на rvm. > ps. Версия ещё раз в конце пути %ruby_gemsextdir - это ошибка? Не должно быть в %ruby_gemsextdir лишнего. i. Полагаю, что пути с site_ruby (ни при каких условиях) не должны использоваться (со времен ruby 1.9), а нужно использовать пути с vendor_ruby. Соответственно, чтоб сохранить обратную-совместимость spec'ов нужно 1. Завести макросы %ruby_vendor{archdir,libdir,dir} - для новых пользователей. 2. Соответствующие им %ruby_site* макросы перенаправить на %ruby_vendor* Видимо эти: %ruby_sitearchdir %(%ruby_rubyconf_func sitearchdir) %ruby_sitelibdir %(%ruby_rubyconf_func sitelibdir) %ruby_sitearchdir %(%ruby_rubyconf_func sitearchdir) Тогда новые пакеты будут собираться в vendor_ruby, где они и должны быть, а старые спеки продолжат работать. (Нужно спросить мнение ldv на этот счёт.) ii. Или, если это нельзя сделать, то просто завести макросы %ruby_vendor* чтоб новые пакеты можно было вручную исправлять на правильные пути. По поводу путей к vendor_ruby. Сейчас они такие builder@x86_64:~$ ruby -rrubygems -rrbconfig -e 'pp RbConfig::CONFIG'|grep vendor "vendorarchhdrdir"=>"/usr/include/vendor_ruby/x86_64-linux", "vendorhdrdir"=>"/usr/include/vendor_ruby", " ... '--with-vendorarchdir=/usr/lib/ruby/vendor_ruby/2.7.5/x86_64-linux' ... ", "vendorarchdir"=>"/usr/lib/ruby/vendor_ruby/2.7.5/x86_64-linux", "vendorlibdir"=>"/usr/lib/ruby/vendor_ruby", "vendordir"=>"/usr/lib/ruby/vendor_ruby", Архитектурно зависимые пути (vendorarchdir) выглядят неправильно. Суффикс "x86_64-linux" это скорее всего что-то из дебиана где вместо /lib64 используется /lib/x86_64-linux. Полагаю, что нужно сделать путь /usr/%_lib/ruby/vendor_ruby/2.7.0, где %_lib это (наш макрос раскрывающийся в) lib или lib64 в зависимости от платформы. Вот я сейчас увидел коммит с - --with-vendorarchdir=%libdir/vendor_ruby/%_version/%ruby_arch \ + --with-vendorarchdir=%libdir/vendor_ruby/%ruby_version/%ruby_arch \ а хотелось бы + --with-vendorarchdir=%_libdir/ruby/vendor_ruby/%ruby_version \ (Ответ для Vitaly Chikunov на комментарий #4) > По поводу путей к vendor_ruby. Сейчас они такие > > builder@x86_64:~$ ruby -rrubygems -rrbconfig -e 'pp RbConfig::CONFIG'|grep > vendor > "vendorarchhdrdir"=>"/usr/include/vendor_ruby/x86_64-linux", > "vendorhdrdir"=>"/usr/include/vendor_ruby", > " ... '--with-vendorarchdir=/usr/lib/ruby/vendor_ruby/2.7.5/x86_64-linux' > ... ", > "vendorarchdir"=>"/usr/lib/ruby/vendor_ruby/2.7.5/x86_64-linux", > "vendorlibdir"=>"/usr/lib/ruby/vendor_ruby", > "vendordir"=>"/usr/lib/ruby/vendor_ruby", > > Архитектурно зависимые пути (vendorarchdir) выглядят неправильно. Суффикс > "x86_64-linux" это скорее всего что-то из дебиана где вместо /lib64 > используется /lib/x86_64-linux. Полагаю, что нужно сделать путь > /usr/%_lib/ruby/vendor_ruby/2.7.0, где %_lib это (наш макрос раскрывающийся > в) lib или lib64 в зависимости от платформы. по хорошему вообще все *.so нужно пихать в lib64, а *.rb в lib, но это много возни, не для этой задачи, поэтому vendorarchdir пока, думаю, оставлю как есть. Хотя возможно это не так сложно вделать.... Я ещё заметил в $: путь /usr/lib/ruby/x86_64-linux/ (который использует только ruby-stdlib), видимо, должно быть /usr/%_lib/ruby/. Any news? ruby-2.7.5-alt1.1 -> sisyphus: Tue Jan 18 2022 Pavel Skrylev <majioa@altlinux> 2.7.5-alt1.1 - ! %ruby_sitearchdir path (ALT #41688) Спасибо! |