DiamondLightSource / pythonSoftIOC

Embed an EPICS IOC in a Python process
Apache License 2.0
34 stars 9 forks source link

Add installation from Github for upstream packages #174

Open AlexanderWells-diamond opened 1 month ago

AlexanderWells-diamond commented 1 month ago

Fixes #147

AlexanderWells-diamond commented 1 month ago

This PR is on hold pending proper, non-alpha, releases of pvxslibs, p4p and epicscorelibs as currently there seems to be a weird dependency mismatch. Trying to install these three projects from their respective master branches results in an error:

pip install git+https://github.com/epics-base/epicscorelibs.git git+https://github.com/epics-base/pvxs.git git+https://github.com/epics-base/p4p.git
...
...
  ERROR: Cannot install epicscorelibs 7.0.7.99.1.1a3 (from git+https://github.com/epics-base/epicscorelibs.git), p4p==4.2.0a3 and pvxslibs==1.3.2a2 because these package versions have conflicting dependencies.

  The conflict is caused by:
      The user requested epicscorelibs 7.0.7.99.1.1a3 (from git+https://github.com/epics-base/epicscorelibs.git)
      pvxslibs 1.3.2a2 depends on epicscorelibs<7.0.7.99.2 and >=7.0.7.99.1.1a3
  ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
      p4p 4.2.0a3 depends on epicscorelibs<7.0.7.99.1 and >=7.0.7.99.0.2

It's weird as it seems that p4p and pvxslibs have the same dependency statement on epicscorelibs: epicscorelibs.version.abi_requires(), so I don't see why they are getting different dependency requirements.

AlexanderWells-diamond commented 1 month ago

I think my previous comment was misinformed: The issue is actually a possible discrepancy between build-time and run-time requirements of p4p (more specifically in the pvxslibs dependency that is pulled in wanting an older epicscorelibs version). By being careful with installation order and using the no-warn-conflicts flag I can bypass the issue and still get a working CI test run.

@OCopping @mdavidsaver Does this look OK to you? Anything else you would want to see in an integration test of the various Python libraries?

Note that the Windows + Python3.12 build issue should be fixed once Numpy does another release