diff options
author | Fabian Groffen <grobian@gentoo.org> | 2021-06-22 21:00:48 +0200 |
---|---|---|
committer | Fabian Groffen <grobian@gentoo.org> | 2021-06-22 21:00:48 +0200 |
commit | a46be5455a621fd243297b7b1e238cc859d87678 (patch) | |
tree | 8c90377814e2ad4716fe8a19a2c99d693ad29f6d /qmerge.c | |
parent | qmerge: check phase funcs against PMS whether they should be run (diff) | |
download | portage-utils-a46be5455a621fd243297b7b1e238cc859d87678.tar.gz portage-utils-a46be5455a621fd243297b7b1e238cc859d87678.tar.bz2 portage-utils-a46be5455a621fd243297b7b1e238cc859d87678.zip |
qmerge: run pkg_* phases according to PMS 9.2 Call Order
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
Diffstat (limited to 'qmerge.c')
-rw-r--r-- | qmerge.c | 41 |
1 files changed, 21 insertions, 20 deletions
@@ -723,10 +723,11 @@ pkg_run_func_at( "keepdir() { dodir \"$@\" && touch \"$@\"/.keep_${CATEGORY}_${PN}-${SLOT%%/*}; }\n" /* TODO: This should be fatal upon error */ "emake() { ${MAKE:-make} ${MAKEOPTS} \"$@\"; }\n" - /* Unpack the env if need be */ - "[ -e '%1$s/environment' ] || { bzip2 -dc '%1$s/environment.bz2' > '%1$s/environment' || exit 1; }\n" + /* Unpack the env */ + "{ bzip2 -dc '%1$s/environment.bz2' > \"%6$s/environment\" " + "|| exit 1; }\n" /* Load the main env */ - ". '%1$s/environment'\n" + ". \"%6$s/environment\"\n" /* Reload env vars that matter to us */ "export FILESDIR=/.does/not/exist/anywhere\n" "export MERGE_TYPE=binary\n" @@ -741,7 +742,7 @@ pkg_run_func_at( "export T=\"%6$s\"\n" /* we do not support preserve-libs yet, so force * preserve_old_lib instead */ - "export FEATURES=\"${FEATURES/preserve-libs/disabled}\"\n" + "export FEATURES=\"${FEATURES/preserve-libs/}\"\n" /* Finally run the func */ "%7$s%2$s\n" /* Ignore func return values (not exit values) */ @@ -1340,7 +1341,10 @@ pkg_merge(int level, const depend_atom *qatom, const tree_match_ctx *mpkg) fflush(stdout); - eat_file("vdb/EPREFIX", &eprefix, &eprefix_len); + /* we won't realloc, so we can loose the alloc size */ + eprefix_len = eat_file("vdb/EPREFIX", &eprefix, &eprefix_len) ? + strlen(eprefix) : 0; + /* don't care/use the string lengths on these */ eat_file("vdb/EAPI", &eapi, &eapi_len); eat_file("vdb/DEFINED_PHASES", &pm_phases, &pm_phases_len); @@ -1393,9 +1397,6 @@ pkg_merge(int level, const depend_atom *qatom, const tree_match_ctx *mpkg) close(imagefd); } - if (eprefix != NULL) - free(eprefix); - makeargv(config_protect, &cp_argc, &cp_argv); makeargv(config_protect_mask, &cpm_argc, &cpm_argv); @@ -1420,18 +1421,6 @@ pkg_merge(int level, const depend_atom *qatom, const tree_match_ctx *mpkg) fclose(contents); } - /* run postinst */ - if (!pretend) - pkg_run_func("vdb", pm_phases, PKG_POSTINST, D, T, eapi); - - if (eapi != NULL) - free(eapi); - if (pm_phases != NULL) - free(pm_phases); - - /* XXX: hmm, maybe we'll want to strip more ? */ - unlink("vdb/environment"); - /* Unmerge any stray pieces from the older version which we didn't * replace */ switch (replacing) { @@ -1450,6 +1439,17 @@ pkg_merge(int level, const depend_atom *qatom, const tree_match_ctx *mpkg) break; } + /* run postinst */ + if (!pretend) + pkg_run_func("vdb", pm_phases, PKG_POSTINST, D, T, eapi); + + if (eprefix != NULL) + free(eprefix); + if (eapi != NULL) + free(eapi); + if (pm_phases != NULL) + free(pm_phases); + tree_match_close(previnst); freeargv(cp_argc, cp_argv); @@ -1521,6 +1521,7 @@ pkg_unmerge(tree_pkg_ctx *pkg_ctx, set *keep, if (!pretend) { buf = tree_pkg_meta_get(pkg_ctx, EAPI); phases = tree_pkg_meta_get(pkg_ctx, DEFINED_PHASES); + buf = tree_pkg_meta_get(pkg_ctx, EAPI); /* when phases caused ralloc */ if (phases != NULL) { mkdirat(pkg_ctx->fd, "temp", 0755); pkg_run_func_at(pkg_ctx->fd, ".", phases, PKG_PRERM, T, T, buf); |