diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c61e2e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/cork-0.9.tar.gz +/iso2mesh-1.9.1.tar.gz +/meshfix-1.2.1.tar.gz +/tetgen1.5.1.tar.gz diff --git a/meshfix-remove-rpath.patch b/meshfix-remove-rpath.patch new file mode 100644 index 0000000..9ec17cc --- /dev/null +++ b/meshfix-remove-rpath.patch @@ -0,0 +1,14 @@ +diff -up a/CMakeLists.txt.orig b/CMakeLists.txt +--- a/CMakeLists.txt.orig 2019-10-01 18:39:42.000000000 +0200 ++++ b/CMakeLists.txt 2019-10-07 20:06:44.072901788 +0200 +@@ -8,10 +8,6 @@ include_directories( + contrib/OpenNL3.2.1/src + contrib/jrs_predicates + ) +-link_directories( +- ${LINK_DIRECTORIES} +- ${CMAKE_CURRENT_SOURCE_DIR}/contrib/JMeshLib/lib +-) + file(GLOB meshfix_h include/*.h) + set(meshfix_src + contrib/jrs_predicates/jrs_predicates.c diff --git a/octave-iso2mesh.spec b/octave-iso2mesh.spec new file mode 100644 index 0000000..0e5c0b8 --- /dev/null +++ b/octave-iso2mesh.spec @@ -0,0 +1,332 @@ +%global octpkg iso2mesh + +Name: octave-%{octpkg} +Version: 1.9.1 +Release: 1%{?dist} +Summary: A 3D surface and volumetric mesh generator for MATLAB/Octave +License: GPLv3+ +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-g++ zlib-devel octave-devel + +%if 0%{?fedora} >=32 +Requires: octave mpfr-devel gmp-devel boost-devel SuperLU +%else +Requires: octave CGAL SuperLU gmp-devel +%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 -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. + +Categories: Mesh +EOF + +cat > INDEX << EOF +iso2mesh >> Iso2Mesh +Iso2Mesh + advancefront + barydualmesh + base64decode + base64encode + bbxflatsegment + binsurface + bwislands + cgals2m + cgalv2m + deislands2d + deislands3d + delendelem + deletemeshfile + edgeneighbors + elemfacecenter + elemvolume + extractloops + extrudecurve + extrudesurf + faceneighbors + fallbackexeext + fast_match_bracket + fillholes3d + fillsurf + finddisconnsurf + flatsegment + getexeext + getintersecttri + getoptkey + getplanefrom3pt + getvarfrom + gzipdecode + gzipencode + highordertet + i2m + imedge3d + img2mesh + innersurf + insurface + internalpoint + iso2meshver + isoctavemesh + jdatadecode + jdataencode + jnifticreate + jsonopt + latticegrid + loadjnifti + loadjson + loadmsgpack + loadnifti + loadubjson + lz4decode + lz4encode + lz4hcdecode + lz4hcencode + lzipdecode + lzipencode + lzmadecode + lzmaencode + m2v + maskdist + match_bracket + 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 + nestbracket2dim + nifticreate + nii2jnii + niicodemap + niiformat + nodevolume + orderloopedge + orthdisk + outersurf + plotedges + plotmesh + plotsurf + plottetra + qmeshcut + raysurf + raytrace + readasc + readgts + readinr + readmedit + readmptiff + readnifti + readnirfast + readoff + readsmf + readtetgen + remeshsurf + removedupelem + removedupnodes + removeisolatednode + removeisolatedsurf + rotatevec3d + rotmat2vec + s2m + s2v + saveabaqus + saveasc + savebinstl + savebnii + savedxf + savegts + saveinr + savejmesh + savejnifti + savejnii + savejson + savemedit + savemphtxt + savemsgpack + savemsh + savenifti + savenirfast + saveoff + savesmf + savestl + savesurfpoly + savetetgenele + savetetgennode + saveubjson + 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 + zlibdecode + zlibencode +EOF + +mkdir -p inst/ +mv *.m inst/ +mv img2mesh.fig inst/ + +%build +%set_build_flags +cd tools +%make_build +cd ../bin +ln -s tetgen1.5 tetgen +cd ../ +mv bin inst +%octave_pkg_build + +%if 0%{?fedora} <=30 + %global octave_tar_suffix any-none +%endif + +%install +%octave_pkg_install + +%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 +%{octpkgdir}/doc/* +%{octpkgdir}/bin/* +%{octpkgdir}/*.m +%{octpkgdir}/*.fig +%doc %{octpkgdir}/doc-cache +%{octpkgdir}/packinfo + +%files -n %{octpkg}-demos +%license COPYING.txt +%doc sample + +%changelog +* Wed Oct 02 2019 Qianqian Fang - 1.9.1-1 +- Initial package diff --git a/sources b/sources new file mode 100644 index 0000000..1864786 --- /dev/null +++ b/sources @@ -0,0 +1,4 @@ +SHA512 (cork-0.9.tar.gz) = 192ace02060519e39894fe33d481e86b84f996ece4db9ace02c5cfcaeafcb058f3e23950f3ee885c140978af71c81759f3eef0c5c2557f4eb215168b3c963506 +SHA512 (iso2mesh-1.9.1.tar.gz) = a317ed9c0c63fbccac7b1df15a5c7f64a7e26658616b397361e783da8042dbeb340588620955934ce3675634d7194f956afa7c4f4b76495548c4d62d46ef2a8e +SHA512 (meshfix-1.2.1.tar.gz) = f4da936c74414d65641c4d3d4d60968edfa2baeb4cb3cd7d6be95fa6c7d94c703ea1b09442d27685411c3ebf8ccd94765952fb0b4fa31a7dffa9a98470556ead +SHA512 (tetgen1.5.1.tar.gz) = dc485e67c4aba11c390152bc807f2572a95358e16fc76b147afd6cf00f70c4c4a57997b341e0432b06ba53d3e7e4b1961c0912a30454da4352e55c07051598ef