-
Notifications
You must be signed in to change notification settings - Fork 1
/
Net-AFP.spec
271 lines (237 loc) · 9.96 KB
/
Net-AFP.spec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
#
# - Net::AFP -
# This spec file was automatically generated by cpan2rpm [ver: 2.028]
# The following arguments were used:
# --no-sign Net::AFP
# For more information on cpan2rpm please visit: http://perl.arix.com/
#
%define pkgname Net-AFP
%define filelist %{pkgname}-%{version}-filelist
%define NVR %{pkgname}-%{version}-%{release}
%define maketest 1
name: perl-Net-AFP
summary: Net-AFP - Apple Filing Protocol implementation in Perl
version: 0.70.0
release: 1
vendor: Derrik Pates <[email protected]>
packager: Derrik Pates <[email protected]>
license: LGPL
group: Applications/Perl
buildroot: %{_tmppath}/%{name}-%{version}-%(id -u -n)
buildarch: noarch
prefix: %(echo %{_prefix})
source: Net-AFP-%{version}.tar.gz
autoreq: 0
requires: perl >= 5.10.0, perl(Log::Log4perl), perl(Math::BigInt::GMP), perl(Data::UUID), perl(CryptX), perl(Crypt::DH::GMP), perl(Log::Dispatch), perl(Fuse), perl(Fuse::Class)
#suggests: perl(Net::Atalk), perl(IO::Socket::IP), nss-mdns
%description
Net::AFP is a collection of packages which implement a working Apple Filing
Protocol stack in Perl. It supports AFP over TCP, for mounting shares from
Macintosh computer systems, Apple AirPort Disk devices (including the Apple
AirPort Extreme base stations), netatalk shares, and others. It also can
optionally support the AppleTalk protocol, for compatibility with MacOS
versions prior to MacOS X.
This module supports several advanced AFP features:
* Access control lists
* Extended attributes
* Large files
* Encrypted login (via Diffie-Hellman exchange)
* UNIX ownership/permissions
* UTF-8 filenames
* IPv6 support, with IO::Socket::IP
%package -n afp-perl
summary: Apple Filing Protocol FUSE client in Perl
autoreq: 0
requires: perl >= 5.10.0, perl(Net::AFP), perl(File::ExtAttr), perl(Term::ReadPassword), perl(Net::Bonjour)
#suggests: perl(Net::Bonjour)
group: Applications/Perl
%description -n afp-perl
A command line tool which uses Net::AFP to mount an AFP share. This package
also includes an additional tool (afp_acl.pl) for managing ACLs on remote
Apple Filing Protocol shares, if your server supports ACLs (OS X 10.3 and
later).
%package -n afpclient-perl
summary: An FTP-style client for accessing AFP shares
autoreq: 0
requires: perl >= 5.10.0, perl(Net::AFP), perl(Text::Glob), perl(Term::ReadPassword)
#suggests: perl(Archive::Tar), perl(Term::ReadLine::Gnu)
%description -n afpclient-perl
A command-line tool, similar to FTP or smbclient, which can be used to
transfer files to/from AFP servers.
%prep
%setup -q -n %{pkgname}-%{version}
chmod -R u+w %{_builddir}/%{pkgname}-%{version}
%build
grep -rsl '^#!.*perl' . |
grep -v '.bak$' |xargs --no-run-if-empty \
%__perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)'
CFLAGS="$RPM_OPT_FLAGS"
%{__perl} Makefile.PL `%{__perl} -MExtUtils::MakeMaker -e ' print qq|PREFIX=%{buildroot}%{_prefix}| if \$ExtUtils::MakeMaker::VERSION =~ /5\.9[1-6]|6\.0[0-5]/ '`
%{__make}
%if %maketest
%{__make} test
%endif
%install
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
%{makeinstall} `%{__perl} -MExtUtils::MakeMaker -e ' print \$ExtUtils::MakeMaker::VERSION <= 6.05 ? qq|PREFIX=%{buildroot}%{_prefix}| : qq|DESTDIR=%{buildroot}| '`
cmd=/usr/share/spec-helper/compress_files
[ -x $cmd ] || cmd=/usr/lib/rpm/brp-compress
[ -x $cmd ] && $cmd
# SuSE Linux
if [ -e /etc/SuSE-release -o -e /etc/UnitedLinux-release ]
then
%{__mkdir_p} %{buildroot}/var/adm/perl-modules
%{__cat} `find %{buildroot} -name "perllocal.pod"` \
| %{__sed} -e s+%{buildroot}++g \
> %{buildroot}/var/adm/perl-modules/%{name}
fi
# remove special files
find %{buildroot} -name "perllocal.pod" \
-o -name ".packlist" \
-o -name "*.bs" \
|xargs -i rm -f {}
# no empty directories
find %{buildroot}%{_prefix} \
-type d -depth \
-exec rmdir {} \; 2>/dev/null
%{__perl} -MFile::Find -le '
find({ wanted => \&wanted, no_chdir => 1}, "%{buildroot}");
print "%doc Todo README";
for my $x (sort @dirs, @files) {
unless (indirs($x) || $x =~ m{^/usr/local/bin}) {
push @ret, $x;
}
}
print join "\n", sort @ret;
sub wanted {
return if /auto$/;
local $_ = $File::Find::name;
my $f = $_; s|^\Q%{buildroot}\E||;
return unless length;
return $files[@files] = $_ if -f $f;
$d = $_;
/\Q$d\E/ && return for reverse sort @INC;
$d =~ /\Q$_\E/ && return
for qw|/etc %_prefix/man %_prefix/bin %_prefix/share|;
$dirs[@dirs] = $_;
}
sub indirs {
my $x = shift;
$x =~ /^\Q$_\E\// && $x ne $_ && return 1 for @dirs;
}
' > %filelist
[ -z %filelist ] && {
echo "ERROR: empty %files listing"
exit -1
}
mkdir %{buildroot}/sbin
ln -sf /usr/local/bin/afpmount.pl %{buildroot}/sbin/mount.pafpfs
%clean
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
%files -f %filelist
%files -n afp-perl
/usr/local/bin/afpmount.pl
/usr/local/bin/afp_acl.pl
/usr/local/bin/afp_chpass.pl
/sbin/mount.pafpfs
%files -n afpclient-perl
/usr/local/bin/afpclient.pl
%defattr(-,root,root)
%post -n afp-perl
if [ ! -e /etc/fuse.conf ] ; then
echo "user_allow_other" > /etc/fuse.conf
fi
%changelog
* [release date here] [email protected]
- Regex workaround to improve compatibility with Perl 5.8.
- Moved connection code into a separate module (Net::AFP::Helpers), to
keep everything using a consistent code path for server connections.
- Added 'afp_chpass.pl' command line tool, for changing passwords on
AFP servers.
- Fix unlink() implementation in Net::AFP::Fuse to work around FPAccess()
always dereferencing symlinks.
- Documentation cleanups.
- Corrected some flag names.
- Simplified some of the parsing loops in Net::AFP::Parsers, and made better
use of Perl functionality in certain places.
- Fail more quietly if Socket6 isn't available.
- Fixed up error return mappings in extended attribute handling code.
- Use the ModTime field for all of atime, mtime and ctime. Don't update any
time fields for atimes.
- Fixed FPGetUserInfo() implementation.
- Added handling of the -o switch in afpmount.pl (more than just "we accept
it, and ignore it"). Handle the 'debug' mount option.
- Implemented opendir(), readdir(), releasedir(), fsyncdir(), access(),
create(), ftruncate(), fgetattr(), lock(), utimens() and bmap() operations,
since Fuse 0.12 and up (and an update of Fuse::Class that's coming) support
these operations.
- Better handling of request lengths for listxattr() and getxattr()
implementations in Net::AFP::Fuse.
- Now using filehandles for file operations, instead of always keying on path.
Support added as of Fuse 0.09_4; this eliminates a lot of unnecessary
access checking, and simplifies read() and write() code a lot.
- Removed write coalescing code; use '-o big_writes' instead (as of Fuse 0.12,
option parsing fixes are included that make '-o big_writes' actually work).
- Added some simple metrics collection code to Net::AFP::Fuse. The '._metrics'
file is associated with the metrics collection code; cat that file to see
the collected metrics data.
- Round time offsets to the nearest half-hour, to keep the times on files
consistent.
- Added special support for 'com.apple.ResourceFork' and 'com.apple.FinderInfo'
xattrs; Mac OS X/MacFUSE use those for accessing those features, since the
FUSE API doesn't provide mechanisms for them natively.
- Improve compatibility with pre-AFP 3.0 (and especially pre-AFP 2.2)
implementations.
- Use the list of addresses passed by the server in the GetStatus() call
to determine what service to connect to for our transport session. This
allows us to use NBP names for service discovery, and still connect via
TCP/IP for performance when servers know how to.
- Added '-4'/'--prefer-v4' and '--atalk-first' options to afpsh.pl and
afpmount.pl.
- Compatibility hack for AirPort Disk devices, to avoid a leading '..'
on any file names.
- More inline docs.
- Present resource fork and finder data via extended attributes. Also
improves OS X compatibility.
- Renamed Net::AFP::Fuse to Fuse::AFP.
* Fri Feb 4 2011 [email protected]
- Correct the return code from removexattr() in the case where the
attribute to be removed is not present.
- Correct notes about an issue with '.DS_Store' to reference the
actual cause.
- Fix the time handling to get all 3 times from the 'ModTime' field, and
ignore the last-accessed time in the utime() call. This appears to be
how Apple's AFP client does things.
* Sun Jan 23 2011 [email protected]
- Fix a deadlock condition caused by unsafe/unnecessary use of decode().
- Pull in a fix for password changing in the DHCAST128 and DHX2 UAMs.
- Correct a few typos.
- Update the README with a known issue related to rsync and .DS_Store
files.
- Use AF_APPLETALK instead of a numeric value in Net::AFP::Parsers.
- Pull in a fix for unlink() of a dangling symlink on an AFP volume
with ACL support.
* Sun Dec 19 2010 [email protected]
- Fix dead peer detection.
* Sun Dec 19 2010 [email protected]
- Really fix the rename() method in Net::AFP::Fuse.
* Sun Dec 19 2010 [email protected]
- Added --list-servers and --list-mounts options to afpmount.pl, to help
make it easier to find servers on the local network and discover mounts.
- Improved uniformity of conditional includes.
- Corrected documentation of methods in Net::AFP.
- Altered packaging to enable needed features in /etc/fuse.conf.
- Added more documentation in Net::DSI and Net::AFP::Fuse.
- Added dead peer checking in Net::DSI.
- Fixups in afp_acl.pl to deal better with inherited ACEs.
- Fixed a bug in Net::AFP::Fuse that prevented the rename call from working
on volumes with ACL support.
* Sun Dec 12 2010 [email protected]
- Added RPM packaging.
- Debian packaging cleanups.
- Altered DHX and DHX2 UAMs to support Crypt::CAST5_PP as an alternative
to Crypt::CAST5.
- Got the Makefile.PL and MANIFEST files added to the tree.
- Cleanup the URL regex in Net::AFP::Fuse a bit.
* Sat Dec 11 2010 [email protected]
- Initial build.