Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove unresolvable names from buildreq_cache #563

Closed
wants to merge 3 commits into from

Conversation

phmccarty
Copy link
Contributor

Fixes #480

  • Add a couple of helper functions to remove dependency names from the global sets
  • Start using the helper functions for buildreq_ban, pkgconfig_ban, and requires_ban
  • The root.log scan may reveal some unresolvable names, so remove those names from the sets as well.

There are a few places where set.discard() is called instead of
set.remove(), but the intention of set.remove() is more clear.

Add helper functions for set.remove() that can be called to avoid the
try/except at call sites. Call sites will be updated in the next commit.

Signed-off-by: Patrick McCarty <[email protected]>
The buildreq cache should only contain names/symbols/etc that are
resolvable at build time. The names may indicate missing packages, but
they may also be invalid, so it is best to avoid adding the names to the
cache in the first place.

Fixes clearlinux#480

Signed-off-by: Patrick McCarty <[email protected]>
name = match.group(1)
util.print_fatal("Cannot resolve dependency name: {}".format(name))
# Avoid adding the dependency name to the buildreq cache
buildreq.remove_buildreq(name)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hrm so this removes it from the buildreq and rebuildreq_cache. Ideally we want to see if this is from the buildreq_cache or the buildreq_add and if it is in the cache just remove it and retry the build. If it is from the buildreq_add then it is fatal and the build should halt. Unfortunately we don't really keep the original file contents themselves around and just the consolidated sets.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, I had not considered the interaction between buildreq_add and buildreq_cache here..

So, the cases to handle are:

  1. Unresolvable name in buildreq_add only -> halt build
  2. Unresolvable name in buildreq_cache only -> eject from cache and start new build round
  3. Unresolvable name in both files -> eject from cache and halt build

Does that look right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately we don't really keep the original file contents themselves around and just the consolidated sets.

I didn't understand what you meant here at first, but after testing, it's very clear now :-P

I would like to solve that problem, too, but not sure how to go about it yet.

@phmccarty
Copy link
Contributor Author

I will split the last commit into a new PR, since that's a bug fix for #562

@phmccarty
Copy link
Contributor Author

I'm not entirely sure how I want to account for the gaps William mentioned. I will open a new PR at a later time once I determine a better solution.

@phmccarty phmccarty closed this Jan 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Unknown buildreqs should be removed from buildreq_cache
2 participants