This adds a -p option to pkg_info to show the PackageRepositorys being used.
Inspired by trying to parse /etc/pkg.conf with some awk and quickly realized that was the wrong way to solve my problem. I then wrote some perl that reached into OpenBSD:: internals, but concluded it'd be much cleaner for external consumers to just invoke pkg_info. Index: pkg_info.1 =================================================================== RCS file: /cvs/src/usr.sbin/pkg_add/pkg_info.1,v retrieving revision 1.50 diff -u -p -d -r1.50 pkg_info.1 --- pkg_info.1 8 Sep 2014 01:27:55 -0000 1.50 +++ pkg_info.1 23 Jun 2015 22:05:53 -0000 @@ -24,7 +24,7 @@ .Sh SYNOPSIS .Nm pkg_info .Bk -words -.Op Fl AaCcdfIKLMmPqRSstUv +.Op Fl AaCcdfIKLMmPpqRSstUv .Op Fl E Ar filename .Op Fl e Ar pkg-name .Op Fl l Ar str @@ -151,6 +151,8 @@ Show the .Xr pkgpath 7 for each package. You can easily build a subdirlist with this. +.It Fl p +Show the actual package paths being used. .It Fl Q Ar query Show all packages in $PKG_PATH which match the given .Ar query . Index: OpenBSD/PackageRepositoryList.pm =================================================================== RCS file: /cvs/src/usr.sbin/pkg_add/OpenBSD/PackageRepositoryList.pm,v retrieving revision 1.29 diff -u -p -d -r1.29 PackageRepositoryList.pm --- OpenBSD/PackageRepositoryList.pm 3 Feb 2015 10:26:29 -0000 1.29 +++ OpenBSD/PackageRepositoryList.pm 23 Jun 2015 22:06:49 -0000 @@ -100,4 +100,14 @@ sub print_without_src return join(':', @l); } +sub print +{ + my $self = shift; + my @l = (); + for my $repo (@{$self->{l}}) { + push(@l, $repo->url); + } + return join("\n", @l); +} + 1; Index: OpenBSD/PkgInfo.pm =================================================================== RCS file: /cvs/src/usr.sbin/pkg_add/OpenBSD/PkgInfo.pm,v retrieving revision 1.35 diff -u -p -d -r1.35 PkgInfo.pm --- OpenBSD/PkgInfo.pm 6 Apr 2015 12:19:35 -0000 1.35 +++ OpenBSD/PkgInfo.pm 23 Jun 2015 22:05:53 -0000 @@ -557,7 +557,7 @@ sub parse_and_run } }; $state->{no_exports} = 1; - $state->handle_options('cCdfF:hIKLmPQ:qr:RsSUe:E:Ml:aAt', + $state->handle_options('cCdfF:hIKLmpPQ:qr:RsSUe:E:Ml:aAt', '[-AaCcdfIKLMmPqRSstUv] [-D nolock][-E filename] [-e pkg-name] ', '[-l str] [-Q query] [-r pkgspec] [pkg-name] [...]'); @@ -610,6 +609,13 @@ sub parse_and_run is_installed($p) ? "#1 (installed)" : "#1", $p); } + return 0; + } + + if ($state->opt('p')) { + require OpenBSD::PackageLocator; + OpenBSD::PackageLocator->build_default_path($state); + $state->say(OpenBSD::PackageLocator->default_path()->print()); return 0; }