Skip to main content

f2r

Command line tool to create RPMs out of aliBuild output.

Prerequisites

  • aliBuild 1.16.0 or higher (writes .meta.json in the install directories)
  • Optional: To enable S3 support you need to create a config file under ~/.s3cfg, see CERN IT instructions
  • gem + fpm: yum install rubygems -y ; gem install fpm

Installation

To just install the tool: python3 -m pip install f2r

OR

Use flp-release-server role from system-configuration to fully provision a build server.

Quickstart

Build packages using aliBuild, eg:

aliBuild build O2Suite --defaults o2-dataflow --always-prefer-system

Then create RPMs providing the package and version as found under sw/<architecture>/:

f2r generate --package O2Suite --version latest-o2-dataflow

Validate created RPMs (this requires sudo):

f2r validate

Create YUM repo:

f2r repo

and sync it to S3:

f2r sync

CLI options

Simple run f2r -h to see all available options

Developers documentation

Software lifecycle

  • Make changes and merge MR when lint and tests pass
  • Bump version in pyproject.toml
  • Push a git tag matching the version: the release CI job builds the sdist and wheel with python3 -m build and uploads them to PyPI
  • Update build server using pip

Simple description of the logic

Creates tree of dependencies by recursively iterating over "alidist" recipes. It disables certain packages based on selected "defaults". It retrieves versioning information from the .meta.json file that aliBuild writes in each install directory (sw/<architecture>/<package>/<version>/.meta.json), which lists the direct runtime and build dependencies resolved for that build. Dependencies built by aliBuild are pinned to the exact RPM built from them (o2-<name> = <version>-<revision>.<os>), so installing a package pulls in the very builds it was linked against.

It is capable of generating "devel" RPMs. In such case, in addition to runtime dependencies, it also packs build dependencies, with the versions recorded in .meta.json.

A dependency listed in the recipe but not recorded in .meta.json was not built by aliBuild and is treated as a system dependency. Definitions in (devel|runtime).slc*.yaml translate system dependencies into a list of RPM packages.

Then, it uses fpm tool to generate RPMs.

When the requested top-level package is O2Suite, it additionally generates the dependency-free o2-flp-suite-buildinfo RPM, which ships /etc/o2.d/FLP_suite_alidist_revision with the full alidist commit SHA the suite was built from (taken from .meta.json, falling back to the alidist checkout HEAD). The RPM version is the commit's committer date (YYYYMMDDHHMM, UTC) and its release starts with the short SHA, so newer alidist revisions are dnf-visible upgrades and regeneration from the same revision is idempotent.

Development setup

cd flp-to-rpm
python3 -m venv env
source env/bin/activate
python3 -m pip install -e '.[dev]'

The editable install exposes the f2r command and picks up code changes without reinstalling.

Lint and unit tests

Run from the repository root:

ruff check .
ruff format --check .
python3 -m unittest discover tests

# Run a single test:
python3 -m unittest tests.testPackage.TestPackage.test_deps_with_versions

Release files for f2r 3.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for f2r 3.2.0
File Size Uploaded
f2r-3.2.0.tar.gz 31.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for f2r 3.2.0
File Interpreter ABI Platform
f2r-3.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 65.5 kB

Release files / f2r-3.2.0.tar.gz

Download URL f2r-3.2.0.tar.gz
Size 31.0 kB
Tags Source
SHA-256 checksum
How to use checksums
99f10e9bb615deeeb0dd632e1db9ddfce481beed62be60be8248dcd9484337f3
BLAKE2b-256 checksum
How to use checksums
586dca04a2c98c2801e67ca8440a4e21e2e816e9789ba897e466ab2e7089c717
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.14

Release files / f2r-3.2.0-py3-none-any.whl

Download URL f2r-3.2.0-py3-none-any.whl
Size 34.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dbb25816cd7d5e8eeff1039ea7676eeb84cc0eb42ba870297a99f5641a78a63a
BLAKE2b-256 checksum
How to use checksums
708449b0c238c7d554aa5600ddc1dbe0341928f9c549f551102c31753dd73496
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.14

Release history Release notifications | RSS feed

This release

3.2.0 This release

2 release files

3.1.0

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.13.0

2 release files

2.12.0

2 release files

2.11.0

2 release files

2.10.0

2 release files

2.9.0

2 release files

2.8.3

2 release files

2.8.2

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.0

1 release file

2.6.6

1 release file

2.6.5

1 release file

2.6.4

1 release file

2.6.3

2 release files

2.6.2

2 release files

2.6.1

2 release files

2.6.0

1 release file

2.5.1

2 release files

2.5.0

2 release files

2.4.13

1 release file

2.4.12

2 release files

2.4.11

2 release files

2.4.9

1 release file

2.4.8

2 release files

2.4.7

2 release files

2.4.6

2 release files

2.4.5

2 release files

2.4.4

2 release files

2.4.3

2 release files

2.4.2

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.6.0

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.0

2 release files

1.2.10

2 release files

1.2.9

2 release files

1.2.8

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.1.0

2 release files

1.0.7

2 release files

1.0.6

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page