From 96b139542f3c1e3cf7f12a9f2f8106571813c103 Mon Sep 17 00:00:00 2001 From: Igor Opaniuk Date: Wed, 25 Nov 2020 17:43:54 +0200 Subject: mtd-utils: backport latest recipe from OE core upstream Backport the upstream mtd-utils v2.1.2 recipe from OE core [1]. [1] https://git.openembedded.org/openembedded-core/plain/meta/recipes-devtools/mtd/mtd-utils_git.bb Related-to: ELB-3249 Signed-off-by: Igor Opaniuk --- .../add-exclusion-to-mkfs-jffs2-git-2.patch | 105 +++++++++++++++++++++ recipes-devtools/mtd/mtd-utils_git.bb | 78 +++++++++++++++ 2 files changed, 183 insertions(+) create mode 100644 recipes-devtools/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-git-2.patch create mode 100644 recipes-devtools/mtd/mtd-utils_git.bb (limited to 'recipes-devtools') diff --git a/recipes-devtools/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-git-2.patch b/recipes-devtools/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-git-2.patch new file mode 100644 index 0000000..5d874d9 --- /dev/null +++ b/recipes-devtools/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-git-2.patch @@ -0,0 +1,105 @@ +Upstream-Status: Pending + +Index: git/jffsX-utils/mkfs.jffs2.c +=================================================================== +--- git.orig/jffsX-utils/mkfs.jffs2.c ++++ git/jffsX-utils/mkfs.jffs2.c +@@ -100,6 +100,11 @@ struct filesystem_entry { + struct rb_node hardlink_rb; + }; + ++struct ignorepath_entry { ++ struct ignorepath_entry* next; /* Points to the next ignorepath element */ ++ char name[PATH_MAX]; /* Name of the entry */ ++}; ++static struct ignorepath_entry* ignorepath = 0; + struct rb_root hardlinks; + static int out_fd = -1; + static int in_fd = -1; +@@ -309,7 +314,7 @@ static struct filesystem_entry *recursiv + char *hpath, *tpath; + struct dirent *dp, **namelist; + struct filesystem_entry *entry; +- ++ struct ignorepath_entry* element = ignorepath; + + if (lstat(hostpath, &sb)) { + sys_errmsg_die("%s", hostpath); +@@ -318,6 +323,15 @@ static struct filesystem_entry *recursiv + entry = add_host_filesystem_entry(targetpath, hostpath, + sb.st_uid, sb.st_gid, sb.st_mode, 0, parent); + ++ while ( element ) { ++ if ( strcmp( element->name, targetpath ) == 0 ) { ++ printf( "Note: ignoring directories below '%s'\n", targetpath ); ++ return entry; ++ break; ++ } ++ element = element->next; ++ } ++ + n = scandir(hostpath, &namelist, 0, alphasort); + if (n < 0) { + sys_errmsg_die("opening directory %s", hostpath); +@@ -1359,6 +1373,7 @@ static struct option long_options[] = { + {"root", 1, NULL, 'r'}, + {"pagesize", 1, NULL, 's'}, + {"eraseblock", 1, NULL, 'e'}, ++ {"ignore", 1, NULL, 'I'}, + {"output", 1, NULL, 'o'}, + {"help", 0, NULL, 'h'}, + {"verbose", 0, NULL, 'v'}, +@@ -1409,6 +1424,7 @@ static const char helptext[] = + " -L, --list-compressors Show the list of the available compressors\n" + " -t, --test-compression Call decompress and compare with the original (for test)\n" + " -n, --no-cleanmarkers Don't add a cleanmarker to every eraseblock\n" ++" -I, --ignore=PATH Ignore sub directory and file tree below PATH when recursing over the file system\n" + " -o, --output=FILE Output to FILE (default: stdout)\n" + " -l, --little-endian Create a little-endian filesystem\n" + " -b, --big-endian Create a big-endian filesystem\n" +@@ -1566,6 +1582,7 @@ int main(int argc, char **argv) + char *compr_name = NULL; + int compr_prior = -1; + int warn_page_size = 0; ++ struct ignorepath_entry* element = ignorepath; + + page_size = sysconf(_SC_PAGESIZE); + if (page_size < 0) /* System doesn't know so ... */ +@@ -1576,7 +1593,7 @@ int main(int argc, char **argv) + jffs2_compressors_init(); + + while ((opt = getopt_long(argc, argv, +- "D:d:r:s:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0) ++ "D:d:r:s:I:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0) + { + switch (opt) { + case 'D': +@@ -1600,6 +1617,28 @@ int main(int argc, char **argv) + warn_page_size = 0; /* set by user, so don't need to warn */ + break; + ++ case 'I': ++ printf( "Note: Adding '%s' to ignore Path\n", optarg ); ++ element = ignorepath; ++ if ( !ignorepath ) { ++ ignorepath = xmalloc( sizeof( struct ignorepath_entry ) ); ++ ignorepath->next = 0; ++ strcpy( &ignorepath->name[0], optarg ); ++ } else { ++ while ( element->next ) element = element->next; ++ element->next = xmalloc( sizeof( struct ignorepath_entry ) ); ++ element->next->next = 0; ++ strcpy( &element->next->name[0], optarg ); ++ } ++ printf( "--------- Dumping ignore path list ----------------\n" ); ++ element = ignorepath; ++ while ( element ) { ++ printf( " * '%s'\n", &element->name[0] ); ++ element = element->next; ++ } ++ printf( "---------------------------------------------------\n" ); ++ break; ++ + case 'o': + if (out_fd != -1) { + errmsg_die("output filename specified more than once"); diff --git a/recipes-devtools/mtd/mtd-utils_git.bb b/recipes-devtools/mtd/mtd-utils_git.bb new file mode 100644 index 0000000..8d6bbfc --- /dev/null +++ b/recipes-devtools/mtd/mtd-utils_git.bb @@ -0,0 +1,78 @@ +SUMMARY = "Tools for managing memory technology devices" +HOMEPAGE = "http://www.linux-mtd.infradead.org/" +SECTION = "base" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \ + file://include/common.h;beginline=1;endline=17;md5=ba05b07912a44ea2bf81ce409380049c" + +inherit autotools pkgconfig update-alternatives + +DEPENDS = "zlib e2fsprogs util-linux" +RDEPENDS_mtd-utils-tests += "bash" + +PV = "2.1.2" + +SRCREV = "7b986779342021bda87c04da3bf729718736d8ab" +SRC_URI = "git://git.infradead.org/mtd-utils.git \ + file://add-exclusion-to-mkfs-jffs2-git-2.patch \ + " + +S = "${WORKDIR}/git" + +EXTRA_OECONF += "--enable-install-tests" + +# xattr support creates an additional compile-time dependency on acl because +# the sys/acl.h header is needed. libacl is not needed and thus enabling xattr +# regardless whether acl is enabled or disabled in the distro should be okay. +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'xattr', d)} lzo jffs ubifs" +PACKAGECONFIG[lzo] = "--with-lzo,--without-lzo,lzo" +PACKAGECONFIG[xattr] = "--with-xattr,--without-xattr,acl" +PACKAGECONFIG[crypto] = "--with-crypto,--without-crypto,openssl" +PACKAGECONFIG[jffs] = "--with-jffs,--without-jffs" +PACKAGECONFIG[ubifs] = "--with-ubifs,--without-ubifs" +PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd" + +CPPFLAGS_append_riscv64 = " -pthread -D_REENTRANT" + +EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} ${@bb.utils.contains('PACKAGECONFIG', 'xattr', '', '-DWITHOUT_XATTR', d)} -I${S}/include' 'BUILDDIR=${S}'" + +# Use higher priority than corresponding BusyBox-provided applets +ALTERNATIVE_PRIORITY = "100" + +ALTERNATIVE_${PN} = "flashcp flash_eraseall flash_lock flash_unlock nanddump nandwrite" +ALTERNATIVE_${PN}-ubifs = "ubiattach ubidetach ubimkvol ubirename ubirmvol ubirsvol ubiupdatevol" + +ALTERNATIVE_LINK_NAME[flash_eraseall] = "${sbindir}/flash_eraseall" +ALTERNATIVE_LINK_NAME[nandwrite] = "${sbindir}/nandwrite" +ALTERNATIVE_LINK_NAME[nanddump] = "${sbindir}/nanddump" +ALTERNATIVE_LINK_NAME[ubiattach] = "${sbindir}/ubiattach" +ALTERNATIVE_LINK_NAME[ubiattach] = "${sbindir}/ubiattach" +ALTERNATIVE_LINK_NAME[ubidetach] = "${sbindir}/ubidetach" +ALTERNATIVE_LINK_NAME[ubimkvol] = "${sbindir}/ubimkvol" +ALTERNATIVE_LINK_NAME[ubirename] = "${sbindir}/ubirename" +ALTERNATIVE_LINK_NAME[ubirmvol] = "${sbindir}/ubirmvol" +ALTERNATIVE_LINK_NAME[ubirsvol] = "${sbindir}/ubirsvol" +ALTERNATIVE_LINK_NAME[ubiupdatevol] = "${sbindir}/ubiupdatevol" +ALTERNATIVE_LINK_NAME[flash_eraseall] = "${sbindir}/flash_eraseall" +ALTERNATIVE_LINK_NAME[flash_lock] = "${sbindir}/flash_lock" +ALTERNATIVE_LINK_NAME[flash_unlock] = "${sbindir}/flash_unlock" +ALTERNATIVE_LINK_NAME[flashcp] = "${sbindir}/flashcp" + +do_install () { + oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} INCLUDEDIR=${includedir} +} + +PACKAGES =+ "mtd-utils-misc mtd-utils-tests" +PACKAGES =+ "${@bb.utils.contains("PACKAGECONFIG", "jffs", "mtd-utils-jffs2", "", d)}" +PACKAGES =+ "${@bb.utils.contains("PACKAGECONFIG", "ubifs", "mtd-utils-ubifs", "", d)}" + +FILES_mtd-utils-jffs2 = "${sbindir}/mkfs.jffs2 ${sbindir}/jffs2dump ${sbindir}/jffs2reader ${sbindir}/sumtool" +FILES_mtd-utils-ubifs = "${sbindir}/mkfs.ubifs ${sbindir}/ubi*" +FILES_mtd-utils-misc = "${sbindir}/nftl* ${sbindir}/ftl* ${sbindir}/rfd* ${sbindir}/doc* ${sbindir}/serve_image ${sbindir}/recv_image" +FILES_mtd-utils-tests = "${libexecdir}/mtd-utils/*" + +BBCLASSEXTEND = "native nativesdk" + +# git/.compr.c.dep:46: warning: NUL character seen; rest of line ignored +# git/.compr.c.dep:47: *** missing separator. Stop. +PARALLEL_MAKE = "" -- cgit v1.2.3