History log of /openbsd-current/usr.sbin/pkg_add/OpenBSD/Dependencies/SolverBase.pm
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.16 13-Jun-2023 espie

move to use v5.36;
tested by me over the last few weeks, and tb@
also fixed a "manual install" bug properly reported by tb@

aside that there should be *no functional change*.
If you see any message like "hey, the number of params is wrong"
it is a fringe case I didn't run into and should be easy to fix.


# 1.15 27-May-2023 espie

the solver needs some love for later


# 1.14 21-May-2023 espie

move the interface to SharedLibs to be somewhat object oriented

accordingly, load it "just in time" in State.

Most calls get simplified, and we can save more state for later.


Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE OPENBSD_7_3_BASE
# 1.13 21-Jun-2021 espie

under some circumstances, we end up with libexecinfo -> BaseSystem being
recorded as a new dependency. Even though ForwardDependencies normally
takes care of that, with tags, this is not enough.

(this happens only because libexecinfo was a "tight" dependency, thus
resulting in a large UpdateSet, and when some of the objects did require
tags in the new package, and when the order of things meant that BaseSystem
was considered a bit early).

Since there's no handle at this point, a dirty but efficient test vs
BaseSystem will do (which is not a valid normal package name anyhow)

tested to fix the obnoxious warning landry@ saw, which I was able to
reproduce on a box...


Revision tags: OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.12 09-Jun-2019 espie

with tags, we do look in deletesets
add an extra indirection so we don't look where we actually can't
because the code doesn't exist.
(as seen by various people on somewhat buggy installs)


Revision tags: OPENBSD_6_5_BASE
# 1.11 11-Dec-2018 espie

style


Revision tags: OPENBSD_6_4_BASE
# 1.10 07-Jul-2018 espie

what was I thinking. No need to iterate, just use the key
and avoid a stupid bug where we leave the iterator mid-range


# 1.9 01-Jul-2018 espie

ahah. complex tag changes show I need to use the same algorithm as for libs


# 1.8 26-Jun-2018 espie

make it possible to remove old packages with erroneous tags...
shouldn't happen, but...
- mark old handles as such in UpdateSets
- keep going on solve_handle_tag to get maximum reports
- tweak verify_tags to demote old handles to warnings from errors


# 1.7 25-Jun-2018 espie

fix ::lookup interface return, oops


# 1.6 25-Jun-2018 espie

special case: @tag found in self may have NO parameters and just be used
as a placeholder to tell WHEN you need to run the at-end tag


# 1.5 24-Jun-2018 espie

implement tag checking during normal solving
also keep going after first tag check fail, so that we get maximal checks


# 1.4 24-Jun-2018 espie

style


# 1.3 22-Jun-2018 espie

move the tag base code into SolverBase, and use it in PkgCreate, so that
we refuse to create packages with tags without reachable definitions


# 1.2 21-Jun-2018 espie

split the common half of dependencies handling into SolverBase, as PkgCreate
only uses that


# 1.1 20-Jun-2018 espie

prepare to split half of the dependencies code into a manageable subclass


# 1.13 21-Jun-2021 espie

under some circumstances, we end up with libexecinfo -> BaseSystem being
recorded as a new dependency. Even though ForwardDependencies normally
takes care of that, with tags, this is not enough.

(this happens only because libexecinfo was a "tight" dependency, thus
resulting in a large UpdateSet, and when some of the objects did require
tags in the new package, and when the order of things meant that BaseSystem
was considered a bit early).

Since there's no handle at this point, a dirty but efficient test vs
BaseSystem will do (which is not a valid normal package name anyhow)

tested to fix the obnoxious warning landry@ saw, which I was able to
reproduce on a box...


Revision tags: OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.12 09-Jun-2019 espie

with tags, we do look in deletesets
add an extra indirection so we don't look where we actually can't
because the code doesn't exist.
(as seen by various people on somewhat buggy installs)


Revision tags: OPENBSD_6_5_BASE
# 1.11 11-Dec-2018 espie

style


Revision tags: OPENBSD_6_4_BASE
# 1.10 07-Jul-2018 espie

what was I thinking. No need to iterate, just use the key
and avoid a stupid bug where we leave the iterator mid-range


# 1.9 01-Jul-2018 espie

ahah. complex tag changes show I need to use the same algorithm as for libs


# 1.8 26-Jun-2018 espie

make it possible to remove old packages with erroneous tags...
shouldn't happen, but...
- mark old handles as such in UpdateSets
- keep going on solve_handle_tag to get maximum reports
- tweak verify_tags to demote old handles to warnings from errors


# 1.7 25-Jun-2018 espie

fix ::lookup interface return, oops


# 1.6 25-Jun-2018 espie

special case: @tag found in self may have NO parameters and just be used
as a placeholder to tell WHEN you need to run the at-end tag


# 1.5 24-Jun-2018 espie

implement tag checking during normal solving
also keep going after first tag check fail, so that we get maximal checks


# 1.4 24-Jun-2018 espie

style


# 1.3 22-Jun-2018 espie

move the tag base code into SolverBase, and use it in PkgCreate, so that
we refuse to create packages with tags without reachable definitions


# 1.2 21-Jun-2018 espie

split the common half of dependencies handling into SolverBase, as PkgCreate
only uses that


# 1.1 20-Jun-2018 espie

prepare to split half of the dependencies code into a manageable subclass


# 1.12 09-Jun-2019 espie

with tags, we do look in deletesets
add an extra indirection so we don't look where we actually can't
because the code doesn't exist.
(as seen by various people on somewhat buggy installs)


Revision tags: OPENBSD_6_5_BASE
# 1.11 11-Dec-2018 espie

style


Revision tags: OPENBSD_6_4_BASE
# 1.10 07-Jul-2018 espie

what was I thinking. No need to iterate, just use the key
and avoid a stupid bug where we leave the iterator mid-range


# 1.9 01-Jul-2018 espie

ahah. complex tag changes show I need to use the same algorithm as for libs


# 1.8 26-Jun-2018 espie

make it possible to remove old packages with erroneous tags...
shouldn't happen, but...
- mark old handles as such in UpdateSets
- keep going on solve_handle_tag to get maximum reports
- tweak verify_tags to demote old handles to warnings from errors


# 1.7 25-Jun-2018 espie

fix ::lookup interface return, oops


# 1.6 25-Jun-2018 espie

special case: @tag found in self may have NO parameters and just be used
as a placeholder to tell WHEN you need to run the at-end tag


# 1.5 24-Jun-2018 espie

implement tag checking during normal solving
also keep going after first tag check fail, so that we get maximal checks


# 1.4 24-Jun-2018 espie

style


# 1.3 22-Jun-2018 espie

move the tag base code into SolverBase, and use it in PkgCreate, so that
we refuse to create packages with tags without reachable definitions


# 1.2 21-Jun-2018 espie

split the common half of dependencies handling into SolverBase, as PkgCreate
only uses that


# 1.1 20-Jun-2018 espie

prepare to split half of the dependencies code into a manageable subclass


# 1.11 11-Dec-2018 espie

style


Revision tags: OPENBSD_6_4_BASE
# 1.10 07-Jul-2018 espie

what was I thinking. No need to iterate, just use the key
and avoid a stupid bug where we leave the iterator mid-range


# 1.9 01-Jul-2018 espie

ahah. complex tag changes show I need to use the same algorithm as for libs


# 1.8 26-Jun-2018 espie

make it possible to remove old packages with erroneous tags...
shouldn't happen, but...
- mark old handles as such in UpdateSets
- keep going on solve_handle_tag to get maximum reports
- tweak verify_tags to demote old handles to warnings from errors


# 1.7 25-Jun-2018 espie

fix ::lookup interface return, oops


# 1.6 25-Jun-2018 espie

special case: @tag found in self may have NO parameters and just be used
as a placeholder to tell WHEN you need to run the at-end tag


# 1.5 24-Jun-2018 espie

implement tag checking during normal solving
also keep going after first tag check fail, so that we get maximal checks


# 1.4 24-Jun-2018 espie

style


# 1.3 22-Jun-2018 espie

move the tag base code into SolverBase, and use it in PkgCreate, so that
we refuse to create packages with tags without reachable definitions


# 1.2 21-Jun-2018 espie

split the common half of dependencies handling into SolverBase, as PkgCreate
only uses that


# 1.1 20-Jun-2018 espie

prepare to split half of the dependencies code into a manageable subclass


# 1.10 07-Jul-2018 espie

what was I thinking. No need to iterate, just use the key
and avoid a stupid bug where we leave the iterator mid-range


# 1.9 01-Jul-2018 espie

ahah. complex tag changes show I need to use the same algorithm as for libs


# 1.8 26-Jun-2018 espie

make it possible to remove old packages with erroneous tags...
shouldn't happen, but...
- mark old handles as such in UpdateSets
- keep going on solve_handle_tag to get maximum reports
- tweak verify_tags to demote old handles to warnings from errors


# 1.7 25-Jun-2018 espie

fix ::lookup interface return, oops


# 1.6 25-Jun-2018 espie

special case: @tag found in self may have NO parameters and just be used
as a placeholder to tell WHEN you need to run the at-end tag


# 1.5 24-Jun-2018 espie

implement tag checking during normal solving
also keep going after first tag check fail, so that we get maximal checks


# 1.4 24-Jun-2018 espie

style


# 1.3 22-Jun-2018 espie

move the tag base code into SolverBase, and use it in PkgCreate, so that
we refuse to create packages with tags without reachable definitions


# 1.2 21-Jun-2018 espie

split the common half of dependencies handling into SolverBase, as PkgCreate
only uses that


# 1.1 20-Jun-2018 espie

prepare to split half of the dependencies code into a manageable subclass