1
0
mirror of synced 2025-01-11 05:42:15 +01:00

git: Updated CI to latest available compilers and distros (#2003)

This commit is contained in:
Nik 2024-12-13 00:07:46 +01:00 committed by GitHub
parent 21b315b97e
commit 093310a9e5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 63 additions and 67 deletions

View File

@ -8,7 +8,7 @@ on:
jobs: jobs:
codeql: codeql:
name: 🐛 CodeQL name: 🐛 CodeQL
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
permissions: permissions:
actions: read actions: read
contents: read contents: read
@ -49,7 +49,7 @@ jobs:
set -x set -x
mkdir -p build mkdir -p build
cd build cd build
CC=gcc-12 CXX=g++-12 cmake \ CC=gcc-14 CXX=g++-14 cmake \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \ -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \ -DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \

View File

@ -255,14 +255,15 @@ jobs:
set -x set -x
mkdir -p build mkdir -p build
cd build cd build
CC=$(brew --prefix gcc@12)/bin/gcc-12 \ CC=$(brew --prefix llvm)/bin/clang \
CXX=$(brew --prefix gcc@12)/bin/g++-12 \ CXX=$(brew --prefix llvm)/bin/clang++ \
OBJC=$(brew --prefix llvm)/bin/clang \ OBJC=$(brew --prefix llvm)/bin/clang \
OBJCXX=$(brew --prefix llvm)/bin/clang++ \ OBJCXX=$(brew --prefix llvm)/bin/clang++ \
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" \ PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" \
cmake -G "Ninja" \ cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DIMHEX_GENERATE_PACKAGE=ON \ -DIMHEX_GENERATE_PACKAGE=ON \
-DIMHEX_SYSTEM_LIBRARY_PATH="$(brew --prefix llvm)/lib;$(brew --prefix llvm)/lib/unwind;$(brew --prefix llvm)/lib/c++;$(brew --prefix)/lib" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \ -DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \
@ -314,7 +315,7 @@ jobs:
path: ./*.dmg path: ./*.dmg
macos-arm64-build: macos-arm64-build:
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
name: 🍎 macOS 13 arm64 name: 🍎 macOS 13 arm64
outputs: outputs:
IMHEX_VERSION: ${{ steps.build.outputs.IMHEX_VERSION }} IMHEX_VERSION: ${{ steps.build.outputs.IMHEX_VERSION }}
@ -403,7 +404,13 @@ jobs:
cd bundle cd bundle
ln -s /Applications Applications ln -s /Applications Applications
cd .. cd ..
hdiutil create -volname "ImHex" -srcfolder bundle -ov -format UDZO imhex-${{ env.IMHEX_VERSION }}-macOS-arm64.dmg for i in $(seq 1 10); do
if hdiutil create -volname "ImHex" -srcfolder bundle -ov -format UDZO imhex-${{ env.IMHEX_VERSION }}-macOS-arm64.dmg; then
echo "Created dmg after ${i} attempts"
break
fi
sleep 10
done
- name: ⬆️ Upload DMG - name: ⬆️ Upload DMG
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@ -418,11 +425,11 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- release_num: 22.04 - release_num: "24.04"
- release_num: 24.04 - release_num: "24.10"
name: 🐧 Ubuntu ${{ matrix.release_num }} name: 🐧 Ubuntu ${{ matrix.release_num }}
runs-on: ubuntu-latest runs-on: ubuntu-24.04
container: container:
image: "ubuntu:${{ matrix.release_num }}" image: "ubuntu:${{ matrix.release_num }}"
@ -462,7 +469,7 @@ jobs:
git config --global --add safe.directory '*' git config --global --add safe.directory '*'
mkdir -p build mkdir -p build
cd build cd build
CC=gcc-12 CXX=g++-12 cmake -G "Ninja" \ CC=gcc-14 CXX=g++-14 cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DCMAKE_INSTALL_PREFIX="/usr" \ -DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \
@ -497,7 +504,7 @@ jobs:
# AppImage build # AppImage build
appimage: appimage:
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
name: ⬇️ AppImage name: ⬇️ AppImage
steps: steps:
- name: 🧰 Checkout - name: 🧰 Checkout
@ -541,7 +548,7 @@ jobs:
# ArchLinux build # ArchLinux build
archlinux-build: archlinux-build:
name: 🐧 ArchLinux name: 🐧 ArchLinux
runs-on: ubuntu-latest runs-on: ubuntu-24.04
container: container:
image: archlinux:base-devel image: archlinux:base-devel
@ -647,21 +654,21 @@ jobs:
mock_release: rawhide mock_release: rawhide
release_num: rawhide release_num: rawhide
mock_config: fedora-rawhide mock_config: fedora-rawhide
- name: Fedora
mock_release: f41
release_num: 41
mock_config: fedora-41
- name: Fedora - name: Fedora
mock_release: f40 mock_release: f40
release_num: 40 release_num: 40
mock_config: fedora-40 mock_config: fedora-40
- name: Fedora
mock_release: f39
release_num: 39
mock_config: fedora-39
- name: RHEL-AlmaLinux - name: RHEL-AlmaLinux
mock_release: epel9 mock_release: epel9
release_num: 9 release_num: 9
mock_config: "alma+epel-9" mock_config: "alma+epel-9"
name: 🐧 ${{ matrix.name }} ${{ matrix.release_num }} name: 🐧 ${{ matrix.name }} ${{ matrix.release_num }}
runs-on: ubuntu-latest runs-on: ubuntu-24.04
container: container:
image: "almalinux:9" image: "almalinux:9"

View File

@ -20,7 +20,7 @@ permissions:
jobs: jobs:
build: build:
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
name: 🌍 WebAssembly name: 🌍 WebAssembly
steps: steps:
- name: 🧰 Checkout - name: 🧰 Checkout

View File

@ -15,7 +15,7 @@ on:
jobs: jobs:
tests: tests:
name: 🧪 Unit Tests name: 🧪 Unit Tests
runs-on: ubuntu-22.04 runs-on: ubuntu-24.04
permissions: permissions:
actions: read actions: read
contents: read contents: read
@ -38,14 +38,13 @@ jobs:
run: | run: |
sudo apt update sudo apt update
sudo bash dist/get_deps_debian.sh sudo bash dist/get_deps_debian.sh
sudo apt install gcovr -y
- name: 🛠️ Build - name: 🛠️ Build
run: | run: |
set -x set -x
mkdir -p build mkdir -p build
cd build cd build
CC=gcc-12 CXX=g++-12 cmake \ CC=gcc-14 CXX=g++-14 cmake \
-DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_BUILD_TYPE=Debug \
-DIMHEX_ENABLE_UNIT_TESTS=ON \ -DIMHEX_ENABLE_UNIT_TESTS=ON \
-DIMHEX_ENABLE_PLUGIN_TESTS=ON \ -DIMHEX_ENABLE_PLUGIN_TESTS=ON \
@ -70,7 +69,11 @@ jobs:
# Generate report from all gcov .gcda files # Generate report from all gcov .gcda files
- name: 🧪 Generate coverage report - name: 🧪 Generate coverage report
run: | run: |
gcovr --gcov-executable /usr/bin/gcov-12 -r . build --xml coverage_report.xml --verbose sudo apt install python3-pip python3-venv
python3 -m venv venv
. venv/bin/activate
pip3 install gcovr
gcovr --gcov-executable /usr/bin/gcov-14 -e ".+yara_rules.+" -r . build --xml coverage_report.xml --verbose
- name: Upload coverage reports to Codecov - name: Upload coverage reports to Codecov
env: env:

View File

@ -240,6 +240,7 @@ macro(createPackage)
if (APPLE) if (APPLE)
if (IMHEX_GENERATE_PACKAGE) if (IMHEX_GENERATE_PACKAGE)
set(EXTRA_BUNDLE_LIBRARY_PATHS ${EXTRA_BUNDLE_LIBRARY_PATHS} "${IMHEX_SYSTEM_LIBRARY_PATH}")
include(PostprocessBundle) include(PostprocessBundle)
set_target_properties(libimhex PROPERTIES SOVERSION ${IMHEX_VERSION}) set_target_properties(libimhex PROPERTIES SOVERSION ${IMHEX_VERSION})

View File

@ -14,17 +14,17 @@ AppDir:
- amd64 - amd64
allow_unauthenticated: true allow_unauthenticated: true
sources: sources:
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy main restricted - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ oracular main restricted
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy-updates main restricted - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ oracular-updates main restricted
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy universe - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ oracular universe
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy-updates universe - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ oracular-updates universe
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy multiverse - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ oracular multiverse
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy-updates multiverse - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ oracular-updates multiverse
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy-backports main restricted - sourceline: deb http://us.archive.ubuntu.com/ubuntu/ oracular-backports main restricted
universe multiverse universe multiverse
- sourceline: deb http://security.ubuntu.com/ubuntu jammy-security main restricted - sourceline: deb http://security.ubuntu.com/ubuntu oracular-security main restricted
- sourceline: deb http://security.ubuntu.com/ubuntu jammy-security universe - sourceline: deb http://security.ubuntu.com/ubuntu oracular-security universe
- sourceline: deb http://security.ubuntu.com/ubuntu jammy-security multiverse - sourceline: deb http://security.ubuntu.com/ubuntu oracular-security multiverse
include: include:
- librsvg2-common - librsvg2-common
- libbz2-1.0:amd64 - libbz2-1.0:amd64

1
dist/Brewfile vendored
View File

@ -6,7 +6,6 @@ brew "freetype2"
brew "libmagic" brew "libmagic"
brew "pkg-config" brew "pkg-config"
brew "curl" brew "curl"
brew "gcc@12"
brew "llvm" brew "llvm"
brew "glfw" brew "glfw"
brew "ninja" brew "ninja"

View File

@ -1,4 +1,4 @@
FROM ubuntu:22.04 as build FROM ubuntu:24.10 as build
# Used to invalidate layer cache but not mount cache # Used to invalidate layer cache but not mount cache
# See https://github.com/moby/moby/issues/41715#issuecomment-733976493 # See https://github.com/moby/moby/issues/41715#issuecomment-733976493
@ -14,24 +14,13 @@ apt update
# general deps # general deps
apt install -y ccache git wget apt install -y ccache git wget
# appimage tools deps # appimage tools deps
apt install -y python3-pip python3-setuptools desktop-file-utils libgdk-pixbuf2.0-dev fuse ninja-build apt install -y python3-pip python3-venv python3-setuptools desktop-file-utils libgdk-pixbuf2.0-dev fuse ninja-build
apt install -y squashfs-tools zsync apt install -y squashfs-tools zsync
# imhex deps # imhex deps
/tmp/get_deps_debian.sh /tmp/get_deps_debian.sh
EOF EOF
RUN --mount=type=cache,target=/cache <<EOF
# Download appimage-builder
set -xe
mkdir -p /cache/bin
wget -nc https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /cache/bin/appimagetool || true
chmod +x /cache/bin/appimagetool
pip3 install git+https://github.com/AppImageCrafters/appimage-builder@f38699e
EOF
ENV PATH="/cache/bin/:${PATH}" ENV PATH="/cache/bin/:${PATH}"
# Copy Imhex source # Copy Imhex source
@ -47,7 +36,7 @@ RUN <<EOF
# Prepare ImHex build # Prepare ImHex build
set -xe set -xe
CC=gcc-12 CXX=g++-12 cmake -G "Ninja" \ CC=gcc-14 CXX=g++-14 cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DCMAKE_INSTALL_PREFIX="/usr" \ -DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \
@ -71,9 +60,18 @@ ccache -s
EOF EOF
RUN <<EOF RUN <<EOF
# Package ImHex as AppImage # Download appimage-builder
set -xe set -xe
mkdir -p /cache/bin
wget -nc https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /cache/bin/appimagetool || true
chmod +x /cache/bin/appimagetool
python3 -m venv venv
. venv/bin/activate
pip3 install git+https://github.com/AppImageCrafters/appimage-builder@f38699e
# Package ImHex as AppImage
export VERSION=$(cat /imhex/VERSION) export VERSION=$(cat /imhex/VERSION)
appimage-builder --recipe /imhex/dist/AppImageBuilder.yml appimage-builder --recipe /imhex/dist/AppImageBuilder.yml
EOF EOF

View File

@ -8,8 +8,8 @@ fi
apt install -y \ apt install -y \
build-essential \ build-essential \
gcc-12 \ gcc-14 \
g++-12 \ g++-14 \
lld \ lld \
${PKGCONF:-} \ ${PKGCONF:-} \
cmake \ cmake \

View File

@ -3,8 +3,8 @@
zypper install \ zypper install \
cmake \ cmake \
ninja \ ninja \
gcc12 \ gcc14 \
gcc12-c++ \ gcc14-c++ \
fontconfig-devel \ fontconfig-devel \
freetype2-devel \ freetype2-devel \
libcurl-devel \ libcurl-devel \

View File

@ -118,7 +118,7 @@ if [ "$CUSTOM_GLFW" ]; then
cd /mnt/glfw cd /mnt/glfw
mkdir build mkdir build
cd build cd build
CC=o64-gcc CXX=o64-g++ cmake -G "Ninja" \ CC=o64-clang CXX=o64-clang++ cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \ -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DBUILD_SHARED_LIBS=ON \ -DBUILD_SHARED_LIBS=ON \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \

View File

@ -68,19 +68,6 @@ RUN --mount=type=cache,target=/cache <<EOF
ccache -s ccache -s
EOF EOF
# Not needed, because we don't use gcc for cross-compiling anymore
# ## Install dependencies for gcc-13
# RUN apt install -y gcc g++ zlib1g-dev libmpc-dev libmpfr-dev libgmp-dev
# ## Build cross-compiler gcc-13
# RUN --mount=type=cache,target=/cache <<EOF
# set -xe
# ccache -zs
# cd /osxcross
# UNATTENDED=1 CC=/usr/lib/ccache/gcc CXX=/usr/lib/ccache/g++ GCC_VERSION=13.2.0 ./build_gcc.sh
# ccache -s
# EOF
ARG DELETE_SDK=1 ARG DELETE_SDK=1
RUN <<EOF RUN <<EOF

View File

@ -6,6 +6,7 @@ if (NOT USE_SYSTEM_CAPSTONE)
set(CAPSTONE_BUILD_STATIC_RUNTIME OFF CACHE BOOL "Disable shared library building") set(CAPSTONE_BUILD_STATIC_RUNTIME OFF CACHE BOOL "Disable shared library building")
set(CAPSTONE_BUILD_SHARED OFF CACHE BOOL "Disable shared library building") set(CAPSTONE_BUILD_SHARED OFF CACHE BOOL "Disable shared library building")
set(CAPSTONE_BUILD_TESTS OFF CACHE BOOL "Disable tests") set(CAPSTONE_BUILD_TESTS OFF CACHE BOOL "Disable tests")
set(CAPSTONE_BUILD_MACOS_THIN ON CACHE BOOL "Enable thin builds of capstone for macOS" FORCE)
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/capstone ${CMAKE_CURRENT_BINARY_DIR}/capstone EXCLUDE_FROM_ALL) add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/capstone ${CMAKE_CURRENT_BINARY_DIR}/capstone EXCLUDE_FROM_ALL)
target_compile_options(capstone PRIVATE -Wno-unused-function) target_compile_options(capstone PRIVATE -Wno-unused-function)
set(CAPSTONE_LIBRARY "capstone") set(CAPSTONE_LIBRARY "capstone")

View File

@ -19,7 +19,7 @@ if (CoreClrEmbed_FOUND)
BUILD_RPATH ${CoreClrEmbed_FOLDER} BUILD_RPATH ${CoreClrEmbed_FOLDER}
INSTALL_RPATH ${CoreClrEmbed_FOLDER}) INSTALL_RPATH ${CoreClrEmbed_FOLDER})
set(EXTRA_BUNDLE_LIBRARY_PATHS "${CoreClrEmbed_FOLDER}" PARENT_SCOPE) set(EXTRA_BUNDLE_LIBRARY_PATHS ${EXTRA_BUNDLE_LIBRARY_PATHS} "${CoreClrEmbed_FOLDER}" PARENT_SCOPE)
if (IMHEX_BUNDLE_DOTNET) if (IMHEX_BUNDLE_DOTNET)
install(FILES ${CoreClrEmbed_SHARED_LIBRARIES} DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES ${CoreClrEmbed_SHARED_LIBRARIES} DESTINATION ${CMAKE_INSTALL_LIBDIR})