IMPORTANT! This article has retired, as it has been made obsolete by Cumulus VX. For a discussion on setting up development environment in Cumulus VX, read this community post.
The availability of Cumulus Linux for the ubiquitous x86 platform has facilitated the development of applications for Cumulus Linux. Cumulus Linux is a derivative of Debian Wheezy; however, improvements and modifications to libraries in Cumulus Linux can render applications built against stock Wheezy incompatible with Cumulus Linux. This article describes how to build a Debian Wheezy system that incorporates changes from Cumulus Linux in order to resolve dependencies when compiling binary applications for Cumulus Linux.
Scope of Coverage
This protocol may be needed for:
- Building binary applications that have dependencies on *.so libraries included with Cumulus Linux.
This protocol is probably not needed for:
- Applications written in interpreted languages such as python and perl.
This protocol is not intended to provide:
- Source-level access to Cumulus Linux. For such access, please see oss.cumulsnetworks.com
- Cumulus Linux "look and feel". This sole intent of this protocol is to resolve dependencies while compiling binary applications for Cumulus Linux.
This process involves building a Debian Wheezy 7.0.0 machine and then upgrading the system with binary packages from the Cumulus Linux repositories.
Install Debian Wheezy 7.0.0 using this iso. Select
nowhen prompted to
Use a network mirror?in order to prevent Debian updates from being applied during install.
If you prefer to build your own iso, the following references cover use of the jigdo toolkit.
Debian 7.0.0 x86-64 jigdo files (debian-7.0.0-amd64-CD-1.jigdo and debian-7.0.0-amd64-CD-1.template) are available here:
Run the attached
cl-dev.shas root to configure install Debian and Cumulus Linux apt sources then "upgrade" the Debian 7.0.0 system using binary packages from the Cumulus Linux repositories.
The following provides usage and operational details on the cl-dev.sh script.
The target distribution must be specified (cl-dev.sh accepts only one argument):
The Cumulus Linux repositories are pinned with priority 1001. This means that apt will downgrade to the Cumulus-provided version if a package is available. This is accomplished by setting the following in
Package: * Pin: release n="CumulusLinux-2.1*" Pin-Priority: 1001
Some packages excluded
Some Cumulus packages are excluded from installation, including the following:
- Packages with dependency / postinst issues (cl-basefiles)
- Packages in the addons component
- ASIC specific packages (switchd, bcm-modules)
If package installation fails on a particular package, that package can be excluded by appending the package name to the file
cl-dev.excludes, which is created in the same directory as the script on the first run.