1$OpenBSD: RequiredBy.pod,v 1.1 2020/12/20 15:30:58 daniel Exp $ 2 3=head1 NAME 4 5OpenBSD::RequiredBy - manage installed package dependencies 6 7=head1 SYNOPSIS 8 9 use OpenBSD::RequiredBy; 10 11 12 # let's do things for real 13 our $not = 0; 14 15 my $o = OpenBSD::RequiredBy->new($pkgname); 16 17 my $o2 = OpenBSD::Requiring->new($pkgname); 18 19 print "Requirements for $pkgname are ", join(' ',$o2->list), "\n"; 20 21 # add some reverse dependencies 22 $o->add($reverse_dep1, $reverse_dep2); 23 24 # remove some dependency 25 $o2->delete($dep); 26 27 # forget some cache entry 28 OpenBSD::RequiredBy->forget(installed_info($pkgname)); 29 30 # compute the transitive closure of some dependencies 31 my @fulldeps = OpenBSD::Requiring->compute_closure($pkg1, $pkg2); 32 33 34=head1 DESCRIPTION 35 36=for comment should add a reference to L<PackageInfo/installed_info> 37when it's documented. 38 39C<OpenBSD::RequiredBy> handles lists of forward and reverse dependencies 40for installed packages. 41 42If C<$main::not> is true, all change operations are done internally and 43never written to disk. 44 45C<$o = OpenBSD::RequiredBy-E<gt>new($pkgname)> gives access to the reverse 46dependencies, 47C<$o =OpenBSD::Requiring-E<gt>new($pkgname)> gives access to the forward 48dependencies. 49 50Such an object can be used to list the dependencies C<$o-E<gt>list>, 51add names to them C<$o-E<gt>add(name1, name2, ...)> or remove name from 52them C<$o-E<gt>delete(name1, name2, ...)>. 53 54The full list of forward dependencies (transitive closure) from a set of 55packages is given by 56C<OpenBSD::RequiredBy-E<gt>compute_closure($name1, name2, ...)>. 57Likewise, 58C<OpenBSD::Requiring-E<gt>compute_closure($name1, name2, ...)> 59yields the list of reverse dependencies. 60 61Those lists of dependencies trim duplicates and, unless C<$main::not> is true, 62disk files are automatically synchronized whenever the lists change. 63 64C<OpenBSD::RequiredBy> maintains a cache for efficiency. When an 65installed package is deleted completely, 66C<OpenBSD::RequiredBy-E<gt>forget($dir)> and 67C<OpenBSD::Requiring-E<gt>forget($dir)> will remove the cache entries. 68