Jump to content
Sign in to follow this  

Component Builder: an extensible system to build software organized as hierarchical reuse libraries

Recommended Posts


At Cirrus Logic, I'm responsible for creating applications and frameworks to improve the efficiency of our validation department and ultimately lower the cost of validation. In order to quickly and efficiently turn source into applications and frameworks for distribution, a build system was necessary to abstract away the conversion of source into the different types of deliverables (VIPackages, Executables, dlls, ect) consumed by my end users, as well as abstract away the build order of our hierarchical re

Many have undertaken to solve this problem. I don't claim to have created a silver bullet. But I do hope that the system I've put together (and am releasing as open source) will act as a starting point for you to extend and customize to meet your needs. I've endeavored to employ good software development principles including separation of concerns, and the SMoRES principles.


I'll be the first to volunteer that it isn't perfect and as always, our best software is constantly a work in progress. However, I believe the build system is at a stage to be at least moderately helpful to a handful of people in our community. 



At NIWeek 2018 I gave a presentation on the build system. You can find the pdf of the presentation here: https://event.crowdcompass.com/niweek2018/activity/rQM8g1QHz2 and I've attached the PDF of the presentation below.


The Application's UI

The UI is designed to guide someone through the build process, allowing them to select what components or exports they would like to build, if and how they would like to be notified about the build, auto submission options, and source code control. I've attached a small video titled "Build UI Demo.mp4" below.

UML and APIs

All UML and API documentation are included in the Word document per released zip file



Software Requirements

LabVIEW 2017

NI Application Builder

VI Package Manager Pro

Other dependencies are listed in the Instructions per zip file.


UML Overview

As of 1.4.0-58 the UML looks like:




Release Notes

1.4.0-85 (Component Builder 1.4.0-85.zip)

  1. This is a major refactor in the SCC API. I've modeled the p4 label with a new api. This release is primarily as an intermediary release. I intend on breaking SCC out of the component builder into its own separate component in the next release.

1.4.0-81 (Component Builder 1.4.0-81.zip)

  1. Created a "proxy" api for VI Package manager interactions. Sometimes the VI Package manager api would hang. So I now call by reference and will kill and restart VIPM if it doesn't respond in time. 


1.4.0-75 (Component Builder 1.4.0-75.zip )

  1. Fixed reference counting for executable builds. 


1.4.0-73 (Component Builder 1.4.0-73.zip)

  1. In the case where a user has specifically unchecked "auto increment", the build process will auto increment the build. Builds must be auto incremented. 
  2. I've released a new build of the container that has a minor bug fix.
  3. Added file utility tools to aid with using "net use" to move and copy files across the network.



1.4.0-59 (Component Builder 1.4.0-59.zip)

  1. Minor spelling error in component template: "componet".
  2. Added documentation for the Custom Install Step Launcher.
  3. Added build instructions for Custom Install Step Launcher.


1.4.0-58 (Component_Builder_1.4.0-58.zip)

  1. Added the ability to export NI-Source Distributions, NI-Executables, NI-Insatllers, and NSIS Installers
  2. Released a template component that exports an NI Package and VI Package including step by step instructions
  3. Released "Custom Install Step Launcher" to execute VIs as pre install, post install and post install all actions for NI Packages.
  4. Released comprehensive documentation included in the zip file.



  • Like 1

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Create New...

Important Information

By using this site, you agree to our Terms of Use.