Skip to content

Update to publish to internal artifactory (4.1.25.Final)#16

Open
tolbertam wants to merge 1 commit intoriptano:dse-netty-4.1.25.Finalfrom
tolbertam:dse-netty-4.1.25.Final-repo-update
Open

Update to publish to internal artifactory (4.1.25.Final)#16
tolbertam wants to merge 1 commit intoriptano:dse-netty-4.1.25.Finalfrom
tolbertam:dse-netty-4.1.25.Final-repo-update

Conversation

@tolbertam
Copy link
Copy Markdown

@tolbertam tolbertam commented Jul 15, 2019

Internal artifactory also mirrors to repo.datastax.com, so publishing
here will publish to both places.

work in progress.... This seems to work good :)

Internal artifactory also mirrors to repo.datastax.com, so publishing
here will publish to both places.
@tolbertam tolbertam force-pushed the dse-netty-4.1.25.Final-repo-update branch from 00f4280 to 565111c Compare July 15, 2019 20:28
@tolbertam tolbertam changed the title Update to publish to internal artifactory Update to publish to internal artifactory (4.1.25.Final) Jul 15, 2019
@tjake tjake force-pushed the dse-netty-4.1.25.Final branch 22 times, most recently from 8d5392a to 5adfbb9 Compare October 4, 2019 17:25
tiagomlalves pushed a commit that referenced this pull request Mar 30, 2026
netty#16019)

…016)

**Note**: more details are provided in the single commit messages.

## Motivation:
the epoll native transport currently fails to compile on Android, due to
a couple of compilation failures
```
transport-native-unix-common/src/main/c/netty_unix_errors.c:47:15: error: incompatible integer to pointer conversion initializing 'char *' with an expression of type 'int' [-Wint-conversion]
   47 |         char* tmp = strerror_r(errnum, strerrbuf, buflen);
      |               ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
and
```
transport-native-unix-common/src/main/c/netty_unix_socket.c:449:9: error: call to undeclared library function 'bzero' with type 'void (void *, unsigned long)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  449 |         bzero(&addr, sizeof(addr)); // Zap addr so we can strlen(addr.sun_path) later. See unix(4).
      |         ^
transport-native-unix-common/src/main/c/netty_unix_socket.c:449:9: note: include the header <strings.h> or explicitly provide a declaration for 'bzero'
```
- `netty_unix_socket.c` uses `bzero` (in a single place). `bzero` is
defined in `strings.h`, which however does not seem to be pulled in by
default in Android with the current includes.
Moreover, `bzero` is deprecated and was dropped in POSIX 2018. See
[POSIX 2018

docs](https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xsh_chap03.html)
and [relevant AOSP 16

code](https://cs.android.com/android/platform/superproject/+/android16-release:bionic/libc/include/strings.h;l=69).
- `netty_unix_errors.c` currently uses the GNU `strerror_r` on Android.
Android, however, only exposes the GNU `strerror_r` when `_GNU_SOURCE`
is defined and only on API level 23+.
See [relevant AOSP 16

code](https://cs.android.com/android/platform/superproject/+/android16-release:bionic/libc/include/string.h;l=145?q=string.h)

## Modification:
- a [dedicated
repository](https://github.com/faenil/NettyEpollAndroidBuildFailureTest)
was spun up to allow reproducing the build failures
- it is an Android project containing the necessary plumbing to build
the epoll native transport
- it can be easily built by following the instructions in the `README`
in the project repo
- replace the deprecated `bzero` with `memset`, already used for the
very same purpose in many places in the same file.
- use the XSI `strerror_r` on Android, when `_GNU_SOURCE` is not defined

## Result:
- epoll native transport builds and `Epoll.ensureAvailability()`
succeeds on Android.
Tested on Android 16 emulator image `BP41.250916.009.A1` (x86_64), NDK
`27.0.12077973`

Co-authored-by: faenil <faenil@users.noreply.github.com>
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.

1 participant