chore(build): added deb package
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
name: Nightly Build - AppImage, Arch, Fedora
|
||||
name: Nightly Build - AppImage, Debian, Arch, Fedora
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
@@ -8,6 +8,32 @@ 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
|
||||
|
||||
@@ -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,32 @@ 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
|
||||
# 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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*}
|
||||
|
||||
@@ -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/"
|
||||
}
|
||||
|
||||
@@ -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/"
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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}
|
||||
|
||||
|
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
|
||||
5
debian/changelog
vendored
Normal file
5
debian/changelog
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+
|
||||
8
debian/rules
vendored
Executable file
8
debian/rules
vendored
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
export PYBUILD_NAME=portprotonqt
|
||||
export DEB_BUILD_OPTIONS=nocheck
|
||||
export DH_VERBOSE=1
|
||||
|
||||
%:
|
||||
dh $@ --with python3 --buildsystem=pybuild
|
||||
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__"
|
||||
@@ -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
|
||||
|
||||
95
setup.py
Normal file
95
setup.py
Normal file
@@ -0,0 +1,95 @@
|
||||
#!/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/**/*",
|
||||
"locales/**/*",
|
||||
],
|
||||
},
|
||||
|
||||
# Системные файлы данных
|
||||
data_files=[
|
||||
# Desktop file
|
||||
("share/applications", [
|
||||
"build-aux/usr/share/applications/ru.linux_gaming.PortProtonQt.desktop"
|
||||
]),
|
||||
# Icon
|
||||
("share/icons/hicolor/scalable/apps", [
|
||||
"build-aux/usr/share/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg"
|
||||
]),
|
||||
# AppStream metainfo
|
||||
("share/metainfo", [
|
||||
"build-aux/usr/share/metainfo/ru.linux_gaming.PortProtonQt.metainfo.xml"
|
||||
]),
|
||||
# Bash completion
|
||||
("share/bash-completion/completions", [
|
||||
"build-aux/usr/share/bash-completion/completions/portprotonqt"
|
||||
]),
|
||||
# udev rules
|
||||
("lib/udev/rules.d", [
|
||||
"build-aux/usr/lib/udev/rules.d/60-portprotonqt.rules"
|
||||
]),
|
||||
],
|
||||
|
||||
# Точка входа - исполняемый скрипт
|
||||
entry_points={
|
||||
"console_scripts": [
|
||||
"portprotonqt=portprotonqt.app:main",
|
||||
],
|
||||
},
|
||||
|
||||
# Дополнительные опции
|
||||
include_package_data=True,
|
||||
zip_safe=False,
|
||||
)
|
||||
Reference in New Issue
Block a user