uhal-pypi

uHAL PyPI Distribution

PyPI - Version PyPI - Python Versions

This project provides an easy way to install the uHAL Python API from the IPbus software via PyPI. This vastly simplies the installation, which is notoriously hard to get right especially with virtual environments.

Installation

The uHAL component can be installed via:

pip install uhal

Binary releases are available for Linux. Other platforms are not supported by IPbus.

Building ControlHub

While this project focuses on the install of the uHAL Python API, building the ControlHub is another challenge itself. However, since the uHAL part is now not required anymore, the installation can be done in an Erlang container.

First, the IPbus software repository needs to be cloned:

git clone --depth=1 -b v2.8.22 https://github.com/ipbus/ipbus-software.git

Then an Erlang container with the IPbus software mounted needs to be started via docker or podman:

docker run -v $(pwd)/ipbus-software:/ipbus-software -it erlang:26 /bin/bash

Inside the container, a build of the ControlHub can be achieved with the Set variable:

cd ipbus-software
make Set=controlhub

Finally after exiting the container, the ControlHub can be installed on the host:

cd ipbus-software
sudo make Set=controlhub install

Developer Notes

Adding new Python Versions

Since uHAL is a C++ library at its core, binaries for each Python version need to compiled separately. Thus if a new Python version is released, a new upload to PyPI is required. For this reason, and additional number is added to the IPbus version in meson.build which allows to create a new tag without needing a new IPbus version.

The new Python version needs to be added in pyproject.toml and .github/workflows/wheels.yml. Once a corresponding tag is created in the repository, a new version is uploaded to PyPI automatically.

Updating the IPbus Software

When updating the IPbus software, the version needs to updated manually in the following places:

Additionally it is worth checking if: