You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Christopher Friedt (JIRA)" <ji...@apache.org> on 2018/07/01 12:49:00 UTC

[jira] [Comment Edited] (THRIFT-4594) Unable to Build Test Suite in Alpine Linux

    [ https://issues.apache.org/jira/browse/THRIFT-4594?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16529080#comment-16529080 ] 

Christopher Friedt edited comment on THRIFT-4594 at 7/1/18 12:48 PM:
---------------------------------------------------------------------

OK, some further investigation:

Musl libc *does* support different pthread mutex types (See [pthread.h|https://github.com/bminor/musl/blob/31fb174dd295e50f7c5cf18d31fcfd5fe5a063b7/include/pthread.h#L36]), with the exception of PTHREAD_MUTEX_ADAPTIVE being unsupported. E.g. [recursive|https://github.com/bminor/musl/blob/e738b8cbe64b6dd3ed9f47b6d4cd7eb2c422b38d/src/thread/pthread_mutex_unlock.c#L15] and [errorcheck|https://github.com/bminor/musl/blob/e738b8cbe64b6dd3ed9f47b6d4cd7eb2c422b38d/src/thread/pthread_mutex_timedlock.c#L20] support.

However, it does not seem to handle those types as either glibc or Apple's libc do. E.g. both Ubuntu and MacOS High Sierra (10.13.5) build and pass the unit tests without issues.


was (Author: cfriedt):
OK, some further investigation:

Musl libc *does* support different pthread mutex types (See [pthread.h|https://github.com/bminor/musl/blob/31fb174dd295e50f7c5cf18d31fcfd5fe5a063b7/include/pthread.h#L36]), with the exception of PTHREAD_MUTEX_ADAPTIVE being unsupported. E.g. [recursive|https://github.com/bminor/musl/blob/e738b8cbe64b6dd3ed9f47b6d4cd7eb2c422b38d/src/thread/pthread_mutex_unlock.c#L15] and [errorcheck](https://github.com/bminor/musl/blob/e738b8cbe64b6dd3ed9f47b6d4cd7eb2c422b38d/src/thread/pthread_mutex_timedlock.c#L20) support.

However, it does not seem to handle those types as either glibc or Apple's libc do. E.g. both Ubuntu and MacOS High Sierra (10.13.5) build and pass the unit tests without issues.

> Unable to Build Test Suite in Alpine Linux
> ------------------------------------------
>
>                 Key: THRIFT-4594
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4594
>             Project: Thrift
>          Issue Type: Bug
>          Components: Test Suite
>    Affects Versions: 0.11.0
>         Environment: Ubuntu Bionic (native)
> alpine:latest (docker)
>            Reporter: Christopher Friedt
>            Priority: Minor
>             Fix For: 0.12.0
>
>         Attachments: thrift-ci-build-20180627.tar.gz
>
>
> It seems that the 0.11.0 lib/cpp/test suite is not building correctly when run inside of Alpine Linux 3.8 in a Docker container.
> I've narrowed the culprits down to the non-portable (NP) class of Mutex initializers. The failure occurs in unpatched code (and obviously in my CI build recipe, attached).
> Currently, I'm working on automating builds of thrift for Alpine Linux 3.8, and they will likely require "make check" to pass successfully in future versions. Might as well ensure it works now.
> If you want to duplicate my build easily in Docker, you can use the attachment (e.g. tar xpvzf thrift-ci-build-20180627.tar.xz; cd thrift-20180627; docker build -t foo .)
> {noformat}
> make check
> ...
> /bin/bash ../../../libtool  --tag=CXX   --mode=link x86_64-alpine-linux-musl-g++ -Wall -Wextra -pedantic -Os -fomit-frame-pointer -L/usr/lib -Wl,--no-undefined -o TPipedTransportTest TPipedTransportTest.o TPipeInterruptTest.o libtestgencpp.la ../../../lib/cpp/libthrift.la /usr/lib/libboost_unit_test_framework.a /usr/lib/libboost_system.a /usr/lib/libboost_thread-mt.a -lrt -lpthread 
> concurrency/MutexTest.o: In function `MutexTest::happy_path::test_method()':
> MutexTest.cpp:(.text+0x18): undefined reference to `apache::thrift::concurrency::Mutex::ERRORCHECK_INITIALIZER(void*)'
> concurrency/MutexTest.o: In function `MutexTest::recursive_happy_path::test_method()':
> MutexTest.cpp:(.text+0x580): undefined reference to `apache::thrift::concurrency::Mutex::RECURSIVE_INITIALIZER(void*)'
> concurrency/MutexTest.o: In function `MutexTest::trylock::test_method()':
> MutexTest.cpp:(.text+0x1573): undefined reference to `apache::thrift::concurrency::Mutex::ADAPTIVE_INITIALIZER(void*)'
> concurrency/MutexTest.o: In function `LFAT::LFAT()':
> MutexTest.cpp:(.text._ZN4LFATC2Ev[_ZN4LFATC5Ev]+0x17): undefined reference to `apache::thrift::concurrency::Mutex::ERRORCHECK_INITIALIZER(void*)'
> collect2: error: ld returned 1 exit status
> make[5]: *** [Makefile:1190: UnitTests] Error 1
> make[5]: *** Waiting for unfinished jobs....
> libtool: link: x86_64-alpine-linux-musl-g++ -Wall -Wextra -pedantic -Os -fomit-frame-pointer -Wl,--no-undefined -o .libs/TFDTransportTest TFDTransportTest.o  -L/usr/lib ../../../lib/cpp/.libs/libthrift.so -lssl -lcrypto /usr/lib/libboost_unit_test_framework.a -lrt -lpthread
> libtool: link: x86_64-alpine-linux-musl-g++ -Wall -Wextra -pedantic -Os -fomit-frame-pointer -Wl,--no-undefined -o .libs/TPipedTransportTest TPipedTransportTest.o TPipeInterruptTest.o  -L/usr/lib ./.libs/libtestgencpp.a /home/alpine/thrift/src/thrift-0.11.0/lib/cpp/.libs/libthrift.so ../../../lib/cpp/.libs/libthrift.so -lssl -lcrypto /usr/lib/libboost_unit_test_framework.a /usr/lib/libboost_system.a /usr/lib/libboost_thread-mt.a -lrt -lpthread
> make[5]: Leaving directory '/home/alpine/thrift/src/thrift-0.11.0/lib/cpp/test'
> make[4]: *** [Makefile:1507: check-am] Error 2
> make[4]: Leaving directory '/home/alpine/thrift/src/thrift-0.11.0/lib/cpp/test'
> make[3]: *** [Makefile:1510: check] Error 2
> make[3]: Leaving directory '/home/alpine/thrift/src/thrift-0.11.0/lib/cpp/test'
> make[2]: *** [Makefile:1661: check-recursive] Error 1
> make[2]: Leaving directory '/home/alpine/thrift/src/thrift-0.11.0/lib/cpp'
> make[1]: Leaving directory '/home/alpine/thrift/src/thrift-0.11.0/lib'
> make[1]: *** [Makefile:576: check-recursive] Error 1
> make: *** [Makefile:659: check-recursive] Error 1
> >>> ERROR: thrift*: check failed
> >>> ERROR: thrift: all failed
> >>> thrift: Uninstalling dependencies..{noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)