Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Ubuntu support to HyperHDR Github Pages APT repository #522

Merged
merged 16 commits into from
Jun 27, 2023
Merged
14 changes: 10 additions & 4 deletions .ci/ci_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,16 @@ else
CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
fi

if [[ "$BUILD_ARCHIVES" == '0' ]]; then
IS_ARCHIVE_SKIPPED=" -DDO_NOT_BUILD_ARCHIVES=ON"
else
IS_ARCHIVE_SKIPPED=" -DDO_NOT_BUILD_ARCHIVES=OFF"
fi

# set environment variables if not exists (debug)
[ -z "${BUILD_TYPE}" ] && BUILD_TYPE="Release"

echo "Platform: ${PLATFORM}, build type: ${BUILD_TYPE}, CI_NAME: $CI_NAME, docker image: ${DOCKER_IMAGE}, docker type: ${DOCKER_TAG}"
echo "Platform: ${PLATFORM}, build type: ${BUILD_TYPE}, CI_NAME: $CI_NAME, docker image: ${DOCKER_IMAGE}, docker type: ${DOCKER_TAG}, is archive enabled: ${IS_ARCHIVE_SKIPPED}"

# Build the package on osx or linux
if [[ "$CI_NAME" == 'osx' || "$CI_NAME" == 'darwin' ]]; then
Expand All @@ -38,7 +44,7 @@ if [[ "$CI_NAME" == 'osx' || "$CI_NAME" == 'darwin' ]]; then

CCACHE_PATH=$PWD
cd ..
cachecommand="-DCMAKE_C_COMPILER_LAUNCHER=ccache"
cachecommand="-DCMAKE_C_COMPILER_LAUNCHER=ccache ${IS_ARCHIVE_SKIPPED}"
export CCACHE_DIR=${CCACHE_PATH} && export CCACHE_COMPRESS=true && export CCACHE_COMPRESSLEVEL=1 && export CCACHE_MAXSIZE=400M
echo "CCache parameters: ${cachecommand}"
ls -a .ccache
Expand Down Expand Up @@ -67,7 +73,7 @@ elif [[ $CI_NAME == *"mingw64_nt"* || "$CI_NAME" == 'windows_nt' ]]; then
echo "Number of Cores $NUMBER_OF_PROCESSORS"
mkdir build || exit 1
cd build
cmake -G "Visual Studio 17 2022" -A x64 -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_GITHUB_ACTION=1 ../ || exit 2
cmake -G "Visual Studio 17 2022" -A x64 -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_GITHUB_ACTION=1 ${IS_ARCHIVE_SKIPPED} ../ || exit 2
cmake --build . --target package --config Release -- -nologo -v:m -maxcpucount || exit 3
exit 0;
exit 1 || { echo "---> Hyperhdr compilation failed! Abort"; exit 5; }
Expand All @@ -94,7 +100,7 @@ elif [[ "$CI_NAME" == 'linux' ]]; then

mkdir -p .ccache

cachecommand="-DCMAKE_C_COMPILER_LAUNCHER=ccache"
cachecommand="-DCMAKE_C_COMPILER_LAUNCHER=ccache ${IS_ARCHIVE_SKIPPED}"

if [[ "$RESET_CACHE" == '1' ]]; then
echo "Clearing ccache"
Expand Down
23 changes: 13 additions & 10 deletions .github/workflows/push-master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ env:
USE_CACHE: "1"
RESET_CACHE: "0"
USE_CODEQL: "0"
BUILD_ARCHIVES: ${{ startsWith(github.event.ref, 'refs/tags') && 1 || 0 }}

jobs:

Expand All @@ -21,23 +22,23 @@ jobs:
strategy:
matrix:
linuxVersion: [ bullseye ]
dockerImage: [ x86_64, rpi012-armv6l, rpi34-armv7l, arm-aarch64 ]
dockerImage: [ x86_64, arm-32bit-armv6l, arm-64bit-aarch64 ]
include:
- dockerImage: x86_64
linuxVersion: bullseye
dockerName: Debian Bullseye (x86_64)
platform: linux
- dockerImage: rpi012-armv6l
linuxVersion: bullseye
dockerName: Debian Bullseye (Raspberry Pi ZERO, 1 & 2)
platform: rpi
- dockerImage: rpi34-armv7l
- dockerImage: x86_64
linuxVersion: jammy
dockerName: Ubuntu 22.04 LTS (x86_64)
platform: linux
- dockerImage: arm-32bit-armv6l
linuxVersion: bullseye
dockerName: Debian Bullseye (Raspberry Pi 3 & 4)
dockerName: Debian Bullseye (ARM 32-bit Raspberry Pi OS)
platform: rpi
- dockerImage: arm-aarch64
- dockerImage: arm-64bit-aarch64
linuxVersion: bullseye
dockerName: Debian Bullseye (ARM aarch64)
dockerName: Debian Bullseye (ARM 64-bit Raspberry Pi OS)
platform: rpi
- dockerImage: x86_64
linuxVersion: ArchLinux
Expand Down Expand Up @@ -76,7 +77,8 @@ jobs:
USE_CCACHE: ${{ env.USE_CACHE }}
RESET_CACHE: ${{ env.RESET_CACHE }}
shell: bash
run: ./.ci/ci_build.sh
run: |
./.ci/ci_build.sh

# Upload artifacts (only on tagged commit)
- name: Upload artifacts
Expand Down Expand Up @@ -203,6 +205,7 @@ jobs:
env:
PLATFORM: windows
CMAKE_PREFIX_PATH: "${{ runner.workspace }}/Qt/${{ env.QT_VERSION }}/msvc2019_64/lib/cmake/"
USE_CCACHE: ${{ env.USE_CACHE }}
shell: bash
run: |
./.ci/ci_build.sh
Expand Down
26 changes: 19 additions & 7 deletions .github/workflows/upload-to-github-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,45 @@ jobs:
###### Upload to HyperHDR repo #######
######################################
Linux:
name: Debian ${{ matrix.linuxVersion }} (${{ matrix.arch }})
name: ${{ matrix.niceName }} ${{ matrix.linuxVersion }} (${{ matrix.arch }})
runs-on: ubuntu-22.04

strategy:
matrix:
niceName: [ Debian ]
linuxVersion: [ bullseye, bookworm ]
dockerImage: [ x86_64, rpi012-armv6l, arm-aarch64 ]
dockerImage: [ x86_64, arm-32bit-armv6l, arm-64bit-aarch64 ]
include:
- dockerImage: x86_64
dockerName: Debian (amd64)
arch: amd64
platform: linux
- dockerImage: rpi012-armv6l
- dockerImage: arm-32bit-armv6l
dockerName: Debian (armhf)
arch: armhf
platform: rpi
- dockerImage: arm-aarch64
- dockerImage: arm-64bit-aarch64
dockerName: Debian (arm64)
arch: arm64
platform: rpi
- dockerImage: x86_64
linuxVersion: ArchLinux
dockerName: Arch Linux (x86_64)
arch: amd64
platform: linux
niceName: ""
- dockerImage: x86_64
linuxVersion: jammy
dockerName: Ubuntu 22.04 LTS (x86_64)
arch: amd64
platform: linux
niceName: Ubuntu 22.04 LTS
- dockerImage: x86_64
linuxVersion: lunar
dockerName: Ubuntu 23.04 (x86_64)
arch: amd64
platform: linux
niceName: Ubuntu 23.04

steps:
# checkout
Expand Down Expand Up @@ -73,9 +88,6 @@ jobs:
RESET_CACHE: ${{ env.RESET_CACHE }}
shell: bash
run: |
if [ "${{ matrix.arch }}" == "amd64" ] && [ "${{ matrix.linuxVersion }}" == "bullseye" ]; then
sed -i 's/#SET(HYPERHDR_REPO_RPM_BUILD ON)/SET(HYPERHDR_REPO_RPM_BUILD ON)/' ./cmake/packages.cmake
fi
sed -i 's/#SET(HYPERHDR_REPO_BUILD ON)/SET(HYPERHDR_REPO_BUILD ON)/' ./cmake/packages.cmake
./.ci/ci_build.sh

Expand Down
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,10 @@ SET ( FLATBUFFERS_INSTALL_LIB_DIR ${CMAKE_BINARY_DIR}/flatbuf )

find_package(GitVersion)

if(ENABLE_XZ)
find_package(LibLZMA)
endif()

# configure a header file to pass some of the CMake settings
# to the source code
configure_file("${PROJECT_SOURCE_DIR}/HyperhdrConfig.h.in" "${PROJECT_BINARY_DIR}/HyperhdrConfig.h")
Expand Down
36 changes: 21 additions & 15 deletions cmake/packages.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# cmake file for generating distribution packages
#SET(HYPERHDR_REPO_RPM_BUILD ON)
#SET(HYPERHDR_REPO_BUILD ON)

# - Check glibc version
Expand Down Expand Up @@ -27,23 +26,27 @@ MACRO (CHECK_GLIBC_VERSION)
ENDMACRO (CHECK_GLIBC_VERSION)

# default packages to build
IF (APPLE)
SET ( CPACK_GENERATOR "TGZ")
ELSEIF (UNIX)
SET ( CPACK_GENERATOR "TGZ")
ELSEIF (WIN32)
SET ( CPACK_GENERATOR "ZIP" "NSIS")
if(NOT DO_NOT_BUILD_ARCHIVES)
IF (APPLE)
SET ( CPACK_GENERATOR "TGZ")
ELSEIF (UNIX)
SET ( CPACK_GENERATOR "TGZ")
ELSEIF (WIN32)
SET ( CPACK_GENERATOR "ZIP" "NSIS")
ENDIF()
ELSE()
IF (WIN32)
SET ( CPACK_GENERATOR "NSIS")
ENDIF()
ENDIF()

# Determine packages by found generator executables

# Github Action enables it for packages
if(HYPERHDR_REPO_RPM_BUILD)
find_package(RpmBuilder)
IF(RPM_BUILDER_FOUND)
message(STATUS "CPACK: Found RPM builder")
SET ( CPACK_GENERATOR "RPM")
ENDIF()
find_package(RpmBuilder)
IF(RPM_BUILDER_FOUND)
message(STATUS "CPACK: Found RPM builder")
SET ( CPACK_GENERATOR "RPM")
ENDIF()

find_package(DebBuilder)
Expand Down Expand Up @@ -131,7 +134,6 @@ if ( ENABLE_CEC )
endif()
SET ( CPACK_DEBIAN_PACKAGE_SUGGESTS "libx11-6" )
SET ( CPACK_DEBIAN_PACKAGE_SECTION "Miscellaneous" )
SET ( CPACK_DEBIAN_COMPRESSION_TYPE "xz" )

# .rpm for rpm
# https://cmake.org/cmake/help/v3.5/module/CPackRPM.html
Expand All @@ -142,7 +144,11 @@ SET ( CPACK_RPM_PACKAGE_REQUIRES "xz-utils" )
SET ( CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/preinst" )
SET ( CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/postinst" )
SET ( CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/prerm" )
SET ( CPACK_RPM_COMPRESSION_TYPE "xz" )

if(NOT DO_NOT_BUILD_ARCHIVES)
SET ( CPACK_DEBIAN_COMPRESSION_TYPE "xz" )
SET ( CPACK_RPM_COMPRESSION_TYPE "xz" )
endif()

# OSX dmg generator
if ( APPLE )
Expand Down
13 changes: 9 additions & 4 deletions dependencies/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,11 @@ else ()

set(CMAKE_POLICY_DEFAULT_CMP0071 NEW)

file(READ "${CMAKE_CURRENT_SOURCE_DIR}/external/flatbuffers/CMakeLists.txt" FILE_CONTENTS_FLAT)
string(REPLACE "-Werror " "-Wno-stringop-overflow " FILE_CONTENTS_FLAT "${FILE_CONTENTS_FLAT}")
file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/external/flatbuffers/CMakeLists.txt" "${FILE_CONTENTS_FLAT}")
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/external/flatbuffers/CMakeLists.txt" FILE_CONTENTS_FLAT)
string(REPLACE "-Werror " "-Wno-stringop-overflow " FILE_CONTENTS_FLAT "${FILE_CONTENTS_FLAT}")
file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/external/flatbuffers/CMakeLists.txt" "${FILE_CONTENTS_FLAT}")
endif()

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/flatbuffers)

Expand Down Expand Up @@ -161,5 +163,8 @@ ENDIF()

if ( ENABLE_XZ )
option(BUILD_TESTING "" OFF)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/xz)
if (NOT LIBLZMA_FOUND)
message( WARNING "Could not found system xz library. Using embedded xz library.")
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/xz)
endif()
ENDIF()
9 changes: 7 additions & 2 deletions sources/api/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,13 @@ target_link_libraries(hyperhdr-api
)

if(ENABLE_XZ)
target_link_libraries(hyperhdr-api liblzma)
target_include_directories(hyperhdr-api PRIVATE "${CMAKE_SOURCE_DIR}/dependencies/external/xz/src/liblzma/api")
if (NOT LIBLZMA_FOUND)
target_link_libraries(hyperhdr-api liblzma)
target_include_directories(hyperhdr-api PRIVATE "${CMAKE_SOURCE_DIR}/dependencies/external/xz/src/liblzma/api")
else()
target_link_libraries(hyperhdr-api LibLZMA::LibLZMA)
target_include_directories(hyperhdr-api PRIVATE ${LIBLZMA_INCLUDE_DIR})
endif()
endif()

if(USE_PRECOMPILED_HEADERS AND COMMAND target_precompile_headers)
Expand Down
6 changes: 5 additions & 1 deletion sources/hyperhdr/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,11 @@ if (USE_STATIC_QT_PLUGINS)
endif()

if(ENABLE_XZ)
target_link_libraries(hyperhdr liblzma)
if (LIBLZMA_FOUND)
target_link_libraries(hyperhdr LibLZMA::LibLZMA)
else()
target_link_libraries(hyperhdr liblzma)
endif()
endif()

if (ENABLE_PROTOBUF)
Expand Down