Fix failed tests on Linux Alpine and add a CI job. (#8532)
* Remove linux/version.h dependency. This introduces unnecessary dependencies, and generally not a good idea as the platform we build on may be different than the platform we run on. To determine if sync_file_range exists we can simply rely on header file hints. * Fix setproctitle() on libmusl. The previous ifdef checks were a bit too strict for no apparent reason. * Fix tests failure on Linux with no backtrace. * Add alpine daily CI job.
This commit is contained in:
parent
8e83bcd2ac
commit
95ea74549c
20
.github/workflows/daily.yml
vendored
20
.github/workflows/daily.yml
vendored
@ -221,3 +221,23 @@ jobs:
|
|||||||
MAKE=gmake ./runtest-moduleapi --verbose &&
|
MAKE=gmake ./runtest-moduleapi --verbose &&
|
||||||
./runtest-sentinel &&
|
./runtest-sentinel &&
|
||||||
./runtest-cluster
|
./runtest-cluster
|
||||||
|
|
||||||
|
test-alpine:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: alpine:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: make
|
||||||
|
run: |
|
||||||
|
apk add build-base
|
||||||
|
make REDIS_CFLAGS='-Werror'
|
||||||
|
- name: test
|
||||||
|
run: |
|
||||||
|
apk add tcl procps
|
||||||
|
./runtest --accurate --verbose --dump-logs
|
||||||
|
- name: module api test
|
||||||
|
run: ./runtest-moduleapi --verbose
|
||||||
|
- name: sentinel tests
|
||||||
|
run: ./runtest-sentinel
|
||||||
|
- name: cluster tests
|
||||||
|
run: ./runtest-cluster
|
||||||
|
17
src/config.h
17
src/config.h
@ -35,7 +35,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
#include <linux/version.h>
|
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -114,19 +113,7 @@
|
|||||||
|
|
||||||
/* Define rdb_fsync_range to sync_file_range() on Linux, otherwise we use
|
/* Define rdb_fsync_range to sync_file_range() on Linux, otherwise we use
|
||||||
* the plain fsync() call. */
|
* the plain fsync() call. */
|
||||||
#ifdef __linux__
|
#if (defined(__linux__) && defined(SYNC_FILE_RANGE_WAIT_BEFORE))
|
||||||
#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
|
|
||||||
#if (LINUX_VERSION_CODE >= 0x020611 && __GLIBC_PREREQ(2, 6))
|
|
||||||
#define HAVE_SYNC_FILE_RANGE 1
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if (LINUX_VERSION_CODE >= 0x020611)
|
|
||||||
#define HAVE_SYNC_FILE_RANGE 1
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_SYNC_FILE_RANGE
|
|
||||||
#define rdb_fsync_range(fd,off,size) sync_file_range(fd,off,size,SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE)
|
#define rdb_fsync_range(fd,off,size) sync_file_range(fd,off,size,SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE)
|
||||||
#else
|
#else
|
||||||
#define rdb_fsync_range(fd,off,size) fsync(fd)
|
#define rdb_fsync_range(fd,off,size) fsync(fd)
|
||||||
@ -143,7 +130,7 @@
|
|||||||
#define ESOCKTNOSUPPORT 0
|
#define ESOCKTNOSUPPORT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ((defined __linux && defined(__GLIBC__)) || defined __APPLE__)
|
#if (defined __linux || defined __APPLE__)
|
||||||
#define USE_SETPROCTITLE
|
#define USE_SETPROCTITLE
|
||||||
#define INIT_SETPROCTITLE_REPLACEMENT
|
#define INIT_SETPROCTITLE_REPLACEMENT
|
||||||
void spt_init(int argc, char *argv[]);
|
void spt_init(int argc, char *argv[]);
|
||||||
|
@ -60,7 +60,6 @@
|
|||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
/* features.h uses the defines above to set feature specific defines. */
|
/* features.h uses the defines above to set feature specific defines. */
|
||||||
#include <linux/version.h>
|
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -232,7 +232,7 @@ void spt_init(int argc, char *argv[]) {
|
|||||||
if (!(SPT.arg0 = strdup(argv[0])))
|
if (!(SPT.arg0 = strdup(argv[0])))
|
||||||
goto syerr;
|
goto syerr;
|
||||||
|
|
||||||
#if __GLIBC__
|
#if __linux__
|
||||||
if (!(tmp = strdup(program_invocation_name)))
|
if (!(tmp = strdup(program_invocation_name)))
|
||||||
goto syerr;
|
goto syerr;
|
||||||
|
|
||||||
|
@ -1,6 +1,18 @@
|
|||||||
set system_name [string tolower [exec uname -s]]
|
set system_name [string tolower [exec uname -s]]
|
||||||
|
set system_supported 0
|
||||||
|
|
||||||
if {$system_name eq {linux} || $system_name eq {darwin}} {
|
# We only support darwin or Linux with glibc
|
||||||
|
if {$system_name eq {darwin}} {
|
||||||
|
set system_supported 1
|
||||||
|
} elseif {$system_name eq {linux}} {
|
||||||
|
# Avoid the test on libmusl, which does not support backtrace
|
||||||
|
set ldd [exec ldd src/redis-server]
|
||||||
|
if {![string match {*libc.musl*} $ldd]} {
|
||||||
|
set system_supported 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if {$system_supported} {
|
||||||
set server_path [tmpdir server.log]
|
set server_path [tmpdir server.log]
|
||||||
start_server [list overrides [list dir $server_path]] {
|
start_server [list overrides [list dir $server_path]] {
|
||||||
test "Server is able to generate a stack trace on selected systems" {
|
test "Server is able to generate a stack trace on selected systems" {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user