"hello world"
article in Tech programming

PERL CPAN packaging notes

PERL!
PAUSE Your duties, the basics, traps in the The [Perl programming] Authors Upload Server /w [andk/pause].
perlnewmod - perldoc.perl.org - read, all the links, lots of links.

PrePAN - Social Reviewing for Perl Modules - announce your ideas and intentions for feedback, the earlier the better.


neilb.org - The good, the bad, and the beautiful I broke Perl::MinimumVersion, sorry
Creating a Padre plugin and uploading it to CPAN in 7 simple steps
Use Travis (and more) - so much “assumed knowledge” in Perl. every Perler should know about.


CPAN Days

16th August is a Saturday this year (2014). Will you be releasing some code for public consumption on this day?
The ghost of CPAN Days past | NeilB [blogs.perl.org]
CPAN Day is 16th August | NeilB [blogs.perl.org]


Dist::Zilla

Dist::Zilla - Maximum Overkill for CPAN Authors
Dist::Zilla haters, stop your whining | David Golden - interesting the title of dzil.org is: maximum overkill for CPAN authors. I agree, people like to complain. more helpful if their complaints come with code/suggestions of code change; otherwise noise. though when enough people make the same noise, it's less noise and more valuable feedback.
How to Run a Single Test via Dist::Zilla | Olaf Alders [blogs.perl.org] - dzil run prove -lv t/my-test.t or without XS(nobuild): dzil run --nobuild prove -lv t/my-test.t
KABLAMO Dist::Zilla::PluginBundle::DAGOLDEN is pretty awesome - KABLAMO - true, true.
Dist::Zilla as a Continuous Delivery Tool | Mikko Koivunalho [blogs.perl.org]


Dist::Inkt - yet another distribution builder - metacpan.org Dist::Zilla didn't have the prerequisite amount of crazy for Mr. Inkster. As such, Dist::Inkt is not so much a distribution builder, as it is a framework for writing your own distribution builder.


Module::Build || Build.PL

Module::Build - Build and install Perl modules - metacpan.org
Module::Build::Cookbook - Examples of Module::Build Usage - metacpan.org
Paying respect to Module::Build | David Golden


Alien modules

Alien::Base::Authoring - Authoring an Alien:: module - metacpan.org - C library via CPAN.


"10 Commandments" of Tiny Acme::Tiny

CPAN Testers

The goal of the CPAN Testers project (CPAN Testers) is to test as many CPAN packages as possible on as many platforms as possible. This provides valuable feedback to module authors and potential users to identify bugs or platform compatibility issues and improves the overall quality and value of CPAN.

CPAN Leaderboard
The Dashboard : CPAN Testers Statistics
All Time CPAN Testers Leaderboard : CPAN Testers Statistics
CPAN dependencies and test results checker
List: cpan-testers-discuss - lists.perl.org CPAN Testers Wiki:MailingList
metabase.cpantesters.org/tail/log.txt - The last 1000 reports as of now.


CPAN Kwalitee

CPAN::Changes Kwalitee Service
CPANTS CPANTS - Kwalitee "Kwalitee" is something that looks like quality, sounds like quality, but is not quite quality. 32 Kwalitee indicators, and 12 optional indicators as well.
cpancover.com - Coverage report


WARNING -- smoke testing is risky

It's public. You run a smoker; you are publishing your system configuration and personal identifiers for all to see. Your email address is public. Your system paths; published. People willing to run your code on their personal machines in their own time and dime, often under privileged permissions... Yes, being a cpan tester is quite a thing!
Smoke testing will download and run programs that other people have uploaded to CPAN. These programs could do anything to your system, including deleting everything on it. Do not run CPAN::Reporter::Smoker unless you are prepared to take these risks.

If you're smoking on a personal machine; not a vm or livecd; you are a trusting soul.

CPAN Testers Wiki Test During Install

CPAN testing || Task::CPAN::Reporter || CPAN::Reporter::Smoker || near-turnkey smoke testing

notest install Task::CPAN::Reporter
Becoming a CPAN Tester with CPANPLUS - Perl.com - "CPAN is a cultural mechanism." It is not an abstraction filled with code, but rather depends on people caring enough to share code, as well as sharing useful feedback in order to improve each other's code.
CPAN Testers Wiki: CPAN::Reporter::Smoker (Detailed Guide)
perl -MCPAN::Reporter::Smoker -e start

will start testing all CPAN distributions in reverse order of upload and will continue until interrupted with CTRL-C. Every 12 hours, it will restart itself, checking for new CPAN uploads before continuing testing older distributions.
CPAN::Reporter::Smoker::Safer - Turnkey smoking of installed distros - metacpan.org - wrapper around CPAN::Reporter::Smoker that will only test modules that you already have installed. It is "safer" because it's modules you've chose to use already, and not every random CPAN module.
perl -MCPAN::Reporter::Smoker::Safer -e start

Smoker::Safer showing "has invalid upload_date"?; 'start( safer=>{min_reports=>0, min_days_old=>0} )'

Barbie's How to be a CPAN tester Preparing for CPAN - a few lessons learned.
Ad-Infinitum
Don't loop endlessly for input
After two attempts use a default or bail out
Don't loop endlessly when system commands fail
Check that results don't include a 'usage' type string
Some options are not supported on all OSs
Alternatives
Ask the user
Look for ENV settings
Look for command line settings and/or arguments
Use defaults and skip if you fail to connect.
Check Environment

CPAN::YACSmoke - $ENV{AUTOMATED_TESTING} == 1
cpansmoke - $ENV{VISUAL} eq 'echo'
The selfish CPAN Tester - more reflection on Barbie's talk - Clearly the best value ... let the CPAN client automatically send out the test report.
Pen Drive Smoker HOWTO - machine without a hard drive (i.e. no risk of loosing data), booted from an out-of-the-box liveCD1, using a pen drive for persistent data (configuration, reports log).
How CPAN Testers helped me improve my module


perl -V is a nice thing to include with your report.
notest install Task::CPAN::Reporter (i was using CPAN::Reporter; this wasn't enough)
reload CPAN; o conf init test_report


Perl CPAN test metadata $ENV{AUTOMATED_TESTING}

Notes: A faster configuration for CPAN::Reporter - suggestion of using File transport and then using quite an incantation of x-perl-send-test-reports.


CPAN::YACSmoke

install CPAN::YACSmoke;yacsmoke.pl

YACSmoke uses CPANPLUS::Backend to download, extract, and test packages and send out the reports.
CPAN Testers Wiki:CPAN-YACSmoke Configuration
CPAN Testers Wiki:YACSmokePOE Smoking with POE - Smoking Blead Perl with POE::Component::CPAN::YACSmoke
minismoker --debug --perl /pathtoperl/bin/perl && we're smoking!



App::cpanminus::reporter

Call cpanm as you normally would cpanm App::cpanminus::reporter
garu/App-cpanminus-reporter - then call cpanm-reporter.
You can also use it to setup your cpanm-reporter --setup
"Error while sending this report, continuing with the next one..." you might try giving the verbose option a try... cpanm-reporter --force --verbose
"Can't verify SSL peers without knowing which Certificate Authorities to trust" try installing Mozilla::CA; if that isn't possible, disable verification of SSL peers set env PERL_LWP_SSL_VERIFY_HOSTNAME=0.


CPAN::Reporter ask defaults to no during smoke

I found that CPAN::Reporter::Smoker::Safer doesn't send reports when you request to ask for edits.


Metabase::Fact || Metabase-User-FullName is empty?

So you go through the o conf init_test_report, it asks you for an email address but doesn't request a name.
Here is an example report that is mine because it matches my guid in %userprofile%\.cpanreporter\metabase_id.json
[2014-07-19T18:02:17Z] [] [pass] [GARU/App-cpanminus-reporter-0.11.tar.gz] [MSWin32-x64-multi-thread] [perl-v5.18.2] [0616fd4a-6d2d-1014-8b89-fd56a694d5e7] [2014-07-19T18:02:17Z]
You will notice that the name is empty. If you checkout the logs, most people have their name and pauseid within this 'name' field. "Dave Horner (MRHORNER)" is what I was hoping to see...I wonder what I missed.
ambs: note that the pause ID on the tail log is user defined. In fact it is part of the “name” string (this is good to know!)
CPAN Testers Wiki: CPAN Metabase
I also attempted prepending a quoted name to the email address during init_test_report, this updated %userprofile%\.cpanreporter\config.ini but didn't update metabase_id.json to reflect the name given.

Then I tried using Metabase::User::Profile; but "Not a HASH reference at C:/strawberry/perl/site/lib/Metabase/Fact.pm line 274."
use Metabase::User::Profile;                                           
my $filename="$ENV{USERPROFILE}\\.cpanreporter\\metabase_id.json";     
print $filename;                                                       
my $profile = Metabase::User::Profile->load($filename);                
$profile->add( 'Metabase::User::FullName'=> 'Dave Horner (MRHORNER)' );
$profile->save($filename);                                             
$profile->close;                                                       
I did get on irc.perl.org#cpantesters-discuss; thanks ambs. maybe I need to email a mailinglist...cpan-testers-discuss.at.perl.org
--Sincerely unnamed and unassociated.
P.S. I wonder if there is a way to associate these reports by guid or email with pause id after the fact?


Finding your place in the leaderboards

the Leaderboard is currently only built once a day, so it may take 24 hours before you see any changes.
All Time CPAN Testers Leaderboard : CPAN Testers Statistics - find your name.
/logging: The CPAN Testers game


what do you like to smoke?

Task::Kensho Task::MojoliciousPlugins::PerlAcademy Task::Dancer Task::Plack


smoking from macosx

sudo perl -MCPAN::Reporter::Smoker::Safer -e 'start( safer=>{min_reports=>0, min_days_old=>0})'
the state of things; [darwin-thread-multi-2level] [perl-v5.16.2] getting a smoker up and running is not possible without the use of force.
sudo cpan
CPAN::Reporter: error loading Test::Reporter::Transport::Metabase. Please install the missing module or choose a different transport mechanism.
CPAN::Reporter: Test::Reporter: error from 'Test::Reporter::Transport::Metabase:'
fact submission failed: Can't verify SSL peers without knowing which Certificate Authorities to trust at /Library/Perl/5.16/Metabase/Client/Simple.pm line 100.
sudo cpanm IO::Socket::SSL
I did find that when doing a o conf init_test_report it asked me:
Would you like to run 'metabase-profile' now to create '/Users/dhorner/.cpanreporter/metabase_id.json'? [y] 
Running [/usr/local/bin/metabase-profile --output /Users/dhorner/.cpanreporter/metabase_id.json --email dave-at-thehorners.com --secret 266sd7ec]...
Enter full name:   
Writing profile to '/Users/dhorner/.cpanreporter/metabase_id.json'

right there!; is an empty name in the metabase_id.json created during install. I tried to answer yes and quickly somehow passed through.
once you create this; you need to overwrite it with a proper metabase_id.json, since the Metabase isn't concerned with edit.


smoking from mint 15

well here we have an issue because I didn't have the insecure libssl-dev installed, and it is no longer available. both SSL transports failed to install properly without openssl (no surprise). time for source install!
/usr/bin/ld: /usr/lib/libssl.a(s3_meth.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/lib/libssl.a: could not read symbols: Bad value
libssl.a: could not read symbols: Bad value...something about a -fPIC. read somewhere else I needed to add additional args to config: -fPIC no-gost no-shared; the usual make clean;make;make install
on mint the prefix happens to be /usr; I tried doing it without the export and passing the arguments to config, this did not seem to clear the error.
export CFLAGS="-fPIC no-gost no-shared"
./config --prefix=/usr -fPIC no-gost no-shared
alas, you will find you need -lz which means zlib; which getting the latest yields: "Compiler error reporting is too harsh for ./configure (perhaps remove -Werror)." and going back and running with '-m64 no-zlib' did not provide a solution for me...enough. maybe it's time to try the file transport?!
/usr/pw/apache/openssl/lib/libssl.a: could not read symbols: Bad value | impradeep.com

pumpking || Larry's lieutenants

Past, present, and future pumpkings deserve our praise, support, and thanks. All hail the great pumpkings!
The Value of a Pumpking - Modern Perl Programming - Sometimes they get to write code.
What is a pumpkin?
Pump King at Perl Design Patterns Wiki - replaces descriptive-yet-vague titles such as "release coordinator", "project manager", "comit team review leader", "user group coordinator", and so forth. good people.
perlhist - perldoc.perl.org - the keepers of the pumpkin.
shout out to Finnish Perl programmer, "master librarian" of CPAN. Jarkko Hietaniemi JHI


Naming things properly - still the hardest problem

The 'right' name for your CPAN distribution | NeilB [blogs.perl.org]


versioning - numbers which signify everything

version - search.cpan.org


Terminating on signal SIGBREAK(21)

Configuring T/TO/TODDR/IPC-Run-0.92.tar.gz with Makefile.PL
CPAN::Reporter: Makefile.PL result is 'pass', No errors.
Running make for T/TO/TODDR/IPC-Run-0.92.tar.gz
CPAN::Reporter: dmake result is 'pass', No errors.
  TODDR/IPC-Run-0.92.tar.gz
t/kill_kill.t ................ skipped: Temporarily ignoring test failure on Win32
t/parallel.t ................. skipped: Parallel tests are dangerous on MSWin32
t/pty.t ...................... skipped: IO::Pty not installed
t/signal.t ................... skipped: Skipping on Win32
Terminating on signal SIGBREAK(21)
Created: 2014-05-03 18:37:32 Modified: 2014-11-07 03:19:53
/root sections/
>peach custard pie
>linux
>windows
>programming
>random tech
>science
>research


moon and stars



My brain

Visible Dave Project


0, 1, 1, 2, 3, 5, 8, 13, 21, 34,...
xn = xn-1 + xn-2