Bug 21812 - не предоставляет libjvm.so(SUNWprivate_1.1)
Summary: не предоставляет libjvm.so(SUNWprivate_1.1)
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: java-1.6.0-sun (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: viy
QA Contact: qa-sisyphus
URL:
Keywords:
: 21813 (view as bug list)
Depends on:
Blocks:
 
Reported: 2009-10-02 18:03 MSD by Sergey V Turchin
Modified: 2009-10-06 20:55 MSD (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey V Turchin 2009-10-02 18:03:18 MSD
программа, у которой в BuildRequires java-devel, собирается в hasher, получая зависимость
/usr/lib/jvm/java-1.6.0-sun-1.6.0.14/jre/lib/i386/client/libjvm.so(SUNWprivate_1.1)
, но никто такой не предоставляет.
Comment 1 viy 2009-10-02 18:30:03 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,
и такую зависимость фильтровать вручную.
Comment 2 Sergey V Turchin 2009-10-02 18:51:16 MSD
(В ответ на комментарий №1)
> и такую зависимость фильтровать вручную.
Как?
Comment 3 Sergey V Turchin 2009-10-02 18:55:33 MSD
А есть разница, с чем линковать? client/libjvm.so или server/libjvm.so ?
А то server/libjvm.so(SUNWprivate_1.1) провайдиться, но, похоже, просто при сборке подгребается client/libjvm.so, т.к. порядок поиска библиотеки такой
Comment 4 viy 2009-10-02 18:58:30 MSD
*** Bug 21813 has been marked as a duplicate of this bug. ***
Comment 5 viy 2009-10-02 19:00:34 MSD
точнее
/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
Comment 6 viy 2009-10-02 19:01:18 MSD
разница в стратегии импльзования памяти.
для настольных приложений лучше client/
Comment 7 viy 2009-10-02 19:03:45 MSD
*** Bug 21813 has been marked as a duplicate of this bug. ***
Comment 8 viy 2009-10-02 19:04:53 MSD
*** Bug 21814 has been marked as a duplicate of this bug. ***
Comment 9 viy 2009-10-02 19:12:52 MSD
> > другими словами,
> > автоматическая зависимость кривая,
> Дык, исправляйте.
Я не 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 нет)
Comment 10 Sergey V Turchin 2009-10-02 19:19:54 MSD
> Я не Sun, исправить не могу.
Почему? server/libjvm.so провайдиться, значит и client/libjvm.so может
Comment 11 viy 2009-10-02 19:24:15 MSD
Эти -
/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.
Comment 12 Sergey V Turchin 2009-10-02 19:27:54 MSD
(В ответ на комментарий №9)
> Как мне в спеке автоматом узнать, что нужно именно 1.6.0 писать?
> напишите requires: java.
т.е. при установке любой другой java программа начнет просто валиться?
Comment 13 Sergey V Turchin 2009-10-02 19:36:43 MSD
(В ответ на комментарий №9)
> Если хотите, вручную писать Requires: libjvm.so(SUNWprivate_1.1)
Как мне автоматом в спеке узнать, какой "чтонибудь(чтото)" добавить в зависимости?
Если будет какой-то макрос (его значение не важно, лишь бы привязывал правильно к нужному пакету), то можно будет
Requires: %этот_макрос
Comment 14 viy 2009-10-02 19:37:41 MSD
я подумал немного, и решил вам посоветовать
линковаться с 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.
Comment 15 Sergey V Turchin 2009-10-02 19:44:07 MSD
(В ответ на комментарий №14)
> но если хотите на i386 линковаться с client/*.so
> могу добавить provides.
Я везде хочу с client/livjvm.so
Это бэкенд sesame2 из soprano (сейчас не собирается)
Comment 16 Sergey V Turchin 2009-10-02 19:56:07 MSD
если точнее, у меня репозиторий soprano-backend-sesame2
Comment 17 viy 2009-10-02 19:57:38 MSD
(В ответ на комментарий №15)
> > но если хотите на i386 линковаться с client/*.so
> Я везде хочу с client/livjvm.so
> Это бэкенд sesame2 из soprano (сейчас не собирается)

напомню, что на amd64 client/livjvm.so нет.
и все настольные приложения прекрасно работают с server/libjvm.so
Comment 18 Sergey V Turchin 2009-10-05 14:05:24 MSD
(В ответ на комментарий №17)
> напомню, что на amd64 client/livjvm.so нет.
> и все настольные приложения прекрасно работают с server/libjvm.so
Тогда  нужно сделать так, чтоб cmake(в моем случае; /usr/share/CMake/Modules/FindJNI.cmake) не находил client/livjvm.so, раз собирать с ней нельзя
Comment 19 Andrey Rahmatullin 2009-10-05 17:26:54 MSD
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 вообще или как?
Comment 20 viy 2009-10-05 19:00:40 MSD
почему нельзя?
можно. вопрос был о автоматических requires.
если не хотите их отфильтровать в ручную как в #5,
тогда подождите пару дней, я соберу java-1.6.0-openjdk 
и добавлю туда явные provides чтобы погасить автоматические requires:
Comment 21 Sergey V Turchin 2009-10-05 20:35:52 MSD
(В ответ на комментарий №20)
> если не хотите их отфильтровать в ручную как в #5,
Я согласен на любой кривохак(т.к. не моя ответственность), но чтоб он _работал_ и в автоматическом режиме.
Конечно, лучше, чтоб красиво было.
Comment 22 viy 2009-10-05 23:20:08 MSD
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)  
сделал, ловите в сизифе!
Comment 23 viy 2009-10-06 20:55:03 MSD
java-1.6.0-openjdk-1.6.0.0-alt11_19.b14jpp6 fixed