← Index
NYTProf Performance Profile   « line view »
For /usr/sbin/pkg_info
  Run on Fri Aug 4 10:15:59 2017
Reported on Fri Aug 4 10:16:18 2017

Filename/usr/libdata/perl5/OpenBSD/PackageLocator.pm
StatementsExecuted 28 statements in 1.01ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
1115.41ms11.2msOpenBSD::PackageLocator::::BEGIN@24OpenBSD::PackageLocator::BEGIN@24
111496µs539µsOpenBSD::PackageLocator::::BEGIN@23OpenBSD::PackageLocator::BEGIN@23
11152µs6.17msOpenBSD::PackageLocator::::add_defaultOpenBSD::PackageLocator::add_default
11144µs12.0sOpenBSD::PackageLocator::::match_locationsOpenBSD::PackageLocator::match_locations
11124µs6.20msOpenBSD::PackageLocator::::build_default_pathOpenBSD::PackageLocator::build_default_path
11118µs22µsOpenBSD::State::::BEGIN@18.8 OpenBSD::State::BEGIN@18.8
11114µs6.22msOpenBSD::PackageLocator::::default_pathOpenBSD::PackageLocator::default_path
11110µs18µsOpenBSD::State::::BEGIN@19.9 OpenBSD::State::BEGIN@19.9
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
18242µs226µs
# spent 22µs (18+4) within OpenBSD::State::BEGIN@18.8 which was called: # once (18µs+4µs) by OpenBSD::State::locator at line 18
use strict;
# spent 22µs making 1 call to OpenBSD::State::BEGIN@18.8 # spent 4µs making 1 call to strict::import
19239µs226µs
# spent 18µs (10+8) within OpenBSD::State::BEGIN@19.9 which was called: # once (10µs+8µs) by OpenBSD::State::locator at line 19
use warnings;
# spent 18µs making 1 call to OpenBSD::State::BEGIN@19.9 # spent 8µs making 1 call to warnings::import
20
21package OpenBSD::PackageLocator;
22
232144µs1539µs
# spent 539µs (496+43) within OpenBSD::PackageLocator::BEGIN@23 which was called: # once (496µs+43µs) by OpenBSD::State::locator at line 23
use OpenBSD::PackageRepositoryList;
# spent 539µs making 1 call to OpenBSD::PackageLocator::BEGIN@23
242642µs111.2ms
# spent 11.2ms (5.41+5.76) within OpenBSD::PackageLocator::BEGIN@24 which was called: # once (5.41ms+5.76ms) by OpenBSD::State::locator at line 24
use OpenBSD::PackageRepository;
# spent 11.2ms making 1 call to OpenBSD::PackageLocator::BEGIN@24
25
261700nsmy $default_path;
27
28sub add_default
29
# spent 6.17ms (52µs+6.12) within OpenBSD::PackageLocator::add_default which was called: # once (52µs+6.12ms) by OpenBSD::PackageLocator::build_default_path at line 61
{
3011µs 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 {
421900ns $w = "./:installpath";
43 }
441700ns if (defined $ENV{PKG_PATH}) {
45 $w = $ENV{PKG_PATH};
46 }
47111µs if (defined $w) {
48110µs12µs $w =~ s/^\:+//o;
# spent 2µs making 1 call to OpenBSD::PackageLocator::CORE:subst
4916µs13µs $w =~ s/\:+$//o;
# spent 3µs making 1 call to OpenBSD::PackageLocator::CORE:subst
50127µs56.12ms while (my $o = OpenBSD::PackageRepository->parse(\$w, $state)) {
# spent 6.06ms making 3 calls to OpenBSD::PackageRepository::parse, avg 2.02ms/call # spent 59µs making 2 calls to OpenBSD::PackageRepositoryList::add, avg 29µs/call
51 $p->add($o);
52 }
53 }
54}
55
56sub build_default_path
57
# spent 6.20ms (24µs+6.18) within OpenBSD::PackageLocator::build_default_path which was called: # once (24µs+6.18ms) by OpenBSD::PackageLocator::default_path at line 67
{
581800ns my ($self, $state) = @_;
5914µs16µs $default_path = OpenBSD::PackageRepositoryList->new($state);
# spent 6µs making 1 call to OpenBSD::PackageRepositoryList::new
60
61115µs16.17ms $self->add_default($state, $default_path);
# spent 6.17ms making 1 call to OpenBSD::PackageLocator::add_default
62}
63
64sub default_path
65
# spent 6.22ms (14µs+6.20) within OpenBSD::PackageLocator::default_path which was called: # once (14µs+6.20ms) by OpenBSD::PackageLocator::match_locations at line 128
{
661900ns my ($self, $state) = @_;
6713µs16.20ms if (!defined $default_path) {
# spent 6.20ms making 1 call to OpenBSD::PackageLocator::build_default_path
68 $self->build_default_path($state);
69 }
70116µ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 12.0s (44µs+12.0) within OpenBSD::PackageLocator::match_locations which was called: # once (44µs+12.0s) by OpenBSD::PackageRepositoryFactory::match_locations at line 65 of OpenBSD/State.pm
{
12612µs my ($self, @search) = @_;
127112µs my $state = pop @search;
128126µs212.0s return $self->default_path($state)->match_locations(@search);
# spent 12.0s making 1 call to OpenBSD::PackageRepositoryList::match_locations # spent 6.22ms making 1 call to OpenBSD::PackageLocator::default_path
129}
130
13114µs1;