%global octpkg iso2mesh Name: octave-%{octpkg} Version: 1.9.1 Release: 7%{?dist} Summary: A 3D surface and volumetric mesh generator for MATLAB/Octave # Main package: GPLv3+ # Meshfix: GPLv2+ # JMeshLib: GPLv2+ # Tetgen: AGPLv3+ License: GPLv3+ and GPLv2+ and AGPLv3+ URL: http://iso2mesh.sf.net # the following utilities are called internally by iso2mesh (stored under a private folder), # this is needed for making outputs reproducible Source0: https://github.com/fangq/iso2mesh/archive/v%{version}/%{octpkg}-%{version}.tar.gz Source1: https://github.com/fangq/cork/archive/v0.9/cork-0.9.tar.gz Source2: https://github.com/fangq/meshfix/archive/v1.2.1/meshfix-1.2.1.tar.gz Source3: http://ftp.mcs.anl.gov/pub/petsc/externalpackages/tetgen1.5.1.tar.gz Patch0: meshfix-remove-rpath.patch ExcludeArch: armv7hl BuildRequires: cmake CGAL-devel SuperLU-devel blas-static gcc-c++ zlib-devel octave-devel %if 0%{?fedora} >=32 Requires: octave mpfr-devel boost-devel SuperLU octave-jsonlab octave-jnifti octave-zmat %else Requires: octave CGAL SuperLU octave-jsonlab octave-jnifti octave-zmat %endif Requires(post): octave Requires(postun): octave %description Iso2Mesh is a MATLAB/Octave-based mesh generation toolbox, designed for easy creation of high quality surface and tetrahedral meshes from 3D volumetric images. It contains a rich set of mesh processing scripts/programs, working either independently or interacting with external free meshing utilities. Iso2Mesh toolbox can directly convert a 3D image stack, including binary, segmented or gray-scale images such as MRI or CT scans, into quality volumetric meshes. This makes it particularly suitable for multi-modality medical imaging data analysis and multi-physics modeling. Iso2Mesh is cross-platform and is compatible with both MATLAB and GNU Octave. %package -n %{octpkg}-demos Summary: Example datasets and scripts for the Iso2Mesh toolbox BuildArch: noarch Requires: octave octave-%{octpkg} Recommends: %{octpkg}-demos %description -n %{octpkg}-demos This package contains the demo script and sample datasets for octave-%{octpkg}. %prep %setup -q -b 1 -n %{octpkg}-%{version} %setup -q -T -D -b 2 -n meshfix-1.2.1 %patch0 -p1 %setup -q -T -D -b 3 -n %{octpkg}-%{version} rm -rf tools/cork rm -rf tools/meshfix rm -rf tools/tetgen mv ../cork-0.9 tools/cork mv ../meshfix-1.2.1 tools/meshfix mv ../tetgen1.5.1 tools/tetgen rm -rf bin/*.mex* bin/*.exe bin/*.dll cp COPYING.txt COPYING cat > DESCRIPTION << EOF Name: %{octpkg} Version: %{version} Date: %(date +"%Y-%d-%m") Title: %{summary} Author: Qianqian Fang Maintainer: Qianqian Fang Description: Iso2Mesh is a MATLAB/Octave-based mesh generation toolbox, designed for easy creation of high quality surface and tetrahedral meshes from 3D volumetric images. It contains a rich set of mesh processing scripts/programs, working either independently or interacting with external free meshing utilities. Iso2Mesh toolbox can directly convert a 3D image stack, including binary, segmented or gray-scale images such as MRI or CT scans, into quality volumetric meshes. This makes it particularly suitable for multi-modality medical imaging data analysis and multi-physics modeling. Iso2Mesh is cross-platform and is compatible with both MATLAB and GNU Octave. URL: %{url} Depends: jnifti, jsonlab, zmat Categories: Mesh EOF cat > INDEX << EOF iso2mesh >> Iso2Mesh Iso2Mesh advancefront barydualmesh bbxflatsegment binsurface bwislands cgals2m cgalv2m deislands2d deislands3d delendelem deletemeshfile edgeneighbors elemfacecenter elemvolume extractloops extrudecurve extrudesurf faceneighbors fallbackexeext fillholes3d fillsurf finddisconnsurf flatsegment getexeext getintersecttri getoptkey getplanefrom3pt getvarfrom highordertet i2m imedge3d img2mesh innersurf insurface internalpoint iso2meshver isoctavemesh jsonopt latticegrid m2v maskdist maxsurf mcpath memmapstream mergemesh mergestruct mergesurf mesh2mask mesh2vol meshabox meshacylinder meshanellip meshasphere meshcentroid meshcheckrepair meshconn meshcylinders meshedge mesheuler meshface meshgrid5 meshgrid6 meshinterp meshquality meshrefine meshremap meshreorient meshresample meshunitsphere mwpath neighborelem nodevolume orderloopedge orthdisk outersurf plotedges plotmesh plotsurf plottetra qmeshcut raysurf raytrace readasc readgts readinr readmedit readmptiff readnirfast readoff readsmf readtetgen remeshsurf removedupelem removedupnodes removeisolatednode removeisolatedsurf rotatevec3d rotmat2vec s2m s2v saveabaqus saveasc savebinstl savedxf savegts saveinr savejmesh savejson savemedit savemphtxt savemsh savenirfast saveoff savesmf savestl savesurfpoly savetetgenele savetetgennode savevrml smoothbinvol smoothsurf sms sortmesh surf2mesh surf2vol surf2volz surfaceclean surfacenorm surfboolean surfdiffuse surfedge surfinterior surfpart surfplane surfreorient surfseeds surfvolume thickenbinvol thinbinvol uniqedges uniqfaces v2m v2s varargin2struct vol2mesh vol2restrictedtri vol2surf volface volmap2mesh EOF mkdir -p inst/ rm -rf base64decode base64encode fast_match_bracket gzipdecode gzipencode \ jdatadecode jdataencode jnifticreate loadjnifti loadjson loadmsgpack \ loadnifti loadubjson lz4decode lz4encode lz4hcdecode lz4hcencode lzipdecode \ lzipencode lzmadecode lzmaencode match_bracket nestbracket2dim nifticreate \ nii2jnii niicodemap niiformat readnifti savebnii savejnifti savejnii \ savemsgpack savenifti saveubjson zlibdecode zlibencode mv *.m inst/ mv img2mesh.fig inst/ # Fix jmeshlib build flags sed -e "s|-Wall|%{optflags}|;s|^LIBS = |&$RPM_LD_FLAGS |" \ -i tools/meshfix/contrib/JMeshLib/test/Makefile # Fix tetgen build flags sed -e "s|^\(CXXFLAGS = \).*|\1%{optflags} $RPM_LD_FLAGS|" \ -e "s|-O0|%{optflags} $RPM_LD_FLAGS|" \ -i tools/tetgen/makefile # Fix cgal 5.1 build error sed -e "s/Midpoint_and_length\.h>/Midpoint_placement.h>\n#include /g" \ -i tools/cgalsimp2/edge_collapse_enriched_polyhedron.cpp %build %set_build_flags pushd tools # can't use make_build macro below because parallel make with CGAL exhausts # vm's memory and crash the building process, use sequential make instead make USERCCFLAGS="%{optflags}" popd pushd bin ln -s tetgen1.5 tetgen popd mkdir inst/bin pushd bin for exec in *; do ln -s %{_libexecdir}/%{octpkg}/$exec ../inst/bin/$exec done popd %octave_pkg_build %if 0%{?fedora} <=30 %global octave_tar_suffix any-none %endif %install %octave_pkg_install install -m 0755 -vd %{buildroot}%{_libexecdir}/%{octpkg} install -m 0755 -vp bin/* %{buildroot}%{_libexecdir}/%{octpkg}/ %post %octave_cmd pkg rebuild %preun %octave_pkg_preun %postun %octave_cmd pkg rebuild %files %license COPYING.txt %doc README.txt %doc Content.txt %doc AUTHORS.txt %doc ChangeLog.txt %dir %{octpkgdir} %dir %{octpkgdir}/doc %dir %{octpkgdir}/bin %{_libexecdir}/%{octpkg} %{octpkgdir}/doc/* %{octpkgdir}/bin/* %{octpkgdir}/*.m %{octpkgdir}/*.fig %doc %{octpkgdir}/doc-cache %{octpkgdir}/packinfo %files -n %{octpkg}-demos %license COPYING.txt %doc sample %changelog * Fri Sep 04 2020 Qianqian Fang - 1.9.1-8 - Fix cgal build error on F33 * Sat Aug 01 2020 Fedora Release Engineering - 1.9.1-7 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Tue Jul 28 2020 Fedora Release Engineering - 1.9.1-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Wed Jan 29 2020 Fedora Release Engineering - 1.9.1-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild * Mon Nov 25 2019 Jerry James - 1.9.1-4 - Rebuild for mpfr 4 - Use Fedora build flags when building jmeshlib and tetgen * Fri Oct 11 2019 Qianqian Fang - 1.9.1-3 - Define octave package-level dependency via the DESCRIPTION file - Remove gmp-devel from Requires * Thu Oct 10 2019 Qianqian Fang - 1.9.1-2 - Fix licenses - Move binaries to libexec * Wed Oct 02 2019 Qianqian Fang - 1.9.1-1 - Initial package