Package: fam
Severity: important
Tags: patch
Hi,
libfam fails to build on GNU/kFreeBSD due to unportable checking of sockaddr_un
structure (patch by Aurelien Jarno), and because the dnotify patch assumes that
(Linux-specific) dnotify support was enabled in a few places.
I'm attaching a patch for both issues. As for the sockaddr_un part, it'd be
nice if you forwarded it to upstream.
Thank you.
-- System Information:
Debian Release: testing/unstable
Architecture: kfreebsd-i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: GNU/kFreeBSD 5.3-1
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ANSI_X3.4-1968) (ignored: LC_ALL
set to C)
diff -Nur fam-2.7.0.old/debian/changelog fam-2.7.0/debian/changelog
--- fam-2.7.0.old/debian/changelog 2005-08-27 14:27:23.000000000 +0200
+++ fam-2.7.0/debian/changelog 2005-08-27 15:02:43.000000000 +0200
@@ -1,3 +1,9 @@
+fam (2.7.0-7.2+kbsd) unreleased; urgency=low
+
+ * GNU/kFreeBSD support.
+
+ -- Robert Millan <[EMAIL PROTECTED]> Sat, 27 Aug 2005 15:02:34 +0200
+
fam (2.7.0-7.2) unstable; urgency=low
* #include <limits.h> instead of "limits.h" (Closes: 317839)
diff -Nur fam-2.7.0.old/debian/patches/01_dnotify.patch fam-2.7.0/debian/patches/01_dnotify.patch
--- fam-2.7.0.old/debian/patches/01_dnotify.patch 2005-08-27 14:27:23.000000000 +0200
+++ fam-2.7.0/debian/patches/01_dnotify.patch 2005-08-27 14:58:56.000000000 +0200
@@ -21,7 +21,7 @@
+use_dnotify=false
+AC_MSG_RESULT($have_dnotify)
+
-+if test "$have_dnotify"; then
++if test "$have_dnotify" = "yes" ; then
+ MONITOR_FUNCS=IMonNone
+ AC_DEFINE(USE_DNOTIFY)
+ use_dnotify=true
@@ -103,7 +103,7 @@
unchanged:
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ fam-2.7.0/src/DNotify.c++ 2005-05-05 22:08:43.000000000 -0700
-@@ -0,0 +1,655 @@
+@@ -0,0 +1,659 @@
+// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved.
+// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved.
+//
@@ -127,6 +127,9 @@
+// with this program; if not, write the Free Software Foundation, Inc., 59
+// Temple Place - Suite 330, Boston MA 02111-1307, USA.
+
++#include "config.h" /* USE_DNOTIFY */
++#ifdef USE_DNOTIFY
++
+#define _GNU_SOURCE
+#include <fcntl.h>
+
@@ -759,6 +762,7 @@
+ }
+}
+
++#endif /* USE_DNOTIFY */
only in patch2:
unchanged:
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -911,11 +915,13 @@
unchanged:
--- fam-2.7.0.orig/src/Interest.c++ 2003-01-18 06:18:12.000000000 -0800
+++ fam-2.7.0/src/Interest.c++ 2005-05-05 22:08:42.000000000 -0700
-@@ -42,12 +42,21 @@
+@@ -42,12 +42,23 @@
#include "Event.h"
#include "FileSystem.h"
#include "IMon.h"
++#ifdef USE_DNOTIFY
+#include "DNotify.h"
++#endif
#include "Log.h"
#include "Pollster.h"
#include "timeval.h"
@@ -934,7 +940,7 @@
bool Interest::xtab_verification = true;
Interest::Interest(const char *name, FileSystem *fs, in_addr host, ExportVerification ev)
-@@ -59,11 +68,11 @@
+@@ -59,11 +70,11 @@
myhost(host),
mypath_exported_to_host(ev == NO_VERIFY_EXPORTED)
{
@@ -951,7 +957,7 @@
{ int rc = lstat(name, &old_stat);
if (rc < 0)
{ Log::info("can't lstat %s", name);
-@@ -100,7 +109,7 @@
+@@ -100,7 +111,7 @@
}
#endif
@@ -960,7 +966,7 @@
}
Interest::~Interest()
-@@ -128,7 +137,7 @@
+@@ -128,7 +139,7 @@
pp = &p->hashlink; // move to next element
}
if (!found_same)
@@ -969,7 +975,7 @@
}
}
-@@ -147,7 +156,7 @@
+@@ -147,7 +158,7 @@
// Express interest.
IMon::Status s = IMon::BAD;
@@ -978,7 +984,7 @@
if (s != IMon::OK) {
return true;
}
-@@ -248,23 +257,23 @@
+@@ -248,23 +259,23 @@
}
void
diff -Nur fam-2.7.0.old/debian/patches/08_sockaddr_un.patch fam-2.7.0/debian/patches/08_sockaddr_un.patch
--- fam-2.7.0.old/debian/patches/08_sockaddr_un.patch 1970-01-01 01:00:00.000000000 +0100
+++ fam-2.7.0/debian/patches/08_sockaddr_un.patch 2005-08-27 15:23:45.000000000 +0200
@@ -0,0 +1,56 @@
+diff -ur fam-2.7.0.old/config.h.in fam-2.7.0/config.h.in
+--- fam-2.7.0.old/config.h.in 2005-08-27 15:07:39.000000000 +0200
++++ fam-2.7.0/config.h.in 2005-08-27 15:08:01.000000000 +0200
+@@ -76,6 +76,9 @@
+ /* Define to 1 if `sa_len' is member of `struct sockaddr'. */
+ #undef HAVE_STRUCT_SOCKADDR_SA_LEN
+
++/* Define to 1 if `sun_len' is member of `struct sockaddr_un'. */
++#undef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN
++
+ /* Define to 1 if you have the <syslog.h> header file. */
+ #undef HAVE_SYSLOG_H
+
+diff -ur fam-2.7.0.old/configure.ac fam-2.7.0/configure.ac
+--- fam-2.7.0.old/configure.ac 2005-08-27 15:07:39.000000000 +0200
++++ fam-2.7.0/configure.ac 2005-08-27 15:08:01.000000000 +0200
+@@ -72,7 +72,8 @@
+ AC_TYPE_PID_T
+ AC_TYPE_SIZE_T
+ AC_HEADER_TIME
+-AC_CHECK_MEMBERS(struct sockaddr.sa_len, struct sockaddr_un.sun_len)
++AC_CHECK_MEMBERS([struct sockaddr.sa_len],,, [#include <sys/socket.h>])
++AC_CHECK_MEMBERS([struct sockaddr_un.sun_len],,, [#include <sys/un.h>])
+
+ # Checks for library functions.
+ AC_FUNC_ERROR_AT_LINE
+diff -ur fam-2.7.0.old/src/Listener.c++ fam-2.7.0/src/Listener.c++
+--- fam-2.7.0.old/src/Listener.c++ 2005-08-27 15:07:39.000000000 +0200
++++ fam-2.7.0/src/Listener.c++ 2005-08-27 15:08:01.000000000 +0200
+@@ -209,7 +209,7 @@
+ #endif
+
+ char *tmpfile = tempnam("/tmp", ".fam");
+-#ifdef HAVE_SOCKADDR_SUN_LEN
++#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN
+ sockaddr_un sun = { sizeof(sockaddr_un), AF_UNIX, "" };
+ #else
+ sockaddr_un sun = { AF_UNIX, "" };
+@@ -283,7 +283,7 @@
+
+ // Get the new socket.
+
+-#ifdef HAVE_SOCKADDR_SUN_LEN
++#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN
+ struct sockaddr_un sun = { sizeof(sockaddr_un), AF_UNIX, "" };
+ #else
+ struct sockaddr_un sun = { AF_UNIX, "" };
+@@ -357,7 +357,7 @@
+ void
+ Listener::dirty_ugly_hack()
+ {
+-#ifdef HAVE_SOCKADDR_SUN_LEN
++#ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN
+ static sockaddr_un sun = { sizeof (sockaddr_un), AF_UNIX, "/tmp/.fam_socket" };
+ #else
+ static sockaddr_un sun = { AF_UNIX, "/tmp/.fam_socket" };