h2oai / h2oai/datatable

Provide ARM64 wheels

Open
#3,222 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
1.9k
Forks
164
Avg merge
7h 31m
Merged PRs (30d)
1

Description

**EDIT**: It looks like the development version builds without issue, e.g.

```
$ pip install git+https://github.com/h2oai/datatable
Collecting git+https://github.com/h2oai/datatable
Cloning https://github.com/h2oai/datatable to /private/var/folders/9n/3nxsgkrj0rlfx196kzdttpww0000gn/T/pip-req-build-f00uim_e
Running command git clone --filter=blob:none -q https://github.com/h2oai/datatable /private/var/folders/9n/3nxsgkrj0rlfx196kzdttpww0000gn/T/pip-req-build-f00uim_e
Resolved https://github.com/h2oai/datatable to commit d54d7f21110ea1f19f70a57034d14feeea6e3aaf
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: datatable
Building wheel for datatable (pyproject.toml) ... done
Created wheel for datatable: filename=datatable-1.1.0a0+build.1641510381.kevin-cp39-cp39-macosx_12_arm64.whl size=7390850 sha256=441a4adb83b3e86a03c6ad9f1a508c934ebe04e8d6e07294995a4959da69d784
Stored in directory: /private/var/folders/9n/3nxsgkrj0rlfx196kzdttpww0000gn/T/pip-ephem-wheel-cache-725mfy2l/wheels/23/f2/aa/36775b914ff0f3b74fe9765aeaa0a958db373dd6bd61186923
Successfully built datatable
Installing collected packages: datatable
Successfully installed datatable-1.1.0a0+build.1641510381.kevin
```

Are there plans to update datatable on PyPI soon?

---

I saw the following when trying to install `datatable` via `pip`:

```
Start setup.py
command = `install`
setuptools version = 59.0.1

Find an LLVM installation
Environment variable LLVM is not set
Environment variable LLVM7 is not set
Environment variable LLVM6 is not set
Environment variable LLVM5 is not set
Environment variable LLVM4 is not set
Candidate directory `/usr/local/opt/llvm` not found
The build will proceed without Llvm support

Determine the compiler
Environment variable `CXX` is not set
Environment variable `CC` is not set
Llvm installation not found, cannot search for the clang++ compiler
distutils.ccompiler reports the default compiler to be `cc`
Compiler `clang++` will be used
clang++ --version :
Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: arm64-apple-darwin21.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

Prepare the environment
CC = clang++
CXX = clang++
LDFLAGS =
ARCHFLAGS = -m64
LLVM_CONFIG =
MACOSX_DEPLOYMENT_TARGET = 10.13

Find compile include directories
`c` is the main C++ source directory
`/opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/include/python3.9` added from CONFINCLUDEPY

Determine the extra compiler flags
-std=c++11
-stdlib=libc++
-Ic
-fPIC
-g2
-O3
-Weverything
-Wno-c++98-compat-pedantic
-Wno-c99-extensions
-Wno-exit-time-destructors
-Wno-float-equal
-Wno-global-constructors
-Wno-reserved-id-macro
-Wno-switch-enum
-Wno-weak-template-vtables
-Wno-weak-vtables
-Ic
-I/opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/include/python3.9
-isystem /opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/include/python3.9

Find the required dynamic libraries
Library `libc++.1.dylib` found at /opt/homebrew/Cellar/llvm/13.0.0_2/lib/libc++.1.dylib
Library `libc++abi.dylib` found at /opt/homebrew/Cellar/llvm/13.0.0_2/lib/libc++abi.dylib

Determine the extra linker flags
-Wl,-rpath,@loader_path/.
-L/opt/homebrew/Cellar/llvm/13.0.0_2/lib

Copy dynamic libraries
Copying /opt/homebrew/Cellar/llvm/13.0.0_2/lib/libc++.1.dylib to datatable/lib/libc++.1.dylib
Copying /opt/homebrew/Cellar/llvm/13.0.0_2/lib/libc++abi.dylib to datatable/lib/libc++abi.dylib

Generate git version file (force)
Environment variable DTBL_GIT_HASH not present
Source distribution detected, file __git__.py cannot be rebuilt

Determine datatable version
Reading file /private/var/folders/9n/3nxsgkrj0rlfx196kzdttpww0000gn/T/pip-install-qf7bxo04/datatable_63f9e18f4c284db4a4980445527d3f5d/datatable/__version__.py
Detected version: 0.10.1
Environment variable CI_VERSION_SUUFFIX not present

< ... other compilation output ... >

Post-link processing
Output file: build/lib.macosx-12-arm64-3.9/_datatable.cpython-39-darwin.so
Checking dependencies of _datatable.cpython-39-darwin.so
$ otool -L build/lib.macosx-12-arm64-3.9/_datatable.cpython-39-darwin.so
/opt/homebrew/opt/llvm/lib/libc++.1.dylib
/usr/lib/libSystem.B.dylib
Relocating dependency libc++.1.dylib
$ install_name_tool -change /opt/homebrew/opt/llvm/lib/libc++.1.dylib @rpath/libc++.1.dylib build/lib.macosx-12-arm64-3.9/_datatable.cpython-39-darwin.so
Checking dependencies of _datatable.cpython-39-darwin.so
$ otool -L build/lib.macosx-12-arm64-3.9/_datatable.cpython-39-darwin.so
@rpath/libc++.1.dylib
/usr/lib/libSystem.B.dylib
Checking dependencies of libc++.1.dylib
$ otool -L datatable/lib/libc++.1.dylib
/usr/lib/libSystem.B.dylib
@rpath/libc++abi.1.dylib

Dependency datatable/lib/libc++abi.1.dylib does not exist
----------------------------------------
```

Any idea, or anything else I can provide to help debug? This is on an M1 macOS machine, compiling for ARM64.

The only thing that stands out to me is that `libc++abi.dylib` is found:

```
Find the required dynamic libraries
Library `libc++.1.dylib` found at /opt/homebrew/Cellar/llvm/13.0.0_2/lib/libc++.1.dylib
Library `libc++abi.dylib` found at /opt/homebrew/Cellar/llvm/13.0.0_2/lib/libc++abi.dylib
```

But the link / install_name_tool step seems to want `libc++abi.1.dylib`:

```
Dependency datatable/lib/libc++abi.1.dylib does not exist
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.