From 798d563de9b6c68798a3b488dc2d611b51ea2075 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Tue, 29 Jul 2025 01:58:50 +0800 Subject: [PATCH] tools/mtd-utils: fix build with ubuntu 18.04 LTS --- tools/mtd-utils/Makefile | 7 +- tools/mtd-utils/patches/110-portability.patch | 26 ++--- tools/mtd-utils/patches/130-lzma_jffs2.patch | 104 ++++++------------ .../320-mkfs.jffs2-SOURCE_DATE_EPOCH.patch | 6 +- 4 files changed, 51 insertions(+), 92 deletions(-) diff --git a/tools/mtd-utils/Makefile b/tools/mtd-utils/Makefile index cf7081fb5..5084022c7 100644 --- a/tools/mtd-utils/Makefile +++ b/tools/mtd-utils/Makefile @@ -7,13 +7,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mtd-utils -PKG_VERSION:=2.2.1 +PKG_VERSION:=2.1.2 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=https://infraroot.at/pub/mtd/ -PKG_HASH:=f7ae20b2eb79ee83441468f0b99d897024cd96ff853eea59106fb1952065c803 -PKG_CPE_ID:=cpe:/a:mtd-utils_project:mtd-utils +PKG_SOURCE_URL:=ftp://ftp.infradead.org/pub/mtd-utils/ +PKG_HASH:=8ad4c5f34716d40646aa28724a2f5616d325a6f119254f914e26976f1f76e9d6 PKG_FIXUP:=autoreconf diff --git a/tools/mtd-utils/patches/110-portability.patch b/tools/mtd-utils/patches/110-portability.patch index cf5f0c8d8..181e40653 100644 --- a/tools/mtd-utils/patches/110-portability.patch +++ b/tools/mtd-utils/patches/110-portability.patch @@ -1,9 +1,9 @@ --- a/jffsX-utils/compr_lzo.c +++ b/jffsX-utils/compr_lzo.c -@@ -24,7 +24,6 @@ - #include - #include +@@ -26,7 +26,6 @@ #include + + #ifndef WITHOUT_LZO -#include #include #include @@ -18,8 +18,8 @@ #include #include "common.h" #include "compr.h" ---- a/include/rbtree.h -+++ b/include/rbtree.h +--- a/jffsX-utils/rbtree.h ++++ b/jffsX-utils/rbtree.h @@ -94,8 +94,7 @@ static inline struct page * rb_insert_pa #ifndef _LINUX_RBTREE_H #define _LINUX_RBTREE_H @@ -70,7 +70,7 @@ #include --- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c +++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c -@@ -1568,6 +1568,7 @@ static int add_inode(struct stat *st, in +@@ -1549,6 +1549,7 @@ static int add_inode(struct stat *st, in if (c->default_compr != UBIFS_COMPR_NONE) use_flags |= UBIFS_COMPR_FL; @@ -78,7 +78,7 @@ if (flags & FS_COMPR_FL) use_flags |= UBIFS_COMPR_FL; if (flags & FS_SYNC_FL) -@@ -1580,6 +1581,7 @@ static int add_inode(struct stat *st, in +@@ -1561,6 +1562,7 @@ static int add_inode(struct stat *st, in use_flags |= UBIFS_DIRSYNC_FL; if (fctx) use_flags |= UBIFS_CRYPT_FL; @@ -86,7 +86,7 @@ memset(ino, 0, UBIFS_INO_NODE_SZ); ino_key_init(&key, inum); -@@ -1665,7 +1667,9 @@ static int add_dir_inode(const char *pat +@@ -1646,7 +1648,9 @@ static int add_dir_inode(const char *pat fd = dirfd(dir); if (fd == -1) return sys_err_msg("dirfd failed"); @@ -96,23 +96,23 @@ flags = 0; } -@@ -1878,6 +1882,7 @@ static int add_file(const char *path_nam +@@ -1857,6 +1861,7 @@ static int add_file(const char *path_nam dn->ch.node_type = UBIFS_DATA_NODE; key_write(&key, &dn->key); out_len = NODE_BUFFER_SIZE - UBIFS_DATA_NODE_SZ; +#ifndef NO_NATIVE_SUPPORT if (c->default_compr == UBIFS_COMPR_NONE && !c->encrypted && (flags & FS_COMPR_FL)) - #ifdef WITH_LZO -@@ -1888,6 +1893,7 @@ static int add_file(const char *path_nam - use_compr = UBIFS_COMPR_NONE; + #ifdef WITHOUT_LZO +@@ -1865,6 +1870,7 @@ static int add_file(const char *path_nam + use_compr = UBIFS_COMPR_LZO; #endif else +#endif use_compr = c->default_compr; compr_type = compress_data(buf, bytes_read, &dn->data, &out_len, use_compr); -@@ -1947,7 +1953,9 @@ static int add_non_dir(const char *path_ +@@ -1924,7 +1930,9 @@ static int add_non_dir(const char *path_ if (fd == -1) return sys_err_msg("failed to open file '%s'", path_name); diff --git a/tools/mtd-utils/patches/130-lzma_jffs2.patch b/tools/mtd-utils/patches/130-lzma_jffs2.patch index b03265a38..9778aa6d0 100644 --- a/tools/mtd-utils/patches/130-lzma_jffs2.patch +++ b/tools/mtd-utils/patches/130-lzma_jffs2.patch @@ -1,55 +1,57 @@ --- a/jffsX-utils/Makemodule.am +++ b/jffsX-utils/Makemodule.am -@@ -9,8 +9,9 @@ mkfs_jffs2_SOURCES = \ - include/mtd/jffs2-user.h \ - include/list.h \ - include/rbtree.h +@@ -4,11 +4,19 @@ mkfs_jffs2_SOURCES = \ + jffsX-utils/compr_zlib.c \ + jffsX-utils/compr.h \ + jffsX-utils/rbtree.c \ +- jffsX-utils/compr_lzo.c \ ++ jffsX-utils/compr_lzma.c \ ++ jffsX-utils/lzma/LzFind.c \ ++ jffsX-utils/lzma/LzmaEnc.c \ ++ jffsX-utils/lzma/LzmaDec.c \ + jffsX-utils/compr.c \ + jffsX-utils/compr_rtime.c ++ ++if !WITHOUT_LZO ++mkfs_jffs2_SOURCES += jffsX-utils/compr_lzo.c ++endif + mkfs_jffs2_LDADD = libmtd.a $(ZLIB_LIBS) $(LZO_LIBS) -mkfs_jffs2_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_CFLAGS) $(LZO_CFLAGS) +mkfs_jffs2_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_CFLAGS) $(LZO_CFLAGS) -I./include/linux/lzma - jffs2reader_SOURCES = jffsX-utils/jffs2reader.c include/mtd/jffs2-user.h + jffs2reader_SOURCES = jffsX-utils/jffs2reader.c jffs2reader_LDADD = libmtd.a $(ZLIB_LIBS) $(LZO_LIBS) -@@ -32,6 +33,14 @@ if WITH_ZLIB - mkfs_jffs2_SOURCES += jffsX-utils/compr_zlib.c - endif - -+if WITH_LZMA -+mkfs_jffs2_SOURCES += \ -+ jffsX-utils/compr_lzma.c \ -+ jffsX-utils/lzma/LzFind.c \ -+ jffsX-utils/lzma/LzmaEnc.c \ -+ jffsX-utils/lzma/LzmaDec.c -+endif -+ - EXTRA_DIST += jffsX-utils/device_table.txt jffsX-utils/mkfs.jffs2.1 - - dist_man1_MANS += jffsX-utils/mkfs.jffs2.1 --- a/jffsX-utils/compr.c +++ b/jffsX-utils/compr.c -@@ -471,6 +471,9 @@ int jffs2_compressors_init(void) - #ifdef WITH_LZO +@@ -520,6 +520,9 @@ int jffs2_compressors_init(void) + #ifdef CONFIG_JFFS2_LZO jffs2_lzo_init(); #endif -+#ifdef WITH_LZMA ++#ifdef CONFIG_JFFS2_LZMA + jffs2_lzma_init(); +#endif return 0; } -@@ -485,5 +488,8 @@ int jffs2_compressors_exit(void) - #ifdef WITH_LZO +@@ -534,5 +537,8 @@ int jffs2_compressors_exit(void) + #ifdef CONFIG_JFFS2_LZO jffs2_lzo_exit(); #endif -+#ifdef WITH_LZMA ++#ifdef CONFIG_JFFS2_LZMA + jffs2_lzma_exit(); +#endif return 0; } --- a/jffsX-utils/compr.h +++ b/jffsX-utils/compr.h -@@ -22,8 +22,9 @@ +@@ -18,13 +18,14 @@ + + #define CONFIG_JFFS2_ZLIB + #define CONFIG_JFFS2_RTIME +-#define CONFIG_JFFS2_LZO ++#define CONFIG_JFFS2_LZMA + #define JFFS2_RUBINMIPS_PRIORITY 10 #define JFFS2_DYNRUBIN_PRIORITY 20 #define JFFS2_RTIME_PRIORITY 50 @@ -61,11 +63,11 @@ #define JFFS2_COMPR_MODE_NONE 0 #define JFFS2_COMPR_MODE_PRIORITY 1 -@@ -110,5 +111,10 @@ void jffs2_rtime_exit(void); +@@ -115,5 +116,10 @@ void jffs2_rtime_exit(void); int jffs2_lzo_init(void); void jffs2_lzo_exit(void); #endif -+#ifdef WITH_LZMA ++#ifdef CONFIG_JFFS2_LZMA +int jffs2_lzma_init(void); +void jffs2_lzma_exit(void); +#endif @@ -5013,7 +5015,7 @@ +} --- a/jffsX-utils/mkfs.jffs2.c +++ b/jffsX-utils/mkfs.jffs2.c -@@ -1668,11 +1668,11 @@ int main(int argc, char **argv) +@@ -1667,11 +1667,11 @@ int main(int argc, char **argv) } erase_block_size *= units; @@ -5029,45 +5031,3 @@ } break; } ---- a/Makefile.am -+++ b/Makefile.am -@@ -19,6 +19,10 @@ if WITH_ZSTD - AM_CPPFLAGS += -DWITH_ZSTD - endif - -+if WITH_LZMA -+AM_CPPFLAGS += -DWITH_LZMA -+endif -+ - if WITH_SELINUX - AM_CPPFLAGS += -DWITH_SELINUX - endif ---- a/configure.ac -+++ b/configure.ac -@@ -96,6 +96,10 @@ AC_ARG_WITH([zstd], - [AS_HELP_STRING([--with-zstd], [Support for ZSTD compression])], - [], [with_zstd="check"]) - -+AC_ARG_WITH([lzma], -+ [AS_HELP_STRING([--with-lzma], [Support for LZMA compression])], -+ [], [with_lzma="check"]) -+ - AC_ARG_WITH([selinux], - [AS_HELP_STRING([--with-selinux], - [Support for selinux extended attributes])], -@@ -269,6 +273,7 @@ fi - AM_CONDITIONAL([WITH_LZO], [test "x$with_lzo" = "xyes"]) - AM_CONDITIONAL([WITH_ZLIB], [test "x$with_zlib" = "xyes"]) - AM_CONDITIONAL([WITH_ZSTD], [test "x$with_zstd" = "xyes"]) -+AM_CONDITIONAL([WITH_LZMA], [test "x$with_lzma" = "xyes"]) - AM_CONDITIONAL([WITH_XATTR], [test "x$with_xattr" = "xyes"]) - AM_CONDITIONAL([WITH_SELINUX], [test "x$with_selinux" = "xyes"]) - AM_CONDITIONAL([WITH_CRYPTO], [test "x$with_crypto" = "xyes"]) -@@ -313,6 +318,7 @@ AC_MSG_RESULT([ - lzo support: ${with_lzo} - zlib support: ${with_zlib} - zstd support: ${with_zstd} -+ lzma support: ${with_lzma} - xattr/acl support: ${with_xattr} - SELinux support: ${with_selinux} - fscrypt support: ${with_crypto} diff --git a/tools/mtd-utils/patches/320-mkfs.jffs2-SOURCE_DATE_EPOCH.patch b/tools/mtd-utils/patches/320-mkfs.jffs2-SOURCE_DATE_EPOCH.patch index a1703eb64..f3ba4d327 100644 --- a/tools/mtd-utils/patches/320-mkfs.jffs2-SOURCE_DATE_EPOCH.patch +++ b/tools/mtd-utils/patches/320-mkfs.jffs2-SOURCE_DATE_EPOCH.patch @@ -20,7 +20,7 @@ } entry = xcalloc(1, sizeof(struct filesystem_entry)); -@@ -1559,6 +1559,20 @@ static void parse_image(void){ +@@ -1558,6 +1558,20 @@ static void parse_image(void){ close(in_fd); } @@ -41,7 +41,7 @@ int main(int argc, char **argv) { int c, opt; -@@ -1577,6 +1591,7 @@ int main(int argc, char **argv) +@@ -1576,6 +1590,7 @@ int main(int argc, char **argv) warn_page_size = 1; /* warn user if page size not 4096 */ jffs2_compressors_init(); @@ -49,7 +49,7 @@ while ((opt = getopt_long(argc, argv, "D:d:r:s:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0) -@@ -1627,7 +1642,7 @@ int main(int argc, char **argv) +@@ -1626,7 +1641,7 @@ int main(int argc, char **argv) break; case 'f':