improv: Added multiline search/replace and fixed various crashes. #6139
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- 'master' | |
- 'releases/**' | |
- 'tests/**' | |
pull_request: | |
workflow_dispatch: | |
env: | |
BUILD_TYPE: RelWithDebInfo | |
jobs: | |
# Windows build | |
win: | |
runs-on: windows-2022 | |
name: 🪟 Windows MINGW64 | |
defaults: | |
run: | |
shell: msys2 {0} | |
env: | |
CCACHE_DIR: "${{ github.workspace }}/.ccache" | |
steps: | |
- name: 🧰 Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: 📜 Setup ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
id: cache-ccache | |
with: | |
key: ${{ runner.os }}-ccache-${{ github.run_id }} | |
restore-keys: ${{ runner.os }}-ccache | |
max-size: 1G | |
- name: 🟦 Install msys2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: mingw64 | |
- name: ⬇️ Install dependencies | |
run: | | |
set -x | |
dist/get_deps_msys2.sh | |
- name: ⬇️ Install .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: '8.0.100' | |
- name: 📜 Set version variable | |
run: | | |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV | |
# Windows cmake build | |
- name: 🛠️ Configure CMake | |
run: | | |
set -x | |
mkdir -p build | |
cd build | |
cmake -G "Ninja" \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-DCMAKE_INSTALL_PREFIX="$PWD/install" \ | |
-DIMHEX_GENERATE_PACKAGE=ON \ | |
-DIMHEX_USE_DEFAULT_BUILD_SETTINGS=ON \ | |
-DIMHEX_PATTERNS_PULL_MASTER=ON \ | |
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \ | |
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \ | |
-DUSE_SYSTEM_CAPSTONE=ON \ | |
-DIMHEX_GENERATE_PDBS=ON \ | |
-DIMHEX_REPLACE_DWARF_WITH_PDB=ON \ | |
-DDOTNET_EXECUTABLE="C:/Program Files/dotnet/dotnet.exe" \ | |
.. | |
- name: 🛠️ Build | |
run: | | |
cd build | |
ninja install | |
cpack | |
mv ImHex-*.msi ../imhex-${{ env.IMHEX_VERSION }}-Windows-x86_64.msi | |
echo "ImHex checks for the existence of this file to determine if it is running in portable mode. You should not delete this file" > $PWD/install/PORTABLE | |
- name: ⬆️ Upload Windows Installer | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: Windows Installer x86_64 | |
path: | | |
imhex-*.msi | |
- name: ⬆️ Upload Portable ZIP | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: Windows Portable x86_64 | |
path: | | |
build/install/* | |
- name: ⬇️ Download Mesa3D for NoGPU version | |
shell: bash | |
run: | | |
set -x | |
echo "NoGPU version Powered by Mesa 3D : https://fdossena.com/?p=mesa%2Findex.frag" > build/install/MESA.md | |
curl https://downloads.fdossena.com/geth.php?r=mesa64-latest -L -o mesa.7z | |
7z e mesa.7z | |
mv opengl32.dll build/install | |
- name: ⬆️ Upload NoGPU Portable ZIP | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: Windows Portable NoGPU x86_64 | |
path: | | |
build/install/* | |
win-plugin-template-test: | |
runs-on: windows-2022 | |
name: 🧪 Plugin Template Test | |
defaults: | |
run: | |
shell: msys2 {0} | |
needs: win | |
env: | |
IMHEX_SDK_PATH: "${{ github.workspace }}/out/sdk" | |
steps: | |
- name: 🧰 Checkout ImHex | |
uses: actions/checkout@v4 | |
with: | |
path: imhex | |
- name: 🟦 Install msys2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: mingw64 | |
- name: ⬇️ Install dependencies | |
run: | | |
set -x | |
imhex/dist/get_deps_msys2.sh | |
- name: 🧰 Checkout ImHex-Plugin-Template | |
uses: actions/checkout@v4 | |
with: | |
repository: WerWolv/ImHex-Plugin-Template | |
submodules: recursive | |
path: template | |
- name: ⬇️ Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: Windows Portable x86_64 | |
path: out | |
- name: 🛠️ Build | |
run: | | |
set -x | |
cd template | |
mkdir -p build | |
cd build | |
cmake -G "Ninja" \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-DIMHEX_USE_DEFAULT_BUILD_SETTINGS=ON \ | |
-DUSE_SYSTEM_CAPSTONE=ON \ | |
.. | |
ninja | |
# MacOS build | |
macos: | |
runs-on: macos-12 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- suffix: "-NoGPU" | |
custom_glfw: true | |
- suffix: "" | |
custom_glfw: false | |
name: 🍎 macOS 12.0${{ matrix.suffix }} | |
steps: | |
- name: 🧰 Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: 📜 Set version variable | |
run: | | |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV | |
- name: 📜 Setup ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ runner.os }}${{ matrix.suffix }}-ccache-${{ github.run_id }} | |
restore-keys: ${{ runner.os }}${{ matrix.suffix }}-ccache | |
max-size: 1G | |
- name: ⬇️ Install dependencies | |
run: | | |
brew reinstall python 2>&1 >/dev/null || true | |
brew link --overwrite python 2>&1 >/dev/null || true | |
brew bundle --no-lock --file dist/Brewfile 2>&1 >/dev/null || true | |
rm -rf /usr/local/Cellar/capstone | |
- name: ⬇️ Install classic glfw | |
if: ${{! matrix.custom_glfw }} | |
run: | | |
brew install glfw 2>&1 >/dev/null || true | |
- name: ⬇️ Install .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: '8.0.100' | |
- name: 🧰 Checkout glfw | |
if: ${{ matrix.custom_glfw }} | |
uses: actions/checkout@v4 | |
with: | |
repository: glfw/glfw | |
path: glfw | |
# GLFW custom build (to allow software rendering) | |
- name: ⬇️ Patch and install custom glfw | |
if: ${{ matrix.custom_glfw }} | |
run: | | |
set -x | |
cd glfw | |
git apply ../dist/macOS/0001-glfw-SW.patch | |
mkdir build | |
cd build | |
cmake -G "Ninja" \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-DBUILD_SHARED_LIBS=ON \ | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \ | |
.. | |
ninja install | |
# MacOS cmake build | |
- name: 🛠️ Configure CMake | |
run: | | |
set -x | |
mkdir -p build | |
cd build | |
CC=$(brew --prefix gcc@12)/bin/gcc-12 \ | |
CXX=$(brew --prefix gcc@12)/bin/g++-12 \ | |
OBJC=$(brew --prefix llvm)/bin/clang \ | |
OBJCXX=$(brew --prefix llvm)/bin/clang++ \ | |
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" \ | |
cmake -G "Ninja" \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-DIMHEX_GENERATE_PACKAGE=ON \ | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_INSTALL_PREFIX="./install" \ | |
-DIMHEX_PATTERNS_PULL_MASTER=ON \ | |
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \ | |
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \ | |
.. | |
- name: 🛠️ Build | |
run: cd build && ninja install | |
- name: ✒️ Fix Signature | |
run: | | |
set -x | |
cd build/install | |
mv imhex.app ImHex.app | |
codesign --remove-signature ImHex.app | |
codesign --force --deep --sign - ImHex.app | |
- name: 📁 Fix permissions | |
run: | | |
set -x | |
cd build/install | |
chmod -R 755 ImHex.app/ | |
- name: 🔫 Kill XProtect | |
run: | | |
# See https://github.com/actions/runner-images/issues/7522 | |
echo Killing XProtect...; sudo pkill -9 XProtect >/dev/null || true; | |
echo Waiting for XProtect process...; while pgrep XProtect; do sleep 3; done; | |
- name: 📦 Create DMG | |
run: | | |
set -x | |
mkdir bundle | |
mv build/install/ImHex.app bundle | |
cd bundle | |
ln -s /Applications Applications | |
cd .. | |
hdiutil create -volname "ImHex" -srcfolder bundle -ov -format UDZO imhex-${{ env.IMHEX_VERSION }}-macOS${{ matrix.suffix }}-x86_64.dmg | |
- name: ⬆️ Upload DMG | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: macOS DMG${{ matrix.suffix }} x86_64 | |
path: ./*.dmg | |
macos-arm64-build: | |
runs-on: ubuntu-22.04 | |
name: 🍎 macOS 12.1 arm64 | |
outputs: | |
IMHEX_VERSION: ${{ steps.build.outputs.IMHEX_VERSION }} | |
steps: | |
- name: 🧰 Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: 📁 Restore docker /cache | |
uses: actions/cache@v4 | |
with: | |
path: cache | |
key: build-macos-arm64-cache | |
- name: 🐳 Inject /cache into docker | |
uses: reproducible-containers/buildkit-cache-dance@v2 | |
with: | |
cache-source: cache | |
cache-target: /cache | |
- name: 🛠️ Build using docker | |
id: build | |
run: | | |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_OUTPUT | |
docker buildx build . -f dist/macOS/arm64.Dockerfile --progress=plain --build-arg 'JOBS=4' --build-arg "BUILD_TYPE=$(BUILD_TYPE)" --build-context imhex=$(pwd) --output out | |
- name: ⬆️ Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: macos_arm64_intermediate | |
path: out/ | |
# See https://github.com/actions/cache/issues/342#issuecomment-1711054115 | |
- name: 🗑️ Delete old cache | |
continue-on-error: true | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
gh extension install actions/gh-actions-cache | |
gh actions-cache delete "build-macos-arm64-cache" --confirm || true | |
macos-arm64-package: | |
runs-on: macos-12 | |
name: 🍎 macOS 12.1 arm64 Packaging | |
needs: macos-arm64-build | |
env: | |
IMHEX_VERSION: ${{ needs.macos-arm64-build.outputs.IMHEX_VERSION }} | |
steps: | |
- name: ⬇️ Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: macos_arm64_intermediate | |
path: out | |
- name: 🗑️ Delete artifact | |
uses: geekyeggo/delete-artifact@v5 | |
with: | |
name: macos_arm64_intermediate | |
- name: ✒️ Fix Signature | |
run: | | |
set -x | |
cd out | |
mv imhex.app ImHex.app | |
codesign --remove-signature ImHex.app | |
codesign --force --deep --sign - ImHex.app | |
- name: 📁 Fix permissions | |
run: | | |
set -x | |
cd out | |
chmod -R 755 ImHex.app/ | |
- name: 🔫 Kill XProtect | |
run: | | |
# See https://github.com/actions/runner-images/issues/7522 | |
echo Killing XProtect...; sudo pkill -9 XProtect >/dev/null || true; | |
echo Waiting for XProtect process...; while pgrep XProtect; do sleep 3; done; | |
- name: 📦 Create DMG | |
run: | | |
set -x | |
mkdir bundle | |
mv out/ImHex.app bundle | |
cd bundle | |
ln -s /Applications Applications | |
cd .. | |
hdiutil create -volname "ImHex" -srcfolder bundle -ov -format UDZO imhex-${{ env.IMHEX_VERSION }}-macOS-arm64.dmg | |
- name: ⬆️ Upload DMG | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: macOS DMG arm64 | |
path: ./*.dmg | |
# Ubuntu build | |
ubuntu: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- release_num: 22.04 | |
- release_num: 24.04 | |
name: 🐧 Ubuntu ${{ matrix.release_num }} | |
runs-on: ubuntu-latest | |
container: | |
image: "ubuntu:${{ matrix.release_num }}" | |
options: --privileged | |
steps: | |
- name: ⬇️ Install setup dependencies | |
run: apt update && apt install -y git curl | |
- name: 🧰 Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: 📜 Setup ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: Ubuntu-${{ matrix.release_num }}-ccache-${{ github.run_id }} | |
restore-keys: Ubuntu-${{ matrix.release_num }}-ccache | |
max-size: 1G | |
- name: ⬇️ Install dependencies | |
run: | | |
apt update | |
bash dist/get_deps_debian.sh | |
- name: ⬇️ Install .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: '8.0.100' | |
# Ubuntu cmake build | |
- name: 🛠️ Configure CMake | |
shell: bash | |
run: | | |
set -x | |
git config --global --add safe.directory '*' | |
mkdir -p build | |
cd build | |
CC=gcc-12 CXX=g++-12 cmake -G "Ninja" \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-DCMAKE_INSTALL_PREFIX="/usr" \ | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DIMHEX_PATTERNS_PULL_MASTER=ON \ | |
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \ | |
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \ | |
-DIMHEX_ENABLE_LTO=ON \ | |
-DIMHEX_USE_GTK_FILE_PICKER=ON \ | |
-DDOTNET_EXECUTABLE="dotnet" \ | |
.. | |
- name: 🛠️ Build | |
run: cd build && DESTDIR=DebDir ninja install | |
- name: 📜 Set version variable | |
run: | | |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV | |
- name: 📦 Bundle DEB | |
run: | | |
cp -r build/DEBIAN build/DebDir | |
dpkg-deb -Zgzip --build build/DebDir | |
mv build/DebDir.deb imhex-${{ env.IMHEX_VERSION }}-Ubuntu-${{ matrix.release_num }}-x86_64.deb | |
- name: ⬆️ Upload DEB | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: Ubuntu ${{ matrix.release_num }} DEB x86_64 | |
path: '*.deb' | |
# AppImage build | |
appimage: | |
runs-on: ubuntu-22.04 | |
name: ⬇️ AppImage | |
steps: | |
- name: 🧰 Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: 📁 Restore docker /cache | |
uses: actions/cache@v4 | |
with: | |
path: cache | |
key: appimage-ccache-${{ github.run_id }} | |
restore-keys: appimage-cache | |
- name: 🐳 Inject /cache into docker | |
uses: reproducible-containers/buildkit-cache-dance@v2 | |
with: | |
cache-source: cache | |
cache-target: /cache | |
- name: 🛠️ Build using docker | |
run: | | |
docker buildx build . -f dist/appimage/Dockerfile --progress=plain --build-arg "BUILD_TYPE=$BUILD_TYPE" \ | |
--build-arg "GIT_COMMIT_HASH=$GITHUB_SHA" --build-arg "GIT_BRANCH=${GITHUB_REF##*/}" --output out | |
- name: ⬆️ Upload AppImage | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: Linux AppImage x86_64 | |
path: 'out/*.AppImage' | |
- name: ⬆️ Upload AppImage zsync | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: Linux AppImage zsync x86_64 | |
path: 'out/*.AppImage.zsync' | |
# ArchLinux build | |
archlinux-build: | |
name: 🐧 ArchLinux | |
runs-on: ubuntu-latest | |
container: | |
image: archlinux:base-devel | |
steps: | |
- name: ⬇️ Update all packages | |
run: | | |
pacman -Syyu --noconfirm | |
- name: ⬇️ Install setup dependencies | |
run: | | |
pacman -Syu git ccache --noconfirm | |
- name: 🧰 Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: ⬇️ Install ImHex dependencies | |
run: | | |
dist/get_deps_archlinux.sh --noconfirm | |
- name: ⬇️ Install .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: '8.0.100' | |
- name: 📜 Setup ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: archlinux-ccache-${{ github.run_id }} | |
restore-keys: archlinux-ccache | |
max-size: 1G | |
# ArchLinux cmake build | |
- name: 🛠️ Configure CMake | |
run: | | |
set -x | |
mkdir -p build | |
cd build | |
CC=gcc CXX=g++ cmake -G "Ninja" \ | |
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ | |
-DCMAKE_INSTALL_PREFIX="/usr" \ | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DUSE_SYSTEM_FMT=ON \ | |
-DUSE_SYSTEM_YARA=ON \ | |
-DUSE_SYSTEM_NLOHMANN_JSON=ON \ | |
-DUSE_SYSTEM_CAPSTONE=OFF \ | |
-DIMHEX_PATTERNS_PULL_MASTER=ON \ | |
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \ | |
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \ | |
-DIMHEX_ENABLE_LTO=ON \ | |
-DIMHEX_USE_GTK_FILE_PICKER=ON \ | |
.. | |
- name: 🛠️ Build | |
run: cd build && DESTDIR=installDir ninja install | |
- name: 📜 Set version variable | |
run: | | |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV | |
- name: ✒️ Prepare PKGBUILD | |
run: | | |
cp dist/Arch/PKGBUILD build | |
sed -i 's/%version%/${{ env.IMHEX_VERSION }}/g' build/PKGBUILD | |
# makepkg doesn't want to run as root, so I had to chmod 777 all over | |
- name: 📦 Package ArchLinux .pkg.tar.zst | |
run: | | |
set -x | |
cd build | |
# the name is a small trick to make makepkg recognize it as the source | |
# else, it would try to download the file from the release | |
tar -cvf imhex-${{ env.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst -C installDir . | |
chmod -R 777 . | |
sudo -u nobody makepkg | |
# Replace the old file | |
rm imhex-${{ env.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst | |
rm *imhex-bin-debug* # rm debug package which is created for some reason | |
mv *.pkg.tar.zst imhex-${{ env.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst | |
- name: ⬆️ Upload imhex-archlinux.pkg.tar.zst | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: ArchLinux .pkg.tar.zst x86_64 | |
path: | | |
build/imhex-${{ env.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst | |
# RPM distro builds | |
rpm-build: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: Fedora | |
mock_release: rawhide | |
release_num: rawhide | |
mock_config: fedora-rawhide | |
- name: Fedora | |
mock_release: f40 | |
release_num: 40 | |
mock_config: fedora-40 | |
- name: Fedora | |
mock_release: f39 | |
release_num: 39 | |
mock_config: fedora-39 | |
- name: RHEL-AlmaLinux | |
mock_release: epel9 | |
release_num: 9 | |
mock_config: "alma+epel-9" | |
name: 🐧 ${{ matrix.name }} ${{ matrix.release_num }} | |
runs-on: ubuntu-latest | |
container: | |
image: "fedora:latest" | |
options: --privileged | |
steps: | |
- name: ⬇️ Install git-core | |
run: dnf install --disablerepo="*" --enablerepo="fedora" git-core -y | |
- name: 🧰 Checkout | |
uses: actions/checkout@v4 | |
with: | |
path: ImHex | |
submodules: recursive | |
- name: 📜 Setup DNF Cache | |
uses: actions/cache@v4 | |
with: | |
path: /var/cache/dnf | |
key: ${{ matrix.mock_release }}-dnf-${{ github.run_id }} | |
restore-keys: | | |
${{ matrix.mock_release }}-dnf- | |
- name: ⬇️ Update all packages and install dependencies | |
run: | | |
set -x | |
dnf upgrade --disablerepo="*" --enablerepo="fedora,updates" -y | |
dnf install --disablerepo="*" --enablerepo="fedora,updates" -y \ | |
fedpkg \ | |
ccache | |
- name: ⬇️ Install .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: '8.0.100' | |
- name: 📜 Setup ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ matrix.mock_release }}-rpm-${{ github.run_id }} | |
restore-keys: ${{ matrix.mock_release }}-rpm | |
max-size: 1G | |
- name: 📜 Set version variable | |
run: | | |
echo "IMHEX_VERSION=`cat ImHex/VERSION`" >> $GITHUB_ENV | |
- name: 🗜️ Create tarball from sources with dependencies | |
run: tar --exclude-vcs -czf $GITHUB_WORKSPACE/imhex-$IMHEX_VERSION.tar.gz ImHex | |
- name: ✒️ Modify spec file | |
run: | | |
sed -i \ | |
-e 's/Version: VERSION$/Version: ${{ env.IMHEX_VERSION }}/g' \ | |
-e 's/IMHEX_OFFLINE_BUILD=ON/IMHEX_OFFLINE_BUILD=OFF/g' \ | |
-e '/IMHEX_OFFLINE_BUILD=OFF/a -D IMHEX_PATTERNS_PULL_MASTER=ON \\' \ | |
-e '/BuildRequires: cmake/a BuildRequires: git-core' \ | |
-e '/%files/a %{_datadir}/%{name}/' \ | |
$GITHUB_WORKSPACE/ImHex/dist/rpm/imhex.spec | |
- name: 📜 Fix ccache on EL9 | |
if: matrix.mock_release == 'epel9' | |
run: sed -i '/\. \/opt\/rh\/gcc-toolset-12\/enable/a PATH=/usr/lib64/ccache:$PATH' $GITHUB_WORKSPACE/ImHex/dist/rpm/imhex.spec | |
- name: 🟩 Copy spec file to build root | |
run: mv $GITHUB_WORKSPACE/ImHex/dist/rpm/imhex.spec $GITHUB_WORKSPACE/imhex.spec | |
- name: 📜 Enable ccache for mock | |
run: | | |
cat <<EOT > $GITHUB_WORKSPACE/mock.cfg | |
include('${{ matrix.mock_config }}-x86_64.cfg') | |
config_opts['plugin_conf']['ccache_enable'] = True | |
config_opts['plugin_conf']['ccache_opts']['max_cache_size'] = '1G' | |
config_opts['plugin_conf']['ccache_opts']['compress'] = True | |
config_opts['plugin_conf']['ccache_opts']['dir'] = "$GITHUB_WORKSPACE/.ccache" | |
EOT | |
# Fedora cmake build (in imhex.spec) | |
- name: 📦 Build RPM | |
run: | | |
fedpkg --path $GITHUB_WORKSPACE --release ${{ matrix.mock_release }} mockbuild --enable-network -N --root $GITHUB_WORKSPACE/mock.cfg extra_args -- -v | |
- name: 🟩 Move and rename finished RPM | |
run: | | |
mv $GITHUB_WORKSPACE/results_imhex/${{ env.IMHEX_VERSION }}/*/imhex-${{ env.IMHEX_VERSION }}-0.*.x86_64.rpm \ | |
$GITHUB_WORKSPACE/imhex-${{ env.IMHEX_VERSION }}-${{ matrix.name }}-${{ matrix.release_num }}-x86_64.rpm | |
- name: ⬆️ Upload RPM | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: ${{ matrix.name }} ${{ matrix.release_num }} RPM x86_64 | |
path: | | |
imhex-${{ env.IMHEX_VERSION }}-${{ matrix.name }}-${{ matrix.release_num }}-x86_64.rpm |