# Maintainers: keep this list of plugins up to date # List plugins in %%{_libdir}/freecad/lib, less '.so' and 'Gui.so', here %global plugins Complete Drawing Fem FreeCAD Image Import Inspection Mesh MeshPart Part Points QtUnit Raytracing ReverseEngineering Robot Sketcher Start Web PartDesignGui _PartDesign Spreadsheet SpreadsheetGui DraftUtils Path PathGui area # Some plugins go in the Mod folder instead of lib. Deal with those here: %global mod_plugins Mod/PartDesign %define srcname FreeCAD Name: freecad Version: 0.16.6712 %define subrel 1 Release: %mkrel 1 Summary: A general purpose 3D CAD modeler Group: Graphics/3D License: GPLv2+ URL: http://www.freecadweb.org/ Source0: https://github.com/%{srcname}/%{srcname}/archive/%{version}/%{srcname}-%{version}.tar.gz Source101: freecad.desktop Source102: freecad.1 Source103: freecad.appdata.xml Source104: freecad.sharedmimeinfo Patch0: freecad-3rdParty.patch Patch1: freecad-0.15-zipios.patch Patch2: freecad-0.14-Version_h.patch # Utilities BuildRequires: cmake BuildRequires: doxygen BuildRequires: swig BuildRequires: graphviz BuildRequires: gettext BuildRequires: dos2unix BuildRequires: desktop-file-utils BuildRequires: autoconf BuildRequires: automake BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: gcc-gfortran # Development Libraries BuildRequires: glibc-devel BuildRequires: boost-devel BuildRequires: opencascade-devel BuildRequires: smesh-devel BuildRequires: coin-devel BuildRequires: eigen3-devel BuildRequires: shiboken-devel BuildRequires: spnav-devel BuildRequires: qt4-devel BuildRequires: qtwebkit-devel BuildRequires: soqt-devel BuildRequires: python-devel BuildRequires: python-cxx-devel BuildRequires: python-qt4-webkit BuildRequires: pyside-devel BuildRequires: pyside-tools BuildRequires: python-matplotlib BuildRequires: freeglut-devel BuildRequires: libxerces-c-devel BuildRequires: freetype-devel BuildRequires: zipios++-devel BuildRequires: libxmu-devel BuildRequires: freeimage-devel # Packages separated because they are noarch, but not optional so require them # here. Requires: %{name}-data = %{version}-%{release} Requires: hicolor-icon-theme Requires: python-pivy Requires: python-matplotlib Requires: python-collada Requires: pyside Requires: openscad # plugins and private shared libs in %%{_libdir}/freecad/lib are private; # prevent private capabilities being advertised in Provides/Requires %define plugin_regexp /^\\\(libFreeCAD.*%(for i in %{plugins}; do echo -n "\\\|$i\\\|$iGui"; done)\\\)\\\(\\\|Gui\\\)\\.so/d %global __provides_exclude_from %{_libdir}/%{name}/lib/%{plugin_regexp}|%{_libdir}/%{name}/Mod/%{plugin_regexp} %description FreeCAD is a general purpose Open Source 3D CAD/MCAD/CAx/CAE/PLM modeler, aimed directly at mechanical engineering and product design but also fits a wider range of uses in engineering, such as architecture or other engineering specialties. It is a feature-based parametric modeler with a modular software architecture which makes it easy to provide additional functionality without modifying the core system. %package data Summary: Data files for FreeCAD BuildArch: noarch Requires: %{name} = %{version}-%{release} Requires: qt4-assistant %description data Data files for FreeCAD. %prep %setup -q -n %{srcname}-%{version} %patch0 -p1 -b .3rdparty %patch1 -p1 -b .zipios %patch2 -p1 # Fix encodings dos2unix -k src/Mod/Test/unittestgui.py \ ChangeLog.txt \ copying.lib \ data/License.txt # Removed bundled libraries rm -rf src/3rdParty rm -rf src/CXX rm -rf src/zipios++ %build # Deal with cmake projects that tend to link excessively. LDFLAGS='-Wl,--as-needed -Wl,--no-undefined'; export LDFLAGS %cmake -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \ -DCMAKE_INSTALL_LIBDIR=%{_libdir}/%{name}/lib \ -DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \ -DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \ -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \ -DRESOURCEDIR=%{_datadir}/%{name} \ -DCOIN3D_DOC_PATH=%{_datadir}/Coin3/Coin \ -DFREECAD_USE_EXTERNAL_SMESH=TRUE \ -DSMESH_INCLUDE_DIR=%{_includedir}/smesh \ -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE \ -DPYCXX_INCLUDE_DIR=$(pkg-config --variable=includedir PyCXX) \ -DPYCXX_SOURCE_DIR=$(pkg-config --variable=srcdir PyCXX) \ ../ %make_build %install %make_install -C build # Launchers in /usr/bin mkdir -p %{buildroot}%{_bindir} cat > %{buildroot}%{_bindir}/FreeCAD << EOF #!/bin/bash LD_LIBRARY_PATH=%{_libdir}/freecad/lib %{_libdir}/freecad/bin/FreeCAD "\$@" EOF cat > %{buildroot}%{_bindir}/FreeCADCmd << EOF #!/bin/bash LD_LIBRARY_PATH=%{_libdir}/freecad/lib %{_libdir}/freecad/bin/FreeCADCmd "\$@" EOF chmod a+rx %{buildroot}%{_bindir}/FreeCAD chmod a+rx %{buildroot}%{_bindir}/FreeCADCmd # Install desktop file desktop-file-install \ --dir=%{buildroot}%{_datadir}/applications \ %{SOURCE101} sed -i 's,@lib@,%{_lib},g' %{buildroot}%{_datadir}/applications/%{name}.desktop # Install desktop icon install -pD -m 0644 src/Gui/Icons/%{name}.svg \ %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg # Install man page install -pD -m 0644 %{SOURCE102} \ %{buildroot}%{_mandir}/man1/%{name}.1 # Symlink manpage to other binary names pushd %{buildroot}%{_mandir}/man1 ln -sf %{name}.1.gz FreeCAD.1.xz ln -sf %{name}.1.gz FreeCADCmd.1.xz popd # Remove obsolete Start_Page.html rm -f %{buildroot}%{_docdir}/%{name}/Start_Page.html # Install MimeType file mkdir -p %{buildroot}%{_datadir}/mime/packages install -pm 0644 %{SOURCE104} %{buildroot}%{_datadir}/mime/packages/%{name}.xml # Install appdata file mkdir -p %{buildroot}%{_datadir}/appdata install -pm 0644 %{SOURCE103} %{buildroot}%{_datadir}/appdata/ # Bug maintainers to keep %%{plugins} macro up to date. # # Make sure there are no plugins that need to be added to plugins macro new_plugins=`ls %{buildroot}%{_libdir}/freecad/lib | sed -e '%{plugin_regexp}'` if [ -n "$new_plugins" ]; then echo -e "\n\n\n**** ERROR:\n" \ "\nPlugins not caught by regexp: " $new_plugins \ "\n\nPlugins in %{_libdir}/freecad/lib do not exist in" \ "\nspecfile %%{plugins} macro. Please add these to" \ "\n%%{plugins} macro at top of specfile and rebuild.\n****\n" 1>&2 exit 1 fi # Make sure there are no entries in the plugins macro that don't match plugins for p in %{plugins}; do if [ -z "`ls %{buildroot}%{_libdir}/freecad/lib/$p*.so`" ]; then set +x echo -e "\n\n\n**** ERROR:\n" \ "\nExtra entry in %%{plugins} macro with no matching plugin:" \ "'$p'.\n\nPlease remove from %%{plugins} macro at top of" \ "\nspecfile and rebuild.\n****\n" 1>&2 exit 1 fi done %files %license copying.lib data/License.txt %doc ChangeLog.txt README.md %exclude %{_docdir}/freecad/freecad.* %{_bindir}/* %{_datadir}/appdata/*.appdata.xml %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{_datadir}/mime/packages/%{name}.xml %dir %{_libdir}/%{name} %{_libdir}/%{name}/bin/ %{_libdir}/%{name}/lib/ %{_libdir}/%{name}/Mod/ %{_mandir}/man1/*.1.xz %files data %{_datadir}/%{name}/ %{_docdir}/%{name}/freecad.q* %changelog * Mon Apr 16 2018 daviddavid <daviddavid> 0.16.6712-1.1.mga6 (not released yet) + Revision: 1219361 - rebuild for new opencascade (OCE 0.18.3) + kekepower <kekepower> - Update to version 0.16.6712 to fix crash (mga#22858) * Tue Jan 31 2017 barjac <barjac> 0.16-2.mga6 + Revision: 1084306 - Rebuild for eigen3 * Mon Jan 23 2017 daviddavid <daviddavid> 0.16-1.mga6 + Revision: 1083251 - new version: 0.16 - remove patch which has been included upstream * Tue Dec 29 2015 ycantin <ycantin> 0.15-6.mga6 + Revision: 916830 - fix build : backport upstream patch for boost 1.60 + daviddavid <daviddavid> - rebuild for new boost 1.60.0 * Fri Oct 23 2015 ycantin <ycantin> 0.15-1.mga6 + Revision: 894390 - imported package freecad