Merge branch 'main' into macos_desktop

This commit is contained in:
Yannick Mauray 2024-06-28 13:50:31 +02:00
commit 7257157557
25 changed files with 276 additions and 114 deletions

View File

@ -13,20 +13,23 @@ on:
# https://github.blog/changelog/2024-06-03-actions-arm-based-linux-and-windows-runners-are-now-in-public-beta/
jobs:
build-linux-x64:
test-build-linux-x64:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
- name: "Checkout 🥡"
uses: actions/checkout@v4
- name: "Install Flutter 🦋"
uses: subosito/flutter-action@v2
with:
channel: stable
architecture: x64
flutter-version-file: pubspec.yaml
- name: Install system dependencies 📦️
run: sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-0 libgtk-3-dev libblkid1 liblzma5
- name: "Install dependencies 💾"
run: |
sudo apt-get -y install clang cmake ninja-build pkg-config libgtk-3-0 libgtk-3-dev libblkid1 liblzma5
- name: Install Flutter dependencies 🦋
run: flutter pub get
- name: Enable Linux build 🐧
- name: Enable Linux Desktop 🐧
run: flutter config --enable-linux-desktop
- name: Build artifacts 🏗️
run: flutter build linux --release
@ -39,15 +42,77 @@ jobs:
path: build/linux/x64/release/bundle
overwrite: true
build-with-nix:
test-build-ppa-x64:
runs-on: ubuntu-22.04
steps:
- name: "Checkout 🥡"
uses: actions/checkout@v4
- name: "Install Flutter 🦋"
uses: subosito/flutter-action@v2
with:
channel: stable
architecture: x64
flutter-version-file: pubspec.yaml
- name: "Install dependencies 💾"
run: |
sudo apt-get -y install clang cmake ninja-build pkg-config libgtk-3-0 libgtk-3-dev libblkid1 liblzma5
sudo apt-get -y install debhelper-compat distro-info dput devscripts rsync
- name: Install Flutter dependencies 🦋
run: flutter pub get
- name: Enable Linux Desktop 🐧
run: flutter config --enable-linux-desktop
- name: Build artifacts 🏗️
run: flutter build linux --release
- name: "Import gpg key 🔑"
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }}
- name: "Upload to PPA ⤴️"
env:
DEBEMAIL: ${{ secrets.DEBEMAIL }}
DEBFULLNAME: ${{ secrets.DEBFULLNAME }}
run: |
# Version variables
DEB_VER=$(grep "^version" pubspec.yaml | cut -d' ' -f2 | sed 's/+/-/')
TAR_VER=$(grep "^version" pubspec.yaml | cut -d' ' -f2 | sed 's/+.*//')
STAMP=$(date +%y%j.%H%M)
# Create a "fake" orig.tar.xz
mkdir -p ubuntu/build
cp -a build/linux/x64/release/bundle/* ubuntu/build/
cp -a assets/resources/quickgui.desktop ubuntu/build/
for SIZE in 16 32 48 64 128 256 512; do
mkdir -p ubuntu/build/icons/hicolor/${SIZE}x${SIZE}/apps/
cp -av assets/resources/quickgui_${SIZE}.png ubuntu/build/icons/hicolor/${SIZE}x${SIZE}/apps/quickgui.png
done
tar cvf "ubuntu/quickgui_${TAR_VER}.orig.tar" --directory ubuntu/build .
xz -vv -fz "ubuntu/quickgui_${TAR_VER}.orig.tar"
# Make a debian "source" package
mkdir -p ubuntu/build/debian
cp -a linux/packaging/debian/* ubuntu/build/debian/
sed -i 's/Architecture: any/Architecture: amd64/g' ubuntu/build/debian/control
cd ubuntu/build
for CODENAME in $(distro-info --supported); do
rm debian/changelog
dch --package quickgui --newversion="${DEB_VER}~${CODENAME}${STAMP}" --distribution=${CODENAME} "New upstream release." --create
dpkg-buildpackage -d -S -sa
#dput ppa:flexiondotorg/rubbish ../quickgui_${DEB_VER}~${CODENAME}${STAMP}_source.changes
done
- name: Show artifacts 👀
run: tree ubuntu/
test-build-nix-x64:
runs-on: ubuntu-22.04
permissions:
id-token: "write"
contents: "read"
steps:
- uses: "actions/checkout@v4"
- uses: "DeterminateSystems/nix-installer-action@v12"
- uses: "DeterminateSystems/magic-nix-cache-action@v7"
- name: "Checkout 🥡"
uses: "actions/checkout@v4"
- name: "Install Nix ❄️"
uses: "DeterminateSystems/nix-installer-action@v12"
- name: "Enable Magic Nix Cache 🪄"
uses: "DeterminateSystems/magic-nix-cache-action@v7"
- name: "Build with Nix ❄️"
run: |
nix build .#quickgui

View File

@ -1,5 +1,9 @@
name: Publish Quickgui 🏷️
# To release a new version:
# - Make sure pubspec.yaml version: has been revved and is in the format "X.Y.Z+n"
# - Create a git tag with the format "X.Y.Z" and push it
# - The build and publish will run automatically if the git tag matches the
# pubspec.yaml version without the +n suffix
on:
push:
tags:
@ -27,9 +31,9 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
APP_VERSION=$(grep "^version" pubspec.yaml | cut -d' ' -f2)
APP_VERSION=$(grep "^version" pubspec.yaml | cut -d' ' -f2 | sed 's/+.*//')
GIT_VERSION=$(git describe --tags | cut -d'-' -f1)
echo "App version: ${REL_VERSION}"
echo "App version: ${APP_VERSION}"
echo "Git version: ${GIT_VERSION}"
if [ "${APP_VERSION}" != "${GIT_VERSION}" ]; then
echo "ERROR! Version mismatch.";
@ -41,31 +45,34 @@ jobs:
name: "Build Linux x64 🏗️"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
- name: "Checkout 🥡"
uses: actions/checkout@v4
- name: "Install Flutter 🦋"
uses: subosito/flutter-action@v2
with:
channel: stable
architecture: x64
flutter-version-file: pubspec.yaml
- name: Install system dependencies 📦️
run: sudo apt-get install -y clang cmake libblkid1 liblzma5 libgtk-3-0 libgtk-3-dev ninja-build pkg-config
run: |
sudo apt-get -y install clang cmake libblkid1 liblzma5 libgtk-3-0 libgtk-3-dev ninja-build pkg-config
- name: Install Flutter dependencies 🦋
run: flutter pub get
- name: Activate flutter_distributor 🚀
run: dart pub global activate flutter_distributor
- name: Build AppImage 🐧
run: |
sudo apt-get install -y libfuse-dev locate
sudo apt-get -y install libfuse-dev locate
wget -q "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" -O /usr/local/bin/appimagetool
chmod +x /usr/local/bin/appimagetool
flutter_distributor package --platform=linux --targets=appimage
- name: Build .deb 🍥
run: |
sudo apt-get install -y dpkg
sudo apt-get -y install dpkg
flutter_distributor package --platform=linux --targets=deb
- name: Build .rpm 🎩
run: |
sudo apt-get install -y patchelf rpm
sudo apt-get -y install patchelf rpm
flutter_distributor package --platform=linux --targets=rpm
- name: Build .zip 🤐
run: flutter_distributor package --platform=linux --targets=zip
@ -110,3 +117,63 @@ jobs:
visibility: "public"
name: "quickemu-project/quickgui"
tag: "${{ inputs.tag }}"
publish-ppa-x64:
needs: [version-check]
runs-on: ubuntu-22.04
steps:
- name: "Checkout 🥡"
uses: actions/checkout@v4
- name: "Install Flutter 🦋"
uses: subosito/flutter-action@v2
with:
channel: stable
architecture: x64
flutter-version-file: pubspec.yaml
- name: "Install dependencies 💾"
run: |
sudo apt-get -y install clang cmake ninja-build pkg-config libgtk-3-0 libgtk-3-dev libblkid1 liblzma5
sudo apt-get -y install debhelper-compat distro-info dput devscripts rsync
- name: Install Flutter dependencies 🦋
run: flutter pub get
- name: Enable Linux Desktop 🐧
run: flutter config --enable-linux-desktop
- name: Build artifacts 🏗️
run: flutter build linux --release
- name: "Import gpg key 🔑"
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }}
- name: "Upload to PPA ⤴️"
env:
DEBEMAIL: ${{ secrets.DEBEMAIL }}
DEBFULLNAME: ${{ secrets.DEBFULLNAME }}
run: |
# Version variables
DEB_VER=$(grep "^version" pubspec.yaml | cut -d' ' -f2 | sed 's/+/-/')
TAR_VER=$(grep "^version" pubspec.yaml | cut -d' ' -f2 | sed 's/+.*//')
STAMP=$(date +%y%j.%H%M)
# Create a "fake" orig.tar.xz
mkdir -p ubuntu/build
cp -a build/linux/x64/release/bundle/* ubuntu/build/
cp -a assets/resources/quickgui.desktop ubuntu/build/
for SIZE in 16 32 48 64 128 256 512; do
mkdir -p ubuntu/build/icons/hicolor/${SIZE}x${SIZE}/apps/
cp -av assets/resources/quickgui_${SIZE}.png ubuntu/build/icons/hicolor/${SIZE}x${SIZE}/apps/quickgui.png
done
tar cvf "ubuntu/quickgui_${TAR_VER}.orig.tar" --directory ubuntu/build .
xz -vv -fz "ubuntu/quickgui_${TAR_VER}.orig.tar"
# Make a debian "source" package
mkdir -p ubuntu/build/debian
cp -a linux/packaging/debian/* ubuntu/build/debian/
sed -i 's/Architecture: any/Architecture: amd64/g' ubuntu/build/debian/control
cd ubuntu/build
for CODENAME in $(distro-info --supported); do
rm debian/changelog
dch --package quickgui --newversion="${DEB_VER}~${CODENAME}${STAMP}" --distribution=${CODENAME} "New upstream release." --create
dpkg-buildpackage -d -S -sa
dput ppa:flexiondotorg/quickemu ../quickgui_${DEB_VER}~${CODENAME}${STAMP}_source.changes
done
- name: Show artifacts 👀
run: tree ubuntu/

View File

@ -1,63 +0,0 @@
SHELL := /usr/bin/env bash
VERSION := $(shell cat pubspec.yaml | grep "^version: " | cut -c 10- | sed 's/+/\-/')
SHORT_VERSION := $(shell xx="$(VERSION)"; arrVersion=($${xx//-/ }); echo $${arrVersion[0]};)
BUILD_ROOT := ../build-package
BASE_NAME := quickgui_$(SHORT_VERSION)
BUILD_DIR := $(BUILD_ROOT)/$(BASE_NAME)
BIN_TAR := $(BUILD_ROOT)/$(BASE_NAME).tar
ORIG_TAR := $(BASE_NAME).orig.tar
SRC_TAR := $(BUILD_ROOT)/$(BASE_NAME)-src.tar
FLUTTER := /opt/flutter/bin/flutter
version:
@echo VERSION is $(VERSION)
@echo SHORT_VERSION is $(SHORT_VERSION)
@echo BUILD_ROOT is $(BUILD_ROOT)
@echo type "make bin" to create binary package
@echo type "make ppa" to upload to launchpad
spawn:
echo "#! /bin/env bash" > /home/yannick/machines/focal/home/yannick/build.sh
echo "" >> /home/yannick/machines/focal/home/yannick/build.sh
echo "cd /opt/flutter-projects/quickgui" >> /home/yannick/machines/focal/home/yannick/build.sh
echo "make bin" >> /home/yannick/machines/focal/home/yannick/build.sh
chmod +x /home/yannick/machines/focal/home/yannick/build.sh
sudo systemd-nspawn -D /home/yannick/machines/focal --resolv-conf=off --bind-ro=/home/yannick/machines/resolv.conf:/etc/resolv.conf --bind=/opt/flutter:/opt/flutter --bind=/opt/flutter-projects:/opt/flutter-projects -u yannick bash /home/yannick/build.sh
distclean:
$(FLUTTER) clean
rm -rf $(BUILD_ROOT)/*
quickgui: distclean
$(FLUTTER) pub get
$(FLUTTER) build linux --release
bin: quickgui
mkdir -p $(BUILD_DIR)
cp -a build/linux/x64/release/bundle/* $(BUILD_DIR)
cp -a assets/resources $(BUILD_DIR)
tar -C $(BUILD_ROOT) -c -v --exclude "quickemu-icons/*.png" -f $(BIN_TAR) $(BASE_NAME)
xz -z $(BIN_TAR)
ppa: version
cp $(BIN_TAR).xz /mnt/data/dev/debianpackages/quickgui.deb/$(ORIG_TAR).xz
cd /mnt/data/dev/debianpackages/quickgui.deb/quickgui ; \
dch -v $(VERSION) "New changelog message" ; \
vi debian/changelog ; \
for dist in focal jammy kinetic lunar; do \
sed -i "1 s/^\(.*\)) UNRELEASED;\(.*\)\$$/\1~xxx1.0) xxx;\2/g" debian/changelog ; \
sed -i "1 s/~.*1\.0) .*;\(.*\)\$$/~$${dist}1.0) $$dist;\1/g" debian/changelog ; \
dpkg-buildpackage -d -S -sa ; \
dput ppa:yannick-mauray/quickgui ../quickgui_$(VERSION)~$${dist}1.0_source.changes ; \
done
download: version
for dist in focal jammy kinetic; do \
aria2c https://launchpad.net/~yannick-mauray/+archive/ubuntu/quickgui/+files/quickgui_$(VERSION)~$${dist}1.0_amd64.deb; \
done
src:
mkdir -p $(BUILD_ROOT)
tar -C .. -c -v -f $(SRC_TAR) --exclude .git --transform 's/^quickgui/$(BASE_NAME)/' quickgui
rm ${SRC_TAR}.xz
xz -z $(SRC_TAR)

View File

@ -4,7 +4,7 @@
Quickgui
</h1>
<p align="center">A Flutter frontend for <kbd>quickget</kbd> and <a href="https://github.com/quickemu-project/quickemu">quickemu</a>.</p>
<p align="center">An elegant virtual machine manager for the desktop</p>
<div align="center"><img src="assets/github/screenshot1.png" alt="Quickgui screenshot"></div>
This project is discussed mainly on [![Discord](https://img.shields.io/discord/712850672223125565?color=87a556&label=WimpysWorld%20Discord&logo=discord&logoColor=ffffff&style=flat-square)](https://discord.gg/sNmz3uw) server
@ -13,7 +13,7 @@ This project is discussed mainly on [![Discord](https://img.shields.io/discord/7
### quickemu
For this tool to work, you need to have `quickget`, from the `quickemu`
For this tool to work, you need to have `quickget`, from the `quickemu`
package, in your current `path`.
Go to the `quickemu` [github page](https://github.com/quickemu-project/quickemu)
for more information about installing the tool.
@ -29,7 +29,7 @@ sudo add-apt-repository ppa:yannick-mauray/quickgui
sudo apt update
```
Then, install the package:
Then, install the package:
```
sudo apt install quickgui
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,9 +1,9 @@
[Desktop Entry]
Version=1.0
Name=quickgui
Comment=A Flutter frontend for quickemu
Exec=/usr/bin/quickgui
Name=Quickgui
Comment=An elegant virtual machine manager for the desktop
Exec=quickgui
Terminal=false
Type=Application
Icon=quickgui_512.png
Categories=System;
Icon=quickgui
Categories=Development;System;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 931 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,5 +1,6 @@
appId: com.github.quickemu-project.quickgui
display_name: Quickgui
appId: com.github.quickemu-project.quickgui
generic_name: An elegant virtual machine manager for the desktop
icon: assets/images/logo_pink.png
keywords:
@ -11,12 +12,9 @@ keywords:
- macOS
- Windows
generic_name: Desktop frontend for Quickget and Quickemu
categories:
- System
- Development
- Emulator
startup_notify: true

View File

@ -1,22 +1,24 @@
display_name: Quickgui
package_name: quickgui
generic_name: An elegant virtual machine manager for the desktop
icon: assets/images/logo_pink.png
maintainer:
name: Mark Johnson
email: mark@barrenfrozenwasteland.com
name: Martin Wimpress
email: code@wimpress.io
co_authors:
- name: Martin Wimpress
email: code@wimpress.io
- name: Mark Johnson
email: mark@barrenfrozenwasteland.com
- name: Yannick Mauray
email: yannick.mauray@gmail.com
priority: optional
section: x11
installed_size: 16777216
essential: false
icon: assets/images/logo_pink.png
dependencies:
- zenity
recommended_dependencies:
- quickemu
priority: optional
section: x11
installed_size: 16777216
essential: false
keywords:
- QEMU
@ -27,12 +29,9 @@ keywords:
- macOS
- Windows
generic_name: Desktop frontend for Quickget and Quickemu
categories:
- System
- Development
- Emulator
startup_notify: true

View File

@ -0,0 +1,5 @@
quickgui (1.2.9-1) unstable; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Fri, 25 Feb 2022 08:27:45 +0100

View File

@ -0,0 +1,27 @@
Source: quickgui
Section: utils
Priority: optional
Maintainer: Martin Wimpress <code@wimpress.io>
Build-Depends:
debhelper-compat (= 12),
Standards-Version: 4.5.1
Homepage: https://github.com/quickemu-project/quickgui
Vcs-Browser: https://github.com/quickemu-project/quickgui
Vcs-Git: https://github.com/quickemu-project/quickgui.git
Rules-Requires-Root: no
Package: quickgui
Architecture: any
Depends:
zenity,
${misc:Depends},
${shlibs:Depends},
Recommends:
quickemu,
Description: An elegant virtual machine manager for the desktop
An elegant desktop application to quickly create an run optimised virtual
machines using Quickget and Quickemu.
.
Nearly 1000 operating systems supported including Windows, macOS, BSDs, and
100s of Linux distros. All with automated download and configuration.
.

View File

@ -0,0 +1,45 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: quickgui
Upstream-Contact: Martin Wimpress <code@wimpress.io>
Source: https://github.com/quickemu-project/quickgui
Files: *
Copyright: 2021 - 2024 Yannick Mauray <yannick.mauray@gmail.com>
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# If you want to use GPL v2 or later for the /debian/* files use
# the following clauses, or change it to suit. Delete these two lines
Files: debian/*
Copyright: 2021 - 2024 Martin Wimpress <code@wimpress.io>
License: GPL-2+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>
.
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

View File

@ -0,0 +1,5 @@
quickgui usr/share/quickgui
data/ usr/share/quickgui
lib/ usr/share/quickgui
icons/ usr/share
quickgui.desktop usr/share/applications

View File

@ -0,0 +1 @@
/usr/share/quickgui/quickgui /usr/bin/quickgui

9
linux/packaging/debian/rules Executable file
View File

@ -0,0 +1,9 @@
#!/usr/bin/make -f
export DH_VERBOSE = 1
%:
dh $@
override_dh_usrlocal:
override_dh_shlibdeps:

View File

@ -0,0 +1 @@
3.0 (quilt)

View File

@ -0,0 +1,4 @@
lib/libapp.so
lib/libflutter_linux_gtk.so
lib/liburl_launcher_linux_plugin.so
lib/libwindow_size_plugin.so

View File

@ -1,13 +1,15 @@
display_name: Quickgui
group: Application/Emulator
vendor: Quickemu Project
summary: An elegant virtual machine manager for the desktop
icon: assets/images/logo_pink.png
packager: Martin Wimpress
packagerEmail: code@wimpress.io
license: MIT
url: https://github.com/quickemu-project/quickgui
icon: assets/images/logo_pink.png
vendor: Quickemu Project
requires:
- zenity
group: Application/Emulator
license: MIT
url: https://github.com/quickemu-project/quickgui
keywords:
- QEMU
@ -18,12 +20,9 @@ keywords:
- macOS
- Windows
summary: Desktop frontend for Quickget and Quickemu
categories:
- System
- Development
- Emulator
startup_notify: true