README.md

Fedora KDE Update scripts

These scripts are used by the KDE SIG to mass-update KDE packages in Fedora.

IMPORTANT

Scripts verified to work:

  • clone_packages.py
  • update.py
  • build.py

clone_packages.py

Clones all KDE Frameworks 5, Plasma or Gear (sub groups like pim in progress) packages from Fedora distgit into current directory. The script will get a list of all relevant upstream modules from RELEASE_TOOLS_REPO and PROJECTS_API and clone their respective Fedora packages. Some upstream modules are blacklisted in the script as they are not packaged in Fedora right now.

In case of KDE Frameworks the script also checks their YAML files and will automatically skip Frameworks that are not released yet.

See clone_packages.py --help for details.

update.py

Designed to perform updates on rpms packages in a folder. In a typical situation, this script will be executed after triggering a clone_packages.py (refer to its docs for more information)

See update.py --help for details.

Examples

Typical execution:

~/fedora-scm/kde-update-scripts/update.py -v '5.26.90'
~/fedora-scm/kde-update-scripts/update.py -v '5.26.90' --upload

update_plasma5.py

Smarter version of update-kf5.sh. All values are passed as command line arguments, so there is no need to modify the script.

The script will update Version, Release and add a new changelog entry into the SPEC files. It will also download new source tarballs and upload them to Fedora look-aside cache (fedpkg new-sources), commit the new changes, merge to all release branches and push the changes to distgit. The script will preview the changes before every step and ask for confirmation to continue, so that it can be interrupted at any point when something goes wrong.

The script allows certain packages to be excluded from the update, and is also able to preserve/skip packages which are git snapshots, not stable releases.

See update-plasma5.py --help for details.

build.py

Smart script for generating chainbuilds. It analyzes dependencies in the SPEC files (by parsing BuildRequires) and creates the most optimal chainbuild groups for Koji or Copr.

See build.py --help for details.

tag.py

A script to mass-tag recently built packages. Pass it the source tag (like f22-kde), the destination tag (like f22-updates-candidate) and the version of the packages just built (to filter out other possible packages in the source tag). The script compares the packages against distgit clones in current working directory.

See tag.py --help for details.

Package.py

A module that interacts with fedpkg and parse and write RPM SPEC files. It's used by the scripts above to get current SPEC file, parse it, and then write it again with the changes applied (like new version number, changelog entry etc.). It can also create commits and push to distgit.

DependencyScanner.py

A module that can parse dependencies from CMake files and SPEC files, compare them and make sure that the SPEC file has up-to-date dependencies matching those described in the CMake file.