public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Artur Frenszek-Iwicki <fedora@svgames.pl>
To: git-commits@fedoraproject.org
Subject: [rpms/lazarus] multiple-IDE-widgetsets: Update to v3.0
Date: Thu, 23 Jul 2026 08:18:17 GMT	[thread overview]
Message-ID: <178479469788.1.3665150257909354010.rpms-lazarus-cd5b6478457f@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/lazarus
Branch : multiple-IDE-widgetsets
Commit : cd5b6478457f41bf6a52ae6e1637697b6b1b1aa9
Author : Artur Frenszek-Iwicki <fedora@svgames.pl>
Date   : 2024-02-08T10:32:36+01:00
Stats  : +168/-69 in 5 file(s)
URL    : https://src.fedoraproject.org/rpms/lazarus/c/cd5b6478457f41bf6a52ae6e1637697b6b1b1aa9?branch=multiple-IDE-widgetsets

Log:
Update to v3.0

---
diff --git a/.gitignore b/.gitignore
index c9b145e..6e29f88 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,4 @@ lazarus-0.9.28-src.tar.bz2
 /lazarus-2.2.2-0.tar.gz
 /lazarus-2.2.4-0.tar.gz
 /lazarus-2.2.6-0.tar.gz
+/lazarus-3.0-0.tar.gz

diff --git a/0002-fix-GTK3-build-error.patch b/0002-fix-GTK3-build-error.patch
deleted file mode 100644
index de78686..0000000
--- a/0002-fix-GTK3-build-error.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- lazarus-2.2.4--orig/lazarus/lcl/interfaces/gtk3/gtk3boxes.pas	2022-09-25 12:37:18.000000000 +0200
-+++ lazarus-2.2.4--patched/lazarus/lcl/interfaces/gtk3/gtk3boxes.pas	2022-12-21 18:46:07.163316917 +0100
-@@ -1,11 +1,13 @@
- unit gtk3boxes;
- 
-+{$MODE OBJFPC} {$LONGSTRINGS ON}
-+
- interface
- 
- uses
-   // LazUtils
--  UITypes,
-+  System.UITypes,
-   // LCL
-   LCLType, LCLStrConsts,LCLProc, InterfaceBase,
-   LazGtk3, LazGLib2, LazGObject2, LazGdk3, gtk3objects;
- 

diff --git a/Fixed-crash-when-trying-to-recompile-packages.patch b/Fixed-crash-when-trying-to-recompile-packages.patch
new file mode 100644
index 0000000..92fb7bf
--- /dev/null
+++ b/Fixed-crash-when-trying-to-recompile-packages.patch
@@ -0,0 +1,29 @@
+Description: Fixed crash when trying to recompile packages.
+ Some packages do not need to be recompiled. There was a bug in lazbuild
+ when trying to guess package output directory in this special case.
+ Now, we just skip recompilation if it is not needed.
+Author: Abou Al Montacir <abou.almontacir@sfr.fr>
+Last-Update: Mon, 25 Dec 2023 16:02:09 +0100
+
+---
+ lazarus/packager/packagesystem.pas | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/lazarus/packager/packagesystem.pas b/lazarus/packager/packagesystem.pas
+index e2c6c080..e36eefff 100644
+--- a/lazarus/packager/packagesystem.pas
++++ b/lazarus/packager/packagesystem.pas
+@@ -4221,6 +4221,10 @@ begin
+                           pcfSkipDesignTimePackages in Flags,
+                           pcfGroupCompile in Flags,
+                           NeedBuildAllFlag,Note);
++    if Result = mrNo then begin
++      DebugLn(['Info: (lazarus) [CompilePackage]: CheckIfPackageNeedsCompilation returned mrNo for package ', APackage.IDAsString]);
++      Exit(mrOk);
++    end;
+     if Note<>'' then
+       Note:='Compile reason: '+Note;
+     if (pcfOnlyIfNeeded in Flags) then begin
+-- 
+2.39.2
+

diff --git a/lazarus.spec b/lazarus.spec
index 9ac7d9d..7f524fe 100644
--- a/lazarus.spec
+++ b/lazarus.spec
@@ -1,14 +1,18 @@
 Name:           lazarus
 Summary:        Lazarus Component Library and IDE for Free Pascal
 
-Version:        2.2.6
+Version:        3.0
 
-%global baserelease 7
+%global baserelease 1
 Release:        %{baserelease}%{?dist}
 
 # The qt5pas version is taken from lcl/interfaces/qt5/cbindings/Qt5Pas.pro
-%global qt5pas_version 2.6
-%global qt5pas_release %(relstr="%{version}.%{baserelease}"; relstr=(${relstr//./ }); ((relno=${relstr[0]}*1000000 + ${relstr[1]}*10000 + ${relstr[2]}*100 + ${relstr[3]})); echo "${relno}%{?dist}";)
+%global qt5pas_version 2.15
+%global qt5pas_release %(relstr="%{version}.%{baserelease}"; relstr=(${relstr//./ }); ((relno=${relstr[0]}*10000 + ${relstr[1]}*100 + ${relstr[2]})); echo "${relno}%{?dist}";)
+
+# The qt6pas version is taken from lcl/interfaces/qt6/cbindings/Qt6Pas.pro
+%global qt6pas_version 6.2.7
+%global qt6pas_release %{qt5pas_release}
 
 # The IDE itself is licensed under GPLv2+, with minor parts under the modified LGPL.
 # The Lazarus Component Library has parts licensed under all the licenses mentioned in the tag.
@@ -32,8 +36,12 @@ Source9999:     9999-qt-disable-broken-components.patch
 # Lazarus wants to put arch-specific stuff in /usr/share - make it go in /usr/lib istead
 Patch0:         0000-Makefile_patch.diff
 
-# Fix build errors for GTK3 widgetset
-Patch2:         0002-fix-GTK3-build-error.patch
+# lazbuild can be too eager to rebuild some Lazarus packages.
+# This causes build failures on other Fedora packages, as it tries to overwrite files in /usr/lib.
+#
+# Taken from Debian:
+# https://sources.debian.org/data/main/l/lazarus/3.0%2Bdfsg1-6/debian/patches/Fixed-crash-when-trying-to-recompile-packages.patch
+Patch1:         Fixed-crash-when-trying-to-recompile-packages.patch
 
 # -- Build-time dependencies
 
@@ -49,6 +57,7 @@ BuildRequires:  make
 BuildRequires:  perl-generators
 BuildRequires:  qt5-qtbase-devel
 BuildRequires:  qt5-qtx11extras-devel
+BuildRequires:  qt6-qtbase-devel
 
 # -- Run-time dependencies.
 # Since "lazarus" is a metapackage, it puts strong requirements on the
@@ -205,6 +214,19 @@ This package contains LCL components for developing applications
 using the Qt5 widgetset.
 
 
+%package lcl-qt6
+Summary: Lazarus Component Library - Qt6 widgetset support
+Requires: %{name}-lcl%{?_isa} = %{version}-%{release}
+
+Requires: qt6pas-devel%{?_isa} = %{qt6pas_version}-%{qt6pas_release}
+
+%description lcl-qt6
+Lazarus is a cross-platform IDE and component library for Free Pascal.
+
+This package contains LCL components for developing applications
+using the Qt6 widgetset.
+
+
 # Qt5pas start
 %package -n     qt5pas
 Version:        %{qt5pas_version}
@@ -226,7 +248,28 @@ Requires:       qt5pas%{?_isa} = %{qt5pas_version}-%{qt5pas_release}
 %description -n qt5pas-devel
 The qt5pas-devel package contains libraries and header files for
 developing applications that use qt5pas.
-# Qt5pas end
+
+# Qt5pas end, Qt6pas start
+%package -n     qt6pas
+Version:        %{qt6pas_version}
+Release:        %{qt6pas_release}
+Summary:        Qt6 bindings for Pascal
+
+%description -n qt6pas
+Qt6 bindings for Pascal from Lazarus.
+
+%package -n     qt6pas-devel
+Version:        %{qt6pas_version}
+Release:        %{qt6pas_release}
+Summary:        Development files for qt5pas
+
+Requires:       qt6-qtbase-devel%{?_isa}
+Requires:       qt6pas%{?_isa} = %{qt6pas_version}-%{qt6pas_release}
+
+%description -n qt6pas-devel
+The qt6pas-devel package contains libraries and header files for
+developing applications that use qt6pas.
+# Qt6pas end
 
 
 # Instruct fpmake to build in parallel
@@ -257,16 +300,19 @@ fpcmake -Tall
 popd
 
 # Compile some basic targets required by everything else
-make registration lazutils codetools %{fpmakeopt}
+make registration %{fpmakeopt} OPT='%{fpcopt}'
+
+# Compile lazbuild - required to build other targets
+make lazbuild %{fpmakeopt} OPT='%{fpcopt}'
 
 # Compile LCL base (Lazarus Component Library) for the "nogui" widgetset
-make lcl basecomponents %{fpmakeopt} OPT='%{fpcopt}' LCL_PLATFORM=nogui
+make lcl %{fpmakeopt} OPT='%{fpcopt}' LCL_PLATFORM=nogui
 
-# Compile tools (lazbuild, etc.)
+# Compile extra tools
 make tools %{fpmakeopt} OPT='%{fpcopt}'
 
 # Compile the LCL base + extra components for GUI widgetsets
-for WIDGETSET in gtk2 gtk3 qt5; do
+for WIDGETSET in gtk2 gtk3 qt5 qt6; do
 	make lcl basecomponents bigidecomponents %{fpmakeopt} OPT='%{fpcopt}' LCL_PLATFORM="${WIDGETSET}"
 done
 
@@ -295,8 +341,14 @@ make bigide %{fpmakeopt} OPT='%{fpcopt}' LCL_PLATFORM=gtk2
 
 # Build Qt5Pas
 pushd lcl/interfaces/qt5/cbindings/
-    %{qmake_qt5}
-    %make_build
+	%{qmake_qt5}
+	%make_build
+popd
+
+# Build Qt6Pas
+pushd lcl/interfaces/qt6/cbindings/
+	%{qmake_qt6}
+	%make_build
 popd
 
 
@@ -307,34 +359,36 @@ make -C lazarus install INSTALL_PREFIX=%{buildroot}%{_prefix} _LIB=%{_lib}
 rm %{buildroot}%{_mandir}/man1/svn2revisioninc.1* || true
 
 desktop-file-install \
-        --dir %{buildroot}%{_datadir}/applications \
-        lazarus/install/%{name}.desktop
+	--dir %{buildroot}%{_datadir}/applications \
+	lazarus/install/%{name}.desktop
 
 install -d %{buildroot}%{_sysconfdir}/lazarus
 sed 's#__LAZARUSDIR__#%{_libdir}/%{name}#;s#__FPCSRCDIR__#%{_datadir}/fpcsrc#' \
-        lazarus/tools/install/linux/environmentoptions.xml \
-        > %{buildroot}%{_sysconfdir}/lazarus/environmentoptions.xml
+	lazarus/tools/install/linux/environmentoptions.xml \
+	> %{buildroot}%{_sysconfdir}/lazarus/environmentoptions.xml
 
 chmod 755 %{buildroot}%{_libdir}/%{name}/components/lazreport/tools/localize.sh
 
 install -m 755 -d %{buildroot}%{_metainfodir}
 install -m 644 %{SOURCE100} %{buildroot}%{_metainfodir}/%{name}.appdata.xml
 
-# -- Install Qt5Pas
+# -- Install Qt5Pas and Qt6Pas
 
-pushd lazarus/lcl/interfaces/qt5/cbindings/
-    %make_install INSTALL_ROOT=%{buildroot}
-popd
+for QTVER in 5 6; do
+	pushd "lazarus/lcl/interfaces/qt${QTVER}/cbindings/"
+		%make_install INSTALL_ROOT=%{buildroot}
+	popd
 
-# Since we provide Qt5Pas as a standalone package, remove the .so files bundled in Lazarus dir
-# and replace them with symlinks to the standalone .so.
-for FILEPATH in %{buildroot}%{_libdir}/%{name}/lcl/interfaces/qt5/cbindings/libQt5Pas.so* ; do
-    FILENAME="$(basename "${FILEPATH}")"
-    ln -sf "%{_libdir}/${FILENAME}" "${FILEPATH}"
-done
+	# Since we provide Qt?Pas as a standalone package, remove the .so files bundled in Lazarus dir
+	# and replace them with symlinks to the standalone .so.
+	for FILEPATH in "%{buildroot}%{_libdir}/%{name}/lcl/interfaces/qt${QTVER}/cbindings/libQt${QTVER}Pas.so"* ; do
+		FILENAME="$(basename "${FILEPATH}")"
+		ln -sf "%{_libdir}/${FILENAME}" "${FILEPATH}"
+	done
 
-# Cannot be done earlier since "make install" expects the tmp/ directory to be present. Sigh.
-rm -rf %{buildroot}%{_libdir}/%{name}/lcl/interfaces/qt5/cbindings/tmp/
+	# Cannot be done earlier since "make install" expects the tmp/ directory to be present. Sigh.
+	rm -rf "%{buildroot}%{_libdir}/%{name}/lcl/interfaces/qt${QTVER}/cbindings/tmp/"
+done
 
 
 %check
@@ -352,27 +406,6 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdat
 
 %license lazarus/COPYING.GPL.txt
 
-
-%files tools
-%dir %{_libdir}/%{name}
-%{_libdir}/%{name}/lazbuild
-%{_libdir}/%{name}/packager/
-%{_libdir}/%{name}/tools/
-
-%{_bindir}/lazbuild
-%{_bindir}/lazres
-%{_bindir}/lrstolfm
-%{_bindir}/updatepofiles
-
-%dir %{_sysconfdir}/lazarus
-%config(noreplace) %{_sysconfdir}/lazarus/environmentoptions.xml
-
-%license lazarus/COPYING.GPL.txt
-%{_mandir}/man1/lazbuild.1*
-%{_mandir}/man1/lazres.1*
-%{_mandir}/man1/lrstolfm.1*
-%{_mandir}/man1/updatepofiles.1*
-
 # -- IDE files
 
 %files ide
@@ -391,6 +424,11 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdat
 %exclude %{_libdir}/%{name}/packager
 %exclude %{_libdir}/%{name}/tools
 
+# Exclude some files that belong in the ide/ directory
+# but are actually required by lazbuild to run properly.
+%exclude %{_libdir}/%{name}/ide/packages/ideconfig
+%exclude %{_libdir}/%{name}/ide/packages/idedebugger
+
 %{_bindir}/lazarus-ide
 %{_bindir}/startlazarus
 %{_datadir}/pixmaps/lazarus.png
@@ -406,11 +444,37 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdat
 %{_mandir}/man1/lazarus-ide.1*
 %{_mandir}/man1/startlazarus.1*
 
+# -- Tools files
+
+%files tools
+%dir %{_libdir}/%{name}
+%{_libdir}/%{name}/lazbuild
+%{_libdir}/%{name}/packager/
+%{_libdir}/%{name}/tools/
+
+%dir %{_libdir}/%{name}/ide/
+%dir %{_libdir}/%{name}/ide/packages/
+%{_libdir}/%{name}/ide/packages/ideconfig
+%{_libdir}/%{name}/ide/packages/idedebugger
+
+%{_bindir}/lazbuild
+%{_bindir}/lazres
+%{_bindir}/lrstolfm
+%{_bindir}/updatepofiles
+
+%dir %{_sysconfdir}/lazarus
+%config(noreplace) %{_sysconfdir}/lazarus/environmentoptions.xml
+
+%license lazarus/COPYING.GPL.txt
+%{_mandir}/man1/lazbuild.1*
+%{_mandir}/man1/lazres.1*
+%{_mandir}/man1/lrstolfm.1*
+%{_mandir}/man1/updatepofiles.1*
+
 # -- LCL files
 
 # Helper macro to reduce repetitions (lcl, basecomponents)
 %define lcl_base_files(n:) %{expand:
-	%{*} %{_libdir}/%{name}/components/*/design/lib/*-linux/%{-n*}/
 	%{*} %{_libdir}/%{name}/components/*/lib/*-linux/%{-n*}/
 	%{*} %{_libdir}/%{name}/components/*/units/*-linux/%{-n*}/
 	%{*} %{_libdir}/%{name}/lcl/interfaces/%{-n*}/
@@ -419,6 +483,7 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdat
 
 # Some files are not present for nogui (bigidecomponents)
 %define lcl_extra_files(n:) %{expand:
+	%{*} %{_libdir}/%{name}/components/*/design/lib/*-linux/%{-n*}/
 	%{*} %{_libdir}/%{name}/components/*/design/units/*-linux/%{-n*}/
 	%{*} %{_libdir}/%{name}/components/*/include/%{-n*}/
 	%{*} %{_libdir}/%{name}/components/*/include/intf/%{-n*}/
@@ -451,6 +516,8 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdat
 %lcl_extra_files -n qt %exclude
 %lcl_base_files  -n qt5 %exclude
 %lcl_extra_files -n qt5 %exclude
+%lcl_base_files  -n qt6 %exclude
+%lcl_extra_files -n qt6 %exclude
 
 # -- LCL widgetsets
 
@@ -473,6 +540,10 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdat
 %lcl_base_files -n qt5
 %lcl_extra_files -n qt5
 
+%files lcl-qt6
+%lcl_base_files -n qt6
+%lcl_extra_files -n qt6
+
 # -- Qt5pas
 
 %files -n qt5pas
@@ -483,8 +554,23 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdat
 %files -n qt5pas-devel
 %{_libdir}/libQt5Pas.so
 
+# -- Qt6pas
+
+%files -n qt6pas
+%license lazarus/lcl/interfaces/qt6/cbindings/COPYING.TXT
+%doc lazarus/lcl/interfaces/qt6/cbindings/README.TXT
+%{_libdir}/libQt6Pas.so.*
+
+%files -n qt6pas-devel
+%{_libdir}/libQt6Pas.so
+
 
 %changelog
+* Wed Feb 07 2024 Artur Frenszek-Iwicki <fedora@svgames.pl> - 3.0-1
+- Update to v3.0.0
+- Add qt6pas, qt6pas-devel and lazarus-lcl-qt6 packages
+- Drop Patch2 (GTK3 fixes - fixed upstream)
+
 * Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.6-7
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
 

diff --git a/sources b/sources
index 3a3657d..93e0294 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (lazarus-2.2.6-0.tar.gz) = da51cd07febe02987e5dbc32363baacb7fdeb54957d25a235cba4b241caaa09a8e614fec5cbb0aa263477e65c0730a89e3e7bc7285850f9206916ad0094b7bc7
+SHA512 (lazarus-3.0-0.tar.gz) = 85cb3548fab017f2fd97f5fb141d59a0d0ec1412a161f98fea726ad5d6ed32ee2eb6ef6573e058d4df7dfcc067256e842acf994b73c9a50ebfb064657db33881

                 reply	other threads:[~2026-07-23  8:18 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178479469788.1.3665150257909354010.rpms-lazarus-cd5b6478457f@fedoraproject.org \
    --to=fedora@svgames.pl \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox