Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package lazarus for openSUSE:Factory checked in at 2023-08-30 10:22:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lazarus (Old) and /work/SRC/openSUSE:Factory/.lazarus.new.1766 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lazarus" Wed Aug 30 10:22:19 2023 rev:21 rq:1108032 version:2.2.6 Changes: -------- --- /work/SRC/openSUSE:Factory/lazarus/lazarus.changes 2023-03-15 18:54:30.848385454 +0100 +++ /work/SRC/openSUSE:Factory/.lazarus.new.1766/lazarus.changes 2023-08-30 10:24:45.221293554 +0200 @@ -1,0 +2,22 @@ +Tue Aug 29 12:39:22 UTC 2023 - Paolo Stivanin <i...@paolostivanin.com> + +- Split package into multiple packages: + LCL packages: + + lazarus-lcl + + lazarus-lcl-nogui + + lazarus-lcl-qt5 + + lazarus-lcl-gtk2 + + lazarus-lcl-gtk3 + Doc package: + + lazarus-doc + IDE package: + + lazarus-ide + Tools package: + + lazarus-tools + QT5 bindings: + + libQt5Pas + Meta package: + + lazarus (this will install: ide, lcl, lcl-gtk2, lcl-nogui, tools) +- Add 0002-fix-GTK3-build-error.patch: this fixes building the GTK3 LCL. + +------------------------------------------------------------------- New: ---- 0002-fix-GTK3-build-error.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lazarus.spec ++++++ --- /var/tmp/diff_new_pack.Wb9SQa/_old 2023-08-30 10:24:46.841351381 +0200 +++ /var/tmp/diff_new_pack.Wb9SQa/_new 2023-08-30 10:24:46.845351524 +0200 @@ -16,7 +16,6 @@ # -%define dlver 2.2.6-0 %define sover 1 Name: lazarus Version: 2.2.6 @@ -26,7 +25,7 @@ License: GPL-2.0-only AND LGPL-2.0-only AND MPL-1.1 Group: Development/Languages/Other URL: http://www.lazarus.freepascal.org/ -Source0: https://downloads.sourceforge.net/%{name}/%{name}-%{dlver}.tar.gz +Source0: https://downloads.sourceforge.net/%{name}/%{name}-%{version}-0.tar.gz # PATCH-FEATURE-UPSTREAM http://mantis.freepascal.org/view.php?id=31364 Source1: https://raw.githubusercontent.com/hughsie/fedora-appstream/developerapps/appdata-extra/desktop/lazarus.appdata.xml Source90: %{name}-rpmlintrc @@ -34,6 +33,8 @@ Patch0: %{name}-Makefile_patch.diff # PATCH-FIX-OPENSUSE lazarus.desktop.patch -- Fix desktop file Patch1: lazarus.desktop.patch +# Fix build errors for GTK3 widgetset +Patch2: 0002-fix-GTK3-build-error.patch BuildRequires: dos2unix BuildRequires: fdupes BuildRequires: fpc >= 3.0.0 @@ -57,13 +58,112 @@ BuildRequires: pkgconfig(Qt5X11Extras) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gtk+-2.0) +Requires: %{name}-ide = %{version} +Requires: %{name}-lcl = %{version} +Requires: %{name}-lcl-gtk2 = %{version} +Requires: %{name}-lcl-nogui = %{version} +Requires: %{name}-tools = %{version} Requires: pkgconfig(glib-2.0) Requires: pkgconfig(gtk+-2.0) %description -Lazarus is a Rapid Application Development -tool for the FreePascal compiler using the Lazarus component -library - LCL. The LCL is included in this package. +Lazarus is an IDE to create (graphical and console) applications with +Free Pascal, the (L)GPLed Pascal and Object Pascal compiler that runs on +Windows, Linux, Mac OS X, FreeBSD and more. + +Lazarus is the missing part of the puzzle that will allow you to develop +programs for all of the above platforms in a Delphi-like environment. +The IDE is a RAD tool that includes a form designer. + +Unlike Java's "write once, run anywhere" motto, Lazarus and Free Pascal +strive for "write once, compile anywhere". Since the exact same compiler +is available on all of the above platforms you don't need to do any recoding +to produce identical products for different platforms. + +In short, Lazarus is a free RAD tool for Free Pascal using its +Lazarus Component Library (LCL). + +%package ide +Summary: Lazarus RAD IDE for Free Pascal +License: GPL-2.0-or-later AND LGPL-2.0-only WITH Classpath-exception-2.0 +Requires: %{name}-lcl = %{version} +Requires: %{name}-tools = %{version} +Recommends: %{name}-doc = %{version} +Requires: fpc-src +Requires: gdb +Requires: hicolor-icon-theme +Requires: make + +%description ide +Lazarus is a cross-platform IDE and component library for Free Pascal. +This package provides the Lazarus RAD IDE. + +%package tools +Summary: Lazarus IDE helper programs +License: GPL-2.0-or-later +Requires: binutils +Requires: fpc +Requires: glibc-devel + +%description tools +Lazarus is a cross-platform IDE and component library for Free Pascal. +This package provides helper programs used for building Lazarus projects. + +%package doc +Summary: Lazarus IDE documentation +License: GPL-2.0-or-later + +%description doc +Lazarus is a cross-platform IDE and component library for Free Pascal. +This package contains documentation and example programs for the Lazarus IDE. + +%package lcl +Summary: Lazarus Component Library +Recommends: %{name}-lcl-gtk2 = %{version} +Recommends: %{name}-lcl-nogui = %{version} + +%description lcl +Lazarus is a cross-platform IDE and component library for Free Pascal. +This package contains the common parts of the Lazarus Component Library. + +%package lcl-nogui +Summary: Lazarus Component Library - non-graphical components +Requires: %{name}-lcl = %{version} + +%description lcl-nogui +Lazarus is a cross-platform IDE and component library for Free Pascal. +This package contains LCL components for developing non-graphical applications +and command-line tools. + +%package lcl-gtk2 +Summary: Lazarus Component Library - GTK2 widgetset support +Requires: %{name}-lcl = %{version} +Requires: gtk2-devel + +%description lcl-gtk2 +Lazarus is a cross-platform IDE and component library for Free Pascal. +This package contains LCL components for developing applications +using the GTK2 widgetset. + +%package lcl-gtk3 +Summary: Lazarus Component Library - GTK2 widgetset support +Requires: %{name}-lcl = %{version}-%{release} +Requires: gtk3-devel + +%description lcl-gtk3 +Lazarus is a cross-platform IDE and component library for Free Pascal. +This package contains LCL components for developing applications +using the GTK3 widgetset. + +%package lcl-qt5 +Summary: Lazarus Component Library - Qt5 widgetset support +Requires: %{name}-lcl = %{version} +Requires: libQt5Pas-devel = %{version} + +%description lcl-qt5 +Lazarus is a cross-platform IDE and component library for Free Pascal. +This package contains LCL components for developing applications +using the Qt5 widgetset. %package -n libQt5Pas%{sover} Summary: Free Pascal interface to Qt5 @@ -71,7 +171,7 @@ Group: System/Libraries %description -n libQt5Pas%{sover} -Library that allows to use Qt5 with Free Pascal +Qt5 bindings for Pascal from Lazarus. %package -n libQt5Pas-devel Summary: Free Pascal interface to Qt5 @@ -80,176 +180,205 @@ Requires: libQt5Pas%{sover} = %{version} %description -n libQt5Pas-devel -Development files for Free Pascal interface to Qt5. - -%prep -%autosetup -p1 -n %{name} +The qt5pas-devel package contains libraries and header files for +developing applications that use qt5pas. -# remove unneeded files -rm -rf debian -rm -rf tools/install/cross_unix/debian_crosswin32/ -rm -f tools/install/cross_unix/*deb.* -rm -rf tools/install/debian_* -rm -rf tools/install/freebsd_* -rm -rf tools/install/macosx/ -rm -rf tools/install/slacktgz/ -rm -rf tools/install/win/ -rm -f tools/install/*slacktgz.* - -# remove scripts vulnerable to symlink-attacks (bug 460642) -rm tools/install/build_fpc_snaphot_rpm.sh -rm tools/install/check_fpc_dependencies.sh -rm tools/install/create_fpc_deb.sh -rm tools/install/create_fpc_export_tgz.sh -rm tools/install/create_fpc_rpm.sh -rm tools/install/create_fpc-src_rpm.sh -rm tools/install/create_fpc_tgz_from_local_dir.sh -rm tools/install/create_lazarus_export_tgz.sh - -# fix lineencodings -dos2unix examples/trayicon/frmtest.* -dos2unix examples/trayicon/wndtray.* - -# fix rpmlint error "spurious-executable-perm" -chmod 644 docs/booth/ProdProgEntwMitOpenSourceSystems2007.odp -chmod 644 docs/html/build_lcl_chm.sh -chmod 644 docs/xml/multi_makeskel.pl - -# reset source timestamps because they are embedded in compiled files -if [ -n "$SOURCE_DATE_EPOCH" ] ; then - datestr=$(date -u "-d@$SOURCE_DATE_EPOCH" +%Y/%m/%d) - sed -i -e 's!{\$I %%date%%}!'"'$datestr'"'!' \ - ide/ideinfodlg.pas ide/aboutfrm.pas ide/idefpcinfo.pas - touch -d@"$SOURCE_DATE_EPOCH" ide/ideinfodlg.pas ide/aboutfrm.pas ide/idefpcinfo.pas -fi +# Instruct fpmake to build in parallel +%global fpmakeopt %{?_smp_build_ncpus:FPMAKEOPT='-T %{_smp_build_ncpus}'} -# fix shebang -find . \( -name "*.sh" -o -name "*.pl" \) -exec sed -i '1s|#!%{_bindir}/env|%{_bindir}/|' {} + +# Preferred compilation options - enable GDB debuginfo in DWARF format, plus some optimisations +%global fpcopt -g -gl -gw -O3 -# remove git ignore files to prevent them from being installed to fix rpmlint error "version-control-internal-file" -find . \( -name ".gitignore" \) -delete +%prep +%autosetup -p1 -n %{name} %build -# Don't use -gs (use explicitly "stabs" debuginfo) for compiling lhelp but -g (use the default debuginfo type "dwarf") as in the rest of package's Makefiles -# Fixes the "Stabs debuginfo not supported" error when extracting debug info from the package -sed -i "s/\-gs/\-g/" components/chmhelp/lhelp/Makefile +# Remove the files for building other packages +rm -rf debian +pushd tools +find install -depth -type d ! \( -path "install/linux/*" -o -path "install/linux" -o -path "install" \) -exec rm -rf '{}' \; +popd +# Re-create the Makefiles export FPCDIR=%{_datadir}/fpcsrc/ fpcmake -Tall +pushd components +fpcmake -Tall +popd + +# Compile some basic targets required by everything else +make registration lazutils codetools %{fpmakeopt} -MAKEOPTS="-gl -Fl/usr/%{_lib}" -make bigide OPT="$MAKEOPTS" +# Compile LCL base (Lazarus Component Library) for the "nogui" widgetset +make lcl basecomponents %{fpmakeopt} OPT='%{fpcopt}' LCL_PLATFORM=nogui -export LCL_PLATFORM= +# Compile tools (lazbuild, etc.) +make tools %{fpmakeopt} OPT='%{fpcopt}' -# build Qt4 interface -make -C lcl/interfaces/qt all LCL_PLATFORM=qt OPT="-dQT_NATIVE_DIALOGS" +# Compile the LCL base + extra components for GUI widgetsets +for WIDGETSET in gtk2 gtk3 qt5; do + make lcl basecomponents bigidecomponents %{fpmakeopt} OPT='%{fpcopt}' LCL_PLATFORM="${WIDGETSET}" +done -# build Qt5 interface -make -C lcl/interfaces/qt5 all LCL_PLATFORM=qt5 OPT="-dQT_NATIVE_DIALOGS" +# Compile the IDE itself +make bigide %{fpmakeopt} OPT='%{fpcopt}' LCL_PLATFORM=gtk2 # build libQt5Pas pushd lcl/interfaces/qt5/cbindings -%qmake5 -make %{?_smp_mflags} + %qmake5 + %make_build popd %install -make install \ - INSTALL_PREFIX=%{buildroot}%{_prefix} \ - INSTALL_LIBDIR=%{buildroot}%{_libdir} \ - INSTALL_BINDIR=%{buildroot}%{_bindir} \ - LAZARUS_INSTALL_DIR=%{buildroot}%{_libdir}/%{name} \ - _LIB=%{_lib} +make install INSTALL_PREFIX=%{buildroot}%{_prefix} _LIB=%{_lib} -pushd lcl/interfaces/qt5/cbindings -%qmake5_install -install -Dpm 0644 qt5.pas %{buildroot}%{_datadir}/fpcsrc/packages/qt5/qt5.pas -popd +# Remove man page for an executable that is not actually installed. +rm %{buildroot}%{_mandir}/man1/svn2revisioninc.1* || true -# convenience links -for f in lazarus lazbuild startlazarus; do - rm -f %{buildroot}%{_bindir}/$f - ln -sf ../%{_lib}/%{name}/$f %{buildroot}%{_bindir}/$f -done -rm -f %{buildroot}%{_bindir}/lazarus-ide -ln -sf ../%{_lib}/%{name}/lazarus %{buildroot}%{_bindir}/lazarus-ide -for f in lazres lrstolfm updatepofiles; do - ln -sf ../%{_lib}/%{name}/tools/$f %{buildroot}%{_bindir}/$f - cat %{buildroot}%{_libdir}/%{name}/install/man/man1/${f}.1 | gzip >%{buildroot}%{_mandir}/man1/${f}.1.gz -done +desktop-file-install --dir %{buildroot}%{_datadir}/applications install/%{name}.desktop -# collect docs and samples -install -dm 755 %{buildroot}%{_defaultdocdir}/%{name} -mv %{buildroot}%{_libdir}/%{name}/examples %{buildroot}%{_defaultdocdir}/%{name} -ln -s %{_defaultdocdir}/%{name}/examples %{buildroot}%{_libdir}/%{name}/examples -mv %{buildroot}%{_libdir}/%{name}/docs %{buildroot}%{_defaultdocdir}/%{name} -ln -s %{_defaultdocdir}/%{name}/docs %{buildroot}%{_libdir}/%{name}/docs - -# icons -for f in 16 32 48 64 128 256; do - install -Dpm 0644 images/icons/lazarus${f}x${f}.png %{buildroot}%{_datadir}/icons/hicolor/${f}x${f}/apps/%{name}.png -done - -# menu-entry -desktop-file-install install/lazarus.desktop +install -d %{buildroot}%{_sysconfdir}/lazarus +sed 's#__LAZARUSDIR__#%{_libdir}/%{name}#;s#__FPCSRCDIR__#%{_datadir}/fpcsrc#' \ + tools/install/linux/environmentoptions.xml \ + > %{buildroot}%{_sysconfdir}/lazarus/environmentoptions.xml -# mime info -install -Dpm 0644 install/%{name}-mime.xml %{buildroot}%{_datadir}/mime/packages/%{name}.xml +chmod 755 %{buildroot}%{_libdir}/%{name}/components/lazreport/tools/localize.sh -# software gallery metadata install -Dpm 0644 %{SOURCE1} %{buildroot}%{_datadir}/appdata/%{name}.appdata.xml -# configs -install -dm 0755 %{buildroot}%{_sysconfdir}/%{name} -sed <tools/install/linux/environmentoptions.xml -e "s#__LAZARUSDIR__#%{_libdir}/%{name}/#" -e "s#__FPCSRCDIR__#%{_datadir}/fpcsrc/#" > %{buildroot}%{_sysconfdir}/%{name}/environmentoptions.xml - -# cleanup -rm -rf %{buildroot}%{_libdir}/%{name}/install/man -rm -f %{buildroot}%{_libdir}/%{name}/Makefile.fpc.orig -rm -rf %{buildroot}%{_libdir}/%{name}/lcl/interfaces/qt5/cbindings -%fdupes -s %{buildroot} +pushd lcl/interfaces/qt5/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 -%post -n libQt5Pas%{sover} -p /sbin/ldconfig +rm -rf %{buildroot}%{_libdir}/%{name}/lcl/interfaces/qt5/cbindings/tmp/ +%fdupes %{buildroot}%{_libdir}/%{name} + +%post -n libQt5Pas%{sover} -p /sbin/ldconfig %postun -n libQt5Pas%{sover} -p /sbin/ldconfig %files -%defattr(-,root,root,-) -%{_mandir}/man1/* -%doc %{_defaultdocdir}/%{name} -%dir %{_sysconfdir}/%{name} -%config(noreplace) %{_sysconfdir}/%{name}/environmentoptions.xml -%{_bindir}/%{name} -%{_bindir}/%{name}-ide +# No files, but we want to build the "lazarus" metapackage + +%files doc +%dir %{_libdir}/%{name} +%{_libdir}/%{name}/docs +%{_libdir}/%{name}/examples +%license COPYING.GPL.txt + +%files tools +%dir %{_libdir}/%{name} +%{_libdir}/%{name}/lazbuild +%{_libdir}/%{name}/packager/ +%{_libdir}/%{name}/tools/ %{_bindir}/lazbuild -%{_bindir}/startlazarus %{_bindir}/lazres %{_bindir}/lrstolfm %{_bindir}/updatepofiles -%{_libdir}/%{name}/ -# license is problematic -%exclude %{_libdir}/%{name}/components/aggpas/gpc -%{_datadir}/applications/%{name}.desktop -%{_datadir}/icons/hicolor/*/apps/%{name}.png -%{_datadir}/icons/hicolor/48x48/mimetypes/*.png +%dir %{_sysconfdir}/lazarus +%config(noreplace) %{_sysconfdir}/lazarus/environmentoptions.xml +%license COPYING.GPL.txt +%{_mandir}/man1/lazbuild.1* +%{_mandir}/man1/lazres.1* +%{_mandir}/man1/lrstolfm.1* +%{_mandir}/man1/updatepofiles.1* + +%files ide +%{_libdir}/%{name} +# Exclude -docs files +%exclude %{_libdir}/%{name}/docs +%exclude %{_libdir}/%{name}/examples +# Exclude -lcl files +%exclude %{_libdir}/%{name}/components +%exclude %{_libdir}/%{name}/lcl +# Exclude -tools files +%exclude %{_libdir}/%{name}/lazbuild +%exclude %{_libdir}/%{name}/packager +%exclude %{_libdir}/%{name}/tools +%{_bindir}/lazarus-ide +%{_bindir}/startlazarus %{_datadir}/pixmaps/lazarus.png -%{_datadir}/mime/packages/%{name}.xml +%{_datadir}/applications/*%{name}.desktop +%{_datadir}/mime/packages/lazarus.xml +%{_datadir}/icons/hicolor/48x48/mimetypes/* %dir %{_datadir}/appdata/ %{_datadir}/appdata/%{name}.appdata.xml +%doc README.md +%license COPYING.txt +%license COPYING.LGPL.txt +%license COPYING.modifiedLGPL.txt +%{_mandir}/man1/lazarus-ide.1* +%{_mandir}/man1/startlazarus.1* + +# 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*}/ + %{*} %{_libdir}/%{name}/lcl/units/*/%{-n*}/ +} + +# Some files are not present for nogui (bigidecomponents) +%define lcl_extra_files(n:) %{expand: + %{*} %{_libdir}/%{name}/components/*/design/units/*-linux/%{-n*}/ + %{*} %{_libdir}/%{name}/components/*/include/%{-n*}/ + %{*} %{_libdir}/%{name}/components/*/include/intf/%{-n*}/ + %{*} %{_libdir}/%{name}/components/*/lib/*-linux-%{-n*}/ + %{*} %{_libdir}/%{name}/components/*/units/%{-n*}/ + + %{*} %{_libdir}/%{name}/components/chmhelp/packages/help/lib/*-linux/%{-n*}/ + %{*} %{_libdir}/%{name}/components/chmhelp/packages/idehelp/lib/*-linux/%{-n*}/ + %{*} %{_libdir}/%{name}/components/fpcunit/ide/lib/*-linux/%{-n*}/ + %{*} %{_libdir}/%{name}/components/jcf2/IdePlugin/lazarus/lib/*-linux/%{-n*}/ +} + +%files lcl +%license COPYING.txt +%license COPYING.LGPL.txt +%license COPYING.modifiedLGPL.txt +%license %{_libdir}/%{name}/lcl/interfaces/customdrawn/android/ApacheLicense2.0.txt +%dir %{_libdir}/%{name} +%{_libdir}/%{name}/components/ +%{_libdir}/%{name}/lcl/ +%lcl_base_files -n nogui %exclude +%lcl_base_files -n gtk2 %exclude +%lcl_extra_files -n gtk2 %exclude +%lcl_base_files -n gtk3 %exclude +%lcl_extra_files -n gtk3 %exclude +%lcl_base_files -n qt %exclude +%lcl_extra_files -n qt %exclude +%lcl_base_files -n qt5 %exclude +%lcl_extra_files -n qt5 %exclude + +%files lcl-nogui +%lcl_base_files -n nogui + +%files lcl-gtk2 +%lcl_base_files -n gtk2 +%lcl_extra_files -n gtk2 + +%files lcl-gtk3 +%lcl_base_files -n gtk3 +%lcl_extra_files -n gtk3 + +%files lcl-qt5 +%lcl_base_files -n qt5 +%lcl_extra_files -n qt5 %files -n libQt5Pas%{sover} -%defattr(-,root,root,-) %license lcl/interfaces/qt5/cbindings/COPYING.TXT +%doc lcl/interfaces/qt5/cbindings/README.TXT %{_libdir}/libQt5Pas.so.%{sover}* %files -n libQt5Pas-devel -%defattr(-,root,root,-) -%license lcl/interfaces/qt5/cbindings/COPYING.TXT -%dir %{_datadir}/fpcsrc -%dir %{_datadir}/fpcsrc/packages -%dir %{_datadir}/fpcsrc/packages/qt5 -%{_datadir}/fpcsrc/packages/qt5/qt5.pas %{_libdir}/libQt5Pas.so %changelog ++++++ 0002-fix-GTK3-build-error.patch ++++++ --- a/lazarus/lcl/interfaces/gtk3/gtk3boxes.pas 2022-09-25 12:37:18.000000000 +0200 +++ b/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; ++++++ lazarus-rpmlintrc ++++++ --- /var/tmp/diff_new_pack.Wb9SQa/_old 2023-08-30 10:24:46.905353666 +0200 +++ /var/tmp/diff_new_pack.Wb9SQa/_new 2023-08-30 10:24:46.905353666 +0200 @@ -1,4 +1,2 @@ -addFilter("devel-file-in-non-devel-package .*/lazarus/components/codetools/examples/scanexamples/test.h") -addFilter("devel-file-in-non-devel-package .*/lazarus/components/compilers/c/examples/test.c") - +addFilter(".*devel-file-in-non-devel-package.*")