in antlir/compiler/dep_graph.py [0:0]
def validate(self) -> None:
for path, irps in self.path_to_item_reqs_provs.items():
irs = irps.unfulfilled_item_reqs()
if not irs:
continue
for ir in irs:
if isinstance(ir.requires, RequireSymlink):
raise UserError(
f"{path}: {irps.item_provs} does not provide {ir}; "
"RequireSymlink must be explicitly fulfilled"
)
symlink_item_provs = self._realpath_item_provs(path)
if symlink_item_provs:
# make sure a symlink prov fulfills the requirement
if all(
any(
isinstance(ir.requires, type(ip.provides.req))
for ip in symlink_item_provs
)
for ir in irs
):
# Add ItemProvs that provide the symlink path so that
# DependencyGraph knows those ImageItems are prequisites.
irps.item_provs.update(symlink_item_provs)
continue
raise UserError(f"{path}: {irps.item_provs} does not provide {irs}")