From: Nithurshen <nithurshen.dev@gmail.com>
To: linux-erofs@lists.ozlabs.org
Cc: xiang@kernel.org, hsiangkao@linux.alibaba.com,
Nithurshen <nithurshen.dev@gmail.com>
Subject: [PATCH] erofs-utils: mkfs: add --exclude-from option
Date: Sun, 8 Mar 2026 09:17:49 +0530 [thread overview]
Message-ID: <20260308034749.22233-1-nithurshen.dev@gmail.com> (raw)
Currently, users who want to exclude multiple specific files or paths must pass them one-by-one using --exclude-path or --exclude-regex via the command line. This becomes cumbersome for complex build systems with dozens of exclusions.
This patch introduces an \`--exclude-from=FILE\` flag to mkfs.erofs.
Similar to standard archiving tools, it allows users to supply a text file containing a list of paths or regexes to exclude, which are read line-by-line and applied to the EROFS build process.
Signed-off-by: Nithurshen <nithurshen.dev@gmail.com>
---
mkfs/main.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/mkfs/main.c b/mkfs/main.c
index 07ef086..a6cd251 100644
--- a/mkfs/main.c
+++ b/mkfs/main.c
@@ -39,6 +39,7 @@ static struct option long_options[] = {
{"help", no_argument, 0, 'h'},
{"exclude-path", required_argument, NULL, 2},
{"exclude-regex", required_argument, NULL, 3},
+ {"exclude-from", required_argument, NULL, 540},
#ifdef HAVE_LIBSELINUX
{"file-contexts", required_argument, NULL, 4},
#endif
@@ -199,6 +200,7 @@ static void usage(int argc, char **argv)
" --dsunit=# align all data block addresses to multiples of #\n"
" --exclude-path=X avoid including file X (X = exact literal path)\n"
" --exclude-regex=X avoid including files that match X (X = regular expression)\n"
+ " --exclude-from=X avoid including files listed in file X\n"
#ifdef HAVE_LIBSELINUX
" --file-contexts=X specify a file contexts file to setup selinux labels\n"
#endif
@@ -1246,6 +1248,39 @@ static int mkfs_parse_options_cfg(struct erofs_importer_params *params,
case 7:
params->fixed_uid = params->fixed_gid = 0;
break;
+ case 540: {
+ FILE *f = fopen(optarg, "r");
+ if (!f) {
+ erofs_err("failed to open exclude file: %s", optarg);
+ return -errno;
+ }
+
+ char *line = NULL;
+ size_t len = 0;
+ ssize_t read;
+
+ while ((read = getline(&line, &len, f)) != -1) {
+ if (read > 0 && line[read - 1] == '\n') {
+ line[read - 1] = '\0';
+ read--;
+ }
+
+ if (read == 0) continue;
+
+ opt = erofs_parse_exclude_path(line, false);
+ if (opt) {
+ erofs_err("failed to parse exclude path from file: %s",
+ erofs_strerror(opt));
+ free(line);
+ fclose(f);
+ return opt;
+ }
+ }
+ free(line);
+ fclose(f);
+ break;
+ }
+
#ifndef NDEBUG
case 8:
cfg.c_random_pclusterblks = true;
--
2.51.0
next reply other threads:[~2026-03-08 3:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-08 3:47 Nithurshen [this message]
2026-03-09 12:09 ` [PATCH] erofs-utils: mkfs: add --exclude-from option zhaoyifan (H)
2026-03-09 13:03 ` Nithurshen Karthikeyan
2026-03-09 12:47 ` [PATCH v2] erofs-utils: mkfs: add --exclude-path-from and --exclude-regex-from Nithurshen
2026-03-09 12:50 ` Nithurshen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260308034749.22233-1-nithurshen.dev@gmail.com \
--to=nithurshen.dev@gmail.com \
--cc=hsiangkao@linux.alibaba.com \
--cc=linux-erofs@lists.ozlabs.org \
--cc=xiang@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.