SlideShare a Scribd company logo
1 of 15
Download to read offline
Optimize build time for legacy code with the Conan
package manager
Florentin Picioroaga
IDS GmbH, Ettlingen, Germany
filo.rom@gmail.com
January 30, 2020
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 1 / 15
Overview
1 Motivation
2 Conan Package Manager
3 Requirements on legacy code to use Conan
4 Case study: IDS Software
Software structure changes
Build process
Benefits using Conan
Compile time optimization
Build time optimization
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 2 / 15
Motivation
Continuous Integration for legacy C++ Code
Fast feedback on the build
Transparency for the build results
Use easily the latest deliverables
Faster Daily Builds
Cleaner software architecture
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 3 / 15
Conan Package Manager
The open source, decentralized and multi-platform package
manager to create and share all your native binaries.
Full binaries management for any configuration: platform, compiler,
version, architectures
Fully automated dependency management: transitive dependencies,
conflicts detection, dependencies overriding, conditional dependencies
Decentralized client-server system
Python based: easy to update with PIP (Python Package Manager)
Great support
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 4 / 15
Requirements on legacy code to use Conan
Modular software structure
No cycles between software modules
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 5 / 15
Requirements on legacy code to use Conan
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 6 / 15
Case study IDS: Software structure changes
Separate module’s API:
increased developer’s
awareness on the
software architecture
module dependencies in
source files:
before:
#include <1.hpp>
after: #include <
module1/1.hpp>
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 7 / 15
Case study IDS: Software structure changes
Maintain module’s dependencies with Conan:
1 from conans import p y t h o n r e q u i r e s
2
3 base = p y t h o n r e q u i r e s ( ” i d s c o n a n b a s e /1.4 @ids / dev ” )
4 c o n f i g u r a t i o n = p y t h o n r e q u i r e s ( ” i d s c o n a n c o n f i g u r a t i o n /1.1 @ids /
dev ” )
5
6
7 c l a s s L i b i d s t r a c e C o n a n ( base . Idsconanbase ) :
8 # package i n f o r m a t i o n
9 name = ” l i b i d s t r a c e ”
10 v e r s i o n = c o n f i g u r a t i o n . g e t v e r s i o n ()
11 s e t t i n g s = ” os ” , ” c o m p i l e r ” , ” b u i l d t y p e ” , ” arch ”
12 package type = ” b u i l d ”
13
14 # package dependencies
15 def r e q u i r e m e n t s ( s e l f ) :
16 s e l f . add dependency ( ” l i b i d s b a s i s ” )
17 s e l f . add dependency ( ” l i b i d s c r w ” )
18 s e l f . add dependency ( ” l i b i d s o s ” )
19 s e l f . add 3rdparty dependency ( ” v l d ” , ” 2 . 2 . 3 ” )
20 s e l f . add 3rdparty dependency ( ” r w t o o l s ” , ” 5.0 ” )
21 s e l f . add 3rdparty dependency ( ” boost ” , ” 1.69 ” )
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 8 / 15
Case study IDS: Build process
Use case: developer working in a module.
Make
checkout entire code base
build all modules
for source code change
build module
Conan
checkout module
for source code change
Conan install dependencies
build the module
Conan export binary package
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 9 / 15
Case study IDS: Build process
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 10 / 15
Benefits using Conan
build anytime any software module
easy to work in parallel for different features: maintenance costs per
source tree are minimum
easy to setup CI, module dependencies now available in Conan
use easily the latest deliverables
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 11 / 15
Case study IDS: Compile time optimization
1 use of precompiled headers
2 code generators update only files that changed
3 optimize the order of include directories, network access is expensive
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 12 / 15
Case study IDS: Build time optimization
IDS software: 348 modules, 7674 object files
Operation Before With Conan
DailyBuild 4:30h 2:30h
First build on module 2h 5-30min
Commit buildable? next day in avg<30min
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 13 / 15
References
References:
Conan: https://conan.io/
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 14 / 15
Thanks and see you soon!
Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 15 / 15

More Related Content

Similar to Optimization of the build times using Conan

Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015Windows Developer
 
Apiomat in 3 minutes
Apiomat in 3 minutesApiomat in 3 minutes
Apiomat in 3 minutesapiomat
 
PyConPL 2017 - with python: security
PyConPL 2017 - with python: securityPyConPL 2017 - with python: security
PyConPL 2017 - with python: securityPiotr Dyba
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseVMware Tanzu
 
Florentin Picioroaga - C++ by choice
Florentin Picioroaga - C++ by choiceFlorentin Picioroaga - C++ by choice
Florentin Picioroaga - C++ by choiceOvidiu Farauanu
 
Research Data Management for Computational Science
Research Data Management for Computational ScienceResearch Data Management for Computational Science
Research Data Management for Computational Sciencesesrdm
 
Volunteer Computing using BOINC
Volunteer Computing using BOINCVolunteer Computing using BOINC
Volunteer Computing using BOINCPooyan Mehrparvar
 
License Plate Recognition System using Python and OpenCV
License Plate Recognition System using Python and OpenCVLicense Plate Recognition System using Python and OpenCV
License Plate Recognition System using Python and OpenCVVishal Polley
 
Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!Codemotion
 
Two-For-One Talk: Malware Analysis for Everyone
Two-For-One Talk: Malware Analysis for EveryoneTwo-For-One Talk: Malware Analysis for Everyone
Two-For-One Talk: Malware Analysis for EveryonePaul Melson
 
Why Pay for Open Source Linux? Avoid the Hidden Cost of DIY
Why Pay for Open Source Linux? Avoid the Hidden Cost of DIYWhy Pay for Open Source Linux? Avoid the Hidden Cost of DIY
Why Pay for Open Source Linux? Avoid the Hidden Cost of DIYEnterprise Management Associates
 
generate IP CORES
generate IP CORESgenerate IP CORES
generate IP CORESguest296013
 
Python_final_print_vison_academy_9822506209.pdf
Python_final_print_vison_academy_9822506209.pdfPython_final_print_vison_academy_9822506209.pdf
Python_final_print_vison_academy_9822506209.pdfVisionAcademyProfSac
 
Next Generation Vulnerability Assessment Using Datadog and Snyk
Next Generation Vulnerability Assessment Using Datadog and SnykNext Generation Vulnerability Assessment Using Datadog and Snyk
Next Generation Vulnerability Assessment Using Datadog and SnykDevOps.com
 
Release webinar architecture
Release webinar   architectureRelease webinar   architecture
Release webinar architectureBigData_Europe
 
Continuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon OttoContinuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon OttoPeter Bittner
 
Larson and toubro
Larson and toubroLarson and toubro
Larson and toubroanoopc1998
 

Similar to Optimization of the build times using Conan (20)

Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
 
Apiomat in 3 minutes
Apiomat in 3 minutesApiomat in 3 minutes
Apiomat in 3 minutes
 
PyConPL 2017 - with python: security
PyConPL 2017 - with python: securityPyConPL 2017 - with python: security
PyConPL 2017 - with python: security
 
Alvaro Denis Resume
Alvaro Denis ResumeAlvaro Denis Resume
Alvaro Denis Resume
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
 
Florentin Picioroaga - C++ by choice
Florentin Picioroaga - C++ by choiceFlorentin Picioroaga - C++ by choice
Florentin Picioroaga - C++ by choice
 
Deep Learning Edge
Deep Learning Edge Deep Learning Edge
Deep Learning Edge
 
Research Data Management for Computational Science
Research Data Management for Computational ScienceResearch Data Management for Computational Science
Research Data Management for Computational Science
 
Volunteer Computing using BOINC
Volunteer Computing using BOINCVolunteer Computing using BOINC
Volunteer Computing using BOINC
 
License Plate Recognition System using Python and OpenCV
License Plate Recognition System using Python and OpenCVLicense Plate Recognition System using Python and OpenCV
License Plate Recognition System using Python and OpenCV
 
Session 1 - c++ intro
Session   1 - c++ introSession   1 - c++ intro
Session 1 - c++ intro
 
Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!Lab Handson: Power your Creations with Intel Edison!
Lab Handson: Power your Creations with Intel Edison!
 
Two-For-One Talk: Malware Analysis for Everyone
Two-For-One Talk: Malware Analysis for EveryoneTwo-For-One Talk: Malware Analysis for Everyone
Two-For-One Talk: Malware Analysis for Everyone
 
Why Pay for Open Source Linux? Avoid the Hidden Cost of DIY
Why Pay for Open Source Linux? Avoid the Hidden Cost of DIYWhy Pay for Open Source Linux? Avoid the Hidden Cost of DIY
Why Pay for Open Source Linux? Avoid the Hidden Cost of DIY
 
generate IP CORES
generate IP CORESgenerate IP CORES
generate IP CORES
 
Python_final_print_vison_academy_9822506209.pdf
Python_final_print_vison_academy_9822506209.pdfPython_final_print_vison_academy_9822506209.pdf
Python_final_print_vison_academy_9822506209.pdf
 
Next Generation Vulnerability Assessment Using Datadog and Snyk
Next Generation Vulnerability Assessment Using Datadog and SnykNext Generation Vulnerability Assessment Using Datadog and Snyk
Next Generation Vulnerability Assessment Using Datadog and Snyk
 
Release webinar architecture
Release webinar   architectureRelease webinar   architecture
Release webinar architecture
 
Continuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon OttoContinuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon Otto
 
Larson and toubro
Larson and toubroLarson and toubro
Larson and toubro
 

More from Ovidiu Farauanu

Back in Business with C++
Back in Business with C++Back in Business with C++
Back in Business with C++Ovidiu Farauanu
 
Distributed Cache, bridging C++ to new technologies (Hazelcast)
Distributed Cache, bridging C++ to new technologies (Hazelcast)Distributed Cache, bridging C++ to new technologies (Hazelcast)
Distributed Cache, bridging C++ to new technologies (Hazelcast)Ovidiu Farauanu
 
Monadic Computations in C++14
Monadic Computations in C++14Monadic Computations in C++14
Monadic Computations in C++14Ovidiu Farauanu
 
Domain Specific Languages and C++ Code Generation
Domain Specific Languages and C++ Code GenerationDomain Specific Languages and C++ Code Generation
Domain Specific Languages and C++ Code GenerationOvidiu Farauanu
 
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Ovidiu Farauanu
 
High Order Function Computations in c++14 (C++ Dev Meetup Iasi)
High Order Function Computations in c++14 (C++ Dev Meetup Iasi)High Order Function Computations in c++14 (C++ Dev Meetup Iasi)
High Order Function Computations in c++14 (C++ Dev Meetup Iasi)Ovidiu Farauanu
 
Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)Ovidiu Farauanu
 

More from Ovidiu Farauanu (9)

Back in Business with C++
Back in Business with C++Back in Business with C++
Back in Business with C++
 
Interface Oxidation
Interface OxidationInterface Oxidation
Interface Oxidation
 
Bind me if you can
Bind me if you canBind me if you can
Bind me if you can
 
Distributed Cache, bridging C++ to new technologies (Hazelcast)
Distributed Cache, bridging C++ to new technologies (Hazelcast)Distributed Cache, bridging C++ to new technologies (Hazelcast)
Distributed Cache, bridging C++ to new technologies (Hazelcast)
 
Monadic Computations in C++14
Monadic Computations in C++14Monadic Computations in C++14
Monadic Computations in C++14
 
Domain Specific Languages and C++ Code Generation
Domain Specific Languages and C++ Code GenerationDomain Specific Languages and C++ Code Generation
Domain Specific Languages and C++ Code Generation
 
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
 
High Order Function Computations in c++14 (C++ Dev Meetup Iasi)
High Order Function Computations in c++14 (C++ Dev Meetup Iasi)High Order Function Computations in c++14 (C++ Dev Meetup Iasi)
High Order Function Computations in c++14 (C++ Dev Meetup Iasi)
 
Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)
 

Recently uploaded

Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfryanfarris8
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...software pro Development
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Recently uploaded (20)

Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 

Optimization of the build times using Conan

  • 1. Optimize build time for legacy code with the Conan package manager Florentin Picioroaga IDS GmbH, Ettlingen, Germany filo.rom@gmail.com January 30, 2020 Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 1 / 15
  • 2. Overview 1 Motivation 2 Conan Package Manager 3 Requirements on legacy code to use Conan 4 Case study: IDS Software Software structure changes Build process Benefits using Conan Compile time optimization Build time optimization Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 2 / 15
  • 3. Motivation Continuous Integration for legacy C++ Code Fast feedback on the build Transparency for the build results Use easily the latest deliverables Faster Daily Builds Cleaner software architecture Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 3 / 15
  • 4. Conan Package Manager The open source, decentralized and multi-platform package manager to create and share all your native binaries. Full binaries management for any configuration: platform, compiler, version, architectures Fully automated dependency management: transitive dependencies, conflicts detection, dependencies overriding, conditional dependencies Decentralized client-server system Python based: easy to update with PIP (Python Package Manager) Great support Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 4 / 15
  • 5. Requirements on legacy code to use Conan Modular software structure No cycles between software modules Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 5 / 15
  • 6. Requirements on legacy code to use Conan Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 6 / 15
  • 7. Case study IDS: Software structure changes Separate module’s API: increased developer’s awareness on the software architecture module dependencies in source files: before: #include <1.hpp> after: #include < module1/1.hpp> Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 7 / 15
  • 8. Case study IDS: Software structure changes Maintain module’s dependencies with Conan: 1 from conans import p y t h o n r e q u i r e s 2 3 base = p y t h o n r e q u i r e s ( ” i d s c o n a n b a s e /1.4 @ids / dev ” ) 4 c o n f i g u r a t i o n = p y t h o n r e q u i r e s ( ” i d s c o n a n c o n f i g u r a t i o n /1.1 @ids / dev ” ) 5 6 7 c l a s s L i b i d s t r a c e C o n a n ( base . Idsconanbase ) : 8 # package i n f o r m a t i o n 9 name = ” l i b i d s t r a c e ” 10 v e r s i o n = c o n f i g u r a t i o n . g e t v e r s i o n () 11 s e t t i n g s = ” os ” , ” c o m p i l e r ” , ” b u i l d t y p e ” , ” arch ” 12 package type = ” b u i l d ” 13 14 # package dependencies 15 def r e q u i r e m e n t s ( s e l f ) : 16 s e l f . add dependency ( ” l i b i d s b a s i s ” ) 17 s e l f . add dependency ( ” l i b i d s c r w ” ) 18 s e l f . add dependency ( ” l i b i d s o s ” ) 19 s e l f . add 3rdparty dependency ( ” v l d ” , ” 2 . 2 . 3 ” ) 20 s e l f . add 3rdparty dependency ( ” r w t o o l s ” , ” 5.0 ” ) 21 s e l f . add 3rdparty dependency ( ” boost ” , ” 1.69 ” ) Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 8 / 15
  • 9. Case study IDS: Build process Use case: developer working in a module. Make checkout entire code base build all modules for source code change build module Conan checkout module for source code change Conan install dependencies build the module Conan export binary package Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 9 / 15
  • 10. Case study IDS: Build process Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 10 / 15
  • 11. Benefits using Conan build anytime any software module easy to work in parallel for different features: maintenance costs per source tree are minimum easy to setup CI, module dependencies now available in Conan use easily the latest deliverables Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 11 / 15
  • 12. Case study IDS: Compile time optimization 1 use of precompiled headers 2 code generators update only files that changed 3 optimize the order of include directories, network access is expensive Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 12 / 15
  • 13. Case study IDS: Build time optimization IDS software: 348 modules, 7674 object files Operation Before With Conan DailyBuild 4:30h 2:30h First build on module 2h 5-30min Commit buildable? next day in avg<30min Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 13 / 15
  • 14. References References: Conan: https://conan.io/ Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 14 / 15
  • 15. Thanks and see you soon! Florentin Picioroaga (IDS GmbH) Build time optimization with Conan January 30, 2020 15 / 15