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
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
order-battle.pl
Description: Perl program