diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a411ae2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/smoldyn-2.58.zip +/smoldyn-2.61.zip diff --git a/smoldyn-fix_libpaths.patch b/smoldyn-fix_libpaths.patch new file mode 100644 index 0000000..22f5bca --- /dev/null +++ b/smoldyn-fix_libpaths.patch @@ -0,0 +1,92 @@ +--- CMakeLists.txt.fix_libpaths 2018-09-18 23:33:59.000000000 +0200 ++++ CMakeLists.txt 2019-02-03 19:25:01.064012276 +0100 +@@ -73,10 +73,7 @@ + source/lib/SFMT/SFMT.h + source/Smoldyn/smoldyn.h + source/Smoldyn/smoldynfuncs.h +- source/vcell/SimpleMesh.h +- source/vcell/SimpleValueProvider.h + source/NextSubVolume/nsvc.h +- source/vtk/vtkwrapper.h + ) + + set(SRC_FILES +@@ -130,7 +127,7 @@ + set_source_files_properties(${SRC_FILES} PROPERTIES LANGUAGE CXX ) + set_source_files_properties(${MAIN_FILES} PROPERTIES LANGUAGE CXX ) + +-include_directories(source/lib source/Smoldyn source/vcell source/NextSubVolume source/vtk ${CMAKE_BINARY_DIR}) ++include_directories(source/lib source/Smoldyn source/NextSubVolume source/vtk ${CMAKE_BINARY_DIR}) + + + +@@ -141,8 +138,8 @@ + endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + + if(CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANGXX) +- set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -Wall -Wno-deprecated-declarations") +- set(CMAKE_CXX_FLAGS_RELEASE "-O2 -Wall -Wno-deprecated-declarations -DNDEBUG") ++ set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -Wall -I/usr/include") ++ set(CMAKE_CXX_FLAGS_RELEASE "-O2 -Wall -DNDEBUG -I/usr/include") + endif(CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANGXX) + + if(NOT CMAKE_BUILD_TYPE) +@@ -193,7 +190,7 @@ + set(BNG2_PATH "/usr/local/bin/BioNetGen/BNG2.pl") + else() + set(NIX_BUILD 1) +- set(BNG2_PATH "/usr/local/bin/BioNetGen/BNG2.pl") ++ set(BNG2_PATH "${PERL_VENDORLIB}/BioNetGen/BNG2.pl") + endif() + + +@@ -348,7 +345,8 @@ + find_path(ZLIB_INCLUDE_DIRS zlib.h) + find_library(ZLIB_LIBRARIES libz.a) + else() +- include(FindZlib) ++ find_path(ZLIB_INCLUDE_DIRS zlib.h PATHS ${INCLUDE_INSTALL_DIR}) ++ find_library(ZLIB_LIBRARIES libz.so PATHS ${CMAKE_INSTALL_LIBDIR}) + endif() + + if(ZLIB_INCLUDE_DIRS AND ZLIB_LIBRARIES) +@@ -406,7 +404,7 @@ + + list(APPEND SRC_FILES source/vtk/vtkwrapper.cpp) + list(APPEND HEADER_FILES source/vtk/vtkwrapper.h) +- add_definitions("-Wno-deprecated") ++ add_definitions(" ") + list(APPEND DEP_LIBS ${VTK_LIBRARIES}) + + endif(OPTION_VTK) +@@ -430,7 +428,7 @@ + endif() + + +- set(Boost_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/source/NextSubVolume/boost_include) ++ set(Boost_INCLUDE_DIR ${INCLUDE_INSTALL_DIR}/boost) + include_directories(SYSTEM ${Boost_INCLUDE_DIR}) + + list(APPEND SRC_FILES +@@ -457,7 +455,7 @@ + source/NextSubVolume/nsvc.h + ) + +- add_definitions("-Wno-deprecated") ++ add_definitions(" ") + endif(OPTION_NSV) + + ####### Option: Build with PDE ########## +@@ -489,9 +487,9 @@ + endif() + + if(OPTION_TARGET_LIBSMOLDYN) +- install(TARGETS smoldyn_shared LIBRARY DESTINATION lib) +- install(TARGETS smoldyn_static ARCHIVE DESTINATION lib) +- install(FILES source/Smoldyn/libsmoldyn.h source/Smoldyn/smoldyn.h ${CMAKE_CURRENT_BINARY_DIR}/smoldynconfigure.h DESTINATION include) ++ install(TARGETS smoldyn_shared LIBRARY DESTINATION lib${LIB_SUFFIX}/smoldyn) ++ install(TARGETS smoldyn_static ARCHIVE DESTINATION lib${LIB_SUFFIX}/smoldyn) ++ install(FILES source/Smoldyn/libsmoldyn.h source/Smoldyn/smoldyn.h ${CMAKE_CURRENT_BINARY_DIR}/smoldynconfigure.h DESTINATION include/smoldyn) + endif(OPTION_TARGET_LIBSMOLDYN) + + endif(NOT OPTION_MINGW) diff --git a/smoldyn-freeglut.patch b/smoldyn-freeglut.patch new file mode 100644 index 0000000..fc17725 --- /dev/null +++ b/smoldyn-freeglut.patch @@ -0,0 +1,35 @@ +--- CMakeLists.txt~ 2019-09-19 11:56:56.000000000 -0500 ++++ CMakeLists.txt 2019-09-19 12:00:30.716178022 -0500 +@@ -270,20 +270,20 @@ + #find_library(GLUT_LIBRARIES NAMES libglut) + endif() + +- if(GLUT_FOUND) +- set(GLUT_FOUND TRUE) +- message(STATUS "Glut found: '${GLUT_INCLUDE_DIR}', '${GLUT_LIBRARIES}'") +- elseif(GLUT_INCLUDE_DIR AND GLUT_LIBRARIES) +- set(GLUT_FOUND TRUE) +- message(STATUS "Glut found: '${GLUT_INCLUDE_DIR}', '${GLUT_LIBRARIES}'") +- else() +- set(GLUT_FOUND FALSE) +- message(FATAL_ERROR "Glut not found. Building without OpenGL is possible.") +- endif() ++# if(GLUT_FOUND) ++# set(GLUT_FOUND TRUE) ++# message(STATUS "Glut found: '${GLUT_INCLUDE_DIR}', '${GLUT_LIBRARIES}'") ++# elseif(GLUT_INCLUDE_DIR AND GLUT_LIBRARIES) ++# set(GLUT_FOUND TRUE) ++# message(STATUS "Glut found: '${GLUT_INCLUDE_DIR}', '${GLUT_LIBRARIES}'") ++# else() ++# set(GLUT_FOUND FALSE) ++# message(FATAL_ERROR "Glut not found. Building without OpenGL is possible.") ++# endif() + + set(HAVE_OPENGL TRUE) +- include_directories(${GLUT_INCLUDE_DIR}) +- list(APPEND DEP_LIBS ${GLUT_LIBRARIES}) ++ include_directories(/usr/include/GL) ++ list(APPEND DEP_LIBS -lglut) + endif() + + diff --git a/smoldyn-use_boost169.patch b/smoldyn-use_boost169.patch new file mode 100644 index 0000000..a342a25 --- /dev/null +++ b/smoldyn-use_boost169.patch @@ -0,0 +1,7 @@ +--- CMakeLists.orig.txt 2020-05-25 11:24:42.754220000 +0200 ++++ CMakeLists.txt 2020-05-25 11:25:53.945372024 +0200 +@@ -430,3 +430,3 @@ + +- set(Boost_INCLUDE_DIR ${INCLUDE_INSTALL_DIR}/boost) ++ set(Boost_INCLUDE_DIR ${INCLUDE_INSTALL_DIR}/boost169/boost ${INCLUDE_INSTALL_DIR}/boost169) + include_directories(SYSTEM ${Boost_INCLUDE_DIR}) diff --git a/smoldyn.spec b/smoldyn.spec new file mode 100644 index 0000000..6073169 --- /dev/null +++ b/smoldyn.spec @@ -0,0 +1,214 @@ +# Smoldyn provides the SFMT-1.3.3 (SIMD-oriented Fast Mersenne Twister) source code; +# currently unavailable on Fedora. +# http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html + +%global with_libs 0 + +# VTK support? +# See https://github.com/ssandrews/Smoldyn-official/issues/3 +%global with_vtk 0 + +%if 0%{?rhel} && 0%{?rhel} == 7 +%global dts devtoolset-8- +%endif + +Name: smoldyn +Summary: A particle-based spatial stochastic simulator +Version: 2.61 +Release: 3%{?dist} + +# The rxnparam.c and SurfaceParam.c source code files are in the public domain. +# +# The Next Subvolume module is Copyright 2012 by Martin Robinson and is distributed +# under the Gnu LGPL license. +# +# The rest of the code is Copyright 2003-2018 by Steven Andrews and also +# distributed under the Gnu LGPL. +# +# source/lib/SFMT is licensed under the 'BSD 3-clause "New" or "Revised" License' +License: LGPLv3+ and Public Domain and BSD +URL: http://www.smoldyn.org +Source0: %{url}/%{name}-%{version}.zip + +# Fix library paths according to the Fedora Project guidelines +Patch0: %{name}-fix_libpaths.patch +Patch1: %{name}-freeglut.patch + +Patch2: %{name}-use_boost169.patch + +BuildRequires: cmake3 +BuildRequires: gcc +BuildRequires: %{?dts}gcc-c++ +%if 0%{?rhel} && 0%{?rhel} == 7 +BuildRequires: %{?dts}toolchain, %{?dts}libatomic-devel +BuildRequires: boost169-devel +%endif +%if 0%{?fedora} || 0%{?rhel} > 7 +BuildRequires: boost-devel +%endif +BuildRequires: freeglut-devel +BuildRequires: libXmu-devel +BuildRequires: libXi-devel +BuildRequires: libtiff-devel +BuildRequires: libglvnd-devel +BuildRequires: perl-macros +%if %{?with_vtk} +BuildRequires: vtk-devel +%endif +BuildRequires: zlib-devel + +Requires: bionetgen-perl + +Provides: bundled(SFMT) = 1.3.3 + +%description +Smoldyn is a computer program for cell-scale biochemical simulations. +It simulates each molecule of interest individually to capture natural +stochasticity and to yield nanometer-scale spatial resolution. +It treats other molecules implicitly, enabling it to simulate hundreds +of thousands of molecules over several minutes of real time. + +Simulated molecules diffuse, react, are confined by surfaces, +and bind to membranes much as they would in a real biological system. + +It is more accurate and faster than other particle-based simulators. +Smoldyn's unique features include: a "virtual experimenter" who can +manipulate or measure the simulated system, support for spatial compartments, +molecules with excluded volume, and simulations in 1, 2, or 3 dimensions. + +%if %{?with_libs} +%package devel +Summary: %{name} devel files +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: %{name}-static = %{version}-%{release} +%description devel +This package provides the %{name} examples, header files and private libraries. +%endif + +%package doc +Summary: %{name} PDF documentation +Requires: %{name} = %{version}-%{release} +BuildArch: noarch +%description doc +%{name} PDF documentation. + +%prep +%autosetup -n %{name}-%{version} -N +%patch0 -p0 -b .fix_libpaths +%if 0%{?fedora} +%patch1 -p0 -b .freeglut +%endif +%if 0%{?rhel} && 0%{?rhel} == 7 +%patch2 -p0 -b .use_boost169 +%endif + +# Copy license file +mv source/lib/SFMT/LICENSE.txt source/lib/SFMT/SFMT-LICENSE.txt +mv source/lib/SFMT/README.txt source/lib/SFMT/SFMT-README.txt + +# Remove pre-built archives +rm -rf Linux + +# Remove bundled libraries +rm -rf source/BioNetGen source/MinGWlibs Toolchain-mingw32.cmake +rm -rf source/vcell/* source/NextSubVolume/Eigen +rm -rf source/NextSubVolume/boost_include +%if !%{?with_vtk} +rm -f source/vtk/* +%endif + +#Fix permissions +find . -type f -name "*.h" -exec chmod 0644 '{}' \; +find . -type f -name "*.c" -exec chmod 0644 '{}' \; +find . -type f -name "*.pdf" -exec chmod 0644 '{}' \; +find . -type f -name "*.txt" -exec chmod 0644 '{}' \; +find . -type f -name "*.txt" -exec sed -i 's/\r$//' '{}' \; + +# Set system path to BNG2.pl +sed -e 's|../../../source/BioNetGen/BNG2.pl|%{perl_vendorlib}/BioNetGen/BNG2.pl|g' -i examples/S95_regression/lrmsim.txt \ + examples/S12_bionetgen/lrm/lrmsim.txt \ + examples/S12_bionetgen/abba/abbasim.txt \ + examples/S94_archive/Andrews_2016/BioNetGen/lrm/lrmsim.txt \ + examples/S94_archive/Andrews_2016/BioNetGen/abba/abbasim.txt + +%build +mkdir -p build && pushd build +%if 0%{?rhel} && 0%{?rhel} == 7 +. /opt/rh/devtoolset-8/enable +%endif +%cmake3 -Wno-dev \ + -DCPACK_BINARY_STGZ:BOOL=OFF \ + -DCPACK_BINARY_TGZ:BOOL=OFF \ + -DCPACK_BINARY_TZ:BOOL=OFF \ + -DCPACK_SOURCE_TBZ2:BOOL=OFF \ + -DCPACK_SOURCE_TGZ:BOOL=OFF \ + -DCPACK_SOURCE_TXZ:BOOL=OFF \ + -DCPACK_SOURCE_TZ:BOOL=OFF \ + -DOPTION_VCELL:BOOL=OFF \ +%if %{?with_vtk} + -DOPTION_VTK:BOOL=ON \ +%else + -DOPTION_VTK:BOOL=OFF \ +%endif +%if %{?with_libs} + -DOPTION_TARGET_LIBSMOLDYN:BOOL=ON \ +%else + -DOPTION_TARGET_LIBSMOLDYN:BOOL=OFF \ +%endif + -DOPTION_USE_ZLIB:BOOL=ON \ + -DOPTION_PDE:BOOL=ON \ + -DPERL_VENDORLIB:PATH=%{perl_vendorlib} \ + -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir} \ + -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE -DCMAKE_COLOR_MAKEFILE:BOOL=ON \ + -DCMAKE_SKIP_RPATH:BOOL=YES \ + -DHAVE_GL_FREEGLUT_H=TRUE .. +%make_build V=1 +popd + +%install +%make_install -C build + +%files +%doc source/lib/SFMT/SFMT-README.txt +%license License.txt source/lib/SFMT/SFMT-LICENSE.txt +%{_bindir}/%{name} + +%if %{?with_libs} +%files devel +%doc examples +%{_includedir}/%{name}/ +%{_libdir}/%{name}/ +%endif + +%files doc +%doc documentation/* + +%changelog +* Mon May 25 2020 Antonio Trande - 2.61-3 +- Fix patch for EPEL7 + +* Mon May 25 2020 Antonio Trande - 2.61-2 +- Patched for using Boost169 on EPEL7 + +* Sun May 24 2020 Antonio Trande - 2.61-1 +- Release 2.61 + +* Thu Jan 30 2020 Fedora Release Engineering - 2.58-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Sep 17 2019 Gwyn Ciesla - 2.58-3 +- Rebuilt for new freeglut + +* Fri Jul 26 2019 Fedora Release Engineering - 2.58-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Mar 29 2019 Antonio Trande - 2.58-1 +- Release 2.58 + +* Sun Feb 03 2019 Antonio Trande - 2.56-1 +- First package +- Unbundle zlib, boost and BioNetGen +- Remove unused header files +- Fix file permissions +- Add License file provided by upstream diff --git a/sources b/sources new file mode 100644 index 0000000..2001beb --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (smoldyn-2.61.zip) = 4beaa82a0b915db2c990ea2a75f3903f7e230400b331328112d19866d2d8e7a49cc48c9abe2bb20761dd733afe0b4e1643a9ced7eddd68d9957517ce0e1e7a78