From fcd8770f9d4c4055ac9f0136a434c31d2dace15e Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:16:08 +0200 Subject: [PATCH 01/14] Combined Ubuntu 22 and 20 workflow in single matrix workflow --- .github/workflows/build-ubuntu-22.yml | 157 ------------------ .../{build-ubuntu-20.yml => build-ubuntu.yml} | 109 ++++++------ 2 files changed, 56 insertions(+), 210 deletions(-) delete mode 100644 .github/workflows/build-ubuntu-22.yml rename .github/workflows/{build-ubuntu-20.yml => build-ubuntu.yml} (53%) diff --git a/.github/workflows/build-ubuntu-22.yml b/.github/workflows/build-ubuntu-22.yml deleted file mode 100644 index afc88c1c29..0000000000 --- a/.github/workflows/build-ubuntu-22.yml +++ /dev/null @@ -1,157 +0,0 @@ -name: Build Ubuntu 22.04 - -on: - push: - pull_request: - branches: - - master - -jobs: - build-ubuntu: - runs-on: ubuntu-22.04 - - env: - # enable starting Qt GUI Applications - QT_QPA_PLATFORM: offscreen - - steps: - - name: Install Dependencies - run: | - sudo apt update - sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qtbase5-dev libqt5opengl5-dev libqt5svg5-dev libyaml-cpp-dev - - - name: Install Cap'n Proto - run: | - mkdir "${{ runner.workspace }}/capnp" - cd "${{ runner.workspace }}/capnp" - curl -O https://capnproto.org/capnproto-c++-0.9.0.tar.gz - tar zxf capnproto-c++-0.9.0.tar.gz - cd capnproto-c++-0.9.0 - ./configure - make -j - sudo make install - - - name: Checkout - uses: actions/checkout@v4 - with: - submodules: 'true' - fetch-depth: 0 - - - name: Install Python requirements - shell: bash - run: | - sudo apt-get -y install python3-dev python3-venv - mkdir ".venv_build" - python3 -m venv ".venv_build" - source ".venv_build/bin/activate" - pip install --upgrade pip - pip install wheel setuptools - pip install -r "$GITHUB_WORKSPACE/doc/requirements.txt" - - - name: CMake - run: | - source ".venv_build/bin/activate" - - export CC=/usr/bin/gcc-11 - export CXX=/usr/bin/g++-11 - mkdir "${{ runner.workspace }}/_build" - cd "${{ runner.workspace }}/_build" - cmake $GITHUB_WORKSPACE -G "Ninja" \ - -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake/submodule_dependencies.cmake \ - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ - -DHAS_HDF5=ON \ - -DHAS_QT=ON \ - -DHAS_CURL=ON \ - -DHAS_CAPNPROTO=ON \ - -DHAS_FTXUI=ON \ - -DBUILD_DOCS=ON \ - -DBUILD_APPS=ON \ - -DBUILD_SAMPLES=ON \ - -DBUILD_TIME=ON \ - -DBUILD_PY_BINDING=ON \ - -DBUILD_STANDALONE_PY_WHEEL=ON \ - -DBUILD_CSHARP_BINDING=OFF \ - -DBUILD_ECAL_TESTS=ON \ - -DECAL_INCLUDE_PY_SAMPLES=OFF \ - -DECAL_INSTALL_SAMPLE_SOURCES=ON \ - -DECAL_JOIN_MULTICAST_TWICE=OFF \ - -DECAL_NPCAP_SUPPORT=OFF \ - -DECAL_THIRDPARTY_BUILD_CMAKE_FUNCTIONS=ON \ - -DECAL_THIRDPARTY_BUILD_PROTOBUF=OFF \ - -DECAL_THIRDPARTY_BUILD_SPDLOG=ON \ - -DECAL_THIRDPARTY_BUILD_TINYXML2=ON \ - -DECAL_THIRDPARTY_BUILD_FINEFTP=ON \ - -DECAL_THIRDPARTY_BUILD_CURL=OFF \ - -DECAL_THIRDPARTY_BUILD_GTEST=ON \ - -DECAL_THIRDPARTY_BUILD_HDF5=OFF \ - -DECAL_THIRDPARTY_BUILD_RECYCLE=ON \ - -DECAL_THIRDPARTY_BUILD_TCP_PUBSUB=ON \ - -DECAL_THIRDPARTY_BUILD_QWT=ON \ - -DECAL_THIRDPARTY_BUILD_YAML-CPP=OFF \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_SYSCONFDIR=/etc \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_INSTALL_LOCALSTATEDIR=/var \ - -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ - -DPython_FIND_VIRTUALENV=ONLY - - sudo mkdir /etc/ecal - sudo cp "$GITHUB_WORKSPACE/ecal/core/cfg/ecal.ini" /etc/ecal - shell: bash - - - name: Build Release - run: cmake --build . --config Release -- -k 0 - working-directory: ${{ runner.workspace }}/_build - - # Create Python Wheels - # The strang-looking double-cmake is an ugly workaround to force CMake to - # re-find Python, after we have changed the venv from the outside. The - # alternative would be to clean everything, which would cause an unnecessary - # rebuild of eCAL for each python Version. - - name: Build Python 3.11 Wheel - run: | - sudo apt-get -y install python3.11-dev python3.11-venv - mkdir ".venv_311" - python3.11 -m venv ".venv_311" - source ".venv_311/bin/activate" - pip install --upgrade pip - pip install wheel setuptools - cmake $GITHUB_WORKSPACE -DPython_FIND_VIRTUALENV=FIRST - cmake $GITHUB_WORKSPACE -DPython_FIND_VIRTUALENV=ONLY - cmake --build . --target create_python_wheel --config Release - shell: bash - working-directory: ${{ runner.workspace }}/_build - - - name: Build Python 3.10 Wheel - run: | - sudo apt-get -y install python3.10-dev python3.10-venv - mkdir ".venv_310" - python3.10 -m venv ".venv_310" - source ".venv_310/bin/activate" - pip install --upgrade pip - pip install wheel setuptools - cmake $GITHUB_WORKSPACE -DPython_FIND_VIRTUALENV=FIRST - cmake $GITHUB_WORKSPACE -DPython_FIND_VIRTUALENV=ONLY - cmake --build . --target create_python_wheel --config Release - shell: bash - working-directory: ${{ runner.workspace }}/_build - - - name: Run Tests - run: ctest -V - working-directory: ${{ runner.workspace }}/_build - - - name: Pack - run: cpack -G DEB - working-directory: ${{ runner.workspace }}/_build - - - name: Upload Debian - uses: actions/upload-artifact@v4 - with: - name: ubuntu-debian - path: ${{ runner.workspace }}/_build/_deploy/*.deb - - - name: Upload Python Wheel - uses: actions/upload-artifact@v4 - with: - name: ubuntu-python-wheel - path: ${{ runner.workspace }}/_build/_deploy/*.whl diff --git a/.github/workflows/build-ubuntu-20.yml b/.github/workflows/build-ubuntu.yml similarity index 53% rename from .github/workflows/build-ubuntu-20.yml rename to .github/workflows/build-ubuntu.yml index 06093aa992..9334a7c48a 100644 --- a/.github/workflows/build-ubuntu-20.yml +++ b/.github/workflows/build-ubuntu.yml @@ -1,32 +1,63 @@ -name: Build Ubuntu 20.04 +name: Build Ubuntu on: push: pull_request: - branches: - - master jobs: build-ubuntu: - runs-on: ubuntu-20.04 + + strategy: + matrix: + os: [ubuntu-22.04, ubuntu-20.04] + + runs-on: ${{ matrix.os }} env: # enable starting Qt GUI Applications QT_QPA_PLATFORM: offscreen + PROJECT_NAME: ecal steps: + - name: Install Dependencies run: | sudo apt update - sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qt5-default libqt5opengl5-dev libqt5svg5-dev libyaml-cpp-dev + + if [ "${{ matrix.os }}" == "ubuntu-24.04" ]; then + sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qt6-base-dev qt6-svg-dev libyaml-cpp-dev + sudo apt-get -y install python python-venv + elif [ "${{ matrix.os }}" == "ubuntu-22.04" ]; then + sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qtbase5-dev libqt5opengl5-dev libqt5svg5-dev libyaml-cpp-dev + sudo apt-get -y install python python-venv + elif [ "${{ matrix.os }}" == "ubuntu-20.04" ]; then + sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qt5-default libqt5opengl5-dev libqt5svg5-dev libyaml-cpp-dev + sudo apt-get -y install python3.9 python3.9-venv + fi + + - name: Set variables + run: | + if [ "${{ matrix.os }}" == "ubuntu-24.04" ]; then + echo "ubuntu_codename=noble" >> "$GITHUB_ENV" + echo "python_version=3" >> "$GITHUB_ENV" # => default python 3 version + elif [ "${{ matrix.os }}" == "ubuntu-22.04" ]; then + echo "ubuntu_codename=focal" >> "$GITHUB_ENV" + echo "python_version=3" >> "$GITHUB_ENV" # => default python 3 version + elif [ "${{ matrix.os }}" == "ubuntu-20.04" ]; then + echo "ubuntu_codename=jammy" >> "$GITHUB_ENV" + echo "python_version=3.9" >> "$GITHUB_ENV" + fi + + # Get cpu architecture + echo "cpu_architecture=$(dpkg --print-architecture)" >> "$GITHUB_ENV" - name: Install Cap'n Proto run: | mkdir "${{ runner.workspace }}/capnp" cd "${{ runner.workspace }}/capnp" - curl -O https://capnproto.org/capnproto-c++-0.9.0.tar.gz - tar zxf capnproto-c++-0.9.0.tar.gz - cd capnproto-c++-0.9.0 + curl -O https://capnproto.org/capnproto-c++-1.0.2.tar.gz + tar zxf capnproto-c++-1.0.2.tar.gz + cd capnproto-c++-1.0.2 ./configure make -j sudo make install @@ -40,9 +71,8 @@ jobs: - name: Install Python requirements shell: bash run: | - sudo apt-get -y install python3.9-dev python3.9-venv mkdir ".venv_build" - python3.9 -m venv ".venv_build" + python${{ env.python_version }} -m venv ".venv_build" source ".venv_build/bin/activate" pip install --upgrade pip pip install wheel setuptools @@ -52,8 +82,6 @@ jobs: run: | source ".venv_build/bin/activate" - export CC=/usr/bin/gcc-9 - export CXX=/usr/bin/g++-9 mkdir "${{ runner.workspace }}/_build" cd "${{ runner.workspace }}/_build" @@ -69,8 +97,8 @@ jobs: -DBUILD_APPS=ON \ -DBUILD_SAMPLES=ON \ -DBUILD_TIME=ON \ - -DBUILD_PY_BINDING=ON \ - -DBUILD_STANDALONE_PY_WHEEL=ON \ + -DBUILD_PY_BINDING=OFF \ + -DBUILD_STANDALONE_PY_WHEEL=OFF \ -DBUILD_CSHARP_BINDING=OFF \ -DBUILD_ECAL_TESTS=ON \ -DECAL_INCLUDE_PY_SAMPLES=OFF \ @@ -104,55 +132,30 @@ jobs: run: cmake --build . --config Release -- -k 0 working-directory: ${{ runner.workspace }}/_build - # Create Python Wheels - # The strang-looking double-cmake is an ugly workaround to force CMake to - # re-find Python, after we have changed the venv from the outside. The - # alternative would be to clean everything, which would cause an unnecessary - # rebuild of eCAL for each python Version. - - name: Build Python 3.9 Wheel - run: | - sudo apt-get -y install python3.9-dev python3.9-venv - mkdir ".venv_39" - python3.9 -m venv ".venv_39" - source ".venv_39/bin/activate" - pip install --upgrade pip - pip install wheel setuptools - cmake $GITHUB_WORKSPACE -DPython_FIND_VIRTUALENV=FIRST - cmake $GITHUB_WORKSPACE -DPython_FIND_VIRTUALENV=ONLY - cmake --build . --target create_python_wheel --config Release - shell: bash + - name: Run Tests + run: ctest -V working-directory: ${{ runner.workspace }}/_build - - name: Build Python 3.8 Wheel + - name: Read Project Version from CMakeCache run: | - sudo apt-get -y install python3.8-dev python3.8-venv - mkdir ".venv_38" - python3.8 -m venv ".venv_38" - source ".venv_38/bin/activate" - pip install --upgrade pip - pip install wheel setuptools - cmake $GITHUB_WORKSPACE -DPython_FIND_VIRTUALENV=FIRST - cmake $GITHUB_WORKSPACE -DPython_FIND_VIRTUALENV=ONLY - cmake --build . --target create_python_wheel --config Release + cmake_project_version_string=$(cat "${{github.workspace}}/_build/CMakeCache.txt" | grep "^CMAKE_PROJECT_VERSION:") + arr=(${cmake_project_version_string//=/ }) + cmake_project_version=${arr[1]} + echo "CMAKE_PROJECT_VERSION=$cmake_project_version" >> "$GITHUB_ENV" shell: bash - working-directory: ${{ runner.workspace }}/_build - - - name: Run Tests - run: ctest -V - working-directory: ${{ runner.workspace }}/_build - - name: Pack + - name: CPack run: cpack -G DEB working-directory: ${{ runner.workspace }}/_build + - name: Rename .deb installer + run: | + mv *.deb '${{ env.PROJECT_NAME }}_${{ env.CMAKE_PROJECT_VERSION }}-${{ env.ubuntu_codename }}_${{ env.cpu_architecture }}.deb' + shell: bash + working-directory: ${{github.workspace}}/_build/_deploy/ + - name: Upload Debian uses: actions/upload-artifact@v4 with: name: ubuntu-debian path: ${{ runner.workspace }}/_build/_deploy/*.deb - - - name: Upload Python Wheel - uses: actions/upload-artifact@v4 - with: - name: ubuntu-python-wheel - path: ${{ runner.workspace }}/_build/_deploy/*.whl From 447043234611f10e8187898502fa1bce3557b198 Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:17:45 +0200 Subject: [PATCH 02/14] Fixed python install --- .github/workflows/build-ubuntu.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 9334a7c48a..68dc16904c 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -26,10 +26,10 @@ jobs: if [ "${{ matrix.os }}" == "ubuntu-24.04" ]; then sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qt6-base-dev qt6-svg-dev libyaml-cpp-dev - sudo apt-get -y install python python-venv + sudo apt-get -y install python3 python3-venv elif [ "${{ matrix.os }}" == "ubuntu-22.04" ]; then sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qtbase5-dev libqt5opengl5-dev libqt5svg5-dev libyaml-cpp-dev - sudo apt-get -y install python python-venv + sudo apt-get -y install python3 python3-venv elif [ "${{ matrix.os }}" == "ubuntu-20.04" ]; then sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qt5-default libqt5opengl5-dev libqt5svg5-dev libyaml-cpp-dev sudo apt-get -y install python3.9 python3.9-venv From a2f37339ee7d3fc1644f3732e0b7fcd923279bcb Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:25:50 +0200 Subject: [PATCH 03/14] fixed build --- .github/workflows/build-ubuntu.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 68dc16904c..69566686ca 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -25,14 +25,17 @@ jobs: sudo apt update if [ "${{ matrix.os }}" == "ubuntu-24.04" ]; then - sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qt6-base-dev qt6-svg-dev libyaml-cpp-dev - sudo apt-get -y install python3 python3-venv + sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev libyaml-cpp-dev + sudo apt-get install qt6-base-dev qt6-svg-dev + sudo apt-get install python3 python3-venv python3-dev elif [ "${{ matrix.os }}" == "ubuntu-22.04" ]; then - sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qtbase5-dev libqt5opengl5-dev libqt5svg5-dev libyaml-cpp-dev - sudo apt-get -y install python3 python3-venv + sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev libyaml-cpp-dev + sudo apt-get install qtbase5-dev libqt5opengl5-dev libqt5svg5-dev + sudo apt-get install python3 python3-venv python3-dev elif [ "${{ matrix.os }}" == "ubuntu-20.04" ]; then - sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev qt5-default libqt5opengl5-dev libqt5svg5-dev libyaml-cpp-dev - sudo apt-get -y install python3.9 python3.9-venv + sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev libyaml-cpp-dev + sudo apt-get install qt5-default libqt5opengl5-dev libqt5svg5-dev + sudo apt-get install python3.9 python3.9-venv python3.9-dev fi - name: Set variables @@ -68,7 +71,7 @@ jobs: submodules: 'true' fetch-depth: 0 - - name: Install Python requirements + - name: Create venv for building docs shell: bash run: | mkdir ".venv_build" @@ -97,7 +100,7 @@ jobs: -DBUILD_APPS=ON \ -DBUILD_SAMPLES=ON \ -DBUILD_TIME=ON \ - -DBUILD_PY_BINDING=OFF \ + -DBUILD_PY_BINDING=ON \ -DBUILD_STANDALONE_PY_WHEEL=OFF \ -DBUILD_CSHARP_BINDING=OFF \ -DBUILD_ECAL_TESTS=ON \ From f862335db39bcb305f587f8bd4909a8bb47bac09 Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:51:11 +0200 Subject: [PATCH 04/14] Fixes and speedups --- .github/workflows/build-ubuntu.yml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 69566686ca..954d5aa987 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -62,15 +62,26 @@ jobs: tar zxf capnproto-c++-1.0.2.tar.gz cd capnproto-c++-1.0.2 ./configure - make -j + make -j$(nproc) check sudo make install - name: Checkout uses: actions/checkout@v4 with: - submodules: 'true' + submodules: 'false' fetch-depth: 0 + - name: Update Submodules (selected ones) + run: | + cd $GITHUB_WORKSPACE + git submodule init + git submodule deinit thirdparty/curl/curl + git submodule deinit thirdparty/hdf5/hdf5 + git submodule deinit thirdparty/libssh2/libssh2 + git submodule deinit thirdparty/protobuf/protobuf + git submodule deinit thirdparty/zlib/zlib + git submodule update + - name: Create venv for building docs shell: bash run: | @@ -132,7 +143,7 @@ jobs: shell: bash - name: Build Release - run: cmake --build . --config Release -- -k 0 + run: cmake --build . --parallel --config Release -- -k 0 working-directory: ${{ runner.workspace }}/_build - name: Run Tests @@ -141,7 +152,7 @@ jobs: - name: Read Project Version from CMakeCache run: | - cmake_project_version_string=$(cat "${{github.workspace}}/_build/CMakeCache.txt" | grep "^CMAKE_PROJECT_VERSION:") + cmake_project_version_string=$(cat "${{ runner.workspace }}/_build/CMakeCache.txt" | grep "^CMAKE_PROJECT_VERSION:") arr=(${cmake_project_version_string//=/ }) cmake_project_version=${arr[1]} echo "CMAKE_PROJECT_VERSION=$cmake_project_version" >> "$GITHUB_ENV" From e47dbbb84b824d12a81aa4edb73b3bb82ff4abc0 Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Wed, 24 Apr 2024 08:38:25 +0200 Subject: [PATCH 05/14] Trying further speedups --- .github/workflows/build-ubuntu.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 954d5aa987..0c8d98f465 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -62,7 +62,7 @@ jobs: tar zxf capnproto-c++-1.0.2.tar.gz cd capnproto-c++-1.0.2 ./configure - make -j$(nproc) check + make -j check sudo make install - name: Checkout @@ -143,7 +143,7 @@ jobs: shell: bash - name: Build Release - run: cmake --build . --parallel --config Release -- -k 0 + run: make -j working-directory: ${{ runner.workspace }}/_build - name: Run Tests @@ -166,7 +166,7 @@ jobs: run: | mv *.deb '${{ env.PROJECT_NAME }}_${{ env.CMAKE_PROJECT_VERSION }}-${{ env.ubuntu_codename }}_${{ env.cpu_architecture }}.deb' shell: bash - working-directory: ${{github.workspace}}/_build/_deploy/ + working-directory: ${{runner.workspace}}/_build/_deploy/ - name: Upload Debian uses: actions/upload-artifact@v4 From 2d22b385fb789fe929f1d7c4d15b984b2ec5df58 Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Wed, 24 Apr 2024 08:51:38 +0200 Subject: [PATCH 06/14] Fixed build and tried to speedup --- .github/workflows/build-ubuntu.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 0c8d98f465..30196fb7bf 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -62,7 +62,7 @@ jobs: tar zxf capnproto-c++-1.0.2.tar.gz cd capnproto-c++-1.0.2 ./configure - make -j check + make -j$(($(nproc)*2)) sudo make install - name: Checkout @@ -71,7 +71,7 @@ jobs: submodules: 'false' fetch-depth: 0 - - name: Update Submodules (selected ones) + - name: Update / download Submodules (selected ones) run: | cd $GITHUB_WORKSPACE git submodule init @@ -143,7 +143,7 @@ jobs: shell: bash - name: Build Release - run: make -j + run: cmake --build . --parallel -- -k 0 working-directory: ${{ runner.workspace }}/_build - name: Run Tests From 958394ddded740c15fdcbc7a1c4e067b7330db5c Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Wed, 24 Apr 2024 09:52:12 +0200 Subject: [PATCH 07/14] Proper upload name --- .github/workflows/build-ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 30196fb7bf..29f3298a62 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -171,5 +171,5 @@ jobs: - name: Upload Debian uses: actions/upload-artifact@v4 with: - name: ubuntu-debian + name: '${{ env.PROJECT_NAME }}_${{ env.CMAKE_PROJECT_VERSION }}-${{ env.ubuntu_codename }}_${{ env.cpu_architecture }}' path: ${{ runner.workspace }}/_build/_deploy/*.deb From 2df2e731aabf131dc6b3fa9005a06dfb299f8eea Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Wed, 24 Apr 2024 10:31:36 +0200 Subject: [PATCH 08/14] Properly get project version --- .github/workflows/build-ubuntu.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 29f3298a62..75adbb876b 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -125,7 +125,7 @@ jobs: -DECAL_THIRDPARTY_BUILD_TINYXML2=ON \ -DECAL_THIRDPARTY_BUILD_FINEFTP=ON \ -DECAL_THIRDPARTY_BUILD_CURL=OFF \ - -DECAL_THIRDPARTY_BUILD_GTEST=ON \ + -DECAL_THIRDPARTY_BUILD_GTEST=OFF \ -DECAL_THIRDPARTY_BUILD_HDF5=OFF \ -DECAL_THIRDPARTY_BUILD_RECYCLE=ON \ -DECAL_THIRDPARTY_BUILD_TCP_PUBSUB=ON \ @@ -150,13 +150,15 @@ jobs: run: ctest -V working-directory: ${{ runner.workspace }}/_build - - name: Read Project Version from CMakeCache + - name: Get Project version from git tag + shell: bash run: | - cmake_project_version_string=$(cat "${{ runner.workspace }}/_build/CMakeCache.txt" | grep "^CMAKE_PROJECT_VERSION:") - arr=(${cmake_project_version_string//=/ }) - cmake_project_version=${arr[1]} - echo "CMAKE_PROJECT_VERSION=$cmake_project_version" >> "$GITHUB_ENV" + echo "PROJECT_VERSION=$(git describe --tags --dirty)" >> "$GITHUB_ENV" + + - name: Set output binary name shell: bash + run: | + echo "BINARY_NAME=${{ env.PROJECT_NAME }}_${{ env.PROJECT_VERSION }}-${{ env.ubuntu_codename }}_${{ env.cpu_architecture }}" >> "$GITHUB_ENV" - name: CPack run: cpack -G DEB @@ -164,12 +166,12 @@ jobs: - name: Rename .deb installer run: | - mv *.deb '${{ env.PROJECT_NAME }}_${{ env.CMAKE_PROJECT_VERSION }}-${{ env.ubuntu_codename }}_${{ env.cpu_architecture }}.deb' + mv *.deb '${{ env.BINARY_NAME }}.deb' shell: bash working-directory: ${{runner.workspace}}/_build/_deploy/ - name: Upload Debian uses: actions/upload-artifact@v4 with: - name: '${{ env.PROJECT_NAME }}_${{ env.CMAKE_PROJECT_VERSION }}-${{ env.ubuntu_codename }}_${{ env.cpu_architecture }}' + name: '${{ env.BINARY_NAME }}' path: ${{ runner.workspace }}/_build/_deploy/*.deb From 9451c49ef364afa18ac288dbedab652674de6c2f Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Wed, 24 Apr 2024 10:39:29 +0200 Subject: [PATCH 09/14] hopefully fixed gtest --- .github/workflows/build-ubuntu.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 75adbb876b..8cc3d0a52b 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -27,14 +27,17 @@ jobs: if [ "${{ matrix.os }}" == "ubuntu-24.04" ]; then sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev libyaml-cpp-dev sudo apt-get install qt6-base-dev qt6-svg-dev + sudo apt-get install libgtest-dev sudo apt-get install python3 python3-venv python3-dev elif [ "${{ matrix.os }}" == "ubuntu-22.04" ]; then sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev libyaml-cpp-dev sudo apt-get install qtbase5-dev libqt5opengl5-dev libqt5svg5-dev + sudo apt-get install libgtest-dev sudo apt-get install python3 python3-venv python3-dev elif [ "${{ matrix.os }}" == "ubuntu-20.04" ]; then sudo apt-get install ninja-build doxygen graphviz libcurl4-openssl-dev libprotobuf-dev libprotoc-dev protobuf-compiler libhdf5-dev libyaml-cpp-dev sudo apt-get install qt5-default libqt5opengl5-dev libqt5svg5-dev + sudo apt-get install libgtest-dev sudo apt-get install python3.9 python3.9-venv python3.9-dev fi @@ -76,6 +79,7 @@ jobs: cd $GITHUB_WORKSPACE git submodule init git submodule deinit thirdparty/curl/curl + git submodule deinit thirdparty/gtest/googletest git submodule deinit thirdparty/hdf5/hdf5 git submodule deinit thirdparty/libssh2/libssh2 git submodule deinit thirdparty/protobuf/protobuf From 4772b4c1465990e64a55ade027c1df0b50790968 Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Wed, 24 Apr 2024 16:21:01 +0200 Subject: [PATCH 10/14] Renamed windows artifact --- .github/workflows/build-windows.yml | 135 ++++++---------------------- 1 file changed, 27 insertions(+), 108 deletions(-) diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index b9d09ac053..b9f36a7aa3 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -32,20 +32,6 @@ jobs: - name: Uninstall Chocolatey run: move "$env:PROGRAMDATA\chocolatey" "$env:PROGRAMDATA\_chocolatey" -# - name: Install Cap’n Proto -# run: | -# mkdir "${{ runner.workspace }}/capnp" -# cd "${{ runner.workspace }}/capnp" -# git clone https://github.com/sandstorm-io/capnproto.git -# cd capnproto -# git checkout release-0.9.0 -# cd c++ -# mkdir _build -# cd _build -# cmake .. -G "Visual Studio 16 2019" -A x64 -# cmake --build . --parallel --config Release -# cmake --build . --target install --config Release - - name: Checkout uses: actions/checkout@v4 with: @@ -163,91 +149,6 @@ jobs: run: cmake --build . --config Release working-directory: ${{ runner.workspace }}/_build/complete - # Create Python. - # The strang-looking double-cmake is an ugly workaround to force CMake to - # re-find Python, after we have changed the venv from the outside. The - # alternative would be to clean everything, which would cause an unnecessary - # rebuild of eCAL and HDF5 for each python Version. - - name: Build Python 3.12 Wheel - run: | - mkdir ".venv_312" - py -3.12 -m venv ".venv_312" - CALL ".venv_312\Scripts\activate.bat" - pip install wheel setuptools - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=FIRST - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=ONLY - cmake --build . --target create_python_wheel --config Release - shell: cmd - working-directory: ${{ runner.workspace }}/_build/complete - - - name: Build Python 3.11 Wheel - run: | - mkdir ".venv_311" - py -3.11 -m venv ".venv_311" - CALL ".venv_311\Scripts\activate.bat" - pip install wheel - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=FIRST - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=ONLY - cmake --build . --target create_python_wheel --config Release - shell: cmd - working-directory: ${{ runner.workspace }}/_build/complete - - - name: Build Python 3.10 Wheel - run: | - mkdir ".venv_310" - py -3.10 -m venv ".venv_310" - CALL ".venv_310\Scripts\activate.bat" - pip install wheel - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=FIRST - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=ONLY - cmake --build . --target create_python_wheel --config Release - shell: cmd - working-directory: ${{ runner.workspace }}/_build/complete - - - name: Build Python 3.9 Wheel - run: | - mkdir ".venv_39" - py -3.9 -m venv ".venv_39" - CALL ".venv_39\Scripts\activate.bat" - pip install wheel - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=FIRST - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=ONLY - cmake --build . --target create_python_wheel --config Release - shell: cmd - working-directory: ${{ runner.workspace }}/_build/complete - - - name: Build Python 3.8 Wheel - run: | - mkdir ".venv_38" - py -3.8 -m venv ".venv_38" - CALL ".venv_38\Scripts\activate.bat" - pip install wheel - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=FIRST - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=ONLY - cmake --build . --target create_python_wheel --config Release - shell: cmd - working-directory: ${{ runner.workspace }}/_build/complete - - - name: Build Python 3.7 Wheel - run: | - mkdir ".venv_37" - py -3.7 -m venv ".venv_37" - CALL ".venv_37\Scripts\activate.bat" - pip install wheel - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=FIRST - cmake %GITHUB_WORKSPACE% -G "Visual Studio 16 2019" -A x64 -T v142 -DPython_FIND_VIRTUALENV=ONLY - cmake --build . --target create_python_wheel --config Release - shell: cmd - working-directory: ${{ runner.workspace }}/_build/complete - -# - name: Build Documentation C -# run: cmake --build . --target documentation_c -# working-directory: ${{ runner.workspace }}/_build -# -# - name: Build Documentation C++ -# run: cmake --build . --target documentation_cpp -# working-directory: ${{ runner.workspace }}/_build - - name: Run Tests run: ctest -C Release -V working-directory: ${{ runner.workspace }}/_build/complete @@ -260,18 +161,29 @@ jobs: run: cpack -C Release working-directory: ${{ runner.workspace }}/_build/complete + - name: Get Project version from git tag + shell: powershell + run: | + $VERSION = git describe --tags --dirty + echo "VERSION=$VERSION" >> "$Env:GITHUB_ENV" + + - name: Set output binary name + shell: powershell + run: | + $BINARY_NAME = "ecal_${{ env.VERSION }}-win64" + echo "BINARY_NAME=$BINARY_NAME" >> "$Env:GITHUB_ENV" + + - name: Rename the setup exe + shell: powershell + run: | + Rename-Item -Path *.exe -NewName "${{ env.BINARY_NAME }}.exe" + - name: Upload Windows setup uses: actions/upload-artifact@v4 with: - name: windows-setup + name: unsigned-setup path: ${{ runner.workspace }}/_build/complete/_deploy/*.exe - - name: Upload Python Wheels - uses: actions/upload-artifact@v4 - with: - name: windows-python-wheels - path: ${{ runner.workspace }}/_build/complete/_deploy/*.whl - # -------------------------------------------------------------------------------------------------- sign-windows-installer: @@ -284,7 +196,7 @@ jobs: - name: Download Windows setup uses: actions/download-artifact@v4 with: - name: windows-setup + name: unsigned-setup path: ${{ runner.workspace }}/_build/complete/_deploy - name: Sign the installer on Eclipse CI @@ -454,9 +366,16 @@ jobs: JENKINS_JOB_TOKEN: ${{ secrets.JENKINS_TOKEN_GH_FILE }} working-directory: ${{ runner.workspace }}/_build/complete/_deploy + - name: Determine name of the installer for zip file + shell: powershell + run: + $INSTALLER_NAME = "${{ env.ASSET_NAME }}" + $INSTALLER_NAME_WITHOUT_EXE = $INSTALLER_NAME.Substring(0, $INSTALLER_NAME.Length - 4) + echo "ARTIFACT_NAME=$INSTALLER_NAME_WITHOUT_EXE" >> "$Env:GITHUB_ENV" + - name: Upload Windows setup signed on Eclipse CI if: env.IS_DOWNLOAD_AVAILABLE == 'true' uses: actions/upload-artifact@v4 with: - name: windows-setup-signed + name: ${{ env.ARTIFACT_NAME }} path: ${{ runner.workspace }}/_build/complete/_deploy/${{ env.ASSET_NAME }} From 00ecbb1713f7329e71c52f788ace3f9c187935d0 Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Wed, 24 Apr 2024 17:39:45 +0200 Subject: [PATCH 11/14] Fixed exe rename --- .github/workflows/build-windows.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index b9f36a7aa3..154d34f1b0 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -1,4 +1,4 @@ -name: Build Windows Server 2019 +name: Build Windows on: push: @@ -176,7 +176,10 @@ jobs: - name: Rename the setup exe shell: powershell run: | - Rename-Item -Path *.exe -NewName "${{ env.BINARY_NAME }}.exe" + $LS_OUT = ls *.exe + $SETUP_NAME = "$($LS_OUT.Name)" + Rename-Item -Path "$SETUP_NAME" -NewName "${{ env.BINARY_NAME }}.exe" + working-directory: ${{ runner.workspace }}/_build/complete/_deploy/ - name: Upload Windows setup uses: actions/upload-artifact@v4 From 4b657bb283bd7eab599a0a341b7c31c08fd6f050 Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Thu, 25 Apr 2024 10:41:04 +0200 Subject: [PATCH 12/14] Fixed script and verison --- .github/workflows/build-ubuntu.yml | 8 +++++++- .github/workflows/build-windows.yml | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 8cc3d0a52b..7e408f7b23 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -157,7 +157,13 @@ jobs: - name: Get Project version from git tag shell: bash run: | - echo "PROJECT_VERSION=$(git describe --tags --dirty)" >> "$GITHUB_ENV" + # Use git describe to get the tag / commit description + VERSION="$(git describe --tags --dirty)" + + # Remove the leading 'v' from the tag + VERSION="${VERSION#v}" + + echo "PROJECT_VERSION=$VERSION" >> "$GITHUB_ENV" - name: Set output binary name shell: bash diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 154d34f1b0..6538bf5bce 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -164,7 +164,12 @@ jobs: - name: Get Project version from git tag shell: powershell run: | + # Use git describe to get the tag / commit description $VERSION = git describe --tags --dirty + + #remove the leading 'v' from the tag, if it exists + $VERSION = $VERSION -replace '^v', '' + echo "VERSION=$VERSION" >> "$Env:GITHUB_ENV" - name: Set output binary name @@ -371,7 +376,7 @@ jobs: - name: Determine name of the installer for zip file shell: powershell - run: + run: | $INSTALLER_NAME = "${{ env.ASSET_NAME }}" $INSTALLER_NAME_WITHOUT_EXE = $INSTALLER_NAME.Substring(0, $INSTALLER_NAME.Length - 4) echo "ARTIFACT_NAME=$INSTALLER_NAME_WITHOUT_EXE" >> "$Env:GITHUB_ENV" From c8981e165e49a110492316d6379bdab27cceb395 Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Fri, 26 Apr 2024 09:39:00 +0200 Subject: [PATCH 13/14] Updated badges --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 888904f0ad..9b6dd17567 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # eCAL - enhanced Communication Abstraction Layer -[![Build Windows Server 2019](https://github.com/eclipse-ecal/ecal/workflows/Build%20Windows%20Server%202019/badge.svg)](https://github.com/eclipse-ecal/ecal/actions?workflow=Build+Windows+Server+2019) [![Build Ubuntu 20.04](https://github.com/eclipse-ecal/ecal/workflows/Build%20Ubuntu%2020.04/badge.svg)](https://github.com/eclipse-ecal/ecal/actions?workflow=Build+Ubuntu+20.04) [![Build Ubuntu 22.04](https://github.com/eclipse-ecal/ecal/actions/workflows/build-ubuntu-22.yml/badge.svg)](https://github.com/eclipse-ecal/ecal/actions/workflows/build-ubuntu-22.yml) [![Build macOS](https://github.com/eclipse-ecal/ecal/actions/workflows/build-macos.yml/badge.svg)](https://github.com/eclipse-ecal/ecal/actions/workflows/build-macos.yml) +[![Windows](https://github.com/eclipse-ecal/ecal/actions/workflows/build-windows.yml/badge.svg)](https://github.com/eclipse-ecal/ecal/actions/workflows/build-windows.yml) [![Ubuntu](https://github.com/eclipse-ecal/ecal/actions/workflows/build-ubuntu.yml/badge.svg)](https://github.com/eclipse-ecal/ecal/actions/workflows/build-ubuntu.yml) [![macOS](https://github.com/eclipse-ecal/ecal/actions/workflows/build-macos.yml/badge.svg)](https://github.com/eclipse-ecal/ecal/actions/workflows/build-macos.yml) [![License](https://img.shields.io/github/license/continental/ecal.svg?style=flat)](LICENSE.txt) From e2596cd98f022a675a53471d12c3f744384c79f0 Mon Sep 17 00:00:00 2001 From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com> Date: Fri, 26 Apr 2024 09:41:44 +0200 Subject: [PATCH 14/14] Disabled fail-fast --- .github/workflows/build-ubuntu.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-ubuntu.yml b/.github/workflows/build-ubuntu.yml index 7e408f7b23..c24d9f3e3e 100644 --- a/.github/workflows/build-ubuntu.yml +++ b/.github/workflows/build-ubuntu.yml @@ -8,6 +8,7 @@ jobs: build-ubuntu: strategy: + fail-fast: false matrix: os: [ubuntu-22.04, ubuntu-20.04]