chore(build): added deb package

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
2025-12-11 16:40:15 +05:00
parent 6f82068864
commit a43cb02b72
24 changed files with 230 additions and 15 deletions

View File

@@ -1,4 +1,4 @@
name: Nightly Build - AppImage, Arch, Fedora
name: Nightly Build - AppImage, Debian, Arch, Fedora
on:
workflow_dispatch:
@@ -8,6 +8,29 @@ 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
- 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

View File

@@ -1,4 +1,4 @@
name: Build AppImage, Arch and Fedora Packages
name: Build AppImage, Debian, Arch and Fedora Packages
on:
workflow_dispatch:
@@ -14,6 +14,29 @@ env:
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
- 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
@@ -149,7 +172,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

View File

@@ -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,6 +16,7 @@ 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:
@@ -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,6 +66,31 @@ 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

View File

@@ -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 build-aux/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*}

View File

@@ -19,6 +19,4 @@ 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/"
}

View File

@@ -24,6 +24,4 @@ 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/"
}

View File

@@ -70,8 +70,6 @@ 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/
%files -n python3-%{pypi_name}-git -f %{pyproject_files}
%{_bindir}/%{pypi_name}

View File

@@ -69,8 +69,6 @@ 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/
%files -n python3-%{pypi_name} -f %{pyproject_files}
%{_bindir}/%{pypi_name}

8
debian/README.Debian vendored Normal file
View 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

5
debian/changelog vendored Normal file
View 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
View File

@@ -0,0 +1 @@
13

47
debian/control vendored Normal file
View 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.

25
debian/copyright vendored Normal file
View File

@@ -0,0 +1,25 @@
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+
Files: debian/*
Copyright: 2025 Boris Yumankulov <boria138@altlinux.org>
License: GPL-3.0+
License: GPL-3.0+
This program 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 3 of the License, or
(at your option) any later version.
.
This program 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 &lt;https://www.gnu.org/licenses/&gt;.

5
debian/install vendored Normal file
View File

@@ -0,0 +1,5 @@
usr/share/applications/ru.linux_gaming.PortProtonQt.desktop usr/share/applications/
usr/share/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg usr/share/icons/hicolor/scalable/apps/
usr/share/metainfo/ru.linux_gaming.PortProtonQt.metainfo.xml usr/share/metainfo/
usr/share/bash-completion/completions/portprotonqt usr/share/bash-completion/completions/
usr/lib/udev/rules.d/60-portprotonqt.rules usr/lib/udev/rules.d/

22
debian/rules vendored Executable file
View File

@@ -0,0 +1,22 @@
#!/usr/bin/make -f
export PYBUILD_NAME=portprotonqt
export DEB_BUILD_OPTIONS=nocheck
export PYTHONDONTWRITEBYTECODE=1
export DH_VERBOSE=1
%:
dh $@ --with python3 --buildsystem=pybuild
override_dh_auto_install:
dh_auto_install
# Install data files
install -d debian/python3-portprotonqt/usr/share/applications
install -m 644 build-aux/usr/share/applications/ru.linux_gaming.PortProtonQt.desktop debian/python3-portprotonqt/usr/share/applications/
install -d debian/python3-portprotonqt/usr/share/icons/hicolor/scalable/apps
install -m 644 build-aux/usr/share/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg debian/python3-portprotonqt/usr/share/icons/hicolor/scalable/apps/
install -d debian/python3-portprotonqt/usr/share/metainfo
install -m 644 build-aux/usr/share/metainfo/ru.linux_gaming.PortProtonQt.metainfo.xml debian/python3-portprotonqt/usr/share/metainfo/
install -d debian/python3-portprotonqt/usr/share/bash-completion/completions
install -m 644 build-aux/usr/share/bash-completion/completions/portprotonqt debian/python3-portprotonqt/usr/share/bash-completion/completions/
install -d debian/python3-portprotonqt/usr/lib/udev/rules.d
install -m 644 build-aux/usr/lib/udev/rules.d/60-portprotonqt.rules debian/python3-portprotonqt/usr/lib/udev/rules.d/

1
debian/source/format vendored Normal file
View File

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

18
debian/source/options vendored Normal file
View File

@@ -0,0 +1,18 @@
# Configuration for Debian source package
compression = "gzip"
# Files and directories to exclude from source package
tar-ignore = "dev-scripts"
tar-ignore = ".*"
tar-ignore = "__pycache__"
tar-ignore = ".git"
tar-ignore = ".venv"
tar-ignore = ".ruff_cache"
tar-ignore = ".ropeproject"
tar-ignore = "build"
tar-ignore = "dist"
tar-ignore = "*.egg-info"
tar-ignore = ".pytest_cache"
tar-ignore = ".vscode"
tar-ignore = "portprotonqt/themes/.git"
tar-ignore = "portprotonqt/locales/.git"

View File

@@ -1,5 +1,5 @@
[build-system]
requires = ["setuptools >= 77.0.3"]
requires = ["setuptools >= 75.0.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
@@ -52,6 +52,13 @@ portprotonqt = "portprotonqt.app:main"
[tool.setuptools.packages.find]
exclude = ["build-aux", "dev-scripts", "documentation", "data"]
[tool.setuptools.data-files]
"share/applications" = ["build-aux/usr/share/applications/ru.linux_gaming.PortProtonQt.desktop"]
"share/icons/hicolor/scalable/apps" = ["build-aux/usr/share/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg"]
"share/metainfo" = ["build-aux/usr/share/metainfo/ru.linux_gaming.PortProtonQt.metainfo.xml"]
"share/bash-completion/completions" = ["build-aux/usr/share/bash-completion/completions/portprotonqt"]
"lib/udev/rules.d" = ["build-aux/usr/lib/udev/rules.d/60-portprotonqt.rules"]
[tool.ruff.lint]
select = [
"E", # pycodestyle errors

5
setup.py Normal file
View File

@@ -0,0 +1,5 @@
#!/usr/bin/env python3
from setuptools import setup
if __name__ == "__main__":
setup(name="portprotonqt")