Signed-off-by: Joe Hu <jowhuw@amazon.com> Co-authored-by: Joe Hu <jowhuw@amazon.com>
This commit is contained in:
parent
3daf1832e0
commit
08e55ab62c
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -11,7 +11,7 @@ jobs:
|
|||||||
server_version: ['unstable', '8.0.0']
|
server_version: ['unstable', '8.0.0']
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Set the server verison for python integeration tests
|
- name: Set the server version for python integration tests
|
||||||
run: echo "SERVER_VERSION=${{ matrix.server_version }}" >> $GITHUB_ENV
|
run: echo "SERVER_VERSION=${{ matrix.server_version }}" >> $GITHUB_ENV
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@v3
|
uses: actions/setup-python@v3
|
||||||
|
@ -32,6 +32,13 @@ if(NOT VALKEY_VERSION)
|
|||||||
endif()
|
endif()
|
||||||
message("Valkey version: ${VALKEY_VERSION}")
|
message("Valkey version: ${VALKEY_VERSION}")
|
||||||
|
|
||||||
|
# Compiler flags that can be overridden in command line
|
||||||
|
if(NOT CFLAGS)
|
||||||
|
# Include debug symbols and set optimize level
|
||||||
|
set(CFLAGS "-g -O3 -fno-omit-frame-pointer -Wall -Werror -Wextra")
|
||||||
|
endif()
|
||||||
|
message("CFLAGS: ${CFLAGS}")
|
||||||
|
|
||||||
# Download and build Valkey
|
# Download and build Valkey
|
||||||
ExternalProject_Add(
|
ExternalProject_Add(
|
||||||
valkey
|
valkey
|
||||||
@ -118,26 +125,20 @@ set(CMAKE_C_STANDARD_REQUIRED True)
|
|||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||||
|
|
||||||
# Always include debug symbols and optimize the code
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -g -fno-omit-frame-pointer")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -g -fno-omit-frame-pointer")
|
|
||||||
|
|
||||||
# RapidJSON SIMD optimization
|
|
||||||
if("${ARCHITECTURE}" STREQUAL "x86_64")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=nehalem")
|
|
||||||
elseif("${ARCHITECTURE}" STREQUAL "aarch64")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Unsupported architecture: ${ARCHITECTURE}. JSON is only supported on x86_64 and aarch64.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Additional flags for all architectures
|
# Additional flags for all architectures
|
||||||
set(ADDITIONAL_FLAGS "-fPIC")
|
set(ADDITIONAL_FLAGS "-fPIC")
|
||||||
|
|
||||||
# Compiler warning flags
|
# RapidJSON SIMD optimization
|
||||||
set(C_WARNING "-Wall -Werror -Wextra")
|
if("${ARCHITECTURE}" STREQUAL "x86_64")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ADDITIONAL_FLAGS} ${C_WARNING}")
|
set(ADDITIONAL_FLAGS "${ADDITIONAL_FLAGS} -march=nehalem")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ADDITIONAL_FLAGS} ${C_WARNING}")
|
elseif("${ARCHITECTURE}" STREQUAL "aarch64")
|
||||||
|
set(ADDITIONAL_FLAGS "${ADDITIONAL_FLAGS} -march=armv8-a")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CFLAGS} ${ADDITIONAL_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CFLAGS} ${ADDITIONAL_FLAGS}")
|
||||||
|
message("CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}")
|
||||||
|
message("CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
|
||||||
|
|
||||||
# Fetch RapidJSON
|
# Fetch RapidJSON
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
@ -159,7 +160,7 @@ add_subdirectory(src)
|
|||||||
add_subdirectory(tst)
|
add_subdirectory(tst)
|
||||||
|
|
||||||
add_custom_target(test
|
add_custom_target(test
|
||||||
COMMENT "Run JSON integration tests."
|
COMMENT "Run valkeyJSON integration tests"
|
||||||
USES_TERMINAL
|
USES_TERMINAL
|
||||||
COMMAND rm -rf ${CMAKE_BINARY_DIR}/tst/integration
|
COMMAND rm -rf ${CMAKE_BINARY_DIR}/tst/integration
|
||||||
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/tst/integration
|
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/tst/integration
|
||||||
|
13
README.md
13
README.md
@ -18,6 +18,11 @@ The default valkey version is "unstable". To override it, do:
|
|||||||
SERVER_VERSION=8.0.0 ./build.sh
|
SERVER_VERSION=8.0.0 ./build.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Custom compiler flags can be passed to the build script via environment variable CFLAGS. For example:
|
||||||
|
```text
|
||||||
|
CFLAGS="-O0 -Wno-unused-function" ./build.sh
|
||||||
|
```
|
||||||
|
|
||||||
#### To build just the module
|
#### To build just the module
|
||||||
```text
|
```text
|
||||||
mdkir build
|
mdkir build
|
||||||
@ -34,6 +39,14 @@ cmake .. -DVALKEY_VERSION=8.0.0
|
|||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Custom compiler flags can be passed to cmake via variable CFLAGS. For example:
|
||||||
|
```text
|
||||||
|
mdkir build
|
||||||
|
cd build
|
||||||
|
cmake .. -DCFLAGS="-O0 -Wno-unused-function"
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
#### To run all unit tests:
|
#### To run all unit tests:
|
||||||
```text
|
```text
|
||||||
cd build
|
cd build
|
||||||
|
7
build.sh
7
build.sh
@ -23,7 +23,11 @@ if [ ! -d "$BUILD_DIR" ]; then
|
|||||||
mkdir $BUILD_DIR
|
mkdir $BUILD_DIR
|
||||||
fi
|
fi
|
||||||
cd $BUILD_DIR
|
cd $BUILD_DIR
|
||||||
cmake .. -DVALKEY_VERSION=$SERVER_VERSION
|
if [ -z "${CFLAGS}" ]; then
|
||||||
|
cmake .. -DVALKEY_VERSION=${SERVER_VERSION}
|
||||||
|
else
|
||||||
|
cmake .. -DVALKEY_VERSION=${SERVER_VERSION} -DCFLAGS=${CFLAGS}
|
||||||
|
fi
|
||||||
make
|
make
|
||||||
|
|
||||||
# Running the Valkey JSON unit tests.
|
# Running the Valkey JSON unit tests.
|
||||||
@ -42,7 +46,6 @@ if command -v pip > /dev/null 2>&1; then
|
|||||||
elif command -v pip3 > /dev/null 2>&1; then
|
elif command -v pip3 > /dev/null 2>&1; then
|
||||||
echo "Using pip3 to install packages..."
|
echo "Using pip3 to install packages..."
|
||||||
pip3 install -r "$SCRIPT_DIR/$REQUIREMENTS_FILE"
|
pip3 install -r "$SCRIPT_DIR/$REQUIREMENTS_FILE"
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "Error: Neither pip nor pip3 is available. Please install Python package installer."
|
echo "Error: Neither pip nor pip3 is available. Please install Python package installer."
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -19,13 +19,13 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|||||||
cd "${DIR}"
|
cd "${DIR}"
|
||||||
|
|
||||||
export MODULE_PATH=$2/build/src/libjson.so
|
export MODULE_PATH=$2/build/src/libjson.so
|
||||||
echo "Running integration tests against Valkey version $SERVER_VERSION"
|
echo "Running integration tests against Valkey version ${SERVER_VERSION}"
|
||||||
|
|
||||||
if [[ ! -z "${TEST_PATTERN}" ]] ; then
|
if [[ ! -z "${TEST_PATTERN}" ]] ; then
|
||||||
export TEST_PATTERN="-k ${TEST_PATTERN}"
|
export TEST_PATTERN="-k ${TEST_PATTERN}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
BINARY_PATH=".build/binaries/$SERVER_VERSION/valkey-server"
|
BINARY_PATH=".build/binaries/${SERVER_VERSION}/valkey-server"
|
||||||
|
|
||||||
if [[ ! -f "${BINARY_PATH}" ]] ; then
|
if [[ ! -f "${BINARY_PATH}" ]] ; then
|
||||||
echo "${BINARY_PATH} missing"
|
echo "${BINARY_PATH} missing"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user