1
0
Fork 0
mirror of synced 2024-05-12 16:32:43 +12:00

Gtk 4.8 on Windows and console build (#920)

* Gtk 4.8 on Windows and console build

* Update windows.yml

Ci new

* 4.8
This commit is contained in:
Rafał Mikrut 2023-02-26 11:50:54 +01:00 committed by GitHub
parent 699da09a54
commit 1c76d3426c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 74 additions and 12 deletions

View file

@ -12,7 +12,7 @@ jobs:
container: container:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
container: container:
image: ghcr.io/piegamesde/gtk4-cross:gtk-4.6 image: ghcr.io/piegamesde/gtk4-cross:gtk-4.8
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- name: Install additional dependencies - name: Install additional dependencies
@ -60,7 +60,7 @@ jobs:
find package -iname "*.dll" -or -iname "*.exe" -type f -exec mingw-strip {} + find package -iname "*.dll" -or -iname "*.exe" -type f -exec mingw-strip {} +
cd package/share cd package/share
wget2 https://github.com/qarmin/czkawka/files/8880216/gtk4_theme.zip wget2 https://github.com/qarmin/czkawka/files/10832192/gtk4_theme.zip
unzip gtk4_theme.zip unzip gtk4_theme.zip
rm gtk4_theme.zip rm gtk4_theme.zip
cd ../.. cd ../..
@ -70,4 +70,70 @@ jobs:
name: czkawka-windows-${{ github.sha }} name: czkawka-windows-${{ github.sha }}
path: | path: |
./package ./package
if-no-files-found: error if-no-files-found: error
# Provide option to log things to windows CLI
container_cli:
runs-on: ubuntu-22.04
container:
image: ghcr.io/piegamesde/gtk4-cross:gtk-4.8
steps:
- uses: actions/checkout@v1
- name: Install additional dependencies
# gio is for the build script
run: dnf install wget2 unzip mingw64-bzip2.noarch mingw64-poppler mingw64-poppler-glib mingw32-python3 rust-gio-devel adwaita-icon-theme -y && dnf clean all -y
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: x86_64-pc-windows-gnu
- name: Cache ~/.cargo
uses: actions/cache@v1
with:
path: ~/.cargo
key: windows-dotcargo
- name: Cache cargo build
uses: actions/cache@v1
with:
path: target
key: windows-build-target
- name: Show console window on windows
run: sed -i 's|\#\!\[windows_subsystem|//#![windows_subsystem|' czkawka_gui/src/main.rs
- name: Cross compile for Windows
run: |
#!/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: 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@v3
with:
name: czkawka-windows-${{ github.sha }}-console
path: |
./package
if-no-files-found: error

View file

@ -48,7 +48,7 @@ pub fn connect_selection_of_directories(gui_data: &GuiData) {
file_dialog_include_exclude_folder_selection.set_title(&flg!("exclude_folders_dialog_title")); file_dialog_include_exclude_folder_selection.set_title(&flg!("exclude_folders_dialog_title"));
}); });
} }
// Conect // Connect
{ {
let notebook_upper = gui_data.upper_notebook.notebook_upper.clone(); let notebook_upper = gui_data.upper_notebook.notebook_upper.clone();
let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone(); let tree_view_included_directories = gui_data.upper_notebook.tree_view_included_directories.clone();

View file

@ -8,6 +8,7 @@ FFmpeg is not included here because it is not needed to build - it is dynamicall
Support for heif images is optional and require to install libheif library. Support for heif images is optional and require to install libheif library.
New versions of GTK fixes some bugs, so e.g. middle button selection will work only with GTK >=4.8.
| Program | Min | What for | | Program | Min | What for |
|---------|--------|--------------------------------------------------------------------------------------| |---------|--------|--------------------------------------------------------------------------------------|
@ -33,19 +34,14 @@ You need to install Rust via Homebrew, GTK Libraries and optionally heif library
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install rustup brew install rustup
rustup-init rustup-init
brew install gtk4 adwaita-icon-theme librsvg libheif brew install gtk4 adwaita-icon-theme librsvg libheif webp-pixbuf-loader
``` ```
### Windows ### Windows
*Will be available in the future* Compiling Czkawka on Windows is possible, but due using GTK is very hard.
For Linux-to-Windows cross-building instruction look at the CI. In CI we use cross compilation which simplify a lot of things, so for now there is no instruction how to compile native binaries on Windows.
<!-- First you need to install Visual C++ components from Visual Studio installer - https://visualstudio.microsoft.com/downloads/
Next install Rust from site https://rustup.rs/
After that the latest GTK 4 runtime must be installed from(not available yet for GTK 4) https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases
-->
### Docker ### Docker