<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>204343</bug_id>
          
          <creation_ts>2008-01-04 22:49 0000</creation_ts>
          <short_desc>dev-lang/python-2.5.1-r4 links against sys-libs/db-1.85-r3</short_desc>
          <delta_ts>2008-01-07 17:50:43 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Unspecified</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>ed@catmur.co.uk</reporter>
          <assigned_to>python@gentoo.org</assigned_to>
          

      

      
          <long_desc isprivate="0">
            <who>ed@catmur.co.uk</who>
            <bug_when>2008-01-04 22:49:13 0000</bug_when>
            <thetext># ldd /usr/lib/python2.5/lib-dynload/dbm.so
	linux-gate.so.1 =&gt;  (0xffffe000)
	libdb1.so.2 =&gt; /usr/lib/libdb1.so.2 (0xb7f7e000)
	libpython2.5.so.1.0 =&gt; /usr/lib/libpython2.5.so.1.0 (0xb7e47000)
	libpthread.so.0 =&gt; /lib/libpthread.so.0 (0xb7e2f000)
	libc.so.6 =&gt; /lib/libc.so.6 (0xb7cfa000)
	libdl.so.2 =&gt; /lib/libdl.so.2 (0xb7cf6000)
	libutil.so.1 =&gt; /lib/libutil.so.1 (0xb7cf2000)
	libm.so.6 =&gt; /lib/libm.so.6 (0xb7ccd000)
	/lib/ld-linux.so.2 (0x80000000)
# ls -l /usr/lib/libdb1.so.2
-rwxr-xr-x 1 root root 56640 2007-01-09 06:04 /usr/lib/libdb1.so.2*
# dep -F /usr/lib/libdb1.so.2
/usr/lib/libdb1.so.2:
    sys-libs/db-1.85-r3

The libdb1 link dependency is creeping in as -lndbm:
...
building &apos;dbm&apos; extension
i686-pc-linux-gnu-gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -ggdb -O1 -O2 -O3 -pipe -march=athlon-xp -mmmx -msse -m3dnow -DHAVE_NDBM_H -I. -I/var/tmp/portage/dev-lang/python-2.5.1-r4/work/Python-2.5.1/./Include -I./Include -I. -I/usr/local/include -I/var/tmp/portage/dev-lang/python-2.5.1-r4/work/Python-2.5.1/Include -I/var/tmp/portage/dev-lang/python-2.5.1-r4/work/Python-2.5.1 -c /var/tmp/portage/dev-lang/python-2.5.1-r4/work/Python-2.5.1/Modules/dbmmodule.c -o build/temp.linux-i686-2.5/var/tmp/portage/dev-lang/python-2.5.1-r4/work/Python-2.5.1/Modules/dbmmodule.o
i686-pc-linux-gnu-gcc -pthread -shared -Wl,--as-needed -L. -fno-strict-aliasing -DNDEBUG -ggdb -O1 -O2 -O3 -pipe -march=athlon-xp -mmmx -msse -m3dnow -I. -I./Include build/temp.linux-i686-2.5/var/tmp/portage/dev-lang/python-2.5.1-r4/work/Python-2.5.1/Modules/dbmmodule.o -L/usr/local/lib -L. -lndbm -lpython2.5 -o build/lib.linux-i686-2.5/dbm.so
...
# ls -l /usr/lib/libndbm.so 
lrwxrwxrwx 1 root root 11 2007-01-09 06:04 /usr/lib/libndbm.so -&gt; libdb1.so.2*</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ed@catmur.co.uk</who>
            <bug_when>2008-01-04 22:51:36 0000</bug_when>
            <thetext>From Setup.py:
        # The standard Unix dbm module:
        if platform not in [&apos;cygwin&apos;]:
            if find_file(&quot;ndbm.h&quot;, inc_dirs, []) is not None:
                # Some systems have -lndbm, others don&apos;t
                if self.compiler.find_library_file(lib_dirs, &apos;ndbm&apos;):
                    ndbm_libs = [&apos;ndbm&apos;]
                else:
                    ndbm_libs = []
                exts.append( Extension(&apos;dbm&apos;, [&apos;dbmmodule.c&apos;],
                                       define_macros=[(&apos;HAVE_NDBM_H&apos;,None)],
                                       libraries = ndbm_libs ) )
            elif (self.compiler.find_library_file(lib_dirs, &apos;gdbm&apos;)
                  and find_file(&quot;gdbm/ndbm.h&quot;, inc_dirs, []) is not None):
                exts.append( Extension(&apos;dbm&apos;, [&apos;dbmmodule.c&apos;],
                                       define_macros=[(&apos;HAVE_GDBM_NDBM_H&apos;,None)],
                                       libraries = [&apos;gdbm&apos;] ) )
            elif db_incs is not None:
                exts.append( Extension(&apos;dbm&apos;, [&apos;dbmmodule.c&apos;],
                                       library_dirs=dblib_dir,
                                       runtime_library_dirs=dblib_dir,
                                       include_dirs=db_incs,
                                       define_macros=[(&apos;HAVE_BERKDB_H&apos;,None),
                                                      (&apos;DB_DBM_HSEARCH&apos;,None)],
                                       libraries=dblibs))

So, it will link against libndbm and thus against db-1* even if a later version of db is available.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ed@catmur.co.uk</who>
            <bug_when>2008-01-04 22:52:17 0000</bug_when>
            <thetext>Created an attachment (id=140131)
db-not-ndbm.patch

Suggested patch.  Testing now.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ed@catmur.co.uk</who>
            <bug_when>2008-01-04 23:07:56 0000</bug_when>
            <thetext>Yes, that works.  Could this explain bug 192611?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hawking@gentoo.org</who>
            <bug_when>2008-01-07 17:50:43 0000</bug_when>
            <thetext>Hi, I&apos;ve changed your patch a little bit[1] to solve the automagic dependency problem. With this patch when gdbm USE flag is enabled, dbm module will be built using gdbm&apos;s ndbm compat libraries and when berkdb USE flag is enabled dbm will be built using berkdb. When both flags are enabled gdbm&apos;s compat library will be used to respect upstream&apos;s order in setup.py. Thanks for reporting ;)

1: http://overlays.gentoo.org/proj/python/browser/patches/2.5.1       /15_all_dbm_default_gdbm_compat.patch</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140131</attachid>
            <date>2008-01-04 22:52 0000</date>
            <desc>db-not-ndbm.patch</desc>
            <filename>db-not-ndbm.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">LS0tIFB5dGhvbi0yLjUuMS9zZXR1cC5weQkyMDA4LzAxLzA0IDIyOjM5OjU2CTEuMQorKysgUHl0
aG9uLTIuNS4xL3NldHVwLnB5CTIwMDgvMDEvMDQgMjI6NDE6NDgKQEAgLTg2Myw3ICs4NjMsMTUg
QEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogCiAgICAgICAgICMgVGhlIHN0YW5kYXJk
IFVuaXggZGJtIG1vZHVsZToKICAgICAgICAgaWYgcGxhdGZvcm0gbm90IGluIFsnY3lnd2luJ106
Ci0gICAgICAgICAgICBpZiBmaW5kX2ZpbGUoIm5kYm0uaCIsIGluY19kaXJzLCBbXSkgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBpZiBkYl9pbmNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ2RibScsIFsnZGJtbW9kdWxlLmMnXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1kYmxpYl9kaXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlf
ZGlycz1kYmxpYl9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlX2RpcnM9ZGJfaW5jcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmluZV9tYWNyb3M9WygnSEFWRV9CRVJLREJfSCcsTm9uZSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0RCX0RCTV9IU0VBUkNI
JyxOb25lKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJp
ZXM9ZGJsaWJzKSkKKyAgICAgICAgICAgIGVsaWYgZmluZF9maWxlKCJuZGJtLmgiLCBpbmNfZGly
cywgW10pIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICMgU29tZSBzeXN0ZW1zIGhhdmUg
LWxuZGJtLCBvdGhlcnMgZG9uJ3QKICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbXBpbGVyLmZp
bmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnbmRibScpOgogICAgICAgICAgICAgICAgICAgICBu
ZGJtX2xpYnMgPSBbJ25kYm0nXQpAQCAtODc3LDE0ICs4ODUsNiBAQCBjbGFzcyBQeUJ1aWxkRXh0
KGJ1aWxkX2V4dCk6CiAgICAgICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignZGJt
JywgWydkYm1tb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmaW5lX21hY3Jvcz1bKCdIQVZFX0dEQk1fTkRCTV9IJyxOb25lKV0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ2dkYm0nXSApICkKLSAg
ICAgICAgICAgIGVsaWYgZGJfaW5jcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBleHRz
LmFwcGVuZCggRXh0ZW5zaW9uKCdkYm0nLCBbJ2RibW1vZHVsZS5jJ10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9ZGJsaWJfZGlyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZV9saWJyYXJ5X2RpcnM9ZGJs
aWJfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9k
aXJzPWRiX2luY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZp
bmVfbWFjcm9zPVsoJ0hBVkVfQkVSS0RCX0gnLE5vbmUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdEQl9EQk1fSFNFQVJDSCcsTm9uZSld
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPWRibGli
cykpCiAKICAgICAgICAgIyBBbnRob255IEJheHRlcidzIGdkYm0gbW9kdWxlLiAgR05VIGRibSgz
KSB3aWxsIHJlcXVpcmUgLWxnZGJtOgogICAgICAgICBpZiAoc2VsZi5jb21waWxlci5maW5kX2xp
YnJhcnlfZmlsZShsaWJfZGlycywgJ2dkYm0nKSk6Cg==
</data>        

          </attachment>
    </bug>

</bugzilla>