Developer Guide

exaslpm is a tool for installing packages from different source channels using different installers like apt, pip, conda, etc… This document explains internals of this tool.

Preparation

Get the environment up and running.

Requirements

Python >= 3.10
Poetry >= 2.1.0
Docker (for running integration tests)

Install Poetry

sudo apt install python3-poetry

Install dependencies

poetry install

Creating a Standalone Executable

A standalone executable for linux environment can be created as follows. It will be created under dist folder.

poetry run -- nox -s build-standalone-binary -- --executable-name "exaslpm"

Creating a Release

Prerequisites

  • Change log needs to be up to date

  • unreleased change log version needs to be up-to-date

  • Release tag needs to match package

    For Example:
    • Tag: 0.4.0

    • `poetry version -s`: 0.4.0

Preparing the Release

Run the following nox task in order to prepare the changelog.

poetry run -- nox -s release:prepare

Triggering the Release

In order to trigger a release a new tag must be pushed to Github.

poetry run -- nox -s release:trigger

What to do if the release failed?

The release failed during pre-release checks

  1. Delete the local tag

    git tag -d x.y.z
    
  2. Delete the remote tag

    git push --delete origin x.y.z
    
  3. Fix the issue(s) which lead to the failing checks

  4. Start the release process from the beginning

One of the release steps failed (Partial Release)

  1. Check the Github action/workflow to see which steps failed

  2. Finish or redo the failed release steps manually

Note

Example

Scenario: Publishing of the release on Github was successfully but during the PyPi release, the upload step got interrupted.

Solution: Manually push the package to PyPi

Running Tests

You can execute all tests in a single file with the following command:

poetry run -- nox -s test:unit -- --coverage
poetry run -- nox -s test:integration