summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2024-09-28 16:42:14 +0200
committerPacho Ramos <pacho@gentoo.org>2024-09-28 16:50:45 +0200
commit5a1dfcc8986e29f5157bc9f706aaeb23307c4b68 (patch)
tree3743d08b55f5ad49f340496f1433eeee90cfb91c /sci-chemistry
parentsci-libs/nlopt: fix pkg_setup w/ USE=-guile (diff)
downloadgentoo-5a1dfcc8986e29f5157bc9f706aaeb23307c4b68.tar.gz
gentoo-5a1dfcc8986e29f5157bc9f706aaeb23307c4b68.tar.bz2
gentoo-5a1dfcc8986e29f5157bc9f706aaeb23307c4b68.zip
sci-chemistry/pymol: Multiple bugfixes
Upstream fixes for multiple bugs, also fixing python 3.12 and numpy2 compat, and fixing LTO building. Format-security patch looks to not be needed anymore (at least I couldn't reproduce the problem). If the problem reappears, please report the bug to upstream to follow its progress properly. Use icon from the pymol tarball and update desktop file. Update ebuild to try to run the tests, but keep them restricted for now as they keep failing. Bug: https://bugs.gentoo.org/932127 Signed-off-by: Pacho Ramos <pacho@gentoo.org>
Diffstat (limited to 'sci-chemistry')
-rw-r--r--sci-chemistry/pymol/files/pymol-3.0.0-SceneGetDrawFlag-indexing.patch22
-rw-r--r--sci-chemistry/pymol/files/pymol-3.0.0-distutils-py3.12.patch70
-rw-r--r--sci-chemistry/pymol/files/pymol-3.0.0-eof-maeffplugin.patch22
-rw-r--r--sci-chemistry/pymol/files/pymol-3.0.0-lto-molfile-plugin.patch187
-rw-r--r--sci-chemistry/pymol/files/pymol-3.0.0-numpy2.patch35
-rw-r--r--sci-chemistry/pymol/files/pymol-3.0.0-py3.12-progress.patch26
-rw-r--r--sci-chemistry/pymol/pymol-3.0.0-r1.ebuild123
7 files changed, 485 insertions, 0 deletions
diff --git a/sci-chemistry/pymol/files/pymol-3.0.0-SceneGetDrawFlag-indexing.patch b/sci-chemistry/pymol/files/pymol-3.0.0-SceneGetDrawFlag-indexing.patch
new file mode 100644
index 000000000000..c23bf79d6166
--- /dev/null
+++ b/sci-chemistry/pymol/files/pymol-3.0.0-SceneGetDrawFlag-indexing.patch
@@ -0,0 +1,22 @@
+From 50be59fb4bd6706c7939a659f4477041e2f0619e Mon Sep 17 00:00:00 2001
+From: Jarrett Johnson <36459667+JarrettSJohnson@users.noreply.github.com>
+Date: Sat, 6 Apr 2024 22:49:41 -0400
+Subject: [PATCH] PYMOL-4849: Fix SceneGetDrawFlag slot indexing
+
+---
+ layer1/Scene.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/layer1/Scene.cpp b/layer1/Scene.cpp
+index e4888db6d..ed211bdd6 100644
+--- a/layer1/Scene.cpp
++++ b/layer1/Scene.cpp
+@@ -4448,7 +4448,7 @@ int SceneGetDrawFlag(GridInfo * grid, int *slot_vla, int slot)
+ {
+ if(((slot < 0) && grid->slot) ||
+ ((slot == 0) && (grid->slot == 0)) ||
+- (slot_vla && (slot_vla[slot] == grid->slot))) {
++ (slot_vla && (slot >= 0 && slot_vla[slot] == grid->slot))) {
+ draw_flag = true;
+ }
+ }
diff --git a/sci-chemistry/pymol/files/pymol-3.0.0-distutils-py3.12.patch b/sci-chemistry/pymol/files/pymol-3.0.0-distutils-py3.12.patch
new file mode 100644
index 000000000000..3ab0384bd5f6
--- /dev/null
+++ b/sci-chemistry/pymol/files/pymol-3.0.0-distutils-py3.12.patch
@@ -0,0 +1,70 @@
+From 3d3c8963798d426e70675c3c40df146e12869b0a Mon Sep 17 00:00:00 2001
+From: Branch Vincent <branchevincent@gmail.com>
+Date: Fri, 10 May 2024 22:12:58 -0700
+Subject: [PATCH] replace distutils for python 3.12 (#362)
+
+Co-authored-by: Jarrett Johnson <jarrett.johnson@schrodinger.com>
+---
+ create_shadertext.py | 3 +--
+ modules/pymol/plugins/installation.py | 7 +++----
+ testing/tests/system/pymolwin.py | 1 -
+ 3 files changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/create_shadertext.py b/create_shadertext.py
+index 7bae72180..f6857087e 100644
+--- a/create_shadertext.py
++++ b/create_shadertext.py
+@@ -7,7 +7,6 @@
+ from collections import defaultdict
+ from os.path import dirname
+ from subprocess import Popen, PIPE
+-from distutils import dir_util
+
+ def create_all(generated_dir, pymoldir="."):
+ '''
+@@ -30,7 +29,7 @@ def __init__(self, filename):
+ self.out = cStringIO.StringIO()
+ self.filename = filename
+ else:
+- dir_util.mkpath(os.path.dirname(filename))
++ os.makedirs(os.path.dirname(filename), exist_ok=True)
+ self.out = open(filename, "w")
+ self.filename = None
+ def close(self):
+diff --git a/modules/pymol/plugins/installation.py b/modules/pymol/plugins/installation.py
+index 3a980545b..2fb8f6f03 100644
+--- a/modules/pymol/plugins/installation.py
++++ b/modules/pymol/plugins/installation.py
+@@ -45,8 +45,6 @@ def cmp_version(v1, v2):
+ '''
+ Compares two version strings. An empty version string is always considered
+ smaller than a non-empty version string.
+-
+- Uses distutils.version.StrictVersion to evaluate non-empty version strings.
+ '''
+ if v1 == v2:
+ return 0
+@@ -55,8 +53,9 @@ def cmp_version(v1, v2):
+ if v2 == '':
+ return 1
+ try:
+- from distutils.version import StrictVersion as Version
+- return cmp(Version(v1), Version(v2))
++ v1_parts = list(map(int, v1.split('.')))
++ v2_parts = list(map(int, v2.split('.')))
++ return (v1_parts > v2_parts) - (v1_parts < v2_parts)
+ except:
+ print(' Warning: Version parsing failed for', v1, 'and/or', v2)
+ return 0
+diff --git a/testing/tests/system/pymolwin.py b/testing/tests/system/pymolwin.py
+index 429fd28aa..e7885bd38 100644
+--- a/testing/tests/system/pymolwin.py
++++ b/testing/tests/system/pymolwin.py
+@@ -7,7 +7,6 @@
+ import subprocess
+ import sys
+ import unittest
+-from distutils.spawn import find_executable
+ from pymol import cmd, CmdException, testing, stored
+
+ @unittest.skipIf(not sys.platform.startswith('win'), 'windows only')
diff --git a/sci-chemistry/pymol/files/pymol-3.0.0-eof-maeffplugin.patch b/sci-chemistry/pymol/files/pymol-3.0.0-eof-maeffplugin.patch
new file mode 100644
index 000000000000..8eb8fbde318b
--- /dev/null
+++ b/sci-chemistry/pymol/files/pymol-3.0.0-eof-maeffplugin.patch
@@ -0,0 +1,22 @@
+From f005dde377e3e50b6e3f405939435c5061fa8b63 Mon Sep 17 00:00:00 2001
+From: Jarrett Johnson <36459667+JarrettSJohnson@users.noreply.github.com>
+Date: Mon, 22 Apr 2024 11:12:21 -0400
+Subject: [PATCH] PYMOL-4869: Only compare eof token in maeffplugin parser
+
+---
+ contrib/uiuc/plugins/molfile_plugin/src/maeffplugin.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/contrib/uiuc/plugins/molfile_plugin/src/maeffplugin.cpp b/contrib/uiuc/plugins/molfile_plugin/src/maeffplugin.cpp
+index efaede65b..0547ff91b 100644
+--- a/contrib/uiuc/plugins/molfile_plugin/src/maeffplugin.cpp
++++ b/contrib/uiuc/plugins/molfile_plugin/src/maeffplugin.cpp
+@@ -248,7 +248,7 @@ const char * Tokenizer::token(bool ignore_single) {
+ char c = peek();
+ bool good = false;
+ ssize_t diff;
+- while(state != DONE && c >= 0) {
++ while(state != DONE && c != std::char_traits<char>::eof()) {
+ // make sure we have space in m_token for 2 more characters
+ if ((diff = ptr-m_token) >= max_token_size-1) {
+ m_token = (char *)realloc( m_token, 2*max_token_size );
diff --git a/sci-chemistry/pymol/files/pymol-3.0.0-lto-molfile-plugin.patch b/sci-chemistry/pymol/files/pymol-3.0.0-lto-molfile-plugin.patch
new file mode 100644
index 000000000000..445fc6bc3a10
--- /dev/null
+++ b/sci-chemistry/pymol/files/pymol-3.0.0-lto-molfile-plugin.patch
@@ -0,0 +1,187 @@
+From 9d3061ca58d8b69d7dad74a68fc13fe81af0ff8e Mon Sep 17 00:00:00 2001
+From: Jarrett Johnson <jarrett.johnson@schrodinger.com>
+Date: Thu, 5 Sep 2024 11:20:02 -0400
+Subject: [PATCH] Symbol renaming in molfile_plugin and internal linkage
+
+Fixes #395
+---
+ contrib/uiuc/plugins/molfile_plugin/src/ReadPARM7.h | 10 +++++-----
+ .../uiuc/plugins/molfile_plugin/src/parm7plugin.cpp | 8 +++++---
+ contrib/uiuc/plugins/molfile_plugin/src/parmplugin.cpp | 2 ++
+ layer0/Isosurf.cpp | 6 ++++--
+ layer0/Tetsurf.cpp | 6 ++++--
+ ov/src/OVOneToAny.cpp | 2 ++
+ ov/src/OVOneToOne.cpp | 2 ++
+ 7 files changed, 24 insertions(+), 12 deletions(-)
+
+diff --git a/contrib/uiuc/plugins/molfile_plugin/src/ReadPARM7.h b/contrib/uiuc/plugins/molfile_plugin/src/ReadPARM7.h
+index 21d967d79..6bd6ddb08 100644
+--- a/contrib/uiuc/plugins/molfile_plugin/src/ReadPARM7.h
++++ b/contrib/uiuc/plugins/molfile_plugin/src/ReadPARM7.h
+@@ -59,7 +59,7 @@
+ #endif
+
+
+-typedef struct parm {
++typedef struct parm7 {
+ char title[85];
+ char version[85];
+ int IfBox, Nmxrs, IfCap,
+@@ -70,7 +70,7 @@ typedef struct parm {
+ Ipatm, Natcap,Ifpert,Nbper,Ngper,Ndper,Mbper,Mgper,Mdper,
+ Numextra;
+ _REAL Box[3], Cutcap, Xcap, Ycap, Zcap;
+-} parmstruct;
++} parm7struct;
+
+ static int read_parm7_flag(FILE *file, const char *flag, const char *format) {
+ char buf[1024];
+@@ -359,10 +359,10 @@ static void close_parm7_file(FILE *fileptr, int popn) {
+
+ static const char *parm7 = "%8d%8d%8d%8d%8d%8d%8d%8d%8d%8d\n";
+
+-static parmstruct *read_parm7_header(FILE *file) {
++static parm7struct *read_parm7_header(FILE *file) {
+ char sdum[512];
+- parmstruct *prm;
+- prm = new parmstruct;
++ parm7struct *prm;
++ prm = new parm7struct;
+
+ /* READ VERSION */
+ fgets(sdum, 512, file);
+diff --git a/contrib/uiuc/plugins/molfile_plugin/src/parm7plugin.cpp b/contrib/uiuc/plugins/molfile_plugin/src/parm7plugin.cpp
+index faf2717c6..2d46553b4 100644
+--- a/contrib/uiuc/plugins/molfile_plugin/src/parm7plugin.cpp
++++ b/contrib/uiuc/plugins/molfile_plugin/src/parm7plugin.cpp
+@@ -24,13 +24,15 @@
+ #include "molfile_plugin.h"
+ #include "ReadPARM7.h"
+
++namespace {
+ typedef struct {
+- parmstruct *prm;
++ parm7struct *prm;
+ int popn;
+ FILE *fd;
+ int nbonds;
+ int *from, *to;
+ } parmdata;
++}
+
+ static void *open_parm7_read(const char *filename, const char *,int *natoms) {
+ FILE *fd;
+@@ -39,7 +41,7 @@ static void *open_parm7_read(const char *filename, const char *,int *natoms) {
+ fprintf(stderr, "parm7plugin) Cannot open parm file '%s'\n", filename);
+ return NULL;
+ }
+- parmstruct *prm = read_parm7_header(fd);
++ parm7struct *prm = read_parm7_header(fd);
+ if (!prm) {
+ close_parm7_file(fd, popn);
+ return NULL;
+@@ -58,7 +60,7 @@ static void *open_parm7_read(const char *filename, const char *,int *natoms) {
+
+ static int read_parm7_structure(void *mydata, int *optflags, molfile_atom_t *atoms) {
+ parmdata *p = (parmdata *)mydata;
+- const parmstruct *prm = p->prm;
++ const parm7struct *prm = p->prm;
+ FILE *file = p->fd;
+ char buf[85];
+ char field[85];
+diff --git a/contrib/uiuc/plugins/molfile_plugin/src/parmplugin.cpp b/contrib/uiuc/plugins/molfile_plugin/src/parmplugin.cpp
+index acabcb1b5..4996383e1 100644
+--- a/contrib/uiuc/plugins/molfile_plugin/src/parmplugin.cpp
++++ b/contrib/uiuc/plugins/molfile_plugin/src/parmplugin.cpp
+@@ -24,12 +24,14 @@
+ #include "ReadPARM.h"
+ #include "molfile_plugin.h"
+
++namespace {
+ typedef struct {
+ ReadPARM *rp;
+ FILE *parm;
+ int natoms;
+ int *from, *to;
+ } parmdata;
++}
+
+ static void *open_parm_read(const char *filename, const char *,
+ int *natoms) {
+diff --git a/layer0/Isosurf.cpp b/layer0/Isosurf.cpp
+index 77cf42eeb..b2dfaedd7 100644
+--- a/layer0/Isosurf.cpp
++++ b/layer0/Isosurf.cpp
+@@ -44,11 +44,13 @@ Z* -------------------------------------------------------------------
+
+ #define I4(field,P1,P2,P3,P4) ((field)->get<int>(P1,P2,P3,P4))
+
+-typedef struct PointType {
++namespace {
++struct PointType {
+ float Point[3];
+ int NLink;
+ struct PointType* Link[4];
+-} PointType;
++};
++}
+
+ #define EdgePtPtr(field,P2,P3,P4,P5) ((field)->ptr(P2,P3,P4,P5))
+
+diff --git a/layer0/Tetsurf.cpp b/layer0/Tetsurf.cpp
+index 0d78b535e..cb2f5b37b 100644
+--- a/layer0/Tetsurf.cpp
++++ b/layer0/Tetsurf.cpp
+@@ -38,12 +38,14 @@ Z* -------------------------------------------------------------------
+
+ #define I3(field,P1,P2,P3) ((field)->get<int>(P1,P2,P3))
+
+-typedef struct {
++namespace {
++struct PointType {
+ float Point[3];
+ float Normal[3];
+ int NormalFlag;
+ int Link;
+-} PointType;
++};
++}
+
+ typedef struct {
+ PointType *p[3];
+diff --git a/ov/src/OVOneToAny.cpp b/ov/src/OVOneToAny.cpp
+index 1a675a51b..5dbbc498c 100644
+--- a/ov/src/OVOneToAny.cpp
++++ b/ov/src/OVOneToAny.cpp
+@@ -8,11 +8,13 @@
+
+ /* FYI: "up" stands for UniquePair -- a precursor to OneToAny */
+
++namespace {
+ typedef struct {
+ int active;
+ ov_word forward_value, reverse_value;
+ ov_size forward_next;
+ } up_element;
++}
+
+ struct _OVOneToAny {
+ OVHeap *heap;
+diff --git a/ov/src/OVOneToOne.cpp b/ov/src/OVOneToOne.cpp
+index 6dfa8f457..4e9baf9c6 100644
+--- a/ov/src/OVOneToOne.cpp
++++ b/ov/src/OVOneToOne.cpp
+@@ -8,11 +8,13 @@
+
+ /* FYI: "up" stands for UniquePair -- a precursor to OneToOne */
+
++namespace {
+ typedef struct {
+ int active;
+ ov_word forward_value, reverse_value;
+ ov_size forward_next, reverse_next;
+ } up_element;
++}
+
+ struct _OVOneToOne {
+ OVHeap *heap;
diff --git a/sci-chemistry/pymol/files/pymol-3.0.0-numpy2.patch b/sci-chemistry/pymol/files/pymol-3.0.0-numpy2.patch
new file mode 100644
index 000000000000..7cf2884ee201
--- /dev/null
+++ b/sci-chemistry/pymol/files/pymol-3.0.0-numpy2.patch
@@ -0,0 +1,35 @@
+From 758cec338057b23007ffd14c960634ff0ee24af1 Mon Sep 17 00:00:00 2001
+From: Jarrett Johnson <jarrett.johnson@schrodinger.com>
+Date: Tue, 27 Aug 2024 20:06:57 -0400
+Subject: [PATCH] Make numpy2 compatible
+
+---
+ layer2/ObjectMap.cpp | 1 +
+ modules/chempy/brick.py | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/layer2/ObjectMap.cpp b/layer2/ObjectMap.cpp
+index ada826f8a..62e3457a4 100644
+--- a/layer2/ObjectMap.cpp
++++ b/layer2/ObjectMap.cpp
+@@ -5596,6 +5596,7 @@ static int ObjectMapNumPyArrayToMapState(PyMOLGlobals * G, ObjectMapState * ms,
+ void * ptr;
+
+ #ifdef _PYMOL_NUMPY
++ import_array1(0);
+ PyArrayObject * pao = (PyArrayObject *) ary;
+ const int itemsize = PyArray_ITEMSIZE(pao);
+ #endif
+diff --git a/modules/chempy/brick.py b/modules/chempy/brick.py
+index fc514eb3a..e4c0f1bbb 100644
+--- a/modules/chempy/brick.py
++++ b/modules/chempy/brick.py
+@@ -31,7 +31,7 @@ def from_numpy(cls, data, grid, origin=(0.0, 0.0, 0.0)):
+ @param range: 3f sequence
+ @param origin: 3f sequence
+ '''
+- data = numpy.asfarray(data)
++ data = numpy.asarray(data, dtype=numpy.float64)
+ assert len(data.shape) == 3
+
+ self = cls()
diff --git a/sci-chemistry/pymol/files/pymol-3.0.0-py3.12-progress.patch b/sci-chemistry/pymol/files/pymol-3.0.0-py3.12-progress.patch
new file mode 100644
index 000000000000..b09f36048b20
--- /dev/null
+++ b/sci-chemistry/pymol/files/pymol-3.0.0-py3.12-progress.patch
@@ -0,0 +1,26 @@
+From 11325a6014565700be9673236c9b7b6c856ea6d9 Mon Sep 17 00:00:00 2001
+From: Jarrett Johnson <jarrett.johnson@schrodinger.com>
+Date: Wed, 28 Aug 2024 22:07:15 -0400
+Subject: [PATCH] Python 3.12 TypeError: convert progress to int for progress
+ bar
+
+---
+ modules/pmg_qt/pymol_qt_gui.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules/pmg_qt/pymol_qt_gui.py b/modules/pmg_qt/pymol_qt_gui.py
+index f2d663204..6e935b0d6 100644
+--- a/modules/pmg_qt/pymol_qt_gui.py
++++ b/modules/pmg_qt/pymol_qt_gui.py
+@@ -929,9 +929,9 @@ def command_set_cursor(self, i):
+ return self.lineedit.setCursorPosition(i)
+
+ def update_progress(self):
+- progress = self.cmd.get_progress()
++ progress = int(self.cmd.get_progress() * 100)
+ if progress >= 0:
+- self.progressbar.setValue(progress * 100)
++ self.progressbar.setValue(progress)
+ self.progressbar.show()
+ self.abortbutton.show()
+ else:
diff --git a/sci-chemistry/pymol/pymol-3.0.0-r1.ebuild b/sci-chemistry/pymol/pymol-3.0.0-r1.ebuild
new file mode 100644
index 000000000000..aeb6bc85c7e1
--- /dev/null
+++ b/sci-chemistry/pymol/pymol-3.0.0-r1.ebuild
@@ -0,0 +1,123 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..12} )
+DISTUTILS_USE_PEP517="setuptools"
+DISTUTILS_EXT=1
+
+inherit desktop flag-o-matic xdg distutils-r1
+
+DESCRIPTION="A Python-extensible molecular graphics system"
+HOMEPAGE="https://www.pymol.org/"
+SRC_URI="https://github.com/schrodinger/pymol-open-source/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+S="${WORKDIR}"/${PN}-open-source-${PV}
+
+LICENSE="BitstreamVera BSD freedist HPND OFL-1.0 public-domain UoI-NCSA" #844991
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+IUSE="+netcdf web"
+
+DEPEND="
+ dev-cpp/msgpack-cxx
+ dev-libs/mmtf-cpp
+ dev-python/numpy[${PYTHON_USEDEP}]
+ sys-libs/zlib
+ media-libs/freetype:2
+ media-libs/glew:0=
+ media-libs/glm
+ media-libs/libpng:0=
+ netcdf? ( sci-libs/netcdf:0= )
+"
+BDEPEND="test? ( >=dev-cpp/catch-2:0 )"
+RDEPEND="
+ ${DEPEND}
+ media-video/mpeg-tools
+ dev-python/pyopengl[${PYTHON_USEDEP}]
+ dev-python/PyQt5[opengl,${PYTHON_USEDEP}]
+ dev-python/pmw[${PYTHON_USEDEP}]
+ sci-chemistry/chemical-mime-data
+"
+
+distutils_enable_tests pytest
+
+# FIXME: We need to still figure out about how to make all the tests pass
+# https://bugs.gentoo.org/932127
+RESTRICT="test"
+
+PATCHES=(
+ "${FILESDIR}/${P}-distutils-py3.12.patch"
+ "${FILESDIR}/${P}-SceneGetDrawFlag-indexing.patch"
+ "${FILESDIR}/${P}-eof-maeffplugin.patch"
+ "${FILESDIR}/${P}-numpy2.patch"
+ "${FILESDIR}/${P}-py3.12-progress.patch"
+ "${FILESDIR}/${P}-lto-molfile-plugin.patch"
+)
+
+python_prepare_all() {
+ sed \
+ -e "s:\"/usr:\"${EPREFIX}/usr:g" \
+ -e "/ext_comp_args.*+=/s:\[.*\]$:\[\]: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++17
+
+ distutils-r1_python_prepare_all
+}
+
+python_configure_all() {
+ use !netcdf && DISTUTILS_ARGS=( --no-vmd-plugins )
+}
+
+python_install() {
+ distutils-r1_python_install \
+ --pymol-path="${EPREFIX}/usr/share/pymol"
+
+ sed \
+ -e '1i#!/usr/bin/env python' \
+ "${D}/$(python_get_sitedir)"/pymol/__init__.py > "${T}"/${PN} || die
+ python_doscript "${T}"/${PN}
+}
+
+python_test() {
+ "${EPYTHON}" -m pymol -ckqy testing/testing.py --offline --no-mmlibs --no-undo --run all || die
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ # Move data to correct location
+ dodir /usr/share/pymol
+ mv "${D}/$(python_get_sitedir)"/pymol/pymol_path/* "${ED}/usr/share/pymol" || die
+
+ # 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 "${S}"/data/pymol/icons/icon2.svg ${PN}.svg
+ make_desktop_entry "${PN} %u" PyMol ${PN} \
+ "Graphics;Education;Science;Chemistry;" \
+ "MimeType=chemical/x-pdb;chemical/pdby;chemical/x-mdl-sdfile;chemical/x-mdl-molfile;chemical/x-mol2;chemical/seq-aa-fasta;chemical/seq-na-fasta;chemical/x-xyz;chemical/x-mdl-sdf;chemical/x-macromodel-input;chemical/x-vmd;"
+
+ if ! use web; then
+ rm -rf "${D}/$(python_get_sitedir)/web" || die
+ fi
+
+ rm -f "${ED}"/usr/share/${PN}/LICENSE || die
+}