SlideShare a Scribd company logo
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 (20)

PPTX
Chapter 2: Basics of programming pyton programming
biniyamtiktok
 
PPTX
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Windows Developer
 
PDF
Apiomat in 3 minutes
apiomat
 
PPTX
PyConPL 2017 - with python: security
Piotr Dyba
 
PDF
Alvaro Denis Resume
Alvaro Denis Acosta Quesada
 
PDF
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
VMware Tanzu
 
PDF
Florentin Picioroaga - C++ by choice
Ovidiu Farauanu
 
PDF
Deep Learning Edge
Ganesan Narayanasamy
 
PDF
Research Data Management for Computational Science
sesrdm
 
PDF
Java Developers - What Lies Ahead in the AI era
Emily Jiang
 
PDF
Charlotte Gayton's OpenChain ISO 18974 Dissertation
HowardvanRooijen1
 
PPTX
Volunteer Computing using BOINC
Pooyan Mehrparvar
 
PDF
License Plate Recognition System using Python and OpenCV
Vishal Polley
 
PPTX
Session 1 - c++ intro
VijayaNagarajan5
 
PPTX
Lab Handson: Power your Creations with Intel Edison!
Codemotion
 
PPTX
Two-For-One Talk: Malware Analysis for Everyone
Paul Melson
 
PDF
Why Pay for Open Source Linux? Avoid the Hidden Cost of DIY
Enterprise Management Associates
 
PPT
generate IP CORES
guest296013
 
PDF
Python_final_print_vison_academy_9822506209.pdf
VisionAcademyProfSac
 
PDF
Next Generation Vulnerability Assessment Using Datadog and Snyk
DevOps.com
 
Chapter 2: Basics of programming pyton programming
biniyamtiktok
 
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Windows Developer
 
Apiomat in 3 minutes
apiomat
 
PyConPL 2017 - with python: security
Piotr Dyba
 
Alvaro Denis Resume
Alvaro Denis Acosta Quesada
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
VMware Tanzu
 
Florentin Picioroaga - C++ by choice
Ovidiu Farauanu
 
Deep Learning Edge
Ganesan Narayanasamy
 
Research Data Management for Computational Science
sesrdm
 
Java Developers - What Lies Ahead in the AI era
Emily Jiang
 
Charlotte Gayton's OpenChain ISO 18974 Dissertation
HowardvanRooijen1
 
Volunteer Computing using BOINC
Pooyan Mehrparvar
 
License Plate Recognition System using Python and OpenCV
Vishal Polley
 
Session 1 - c++ intro
VijayaNagarajan5
 
Lab Handson: Power your Creations with Intel Edison!
Codemotion
 
Two-For-One Talk: Malware Analysis for Everyone
Paul Melson
 
Why Pay for Open Source Linux? Avoid the Hidden Cost of DIY
Enterprise Management Associates
 
generate IP CORES
guest296013
 
Python_final_print_vison_academy_9822506209.pdf
VisionAcademyProfSac
 
Next Generation Vulnerability Assessment Using Datadog and Snyk
DevOps.com
 

More from Ovidiu Farauanu (12)

PDF
SIMD with C++ 26 by Alexandru Pentilescu
Ovidiu Farauanu
 
PDF
Introduction to C++20 Coroutines by Alex P
Ovidiu Farauanu
 
PDF
Interfacing C++ with Python to boost your legacy apps with Python interfaces
Ovidiu Farauanu
 
PDF
Back in Business with C++
Ovidiu Farauanu
 
PDF
Interface Oxidation
Ovidiu Farauanu
 
PDF
Bind me if you can
Ovidiu Farauanu
 
PDF
Distributed Cache, bridging C++ to new technologies (Hazelcast)
Ovidiu Farauanu
 
PPTX
Monadic Computations in C++14
Ovidiu Farauanu
 
PDF
Domain Specific Languages and C++ Code Generation
Ovidiu Farauanu
 
PDF
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Ovidiu Farauanu
 
PDF
High Order Function Computations in c++14 (C++ Dev Meetup Iasi)
Ovidiu Farauanu
 
PDF
Cap'n Proto (C++ Developer Meetup Iasi)
Ovidiu Farauanu
 
SIMD with C++ 26 by Alexandru Pentilescu
Ovidiu Farauanu
 
Introduction to C++20 Coroutines by Alex P
Ovidiu Farauanu
 
Interfacing C++ with Python to boost your legacy apps with Python interfaces
Ovidiu Farauanu
 
Back in Business with C++
Ovidiu Farauanu
 
Interface Oxidation
Ovidiu Farauanu
 
Bind me if you can
Ovidiu Farauanu
 
Distributed Cache, bridging C++ to new technologies (Hazelcast)
Ovidiu Farauanu
 
Monadic Computations in C++14
Ovidiu Farauanu
 
Domain Specific Languages and C++ Code Generation
Ovidiu Farauanu
 
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Ovidiu Farauanu
 
High Order Function Computations in c++14 (C++ Dev Meetup Iasi)
Ovidiu Farauanu
 
Cap'n Proto (C++ Developer Meetup Iasi)
Ovidiu Farauanu
 
Ad

Recently uploaded (20)

PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PDF
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
PDF
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Tally software_Introduction_Presentation
AditiBansal54083
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
Ad

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 fi[email protected] 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