Opened 5 months ago
Last modified 5 months ago
#17635 assigned enhancement
pyproject.toml: more flexible library name search on Windows
Reported by: | Tristan Croll | Owned by: | Zach Pearson |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Build System | Version: | |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
The following bug report has been submitted: Platform: Windows-10-10.0.26100 ChimeraX Version: 1.10rc202505100155 (2025-05-10 01:55:54 UTC) Description ISOLDE's up and running with ChimeraX 1.10rc in Linux and Windows... :) Minor thing, but to make the latter work I had to add a couple of clunky entries like the below to `pyproject.toml`, because the simple `libraries = ["OpenMM"] makes `bundle_builder` crash because it expects `libOpenMM.lib` where OpenMM provides `OpenMM.lib`. The latter naming scheme seems pretty common in Windows... might pay to have `bundle_builder` look for both options and work with the one that exists? {{{ [chimerax.extension._openmm_force_ext.platform.linux] libraries = ["OpenMM"] [chimerax.extension._openmm_force_ext.platform.mac] libraries = ["OpenMM"] [chimerax.extension._openmm_force_ext.platform.win] extra-link-args = ["OpenMM.lib"] }}} Log: Startup Messages --- notes | Adding Clipper lib directory to DLL search path > isolde shorthand Initialising ISOLDE-specific command aliases: Alias Equivalent full command ------------------------------------------------- st isolde step {arguments} aw isolde add water {arguments} awsf isolde add water {arguments} sim false al isolde add ligand {arguments} aa isolde add aa $1 sel {arguments} ht isolde mod his sel {arguments} so setattr sel atoms occupancy {arguments} ab isolde adjust bfactors {arguments} ss isolde sim start sel rt isolde release torsions sel {arguments} rd isolde release distances sel {arguments} ra rd; rt pf isolde pepflip sel cf isolde cisflip sel cbb color bfactor {arguments} cbo color byattr occupancy {arguments} cbc color {arguments} bychain; color {arguments} byhet cs clipper set contourSensitivity {arguments} UCSF ChimeraX version: 1.10rc202505100155 (2025-05-10) © 2016-2025 Regents of the University of California. All rights reserved. How to cite UCSF ChimeraX > isolde demo crystal_intro > set selectionWidth 4 Forcefield cache not found or out of date. Regenerating from ffXML files. This is normal if running ISOLDE for the first time, or after upgrading OpenMM. Done loading forcefield > isolde set simFidelityMode Highest/Slowest ISOLDE: setting sim fidelity mode to Highest/Slowest nonbonded_cutoff_distance = 1.700000 use_gbsa = True gbsa_cutoff = 2.000000 before.pdb title: Crystal structure of etub from clostridium kluyveri [more info...] Chain information for before.pdb #1 --- Chain | Description | UniProt A | predicted microcompartment protein | A5N734_CLOK5 75-304 before.pdb title: Crystal structure of etub from clostridium kluyveri [more info...] Chain information for before.pdb --- Chain | Description | UniProt 1.2/A | predicted microcompartment protein | A5N734_CLOK5 75-304 WARNING: multiple experimental reflection datasets found: (dataset) FOBS, SIGFOBS, (dataset) IOBS, SIGIOBS, (dataset) DANO, SIGDANO, (dataset) F(+), SIGF(+), F(-), SIGF(-), (dataset) I(+), SIGI(+), I(-), SIGI(-) Automatically choosing "(dataset) FOBS, SIGFOBS". Launching live xmap mgr took 2.292768955230713 seconds. Opened (LIVE) 2mFo-DFc as #1.1.1.2, grid size 36,36,34, pixel 0.723, shown at level 0.095, step 1, values float32 Opened (LIVE) mFo-DFc as #1.1.1.3, grid size 36,36,34, pixel 0.723, shown at level -0.0575,0.0575, step 1, values float32 Opened (LIVE) 2mFo-DFc_sharp_29 as #1.1.1.4, grid size 36,36,34, pixel 0.723, shown at level 0.346, step 1, values float32 ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side chains... ISOLDE: Corrected atom nomenclature of 12 residues in model #1.2 to IUPAC-IUB standards. Cached rota8000-val data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-leu data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-ile data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-pro data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-phe data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-tyr data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-trp data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-ser data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-thr data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-cys data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-met data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-lys data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-his data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-arg data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-asp data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-asn data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-gln data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rota8000-glu data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rama8000-cispro data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rama8000-transpro data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rama8000-gly-sym data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rama8000-prepro-noGP data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rama8000-ileval-nopreP data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Cached rama8000-general-noGPIVpreP data not found. Regenerating from text file. This is normal if running ISOLDE for the first time Opened (LIVE) MDFF potential as #1.1.1.5, grid size 36,36,34, pixel 0.723, shown at level 0.305, step 1, values float32 Loaded crystallographic demo: PDB ID 3io0 ISOLDE toobar command name: button-start-sim > isolde sim start /A ISOLDE: started sim > select clear ISOLDE toobar command name: button-stop-keep > isolde sim stop Sim termination reason: None Updating bulk solvent parameters... ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side chains... ISOLDE: stopped sim OpenGL version: 3.3.0 NVIDIA 572.70 OpenGL renderer: NVIDIA GeForce RTX 3070 Laptop GPU/PCIe/SSE2 OpenGL vendor: NVIDIA Corporation Python: 3.11.4 Locale: en_GB.cp1252 Qt version: PyQt6 6.8.1, Qt 6.8.2 Qt runtime version: 6.8.2 Qt platform: windows Manufacturer: HP Model: HP ZBook Studio 15.6 inch G8 Mobile Workstation PC OS: Microsoft Windows 11 Pro (Build 26100) Memory: 34,007,068,672 MaxProcessMemory: 137,438,953,344 CPU: 16 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz OSLanguage: en-GB Installed Packages: alabaster: 1.0.0 appdirs: 1.4.4 asttokens: 3.0.0 auditwheel: 6.3.0 babel: 2.17.0 beautifulsoup4: 4.13.3 blockdiag: 3.0.0 blosc2: 3.3.2 build: 1.2.2.post1 certifi: 2025.4.26 cftime: 1.6.4.post1 charset-normalizer: 3.4.2 ChimeraX-AddCharge: 1.5.18 ChimeraX-AddH: 2.2.7 ChimeraX-AlignmentAlgorithms: 2.0.2 ChimeraX-AlignmentHdrs: 3.6.1 ChimeraX-AlignmentMatrices: 2.1 ChimeraX-Alignments: 2.20.1 ChimeraX-AlphaFold: 1.0.1 ChimeraX-AltlocExplorer: 1.1.2 ChimeraX-AmberInfo: 1.0 ChimeraX-Aniso: 1.1.3 ChimeraX-Arrays: 1.1 ChimeraX-Atomic: 1.60.5 ChimeraX-AtomicLibrary: 14.1.18 ChimeraX-AtomSearch: 2.0.1 ChimeraX-AxesPlanes: 2.4 ChimeraX-BasicActions: 1.1.3 ChimeraX-BILD: 1.0 ChimeraX-BlastProtein: 3.0.0 ChimeraX-Boltz: 1.0 ChimeraX-BondRot: 2.0.4 ChimeraX-BugReporter: 1.0.2 ChimeraX-BuildStructure: 2.13.1 ChimeraX-Bumps: 1.0 ChimeraX-BundleBuilder: 1.5.1 ChimeraX-ButtonPanel: 1.0.1 ChimeraX-CageBuilder: 1.0.1 ChimeraX-CellPack: 1.0 ChimeraX-Centroids: 1.4 ChimeraX-ChangeChains: 1.1 ChimeraX-CheckWaters: 1.5 ChimeraX-ChemGroup: 2.0.2 ChimeraX-Clashes: 2.3 ChimeraX-Clipper: 0.25.0 ChimeraX-ColorActions: 1.0.5 ChimeraX-ColorGlobe: 1.0 ChimeraX-ColorKey: 1.5.8 ChimeraX-CommandLine: 1.2.6 ChimeraX-ConnectStructure: 2.0.1 ChimeraX-Contacts: 1.0.1 ChimeraX-Core: 1.10rc202505100155 ChimeraX-CoreFormats: 1.2 ChimeraX-coulombic: 1.4.5 ChimeraX-Crosslinks: 1.0 ChimeraX-Crystal: 1.0 ChimeraX-CrystalContacts: 1.0.1 ChimeraX-DataFormats: 1.2.4 ChimeraX-Dicom: 1.2.7 ChimeraX-DistMonitor: 1.4.2 ChimeraX-DockPrep: 1.1.4 ChimeraX-Dssp: 2.0 ChimeraX-EMDB-SFF: 1.0 ChimeraX-ESMFold: 1.0 ChimeraX-FileHistory: 1.0.1 ChimeraX-FunctionKey: 1.0.1 ChimeraX-Geometry: 1.3 ChimeraX-gltf: 1.0 ChimeraX-Graphics: 1.4.1 ChimeraX-Hbonds: 2.5.1 ChimeraX-Help: 1.3 ChimeraX-HKCage: 1.3 ChimeraX-IHM: 1.1 ChimeraX-ImageFormats: 1.2 ChimeraX-IMOD: 1.0 ChimeraX-IO: 1.0.3 ChimeraX-ISOLDE: 1.10rc0 ChimeraX-ItemsInspection: 1.0.1 ChimeraX-IUPAC: 1.0 ChimeraX-KVFinder: 1.6.2 ChimeraX-Label: 1.1.14 ChimeraX-ListInfo: 1.2.2 ChimeraX-Log: 1.2 ChimeraX-LookingGlass: 1.1 ChimeraX-Maestro: 1.9.1 ChimeraX-Map: 1.3 ChimeraX-MapData: 2.0 ChimeraX-MapEraser: 1.0.1 ChimeraX-MapFilter: 2.0.1 ChimeraX-MapFit: 2.0 ChimeraX-MapSeries: 2.1.1 ChimeraX-Markers: 1.0.1 ChimeraX-Mask: 1.0.2 ChimeraX-MatchMaker: 2.2.1 ChimeraX-MCopy: 1.0 ChimeraX-MDcrds: 2.10.1 ChimeraX-MedicalToolbar: 1.1 ChimeraX-Meeting: 1.0.1 ChimeraX-MLP: 1.1.1 ChimeraX-mmCIF: 2.16 ChimeraX-MMTF: 2.2 ChimeraX-ModelArchive: 1.0 ChimeraX-Modeller: 1.5.19 ChimeraX-ModelPanel: 1.5.1 ChimeraX-ModelSeries: 1.0.1 ChimeraX-Mol2: 2.0.3 ChimeraX-Mole: 1.0 ChimeraX-Morph: 1.0.2 ChimeraX-MouseModes: 1.2 ChimeraX-Movie: 1.0 ChimeraX-MutationScores: 1.0 ChimeraX-Neuron: 1.0 ChimeraX-Nifti: 1.2 ChimeraX-NMRSTAR: 1.0.2 ChimeraX-NRRD: 1.2 ChimeraX-Nucleotides: 2.0.3 ChimeraX-OpenCommand: 1.14.1 ChimeraX-OrthoPick: 1.0.1 ChimeraX-PDB: 2.7.10 ChimeraX-PDBBio: 1.0.1 ChimeraX-PDBLibrary: 1.0.4 ChimeraX-PDBMatrices: 1.0 ChimeraX-PickBlobs: 1.0.1 ChimeraX-Positions: 1.0 ChimeraX-PresetMgr: 1.1.3 ChimeraX-ProfileGrids: 1.1.2 ChimeraX-PubChem: 2.2 ChimeraX-ReadPbonds: 1.0.1 ChimeraX-Registration: 1.1.2 ChimeraX-RemoteControl: 1.0 ChimeraX-RenderByAttr: 1.6.3 ChimeraX-RenumberResidues: 1.1 ChimeraX-ResidueFit: 1.0.1 ChimeraX-RestServer: 1.3.1 ChimeraX-RNALayout: 1.0 ChimeraX-RotamerLibMgr: 4.0 ChimeraX-RotamerLibsDunbrack: 2.0 ChimeraX-RotamerLibsDynameomics: 2.0 ChimeraX-RotamerLibsRichardson: 2.0 ChimeraX-SaveCommand: 1.5.1 ChimeraX-SchemeMgr: 1.0 ChimeraX-SDF: 2.0.3 ChimeraX-Segger: 1.0 ChimeraX-Segment: 1.0.1 ChimeraX-Segmentations: 3.5.7 ChimeraX-SelInspector: 1.0 ChimeraX-SeqView: 2.17.1 ChimeraX-Shape: 1.1 ChimeraX-Shell: 1.0.1 ChimeraX-Shortcuts: 1.2.0 ChimeraX-ShowSequences: 1.0.3 ChimeraX-SideView: 1.0.1 ChimeraX-SimilarStructures: 1.0.1 ChimeraX-Smiles: 2.1.2 ChimeraX-SmoothLines: 1.0 ChimeraX-SpaceNavigator: 1.0 ChimeraX-StdCommands: 1.19.1 ChimeraX-STL: 1.0.1 ChimeraX-Storm: 1.0 ChimeraX-StructMeasure: 1.2.1 ChimeraX-Struts: 1.0.1 ChimeraX-Surface: 1.0.1 ChimeraX-SwapAA: 2.0.1 ChimeraX-SwapRes: 2.5.2 ChimeraX-TapeMeasure: 1.0 ChimeraX-TaskManager: 1.0 ChimeraX-Test: 1.0 ChimeraX-Toolbar: 1.2.3 ChimeraX-ToolshedUtils: 1.2.4 ChimeraX-Topography: 1.0 ChimeraX-ToQuest: 1.0 ChimeraX-Tug: 1.0.1 ChimeraX-UI: 1.45.1 ChimeraX-Umap: 1.0 ChimeraX-uniprot: 2.3.1 ChimeraX-UnitCell: 1.0.1 ChimeraX-ViewDockX: 1.4.4 ChimeraX-VIPERdb: 1.0 ChimeraX-Vive: 1.1 ChimeraX-VolumeMenu: 1.0.1 ChimeraX-vrml: 1.0 ChimeraX-VTK: 1.0 ChimeraX-WavefrontOBJ: 1.0 ChimeraX-WebCam: 1.0.2 ChimeraX-WebServices: 1.1.5 ChimeraX-Zone: 1.0.1 colorama: 0.4.6 comm: 0.2.2 comtypes: 1.4.10 contourpy: 1.3.2 coverage: 7.8.0 cxservices: 1.2.3 cycler: 0.12.1 Cython: 3.0.12 debugpy: 1.8.14 decorator: 5.2.1 docutils: 0.21.2 executing: 2.2.0 filelock: 3.18.0 fonttools: 4.58.0 funcparserlib: 2.0.0a0 glfw: 2.9.0 grako: 3.16.5 h5py: 3.13.0 html2text: 2024.2.26 idna: 3.10 ihm: 2.2 imagecodecs: 2024.6.1 imagesize: 1.4.1 iniconfig: 2.1.0 ipykernel: 6.29.5 ipython: 8.26.0 ipywidgets: 8.1.7 jedi: 0.19.1 Jinja2: 3.1.6 jupyter_client: 8.6.3 jupyter_core: 5.7.2 jupyterlab_widgets: 3.0.15 kiwisolver: 1.4.8 line_profiler: 4.2.0 lxml: 5.3.1 lz4: 4.4.4 MarkupSafe: 3.0.2 matplotlib: 3.10.1 matplotlib-inline: 0.1.7 msgpack: 1.1.0 ndindex: 1.9.2 nest-asyncio: 1.6.0 netCDF4: 1.6.5 networkx: 3.3 nibabel: 5.2.0 nptyping: 2.5.0 numexpr: 2.10.2 numpy: 1.26.4 OpenMM: 8.2.0 openvr: 1.26.701 packaging: 24.2 ParmEd: 4.2.2 parso: 0.8.4 pep517: 0.13.1 pickleshare: 0.7.5 pillow: 10.4.0 pip: 25.0.1 pkginfo: 1.11.1 platformdirs: 4.3.8 pluggy: 1.5.0 prompt_toolkit: 3.0.51 psutil: 7.0.0 pure_eval: 0.2.3 py-cpuinfo: 9.0.0 pycollada: 0.8 pydicom: 2.4.4 pyelftools: 0.32 Pygments: 2.18.0 pynmrstar: 3.3.5 pynrrd: 1.0.0 PyOpenGL: 3.1.9 PyOpenGL-accelerate: 3.1.9 pyopenxr: 1.1.4501 pyparsing: 3.2.3 pyproject_hooks: 1.2.0 PyQt6-commercial: 6.8.1 PyQt6-Qt6: 6.8.2 PyQt6-WebEngine-commercial: 6.8.0 PyQt6-WebEngine-Qt6: 6.8.2 PyQt6_sip: 13.10.0 pytest: 8.3.5 pytest-cov: 6.1.1 python-dateutil: 2.9.0.post0 pytz: 2025.2 pywin32: 310 pyzmq: 26.4.0 qtconsole: 5.5.2 QtPy: 2.4.3 qtshim: 1.1 RandomWords: 0.4.0 requests: 2.32.3 roman-numerals-py: 3.1.0 scipy: 1.14.0 setuptools: 78.1.0 sfftk-rw: 0.8.1 six: 1.16.0 snowballstemmer: 3.0.1 sortedcontainers: 2.4.0 soupsieve: 2.7 Sphinx: 8.2.3 sphinx-autodoc-typehints: 3.1.0 sphinxcontrib-applehelp: 2.0.0 sphinxcontrib-blockdiag: 3.0.0 sphinxcontrib-devhelp: 2.0.0 sphinxcontrib-htmlhelp: 2.1.0 sphinxcontrib-jsmath: 1.0.1 sphinxcontrib-qthelp: 2.0.0 sphinxcontrib-serializinghtml: 2.0.0 stack-data: 0.6.3 superqt: 0.7.1 tables: 3.10.2 tcia_utils: 1.5.1 tifffile: 2025.3.13 tinyarray: 1.2.4 tornado: 6.4.2 traitlets: 5.14.3 typing_extensions: 4.13.2 tzdata: 2025.2 urllib3: 2.4.0 wcwidth: 0.2.13 webcolors: 24.11.1 wheel: 0.45.1 wheel-filename: 1.4.2 widgetsnbextension: 4.0.14 WMI: 1.5.1
Change History (6)
comment:1 by , 5 months ago
Component: | Unassigned → Build System |
---|---|
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → pyproject.toml: more flexible library name search on Windows |
Type: | defect → enhancement |
comment:2 by , 5 months ago
comment:4 by , 5 months ago
That’s correct. The version of ISOLDE I pushed to GitHub today is working in Windows, if you want to test with that. On Mon, 12 May 2025 at 21:35, ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote: > >
comment:5 by , 5 months ago
What's actually happening is, we assume that the '.lib' suffix is going to be automatically added by the compiler, so we strip it off when you give us a name like "foo.lib" in the libraries field. But if you don't trip that 'if', it prepends the library with 'lib' and becomes 'libfoo.lib' by the time it hits the compiler.
That's for *ChimeraX libraries* and libraries generated by bundle builder. Like you're seeing it won't hit libraries generated by other build systems.
Since MSVC won't let me give it both foo and libfoo and will complain about one of them being missing even if all the symbols are accounted for I think the way forward is to delete that else clause and have everybody write in 'libwhatever' if the lib comes from ChimeraX and they know what it's going to be called.
comment:6 by , 5 months ago
Well actually that won't work either because the idea was not to have to have these separate tables across platforms if one of them is expecting lib prefixes. I've got to look through all the lib folders and figure out what the actual names of the library files are.
Sounds reasonable to me. Thanks for flagging this!