62 lines
2.3 KiB
Markdown
62 lines
2.3 KiB
Markdown
# pymol-open-source
|
|
|
|
Open-Source PyMOL, compiled from the GitHub source. Free for everyone,
|
|
no license file — unlike the `pymol` module (Schrodinger incentive
|
|
bundle).
|
|
|
|
- Upstream: https://github.com/schrodinger/pymol-open-source
|
|
- License: Open-Source PyMOL license (BSD-like)
|
|
|
|
## How it is built
|
|
|
|
uv route (careless-style): uv fetches a standalone Python 3.12 into
|
|
`$PREFIX/python`, creates `$PREFIX/venv`, then `uv pip install` compiles
|
|
the sha-pinned source tarball into it with the gcc/12.3.0 module
|
|
(`CC=gcc CXX=g++`; gcc is also a runtime dep for its libstdc++). glm
|
|
(header-only) is fetched as a second pinned tarball and staged via
|
|
`PREFIX_PATH`. PyQt5 is pip-installed for the GUI.
|
|
|
|
Build options passed as `uv pip install -C k=v` (upstream
|
|
`_custom_build/backend.py` turns them into `build_ext --k=v`):
|
|
|
|
- `use-msgpackc=no` — no msgpack-c/mmtf-cpp on Ra; disables fast MMTF load
|
|
- `no-libxml=true` — disables COLLADA export
|
|
- `no-vmd-plugins=false` — disables VMD molfile plugins (needs libnetcdf).
|
|
`false` is correct: upstream stores the value straight into `vmd_plugins`.
|
|
|
|
Boolean flags take ONLY `true`/`false` — upstream `str2bool` rejects
|
|
`yes`/`no` with "Boolean value expected".
|
|
|
|
Required system RPMs on the build host (if the compile fails, ask
|
|
sysadmins for): `glew-devel libpng-devel freetype-devel mesa-libGL-devel`.
|
|
|
|
`uv` must be on the build host (default `~/.local/bin/uv`, override with
|
|
`UV=/path/to/uv`).
|
|
|
|
## Building on Ra
|
|
|
|
```sh
|
|
module use unstable && module load modbuild/2.1.3
|
|
cd pymol-open-source
|
|
modbuild build \
|
|
--tmpdir=/das/work/p21/p21515/.cache/Pmodules \
|
|
--distdir=/das/work/p21/p21515/.cache/Pmodules \
|
|
3.1.0
|
|
module use MX unstable && module load pymol-open-source/3.1.0
|
|
```
|
|
|
|
## Verifying the install
|
|
|
|
```sh
|
|
which pymol # -> .../pymol-open-source/3.1.0/venv/bin/pymol
|
|
readlink -f "$PYMOL_ENV/bin/python" # system /usr/bin/python3.12 (RPM) is fine;
|
|
# inside $PREFIX/python if uv had to download one
|
|
pymol -cq # headless no-op: exits 0 without X
|
|
pymol # Qt GUI check, needs X
|
|
```
|
|
|
|
## Adding a new version
|
|
|
|
Add the version + tarball sha256 in `files/config.yaml`
|
|
(`sha256sum` the downloaded `v<ver>.tar.gz`), then build as above.
|