aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2024-04-30 00:35:07 -0400
committerTheodore Ts'o <tytso@mit.edu>2024-04-30 00:35:07 -0400
commite6d5691cd6e2fa9c6ed8fa2ab665c2412bda8224 (patch)
treee5a03b77ac9d07c67cc2f063a276285eaa71c1b3
parenta90cd3b00bb5c1d61556c472414c2b415a73901f (diff)
parent1b042c23ca782c1af06695bf61528f0969378bdc (diff)
downloade2fsprogs-e6d5691cd6e2fa9c6ed8fa2ab665c2412bda8224.tar.gz
Merge branch 'master' into debian/master
-rwxr-xr-xconfigure49
-rw-r--r--configure.ac37
-rw-r--r--debian/changelog2
-rwxr-xr-xdebian/rules17
-rw-r--r--doc/RelNotes/v1.47.1.txt2
-rw-r--r--lib/config.h.in3
-rw-r--r--misc/Makefile.in2
-rw-r--r--misc/create_inode_libarchive.c2
-rw-r--r--resize/resize2fs.c3
9 files changed, 101 insertions, 16 deletions
diff --git a/configure b/configure
index 866eca252..2b712e5d3 100755
--- a/configure
+++ b/configure
@@ -930,6 +930,7 @@ enable_rpath
with_libiconv_prefix
with_libintl_prefix
enable_largefile
+with_libarchive
enable_fuse2fs
enable_lto
enable_ubsan
@@ -1646,6 +1647,7 @@ Optional Packages:
--without-libiconv-prefix don't search for libiconv in includedir and libdir
--with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
--without-libintl-prefix don't search for libintl in includedir and libdir
+ --without-libarchive disable use of libarchive
--with-multiarch=ARCH specify the multiarch triplet
--with-udev-rules-dir[=DIR]
Install udev rules into DIR.
@@ -13734,7 +13736,37 @@ if test "$ac_cv_func_dlopen" = yes ; then
MAGIC_LIB=$DLOPEN_LIB
fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archive_read_new in -larchive" >&5
+
+# Check whether --with-libarchive was given.
+if test ${with_libarchive+y}
+then :
+ withval=$with_libarchive; if test "$withval" = "no"
+then
+ try_libarchive=""
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling libarchive support" >&5
+printf "%s\n" "Disabling libarchive support" >&6; }
+elif test "$withval" = "direct"
+then
+ try_libarchive="direct"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Testing for libarchive support (forced direct link)" >&5
+printf "%s\n" "Testing for libarchive support (forced direct link)" >&6; }
+else
+ try_libarchive="yes"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Testing for libarchive support (with dlopen)" >&5
+printf "%s\n" "Testing for libarchive support (with dlopen)" >&6; }
+fi
+
+else $as_nop
+ try_libarchive="yes"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Try testing for libarchive support (with dlopen) by default" >&5
+printf "%s\n" "Try testing for libarchive support (with dlopen) by default" >&6; }
+
+fi
+
+ARCHIVE_LIB=
+if test -n "$try_libarchive"
+then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archive_read_new in -larchive" >&5
printf %s "checking for archive_read_new in -larchive... " >&6; }
if test ${ac_cv_lib_archive_archive_read_new+y}
then :
@@ -13772,7 +13804,7 @@ printf "%s\n" "$ac_cv_lib_archive_archive_read_new" >&6; }
if test "x$ac_cv_lib_archive_archive_read_new" = xyes
then :
ARCHIVE_LIB=-larchive
-ac_fn_c_check_header_compile "$LINENO" "archive.h" "ac_cv_header_archive_h" "$ac_includes_default"
+ ac_fn_c_check_header_compile "$LINENO" "archive.h" "ac_cv_header_archive_h" "$ac_includes_default"
if test "x$ac_cv_header_archive_h" = xyes
then :
printf "%s\n" "#define HAVE_ARCHIVE_H 1" >>confdefs.h
@@ -13781,8 +13813,17 @@ fi
fi
-if test "$ac_cv_func_dlopen" = yes ; then
- ARCHIVE_LIB=$DLOPEN_LIB
+ if test "$ac_cv_func_dlopen" = yes -a "$try_libarchive" != "direct"; then
+ ARCHIVE_LIB=$DLOPEN_LIB
+
+printf "%s\n" "#define CONFIG_DLOPEN_LIBARCHIVE 1" >>confdefs.h
+
+
+ fi
+ if test "$ac_cv_header_archive_h" != "yes"
+ then
+ ARCHIVE_LIB=
+ fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
diff --git a/configure.ac b/configure.ac
index cc204031d..e00e8d0e0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1301,10 +1301,39 @@ AC_SUBST(MAGIC_LIB)
dnl
dnl libarchive
dnl
-AC_CHECK_LIB(archive, archive_read_new, [ARCHIVE_LIB=-larchive
-AC_CHECK_HEADERS([archive.h])])
-if test "$ac_cv_func_dlopen" = yes ; then
- ARCHIVE_LIB=$DLOPEN_LIB
+AC_ARG_WITH([libarchive],
+AS_HELP_STRING([--without-libarchive],[disable use of libarchive]),
+[if test "$withval" = "no"
+then
+ try_libarchive=""
+ AC_MSG_RESULT([Disabling libarchive support])
+elif test "$withval" = "direct"
+then
+ try_libarchive="direct"
+ AC_MSG_RESULT([Testing for libarchive support (forced direct link)])
+else
+ try_libarchive="yes"
+ AC_MSG_RESULT([Testing for libarchive support (with dlopen)])
+fi]
+,
+try_libarchive="yes"
+AC_MSG_RESULT([Try testing for libarchive support (with dlopen) by default])
+)
+ARCHIVE_LIB=
+if test -n "$try_libarchive"
+then
+ AC_CHECK_LIB(archive, archive_read_new, [ARCHIVE_LIB=-larchive
+ AC_CHECK_HEADERS([archive.h])])
+ if test "$ac_cv_func_dlopen" = yes -a "$try_libarchive" != "direct"; then
+ ARCHIVE_LIB=$DLOPEN_LIB
+ AC_DEFINE(CONFIG_DLOPEN_LIBARCHIVE, 1,
+ [Define to 1 if using dlopen to access libarchive])
+
+ fi
+ if test "$ac_cv_header_archive_h" != "yes"
+ then
+ ARCHIVE_LIB=
+ fi
fi
AC_SUBST(ARCHIVE_LIB)
dnl
diff --git a/debian/changelog b/debian/changelog
index 59a2cb3ff..897b9734c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -50,7 +50,7 @@ e2fsprogs (1.47.1~rc1-1) unstable; urgency=medium
* Fix a potential e2fsck divide by zero crash caused by a maliciously
fuzzed file system.
* Fix dumpe2fs to report free block ranges correctly for bigalloc file
- file systems.
+ systems.
* Fix resize2fs where resizing a bigalloc file system can result in the
free cluster count in the last block group and the total free clusters
count to be incorrect.
diff --git a/debian/rules b/debian/rules
index b95e0fa32..d449eca0f 100755
--- a/debian/rules
+++ b/debian/rules
@@ -23,6 +23,11 @@ ifneq ($(filter pkg.e2fsprogs.no-fuse2fs,$(DEB_BUILD_PROFILES)),)
SKIP_FUSE2FS=yes
endif
+ifneq (,$(filter-out parallel=1,$(filter parallel=%,$(DEB_BUILD_OPTIONS))))
+ NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+ JOBS = -j$(NUMJOBS)
+endif
+
COMERR_VERSION ?= $(shell grep ELF_VERSION lib/et/Makefile.in | cut '-d ' -f3)
SS_VERSION ?= $(shell grep ELF_VERSION lib/ss/Makefile.in | cut '-d ' -f3)
@@ -61,6 +66,11 @@ CC ?= $(DEB_HOST_GNU_TYPE)-gcc
COMMON_CONF_FLAGS += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
endif
+# work around Debian Bug #1070042
+ifeq ($(DEB_HOST_ARCH),mips64el)
+COMMON_CONF_FLAGS += --without-libarchive
+endif
+
%:
dh $@ -B${stdbuilddir}
@@ -72,7 +82,7 @@ override_dh_auto_configure:
../../configure ${COMMON_CONF_FLAGS}
override_dh_auto_build:
- $(MAKE) -C ${stdbuilddir} V=1 all
+ $(MAKE) -C ${stdbuilddir} V=1 $(JOBS) all
ifeq (,$(filter pkg.e2fsprogs.no-static,$(DEB_BUILD_PROFILES)))
$(MAKE) -C ${stdbuilddir}/e2fsck V=1 e2fsck.static
endif
@@ -153,9 +163,10 @@ override_dh_installinfo:
dh_installinfo -pcomerr-dev ${stdbuilddir}/lib/et/com_err.info
dh_installinfo -plibext2fs-dev ${stdbuilddir}/doc/libext2fs.info
+ifneq ($(DEB_HOST_ARCH_OS), hurd)
override_dh_installsystemd:
dh_installsystemd -p e2fsprogs --no-restart-after-upgrade --no-stop-on-upgrade e2scrub_all.timer e2scrub_reap.service
- dh_installsystemd --name=service1
+endif
override_dh_makeshlibs:
for i in $(SYMBOL_LIBS); \
@@ -188,7 +199,7 @@ override_dh_gencontrol:
override_dh_auto_test:
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
- PRINT_FAILED=yes $(MAKE) -C ${stdbuilddir} V=1 check
+ PRINT_FAILED=yes $(MAKE) -C ${stdbuilddir} V=1 $(JOBS) check
endif
test_printenv:
diff --git a/doc/RelNotes/v1.47.1.txt b/doc/RelNotes/v1.47.1.txt
index 53eeee9e6..82998f984 100644
--- a/doc/RelNotes/v1.47.1.txt
+++ b/doc/RelNotes/v1.47.1.txt
@@ -87,7 +87,7 @@ Fix a potential e2fsck divide by zero crash caused by a maliciously
fuzzed file system.
Fix dumpe2fs to report free block ranges correctly for bigalloc file
-file systems.
+systems.
Fix resize2fs where resizing a bigalloc file system can result in the
free cluster count in the last block group and the total free clusters
diff --git a/lib/config.h.in b/lib/config.h.in
index 9a4058ec5..04cec72b8 100644
--- a/lib/config.h.in
+++ b/lib/config.h.in
@@ -12,6 +12,9 @@
/* Define to 1 for features for use by ext4 developers */
#undef CONFIG_DEVELOPER_FEATURES
+/* Define to 1 if using dlopen to access libarchive */
+#undef CONFIG_DLOPEN_LIBARCHIVE
+
/* Define to 1 if debugging ext3/4 journal code */
#undef CONFIG_JBD_DEBUG
diff --git a/misc/Makefile.in b/misc/Makefile.in
index 814e7064d..37c269991 100644
--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -290,7 +290,7 @@ mke2fs.static: $(MKE2FS_OBJS) $(STATIC_DEPLIBS) $(STATIC_LIBE2P) $(DEPSTATIC_LIB
$(Q) $(CC) $(LDFLAGS_STATIC) -o mke2fs.static $(MKE2FS_OBJS) \
$(STATIC_LIBS) $(STATIC_LIBE2P) \
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(LIBINTL) $(SYSLIBS) \
- $(LIBMAGIC)
+ $(LIBMAGIC) $(LIBARCHIVE)
mke2fs.profiled: $(MKE2FS_OBJS) $(PROFILED_DEPLIBS) \
$(PROFILED_LIBE2P) $(PROFILED_DEPLIBBLKID) $(PROFILED_DEPLIBUUID)
diff --git a/misc/create_inode_libarchive.c b/misc/create_inode_libarchive.c
index 6ca0f9f2c..ebd62d449 100644
--- a/misc/create_inode_libarchive.c
+++ b/misc/create_inode_libarchive.c
@@ -51,7 +51,7 @@ static int (*dl_archive_read_open_filename)(struct archive *,
static int (*dl_archive_read_support_filter_all)(struct archive *);
static int (*dl_archive_read_support_format_all)(struct archive *);
-#ifdef HAVE_DLOPEN
+#ifdef CONFIG_DLOPEN_LIBARCHIVE
#include <dlfcn.h>
static void *libarchive_handle;
diff --git a/resize/resize2fs.c b/resize/resize2fs.c
index 4daa068b8..f4a409805 100644
--- a/resize/resize2fs.c
+++ b/resize/resize2fs.c
@@ -2870,7 +2870,8 @@ static errcode_t resize2fs_calculate_summary_stats(ext2_filsys fs)
if ((group == fs->group_desc_count - 1) && (max & 7)) {
n = 0;
for (b = (fs->super->s_first_data_block +
- (fs->super->s_blocks_per_group * group));
+ ((blk64_t) fs->super->s_blocks_per_group *
+ group));
b < ext2fs_blocks_count(fs->super);
b += EXT2FS_CLUSTER_RATIO(fs)) {
if (ext2fs_test_block_bitmap2(fs->block_map, b))