Fedora GNU/Linux distribution is using a custom repository structure for package sources called dist-git. This repository contains a recipe how to construct a binary package and a reference to archive with pristine upstream sources. Working with this repository is cumbersome and we are trying to modernize the workflow for Fedora maintainers. We are going to move the development efforts of packages to a repository which resembles upstream format. In order to automate manual tasks, we will need a tool which will translate source code between these two repository formats.
The goal of this thesis is to develop such a tool which is capable of transforming sources of a Fedora RPM package between the two repository formats: dist-git and upstream.
The transformation from upstream format to dist-git format works like this:
- The tool should produce an archive of the selected branch and make it available publicly so it can be downloaded.
- The build recipe (spec file) needs to be updated to reflect changes.
- Finally, the tool should produce cryptographically signed commits in the dist-git repository.
The scope of the diploma thesis:
- The thesis should contain a brief research phase where the student performs a current state of the art analysis and evaluates present automated workflows for package maintenance.
- The tool should accept two sets of inputs: a source repository and a branch, a target repository and a branch — it should then be capable of transforming the sources from the source repository to the target repository. This implies that both ways of transformation should be implemented.
- When doing the transformation, the tool needs extract build recipe (a spec file) from the upstream repository and place it in the root of the dist-git repository.
- The tool should be capable of performing a transformation from the upstream repository to extract a pristine archive (which corresponds to a public release of a project) and lay all additional commits on top of in a form of patch files. These files are will then be applied during a package build phase.