From: Michael Tremer Date: Wed, 17 Aug 2022 21:48:22 +0000 (+0000) Subject: build: Unroll loop for build stages X-Git-Tag: 0.9.28~455 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b8786cdb5266443881262ad0e314c97946ad6779;p=pakfire.git build: Unroll loop for build stages Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index 455b91dbe..e587d7fd8 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -79,14 +79,6 @@ struct pakfire_build { int init:1; }; -static const char* stages[] = { - "prepare", - "build", - "test", - "install", - NULL, -}; - #define TEMPLATE \ "#!/bin/bash --login\n" \ "\n" \ @@ -1197,20 +1189,40 @@ static int pakfire_build_perform(struct pakfire_build* build, struct pakfire_parser* makefile) { int r; - // Run through all build stages - for (const char** stage = stages; *stage; stage++) { - r = pakfire_build_stage(build, makefile, *stage); - if (r) { - // Drop to a shell for debugging - if (pakfire_has_flag(build->pakfire, PAKFIRE_BUILD_INTERACTIVE)) - pakfire_build_shell(build); + // Prepare the build + r = pakfire_build_stage(build, makefile, "prepare"); + if (r) + goto ERROR; - return r; - } - } + // Perform the build + r = pakfire_build_stage(build, makefile, "build"); + if (r) + goto ERROR; + + // Test the build + r = pakfire_build_stage(build, makefile, "test"); + if (r) + goto ERROR; + + // Install everything + r = pakfire_build_stage(build, makefile, "install"); + if (r) + goto ERROR; // Run post build scripts - return pakfire_build_run_post_build_scripts(build); + r = pakfire_build_run_post_build_scripts(build); + if (r) + goto ERROR; + + // Done! + return 0; + +ERROR: + // Drop to a shell for debugging + if (pakfire_has_flag(build->pakfire, PAKFIRE_BUILD_INTERACTIVE)) + pakfire_build_shell(build); + + return r; } PAKFIRE_EXPORT int pakfire_build_exec(struct pakfire_build* build, const char* path) {