diff options
-rw-r--r-- | libbuild2/cc/link-rule.cxx | 3 | ||||
-rw-r--r-- | libbuild2/cc/pkgconfig.cxx | 12 |
2 files changed, 13 insertions, 2 deletions
diff --git a/libbuild2/cc/link-rule.cxx b/libbuild2/cc/link-rule.cxx index 2d0fc81..fa9a1f1 100644 --- a/libbuild2/cc/link-rule.cxx +++ b/libbuild2/cc/link-rule.cxx @@ -2372,7 +2372,8 @@ namespace build2 // (Re)generate pkg-config's .pc file. While the target itself might be // up-to-date from a previous run, there is no guarantee that .pc exists // or also up-to-date. So to keep things simple we just regenerate it - // unconditionally. + // unconditionally (and avoid doing so on uninstall; see pkconfig_save() + // for details). // // Also, if you are wondering why don't we just always produce this .pc, // install or no install, the reason is unless and until we are updating diff --git a/libbuild2/cc/pkgconfig.cxx b/libbuild2/cc/pkgconfig.cxx index f0dc5c4..151473d 100644 --- a/libbuild2/cc/pkgconfig.cxx +++ b/libbuild2/cc/pkgconfig.cxx @@ -1473,7 +1473,17 @@ namespace build2 const path& p (t->path ()); - // Note that generation can time some time if we have a large number of + // If we are uninstalling, skip regenerating the file if it already + // exists (I think we could have skipped this even if it doesn't exist, + // but let's keep things close to the install case). + // + if (ctx.current_action ().outer_operation () == uninstall_id) + { + if (exists (p)) + return; + } + + // Note that generation can take some time if we have a large number of // prerequisite libraries. // if (verb) |