%global commit 7a8128711e768f5b72fd9c4e68ad1893aa0db61f
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global ver_major 0
%global ver_minor 17
%global ver_patch 1
Name: OCE
Version: %{ver_major}.%{ver_minor}%{?ver_patch:.%{ver_patch}}
Release: 1%{?relcan:.rc%{relcan}}%{?dist}
Summary: OpenCASCADE Community Edition
License: LGPLv2 with exception
URL: https://github.com/tpaviot/oce
Source0: https://github.com/tpaviot/oce/archive/%{name}-%{version}%{?relcan:-rc%{relcan}}.tar.gz
Patch0: OCE-null_ref.patch
Source1: DRAWEXE.1
Source2: opencascade-draw.desktop
Source3: oce-256.png
Source4: oce-128.png
Source5: oce-64.png
Source6: oce-48.png
# Utilities
BuildRequires: cmake
BuildRequires: desktop-file-utils
# Libraries
BuildRequires: xorg-x11-proto-devel
BuildRequires: libXxf86misc-devel
BuildRequires: libXScrnSaver-devel
BuildRequires: libXrandr-devel
BuildRequires: libXpm-devel
BuildRequires: libxkbfile-devel
BuildRequires: libXinerama-devel
BuildRequires: libXres-devel
BuildRequires: libXtst-devel
BuildRequires: libXcomposite-devel
BuildRequires: libXcursor-devel
BuildRequires: libXdmcp-devel
BuildRequires: libXi-devel
BuildRequires: libXv-devel
BuildRequires: mesa-libGL-devel mesa-libGLU-devel
BuildRequires: libXmu-devel
BuildRequires: ftgl-devel
%if ! 0%{?rhel}
BuildRequires: freeimage-devel
%endif
BuildRequires: gl2ps-devel
BuildRequires: libgomp
BuildRequires: tcl-devel
BuildRequires: tk-devel
# TBB is not available on non-intel arches.
%ifnarch %arm ppc64
# TBB in EPEL 6 is too old, use openmpi instead.
%if 0%{?fedora} || 0%{?rhel} > 6
BuildRequires: tbb-devel
%else
BuildRequires: openmpi-devel
%endif
BuildRequires: openmpi-devel
%endif
# https://fedorahosted.org/fpc/ticket/174
Provides: bundled(gnulib)
%description
OpenCASCADE Community Edition (OCE) is a suite for 3D surface and solid
modeling, visualization, data exchange and rapid application development. It
is an excellent platform for development of numerical simulation software
including CAD/CAM/CAE, AEC and GIS, as well as PDM applications.
%package foundation
Summary: OpenCASCADE CAE platform shared libraries
Group: System Environment/Libraries
%description foundation
OpenCASCADE CAE platform shared libraries
This package contains foundation classes which provide a variety of
general-purpose services such as automated management of heap memory,
exception handling, classes for manipulating aggregates of data, basic
math tools.
%package modeling
Summary: OpenCASCADE CAE platform shared libraries
Group: System Environment/Libraries
%description modeling
OpenCASCADE CAE platform shared libraries
This package supplies data structures to represent 2D and 3D geometric models,
as well as topological and geometrical algorithms.
%package ocaf
Summary: OpenCASCADE CAE platform shared libraries
Group: System Environment/Libraries
%description ocaf
OpenCASCADE CAE platform shared libraries
This package provides OpenCASCADE Application Framework services and
support for data exchange.
%package visualization
Summary: OpenCASCADE CAE platform shared libraries
Group: System Environment/Libraries
%description visualization
OpenCASCADE CAE platform shared libraries
This package provides services for displaying 2D and 3D graphics.
%package examples
Summary: OpenCASCADE CAE platform shared libraries
Group: System Environment/Libraries
%description examples
OpenCASCADE CAE platform shared libraries
This package contains example input files for OpenCASCADE in various formats.
%package draw
Summary: OpenCASCADE CAE platform shared libraries
Group: System Environment/Libraries
%description draw
OpenCASCADE CAE DRAW test harness.
%package devel
Summary: OpenCASCADE CAE platform library development files
Group: Development/Libraries
Requires: %{name}-draw%{?_isa} = %{version}-%{release}
Requires: %{name}-foundation%{?_isa} = %{version}-%{release}
Requires: %{name}-modeling%{?_isa} = %{version}-%{release}
Requires: %{name}-ocaf%{?_isa} = %{version}-%{release}
Requires: %{name}-visualization%{?_isa} = %{version}-%{release}
Requires: freeimage-devel
Requires: freetype-devel
Requires: gl2ps-devel
Requires: libICE-devel
Requires: libSM-devel
Requires: libX11-devel
Requires: libXext-devel
Requires: libXxf86misc-devel
Requires: libXScrnSaver-devel
Requires: libXrandr-devel
Requires: libXpm-devel
Requires: libxkbfile-devel
Requires: libXinerama-devel
Requires: libXres-devel
Requires: libXtst-devel
Requires: libXcomposite-devel
Requires: libXcursor-devel
Requires: libXdmcp-devel
Requires: libXi-devel
Requires: libXv-devel
Requires: mesa-libGL-devel
Requires: mesa-libGLU-devel
%ifnarch %arm ppc64
%if 0%{?fedora} || 0%{?rhel} > 6
Requires: tbb-devel
%else
Requires: openmpi-devel
%endif
Requires: openmpi-devel
%endif
Requires: tcl-devel
Requires: tk-devel
%description devel
OpenCASCADE CAE platform library development files
%prep
%setup -q -n oce-%{name}-%{version}
%patch0 -p1 -b .null_ref
%build
rm -rf build && mkdir build && pushd build
# Stop excessive linking that cmake projects are prone to.
export LDFLAGS="-Wl,--as-needed"
# Work around GCC 6 issue
# https://bugzilla.redhat.com/show_bug.cgi?id=1307286
#CFLAGS='%{optflags} -fno-delete-null-pointer-checks'; export CFLAGS
#CXXFLAGS='%{optflags} -fno-delete-null-pointer-checks'; export CXXFLAGS
%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOCE_INSTALL_PREFIX=%{_prefix} \
-DOCE_INSTALL_LIB_DIR=%{_lib} \
-DOCE_WITH_FREEIMAGE=ON \
-DOCE_WITH_GL2PS=ON \
%ifnarch %arm ppc64
%if 0%{?fedora} || 0%{?rhel} > 6
-DOCE_MULTITHREAD_LIBRARY:STRING=TBB \
%else
-DOCE_MULTITHREAD_LIBRARY:STRING=OPENMP \
-DCMAKE_SKIP_RPATH=FALSE \
%endif
%else
-DOCE_MULTITHREAD_LIBRARY:STRING=OPENMP \
%endif
-DOCE_DRAW=ON \
-DOCE_TESTING=ON \
../
make %{?_smp_mflags}
%install
pushd build
%make_install
popd
# Install manpage for DRAWEXE
install -Dm 0644 %{SOURCE1} %{buildroot}%{_mandir}/man1/DRAWEXE.1
# Install and validate desktop file
desktop-file-install \
--dir=%{buildroot}%{_datadir}/applications \
%{SOURCE2}
# Install icons
for size in 256 128 64 48; do
icon=%{_sourcedir}/oce-${size}.png
install -Dm 0644 $icon \
%{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/oce.png
done
%check
pushd build/test
export CTEST_OUTPUT_ON_FAILURE=1
make test
%post foundation -p /sbin/ldconfig
%postun foundation -p /sbin/ldconfig
%post modeling -p /sbin/ldconfig
%postun modeling -p /sbin/ldconfig
%post ocaf -p /sbin/ldconfig
%postun ocaf -p /sbin/ldconfig
%post visualization -p /sbin/ldconfig
%postun visualization -p /sbin/ldconfig
%post draw
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
%postun draw
if [ $1 -eq 0 ] ; then
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi
%posttrans draw
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%files foundation
%doc AUTHORS.md NEWS.md README.md
%license LICENSE_LGPL_21.txt OCCT_LGPL_EXCEPTION.txt
# Foundation
%{_libdir}/libTKernel.so.*
%{_libdir}/libTKMath.so.*
%{_datadir}/oce-%{ver_major}.%{ver_minor}/
%files modeling
# Modeling Data
%{_libdir}/libTKG2d.so.*
%{_libdir}/libTKG3d.so.*
%{_libdir}/libTKGeomBase.so.*
%{_libdir}/libTKBRep.so.*
# Modeling Algorithms
%{_libdir}/libTKGeomAlgo.so.*
%{_libdir}/libTKTopAlgo.so.*
%{_libdir}/libTKPrim.so.*
%{_libdir}/libTKBO.so.*
%{_libdir}/libTKHLR.so.*
%{_libdir}/libTKMesh.so.*
%{_libdir}/libTKShHealing.so.*
%{_libdir}/libTKXMesh.so.*
%{_libdir}/libTKBool.so.*
%{_libdir}/libTKFillet.so.*
%{_libdir}/libTKFeat.so.*
%{_libdir}/libTKOffset.so.*
# Data exchange
%{_libdir}/libTKSTL.so.*
%{_libdir}/libTKXSBase.so.*
%{_libdir}/libTKSTEPBase.so.*
%{_libdir}/libTKIGES.so.*
%{_libdir}/libTKSTEPAttr.so.*
%{_libdir}/libTKSTEP209.so.*
%{_libdir}/libTKSTEP.so.*
%{_libdir}/libTKVRML.so.*
%{_libdir}/libTKXCAF.so.*
%{_libdir}/libTKXCAFSchema.so.*
%{_libdir}/libTKXmlXCAF.so.*
%{_libdir}/libTKBinXCAF.so.*
%{_libdir}/libTKXDEIGES.so.*
%{_libdir}/libTKXDESTEP.so.*
%files visualization
# Visualization Dependents
%{_libdir}/libTKService.so.*
%{_libdir}/libTKV3d.so.*
# Visualization
%{_libdir}/libTKOpenGl.so.*
%{_libdir}/libTKMeshVS.so.*
%{_libdir}/libTKNIS.so.*
%{_libdir}/libTKVoxel.so.*
%files ocaf
# Application framework
%{_libdir}/libTKCDF.so.*
%{_libdir}/libPTKernel.so.*
%{_libdir}/libTKLCAF.so.*
%{_libdir}/libFWOSPlugin.so.*
%{_libdir}/libTKPShape.so.*
%{_libdir}/libTKBinL.so.*
%{_libdir}/libTKXmlL.so.*
%{_libdir}/libTKPLCAF.so.*
%{_libdir}/libTKTObj.so.*
%{_libdir}/libTKShapeSchema.so.*
%{_libdir}/libTKStdLSchema.so.*
%{_libdir}/libTKCAF.so.*
%{_libdir}/libTKBin.so.*
%{_libdir}/libTKXml.so.*
%{_libdir}/libTKPCAF.so.*
%{_libdir}/libTKBinTObj.so.*
%{_libdir}/libTKXmlTObj.so.*
%{_libdir}/libTKStdSchema.so.*
%files draw
# Draw Libraries
%dir %{_libdir}/oce-%{ver_major}.%{ver_minor}
%{_libdir}/oce-%{ver_major}.%{ver_minor}/libTKDraw.so.*
%{_libdir}/oce-%{ver_major}.%{ver_minor}/libTKTopTest.so.*
%{_libdir}/oce-%{ver_major}.%{ver_minor}/libTKViewerTest.so.*
%{_libdir}/oce-%{ver_major}.%{ver_minor}/libTKXSDRAW.so.*
%{_libdir}/oce-%{ver_major}.%{ver_minor}/libTKDCAF.so.*
%{_libdir}/oce-%{ver_major}.%{ver_minor}/libTKXDEDRAW.so.*
%{_libdir}/oce-%{ver_major}.%{ver_minor}/libTKTObjDRAW.so.*
# DRAWEXE application
%{_bindir}/DRAWEXE
%{_mandir}/man1/DRAWEXE.1.gz
%{_datadir}/applications/opencascade-draw.desktop
%{_datadir}/icons/hicolor/*/apps/*
%files devel
%doc examples
%{_includedir}/*
%{_libdir}/*.so
%{_libdir}/oce-%{ver_major}.%{ver_minor}/*.so
%{_libdir}/oce-%{ver_major}.%{ver_minor}/*.cmake
%changelog
* Tue Mar 29 2016 Richard Shaw <hobbes1069@gmail.com> - 0.17.1-1
- Update to latest upstream release.
* Wed Feb 17 2016 Richard Shaw <hobbes1069@gmail.com> - 0.16.1-7
- Apply patch from upstream to address FTBFS with GCC 6.
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.16.1-6.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Jan 15 2016 Jerry James <loganjerry@gmail.com> - 0.16.1-6
- Rebuild for tbb 4.4u2
* Tue Jul 7 2015 Richard Shaw <hobbes1069@gmail.com> - 0.16.1-5
- Add OCE-draw to devel package requirements, fixes BZ#1239254.
- Update spec file to use license macro where appropriate.
- Perform hardened builds.
* Tue Jun 16 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.16.1-4.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Thu Apr 30 2015 Jiri Kastner <jkastner@redhat.com> - 0.16.1-4
- added missing libX* dependencies
* Thu Apr 30 2015 Jiri Kastner <jkastner@redhat.com> - 0.16.1-3
- fix tbb and freeimage dependency conditions
* Tue Apr 28 2015 Jiri Kastner <jkastner@redhat.com> - 0.16.1-2
- skipping failing tests on rhel6
* Fri Apr 24 2015 Richard Shaw <hobbes1069@gmail.com> - 0.16.1-1
- Update to latest upstream release.
* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.16-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Mon Jul 21 2014 Richard Shaw <hobbes1069@gmail.com> - 0.16-1
- Update to latest upstream release.
* Fri Jun 06 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Wed May 21 2014 Jaroslav Škarvada <jskarvad@redhat.com> - 0.15-3.1
- Rebuilt for https://fedoraproject.org/wiki/Changes/f21tcl86
* Mon May 19 2014 Richard Shaw <hobbes1069@gmail.com> - 0.15-3
- gxx files no longer empty so stop removing them.
* Sat Feb 15 2014 Richard Shaw <hobbes1069@gmail.com> - 0.15-2
- Update license tag and include LGPL exception file in doc.
* Wed Feb 12 2014 Richard Shaw <hobbes1069@gmail.com> - 0.15-1
- Update to latest upstream release.
* Mon Jan 27 2014 Richard Shaw <hobbes1069@gmail.com> - 0.15-0.2.rc2
- Test build of 0.15 release candidate.
* Thu Oct 10 2013 Richard Shaw <hobbes1069@gmail.com> - 0.13-1
- Update to latest upstream release.
* Mon Jul 15 2013 Richard Shaw <hobbes1069@gmail.com> - 0.12-1
- Update to latest upstream release as it adds some performance enhancements.
* Mon Feb 18 2013 Richard Shaw <hobbes1069@gmail.com> - 0.11-2
- Add tbb-devel as build requirement.
* Fri Feb 15 2013 Richard Shaw <hobbes1069@gmail.com> - 0.11-1
- Update to latest upstream release.
* Wed May 02 2012 Richard Shaw <hobbes1069@gmail.com> - 0.8.0-3
- Update icons.
* Mon Dec 19 2011 Richard Shaw <hobbes1069@gmail.com> - 0.8.0-2
- Build against OpenMP for parallelization.
- Fix problem with OCE overriding build flags.
* Mon Dec 12 2011 Richard Shaw <hobbes1069@gmail.com> - 0.8.0-1
- Update to 0.8.0.
- Use %%{buildroot} consistently.
- Fix excess linking.
* Tue Nov 08 2011 Richard Shaw <hobbes1069@gmail.com> - 0.7.0-1
- Initial release.