Get rid of Path::Class ( that *does* feel good )
authorPeter Rabbitson <ribasushi@cpan.org>
Mon, 11 May 2015 10:39:39 +0000 (12:39 +0200)
committerPeter Rabbitson <ribasushi@cpan.org>
Wed, 2 Mar 2016 19:28:55 +0000 (20:28 +0100)
commite48635f7178f8527ec3cc230f1cf869e8876dc39
treed7c7b7aa1c91c7258603ebaed5de1d4dfc311ea1
parentaff5e9c14f7ad7453a4a2a7d04dc4e85fa0d661c
Get rid of Path::Class ( that *does* feel good )

This was a rather long journey (I've been meaning to do this since ~2013).
As everything else it turned out more complex than I anticipated. Notably
due to having to implement from semi-scratch things that a dev should usually
never worry about >:( Just look at the amount of stuff one can't reasonably
trust these days (pay attention to the comments):

 git show 5d54c117 | perl -ne 'print if 155..304' | less
 git show 358a3aa7 | perl -ne 'print if 407..453' | less

There is a tangible difference in the smoke times due to a leaner set of deps
(though not as big as one would hope... yet). Sample timings as follows:

for n in $(seq 26); do
  dbic_trv_diffable() {
    perl -0777 -n -E '
      print ( map { "$ENV{cur}: $_\n" } map { split /\r?\n/, $_ }
        $_ =~ /(^TRAVIS_PERL_VERSION.+)/m,
        $_ =~ / \QSetting environment variables\E .+? (?:\r?\n)+ (.+?) (?: \r?\n){2} /xms,
        $_ =~ /(^.*Configuration phase seems to have taken.*)/m,
      );
      say (
        $_ =~ /(^[^\n]*?List of loadable modules .+?)^[^\n]*?List of loadable modules/ms
      );
    '
  }
  x=$((112987257 + $n)) &&\
  y=$((113113497 + $n)) &&\
  echo -e "$x => $y\n========\n" &&\
  diff -U0 \
    <( wget -qO- s3.amazonaws.com/archive.travis-ci.org/jobs/$x/log.txt | \
        cur=$x dbic_trv_diffable )\
    <( wget -qO- s3.amazonaws.com/archive.travis-ci.org/jobs/$y/log.txt | \
        cur=$y dbic_trv_diffable )
done | less

P.S. The above is hideous, yes, but you can run it in your terminal *directly*
22 files changed:
Makefile.PL
examples/Schema/insertdb.pl
examples/Schema/testdb.pl
lib/DBIx/Class/InflateColumn/File.pm
lib/DBIx/Class/Optional/Dependencies.pm
lib/DBIx/Class/Storage/DBI.pm
maint/gen_sqlite_schema_files
maint/travis-ci_scripts/30_before_script.bash
script/dbicadmin
t/51threadnodb.t
t/52leaks.t
t/94versioning.t
t/admin/02ddl.t
t/inflate/file_column.t
t/lib/ANFANG.pm
t/lib/DBICTest.pm
t/lib/DBICTest/BaseSchema.pm
t/lib/DBICTest/Util.pm
t/storage/debug.t
t/storage/deploy.t
t/storage/txn.t
xt/dist/postdistdir/pod_footers.t