| Filename | /usr/libdata/perl5/OpenBSD/PackageLocator.pm |
| Statements | Executed 44 statements in 1.08ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 5.82ms | 11.6ms | OpenBSD::PackageLocator::BEGIN@24 |
| 1 | 1 | 1 | 548µs | 586µs | OpenBSD::PackageLocator::BEGIN@23 |
| 1 | 1 | 1 | 61µs | 7.15ms | OpenBSD::PackageLocator::add_default |
| 2 | 1 | 1 | 53µs | 465ms | OpenBSD::PackageLocator::find |
| 1 | 1 | 1 | 38µs | 1.27s | OpenBSD::PackageLocator::match_locations |
| 3 | 2 | 1 | 29µs | 7.21ms | OpenBSD::PackageLocator::default_path |
| 1 | 1 | 1 | 19µs | 23µs | OpenBSD::State::BEGIN@18.8 |
| 1 | 1 | 1 | 19µs | 7.18ms | OpenBSD::PackageLocator::build_default_path |
| 1 | 1 | 1 | 10µs | 19µs | OpenBSD::State::BEGIN@19.9 |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageLocator::grabPlist |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageLocator::path_parse |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageLocator::printable_default_path |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | # ex:ts=8 sw=4: | ||||
| 2 | # $OpenBSD: PackageLocator.pm,v 1.110 2017/05/29 12:28:54 espie Exp $ | ||||
| 3 | # | ||||
| 4 | # Copyright (c) 2003-2010 Marc Espie <espie@openbsd.org> | ||||
| 5 | # | ||||
| 6 | # Permission to use, copy, modify, and distribute this software for any | ||||
| 7 | # purpose with or without fee is hereby granted, provided that the above | ||||
| 8 | # copyright notice and this permission notice appear in all copies. | ||||
| 9 | # | ||||
| 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
| 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
| 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
| 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
| 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
| 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||||
| 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
| 17 | |||||
| 18 | 2 | 31µs | 2 | 26µs | # spent 23µs (19+4) within OpenBSD::State::BEGIN@18.8 which was called:
# once (19µs+4µs) by OpenBSD::State::locator at line 18 # spent 23µs making 1 call to OpenBSD::State::BEGIN@18.8
# spent 4µs making 1 call to strict::import |
| 19 | 2 | 42µs | 2 | 28µs | # spent 19µs (10+9) within OpenBSD::State::BEGIN@19.9 which was called:
# once (10µs+9µs) by OpenBSD::State::locator at line 19 # spent 19µs making 1 call to OpenBSD::State::BEGIN@19.9
# spent 9µs making 1 call to warnings::import |
| 20 | |||||
| 21 | package OpenBSD::PackageLocator; | ||||
| 22 | |||||
| 23 | 2 | 150µs | 1 | 586µs | # spent 586µs (548+38) within OpenBSD::PackageLocator::BEGIN@23 which was called:
# once (548µs+38µs) by OpenBSD::State::locator at line 23 # spent 586µs making 1 call to OpenBSD::PackageLocator::BEGIN@23 |
| 24 | 2 | 650µs | 1 | 11.6ms | # spent 11.6ms (5.82+5.78) within OpenBSD::PackageLocator::BEGIN@24 which was called:
# once (5.82ms+5.78ms) by OpenBSD::State::locator at line 24 # spent 11.6ms making 1 call to OpenBSD::PackageLocator::BEGIN@24 |
| 25 | |||||
| 26 | 1 | 1µs | my $default_path; | ||
| 27 | |||||
| 28 | sub add_default | ||||
| 29 | # spent 7.15ms (61µs+7.09) within OpenBSD::PackageLocator::add_default which was called:
# once (61µs+7.09ms) by OpenBSD::PackageLocator::build_default_path at line 61 | ||||
| 30 | 1 | 900ns | my ($self, $state, $p) = @_; | ||
| 31 | 1 | 700ns | my $w; | ||
| 32 | |||||
| 33 | 1 | 2µs | if (defined $ENV{TRUSTED_PKG_PATH}) { | ||
| 34 | my $v = $ENV{TRUSTED_PKG_PATH}; | ||||
| 35 | $v =~ s/^\:+//o; | ||||
| 36 | $v =~ s/\:+$//o; | ||||
| 37 | while (my $o = OpenBSD::PackageRepository->parse(\$v, $state)) { | ||||
| 38 | $o->{trusted} = 1; | ||||
| 39 | $p->add($o); | ||||
| 40 | } | ||||
| 41 | } else { | ||||
| 42 | 1 | 800ns | $w = "./:installpath"; | ||
| 43 | } | ||||
| 44 | 1 | 1µs | if (defined $ENV{PKG_PATH}) { | ||
| 45 | $w = $ENV{PKG_PATH}; | ||||
| 46 | } | ||||
| 47 | 1 | 10µs | if (defined $w) { | ||
| 48 | 1 | 8µs | 1 | 2µs | $w =~ s/^\:+//o; # spent 2µs making 1 call to OpenBSD::PackageLocator::CORE:subst |
| 49 | 1 | 7µs | 1 | 2µs | $w =~ s/\:+$//o; # spent 2µs making 1 call to OpenBSD::PackageLocator::CORE:subst |
| 50 | 1 | 28µs | 5 | 7.09ms | while (my $o = OpenBSD::PackageRepository->parse(\$w, $state)) { # spent 7.03ms making 3 calls to OpenBSD::PackageRepository::parse, avg 2.34ms/call
# spent 55µs making 2 calls to OpenBSD::PackageRepositoryList::add, avg 27µs/call |
| 51 | $p->add($o); | ||||
| 52 | } | ||||
| 53 | } | ||||
| 54 | } | ||||
| 55 | |||||
| 56 | sub build_default_path | ||||
| 57 | # spent 7.18ms (19µs+7.16) within OpenBSD::PackageLocator::build_default_path which was called:
# once (19µs+7.16ms) by OpenBSD::PackageLocator::default_path at line 67 | ||||
| 58 | 1 | 800ns | my ($self, $state) = @_; | ||
| 59 | 1 | 3µs | 1 | 5µs | $default_path = OpenBSD::PackageRepositoryList->new($state); # spent 5µs making 1 call to OpenBSD::PackageRepositoryList::new |
| 60 | |||||
| 61 | 1 | 15µs | 1 | 7.15ms | $self->add_default($state, $default_path); # spent 7.15ms making 1 call to OpenBSD::PackageLocator::add_default |
| 62 | } | ||||
| 63 | |||||
| 64 | sub default_path | ||||
| 65 | { | ||||
| 66 | 3 | 5µs | my ($self, $state) = @_; | ||
| 67 | 3 | 5µs | 1 | 7.18ms | if (!defined $default_path) { # spent 7.18ms making 1 call to OpenBSD::PackageLocator::build_default_path |
| 68 | $self->build_default_path($state); | ||||
| 69 | } | ||||
| 70 | 3 | 20µs | return $default_path; | ||
| 71 | } | ||||
| 72 | |||||
| 73 | sub printable_default_path | ||||
| 74 | { | ||||
| 75 | my ($self, $state) = @_; | ||||
| 76 | |||||
| 77 | return join(':', $self->default_path($state)->do_something('url')); | ||||
| 78 | } | ||||
| 79 | |||||
| 80 | sub path_parse | ||||
| 81 | { | ||||
| 82 | my ($self, $pkgname, $state, $path) = (@_, './'); | ||||
| 83 | if ($pkgname =~ m/^(.*[\/\:])(.*)/) { | ||||
| 84 | ($pkgname, $path) = ($2, $1); | ||||
| 85 | } | ||||
| 86 | |||||
| 87 | return (OpenBSD::PackageRepository->new($path, $state), $pkgname); | ||||
| 88 | } | ||||
| 89 | |||||
| 90 | sub find | ||||
| 91 | # spent 465ms (53µs+465) within OpenBSD::PackageLocator::find which was called 2 times, avg 232ms/call:
# 2 times (53µs+465ms) by OpenBSD::PackageRepositoryFactory::find at line 54 of OpenBSD/State.pm, avg 232ms/call | ||||
| 92 | 2 | 2µs | my ($self, $url, $state) = @_; | ||
| 93 | |||||
| 94 | 2 | 1µs | my $package; | ||
| 95 | 2 | 12µs | 2 | 2µs | if ($url =~ m/[\/\:]/o) { # spent 2µs making 2 calls to OpenBSD::PackageLocator::CORE:match, avg 1µs/call |
| 96 | my ($repository, $pkgname) = $self->path_parse($url, $state); | ||||
| 97 | $package = $repository->find($pkgname); | ||||
| 98 | if (defined $package) { | ||||
| 99 | $self->default_path($state)->add($repository); | ||||
| 100 | } | ||||
| 101 | } else { | ||||
| 102 | 2 | 22µs | 4 | 465ms | $package = $self->default_path($state)->find($url); # spent 465ms making 2 calls to OpenBSD::PackageRepositoryList::find, avg 232ms/call
# spent 13µs making 2 calls to OpenBSD::PackageLocator::default_path, avg 7µs/call |
| 103 | } | ||||
| 104 | 2 | 16µs | return $package; | ||
| 105 | } | ||||
| 106 | |||||
| 107 | sub grabPlist | ||||
| 108 | { | ||||
| 109 | my ($self, $url, $code, $state) = @_; | ||||
| 110 | |||||
| 111 | my $plist; | ||||
| 112 | if ($url =~ m/[\/\:]/o) { | ||||
| 113 | my ($repository, $pkgname) = $self->path_parse($url, $state); | ||||
| 114 | $plist = $repository->grabPlist($pkgname, $code); | ||||
| 115 | if (defined $plist) { | ||||
| 116 | $self->default_path($state)->add($repository); | ||||
| 117 | } | ||||
| 118 | } else { | ||||
| 119 | $plist = $self->default_path($state)->grabPlist($url, $code); | ||||
| 120 | } | ||||
| 121 | return $plist; | ||||
| 122 | } | ||||
| 123 | |||||
| 124 | sub match_locations | ||||
| 125 | # spent 1.27s (38µs+1.27) within OpenBSD::PackageLocator::match_locations which was called:
# once (38µs+1.27s) by OpenBSD::PackageRepositoryFactory::match_locations at line 65 of OpenBSD/State.pm | ||||
| 126 | 1 | 2µs | my ($self, @search) = @_; | ||
| 127 | 1 | 12µs | my $state = pop @search; | ||
| 128 | 1 | 26µs | 2 | 1.27s | return $self->default_path($state)->match_locations(@search); # spent 1.27s making 1 call to OpenBSD::PackageRepositoryList::match_locations
# spent 7.19ms making 1 call to OpenBSD::PackageLocator::default_path |
| 129 | } | ||||
| 130 | |||||
| 131 | 1 | 4µs | 1; |