make makefiles CCARGS="-DHAS_MYSQL -I/usr/include/mysql" AUXLIBS="-L/usr/lib/mysql -lmysqlclient -lz -lm -lssl -lpthread -lcrypto" || return 1
make OPT="${CFLAGS}" || return 1
Still resulting in a 13MB package file, but I guess I can live with it if it IS supposed to be that large.
]]>I build postfixt with mysql/postgresql and sasl support ( with a tls patch).
jojapa, what size is your resultant postfix tarball? Mine built with mysql support is 13MB. yikes!
(builder@kif postfix)$ pwd
/var/abs/local/postfix/pkg/usr/lib/postfix
(builder@kif postfix)$ du -csh *
1.2M bounce
1.2M cleanup
1.2M error
1.1M flush
1.2M lmtp
1.2M local
108K master
1.2M nqmgr
1.2M oqmgr
1.1M pickup
1.2M pipe
1.1M proxymap
1.2M qmqpd
1.2M showq
1.2M smtp
1.3M smtpd
1.1M spawn
1.2M trivial-rewrite
1.1M verify
1.2M virtual
22M total
I assume the mysql lib includes added make up the difference..but it is considerably larger...
compare with the default build from abs..
156K bounce
196K cleanup
144K error
136K flush
176K lmtp
208K local
108K master
180K nqmgr
172K oqmgr
136K pickup
164K pipe
120K proxymap
152K qmqpd
136K showq
192K smtp
244K smtpd
128K spawn
140K trivial-rewrite
128K verify
160K virtual
3.2M total
Did something go amok in my includes syntax? Did I include too much?
]]>I changed the line in the PKGBUILD to:
make OPT="${CFLAGS}" CCARGS="${CCARGS} -DHAS_MYSQL -I/usr/include/mysql -DUSE_SSL " AUXLIBS="${AUXLIBS} -L/usr/lib/mysql -lmysqlclient -lz -lm -lssl -lcrypto " || return 1
and it worked.
*smacks forehead*
[user@host ~]# postconf -m
static
cidr
pcre
nis
regexp
environ
mysql
proxy
btree
unix
hash
]]>
I did some googling, and found this:
http://www.mail-archive.com/freebsd-que … 55583.html
That is about the exact errors that I am getting.
Anyone have any ideas?
[src/error]
gcc -Wmissing-prototypes -Wformat -DHAS_MYSQL -I/usr/include/mysql -DHAS_PCRE -g -march=i686 -O2 -pipe -I. -I../../include -DLINUX2 -c error.c
gcc -Wmissing-prototypes -Wformat -DHAS_MYSQL -I/usr/include/mysql -DHAS_PCRE -g -march=i686 -O2 -pipe -I. -I../../include -DLINUX2 -o error error.o ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a -L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lpcre -ldb -lnsl -lresolv
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x36): In function `report_errors':
: undefined reference to `ERR_get_error_line_data'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0xc7): In function `vio_ssl_read':
: undefined reference to `SSL_read'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0xee): In function `vio_ssl_read':
: undefined reference to `SSL_get_error'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x132): In function `vio_ssl_write':
: undefined reference to `SSL_write'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x305): In function `vio_ssl_close':
: undefined reference to `SSL_shutdown'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x315): In function `vio_ssl_close':
: undefined reference to `SSL_free'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x46f): In function `sslaccept':: undefined reference to `SSL_new'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x4cb): In function `sslaccept':: undefined reference to `SSL_clear'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x4d9): In function `sslaccept':: undefined reference to `SSL_get_session'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x4e8): In function `sslaccept':: undefined reference to `SSL_SESSION_set_timeout'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x4fc): In function `sslaccept':: undefined reference to `SSL_set_fd'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x50a): In function `sslaccept':: undefined reference to `SSL_set_accept_state'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x518): In function `sslaccept':: undefined reference to `SSL_do_handshake'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x52e): In function `sslaccept':: undefined reference to `SSL_get_peer_certificate'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x53e): In function `sslaccept':: undefined reference to `X509_get_subject_name'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x550): In function `sslaccept':: undefined reference to `X509_NAME_oneline'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x560): In function `sslaccept':: undefined reference to `X509_get_issuer_name'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x574): In function `sslaccept':: undefined reference to `X509_NAME_oneline'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x584): In function `sslaccept':: undefined reference to `X509_free'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x5a5): In function `sslaccept':: undefined reference to `SSL_get_shared_ciphers'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x5c5): In function `sslaccept':: undefined reference to `SSL_free'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x646): In function `sslconnect':
: undefined reference to `SSL_new'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x6a4): In function `sslconnect':
: undefined reference to `SSL_clear'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x6b2): In function `sslconnect':
: undefined reference to `SSL_get_session'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x6c1): In function `sslconnect':
: undefined reference to `SSL_SESSION_set_timeout'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x6d5): In function `sslconnect':
: undefined reference to `SSL_set_fd'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x6e3): In function `sslconnect':
: undefined reference to `SSL_set_connect_state'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x6f1): In function `sslconnect':
: undefined reference to `SSL_do_handshake'
/usr/lib/mysql/libmysqlclient.a(viossl.o)(.text+0x70a): In function `sslconnect':
: undefined reference to `SSL_free'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x8): In function `get_dh512':
: undefined reference to `DH_new'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x29): In function `get_dh512':
: undefined reference to `BN_bin2bn'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x47): In function `get_dh512':
: undefined reference to `BN_bin2bn'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x5f): In function `get_dh512':
: undefined reference to `DH_free'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0xa3): In function `report_errors':
: undefined reference to `ERR_get_error_line_data'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0xeb): In function `vio_set_cert_stuff':
: undefined reference to `SSL_CTX_use_certificate_file'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x10d): In function `vio_set_cert_stuff':
: undefined reference to `SSL_CTX_use_PrivateKey_file'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x119): In function `vio_set_cert_stuff':
: undefined reference to `SSL_CTX_check_private_key'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x167): In function `vio_set_cert_stuff':
: undefined reference to `ERR_print_errors_fp'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x1d3): In function `vio_set_cert_stuff':
: undefined reference to `ERR_print_errors_fp'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x20c): In function `vio_verify_callback':
: undefined reference to `X509_STORE_CTX_get_current_cert'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x216): In function `vio_verify_callback':
: undefined reference to `X509_STORE_CTX_get_error'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x21e): In function `vio_verify_callback':
: undefined reference to `X509_STORE_CTX_get_error_depth'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x232): In function `vio_verify_callback':
: undefined reference to `X509_get_subject_name'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x247): In function `vio_verify_callback':
: undefined reference to `X509_NAME_oneline'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x2a7): In function `vio_verify_callback':
: undefined reference to `X509_get_issuer_name'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x2bc): In function `vio_verify_callback':
: undefined reference to `X509_NAME_oneline'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x321): In function `new_VioSSLConnectorFd':
: undefined reference to `TLSv1_client_method'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x32c): In function `new_VioSSLConnectorFd':
: undefined reference to `SSL_CTX_new'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x348): In function `new_VioSSLConnectorFd':
: undefined reference to `SSL_CTX_set_cipher_list'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x361): In function `new_VioSSLConnectorFd':
: undefined reference to `SSL_CTX_set_verify'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x38c): In function `new_VioSSLConnectorFd':
: undefined reference to `SSL_CTX_load_verify_locations'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x3b4): In function `new_VioSSLConnectorFd':
: undefined reference to `SSL_CTX_ctrl'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x3bc): In function `new_VioSSLConnectorFd':
: undefined reference to `DH_free'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x3d6): In function `new_VioSSLConnectorFd':
: undefined reference to `SSL_CTX_set_default_verify_paths'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x3fe): In function `new_VioSSLConnectorFd':
: undefined reference to `SSL_load_error_strings'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x40f): In function `new_VioSSLConnectorFd':
: undefined reference to `OPENSSL_add_all_algorithms_noconf'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x46a): In function `new_VioSSLAcceptorFd':
: undefined reference to `TLSv1_server_method'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x475): In function `new_VioSSLAcceptorFd':
: undefined reference to `SSL_CTX_new'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x491): In function `new_VioSSLAcceptorFd':
: undefined reference to `SSL_CTX_set_cipher_list'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x4b8): In function `new_VioSSLAcceptorFd':
: undefined reference to `SSL_CTX_ctrl'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x4cf): In function `new_VioSSLAcceptorFd':
: undefined reference to `SSL_CTX_set_verify'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x4e9): In function `new_VioSSLAcceptorFd':
: undefined reference to `SSL_CTX_set_session_id_context'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x514): In function `new_VioSSLAcceptorFd':
: undefined reference to `SSL_CTX_load_verify_locations'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x53c): In function `new_VioSSLAcceptorFd':
: undefined reference to `SSL_CTX_ctrl'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x544): In function `new_VioSSLAcceptorFd':
: undefined reference to `DH_free'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x557): In function `new_VioSSLAcceptorFd':
: undefined reference to `SSL_CTX_set_default_verify_paths'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x57e): In function `new_VioSSLAcceptorFd':
: undefined reference to `SSL_load_error_strings'
/usr/lib/mysql/libmysqlclient.a(viosslfactories.o)(.text+0x58f): In function `new_VioSSLAcceptorFd':
: undefined reference to `OPENSSL_add_all_algorithms_noconf'
collect2: ld returned 1 exit status
make: *** [error] Error 1
make: *** [update] Error 1
make: *** [update] Error 2
==> ERROR: Build Failed. Aborting...
Here is the only modified line in the pkgbuild:
make OPT="${CFLAGS}" CCARGS="${CCARGS} -DHAS_MYSQL -I/usr/include/mysql " AUXLIBS="${AUXLIBS} -L/usr/lib/mysql -lmysqlclient -lz -lm " || return 1
make OPT="${CFLAGS}" CCARGS="${CCARGS} -DUSE_SASL_AUTH -I/usr/include/sasl -DHAS_MYSQL -I/usr/include/mysql -DUSE_SSL-DHAS_PGSQL -I/usr/include/postgresql " AUXLIBS="${AUXLIBS} -L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/postgresql -lpq -L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto " || return 1
I build postfixt with mysql/postgresql and sasl support ( with a tls patch).
]]>I see. It appears my confusion was laying in the squirrely nature of the postfix build. It uses OPT for ALL the build stuff. For some reason I was thinking that we had to use cflags to specify dependecy build stuff, like gentoo does.
So, a possible solution might be to have the OPT=$CFLAGS above the make command, and maybe have OPT="${OPT} additional-stuff-here" so that people can easily customize the postfix build in abs..
I know I would like to build postfix with mysql map support (the postfix arch maintainer is working on this now I believe 8)).
Thanks for the "knowledge transfer" Xentac.
Here we go:
- makepkg.conf defines a set of CFLAGS for all build systems to use
- postfix doesn't read the CFLAGS variable
- therefore it doesn't use the system wide build flags
- instead of reading CFLAGS postfix reads OPT
- in the PKGBUILD, OPT is set to the same options in CFLAGS
- with this change, postfix uses the system wide build flags
Are you understanding now?
]]>It doesn't seem to be a proper way to specify compiled in options, I think it would be better to have the OPT variable set manually further up in the pkgbuild, so people can easily modify the build options.
Maybe I am just confused here.
]]>When I looked at the pkgbuild, it looked funny.
# $Id: PKGBUILD,v 1.28 2004/12/13 05:45:29 jason Exp $
# Contributor: Jeff Brodnax <tullyarcher@bellsouth.net>
# Maintainer: dale <dale@archlinux.org>
pkgname=postfix
pkgver=2.1.5
pkgrel=3
pkgdesc="Secure, fast, easy to administer drop in replacement for Sendmail (MTA)"
depends=('glibc' 'db' 'pcre')
# leave etc/mail/aliases in backup() for a few versions until
# people have migrated or made other provisions
backup=(etc/mail/aliases etc/postfix/aliases etc/postfix/virtual etc/postfix/relocated
etc/postfix/access etc/postfix/header_checks etc/postfix/transport
etc/postfix/main.cf etc/postfix/master.cf)
install="$pkgname.install"
url="http://www.postfix.org/"
source=(ftp://ftp.porcupine.org/mirrors/postfix-release/official/$pkgname-$pkgver.tar.gz
$pkgname.patch.bz2
$pkgname
$pkgname.install)
md5sums=('bcaa4aac80595d04c60c72844203a04d' 'a3c45ff23ef036143711793fcf2478c3'
'eb5f290655559bbdfbf7b9791aeb4a64' '469ce1ce887bafb2afd243c4c64c843a')
provides=('smtp-server')
build() {
cd $startdir/src/$pkgname-$pkgver
make OPT="${CFLAGS}" || return 1
sh postfix-install -non-interactive
install_root="$startdir/pkg"
daemon_directory="/usr/lib/$pkgname"
sample_directory="/etc/$pkgname/sample"
manpage_directory="/usr/man"
cd $startdir/pkg
cat $startdir/src/$pkgname.patch |patch -Np0 || return 1
rm etc/$pkgname/main.cf~
cd $startdir/pkg
mkdir etc/rc.d
install -m 0755 $startdir/src/$pkgname etc/rc.d/$pkgname
}
Why is the CFLAGS in there?
Also, no configure? I assume that postfix makefile does some hijinks then, but where do I manually specify different build options?
]]>