package/erofs-utils: bump version to 1.2

- add selinux support;
- add erofsfuse support;
- add 0001-erofs-utils-fix-multiple-definition-of-sbi.patch [1];
- add 0002-erofs-utils-fuse-fix-linking-when-using-with-selinux.patch [2];
- add 0003-erofs-utils-fuse-disable-backtrace-if-unsupported.patch.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/patch/?id=6c938b755682629a26f85e5540f40c0d316130ed
[2] https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/patch/?id=f1f9659e98ea925a100e50332309955f5b2b4234

Signed-off-by: Gao Xiang <hsiangkao@aol.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Gao Xiang 2020-12-17 17:33:56 +08:00 committed by Thomas Petazzoni
parent d380e0979f
commit 8fb0721eb7
6 changed files with 207 additions and 3 deletions

View File

@ -0,0 +1,62 @@
From 6c938b755682629a26f85e5540f40c0d316130ed Mon Sep 17 00:00:00 2001
From: Gao Xiang <hsiangkao@aol.com>
Date: Tue, 8 Dec 2020 18:57:41 +0800
Subject: erofs-utils: fix multiple definition of `sbi'
As nl6720 reported [1], lib/inode.o (mkfs) and lib/super.o (erofsfuse)
could be compiled together by some options. Fix it now.
[1] https://lore.kernel.org/r/10789285.Na0ui7I3VY@walnut
Link: https://lore.kernel.org/r/20201208105741.9614-1-hsiangkao@aol.com
Fixes: 5e35b75ad499 ("erofs-utils: introduce fuse implementation")
Reported-by: nl6720 <nl6720@gmail.com>
Reviewed-by: Li Guifu <bluce.lee@aliyun.com>
Signed-off-by: Gao Xiang <hsiangkao@aol.com>
---
lib/config.c | 1 +
lib/inode.c | 2 --
lib/super.c | 2 --
3 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/lib/config.c b/lib/config.c
index 3155112..3ecd481 100644
--- a/lib/config.c
+++ b/lib/config.c
@@ -11,6 +11,7 @@
#include "erofs/internal.h"
struct erofs_configure cfg;
+struct erofs_sb_info sbi;
void erofs_init_configure(void)
{
diff --git a/lib/inode.c b/lib/inode.c
index 3d634fc..0c4839d 100644
--- a/lib/inode.c
+++ b/lib/inode.c
@@ -22,8 +22,6 @@
#include "erofs/xattr.h"
#include "erofs/exclude.h"
-struct erofs_sb_info sbi;
-
#define S_SHIFT 12
static unsigned char erofs_ftype_by_mode[S_IFMT >> S_SHIFT] = {
[S_IFREG >> S_SHIFT] = EROFS_FT_REG_FILE,
diff --git a/lib/super.c b/lib/super.c
index 2d36692..025cefe 100644
--- a/lib/super.c
+++ b/lib/super.c
@@ -11,8 +11,6 @@
#include "erofs/io.h"
#include "erofs/print.h"
-struct erofs_sb_info sbi;
-
static bool check_layout_compatibility(struct erofs_sb_info *sbi,
struct erofs_super_block *dsb)
{
--
cgit 1.2.3-1.el7

View File

@ -0,0 +1,33 @@
From f1f9659e98ea925a100e50332309955f5b2b4234 Mon Sep 17 00:00:00 2001
From: David Michael <fedora.dm0@gmail.com>
Date: Thu, 10 Dec 2020 21:29:43 -0500
Subject: erofs-utils: fuse: fix linking when using --with-selinux
The libselinux functions selabel_open and selabel_close are called
by lib/config.c, so include libselinux in CFLAGS and LIBS to fix
building erofsfuse.
Link: https://lore.kernel.org/r/87360dnkh4.fsf@gmail.com
Signed-off-by: David Michael <fedora.dm0@gmail.com>
Reviewed-and-tested-by: Li Guifu <bluce.lee@aliyun.com>
Signed-off-by: Gao Xiang <hsiangkao@aol.com>
---
fuse/Makefile.am | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fuse/Makefile.am b/fuse/Makefile.am
index f14f6fd..e7757bc 100644
--- a/fuse/Makefile.am
+++ b/fuse/Makefile.am
@@ -5,6 +5,6 @@ AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = erofsfuse
erofsfuse_SOURCES = dir.c main.c
erofsfuse_CFLAGS = -Wall -Werror -I$(top_srcdir)/include
-erofsfuse_CFLAGS += -DFUSE_USE_VERSION=26 ${libfuse_CFLAGS}
-erofsfuse_LDADD = $(top_builddir)/lib/liberofs.la ${libfuse_LIBS} ${liblz4_LIBS}
+erofsfuse_CFLAGS += -DFUSE_USE_VERSION=26 ${libfuse_CFLAGS} ${libselinux_CFLAGS}
+erofsfuse_LDADD = $(top_builddir)/lib/liberofs.la ${libfuse_LIBS} ${liblz4_LIBS} ${libselinux_LIBS}
--
cgit 1.2.3-1.el7

View File

@ -0,0 +1,82 @@
From 833563ffd3126b6e85fc54402c6d68c29a30264c Mon Sep 17 00:00:00 2001
From: Gao Xiang <hsiangkao@aol.com>
Date: Thu, 17 Dec 2020 16:59:04 +0800
Subject: [PATCH] erofs-utils: fuse: disable backtrace if unsupported
backtrace is a GNU extension, enable it conditionally.
Signed-off-by: Gao Xiang <hsiangkao@aol.com>
---
configure.ac | 3 ++-
fuse/main.c | 8 ++++++--
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/configure.ac b/configure.ac
index d5fdfb8a3d17..28926c303c5c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -96,6 +96,7 @@ AC_ARG_VAR([LZ4_LIBS], [linker flags for lz4])
# Checks for header files.
AC_CHECK_HEADERS(m4_flatten([
dirent.h
+ execinfo.h
fcntl.h
getopt.h
inttypes.h
@@ -147,7 +148,7 @@ AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
#include <unistd.h>])
# Checks for library functions.
-AC_CHECK_FUNCS([fallocate gettimeofday memset realpath strdup strerror strrchr strtoull])
+AC_CHECK_FUNCS([backtrace fallocate gettimeofday memset realpath strdup strerror strrchr strtoull])
# Configure libuuid
AS_IF([test "x$with_uuid" != "xno"], [
diff --git a/fuse/main.c b/fuse/main.c
index 1e24efe110c2..c16291272e75 100644
--- a/fuse/main.c
+++ b/fuse/main.c
@@ -6,7 +6,6 @@
*/
#include <stdlib.h>
#include <string.h>
-#include <execinfo.h>
#include <signal.h>
#include <libgen.h>
#include <fuse.h>
@@ -168,6 +167,9 @@ static int optional_opt_func(void *data, const char *arg, int key,
return 1;
}
+#if defined(HAVE_EXECINFO_H) && defined(HAVE_BACKTRACE)
+#include <execinfo.h>
+
static void signal_handle_sigsegv(int signal)
{
void *array[10];
@@ -187,7 +189,7 @@ static void signal_handle_sigsegv(int signal)
erofs_dump("========================================\n");
abort();
}
-
+#endif
int main(int argc, char *argv[])
{
@@ -197,11 +199,13 @@ int main(int argc, char *argv[])
erofs_init_configure();
fprintf(stderr, "%s %s\n", basename(argv[0]), cfg.c_version);
+#if defined(HAVE_EXECINFO_H) && defined(HAVE_BACKTRACE)
if (signal(SIGSEGV, signal_handle_sigsegv) == SIG_ERR) {
fprintf(stderr, "failed to initialize signals\n");
ret = -errno;
goto err;
}
+#endif
/* parse options */
ret = fuse_opt_parse(&args, &fusecfg, option_spec, optional_opt_func);
--
2.24.0

View File

@ -15,4 +15,17 @@ config BR2_PACKAGE_EROFS_UTILS_LZ4
help
Support LZ4 compression algorithm
config BR2_PACKAGE_EROFS_UTILS_EROFSFUSE
bool "erofsfuse support"
depends on BR2_USE_MMU # libfuse
depends on !BR2_STATIC_LIBS # libfuse
depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse
select BR2_PACKAGE_LIBFUSE
help
FUSE file system client for EROFS
comment "erofsfuse needs a toolchain w/ threads, dynamic library"
depends on BR2_USE_MMU
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
endif

View File

@ -1,3 +1,3 @@
# Locally computed
sha256 a14a30d0d941f6642cad130fbba70a2493fabbe7baa09a8ce7d20745ea3385d6 erofs-utils-1.1.tar.gz
sha256 b3f65a6b6d8b1dc37694e083e01492041619100211757564adc851e327f1553c erofs-utils-1.2.tar.gz
sha256 feee3b3157dcdf78d4f50edefbd5dd7adf8b6d52c11bfaaa746a85a373256713 COPYING

View File

@ -4,7 +4,7 @@
#
################################################################################
EROFS_UTILS_VERSION = 1.1
EROFS_UTILS_VERSION = 1.2
EROFS_UTILS_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/snapshot
EROFS_UTILS_LICENSE = GPL-2.0+
EROFS_UTILS_LICENSE_FILES = COPYING
@ -21,8 +21,22 @@ else
EROFS_UTILS_CONF_OPTS += --disable-lz4
endif
ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
EROFS_UTILS_CONF_OPTS += --with-selinux
EROFS_UTILS_DEPENDENCIES += libselinux
else
EROFS_UTILS_CONF_OPTS += --without-selinux
endif
ifeq ($(BR2_PACKAGE_EROFS_UTILS_EROFSFUSE),y)
EROFS_UTILS_CONF_OPTS += --enable-fuse
EROFS_UTILS_DEPENDENCIES += libfuse
else
EROFS_UTILS_CONF_OPTS += --disable-fuse
endif
HOST_EROFS_UTILS_DEPENDENCIES = host-pkgconf host-util-linux host-lz4
HOST_EROFS_UTILS_CONF_OPTS += --enable-lz4
HOST_EROFS_UTILS_CONF_OPTS += --enable-lz4 --disable-fuse --without-selinux
$(eval $(autotools-package))
$(eval $(host-autotools-package))