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

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Último (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

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