Repository: FreeCAD/FreeCAD
Pull request #19565: Fix RPM packaging and add support for building with Qt6 and PySide6 for Fedora 40+
Author: login: ljo
Created: 2025-02-12T20:21:48Z | Merged: 2025-03-19T03:31:22Z

Fix RPM packaging and add support for building with Qt6, PySide6, Shiboken6 and external FMT on Fedora 40+. Only support non-EOL versions of Fedora which gives way fewer version checks now. Default for `bundled_pycxx` is now thus also changed from 1 to 0.


Diff:
diff --git a/package/fedora/freecad.spec b/package/fedora/freecad.spec
index 0de38bd387f3..92045a40197a 100644
--- a/package/fedora/freecad.spec
+++ b/package/fedora/freecad.spec
@@ -7,18 +7,16 @@
 
 # Maintainers:  keep this list of plugins up to date
 # List plugins in %%{_libdir}/%{name}/lib, less '.so' and 'Gui.so', here
-%global plugins Fem FreeCAD PathApp Import Inspection Mesh MeshPart Part Points ReverseEngineering Robot Sketcher Start Web PartDesignGui _PartDesign Path PathGui Spreadsheet SpreadsheetGui area DraftUtils DraftUtils libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libSMDS libSMESH libSMESHDS libStdMeshers Measure TechDraw TechDrawGui libarea-native Surface SurfaceGui AssemblyGui flatmesh QtUnitGui PathSimulator MatGui Material
-
+%global plugins AssemblyApp AssemblyGui CAMSimulator DraftUtils Fem FreeCAD Import Inspection MatGui Materials Measure Mesh MeshPart Part PartDesignGui Path PathApp PathSimulator Points QtUnitGui ReverseEngineering Robot Sketcher Spreadsheet Start Surface TechDraw Web _PartDesign area flatmesh libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libOndselSolver libSMDS libSMESH libSMESHDS libStdMeshers libarea-native
 
 # Some configuration options for other environments
 # rpmbuild --with=bundled_zipios:  use bundled version of zipios++
 %global bundled_zipios %{?_with_bundled_zipios: 1} %{?!_with_bundled_zipios: 1}
-# rpmbuild --without=bundled_pycxx:  don't use bundled version of pycxx
-%global bundled_pycxx %{?_without_bundled_pycxx: 0} %{?!_without_bundled_pycxx: 1}
+# rpmbuild --with=bundled_pycxx:  use bundled version of pycxx
+%global bundled_pycxx %{?_with_bundled_pycxx: 1} %{?!_with_bundled_pycxx: 0}
 # rpmbuild --without=bundled_smesh:  don't use bundled version of Salome's Mesh
 %global bundled_smesh %{?_without_bundled_smesh: 0} %{?!_without_bundled_smesh: 1}
 
-
 # Prevent RPM from doing its magical 'build' directory for now
 %global __cmake_in_source_build 0
 
@@ -33,7 +31,7 @@
 
 Name:           %{name}
 Epoch:          1
-Version:        0.22
+Version:        1.1.0
 Release:        pre_{{{git_commit_no}}}%{?dist}
 Summary:        A general purpose 3D CAD modeler
 Group:          Applications/Engineering
@@ -63,21 +61,19 @@ BuildRequires:  python3-devel
 BuildRequires:  python3-matplotlib
 BuildRequires:  python3-pivy
 BuildRequires:  boost-devel
-BuildRequires:  boost-python3-devel
 BuildRequires:  eigen3-devel
-# Qt5 dependencies
-\BuildRequires:  qt5-qtsvg-devel
-BuildRequires:  qt5-qttools-static
+BuildRequires:  qt6-qtsvg-devel
+BuildRequires:  qt6-qttools-static
 
 BuildRequires:  fmt-devel
 
-
 BuildRequires:  xerces-c
 BuildRequires:  xerces-c-devel
 BuildRequires:  libspnav-devel
-BuildRequires:  python3-shiboken2-devel
-BuildRequires:  python3-pyside2-devel
-BuildRequires:  pyside2-tools
+
+BuildRequires:  python3-shiboken6-devel
+BuildRequires:  python3-pyside6-devel
+BuildRequires:  pyside6-tools
 %if ! %{bundled_smesh}
 BuildRequires:  smesh-devel
 %endif
@@ -90,6 +86,7 @@ BuildRequires:  zipios++-devel
 %if ! %{bundled_pycxx}
 BuildRequires:  python3-pycxx-devel
 %endif
+BuildRequires:  python3-pybind11
 BuildRequires:  libicu-devel
 BuildRequires:  vtk-devel
 BuildRequires:  openmpi-devel
@@ -111,7 +108,8 @@ BuildRequires:  libappstream-glib
 # here.
 Requires:       %{name}-data = %{epoch}:%{version}-%{release}
 # Obsolete old doc package since it's required for functionality.
-Obsoletes:      %{name}-doc < 0.13-5
+Obsoletes:      %{name}-doc < 0.22-1
+
 Requires:       hicolor-icon-theme
 
 Requires:       fmt
@@ -119,8 +117,9 @@ Requires:       fmt
 Requires:       python3-pivy
 Requires:       python3-matplotlib
 Requires:       python3-collada
-Requires:       python3-pyside2
-Requires:       qt5-assistant
+Requires:       python3-pyside6
+Requires:       qt6-assistant
+
 
 %if %{bundled_smesh}
 Provides:       bundled(smesh) = %{bundled_smesh_version}
@@ -184,11 +183,7 @@ rm -rf build && mkdir build && cd build
 CXXFLAGS='-Wno-error=cast-function-type'; export CXXFLAGS
 LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
 
-%if 0%{?fedora} > 27
 %define MEDFILE_INCLUDE_DIRS %{_includedir}/med/
-%else
-%define MEDFILE_INCLUDE_DIRS %{_includedir}/
-%endif
 
 %cmake \
        -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \
@@ -197,13 +192,14 @@ LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
        -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
        -DRESOURCEDIR=%{_datadir}/%{name} \
        -DFREECAD_USE_EXTERNAL_PIVY=TRUE \
-       -DFREECAD_USE_PCL=TRUE \
-       -DBUILD_QT5=ON \
-       -DSHIBOKEN_INCLUDE_DIR=%{_includedir}/shiboken2 \
-       -DSHIBOKEN_LIBRARY=-lshiboken2.%{py_suffix} \
+       -DFREECAD_USE_EXTERNAL_FMT=TRUE \
+       -DFREECAD_USE_PCL:BOOL=OFF \
+       -DFREECAD_QT_VERSION:STRING=6 \
+       -DSHIBOKEN_INCLUDE_DIR=%{_includedir}/shiboken6 \
+       -DSHIBOKEN_LIBRARY=-lshiboken6.%{py_suffix} \
        -DPYTHON_SUFFIX=.%{py_suffix} \
-       -DPYSIDE_INCLUDE_DIR=/usr/include/PySide2 \
-       -DPYSIDE_LIBRARY=-lpyside2.%{py_suffix} \
+       -DPYSIDE_INCLUDE_DIR=/usr/include/PySide6 \
+       -DPYSIDE_LIBRARY=-lpyside6.%{py_suffix} \
        -DPython3_EXECUTABLE:FILEPATH=/usr/bin/python3 \
        -DMEDFILE_INCLUDE_DIRS=%{MEDFILE_INCLUDE_DIRS} \
        -DOpenGL_GL_PREFERENCE=GLVND \
@@ -226,7 +222,7 @@ LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
        -DPACKAGE_WCREF="%{release} (Git)" \
        -DPACKAGE_WCURL="git://github.com/%{github_name}/FreeCAD.git main" \
        -DENABLE_DEVELOPER_TESTS=FALSE \
-	   -DBUILD_GUI=TRUE \
+       -DBUILD_GUI=TRUE \
        ../
 
 make fc_version
@@ -274,12 +270,13 @@ popd
 
 # Remove obsolete Start_Page.html
 rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html
-# Belongs in %%license not %%doc
-rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
 
 # Remove header from external library that's erroneously installed
 rm -f %{buildroot}%{_libdir}/%{name}/include/E57Format/E57Export.h
 
+rm -rf %{buildroot}%{_includedir}/OndselSolver/*
+rm -f %{buildroot}%{_libdir}/%{name}/share/pkgconfig/OndselSolver.pc
+
 # Bug maintainers to keep %%{plugins} macro up to date.
 #
 # Make sure there are no plugins that need to be added to plugins macro
@@ -346,12 +343,13 @@ fi
 %{_datadir}/pixmaps/*
 %{_datadir}/mime/packages/*
 %{_datadir}/thumbnailers/*
+%{_libdir}/../lib/python*/site-packages/%{name}/*
 
 %files data
 %{_datadir}/%{name}/
 %{_docdir}/%{name}/LICENSE.html
-
+%{_docdir}/%{name}/ThirdPartyLibraries.html
 
 %changelog
-
-
+* Mon Mar 10 2025 Leif-Jöran Olsson <info@friprogramvarusyndikatet.se> - 1.1.0-1
+- Adding support for building with Qt6 and PySide6 for Fedora 40+
diff --git a/rpkg.macros b/rpkg.macros
index 4ae7012c14ca..13e4c09de79a 100644
--- a/rpkg.macros
+++ b/rpkg.macros
@@ -1,4 +1,4 @@
 function git_commit_no {
-	commits=$(curl -s 'https://api.github.com/repos/FreeCAD/FreeCAD/compare/120ca87015...master' | grep "\"ahead_by\":" | sed -s 's/ //g' | sed -s 's/"ahead_by"://' | sed -s 's/,//')
+	commits=$(curl -s 'https://api.github.com/repos/FreeCAD/FreeCAD/compare/120ca87015...main' | grep "\"ahead_by\":" | sed -s 's/ //g' | sed -s 's/"ahead_by"://' | sed -s 's/,//')
 	echo -n $((commits + 1))
 }


Reviews:
user: login: adrianinsaval
state: CHANGES_REQUESTED
author_association: MEMBER
submitted_at: 2025-03-10T14:47:12Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T19:19:48Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T19:21:19Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T19:22:46Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T19:26:01Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T19:33:10Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T20:53:07Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T20:53:42Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T20:54:57Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T20:55:13Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T20:56:03Z
user: login: adrianinsaval
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-17T23:37:13Z
user: login: adrianinsaval
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-17T23:47:47Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-18T07:46:13Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-18T07:47:49Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-18T08:04:37Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-18T09:14:05Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-18T09:18:14Z
user: login: adrianinsaval
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-18T19:05:48Z
user: login: adrianinsaval
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-18T19:20:59Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-18T21:48:21Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-18T21:49:03Z
user: login: ljo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-18T22:20:54Z
user: login: adrianinsaval
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-19T02:59:56Z
user: login: adrianinsaval
state: APPROVED
author_association: MEMBER
submitted_at: 2025-03-19T03:01:30Z

Review comments:
diff_hunk: @@ -7,8 +7,11 @@
 
 # Maintainers:  keep this list of plugins up to date
 # List plugins in %%{_libdir}/%{name}/lib, less '.so' and 'Gui.so', here
+%if 0%{?fedora} > 38
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: isn't fedora 38 EOL already? what's the point in adding support for it, IMO it's better to keep this simpler and support only supported fedora releases
created_at: 2025-03-10T14:29:01Z
author_association: MEMBER
diff_hunk: @@ -111,16 +126,25 @@ BuildRequires:  libappstream-glib
 # here.
 Requires:       %{name}-data = %{epoch}:%{version}-%{release}
 # Obsolete old doc package since it's required for functionality.
-Obsoletes:      %{name}-doc < 0.13-5
+#%if %{version} > 0.22
+Obsoletes:      %{name}-doc < 0.22-1
+#%else
+#Obsoletes:      %{name}-doc < 0.13-5
+#%endif
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: I would remove the commented code. Also, is there even a freecad-doc 0.22? I guess this line doesn't hurt either
created_at: 2025-03-10T14:30:29Z
author_association: MEMBER
diff_hunk: @@ -111,16 +126,25 @@ BuildRequires:  libappstream-glib
 # here.
 Requires:       %{name}-data = %{epoch}:%{version}-%{release}
 # Obsolete old doc package since it's required for functionality.
-Obsoletes:      %{name}-doc < 0.13-5
+#%if %{version} > 0.22
+Obsoletes:      %{name}-doc < 0.22-1
+#%else
+#Obsoletes:      %{name}-doc < 0.13-5
+#%endif
 Requires:       hicolor-icon-theme
 
 Requires:       fmt
 
 Requires:       python3-pivy
 Requires:       python3-matplotlib
 Requires:       python3-collada
-Requires:       python3-pyside2
+%if 0%{?fedora} > 38
+Requires:       python3-pyside6
+Requires:       qt6-assistant
+%else
+Requires:       python3-pyside5
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: ```suggestion
Requires:       python3-pyside2
```
although like said above I would just remove support for fedora < 40
created_at: 2025-03-10T14:36:38Z
author_association: MEMBER
diff_hunk: @@ -197,13 +221,29 @@ LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
        -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
        -DRESOURCEDIR=%{_datadir}/%{name} \
        -DFREECAD_USE_EXTERNAL_PIVY=TRUE \
+%if 0%{?fedora} > 38
+       -DFREECAD_USE_EXTERNAL_FMT=TRUE \
+%endif
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: this defaults to on so it shouldn't be necessary, not a problem to explicitly set it though.
created_at: 2025-03-10T14:39:40Z
author_association: MEMBER
diff_hunk: @@ -275,11 +315,21 @@ popd
 # Remove obsolete Start_Page.html
 rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html
 # Belongs in %%license not %%doc
+# Well since it is trying to open it from "Help > About FreeCAD > Libraries", 
+# and there is only 3D Mouse Support under "Help > About FreeCAD > License", 
+# it is better to keep it as documentation for now /ljo
+%if 0%{?fedora} < 39
 rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
+%endif
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: I'm confused as to why this was ever removed in the first place, IMO this should always be kept
created_at: 2025-03-10T14:43:05Z
author_association: MEMBER
diff_hunk: @@ -7,8 +7,11 @@
 
 # Maintainers:  keep this list of plugins up to date
 # List plugins in %%{_libdir}/%{name}/lib, less '.so' and 'Gui.so', here
+%if 0%{?fedora} > 38
path: package/fedora/freecad.spec
user: login: ljo
body: Yes, 38 and actually also 39 is EOL already. It was more of a semantic grouping where 39 is more like 40 and 41. So if it is OK to remove support for EOLd versions it will certainly get less cluttered if I fix it up. 
created_at: 2025-03-10T19:19:48Z
author_association: CONTRIBUTOR
diff_hunk: @@ -111,16 +126,25 @@ BuildRequires:  libappstream-glib
 # here.
 Requires:       %{name}-data = %{epoch}:%{version}-%{release}
 # Obsolete old doc package since it's required for functionality.
-Obsoletes:      %{name}-doc < 0.13-5
+#%if %{version} > 0.22
+Obsoletes:      %{name}-doc < 0.22-1
+#%else
+#Obsoletes:      %{name}-doc < 0.13-5
+#%endif
path: package/fedora/freecad.spec
user: login: ljo
body: I will fix it. That was the edge versions I could find.
created_at: 2025-03-10T19:21:19Z
author_association: CONTRIBUTOR
diff_hunk: @@ -111,16 +126,25 @@ BuildRequires:  libappstream-glib
 # here.
 Requires:       %{name}-data = %{epoch}:%{version}-%{release}
 # Obsolete old doc package since it's required for functionality.
-Obsoletes:      %{name}-doc < 0.13-5
+#%if %{version} > 0.22
+Obsoletes:      %{name}-doc < 0.22-1
+#%else
+#Obsoletes:      %{name}-doc < 0.13-5
+#%endif
 Requires:       hicolor-icon-theme
 
 Requires:       fmt
 
 Requires:       python3-pivy
 Requires:       python3-matplotlib
 Requires:       python3-collada
-Requires:       python3-pyside2
+%if 0%{?fedora} > 38
+Requires:       python3-pyside6
+Requires:       qt6-assistant
+%else
+Requires:       python3-pyside5
path: package/fedora/freecad.spec
user: login: ljo
body: Will fix it.
created_at: 2025-03-10T19:22:46Z
author_association: CONTRIBUTOR
diff_hunk: @@ -197,13 +221,29 @@ LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
        -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
        -DRESOURCEDIR=%{_datadir}/%{name} \
        -DFREECAD_USE_EXTERNAL_PIVY=TRUE \
+%if 0%{?fedora} > 38
+       -DFREECAD_USE_EXTERNAL_FMT=TRUE \
+%endif
path: package/fedora/freecad.spec
user: login: ljo
body: I had some problems with the old grouping, so set it explicitly.
created_at: 2025-03-10T19:26:01Z
author_association: CONTRIBUTOR
diff_hunk: @@ -275,11 +315,21 @@ popd
 # Remove obsolete Start_Page.html
 rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html
 # Belongs in %%license not %%doc
+# Well since it is trying to open it from "Help > About FreeCAD > Libraries", 
+# and there is only 3D Mouse Support under "Help > About FreeCAD > License", 
+# it is better to keep it as documentation for now /ljo
+%if 0%{?fedora} < 39
 rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
+%endif
path: package/fedora/freecad.spec
user: login: ljo
body: Thanks, yes, it felt strange, so I brought it back. As long as the tab is there it feels strange to have it empty and failing retrieval. But since it was tested with 38 previously I added the version check to get it consistent with how that previous version behaved. I will align with the F40+ changes above, though.
created_at: 2025-03-10T19:33:10Z
author_association: CONTRIBUTOR
diff_hunk: @@ -7,8 +7,11 @@
 
 # Maintainers:  keep this list of plugins up to date
 # List plugins in %%{_libdir}/%{name}/lib, less '.so' and 'Gui.so', here
+%if 0%{?fedora} > 38
path: package/fedora/freecad.spec
user: login: ljo
body: Fixed
created_at: 2025-03-10T20:53:07Z
author_association: CONTRIBUTOR
diff_hunk: @@ -111,16 +126,25 @@ BuildRequires:  libappstream-glib
 # here.
 Requires:       %{name}-data = %{epoch}:%{version}-%{release}
 # Obsolete old doc package since it's required for functionality.
-Obsoletes:      %{name}-doc < 0.13-5
+#%if %{version} > 0.22
+Obsoletes:      %{name}-doc < 0.22-1
+#%else
+#Obsoletes:      %{name}-doc < 0.13-5
+#%endif
path: package/fedora/freecad.spec
user: login: ljo
body: Removed commented version checks
created_at: 2025-03-10T20:53:42Z
author_association: CONTRIBUTOR
diff_hunk: @@ -111,16 +126,25 @@ BuildRequires:  libappstream-glib
 # here.
 Requires:       %{name}-data = %{epoch}:%{version}-%{release}
 # Obsolete old doc package since it's required for functionality.
-Obsoletes:      %{name}-doc < 0.13-5
+#%if %{version} > 0.22
+Obsoletes:      %{name}-doc < 0.22-1
+#%else
+#Obsoletes:      %{name}-doc < 0.13-5
+#%endif
 Requires:       hicolor-icon-theme
 
 Requires:       fmt
 
 Requires:       python3-pivy
 Requires:       python3-matplotlib
 Requires:       python3-collada
-Requires:       python3-pyside2
+%if 0%{?fedora} > 38
+Requires:       python3-pyside6
+Requires:       qt6-assistant
+%else
+Requires:       python3-pyside5
path: package/fedora/freecad.spec
user: login: ljo
body: Only non-EOL versions supported, so versions removed.
created_at: 2025-03-10T20:54:57Z
author_association: CONTRIBUTOR
diff_hunk: @@ -275,11 +315,21 @@ popd
 # Remove obsolete Start_Page.html
 rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html
 # Belongs in %%license not %%doc
+# Well since it is trying to open it from "Help > About FreeCAD > Libraries", 
+# and there is only 3D Mouse Support under "Help > About FreeCAD > License", 
+# it is better to keep it as documentation for now /ljo
+%if 0%{?fedora} < 39
 rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
+%endif
path: package/fedora/freecad.spec
user: login: ljo
body: Fixed
created_at: 2025-03-10T20:55:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -197,13 +221,29 @@ LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
        -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
        -DRESOURCEDIR=%{_datadir}/%{name} \
        -DFREECAD_USE_EXTERNAL_PIVY=TRUE \
+%if 0%{?fedora} > 38
+       -DFREECAD_USE_EXTERNAL_FMT=TRUE \
+%endif
path: package/fedora/freecad.spec
user: login: ljo
body: Version check removed
created_at: 2025-03-10T20:56:03Z
author_association: CONTRIBUTOR
diff_hunk: @@ -197,13 +193,14 @@ LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
        -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
        -DRESOURCEDIR=%{_datadir}/%{name} \
        -DFREECAD_USE_EXTERNAL_PIVY=TRUE \
-       -DFREECAD_USE_PCL=TRUE \
-       -DBUILD_QT5=ON \
-       -DSHIBOKEN_INCLUDE_DIR=%{_includedir}/shiboken2 \
-       -DSHIBOKEN_LIBRARY=-lshiboken2.%{py_suffix} \
+       -DFREECAD_USE_EXTERNAL_FMT=TRUE \
+       -DFREECAD_USE_PCL:BOOL=OFF \
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: is there an issue with pcl in fedora?
created_at: 2025-03-17T23:22:55Z
author_association: MEMBER
diff_hunk: @@ -274,12 +271,16 @@ popd
 
 # Remove obsolete Start_Page.html
 rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html
-# Belongs in %%license not %%doc
-rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
+# Keep this until transition from %%doc to %%license is done
+# and the tab is removed in UI
+# %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: what transition are we talking about here? Are there plans to remove that tab from the UI? Might be a good idea to add a link to whatever relevant discussion there is
created_at: 2025-03-17T23:24:37Z
author_association: MEMBER
diff_hunk: @@ -7,17 +7,16 @@
 
 # Maintainers:  keep this list of plugins up to date
 # List plugins in %%{_libdir}/%{name}/lib, less '.so' and 'Gui.so', here
-%global plugins Fem FreeCAD PathApp Import Inspection Mesh MeshPart Part Points ReverseEngineering Robot Sketcher Start Web PartDesignGui _PartDesign Path PathGui Spreadsheet SpreadsheetGui area DraftUtils DraftUtils libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libSMDS libSMESH libSMESHDS libStdMeshers Measure TechDraw TechDrawGui libarea-native Surface SurfaceGui AssemblyGui flatmesh QtUnitGui PathSimulator MatGui Material
-
+%global plugins AssemblyApp AssemblyGui CAMSimulator DraftUtils Fem FreeCAD Import Inspection MatGui Materials Measure Mesh MeshPart Part PartDesignGui Path PathApp PathSimulator Points QtUnitGui ReverseEngineering Robot Sketcher Spreadsheet Start Surface TechDraw Web _PartDesign area flatmesh libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libOndselSolver libSMDS libSMESH libSMESHDS libStdMeshers libarea-native
 
 # Some configuration options for other environments
 # rpmbuild --with=bundled_zipios:  use bundled version of zipios++
 %global bundled_zipios %{?_with_bundled_zipios: 1} %{?!_with_bundled_zipios: 1}
-# rpmbuild --without=bundled_pycxx:  don't use bundled version of pycxx
-%global bundled_pycxx %{?_without_bundled_pycxx: 0} %{?!_without_bundled_pycxx: 1}
 # rpmbuild --without=bundled_smesh:  don't use bundled version of Salome's Mesh
 %global bundled_smesh %{?_without_bundled_smesh: 0} %{?!_without_bundled_smesh: 1}
 
+# Don't use bundled version of pycxx
+%global bundled_pycxx 0
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: any particular reason for removing this option?
created_at: 2025-03-17T23:31:06Z
author_association: MEMBER
diff_hunk: @@ -197,13 +193,14 @@ LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
        -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
        -DRESOURCEDIR=%{_datadir}/%{name} \
        -DFREECAD_USE_EXTERNAL_PIVY=TRUE \
-       -DFREECAD_USE_PCL=TRUE \
-       -DBUILD_QT5=ON \
-       -DSHIBOKEN_INCLUDE_DIR=%{_includedir}/shiboken2 \
-       -DSHIBOKEN_LIBRARY=-lshiboken2.%{py_suffix} \
+       -DFREECAD_USE_EXTERNAL_FMT=TRUE \
+       -DFREECAD_USE_PCL:BOOL=OFF \
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: if this is to be set to off pcl-devel should be removed from dependencies I think
created_at: 2025-03-17T23:47:47Z
author_association: MEMBER
diff_hunk: @@ -197,13 +193,14 @@ LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
        -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
        -DRESOURCEDIR=%{_datadir}/%{name} \
        -DFREECAD_USE_EXTERNAL_PIVY=TRUE \
-       -DFREECAD_USE_PCL=TRUE \
-       -DBUILD_QT5=ON \
-       -DSHIBOKEN_INCLUDE_DIR=%{_includedir}/shiboken2 \
-       -DSHIBOKEN_LIBRARY=-lshiboken2.%{py_suffix} \
+       -DFREECAD_USE_EXTERNAL_FMT=TRUE \
+       -DFREECAD_USE_PCL:BOOL=OFF \
path: package/fedora/freecad.spec
user: login: ljo
body: Yes, pkg-config unfortunately fails if it is enable, but the dependency is there. And I have not had any success yet in resolving it.
created_at: 2025-03-18T07:46:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -274,12 +271,16 @@ popd
 
 # Remove obsolete Start_Page.html
 rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html
-# Belongs in %%license not %%doc
-rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
+# Keep this until transition from %%doc to %%license is done
+# and the tab is removed in UI
+# %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
path: package/fedora/freecad.spec
user: login: ljo
body: You are right, a link would be good. I will try to find it.
created_at: 2025-03-18T07:47:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -7,17 +7,16 @@
 
 # Maintainers:  keep this list of plugins up to date
 # List plugins in %%{_libdir}/%{name}/lib, less '.so' and 'Gui.so', here
-%global plugins Fem FreeCAD PathApp Import Inspection Mesh MeshPart Part Points ReverseEngineering Robot Sketcher Start Web PartDesignGui _PartDesign Path PathGui Spreadsheet SpreadsheetGui area DraftUtils DraftUtils libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libSMDS libSMESH libSMESHDS libStdMeshers Measure TechDraw TechDrawGui libarea-native Surface SurfaceGui AssemblyGui flatmesh QtUnitGui PathSimulator MatGui Material
-
+%global plugins AssemblyApp AssemblyGui CAMSimulator DraftUtils Fem FreeCAD Import Inspection MatGui Materials Measure Mesh MeshPart Part PartDesignGui Path PathApp PathSimulator Points QtUnitGui ReverseEngineering Robot Sketcher Spreadsheet Start Surface TechDraw Web _PartDesign area flatmesh libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libOndselSolver libSMDS libSMESH libSMESHDS libStdMeshers libarea-native
 
 # Some configuration options for other environments
 # rpmbuild --with=bundled_zipios:  use bundled version of zipios++
 %global bundled_zipios %{?_with_bundled_zipios: 1} %{?!_with_bundled_zipios: 1}
-# rpmbuild --without=bundled_pycxx:  don't use bundled version of pycxx
-%global bundled_pycxx %{?_without_bundled_pycxx: 0} %{?!_without_bundled_pycxx: 1}
 # rpmbuild --without=bundled_smesh:  don't use bundled version of Salome's Mesh
 %global bundled_smesh %{?_without_bundled_smesh: 0} %{?!_without_bundled_smesh: 1}
 
+# Don't use bundled version of pycxx
+%global bundled_pycxx 0
path: package/fedora/freecad.spec
user: login: ljo
body: The use of local version is enabled by default. I do not see any reason going back to the bundled version for Fedora, but I did not want to go the whole way in one swoop leaving no trace of the bundled version except for the removal of the bundled directory. Should I rethink this?
created_at: 2025-03-18T08:04:37Z
author_association: CONTRIBUTOR
diff_hunk: @@ -274,12 +271,16 @@ popd
 
 # Remove obsolete Start_Page.html
 rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html
-# Belongs in %%license not %%doc
-rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
+# Keep this until transition from %%doc to %%license is done
+# and the tab is removed in UI
+# %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
path: package/fedora/freecad.spec
user: login: ljo
body: Mostly it comes from the old comment in the spec file where the page was not even packaged, which made the tab blank failing to find the page (so that is what I have fixed).

I see some comments in different threads about the redundancy. There is the section in "About > Licence" about third part licences pointing to the wiki. And each entry under "About > Libraries", which cmake preps, have a link to the licence it is released under. Maybe this transition is not happening? My summary might be misleading. @chennes is this About tabs redundancy something you know something about?
created_at: 2025-03-18T09:14:05Z
author_association: CONTRIBUTOR
diff_hunk: @@ -7,17 +7,16 @@
 
 # Maintainers:  keep this list of plugins up to date
 # List plugins in %%{_libdir}/%{name}/lib, less '.so' and 'Gui.so', here
-%global plugins Fem FreeCAD PathApp Import Inspection Mesh MeshPart Part Points ReverseEngineering Robot Sketcher Start Web PartDesignGui _PartDesign Path PathGui Spreadsheet SpreadsheetGui area DraftUtils DraftUtils libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libSMDS libSMESH libSMESHDS libStdMeshers Measure TechDraw TechDrawGui libarea-native Surface SurfaceGui AssemblyGui flatmesh QtUnitGui PathSimulator MatGui Material
-
+%global plugins AssemblyApp AssemblyGui CAMSimulator DraftUtils Fem FreeCAD Import Inspection MatGui Materials Measure Mesh MeshPart Part PartDesignGui Path PathApp PathSimulator Points QtUnitGui ReverseEngineering Robot Sketcher Spreadsheet Start Surface TechDraw Web _PartDesign area flatmesh libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libOndselSolver libSMDS libSMESH libSMESHDS libStdMeshers libarea-native
 
 # Some configuration options for other environments
 # rpmbuild --with=bundled_zipios:  use bundled version of zipios++
 %global bundled_zipios %{?_with_bundled_zipios: 1} %{?!_with_bundled_zipios: 1}
-# rpmbuild --without=bundled_pycxx:  don't use bundled version of pycxx
-%global bundled_pycxx %{?_without_bundled_pycxx: 0} %{?!_without_bundled_pycxx: 1}
 # rpmbuild --without=bundled_smesh:  don't use bundled version of Salome's Mesh
 %global bundled_smesh %{?_without_bundled_smesh: 0} %{?!_without_bundled_smesh: 1}
 
+# Don't use bundled version of pycxx
+%global bundled_pycxx 0
path: package/fedora/freecad.spec
user: login: ljo
body: The reason for using the local version by default is that the bundled version creates so much noise it made the triangulation to keep up with code changes on main and the C++20 transition harder to perform. 
created_at: 2025-03-18T09:18:14Z
author_association: CONTRIBUTOR
diff_hunk: @@ -7,17 +7,16 @@
 
 # Maintainers:  keep this list of plugins up to date
 # List plugins in %%{_libdir}/%{name}/lib, less '.so' and 'Gui.so', here
-%global plugins Fem FreeCAD PathApp Import Inspection Mesh MeshPart Part Points ReverseEngineering Robot Sketcher Start Web PartDesignGui _PartDesign Path PathGui Spreadsheet SpreadsheetGui area DraftUtils DraftUtils libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libSMDS libSMESH libSMESHDS libStdMeshers Measure TechDraw TechDrawGui libarea-native Surface SurfaceGui AssemblyGui flatmesh QtUnitGui PathSimulator MatGui Material
-
+%global plugins AssemblyApp AssemblyGui CAMSimulator DraftUtils Fem FreeCAD Import Inspection MatGui Materials Measure Mesh MeshPart Part PartDesignGui Path PathApp PathSimulator Points QtUnitGui ReverseEngineering Robot Sketcher Spreadsheet Start Surface TechDraw Web _PartDesign area flatmesh libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libOndselSolver libSMDS libSMESH libSMESHDS libStdMeshers libarea-native
 
 # Some configuration options for other environments
 # rpmbuild --with=bundled_zipios:  use bundled version of zipios++
 %global bundled_zipios %{?_with_bundled_zipios: 1} %{?!_with_bundled_zipios: 1}
-# rpmbuild --without=bundled_pycxx:  don't use bundled version of pycxx
-%global bundled_pycxx %{?_without_bundled_pycxx: 0} %{?!_without_bundled_pycxx: 1}
 # rpmbuild --without=bundled_smesh:  don't use bundled version of Salome's Mesh
 %global bundled_smesh %{?_without_bundled_smesh: 0} %{?!_without_bundled_smesh: 1}
 
+# Don't use bundled version of pycxx
+%global bundled_pycxx 0
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: I would make using the bundled version opt-in, so change the option to `--with=bundled_pycxx` defaulting to `false`
created_at: 2025-03-18T19:05:47Z
author_association: MEMBER
diff_hunk: @@ -274,12 +271,16 @@ popd
 
 # Remove obsolete Start_Page.html
 rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html
-# Belongs in %%license not %%doc
-rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
+# Keep this until transition from %%doc to %%license is done
+# and the tab is removed in UI
+# %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: the comment was 6 years old so I don't think any transition is in the works
created_at: 2025-03-18T19:20:59Z
author_association: MEMBER
diff_hunk: @@ -274,12 +271,16 @@ popd
 
 # Remove obsolete Start_Page.html
 rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html
-# Belongs in %%license not %%doc
-rm -f %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
+# Keep this until transition from %%doc to %%license is done
+# and the tab is removed in UI
+# %{buildroot}%{_docdir}/freecad/ThirdPartyLibraries.html
path: package/fedora/freecad.spec
user: login: ljo
body: OK, so I remove it then.
created_at: 2025-03-18T21:48:21Z
author_association: CONTRIBUTOR
diff_hunk: @@ -7,17 +7,16 @@
 
 # Maintainers:  keep this list of plugins up to date
 # List plugins in %%{_libdir}/%{name}/lib, less '.so' and 'Gui.so', here
-%global plugins Fem FreeCAD PathApp Import Inspection Mesh MeshPart Part Points ReverseEngineering Robot Sketcher Start Web PartDesignGui _PartDesign Path PathGui Spreadsheet SpreadsheetGui area DraftUtils DraftUtils libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libSMDS libSMESH libSMESHDS libStdMeshers Measure TechDraw TechDrawGui libarea-native Surface SurfaceGui AssemblyGui flatmesh QtUnitGui PathSimulator MatGui Material
-
+%global plugins AssemblyApp AssemblyGui CAMSimulator DraftUtils Fem FreeCAD Import Inspection MatGui Materials Measure Mesh MeshPart Part PartDesignGui Path PathApp PathSimulator Points QtUnitGui ReverseEngineering Robot Sketcher Spreadsheet Start Surface TechDraw Web _PartDesign area flatmesh libDriver libDriverDAT libDriverSTL libDriverUNV libE57Format libMEFISTO2 libOndselSolver libSMDS libSMESH libSMESHDS libStdMeshers libarea-native
 
 # Some configuration options for other environments
 # rpmbuild --with=bundled_zipios:  use bundled version of zipios++
 %global bundled_zipios %{?_with_bundled_zipios: 1} %{?!_with_bundled_zipios: 1}
-# rpmbuild --without=bundled_pycxx:  don't use bundled version of pycxx
-%global bundled_pycxx %{?_without_bundled_pycxx: 0} %{?!_without_bundled_pycxx: 1}
 # rpmbuild --without=bundled_smesh:  don't use bundled version of Salome's Mesh
 %global bundled_smesh %{?_without_bundled_smesh: 0} %{?!_without_bundled_smesh: 1}
 
+# Don't use bundled version of pycxx
+%global bundled_pycxx 0
path: package/fedora/freecad.spec
user: login: ljo
body: OK, thanks, I will fix.
created_at: 2025-03-18T21:49:03Z
author_association: CONTRIBUTOR
diff_hunk: @@ -197,13 +193,14 @@ LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS
        -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
        -DRESOURCEDIR=%{_datadir}/%{name} \
        -DFREECAD_USE_EXTERNAL_PIVY=TRUE \
-       -DFREECAD_USE_PCL=TRUE \
-       -DBUILD_QT5=ON \
-       -DSHIBOKEN_INCLUDE_DIR=%{_includedir}/shiboken2 \
-       -DSHIBOKEN_LIBRARY=-lshiboken2.%{py_suffix} \
+       -DFREECAD_USE_EXTERNAL_FMT=TRUE \
+       -DFREECAD_USE_PCL:BOOL=OFF \
path: package/fedora/freecad.spec
user: login: ljo
body: I will continue to try finding a solution. But keep FREECAD_USE_PCL explicitly off until a solution is found.
created_at: 2025-03-18T22:20:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -346,12 +343,15 @@ fi
 %{_datadir}/pixmaps/*
 %{_datadir}/mime/packages/*
 %{_datadir}/thumbnailers/*
+%{_libdir}/../lib/python*/site-packages/%{name}/*
 
 %files data
 %{_datadir}/%{name}/
 %{_docdir}/%{name}/LICENSE.html
-
+# Please see note above about keeping it for now until merged
+# completely with licence tab./ljo
path: package/fedora/freecad.spec
user: login: adrianinsaval
body: ```suggestion
```
created_at: 2025-03-19T02:59:56Z
author_association: MEMBER

PR comments:
user: login: maxwxyz
created_at: 2025-02-16T18:06:35Z
body: @ljo there is a conflict in the file.
author_association: CONTRIBUTOR
user: login: ljo
created_at: 2025-02-16T19:34:27Z
body: > @ljo there is a conflict in the file.

That must be from a later commit. But I resolved it (on mobile)
author_association: CONTRIBUTOR
user: login: ljo
created_at: 2025-02-19T12:13:40Z
body: @maxwxyz are you maybe able to review this since you already looked at it?
author_association: CONTRIBUTOR
user: login: maxwxyz
created_at: 2025-02-19T18:17:30Z
body: no sorry, no expert
author_association: CONTRIBUTOR
user: login: chennes
created_at: 2025-02-24T17:05:39Z
body: @adrianinsaval could you give this a look and merge if OK?
author_association: MEMBER
user: login: chennes
created_at: 2025-03-03T17:01:26Z
body: I'm still hoping that @adrianinsaval can look at this...
author_association: MEMBER
user: login: ljo
created_at: 2025-03-04T10:35:25Z
body: @chennes Thank you, I will certainly take care of any findings. We have tested the produced artefacts on Fedora 40 and 41. Since Fedora 39 does miss some required dependencies by default and will be EOL within in three months, it has been skipped. We will test it with Fedora 42 as soon as the beta is out.
author_association: CONTRIBUTOR
user: login: ljo
created_at: 2025-03-10T10:18:57Z
body: @chennes FYI I am currently investigating what in your inclusion of PR #19725 that breaks the build on Fedora.
author_association: CONTRIBUTOR
user: login: ljo
created_at: 2025-03-16T10:11:09Z
body: It also works fine with Fedora 42 beta.
author_association: CONTRIBUTOR
user: login: ljo
created_at: 2025-03-19T12:17:16Z
body: @adrianinsaval Thanks for that. The build server seems to require `git submodule update --init`. In your opinion; should I put that in the spec file or is that something for a make step? I did an attempt in #20300 
author_association: CONTRIBUTOR