Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 238583

Summary: mail-mta/postfix-2.5.5 [multilib] - ld: cannot find -lmysqlclient
Product: Gentoo Linux Reporter: Xuefer <xuefer>
Component: EclassesAssignee: Net-Mail Packages <net-mail+disabled>
Status: VERIFIED NEEDINFO    
Severity: normal    
Priority: High    
Version: unspecified   
Hardware: AMD64   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: emerge --info

Description Xuefer 2008-09-24 16:21:32 UTC
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lmysqlclient
i don't think this bug is dup of #78724 or #78678 which was years ago

see /usr/portage/mail-mta/postfix/postfix-2.5.5.ebuild
    if use mysql ; then
        mycc="${mycc} -DHAS_MYSQL $(mysql_config --include)"
        mylibs="${mylibs} -lmysqlclient -lm -lz"
    fi

    if use postgres ; then
        mycc="${mycc} -DHAS_PGSQL -I$(pg_config --includedir)"
        mylibs="${mylibs} -lpq -L$(pg_config --libdir)"
    fi

there is -L for postgres, but why not for mysql? simply because there's no --libdir option for mysql_config does not mean it will work without -L

Reproducible: Always

Steps to Reproduce:




== error output from emerging postfix ============
x86_64-pc-linux-gnu-gcc -DHAS_PCRE -DHAS_MYSQL -I/usr/include/mysql -DUSE_TLS -DDEF_DAEMON_DIR=\"/usr/lib64/postfix\" -DDEF_MANPAGE_DIR=\"/usr/share/man\" -DDEF_README_DIR=\"/usr/share/doc/postfix-2.5.5/readme\" -DDEF_HTML_DIR=\"/usr/share/doc/postfix-2.5.5/html\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE  -O2 -march=nocona -pipe -fomit-frame-pointer -funit-at-a-time -I. -I../../include -DLINUX2 -c master_flow.c
ar rv libmaster.a single_server.o multi_server.o trigger_server.o master_proto.o mail_flow.o
ar: creating libmaster.a
a - single_server.o
a - multi_server.o
a - trigger_server.o
a - master_proto.o
a - mail_flow.o
ranlib libmaster.a
cp libmaster.a ../../lib/libmaster.a
ranlib ../../lib/libmaster.a
x86_64-pc-linux-gnu-gcc -DHAS_PCRE -DHAS_MYSQL -I/usr/include/mysql -DUSE_TLS -DDEF_DAEMON_DIR=\"/usr/lib64/postfix\" -DDEF_MANPAGE_DIR=\"/usr/share/man\" -DDEF_README_DIR=\"/usr/share/doc/postfix-2.5.5/readme\" -DDEF_HTML_DIR=\"/usr/share/doc/postfix-2.5.5/html\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE  -O2 -march=nocona -pipe -fomit-frame-pointer -funit-at-a-time -I. -I../../include -DLINUX2 -o master master.o master_conf.o master_ent.o master_sig.o master_avail.o master_spawn.o master_service.o master_status.o master_listen.o master_vars.o master_wakeup.o master_flow.o ../../lib/libglobal.a ../../lib/libutil.a -Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s -lpcre -lcrypt -lpthread -lpam -lmysqlclient -lm -lz -lssl -lcrypto -ldb -lnsl -lresolv
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
make: *** [master] Error 1
make: *** [update] Error 1
 *
 * ERROR: mail-mta/postfix-2.5.5 failed.
 * Call stack:
 *               ebuild.sh, line   49:  Called src_compile
 *             environment, line 2859:  Called die
 * The specific snippet of code:
 *       emake || die "compile problem"
 *  The die message:
 *   compile problem
 *
 * If you need support, post the topmost build error, and the call stack if relevant.
 * A complete build log is located at '/var/tmp/portage/mail-mta/postfix-2.5.5/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/mail-mta/postfix-2.5.5/temp/environment'.



=== let's strace it ==========================
# cd /var/tmp/portage/mail-mta/postfix-2.5.5/work/postfix-2.5.5/src/master
# strace -f x86_64-pc-linux-gnu-gcc -DHAS_PCRE -DHAS_MYSQL -I/usr/include/mysql -DUSE_TLS -DDEF_DAEMON_DIR=\"/usr/lib64/postfix\" -DDEF_MANPAGE_DIR=\"/usr/share/man\" -DDEF_README_DIR=\"/usr/share/doc/postfix-2.5.5/readme\" -DDEF_HTML_DIR=\"/usr/share/doc/postfix-2.5.5/html\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE  -O2 -march=nocona -pipe -fomit-frame-pointer -funit-at-a-time -I. -I../../include -DLINUX2 -o master master.o master_conf.o master_ent.o master_sig.o master_avail.o master_spawn.o master_service.o master_status.o master_listen.o master_vars.o master_wakeup.o master_flow.o ../../lib/libglobal.a ../../lib/libutil.a -Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s -lpcre -lcrypt -lpthread -lpam -lmysqlclient -lm -lz -lssl -lcrypto -ldb -lnsl -lresolv 2>&1 |grep libmy
[pid 26790] open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../lib64/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../lib64/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/lib/../lib64/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/lib/../lib64/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/../lib64/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/../lib64/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../x86_64-pc-linux-gnu/lib/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../x86_64-pc-linux-gnu/lib/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/x86_64-pc-linux-gnu/binutils-bin/2.18/../../lib/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/x86_64-pc-linux-gnu/binutils-bin/2.18/../../lib/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/x86_64-pc-linux-gnu/lib64/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/x86_64-pc-linux-gnu/lib64/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib64/binutils/x86_64-pc-linux-gnu/2.1864/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib64/binutils/x86_64-pc-linux-gnu/2.1864/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/local/lib64/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/local/lib64/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/lib64/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/lib64/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib64/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib64/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/x86_64-pc-linux-gnu/lib/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/x86_64-pc-linux-gnu/lib/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib64/binutils/x86_64-pc-linux-gnu/2.18/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib64/binutils/x86_64-pc-linux-gnu/2.18/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/local/lib/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/local/lib/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/lib/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/lib/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/libmysqlclient.so", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 26790] open("/usr/lib/libmysqlclient.a", O_RDONLY) = -1 ENOENT (No such file or directory)


=== check where libmysqlclient is ===
# equery files mysql |grep mysqlclient
/usr/lib64/mysql/libmysqlclient.a
/usr/lib64/mysql/libmysqlclient.la
/usr/lib64/mysql/libmysqlclient_r.a
/usr/lib64/mysql/libmysqlclient_r.la


# equery list mysql
[I--] [  ] dev-db/mysql-5.0.60-r1 (0)
[I--] [  ] dev-db/mysql-init-scripts-1.2 (0)
[I--] [  ] dev-perl/DBD-mysql-4.00.5 (0)
[I--] [  ] virtual/mysql-5.0 (0)
root@static /usr/portage/mail-mta/postf
Comment 1 Wormo (RETIRED) gentoo-dev 2008-09-24 17:32:15 UTC
Please post your 'emerge --info' output. Good observation about the discrepency between postgreql and mysql flags, seems like 'mysql_config --libs' would be a useful equivalent; we'll see what the net-mail team has to say after you post 'emerge --info' :)
Comment 2 Tobias Scherbaum (RETIRED) gentoo-dev 2008-12-27 18:49:58 UTC
(In reply to comment #1)
> Please post your 'emerge --info' output.
Timeout.

Provide the requested information and feel free to reopen this bug then. Please also check if you have /usr/lib64/libmysqlclient.so which should be a link to  mysql/libmysqlclient.so.15.0.0 and note which mysql version you're using.
Comment 3 Xuefer 2008-12-28 02:53:42 UTC
Created attachment 176562 [details]
emerge --info
Comment 4 Xuefer 2008-12-28 02:57:47 UTC
sorry, i didn't get the notify email about this bug status change
emerge --info output is attached, but i've upgraded mysql some time ago. looks like it is fixed

# equery files mysql |grep mysqlclient
/usr/lib64/libmysqlclient.so
/usr/lib64/libmysqlclient.so.15
/usr/lib64/libmysqlclient.so.15.0
/usr/lib64/libmysqlclient.so.15.0.0
/usr/lib64/libmysqlclient_r.so
/usr/lib64/libmysqlclient_r.so.15
/usr/lib64/libmysqlclient_r.so.15.0
/usr/lib64/libmysqlclient_r.so.15.0.0
/usr/lib64/mysql/libmysqlclient.a
/usr/lib64/mysql/libmysqlclient.la
/usr/lib64/mysql/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so.15
/usr/lib64/mysql/libmysqlclient.so.15.0.0
/usr/lib64/mysql/libmysqlclient_r.a
/usr/lib64/mysql/libmysqlclient_r.la
/usr/lib64/mysql/libmysqlclient_r.so
/usr/lib64/mysql/libmysqlclient_r.so.15
/usr/lib64/mysql/libmysqlclient_r.so.15.0.0