On Thu, Jan 06, 2011 at 03:48:42PM +0100, Jakub Wilk wrote:
> # Let me fix mess I made
> forcemerge 609108 609052
> notforwarded 609108
> tags 609108 + patch
> thanks

Thanks!

I've attached my latest patch for this bug.  It's from the schroot-1.4
branch of the git repository.  This is what I intend to upload to fix
the kfreebsd mount problems for squeeze.  If you could possibly test
it and let me know if it works, that would be great.

Note that if you autoreconf to update the autotools, you'll need to
set the version to 1.4.18 in VERSION [./bootstrap does this
automatically if building from the git repo].


Thanks,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
 `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.
diff --git a/NEWS b/NEWS
index bdc5677..6f89e07 100644
--- a/NEWS
+++ b/NEWS
@@ -1,12 +1,16 @@
 NEWS                                                            -*- outline -*-
 ----
 
-Welcome to schroot 1.4.17.  Please read these release notes carefully.
+Welcome to schroot 1.4.18.  Please read these release notes carefully.
 
 Full installation instructions are provided in the INSTALL file.  The
 README file also contains more specific notes regarding building and
 configuration.
 
+* Major changes in 1.4.18:
+
+  None.
+
 * Major changes in 1.4.17:
 
   None.
diff --git a/configure.ac b/configure.ac
index 351e678..b598960 100644
--- a/configure.ac
+++ b/configure.ac
@@ -331,8 +331,7 @@ AC_DEFINE_UNQUOTED(SBUILD_HOST_CPU, ["$host_cpu"])
 
 # Checks for libraries.
 PKG_CHECK_MODULES([UUID], [uuid],
-                  [AC_DEFINE(HAVE_UUID)
-		   HAVE_UUID=yes],
+                  [HAVE_UUID=yes],
                   [HAVE_UUID=no])
 
 AM_PATH_CPPUNIT([1.10.0], [HAVE_CPPUNIT=yes])
@@ -418,17 +417,25 @@ fi
 
 AC_MSG_CHECKING([whether to build UUID support])
 BUILD_UUID="yes"
-if test "$enable_uuid" = "yes"; then
-  BUILD_UUID="no"
-fi
-if test "$HAVE_UUID" = "no"; then
+if test "$enable_uuid" = "no"; then
   BUILD_UUID="no"
+elif test "$enable_uuid" = "yes"; then
+  if test "$HAVE_UUID" = "no"; then
+    AC_MSG_FAILURE([libuuid (e2fsprogs) is not installed, but is required by schroot])
+  fi
+elif test "$enable_uuid" = "auto"; then
+  if test "$HAVE_UUID" = "no"; then
+    BUILD_UUID="no"
+  fi
 fi
 AC_MSG_RESULT([$BUILD_UUID])
 
-AH_TEMPLATE(HAVE_UUID, [Set if UUID support is available])
+AM_CONDITIONAL([BUILD_UUID], [test "$BUILD_UUID" = "yes"])
+AH_TEMPLATE(SBUILD_USE_UUID, [Set if uuid support is present])
 if test "$BUILD_UUID" = "yes"; then
-  AC_DEFINE(HAVE_UUID, 1)
+  AC_DEFINE(SBUILD_USE_UUID, 1)
+else
+  UUID_LIBS=""
 fi
 
 AC_MSG_CHECKING([whether to build PAM support])
@@ -458,6 +465,8 @@ AM_CONDITIONAL([BUILD_PAM], [test "$BUILD_PAM" = "yes"])
 AH_TEMPLATE(SBUILD_FEATURE_PAM, [Set if PAM support is available])
 if test "$BUILD_PAM" = "yes"; then
   AC_DEFINE(SBUILD_FEATURE_PAM, 1)
+else
+  PAM_LIBS=""
 fi
 
 AC_MSG_CHECKING([whether to build block-device support])
diff --git a/debian/changelog b/debian/changelog
index fdb1c7f..2a05e9a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,22 @@
+schroot (1.4.18-1) unstable; urgency=low
+
+  * New upstream stable release.
+  * Disable the use of long UUIDs in automatically-generated session
+    names on kfreebsd kernels (Closes: #609108).  Use the time and
+    process ID instead, which are far shorter than the UUID.  This is
+    required due to FreeBSD kernels using fixed-length character arrays
+    in their struct statfs structure which limits the mount and umount
+    commands to paths less than 88 characters in length (80 in
+    practice).  Disabling UUID support reduces the likelihood of mount
+    and umount failure when beginning and ending sessions, but can not
+    fix the underlying bug in FreeBSD.  It can still be triggered if
+    long session names are used, or filesystems are mounted deep inside
+    the chroot directory hierarchy.  Thanks to Guillem Jover, Julián
+    Moreno Patiño and Jakub Wilk for help fixing the configure script,
+    Debian packaging and testing.
+
+ -- Roger Leigh <rle...@debian.org>  Thu, 06 Jan 2011 22:09:13 +0000
+
 schroot (1.4.17-1) unstable; urgency=low
 
   * New upstream stable release.
diff --git a/debian/control b/debian/control
index a7f3e98..4064d70 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,7 @@ Section: admin
 Priority: optional
 Maintainer: Debian buildd-tools Developers <buildd-tools-de...@lists.alioth.debian.org>
 Uploaders: Roger Leigh <rle...@debian.org>
-Build-Depends: debhelper (>= 7.0.0), autotools-dev, pkg-config (>= 0.20), libpam0g-dev (>= 0.79-3.1), uuid-dev, liblockdev1-dev (>= 1.0.2), libboost-dev (>= 1.39.0), libboost-program-options-dev (>= 1.39.0), libboost-regex-dev (>= 1.39.0), libboost-filesystem-dev (>= 1.39.0), gettext, libcppunit-dev
+Build-Depends: debhelper (>= 7.0.0), autotools-dev, pkg-config (>= 0.20), libpam0g-dev (>= 0.79-3.1), uuid-dev [!kfreebsd-any], liblockdev1-dev (>= 1.0.2), libboost-dev (>= 1.39.0), libboost-program-options-dev (>= 1.39.0), libboost-regex-dev (>= 1.39.0), libboost-filesystem-dev (>= 1.39.0), gettext, libcppunit-dev
 Build-Depends-Indep: doxygen, graphviz
 Standards-Version: 3.9.1
 Vcs-Browser: http://git.debian.org/?p=buildd-tools/schroot.git
diff --git a/debian/rules b/debian/rules
index 16d93b4..2cc89bd 100755
--- a/debian/rules
+++ b/debian/rules
@@ -19,6 +19,12 @@ else
 	BTRFSSNAP_OPTIONS = --enable-btrfs-snapshot
 endif
 
+ifneq ($(DEB_HOST_ARCH_OS),kfreebsd)
+	UUID_OPTIONS = --enable-uuid
+else
+	UUID_OPTIONS = --disable-uuid
+endif
+
 CFLAGS = -Wall -g
 
 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
@@ -44,7 +50,7 @@ debian/build/config.status: configure
 	  --enable-dchroot --enable-dchroot-dsa \
 	  --enable-static --disable-shared \
 	  --with-bash-completion-dir=/etc/bash_completion.d \
-	  $(LVMSNAP_OPTIONS) $(BTRFSSNAP_OPTIONS) \
+	  $(LVMSNAP_OPTIONS) $(BTRFSSNAP_OPTIONS) $(UUID_OPTIONS) \
 	  BTRFS=/sbin/btrfs \
 	  BTRFSCTL=/sbin/btrfsctl \
 	  LVCREATE=/sbin/lvcreate \
diff --git a/sbuild/sbuild-util.cc b/sbuild/sbuild-util.cc
index 987ee96..0635867 100644
--- a/sbuild/sbuild-util.cc
+++ b/sbuild/sbuild-util.cc
@@ -29,7 +29,7 @@
 #include <sys/stat.h>
 #include <unistd.h>
 
-#ifdef HAVE_UUID
+#ifdef SBUILD_USE_UUID
 #include <uuid/uuid.h>
 #else
 #include <time.h>
@@ -237,7 +237,7 @@ sbuild::unique_identifier ()
   std::ostringstream id;
   id.imbue(std::locale::classic());
 
-#ifdef HAVE_UUID
+#ifdef SBUILD_USE_UUID
   uuid_t uuid;
   char uuid_str[37];
   uuid_generate(uuid);

Attachment: signature.asc
Description: Digital signature

Reply via email to