git: 8a36560387ba - main - science/{,py-}gemmi: New ports: Macromolecular crystallography library and utilities

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Tue, 04 Oct 2022 01:35:38 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=8a36560387ba1080e185f6e3cd73e1cc45fddf2e

commit 8a36560387ba1080e185f6e3cd73e1cc45fddf2e
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-10-04 01:34:24 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-10-04 01:35:25 +0000

    science/{,py-}gemmi: New ports: Macromolecular crystallography library and utilities
---
 science/Makefile                            |   2 +
 science/gemmi/Makefile                      |  24 +++
 science/gemmi/distinfo                      |   3 +
 science/gemmi/pkg-descr                     |   7 +
 science/gemmi/pkg-plist                     | 231 ++++++++++++++++++++++++++++
 science/py-gemmi/Makefile                   |  29 ++++
 science/py-gemmi/distinfo                   |   3 +
 science/py-gemmi/files/patch-CMakeLists.txt |  46 ++++++
 science/py-gemmi/pkg-descr                  |   7 +
 9 files changed, 352 insertions(+)

diff --git a/science/Makefile b/science/Makefile
index 867b6c39971c..58336e34e8a4 100644
--- a/science/Makefile
+++ b/science/Makefile
@@ -98,6 +98,7 @@
     SUBDIR += gbtolib
     SUBDIR += gchemutils
     SUBDIR += gdma
+    SUBDIR += gemmi
     SUBDIR += getdp
     SUBDIR += ghemical
     SUBDIR += ghmm
@@ -303,6 +304,7 @@
     SUBDIR += py-eccodes
     SUBDIR += py-esda
     SUBDIR += py-fresnel
+    SUBDIR += py-gemmi
     SUBDIR += py-geolinks
     SUBDIR += py-geomet
     SUBDIR += py-geometer
diff --git a/science/gemmi/Makefile b/science/gemmi/Makefile
new file mode 100644
index 000000000000..584b8a9b14fc
--- /dev/null
+++ b/science/gemmi/Makefile
@@ -0,0 +1,24 @@
+PORTNAME=	gemmi
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.5.7
+CATEGORIES=	science
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Macromolecular crystallography library and utilities
+WWW=		https://gemmi.readthedocs.io/en/latest/
+
+LICENSE=	MPL20
+LICENSE_FILE=	${WRKSRC}/LICENSE.txt
+
+USES=		cmake:testing compiler:c++17-lang # tests don't run, see https://github.com/project-gemmi/gemmi/issues/231
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	project-gemmi
+
+OPTIONS_DEFINE=		FORTRAN
+
+FORTRAN_USES=		fortran
+FORTRAN_CMAKE_BOOL=	USE_FORTRAN
+FORTRAN_BROKEN=		project option doesn't do anything, see https://github.com/project-gemmi/gemmi/issues/232
+
+.include <bsd.port.mk>
diff --git a/science/gemmi/distinfo b/science/gemmi/distinfo
new file mode 100644
index 000000000000..dc0844f594ee
--- /dev/null
+++ b/science/gemmi/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1664834213
+SHA256 (project-gemmi-gemmi-v0.5.7_GH0.tar.gz) = dede98c52920dac4a86dd77f38daa20bc8a1449ce16833815f5b563f4e8384a0
+SIZE (project-gemmi-gemmi-v0.5.7_GH0.tar.gz) = 1677695
diff --git a/science/gemmi/pkg-descr b/science/gemmi/pkg-descr
new file mode 100644
index 000000000000..2b26292904f3
--- /dev/null
+++ b/science/gemmi/pkg-descr
@@ -0,0 +1,7 @@
+Gemmi is a library, accompanied by a set of programs, developed primarily for
+use in macromolecular crystallography (MX). For working with:
+* macromolecular models (content of PDB, PDBx/mmCIF and mmJSON files),
+* refinement restraints (CIF files),
+* reflection data (MTZ and mmCIF formats),
+* data on a 3D grid (electron density maps, masks, MRC/CCP4 format)
+* crystallographic symmetry.
diff --git a/science/gemmi/pkg-plist b/science/gemmi/pkg-plist
new file mode 100644
index 000000000000..df1ef9df2ca2
--- /dev/null
+++ b/science/gemmi/pkg-plist
@@ -0,0 +1,231 @@
+bin/gemmi
+include/gemmi/addends.hpp
+include/gemmi/align.hpp
+include/gemmi/assembly.hpp
+include/gemmi/asudata.hpp
+include/gemmi/asumask.hpp
+include/gemmi/atof.hpp
+include/gemmi/atox.hpp
+include/gemmi/bessel.hpp
+include/gemmi/binner.hpp
+include/gemmi/blob.hpp
+include/gemmi/c4322.hpp
+include/gemmi/calculate.hpp
+include/gemmi/ccp4.hpp
+include/gemmi/cellred.hpp
+include/gemmi/chemcomp.hpp
+include/gemmi/chemcomp_xyz.hpp
+include/gemmi/cif.hpp
+include/gemmi/cif2mtz.hpp
+include/gemmi/cifdoc.hpp
+include/gemmi/contact.hpp
+include/gemmi/crd.hpp
+include/gemmi/dencalc.hpp
+include/gemmi/dirwalk.hpp
+include/gemmi/eig3.hpp
+include/gemmi/elem.hpp
+include/gemmi/enumstr.hpp
+include/gemmi/fail.hpp
+include/gemmi/fileutil.hpp
+include/gemmi/floodfill.hpp
+include/gemmi/formfact.hpp
+include/gemmi/fourier.hpp
+include/gemmi/fprime.hpp
+include/gemmi/fstream.hpp
+include/gemmi/grid.hpp
+include/gemmi/gz.hpp
+include/gemmi/input.hpp
+include/gemmi/interop.hpp
+include/gemmi/it92.hpp
+include/gemmi/iterator.hpp
+include/gemmi/json.hpp
+include/gemmi/levmar.hpp
+include/gemmi/linkhunt.hpp
+include/gemmi/math.hpp
+include/gemmi/merge.hpp
+include/gemmi/metadata.hpp
+include/gemmi/mmcif.hpp
+include/gemmi/mmcif_impl.hpp
+include/gemmi/mmread.hpp
+include/gemmi/model.hpp
+include/gemmi/modify.hpp
+include/gemmi/monlib.hpp
+include/gemmi/mtz.hpp
+include/gemmi/mtz2cif.hpp
+include/gemmi/neighbor.hpp
+include/gemmi/neutron92.hpp
+include/gemmi/numb.hpp
+include/gemmi/pdb.hpp
+include/gemmi/pirfasta.hpp
+include/gemmi/placeh.hpp
+include/gemmi/polyheur.hpp
+include/gemmi/qcp.hpp
+include/gemmi/read_cif.hpp
+include/gemmi/read_coor.hpp
+include/gemmi/read_map.hpp
+include/gemmi/recgrid.hpp
+include/gemmi/reciproc.hpp
+include/gemmi/refln.hpp
+include/gemmi/reindex.hpp
+include/gemmi/remarks.hpp
+include/gemmi/resinfo.hpp
+include/gemmi/scaling.hpp
+include/gemmi/select.hpp
+include/gemmi/seqalign.hpp
+include/gemmi/seqid.hpp
+include/gemmi/sfcalc.hpp
+include/gemmi/small.hpp
+include/gemmi/smcif.hpp
+include/gemmi/solmask.hpp
+include/gemmi/span.hpp
+include/gemmi/sprintf.hpp
+include/gemmi/symmetry.hpp
+include/gemmi/third_party/fast_float.h
+include/gemmi/third_party/pocketfft_hdronly.h
+include/gemmi/third_party/sajson.h
+include/gemmi/third_party/stb_sprintf.h
+include/gemmi/third_party/tao/LICENSE
+include/gemmi/third_party/tao/NOTES
+include/gemmi/third_party/tao/pegtl.hpp
+include/gemmi/third_party/tao/pegtl/analysis/analyze_cycles.hpp
+include/gemmi/third_party/tao/pegtl/analysis/counted.hpp
+include/gemmi/third_party/tao/pegtl/analysis/generic.hpp
+include/gemmi/third_party/tao/pegtl/analysis/grammar_info.hpp
+include/gemmi/third_party/tao/pegtl/analysis/insert_guard.hpp
+include/gemmi/third_party/tao/pegtl/analysis/insert_rules.hpp
+include/gemmi/third_party/tao/pegtl/analysis/rule_info.hpp
+include/gemmi/third_party/tao/pegtl/analysis/rule_type.hpp
+include/gemmi/third_party/tao/pegtl/analyze.hpp
+include/gemmi/third_party/tao/pegtl/apply_mode.hpp
+include/gemmi/third_party/tao/pegtl/argv_input.hpp
+include/gemmi/third_party/tao/pegtl/ascii.hpp
+include/gemmi/third_party/tao/pegtl/buffer_input.hpp
+include/gemmi/third_party/tao/pegtl/config.hpp
+include/gemmi/third_party/tao/pegtl/cstream_input.hpp
+include/gemmi/third_party/tao/pegtl/eol.hpp
+include/gemmi/third_party/tao/pegtl/eol_pair.hpp
+include/gemmi/third_party/tao/pegtl/file_input.hpp
+include/gemmi/third_party/tao/pegtl/input_error.hpp
+include/gemmi/third_party/tao/pegtl/internal/action.hpp
+include/gemmi/third_party/tao/pegtl/internal/action_input.hpp
+include/gemmi/third_party/tao/pegtl/internal/alnum.hpp
+include/gemmi/third_party/tao/pegtl/internal/alpha.hpp
+include/gemmi/third_party/tao/pegtl/internal/any.hpp
+include/gemmi/third_party/tao/pegtl/internal/apply.hpp
+include/gemmi/third_party/tao/pegtl/internal/apply0.hpp
+include/gemmi/third_party/tao/pegtl/internal/apply0_single.hpp
+include/gemmi/third_party/tao/pegtl/internal/apply_single.hpp
+include/gemmi/third_party/tao/pegtl/internal/at.hpp
+include/gemmi/third_party/tao/pegtl/internal/bof.hpp
+include/gemmi/third_party/tao/pegtl/internal/bol.hpp
+include/gemmi/third_party/tao/pegtl/internal/bump_help.hpp
+include/gemmi/third_party/tao/pegtl/internal/bump_impl.hpp
+include/gemmi/third_party/tao/pegtl/internal/bytes.hpp
+include/gemmi/third_party/tao/pegtl/internal/control.hpp
+include/gemmi/third_party/tao/pegtl/internal/cr_crlf_eol.hpp
+include/gemmi/third_party/tao/pegtl/internal/cr_eol.hpp
+include/gemmi/third_party/tao/pegtl/internal/crlf_eol.hpp
+include/gemmi/third_party/tao/pegtl/internal/cstream_reader.hpp
+include/gemmi/third_party/tao/pegtl/internal/cstring_reader.hpp
+include/gemmi/third_party/tao/pegtl/internal/demangle.hpp
+include/gemmi/third_party/tao/pegtl/internal/demangle_cxxabi.hpp
+include/gemmi/third_party/tao/pegtl/internal/demangle_nop.hpp
+include/gemmi/third_party/tao/pegtl/internal/demangle_sanitise.hpp
+include/gemmi/third_party/tao/pegtl/internal/disable.hpp
+include/gemmi/third_party/tao/pegtl/internal/discard.hpp
+include/gemmi/third_party/tao/pegtl/internal/dusel_mode.hpp
+include/gemmi/third_party/tao/pegtl/internal/duseltronik.hpp
+include/gemmi/third_party/tao/pegtl/internal/enable.hpp
+include/gemmi/third_party/tao/pegtl/internal/endian.hpp
+include/gemmi/third_party/tao/pegtl/internal/endian_gcc.hpp
+include/gemmi/third_party/tao/pegtl/internal/endian_win.hpp
+include/gemmi/third_party/tao/pegtl/internal/eof.hpp
+include/gemmi/third_party/tao/pegtl/internal/eol.hpp
+include/gemmi/third_party/tao/pegtl/internal/eolf.hpp
+include/gemmi/third_party/tao/pegtl/internal/file_mapper.hpp
+include/gemmi/third_party/tao/pegtl/internal/file_opener.hpp
+include/gemmi/third_party/tao/pegtl/internal/file_reader.hpp
+include/gemmi/third_party/tao/pegtl/internal/has_apply.hpp
+include/gemmi/third_party/tao/pegtl/internal/has_apply0.hpp
+include/gemmi/third_party/tao/pegtl/internal/identifier.hpp
+include/gemmi/third_party/tao/pegtl/internal/if_apply.hpp
+include/gemmi/third_party/tao/pegtl/internal/if_must.hpp
+include/gemmi/third_party/tao/pegtl/internal/if_must_else.hpp
+include/gemmi/third_party/tao/pegtl/internal/if_then_else.hpp
+include/gemmi/third_party/tao/pegtl/internal/input_pair.hpp
+include/gemmi/third_party/tao/pegtl/internal/integer_sequence.hpp
+include/gemmi/third_party/tao/pegtl/internal/istream_reader.hpp
+include/gemmi/third_party/tao/pegtl/internal/istring.hpp
+include/gemmi/third_party/tao/pegtl/internal/iterator.hpp
+include/gemmi/third_party/tao/pegtl/internal/lf_crlf_eol.hpp
+include/gemmi/third_party/tao/pegtl/internal/lf_eol.hpp
+include/gemmi/third_party/tao/pegtl/internal/list.hpp
+include/gemmi/third_party/tao/pegtl/internal/list_must.hpp
+include/gemmi/third_party/tao/pegtl/internal/list_tail.hpp
+include/gemmi/third_party/tao/pegtl/internal/list_tail_pad.hpp
+include/gemmi/third_party/tao/pegtl/internal/marker.hpp
+include/gemmi/third_party/tao/pegtl/internal/minus.hpp
+include/gemmi/third_party/tao/pegtl/internal/must.hpp
+include/gemmi/third_party/tao/pegtl/internal/not_at.hpp
+include/gemmi/third_party/tao/pegtl/internal/one.hpp
+include/gemmi/third_party/tao/pegtl/internal/opt.hpp
+include/gemmi/third_party/tao/pegtl/internal/pad.hpp
+include/gemmi/third_party/tao/pegtl/internal/pad_opt.hpp
+include/gemmi/third_party/tao/pegtl/internal/peek_char.hpp
+include/gemmi/third_party/tao/pegtl/internal/peek_utf16.hpp
+include/gemmi/third_party/tao/pegtl/internal/peek_utf32.hpp
+include/gemmi/third_party/tao/pegtl/internal/peek_utf8.hpp
+include/gemmi/third_party/tao/pegtl/internal/pegtl_string.hpp
+include/gemmi/third_party/tao/pegtl/internal/plus.hpp
+include/gemmi/third_party/tao/pegtl/internal/raise.hpp
+include/gemmi/third_party/tao/pegtl/internal/range.hpp
+include/gemmi/third_party/tao/pegtl/internal/ranges.hpp
+include/gemmi/third_party/tao/pegtl/internal/rep.hpp
+include/gemmi/third_party/tao/pegtl/internal/rep_min.hpp
+include/gemmi/third_party/tao/pegtl/internal/rep_min_max.hpp
+include/gemmi/third_party/tao/pegtl/internal/rep_opt.hpp
+include/gemmi/third_party/tao/pegtl/internal/require.hpp
+include/gemmi/third_party/tao/pegtl/internal/result_on_found.hpp
+include/gemmi/third_party/tao/pegtl/internal/rule_conjunction.hpp
+include/gemmi/third_party/tao/pegtl/internal/rules.hpp
+include/gemmi/third_party/tao/pegtl/internal/seq.hpp
+include/gemmi/third_party/tao/pegtl/internal/skip_control.hpp
+include/gemmi/third_party/tao/pegtl/internal/sor.hpp
+include/gemmi/third_party/tao/pegtl/internal/star.hpp
+include/gemmi/third_party/tao/pegtl/internal/star_must.hpp
+include/gemmi/third_party/tao/pegtl/internal/state.hpp
+include/gemmi/third_party/tao/pegtl/internal/string.hpp
+include/gemmi/third_party/tao/pegtl/internal/trivial.hpp
+include/gemmi/third_party/tao/pegtl/internal/try_catch_type.hpp
+include/gemmi/third_party/tao/pegtl/internal/until.hpp
+include/gemmi/third_party/tao/pegtl/istream_input.hpp
+include/gemmi/third_party/tao/pegtl/memory_input.hpp
+include/gemmi/third_party/tao/pegtl/mmap_input.hpp
+include/gemmi/third_party/tao/pegtl/normal.hpp
+include/gemmi/third_party/tao/pegtl/nothing.hpp
+include/gemmi/third_party/tao/pegtl/parse.hpp
+include/gemmi/third_party/tao/pegtl/parse_error.hpp
+include/gemmi/third_party/tao/pegtl/position.hpp
+include/gemmi/third_party/tao/pegtl/read_input.hpp
+include/gemmi/third_party/tao/pegtl/rewind_mode.hpp
+include/gemmi/third_party/tao/pegtl/rules.hpp
+include/gemmi/third_party/tao/pegtl/string_input.hpp
+include/gemmi/third_party/tao/pegtl/tracking_mode.hpp
+include/gemmi/third_party/tao/pegtl/utf16.hpp
+include/gemmi/third_party/tao/pegtl/utf32.hpp
+include/gemmi/third_party/tao/pegtl/utf8.hpp
+include/gemmi/third_party/tao/pegtl/version.hpp
+include/gemmi/third_party/tinydir.h
+include/gemmi/to_chemcomp.hpp
+include/gemmi/to_cif.hpp
+include/gemmi/to_json.hpp
+include/gemmi/to_mmcif.hpp
+include/gemmi/to_mmdb.hpp
+include/gemmi/to_pdb.hpp
+include/gemmi/topo.hpp
+include/gemmi/twin.hpp
+include/gemmi/unitcell.hpp
+include/gemmi/utf.hpp
+include/gemmi/util.hpp
+include/gemmi/version.hpp
+include/gemmi/xds_ascii.hpp
diff --git a/science/py-gemmi/Makefile b/science/py-gemmi/Makefile
new file mode 100644
index 000000000000..15f4946eaa81
--- /dev/null
+++ b/science/py-gemmi/Makefile
@@ -0,0 +1,29 @@
+PORTNAME=	gemmi
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.5.7
+CATEGORIES=	science
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Macromolecular crystallography library and utilities
+WWW=		https://gemmi.readthedocs.io/en/latest/
+
+LICENSE=	MPL20
+LICENSE_FILE=	${WRKSRC}/LICENSE.txt
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pip>0:devel/py-pip@${PY_FLAVOR} \
+		pybind11>=2.6:devel/pybind11
+
+USES=		cmake compiler:c++17-lang python
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	project-gemmi
+
+CMAKE_ON=	USE_PYTHON
+
+PLIST_FILES=	${PYTHON_SITELIBDIR}/gemmi${PYTHON_EXT_SUFFIX}.so
+
+do-test:
+	@cd ${WRKSRC} && ${PYTHON_CMD} -m unittest discover -v tests/
+
+.include <bsd.port.mk>
diff --git a/science/py-gemmi/distinfo b/science/py-gemmi/distinfo
new file mode 100644
index 000000000000..dc0844f594ee
--- /dev/null
+++ b/science/py-gemmi/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1664834213
+SHA256 (project-gemmi-gemmi-v0.5.7_GH0.tar.gz) = dede98c52920dac4a86dd77f38daa20bc8a1449ce16833815f5b563f4e8384a0
+SIZE (project-gemmi-gemmi-v0.5.7_GH0.tar.gz) = 1677695
diff --git a/science/py-gemmi/files/patch-CMakeLists.txt b/science/py-gemmi/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..74cb0c82e534
--- /dev/null
+++ b/science/py-gemmi/files/patch-CMakeLists.txt
@@ -0,0 +1,46 @@
+--- CMakeLists.txt.orig	2022-09-21 17:17:09 UTC
++++ CMakeLists.txt
+@@ -274,6 +274,7 @@ add_executable(gemmi-wcn EXCLUDE_FROM_ALL $<TARGET_OBJ
+                src/wcn.cpp $<TARGET_OBJECTS:input>)
+ support_gz(gemmi-wcn)
+ 
++if (FALSE)
+ add_executable(program
+                src/align.cpp src/blobs.cpp
+                src/cif2mtz.cpp src/cif2json.cpp src/contact.cpp
+@@ -290,15 +291,16 @@ add_executable(program
+                $<TARGET_OBJECTS:options>)
+ support_gz(program)
+ target_compile_definitions(program PRIVATE GEMMI_ALL_IN_ONE=1)
+-set_target_properties(program PROPERTIES OUTPUT_NAME gemmi)
++#set_target_properties(program PROPERTIES OUTPUT_NAME gemmi)
+ if (WIN32 AND USE_WMAIN)
+   # _UNICODE=1 is now set globally
+-  #target_compile_definitions(program PRIVATE _UNICODE=1)
++  target_compile_definitions(program PRIVATE _UNICODE=1)
+   if(MINGW)
+     # target_link_options were added in cmake 3.13
+     set_target_properties(program PROPERTIES LINK_FLAGS "-municode")
+   endif()
+ endif()
++endif()
+ 
+ ### tests and examples ###
+ 
+@@ -416,12 +418,12 @@ else()
+   message(STATUS "Skipping Python module. Add -D USE_PYTHON=1 to build it.")
+ endif()
+ 
+-install(TARGETS program DESTINATION bin)
+-install(DIRECTORY include/gemmi DESTINATION include)
++#install(TARGETS program DESTINATION bin)
++#install(DIRECTORY include/gemmi DESTINATION include)
+ if (USE_PYTHON AND DEFINED PYTHON_INSTALL_DIR)
+   install(TARGETS py DESTINATION ${PYTHON_INSTALL_DIR})
+-  install(DIRECTORY examples/ DESTINATION ${PYTHON_INSTALL_DIR}/gemmi-examples
+-          FILES_MATCHING PATTERN "*.py")
++  #install(DIRECTORY examples/ DESTINATION ${PYTHON_INSTALL_DIR}/gemmi-examples
++  #        FILES_MATCHING PATTERN "*.py")
+   if (INSTALL_EGG_INFO)
+     install(CODE
+      "execute_process(COMMAND \"${PYTHON_EXECUTABLE}\" setup.py install_egg_info --install-dir \"\$ENV{DESTDIR}${PYTHON_INSTALL_DIR}\"
diff --git a/science/py-gemmi/pkg-descr b/science/py-gemmi/pkg-descr
new file mode 100644
index 000000000000..2b26292904f3
--- /dev/null
+++ b/science/py-gemmi/pkg-descr
@@ -0,0 +1,7 @@
+Gemmi is a library, accompanied by a set of programs, developed primarily for
+use in macromolecular crystallography (MX). For working with:
+* macromolecular models (content of PDB, PDBx/mmCIF and mmJSON files),
+* refinement restraints (CIF files),
+* reflection data (MTZ and mmCIF formats),
+* data on a 3D grid (electron density maps, masks, MRC/CCP4 format)
+* crystallographic symmetry.