Subject: pkg/36811: net/irrd fails to build without ipv6 infrastructure
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: Yakovetsky Vlafdimir <yx@x.ua>
List: pkgsrc-bugs
Date: 08/21/2007 10:10:00
>Number: 36811
>Category: pkg
>Synopsis: net/irrd fails to build without ipv6 infrastructure
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Aug 21 10:10:00 +0000 2007
>Originator: Yakovetsky Vladimir
>Release: NetBSD 4.0_BETA2
>Organization:
>Environment:
System: NetBSD darg.x.ua 4.0_BETA2 NetBSD 4.0_BETA2 (darg-1.799.2.7-mp-1.8.8.1) #1: Tue Jul 24 16:42:00 EEST 2007 yx@darg.x.ua:/sys/arch/i386/compile/darg.mp i386
Architecture: i386
Machine: i386
>Description:
net/irrd problems:
- fails to build without ipv6 infrastructure.
- partial threads preconfiguring.
>How-To-Repeat:
("fails to build" for example)
% uname -sr
NetBSD 4.0_BETA2
% grep -i inet6 /etc/mk.conf
MKINET6= no
PKG_DEFAULT_OPTIONS+= -inet6
% nm -o --defined-only /usr/lib/*so* | grep in6addr || echo 'not found'
not found
% cd /usr/pkgsrc/net/irrd
% make -V USE_INET6
NO
% make update
...
The following variables will affect the build process of this package,
irrd-2.2.8nb2. Their current value is shown below:
* USE_INET6 = NO
...
cc -Wl,-R/usr/pkg/lib main.o telnet.o scan.o config.o commands.o database.o update.o mirror.o uii_commands.o journal.o indicies.o rpsl_commands.o route.o hash_spec.o templates.o irrd_util.o mirrorstatus.o statusfile.o atomic_trans.o ../../lib/libmrt.a ../../lib/libcfg.a -o irrd -L../atomic_ops -latomic_ops -L../compat -lcompat
telnet.o: In function `listen_telnet':
telnet.c:(.text+0x1be6): undefined reference to `in6addr_any'
telnet.c:(.text+0x1c08): undefined reference to `in6addr_any'
telnet.c:(.text+0x1c1d): undefined reference to `in6addr_any'
telnet.c:(.text+0x1c26): undefined reference to `in6addr_any'
*** Error code 1
Stop.
make: stopped in /usr/obj/net/irrd/work/irrd2.2.8/src/programs/IRRd
...
=> Automatic manual page handling
pkg_create: can't stat `/usr/pkg/sbin/irrd'
=> Registering installation for irrd-2.2.8nb2
pkg_admin: irrd-2.2.8nb2: File `/usr/pkg/sbin/irrd' is in +CONTENTS but not on filesystem!
...
>Fix:
summary: `inet6' and `threads' preconfiguring.
- mk/defaults/options.description and net/irrd/Makefile - diffs
- net/irrd/options.mk, net/irrd/patches/patch-ad
and net/irrd/patches/patch-ae - new files
--- mk/defaults/options.description.~1~
+++ mk/defaults/options.description
@@ -173,6 +173,7 @@
ipa-without-thresholds Disable thresholds support.
ipfilter
iptables
+irrd-threads Enable threads support in irrd.
irssi-perl Enable Perl support in irssi.
ispell
jasper Enable JPEG 2000 support using the jasper library.
--- net/irrd/Makefile.~1~
+++ net/irrd/Makefile
@@ -2,7 +2,7 @@
DISTNAME= irrd2.2.8
PKGNAME= irrd-2.2.8
-PKGREVISION= 2
+PKGREVISION= 3
CATEGORIES= net
MASTER_SITES= http://www.irrd.net/ \
ftp://ftp.merit.edu/radb/irrd/ \
@@ -20,15 +20,7 @@
WRKSRC= ${WRKDIR}/${DISTNAME}/src
-#PTHREAD_AUTO_VARS= yes
-#PTHREAD_OPTS+= require
-
GNU_CONFIGURE= yes
-CONFIGURE_ARGS+= --disable-thread
-
-BUILD_DEFS+= USE_INET6
-
-#CPPFLAGS+= -I${LOCALBASE}/include
REPLACE_PERL+= programs/irrdcacher/irrdcacher
REPLACE_PERL+= programs/irrdcacher/ripe2rpsl
@@ -44,14 +36,6 @@
${INSTALL_SCRIPT} irrdcacher ${PREFIX}/sbin && \
${INSTALL_SCRIPT} ripe2rpsl ${PREFIX}/sbin
-.include "../../mk/bsd.prefs.mk"
-
-.if defined(USE_INET6) && ${USE_INET6} == "YES"
-# default
-# CONFIGURE_ARGS+= --enable-ipv6
-.else
-CONFIGURE_ARGS+= --disable-ipv6
-.endif
+.include "options.mk"
-#.include "../../mk/pthread.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
:r net/irrd/options.mk
PKG_OPTIONS_VAR= PKG_OPTIONS.irrd
PKG_SUPPORTED_OPTIONS+= inet6 irrd-threads
.include "../../mk/bsd.options.mk"
.if !empty(PKG_OPTIONS:Minet6)
CPPFLAGS+= -DINET6
.endif
.if !empty(PKG_OPTIONS:Mirrd-threads)
CONFIGURE_ARGS+= --enable-thread
.else
# use author settings for threads
.endif
:r net/irrd/patches/patch-ad
--- configure.in.~1~
+++ configure.in
@@ -6,8 +6,10 @@
dnl what OS are we?
AC_CANONICAL_HOST
-dnl initializing defaults
+dnl initializing defaults, if have not --*able-thread option
dnl I've seen a report that pthread support is shaky in FreeBSD 2.x releases
+AC_ARG_ENABLE(thread,
+[ --enable-thread enable threads],,[
case "${host_os}" in
freebsd2* )
enable_thread=no
@@ -19,10 +21,7 @@
enable_thread=no
;;
esac
-
-AC_ARG_ENABLE(thread,
-[ --disable-thread disable thread always],
-)
+])
AC_ARG_ENABLE(wall,
[ --disable-wall disable -Wall option always],
@@ -47,7 +46,7 @@
EXTRA_INCLUDE_DIRS=""
EXTRA_LIBS=""
-CPPFLAGS="-DFUNCPROTO -I../../include"
+CPPFLAGS="$CPPFLAGS -DFUNCPROTO -I../../include"
dnl defining FUNCPROTO ensures that struct library uses portotype
dnl we don't expect non-ANSI (K&R) C compilers to be used
dnl Some compiles may define __STDC__ by itself which makes it enable,
@@ -78,7 +77,7 @@
QUANTIFY="quantify"
PURIFY="purify"
-AC_DEFUN(AC_FILE_EXIST, [
+AC_DEFUN([AC_FILE_EXIST], [
if test -f "$1" >/dev/null 2>&1; then
ifelse([$2], , :, [$2])
ifelse([$3], , , [else $3])
@@ -104,29 +103,26 @@
esac
case "${host_os}" in
- solaris* )
- CRYPT_LIB="-lcrypt"
- ;;
bsdi* )
LIBS="$LIBS -lipc"
;;
- freebsd*|netbsd*|openbsd* )
- if test "$enable_thread" = yes; then
- LDFLAGS="$LDFLAGS -pthread"
- THREAD_CFLAGS="-D_THREAD_SAFE -pthread"
- fi
+ solaris*|freebsd*|netbsd*|openbsd*|linux* )
CRYPT_LIB="-lcrypt"
case "${host_os}" in
- netbsd* )
- ;;
- * )
+ freebsd*|openbsd* )
+ if test "$enable_thread" = yes; then
+ LDFLAGS="$LDFLAGS -pthread"
+ THREAD_CFLAGS="-D_THREAD_SAFE -pthread"
+ fi
ac_pthrlib="c_r"
;;
+ netbsd* )
+ if test "$enable_thread" = yes; then
+ LDFLAGS="$LDFLAGS -lpthread"
+ fi
+ ;;
esac
;;
- linux* )
- CRYPT_LIB="-lcrypt"
- ;;
osf* )
if test $CC = "cc" ; then
CPPFLAGS="$CPPFLAGS -taso -pthread"
:r patches/patch-ae
--- include/defs.h.~1~
+++ include/defs.h
@@ -17,7 +17,7 @@
/* check for IPV6 support */
#ifdef AF_INET6
-#ifdef IN6_IS_ADDR_V4MAPPED
+#if defined(IN6_IS_ADDR_V4MAPPED) && defined(INET6)
#define HAVE_IPV6
#endif
#else