Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v9 / man / man3 / ExtUtils::Packlist.3
CommitLineData
920dae64
AT
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "ExtUtils::Packlist 3"
132.TH ExtUtils::Packlist 3 "2001-09-21" "perl v5.8.8" "Perl Programmers Reference Guide"
133.SH "NAME"
134ExtUtils::Packlist \- manage .packlist files
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 5
138\& use ExtUtils::Packlist;
139\& my ($pl) = ExtUtils::Packlist->new('.packlist');
140\& $pl->read('/an/old/.packlist');
141\& my @missing_files = $pl->validate();
142\& $pl->write('/a/new/.packlist');
143.Ve
144.PP
145.Vb 4
146\& $pl->{'/some/file/name'}++;
147\& or
148\& $pl->{'/some/other/file/name'} = { type => 'file',
149\& from => '/some/file' };
150.Ve
151.SH "DESCRIPTION"
152.IX Header "DESCRIPTION"
153ExtUtils::Packlist provides a standard way to manage .packlist files.
154Functions are provided to read and write .packlist files. The original
155\&.packlist format is a simple list of absolute pathnames, one per line. In
156addition, this package supports an extended format, where as well as a filename
157each line may contain a list of attributes in the form of a space separated
158list of key=value pairs. This is used by the installperl script to
159differentiate between files and links, for example.
160.SH "USAGE"
161.IX Header "USAGE"
162The hash reference returned by the \fInew()\fR function can be used to examine and
163modify the contents of the .packlist. Items may be added/deleted from the
164\&.packlist by modifying the hash. If the value associated with a hash key is a
165scalar, the entry written to the .packlist by any subsequent \fIwrite()\fR will be a
166simple filename. If the value is a hash, the entry written will be the
167filename followed by the key=value pairs from the hash. Reading back the
168\&.packlist will recreate the original entries.
169.SH "FUNCTIONS"
170.IX Header "FUNCTIONS"
171.IP "\fInew()\fR" 4
172.IX Item "new()"
173This takes an optional parameter, the name of a .packlist. If the file exists,
174it will be opened and the contents of the file will be read. The \fInew()\fR method
175returns a reference to a hash. This hash holds an entry for each line in the
176\&.packlist. In the case of old-style .packlists, the value associated with each
177key is undef. In the case of new-style .packlists, the value associated with
178each key is a hash containing the key=value pairs following the filename in the
179\&.packlist.
180.IP "\fIread()\fR" 4
181.IX Item "read()"
182This takes an optional parameter, the name of the .packlist to be read. If
183no file is specified, the .packlist specified to \fInew()\fR will be read. If the
184\&.packlist does not exist, Carp::croak will be called.
185.IP "\fIwrite()\fR" 4
186.IX Item "write()"
187This takes an optional parameter, the name of the .packlist to be written. If
188no file is specified, the .packlist specified to \fInew()\fR will be overwritten.
189.IP "\fIvalidate()\fR" 4
190.IX Item "validate()"
191This checks that every file listed in the .packlist actually exists. If an
192argument which evaluates to true is given, any missing files will be removed
193from the internal hash. The return value is a list of the missing files, which
194will be empty if they all exist.
195.IP "\fIpacklist_file()\fR" 4
196.IX Item "packlist_file()"
197This returns the name of the associated .packlist file
198.SH "EXAMPLE"
199.IX Header "EXAMPLE"
200Here's \f(CW\*(C`modrm\*(C'\fR, a little utility to cleanly remove an installed module.
201.PP
202.Vb 1
203\& #!/usr/local/bin/perl -w
204.Ve
205.PP
206.Vb 4
207\& use strict;
208\& use IO::Dir;
209\& use ExtUtils::Packlist;
210\& use ExtUtils::Installed;
211.Ve
212.PP
213.Vb 7
214\& sub emptydir($) {
215\& my ($dir) = @_;
216\& my $dh = IO::Dir->new($dir) || return(0);
217\& my @count = $dh->read();
218\& $dh->close();
219\& return(@count == 2 ? 1 : 0);
220\& }
221.Ve
222.PP
223.Vb 3
224\& # Find all the installed packages
225\& print("Finding all installed modules...\en");
226\& my $installed = ExtUtils::Installed->new();
227.Ve
228.PP
229.Vb 22
230\& foreach my $module (grep(!/^Perl$/, $installed->modules())) {
231\& my $version = $installed->version($module) || "???";
232\& print("Found module $module Version $version\en");
233\& print("Do you want to delete $module? [n] ");
234\& my $r = <STDIN>; chomp($r);
235\& if ($r && $r =~ /^y/i) {
236\& # Remove all the files
237\& foreach my $file (sort($installed->files($module))) {
238\& print("rm $file\en");
239\& unlink($file);
240\& }
241\& my $pf = $installed->packlist($module)->packlist_file();
242\& print("rm $pf\en");
243\& unlink($pf);
244\& foreach my $dir (sort($installed->directory_tree($module))) {
245\& if (emptydir($dir)) {
246\& print("rmdir $dir\en");
247\& rmdir($dir);
248\& }
249\& }
250\& }
251\& }
252.Ve
253.SH "AUTHOR"
254.IX Header "AUTHOR"
255Alan Burlison <Alan.Burlison@uk.sun.com>