Sort #2126
Workflow file for this run
This file contains hidden or 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: 🐧 Linux | |
on: | |
push: | |
pull_request: | |
schedule: | |
- cron: '0 0 * * 2' | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
linux-all: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-22.04, ubuntu-22.04-arm] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup env | |
run: | | |
ARCHNAME=$([ "${{ runner.arch }}" = "ARM64" ] && echo arm64 || echo x86_64) | |
echo "ARCHNAME=$ARCHNAME" >> $GITHUB_ENV | |
- name: Install basic libraries | |
run: sudo apt update || true; sudo apt install libheif-dev libraw-dev ffmpeg libgtk-4-dev p7zip-full -y | |
- name: Setup rust version | |
run: rustup default 1.86.0 | |
- name: Build 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 | |
echo "VERS=release" >> $GITHUB_ENV | |
cargo build --release | |
mv target/release/czkawka_cli linux_czkawka_cli_${{ env.ARCHNAME }} | |
mv target/release/czkawka_gui linux_czkawka_gui_${{ env.ARCHNAME }} | |
mv target/release/krokiet linux_krokiet_${{ env.ARCHNAME }} | |
cargo build --release --bin krokiet --no-default-features --features "winit_skia_opengl,winit_software" | |
mv target/release/krokiet linux_krokiet_skia_opengl_${{ env.ARCHNAME }} | |
cargo build --release --bin krokiet --no-default-features --features "winit_skia_vulkan,winit_software" | |
mv target/release/krokiet linux_krokiet_skia_vulkan_${{ env.ARCHNAME }} | |
cargo build --release --features "heif,libraw" | |
mv target/release/czkawka_cli linux_czkawka_cli_heif_raw_${{ env.ARCHNAME }} | |
mv target/release/czkawka_gui linux_czkawka_gui_heif_raw_${{ env.ARCHNAME }} | |
mv target/release/krokiet linux_krokiet_heif_raw_${{ env.ARCHNAME }} | |
cargo build --release --bin krokiet --no-default-features --features "winit_skia_opengl,winit_software,heif,libraw" | |
mv target/release/krokiet linux_krokiet_heif_raw_skia_opengl_${{ env.ARCHNAME }} | |
cargo build --release --bin krokiet --no-default-features --features "winit_skia_vulkan,winit_software,heif,libraw" | |
mv target/release/krokiet linux_krokiet_heif_raw_skia_vulkan_${{ env.ARCHNAME }} | |
- name: Build 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 | |
echo "VERS=debug" >> $GITHUB_ENV | |
cargo build | |
mv target/debug/czkawka_cli linux_czkawka_cli_${{ env.ARCHNAME }} | |
mv target/debug/czkawka_gui linux_czkawka_gui_${{ env.ARCHNAME }} | |
mv target/debug/krokiet linux_krokiet_${{ env.ARCHNAME }} | |
cargo build --bin krokiet --no-default-features --features "winit_skia_opengl,winit_software" | |
mv target/debug/krokiet linux_krokiet_skia_opengl_${{ env.ARCHNAME }} | |
cargo build --bin krokiet --no-default-features --features "winit_skia_vulkan,winit_software" | |
mv target/debug/krokiet linux_krokiet_skia_vulkan_${{ env.ARCHNAME }} | |
strip linux* | |
cargo build --features "heif,libraw" | |
mv target/debug/czkawka_cli linux_czkawka_cli_heif_raw_${{ env.ARCHNAME }} | |
mv target/debug/czkawka_gui linux_czkawka_gui_heif_raw_${{ env.ARCHNAME }} | |
mv target/debug/krokiet linux_krokiet_heif_raw_${{ env.ARCHNAME }} | |
cargo build --bin krokiet --no-default-features --features "winit_skia_opengl,winit_software,heif,libraw" | |
mv target/debug/krokiet linux_krokiet_heif_raw_skia_opengl_${{ env.ARCHNAME }} | |
cargo build --bin krokiet --no-default-features --features "winit_skia_vulkan,winit_software,heif,libraw" | |
mv target/debug/krokiet linux_krokiet_heif_raw_skia_vulkan_${{ env.ARCHNAME }} | |
strip linux* | |
- name: Pack with 7z | |
run: | | |
# 7z -mx=3 in rust files, takes 40% less space but is 2x slower than zip -mx=1 | |
# 7z -mx=3 is 8x faster than 7z -mx=5, but generates 20% bigger | |
# So looks that -mx=3 is the best option | |
time 7z a -t7z -mx=3 czkawka_all.7z \ | |
linux_czkawka_cli_${{ env.ARCHNAME }} \ | |
linux_czkawka_gui_${{ env.ARCHNAME }} \ | |
linux_krokiet_${{ env.ARCHNAME }} \ | |
linux_czkawka_cli_heif_raw_${{ env.ARCHNAME }} \ | |
linux_czkawka_gui_heif_raw_${{ env.ARCHNAME }} \ | |
linux_krokiet_heif_raw_${{ env.ARCHNAME }} \ | |
linux_krokiet_skia_opengl_${{ env.ARCHNAME }} \ | |
linux_krokiet_heif_raw_skia_opengl_${{ env.ARCHNAME }} \ | |
linux_krokiet_skia_vulkan_${{ env.ARCHNAME }} \ | |
linux_krokiet_heif_raw_skia_vulkan_${{ env.ARCHNAME }} | |
- name: Store | |
uses: actions/upload-artifact@v4 | |
with: | |
name: all-${{ runner.os }}-${{ runner.arch }}-${{ env.VERS }} | |
path: | | |
czkawka_all.7z | |
- name: Release | |
if: ${{ github.ref == 'refs/heads/master' }} | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: "Nightly" | |
files: | | |
linux_czkawka_cli_${{ env.ARCHNAME }} | |
linux_czkawka_gui_${{ env.ARCHNAME }} | |
linux_krokiet_${{ env.ARCHNAME }} | |
linux_czkawka_cli_heif_raw_${{ env.ARCHNAME }} | |
linux_czkawka_gui_heif_raw_${{ env.ARCHNAME }} | |
linux_krokiet_heif_raw_${{ env.ARCHNAME }} | |
linux_krokiet_skia_opengl_${{ env.ARCHNAME }} | |
linux_krokiet_heif_raw_skia_opengl_${{ env.ARCHNAME }} | |
linux_krokiet_skia_vulkan_${{ env.ARCHNAME }} | |
linux_krokiet_heif_raw_skia_vulkan_${{ env.ARCHNAME }} | |
token: ${{ secrets.PAT_REPOSITORY }} | |
### MUSL CLI and Krokiet Release and Debug | |
# GUI not works with MUSL :( | |
# https://github.com/slint-ui/slint/issues/7586 | |
# https://github.com/rust-windowing/winit/issues/1818 | |
linux-cli-musl: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install basic libraries | |
run: | | |
sudo apt update || true; sudo apt install musl-tools -y | |
- name: Setup rust version | |
run: | | |
rustup default 1.86.0 | |
rustup target add x86_64-unknown-linux-musl | |
- name: Build 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 --bin czkawka_cli --target x86_64-unknown-linux-musl | |
mv target/x86_64-unknown-linux-musl/release/czkawka_cli linux_czkawka_cli_musl | |
- name: Build 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 --bin czkawka_cli --target x86_64-unknown-linux-musl | |
mv target/x86_64-unknown-linux-musl/debug/czkawka_cli linux_czkawka_cli_musl | |
- name: Store Linux CLI | |
uses: actions/upload-artifact@v4 | |
with: | |
name: czkawka_cli-${{ runner.os }}-musl | |
path: | | |
linux_czkawka_cli_musl | |
- name: Release | |
uses: softprops/action-gh-release@v2 | |
if: ${{ github.ref == 'refs/heads/master' }} | |
with: | |
tag_name: "Nightly" | |
files: | | |
linux_czkawka_cli_musl | |
token: ${{ secrets.PAT_REPOSITORY }} | |
### Below, builds that do not produce artifacts | |
### 32 bit CLI and Krokiet Release and Debug - TODO test also gtk gui but it requires gtk4:i386 and also would be good to test libraw and heif | |
linux-all-debug-32bit: | |
if: ${{ github.ref != 'refs/heads/master' }} | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install basic libraries | |
run: | | |
sudo apt update || true | |
sudo apt install gcc-multilib -y | |
- name: Setup rust version and target | |
run: | | |
rustup default 1.86.0 | |
rustup target add i686-unknown-linux-gnu | |
- name: Build Debug for 32-bit | |
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 i686-unknown-linux-gnu --bin czkawka_cli --bin krokiet | |
mv target/i686-unknown-linux-gnu/debug/czkawka_cli linux_czkawka_cli_32bit | |
mv target/i686-unknown-linux-gnu/debug/krokiet linux_krokiet_32bit | |
- name: Store | |
uses: actions/upload-artifact@v4 | |
with: | |
name: all-32bit-${{ runner.os }}-${{ runner.arch }}-debug | |
path: | | |
linux_czkawka_cli_32bit | |
linux_krokiet_32bit | |
linux-stability: | |
if: ${{ github.ref == 'refs/heads/master' }} # Runs only in master, because it is really time consumig | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install basic libraries | |
run: sudo apt update || true; sudo apt install libgtk-4-dev libheif-dev libraw-dev -y | |
- name: Setup rust version | |
run: rustup default 1.86.0 | |
- name: Build packages | |
run: | | |
rm -rf target || true | |
cargo build --features "heif,libraw" | |
mv target/debug/czkawka_cli czkawka_cli_debug_1 | |
mv target/debug/czkawka_gui czkawka_gui_debug_1 | |
mv target/debug/krokiet krokiet_debug_1 | |
rm -rf target || true | |
cargo build --release --features "heif,libraw" | |
mv target/release/czkawka_cli czkawka_cli_release_1 | |
mv target/release/czkawka_gui czkawka_gui_release_1 | |
mv target/release/krokiet krokiet_release_1 | |
rm -rf target || true | |
cargo build --features "heif,libraw" | |
mv target/debug/czkawka_cli czkawka_cli_debug_2 | |
mv target/debug/czkawka_gui czkawka_gui_debug_2 | |
mv target/debug/krokiet krokiet_debug_2 | |
rm -rf target || true | |
cargo build --release --features "heif,libraw" | |
mv target/release/czkawka_cli czkawka_cli_release_2 | |
mv target/release/czkawka_gui czkawka_gui_release_2 | |
mv target/release/krokiet krokiet_release_2 | |
bash misc/compare_files.sh | |
linux-tests: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install basic libraries | |
run: sudo apt update || true; sudo apt install libgtk-4-dev libheif-dev libraw-dev -y | |
- name: Setup rust version | |
run: rustup default 1.86.0 | |
- name: Test | |
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 | |
xvfb-run cargo test | |
linux-regression-tests-on-minimal-rust-version: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install basic libraries | |
run: sudo apt update || true; sudo apt install libgtk-4-dev libheif-dev libraw-dev ffmpeg -y | |
- name: Setup rust version | |
run: rustup default 1.86.0 | |
- name: Build test version | |
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 --profile test --bin czkawka_cli | |
- name: Linux Regression Test | |
run: | | |
wget -q https://github.com/qarmin/czkawka/releases/download/6.0.0/TestFiles.zip | |
cd ci_tester | |
cargo build --release | |
cd .. | |
ci_tester/target/release/ci_tester target/debug/czkawka_cli | |