SlideShare uma empresa Scribd logo
1 de 17
perlall

      do something with all my perls




Reini Urban / rurban        houston.pm, 2012
Design Goals

parallel perl installations as supported by Configure (or not).
no chdir or switching to other perls (better perlbrew)

/usr/local/bin/perl5.15.8
/usr/local/bin/perl5.14.2
/usr/local/bin/perl5.12.4
/usr/local/bin/perl5.10.1
/usr/local/bin/perl5.8.9
/usr/local/bin/perl5.8.8
/usr/local/bin/perl5.8.5
/usr/local/bin/perl5.8.4
/usr/local/bin/perl5.6.2
Design Goals

Build, maintain and test with a lot of perls, on a lot of machines.
Your private cpantesters framework.

Standardize feature names: DEBUGGING and threads.

Single file - scp to all remote vm's. Only 4 external modules -
self-installer independent on CPAN.
perlall                vs     perlbrew

Globally shared non-arch      Private non-arch - good for
modules                       usedevel testing

manual installation process   automatic bash installation
(root, sudo or non-sudo)

Not only build. Use it:       No parallel usage
 init cpan cpanm
 maketest makeinstall, ...

MSWin32, msys                 No MSWin32, what is msys?
Common tasks: setup + test + install

for p in 6.2 8.4 8.5 8.8 8.9 10.1 12.4 14.2 15.8
do
   perlall build 5.${p}; perlall build 5.${p}-nt
   perlall build 5.${p}d; perlall build 5.${p}d-nt
   perlall build 5.${p}-m
done                   # and wait ~2h

perlall list          # what failed?
perlall=5.15.* perlall cpanm -f --sudo YAML
perlall init          # installs e.g. Bundle::CPANReporter2
                         # wait and prompt for the next 2hrs

cd ~/Perl/B-Generate
perlall maketest
perlall makeinstall        # generate and upload cpanreports
Creating test reports

cd ~/Perl/B-Generate

perlall maketest               local

perlall testvm --all           and remote (vm or phys)


=> log.test-osx10.6.8-5.10.1d-nt, log.test-linuxmint1-
5.15.8d-nt, log.test-freebsd7.4-5.10.1, log.test-
cygwin1.7.10s_winxp-5.14.2d-nt, ... (> 50 logfiles)


$ ../B-C/store_rpt                save reports away
Working with test reports
$ ../B-C/status_upd -fqd

cygwin1.7.10s_winxp-5.14.2d-nt:
t/cc.t Failed tests: 10, 38, 46, 101
t/e_perlcc.t Failed tests: 22, 52

linuxmint1-5.14.2-m:
t/c_o1.t Failed test: 15
t/c_o2.t Failed test: 15
t/c_o3.t Failed test: 15
t/c_o4.t Failed test: 15
t/cc.t Failed test: 15
t/e_perlcc.t Failed tests: 53..54

linuxmint1-5.15.8d:

linuxmint1-5.15.8d-nt:
t/c_o1.t Failed test: 15
t/c_o2.t Failed test: 15
t/c_o3.t Failed test: 15
t/e_perlcc.t Failed tests: 53..54
Working with test reports
Download external cpanreports:

$ ../B-C/t/download-reports 1.43


And check all reports, yours and theirs:

$ ../B-C/status_upd -fqd t/reports/1.43

-fqd        fail only, quiet, no dump display (broken)


Reports are created by:
  make test TEST_VERBOSE=1 2>&1 | tee log.test
  git diff >> log.test
  perl -V >> log.test
Cfg and Shortcuts in ~/.perlall

.perlall is in bash format. source it from your .profile

env and alias

PERLALL_BUILDROOT=~/perl5/src
alias perl-git='cd /usr/src/perl/blead/perl-git'
# currently used perl (set by perlall)
alias p=perl5.15.8d-nt
Shortcuts in ~/.perlall
# some aliases suggestions
alias pb="p -Iblib/arch -Iblib/lib" # no -Mblib!
alias pmf="if [ -f Makefile.PL ]; then p Makefile.PL; else rm -rf _build; p Build.PL; fi"
alias pm='pmf && m'
alias ppan='p -S cpan'

alias m=make
alias mt='make -j4 test'
alias mi='mt && smi'
alias mtee='mt 2>&1 | tee log.test'
alias smi='sudo make install'

#set p alias from current Makefile
function ppm { p=$(perl -ane'print $F[2] if /^FULLPERL =/' Makefile); echo alias
p=$p; test -n "$p" && alias p=$p; }
alias pgrp='pgrep -fl perl'
Typical test session

alias pb="p -Iblib/arch -Iblib/lib"
alias pmf="if [ -f Makefile.PL ]; then p Makefile.PL; else rm -rf _build; p Build.PL; p
Build; fi"
alias pm='pmf && m'

$ pm                                               # make with your current perl
$ pb t/02failing_test.t                            # single test
$ pb -d t/02failing_test.t                         # debug it

$ mt                                               # test with this perl
$ perlall -m --nogit maketest                      # all major perls
perlall do

# who has no YAML?
perlall do -MYAML -e0

# install on older versions
perlall=5.8.* perlall cpanm -f -S YAML

# check memory leaks, with fresh make before
# use current p as $p    (pb not, sorry)
perlall make '-e1 && valgrind $p -Mblib test.pl'

perlall make does always a do, i.e $p $@
testvm

Need to setup every vm, with perlall of course. See INSTALL.
ssh-copy-id your .ssh key, adjust .profile or .bashrc.
Create the same layout as on the master for your work
modules.
ssh win mkdir -p Perl/MyModule
perlall testvm win centos5 freebsd10 --fork

If win is on a vm, then the vm is started/resumed. (kvm only so
far). Switched from vmware,xen,virtualbox to kvm.
With -j4 ensure that max. 4 vm's run concurrently. Memory and
IO pressure destabilizes the system, esp. with cgroups and 3.x
kernels.
TODO: Automated mingw/activeperl testing. ssh with cmd.exe?
New perl release
perl-git                       # cd to git srcdir
git co blead; git fetch        # get new tags
perl-root                      # cd to buildroot

# for testing
perlall build 5.15.8d
perlall build 5.15.8d-nt
# for benchmarking
perlall build 5.15.8-nt
# start CPAN update
perlall=5.15.8* perlall init
# how does it look like?
cd ~/Perl/MyModule
alias p=perl5.15.8d-nt
pm && mtee
Test blead
perl-git                               # cd to git srcdir
git co blead; git fetch                # get latest
perlall -v build bleadd-nt --link -Dcc=gcc-mp-4.7
=> /usr/local/bin/perl5.15.8d-nt@8129baca installed

  blead - magic version, --link   -Dmksymlinks to perl-git

perlall -v build bleadd-nt --link -Dcc=clang 
    -Dld=clang --as perl5.15.8d-nt-clang
...test error...
perlall -v build bleadd-nt 
    --as perl5.15.8d-nt-clang --install  # continue

perlall build bleadd-nt smoke-me/khw-tk # branch
=> perl5.15.8d-nt@khw-tk
Planned

perlall smoke -j4 bleadd-nt smoke-me/*

=> TODO: send smoke reports

perlall=5*[0-9]-nt perlall -m bench t/benchscript.t

=> TODO: stable Benchmark.pm (check load, wait until stable)

perlall cpan Devel::*Prof*

=> query CPAN for matching modules. metacpan not yet good
enough. CPAN is better
cpan App::perlall

cd ~/Perl
git clone https://github.com/rurban/App-perlall.git
cd App-perlall
perl Makefile.PL && make test install
cd ~/bin
ln -s ~/Perl/App-perlall/scripts/perlall

ln perlall perlall-maketest
ln perlall perlall-do
ln perlall perlall-cpan
ln perlall perlall-init

# See INSTALL

Mais conteúdo relacionado

Mais procurados

Adventures in infrastructure as code
Adventures in infrastructure as codeAdventures in infrastructure as code
Adventures in infrastructure as codeJulian Simpson
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshopZend Framework 1.8 workshop
Zend Framework 1.8 workshopNick Belhomme
 
Perl 5.14 for Pragmatists
Perl 5.14 for PragmatistsPerl 5.14 for Pragmatists
Perl 5.14 for PragmatistsRicardo Signes
 
Drupal and Varnish Reverse Proxy
Drupal and Varnish Reverse ProxyDrupal and Varnish Reverse Proxy
Drupal and Varnish Reverse ProxyVFXCode
 
Deploying and maintaining your software with RPM/APT
Deploying and maintaining your software with RPM/APTDeploying and maintaining your software with RPM/APT
Deploying and maintaining your software with RPM/APTJoshua Thijssen
 
Nodejs Performance Debug
Nodejs Performance DebugNodejs Performance Debug
Nodejs Performance DebugRafael Gonzaga
 
톰캣 #04-환경설정
톰캣 #04-환경설정톰캣 #04-환경설정
톰캣 #04-환경설정GyuSeok Lee
 
Lamp configuration u buntu 10.04
Lamp configuration   u buntu 10.04Lamp configuration   u buntu 10.04
Lamp configuration u buntu 10.04mikehie
 
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management toolAndrey Smirnov
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleStein Inge Morisbak
 
Teste de software Desafios e oportunidades no mundo da Virtualizacao, dos Con...
Teste de software Desafios e oportunidades no mundo da Virtualizacao, dos Con...Teste de software Desafios e oportunidades no mundo da Virtualizacao, dos Con...
Teste de software Desafios e oportunidades no mundo da Virtualizacao, dos Con...PotiLivre Sobrenome
 
キレイ会議 on Laravel
キレイ会議 on Laravelキレイ会議 on Laravel
キレイ会議 on LaravelNʎ Nkogues
 
How to inspect a RUNNING perl process
How to inspect a RUNNING perl processHow to inspect a RUNNING perl process
How to inspect a RUNNING perl processMasaaki HIROSE
 
Drupal and Open shift (and php)
Drupal and Open shift (and php)Drupal and Open shift (and php)
Drupal and Open shift (and php)Phase2
 
How to install squid proxy on server or how to install squid proxy on centos o
How to install squid proxy on server  or how to install squid proxy on centos oHow to install squid proxy on server  or how to install squid proxy on centos o
How to install squid proxy on server or how to install squid proxy on centos oProxiesforrent
 

Mais procurados (20)

Adventures in infrastructure as code
Adventures in infrastructure as codeAdventures in infrastructure as code
Adventures in infrastructure as code
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshopZend Framework 1.8 workshop
Zend Framework 1.8 workshop
 
The problem with Perl
The problem with PerlThe problem with Perl
The problem with Perl
 
Build & test Apache Hawq
Build & test Apache Hawq Build & test Apache Hawq
Build & test Apache Hawq
 
Perl 5.14 for Pragmatists
Perl 5.14 for PragmatistsPerl 5.14 for Pragmatists
Perl 5.14 for Pragmatists
 
Drupal and Varnish Reverse Proxy
Drupal and Varnish Reverse ProxyDrupal and Varnish Reverse Proxy
Drupal and Varnish Reverse Proxy
 
Deploying and maintaining your software with RPM/APT
Deploying and maintaining your software with RPM/APTDeploying and maintaining your software with RPM/APT
Deploying and maintaining your software with RPM/APT
 
Nodejs Performance Debug
Nodejs Performance DebugNodejs Performance Debug
Nodejs Performance Debug
 
톰캣 #04-환경설정
톰캣 #04-환경설정톰캣 #04-환경설정
톰캣 #04-환경설정
 
Lamp configuration u buntu 10.04
Lamp configuration   u buntu 10.04Lamp configuration   u buntu 10.04
Lamp configuration u buntu 10.04
 
Plenv and carton
Plenv and cartonPlenv and carton
Plenv and carton
 
taddm
taddmtaddm
taddm
 
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management tool
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
 
Teste de software Desafios e oportunidades no mundo da Virtualizacao, dos Con...
Teste de software Desafios e oportunidades no mundo da Virtualizacao, dos Con...Teste de software Desafios e oportunidades no mundo da Virtualizacao, dos Con...
Teste de software Desafios e oportunidades no mundo da Virtualizacao, dos Con...
 
キレイ会議 on Laravel
キレイ会議 on Laravelキレイ会議 on Laravel
キレイ会議 on Laravel
 
Docker: ao vivo e a cores
Docker: ao vivo e a coresDocker: ao vivo e a cores
Docker: ao vivo e a cores
 
How to inspect a RUNNING perl process
How to inspect a RUNNING perl processHow to inspect a RUNNING perl process
How to inspect a RUNNING perl process
 
Drupal and Open shift (and php)
Drupal and Open shift (and php)Drupal and Open shift (and php)
Drupal and Open shift (and php)
 
How to install squid proxy on server or how to install squid proxy on centos o
How to install squid proxy on server  or how to install squid proxy on centos oHow to install squid proxy on server  or how to install squid proxy on centos o
How to install squid proxy on server or how to install squid proxy on centos o
 

Semelhante a perlall

Ansible : what's ansible & use case by REX
Ansible :  what's ansible & use case by REXAnsible :  what's ansible & use case by REX
Ansible : what's ansible & use case by REXSaewoong Lee
 
[k8s] Kubernetes terminology (1).pdf
[k8s] Kubernetes terminology (1).pdf[k8s] Kubernetes terminology (1).pdf
[k8s] Kubernetes terminology (1).pdfFrederik Wouters
 
Perlの現在と未来 2010
Perlの現在と未来 2010Perlの現在と未来 2010
Perlの現在と未来 2010lestrrat
 
Bundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMBundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMAlexander Shopov
 
How I hack on puppet modules
How I hack on puppet modulesHow I hack on puppet modules
How I hack on puppet modulesKris Buytaert
 
30 Minutes To CPAN
30 Minutes To CPAN30 Minutes To CPAN
30 Minutes To CPANdaoswald
 
9 steps to install and configure postgre sql from source on linux
9 steps to install and configure postgre sql from source on linux9 steps to install and configure postgre sql from source on linux
9 steps to install and configure postgre sql from source on linuxchinkshady
 
Perl - laziness, impatience, hubris, and one liners
Perl - laziness, impatience, hubris, and one linersPerl - laziness, impatience, hubris, and one liners
Perl - laziness, impatience, hubris, and one linersKirk Kimmel
 
Oracle Release 12 E-Business Suite Patching Best Practices
Oracle Release 12 E-Business Suite Patching Best PracticesOracle Release 12 E-Business Suite Patching Best Practices
Oracle Release 12 E-Business Suite Patching Best PracticesScott Jenner
 
Perl in RPM-Land
Perl in RPM-LandPerl in RPM-Land
Perl in RPM-LandDave Cross
 
Perl In The Command Line
Perl In The Command LinePerl In The Command Line
Perl In The Command LineMarcos Rebelo
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabSoftware Guru
 

Semelhante a perlall (20)

Centos config
Centos configCentos config
Centos config
 
Perlbrew
PerlbrewPerlbrew
Perlbrew
 
Docker perl build
Docker perl buildDocker perl build
Docker perl build
 
Perl
PerlPerl
Perl
 
Ansible : what's ansible & use case by REX
Ansible :  what's ansible & use case by REXAnsible :  what's ansible & use case by REX
Ansible : what's ansible & use case by REX
 
[k8s] Kubernetes terminology (1).pdf
[k8s] Kubernetes terminology (1).pdf[k8s] Kubernetes terminology (1).pdf
[k8s] Kubernetes terminology (1).pdf
 
Perlの現在と未来 2010
Perlの現在と未来 2010Perlの現在と未来 2010
Perlの現在と未来 2010
 
Bundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMBundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPM
 
How I hack on puppet modules
How I hack on puppet modulesHow I hack on puppet modules
How I hack on puppet modules
 
Perl 20tips
Perl 20tipsPerl 20tips
Perl 20tips
 
Unit Testing Lots of Perl
Unit Testing Lots of PerlUnit Testing Lots of Perl
Unit Testing Lots of Perl
 
30 Minutes To CPAN
30 Minutes To CPAN30 Minutes To CPAN
30 Minutes To CPAN
 
Smoking docker
Smoking dockerSmoking docker
Smoking docker
 
9 steps to install and configure postgre sql from source on linux
9 steps to install and configure postgre sql from source on linux9 steps to install and configure postgre sql from source on linux
9 steps to install and configure postgre sql from source on linux
 
Perl - laziness, impatience, hubris, and one liners
Perl - laziness, impatience, hubris, and one linersPerl - laziness, impatience, hubris, and one liners
Perl - laziness, impatience, hubris, and one liners
 
Dev ops
Dev opsDev ops
Dev ops
 
Oracle Release 12 E-Business Suite Patching Best Practices
Oracle Release 12 E-Business Suite Patching Best PracticesOracle Release 12 E-Business Suite Patching Best Practices
Oracle Release 12 E-Business Suite Patching Best Practices
 
Perl in RPM-Land
Perl in RPM-LandPerl in RPM-Land
Perl in RPM-Land
 
Perl In The Command Line
Perl In The Command LinePerl In The Command Line
Perl In The Command Line
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con Gitlab
 

Último

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 

Último (20)

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 

perlall

  • 1. perlall do something with all my perls Reini Urban / rurban houston.pm, 2012
  • 2. Design Goals parallel perl installations as supported by Configure (or not). no chdir or switching to other perls (better perlbrew) /usr/local/bin/perl5.15.8 /usr/local/bin/perl5.14.2 /usr/local/bin/perl5.12.4 /usr/local/bin/perl5.10.1 /usr/local/bin/perl5.8.9 /usr/local/bin/perl5.8.8 /usr/local/bin/perl5.8.5 /usr/local/bin/perl5.8.4 /usr/local/bin/perl5.6.2
  • 3. Design Goals Build, maintain and test with a lot of perls, on a lot of machines. Your private cpantesters framework. Standardize feature names: DEBUGGING and threads. Single file - scp to all remote vm's. Only 4 external modules - self-installer independent on CPAN.
  • 4. perlall vs perlbrew Globally shared non-arch Private non-arch - good for modules usedevel testing manual installation process automatic bash installation (root, sudo or non-sudo) Not only build. Use it: No parallel usage init cpan cpanm maketest makeinstall, ... MSWin32, msys No MSWin32, what is msys?
  • 5. Common tasks: setup + test + install for p in 6.2 8.4 8.5 8.8 8.9 10.1 12.4 14.2 15.8 do perlall build 5.${p}; perlall build 5.${p}-nt perlall build 5.${p}d; perlall build 5.${p}d-nt perlall build 5.${p}-m done # and wait ~2h perlall list # what failed? perlall=5.15.* perlall cpanm -f --sudo YAML perlall init # installs e.g. Bundle::CPANReporter2 # wait and prompt for the next 2hrs cd ~/Perl/B-Generate perlall maketest perlall makeinstall # generate and upload cpanreports
  • 6. Creating test reports cd ~/Perl/B-Generate perlall maketest local perlall testvm --all and remote (vm or phys) => log.test-osx10.6.8-5.10.1d-nt, log.test-linuxmint1- 5.15.8d-nt, log.test-freebsd7.4-5.10.1, log.test- cygwin1.7.10s_winxp-5.14.2d-nt, ... (> 50 logfiles) $ ../B-C/store_rpt save reports away
  • 7. Working with test reports $ ../B-C/status_upd -fqd cygwin1.7.10s_winxp-5.14.2d-nt: t/cc.t Failed tests: 10, 38, 46, 101 t/e_perlcc.t Failed tests: 22, 52 linuxmint1-5.14.2-m: t/c_o1.t Failed test: 15 t/c_o2.t Failed test: 15 t/c_o3.t Failed test: 15 t/c_o4.t Failed test: 15 t/cc.t Failed test: 15 t/e_perlcc.t Failed tests: 53..54 linuxmint1-5.15.8d: linuxmint1-5.15.8d-nt: t/c_o1.t Failed test: 15 t/c_o2.t Failed test: 15 t/c_o3.t Failed test: 15 t/e_perlcc.t Failed tests: 53..54
  • 8. Working with test reports Download external cpanreports: $ ../B-C/t/download-reports 1.43 And check all reports, yours and theirs: $ ../B-C/status_upd -fqd t/reports/1.43 -fqd fail only, quiet, no dump display (broken) Reports are created by: make test TEST_VERBOSE=1 2>&1 | tee log.test git diff >> log.test perl -V >> log.test
  • 9. Cfg and Shortcuts in ~/.perlall .perlall is in bash format. source it from your .profile env and alias PERLALL_BUILDROOT=~/perl5/src alias perl-git='cd /usr/src/perl/blead/perl-git' # currently used perl (set by perlall) alias p=perl5.15.8d-nt
  • 10. Shortcuts in ~/.perlall # some aliases suggestions alias pb="p -Iblib/arch -Iblib/lib" # no -Mblib! alias pmf="if [ -f Makefile.PL ]; then p Makefile.PL; else rm -rf _build; p Build.PL; fi" alias pm='pmf && m' alias ppan='p -S cpan' alias m=make alias mt='make -j4 test' alias mi='mt && smi' alias mtee='mt 2>&1 | tee log.test' alias smi='sudo make install' #set p alias from current Makefile function ppm { p=$(perl -ane'print $F[2] if /^FULLPERL =/' Makefile); echo alias p=$p; test -n "$p" && alias p=$p; } alias pgrp='pgrep -fl perl'
  • 11. Typical test session alias pb="p -Iblib/arch -Iblib/lib" alias pmf="if [ -f Makefile.PL ]; then p Makefile.PL; else rm -rf _build; p Build.PL; p Build; fi" alias pm='pmf && m' $ pm # make with your current perl $ pb t/02failing_test.t # single test $ pb -d t/02failing_test.t # debug it $ mt # test with this perl $ perlall -m --nogit maketest # all major perls
  • 12. perlall do # who has no YAML? perlall do -MYAML -e0 # install on older versions perlall=5.8.* perlall cpanm -f -S YAML # check memory leaks, with fresh make before # use current p as $p (pb not, sorry) perlall make '-e1 && valgrind $p -Mblib test.pl' perlall make does always a do, i.e $p $@
  • 13. testvm Need to setup every vm, with perlall of course. See INSTALL. ssh-copy-id your .ssh key, adjust .profile or .bashrc. Create the same layout as on the master for your work modules. ssh win mkdir -p Perl/MyModule perlall testvm win centos5 freebsd10 --fork If win is on a vm, then the vm is started/resumed. (kvm only so far). Switched from vmware,xen,virtualbox to kvm. With -j4 ensure that max. 4 vm's run concurrently. Memory and IO pressure destabilizes the system, esp. with cgroups and 3.x kernels. TODO: Automated mingw/activeperl testing. ssh with cmd.exe?
  • 14. New perl release perl-git # cd to git srcdir git co blead; git fetch # get new tags perl-root # cd to buildroot # for testing perlall build 5.15.8d perlall build 5.15.8d-nt # for benchmarking perlall build 5.15.8-nt # start CPAN update perlall=5.15.8* perlall init # how does it look like? cd ~/Perl/MyModule alias p=perl5.15.8d-nt pm && mtee
  • 15. Test blead perl-git # cd to git srcdir git co blead; git fetch # get latest perlall -v build bleadd-nt --link -Dcc=gcc-mp-4.7 => /usr/local/bin/perl5.15.8d-nt@8129baca installed blead - magic version, --link -Dmksymlinks to perl-git perlall -v build bleadd-nt --link -Dcc=clang -Dld=clang --as perl5.15.8d-nt-clang ...test error... perlall -v build bleadd-nt --as perl5.15.8d-nt-clang --install # continue perlall build bleadd-nt smoke-me/khw-tk # branch => perl5.15.8d-nt@khw-tk
  • 16. Planned perlall smoke -j4 bleadd-nt smoke-me/* => TODO: send smoke reports perlall=5*[0-9]-nt perlall -m bench t/benchscript.t => TODO: stable Benchmark.pm (check load, wait until stable) perlall cpan Devel::*Prof* => query CPAN for matching modules. metacpan not yet good enough. CPAN is better
  • 17. cpan App::perlall cd ~/Perl git clone https://github.com/rurban/App-perlall.git cd App-perlall perl Makefile.PL && make test install cd ~/bin ln -s ~/Perl/App-perlall/scripts/perlall ln perlall perlall-maketest ln perlall perlall-do ln perlall perlall-cpan ln perlall perlall-init # See INSTALL