Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upmake-rules: use 'pkgdepend resolve -e' and REQUIRED_PACKAGES #3883
Conversation
The pkg(5) in OI is new enough now to allow the use of 'pkgdepend resolve -e' to vastly reduce build times at the expense of manually maintaining a list of dependencies. This change allows that to happen in the "new" way, using the REQUIRED_PACKAGES list that most Makefiles already contain, rather than the "old" way way, using a static resolve.deps which was never actively used in OI.
|
I haven't updated any existing packages with static dependencies in I have a vague feeling this could cause chaos when first used. It does, however, speed the build up by several orders of magnitude in correct components. |
|
This looks fine, I like this.
|
Another issue I see. Sometimes component contains REQUIRED_PACKAGES, which include component-provided packages. We usually exclude them, so that one can get all build requirements in case, when current component is still not built. This change will break such components (e.g. database/mariadb-101). Again, either we somehow fix this logic or add all dependencies to RQUIRED_PACKAGES.... |
|
We can't tell whether I think I would suggest a global run of I think self-referential emptying |
|
OK, so a) gmake REQUIRED_PACKAGES work as expected, b) we need to do mass gmake REQUIRED_PACKAGES and to set 'RESOLVE_DEPS=' in components with inter-packages dependencies... |
|
@richlowe @pyhalov I can cherry-pick this change to the gcc-6 build zone. During the gcc-6/gcc-7 rebuilds a number of components generated an empty REQUIRED_PACKAGES and would require manual intervention. |
|
I think we want auto-generated REQUIRED_PACKAGES added for components, which currently miss them together with gcc-6 changeset. However, we'll have to deal somehow with self-referential REQUIRED_PACKAGES. For this manual work will be necessary - identify all such components, fix REQUIRED_PACKAGES and add 'RESOLVE_DEPS='. I thought about setting RESOLVE_DEPS to REQUIRE_PACKAGES + auto-extracted package fmris, but I'm not sure it would be straightforward to extract them, for example, from -PYV manifests. |
|
However... RESOLVE_DEPS are necessary after $(MANIFEST_BASE)-%.mogrified target was finished. After this we can just use transform to extract pkg.fmris from manifests just like REQUIRED_PACKAGES does for dependencies. |
|
So before I integrated the original upstream changeset that makes the
switch from checked in dependency files (resolve.deps) to build
generated dependency files (using REQUIRED_PACKAGES macro contents), I
ran a full build and updated each component Makefile to include missing
REQUIRED_PACKAGES entries. I would encourage the same to be done here.
-Norm
…On 01/18/18 04:08 PM, Rich Lowe wrote:
I haven't updated any existing packages with static dependencies in
|*.p5m|, nor have I checked whether the REQUIRED_PACKAGES lists
already in most packages are complete or appropriate for OI.
I have a vague feeling this could cause chaos when first used.
It does, however, speed the build up by several orders of magnitude in
correct components.
The meat of the |ips.mk| change is from upstream circa 2014
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#3883 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AG4DZO23Si6YfaIU4KHmI5LFjYA4hFpdks5tL8DPgaJpZM4Rjo4J>.
|
|
Yes, it needs a full run of |
|
Was merged as part of #3014 |
richlowe commentedJan 18, 2018
The pkg(5) in OI is new enough now to allow the use of 'pkgdepend
resolve -e' to vastly reduce build times at the expense of manually
maintaining a list of dependencies.
This change allows that to happen in the "new" way, using the
REQUIRED_PACKAGES list that most Makefiles already contain, rather than
the "old" way way, using a static resolve.deps which was never actively
used in OI.