Bug#1135414: libppix-editortools-perl: FTBFS: Failed 1/14 test programs. 1/215 subtests failed.
Santiago Vila
sanvila at debian.org
Sat May 2 00:12:56 BST 2026
Package: src:libppix-editortools-perl
Version: 0.21-2
Severity: serious
Tags: ftbfs forky sid
Dear maintainer:
During a rebuild of all packages in unstable, this package failed to build.
Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:
https://people.debian.org/~sanvila/build-logs/202605/
About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.
If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.
If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:libppix-editortools-perl, so that this is still
visible in the BTS web page for this package.
Thanks.
--------------------------------------------------------------------------------
[...]
debian/rules clean
dh clean
dh_clean
debian/rules binary
dh binary
dh_update_autotools_config
dh_autoreconf
dh_auto_configure
/usr/bin/perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" LD="x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro"
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for PPIx::EditorTools
Writing MYMETA.yml and MYMETA.json
dh_auto_build
make -j2
make[1]: Entering directory '/<<PKGBUILDDIR>>'
cp lib/PPIx/EditorTools/FindUnmatchedBrace.pm blib/lib/PPIx/EditorTools/FindUnmatchedBrace.pm
cp lib/PPIx/EditorTools/RenamePackage.pm blib/lib/PPIx/EditorTools/RenamePackage.pm
cp lib/PPIx/EditorTools/RenamePackageFromPath.pm blib/lib/PPIx/EditorTools/RenamePackageFromPath.pm
cp lib/PPIx/EditorTools/Lexer.pm blib/lib/PPIx/EditorTools/Lexer.pm
cp lib/PPIx/EditorTools.pm blib/lib/PPIx/EditorTools.pm
cp lib/PPIx/EditorTools/RenameVariable.pm blib/lib/PPIx/EditorTools/RenameVariable.pm
cp lib/PPIx/EditorTools/IntroduceTemporaryVariable.pm blib/lib/PPIx/EditorTools/IntroduceTemporaryVariable.pm
cp lib/PPIx/EditorTools/ReturnObject.pm blib/lib/PPIx/EditorTools/ReturnObject.pm
cp lib/PPIx/EditorTools/FindVariableDeclaration.pm blib/lib/PPIx/EditorTools/FindVariableDeclaration.pm
cp lib/PPIx/EditorTools/Outline.pm blib/lib/PPIx/EditorTools/Outline.pm
Manifying 10 pod documents
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_test
make -j2 test TEST_VERBOSE=1
make[1]: Entering directory '/<<PKGBUILDDIR>>'
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t
t/00-compile.t .....................
1..10
ok 1 - PPIx/EditorTools.pm loaded ok
ok 2 - PPIx/EditorTools/FindUnmatchedBrace.pm loaded ok
ok 3 - PPIx/EditorTools/FindVariableDeclaration.pm loaded ok
ok 4 - PPIx/EditorTools/IntroduceTemporaryVariable.pm loaded ok
ok 5 - PPIx/EditorTools/Lexer.pm loaded ok
ok 6 - PPIx/EditorTools/Outline.pm loaded ok
ok 7 - PPIx/EditorTools/RenamePackage.pm loaded ok
ok 8 - PPIx/EditorTools/RenamePackageFromPath.pm loaded ok
ok 9 - PPIx/EditorTools/RenameVariable.pm loaded ok
ok 10 - PPIx/EditorTools/ReturnObject.pm loaded ok
ok
Attempt to call undefined import method with arguments ("new" ...) via package "PPIx::EditorTools" (Perhaps you forgot to load the package?) at t/00-ppix-editortools.t line 35.
# Failed test 'arguments ppi or code required'
# at t/00-ppix-editortools.t line 113.
# expecting: /arguments ppi or code required/
# found: normal exit
# Looks like you failed 1 test of 45.
t/00-ppix-editortools.t ............
1..45
ok 1 - require PPIx::EditorTools;
ok 2 - An object of class 'PPIx::EditorTools' isa 'PPIx::EditorTools'
ok 3 - require PPIx::EditorTools::FindUnmatchedBrace;
ok 4 - An object of class 'PPIx::EditorTools::FindUnmatchedBrace' isa 'PPIx::EditorTools::FindUnmatchedBrace'
ok 5 - require PPIx::EditorTools::FindVariableDeclaration;
ok 6 - An object of class 'PPIx::EditorTools::FindVariableDeclaration' isa 'PPIx::EditorTools::FindVariableDeclaration'
ok 7 - require PPIx::EditorTools::IntroduceTemporaryVariable;
ok 8 - An object of class 'PPIx::EditorTools::IntroduceTemporaryVariable' isa 'PPIx::EditorTools::IntroduceTemporaryVariable'
ok 9 - require PPIx::EditorTools::RenamePackage;
ok 10 - An object of class 'PPIx::EditorTools::RenamePackage' isa 'PPIx::EditorTools::RenamePackage'
ok 11 - require PPIx::EditorTools::RenamePackageFromPath;
ok 12 - An object of class 'PPIx::EditorTools::RenamePackageFromPath' isa 'PPIx::EditorTools::RenamePackageFromPath'
ok 13 - require PPIx::EditorTools::RenameVariable;
ok 14 - An object of class 'PPIx::EditorTools::RenameVariable' isa 'PPIx::EditorTools::RenameVariable'
ok 15 - require PPIx::EditorTools::FindUnmatchedBrace;
ok 16 - An object of class 'PPIx::EditorTools::FindUnmatchedBrace' isa 'PPIx::EditorTools::FindUnmatchedBrace'
ok 17 - require PPIx::EditorTools::Outline;
ok 18 - An object of class 'PPIx::EditorTools::Outline' isa 'PPIx::EditorTools::Outline'
ok 19 - require PPIx::EditorTools::Lexer;
ok 20 - An object of class 'PPIx::EditorTools::Lexer' isa 'PPIx::EditorTools::Lexer'
ok 21 - require PPIx::EditorTools::ReturnObject;
ok 22 - An object of class 'PPIx::EditorTools::ReturnObject' isa 'PPIx::EditorTools::ReturnObject'
ok 23 - use PPIx::EditorTools;
ok 24 - PPIx::EditorTools->can('new')
ok 25 - PPIx::EditorTools->can('code')
ok 26 - PPIx::EditorTools->can('ppi')
ok 27 - PPIx::EditorTools->can('process_doc')
ok 28 - PPIx::EditorTools->can('find_unmatched_brace')
ok 29 - PPIx::EditorTools->can('get_all_variable_declarations')
ok 30 - PPIx::EditorTools->can('element_depth')
ok 31 - PPIx::EditorTools->can('find_token_at_location')
ok 32 - PPIx::EditorTools->can('find_variable_declaration')
ok 33 - expecting PPIx::EditorTools->process_doc() to die
ok 34 - process_doc(code) from t/outline/Foo.pm
ok 35 - process_doc(code) from t/outline/file1.pl
ok 36 - process_doc(code) from t/outline/file2.pl
ok 37 - process_doc(code) from t/outline/Mooclass.pm
ok 38 - process_doc(code) from t/outline/Moorole.pm
ok 39 - process_doc(code) from t/outline/Moofirst.pm
ok 40 - process_doc(ppi)
not ok 41 - arguments ppi or code required
ok 42 - expecting PPIx::EditorTools->find_unmatched_brace() to die
ok 43 - expecting PPIx::EditorTools->get_all_variable_declarations() to die
ok 44 - expecting PPIx::EditorTools->element_depth() to die
ok 45 - expecting PPIx::EditorTools->find_token_at_location() to die
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/45 subtests
#
# Versions for all modules listed in MYMETA.json (including optional ones):
#
# === Configure Requires ===
#
# Module Want Have
# ------------------- ---- ----
# ExtUtils::MakeMaker any 7.70
#
# === Build Requires ===
#
# Module Want Have
# ------------------- ---- ----
# ExtUtils::MakeMaker any 7.70
#
# === Test Requires ===
#
# Module Want Have
# ------------------- ---- --------
# ExtUtils::MakeMaker any 7.70
# File::Spec any 3.91
# File::Temp any 0.2311
# IO::Handle any 1.55
# IPC::Open3 any 1.22
# Test::Differences any 0.72
# Test::Exception any 0.43
# Test::More any 1.302199
# Test::Most any 0.38
#
# === Test Recommends ===
#
# Module Want Have
# ---------- -------- --------
# CPAN::Meta 2.120900 2.150010
#
# === Runtime Requires ===
#
# Module Want Have
# ----------------- ----- -----
# Carp any 1.54
# Class::XSAccessor 1.02 1.19
# File::Basename any 2.86
# File::Spec any 3.91
# PPI 1.203 1.291
# PPI::Find any 1.291
# Try::Tiny any 0.32
# base any 2.27
# strict any 1.13
# warnings any 1.70
#
t/00-report-prereqs.t ..............
1..1
ok 1
ok
t/01-findunmatchedbrace.t ..........
1..6
ok 1 - An object of class 'PPIx::EditorTools::ReturnObject' isa 'PPIx::EditorTools::ReturnObject'
ok 2 - An object of class 'PPI::Structure::Block' isa 'PPI::Structure::Block'
ok 3 - unclosed sub
ok 4 - An object of class 'PPIx::EditorTools::ReturnObject' isa 'PPIx::EditorTools::ReturnObject'
ok 5 - An object of class 'PPI::Structure::Block' isa 'PPI::Structure::Block'
ok 6 - unclosed for block
ok
t/02-findvariabledeclaration.t .....
1..6
ok 1 - An object of class 'PPIx::EditorTools::ReturnObject' isa 'PPIx::EditorTools::ReturnObject'
ok 2 - An object of class 'PPI::Statement::Variable' isa 'PPI::Statement::Variable'
ok 3 - simple scalar
ok 4 - An object of class 'PPIx::EditorTools::ReturnObject' isa 'PPIx::EditorTools::ReturnObject'
ok 5 - An object of class 'PPI::Statement::Variable' isa 'PPI::Statement::Variable'
ok 6 - simple scalar
ok
t/03-introducetemporaryvariable.t ..
1..10
ok 1 - An object of class 'PPIx::EditorTools::ReturnObject' isa 'PPIx::EditorTools::ReturnObject'
ok 2 - An object of class 'PPI::Token::Word' isa 'PPI::Token'
ok 3 - temp var location
ok 4 - 10 / 12
ok 5 - ( 1 + 10 / 12 )
ok 6 - ( 1 + 10 \n / 12 )
ok 7 - An object of class 'PPIx::EditorTools::ReturnObject' isa 'PPIx::EditorTools::ReturnObject'
ok 8 - An object of class 'PPI::Token::Word' isa 'PPI::Token'
ok 9 - temp var location
not ok 10 - lexically scoped # TODO Bug: RT#60042 - replace does not respect lexical scope
# Failed (TODO) test 'lexically scoped'
# at t/03-introducetemporaryvariable.t line 105.
# +---+-------------------------------+----------------------------------+
# | Ln|Got |Expected |
# +---+-------------------------------+----------------------------------+
# | 1|'use strict; use warnings; |'use strict; use warnings; |
# | 2|sub one { |sub one { |
# | 3| my $foo = 10 / 12; | my $foo = 10 / 12; |
# | 4| my $x = ( 1 + $foo ) * 2; | my $x = ( 1 + $foo ) * 2; |
# | 5| my $y = ( 3 + $foo ) * 2; | my $y = ( 3 + $foo ) * 2; |
# | 6|} |} |
# | 7|sub two { |sub two { |
# * 8| my $y = ( 3 + $foo ) * 2; | my $y = ( 3 + 10 / 12 ) * 2; *
# | 9|} |} |
# | 10|' |' |
# +---+-------------------------------+----------------------------------+
ok
t/04-renamepackage.t ...............
1..5
ok 1 - An object of class 'PPIx::EditorTools::ReturnObject' isa 'PPIx::EditorTools::ReturnObject'
ok 2 - An object of class 'PPI::Statement::Package' isa 'PPI::Statement::Package'
ok 3 - simple package
ok 4 - simple package
not ok 5 - replace scalar # TODO RenamePackage does not support MooseX::Declare yet
# Failed (TODO) test 'replace scalar'
# at t/04-renamepackage.t line 103.
# +---+-------+---+----------------------------------------------------+
# | Ln|Got | Ln|Expected |
# +---+-------+---+----------------------------------------------------+
# * 1|undef * 1|'use MooseX::Declare; *
# | | * 2|\n *
# | | * 3|class NewPackage { *
# | | * 4| has a_var => ( is => \'rw\', isa => \'Str\' ); *
# | | * 5| has b_var => ( is => \'rw\', isa => \'Str\' ); *
# | | * 6|\n *
# | | * 7| method some_method { *
# | | * 8| my $x_var = 1; *
# | | * 9|\n *
# | | * 10| print "Do stuff with ${x_var}\\n"; *
# | | * 11| $x_var += 1; *
# | | * 12|\n *
# | | * 13| my %hash; *
# | | * 14| for my $i (1..5) { *
# | | * 15| $hash{$i} = $x_var; *
# | | * 16| } *
# | | * 17| } *
# | | * 18|} *
# | | * 19|' *
# +---+-------+---+----------------------------------------------------+
ok
t/05-renamepackagefrompath.t .......
1..4
ok 1 - simple package
ok 2 - no lib package
ok 3 - with /./ part
not ok 4 - strip .. from package # TODO Does not support /../ path constructs yet
# Failed (TODO) test 'strip .. from package'
# at t/05-renamepackagefrompath.t line 62.
# +---+----------------------------------------+----------------------------+
# | Ln|Got |Expected |
# +---+----------------------------------------+----------------------------+
# * 1|'package Test::Ignore::..::Code::Path; |'package Test::Code::Path; *
# | 2|use strict; |use strict; |
# | 3|BEGIN { |BEGIN { |
# | 4| 1 = 1; | 1 = 1; |
# | 5|} |} |
# | 6|1; |1; |
# | 7|' |' |
# +---+----------------------------------------+----------------------------+
ok
t/06-camelcasing.t .................
1..90
ok 1 - to-camel-case 'abc' with ucfirst=0
ok 2 - to-camel-case '$abc' with ucfirst=0
ok 3 - to-camel-case '$\#abc' with ucfirst=0
ok 4 - to-camel-case 'abc' with ucfirst=1
ok 5 - to-camel-case '$abc' with ucfirst=1
ok 6 - to-camel-case '$\#abc' with ucfirst=1
ok 7 - to-camel-case 'Abc' with ucfirst=0
ok 8 - to-camel-case '$Abc' with ucfirst=0
ok 9 - to-camel-case '$\#Abc' with ucfirst=0
ok 10 - to-camel-case 'Abc' with ucfirst=1
ok 11 - to-camel-case '$Abc' with ucfirst=1
ok 12 - to-camel-case '$\#Abc' with ucfirst=1
ok 13 - to-camel-case 'abc_def' with ucfirst=0
ok 14 - to-camel-case '$abc_def' with ucfirst=0
ok 15 - to-camel-case '$\#abc_def' with ucfirst=0
ok 16 - to-camel-case 'abc_def' with ucfirst=1
ok 17 - to-camel-case '$abc_def' with ucfirst=1
ok 18 - to-camel-case '$\#abc_def' with ucfirst=1
ok 19 - to-camel-case 'a_b_c_D_E' with ucfirst=0
ok 20 - to-camel-case '$a_b_c_D_E' with ucfirst=0
ok 21 - to-camel-case '$\#a_b_c_D_E' with ucfirst=0
ok 22 - to-camel-case 'a_b_c_D_E' with ucfirst=1
ok 23 - to-camel-case '$a_b_c_D_E' with ucfirst=1
ok 24 - to-camel-case '$\#a_b_c_D_E' with ucfirst=1
ok 25 - to-camel-case 'A_b_c_D_E' with ucfirst=1
ok 26 - to-camel-case '$A_b_c_D_E' with ucfirst=1
ok 27 - to-camel-case '$\#A_b_c_D_E' with ucfirst=1
ok 28 - to-camel-case 'A_b_c_D_E' with ucfirst=0
ok 29 - to-camel-case '$A_b_c_D_E' with ucfirst=0
ok 30 - to-camel-case '$\#A_b_c_D_E' with ucfirst=0
ok 31 - to-camel-case '_this_is_a_var' with ucfirst=0
ok 32 - to-camel-case '$_this_is_a_var' with ucfirst=0
ok 33 - to-camel-case '$\#_this_is_a_var' with ucfirst=0
ok 34 - to-camel-case '_this_is_a_var' with ucfirst=1
ok 35 - to-camel-case '$_this_is_a_var' with ucfirst=1
ok 36 - to-camel-case '$\#_this_is_a_var' with ucfirst=1
ok 37 - from-camel-case 'abc' with ucfirst=0
ok 38 - from-camel-case '$abc' with ucfirst=0
ok 39 - from-camel-case '$\#abc' with ucfirst=0
ok 40 - from-camel-case 'abc' with ucfirst=1
ok 41 - from-camel-case '$abc' with ucfirst=1
ok 42 - from-camel-case '$\#abc' with ucfirst=1
ok 43 - from-camel-case 'Abc' with ucfirst=0
ok 44 - from-camel-case '$Abc' with ucfirst=0
ok 45 - from-camel-case '$\#Abc' with ucfirst=0
ok 46 - from-camel-case 'Abc' with ucfirst=1
ok 47 - from-camel-case '$Abc' with ucfirst=1
ok 48 - from-camel-case '$\#Abc' with ucfirst=1
ok 49 - from-camel-case 'abcDef' with ucfirst=0
ok 50 - from-camel-case '$abcDef' with ucfirst=0
ok 51 - from-camel-case '$\#abcDef' with ucfirst=0
ok 52 - from-camel-case 'abcDef' with ucfirst=1
ok 53 - from-camel-case '$abcDef' with ucfirst=1
ok 54 - from-camel-case '$\#abcDef' with ucfirst=1
ok 55 - from-camel-case 'AbcDef' with ucfirst=0
ok 56 - from-camel-case '$AbcDef' with ucfirst=0
ok 57 - from-camel-case '$\#AbcDef' with ucfirst=0
ok 58 - from-camel-case 'AbcDef' with ucfirst=1
ok 59 - from-camel-case '$AbcDef' with ucfirst=1
ok 60 - from-camel-case '$\#AbcDef' with ucfirst=1
ok 61 - from-camel-case 'aBCDE' with ucfirst=0
ok 62 - from-camel-case '$aBCDE' with ucfirst=0
ok 63 - from-camel-case '$\#aBCDE' with ucfirst=0
ok 64 - from-camel-case 'aBCDE' with ucfirst=1
ok 65 - from-camel-case '$aBCDE' with ucfirst=1
ok 66 - from-camel-case '$\#aBCDE' with ucfirst=1
ok 67 - from-camel-case 'ABCDE' with ucfirst=0
ok 68 - from-camel-case '$ABCDE' with ucfirst=0
ok 69 - from-camel-case '$\#ABCDE' with ucfirst=0
ok 70 - from-camel-case 'ABCDE' with ucfirst=1
ok 71 - from-camel-case '$ABCDE' with ucfirst=1
ok 72 - from-camel-case '$\#ABCDE' with ucfirst=1
ok 73 - from-camel-case '_abc' with ucfirst=0
ok 74 - from-camel-case '$_abc' with ucfirst=0
ok 75 - from-camel-case '$\#_abc' with ucfirst=0
ok 76 - from-camel-case '_abc' with ucfirst=1
ok 77 - from-camel-case '$_abc' with ucfirst=1
ok 78 - from-camel-case '$\#_abc' with ucfirst=1
ok 79 - from-camel-case '_thisIsAVar' with ucfirst=0
ok 80 - from-camel-case '$_thisIsAVar' with ucfirst=0
ok 81 - from-camel-case '$\#_thisIsAVar' with ucfirst=0
ok 82 - from-camel-case '_thisIsAVar' with ucfirst=1
ok 83 - from-camel-case '$_thisIsAVar' with ucfirst=1
ok 84 - from-camel-case '$\#_thisIsAVar' with ucfirst=1
ok 85 - from-camel-case '_ThisIsAVar' with ucfirst=0
ok 86 - from-camel-case '$_ThisIsAVar' with ucfirst=0
ok 87 - from-camel-case '$\#_ThisIsAVar' with ucfirst=0
ok 88 - from-camel-case '_ThisIsAVar' with ucfirst=1
ok 89 - from-camel-case '$_ThisIsAVar' with ucfirst=1
ok 90 - from-camel-case '$\#_ThisIsAVar' with ucfirst=1
ok
t/07-renamevariable.t ..............
1..17
ok 1 - replace scalar
ok 2 - system
ok 3 - replace scalar on command line
ok 4 - replace scalar
ok 5 - system
ok 6 - replace scalar on command line
ok 7 - replace hash
ok 8 - system
ok 9 - replace hash on command line
ok 10 - An object of class 'PPIx::EditorTools::ReturnObject' isa 'PPIx::EditorTools::ReturnObject'
ok 11 - An object of class 'PPI::Token::Symbol' isa 'PPI::Token::Symbol'
ok 12 - camelCase xVar
ok 13 - system
ok 14 - camelCase xVar on command line
ok 15 - camelCase xVar (ucfirst)
ok 16 - from camelCase _some_variable
ok 17 - from camelCase _some_variable (ucfirst)
ok
# PPI version is 1.291
t/08-getallvariabledeclarations.t ..
ok 1 - We should be able to find variable declarations
# {
# 'dynamic' => {},
# 'lexical' => {
# '$arg' => [
# [
# 3,
# 1,
# 1,
# 3,
# undef
# ]
# ]
# },
# 'our' => {},
# 'package' => {}
# }
ok 2 - ... and we should be able to find loop variables
ok 3 - We should be able to find variable declarations
# {
# 'dynamic' => {},
# 'lexical' => {
# '$arg' => [
# [
# 1,
# 1,
# 1,
# 1,
# undef
# ]
# ]
# },
# 'our' => {},
# 'package' => {}
# }
ok 4 - ... and we should be able to find loop variables
1..4
ok
t/09-outline.t .....................
1..9
ok 1 - t/outline/Foo.pm
ok 2 - t/outline/file1.pl
ok 3
ok 4 - t/outline/file2.pl
ok 5 - t/outline/Mooclass.pm
ok 6 - t/outline/MooclassVanilla.pm
ok 7 - t/outline/Moorole.pm
ok 8 - t/outline/Moofirst.pm
ok 9 - t/outline/test_1435.pl
ok
t/10-lexer.t .......................
1..8
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok
t/100-changes.t .................... skipped: Test::CPAN::Changes required for this test
Test Summary Report
-------------------
t/00-ppix-editortools.t (Wstat: 256 (exited 1) Tests: 45 Failed: 1)
Failed test: 41
Non-zero exit status: 1
Files=14, Tests=215, 2 wallclock secs ( 0.03 usr 0.01 sys + 1.70 cusr 0.47 csys = 2.21 CPU)
Result: FAIL
Failed 1/14 test programs. 1/215 subtests failed.
make[1]: *** [Makefile:903: test_dynamic] Error 255
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_test: error: make -j2 test TEST_VERBOSE=1 returned exit code 2
make: *** [debian/rules:4: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2
--------------------------------------------------------------------------------
More information about the pkg-perl-maintainers
mailing list