After adding in a few ENV flags in yesterday's post I better get back on track and fix the 16 test cases I broke in this post.
The thing I had to do was modify the 'Database::Accessor::Driver::Test', (remember this one? my DAD for testing), so it returned a 'Database::Accessor::Result' class and the was easy enough and in now looks like
In the previous article in this series we gave a general introduction to the distribution metadata which is included in releases as files META.json and/or META.yml. In this article I'll drill into more detail at one critical component of a distribution's metadata: dependencies, also known as prerequisites (usually shortened to "prereqs"). This is how you specify other CPAN modules that your distribution depends on.
This post is brought to you by Booking.com,
a platinum sponsor for the Perl Toolchain Summit.
Booking.com is one of the largest Perl shops in the world,
and so depends heavily on the toolchain.
Thank you to Booking.com for supporting the summit.
I recently released revision 2 of the [@Starter] plugin bundle for Dist::Zilla. This revision brings small improvements to the default behavior, as well as the option to set a different installer plugin. In order to use the new revision, you must set the option "revision = 2" when using the bundle.
Revision 2 uses [Pod2Readme] instead of [ReadmeAnyFromPod] to generate the text README file. [ReadmeAnyFromPod] is a great and flexible plugin, but [Pod2Readme] is much simpler for the specific purpose of generating a text README. For any additional README files in other formats, I still recommend using [ReadmeAnyFromPod].
This revision also sets the option "inherit_version" in [MetaProvides::Package] to 0 by default. This makes no difference if your distribution contains uniform module versions, or for modules which have no version (they are still marked as having the distribution version unless you set "inherit_missing" to 0 as well), but if you have modules with different versions hardcoded, this will reflect that in the "provides" metadata.
While trying to get some more of my modules ready for release, I've been doing
drive-by patches to CPAN modules that I used for various reasons. While I'm not
exactly enthused about throwing a patch with a testcase over the fence, I think
it's still far better to have the problem and solution in some bug tracker
somewhere than having it only on my hard drive.
Getting warning or debugging to fire off like the above may cause a good dela of trouble to some future programmer. Even in the best case scenario they still have to have edit the code and re-run it to see that SQL, not a good situation. As I see it I will have to make a few changes yet again to Accessor.pm.
I've been trying to track down some SQL issues with Tau Station and to be honest, I've never been terribly happy with the output from the DBIx::ClassDBIC_TRACE or the DBIDBI_TRACE. So I have something better.
Now that I've alienated half the crowd, here's the scoop. Perl6::Parser has a fairly extensive test suite, which I run on my laptop inside an Ubuntu 14.04 VM - it's the latest version I can find that supports seamless integration, though I'm considering completely dumping the GUI and going with just a few SSH connections.
But enough of that. Baseline Rakudo Perl 6 currently runs the Perl6::Parser test suite in 0.61s usr, 0.07s sys + 80s cusr time, 90 wallclock seconds, which is rather amazing considering how extensive and invasive the test suite is. After this one simple change, that time dropped from 90 wallclock seconds to 70 wallclock seconds.
If you look at Perl6::Parser::Factory at this version, you'll see a 'role Matchable', which is public and shouldn't be.
In yesterday's
post
I was playing about with the 'raw_query' sub in
Driver::DBI
and that lead me back into
Accessor.pm
to make a few changes there. You might remember I had this as a final result in Accessor.pm
Last week I introduced
the alienfile recipe system and we wrote a simple alienfile that provides the tool
xz and the library liblzma. I also showed how to test it using App::af. Today
we are going to take that alienfile and integrate it into a fully functional Alien
distribution.
The main motiviation for alienfile + Alien::Build was to separate the alien
detection and installer code from the perl installer code. (In fact your alienfile is fully
usable without any Perl installer at all; you can use your alienfile from a Perl script or Perl
module using Alien::Build directly).
For our Alien, we will be creating Alien-xz, and we will use Alien::Build::MM to
provide the thin layer of functionality needed between ExtUtils::MakeMaker (EUMM) and
Alien::Build. This is what our Makefile.PL should look like:
Well some Driver::DBI code today in the Moose-Pen.
Carrying on from my last Post where I had created the new sub 'raw_query' and had it testing nicely I started on my merry way to program the Driver::DBI module. Well I did not get very far along.
I started out with creating a get_sql sub that the 'raw_query' would call, but then quickly realized that that would be a little redundant as any time I needed just the SQL I could just call the 'raw_query' and save a sub. So I came up with this.
All CPAN releases (these days) include a metadata file which has information about the distribution. It can be used by tools like CPAN clients (when installing modules), but it's also helpful for other tool writers, and people analysing the structure of CPAN. The metadata file will be called META.yml or META.json, and recent releases often contain both.
In this blog post we'll introduce some of what's in the files and how they're used by CPAN clients.
This post is brought to you by FastMail, a gold sponsor for this year's Toolchain Summit, which is being held in Lyon, France in May. The summit is only possible with the support of companies like FastMail. We'll be doing a series of toolchain-related blog posts, to thank our sponsors.
I've been looking for a better way to access the public CPAN metadata in files such as 02packages.details.txt and 06perms.txt, for checking the module index and CPAN permissions. For the latter you can always sign into https://pause.perl.org but I found that to be inconvenient. So I wrote a simple app that caches these files, converts them into a SQLite database, and then serves query results. You can find the result here: http://cpanmeta.grinnz.com/ and the source on GitHub. If there's any other metadata files that you want to be searchable let me know in a comment or GitHub issue.
Starting where I left off in my last post I needed to figure out some way to get the raw query results back from Accessor.pm. I gave this a little though as there are a number of things to consider. First I never want to expose the underlying DAD to the end user of Accessor.pm, Second I have to make the name of call generic in the same way the CRUD calls are. Finally as I see this used largely for debugging it should return more than just a string.
To address the three above I started with an new sub called 'raw_query' ;
berrybrew, the Perlbrew for Windows has been updated.
The significant new feature is the ability to automatically fetch the available Perl instances using Strawberry's new JSON releases file. This does not happen every time you use available, as I didn't want to force a user to have to be connected to the Internet while using berrybrew. Instead, I added a new berrybrew fetch command that does the work.
Things to know:
we now only list the most recent point version of each major release (this may change in the future)
we list the 64bit, 32bit and the PDL version of each major release, where available (this may also change to include other versions, such as USE_LONG_DOUBLE etc)
upon the first fetch, if any of the currently installed instances are lower than the most recent point release per version, we register them as custom installs. This allows them to continue to be maintained by berrybrew, and don't fall off the map as orphaned instances
Toronto.pm is hosting a LWP Hack Night tomorrow (Thursday) evening @ 7 PM. If you're interested in attending in person or virtually, I've put together a getting started guide. You don't need to be in the know in order to participate. The sheer volume of open issues means that there is plenty of low hanging fruit.
My delivery of the Action Plan was one week later than I originally
expected to deliver it. The delay let me assess some of the big-picture
consistency issues, which led to proposal to remove 15 methods from IO::Handle
and to iron out naming and argument format for several other routines.
I still hope to complete all the code modifications prior to end of weekend of
April 15, so all of these can be included in the next Rakudo Star release. And
a week after, I plan to complete the grant.
Note: to minimize user impact, some of the changes may be included only in
6.d language, which will be available in 2017.04 release only if the user uses
use v6.d.PREVIEW pragma.