Skip to content

linux/arm64 wheel errors out with type error: ValueError: Buffer dtype mismatch, expected 'const char' but got 'signed char' #566

@snazzer

Description

@snazzer

Building the library for use on arm64 on linux through docker raises a type error.

To reproduce, build the given Dockerfile in both amd64 and arm64 platforms

FROM python:3.9-slim-buster

RUN apt update -y
RUN apt install gcc g++ git -y

RUN git clone --branch v0.15.2 https://github.com/data61/anonlink.git

WORKDIR anonlink

RUN pip install -r requirements.txt && \
   pip install -e .

e.g. (I did this on an M1 mac)

$ docker build --platform=linux/amd64 -t anonlink-testcase:amd64 .
$ docker build --platform=linux/arm64 -t anonlink-testcase:arm64 .

Then running amd64 test

$ docker run --rm anonlink-testcase:amd64 pytest tests/test_popcount.py::test_popcnt_array
# passes

But with arm64

$ docker run --rm anonlink-testcase:arm64 pytest tests/test_popcount.py::test_popcnt_array
.....
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_popcount.py:29: in test_popcnt_array
    output_counts = _dice.popcount_arrays(carr, array_size)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

>   cpdef unsigned int[::1] popcount_arrays(const char[::1] input_data, unsigned int array_bytes = 128):
E   ValueError: Buffer dtype mismatch, expected 'const char' but got 'signed char'

anonlink/similarities/_dice.pyx:13: ValueError
---------------------------------- Hypothesis ----------------------------------
Falsifying example: test_popcnt_array(
    data=data(...), num_bytes=2048,
)
....

Would appreciate some guidance for a fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions