← Index
NYTProf Performance Profile   « line view »
For /usr/sbin/pkg_info
  Run on Fri Aug 4 10:12:01 2017
Reported on Fri Aug 4 10:12:17 2017

Filename/usr/libdata/perl5/OpenBSD/PackageLocator.pm
StatementsExecuted 44 statements in 1.08ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1115.82ms11.6msOpenBSD::PackageLocator::::BEGIN@24OpenBSD::PackageLocator::BEGIN@24
111548µs586µsOpenBSD::PackageLocator::::BEGIN@23OpenBSD::PackageLocator::BEGIN@23
11161µs7.15msOpenBSD::PackageLocator::::add_defaultOpenBSD::PackageLocator::add_default
21153µs465msOpenBSD::PackageLocator::::findOpenBSD::PackageLocator::find
11138µs1.27sOpenBSD::PackageLocator::::match_locationsOpenBSD::PackageLocator::match_locations
32129µs7.21msOpenBSD::PackageLocator::::default_pathOpenBSD::PackageLocator::default_path
11119µs23µsOpenBSD::State::::BEGIN@18.8 OpenBSD::State::BEGIN@18.8
11119µs7.18msOpenBSD::PackageLocator::::build_default_pathOpenBSD::PackageLocator::build_default_path
11110µs19µsOpenBSD::State::::BEGIN@19.9 OpenBSD::State::BEGIN@19.9
0000s0sOpenBSD::PackageLocator::::grabPlistOpenBSD::PackageLocator::grabPlist
0000s0sOpenBSD::PackageLocator::::path_parseOpenBSD::PackageLocator::path_parse
0000s0sOpenBSD::PackageLocator::::printable_default_pathOpenBSD::PackageLocator::printable_default_path
Call graph for these subroutines as a Graphviz dot language file.
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
18231µs226µ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
use strict;
# spent 23µs making 1 call to OpenBSD::State::BEGIN@18.8 # spent 4µs making 1 call to strict::import
19242µs228µ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
use warnings;
# spent 19µs making 1 call to OpenBSD::State::BEGIN@19.9 # spent 9µs making 1 call to warnings::import
20
21package OpenBSD::PackageLocator;
22
232150µs1586µ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
use OpenBSD::PackageRepositoryList;
# spent 586µs making 1 call to OpenBSD::PackageLocator::BEGIN@23
242650µs111.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
use OpenBSD::PackageRepository;
# spent 11.6ms making 1 call to OpenBSD::PackageLocator::BEGIN@24
25
2611µsmy $default_path;
27
28sub 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
{
301900ns my ($self, $state, $p) = @_;
311700ns my $w;
32
3312µ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 {
421800ns $w = "./:installpath";
43 }
4411µs if (defined $ENV{PKG_PATH}) {
45 $w = $ENV{PKG_PATH};
46 }
47110µs if (defined $w) {
4818µs12µs $w =~ s/^\:+//o;
# spent 2µs making 1 call to OpenBSD::PackageLocator::CORE:subst
4917µs12µs $w =~ s/\:+$//o;
# spent 2µs making 1 call to OpenBSD::PackageLocator::CORE:subst
50128µs57.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
56sub 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
{
581800ns my ($self, $state) = @_;
5913µs15µs $default_path = OpenBSD::PackageRepositoryList->new($state);
# spent 5µs making 1 call to OpenBSD::PackageRepositoryList::new
60
61115µs17.15ms $self->add_default($state, $default_path);
# spent 7.15ms making 1 call to OpenBSD::PackageLocator::add_default
62}
63
64sub default_path
65
# spent 7.21ms (29µs+7.18) within OpenBSD::PackageLocator::default_path which was called 3 times, avg 2.40ms/call: # 2 times (13µs+0s) by OpenBSD::PackageLocator::find at line 102, avg 7µs/call # once (16µs+7.18ms) by OpenBSD::PackageLocator::match_locations at line 128
{
6635µs my ($self, $state) = @_;
6735µs17.18ms if (!defined $default_path) {
# spent 7.18ms making 1 call to OpenBSD::PackageLocator::build_default_path
68 $self->build_default_path($state);
69 }
70320µs return $default_path;
71}
72
73sub printable_default_path
74{
75 my ($self, $state) = @_;
76
77 return join(':', $self->default_path($state)->do_something('url'));
78}
79
80sub 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
90sub 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
{
9222µs my ($self, $url, $state) = @_;
93
9421µs my $package;
95212µs22µ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 {
102222µs4465ms $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 }
104216µs return $package;
105}
106
107sub 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
124sub 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
{
12612µs my ($self, @search) = @_;
127112µs my $state = pop @search;
128126µs21.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
13114µs1;