← Index
NYTProf Performance Profile   « line view »
For /usr/sbin/pkg_info
  Run on Mon Aug 7 09:39:31 2017
Reported on Mon Aug 7 09:40:21 2017

Filename/usr/libdata/perl5/OpenBSD/PackageLocator.pm
StatementsExecuted 28 statements in 1.33ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11110.3ms10.3msOpenBSD::PackageLocator::::BEGIN@23OpenBSD::PackageLocator::BEGIN@23
1116.38ms66.1msOpenBSD::PackageLocator::::BEGIN@24OpenBSD::PackageLocator::BEGIN@24
11150µs6.18msOpenBSD::PackageLocator::::add_defaultOpenBSD::PackageLocator::add_default
11147µs2.07sOpenBSD::PackageLocator::::match_locationsOpenBSD::PackageLocator::match_locations
11130µs38µsOpenBSD::State::::BEGIN@18.8 OpenBSD::State::BEGIN@18.8
11127µs6.22msOpenBSD::PackageLocator::::build_default_pathOpenBSD::PackageLocator::build_default_path
11118µs6.23msOpenBSD::PackageLocator::::default_pathOpenBSD::PackageLocator::default_path
11116µs36µsOpenBSD::State::::BEGIN@19.9 OpenBSD::State::BEGIN@19.9
2217µs7µsOpenBSD::PackageLocator::::CORE:substOpenBSD::PackageLocator::CORE:subst (opcode)
0000s0sOpenBSD::PackageLocator::::findOpenBSD::PackageLocator::find
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
18246µs246µs
# spent 38µs (30+8) within OpenBSD::State::BEGIN@18.8 which was called: # once (30µs+8µs) by OpenBSD::State::locator at line 18
use strict;
# spent 38µs making 1 call to OpenBSD::State::BEGIN@18.8 # spent 8µs making 1 call to strict::import
19248µs256µs
# spent 36µs (16+20) within OpenBSD::State::BEGIN@19.9 which was called: # once (16µs+20µs) by OpenBSD::State::locator at line 19
use warnings;
# spent 36µs making 1 call to OpenBSD::State::BEGIN@19.9 # spent 20µs making 1 call to warnings::import
20
21package OpenBSD::PackageLocator;
22
232270µs110.3ms
# spent 10.3ms (10.3+49µs) within OpenBSD::PackageLocator::BEGIN@23 which was called: # once (10.3ms+49µs) by OpenBSD::State::locator at line 23
use OpenBSD::PackageRepositoryList;
# spent 10.3ms making 1 call to OpenBSD::PackageLocator::BEGIN@23
242811µs166.1ms
# spent 66.1ms (6.38+59.7) within OpenBSD::PackageLocator::BEGIN@24 which was called: # once (6.38ms+59.7ms) by OpenBSD::State::locator at line 24
use OpenBSD::PackageRepository;
# spent 66.1ms making 1 call to OpenBSD::PackageLocator::BEGIN@24
25
261700nsmy $default_path;
27
28sub add_default
29
# spent 6.18ms (50µs+6.13) within OpenBSD::PackageLocator::add_default which was called: # once (50µs+6.13ms) by OpenBSD::PackageLocator::build_default_path at line 61
{
301900ns my ($self, $state, $p) = @_;
311600ns 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 {
421900ns $w = "./:installpath";
43 }
441900ns if (defined $ENV{PKG_PATH}) {
45 $w = $ENV{PKG_PATH};
46 }
47116µs if (defined $w) {
4819µs13µs $w =~ s/^\:+//o;
# spent 3µs making 1 call to OpenBSD::PackageLocator::CORE:subst
4918µs14µs $w =~ s/\:+$//o;
# spent 4µs making 1 call to OpenBSD::PackageLocator::CORE:subst
50126µs56.13ms while (my $o = OpenBSD::PackageRepository->parse(\$w, $state)) {
# spent 6.06ms making 3 calls to OpenBSD::PackageRepository::parse, avg 2.02ms/call # spent 60µs making 2 calls to OpenBSD::PackageRepositoryList::add, avg 30µs/call
51 $p->add($o);
52 }
53 }
54}
55
56sub build_default_path
57
# spent 6.22ms (27µs+6.19) within OpenBSD::PackageLocator::build_default_path which was called: # once (27µs+6.19ms) by OpenBSD::PackageLocator::default_path at line 67
{
581800ns my ($self, $state) = @_;
5914µs17µs $default_path = OpenBSD::PackageRepositoryList->new($state);
# spent 7µs making 1 call to OpenBSD::PackageRepositoryList::new
60
61116µs16.18ms $self->add_default($state, $default_path);
# spent 6.18ms making 1 call to OpenBSD::PackageLocator::add_default
62}
63
64sub default_path
65
# spent 6.23ms (18µs+6.22) within OpenBSD::PackageLocator::default_path which was called: # once (18µs+6.22ms) by OpenBSD::PackageLocator::match_locations at line 128
{
661800ns my ($self, $state) = @_;
6714µs16.22ms if (!defined $default_path) {
# spent 6.22ms making 1 call to OpenBSD::PackageLocator::build_default_path
68 $self->build_default_path($state);
69 }
70118µ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{
92 my ($self, $url, $state) = @_;
93
94 my $package;
95 if ($url =~ m/[\/\:]/o) {
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 $package = $self->default_path($state)->find($url);
103 }
104 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 2.07s (47µs+2.07) within OpenBSD::PackageLocator::match_locations which was called: # once (47µs+2.07s) by OpenBSD::PackageRepositoryFactory::match_locations at line 65 of OpenBSD/State.pm
{
12612µs my ($self, @search) = @_;
127113µs my $state = pop @search;
128125µs22.07s return $self->default_path($state)->match_locations(@search);
# spent 2.06s making 1 call to OpenBSD::PackageRepositoryList::match_locations # spent 6.23ms making 1 call to OpenBSD::PackageLocator::default_path
129}
130
13114µs1;
 
# spent 7µs within OpenBSD::PackageLocator::CORE:subst which was called 2 times, avg 4µs/call: # once (4µs+0s) by OpenBSD::PackageLocator::add_default at line 49 # once (3µs+0s) by OpenBSD::PackageLocator::add_default at line 48
sub OpenBSD::PackageLocator::CORE:subst; # opcode