Compare commits
1 Commits
main
...
debian-tes
| Author | SHA1 | Date | |
|---|---|---|---|
|
de229401a7
|
@@ -1,4 +1,4 @@
|
|||||||
name: Nightly Build - AppImage, Arch, Fedora
|
name: Nightly Build - AppImage, Debian, Arch, Fedora
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@@ -8,6 +8,32 @@ env:
|
|||||||
PACKAGE: "portprotonqt"
|
PACKAGE: "portprotonqt"
|
||||||
|
|
||||||
jobs:
|
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:
|
build-appimage:
|
||||||
name: Build AppImage
|
name: Build AppImage
|
||||||
runs-on: ubuntu-22.04
|
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:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@@ -14,6 +14,32 @@ env:
|
|||||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
|
||||||
jobs:
|
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:
|
build-appimage:
|
||||||
name: Build AppImage
|
name: Build AppImage
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
@@ -149,7 +175,7 @@ jobs:
|
|||||||
|
|
||||||
release:
|
release:
|
||||||
name: Create and Publish 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
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: https://gitea.com/actions/checkout@v4
|
- 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:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- 'build-aux/**'
|
- 'build-aux/**'
|
||||||
|
- 'debian/**'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
PKGDEST: "/tmp/portprotonqt"
|
PKGDEST: "/tmp/portprotonqt"
|
||||||
@@ -15,6 +16,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
appimage: ${{ steps.check.outputs.appimage }}
|
appimage: ${{ steps.check.outputs.appimage }}
|
||||||
|
debian: ${{ steps.check.outputs.debian }}
|
||||||
fedora: ${{ steps.check.outputs.fedora }}
|
fedora: ${{ steps.check.outputs.fedora }}
|
||||||
arch: ${{ steps.check.outputs.arch }}
|
arch: ${{ steps.check.outputs.arch }}
|
||||||
steps:
|
steps:
|
||||||
@@ -43,6 +45,13 @@ jobs:
|
|||||||
echo "appimage=false" >> $GITHUB_OUTPUT
|
echo "appimage=false" >> $GITHUB_OUTPUT
|
||||||
fi
|
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)
|
# Check Fedora spec files (only fedora-git.spec)
|
||||||
if grep -q "build-aux/fedora-git.spec" changed_files.txt; then
|
if grep -q "build-aux/fedora-git.spec" changed_files.txt; then
|
||||||
echo "fedora=true" >> $GITHUB_OUTPUT
|
echo "fedora=true" >> $GITHUB_OUTPUT
|
||||||
@@ -57,6 +66,31 @@ jobs:
|
|||||||
echo "arch=false" >> $GITHUB_OUTPUT
|
echo "arch=false" >> $GITHUB_OUTPUT
|
||||||
fi
|
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:
|
build-appimage:
|
||||||
name: Build AppImage
|
name: Build AppImage
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
|||||||
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 venv
|
||||||
- uv pip install --no-cache-dir ../
|
- uv pip install --no-cache-dir ../
|
||||||
- cp -r .venv/lib/python3.10/site-packages/* AppDir/usr/local/lib/python3.10/dist-packages
|
- cp -r .venv/lib/python3.10/site-packages/* AppDir/usr/local/lib/python3.10/dist-packages
|
||||||
- cp -r share AppDir/usr
|
- cp -r usr AppDir/
|
||||||
- cp -r lib AppDir/usr
|
|
||||||
- rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/qml/
|
- 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/{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*}
|
- 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,5 @@ build() {
|
|||||||
package() {
|
package() {
|
||||||
cd "$srcdir/PortProtonQt"
|
cd "$srcdir/PortProtonQt"
|
||||||
python -m installer --destdir="$pkgdir" dist/*.whl
|
python -m installer --destdir="$pkgdir" dist/*.whl
|
||||||
cp -r build-aux/share "$pkgdir/usr/"
|
cp -r build-aux/usr "$pkgdir/"
|
||||||
cp -r build-aux/lib "$pkgdir/usr/"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,5 @@ build() {
|
|||||||
package() {
|
package() {
|
||||||
cd "$srcdir/PortProtonQt"
|
cd "$srcdir/PortProtonQt"
|
||||||
python -m installer --destdir="$pkgdir" dist/*.whl
|
python -m installer --destdir="$pkgdir" dist/*.whl
|
||||||
cp -r build-aux/share "$pkgdir/usr/"
|
cp -r build-aux/usr "$pkgdir/"
|
||||||
cp -r build-aux/lib "$pkgdir/usr/"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,8 +70,7 @@ cd %{oname}
|
|||||||
cd %{oname}
|
cd %{oname}
|
||||||
%pyproject_install
|
%pyproject_install
|
||||||
%pyproject_save_files %{pypi_name}
|
%pyproject_save_files %{pypi_name}
|
||||||
cp -r build-aux/share %{buildroot}/usr/
|
cp -r build-aux/usr %{buildroot}/
|
||||||
cp -r build-aux/lib %{buildroot}/usr/
|
|
||||||
|
|
||||||
%files -n python3-%{pypi_name}-git -f %{pyproject_files}
|
%files -n python3-%{pypi_name}-git -f %{pyproject_files}
|
||||||
%{_bindir}/%{pypi_name}
|
%{_bindir}/%{pypi_name}
|
||||||
|
|||||||
@@ -69,8 +69,7 @@ cd %{oname}
|
|||||||
cd %{oname}
|
cd %{oname}
|
||||||
%pyproject_install
|
%pyproject_install
|
||||||
%pyproject_save_files %{pypi_name}
|
%pyproject_save_files %{pypi_name}
|
||||||
cp -r build-aux/share %{buildroot}/usr/
|
cp -r build-aux/usr %{buildroot}/
|
||||||
cp -r build-aux/lib %{buildroot}/usr/
|
|
||||||
|
|
||||||
%files -n python3-%{pypi_name} -f %{pyproject_files}
|
%files -n python3-%{pypi_name} -f %{pyproject_files}
|
||||||
%{_bindir}/%{pypi_name}
|
%{_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 re
|
||||||
import subprocess
|
import subprocess
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from datetime import date
|
from datetime import date, datetime
|
||||||
|
|
||||||
# Base directory of the project
|
# Base directory of the project
|
||||||
BASE_DIR = Path(__file__).parent.parent
|
BASE_DIR = Path(__file__).parent.parent
|
||||||
@@ -16,6 +16,7 @@ PYPROJECT = BASE_DIR / "pyproject.toml"
|
|||||||
APP_PY = BASE_DIR / "portprotonqt" / "app.py"
|
APP_PY = BASE_DIR / "portprotonqt" / "app.py"
|
||||||
GITEA_WORKFLOW = BASE_DIR / ".gitea" / "workflows" / "build.yml"
|
GITEA_WORKFLOW = BASE_DIR / ".gitea" / "workflows" / "build.yml"
|
||||||
CHANGELOG = BASE_DIR / "CHANGELOG.md"
|
CHANGELOG = BASE_DIR / "CHANGELOG.md"
|
||||||
|
DEBIAN_CHANGELOG = BASE_DIR / "debian" / "changelog"
|
||||||
|
|
||||||
def bump_appimage(path: Path, old: str, new: str) -> bool:
|
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')
|
path.write_text(new_text, encoding='utf-8')
|
||||||
return bool(count)
|
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():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description='Bump project version in specific files')
|
parser = argparse.ArgumentParser(description='Bump project version in specific files')
|
||||||
parser.add_argument('old', help='Old version string')
|
parser.add_argument('old', help='Old version string')
|
||||||
@@ -123,7 +256,8 @@ def main():
|
|||||||
(PYPROJECT, bump_pyproject),
|
(PYPROJECT, bump_pyproject),
|
||||||
(APP_PY, bump_app_py),
|
(APP_PY, bump_app_py),
|
||||||
(GITEA_WORKFLOW, bump_workflow),
|
(GITEA_WORKFLOW, bump_workflow),
|
||||||
(CHANGELOG, bump_changelog)
|
(CHANGELOG, bump_changelog),
|
||||||
|
(DEBIAN_CHANGELOG, bump_debian_changelog)
|
||||||
]
|
]
|
||||||
|
|
||||||
updated = []
|
updated = []
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[build-system]
|
[build-system]
|
||||||
requires = ["setuptools >= 77.0.3"]
|
requires = ["setuptools >= 75.0.0", "wheel"]
|
||||||
build-backend = "setuptools.build_meta"
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
[project]
|
[project]
|
||||||
|
|||||||
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