diff options
-rw-r--r-- | sci-chemistry/pymol/files/pymol-2.4.0-fix_bug119.patch | 34 | ||||
-rw-r--r-- | sci-chemistry/pymol/pymol-2.4.0-r1.ebuild | 117 |
2 files changed, 151 insertions, 0 deletions
diff --git a/sci-chemistry/pymol/files/pymol-2.4.0-fix_bug119.patch b/sci-chemistry/pymol/files/pymol-2.4.0-fix_bug119.patch new file mode 100644 index 000000000000..62512053fd71 --- /dev/null +++ b/sci-chemistry/pymol/files/pymol-2.4.0-fix_bug119.patch @@ -0,0 +1,34 @@ +From 885891cf60371674406cdff16b395e25cc13d8ae Mon Sep 17 00:00:00 2001 +From: Sebastian Keller <sebastian-keller@gmx.de> +Date: Tue, 28 Jul 2020 22:50:53 +0200 +Subject: [PATCH] Don't drop the last model when updating the selector table + +The last assigned model in the Obj vector was at position modelCnt. +Resizing the vector to modelCnt removes the last model, which later +results in a crash when trying to access it. + +See https://github.com/schrodinger/pymol-open-source/issues/119 +--- + layer3/Selector.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/layer3/Selector.cpp b/layer3/Selector.cpp +index 546725b..637cd60 100644 +--- a/layer3/Selector.cpp ++++ b/layer3/Selector.cpp +@@ -7284,11 +7284,11 @@ static sele_array_t SelectorUpdateTableSingleObject(PyMOLGlobals * G, ObjectMole + result[obj->SeleBase + at] = tag; + } + } + } + } +- I->Obj.resize(modelCnt); ++ I->Obj.resize(modelCnt + 1); + I->Table.resize(c); + + PRINTFD(G, FB_Selector) + "SelectorUpdateTableSingleObject-Debug: leaving...\n" ENDFD; + +-- +libgit2 1.0.1 + diff --git a/sci-chemistry/pymol/pymol-2.4.0-r1.ebuild b/sci-chemistry/pymol/pymol-2.4.0-r1.ebuild new file mode 100644 index 000000000000..540097824ec7 --- /dev/null +++ b/sci-chemistry/pymol/pymol-2.4.0-r1.ebuild @@ -0,0 +1,117 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6..9} ) +DISTUTILS_USE_SETUPTOOLS=no + +inherit distutils-r1 desktop optfeature flag-o-matic xdg + +DESCRIPTION="A Python-extensible molecular graphics system" +HOMEPAGE="https://www.pymol.org/" +SRC_URI=" + https://dev.gentoo.org/~jlec/distfiles/${PN}-1.8.4.0.png.xz + https://github.com/schrodinger/pymol-open-source/archive/v${PV}.tar.gz -> ${P}.tar.gz + " +RESTRICT="mirror" +LICENSE="PSF-2.2" +SLOT="0" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux ~x64-macos" +IUSE="+netcdf web" + +DEPEND=" + dev-libs/msgpack[cxx] + dev-libs/mmtf-cpp + dev-python/pyopengl[${PYTHON_USEDEP}] + dev-python/PyQt5[opengl,${PYTHON_USEDEP}] + dev-python/numpy[${PYTHON_USEDEP}] + dev-python/pmw[${PYTHON_USEDEP}] + media-libs/freetype:2 + media-libs/glew:0= + media-libs/glm + media-libs/libpng:0= + media-video/mpeg-tools + sys-libs/zlib + netcdf? ( sci-libs/netcdf:0= ) +" +RDEPEND="${DEPEND} + sci-chemistry/chemical-mime-data +" + +S="${WORKDIR}"/${PN}-open-source-${PV} + +PATCHES=( + # https://github.com/schrodinger/pymol-open-source/issues/119 + "${FILESDIR}/${P}-fix_bug119.patch" +) + +python_prepare_all() { + sed \ + -e "s:\"/usr:\"${EPREFIX}/usr:g" \ + -e "/ext_comp_args.*+=/s:\[.*\]$:\[\]:g" \ + -e "/import/s:argparse:argparseX:g" \ + -i setup.py || die + + sed \ + -e "s:/opt/local:${EPREFIX}/usr:g" \ + -e '/ext_comp_args/s:\[.*\]:[]:g' \ + -i setup.py || die + sed \ + -e "s:\['msgpackc'\]:\['msgpack'\]:g" \ + -i setup.py || die + + append-cxxflags -std=c++0x + + use !netcdf && mydistutilsargs=( --no-vmd-plugins ) + + distutils-r1_python_prepare_all +} + +python_install() { + distutils-r1_python_install \ + --pymol-path="${EPREFIX}/usr/share/pymol" + + sed \ + -e '1d' \ + -e "/APBS_BINARY_LOCATION/s:None:\"${EPREFIX}/usr/bin/apbs\":g" \ + -e "/APBS_PSIZE_LOCATION/s:None:\"$(python_get_sitedir)/pdb2pqr/src/\":g" \ + -e "/APBS_PDB2PQR_LOCATION/s:None:\"$(python_get_sitedir)/pdb2pqr/\":g" \ + -i "${D}/$(python_get_sitedir)"/pmg_tk/startup/apbs_tools.py || die +} + +python_install_all() { + distutils-r1_python_install_all + + sed \ + -e '1i#!/usr/bin/env python' \ + "${D}/$(python_get_sitedir)"/pymol/__init__.py > "${T}"/${PN} || die + + python_foreach_impl python_doscript "${T}"/${PN} + + # These environment variables should not go in the wrapper script, or else + # it will be impossible to use the PyMOL libraries from Python. + cat >> "${T}"/20pymol <<- EOF || die + PYMOL_PATH="${EPREFIX}/usr/share/pymol" + PYMOL_DATA="${EPREFIX}/usr/share/pymol/data" + PYMOL_SCRIPTS="${EPREFIX}/usr/share/pymol/scripts" + EOF + + doenvd "${T}"/20pymol + + newicon "${WORKDIR}"/${PN}-1.8.4.0.png ${PN}.png + make_desktop_entry ${PN} PyMol ${PN} \ + "Graphics;Education;Science;Chemistry;" \ + "MimeType=chemical/x-pdb;chemical/x-mdl-molfile;chemical/x-mol2;chemical/seq-aa-fasta;chemical/seq-na-fasta;chemical/x-xyz;chemical/x-mdl-sdf;" + + if ! use web; then + rm -rf "${D}/$(python_get_sitedir)/web" || die + fi + + rm -f "${ED}"/usr/share/${PN}/LICENSE || die +} + +pkg_postinst() { + xdg_pkg_postinst + optfeature "Electrostatic calculations" sci-chemistry/apbs sci-chemistry/pdb2pqr +} |