Skip to content

Update 7.0.10 and GHA refresh#46

Closed
mdavidsaver wants to merge 501 commits intomasterfrom
update-7.0.10
Closed

Update 7.0.10 and GHA refresh#46
mdavidsaver wants to merge 501 commits intomasterfrom
update-7.0.10

Conversation

@mdavidsaver
Copy link
Member

@mdavidsaver mdavidsaver commented Dec 16, 2025

This PR contains two large changes. Merging in epics-base 7.0.10. And a refresh of the github actions. I'm combining them because it would be more work to isolate them (aka. laziness). Many of the current GHA jobs are broken. Also, the 7.0.7 source fails to build with recent gcc/clang.

Changes to the GHA recipe would have the effect of only uploading wheels for cpython 3.8+ on Linux amd64, windows amd64, and OSX universal (I think). So no more i686 uploads. There is still a linux 2.7 job to check function, but the result is not uploaded. My idea being to drop py2.7 support after this set of releases. I picked 3.8 because it is currently the oldest available with actions/setup-python, the oldest cpython available in the oldest supported manylinux2014 image, and the oldest supported by cython >= 3.1 .

I prototyped this recipe for the set of packages down to p4p with https://github.com/mdavidsaver/p4p-integration

TODOs

minijackson and others added 30 commits April 4, 2025 08:29
This enables referring to e.g. {option}`msi -o` in the documentation,
and it will link to the correct location
This allows optionally printing out the value of one or more fields
for each record found.
Certain windows build environments (see
https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=1234387&view=results
for an example) fail unless the echo command is properly quoted. This
seems to be due to how Make handles various commands on non-posix
systems; without the quotes it directly tries to run
```
echo foo bar
```
inside cmd.exe, which fails as echo is not a valid command in that context.

Co-authored-by: Anders Harrisson <anders.harrisson@ess.eu>
This allows other modules like pvxs to find files there, too.
Also, the install locations of homebrew and MacPorts are now
detected rather than assumed.

If a package is installed in both, the homebrew version is preferred.
Includes some unification of error text, narrower wrap margin.
'var' output now lists the variable types.
The bldEnvData.pl script now syntax-checks the envParam
default values, allowing ANSI color macros to be used
in the IOCSH_PS1 parameter.
Copy link
Contributor

@AlexanderWells-diamond AlexanderWells-diamond left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This all looks good to me. Only a couple of minor comments. I'm happy with the support provided by this CI.

@mdavidsaver
Copy link
Member Author

I think that the problems I am seeing with epics-base/p4p#193 are due to some ABI issue with mixing manylinux1 and manylinux2010, which will stop as these PRs get merged. So I plan to move forward with merging, and pushing pre-releases to pypi.org. So dependent GHA jobs with pip --pre may fail spuriously while I am doing this. As previously, regular releases will only follow once I see a full set of working pre-release builds.

@mdavidsaver mdavidsaver marked this pull request as ready for review December 22, 2025 01:21
@mdavidsaver
Copy link
Member Author

... once I see a full set of working pre-release builds.

I see such a set: epicscorelibs == 7.0.10.99.0.0a1, pvxslibs == 1.4.2a1, p4p == 4.2.2a1. (also setuptools_dso == 2.12.2)

@coretl @AlexanderWells-diamond Please test when you have a chance. Let's see what breaks...

@mdavidsaver
Copy link
Member Author

I have yanked pvxslibs == 1.4.2a1, p4p == 4.2.2a1 in favor of pvxslibs == 1.5.0a1, p4p == 4.2.2a2.

Because of a public ABI change, the next PVXS release will be 1.5.0.

@AlexanderWells-diamond
Copy link
Contributor

AlexanderWells-diamond commented Jan 7, 2026

@coretl @AlexanderWells-diamond Please test when you have a chance. Let's see what breaks...

I can confirm that the set of modules epicscorelibs==7.0.10.99.0.0a1 , p4p==4.2.2a2 , pvxslibs==1.5.0a1 passes preliminary PythonSoftIOC testing on Python3.12 on an Ubuntu runner.

@mdavidsaver
Copy link
Member Author

Released as epicscorelibs==7.0.10.99.0.0, pvxslibs==1.5.0, and p4p==4.2.2.

@OCopping
Copy link
Contributor

OCopping commented Jan 8, 2026

Not sure if this is the best place to mention, but I have noticed a bug in softioc linked to epicscorelibs, and @AlexanderWells-diamond pointed me here.
I have a python package that uses softioc, and attempts to test against py3.12 and 3.13. py3.12 has no issues, but when attempting to run 3.13 with softioc 4.6.1, it fails due to a missing library.
https://github.com/DiamondLightSource/techui-builder/actions/runs/20785485446/job/59693713943?pr=130
Locally, I have rebuilt the devcontainer with 3.13 and noticed if I install softioc 4.6.1, and then manually update epicscorelibs to 7.0.10 it now runs fine.
This suggests that 7.0.7 is not compatible with py3.13.

EDIT: I just noticed that the library it is trying to access is for 7.0.10, when only 7.0.7 is installed.

@AlexanderWells-diamond
Copy link
Contributor

AlexanderWells-diamond commented Jan 8, 2026

We've also had this bug report for what looks like the same thing opened in PythonSoftIOC:
DiamondLightSource/pythonSoftIOC#197

I'm currently investigating. I'm confused how the EPICS 7.0.7 verson of epicscorelibs can be trying to load a 7.0.10 EPICS.

@mdavidsaver
Copy link
Member Author

I have a python package that uses softioc, and attempts to test against py3.12 and 3.13. py3.12 has no issues, but when attempting to run 3.13 with softioc 4.6.1, it fails due to a missing library.
https://github.com/DiamondLightSource/techui-builder/actions/runs/20785485446/job/59693713943?pr=130

I suspect this all has something to do with softioc 4.6.1 having binaries for py3.12, but not 3.13.

https://pypi.org/project/softioc/#files

And it the GHA log I do see:

    Building softioc==4.6.1
...
epicscorelibs==7.0.7.99.1.2
.venv/lib/python3.13/site-packages/softioc/imports.py:10: in <module>
    from . import _extension
E   ImportError: libdbCore.so.7.0.10.99.0: cannot open shared object file: No such file or directory

This sort of loading error should be avoided by the build-time dependency injection to ensure that the wheel file dependency list reflects dependencies of the extension libraries it contains.

setup(
    cmdclass=dict(develop=Develop, **get_cmdclass()),
    version=__version__,
    ext_modules = [ext],
    install_requires = [
        # Dependency version declared in pyproject.toml
        epicscorelibs.version.abi_requires(),

I am not familiar with uv. Could it be provoked to log more information about what it is doing?

@AlexanderWells-diamond
Copy link
Contributor

AlexanderWells-diamond commented Jan 8, 2026

Thank you Michael, you are indeed spot on about it being the lack of softioc 3.12 binaries.

What is happening is that the build-time dependency (specified here) picks up epicscorelibs 7.0.10.* , and so the shared objects are linked to those versions of the binaries. However at runtime, for reasons unknown, we drop back down to epicscorelibs 7.0.7.* . We use that exact install_requires line in our config file here but I must admit I don't understand how we can get an epicscorelibs version number to install, before we've actually installed a version of epicscorelibs. I'm sure I'm misunderstanding something about how the build process works.

@AlexanderWells-diamond
Copy link
Contributor

I'll save further discussion in this issue and move further messages into the linked pythonsoftioc issue.

@mdavidsaver
Copy link
Member Author

I'll save further discussion in this issue and move further messages into the linked pythonsoftioc issue.

Fair enough, although I doubt that pythonsoftioc is to blame. I suspicion either that epicscorelibs.version.abi_requires() is not producing the expected dependency (maybe related to #47?), or that uv interprets this dependency differently than pip does.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Comments