Blob Blame History Raw
%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.