On 03/20/2017 09:32 PM, James E Keenan wrote:
On 03/17/2017 09:42 PM, Karen Etheridge wrote:
​> ​
1. Compose a list of CPAN distros starting with those farthest up river,
i.e., distros that only depend on the perl 5 core.  Within that set of
distros I'd like to order them from most reverse dependencies to
fewest.  Then go down river from there.

​David Golden has a script for generating the CPAN river heirarchy --
the last run of this that I know of (at least, it's the data I've been
working off of) is at https://gist.github.com/xdg/af7a32c5b21d45a6b255
<https://gist.github.com/xdg/af7a32c5b21d45a6b255>. It lists the
distributions in their position on the CPAN river, and their top 5 users
(reverse dependencies).  This would be a natural place to start testing,
and determining which branches of the river have blockages (the first
instance of a no-dot-in-INC issue).  David, can you generate a fresh
copy?​


Karen, thanks for that link.  Actually, just using the first 1000 or so
distros in that gist as is would suffice for now.

We now have a perl-5.25.11 tarball which contains
no-dot-by-default-in-@INC.  So we have a real (dev) release with which
to begin testing CPAN distros.

The next question is:  How can I set up a reporting apparatus such that
when a distro fails I can retain the complete test run/output on disk
for inspection?


The approach I took today was as follows:

1. I took the file which David Golden prepared last year as a proxy for the current state of the river. I decompressed it to a plain-text file called 'river-2016-02-27.txt'.

2. I wrote a program (attached) called get-upriver-distros.pl to parse the plain-text file for the first 1000 distros found, which were stored in another plain-text file called top-1000.txt.

3. Built and installed perl5 blead for testing, then installed 'cpanm' against that perl.

4. cat top-1000.txt | xargs bin/cpanm install && go get breakfast

5. Copied and renamed the 'cpanm' build.log to 20170330-1000-build.log.gz.

6. grepped out relevant lines from the build log:

zgrep FAIL 20170330-1000-build.log.gz | grep -v 'Result: FAIL' | sed -e 's/^-> //' > 20170330-1000-fails.txt

7. Wrote second perl program (attached) called 'order-battle.pl' to record the order in which various modules *first* appeared in the 'fails' file and the total number of times each module was cited. Results are attached as 'order-of-battle-20170330.txt'.

What is the "order of battle"? It's the order in which, as of today, we need to get new CPAN releases out so that down-river distros are no longer failing due to failures in their upstream dependencies.

For example, today David Golden prepared a new version of Sub::Uplevel -- the #1 distro in the order of battle. Once he releases that to CPAN, a tremendous number of downstream distros will have their prerequisites satisfied and -- assuming they don't have their own configure/build/test failures -- will become installable via this perl-5.26.0-friendly cpanm.

This approach is useful for me because I only have a laptop to work with. YMMV.

Thank you very much.
Jim Keenan

Attachment: get-upriver-distros.pl
Description: Perl program

  1  Sub::Uplevel                                           3
  2  Sub::Identify                                          6
  3  Devel::OverloadInfo                                    1
  4  Test::CleanNamespaces                                  1
  5  namespace::autoclean                                  48
  6  DateTime::TimeZone                                     8
  7  DateTime::Locale                                       4
  8  Test::Exception                                       50
  9  Moose::Util::TypeConstraints                          29
 10  Carp::Clan                                             3
 11  Sub::Exporter::ForMethods                              6
 12  Moose::Role                                           42
 13  Moose::Meta::TypeConstraint::Union                     1
 14  Moose                                                 69
 15  Moose::Exporter                                       13
 16  Moose::Meta::Role                                      1
 17  Test::Moose                                           12
 18  MooseX::Role::WithOverloading                          1
 19  Moose::Util                                           13
 20  Test::Warn                                            16
 21  MooseX::Role::Parameterized                            8
 22  Moose::Meta::Class                                     4
 23  Moose::Meta::Attribute                                 4
 24  Net::SSLeay                                            1
 25  IO::Socket::SSL                                        2
 26  DBI                                                    8
 27  PerlIO::utf8_strict                                    1
 28  SUPER                                                  1
 29  MooseX::Types                                         15
 30  MooseX::Types::Moose                                  17
 31  Mixin::Linewise::Readers                               5
 32  XML::NamespaceSupport                                  4
 33  XML::SAX::Base                                         3
 34  XML::SAX                                               3
 35  XML::SAX::Exception                                    1
 36  Clone                                                  7
 37  Mixin::Linewise::Writers                               1
 38  HTML::TreeBuilder                                      6
 39  HTTP::Server::Simple::CGI                              2
 40  CGI                                                    8
 41  Test::MockModule                                       2
 42  Log::Dispatch::Output                                  1
 43  XML::SAX::Expat                                        1
 44  Log::Dispatch                                          1
 45  Log::Dispatch::Screen                                  1
 46  Log::Dispatch::Syslog                                  1
 47  Log::Dispatch::File                                    1
 48  Log::Dispatch::Array                                   1
 49  MooseX::OneArgNew                                      1
 50  Role::Identifiable::HasIdent                           1
 51  Role::HasMessage                                       1
 52  Moose::Util::MetaRole                                  7
 53  Config::MVP::Reader                                    2
 54  Config::MVP::Reader::Findable::ByExtension             2
 55  Config::INI::Reader                                    2
 56  Config::MVP                                            2
 57  Tree::Simple::Visitor                                  1
 58  Tree::Simple                                           1
 59  DateTime::Locale::Base                                 1
 60  DateTime                                              25
 61  DateTime::Locale::FromData                             1
 62  PPI                                                   10
 63  PPI::Document                                          6
 64  Test::LeakTrace                                        4
 65  File::HomeDir                                          8
 66  LWP::Protocol::https                                   2
 67  Config::MVP::Section                                   1
 68  Config::MVP::Assembler::WithBundles                    2
 69  Config::MVP::Reader::Finder                            2
 70  CPAN::Uploader                                         1
 71  MooseX::Types::Perl                                    2
 72  Log::Dispatchouli                                      3
 73  Perl::PrereqScanner                                    2
 74  Config::MVP::Assembler                                 2
 75  Term::Encoding                                         1
 76  Config::MVP::Reader::INI                               2
 77  MooseX::SetOnce                                        1
 78  Pod::Eventual                                          1
 79  MooseX::LazyRequire                                    2
 80  Test::Most                                             4
 81  DateTime::Format::Strptime                             1
 82  Path::IsDev::Object                                    1
 83  Path::IsDev                                            2
 84  Task::Weaken                                          10
 85  Path::FindDev                                          1
 86  Mouse                                                  2
 87  Carp::Assert::More                                     1
 88  HTTP::Server::Simple                                   2
 89  WWW::Mechanize                                         1
 90  PPI::Document::Fragment                                1
 91  PPI::Dumper                                            1
 92  PPIx::Utilities::Statement                             1
 93  PPI::Token::Quote::Single                              1
 94  PPI::Token::Whitespace                                 1
 95  PPIx::Regexp                                           2
 96  PPI::Document::File                                    1
 97  PPIx::Utilities::Node                                  1
 98  PPI::Node                                              1
 99  Clone::PP                                              3
100  DateTime::Duration                                     1
101  List::SomeUtils::XS                                    1
102  List::SomeUtils                                        1
103  List::UtilsBy                                          2
104  Function::Fallback::CoreOrPP                           3
105  CGI::Cookie                                            1
106  Test::WWW::Mechanize                                   1
107  Data::Clean                                            1
108  Data::Sah::Normalize                                   8
109  Sah::Schema::rinci::function_meta                      2
110  Moose::Meta::TypeConstraint::Parameterizable           1
111  Moose::Meta::TypeConstraint                            3
112  Moose::Meta::TypeCoercion                              1
113  MooseX::Types::DateTime                                1
114  Devel::PartialDump                                     1
115  Module::Path::More                                     2
116  IPC::Run                                               2
117  IPC::System::Options                                   3
118  Nodejs::Util                                           1
119  Data::ModeMerge                                        1
120  Data::Sah::Resolve                                     2
121  lib::filter                                            2
122  Data::Sah::CoerceCommon                                1
123  Data::Sah::Coerce                                      1
124  Perinci::Sub::Util                                     7
125  Data::Sah                                              2
126  Perinci::Sub::Normalize                                9
127  Moose::Meta::Role::Attribute                           1
128  Pod::Eventual::Simple                                  2
129  Data::Sah::Util::Type                                  4
130  Data::Clean::JSON                                      2
131  Perinci::Sub::GetArgs::Array                           1
132  Data::Clean::FromJSON                                  1
133  Bit::Vector                                            1
134  Complete::Bash                                         6
135  Perinci::Sub::PropertyUtil                             1
136  Perinci::Object                                        4
137  Perinci::Sub::Property::arg::cmdline                   1
138  HTTP::Server::Simple::PSGI                             1
139  Hash::Merge::Simple                                    4
140  MIME::Charset                                          1
141  Complete::Getopt::Long                                 1
142  Perinci::Sub::GetArgs::Argv                            4
143  Perinci::Examples                                      5
144  MooseX::Types::Stringlike                              1
145  Perinci::Sub::Wrapper                                  1
146  Progress::Any                                          3
147  Perinci::Sub::Complete                                 2
148  Perinci::Access::Schemeless                            1
149  Perinci::Access::Perl                                  1
150  Module::CPANfile                                       1
151  PadWalker                                              2
152  Perinci::Examples::CLI                                 1
153  Perinci::Sub::ConvertArgs::Argv                        1
154  Progress::Any::Output                                  2
155  Perl::Critic::Utils                                    2
156  Perl::Critic                                           1
157  Perl::Critic::Violation                                1
158  Perinci::Sub::To::CLIDocData                           1
159  Perinci::Access                                        1
160  Perinci::CmdLine::Gen                                  1
161  Perinci::Examples::Tiny                                1
162  Config::IOD::Reader                                    1
163  Perinci::CmdLine::Util::Config                         1
164  Complete::Tcsh                                         1
165  Perinci::Access::Lite                                  1
166  Test::Perinci::CmdLine                                 1
167  Perinci::CmdLine::Help                                 1
168  Progress::Any::Output::TermProgressBarColor            1
169  Complete::Zsh                                          1
170  Complete::Fish                                         1
171  Pod::Elemental                                         3
172  Pod::Elemental::Selectors                              1
173  Pod::Elemental::Transformer::Nester                    1
174  Pod::Elemental::Element::Pod5::Ordinary                1
175  Pod::Elemental::Element::Pod5::Command                 2
176  Pod::Elemental::Element::Pod5::Region                  1
177  Pod::Elemental::Document                               1
178  Pod::Elemental::Types                                  2
179  Pod::Elemental::Element::Pod5::Verbatim                1
180  Pod::Elemental::Element::Nested                        1
181  Pod::Elemental::Transformer::Pod5                      2
182  Pod::Elemental::Transformer::Gatherer                  1
183  YAML::XS                                               3
184  ExtUtils::PkgConfig                                    4
185  Perinci::CmdLine::Lite                                 1
186  DateTime::Format::Builder                              5
187  metaclass                                              2
188  Test::Class                                            1
189  Moose::Meta::TypeConstraint::Role                      1
190  Moose::Exception                                       1
191  Devel::Caller                                          1
192  DateTime::Format::W3CDTF                               2
193  DateTime::Format::Mail                                 2
194  DBIx::ContextualFetch                                  1
195  Parse::RecDescent                                      3
196  IO::All                                                1
197  Inline                                                 1
198  Pegex                                                  1
199  Class::Trigger                                         1
200  Ima::DBI                                               1
201  MooseX::Types::Path::Class                             2
202  AnyEvent                                               2
203  Object::Pluggable                                      1
204  Cairo                                                  2
205  Glib                                                   2
206  POE::Component::Syndicator                             1
207  Pango                                                  1
208  Parse::Method::Signatures                              3
209  HTML::Template                                         1
210  PPI::Util                                              1
211  Data::Visitor::Callback                                2
212  Data::Visitor                                          1
213  Alien::wxWidgets                                       3
214  asa                                                    2
215  Class::Container                                       1
216  Dist::Zilla::Role::Plugin                              3
217  Test::Moose::More                                      2
218  ExtUtils::MakeMaker::CPANfile                          3
219  Dist::Zilla::Role::FilePruner                          2
220  Dist::Zilla::Role::PluginBundle                        1
221  Version::Next                                          1
222  Dist::Zilla::Plugin::GatherDir                         2
223  Dist::Zilla::Role::AfterMint                           1
224  Dist::Zilla::Role::AfterRelease                        2
225  Dist::Zilla::Role::VersionProvider                     1
226  Dist::Zilla::Role::GitConfig                           1
227  Dist::Zilla::Role::BeforeRelease                       2
228  Test::DZil                                             8
229  MooseX::Types::Path::Tiny                              2
230  Dist::Zilla::File::InMemory                            6
231  Dist::Zilla                                            6
232  Dist::Zilla::Plugin::Config::Git                       1
233  Dist::Zilla::Role::Releaser                            1
234  Dist::Zilla::Role::AfterBuild                          2
235  Dist::Zilla::Tester                                    3
236  Git::Wrapper                                           1
237  MooseX::Types::Common::String                          1
238  MooseX::Meta::TypeConstraint::Mooish                   1
239  List::AllUtils                                         1
240  DateTime::Set                                          2
241  Test::utf8                                             1
242  Pod::Elemental::PerlMunger                             1
243  Dist::Zilla::Role::FileMunger                          7
244  Pod::Weaver::Config::Assembler                         1
245  Dist::Zilla::Role::FileFinderUser                      5
246  Pod::Weaver                                            1
247  B::Utils                                               2
248  Perl::MinimumVersion                                   2
249  DBD::SQLite                                            3
250  DBIx::Class                                            2
251  SQL::Translator                                        1
252  Params::Classify                                       1
253  Meta::Builder                                          1
254  Class::Mix                                             1
255  Class::Accessor::Lite                                  2
256  HTTP::Parser::XS                                       1
257  HTML::Element                                          1
258  Date::Calc                                             1
259  Regexp::Common                                         2
260  Module::CPANTS::Analyse                                1
261  XML::LibXML                                            3
262  XML::Atom                                              1
263  XML::RSS                                               1
264  Feed::Find                                             1
265  DateTime::Event::Recurrence                            1
266  Catalyst::Runtime                                      2
267  Dist::Zilla::Util                                      2
268  Dist::Zilla::App::Command::authordeps                  1
269  Dist::Zilla::App::Tester                               1
270  System::Command                                        1
271  Template                                               3
272  Catalyst                                               2
273  Template::Timer                                        1
274  DateTime::Event::ICal                                  1
275  Unicode::GCString                                      1
276  Dist::Zilla::Dist::Builder                             2
277  Dist::Zilla::MVP::Assembler::Zilla                     1
278  Dist::Zilla::Chrome::Test                              1
279  Dist::Zilla::MVP::Section                              1
280  String::Print                                          2
281  Dist::Zilla::Role::Bootstrap                           1
282  Log::Report::Optional                                  1
283  HTML::TreeBuilder::XPath                               1
284  Context::Preserve                                      1
285  Parse::Method::Signatures::Param::Placeholder          2
286  Moose::Meta::Method                                    2
287  Parse::Method::Signatures::TypeConstraint              1
288  MooseX::Meta::TypeConstraint::ForceCoercion            1
289  MooseX::Types::Structured                              2
290  MooseX::Types::Util                                    1
291  Parse::Method::Signatures::Param::Named                1
292  Parse::Method::Signatures::Types                       1
293  MooseX::ConfigFromFile                                 1
294  Dist::Zilla::Role::PrereqSource                        3
295  Test::MinimumVersion                                   1
296  Dist::Zilla::Role::TextTemplate                        3
297  Dist::Zilla::Role::FileGatherer                        5
298  Hash::Merge                                            1
299  Data::Page                                             1
300  Locale::TextDomain                                     2
301  Data::Record                                           1
302  Text::LineFold                                         1
303  MooX::ConfigFromFile                                   1
304  Pod::Coverage::TrustPod                                2
305  DBICx::TestDatabase                                    1
306  MIME::Entity                                           1
307  Dist::Zilla::Plugin::Bootstrap::lib                    1
308  Dist::Zilla::Plugin::MetaConfig                        1
309  Sereal::Decoder                                        1
310  HTML::FormatText                                       1
311  MooseX::MethodAttributes                               1
312  MooseX::Traits::Pluggable                              1
313  Locale::Messages                                       1
314  Text::CSV                                              1
315  Text::Hogan::Compiler                                  1
316  Module::Info                                           1
317  Config::Onion                                          1
318  IO::Handle::Util                                       1
319  URI::Template                                          1
320  CGI::Expand                                            1
321  Any::Moose                                             1
322  ORLite                                                 1
323  Wx                                                     2
324  Test::API                                              1
325  ExtUtils::XSpp                                         1
326  DateTime::Format::ICal                                 1
327  DateTime::Format::Natural                              1
328  DateTime::Format::Flexible                             1
329  Pod::Elemental::Transformer                            1
330  Number::WithError                                      1
331  MooseX::Method::Signatures::Types                      1
332  MooseX::Method::Signatures::Meta::Method               1
333  MooseX::Method::Signatures                             1
334  Log::Report                                            2
335  SHARYANTO::Array::Util                                 1
336  XML::Compile::Tester                                   1
337  Class::Adapter                                         1
338  Class::Adapter::Builder                                1
339  Dist::Zilla::Role::PPI                                 2
340  Dist::Zilla::Role::PluginBundle::Easy                  1
341  Dist::Zilla::Role::FileWatcher                         1
342  Dist::Zilla::Role::MetaProvider                        2
343  MooseX::Types::URI                                     1

Attachment: order-battle.pl
Description: Perl program

Reply via email to