subversion-perl provides unversioned perl modules: rpmquery --provides subversion-perl ... perl(SVN/Base.pm) perl(SVN/Client.pm) perl(SVN/Core.pm) perl(SVN/Delta.pm) perl(SVN/Fs.pm) perl(SVN/Ra.pm) perl(SVN/Repos.pm) perl(SVN/Wc.pm) so we have errors like error: failed dependencies: perl(SVN/Core.pm) >= 1.200 is needed by perl-SVN-Mirror-0.73-alt1
и с Pushmi на такое напоролся... в общем, надо фиксить.
Текущими средствами, действительно, не удается выцепить версию. Сейчас поиск версий provides идет чисто текстуально: $VERSION = число $Название::Этого::Пакета::VERSION = число $VERSION = $Название::Другого::Пакета::VERION $Название::Этого::Пакета::VERSION = $Название::Другого::Пакета::VERSION В двух последних случаях этот и другой модули должны обрабатываться одновременно, тогда версия будет обнаружена. SVN/Core.pm: # Some build tool hates VERSION assign across two lines. $SVN::Core::VERSION = "$SVN::Core::VER_MAJOR.$SVN::Core::VER_MINOR.$SVN::Core::VER_MICRO"; $ perl.prov /usr/lib/perl5/vendor_perl/i386-linux/SVN/Core.pm # VERSION assignment not recognized at /usr/lib/perl5/vendor_perl/i386-linux/SVN/Core.pm line 7 (SKIP) # $SVN::Core::VERSION = "$SVN::Core::VER_MAJOR.$SVN::Core::VER_MINOR.$SVN::Core::VER_MICRO"; perl(SVN/Core.pm) $ В принципе можно попробовать загрузить модуль и посмотреть у него версию. При этом будет исполнено больше (произвольного) кода, чем при обычном syntax check (который используется в requires).
Ну что, какие ещё мнения есть на этот счет? Можно в perl.prov прикрутить специально чтобы если версию выцепить не получается то попрбовать загузить сам модуль и прямо из него взять $VERSION. Но это очень некрасиво, а для компилируемых модулей ещё и не надежно. Нужно учитывать специфику buildroot, т.е. выставлять LD_LIBRARY_PATH и т.д. А если там где-нибудь есть rpath то в билдруте это будет неправильно работать. Есть альтернативный вариант: подправить SVN/Core.pm во время сборки. Поскольку версия во время сборки известна, то можно вместо этого длинного присваивания прямо проставить версию as is.
почему плохо (поиск версий provides идет чисто текстуально); if (VERSION assignment not recognized at <file>) { загружать модуль. } ?
Передаю мэйнтейнеру
господа, я планирую зашвырнуть v1.5.4. что надо сделать с этими provides? провадйить версии модулей, e.g. perl(SVN/Core.pm) = <version>?
(In reply to comment #6) > господа, я планирую зашвырнуть v1.5.4. > что надо сделать с этими provides? провадйить версии модулей, e.g. perl(SVN/Core.pm) = > <version>? вверху по треду Алексей рассказал, как правильно сделать.
сборка выдает соответсвтующую ругань: Can't load '/usr/src/tmp/subversion-buildroot/usr/lib/perl5/vendor_perl/i386-linux/auto/SVN/_Core/_Core.so' for module SVN::_Core: libsvn_swig_perl-1.so.0: cannot open shared object file: No such file or directory at /usr/lib/perl5/i386-linux/DynaLoader.pm line 226. at /usr/src/tmp/subversion-buildroot/usr/lib/perl5/vendor_perl/i386-linux/SVN/Base.pm line 59 BEGIN failed--compilation aborted at /usr/src/tmp/subversion-buildroot/usr/lib/perl5/vendor_perl/i386-linux/SVN/Core.pm line 5. Compilation failed in require at /usr/src/tmp/subversion-buildroot/usr/lib/perl5/vendor_perl/i386-linux/SVN/Client.pm line 4. BEGIN failed--compilation aborted at /usr/src/tmp/subversion-buildroot/usr/lib/perl5/vendor_perl/i386-linux/SVN/Client.pm line 4. # /usr/src/tmp/subversion-buildroot/usr/lib/perl5/vendor_perl/i386-linux/SVN/Client.pm: deparse failed, but I don't care. причина: %perl_vendor_build all выдает билиотеки с неверно установленным RPATH, баг #9307
я пока разобраться не могу, кому что не нравится. напрямую subst subst "s/\$SVN::Core::VERSION = .*/\$SVN::Core::VERSION = '$SVN_VER_MAJOR.$SVN_VER_MINOR.$SVN_VER_PATCH';/" Core.pm я делал, не помогло. perl.prov вообще не отрабатывает svn модули. в спеке стоит %set_perl_req_method relaxed i need help :)
отправил в сизиф subversion-1.5.4-alt3, у него получилось заставить perl.prov вычислит версию для SVN::Core остальные модули не имеют своих VERSION. стоит ли и SVN::Base и иже с ними версии добавлять?
(In reply to comment #10) > добавлять? IMHO, если VERSION нет, то и добавлять ее не нужно. Спасибо!