Summary: | не предоставляет libjvm.so(SUNWprivate_1.1) | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Sergey V Turchin <zerg> |
Component: | java-1.6.0-sun | Assignee: | viy <viy> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | wrar |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Sergey V Turchin
2009-10-02 18:03:18 MSD
путь /usr/lib/jvm/java-1.6.0-sun-1.6.0.14 очевидно будет сломан при обновлении :( если уже и писать что-то в rpath, то советую писать /usr/lib/jvm/java-1.6.0-sun/jre/lib/i386/client, и такую зависимость фильтровать вручную. (В ответ на комментарий №1)
> и такую зависимость фильтровать вручную.
Как?
А есть разница, с чем линковать? client/libjvm.so или server/libjvm.so ? А то server/libjvm.so(SUNWprivate_1.1) провайдиться, но, похоже, просто при сборке подгребается client/libjvm.so, т.к. порядок поиска библиотеки такой точнее /usr/lib/jvm/java-1.6.0/jre/lib/i386/client так как в openjdk она тоже есть. а фильтровать можно так: # HACK around find-requires %define __find_requires $RPM_BUILD_ROOT/.find-requires cat > $RPM_BUILD_ROOT/.find-requires <<EOF #!/bin/sh (/usr/lib/rpm/find-requires | grep -v /usr/lib/jvm/java) || : EOF chmod 755 $RPM_BUILD_ROOT/.find-requires # end HACK around find-requires разница в стратегии импльзования памяти. для настольных приложений лучше client/ > > другими словами, > > автоматическая зависимость кривая, > Дык, исправляйте. Я не Sun, исправить не могу. рано еще libjvm.so лежать в %_libdir. > > ее надо отфильтровать > Как? см. выше пост. > и вручную написать requires: java-1.6.0 Как мне в спеке автоматом узнать, что нужно именно 1.6.0 писать? напишите requires: java. Если хотите, вручную писать Requires: libjvm.so(SUNWprivate_1.1) то я добавлю Provides: libjvm.so(SUNWprivate_1.1) (не во всех java она есть, напр. в java-1.5.0-gcj нет) > Я не Sun, исправить не могу.
Почему? server/libjvm.so провайдиться, значит и client/libjvm.so может
Эти - /usr/lib/jvm/java-1.6.0-sun-1.6.0.14/jre/lib/amd64/server/libjvm.so()(64bit) /usr/lib/jvm/java-1.6.0-sun-1.6.0.14/jre/lib/amd64/server/libjvm.so(SUNWprivate_1.1)(64bit) мусор, случайно зацепило. надо бы их отфильтровать. они очевидно сломаются для java-1.6.0-sun-1.6.0.15. (В ответ на комментарий №9) > Как мне в спеке автоматом узнать, что нужно именно 1.6.0 писать? > напишите requires: java. т.е. при установке любой другой java программа начнет просто валиться? (В ответ на комментарий №9) > Если хотите, вручную писать Requires: libjvm.so(SUNWprivate_1.1) Как мне автоматом в спеке узнать, какой "чтонибудь(чтото)" добавить в зависимости? Если будет какой-то макрос (его значение не важно, лишь бы привязывал правильно к нужному пакету), то можно будет Requires: %этот_макрос я подумал немного, и решил вам посоветовать линковаться с java 1.6.0 openjdk. это имеет то преимущество, что линковочный путь там определен и не скачет от версии к версии. java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server на x86_64 client/*.so нет, там только server. но если хотите на i386 линковаться с client/*.so могу добавить provides. (В ответ на комментарий №14) > но если хотите на i386 линковаться с client/*.so > могу добавить provides. Я везде хочу с client/livjvm.so Это бэкенд sesame2 из soprano (сейчас не собирается) если точнее, у меня репозиторий soprano-backend-sesame2 (В ответ на комментарий №15) > > но если хотите на i386 линковаться с client/*.so > Я везде хочу с client/livjvm.so > Это бэкенд sesame2 из soprano (сейчас не собирается) напомню, что на amd64 client/livjvm.so нет. и все настольные приложения прекрасно работают с server/libjvm.so (В ответ на комментарий №17)
> напомню, что на amd64 client/livjvm.so нет.
> и все настольные приложения прекрасно работают с server/libjvm.so
Тогда нужно сделать так, чтоб cmake(в моем случае; /usr/share/CMake/Modules/FindJNI.cmake) не находил client/livjvm.so, раз собирать с ней нельзя
SET(JAVA_JVM_LIBRARY_DIRECTORIES) FOREACH(dir ${JAVA_AWT_LIBRARY_DIRECTORIES}) SET(JAVA_JVM_LIBRARY_DIRECTORIES ${JAVA_JVM_LIBRARY_DIRECTORIES} "${dir}" "${dir}/client" "${dir}/server" ) ENDFOREACH(dir) Предлагается вычеркнуть client вообще или как? почему нельзя? можно. вопрос был о автоматических requires. если не хотите их отфильтровать в ручную как в #5, тогда подождите пару дней, я соберу java-1.6.0-openjdk и добавлю туда явные provides чтобы погасить автоматические requires: (В ответ на комментарий №20) > если не хотите их отфильтровать в ручную как в #5, Я согласен на любой кривохак(т.к. не моя ответственность), но чтоб он _работал_ и в автоматическом режиме. Конечно, лучше, чтоб красиво было. rpmquery --provides -p java-1.6.0-openjdk-1.6.0.0-alt11_19.b14jpp6.x86_64.rpm G libjvm /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/libjvm.so()(64bit) /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/libjvm.so(SUNWprivate_1.1)(64bit) сделал, ловите в сизифе! java-1.6.0-openjdk-1.6.0.0-alt11_19.b14jpp6 fixed |