Skip to content

🏁 Windows

🏁 Windows #3017

Workflow file for this run

name: 🏁 Windows
on:
push:
pull_request:
schedule:
- cron: '0 0 * * 2'
env:
CARGO_TERM_COLOR: always
jobs:
krokiet-compiled-on-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt update || true;sudo apt install -y mingw-w64 mingw-w64-x86-64-dev
- name: Setup rust version
run: |
rustup default 1.86.0
rustup target add x86_64-pc-windows-gnu
- name: Compile Krokiet Release
if: ${{ github.ref == 'refs/heads/master' }}
run: |
sed -i 's/#lto = /lto = /g' Cargo.toml
sed -i 's/#codegen-units /codegen-units /g' Cargo.toml
cargo build --release --target x86_64-pc-windows-gnu --bin krokiet
mv target/x86_64-pc-windows-gnu/release/krokiet.exe windows_krokiet_on_linux.exe
- name: Compile Krokiet Debug
if: ${{ github.ref != 'refs/heads/master' }}
run: |
sed -i 's/^\(\[profile\.dev\.package.*\)/#\1/' Cargo.toml
sed -i 's|^opt-level = 3 # OPT PACKAGES|#opt-level = 3 # OPT PACKAGES|' Cargo.toml
cargo build --target x86_64-pc-windows-gnu --bin krokiet
mv target/x86_64-pc-windows-gnu/debug/krokiet.exe windows_krokiet_on_linux.exe
- name: Pack with 7z
run: |
time 7z a -t7z -mx=3 czkawka_all.7z \
windows_krokiet_on_linux.exe
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: krokiet-windows-on-linux-${{ github.sha }}
path: |
czkawka_all.7z
if-no-files-found: error
- name: Release
uses: softprops/action-gh-release@v2
if: ${{ github.ref == 'refs/heads/master' }}
with:
tag_name: "Nightly"
files: |
windows_krokiet_on_linux.exe
token: ${{ secrets.PAT_REPOSITORY }}
# Skia not provides support for gnu toolchain, which is easy to cross-compile - https://github.com/rust-skia/rust-skia/issues/345
# So need to compile krokiet on msvc Windows
krokiet-compiled-on-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup rust version
run: |
rustup default 1.86.0
- name: Compile Krokiet Release
if: ${{ github.ref == 'refs/heads/master' }}
run: |
# Replace '#lto = ' with 'lto = ' in Cargo.toml
powershell -Command "(Get-Content Cargo.toml) -replace '#lto = ', 'lto = ' | Set-Content Cargo.toml"
# Replace '#codegen-units ' with 'codegen-units ' in Cargo.toml
powershell -Command "(Get-Content Cargo.toml) -replace '#codegen-units ', 'codegen-units ' | Set-Content Cargo.toml"
cargo build --release --bin krokiet --no-default-features --features "winit_skia_opengl,winit_software"
mv target/release/krokiet.exe windows_krokiet_on_windows_skia_opengl.exe
cargo build --release --bin krokiet --no-default-features --features "winit_skia_vulkan,winit_software"
mv target/release/krokiet.exe windows_krokiet_on_windows_skia_vulkan.exe
- name: Compile Krokiet Debug
if: ${{ github.ref != 'refs/heads/master' }}
run: |
# Comment out '[profile.dev.package.*' lines
powershell -Command "(Get-Content Cargo.toml) -replace '^\[profile\.dev\.package.*', { '#' + \$_ } | Set-Content Cargo.toml"
# Comment out 'opt-level = 3 # OPT PACKAGES'
powershell -Command "(Get-Content Cargo.toml) -replace '^opt-level = 3 # OPT PACKAGES', '#opt-level = 3 # OPT PACKAGES' | Set-Content Cargo.toml"
cargo build --bin krokiet --no-default-features --features "winit_skia_opengl,winit_software"
mv target/debug/krokiet.exe windows_krokiet_on_windows_skia_opengl.exe
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: krokiet-windows-on-windows-${{ github.sha }}
path: |
windows_krokiet_on_windows_skia_opengl.exe
windows_krokiet_on_windows_skia_vulkan.exe
if-no-files-found: error
- name: Release
uses: softprops/action-gh-release@v2
if: ${{ github.ref == 'refs/heads/master' }}
with:
tag_name: "Nightly"
files: |
windows_krokiet_on_windows_skia_opengl.exe
windows_krokiet_on_windows_skia_vulkan.exe
token: ${{ secrets.PAT_REPOSITORY }}
container_4_12:
runs-on: ubuntu-latest
container:
image: ghcr.io/mglolenstine/gtk4-cross:gtk-4.12
steps:
- uses: actions/checkout@v4
- name: Install additional dependencies
# gio is for the build script
run: |
dnf install curl wget2 unzip mingw64-bzip2.noarch mingw64-poppler mingw64-poppler-glib mingw32-python3 rust-gio-devel adwaita-icon-theme -y && dnf clean all -y
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
rustup default 1.86.0
rustup target add x86_64-pc-windows-gnu
- name: Cross compile for Windows - Release
if: ${{ github.ref == 'refs/heads/master' }}
run: |
source "$HOME/.cargo/env"
#!/bin/bash
set -euo pipefail
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig:$MINGW_PREFIX/lib/pkgconfig/:/usr/x86_64-w64-mingw32/lib/pkgconfig/
cargo build --target=x86_64-pc-windows-gnu --release --locked
mkdir -p package
cp target/x86_64-pc-windows-gnu/release/czkawka_gui.exe package/
cp target/x86_64-pc-windows-gnu/release/czkawka_cli.exe package/
- name: Cross compile for Windows - Debug
if: ${{ github.ref != 'refs/heads/master' }}
run: |
source "$HOME/.cargo/env"
#!/bin/bash
set -euo pipefail
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig:$MINGW_PREFIX/lib/pkgconfig/:/usr/x86_64-w64-mingw32/lib/pkgconfig/
cargo build --target=x86_64-pc-windows-gnu --locked
mkdir -p package
cp target/x86_64-pc-windows-gnu/debug/czkawka_gui.exe package/
cp target/x86_64-pc-windows-gnu/debug/czkawka_cli.exe package/
- name: Package
run: |
#!/bin/bash
set -euo pipefail
cp -t package $(pds -vv -f package/*.exe)
# Add gdbus which is recommended on Windows (why?)
cp $MINGW_PREFIX/bin/gdbus.exe package
# Handle the glib schema compilation as well
glib-compile-schemas $MINGW_PREFIX/share/glib-2.0/schemas/
mkdir -p package/share/glib-2.0/schemas/
cp -T $MINGW_PREFIX/share/glib-2.0/schemas/gschemas.compiled package/share/glib-2.0/schemas/gschemas.compiled
# Pixbuf stuff, in order to get SVGs (scalable icons) to load
mkdir -p package/lib/gdk-pixbuf-2.0
cp -rT $MINGW_PREFIX/lib/gdk-pixbuf-2.0 package/lib/gdk-pixbuf-2.0
cp -f -t package $(pds -vv -f $MINGW_PREFIX/lib/gdk-pixbuf-2.0/2.10.0/loaders/*)
find package -iname "*.dll" -or -iname "*.exe" -type f -exec mingw-strip {} +
cd package/share
wget2 https://github.com/qarmin/czkawka/files/10832192/gtk4_theme.zip
unzip gtk4_theme.zip
rm gtk4_theme.zip
cd ../..
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: czkawka-windows-${{ github.sha }}-4.12
path: |
./package
if-no-files-found: error
- name: Prepare files to release
run: |
cd package
zip -r ../windows_czkawka_gui_gtk_412.zip .
cd ..
- name: Release
uses: softprops/action-gh-release@v2
if: ${{ github.ref == 'refs/heads/master' }}
with:
tag_name: "Nightly"
files: |
windows_czkawka_gui_gtk_412.zip
token: ${{ secrets.PAT_REPOSITORY }}
container_4_6:
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/master' }}
container:
image: ghcr.io/piegamesde/gtk4-cross:gtk-4.6
steps:
- uses: actions/checkout@v4
- name: Install additional dependencies
# gio is for the build script
run: |
dnf install curl wget2 unzip mingw64-bzip2.noarch mingw64-poppler mingw64-poppler-glib mingw32-python3 rust-gio-devel adwaita-icon-theme -y && dnf clean all -y
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
rustup default 1.86.0
rustup target add x86_64-pc-windows-gnu
- name: Cross compile for Windows - Release
if: ${{ github.ref == 'refs/heads/master' }}
run: |
source "$HOME/.cargo/env"
#!/bin/bash
set -euo pipefail
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig:$MINGW_PREFIX/lib/pkgconfig/:/usr/x86_64-w64-mingw32/lib/pkgconfig/
cargo build --target=x86_64-pc-windows-gnu --release --locked
mkdir -p package
cp target/x86_64-pc-windows-gnu/release/czkawka_gui.exe package/
cp target/x86_64-pc-windows-gnu/release/czkawka_cli.exe package/
- name: Cross compile for Windows - Debug
if: ${{ github.ref != 'refs/heads/master' }}
run: |
source "$HOME/.cargo/env"
#!/bin/bash
set -euo pipefail
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig:$MINGW_PREFIX/lib/pkgconfig/:/usr/x86_64-w64-mingw32/lib/pkgconfig/
cargo build --target=x86_64-pc-windows-gnu --locked
mkdir -p package
cp target/x86_64-pc-windows-gnu/debug/czkawka_gui.exe package/
cp target/x86_64-pc-windows-gnu/debug/czkawka_cli.exe package/
- name: Package
run: |
#!/bin/bash
set -euo pipefail
cp -t package $(pds -vv -f package/*.exe)
# Add gdbus which is recommended on Windows (why?)
cp $MINGW_PREFIX/bin/gdbus.exe package
# Handle the glib schema compilation as well
glib-compile-schemas $MINGW_PREFIX/share/glib-2.0/schemas/
mkdir -p package/share/glib-2.0/schemas/
cp -T $MINGW_PREFIX/share/glib-2.0/schemas/gschemas.compiled package/share/glib-2.0/schemas/gschemas.compiled
# Pixbuf stuff, in order to get SVGs (scalable icons) to load
mkdir -p package/lib/gdk-pixbuf-2.0
cp -rT $MINGW_PREFIX/lib/gdk-pixbuf-2.0 package/lib/gdk-pixbuf-2.0
cp -f -t package $(pds -vv -f $MINGW_PREFIX/lib/gdk-pixbuf-2.0/2.10.0/loaders/*)
find package -iname "*.dll" -or -iname "*.exe" -type f -exec mingw-strip {} +
cd package/share
wget2 https://github.com/qarmin/czkawka/files/10832192/gtk4_theme.zip
unzip gtk4_theme.zip
rm gtk4_theme.zip
cd ../..
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: czkawka-windows-${{ github.sha }}-4.6
path: |
./package
if-no-files-found: error
- name: Prepare files to release
run: |
cd package
zip -r ../windows_czkawka_gui_gtk_46.zip .
cd ..
- name: Release
uses: softprops/action-gh-release@v2
if: ${{ github.ref == 'refs/heads/master' }}
with:
tag_name: "Nightly"
files: |
windows_czkawka_gui_gtk_46.zip
token: ${{ secrets.PAT_REPOSITORY }}