Optionally use system jerasure and add Bullseye CI

This commit is contained in:
Florian Märkl 2020-10-22 22:25:50 +02:00
parent 9200c0b893
commit 03c82ea515
7 changed files with 115 additions and 31 deletions

22
.github/workflows/bullseye.yml vendored Normal file
View file

@ -0,0 +1,22 @@
name: Debian Bullseye
on:
push:
branches:
- master
pull_request:
jobs:
build:
name: Debian Bullseye
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Checkout submodules
run: |
git submodule init
git submodule update
- name: Docker Build
run: cd scripts && docker build -t chiaki-bullseye . -f Dockerfile.bullseye && cd ..
- name: Build and Test
run: docker run --rm -v "`pwd`:/build" -t chiaki-bullseye /bin/bash -c "cd /build && scripts/ci-script -DCHIAKI_USE_SYSTEM_JERASURE=ON"

View file

@ -20,6 +20,7 @@ option(CHIAKI_LIB_ENABLE_MBEDTLS "Use mbedtls instead of OpenSSL as part of Chia
option(CHIAKI_LIB_OPENSSL_EXTERNAL_PROJECT "Use OpenSSL as CMake external project" OFF)
option(CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER "Use SDL Gamecontroller for Input" ON)
option(CHIAKI_CLI_ARGP_STANDALONE "Search for standalone argp lib for CLI" OFF)
tri_option(CHIAKI_USE_SYSTEM_JERASURE "Use system-provided jerasure instead of submodule" AUTO)
set(CHIAKI_VERSION_MAJOR 1)
set(CHIAKI_VERSION_MINOR 3)
@ -52,6 +53,16 @@ elseif(CHIAKI_ENABLE_SWITCH)
set(CHIAKI_LIB_ENABLE_MBEDTLS ON)
endif()
if(CHIAKI_USE_SYSTEM_JERASURE)
if(CHIAKI_USE_SYSTEM_JERASURE STREQUAL AUTO)
find_package(Jerasure QUIET)
set(CHIAKI_USE_SYSTEM_JERASURE ${Jerasure_FOUND})
else()
find_package(Jerasure REQUIRED)
set(CHIAKI_USE_SYSTEM_JERASURE ON)
endif()
endif()
add_subdirectory(third-party)
add_definitions(-DCHIAKI_VERSION_MAJOR=${CHIAKI_VERSION_MAJOR} -DCHIAKI_VERSION_MINOR=${CHIAKI_VERSION_MINOR} -DCHIAKI_VERSION_PATCH=${CHIAKI_VERSION_PATCH} -DCHIAKI_VERSION=\"${CHIAKI_VERSION}\")

26
cmake/FindJerasure.cmake Normal file
View file

@ -0,0 +1,26 @@
# Provides Jerasure::Jerasure
find_path(Jerasure_INCLUDE_DIR NAMES jerasure.h)
find_path(Jerasure_INCLUDE_DIR2 NAMES galois.h PATH_SUFFIXES jerasure)
find_library(Jerasure_LIBRARY NAMES Jerasure)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Jerasure
FOUND_VAR Jerasure_FOUND
REQUIRED_VARS
Jerasure_LIBRARY
Jerasure_INCLUDE_DIR
Jerasure_INCLUDE_DIR2
)
if(Jerasure_FOUND)
set(Jerasure_LIBRARIES ${Jerasure_LIBRARY})
set(Jerasure_INCLUDE_DIRS ${Jerasure_INCLUDE_DIR} ${Jerasure_INCLUDE_DIR2})
if(NOT TARGET Jerasure::Jerasure)
add_library(Jerasure::Jerasure UNKNOWN IMPORTED)
set_target_properties(Jerasure::Jerasure PROPERTIES
IMPORTED_LOCATION "${Jerasure_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${Jerasure_INCLUDE_DIRS}"
)
endif()
endif()

View file

@ -117,7 +117,7 @@ if(CHIAKI_ENABLE_SWITCH AND NOT CHIAKI_ENABLE_SWITCH_LINUX)
endif()
target_link_libraries(chiaki-lib protobuf-nanopb-static)
target_link_libraries(chiaki-lib jerasure)
target_link_libraries(chiaki-lib Jerasure::Jerasure)
if(CHIAKI_LIB_ENABLE_OPUS)
target_link_libraries(chiaki-lib ${Opus_LIBRARIES})

View file

@ -0,0 +1,12 @@
FROM debian:bullseye
RUN apt-get update
RUN apt-get -y install git g++ cmake pkg-config \
libjerasure-dev libnanopb-dev libavcodec-dev libopus-dev \
libssl-dev protobuf-compiler python3 python3-protobuf \
libevdev-dev libudev-dev \
qt5-default libqt5svg5-dev qtmultimedia5-dev libsdl2-dev
CMD []

9
scripts/ci-script Executable file
View file

@ -0,0 +1,9 @@
#!/bin/bash
set -e
set -x
mkdir build && cd build
cmake .. -DCHIAKI_ENABLE_SETSU=ON "$@"
make -j8
make test

View file

@ -10,11 +10,12 @@ set(NANOPB_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/nanopb")
set(NANOPB_SOURCE_DIR "${NANOPB_SOURCE_DIR}" PARENT_SCOPE)
set(NANOPB_GENERATOR_PY "${NANOPB_SOURCE_DIR}/generator/nanopb_generator.py" PARENT_SCOPE)
##################
# gf-complete
##################
if(NOT CHIAKI_USE_SYSTEM_JERASURE)
##################
# gf-complete
##################
set(GF_COMPLETE_SOURCE
set(GF_COMPLETE_SOURCE
gf-complete/src/gf.c
gf-complete/src/gf_wgen.c
gf-complete/src/gf_w4.c
@ -27,22 +28,25 @@ set(GF_COMPLETE_SOURCE
gf-complete/src/gf_general.c
gf-complete/src/gf_cpu.c)
# TODO: support NEON
# TODO: support NEON
add_library(gf_complete STATIC ${GF_COMPLETE_SOURCE})
target_include_directories(gf_complete PUBLIC gf-complete/include)
add_library(gf_complete STATIC ${GF_COMPLETE_SOURCE})
target_include_directories(gf_complete PUBLIC gf-complete/include)
##################
# jerasure
##################
##################
# jerasure
##################
set(JERASURE_SOURCE
set(JERASURE_SOURCE
jerasure/src/galois.c
jerasure/src/jerasure.c
jerasure/src/reed_sol.c
jerasure/src/cauchy.c
jerasure/src/liberation.c)
add_library(jerasure STATIC ${JERASURE_SOURCE})
target_include_directories(jerasure PUBLIC jerasure/include)
target_link_libraries(jerasure gf_complete)
add_library(jerasure STATIC ${JERASURE_SOURCE})
target_include_directories(jerasure PUBLIC jerasure/include)
target_link_libraries(jerasure gf_complete)
add_library(Jerasure::Jerasure ALIAS jerasure)
endif()