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

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

    <bug>
          <bug_id>21559</bug_id>
          
          <creation_ts>2009-09-14 00:08:36 +0400</creation_ts>
          <short_desc>libpng12(PNG12_0) broken after the transition from PNG_12</short_desc>
          <delta_ts>2009-09-19 22:37:19 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>libpng12</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="avm">avm</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>glebfm</cc>
    
    <cc>ldv</cc>
    
    <cc>php-coder</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99025</commentid>
    <comment_count>0</comment_count>
    <who name="avm">avm</who>
    <bug_when>2009-09-14 00:08:36 +0400</bug_when>
    <thetext>После исправления #12886 в libpng12 изменился интерфейс PNG12_0: до исправления он был пуст, а теперь содержит почти все символы библиотеки. Это ломает точечные обновления с бранчей. Пример:

$ rpm -q libpng12 libgtk+2-common
libpng12-1.2.27-alt1
libgtk+2-common-2.16.5-alt4
$ cd /usr/lib/gtk-2.0/2.10.0/loaders/
$ ldd -r libpixbufloader-png.so | cut -d&apos; &apos; -f1-6 | head -5
symbol png_get_valid, version PNG12_0 not defined
symbol png_error, version PNG12_0 not defined
symbol png_write_info, version PNG12_0 not defined
symbol png_destroy_read_struct, version PNG12_0 not defined
symbol png_set_IHDR, version PNG12_0 not defined

Чтобы это обойти, можно попробовать поменять местами интерфейсы: PNG_12 сделать основным, а PNG12_0 добавить как compat. Надеюсь, новособранное будет цепляться на PNG_12 и пользоваться той библиотекой, которая есть. (Или можно все перевесить на PNG12_0_ALT, а compat&apos;ами оставить PNG_12 и PNG12_0.)

Кроме того, в спеки пользователей libpng12, видимо, пока желательно добавлять что-то вроде

# Until libpng12.so.0 changes soname, work around a bug in symbol versioning
Requires: libpng &gt;= 1.2.37-alt3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99434</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-09-19 00:14:11 +0400</bug_when>
    <thetext>Ну хорошо, давайте попробуем снова поменять местами PNG_12 и PNG12_0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99447</commentid>
    <comment_count>2</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2009-09-19 01:47:55 +0400</bug_when>
    <thetext>libpng-1.2.40-alt2 -&gt; sisyphus:

* Fri Sep 18 2009 Dmitry V. Levin &lt;ldv@altlinux&gt; 1.2.40-alt2

- libpng12: Swapped PNG_12 and PNG12_0 interfaces again (closes: #21559).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99514</commentid>
    <comment_count>3</comment_count>
    <who name="avm">avm</who>
    <bug_when>2009-09-19 21:34:43 +0400</bug_when>
    <thetext>On second thought, второе решение (сделать новый интерфейс PNG12_0_ALT) было бы лучше: тогда вновь собранные пакеты вытягивали бы новый libpng12, с гарантированно хорошим PNG12_0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99515</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-09-19 22:19:11 +0400</bug_when>
    <thetext>Отчего же?  Вновь собранные пакеты будут вытягивать PNG_12, который всегда был хорошим.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99517</commentid>
    <comment_count>5</comment_count>
    <who name="avm">avm</who>
    <bug_when>2009-09-19 22:37:19 +0400</bug_when>
    <thetext>Требовать хороший PNG12_0 полезно, чтобы обеспечить работоспособность непересобранных пакетов (которые пользуются PNG12_0, но не требуют, чтобы он был хорошим).

Собственно, я наткнулся на этот баг, обновляя evince. Он вытянул libgtk+2-common, у которого обломался файлтриггер (потому что gdk-pixbuf-query-loaders попытался подгрузить loader для PNG и упал с неразрешенными символами).

Представим себе теперь, что кто-то добрый пересобрал libqt3, и человек со старым libpng12 обновляет себе libqt3, а затем libgtk+2-common. В текущей ситуации файлтриггер в libgtk+2-common снова обломается. А вот если бы пересобранный libqt3 заботливо вытянул свежий libpng12, то файлтриггер сработал бы. (Представляете -- QT заботится о GTK! Практически как если бы волк и агнец паслись вместе.)</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>