pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: py-tables build failure on Darwin



On 11/26/24 08:38, Jonathan Perkin wrote:
* On 2024-11-26 at 14:23 GMT, Jason Bacon wrote:

Anyone interested in math/py-tables on macOS, please test the following patch:

--- ../../math/py-tables/PLIST.Darwin   1969-12-31 18:00:00.000000000 -0600
+++ ./PLIST.Darwin      2024-11-26 08:21:14.059878353 -0600
@@ -0,0 +1 @@
+${PYSITELIB}/tables/libblosc2.dylib

This is necessary on my Mac M1, but I don't have the means to test on Intel or older macOS versions.

This corroborates with the failures in the latest bulk build:

  https://us-central.manta.mnx.io/pkgsrc/public/reports/Darwin/12.3/ arm64/20241125.1313/meta/report.html

That said I'd recommend seeing if there's a better fix that is less likely to break on updates.  Is there a particular reason only macOS is shipping a shared library for this and not any other platforms?


The 1200+ line setup.py looks like a hack job. The logic leading to libblosc being copied is here:

        if not rundir:
            loc = {
                "posix": "the default library paths",
                "nt": "any of the directories in %%PATH%%",
            }[os.name]

            if package.name == "blosc2":
                # We will copy this into the tables directory
                print(
                    "  * Copying blosc2 runtime library to 'tables' dir"
                    " because it was not found in standard locations"
                )
                platform_system = platform.system()
                if platform_system == "Linux":
                    shutil.copy(libdir / "libblosc2.so", ROOT / "tables")
                    copy_libs += ["libblosc2.so"]

                    dll_dir = "/tmp/hdf5/lib"
                    # Copy dlls when producing the wheels in CI
if "bdist_wheel" in sys.argv and os.path.exists(dll_dir): shared_libs = glob.glob(str(libdir) + "/libblosc2.so*")
                        for lib in shared_libs:
                            shutil.copy(lib, dll_dir)

                elif platform_system == "Darwin":
shutil.copy(libdir / "libblosc2.dylib", ROOT / "tables")
                    copy_libs += ["libblosc2.dylib"]

So the question is why it's finding libblosc in "standard locations" on Linux, but not on macOS.

--
Life is a game.  Play hard.  Play fair.  Have fun.


Home | Main Index | Thread Index | Old Index