Opened 3 years ago

Closed 3 years ago

#7760 closed defect (fixed)

ChimeraX build error caused by ChimeraX user site-packages setuptools module

Reported by: Tom Goddard Owned by: Zach Pearson
Priority: moderate Milestone:
Component: Build System Version:
Keywords: Cc: Greg Couch
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

A ChimeraX build-from-scratch (with build directory deleted) failed because the alignment_headers bundle wheel file got version 0.0.0 instead of the correct 3.2.1

creating 'dist/ChimeraX_AlignmentHdrs-0.0.0-cp39-cp39-macosx_10_9_universal2.whl' 

This was caused by the build process using the ChimeraX user site-packages directory which had I guess an older setuptools from installing Toolshed bundles.

$ pwd
/Users/goddard/ucsf/chimerax/src/bundles/alignment_headers
$ make clean
$ make install
../../../ChimeraX.app/Contents/bin/python3.9 -I -m chimerax.core --nogui --safemode --exit --cmd "devel install . user false exit true  "
Executing: devel install . user false exit true  
/Users/goddard/Library/Application Support/ChimeraX/1.5/site-packages/setuptools/_distutils/dist.py:275: UserWarning: Unknown distribution option: 'distclass'

Seems like our build process should not be using the user site-packages directory.

Change History (8)

comment:1 by Tom Goddard, 3 years ago

Not sure if Greg or Zach should be the owner of this ticket. Reassign as needed.

comment:2 by Zach Pearson, 3 years ago

Can you note what Toolshed bundles you have installed? I can install them and come up with a way to disable the user site directory.

comment:3 by Tom Goddard, 3 years ago

Unfortunately I already deleted the setuptools from the ChimeraX user site packages. Here is what I have in the user site-packages directory

  /Users/goddard/Library/Application Support/ChimeraX/1.5/site-packages:
  total used in directory 912 available 615.4 GiB
  drwxr-xr-x  81 goddard  staff    2592 Oct  7 15:40 .
  drwxr-xr-x   5 goddard  staff     160 Oct  7 12:15 ..
  drwxr-xr-x  10 goddard  staff     320 Aug  1 16:01 ChimeraX_ArtiaX-0.1.dist-info
  drwxr-xr-x  10 goddard  staff     320 Oct  7 12:14 ChimeraX_Clipper-0.19.0.dev0.dist-info
  drwxr-xr-x  10 goddard  staff     320 Oct  7 12:14 ChimeraX_ISOLDE-1.5.dev0.dist-info
  drwxr-xr-x   9 goddard  staff     288 Sep 26 18:49 ChimeraX_PhenixUI-1.0.4.dist-info
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 Deprecated-1.2.13.dist-info
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 PyGSP-0.5.1.dist-info
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 PyWavelets-1.4.1.dist-info
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 PyYAML-6.0.dist-info
  drwxr-xr-x   9 goddard  staff     288 Aug  8 15:17 Send2Trash-1.8.0.dist-info
  drwxr-xr-x   3 goddard  staff      96 Aug  1 16:01 __pycache__
  drwxr-xr-x   5 goddard  staff     160 Oct  5 18:13 _distutils_hack
  -rwxr-xr-x   1 goddard  staff  336185 Oct  5 18:13 _layout.cpython-39-darwin.so
  drwxr-xr-x   4 goddard  staff     128 Oct  5 18:13 _yaml
  drwxr-xr-x  12 goddard  staff     384 Oct  5 18:13 caffe2
  drwxr-xr-x   8 goddard  staff     256 Oct  7 12:14 chimerax
  drwxr-xr-x   6 goddard  staff     192 Oct  5 18:13 deprecated
  -rw-r--r--   1 goddard  staff     152 Oct  5 18:13 distutils-precedence.pth
  drwxr-xr-x   3 goddard  staff      96 Oct  5 18:13 doc
  drwxr-xr-x  11 goddard  staff     352 Oct  5 18:13 future
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 future-0.18.2.dist-info
  drwxr-xr-x  11 goddard  staff     352 Oct  5 18:13 graphtools
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 graphtools-1.5.2.dist-info
  drwxr-xr-x  17 goddard  staff     544 Oct  5 18:13 imageio
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 imageio-2.22.1.dist-info
  drwxr-xr-x  31 goddard  staff     992 Oct  5 18:13 joblib
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 joblib-1.2.0.dist-info
  drwxr-xr-x   7 goddard  staff     224 Oct  5 18:13 libfuturize
  drwxr-xr-x   6 goddard  staff     192 Oct  5 18:13 libpasteurize
  drwxr-xr-x  10 goddard  staff     320 Oct  5 18:13 llvmlite
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 llvmlite-0.39.1.dist-info
  drwxr-xr-x  18 goddard  staff     576 Oct  5 18:13 mrcfile
  drwxr-xr-x  10 goddard  staff     320 Oct  5 18:13 mrcfile-1.4.3.dist-info
  drwxr-xr-x  48 goddard  staff    1536 Oct  5 18:13 numba
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 numba-0.56.2.dist-info
  drwxr-xr-x  21 goddard  staff     672 Aug  1 16:01 pandas
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 pandas-1.3.5.dist-info
  drwxr-xr-x   9 goddard  staff     288 Aug  1 16:01 pandas-1.4.3.dist-info
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 past
  drwxr-xr-x  14 goddard  staff     448 Oct  5 18:13 phate
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 phate-1.0.8.dist-info
  drwxr-xr-x   7 goddard  staff     224 Oct  5 18:13 pkg_resources
  drwxr-xr-x  13 goddard  staff     416 Oct  5 18:13 pygsp
  drwxr-xr-x  13 goddard  staff     416 Oct  5 18:13 pynndescent
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 pynndescent-0.5.7.dist-info
  drwxr-xr-x  41 goddard  staff    1312 Oct  5 18:13 pyqtgraph
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 pyqtgraph-0.13.1.dist-info
  drwxr-xr-x  23 goddard  staff     736 Oct  5 18:13 pywt
  drwxr-xr-x   7 goddard  staff     224 Oct  5 18:13 s_gd2
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 s_gd2-1.8.dist-info
  drwxr-xr-x  10 goddard  staff     320 Oct  5 18:13 scikit_image-0.19.3.dist-info
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 scikit_learn-1.1.2.dist-info
  drwxr-xr-x  19 goddard  staff     608 Oct  5 18:13 scprep
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 scprep-1.2.1.dist-info
  drwxr-xr-x  17 goddard  staff     544 Aug  8 15:17 send2trash
  drwxr-xr-x  28 goddard  staff     896 Oct  5 18:13 skimage
  drwxr-xr-x  54 goddard  staff    1728 Oct  5 18:13 sklearn
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 sklearn-0.0.dist-info
  drwxr-xr-x  10 goddard  staff     320 Aug  1 16:01 starfile
  drwxr-xr-x   9 goddard  staff     288 Aug  1 16:01 starfile-0.4.11.dist-info
  drwxr-xr-x  15 goddard  staff     480 Aug  1 16:01 superqt
  drwxr-xr-x   8 goddard  staff     256 Aug  1 16:01 superqt-0.3.3.dist-info
  drwxr-xr-x   7 goddard  staff     224 Oct  5 18:13 tasklogger
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 tasklogger-1.2.0.dist-info
  drwxr-xr-x  11 goddard  staff     352 Aug  1 16:01 tests
  drwxr-xr-x   7 goddard  staff     224 Oct  5 18:13 threadpoolctl-3.1.0.dist-info
  -rw-r--r--   1 goddard  staff   41112 Oct  5 18:13 threadpoolctl.py
  drwxr-xr-x  82 goddard  staff    2624 Oct  5 18:13 torch
  drwxr-xr-x  11 goddard  staff     352 Oct  5 18:13 torch-1.12.1.dist-info
  drwxr-xr-x  20 goddard  staff     640 Oct  5 18:13 torchgen
  drwxr-xr-x  29 goddard  staff     928 Oct  5 18:13 tqdm
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 tqdm-4.64.1.dist-info
  drwxr-xr-x   7 goddard  staff     224 Aug  1 16:01 typing_extensions-4.3.0.dist-info
  -rw-r--r--   1 goddard  staff   75384 Aug  1 16:01 typing_extensions.py
  drwxr-xr-x  14 goddard  staff     448 Oct  5 18:13 umap
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 umap_learn-0.5.3.dist-info
  drwxr-xr-x  10 goddard  staff     320 Oct  5 18:22 wiggle-0.2.2.dist-info
  drwxr-xr-x   9 goddard  staff     288 Oct  5 18:13 wrapt
  drwxr-xr-x   8 goddard  staff     256 Oct  5 18:13 wrapt-1.14.1.dist-info
  drwxr-xr-x  21 goddard  staff     672 Oct  5 18:13 yaml

comment:4 by Tom Goddard, 3 years ago

Here is what "toolshed list" says I have installed

UCSF ChimeraX version: 1.5.dev202210070217 (2022-10-07)
© 2016-2022 Regents of the University of California. All rights reserved.
How to cite UCSF ChimeraX
toolshed list
List of installed bundles:
AddCharge (1.4): Add partial charges to atoms
AddH (2.2): Add hydrogens
AlignmentAlgorithms (2.0): Sequence alignment algorithms
AlignmentHdrs (3.2.1): Alignment header support
AlignmentMatrices (2.0): Sequence alignment similarity matrices
Alignments (2.6): Sequence alignment support
AlphaFold (1.0): Fetch structures from EBI AlphaFold database
AltlocExplorer (1.0.3): Examine/change alternate atomic locations
AmberInfo (1.0): Provide information about AmberTools installation
Arrays (1.0): C++ library for parsing numpy arrays
ArtiaX (0.1): ArtiaX: Cryo-ET Plugin for ChimeraX
Atomic (1.41.4): Atomic-structure functionality
AtomicLibrary (8.0.2): Atomic-structure C++ library
AtomSearch (2.0.1): 3D atom search
AxesPlanes (2.3): Depict axes or planes
BasicActions (1.1.2): Basic actions for user-defined specifier names
BILD (1.0): BILD file reader
BlastProtein (2.1.2): Search PDB/NR/AlphaFold using BLAST
BondRot (2.0.1): Bond rotation support
BugReporter (1.0.1): Report bugs when an error occurs
BuildStructure (2.7.1): Create/modify structures
Bumps (1.0): Find protrusions in density maps
ButtonPanel (1.0.1): Create custom user interface panels
CageBuilder (1.0.1): Build polygonal meshes for oligomeric molecular assemblies
CellPack (1.0): Fetch cellPACK models from web
Centroids (1.3.1): Depict centroid of atoms
ChangeChains (1.0.2): Change chain IDs
CheckWaters (1.3): Check water placement in maps
ChemGroup (2.0): Detect chemically functional groups
Clashes (2.2.4): Find clashes/contacts in structures
Clipper (0.19.0.dev0): Clipper: Efficient handling of volumetric data and symmetry
ColorActions (1.0.3): Simple interface for coloring objects
ColorGlobe (1.0): Show directional resolution colored sphere
ColorKey (1.5.2): Add color key to graphics
CommandLine (1.2.4): Command line support
ConnectStructure (2.0.1): Add bonds to structures that lack them
Contacts (1.0.1): Display chain contact maps
Core (1.5.dev202210070217): ChimeraX Core Package
CoreFormats (1.1): ChimeraX session support
coulombic (1.3.2): Compute/show electrostatic potential
Crosslinks (1.0): Analyze crosslinks
Crystal (1.0): Crystal symmetries
CrystalContacts (1.0.1): Show contacting asymmetric units in a crystal
DataFormats (1.2.2): Data format management
Dicom (1.1): Read medical imaging and segmentations in DICOM format
DistMonitor (1.3): Interactive distance display
DockPrep (1.0): Prepare structures for docking
Dssp (2.0): Compute/assign secondary structure
EMDB-SFF (1.0): EMDB SFF file reader
ExperimentalCommands (1.0): Experimental commands
FileHistory (1.0.1): File History Panel
FunctionKey (1.0.1): Assign function keys to run commands
Geometry (1.2): Vector and coordinate system routines
gltf (1.0): Read/write glTF 3d scene files
Graphics (1.1): OpenGL graphics rendering
Hbonds (2.4): Identify hydrogen bonds in and among structures
Help (1.2.1): Show ChimeraX Help
HKCage (1.3): Create icosahedral mesh of hexagons and pentagons
IHM (1.1): Integrative Hybrid Models file reader
ImageFormats (1.2): Support for saving images
IMOD (1.0): IMOD model file reader
IO (1.0.1): Python convenience input/output functions
ISOLDE (1.5.dev0): ISOLDE: Interactive Structure Optimisation by Local Direct Exploration
ItemsInspection (1.0.1): Inspection of attributes of a set of items
Label (1.1.7): Add text labels to graphics
ListInfo (1.1.1): Report attributes for selected atomic data
Log (1.1.5): Log support
LookingGlass (1.1): LookingGlass holographic display
Maestro (1.8.2): Maestro reader
Map (1.1.1): Density maps
MapData (2.0): Volume data file formats
MapEraser (1.0.1): Map eraser
MapFilter (2.0): Operations on maps
MapFit (2.0): Fit molecules into maps
MapSeries (2.1.1): Volume series
Markers (1.0.1): Place markers on density maps
Mask (1.0.1): Mask a volume to a surface
MatchMaker (2.0.9): Superimpose structures
MDcrds (2.6): Molecular dynamics support
MedicalToolbar (1.0.2): Toolbar for medical image analysis
Meeting (1.0.1): Shared interactive VR sessions.
MLP (1.1): Molecular lipophilicity calculation
mmCIF (2.8): mmCIF format read/write
MMTF (2.2): MMTF format read/write
Modeller (1.5.6): Interface to Modeller
ModelPanel (1.3.6): ChimeraX Model Panel
ModelSeries (1.0.1): Display sequences of models one by one
Mol2 (2.0): Mol2 reader/writer
Mole (1.0): Open JSON tunnel files from Mole
Morph (1.0.1): Morph atomic structures
MouseModes (1.1.1): Provide right button mouse mode tool
Movie (1.0): Commands to record movies
Neuron (1.0): Read SWC neuron trace files
Nucleotides (2.0.3): Create nucleotide-specific displays
OpenCommand (1.9.1): Manages 'open' command extensibility
PDB (2.6.8): PDB format read/write
PDBBio (1.0): PDB biological assembly fetch
PDBLibrary (1.0.2): C++ PDB support
PDBMatrices (1.0): Crystal and biological unit matrices
PhenixUI (1.0.4): Run model bulding calculations using Phenix
PickBlobs (1.0.1): Measure and color blobs
Positions (1.0): Read and write model position matrices
PresetMgr (1.1): Preset management
PubChem (2.1): PubChem fetch
ReadPbonds (1.0.1): Read in pseudobonds from a file
Registration (1.1.1): Register ChimeraX
RemoteControl (1.0): Control ChimeraX from other apps
RenumberResidues (1.1): Renumber residues
ResidueFit (1.0.1): Display fit of residues to density map
RestServer (1.1): Starts REST server to execute commands from network requests
RNALayout (1.0): Make RNA models
RotamerLibMgr (2.0.1): Manage rotamer libraries
RotamerLibsDunbrack (2.0): Dunbrack rotamer library
RotamerLibsDynameomics (2.0): Dynameomics rotamer library
RotamerLibsRichardson (2.0): Richardson rotamer libraries
SaveCommand (1.5.1): Manages 'save' command extensibility
SchemeMgr (1.0): HTTP scheme management
SDF (2.0): SDF file reader
Segger (1.0): Segment map
Segment (1.0): Watershed segment calculation
SelInspector (1.0): Inspect contents of selection
SeqView (2.7.2): Sequence viewer
Shape (1.0.1): Make models for geometric shapes
Shell (1.0.1): Interactive Python shell
Shortcuts (1.1.1): Button and keyboard shortcuts
ShowSequences (1.0.1): Choose/show structure sequences
SideView (1.0.1): Side view of scene
Smiles (2.1): SMILES fetch
SmoothLines (1.0): Smooth network of lines
SpaceNavigator (1.0): Space Navigator device support
StdCommands (1.10): Standard commands
STL (1.0): STL file read/write
Storm (1.0): STORM file reader
StructMeasure (1.1): Structure measurement user interface
Struts (1.0.1): struts for 3D printing
Surface (1.0): Surface calculations
SwapAA (2.0.1): Swap amino acid
SwapRes (2.1.3): Swap residue side chains
TapeMeasure (1.0): Tape measure mouse mode
Test (1.0): simple regression test
Toolbar (1.1.2): Toolbar
ToolshedUtils (1.2.1): Toolshed bundle utilities
Tug (1.0.1): Tug on atoms with molecular dynamics
UI (1.24.2): ChimeraX user interface
uniprot (2.2.1): UniProt database support
UnitCell (1.0.1): Show crystal unit cell
ViewDockX (1.1.3): Analyze ligand-receptor docking results
VIPERdb (1.0): Read Virus Particle Explorer .vdb files
Vive (1.1): Virtual reality headset support
VolumeMenu (1.0.1): Volume menu
VTK (1.0): Legacy VTK file reader and writer
WavefrontOBJ (1.0): Wavefront OBJ file read/write
WebCam (1.0.1): Combine camera video with graphics
WebServices (1.1.0): Web service and HTTP request support
wiggle (0.2.2): Interface for interpreting protein configurational space
Zone (1.0.1): Mouse mode to show atom and map zones

comment:5 by Greg Couch, 3 years ago

If you use the ChimeraX binary, it automatically excludes the user site directory. Another workaround is to set HOME. Maybe there should be a top-level Makefile.macos, like we have for Ubuntu and CentOS, that sets HOME, like Makefile.{centos,ubuntu} do.

comment:6 by Tom Goddard, 3 years ago

I guess to reproduce the error it would be good enough to install an old setuptools in the user site-packages, check that the build fails, then try whatever flags will prevent using user site-packages to verify it really works.

This is not a high priority.

I suspect the offending setuptools got into my user site-packages because the Wiggle ChimeraX package (https://github.com/charbj/wiggle) has bizarre hand-install instructions.

comment:7 by Zach Pearson, 3 years ago

PYTHONNOUSERSITE=1 in Makefiles is the solution to this. I looked at the output of python -c "import sys; print(sys.path)" by calling Python in 4 ways:

ChimeraX.app/bin/python.exe
PYTHONNOUSERSITE=1 ChimeraX.app/bin/python.exe
ChimeraX.app/bin/python.exe -I
PYTHONNOUSERSITE=1 ChimeraX.app/bin/python.exe -I

PYTHONNOUSERSITE and -I should do the same thing, but PYTHONNOUSERSITE makes it to (I think) subprocesses whereas -I (evidently) does not.

comment:8 by Zach Pearson, 3 years ago

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.