From 23cb10477537a2bbf40ac06a61046f75f2b160c5 Mon Sep 17 00:00:00 2001 From: Henrik Riomar Date: Fri, 29 Dec 2017 21:10:44 +0100 Subject: add new flag --no-commit-hooks This flag skips running hook scripts This flag *must* be used during initramfs tmpfs initial install. The reason that this new flag is needed is that the hooks will currently always fail as musl and /bin/sh is missing at this stage on diskless. --- src/apk.c | 4 ++++ src/apk_defines.h | 1 + src/commit.c | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/src/apk.c b/src/apk.c index 0abc7cc6b0..d4ce39688c 100644 --- a/src/apk.c +++ b/src/apk.c @@ -217,6 +217,9 @@ static int option_parse_commit(void *ctx, struct apk_db_options *dbopts, int opt case 0x113: apk_flags |= APK_NO_SCRIPTS; break; + case 0x117: + apk_flags |= APK_NO_COMMIT_HOOKS; + break; default: return -ENOTSUP; } @@ -228,6 +231,7 @@ static const struct apk_option options_commit[] = { { 0x102, "clean-protected", "Do not create .apk-new files in configuration dirs" }, { 0x111, "overlay-from-stdin", "Read list of overlay files from stdin" }, { 0x113, "no-scripts", "Do not execute any scripts" }, + { 0x117, "no-commit-hooks", "Skip pre/post hook scripts (but not other scripts)" }, }; const struct apk_option_group optgroup_commit = { diff --git a/src/apk_defines.h b/src/apk_defines.h index c743a31d2f..08a380126a 100644 --- a/src/apk_defines.h +++ b/src/apk_defines.h @@ -77,6 +77,7 @@ extern char **apk_argv; #define APK_OVERLAY_FROM_STDIN 0x2000 #define APK_NO_SCRIPTS 0x4000 #define APK_NO_CACHE 0x8000 +#define APK_NO_COMMIT_HOOKS 0x00010000 /* default architecture for APK packages. */ #if defined(__x86_64__) diff --git a/src/commit.c b/src/commit.c index 0c0bb34e4c..af49f5c9fc 100644 --- a/src/commit.c +++ b/src/commit.c @@ -236,6 +236,10 @@ static int run_commit_hook(void *ctx, int dirfd, const char *file) return 0; snprintf(fn, sizeof(fn), "etc/apk/commit_hooks.d" "/%s", file); + if ((apk_flags & APK_NO_COMMIT_HOOKS) != 0) { + apk_message("Skipping: %s %s", fn, commit_hook_str[hook->type]); + return 0; + } if (apk_verbosity >= 2) apk_message("Executing: %s %s", fn, commit_hook_str[hook->type]); if (apk_db_run_script(db, fn, argv) < 0 && hook->type == PRE_COMMIT_HOOK) -- cgit v1.2.3