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_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_GUI_ENABLE_SDL_GAMECONTROLLER "Use SDL Gamecontroller for Input" ON)
option(CHIAKI_CLI_ARGP_STANDALONE "Search for standalone argp lib for CLI" OFF) 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_MAJOR 1)
set(CHIAKI_VERSION_MINOR 3) set(CHIAKI_VERSION_MINOR 3)
@ -52,6 +53,16 @@ elseif(CHIAKI_ENABLE_SWITCH)
set(CHIAKI_LIB_ENABLE_MBEDTLS ON) set(CHIAKI_LIB_ENABLE_MBEDTLS ON)
endif() 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_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}\") 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() endif()
target_link_libraries(chiaki-lib protobuf-nanopb-static) 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) if(CHIAKI_LIB_ENABLE_OPUS)
target_link_libraries(chiaki-lib ${Opus_LIBRARIES}) 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,39 +10,43 @@ set(NANOPB_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/nanopb")
set(NANOPB_SOURCE_DIR "${NANOPB_SOURCE_DIR}" PARENT_SCOPE) set(NANOPB_SOURCE_DIR "${NANOPB_SOURCE_DIR}" PARENT_SCOPE)
set(NANOPB_GENERATOR_PY "${NANOPB_SOURCE_DIR}/generator/nanopb_generator.py" PARENT_SCOPE) set(NANOPB_GENERATOR_PY "${NANOPB_SOURCE_DIR}/generator/nanopb_generator.py" PARENT_SCOPE)
################## if(NOT CHIAKI_USE_SYSTEM_JERASURE)
# gf-complete ##################
################## # gf-complete
##################
set(GF_COMPLETE_SOURCE set(GF_COMPLETE_SOURCE
gf-complete/src/gf.c gf-complete/src/gf.c
gf-complete/src/gf_wgen.c gf-complete/src/gf_wgen.c
gf-complete/src/gf_w4.c gf-complete/src/gf_w4.c
gf-complete/src/gf_w8.c gf-complete/src/gf_w8.c
gf-complete/src/gf_w16.c gf-complete/src/gf_w16.c
gf-complete/src/gf_w32.c gf-complete/src/gf_w32.c
gf-complete/src/gf_w64.c gf-complete/src/gf_w64.c
gf-complete/src/gf_w128.c gf-complete/src/gf_w128.c
gf-complete/src/gf_rand.c gf-complete/src/gf_rand.c
gf-complete/src/gf_general.c gf-complete/src/gf_general.c
gf-complete/src/gf_cpu.c) gf-complete/src/gf_cpu.c)
# TODO: support NEON # TODO: support NEON
add_library(gf_complete STATIC ${GF_COMPLETE_SOURCE}) add_library(gf_complete STATIC ${GF_COMPLETE_SOURCE})
target_include_directories(gf_complete PUBLIC gf-complete/include) target_include_directories(gf_complete PUBLIC gf-complete/include)
################## ##################
# jerasure # jerasure
################## ##################
set(JERASURE_SOURCE set(JERASURE_SOURCE
jerasure/src/galois.c jerasure/src/galois.c
jerasure/src/jerasure.c jerasure/src/jerasure.c
jerasure/src/reed_sol.c jerasure/src/reed_sol.c
jerasure/src/cauchy.c jerasure/src/cauchy.c
jerasure/src/liberation.c) jerasure/src/liberation.c)
add_library(jerasure STATIC ${JERASURE_SOURCE}) add_library(jerasure STATIC ${JERASURE_SOURCE})
target_include_directories(jerasure PUBLIC jerasure/include) target_include_directories(jerasure PUBLIC jerasure/include)
target_link_libraries(jerasure gf_complete) target_link_libraries(jerasure gf_complete)
add_library(Jerasure::Jerasure ALIAS jerasure)
endif()