<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>18194</bug_id>
          
          <creation_ts>2008-12-11 21:23:56 +0300</creation_ts>
          <short_desc>не хватает boost.system</short_desc>
          <delta_ts>2008-12-12 15:07:47 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>boost-filesystem-devel</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>NOTABUG</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandre Prokoudine">alexandre.prokoudine</reporter>
          <assigned_to name="Ivan A. Melnikov">iv</assigned_to>
          <cc>iv</cc>
    
    <cc>ldv</cc>
    
    <cc>php-coder</cc>
    
    <cc>sem</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>82641</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandre Prokoudine">alexandre.prokoudine</who>
    <bug_when>2008-12-11 21:23:56 +0300</bug_when>
    <thetext>При сборке Niepce Digital вываливается ошибка

checking for the Boost filesystem library... no
configure: error: Could not find the flags to link with Boost filesystem

при установленном пакете boost-filesystem-devel.

config.log: http://pastebin.ca/1282814

Разработчик говорит:

&gt;hub&lt; there is something definitely broken in your distro
 apparently you miss boost.system
 I don&apos;t know why
 try installing its devel package
 but if that is the case, file a bug to ALT Linux telling them about the missing dependency</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82648</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2008-12-12 13:20:01 +0300</bug_when>
    <thetext>Boost.System в 1.36.0-altX является частью пакета boost-devel, от которого boost-filesystem-devel зависит, поэтому всё, что необходимо, уже должно присутсвовать в вашей системе.

В логах по ссылке заметил единственную существенную ошибку:


configure:26176: g++ -o conftest -g -O2 -DNDEBUG   -DNDEBUG -pedantic -Wall -Wcast-align -Wcast-qual -Wpointer-arith -Wreturn-type -I/usr/include  -L/usr/lib conftest.o -lboost_filesystem-mt  &gt;&amp;5
conftest.o: In function `__static_initialization_and_destruction_0&apos;:
/usr/include/boost/system/error_code.hpp:205: undefined reference to `boost::system::get_system_category()&apos;
/usr/include/boost/system/error_code.hpp:206: undefined reference to `boost::system::get_generic_category()&apos;
/usr/include/boost/system/error_code.hpp:210: undefined reference to `boost::system::get_generic_category()&apos;
/usr/include/boost/system/error_code.hpp:211: undefined reference to `boost::system::get_generic_category()&apos;
/usr/include/boost/system/error_code.hpp:212: undefined reference to `boost::system::get_system_category()&apos;
collect2: ld returned 1 exit status

это ошибка компоновщика, которая говорит, что
  * в вашей системе есть заголовочные файлы из Boost.System
  * приложению, (пусть и не напрямую) включающему их, необходимо явно компоноваться с -lboost_system-mt.

Попробуйте объяснить это configure. Могу и сам посмотреть, если дадите ссылку на исходники (с наскока не осознал, где же у них правильный svn. Я так понимаю, тарболов они пока не выкладывали?).

И ещё, Alexandre, не могли бы вы показать (для полной уверенности) вывод следующих команд:

$ rpm -qa boost-devel
$ ls /usr/lib/*boost*.so

Заранее благодарю.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82649</commentid>
    <comment_count>2</comment_count>
    <who name="Alexandre Prokoudine">alexandre.prokoudine</who>
    <bug_when>2008-12-12 13:28:06 +0300</bug_when>
    <thetext>svn checkout http://svn.gnome.org/svn/niepce/trunk niepce

Только что переехал туда из gna.org, но роли это не играет.

Возникает подозрение, что это из-за специфических правил линковки в альте :-/ Хотя еще два месяца назад собиралось, да и до сих пор вот на машинке старая версия программы запускается.

$ rpm -qa boost-devel 
boost-devel-1.36.0-alt3

$ ls -lh /usr/lib/*boost*.so
lrwxrwxrwx 1 root root 31 Окт 20 17:15 /usr/lib/libboost_date_time-mt.so -&gt; libboost_date_time-mt.so.1.36.0
lrwxrwxrwx 1 root root 28 Окт 20 17:15 /usr/lib/libboost_date_time.so -&gt; libboost_date_time.so.1.36.0
lrwxrwxrwx 1 root root 32 Окт 20 17:15 /usr/lib/libboost_filesystem-mt.so -&gt; libboost_filesystem-mt.so.1.36.0
lrwxrwxrwx 1 root root 29 Окт 20 17:15 /usr/lib/libboost_filesystem.so -&gt; libboost_filesystem.so.1.36.0
lrwxrwxrwx 1 root root 27 Окт 20 17:15 /usr/lib/libboost_graph-mt.so -&gt; libboost_graph-mt.so.1.36.0
lrwxrwxrwx 1 root root 24 Окт 20 17:15 /usr/lib/libboost_graph.so -&gt; libboost_graph.so.1.36.0
lrwxrwxrwx 1 root root 31 Окт 20 17:15 /usr/lib/libboost_iostreams-mt.so -&gt; libboost_iostreams-mt.so.1.36.0
lrwxrwxrwx 1 root root 28 Окт 20 17:15 /usr/lib/libboost_iostreams.so -&gt; libboost_iostreams.so.1.36.0
lrwxrwxrwx 1 root root 38 Окт 20 17:15 /usr/lib/libboost_prg_exec_monitor-mt.so -&gt; libboost_prg_exec_monitor-mt.so.1.36.0
lrwxrwxrwx 1 root root 35 Окт 20 17:15 /usr/lib/libboost_prg_exec_monitor.so -&gt; libboost_prg_exec_monitor.so.1.36.0
lrwxrwxrwx 1 root root 27 Окт 20 17:15 /usr/lib/libboost_regex-mt.so -&gt; libboost_regex-mt.so.1.36.0
lrwxrwxrwx 1 root root 24 Окт 20 17:15 /usr/lib/libboost_regex.so -&gt; libboost_regex.so.1.36.0
lrwxrwxrwx 1 root root 35 Окт 20 17:15 /usr/lib/libboost_serialization-mt.so -&gt; libboost_serialization-mt.so.1.36.0
lrwxrwxrwx 1 root root 32 Окт 20 17:15 /usr/lib/libboost_serialization.so -&gt; libboost_serialization.so.1.36.0
lrwxrwxrwx 1 root root 29 Окт 20 17:15 /usr/lib/libboost_signals-mt.so -&gt; libboost_signals-mt.so.1.36.0
lrwxrwxrwx 1 root root 26 Окт 20 17:15 /usr/lib/libboost_signals.so -&gt; libboost_signals.so.1.36.0
lrwxrwxrwx 1 root root 28 Окт 20 17:15 /usr/lib/libboost_system-mt.so -&gt; libboost_system-mt.so.1.36.0
lrwxrwxrwx 1 root root 25 Окт 20 17:15 /usr/lib/libboost_system.so -&gt; libboost_system.so.1.36.0
lrwxrwxrwx 1 root root 28 Окт 20 17:15 /usr/lib/libboost_thread-mt.so -&gt; libboost_thread-mt.so.1.36.0
lrwxrwxrwx 1 root root 41 Окт 20 17:15 /usr/lib/libboost_unit_test_framework-mt.so -&gt; libboost_unit_test_framework-mt.so.1.36.0
lrwxrwxrwx 1 root root 38 Окт 20 17:15 /usr/lib/libboost_unit_test_framework.so -&gt; libboost_unit_test_framework.so.1.36.0
lrwxrwxrwx 1 root root 26 Окт 20 17:15 /usr/lib/libboost_wave-mt.so -&gt; libboost_wave-mt.so.1.36.0
lrwxrwxrwx 1 root root 23 Окт 20 17:15 /usr/lib/libboost_wave.so -&gt; libboost_wave.so.1.36.0
lrwxrwxrwx 1 root root 36 Окт 20 17:15 /usr/lib/libboost_wserialization-mt.so -&gt; libboost_wserialization-mt.so.1.36.0
lrwxrwxrwx 1 root root 33 Окт 20 17:15 /usr/lib/libboost_wserialization.so -&gt; libboost_wserialization.so.1.36.0
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82650</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Rahmatullin">wrar</who>
    <bug_when>2008-12-12 14:10:07 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; Возникает подозрение, что это из-за специфических правил линковки в альте :-/
Правила они такие, да. Помогают ошибки находить, которые у других не видны.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82652</commentid>
    <comment_count>4</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2008-12-12 14:25:20 +0300</bug_when>
    <thetext>Не факт, что это такая уж ошибка в апстриме. Вот минималистичный пример:

$ ls
testme.cpp
$ cat testme.cpp 

#include &lt;boost/filesystem/path.hpp&gt;

int main()
{
    return 0;
}

$ g++ testme.cpp -lboost_filesystem 
/home/iv/tmp/ccw8YQ4k.o: In function `__static_initialization_and_destruction_0(int, int)&apos;:
testme.cpp:(.text+0x29): undefined reference to `boost::system::get_system_category()&apos;
testme.cpp:(.text+0x35): undefined reference to `boost::system::get_generic_category()&apos;
testme.cpp:(.text+0x41): undefined reference to `boost::system::get_generic_category()&apos;
testme.cpp:(.text+0x4d): undefined reference to `boost::system::get_generic_category()&apos;
testme.cpp:(.text+0x59): undefined reference to `boost::system::get_system_category()&apos;
collect2: ld returned 1 exit status
$ g++ testme.cpp -lboost_filesystem -lboost_system
$ ls
a.out  testme.cpp

Ну и на всякий случай:
$ ldd /usr/lib64/libboost_filesystem.so | grep system
	libboost_system.so.1.36.0 =&gt; /usr/lib64/libboost_system.so.1.36.0 (0x00007f1e97a33000)

Мне почему-то казалось, что такие зависимости должны разрешаться компоновщиком, и похоже раньше (пару месяцев назад, по словам OP) разрешались. Я чего-то недопонимаю или это проблема нового тулчейна?

2ldv@: мне кажется, здесь нужен ваш совет.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82653</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2008-12-12 14:39:20 +0300</bug_when>
    <thetext>(In reply to comment #4)
&gt; Не факт, что это такая уж ошибка в апстриме. Вот минималистичный пример:
&gt; 
&gt; $ ls
&gt; testme.cpp
&gt; $ cat testme.cpp 
&gt; 
&gt; #include &lt;boost/filesystem/path.hpp&gt;
&gt; 
&gt; int main()
&gt; {
&gt;     return 0;
&gt; }
&gt; 
&gt; $ g++ testme.cpp -lboost_filesystem 
&gt; /home/iv/tmp/ccw8YQ4k.o: In function `__static_initialization_and_destruction_0(int, int)&apos;:
&gt; testme.cpp:(.text+0x29): undefined reference to `boost::system::get_system_category()&apos;
&gt; testme.cpp:(.text+0x35): undefined reference to `boost::system::get_generic_category()&apos;
&gt; testme.cpp:(.text+0x41): undefined reference to `boost::system::get_generic_category()&apos;
&gt; testme.cpp:(.text+0x4d): undefined reference to `boost::system::get_generic_category()&apos;
&gt; testme.cpp:(.text+0x59): undefined reference to `boost::system::get_system_category()&apos;
&gt; collect2: ld returned 1 exit status
&gt; $ g++ testme.cpp -lboost_filesystem -lboost_system
&gt; $ ls
&gt; a.out  testme.cpp

Ситуация типичная: testme.o использует -lboost_system вместо -lboost_filesystem, но не линкуется с этой библиотекой; --as-needed быстро выявляет такие ошибки.

В случае необходимости частого объезда можно превратить libboost_filesystem.so в linker script наподобие libncurses.so
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82654</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandre Prokoudine">alexandre.prokoudine</who>
    <bug_when>2008-12-12 15:03:17 +0300</bug_when>
    <thetext>@ldv

Это всё очень мило, но апстриму-то что говорить? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82655</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2008-12-12 15:07:47 +0300</bug_when>
    <thetext>(In reply to comment #6)
&gt; @ldv
&gt; 
&gt; Это всё очень мило, но апстриму-то что говорить? :)

Говорить: please adjust your test ... to link also with -lboost_system.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>