From 447fd3efd0674ee51b08f58069ac5723fb3abaaf Mon Sep 17 00:00:00 2001 From: Doug Nazar Date: Fri, 22 Jul 2022 10:20:10 -0400 Subject: [PATCH 1/7] CI/Cirrus: Update to FreeBSD 12.3 --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index 3f2182f9c..4b9f1b055 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -2,7 +2,7 @@ task: name: freebsd-build freebsd_instance: matrix: - - image_family: freebsd-12-2 + - image_family: freebsd-12-3 - image_family: freebsd-13-0 prepare_script: From 9c40e2bb86b29333069b8c7e2673b43ac2022725 Mon Sep 17 00:00:00 2001 From: Doug Nazar Date: Fri, 22 Jul 2022 10:30:36 -0400 Subject: [PATCH 2/7] CI: Remove CI workflow for Debian Stretch Debian Stretch has finished LTS and is too old for current code base. --- .github/workflows/ci-stretch.yml | 43 -------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 .github/workflows/ci-stretch.yml diff --git a/.github/workflows/ci-stretch.yml b/.github/workflows/ci-stretch.yml deleted file mode 100644 index cb192074d..000000000 --- a/.github/workflows/ci-stretch.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: CI Debian Stretch - -on: - push: - branches: - - '*' - pull_request: - branches: [ master ] - -permissions: - contents: read - -jobs: - build: - defaults: - run: - shell: bash - runs-on: ubuntu-latest - container: debian:stretch-backports - - steps: - - name: Update packages - run: apt-get -qq update && apt-get -qq upgrade - - name: Install git - run: apt-get -qq install git/stretch-backports git-man/stretch-backports - - uses: actions/checkout@v3 - with: - submodules: recursive - - name: Install dependencies - run: > - apt-get -qq install make cmake g++ - default-libmysqlclient-dev - libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev libavdevice-dev - libcurl4-gnutls-dev libvlc-dev libvncserver-dev - libdate-manip-perl libdbd-mysql-perl libsys-mmap-perl libwww-perl - libpolkit-gobject-1-dev - libssl-dev - - name: Prepare - run: mkdir build - - name: Configure - run: cd build && cmake --version && cmake .. -DBUILD_MAN=0 -DENABLE_WERROR=1 - - name: Build - run: cd build && make -j3 | grep --line-buffered -Ev '^(cp lib\/|Installing.+\.pm)' && (exit ${PIPESTATUS[0]}) From cfa4cdc9a3c9c95d8a27df7f5ebaeedcaba569a6 Mon Sep 17 00:00:00 2001 From: Doug Nazar Date: Fri, 22 Jul 2022 11:05:14 -0400 Subject: [PATCH 3/7] Use add_compile_options instead of add_compile_definitions add_compile_definitions is not available until version 3.12. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 052792e4b..97dc6ae9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,7 +43,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") set (CMAKE_CXX_STANDARD 17) set (CMAKE_CXX_STANDARD_REQUIRED ON) -add_compile_definitions(_FILE_OFFSET_BITS=64) +add_compile_options(-D_FILE_OFFSET_BITS=64) include(ConfigureBaseTargets) include(CheckPlatform) From 3b69a51ff85653586f42dde147158f7b4acde1a6 Mon Sep 17 00:00:00 2001 From: Doug Nazar Date: Fri, 22 Jul 2022 12:00:42 -0400 Subject: [PATCH 4/7] Try to fix warning again that printf might exceed buffer. The last fix worked on GCC 11 & 12 but broke GCC 8. --- src/zm_logger.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/zm_logger.cpp b/src/zm_logger.cpp index a4d9e92f8..4db535a78 100644 --- a/src/zm_logger.cpp +++ b/src/zm_logger.cpp @@ -82,8 +82,9 @@ Logger::Logger() : smSyslogPriorities[PANIC] = LOG_ERR; char code[4] = ""; - for (unsigned int i = DEBUG1; i <= DEBUG9; i++) { - snprintf(code, sizeof(code), "DB%u", i); + // Extra comparison against DEBUG1 to ensure GCC knows we are printing a single byte. + for (int i = DEBUG1; i>=DEBUG1 && i <= DEBUG9; i++) { + snprintf(code, sizeof(code), "DB%d", i); smCodes[i] = code; smSyslogPriorities[i] = LOG_DEBUG; } From c0304165006984cf07289567d76c58b3fda727b8 Mon Sep 17 00:00:00 2001 From: Doug Nazar Date: Fri, 22 Jul 2022 19:52:09 -0400 Subject: [PATCH 5/7] Fix truncation warning. --- src/zm_sdp.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/zm_sdp.cpp b/src/zm_sdp.cpp index bdbc9e1d1..1593b1640 100644 --- a/src/zm_sdp.cpp +++ b/src/zm_sdp.cpp @@ -290,7 +290,8 @@ AVFormatContext *SessionDescriptor::generateFormatContext() const { #if (LIBAVFORMAT_VERSION_CHECK(58, 12, 0, 0, 100)) formatContext->url = av_strdup(mUrl.c_str()); #else - strncpy(formatContext->filename, mUrl.c_str(), sizeof(formatContext->filename)); + strncpy(formatContext->filename, mUrl.c_str(), sizeof(formatContext->filename) - 1); + formatContext->filename[sizeof(formatContext->filename) - 1] = '\0'; #endif /* if ( mName.length() ) From a65e960ce6ef406318d163fac445fb31adb67bb7 Mon Sep 17 00:00:00 2001 From: Doug Nazar Date: Sat, 23 Jul 2022 04:01:56 -0400 Subject: [PATCH 6/7] Docker image of CentOS 7, GCC 8 & ZoneMinder dependencies --- .github/docker/centos7-gcc8-zm/Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/docker/centos7-gcc8-zm/Dockerfile diff --git a/.github/docker/centos7-gcc8-zm/Dockerfile b/.github/docker/centos7-gcc8-zm/Dockerfile new file mode 100644 index 000000000..80210ebb9 --- /dev/null +++ b/.github/docker/centos7-gcc8-zm/Dockerfile @@ -0,0 +1,11 @@ +FROM centos:7 + +LABEL name="centos7-gcc8-zm" \ + version="1" + +RUN yum -y install https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && \ + yum -y install https://repo.ius.io/ius-release-el7.rpm && yum -y install git236 && \ + yum -y update && yum -y install make cmake3 gcc-c++ mariadb-devel ffmpeg-devel libcurl-devel vlc-devel libvncserver-devel libjpeg-turbo-devel "perl(Date::Manip)" "perl(DBD::mysql)" "perl(ExtUtils::MakeMaker)" "perl(Sys::Mmap)" "perl(Sys::Syslog)" "perl(LWP::UserAgent)" polkit-devel libjwt-devel && \ + yum -y install centos-release-scl-rh && \ + INSTALL_PKGS="devtoolset-8-gcc devtoolset-8-gcc-c++" && \ + yum -y install --setopt=tsflags=nodocs $INSTALL_PKGS From 78962c461bde428f8847102cb533432481c59b59 Mon Sep 17 00:00:00 2001 From: Doug Nazar Date: Fri, 22 Jul 2022 19:57:55 -0400 Subject: [PATCH 7/7] Use docker image for centos 7 --- .github/workflows/ci-centos-7.yml | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci-centos-7.yml b/.github/workflows/ci-centos-7.yml index 1c1dad8e1..39973d05a 100644 --- a/.github/workflows/ci-centos-7.yml +++ b/.github/workflows/ci-centos-7.yml @@ -9,6 +9,7 @@ on: permissions: contents: read + packages: read jobs: build: @@ -22,21 +23,15 @@ jobs: - crypto_backend: gnutls jwt_backend: libjwt runs-on: ubuntu-latest - container: centos:7 + container: ghcr.io/dougnazar/centos7-gcc8-zm:latest steps: - - name: Enable RPMFusion and EPEL - run: yum -y install https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm - - name: Install git - run: yum -y install https://repo.ius.io/ius-release-el7.rpm && yum -y install git224 - uses: actions/checkout@v3 with: submodules: recursive - - name: Install dependencies - run: yum -y update && yum -y install make cmake3 gcc-c++ mariadb-devel ffmpeg-devel libcurl-devel vlc-devel libvncserver-devel libjpeg-turbo-devel "perl(Date::Manip)" "perl(DBD::mysql)" "perl(ExtUtils::MakeMaker)" "perl(Sys::Mmap)" "perl(Sys::Syslog)" "perl(LWP::UserAgent)" polkit-devel libjwt-devel - name: Prepare run: mkdir build - name: Configure - run: cd build && cmake3 --version && cmake3 .. -DBUILD_MAN=0 -DENABLE_WERROR=1 -DZM_CRYPTO_BACKEND=${{ matrix.crypto_backend }} -DZM_JWT_BACKEND=${{ matrix.jwt_backend }} + run: source /usr/bin/scl_source enable devtoolset-8 && cd build && cmake3 --version && cmake3 .. -DBUILD_MAN=0 -DENABLE_WERROR=1 -DZM_CRYPTO_BACKEND=${{ matrix.crypto_backend }} -DZM_JWT_BACKEND=${{ matrix.jwt_backend }} - name: Build - run: cd build && make -j3 | grep --line-buffered -Ev '^(cp lib\/|Installing.+\.pm)' && (exit ${PIPESTATUS[0]}) + run: source /usr/bin/scl_source enable devtoolset-8 && cd build && make -j3 | grep --line-buffered -Ev '^(cp lib\/|Installing.+\.pm)' && (exit ${PIPESTATUS[0]})