Build files for RobotPy ipk packages
C Python Objective-C Makefile Shell C++

RobotPy RoboRIO Packages

This repository contains the build files used to build the RobotPy .ipk packages hosted at

Package Installation

Currently, we have the following binary packages available:

  • ATLAS-dev
  • libgfortran
  • python36
  • python36-dev

At the moment, the following packages have not been built, but will be added during the 2017 season:

  • mjpg-streamer (notes)
  • mjpg-streamer-cv
  • mjpg-streamer-py
  • opencv3
  • opencv3-dev
  • opencv3-java
  • python36-numpy
  • python36-opencv3

Additionally, the following packages are anticipated to be added:

  • robotpy-ctre
  • robotpy-cscore

We support online (RoboRIO connected to the internet) and offline installation of the packages.

Installing a package (online)

Create a .conf file in /etc/opkg (e.g. /etc/opkg/robotpy.conf) containing the following line:

src/gz robotpy

Then run opkg update. After you setup the opkg feed, you can run:

opkg install PACKAGENAME

Installing a package (offline)

You can use the RobotPy Installer Script to do offline opkg installs. First, download the package:

python3 download-opkg PACKAGENAME

Then, connect to the network with the RoboRIO, and install it:

python3 install-opkg PACKAGENAME

Building these packages yourself

Many of these packages are built directly on a roboRIO. Compiling them can eat up most of your RoboRIO's disk space, so you'll probably want to reimage it before using the RoboRIO in a competition.

Go into a directory and do this:

make ROBORIO=roborio-XXXX-frc.local all

Build Notes

  • You will almost certainly want to setup passwordless login using an SSH key, as the compile process uses SSH to login to the roborio multiple times.

  • Most of these packages can be compiled on a virtual machine, and the virtual machine won't run out of disk space or RAM quite so easily. See the roborio-vm repository for more details.

  • Some packages use a lot of RAM, and your best bet is to use a swap device to allow it to complete. A USB memory stick works great for this.

    • On a linux host use cfdisk to partition your stick
    • Use mkswap to initialize the space.
    • Mount it on the roborio by using swapon

When adding new packages:

  • Some packages have deeply recursive build functionality, if you have a weird segfault that occurs it might be because the process ran out of stack space (the default on the RoboRIO is 256k, whereas modern linux default to a few MB). In your build steps, you can set the stack size by executing ulimit -s 2048