[Rt-commit] r5602 - in Class-Accessor-Named: . inc/Module t
zev at bestpractical.com
zev at bestpractical.com
Tue Jul 18 18:41:56 EDT 2006
Author: zev
Date: Tue Jul 18 18:41:55 2006
New Revision: 5602
Modified:
Class-Accessor-Named/MANIFEST
Class-Accessor-Named/META.yml
Class-Accessor-Named/Makefile.PL
Class-Accessor-Named/inc/Module/AutoInstall.pm
Class-Accessor-Named/inc/Module/Install.pm
Class-Accessor-Named/inc/Module/Install/AutoInstall.pm
Class-Accessor-Named/inc/Module/Install/Base.pm
Class-Accessor-Named/inc/Module/Install/Can.pm
Class-Accessor-Named/inc/Module/Install/Fetch.pm
Class-Accessor-Named/inc/Module/Install/Include.pm
Class-Accessor-Named/inc/Module/Install/Makefile.pm
Class-Accessor-Named/inc/Module/Install/Metadata.pm
Class-Accessor-Named/inc/Module/Install/Win32.pm
Class-Accessor-Named/inc/Module/Install/WriteAll.pm
Class-Accessor-Named/t/01-dependencies.t
Log:
* Fixed dependencies and Test::Dependencies invocation
* updated files in inc
* Updated Meta.yml and MANIFEST
Modified: Class-Accessor-Named/MANIFEST
==============================================================================
--- Class-Accessor-Named/MANIFEST (original)
+++ Class-Accessor-Named/MANIFEST Tue Jul 18 18:41:55 2006
@@ -1,17 +1,21 @@
Changes
+inc/Module/AutoInstall.pm
inc/Module/Install.pm
+inc/Module/Install/AutoInstall.pm
inc/Module/Install/Base.pm
inc/Module/Install/Can.pm
inc/Module/Install/Fetch.pm
+inc/Module/Install/Include.pm
inc/Module/Install/Makefile.pm
inc/Module/Install/Metadata.pm
inc/Module/Install/Win32.pm
inc/Module/Install/WriteAll.pm
lib/Class/Accessor/Named.pm
Makefile.PL
-MANIFEST
-META.yml # Will be created by "make dist"
+MANIFEST This list of files
+META.yml
README
+SIGNATURE
t/00.load.t
t/01-dependencies.t
t/pod-coverage.t
Modified: Class-Accessor-Named/META.yml
==============================================================================
--- Class-Accessor-Named/META.yml (original)
+++ Class-Accessor-Named/META.yml Tue Jul 18 18:41:55 2006
@@ -1,7 +1,9 @@
abstract: Better profiling output for Class::Accessor
author: Jesse Vincent <jesse at bestpractical.com>
+build_requires:
+ Test::Dependencies: 0
distribution_type: module
-generated_by: Module::Install version 0.59
+generated_by: Module::Install version 0.63
license: perl
name: Class-Accessor-Named
no_index:
@@ -11,6 +13,5 @@
requires:
Hook::LexWrap: 0
Sub::Name: 0
- Test::Dependencies: 0
UNIVERSAL::require: 0
-version: 0.001
+version: 0.002
Modified: Class-Accessor-Named/Makefile.PL
==============================================================================
--- Class-Accessor-Named/Makefile.PL (original)
+++ Class-Accessor-Named/Makefile.PL Tue Jul 18 18:41:55 2006
@@ -5,9 +5,9 @@
version_from ('lib/Class/Accessor/Named.pm');
abstract_from('lib/Class/Accessor/Named.pm');
license('perl');
-requires('Test::Dependencies');
requires('Hook::LexWrap');
-requires('UNIVERSAL::require');
requires('Sub::Name');
+requires('UNIVERSAL::require');
+build_requires('Test::Dependencies');
auto_install();
&WriteAll;
Modified: Class-Accessor-Named/inc/Module/AutoInstall.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/AutoInstall.pm (original)
+++ Class-Accessor-Named/inc/Module/AutoInstall.pm Tue Jul 18 18:41:55 2006
@@ -1,4 +1,4 @@
-#line 1 "inc/Module/AutoInstall.pm - /usr/local/share/perl/5.8.7/Module/AutoInstall.pm"
+#line 1
package Module::AutoInstall;
use strict;
@@ -639,7 +639,9 @@
# check for version numbers that are not in decimal format
if ( ref($cur) or ref($min) or $cur =~ /v|\..*\./ or $min =~ /v|\..*\./ ) {
- if ( $version::VERSION or defined( _load('version') ) ) {
+ if ( ( $version::VERSION or defined( _load('version') )) and
+ version->can('new')
+ ) {
# use version.pm if it is installed.
return (
@@ -750,4 +752,4 @@
__END__
-#line 988
+#line 990
Modified: Class-Accessor-Named/inc/Module/Install.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/Install.pm (original)
+++ Class-Accessor-Named/inc/Module/Install.pm Tue Jul 18 18:41:55 2006
@@ -1,6 +1,22 @@
-#line 1 "/home/jesse/svk/Class-Accessor-Named/inc/Module/Install.pm - /usr/local/share/perl/5.8.7/Module/Install.pm"
+#line 1
package Module::Install;
+# For any maintainers:
+# The load order for Module::Install is a bit magic.
+# It goes something like this...
+#
+# IF ( host has Module::Install installed, creating author mode ) {
+# 1. Makefile.PL calls "use inc::Module::Install"
+# 2. $INC{inc/Module/Install.pm} set to installed version of inc::Module::Install
+# 3. The installed version of inc::Module::Install loads
+# 4. inc::Module::Install calls "require Module::Install"
+# 5. The ./inc/ version of Module::Install loads
+# } ELSE {
+# 1. Makefile.PL calls "use inc::Module::Install"
+# 2. $INC{inc/Module/Install.pm} set to ./inc/ version of Module::Install
+# 3. The ./inc/ version of Module::Install loads
+# }
+
use 5.004;
use strict 'vars';
@@ -12,10 +28,15 @@
# This is not enforced yet, but will be some time in the next few
# releases once we can make sure it won't clash with custom
# Module::Install extensions.
- $VERSION = '0.59';
+ $VERSION = '0.63';
}
-# inc::Module::Install must be loaded first
+# Whether or not inc::Module::Install is actually loaded, the
+# $INC{inc/Module/Install.pm} is what will still get set as long as
+# the caller loaded module this in the documented manner.
+# If not set, the caller may NOT have loaded the bundled version, and thus
+# they may not have a MI version that works with the Makefile.PL. This would
+# result in false errors or unexpected behaviour. And we don't want that.
my $file = join( '/', 'inc', split /::/, __PACKAGE__ ) . '.pm';
unless ( $INC{$file} ) {
die <<"END_DIE";
@@ -30,6 +51,22 @@
END_DIE
}
+# If the script that is loading Module::Install is from the future,
+# then make will detect this and cause it to re-run over and over
+# again. This is bad. Rather than taking action to touch it (which
+# is unreliable on some platforms and requires write permissions)
+# for now we should catch this and refuse to run.
+if ( -f $0 and (stat($0))[9] > time ) {
+ die << "END_DIE";
+Your installer $0 has a modification time in the future.
+
+This is known to create infinite loops in make.
+
+Please correct this, then run $0 again.
+
+END_DIE
+}
+
use Cwd ();
use File::Find ();
use File::Path ();
@@ -95,7 +132,7 @@
my %seen;
foreach my $obj ( @exts ) {
while (my ($method, $glob) = each %{ref($obj) . '::'}) {
- next unless exists &{ref($obj).'::'.$method};
+ next unless $obj->can($method);
next if $method =~ /^_/;
next if $method eq uc($method);
$seen{$method}++;
@@ -136,7 +173,7 @@
}
$args{file} ||= "$args{base}/$args{prefix}/$args{path}.pm";
- bless \%args, $class;
+ bless( \%args, $class );
}
sub call {
@@ -175,7 +212,6 @@
unshift @INC, $self->{prefix};
}
- local @INC = ($path, @INC);
foreach my $rv ( $self->find_extensions($path) ) {
my ($file, $pkg) = @{$rv};
next if $self->{pathnames}{$pkg};
Modified: Class-Accessor-Named/inc/Module/Install/AutoInstall.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/Install/AutoInstall.pm (original)
+++ Class-Accessor-Named/inc/Module/Install/AutoInstall.pm Tue Jul 18 18:41:55 2006
@@ -1,12 +1,15 @@
-#line 1 "inc/Module/Install/AutoInstall.pm - /usr/local/share/perl/5.8.7/Module/Install/AutoInstall.pm"
+#line 1
package Module::Install::AutoInstall;
+use strict;
use Module::Install::Base;
- at ISA = qw{Module::Install::Base};
-
-$VERSION = '0.59';
-use strict;
+use vars qw{$VERSION $ISCORE @ISA};
+BEGIN {
+ $VERSION = '0.63';
+ $ISCORE = 1;
+ @ISA = qw{Module::Install::Base};
+}
sub AutoInstall { $_[0] }
Modified: Class-Accessor-Named/inc/Module/Install/Base.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/Install/Base.pm (original)
+++ Class-Accessor-Named/inc/Module/Install/Base.pm Tue Jul 18 18:41:55 2006
@@ -1,7 +1,7 @@
-#line 1 "inc/Module/Install/Base.pm - /usr/local/share/perl/5.8.7/Module/Install/Base.pm"
+#line 1
package Module::Install::Base;
-$VERSION = '0.59';
+$VERSION = '0.63';
# Suspend handler for "redefined" warnings
BEGIN {
Modified: Class-Accessor-Named/inc/Module/Install/Can.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/Install/Can.pm (original)
+++ Class-Accessor-Named/inc/Module/Install/Can.pm Tue Jul 18 18:41:55 2006
@@ -1,75 +1,82 @@
-#line 1 "inc/Module/Install/Can.pm - /usr/local/share/perl/5.8.7/Module/Install/Can.pm"
+#line 1
package Module::Install::Can;
-use Module::Install::Base;
- at ISA = qw(Module::Install::Base);
-
-$VERSION = '0.59';
-
use strict;
+use Module::Install::Base;
use Config ();
+### This adds a 5.005 Perl version dependency.
+### This is a bug and will be fixed.
+use File::Spec ();
use ExtUtils::MakeMaker ();
-# This may introduce a 5.005 dependency, or at the very least it may
-# not bootstrap properly under 5.004.
-use File::Spec ();
-
+use vars qw{$VERSION $ISCORE @ISA};
+BEGIN {
+ $VERSION = '0.63';
+ $ISCORE = 1;
+ @ISA = qw{Module::Install::Base};
+}
+
# check if we can load some module
+### Upgrade this to not have to load the module if possible
sub can_use {
- my ($self, $mod, $ver) = @_;
- $mod =~ s{::|\\}{/}g;
- $mod .= ".pm" unless $mod =~ /\.pm$/i;
-
- my $pkg = $mod;
- $pkg =~ s{/}{::}g;
- $pkg =~ s{\.pm$}{}i;
+ my ($self, $mod, $ver) = @_;
+ $mod =~ s{::|\\}{/}g;
+ $mod .= '.pm' unless $mod =~ /\.pm$/i;
+
+ my $pkg = $mod;
+ $pkg =~ s{/}{::}g;
+ $pkg =~ s{\.pm$}{}i;
- local $@;
- eval { require $mod; $pkg->VERSION($ver || 0); 1 };
+ local $@;
+ eval { require $mod; $pkg->VERSION($ver || 0); 1 };
}
# check if we can run some command
sub can_run {
- my ($self, $cmd) = @_;
+ my ($self, $cmd) = @_;
- my $_cmd = $cmd;
- return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
+ my $_cmd = $cmd;
+ return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
- for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
- my $abs = File::Spec->catfile($dir, $_[1]);
- return $abs if (-x $abs or $abs = MM->maybe_command($abs));
- }
+ for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
+ my $abs = File::Spec->catfile($dir, $_[1]);
+ return $abs if (-x $abs or $abs = MM->maybe_command($abs));
+ }
- return;
+ return;
}
+# can we locate a (the) C compiler
sub can_cc {
- my $self = shift;
- my @chunks = split(/ /, $Config::Config{cc}) or return;
+ my $self = shift;
+ my @chunks = split(/ /, $Config::Config{cc}) or return;
- # $Config{cc} may contain args; try to find out the program part
- while (@chunks) {
- return $self->can_run("@chunks") || (pop(@chunks), next);
- }
+ # $Config{cc} may contain args; try to find out the program part
+ while (@chunks) {
+ return $self->can_run("@chunks") || (pop(@chunks), next);
+ }
- return;
+ return;
}
# Fix Cygwin bug on maybe_command();
-if ($^O eq 'cygwin') {
- require ExtUtils::MM_Cygwin;
- require ExtUtils::MM_Win32;
- if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) {
- *ExtUtils::MM_Cygwin::maybe_command = sub {
- my ($self, $file) = @_;
- if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) {
- ExtUtils::MM_Win32->maybe_command($file);
- }
- else {
- ExtUtils::MM_Unix->maybe_command($file);
- }
- }
- }
+if ( $^O eq 'cygwin' ) {
+ require ExtUtils::MM_Cygwin;
+ require ExtUtils::MM_Win32;
+ if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) {
+ *ExtUtils::MM_Cygwin::maybe_command = sub {
+ my ($self, $file) = @_;
+ if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) {
+ ExtUtils::MM_Win32->maybe_command($file);
+ } else {
+ ExtUtils::MM_Unix->maybe_command($file);
+ }
+ }
+ }
}
1;
+
+__END__
+
+#line 157
Modified: Class-Accessor-Named/inc/Module/Install/Fetch.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/Install/Fetch.pm (original)
+++ Class-Accessor-Named/inc/Module/Install/Fetch.pm Tue Jul 18 18:41:55 2006
@@ -1,12 +1,13 @@
-#line 1 "inc/Module/Install/Fetch.pm - /usr/local/share/perl/5.8.7/Module/Install/Fetch.pm"
+#line 1
package Module::Install::Fetch;
use strict;
use Module::Install::Base;
-use vars qw{$VERSION @ISA};
+use vars qw{$VERSION $ISCORE @ISA};
BEGIN {
- $VERSION = '0.59';
+ $VERSION = '0.63';
+ $ISCORE = 1;
@ISA = qw{Module::Install::Base};
}
Modified: Class-Accessor-Named/inc/Module/Install/Include.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/Install/Include.pm (original)
+++ Class-Accessor-Named/inc/Module/Install/Include.pm Tue Jul 18 18:41:55 2006
@@ -1,12 +1,15 @@
-#line 1 "inc/Module/Install/Include.pm - /usr/local/share/perl/5.8.7/Module/Install/Include.pm"
+#line 1
package Module::Install::Include;
+use strict;
use Module::Install::Base;
- at ISA = qw(Module::Install::Base);
-
-$VERSION = '0.59';
-use strict;
+use vars qw{$VERSION $ISCORE @ISA};
+BEGIN {
+ $VERSION = '0.63';
+ $ISCORE = 1;
+ @ISA = qw{Module::Install::Base};
+}
sub include {
shift()->admin->include(@_);
Modified: Class-Accessor-Named/inc/Module/Install/Makefile.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/Install/Makefile.pm (original)
+++ Class-Accessor-Named/inc/Module/Install/Makefile.pm Tue Jul 18 18:41:55 2006
@@ -1,13 +1,14 @@
-#line 1 "inc/Module/Install/Makefile.pm - /usr/local/share/perl/5.8.7/Module/Install/Makefile.pm"
+#line 1
package Module::Install::Makefile;
use strict 'vars';
use Module::Install::Base;
use ExtUtils::MakeMaker ();
-use vars qw{$VERSION @ISA};
+use vars qw{$VERSION $ISCORE @ISA};
BEGIN {
- $VERSION = '0.59';
+ $VERSION = '0.63';
+ $ISCORE = 1;
@ISA = qw{Module::Install::Base};
}
@@ -68,6 +69,15 @@
);
}
+sub realclean_files {
+ my $self = shift;
+ my $realclean = $self->makemaker_args->{realclean} ||= {};
+ %$realclean = (
+ %$realclean,
+ FILES => join(' ', grep length, $realclean->{FILES}, @_),
+ );
+}
+
sub libs {
my $self = shift;
my $libs = ref $_[0] ? shift : [ shift ];
@@ -132,7 +142,7 @@
}
my $mm = ExtUtils::MakeMaker::WriteMakefile(%args);
- $self->fix_up_makefile($mm->{FIRST_MAKEFILE});
+ $self->fix_up_makefile($mm->{FIRST_MAKEFILE} || 'Makefile');
}
sub fix_up_makefile {
@@ -159,6 +169,18 @@
$makefile =~ s/^(FULLPERL = .*)/$1 "-Iinc"/m;
$makefile =~ s/^(PERL = .*)/$1 "-Iinc"/m;
+ # Module::Install will never be used to build the Core Perl
+ # Sometimes PERL_LIB and PERL_ARCHLIB get written anyway, which breaks
+ # PREFIX/PERL5LIB, and thus, install_share. Blank them if they exist
+ $makefile =~ s/^PERL_LIB = .+/PERL_LIB =/m;
+ #$makefile =~ s/^PERL_ARCHLIB = .+/PERL_ARCHLIB =/m;
+
+ # Perl 5.005 mentions PERL_LIB explicitly, so we have to remove that as well.
+ $makefile =~ s/("?)-I\$\(PERL_LIB\)\1//g;
+
+ # XXX - This is currently unused; not sure if it breaks other MM-users
+ # $makefile =~ s/^pm_to_blib\s+:\s+/pm_to_blib :: /mg;
+
open MAKEFILE, "> $makefile_name" or die "fix_up_makefile: Couldn't open $makefile_name: $!";
print MAKEFILE "$preamble$makefile$postamble" or die $!;
close MAKEFILE or die $!;
@@ -183,4 +205,4 @@
__END__
-#line 312
+#line 334
Modified: Class-Accessor-Named/inc/Module/Install/Metadata.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/Install/Metadata.pm (original)
+++ Class-Accessor-Named/inc/Module/Install/Metadata.pm Tue Jul 18 18:41:55 2006
@@ -1,12 +1,15 @@
-#line 1 "inc/Module/Install/Metadata.pm - /usr/local/share/perl/5.8.7/Module/Install/Metadata.pm"
+#line 1
package Module::Install::Metadata;
+use strict 'vars';
use Module::Install::Base;
- at ISA = qw{Module::Install::Base};
-
-$VERSION = '0.59';
-use strict 'vars';
+use vars qw{$VERSION $ISCORE @ISA};
+BEGIN {
+ $VERSION = '0.63';
+ $ISCORE = 1;
+ @ISA = qw{Module::Install::Base};
+}
my @scalar_keys = qw{
name module_name abstract author version license
@@ -120,9 +123,9 @@
require Module::Build;
my $build = Module::Build->new(
- dist_name => $self->{name},
- dist_version => $self->{version},
- license => $self->{license},
+ dist_name => $self->name,
+ dist_version => $self->version,
+ license => $self->license,
);
$self->provides(%{ $build->find_dist_packages || {} });
}
@@ -235,11 +238,13 @@
^
use \s*
v?
- ([\d\.]+)
+ ([\d_\.]+)
\s* ;
/ixms
)
{
+ my $v = $1;
+ $v =~ s{_}{}g;
$self->perl_version($1);
}
else {
Modified: Class-Accessor-Named/inc/Module/Install/Win32.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/Install/Win32.pm (original)
+++ Class-Accessor-Named/inc/Module/Install/Win32.pm Tue Jul 18 18:41:55 2006
@@ -1,42 +1,45 @@
-#line 1 "inc/Module/Install/Win32.pm - /usr/local/share/perl/5.8.7/Module/Install/Win32.pm"
+#line 1
package Module::Install::Win32;
+use strict;
use Module::Install::Base;
- at ISA = qw(Module::Install::Base);
-
-$VERSION = '0.59';
-use strict;
+use vars qw{$VERSION $ISCORE @ISA};
+BEGIN {
+ $VERSION = '0.63';
+ $ISCORE = 1;
+ @ISA = qw{Module::Install::Base};
+}
# determine if the user needs nmake, and download it if needed
sub check_nmake {
- my $self = shift;
- $self->load('can_run');
- $self->load('get_file');
-
- require Config;
- return unless (
- $Config::Config{make} and
- $Config::Config{make} =~ /^nmake\b/i and
- $^O eq 'MSWin32' and
- !$self->can_run('nmake')
- );
-
- print "The required 'nmake' executable not found, fetching it...\n";
-
- require File::Basename;
- my $rv = $self->get_file(
- url => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe',
- ftp_url => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe',
- local_dir => File::Basename::dirname($^X),
- size => 51928,
- run => 'Nmake15.exe /o > nul',
- check_for => 'Nmake.exe',
- remove => 1,
- );
+ my $self = shift;
+ $self->load('can_run');
+ $self->load('get_file');
+
+ require Config;
+ return unless (
+ $^O eq 'MSWin32' and
+ $Config::Config{make} and
+ $Config::Config{make} =~ /^nmake\b/i and
+ ! $self->can_run('nmake')
+ );
+
+ print "The required 'nmake' executable not found, fetching it...\n";
+
+ require File::Basename;
+ my $rv = $self->get_file(
+ url => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe',
+ ftp_url => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe',
+ local_dir => File::Basename::dirname($^X),
+ size => 51928,
+ run => 'Nmake15.exe /o > nul',
+ check_for => 'Nmake.exe',
+ remove => 1,
+ );
- if (!$rv) {
- die << '.';
+ if (!$rv) {
+ die <<'END_MESSAGE';
-------------------------------------------------------------------------------
@@ -55,11 +58,8 @@
You may then resume the installation process described in README.
-------------------------------------------------------------------------------
-.
- }
+END_MESSAGE
+ }
}
1;
-
-__END__
-
Modified: Class-Accessor-Named/inc/Module/Install/WriteAll.pm
==============================================================================
--- Class-Accessor-Named/inc/Module/Install/WriteAll.pm (original)
+++ Class-Accessor-Named/inc/Module/Install/WriteAll.pm Tue Jul 18 18:41:55 2006
@@ -1,12 +1,15 @@
-#line 1 "inc/Module/Install/WriteAll.pm - /usr/local/share/perl/5.8.7/Module/Install/WriteAll.pm"
+#line 1
package Module::Install::WriteAll;
+use strict;
use Module::Install::Base;
- at ISA = qw(Module::Install::Base);
-
-$VERSION = '0.59';
-use strict;
+use vars qw{$VERSION $ISCORE @ISA};
+BEGIN {
+ $VERSION = '0.63';
+ $ISCORE = 1;
+ @ISA = qw{Module::Install::Base};
+}
sub WriteAll {
my $self = shift;
Modified: Class-Accessor-Named/t/01-dependencies.t
==============================================================================
--- Class-Accessor-Named/t/01-dependencies.t (original)
+++ Class-Accessor-Named/t/01-dependencies.t Tue Jul 18 18:41:55 2006
@@ -1,5 +1,4 @@
+use Test::Dependencies exclude =>
+[qw/ Clas::Accessor::Named /];
- use Test::Dependencies exclude =>
- [qw/ Your::Namespace Some::Other::Namespace /];
-
- ok_dependencies();
+ok_dependencies();
More information about the Rt-commit
mailing list