]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
btrfs-tools: add a PACKAGECONFIG for lzo
authorRoss Burton <ross.burton@arm.com>
Wed, 25 May 2022 10:55:59 +0000 (11:55 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 27 May 2022 22:47:20 +0000 (23:47 +0100)
LZO is a fairly obsolete compression format these days, so add an option
to enable/disable LZO to btrfs-progs and disable it by default.

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/btrfs-tools/btrfs-tools/lzo-option.patch [new file with mode: 0644]
meta/recipes-devtools/btrfs-tools/btrfs-tools_5.16.2.bb

diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools/lzo-option.patch b/meta/recipes-devtools/btrfs-tools/btrfs-tools/lzo-option.patch
new file mode 100644 (file)
index 0000000..f4278a5
--- /dev/null
@@ -0,0 +1,126 @@
+Upstream-Status: Backport [https://github.com/kdave/btrfs-progs/commit/73545c1fe6304f08ab306b76d2bcacaf22a5e99a]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 4f4eafe8ebcc86f84f6c85a5c5814c430d8f190c Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@arm.com>
+Date: Tue, 24 May 2022 13:44:29 +0100
+Subject: [PATCH] btrfs-progs: add option to disable LZO support
+
+LZO as a compression format is pretty archaic these days, there are
+better algorithsm in all metrics for compression and decompression, and
+lzo hasn't had a new release since 2017.
+
+Add an option to disable LZO (defaulting to enabled), and respect it in
+cmds/restore.c.
+
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+---
+ Makefile        |  2 +-
+ Makefile.inc.in |  1 +
+ cmds/restore.c  |  7 +++++++
+ configure.ac    | 30 ++++++++++++++++++++----------
+ 4 files changed, 29 insertions(+), 11 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index af4908f9..0e8e05f3 100644
+--- a/Makefile
++++ b/Makefile
+@@ -335,7 +335,7 @@ endif
+ btrfs_convert_cflags = -DBTRFSCONVERT_EXT2=$(BTRFSCONVERT_EXT2)
+ btrfs_convert_cflags += -DBTRFSCONVERT_REISERFS=$(BTRFSCONVERT_REISERFS)
+ btrfs_fragments_libs = -lgd -lpng -ljpeg -lfreetype
+-cmds_restore_cflags = -DBTRFSRESTORE_ZSTD=$(BTRFSRESTORE_ZSTD)
++cmds_restore_cflags = -DBTRFSRESTORE_LZO=$(BTRFSRESTORE_LZO) -DBTRFSRESTORE_ZSTD=$(BTRFSRESTORE_ZSTD)
+ ifeq ($(CRYPTOPROVIDER_BUILTIN),1)
+ CRYPTO_OBJECTS = crypto/sha224-256.o crypto/blake2b-ref.o
+diff --git a/Makefile.inc.in b/Makefile.inc.in
+index c995aef9..385b7ae1 100644
+--- a/Makefile.inc.in
++++ b/Makefile.inc.in
+@@ -16,6 +16,7 @@ BUILD_PROGRAMS = @BUILD_PROGRAMS@
+ BUILD_SHARED_LIBRARIES = @BUILD_SHARED_LIBRARIES@
+ BUILD_STATIC_LIBRARIES = @BUILD_STATIC_LIBRARIES@
+ BTRFSCONVERT_EXT2 = @BTRFSCONVERT_EXT2@
++BTRFSRESTORE_LZO = @BTRFSRESTORE_LZO@
+ BTRFSCONVERT_REISERFS = @BTRFSCONVERT_REISERFS@
+ BTRFSRESTORE_ZSTD = @BTRFSRESTORE_ZSTD@
+ PYTHON_BINDINGS = @PYTHON_BINDINGS@
+diff --git a/cmds/restore.c b/cmds/restore.c
+index 5923d571..4dd79fce 100644
+--- a/cmds/restore.c
++++ b/cmds/restore.c
+@@ -25,8 +25,10 @@
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
++#if BTRFSRESTORE_LZO
+ #include <lzo/lzoconf.h>
+ #include <lzo/lzo1x.h>
++#endif
+ #include <zlib.h>
+ #if BTRFSRESTORE_ZSTD
+ #include <zstd.h>
+@@ -98,6 +100,10 @@ static inline size_t read_compress_length(unsigned char *buf)
+ static int decompress_lzo(struct btrfs_root *root, unsigned char *inbuf,
+                       char *outbuf, u64 compress_len, u64 *decompress_len)
+ {
++#if !BTRFSRESTORE_LZO
++      error("btrfs not compiled with lzo support");
++      return -1;
++#else
+       size_t new_len;
+       size_t in_len;
+       size_t out_len = 0;
+@@ -156,6 +162,7 @@ static int decompress_lzo(struct btrfs_root *root, unsigned char *inbuf,
+       *decompress_len = out_len;
+       return 0;
++#endif
+ }
+ static int decompress_zstd(const char *inbuf, char *outbuf, u64 compress_len,
+diff --git a/configure.ac b/configure.ac
+index d907636b..c1ad2c22 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -372,16 +372,26 @@ if ${PKG_CONFIG} udev --atleast-version 190; then
+ fi
+ AC_SUBST(UDEVDIR)
+-dnl lzo library does not provide pkg-config, let use classic way
+-AC_CHECK_LIB([lzo2], [lzo_version], [
+-      LZO2_LIBS="-llzo2"
+-      LZO2_CFLAGS=""
+-      LZO2_LIBS_STATIC="-llzo2"],[
+-      AC_MSG_ERROR([cannot find lzo2 library])
+-])
+-AC_SUBST([LZO2_LIBS])
+-AC_SUBST([LZO2_LIBS_STATIC])
+-AC_SUBST([LZO2_CFLAGS])
++AC_ARG_ENABLE([lzo],
++      AS_HELP_STRING([--disable-lzo], [build without lzo support]),
++      [], [enable_lzo=yes]
++)
++
++if test "x$enable_lzo" = xyes; then
++      dnl lzo library does not provide pkg-config, let use classic way
++      AC_CHECK_LIB([lzo2], [lzo_version], [
++              LZO2_LIBS="-llzo2"
++              LZO2_CFLAGS=""
++              LZO2_LIBS_STATIC="-llzo2"],[
++              AC_MSG_ERROR([cannot find lzo2 library])
++      ])
++      AC_SUBST([LZO2_LIBS])
++      AC_SUBST([LZO2_LIBS_STATIC])
++      AC_SUBST([LZO2_CFLAGS])
++fi
++
++AS_IF([test "x$enable_lzo" = xyes], [BTRFSRESTORE_LZO=1], [BTRFSRESTORE_LZO=0])
++AC_SUBST(BTRFSRESTORE_LZO)
+ dnl call PKG_INSTALLDIR from pkg.m4 to set pkgconfigdir
+ m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], [AC_MSG_ERROR([please install pkgconf])])
+-- 
+2.25.1
+
index 4ab486c465c722d87cde8b6b907acbadfa9f0055..88b5c6259cf13153b1394f39340b48398bfaa05e 100644 (file)
@@ -13,10 +13,11 @@ LIC_FILES_CHKSUM = " \
     file://libbtrfsutil/COPYING;md5=4fbd65380cdd255951079008b364516c \
 "
 SECTION = "base"
-DEPENDS = "lzo util-linux zlib"
+DEPENDS = "util-linux zlib"
 
 SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git;branch=master \
            file://0001-Add-a-possibility-to-specify-where-python-modules-ar.patch \
+           file://lzo-option.patch \
            "
 SRCREV = "31458c9c81935abbed010221261897273a98d2c1"
 S = "${WORKDIR}/git"
@@ -32,6 +33,7 @@ PACKAGECONFIG[programs] = "--enable-programs,--disable-programs"
 PACKAGECONFIG[convert] = "--enable-convert --with-convert=ext2,--disable-convert --without-convert,e2fsprogs"
 PACKAGECONFIG[zoned] = "--enable-zoned,--disable-zoned"
 PACKAGECONFIG[python] = "--enable-python,--disable-python,python3-setuptools-native"
+PACKAGECONFIG[lzo] = "--enable-lzo,--disable-lzo,lzo"
 PACKAGECONFIG[zstd] = "--enable-zstd,--disable-zstd,zstd"
 PACKAGECONFIG[udev] = "--enable-libudev,--disable-libudev,udev"