Compare commits
5 Commits
v0.1.9
...
debian-tes
| Author | SHA1 | Date | |
|---|---|---|---|
|
de229401a7
|
|||
|
6f82068864
|
|||
|
d4672ecb0e
|
|||
|
|
087ac8eda2 | ||
|
|
0a9acaf5da |
@@ -1,4 +1,4 @@
|
||||
name: Nightly Build - AppImage, Arch, Fedora
|
||||
name: Nightly Build - AppImage, Debian, Arch, Fedora
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
@@ -8,11 +8,37 @@ env:
|
||||
PACKAGE: "portprotonqt"
|
||||
|
||||
jobs:
|
||||
build-debian:
|
||||
name: Build Debian Package
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Install required dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y python3-all python3-setuptools python3-build python3-installer dh-python debhelper devscripts build-essential python3-dev pybuild-plugin-pyproject
|
||||
|
||||
- name: Build Debian package
|
||||
run: |
|
||||
dpkg-buildpackage -us -uc -b
|
||||
ls -la ../*.deb
|
||||
# Copy Debian packages to a consistent location for upload
|
||||
mkdir -p ./dist
|
||||
cp ../*.deb ./dist/ || true
|
||||
|
||||
- name: Upload Debian package
|
||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||
with:
|
||||
name: PortProtonQt-Debian
|
||||
path: |
|
||||
dist/*.deb
|
||||
|
||||
build-appimage:
|
||||
name: Build AppImage
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Install required dependencies
|
||||
run: |
|
||||
@@ -73,7 +99,7 @@ jobs:
|
||||
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
|
||||
|
||||
- name: Checkout repo
|
||||
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Copy fedora.spec
|
||||
run: |
|
||||
@@ -134,7 +160,7 @@ jobs:
|
||||
su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git"
|
||||
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Upload Arch package
|
||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Build AppImage, Arch and Fedora Packages
|
||||
name: Build AppImage, Debian, Arch and Fedora Packages
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
@@ -8,12 +8,38 @@ on:
|
||||
|
||||
env:
|
||||
# Common version, will be used for tagging the release
|
||||
VERSION: 0.1.8
|
||||
VERSION: 0.1.9
|
||||
PKGDEST: "/tmp/portprotonqt"
|
||||
PACKAGE: "portprotonqt"
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
|
||||
jobs:
|
||||
build-debian:
|
||||
name: Build Debian Package
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@v4
|
||||
|
||||
- name: Install required dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y python3-all python3-setuptools python3-build python3-installer dh-python debhelper devscripts build-essential python3-dev pybuild-plugin-pyproject
|
||||
|
||||
- name: Build Debian package
|
||||
run: |
|
||||
dpkg-buildpackage -us -uc -b
|
||||
ls -la ../*.deb
|
||||
# Copy Debian packages to a consistent location for upload
|
||||
mkdir -p ./dist
|
||||
cp ../*.deb ./dist/ || true
|
||||
|
||||
- name: Upload Debian package
|
||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||
with:
|
||||
name: PortProtonQt-Debian
|
||||
path: |
|
||||
dist/*.deb
|
||||
|
||||
build-appimage:
|
||||
name: Build AppImage
|
||||
runs-on: ubuntu-22.04
|
||||
@@ -149,7 +175,7 @@ jobs:
|
||||
|
||||
release:
|
||||
name: Create and Publish Release
|
||||
needs: [build-appimage, build-arch, build-fedora]
|
||||
needs: [build-debian, build-appimage, build-arch, build-fedora]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@v4
|
||||
|
||||
@@ -16,7 +16,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Set up Python
|
||||
uses: https://gitea.com/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
name: Build Check - AppImage, Arch, Fedora
|
||||
name: Build Check - AppImage, Debian, Arch, Fedora
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'build-aux/**'
|
||||
- 'debian/**'
|
||||
|
||||
env:
|
||||
PKGDEST: "/tmp/portprotonqt"
|
||||
@@ -15,10 +16,11 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
appimage: ${{ steps.check.outputs.appimage }}
|
||||
debian: ${{ steps.check.outputs.debian }}
|
||||
fedora: ${{ steps.check.outputs.fedora }}
|
||||
arch: ${{ steps.check.outputs.arch }}
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -43,6 +45,13 @@ jobs:
|
||||
echo "appimage=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
# Check Debian directory
|
||||
if grep -q "debian/" changed_files.txt || ls debian/ 1> /dev/null 2>&1; then
|
||||
echo "debian=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "debian=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
# Check Fedora spec files (only fedora-git.spec)
|
||||
if grep -q "build-aux/fedora-git.spec" changed_files.txt; then
|
||||
echo "fedora=true" >> $GITHUB_OUTPUT
|
||||
@@ -57,13 +66,38 @@ jobs:
|
||||
echo "arch=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
build-debian:
|
||||
name: Build Debian Package
|
||||
runs-on: ubuntu-22.04
|
||||
needs: changes
|
||||
if: needs.changes.outputs.debian == 'true' || github.event_name == 'workflow_dispatch'
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Install required dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y python3-all python3-setuptools python3-build python3-installer dh-python debhelper devscripts build-essential python3-dev pybuild-plugin-pyproject
|
||||
|
||||
- name: Build Debian package
|
||||
run: |
|
||||
dpkg-buildpackage -us -uc -b
|
||||
ls -la ../*.deb
|
||||
|
||||
- name: Upload Debian package
|
||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||
with:
|
||||
name: PortProtonQt-Debian
|
||||
path: |
|
||||
../*.deb
|
||||
|
||||
build-appimage:
|
||||
name: Build AppImage
|
||||
runs-on: ubuntu-22.04
|
||||
needs: changes
|
||||
if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch'
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Install required dependencies
|
||||
run: |
|
||||
@@ -115,7 +149,7 @@ jobs:
|
||||
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
|
||||
|
||||
- name: Checkout repo
|
||||
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Copy fedora-git.spec
|
||||
run: |
|
||||
@@ -178,7 +212,7 @@ jobs:
|
||||
su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git"
|
||||
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Upload Arch package
|
||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||
|
||||
@@ -20,10 +20,10 @@ jobs:
|
||||
name: Check code
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: https://gitea.com/actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
|
||||
uses: https://gitea.com/actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Set up Python
|
||||
uses: https://gitea.com/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6
|
||||
|
||||
@@ -10,10 +10,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/renovatebot/renovate:latest@sha256:17c8966ef38fc361e108a550ffe2dcedf73e846f9975a974aea3d48c66b107a6
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: https://gitea.com/actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6
|
||||
uses: https://gitea.com/actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Все заметные изменения в этом проекте фиксируются в этом файле.
|
||||
Формат основан на [Keep a Changelog](https://keepachangelog.com/) и придерживается принципов [Semantic Versioning](https://semver.org/).
|
||||
|
||||
## [Unreleased]
|
||||
## [0.1.9] - 2025-12-08
|
||||
|
||||
### Added
|
||||
- Добавлены основные и расширенные настройки для `.exe`-файлов
|
||||
@@ -27,6 +27,7 @@
|
||||
- Улучшена работа с потоками для избежания вылетов
|
||||
- Исправлен запуск PortProton из Flatpak: теперь используется `flatpak run`, а не `start.sh`
|
||||
- Исправлено применение обложки по ссылке например со steamgriddb.com/
|
||||
- Исправлено множественное открытие окон в X11
|
||||
|
||||
### Contributors
|
||||
- @Vector_null
|
||||
|
||||
2
MANIFEST.in
Normal file
2
MANIFEST.in
Normal file
@@ -0,0 +1,2 @@
|
||||
recursive-include portprotonqt/themes *
|
||||
recursive-include portprotonqt/locales *
|
||||
@@ -5,8 +5,7 @@ script:
|
||||
- uv venv
|
||||
- uv pip install --no-cache-dir ../
|
||||
- cp -r .venv/lib/python3.10/site-packages/* AppDir/usr/local/lib/python3.10/dist-packages
|
||||
- cp -r share AppDir/usr
|
||||
- cp -r lib AppDir/usr
|
||||
- cp -r usr AppDir/
|
||||
- rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/qml/
|
||||
- rm -f AppDir/usr/local/lib/python3.10/dist-packages/PySide6/{assistant,designer,linguist,lrelease,lupdate}
|
||||
- rm -f AppDir/usr/local/lib/python3.10/dist-packages/PySide6/{Qt3DAnimation*,Qt3DCore*,Qt3DExtras*,Qt3DInput*,Qt3DLogic*,Qt3DRender*,QtBluetooth*,QtCharts*,QtConcurrent*,QtDataVisualization*,QtDesigner*,QtExampleIcons*,QtGraphs*,QtGraphsWidgets*,QtHelp*,QtHttpServer*,QtLocation*,QtMultimedia*,QtMultimediaWidgets*,QtNetworkAuth*,QtNfc*,QtOpenGL*,QtOpenGLWidgets*,QtPdf*,QtPdfWidgets*,QtPositioning*,QtPrintSupport*,QtQml*,QtQuick*,QtQuick3D*,QtQuickControls2*,QtQuickTest*,QtQuickWidgets*,QtRemoteObjects*,QtScxml*,QtSensors*,QtSerialBus*,QtSerialPort*,QtSpatialAudio*,QtSql*,QtStateMachine*,QtSvgWidgets*,QtTest*,QtTextToSpeech*,QtUiTools*,QtWebChannel*,QtWebEngineCore*,QtWebEngineQuick*,QtWebEngineWidgets*,QtWebSockets*,QtWebView*,QtXml*}
|
||||
@@ -37,7 +36,7 @@ AppDir:
|
||||
id: ru.linux_gaming.PortProtonQt
|
||||
name: PortProtonQt
|
||||
icon: ru.linux_gaming.PortProtonQt
|
||||
version: 0.1.8
|
||||
version: 0.1.9
|
||||
exec: usr/bin/python3
|
||||
exec_args: "-m portprotonqt.app $@"
|
||||
apt:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
pkgname=portprotonqt
|
||||
pkgver=0.1.8
|
||||
pkgver=0.1.9
|
||||
pkgrel=1
|
||||
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store"
|
||||
arch=('any')
|
||||
@@ -19,6 +19,5 @@ build() {
|
||||
package() {
|
||||
cd "$srcdir/PortProtonQt"
|
||||
python -m installer --destdir="$pkgdir" dist/*.whl
|
||||
cp -r build-aux/share "$pkgdir/usr/"
|
||||
cp -r build-aux/lib "$pkgdir/usr/"
|
||||
cp -r build-aux/usr "$pkgdir/"
|
||||
}
|
||||
|
||||
@@ -24,6 +24,5 @@ build() {
|
||||
package() {
|
||||
cd "$srcdir/PortProtonQt"
|
||||
python -m installer --destdir="$pkgdir" dist/*.whl
|
||||
cp -r build-aux/share "$pkgdir/usr/"
|
||||
cp -r build-aux/lib "$pkgdir/usr/"
|
||||
cp -r build-aux/usr "$pkgdir/"
|
||||
}
|
||||
|
||||
@@ -70,8 +70,7 @@ cd %{oname}
|
||||
cd %{oname}
|
||||
%pyproject_install
|
||||
%pyproject_save_files %{pypi_name}
|
||||
cp -r build-aux/share %{buildroot}/usr/
|
||||
cp -r build-aux/lib %{buildroot}/usr/
|
||||
cp -r build-aux/usr %{buildroot}/
|
||||
|
||||
%files -n python3-%{pypi_name}-git -f %{pyproject_files}
|
||||
%{_bindir}/%{pypi_name}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
%global pypi_name portprotonqt
|
||||
%global pypi_version 0.1.8
|
||||
%global pypi_version 0.1.9
|
||||
%global oname PortProtonQt
|
||||
%global _python_no_extras_requires 1
|
||||
|
||||
@@ -69,8 +69,7 @@ cd %{oname}
|
||||
cd %{oname}
|
||||
%pyproject_install
|
||||
%pyproject_save_files %{pypi_name}
|
||||
cp -r build-aux/share %{buildroot}/usr/
|
||||
cp -r build-aux/lib %{buildroot}/usr/
|
||||
cp -r build-aux/usr %{buildroot}/
|
||||
|
||||
%files -n python3-%{pypi_name} -f %{pyproject_files}
|
||||
%{_bindir}/%{pypi_name}
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
8
debian/README.Debian
vendored
Normal file
8
debian/README.Debian
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
PortProtonQt for Debian
|
||||
-----------------------
|
||||
|
||||
This package provides a modern GUI for managing and launching games from
|
||||
PortProton, Steam, and Epic Games Store.
|
||||
|
||||
For more information about PortProtonQt, please see the project homepage:
|
||||
https://git.linux-gaming.ru/Boria138/PortProtonQt
|
||||
22
debian/changelog
vendored
Normal file
22
debian/changelog
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
portprotonqt (0.1.9-1) unstable; urgency=medium
|
||||
|
||||
* Добавлены основные и расширенные настройки для ".exe"-файлов
|
||||
* Добавлена кнопка обновления сетки без необходимости перезапуска PortProtonQt (F5 на клавиатуре, GUIDE + Select на геймпаде)
|
||||
* Добавлена эмуляция мыши по GUIDE (Xbox или PS) + Start для установки приложений или взаимодействия с инструментами Wine не адаптированные под геймпад (работает только если PortProtonQt вне фокуса)
|
||||
* При сворачивании приложения в трей оно теперь корректно восстанавливается, вместо запуска нового экземпляра
|
||||
* Добавлена поддержка SteamGridDB в качестве дополнительного источника обложек
|
||||
* При добавлении карточки в избранное она автоматически становится первой без необходимости перезапуска
|
||||
* Изменено оформление виртуальной клавиатуры для лучшего соответствия общей теме
|
||||
* Ускорено чтение конфигов за счёт уменьшения количества обращений к файловой системе.
|
||||
* Из стандартной темы удалены неиспользуемые шрифты
|
||||
* Улучшена совместимость с Qt 6.10
|
||||
* Ускорен запуск программы
|
||||
* В диалог редактирования ярылыка добавлен placeholder с уточнением того что в качевстве обложки можно использовать и ссылку, а не только файл
|
||||
* Ссылку на обложку в диалоге редактирования ярлыка теперь можно указывать без протокола вроде http или https
|
||||
* Добавлено больше проверок на None для избежания вылетов
|
||||
* Улучшена работа с потоками для избежания вылетов
|
||||
* Исправлен запуск PortProton из Flatpak: теперь используется "flatpak run", а не "start.sh"
|
||||
* Исправлено применение обложки по ссылке например со steamgriddb.com/
|
||||
* Исправлено множественное открытие окон в X11
|
||||
|
||||
-- Boris Yumankulov <boria138@altlinux.org> Mon, 08 Dec 2025 00:00:00 +0000
|
||||
5
debian/changelog.bak
vendored
Normal file
5
debian/changelog.bak
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
portprotonqt (0.1.9-1) unstable; urgency=medium
|
||||
|
||||
* Initial release of PortProtonQt for Debian
|
||||
|
||||
-- Boris Yumankulov <boria138@altlinux.org> Thu, 11 Dec 2025 00:00:00 +0000
|
||||
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
@@ -0,0 +1 @@
|
||||
13
|
||||
47
debian/control
vendored
Normal file
47
debian/control
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
Source: portprotonqt
|
||||
Priority: optional
|
||||
Maintainer: Boris Yumankulov <boria138@altlinux.org>
|
||||
Build-Depends: debhelper (>= 13),
|
||||
dh-python,
|
||||
python3-all,
|
||||
python3-setuptools,
|
||||
python3-build,
|
||||
python3-installer,
|
||||
pybuild-plugin-pyproject
|
||||
Standards-Version: 4.6.0
|
||||
Homepage: https://git.linux-gaming.ru/Boria138/PortProtonQt
|
||||
|
||||
Package: python3-portprotonqt
|
||||
Architecture: all
|
||||
Depends: ${python3:Depends},
|
||||
${misc:Depends},
|
||||
python3-babel,
|
||||
python3-beautifulsoup4,
|
||||
python3-evdev,
|
||||
python3-icoextract,
|
||||
python3-numpy,
|
||||
python3-orjson,
|
||||
python3-pillow,
|
||||
python3-psutil,
|
||||
python3-pyside6,
|
||||
python3-pyudev,
|
||||
python3-rapidfuzz,
|
||||
python3-requests,
|
||||
python3-tqdm,
|
||||
python3-vdf,
|
||||
python3-websocket-client,
|
||||
perl-image-exiftool,
|
||||
xdg-utils,
|
||||
cabextract,
|
||||
gzip,
|
||||
unzip,
|
||||
curl,
|
||||
unrar
|
||||
Description: Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store
|
||||
This application provides a sleek, intuitive graphical interface for managing
|
||||
and launching games from PortProton, Steam, and Epic Games Store. It
|
||||
consolidates your game libraries into a single, user-friendly hub for seamless
|
||||
navigation and organization. Its lightweight structure and cross-platform
|
||||
support deliver a cohesive gaming experience, eliminating the need for
|
||||
multiple launchers. Unique PortProton integration enhances Linux gaming,
|
||||
enabling effortless play of Windows-based titles with minimal setup.
|
||||
7
debian/copyright
vendored
Normal file
7
debian/copyright
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: PortProtonQt
|
||||
Source: https://git.linux-gaming.ru/Boria138/PortProtonQt
|
||||
|
||||
Files: *
|
||||
Copyright: 2024-2025 Boris Yumankulov <boria138@altlinux.org>
|
||||
License: GPL-3.0+
|
||||
33
debian/rules
vendored
Executable file
33
debian/rules
vendored
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
export PYBUILD_NAME=portprotonqt
|
||||
export DEB_BUILD_OPTIONS=nocheck
|
||||
export DH_VERBOSE=1
|
||||
|
||||
%:
|
||||
dh $@ --with python3 --buildsystem=pybuild
|
||||
|
||||
override_dh_install:
|
||||
dh_install
|
||||
# Create necessary directories
|
||||
mkdir -p debian/python3-portprotonqt/usr/lib/udev/rules.d
|
||||
mkdir -p debian/python3-portprotonqt/usr/share/applications
|
||||
mkdir -p debian/python3-portprotonqt/usr/share/bash-completion/completions
|
||||
mkdir -p debian/python3-portprotonqt/usr/share/icons/hicolor/scalable/apps
|
||||
mkdir -p debian/python3-portprotonqt/usr/share/metainfo
|
||||
# Copy additional files from build-aux/usr (if they exist)
|
||||
if [ -d "$(CURDIR)/build-aux/usr/lib/udev/rules.d" ]; then \
|
||||
cp -r $(CURDIR)/build-aux/usr/lib/udev/rules.d/* debian/python3-portprotonqt/usr/lib/udev/rules.d/ || true; \
|
||||
fi
|
||||
if [ -d "$(CURDIR)/build-aux/usr/share/applications" ]; then \
|
||||
cp -r $(CURDIR)/build-aux/usr/share/applications/* debian/python3-portprotonqt/usr/share/applications/ || true; \
|
||||
fi
|
||||
if [ -d "$(CURDIR)/build-aux/usr/share/bash-completion/completions" ]; then \
|
||||
cp -r $(CURDIR)/build-aux/usr/share/bash-completion/completions/* debian/python3-portprotonqt/usr/share/bash-completion/completions/ || true; \
|
||||
fi
|
||||
if [ -d "$(CURDIR)/build-aux/usr/share/icons/hicolor/scalable/apps" ]; then \
|
||||
cp -r $(CURDIR)/build-aux/usr/share/icons/hicolor/scalable/apps/* debian/python3-portprotonqt/usr/share/icons/hicolor/scalable/apps/ || true; \
|
||||
fi
|
||||
if [ -d "$(CURDIR)/build-aux/usr/share/metainfo" ]; then \
|
||||
cp -r $(CURDIR)/build-aux/usr/share/metainfo/* debian/python3-portprotonqt/usr/share/metainfo/ || true; \
|
||||
fi
|
||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
||||
3.0 (native)
|
||||
7
debian/source/options
vendored
Normal file
7
debian/source/options
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
# Configuration for Debian source package
|
||||
compression = "gzip"
|
||||
|
||||
# Files and directories to exclude from source package
|
||||
tar-ignore = "dev-scripts"
|
||||
tar-ignore = ".*"
|
||||
tar-ignore = "__pycache__"
|
||||
@@ -4,7 +4,7 @@ import argparse
|
||||
import re
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
from datetime import date
|
||||
from datetime import date, datetime
|
||||
|
||||
# Base directory of the project
|
||||
BASE_DIR = Path(__file__).parent.parent
|
||||
@@ -16,6 +16,7 @@ PYPROJECT = BASE_DIR / "pyproject.toml"
|
||||
APP_PY = BASE_DIR / "portprotonqt" / "app.py"
|
||||
GITEA_WORKFLOW = BASE_DIR / ".gitea" / "workflows" / "build.yml"
|
||||
CHANGELOG = BASE_DIR / "CHANGELOG.md"
|
||||
DEBIAN_CHANGELOG = BASE_DIR / "debian" / "changelog"
|
||||
|
||||
def bump_appimage(path: Path, old: str, new: str) -> bool:
|
||||
"""
|
||||
@@ -109,6 +110,138 @@ def bump_changelog(path: Path, old: str, new: str) -> bool:
|
||||
path.write_text(new_text, encoding='utf-8')
|
||||
return bool(count)
|
||||
|
||||
def bump_debian_changelog(path: Path, old: str, new: str) -> bool:
|
||||
"""
|
||||
Update debian/changelog with new version
|
||||
"""
|
||||
if not path.exists():
|
||||
return False
|
||||
|
||||
# Extract changelog entries from CHANGELOG.md for this version
|
||||
changelog_md_path = BASE_DIR / "CHANGELOG.md"
|
||||
changelog_entries = []
|
||||
changelog_date = None
|
||||
|
||||
if changelog_md_path.exists():
|
||||
changelog_text = changelog_md_path.read_text(encoding='utf-8')
|
||||
lines = changelog_text.splitlines()
|
||||
|
||||
# Find the section for the new version and extract the date
|
||||
start_reading = False
|
||||
end_reading = False
|
||||
in_contributors_section = False
|
||||
|
||||
for line in lines:
|
||||
if line.startswith(f"## [{new}]"):
|
||||
# Extract date from line like "## [0.1.9] - 2025-12-08"
|
||||
date_match = re.search(r'\[.+\] - (\d{4}-\d{2}-\d{2})', line)
|
||||
if date_match:
|
||||
changelog_date_str = date_match.group(1)
|
||||
# Convert to the expected Debian format
|
||||
date_obj = datetime.strptime(changelog_date_str, '%Y-%m-%d')
|
||||
changelog_date = date_obj.strftime('%a, %d %b %Y') + " 00:00:00 +0000"
|
||||
|
||||
start_reading = True
|
||||
in_contributors_section = False
|
||||
continue
|
||||
elif line.startswith("## [") and start_reading:
|
||||
end_reading = True
|
||||
break
|
||||
elif line.strip().lower() == "### contributors":
|
||||
# Start of contributors section - skip following lines until next section
|
||||
in_contributors_section = True
|
||||
continue
|
||||
|
||||
# Skip section headers and contributor sections
|
||||
if start_reading and not end_reading and not in_contributors_section:
|
||||
stripped_line = line.strip()
|
||||
if stripped_line and not line.startswith("#") and not line.startswith("[") and not line.lower().startswith("###"):
|
||||
# Check if this line is a list item with changes
|
||||
if re.match(r'^\s*[*-]\s+', line):
|
||||
# Remove markdown list formatting and add proper Debian format
|
||||
clean_line = re.sub(r'^\s*[*-]\s+', ' * ', line.rstrip())
|
||||
# Remove common markdown formatting like backticks
|
||||
clean_line = re.sub(r'`([^`]+)`', r'"\1"', clean_line) # Replace `code` with "code"
|
||||
changelog_entries.append(clean_line)
|
||||
# Also include lines that are sub-items (indented changes)
|
||||
elif line.startswith(" ") and re.match(r'^\s*[*-]\s+', line[4:]):
|
||||
clean_line = re.sub(r'^\s*[*-]\s+', ' * ', line[4:].rstrip())
|
||||
clean_line = " " + clean_line # Add extra indentation
|
||||
# Remove common markdown formatting
|
||||
clean_line = re.sub(r'`([^`]+)`', r'"\1"', clean_line)
|
||||
changelog_entries.append(clean_line)
|
||||
|
||||
# If no specific entries found for this version, use generic message
|
||||
if not changelog_entries:
|
||||
changelog_entries = [" * New upstream release"]
|
||||
|
||||
# Use changelog date if available, otherwise use current time
|
||||
current_time = changelog_date if changelog_date else datetime.now().strftime('%a, %d %b %Y %H:%M:%S +0000')
|
||||
|
||||
# Read the existing changelog to get maintainer info and other fields
|
||||
text = path.read_text(encoding='utf-8')
|
||||
|
||||
# If the file is empty or doesn't contain proper maintainer info, use a default
|
||||
lines = text.splitlines()
|
||||
|
||||
if not lines or not any(line.startswith(" -- ") for line in lines):
|
||||
# Create a default changelog entry with proper format
|
||||
package_name = "portprotonqt"
|
||||
new_version_line = f"{package_name} ({new}-1) unstable; urgency=medium"
|
||||
|
||||
# Default maintainer info from the original file
|
||||
default_maintainer = "Boris Yumankulov <boria138@altlinux.org>"
|
||||
maintainer_line = f" -- {default_maintainer} {current_time}"
|
||||
|
||||
new_content = new_version_line + "\n\n" + "\n".join(changelog_entries) + "\n\n" + maintainer_line + "\n"
|
||||
else:
|
||||
# Extract the header template from the current first entry
|
||||
header_parts = []
|
||||
entry_end_index = 0
|
||||
|
||||
for i, line in enumerate(lines):
|
||||
header_parts.append(line)
|
||||
if line.startswith(" -- "):
|
||||
entry_end_index = i + 1
|
||||
break
|
||||
|
||||
# Construct new changelog entry
|
||||
new_entry_lines = []
|
||||
|
||||
if header_parts:
|
||||
# Parse the first line to extract package name (before the version)
|
||||
first_line = header_parts[0]
|
||||
# Extract package name by getting everything before the opening parenthesis
|
||||
if '(' in first_line:
|
||||
package_name = first_line.split('(')[0].strip()
|
||||
new_version_line = f"{package_name} ({new}-1) unstable; urgency=medium"
|
||||
else:
|
||||
# Fallback: if no parentheses found, use a default format
|
||||
new_version_line = f"portprotonqt ({new}-1) unstable; urgency=medium"
|
||||
|
||||
new_entry_lines.append(new_version_line)
|
||||
|
||||
# Add the changelog entries
|
||||
new_entry_lines.extend(changelog_entries)
|
||||
|
||||
# Add the maintainer info and timestamp
|
||||
for j in range(1, len(header_parts)):
|
||||
if header_parts[j].startswith(" -- "):
|
||||
# Extract the maintainer information (everything after "-- ")
|
||||
maintainer_part = header_parts[j][4:] # Remove leading " -- "
|
||||
# Extract only the name and email, ignore timestamp
|
||||
maintainer_info = maintainer_part.split(' ')[0].strip()
|
||||
new_entry_lines.append(f" -- {maintainer_info} {current_time}")
|
||||
elif not header_parts[j].startswith(" *"): # Skip existing changes since we added new ones
|
||||
new_entry_lines.append(header_parts[j])
|
||||
|
||||
# Reconstruct the file with new entry at the top followed by the rest
|
||||
new_content = '\n'.join(new_entry_lines) + '\n' + '\n'.join(lines[entry_end_index:])
|
||||
|
||||
path.write_text(new_content, encoding='utf-8')
|
||||
return True
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Bump project version in specific files')
|
||||
parser.add_argument('old', help='Old version string')
|
||||
@@ -123,7 +256,8 @@ def main():
|
||||
(PYPROJECT, bump_pyproject),
|
||||
(APP_PY, bump_app_py),
|
||||
(GITEA_WORKFLOW, bump_workflow),
|
||||
(CHANGELOG, bump_changelog)
|
||||
(CHANGELOG, bump_changelog),
|
||||
(DEBIAN_CHANGELOG, bump_debian_changelog)
|
||||
]
|
||||
|
||||
updated = []
|
||||
|
||||
@@ -17,7 +17,7 @@ from portprotonqt.cli import parse_args
|
||||
|
||||
__app_id__ = "ru.linux_gaming.PortProtonQt"
|
||||
__app_name__ = "PortProtonQt"
|
||||
__app_version__ = "0.1.8"
|
||||
__app_version__ = "0.1.9"
|
||||
|
||||
def get_version():
|
||||
try:
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
[build-system]
|
||||
requires = ["setuptools >= 77.0.3"]
|
||||
requires = ["setuptools >= 75.0.0", "wheel"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "portprotonqt"
|
||||
version = "0.1.8"
|
||||
version = "0.1.9"
|
||||
description = "A project to rewrite PortProton (PortWINE) using PySide"
|
||||
readme = "README.md"
|
||||
license = { text = "GPL-3.0" }
|
||||
|
||||
77
setup.py
Normal file
77
setup.py
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Setup script for PortProtonQt
|
||||
Debian package build configuration
|
||||
"""
|
||||
|
||||
from setuptools import setup, find_packages
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
# Читаем версию из pyproject.toml простым regex
|
||||
pyproject_file = Path(__file__).parent / "pyproject.toml"
|
||||
version_match = re.search(r'^version\s*=\s*"([^"]+)"', pyproject_file.read_text(), re.MULTILINE)
|
||||
version = version_match.group(1) if version_match else "0.0.0"
|
||||
|
||||
# Читаем README для long_description
|
||||
readme_file = Path(__file__).parent / "README.md"
|
||||
long_description = readme_file.read_text(encoding="utf-8") if readme_file.exists() else ""
|
||||
|
||||
setup(
|
||||
name="portprotonqt",
|
||||
version=version,
|
||||
description="A project to rewrite PortProton (PortWINE) using PySide",
|
||||
long_description=long_description,
|
||||
long_description_content_type="text/markdown",
|
||||
author="Boria138, BlackSnaker, Mikhail Tergoev(Castro-Fidel)",
|
||||
author_email="",
|
||||
url="https://github.com/Castro-Fidel/PortProton",
|
||||
license="GPL-3.0",
|
||||
|
||||
# Классификаторы PyPI
|
||||
classifiers=[
|
||||
"Development Status :: 3 - Alpha",
|
||||
"Programming Language :: Python",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
"Operating System :: POSIX :: Linux",
|
||||
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
||||
"Intended Audience :: End Users/Desktop",
|
||||
"Topic :: Games/Entertainment",
|
||||
],
|
||||
keywords=["portproton", "wine", "game", "steam", "proton", "linux"],
|
||||
|
||||
# Python версия
|
||||
python_requires=">=3.10",
|
||||
|
||||
# Пакеты
|
||||
packages=find_packages(exclude=["build-aux", "dev-scripts", "documentation", "data"]),
|
||||
|
||||
# Включаемые файлы пакета
|
||||
package_data={
|
||||
"portprotonqt": [
|
||||
"themes/**/*",
|
||||
"themes/**/fonts/*",
|
||||
"themes/**/images/*",
|
||||
"themes/**/images/icons/*",
|
||||
"themes/**/images/screenshots/*",
|
||||
"locales/**/*",
|
||||
"locales/**/*.po",
|
||||
"locales/**/*.mo",
|
||||
],
|
||||
},
|
||||
|
||||
# Точка входа - исполняемый скрипт
|
||||
entry_points={
|
||||
"console_scripts": [
|
||||
"portprotonqt=portprotonqt.app:main",
|
||||
],
|
||||
},
|
||||
|
||||
# Дополнительные опции
|
||||
include_package_data=True,
|
||||
zip_safe=False,
|
||||
)
|
||||
Reference in New Issue
Block a user