Summary: | unversioned perl provides | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | viy <viy> |
Component: | subversion-perl | Assignee: | Andrey Cherepanov <cas> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P2 | CC: | at, cas, ender, shrek |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
viy
2007-05-31 19:50:43 MSD
и с 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 нет, то и добавлять ее не нужно. Спасибо! |