[RETIRED] Building a Development Environment for Cumulus Linux

Follow

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.

 


 

Summary

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.

Protocol

Protocol Overview

This process involves building a Debian Wheezy 7.0.0 machine and then upgrading the system with binary packages from the Cumulus Linux repositories.

Protocol Detail

  1. Install Debian Wheezy 7.0.0 using this iso. Select no when 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:

  2. Run the attached cl-dev.sh as 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.

cl-dev.sh details

The following provides usage and operational details on the cl-dev.sh script.

Target Distribution

The target distribution must be specified (cl-dev.sh accepts only one argument):

cl-dev.sh CumulusLinux-2.2

Apt pinning

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 /etc/apt/preferences.d/cumulus

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.

Have more questions? Submit a request

Comments

Powered by Zendesk