File project.diff of Package pagure
--- pagure.changes.orig
+++ pagure.changes
@@ -1,4 +1,9 @@
-------------------------------------------------------------------
+Thu Oct 3 20:20:52 UTC 2024 - Georg Pfuetzenreuter <mail+rpm@georg-pfuetzenreuter.net>
+
+- Build for Python 3.11
+
+-------------------------------------------------------------------
Sat Aug 17 11:28:25 UTC 2024 - Georg Pfuetzenreuter <mail+rpm@georg-pfuetzenreuter.net>
- Add pagure-pygit2.patch to repair service startup on Leap 15.6 and Tumbleweed
--- pagure.spec.orig
+++ pagure.spec
@@ -17,10 +17,15 @@
#
+%{?sle15_python_module_pythons}
+
+%define mypython python311
+%define __python3 %__python311
+
# Prevent dep generators from trying to process static stuff and stall out
# We only need to read the python metadata anyway
-%global __provides_exclude_from ^%{python3_sitelib}/pagure/.*$
-%global __requires_exclude_from ^%{python3_sitelib}/pagure/.*$
+%global __provides_exclude_from ^%{python_sitelib}/pagure/.*$
+%global __requires_exclude_from ^%{python_sitelib}/pagure/.*$
Name: pagure
Version: 5.14.1
@@ -52,87 +57,89 @@ Patch1002: pagure-pygit2.patch
BuildArch: noarch
+BuildRequires: %{python_module devel}
+BuildRequires: %{python_module pip}
+BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module wheel}
BuildRequires: apache2
BuildRequires: fdupes
BuildRequires: nginx
-BuildRequires: python3-devel
-BuildRequires: python3-setuptools
BuildRequires: systemd-rpm-macros
-BuildRequires: python3-Flask
-BuildRequires: python3-Flask-WTF
-BuildRequires: python3-Markdown
-BuildRequires: python3-Pillow
-BuildRequires: python3-alembic
-BuildRequires: python3-arrow
-BuildRequires: python3-bcrypt
-BuildRequires: python3-binaryornot
-BuildRequires: python3-bleach
-BuildRequires: python3-blinker
-BuildRequires: python3-chardet
-BuildRequires: python3-cryptography
-BuildRequires: python3-docutils
-BuildRequires: python3-email_validator
-BuildRequires: python3-psutil
-BuildRequires: python3-pygit2 >= 0.26.0
-#BuildRequires: python3-fedora-flask
-BuildRequires: python3-python3-openid
-BuildRequires: python3-SQLAlchemy >= 0.8
-BuildRequires: python3-WTForms
-BuildRequires: python3-munch
-BuildRequires: python3-python-openid-cla
-BuildRequires: python3-python-openid-teams
-BuildRequires: python3-redis
-BuildRequires: python3-straight-plugin
-BuildRequires: python3-whitenoise
+BuildRequires: %{python_module Flask-WTF}
+BuildRequires: %{python_module Flask}
+BuildRequires: %{python_module Markdown}
+BuildRequires: %{python_module Pillow}
+BuildRequires: %{python_module alembic}
+BuildRequires: %{python_module arrow}
+BuildRequires: %{python_module bcrypt}
+BuildRequires: %{python_module binaryornot}
+BuildRequires: %{python_module bleach}
+BuildRequires: %{python_module blinker}
+BuildRequires: %{python_module chardet}
+BuildRequires: %{python_module cryptography}
+BuildRequires: %{python_module docutils}
+BuildRequires: %{python_module email_validator}
+BuildRequires: %{python_module psutil}
+BuildRequires: %{python_module pygit2 >= 0.26.0}
+#BuildRequires: #{python_module fedora-flask}
+BuildRequires: %{python_module python3-openid}
+BuildRequires: %{python_module SQLAlchemy >= 0.8}
+BuildRequires: %{python_module WTForms}
+BuildRequires: %{python_module munch}
+BuildRequires: %{python_module python-openid-cla}
+BuildRequires: %{python_module python-openid-teams}
+BuildRequires: %{python_module redis}
+BuildRequires: %{python_module straight-plugin}
+BuildRequires: %{python_module whitenoise}
# We require OpenSSH 7.4+ for SHA256 support
Requires: openssh >= 7.4
-Requires: python3-Flask
-Requires: python3-Flask-WTF
-Requires: python3-Markdown
-Requires: python3-Pillow
-Requires: python3-alembic
-Requires: python3-arrow
-Requires: python3-bcrypt
-Requires: python3-binaryornot
-Requires: python3-bleach
-Requires: python3-blinker
-Requires: python3-celery
-Requires: python3-chardet
-Requires: python3-cryptography
-Requires: python3-docutils
-Requires: python3-email_validator
-Requires: python3-psutil
-Requires: python3-pygit2 >= 0.26.0
-#Requires: python3-fedora-flask
-Requires: python3-python3-openid
-Requires: python3-SQLAlchemy > 0.8
-Requires: python3-WTForms
-Requires: python3-munch
-Requires: python3-python-openid-cla
-Requires: python3-python-openid-teams
-Requires: python3-redis
-Requires: python3-straight-plugin
-Requires: python3-whitenoise
+Requires: %{mypython}-Flask
+Requires: %{mypython}-Flask-WTF
+Requires: %{mypython}-Markdown
+Requires: %{mypython}-Pillow
+Requires: %{mypython}-alembic
+Requires: %{mypython}-arrow
+Requires: %{mypython}-bcrypt
+Requires: %{mypython}-binaryornot
+Requires: %{mypython}-bleach
+Requires: %{mypython}-blinker
+Requires: %{mypython}-celery
+Requires: %{mypython}-chardet
+Requires: %{mypython}-cryptography
+Requires: %{mypython}-docutils
+Requires: %{mypython}-email_validator
+Requires: %{mypython}-psutil
+Requires: %{mypython}-pygit2 >= 0.26.0
+#Requires: #{mypython}-fedora-flask
+Requires: %{mypython}-python3-openid
+Requires: %{mypython}-SQLAlchemy > 0.8
+Requires: %{mypython}-WTForms
+Requires: %{mypython}-munch
+Requires: %{mypython}-python-openid-cla
+Requires: %{mypython}-python-openid-teams
+Requires: %{mypython}-redis
+Requires: %{mypython}-straight-plugin
+Requires: %{mypython}-whitenoise
# Required for celery
-Requires: python3-pytz
+Requires: %{mypython}-pytz
# Required for database setup/migrations
-Requires: python3-dbm
-Requires: python3-kitchen
-Requires: python3-requests
+Requires: %{mypython}-dbm
+Requires: %{mypython}-kitchen
+Requires: %{mypython}-requests
# We want to use cchardet whenever it's available
-Recommends: python3-cchardet
+Recommends: %{mypython}-cchardet
# If using PostgreSQL, the correct driver should be installed
-Recommends: (python3-psycopg2 if postgresql-server)
+Recommends: (%{mypython}-psycopg2 if postgresql-server)
# If using MariaDB/MySQL, the correct driver should be installed
-Recommends: (python3-PyMySQL if mysql-server)
+Recommends: (%{mypython}-PyMySQL if mysql-server)
# If using Apache web server, the correct configuration should be installed
Recommends: (%{name}-web-apache-httpd if apache2)
@@ -178,9 +185,9 @@ a Pagure server using the Apache HTTPD s
%package web-nginx
Summary: Nginx configuration for Pagure
+Requires: %{mypython}-gunicorn
Requires: %{name} = %{version}-%{release}
Requires: nginx
-Requires: python3-gunicorn
%description web-nginx
This package provides the configuration files for deploying
@@ -243,8 +250,8 @@ a Pagure server running on openSUSE.
%package milters
Summary: Milter to integrate pagure with emails
BuildRequires: systemd-rpm-macros
+Requires: %{mypython}-pymilter
Requires: %{name} = %{version}-%{release}
-Requires: python3-pymilter
%{?systemd_requires}
# It would work with sendmail but we configure things (like the tempfile)
# to work with postfix
@@ -257,8 +264,8 @@ This is useful for example to allow comm
%package ev
Summary: EventSource server for pagure
BuildRequires: systemd-rpm-macros
+Requires: %{mypython}-Trololio
Requires: %{name} = %{version}-%{release}
-Requires: python3-Trololio
%{?systemd_requires}
%description ev
@@ -278,8 +285,8 @@ done on a project. This package provides
%package ci
Summary: A CI service for pagure
BuildRequires: systemd-rpm-macros
+Requires: %{mypython}-python-jenkins
Requires: %{name} = %{version}-%{release}
-Requires: python3-python-jenkins
%{?systemd_requires}
%description ci
@@ -330,10 +337,10 @@ sed -e "s/import flask_fas_openid/from p
install -pm 0644 %{SOURCE10} README.SUSE
%build
-%py3_build
+%pyproject_wheel
%install
-%py3_install
+%pyproject_install
# Install apache configuration file
mkdir -p %{buildroot}/%{_sysconfdir}/apache2/vhosts.d
@@ -448,29 +455,29 @@ install -p -m 644 pagure-ev/pagure_ev.se
sed -e "s|/usr/libexec|%{_libexecdir}|g" -i %{buildroot}/%{_unitdir}/*.service
# Change default_config.py to use the correct libexecdir
-sed -e "s|/usr/libexec|%{_libexecdir}|g" -i %{buildroot}/%{python3_sitelib}/pagure/default_config.py
+sed -e "s|/usr/libexec|%{_libexecdir}|g" -i %{buildroot}/%{python_sitelib}/pagure/default_config.py
# Fix the shebang for various scripts
sed -e "s|#!/usr/bin/env python|#!%{__python3}|" -i \
%{buildroot}/%{_libexecdir}/pagure-ev/*.py \
%{buildroot}/%{_libexecdir}/pagure/*.py \
%{buildroot}/%{_datadir}/pagure/*.py \
- %{buildroot}/%{python3_sitelib}/pagure/hooks/files/*.py \
- %{buildroot}/%{python3_sitelib}/pagure/hooks/files/hookrunner \
- %{buildroot}/%{python3_sitelib}/pagure/hooks/files/post-receive \
- %{buildroot}/%{python3_sitelib}/pagure/hooks/files/pre-receive \
- %{buildroot}/%{python3_sitelib}/pagure/hooks/files/repospannerhook
+ %{buildroot}/%{python_sitelib}/pagure/hooks/files/*.py \
+ %{buildroot}/%{python_sitelib}/pagure/hooks/files/hookrunner \
+ %{buildroot}/%{python_sitelib}/pagure/hooks/files/post-receive \
+ %{buildroot}/%{python_sitelib}/pagure/hooks/files/pre-receive \
+ %{buildroot}/%{python_sitelib}/pagure/hooks/files/repospannerhook
# Switch interpreter for systemd units to correct Python interpreter
sed -e "s|/usr/bin/python|%{__python3}|g" -i %{buildroot}/%{_unitdir}/*.service
# Make symlinks for default theme packages
-mv %{buildroot}/%{python3_sitelib}/pagure/themes/default %{buildroot}/%{python3_sitelib}/pagure/themes/upstream
-ln -sr %{buildroot}/%{python3_sitelib}/pagure/themes/upstream %{buildroot}/%{python3_sitelib}/pagure/themes/default
-ln -sr %{buildroot}/%{python3_sitelib}/pagure/themes/chameleon %{buildroot}/%{python3_sitelib}/pagure/themes/default.openSUSE
+mv %{buildroot}/%{python_sitelib}/pagure/themes/default %{buildroot}/%{python_sitelib}/pagure/themes/upstream
+ln -sr %{buildroot}/%{python_sitelib}/pagure/themes/upstream %{buildroot}/%{python_sitelib}/pagure/themes/default
+ln -sr %{buildroot}/%{python_sitelib}/pagure/themes/chameleon %{buildroot}/%{python_sitelib}/pagure/themes/default.openSUSE
# Run fdupes
-%fdupes %{buildroot}/%{python3_sitelib}
+%fdupes %{buildroot}/%{python_sitelib}
%fdupes doc/_build/html
# Make log directory and files
@@ -486,8 +493,8 @@ done
runnerhooks="post-receive pre-receive"
for runnerhook in $runnerhooks; do
- rm -rf %{buildroot}/%{python3_sitelib}/pagure/hooks/files/$runnerhook
- ln -sf hookrunner %{buildroot}/%{python3_sitelib}/pagure/hooks/files/$runnerhook
+ rm -rf %{buildroot}/%{python_sitelib}/pagure/hooks/files/$runnerhook
+ ln -sf hookrunner %{buildroot}/%{python_sitelib}/pagure/hooks/files/$runnerhook
done
# Make the rcFOO symlinks for systemd services
@@ -626,14 +633,14 @@ echo "See %{_docdir}/%{name}/README.SUSE
%exclude %{_datadir}/pagure/comment_email_milter.py*
%{_datadir}/pagure/alembic/
%{_libexecdir}/pagure/
-%{python3_sitelib}/pagure/
-%exclude %{python3_sitelib}/pagure/themes/default
-%exclude %{python3_sitelib}/pagure/themes/default.openSUSE
-%exclude %{python3_sitelib}/pagure/themes/upstream
-%exclude %{python3_sitelib}/pagure/themes/pagureio
-%exclude %{python3_sitelib}/pagure/themes/srcfpo
-%exclude %{python3_sitelib}/pagure/themes/chameleon
-%{python3_sitelib}/pagure*.egg-info
+%{python_sitelib}/pagure/
+%exclude %{python_sitelib}/pagure/themes/default
+%exclude %{python_sitelib}/pagure/themes/default.openSUSE
+%exclude %{python_sitelib}/pagure/themes/upstream
+%exclude %{python_sitelib}/pagure/themes/pagureio
+%exclude %{python_sitelib}/pagure/themes/srcfpo
+%exclude %{python_sitelib}/pagure/themes/chameleon
+%{python_sitelib}/pagure-%{version}.dist-info
%{_bindir}/pagure-admin
%{_unitdir}/pagure_worker.service
%{_unitdir}/pagure_authorized_keys_worker.service
@@ -675,27 +682,27 @@ echo "See %{_docdir}/%{name}/README.SUSE
%files theme-upstream
%license LICENSE
-%{python3_sitelib}/pagure/themes/upstream/
+%{python_sitelib}/pagure/themes/upstream/
%files theme-pagureio
%license LICENSE
-%{python3_sitelib}/pagure/themes/pagureio/
+%{python_sitelib}/pagure/themes/pagureio/
%files theme-srcfpo
%license LICENSE
-%{python3_sitelib}/pagure/themes/srcfpo/
+%{python_sitelib}/pagure/themes/srcfpo/
%files theme-chameleon
%license LICENSE
-%{python3_sitelib}/pagure/themes/chameleon/
+%{python_sitelib}/pagure/themes/chameleon/
%files theme-default-upstream
%license LICENSE
-%{python3_sitelib}/pagure/themes/default
+%{python_sitelib}/pagure/themes/default
%files theme-default-openSUSE
%license LICENSE
-%{python3_sitelib}/pagure/themes/default.openSUSE
+%{python_sitelib}/pagure/themes/default.openSUSE
%files milters
%license LICENSE