SlideShare a Scribd company logo
Make your CPAN
module static installable
Shoichi Kaji
Me
CPAN, github: skaji
Shoichi Kaji
Agenda
• Typical CPAN module installation
• Introduce static install
• Why do you adopt static install?
• DEMO
• How to make your CPAN module static installable
• Conclusion
Typical way
• This is a typical CPAN module installation
• Bundled Makefile.PL knows how to configure/build/test/install the
CPAN module
• So you don’t need any tools to install CPAN modules; this is good
• CPAN modules can do almost anything in Makefile.PL; this is powerful
wget http://www.cpan.org/.../Module-0.1.tar.gz
tar xzf Module-0.1.tar.gz
cd Module-0.1
perl Makefile.PL # or perl Build.PL
make
make test
make install
BTW
• Nowadays, a lot of people use CPAN clients,
such as cpanm to install CPAN modules
• If CPAN modules are not "complicated", then
CPAN clients easily expect how to configure/
build/test/install them
• … do we really need Makefile.PL?
Introduce static install
• Now we have the concept static install introduced by
Leon Timmermans (sorry if I am wrong)
• That is, if CPAN modules



- are not "complicated"

- set x_static_install 1 in their META.json



then CPAN clients may configure/build/test/install them
in the common way without executing Makefile.PL
• cpanm-menlo and cpm already support static install
Why do you adopt static
install?
• Fast

we don’t need to execute Makefile.PL, which
makes CPAN module installation much faster
• Simple

People can easily expect results (eg: which files are
installed and where)
• Safe

There is no place to execute arbitrary code during
configure/build/install steps
DEMO
https://gist.github.com/skaji/
24de4a819ca4a84b2018f5ee996ac52a
How to make your CPAN
module static installable
• First, check your CPAN modules are not
complicated
• pm files are in lib/
• executable files are in script/ (if any)
• prereqs are declared in META.json statically
• no xs file, no Module_pm.PL file
How to make your CPAN
module static installable
• Here I assume you use Minilla
• Modify toml.minil as follows
• Then your module is static install ready 😄
> minil build
> grep x_static_install META.json
"x_static_install" : 1
name = "Your-Module"
module_maker = "ModuleBuildTiny"
[Metadata]
x_static_install = 1
Conclusion
• CPAN ecosystem uses Makefile.PL/Build.PL to install
CPAN modules
• It is powerful, but often overly complicated
• Now we have the concept static install, which is much
simpler and faster
• To make CPAN modules static installable, set
x_static_install 1 in META.json
• Let’s make CPAN ecosystem simpler 👍
See also
• My blog post

http://blogs.perl.org/users/shoichi_kaji1/2017/03/
make-your-cpan-module-static-installable.html
• The spec of static install

https://github.com/Perl-Toolchain-Gang/cpan-static
• An implementation of static install in Menlo

https://github.com/miyagawa/cpanminus/pull/467

More Related Content

What's hot

"Framework Principal" pattern
"Framework Principal" pattern"Framework Principal" pattern
"Framework Principal" patternWO Community
 
Enabling Continuous Delivery
Enabling Continuous DeliveryEnabling Continuous Delivery
Enabling Continuous Delivery
Łukasz Szydło
 
Plug Ins For the People
Plug Ins For the PeoplePlug Ins For the People
Plug Ins For the People
Geoff Campbell
 
Developing Locally with WordPress: No More Cowboy Coding
Developing Locally with WordPress: No More Cowboy CodingDeveloping Locally with WordPress: No More Cowboy Coding
Developing Locally with WordPress: No More Cowboy Coding
Matt Banks
 
Unit Testing Asp.net and Asp.net MVC
Unit Testing Asp.net and Asp.net MVCUnit Testing Asp.net and Asp.net MVC
Unit Testing Asp.net and Asp.net MVC
Gil Zilberfeld
 
4 spring boot
4 spring boot4 spring boot
4 spring boot
Avitesh Kesharwani
 
Azug BE Session Nov 2018 Wim Van den Broeck
Azug BE Session Nov 2018 Wim Van den BroeckAzug BE Session Nov 2018 Wim Van den Broeck
Azug BE Session Nov 2018 Wim Van den Broeck
Wim Van den Broeck
 
Best practices for JavaScript RIAs
Best practices for JavaScript RIAsBest practices for JavaScript RIAs
Best practices for JavaScript RIAsCarlos Ble
 
Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)
Ivo Jansch
 
Pitfalls in Performance Testing AxxesCC 06/2015
Pitfalls in Performance Testing AxxesCC 06/2015Pitfalls in Performance Testing AxxesCC 06/2015
Pitfalls in Performance Testing AxxesCC 06/2015
Axxes IT Consultancy
 
Magento applications and modules functional testing
Magento applications and modules functional testingMagento applications and modules functional testing
Magento applications and modules functional testing
Neklo
 
Trunk-Based Development and Toggling
Trunk-Based Development and TogglingTrunk-Based Development and Toggling
Trunk-Based Development and Toggling
Bryan Liu
 
Continuous Integration using TFS
Continuous Integration using TFSContinuous Integration using TFS
Continuous Integration using TFS
Mohamed Samy
 
Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...
Peter Gfader
 
Custom coded projects
Custom coded projectsCustom coded projects
Custom coded projects
Marko Heijnen
 
Slim PHP when you don't need the kitchen sink
Slim PHP   when you don't need the kitchen sinkSlim PHP   when you don't need the kitchen sink
Slim PHP when you don't need the kitchen sink
Joe Ferguson
 
Continuous Delivery with TFS msbuild msdeploy
Continuous Delivery with TFS msbuild msdeployContinuous Delivery with TFS msbuild msdeploy
Continuous Delivery with TFS msbuild msdeploy
Peter Gfader
 
Work smart with Gutenberg - Fellyph Cintra
Work smart with Gutenberg - Fellyph CintraWork smart with Gutenberg - Fellyph Cintra
Work smart with Gutenberg - Fellyph Cintra
Fellyph Cintra
 
WordCamp, Cape Town 2017
WordCamp, Cape Town 2017WordCamp, Cape Town 2017
WordCamp, Cape Town 2017
Daine Mawer
 
Building Custom Visual Studio Team Service Build Tasks With VSTS DevOps Task SDK
Building Custom Visual Studio Team Service Build Tasks With VSTS DevOps Task SDKBuilding Custom Visual Studio Team Service Build Tasks With VSTS DevOps Task SDK
Building Custom Visual Studio Team Service Build Tasks With VSTS DevOps Task SDK
Kasun Kodagoda
 

What's hot (20)

"Framework Principal" pattern
"Framework Principal" pattern"Framework Principal" pattern
"Framework Principal" pattern
 
Enabling Continuous Delivery
Enabling Continuous DeliveryEnabling Continuous Delivery
Enabling Continuous Delivery
 
Plug Ins For the People
Plug Ins For the PeoplePlug Ins For the People
Plug Ins For the People
 
Developing Locally with WordPress: No More Cowboy Coding
Developing Locally with WordPress: No More Cowboy CodingDeveloping Locally with WordPress: No More Cowboy Coding
Developing Locally with WordPress: No More Cowboy Coding
 
Unit Testing Asp.net and Asp.net MVC
Unit Testing Asp.net and Asp.net MVCUnit Testing Asp.net and Asp.net MVC
Unit Testing Asp.net and Asp.net MVC
 
4 spring boot
4 spring boot4 spring boot
4 spring boot
 
Azug BE Session Nov 2018 Wim Van den Broeck
Azug BE Session Nov 2018 Wim Van den BroeckAzug BE Session Nov 2018 Wim Van den Broeck
Azug BE Session Nov 2018 Wim Van den Broeck
 
Best practices for JavaScript RIAs
Best practices for JavaScript RIAsBest practices for JavaScript RIAs
Best practices for JavaScript RIAs
 
Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)
 
Pitfalls in Performance Testing AxxesCC 06/2015
Pitfalls in Performance Testing AxxesCC 06/2015Pitfalls in Performance Testing AxxesCC 06/2015
Pitfalls in Performance Testing AxxesCC 06/2015
 
Magento applications and modules functional testing
Magento applications and modules functional testingMagento applications and modules functional testing
Magento applications and modules functional testing
 
Trunk-Based Development and Toggling
Trunk-Based Development and TogglingTrunk-Based Development and Toggling
Trunk-Based Development and Toggling
 
Continuous Integration using TFS
Continuous Integration using TFSContinuous Integration using TFS
Continuous Integration using TFS
 
Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...
 
Custom coded projects
Custom coded projectsCustom coded projects
Custom coded projects
 
Slim PHP when you don't need the kitchen sink
Slim PHP   when you don't need the kitchen sinkSlim PHP   when you don't need the kitchen sink
Slim PHP when you don't need the kitchen sink
 
Continuous Delivery with TFS msbuild msdeploy
Continuous Delivery with TFS msbuild msdeployContinuous Delivery with TFS msbuild msdeploy
Continuous Delivery with TFS msbuild msdeploy
 
Work smart with Gutenberg - Fellyph Cintra
Work smart with Gutenberg - Fellyph CintraWork smart with Gutenberg - Fellyph Cintra
Work smart with Gutenberg - Fellyph Cintra
 
WordCamp, Cape Town 2017
WordCamp, Cape Town 2017WordCamp, Cape Town 2017
WordCamp, Cape Town 2017
 
Building Custom Visual Studio Team Service Build Tasks With VSTS DevOps Task SDK
Building Custom Visual Studio Team Service Build Tasks With VSTS DevOps Task SDKBuilding Custom Visual Studio Team Service Build Tasks With VSTS DevOps Task SDK
Building Custom Visual Studio Team Service Build Tasks With VSTS DevOps Task SDK
 

Viewers also liked

2017年春のPerl
2017年春のPerl2017年春のPerl
2017年春のPerl
charsbar
 
Digikult 2017 - Fotogrammetri för nybörjare
Digikult 2017 - Fotogrammetri för nybörjareDigikult 2017 - Fotogrammetri för nybörjare
Digikult 2017 - Fotogrammetri för nybörjare
fred_ande
 
Le Darwinisme Digital
Le Darwinisme DigitalLe Darwinisme Digital
Le Darwinisme Digital
NBS System
 
5 Reasons A Cloud-Based Phone Saves You Money
5 Reasons A Cloud-Based Phone Saves You Money5 Reasons A Cloud-Based Phone Saves You Money
5 Reasons A Cloud-Based Phone Saves You Money
Tresta
 
Machine Learning/ Data Science: Boosting Predictive Analytics Model Performance
Machine Learning/ Data Science: Boosting Predictive Analytics Model PerformanceMachine Learning/ Data Science: Boosting Predictive Analytics Model Performance
Machine Learning/ Data Science: Boosting Predictive Analytics Model Performance
T. Scott Clendaniel
 
掲載されやすいプレスリリースの作り方
掲載されやすいプレスリリースの作り方掲載されやすいプレスリリースの作り方
掲載されやすいプレスリリースの作り方
Yu Matsui
 
Startup Pitch Decks
Startup Pitch DecksStartup Pitch Decks
Startup Pitch Decks
Steve Schlafman
 
フォントの選び方・使い方
フォントの選び方・使い方フォントの選び方・使い方
フォントの選び方・使い方
k maztani
 
Recent Change of cpm
Recent Change of cpmRecent Change of cpm
Recent Change of cpm
Shoichi Kaji
 
ELSA France "Teaching is us!"
ELSA France "Teaching is us!" ELSA France "Teaching is us!"
ELSA France "Teaching is us!"
Adrian Scarlett
 
Digital in 2017 Global Overview
Digital in 2017 Global OverviewDigital in 2017 Global Overview
Digital in 2017 Global Overview
We Are Social Singapore
 
End Your Security Nightmares with ePlus and Cisco
End Your Security Nightmares with ePlus and CiscoEnd Your Security Nightmares with ePlus and Cisco
End Your Security Nightmares with ePlus and Cisco
ePlus
 
Patterns For React Application Design
Patterns For React Application DesignPatterns For React Application Design
Patterns For React Application Design
Ian Thomas
 
The case to make Huntsville Weird(er) –TEDx Huntsville 2014
The case to make Huntsville Weird(er) –TEDx Huntsville 2014The case to make Huntsville Weird(er) –TEDx Huntsville 2014
The case to make Huntsville Weird(er) –TEDx Huntsville 2014
Antonio Montoya
 
Derechos Culturosos Panama 2016
Derechos Culturosos Panama 2016Derechos Culturosos Panama 2016
Derechos Culturosos Panama 2016
Kernel Open iLab
 
Errores que debes evitar en tu campaña publicitaria
Errores que debes evitar en tu campaña publicitariaErrores que debes evitar en tu campaña publicitaria
Errores que debes evitar en tu campaña publicitaria
Comercializadora Gane S.A. de C.V.
 
Ameopoema ediçao 0047 sp fanzinada abril 2017
Ameopoema ediçao 0047 sp fanzinada abril 2017Ameopoema ediçao 0047 sp fanzinada abril 2017
Ameopoema ediçao 0047 sp fanzinada abril 2017
AMEOPOEMA Editora
 
Faire face à la solitude du dirigeant
Faire face à la solitude du dirigeantFaire face à la solitude du dirigeant
Faire face à la solitude du dirigeant
Guillaume LEROY
 
Teelie Turner, Posts of the Week, March 20-26, 2017
Teelie Turner, Posts of the Week, March 20-26, 2017Teelie Turner, Posts of the Week, March 20-26, 2017
Teelie Turner, Posts of the Week, March 20-26, 2017
Teelie Turner
 
Nuevos avances terapeuticos en DM2. Visión desde 2015 hasta 2020
Nuevos avances terapeuticos en DM2. Visión desde 2015 hasta 2020Nuevos avances terapeuticos en DM2. Visión desde 2015 hasta 2020
Nuevos avances terapeuticos en DM2. Visión desde 2015 hasta 2020
CRISTOBAL MORALES PORTILLO
 

Viewers also liked (20)

2017年春のPerl
2017年春のPerl2017年春のPerl
2017年春のPerl
 
Digikult 2017 - Fotogrammetri för nybörjare
Digikult 2017 - Fotogrammetri för nybörjareDigikult 2017 - Fotogrammetri för nybörjare
Digikult 2017 - Fotogrammetri för nybörjare
 
Le Darwinisme Digital
Le Darwinisme DigitalLe Darwinisme Digital
Le Darwinisme Digital
 
5 Reasons A Cloud-Based Phone Saves You Money
5 Reasons A Cloud-Based Phone Saves You Money5 Reasons A Cloud-Based Phone Saves You Money
5 Reasons A Cloud-Based Phone Saves You Money
 
Machine Learning/ Data Science: Boosting Predictive Analytics Model Performance
Machine Learning/ Data Science: Boosting Predictive Analytics Model PerformanceMachine Learning/ Data Science: Boosting Predictive Analytics Model Performance
Machine Learning/ Data Science: Boosting Predictive Analytics Model Performance
 
掲載されやすいプレスリリースの作り方
掲載されやすいプレスリリースの作り方掲載されやすいプレスリリースの作り方
掲載されやすいプレスリリースの作り方
 
Startup Pitch Decks
Startup Pitch DecksStartup Pitch Decks
Startup Pitch Decks
 
フォントの選び方・使い方
フォントの選び方・使い方フォントの選び方・使い方
フォントの選び方・使い方
 
Recent Change of cpm
Recent Change of cpmRecent Change of cpm
Recent Change of cpm
 
ELSA France "Teaching is us!"
ELSA France "Teaching is us!" ELSA France "Teaching is us!"
ELSA France "Teaching is us!"
 
Digital in 2017 Global Overview
Digital in 2017 Global OverviewDigital in 2017 Global Overview
Digital in 2017 Global Overview
 
End Your Security Nightmares with ePlus and Cisco
End Your Security Nightmares with ePlus and CiscoEnd Your Security Nightmares with ePlus and Cisco
End Your Security Nightmares with ePlus and Cisco
 
Patterns For React Application Design
Patterns For React Application DesignPatterns For React Application Design
Patterns For React Application Design
 
The case to make Huntsville Weird(er) –TEDx Huntsville 2014
The case to make Huntsville Weird(er) –TEDx Huntsville 2014The case to make Huntsville Weird(er) –TEDx Huntsville 2014
The case to make Huntsville Weird(er) –TEDx Huntsville 2014
 
Derechos Culturosos Panama 2016
Derechos Culturosos Panama 2016Derechos Culturosos Panama 2016
Derechos Culturosos Panama 2016
 
Errores que debes evitar en tu campaña publicitaria
Errores que debes evitar en tu campaña publicitariaErrores que debes evitar en tu campaña publicitaria
Errores que debes evitar en tu campaña publicitaria
 
Ameopoema ediçao 0047 sp fanzinada abril 2017
Ameopoema ediçao 0047 sp fanzinada abril 2017Ameopoema ediçao 0047 sp fanzinada abril 2017
Ameopoema ediçao 0047 sp fanzinada abril 2017
 
Faire face à la solitude du dirigeant
Faire face à la solitude du dirigeantFaire face à la solitude du dirigeant
Faire face à la solitude du dirigeant
 
Teelie Turner, Posts of the Week, March 20-26, 2017
Teelie Turner, Posts of the Week, March 20-26, 2017Teelie Turner, Posts of the Week, March 20-26, 2017
Teelie Turner, Posts of the Week, March 20-26, 2017
 
Nuevos avances terapeuticos en DM2. Visión desde 2015 hasta 2020
Nuevos avances terapeuticos en DM2. Visión desde 2015 hasta 2020Nuevos avances terapeuticos en DM2. Visión desde 2015 hasta 2020
Nuevos avances terapeuticos en DM2. Visión desde 2015 hasta 2020
 

Similar to Make your CPAN module static installable

Continuous Integration at Mollie
Continuous Integration at MollieContinuous Integration at Mollie
Continuous Integration at Mollie
willemstuursma
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
Zahra Golmirzaei
 
Creating Perl modules with Dist::Zilla
Creating Perl modules with Dist::ZillaCreating Perl modules with Dist::Zilla
Creating Perl modules with Dist::Zilla
Mark Gardner
 
Test Driven Development & CI/CD
Test Driven Development & CI/CDTest Driven Development & CI/CD
Test Driven Development & CI/CD
Shanmuga S Muthu
 
Warsaw MuleSoft Meetup #6 - CI/CD
Warsaw MuleSoft Meetup  #6 - CI/CDWarsaw MuleSoft Meetup  #6 - CI/CD
Warsaw MuleSoft Meetup #6 - CI/CD
Patryk Bandurski
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce Apps
Daniel Stange
 
Continuous Integration Testing in Django
Continuous Integration Testing in DjangoContinuous Integration Testing in Django
Continuous Integration Testing in Django
Kevin Harvey
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
Miguel Zuniga
 
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPANWhat you need to remember when you upload to CPAN
What you need to remember when you upload to CPAN
charsbar
 
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015
hirokiky
 
SpringBoot
SpringBootSpringBoot
SpringBoot
Jaran Flaath
 
Symfony 2 under control
Symfony 2 under controlSymfony 2 under control
Symfony 2 under control
Max Romanovsky
 
Ansible module development 101
Ansible module development 101Ansible module development 101
Ansible module development 101
yfauser
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
Brian Ritchie
 
Adobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer IntroductionAdobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer Introduction
Yash Mody
 
CI CD OPS WHATHAVEYOU
CI CD OPS WHATHAVEYOUCI CD OPS WHATHAVEYOU
CI CD OPS WHATHAVEYOU
Hanokh Aloni
 
SharePoint Framework 101 (SPFx)
SharePoint Framework 101 (SPFx)SharePoint Framework 101 (SPFx)
SharePoint Framework 101 (SPFx)
Matthew J. Bailey , MCT
 
DevOps for DBAs
DevOps for DBAsDevOps for DBAs
DevOps for DBAs
Bjoern Rost
 
Why a new CPAN client cpm is fast
Why a new CPAN client cpm is fastWhy a new CPAN client cpm is fast
Why a new CPAN client cpm is fast
Shoichi Kaji
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
DevConFu
 

Similar to Make your CPAN module static installable (20)

Continuous Integration at Mollie
Continuous Integration at MollieContinuous Integration at Mollie
Continuous Integration at Mollie
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
 
Creating Perl modules with Dist::Zilla
Creating Perl modules with Dist::ZillaCreating Perl modules with Dist::Zilla
Creating Perl modules with Dist::Zilla
 
Test Driven Development & CI/CD
Test Driven Development & CI/CDTest Driven Development & CI/CD
Test Driven Development & CI/CD
 
Warsaw MuleSoft Meetup #6 - CI/CD
Warsaw MuleSoft Meetup  #6 - CI/CDWarsaw MuleSoft Meetup  #6 - CI/CD
Warsaw MuleSoft Meetup #6 - CI/CD
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce Apps
 
Continuous Integration Testing in Django
Continuous Integration Testing in DjangoContinuous Integration Testing in Django
Continuous Integration Testing in Django
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPANWhat you need to remember when you upload to CPAN
What you need to remember when you upload to CPAN
 
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015
 
SpringBoot
SpringBootSpringBoot
SpringBoot
 
Symfony 2 under control
Symfony 2 under controlSymfony 2 under control
Symfony 2 under control
 
Ansible module development 101
Ansible module development 101Ansible module development 101
Ansible module development 101
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
 
Adobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer IntroductionAdobe AEM CQ5 - Developer Introduction
Adobe AEM CQ5 - Developer Introduction
 
CI CD OPS WHATHAVEYOU
CI CD OPS WHATHAVEYOUCI CD OPS WHATHAVEYOU
CI CD OPS WHATHAVEYOU
 
SharePoint Framework 101 (SPFx)
SharePoint Framework 101 (SPFx)SharePoint Framework 101 (SPFx)
SharePoint Framework 101 (SPFx)
 
DevOps for DBAs
DevOps for DBAsDevOps for DBAs
DevOps for DBAs
 
Why a new CPAN client cpm is fast
Why a new CPAN client cpm is fastWhy a new CPAN client cpm is fast
Why a new CPAN client cpm is fast
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
 

Recently uploaded

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 

Recently uploaded (20)

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 

Make your CPAN module static installable

  • 1. Make your CPAN module static installable Shoichi Kaji
  • 3. Agenda • Typical CPAN module installation • Introduce static install • Why do you adopt static install? • DEMO • How to make your CPAN module static installable • Conclusion
  • 4. Typical way • This is a typical CPAN module installation • Bundled Makefile.PL knows how to configure/build/test/install the CPAN module • So you don’t need any tools to install CPAN modules; this is good • CPAN modules can do almost anything in Makefile.PL; this is powerful wget http://www.cpan.org/.../Module-0.1.tar.gz tar xzf Module-0.1.tar.gz cd Module-0.1 perl Makefile.PL # or perl Build.PL make make test make install
  • 5. BTW • Nowadays, a lot of people use CPAN clients, such as cpanm to install CPAN modules • If CPAN modules are not "complicated", then CPAN clients easily expect how to configure/ build/test/install them • … do we really need Makefile.PL?
  • 6. Introduce static install • Now we have the concept static install introduced by Leon Timmermans (sorry if I am wrong) • That is, if CPAN modules
 
 - are not "complicated"
 - set x_static_install 1 in their META.json
 
 then CPAN clients may configure/build/test/install them in the common way without executing Makefile.PL • cpanm-menlo and cpm already support static install
  • 7. Why do you adopt static install? • Fast
 we don’t need to execute Makefile.PL, which makes CPAN module installation much faster • Simple
 People can easily expect results (eg: which files are installed and where) • Safe
 There is no place to execute arbitrary code during configure/build/install steps
  • 9. How to make your CPAN module static installable • First, check your CPAN modules are not complicated • pm files are in lib/ • executable files are in script/ (if any) • prereqs are declared in META.json statically • no xs file, no Module_pm.PL file
  • 10. How to make your CPAN module static installable • Here I assume you use Minilla • Modify toml.minil as follows • Then your module is static install ready 😄 > minil build > grep x_static_install META.json "x_static_install" : 1 name = "Your-Module" module_maker = "ModuleBuildTiny" [Metadata] x_static_install = 1
  • 11. Conclusion • CPAN ecosystem uses Makefile.PL/Build.PL to install CPAN modules • It is powerful, but often overly complicated • Now we have the concept static install, which is much simpler and faster • To make CPAN modules static installable, set x_static_install 1 in META.json • Let’s make CPAN ecosystem simpler 👍
  • 12. See also • My blog post
 http://blogs.perl.org/users/shoichi_kaji1/2017/03/ make-your-cpan-module-static-installable.html • The spec of static install
 https://github.com/Perl-Toolchain-Gang/cpan-static • An implementation of static install in Menlo
 https://github.com/miyagawa/cpanminus/pull/467