openimageio 1.0.9

- Upgrade to 1.0.9
- Update the sha1 on `J2kp4files`. Not sure why it changed, but
it's housed on fedoraproject.org. So I think we're good.
- It passes all 39 of it tests

Closes #14826.

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
Clean up MacOS version method usage

The MacOS.version? family of methods (other than "leopard?") are poorly
defined and lead to confusing code. Replace them in formulae with more
explicit comparisons.

"MacOS.version" is a special version object that can be compared to
numerics, symbols, and strings using the standard Ruby comparison
methods.

The old methods were moved to compat when the version comparison code
was merged, and they must remain there "forever", but they should not be
used in new code.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Add deprecation warning to non-DSL fails_with_llvm

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Audit check for old MacOS version methods

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Extend Set to allow repetition (*)

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Return the block value in ARGV.filter_for_dependencies

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Tab: provide an interface similar to BuildOptions

Eventually a common interface could be factored out into a module, but
for now this will suffice.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Install receipt housekeeping

- Since using opt_prefix means we can find receipts for keg-only
  formulae, try it first and fall back on using linked_keg.
- Make the tab filename a constant instead of duplicating the string
  everywhere.
- Address a couple of other things that need cleanup.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
BuildOptions: simplify setting description

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
BuildOptions: check has_option? for universal and 32-bit

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Provide a common interface for Dependency and Requirement

Introduce a new Dependable module that provides useful interrogation
methods for Dependency and Requirement. These methods are mapped to
dependency tags in formula (:build, :optional, and :recommended).

Previously only Dependency objects recorded tags; this allows
Requirements to do the same.

Move Requirement subclasses to a separate file.
Formula#recursive_dependencies

This behaves like recursive_deps, but the resulting list consists of
Dependency objects instead of Formula objects. The list maintains the
installable order property of recursive_deps.

While in the area, add some comments clarifying the purpose of related
methods.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Dependency#to_formula and associated helpers

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
FormulaInstaller: disambiguate show_header usage

show_header should default to false (we don't want to display it in the
case of installing a single formula without dependencies), but it only
worked this way by accident.

The assignment "show_header = true" creates a local variable named
show_header, and in the case where needed_deps is empty and this
assignment is not actually executed, the latter usage evaluates the
local variable instead of calling the method.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
FormulaInstaller: factor out requirement checking

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
FormulaInstaller: factor out dependency installation

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
FormulaInstaller: skip build-time deps for bottles

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
FormulaInstaller: implement installation locks

FormulaInstaller now attempts to take a lock on a "foo.brewing" file for
the formula and all of its dependencies before attempting installation.

The lock is an advisory lock implemented using flock(), and as such it
only locks out other processes that attempt to take the lock. It also
means that it is never necessary to manually remove the lock file,
because the lock is not enforced by I/O.

`brew uninstall` learns to respect the lock as well, so that kegs in the
dependency tree of foo can't be removed when another process is
installing foo.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Respect operation lock in link and unlink

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Formula::finalize_dsl

Signed-off-by: Jack Nagel <jacknagel@gmail.com>