]> git.pld-linux.org Git - packages/freecad.git/blame - freecad.spec
- more work
[packages/freecad.git] / freecad.spec
CommitLineData
df5c2147
ER
1#
2# Conditional build:
3%bcond_with occ # Compile using OpenCASCADE instead of OCE
c177ecb1
AM
4%bcond_without system_zipios # use system version of zipios++
5%bcond_without system_pycxx # use system version of pycxx
6%bcond_without system_smesh # use system version of Salome's Mesh
dfd2f590 7
11963e51
AM
8# This revision is 0.15 final.
9%define rev 4671
dfd2f590
AM
10Summary: A general purpose 3D CAD modeler
11Name: freecad
11963e51 12Version: 0.15
dfd2f590 13Release: 0.1
dfd2f590 14License: GPL v2+
df5c2147 15Group: Applications/Engineering
98386dbd 16Source0: http://downloads.sourceforge.net/free-cad/%{name}_%{version}.%{rev}.tar.gz
11963e51 17# Source0-md5: 7afa95d3e8cd845bef83202e76db7f24
dfd2f590
AM
18Source101: %{name}.desktop
19Source102: %{name}.1
20Source103: %{name}.appdata.xml
21Source104: %{name}.sharedmimeinfo
c177ecb1
AM
22Patch0: freecad-3rdParty.patch
23Patch1: freecad-0.14-Xlib_h.patch
24Patch2: freecad-0.15-zipios.patch
25Patch3: freecad-0.14-Version_h.patch
11963e51 26URL: http://freecadweb.org/
dfd2f590
AM
27# Utilities
28BuildRequires: cmake
29BuildRequires: desktop-file-utils
30BuildRequires: dos2unix
31BuildRequires: doxygen
11963e51 32BuildRequires: gcc-fortran
dfd2f590
AM
33BuildRequires: gettext
34BuildRequires: graphviz
35BuildRequires: swig
dfd2f590 36BuildRequires: tbb-devel
dfd2f590 37# Development Libraries
11963e51
AM
38BuildRequires: FreeImage-devel
39BuildRequires: Mesa-libGLU-devel
dfd2f590 40BuildRequires: xorg-lib-libXmu-devel
df5c2147 41%if %{with occ}
dfd2f590
AM
42BuildRequires: OpenCASCADE-devel
43%else
44BuildRequires: OCE-devel
45%endif
11963e51 46BuildRequires: Coin-devel
dfd2f590 47BuildRequires: SoQt-devel
98386dbd 48BuildRequires: appstream-glib-devel
dfd2f590 49BuildRequires: boost-devel
11963e51 50BuildRequires: eigen3
df5c2147 51BuildRequires: libicu-devel
dfd2f590 52BuildRequires: libspnav-devel
df5c2147 53BuildRequires: netgen-mesher-devel
dfd2f590
AM
54#BuildRequires: ode-devel
55#BuildRequires: opencv-devel
98386dbd 56BuildRequires: python-devel
df5c2147 57BuildRequires: python-matplotlib
c177ecb1
AM
58%{?with_system_pycxx:BuildRequires: python-pycxx-devel}
59BuildRequires: python-PySide-devel
60BuildRequires: pyside-tools
98386dbd 61BuildRequires: qt-devel
c177ecb1 62BuildRequires: QtWebKit-devel
11963e51 63BuildRequires: shiboken
dfd2f590
AM
64BuildRequires: xerces-c
65BuildRequires: xerces-c-devel
c177ecb1 66%{?with_system_zipios:BuildRequires: zipios++-devel}
dfd2f590 67Requires: %{name}-data = %{version}-%{release}
df5c2147 68Requires: glib2 >= 1:2.26.0
dfd2f590 69# Needed for plugin support and is not a soname dependency.
dfd2f590
AM
70Requires: hicolor-icon-theme
71Requires: python-collada
72Requires: python-matplotlib
df5c2147 73Requires: python-pivy
dfd2f590 74Requires: python-pyside
df5c2147
ER
75BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
76
77# Maintainers: keep this list of plugins up to date
78# List plugins in %%{_libdir}/freecad/lib, less '.so' and 'Gui.so', here
79%define plugins Assembly Complete Drawing Fem FreeCAD Image Import Inspection Mesh MeshPart Part Points QtUnit Raytracing ReverseEngineering Robot Sketcher Start Web PartDesignGui _PartDesign
80
81# Some plugins go in the Mod folder instead of lib. Deal with those here:
82%define mod_plugins Mod/PartDesign
dfd2f590
AM
83
84# plugins and private shared libs in %%{_libdir}/freecad/lib are private;
85# prevent private capabilities being advertised in Provides/Requires
86%define plugin_regexp /^\\\(libFreeCAD.*%(for i in %{plugins}; do echo -n "\\\|$i\\\|$iGui"; done)\\\)\\\(\\\|Gui\\\)\\.so/d
87%{?filter_setup:
88%filter_provides_in %{_libdir}/%{name}/lib
89%filter_from_requires %{plugin_regexp}
90%filter_from_provides %{plugin_regexp}
91%filter_provides_in %{_libdir}/%{name}/Mod
92%filter_requires_in %{_libdir}/%{name}/Mod
93%filter_setup
94}
95
dfd2f590
AM
96%description
97FreeCAD is a general purpose Open Source 3D CAD/MCAD/CAx/CAE/PLM
98modeler, aimed directly at mechanical engineering and product design
99but also fits a wider range of uses in engineering, such as
100architecture or other engineering specialties. It is a feature-based
101parametric modeler with a modular software architecture which makes it
102easy to provide additional functionality without modifying the core
103system.
104
dfd2f590
AM
105%package data
106Summary: Data files for FreeCAD
107Requires: %{name} = %{version}-%{release}
108BuildArch: noarch
109
110%description data
df5c2147 111Data files for FreeCAD.
dfd2f590
AM
112
113%prep
114%setup -q -n %{name}-%{version}.%{rev}
df5c2147 115%patch0 -p1
df5c2147
ER
116%patch1 -p1
117%patch2 -p1
118%patch3 -p1
dfd2f590 119
c177ecb1
AM
120%if %{with system_pycxx}
121rm -r src/CXX
122%endif
123
124%if %{with system_zipios}
df5c2147 125rm -r src/zipios++
dfd2f590
AM
126%endif
127
128# Fix encodings
129dos2unix -k src/Mod/Test/unittestgui.py \
df5c2147
ER
130 ChangeLog.txt \
131 copying.lib \
132 data/License.txt
dfd2f590 133
c177ecb1 134# Removed system libraries
df5c2147 135rm -r src/3rdParty
dfd2f590
AM
136
137%build
df5c2147
ER
138install -d build
139cd build
df5c2147
ER
140%cmake \
141 -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \
142 -DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \
143 -DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \
144 -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
145 -DRESOURCEDIR=%{_datadir}/%{name} \
146 -DCOIN3D_INCLUDE_DIR=%{_includedir}/Coin2 \
147 -DCOIN3D_DOC_PATH=%{_datadir}/Coin2/Coin \
148 -DFREECAD_USE_EXTERNAL_PIVY=TRUE \
149%if %{with occ}
150 -DUSE_OCC=TRUE \
dfd2f590 151%endif
c177ecb1 152%if %{with system_smesh}
df5c2147
ER
153 -DFREECAD_USE_EXTERNAL_SMESH=TRUE \
154 -DSMESH_INCLUDE_DIR=%{_includedir}/smesh \
dfd2f590 155%endif
c177ecb1 156%if %{with system_zipios}
df5c2147 157 -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE \
dfd2f590 158%endif
c177ecb1 159%if %{with system_pycxx}
df5c2147
ER
160 -DPYCXX_INCLUDE_DIR=$(pkg-config --variable=includedir PyCXX) \
161 -DPYCXX_SOURCE_DIR=$(pkg-config --variable=srcdir PyCXX) \
dfd2f590 162%endif
df5c2147 163 ..
dfd2f590 164
df5c2147 165%{__make}
dfd2f590
AM
166%{__make} doc
167
dfd2f590
AM
168%install
169rm -rf $RPM_BUILD_ROOT
df5c2147 170%{__make} -C build install \
dfd2f590 171 DESTDIR=$RPM_BUILD_ROOT
dfd2f590
AM
172
173# Symlink binaries to %{_bindir}
174install -d $RPM_BUILD_ROOT%{_bindir}
df5c2147
ER
175ln -s ../%{_lib}/freecad/bin/FreeCAD $RPM_BUILD_ROOT%{_bindir}
176ln -s ../%{_lib}/freecad/bin/FreeCADCmd $RPM_BUILD_ROOT%{_bindir}
dfd2f590
AM
177
178# Fix problems with unittestgui.py
179#chmod +x $RPM_BUILD_ROOT%{_libdir}/%{name}/Mod/Test/unittestgui.py
180
181# Install desktop file
df5c2147 182desktop-file-install --dir=$RPM_BUILD_ROOT%{_desktopdir} %{SOURCE101}
dfd2f590
AM
183sed -i 's,@lib@,%{_lib},g' $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
184
185# Install desktop icon
df5c2147 186install -pD src/Gui/Icons/%{name}.svg $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
dfd2f590
AM
187
188# Install man page
df5c2147 189install -pD %{SOURCE102} $RPM_BUILD_ROOT%{_mandir}/man1/%{name}.1
dfd2f590 190
c177ecb1
AM
191# groff link manpage to other binary names
192echo %{name}.1 > $RPM_BUILD_ROOT%{_mandir}/man1/FreeCAD.1
193echo %{name}.1 > $RPM_BUILD_ROOT%{_mandir}/man1/FreeCADCmd.1
dfd2f590
AM
194
195# Remove obsolete Start_Page.html
df5c2147 196rm $RPM_BUILD_ROOT%{_docdir}/%{name}/Start_Page.html
dfd2f590
AM
197
198# Install MimeType file
199install -d $RPM_BUILD_ROOT%{_datadir}/mime/packages
df5c2147 200cp -p %{SOURCE104} $RPM_BUILD_ROOT%{_datadir}/mime/packages/%{name}.xml
dfd2f590
AM
201
202# Install appdata file
203install -d $RPM_BUILD_ROOT%{_datadir}/appdata
df5c2147 204cp -p %{SOURCE103} $RPM_BUILD_ROOT%{_datadir}/appdata/
dfd2f590
AM
205
206# Bug maintainers to keep %%{plugins} macro up to date.
207#
208# Make sure there are no plugins that need to be added to plugins macro
df5c2147 209new_plugins=$(ls $RPM_BUILD_ROOT%{_libdir}/freecad/lib | sed -e '%{plugin_regexp}')
dfd2f590 210if [ -n "$new_plugins" ]; then
df5c2147
ER
211 cat >&2 <<-EOF
212 **** ERROR:
213
214 Plugins not caught by regexp: $new_plugins
215
216 Plugins in %{_libdir}/freecad/lib do not exist in
217 specfile %%{plugins} macro. Please add these to
218 %%{plugins} macro at top of specfile and rebuild.
219
220 ****
221 EOF
222 exit 1
dfd2f590 223fi
df5c2147 224
dfd2f590
AM
225# Make sure there are no entries in the plugins macro that don't match plugins
226for p in %{plugins}; do
df5c2147
ER
227 if [ -z "$(ls $RPM_BUILD_ROOT%{_libdir}/freecad/lib/$p*.so)" ]; then
228 set +x
229 cat >&2 <<-EOF
230 **** ERROR:
dfd2f590 231
df5c2147
ER
232 Extra entry in %%{plugins} macro with no matching plugin:
233 '$p'
dfd2f590 234
df5c2147 235 Please remove from %%{plugins} macro at top of specfile and rebuild.
dfd2f590 236
df5c2147
ER
237 ****
238 EOF
239 exit 1
240 fi
241done
dfd2f590 242
df5c2147 243appstream-util validate-relax --nonet $RPM_BUILD_ROOT/%{_datadir}/appdata/*.appdata.xml
dfd2f590
AM
244
245%post
df5c2147
ER
246%update_icon_cache_post hicolor
247%update_desktop_database
248%update_mime_database
dfd2f590
AM
249
250%postun
251if [ $1 -eq 0 ] ; then
df5c2147 252 %update_icon_cache hicolor
dfd2f590 253fi
df5c2147
ER
254%update_desktop_database
255%update_mime_database
dfd2f590
AM
256
257%posttrans
df5c2147 258%update_icon_cache hicolor
dfd2f590
AM
259
260%clean
261rm -rf $RPM_BUILD_ROOT
262
263%files
264%defattr(644,root,root,755)
265%doc ChangeLog.txt copying.lib data/License.txt
266%exclude %{_docdir}/freecad/freecad.*
267%attr(755,root,root) %{_bindir}/*
df5c2147 268%{_mandir}/man1/*.1*
dfd2f590
AM
269%{_datadir}/appdata/*.appdata.xml
270%{_desktopdir}/%{name}.desktop
271%{_iconsdir}/hicolor/scalable/apps/%{name}.svg
272%{_datadir}/mime/packages/%{name}.xml
273%dir %{_libdir}/%{name}
df5c2147
ER
274%{_libdir}/%{name}/bin
275%{_libdir}/%{name}/lib
276%{_libdir}/%{name}/Mod
dfd2f590
AM
277
278%files data
279%defattr(644,root,root,755)
280%{_datadir}/%{name}/
281%{_docdir}/%{name}/freecad.q*
This page took 0.092242 seconds and 4 git commands to generate.