Josef Karthauser d3b6c99818 Commit the first version of BSDPAN.
BSDPAN is the collection of modules that provides tighter than ever
integration of Perl into BSD Unix.

Currently, BSDPAN does the following:

o makes p5- FreeBSD ports PREFIX-clean;

o registers Perl modules in the FreeBSD package database with a
  package name derived from the module name.
  The name is of the form: bsdpan-ModuleName-V.VV.

Anyone interested in where BSDPAN is developing should read Anton's
message to the ports mailling list:
	Message-ID: <20010105040828.A26011@heechee.tobez.org>

Submitted by:	Anton Berezin <tobez@tobez.org>
2001-04-03 18:38:53 +00:00

120 lines
2.7 KiB
Perl

# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE"
# <tobez@tobez.org> wrote this file. As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return. Anton Berezin
# ----------------------------------------------------------------------------
#
# $FreeBSD$
#
package BSDPAN;
#
# The pod documentation for this module is at the end of this file.
#
use Config;
my $bsdpan_path; # Directory pathname of BSDPAN itself
BEGIN {
# Find this module's own path. Do this before anything else
# happens, even before the rest of the module compiles. Do this
# by looking into undocumented entries in the main (::) symbol
# table.
for (keys %::) {
$bsdpan_path = $1 if /^_<(.*\/|)BSDPAN.pm$/;
}
# deduce the BSDPAN's directory pathname
$bsdpan_path = '.' if $bsdpan_path eq '';
$bsdpan_path =~ tr|/|/|s;
$bsdpan_path =~ s|/$||;
}
sub path {
return $bsdpan_path;
}
sub perl_version {
return $Config{version};
}
sub perl_ver {
# pre-5.6.0 perls
return $Config{apiversion} if exists $Config{apiversion};
# post-5.6.0 perls
return $Config{version};
}
sub perl_arch {
# pre-5.6.0 perls
return $Config{archname} if exists $Config{apiversion};
# post-5.6.0 perls
return 'mach';
}
sub builds_port {
# Are we building a p5 port at the moment?
# XXX There must be a more reliable way to check this.
if (defined $ENV{ARCH} ||
defined $ENV{OPSYS} ||
defined $ENV{OSREL} ||
defined $ENV{OSVERSION} ||
defined $ENV{PORTOBJFORMAT} ||
defined $ENV{SYSTEMVERSION}) {
return 1;
} else {
return 0;
}
}
sub builds_standalone {
return !BSDPAN->builds_port;
}
1;
__END__
=head1 NAME
BSDPAN - Symbiogenetic tool for Perl & BSD
=head1 SYNOPSIS
use BSDPAN;
$path = BSDPAN->path;
$ver = BSDPAN->perl_version;
$ver = BSDPAN->perl_ver;
$arch = BSDPAN->perl_arch;
$port = BSDPAN->builds_port;
$noport = BSDPAN->builds_standalone;
=head1 DESCRIPTION
BSDPAN is the collection of modules that provides tighter than ever
integration of Perl into BSD Unix.
Currently, BSDPAN does the following:
=over 4
=item o makes p5- FreeBSD ports PREFIX-clean;
=item o registers Perl modules with FreeBSD package database.
=back
BSDPAN achieves this by overriding certain functionality of the core
Perl modules, ExtUtils::MM_Unix, and ExtUtils::Packlist.
BSDPAN B<module> itself just provides useful helper functions for the
rest of the modules in BSDPAN collection.
=head1 AUTHOR
Anton Berezin, tobez@tobez.org
=head1 SEE ALSO
perl(1), ExtUtils::MakeMaker(1), L<BSDPAN::Override(1)>,
L<BSDPAN::ExtUtils::MM_Unix(1)>, L<BSDPAN::ExtUtils::Packlist(1)>.
=cut