diff --git a/bitlbee-1.2.2-libresolv.patch b/bitlbee-1.2.2-libresolv.patch deleted file mode 100644 index bbba6fd..0000000 --- a/bitlbee-1.2.2-libresolv.patch +++ /dev/null @@ -1,427 +0,0 @@ -Patch by Robert Scheck , based on a patch by Matěj Cepl - for bitlbee >= 1.2, to avoid static linking to a private glibc -function, normally visible as libc.so.6(GLIBC_PRIVATE) in the binary RPM package. - -Unfortunately, this patch gets not accepted by upstream, as they're fine with the -static linking. The former try with libbind has the problem, that it breaks, once -the file transfer patch is added, because of libbind apparently all symbols which -are synonyms between glibc and libbind came from libbind, which made some nasty -surprises when e.g. getaddrinfo from libbind returned different error codes than -getaddrinfo from glibc. - -A few more information and details regarding are mentioned in Red Hat Bugzilla ID -#439047, see: https://bugzilla.redhat.com/show_bug.cgi?id=439047 - ---- bitlbee-1.2.2/configure 2008-08-27 00:36:44.000000000 +0200 -+++ bitlbee-1.2.2/configure.libresolv 2008-08-27 19:52:00.000000000 +0200 -@@ -19,7 +19,7 @@ - pidfile='/var/run/bitlbee.pid' - ipcsocket='/var/run/bitlbee.sock' - pcdir='$prefix/lib/pkgconfig' --systemlibdirs="/lib /usr/lib /usr/local/lib" -+systemlibdirs="/lib64 /usr/lib64 /usr/local/lib64 /lib /usr/lib /usr/local/lib" - - msn=1 - jabber=1 -@@ -349,9 +349,9 @@ - echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings - - for i in $systemlibdirs; do -- if [ -f $i/libresolv.a ]; then -+ if [ -f $i/libresolv.so ]; then - echo '#define HAVE_RESOLV_A' >> config.h -- echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings -+ echo 'EFLAGS+=-lresolv' >> Makefile.settings - break - fi - done ---- bitlbee-1.2.2/lib/Makefile 2008-03-02 18:10:16.000000000 +0100 -+++ bitlbee-1.2.2/lib/Makefile.libresolv 2008-06-28 17:24:51.000000000 +0200 -@@ -9,7 +9,7 @@ - -include ../Makefile.settings - - # [SH] Program variables --objects = arc.o base64.o $(EVENT_HANDLER) http_client.o ini.o md5.o misc.o proxy.o sha1.o $(SSL_CLIENT) url.o xmltree.o -+objects = arc.o base64.o $(EVENT_HANDLER) http_client.o ini.o md5.o misc.o proxy.o sha1.o srv.o $(SSL_CLIENT) url.o xmltree.o - - CFLAGS += -Wall - LFLAGS += -r ---- bitlbee-1.2.2/lib/misc.c 2008-06-22 14:23:46.000000000 +0200 -+++ bitlbee-1.2.2/lib/misc.c.libresolv 2008-06-28 17:25:44.000000000 +0200 -@@ -43,6 +43,7 @@ - #ifdef HAVE_RESOLV_A - #include - #include -+#include - #endif - - #include "ssl_client.h" -@@ -465,58 +466,6 @@ - return 0; - } - --struct ns_srv_reply *srv_lookup( char *service, char *protocol, char *domain ) --{ -- struct ns_srv_reply *reply = NULL; --#ifdef HAVE_RESOLV_A -- char name[1024]; -- unsigned char querybuf[1024]; -- const unsigned char *buf; -- ns_msg nsh; -- ns_rr rr; -- int i, len, size; -- -- g_snprintf( name, sizeof( name ), "_%s._%s.%s", service, protocol, domain ); -- -- if( ( size = res_query( name, ns_c_in, ns_t_srv, querybuf, sizeof( querybuf ) ) ) <= 0 ) -- return NULL; -- -- if( ns_initparse( querybuf, size, &nsh ) != 0 ) -- return NULL; -- -- if( ns_parserr( &nsh, ns_s_an, 0, &rr ) != 0 ) -- return NULL; -- -- size = ns_rr_rdlen( rr ); -- buf = ns_rr_rdata( rr ); -- -- len = 0; -- for( i = 6; i < size && buf[i]; i += buf[i] + 1 ) -- len += buf[i] + 1; -- -- if( i > size ) -- return NULL; -- -- reply = g_malloc( sizeof( struct ns_srv_reply ) + len ); -- memcpy( reply->name, buf + 7, len ); -- -- for( i = buf[6]; i < len && buf[7+i]; i += buf[7+i] + 1 ) -- reply->name[i] = '.'; -- -- if( i > len ) -- { -- g_free( reply ); -- return NULL; -- } -- -- reply->prio = ( buf[0] << 8 ) | buf[1]; -- reply->weight = ( buf[2] << 8 ) | buf[3]; -- reply->port = ( buf[4] << 8 ) | buf[5]; --#endif -- -- return reply; --} -- - /* Word wrapping. Yes, I know this isn't UTF-8 clean. I'm willing to take the risk. */ - char *word_wrap( char *msg, int line_len ) - { ---- bitlbee-1.2.2/lib/misc.h 2008-06-22 14:23:46.000000000 +0200 -+++ bitlbee-1.2.2/lib/misc.h.libresolv 2008-06-28 17:26:24.000000000 +0200 -@@ -28,14 +28,7 @@ - - #include - #include -- --struct ns_srv_reply --{ -- int prio; -- int weight; -- int port; -- char name[]; --}; -+#include "srv.h" - - G_MODULE_EXPORT void strip_linefeed( gchar *text ); - G_MODULE_EXPORT char *add_cr( char *text ); ---- bitlbee-1.2.2/lib/srv.c 1970-01-01 01:00:00.000000000 +0100 -+++ bitlbee-1.2.2/lib/srv.c.libresolv 2008-06-28 17:28:45.000000000 +0200 -@@ -0,0 +1,237 @@ -+/* srv.c - DNS SRV code -+ * Copyright (C) 2003 Free Software Foundation, Inc. -+ * -+ * This file is part of GNUPG. -+ * -+ * GNUPG is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 3 of the License, or -+ * (at your option) any later version. -+ * -+ * GNUPG is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, see . -+ */ -+ -+#undef TEST -+ -+#ifdef TEST -+#define HAVE_RESOLV_A -+#endif -+ -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include "srv.h" -+#include -+#include -+#include -+ -+/* Not every installation has gotten around to supporting SRVs -+ yet...*/ -+#ifndef T_SRV -+#define T_SRV 33 -+#endif -+ -+static int priosort(const void *a, const void *b) { -+ const struct ns_srv_reply *sa=a, *sb=b; -+ if (sa->prio>sb->prio) -+ return 1; -+ else if (sa->prioprio) -+ return -1; -+ else -+ return 0; -+} -+ -+struct ns_srv_reply *srv_lookup(char *service, char *protocol, char *domain) { -+ struct ns_srv_reply *reply = NULL; -+ struct ns_srv_reply *list; -+ char name[1024]; -+#ifdef HAVE_RESOLV_A -+ unsigned char answer[PACKETSZ]; -+ int r, srvcount=0; -+ unsigned char *pt, *emsg; -+ int count, dlen; -+ -+ list = NULL; -+ -+ g_snprintf(name, sizeof(name ), "_%s._%s.%s", service, protocol, domain); -+ -+ _res.options |= RES_DEBUG; -+ -+ if ( res_init() != 0 ) -+ return NULL; -+ -+ r=res_query(name, C_IN, T_SRV, answer, PACKETSZ); -+ -+ if (rPACKETSZ) -+ return NULL; -+ -+ if ((((HEADER *)answer)->rcode)==NOERROR && (count=ntohs(((HEADER *)answer)->ancount))) { -+ int i, rc; -+ -+ emsg=&answer[r]; /* end of message ??? */ -+ pt=&answer[sizeof(HEADER)]; -+ -+ /* Skip over the query */ -+ rc=dn_skipname(pt, emsg); -+ if (rc==-1) -+ goto fail; -+ -+ pt+=rc+QFIXEDSZ; -+ -+ while (count-->0 && ptprio=*pt++ << 8; -+ srv->prio|=*pt++; -+ srv->weight=*pt++ << 8; -+ srv->weight|=*pt++; -+ srv->port=*pt++ << 8; -+ srv->port|=*pt++; -+ -+ /* Get the name. 2782 doesn't allow name compression, but -+ dn_expand still works to pull the name out of the -+ packet. */ -+ rc=dn_expand(answer, emsg, pt, srv->name, MAXDNAME); -+ if (rc==1 && srv->name[0]==0) /* "." */ -+ goto noanswer; -+ if (rc==-1) -+ goto fail; -+ pt+=rc; -+ /* Corrupt packet? */ -+ if (dlen!=rc+6) -+ goto fail; -+ } -+ -+ /* Now we have an array of all the srv records. */ -+ -+ /* Order by priority */ -+ qsort(list, srvcount, sizeof(struct ns_srv_reply), priosort); -+ -+ /* For each priority, move the zero-weighted items first. */ -+ for (i=0; iprio); -+ printf("weight=%hu\n", srv->weight); -+ printf("port=%hu\n", srv->port); -+ printf("target=%s\n", srv->name); -+ printf("\n"); -+ g_free(srv); -+ -+ return 0; -+} -+#endif /* TEST */ ---- bitlbee-1.2.2/lib/srv.h 1970-01-01 01:00:00.000000000 +0100 -+++ bitlbee-1.2.2/lib/srv.h.libresolv 2008-06-28 17:29:39.000000000 +0200 -@@ -0,0 +1,49 @@ -+/* srv.h -+ * Copyright (C) 2003, 2004 Free Software Foundation, Inc. -+ * -+ * This file is part of GNUPG. -+ * -+ * GNUPG is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 3 of the License, or -+ * (at your option) any later version. -+ * -+ * GNUPG is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, see . -+ */ -+ -+#ifndef GNUPG_COMMON_SRV_H -+#define GNUPG_COMMON_SRV_H -+ -+#ifdef HAVE_RESOLV_A -+# ifdef _WIN32 -+# include -+# else -+# include -+# include -+# include -+# endif /* !_WIN32 */ -+#endif /* USE_DNS_SRV */ -+ -+ -+#ifndef MAXDNAME -+#define MAXDNAME 1025 -+#endif -+ -+struct ns_srv_reply -+{ -+ int prio; /* priority */ -+ int weight; /* weight */ -+ int port; /* port */ -+ int run_count; /* from struct srventry at gnupg's common/srv.h */ -+ char name[MAXDNAME]; /* target */ -+}; -+ -+struct ns_srv_reply *srv_lookup(char *service, char *protocol, char *domain); -+ -+#endif /*GNUPG_COMMON_SRV_H*/ diff --git a/bitlbee-1.2.3-libresolv.patch b/bitlbee-1.2.3-libresolv.patch new file mode 100644 index 0000000..af78009 --- /dev/null +++ b/bitlbee-1.2.3-libresolv.patch @@ -0,0 +1,440 @@ +Patch by Robert Scheck , based on a patch by Matěj Cepl + for bitlbee >= 1.2, to avoid static linking to a private glibc +function, normally visible as libc.so.6(GLIBC_PRIVATE) in the binary RPM package. + +Unfortunately, this patch gets not accepted by upstream, as they're fine with the +static linking. The former try with libbind has the problem, that it breaks, once +the file transfer patch is added, because of libbind apparently all symbols which +are synonyms between glibc and libbind came from libbind, which made some nasty +surprises when e.g. getaddrinfo from libbind returned different error codes than +getaddrinfo from glibc. + +A few more information and details regarding are mentioned in Red Hat Bugzilla ID +#439047, see: https://bugzilla.redhat.com/show_bug.cgi?id=439047 + +--- bitlbee-1.2.3/configure 2008-08-27 00:36:44.000000000 +0200 ++++ bitlbee-1.2.3/configure.libresolv 2008-08-27 19:52:00.000000000 +0200 +@@ -19,7 +19,7 @@ + pidfile='/var/run/bitlbee.pid' + ipcsocket='/var/run/bitlbee.sock' + pcdir='$prefix/lib/pkgconfig' +-systemlibdirs="/lib /usr/lib /usr/local/lib" ++systemlibdirs="/lib64 /usr/lib64 /usr/local/lib64 /lib /usr/lib /usr/local/lib" + + msn=1 + jabber=1 +@@ -349,9 +349,9 @@ + echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings + + for i in $systemlibdirs; do +- if [ -f $i/libresolv.a ]; then ++ if [ -f $i/libresolv.so ]; then + echo '#define HAVE_RESOLV_A' >> config.h +- echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings ++ echo 'EFLAGS+=-lresolv' >> Makefile.settings + break + fi + done +--- bitlbee-1.2.3/lib/Makefile 2008-03-02 18:10:16.000000000 +0100 ++++ bitlbee-1.2.3/lib/Makefile.libresolv 2008-06-28 17:24:51.000000000 +0200 +@@ -9,7 +9,7 @@ + -include ../Makefile.settings + + # [SH] Program variables +-objects = arc.o base64.o $(EVENT_HANDLER) http_client.o ini.o md5.o misc.o proxy.o sha1.o $(SSL_CLIENT) url.o xmltree.o ++objects = arc.o base64.o $(EVENT_HANDLER) http_client.o ini.o md5.o misc.o proxy.o sha1.o srv.o $(SSL_CLIENT) url.o xmltree.o + + CFLAGS += -Wall + LFLAGS += -r +--- bitlbee-1.2.3/lib/misc.c 2008-06-22 14:23:46.000000000 +0200 ++++ bitlbee-1.2.3/lib/misc.c.libresolv 2008-06-28 17:25:44.000000000 +0200 +@@ -43,6 +43,7 @@ + #ifdef HAVE_RESOLV_A + #include + #include ++#include + #endif + + #include "ssl_client.h" +@@ -465,58 +466,6 @@ + return 0; + } + +-struct ns_srv_reply *srv_lookup( char *service, char *protocol, char *domain ) +-{ +- struct ns_srv_reply *reply = NULL; +-#ifdef HAVE_RESOLV_A +- char name[1024]; +- unsigned char querybuf[1024]; +- const unsigned char *buf; +- ns_msg nsh; +- ns_rr rr; +- int i, len, size; +- +- g_snprintf( name, sizeof( name ), "_%s._%s.%s", service, protocol, domain ); +- +- if( ( size = res_query( name, ns_c_in, ns_t_srv, querybuf, sizeof( querybuf ) ) ) <= 0 ) +- return NULL; +- +- if( ns_initparse( querybuf, size, &nsh ) != 0 ) +- return NULL; +- +- if( ns_parserr( &nsh, ns_s_an, 0, &rr ) != 0 ) +- return NULL; +- +- size = ns_rr_rdlen( rr ); +- buf = ns_rr_rdata( rr ); +- +- len = 0; +- for( i = 6; i < size && buf[i]; i += buf[i] + 1 ) +- len += buf[i] + 1; +- +- if( i > size ) +- return NULL; +- +- reply = g_malloc( sizeof( struct ns_srv_reply ) + len ); +- memcpy( reply->name, buf + 7, len ); +- +- for( i = buf[6]; i < len && buf[7+i]; i += buf[7+i] + 1 ) +- reply->name[i] = '.'; +- +- if( i > len ) +- { +- g_free( reply ); +- return NULL; +- } +- +- reply->prio = ( buf[0] << 8 ) | buf[1]; +- reply->weight = ( buf[2] << 8 ) | buf[3]; +- reply->port = ( buf[4] << 8 ) | buf[5]; +-#endif +- +- return reply; +-} +- + /* Word wrapping. Yes, I know this isn't UTF-8 clean. I'm willing to take the risk. */ + char *word_wrap( char *msg, int line_len ) + { +--- bitlbee-1.2.3/lib/misc.h 2008-06-22 14:23:46.000000000 +0200 ++++ bitlbee-1.2.3/lib/misc.h.libresolv 2008-06-28 17:26:24.000000000 +0200 +@@ -28,14 +28,7 @@ + + #include + #include +- +-struct ns_srv_reply +-{ +- int prio; +- int weight; +- int port; +- char name[]; +-}; ++#include "srv.h" + + G_MODULE_EXPORT void strip_linefeed( gchar *text ); + G_MODULE_EXPORT char *add_cr( char *text ); +--- bitlbee-1.2.3/lib/srv.c 1970-01-01 01:00:00.000000000 +0100 ++++ bitlbee-1.2.3/lib/srv.c.libresolv 2008-06-28 17:28:45.000000000 +0200 +@@ -0,0 +1,239 @@ ++/* srv.c - DNS SRV code ++ * Copyright (C) 2003 Free Software Foundation, Inc. ++ * ++ * This file is part of GNUPG. ++ * ++ * GNUPG is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 3 of the License, or ++ * (at your option) any later version. ++ * ++ * GNUPG is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, see . ++ */ ++ ++#undef TEST ++ ++#ifdef TEST ++#define HAVE_RESOLV_A ++#endif ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "srv.h" ++#include ++#include ++#include ++ ++/* Not every installation has gotten around to supporting SRVs yet...*/ ++#ifndef T_SRV ++#define T_SRV 33 ++#endif ++ ++static int priosort(const void *a, const void *b) { ++ const struct ns_srv_reply *sa=a, *sb=b; ++ if (sa->prio>sb->prio) ++ return 1; ++ else if (sa->prioprio) ++ return -1; ++ else ++ return 0; ++} ++ ++struct ns_srv_reply *srv_lookup(char *service, char *protocol, char *domain) { ++ struct ns_srv_reply *reply = NULL; ++ struct ns_srv_reply *list = NULL; ++ char name[1024]; ++#ifdef HAVE_RESOLV_A ++ unsigned char answer[PACKETSZ]; ++ int r, srvcount=0; ++ unsigned char *pt, *emsg; ++ int count, dlen; ++ ++ g_snprintf(name, sizeof(name ), "_%s._%s.%s", service, protocol, domain); ++ ++ _res.options |= RES_DEBUG; ++ ++ if ( res_init() != 0 ) ++ return NULL; ++ ++ r=res_query(name, C_IN, T_SRV, answer, PACKETSZ); ++ ++ if (rPACKETSZ) ++ return NULL; ++ ++ if ((((HEADER *)answer)->rcode)==NOERROR && (count=ntohs(((HEADER *)answer)->ancount))) { ++ int i, rc; ++ ++ emsg=&answer[r]; /* end of message ??? */ ++ pt=&answer[sizeof(HEADER)]; ++ ++ /* Skip over the query */ ++ rc=dn_skipname(pt, emsg); ++ if (rc==-1) ++ goto fail; ++ ++ pt+=rc+QFIXEDSZ; ++ ++ while (count-->0 && ptprio=*pt++ << 8; ++ srv->prio|=*pt++; ++ srv->weight=*pt++ << 8; ++ srv->weight|=*pt++; ++ srv->port=*pt++ << 8; ++ srv->port|=*pt++; ++ ++ /* Get the name. 2782 doesn't allow name compression, but ++ dn_expand still works to pull the name out of the ++ packet. */ ++ rc=dn_expand(answer, emsg, pt, srv->name, MAXDNAME); ++ if (rc==1 && srv->name[0]==0) /* "." */ ++ goto noanswer; ++ if (rc==-1) ++ goto fail; ++ pt+=rc; ++ /* Corrupt packet? */ ++ if (dlen!=rc+6) ++ goto fail; ++ } ++ ++ /* Now we have an array of all the srv records. */ ++ ++ /* Order by priority */ ++ qsort(list, srvcount, sizeof(struct ns_srv_reply), priosort); ++ ++ /* For each priority, move the zero-weighted items first. */ ++ for (i=0; iprio); ++ printf("weight=%hu\n", srv->weight); ++ printf("port=%hu\n", srv->port); ++ printf("target=%s\n", srv->name); ++ printf("\n"); ++ g_free(srv); ++ } ++ ++ return 0; ++} ++#endif /* TEST */ +--- bitlbee-1.2.3/lib/srv.h 1970-01-01 01:00:00.000000000 +0100 ++++ bitlbee-1.2.3/lib/srv.h.libresolv 2008-06-28 17:29:39.000000000 +0200 +@@ -0,0 +1,49 @@ ++/* srv.h ++ * Copyright (C) 2003, 2004 Free Software Foundation, Inc. ++ * ++ * This file is part of GNUPG. ++ * ++ * GNUPG is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 3 of the License, or ++ * (at your option) any later version. ++ * ++ * GNUPG is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, see . ++ */ ++ ++#ifndef GNUPG_COMMON_SRV_H ++#define GNUPG_COMMON_SRV_H ++ ++#ifdef HAVE_RESOLV_A ++# ifdef _WIN32 ++# include ++# else ++# include ++# include ++# include ++# endif /* !_WIN32 */ ++#endif /* USE_DNS_SRV */ ++ ++ ++#ifndef MAXDNAME ++#define MAXDNAME 1025 ++#endif ++ ++struct ns_srv_reply ++{ ++ int prio; /* priority */ ++ int weight; /* weight */ ++ int port; /* port */ ++ int run_count; /* from struct srventry at gnupg's common/srv.h */ ++ char name[MAXDNAME]; /* target */ ++}; ++ ++struct ns_srv_reply *srv_lookup(char *service, char *protocol, char *domain); ++ ++#endif /*GNUPG_COMMON_SRV_H*/ +--- bitlbee-1.2.3/Makefile 2008-09-06 14:33:14.000000000 +0200 ++++ bitlbee-1.2.3/Makefile.libresolv 2009-06-12 00:34:51.000000000 +0200 +@@ -10,7 +10,7 @@ + + # Program variables + objects = account.o bitlbee.o crypting.o help.o ipc.o irc.o irc_commands.o nick.o query.o root_commands.o set.o storage.o $(STORAGE_OBJS) user.o +-headers = account.h bitlbee.h commands.h conf.h config.h crypting.h help.h ipc.h irc.h log.h nick.h query.h set.h sock.h storage.h user.h lib/events.h lib/http_client.h lib/ini.h lib/md5.h lib/misc.h lib/proxy.h lib/sha1.h lib/ssl_client.h lib/url.h protocols/nogaim.h ++headers = account.h bitlbee.h commands.h conf.h config.h crypting.h help.h ipc.h irc.h log.h nick.h query.h set.h sock.h storage.h user.h lib/events.h lib/http_client.h lib/ini.h lib/md5.h lib/misc.h lib/proxy.h lib/sha1.h lib/srv.h lib/ssl_client.h lib/url.h protocols/nogaim.h + subdirs = lib protocols + + ifeq ($(TARGET),i586-mingw32msvc) diff --git a/bitlbee-wrapper.h b/bitlbee-wrapper.h new file mode 100644 index 0000000..eee21de --- /dev/null +++ b/bitlbee-wrapper.h @@ -0,0 +1,44 @@ +/* This file is here to prevent a file conflict on multiarch systems. A + * conflict will occur because config.h has arch-specific definitions. + * + * DO NOT INCLUDE THE NEW FILE DIRECTLY -- ALWAYS INCLUDE THIS ONE INSTEAD. */ + +#if defined(__i386__) +#include "config-i386.h" +#elif defined(__ia64__) +#include "config-ia64.h" +#elif defined(__powerpc64__) +#include "config-ppc64.h" +#elif defined(__powerpc__) +#include "config-ppc.h" +#elif defined(__s390x__) +#include "config-s390x.h" +#elif defined(__s390__) +#include "config-s390.h" +#elif defined(__x86_64__) +#include "config-x86_64.h" +#elif defined(__alpha__) +#include "config-alpha.h" +#elif defined(__arm__) +#include "config-arm.h" +#elif defined(__sparc__) && defined(__arch64__) +#include "config-sparc64.h" +#elif defined(__sparc__) +#include "config-sparc.h" +#elif defined(__hppa__) && defined(__LP64__) +#include "config-parisc64.h" +#elif defined(__hppa__) +#include "config-parisc.h" +#elif defined(__mips__) +#include "config-mips.h" +#elif defined(__mipsel__) +#include "config-mipsel.h" +#elif defined(__mips64__) +#include "config-mipsx.h" +#elif defined(__sh64__) +#include "config-sh64.h" +#elif defined(__sh__) +#include "config-sh.h" +#else +#error "This bitlbee-devel package does not work your architecture?" +#endif diff --git a/bitlbee.spec b/bitlbee.spec index e7b465b..1e74dfd 100644 --- a/bitlbee.spec +++ b/bitlbee.spec @@ -1,18 +1,19 @@ Summary: IRC to other chat networks gateway Name: bitlbee Version: 1.2.3 -Release: 1%{?dist} +Release: 4%{?dist} License: GPLv2+ and MIT Group: System Environment/Daemons URL: http://www.bitlbee.org/ Source0: http://get.bitlbee.org/src/%{name}-%{version}.tar.gz Source1: bitlbee.xinetd -Patch0: bitlbee-1.2.2-libresolv.patch +Source2: bitlbee-wrapper.h +Patch0: bitlbee-1.2.3-libresolv.patch Requires: xinetd Requires(pre): shadow-utils Requires(preun): /sbin/service BuildRequires: glib2-devel >= 2.4, libxslt -%if 0%{?rhl}%{?fedora}%{?rhel} +%if 0%{?fedora}%{?rhel} BuildRequires: gnutls-devel %else BuildRequires: openssl-devel @@ -24,6 +25,15 @@ Bitlbee is an IRC to other chat networks gateway. Bitlbee can be used as an IRC server which forwards everything you say to people on other chat networks like ICQ, MSN, Jabber or Yahoo! +%package devel +Summary: Development files for bitlbee +Group: Development/Libraries +Requires: %{name} = %{version}-%{release}, pkgconfig + +%description devel +The bitlbee-devel package includes header files necessary for building and +developing programs and plugins which use bitlbee. + %prep %setup -q %patch0 -p1 -b .libresolv @@ -33,6 +43,9 @@ perl -pi.make -e ' s|\$\(DATADIR\)|\$(datadir)/%{name}|g; s|\$\(ETCDIR\)|\$(sysconfdir)/%{name}|g; s|\$\(MANDIR\)|\$(mandir)|g; + s|\$\(INCLUDEDIR\)|\$(includedir)/%{name}|g; + s|\$\(PCDIR\)|\$(libdir)/pkgconfig|g; + s|install -m|install -p -m|g; ' Makefile */Makefile */*/Makefile %build @@ -43,9 +56,11 @@ CFLAGS="$RPM_OPT_FLAGS" ./configure \ --mandir=%{_mandir} \ --datadir=%{_datadir}/%{name} \ --config=%{_localstatedir}/lib/%{name} \ + --pcdir=%{_libdir}/pkgconfig \ + --plugindir=%{_libdir}/%{name} \ --strip=0 \ --plugins=1 \ -%if 0%{?rhl}%{?fedora}%{?rhel} +%if 0%{?fedora}%{?rhel} --ssl=gnutls %else --ssl=openssl @@ -55,18 +70,26 @@ make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT -%makeinstall +%makeinstall install-dev -mkdir -p $RPM_BUILD_ROOT{%{_localstatedir}/lib/%{name},%{_mandir}/man8} +# Install some files manually to their correct destination +mkdir -p $RPM_BUILD_ROOT{%{_localstatedir}/lib,%{_libdir}}/%{name} +install -D -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/%{name} +install -D -p -m 644 %{name}.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.conf -install -D -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/%{name} -install -D -m 644 %{name}.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.conf -install -m 644 doc/*.8 $RPM_BUILD_ROOT%{_mandir}/man8/ +# Hack to allow parallel install of 32 bit and 64 bit -devel packages +%if 0%{?fedora}%{?rhel} +mv -f $RPM_BUILD_ROOT%{_includedir}/%{name}/config{,-%{_arch}}.h +install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_includedir}/%{name}/config.h +%endif # Convert everything to UTF-8 iconv -f iso-8859-1 -t utf-8 -o doc/CHANGES.utf8 doc/CHANGES +touch -c -r doc/CHANGES doc/CHANGES.utf8 mv -f doc/CHANGES.utf8 doc/CHANGES + iconv -f iso-8859-1 -t utf-8 -o doc/CREDITS.utf8 doc/CREDITS +touch -c -r doc/CREDITS doc/CREDITS.utf8 mv -f doc/CREDITS.utf8 doc/CREDITS %pre @@ -83,18 +106,36 @@ fi rm -rf $RPM_BUILD_ROOT %files -%defattr(-,root,root) +%defattr(-,root,root,-) %doc COPYING doc/{AUTHORS,CHANGES,CREDITS,FAQ,README} %doc doc/user-guide/*.xml doc/user-guide/user-guide.txt %dir %{_sysconfdir}/%{name} %config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf %config(noreplace) %{_sysconfdir}/xinetd.d/%{name} %{_sbindir}/%{name} +%{_libdir}/%{name}/ %{_datadir}/%{name}/ %{_mandir}/man?/%{name}* %attr(0700,bitlbee,bitlbee) %dir %{_localstatedir}/lib/%{name} +%files devel +%defattr(-,root,root,-) +%doc doc/example_plugin.c +%{_includedir}/%{name}/ +%{_libdir}/pkgconfig/%{name}.pc + %changelog +* Mon Aug 17 2009 Robert Scheck 1.2.3-4 +- Updated libresolv patch to not segfault when connecting to the + Jabber/XMPP server if there's no SRV record (#506719, #501786) +- Added -devel subpackage with header files for plugins (#504882) + +* Fri Jul 24 2009 Fedora Release Engineering - 1.2.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Feb 23 2009 Robert Scheck 1.2.3-2 +- Rebuilt against gcc 4.4 and rpm 4.6 + * Sun Sep 07 2008 Robert Scheck 1.2.3-1 - Upgrade to 1.2.3 (#461424)