From Fedora Project Wiki
(Announcing the Change proposal)
(Change submitted to FESCo)
Line 15: Line 15:


== Current status ==
== Current status ==
[[Category:ChangeAnnounced]]
[[Category:ChangeReadyForFesco]]
[[Category:SelfContainedChange]]
[[Category:SelfContainedChange]]


Line 27: Line 27:
-->
-->
* [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/GIFJBZECXXQMHGOFCXYOYL5Z3RIM53WB/ devel thread]
* [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/GIFJBZECXXQMHGOFCXYOYL5Z3RIM53WB/ devel thread]
* FESCo issue: <will be assigned by the Wrangler>
* FESCo issue: [https://pagure.io/fesco/issue/2992 #2992]
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: <will be assigned by the Wrangler>
* Release notes tracker: <will be assigned by the Wrangler>
* Release notes tracker: <will be assigned by the Wrangler>

Revision as of 15:07, 3 May 2023

Lazarus repackaging

This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee.

Summary

Split the lazarus package (the Lazarus IDE for Free Pascal) into several sub-packages (built from the same spec file) and enable building the Lazarus Component Library for multiple widget sets, instead of just the default GTK2.

Owner


Current status

  • Targeted release: Fedora Linux 39
  • Last updated: 2023-05-03
  • devel thread
  • FESCo issue: #2992
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

The lazarus package will be split into multiple packages:

  • lazarus-doc - documentation
  • lazarus-ide - the IDE itself
  • lazarus-lcl - base package for the LCL (Lazarus Component Library), containing common LCL parts
  • lazarus-lcl-nogui - components for building non-graphical applications
  • lazarus-lcl-gtk - components for building programs using the GTK2 widget library
  • lazarus-tools - command-line tools shipped with Lazarus, e.g. lazbuild

The lazarus package will become a metapackage - it will not contain any files itself, instead pulling in all the packages mentioned above.

Several new packages will also be introduced:

  • lazarus-lcl-gtk3 - support for building programs using the GTK3 widget library
  • lazarus-lcl-qt - ditto, for Qt4
  • lazarus-lcl-qt5 - ditto, for Qt5


Benefit to Fedora

Currently, Lazarus in Fedora only supports building programs with the GTK2 widget set. With this change, Lazarus will gain support for additional widget sets, allowing users to build their applications using GTK3, Qt4 and Qt5.

Maintainers of packages depending on Lazarus can switch from BuildRequiring lazarus to the following set:

  • lazarus-lcl-nogui (may not be needed, depending on the program)
  • lazarus-lcl-gtk2 (or a different widget set, if the maintainer so wishes)
  • lazarus-tools

This minimal package set is about ~60MiB smaller than the current Lazarus package. This should make builds slightly faster.

Scope

  • Proposal owners:
    • Edit lazarus.spec as required and rebuild the package, preferably before the Mass Rebuild.
  • Other developers: No action required.
  • Release engineering: No action required.
  • Policies and guidelines: N/A (not needed for this Change)
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Objectives: N/A


Upgrade/compatibility impact

When upgrading Fedora 39, users who have the lazarus package installed should see the following sub-packages pulled in during the process:

  • lazarus-doc
  • lazarus-ide
  • lazarus-lcl
  • lazarus-lcl-nogui
  • lazarus-lcl-gtk2
  • lazarus-tools

This set of packages should provide the same files and functionality as the current monolithic lazarus package.

How To Test

A copr repository has been created where users can test out the modified package: copr/suve/lazarus-split.

User Experience

For users not interested in different widget sets, this Change should not affect their experience. Those wanting to build their programs using GTK3, Qt4 or Qt5 will gain the ability to do so.

Dependencies

None.

Contingency Plan

Worst case scenario - give up, revert to an old version of lazarus.spec and rebuild the package.

Documentation

N/A (not a System Wide Change)

Release Notes

The lazarus package has been split into multiple sub-packages. Apart from GTK2, the IDE now supports building programs using the GTK3, Qt4 and Qt5 widget sets - available by installing lazarus-lcl-* packages.