Name: opencascade
Version: 7.4.0
Release: 2%{?dist}
Summary: SDK intended for development of applications dealing with 3D CAD data
License: LGPLv2+ with exception
URL: https://www.opencascade.com/content/overview
# Upstream requires a login to download sources.
# https://www.opencascade.com/content/latest-release
# The following URL (after expansion) will work using links from the command line.
# https://www.opencascade.com/sites/default/files/private/occt/OCC_%%{version}_release/%%{name}-%%{version}.tgz
Source0: %{name}-%{version}.tgz
Source1: DRAWEXE.1
Source2: opencascade-draw.desktop
Source3: occ-256.png
Source4: occ-128.png
Source5: occ-64.png
Source6: occ-48.png
Patch0: opencascade-cmake.patch
# Utilities
BuildRequires: cmake gcc gcc-c++
BuildRequires: desktop-file-utils
BuildRequires: doxygen
# Libraries
BuildRequires: xorg-x11-proto-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
BuildRequires: freeimage-devel
BuildRequires: gl2ps-devel
BuildRequires: libgomp
BuildRequires: tcl-devel
BuildRequires: tk-devel
BuildRequires: tbb-devel
BuildRequires: vtk-devel
# https://fedorahosted.org/fpc/ticket/174
Provides: bundled(gnulib)
%description
Open CASCADE Technology (OCCT) 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
%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
%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
%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
%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
%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
%description draw
OpenCASCADE CAE DRAW test harness.
%package devel
Summary: OpenCASCADE CAE platform library development files
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: 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
Requires: tbb-devel
Requires: tcl-devel
Requires: tk-devel
%description devel
OpenCASCADE CAE platform library development files
%prep
%autosetup -p1
# Sources are marked executable for no good reason...
find ./src -type f -exec chmod -x {} \;
# Fix executable set on text files.
chmod 0644 *.txt
%build
mkdir build && cd build
# opencascade does some manual install trickery that does not respect DESTDIR.
# Make DESTDIR and environment variable that can be passed into the CMake config.
export DESTDIR="%{buildroot}"
%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DUSE_TBB=True \
-DUSE_VTK=True \
-DINSTALL_DIR_LIB=%{_lib} \
-DINSTALL_DIR_CMAKE=%{_lib}/cmake/%{name} \
../
%make_build
%install
cd build
%make_install
# Draw binary should not be versioned.
mv %{buildroot}%{_bindir}/DRAWEXE-%{version} \
%{buildroot}%{_bindir}/DRAWEXE
# 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}/occ-${size}.png
install -Dm 0644 $icon \
%{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/occ.png
done
# Remove license files so they can be included by %%license.
rm -f %{buildroot}%{_docdir}/%{name}/{LICENSE_LGPL_21.txt,OCCT_LGPL_EXCEPTION.txt}
# Fix non-executable shell scripts
chmod 0755 %{buildroot}%{_bindir}/*.sh
%files foundation
%doc README.txt
%license LICENSE_LGPL_21.txt OCCT_LGPL_EXCEPTION.txt
# Foundation
%{_libdir}/libTKernel.so.*
%{_libdir}/libTKMath.so.*
%{_datadir}/opencascade/
%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}/libTKBool.so.*
%{_libdir}/libTKHLR.so.*
%{_libdir}/libTKFillet.so.*
%{_libdir}/libTKOffset.so.*
%{_libdir}/libTKFeat.so.*
%{_libdir}/libTKMesh.so.*
%{_libdir}/libTKXMesh.so.*
%{_libdir}/libTKShHealing.so.*
# Data exchange
%{_libdir}/libTKXSBase.so.*
%{_libdir}/libTKSTEPBase.so.*
%{_libdir}/libTKSTEPAttr.so.*
%{_libdir}/libTKSTEP209.so.*
%{_libdir}/libTKSTEP.so.*
%{_libdir}/libTKIGES.so.*
%{_libdir}/libTKXCAF.so.*
%{_libdir}/libTKXDEIGES.so.*
%{_libdir}/libTKXDESTEP.so.*
%{_libdir}/libTKSTL.so.*
%{_libdir}/libTKVRML.so.*
%{_libdir}/libTKXmlXCAF.so.*
%{_libdir}/libTKBinXCAF.so.*
%{_libdir}/libTKRWMesh.so.*
%files visualization
# Visualization Dependents
%{_libdir}/libTKService.so.*
%{_libdir}/libTKV3d.so.*
# Visualization
%{_libdir}/libTKOpenGl.so.*
%{_libdir}/libTKMeshVS.so.*
%{_libdir}/libTKIVtk.so.*
%files ocaf
# Application framework
%{_libdir}/libTKCDF.so.*
%{_libdir}/libTKLCAF.so.*
%{_libdir}/libTKCAF.so.*
%{_libdir}/libTKBinL.so.*
%{_libdir}/libTKXmlL.so.*
%{_libdir}/libTKBin.so.*
%{_libdir}/libTKXml.so.*
%{_libdir}/libTKStdL.so.*
%{_libdir}/libTKStd.so.*
%{_libdir}/libTKTObj.so.*
%{_libdir}/libTKBinTObj.so.*
%{_libdir}/libTKXmlTObj.so.*
%{_libdir}/libTKVCAF.so.*
%files draw
# Draw Libraries
%{_libdir}/libTKDraw.so.*
%{_libdir}/libTKIVtkDraw.so.*
%{_libdir}/libTKQADraw.so.*
%{_libdir}/libTKTopTest.so.*
%{_libdir}/libTKViewerTest.so.*
%{_libdir}/libTKXSDRAW.so.*
%{_libdir}/libTKDCAF.so.*
%{_libdir}/libTKXDEDRAW.so.*
%{_libdir}/libTKTObjDRAW.so.*
# DRAWEXE application
%{_bindir}/DRAWEXE
%{_mandir}/man1/DRAWEXE.1.gz
%{_datadir}/applications/opencascade-draw.desktop
%{_datadir}/icons/hicolor/*/apps/*
%files devel
%{_bindir}/*.sh
%{_includedir}/opencascade
%{_libdir}/*.so
%{_libdir}/cmake/opencascade/*.cmake
%changelog
* Mon Nov 04 2019 Richard Shaw <hobbes1069@gmail.com> - 7.4.0-2
- Update per reviewer requests.
* Mon Oct 21 2019 Richard Shaw <hobbes1069@gmail.com> - 7.4.0-1
- Initial Packaging.