X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=Makefile.PL;h=f0964130fe8c2f1e1f5facd46d40d5a8676a2a93;hb=20a4ae09bd0e723a3a500193e3d2aa79d37bf669;hp=74b83ef8e7200314b2d07634870dd87dd4025df3;hpb=90662ca2cc1157ee59eb3ebb96ce16ebe90c729d;p=perl-fuse.git diff --git a/Makefile.PL b/Makefile.PL index 74b83ef..f096413 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -1,21 +1,65 @@ use ExtUtils::MakeMaker; +use POSIX; +use Config; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. +# Note: This is a hack. This hack is necessary because MacFUSE's libfuse +# (and libfuse_ino64, by extension) don't link in libiconv. This wouldn't +# be a problem, but it appears the Darwin/OS X dynamic linker won't +# satisfy runtime link dependencies in those libraries from libraries +# imported by our library, and it uses a symbol from libiconv without +# actually linking the library to itself. Awesome. +package MY; +sub test_via_harness { + my($self, $perl, $tests) = @_; + local $_ = $self->SUPER::test_via_harness($perl, $tests); + s/PERL_DL_NONLAZY=1//g if $^O eq 'darwin'; + return $_; +} + +sub test_via_script { + my($self, $perl, $tests) = @_; + local $_ = $self->SUPER::test_via_script($perl, $tests); + s/PERL_DL_NONLAZY=1//g if $^O eq 'darwin'; + return $_; +} + +package main; + my $ver = `fusermount -V`; my $ver2 = `mount_fusefs -V`; +chomp(my $ver3 = `mount_fusefs -V 2>&1 | head -n1`); $ver =~ s/^.*?version:\s+//; $ver2 =~ s/^.*?version:\s+//; +$ver3 =~ s/^.*?version\s+//; +if (! $ver && ! $ver2 && ! $ver3) { + # make CPANPLUS happy and don't report errors if fuse isn't installed + die("No support for os: $^O\n", + "You need to have fuse-dev (or similar) package installed and have sufficient permissions in order to install this module\n", + $^O eq 'darwin' ? ("One option on Mac is http://code.google.com/p/macfuse/\n") : (), + ); +} if ($ver && $ver + 0 < 2.5) { - die "Fuse perl bindings need Linux fuse version 2.5 or never\n"; + die "Fuse perl bindings need Linux fuse version 2.5 or newer\n"; } elsif ($ver2 && $ver2 + 0 < 0.3) { - die "Fuse perl bindings need FreeBSD fuse version 0.3 or never\n"; + die "Fuse perl bindings need FreeBSD fuse version 0.3 or newer\n"; +} elsif ($^O eq 'darwin' && $ver3 && !(($ver3 ge "0.1.0b006") || ($ver3 eq "0.1.0"))) { + # the "ge" string-compare check will match all later revs and all later + # betas, but not the final release of the current rev (0.1.0). + die "Fuse perl bindings need MacFUSE version 0.1.0b006 or newer, your version is \"$ver3\"\n"; } else { - warn "fuse version found: ", $ver || $ver2, "\n"; + warn "fuse version found: ", $ver || $ver2 || $ver3, "\n"; } -my $inc = '-DFUSE_USE_VERSION=25 ' . `pkg-config --cflags fuse` || '-I ../include -D_FILE_OFFSET_BITS=64'; -my $obj = `pkg-config --libs fuse` || '-lfuse'; +my $inc = '-DFUSE_USE_VERSION=26 ' . `pkg-config --cflags fuse` || '-I ../include -D_FILE_OFFSET_BITS=64'; +my $obj = `pkg-config --libs fuse` || (($^O eq 'netbsd') ? '-lrefuse' : '-lfuse'); +if ($^O eq 'darwin' && (uname())[2] =~ /^10\./) { + $obj =~ s/-lfuse/-lfuse_ino64/; +} +my $def = '-Wall -g -ggdb'; +$def .= ' -D__FreeBSD__=10 -D_FILE_OFFSET_BITS=64' if $^O eq 'darwin'; +$def .= ' -DPERL_HAS_64BITINT' if $Config{'use64bitint'}; WriteMakefile( 'NAME' => 'Fuse', @@ -24,8 +68,16 @@ WriteMakefile( ($] >= 5.005 ? ## Add these new keywords supported since 5.005 (ABSTRACT_FROM => 'Fuse.pm', # retrieve abstract from module AUTHOR => 'Mark Glines ') : ()), + ($ExtUtils::MakeMaker::VERSION < 6.46 ? () : ( + META_MERGE => { + resources => { + bugtracker => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Fuse', + repository => 'http://github.com/dpavlin/perl-fuse' + } + }) + ), 'LIBS' => [''], # e.g., '-lm' - 'DEFINE' => '-Wall -g -ggdb', # e.g., '-DHAVE_SOMETHING' + 'DEFINE' => $def, # e.g., '-DHAVE_SOMETHING' # Insert -I. if you add *.h files later: 'INC' => $inc, # e.g., '-I/usr/include/other' # Un-comment this if you add C files to link with later: @@ -35,6 +87,18 @@ WriteMakefile( sub MY::postamble { return <<'MAKE_MORE'; +cpan: + make clean + rm -f Fuse-*.tar.gz + perl Makefile.PL + make dist + make disttest + @echo + @echo -n "Upload" Fuse-*.tar.gz "to CPAN? [y/N]:" + @read upload && test "$$upload" == "y" && cpan-upload -verbose Fuse-*.tar.gz + + + sf: svn2cvs.pl file:///home/dpavlin/private/svn/fuse/perl-llin :ext:dpavlin@fuse.cvs.sourceforge.net:/cvsroot/fuse perl