All of lore.kernel.org
 help / color / mirror / Atom feed
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



             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.