Skip to content

Build fails on aarch64-unknown-linux-android24. #124

@ChenPi11

Description

@ChenPi11

On aarch64 Termux environment, installing pyppmd via pip (or build from source) fails with:

src/lib/buffer/ThreadDecoder.c:182:9: error: call to undeclared function 'pthread_cancel'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  182 |         pthread_cancel(tc->handle);
      |         ^
src/lib/buffer/ThreadDecoder.c:182:9: note: did you mean 'pthread_once'?
/data/data/com.termux/files/usr/include/pthread.h:264:5: note: 'pthread_once' declared here
  264 | int pthread_once(pthread_once_t* _Nonnull __once, void (* _Nonnull __init_routine)(void));
      |     ^
src/lib/buffer/ThreadDecoder.c:277:9: error: call to undeclared function 'pthread_cancel'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  277 |         pthread_cancel(tc->handle);
      |         ^
2 errors generated.
error: command '/data/data/com.termux/files/usr/bin/aarch64-linux-android-clang' failed with exit code 1

ERROR Backend subprocess exited when trying to invoke build_wheel

Termux's pthread.h do not provide a implementation for pthread_cancel. So we cannot build it.

Replace pthread_cancel(tc->handle) to pthread_kill(tc->handle, SIGUSR1) can fix this problem. With all tests passed.
But it seems unsafe.

Environment

OS: Android 13 Termux 0.118.1
Kernel: aarch64 Linux 4.14.186
Version: pyppmd 1.2.1.dev0 (latest)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions