Hello community, here is the log from the commit of package pagure for openSUSE:Leap:15.2 checked in at 2020-05-21 12:59:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/pagure (Old) and /work/SRC/openSUSE:Leap:15.2/.pagure.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pagure" Thu May 21 12:59:16 2020 rev:12 rq:806976 version:5.10.0 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/pagure/pagure.changes 2020-04-08 12:49:26.126375137 +0200 +++ /work/SRC/openSUSE:Leap:15.2/.pagure.new.2738/pagure.changes 2020-05-21 12:59:18.254790459 +0200 @@ -1,0 +2,51 @@ +Mon May 18 13:31:41 UTC 2020 - Neal Gompa <ngomp...@gmail.com> + +- Backport fix from upstream to fix stats page + + Patch: 0001-Make-the-stats-page-use-the-new-stats-API-endpoint.patch +- Add missing step to start pagure web services for nginx setup in quickstart +- Fix directory mode for ssh directory to fix conflict with gitolite + +------------------------------------------------------------------- +Fri May 15 01:05:30 UTC 2020 - Neal Gompa <ngomp...@gmail.com> + +- Update to 5.10.0 + + Allow viewing issues via the API using project-less API token + + Various improvements to the srcfpo theme + + Make pagure work with recent sqlalchemy versions (>= 1.3.0) + + Add a new API endpoint to retrieve detailed stats about the issues + + Improve the graphs displayed in the stats tab of each projects + + Add a new graph tracking the number of open issues throughout the year + + Improve loading tickets from git + + Support pygit2 >= 1.1.0 + + Add missing endpoints to the API documentation + + Add support for wtforms >= 2.3 + - Add dependency on email_validator in such case + + Fix sorting users by their username when using python3 + + Correct the API documentation for updating the watchers of a project + + Ensure the name of the headers are always of the correct type + (especially when using python3) + + Ensure aclchecker and keyhelper can work with APP_URL having a trailing slash + + Add a new git auth backend which can manage the .ssh/authorized_keys file + directly + + Update information about supported Git auth backends + + Add support for arrow >= 0.15.6 + + Fix getting the milter running with python3 + + Fix mirroring project hosted remotely + + Add url_path property to class User (and thus in the API) + + Improve email text for new user registration + + Set the USER environment variable when pushing over http + + Add support for git push via http using basic auth relying on API token + + If pagure is set up for local auth, allow git push via https to use it + + Add an example nginx configuration file for pagure + + Create two subpackages in the pagure for the apache and nginx configuration + files + + Add some documentation on how git push over http works in pagure + + Make pagure compatible with the latest version of flake8 + + Add PAGURE_PLUGINS_CONFIG setting in pagure configuration file +- Refresh quick start instructions for new configuration options +- Drop unneeded patch + + Patch: 0501-Revert-Add-a-upper-limit-to-sqlalchemy.patch +- Refresh default configuration patch + + Patch: pagure-5.0-default-example-cfg.patch + +------------------------------------------------------------------- Old: ---- 0501-Revert-Add-a-upper-limit-to-sqlalchemy.patch pagure-5.9.1.tar.gz New: ---- 0001-Make-the-stats-page-use-the-new-stats-API-endpoint.patch pagure-5.10.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pagure.spec ++++++ --- /var/tmp/diff_new_pack.rM8X70/_old 2020-05-21 12:59:18.702791434 +0200 +++ /var/tmp/diff_new_pack.rM8X70/_new 2020-05-21 12:59:18.706791443 +0200 @@ -23,7 +23,7 @@ Name: pagure -Version: 5.9.1 +Version: 5.10.0 Release: 0 Summary: A git-centered forge Group: Development/Tools/Version Control @@ -41,10 +41,9 @@ Source10: pagure-README.SUSE # Backports from upstream +## Backport fix to make stats page work +Patch0001: 0001-Make-the-stats-page-use-the-new-stats-API-endpoint.patch -# Not yet upstreamable patches -## Allow Pagure to use SQLAlchemy >= 1.3.0 -Patch0501: 0501-Revert-Add-a-upper-limit-to-sqlalchemy.patch # SUSE-specific fixes ## Change the defaults in the example config to match packaging @@ -54,6 +53,7 @@ BuildRequires: apache2 +BuildRequires: nginx BuildRequires: fdupes BuildRequires: systemd-rpm-macros BuildRequires: python3-devel @@ -68,6 +68,7 @@ BuildRequires: python3-chardet BuildRequires: python3-cryptography BuildRequires: python3-docutils +BuildRequires: python3-email_validator BuildRequires: python3-Flask BuildRequires: python3-Flask-WTF BuildRequires: python3-Markdown @@ -98,6 +99,7 @@ Requires: python3-chardet Requires: python3-cryptography Requires: python3-docutils +Requires: python3-email_validator Requires: python3-Flask Requires: python3-Flask-WTF Requires: python3-Markdown @@ -114,8 +116,6 @@ Requires: python3-munch Requires: python3-redis -Requires: apache2-mod_wsgi-python3 - # Required for celery Requires: python3-pytz @@ -130,6 +130,11 @@ # If using MariaDB/MySQL, the correct driver should be installed Recommends: (python3-PyMySQL if mysql-server) +# If using Apache web server, the correct configuration should be installed +Recommends: (%{name}-web-apache-httpd if apache2) + +# If using Nginx web server, the correct configuration should be installed +Recommends: (%{name}-web-nginx if nginx) # The default theme is required Requires: %{name}-theme-default @@ -156,6 +161,28 @@ please read %{_docdir}/%{name}/README.SUSE. +%package web-apache-httpd +Summary: Apache HTTPD configuration for Pagure +Requires: %{name} = %{version}-%{release} +Requires: apache2-mod_wsgi-python3 +# Apache config moved out to its own subpackage +Obsoletes: %{name} < 5.10 +Conflicts: %{name} < 5.10 +%description web-apache-httpd +This package provides the configuration files for deploying +a Pagure server using the Apache HTTPD server. + + +%package web-nginx +Summary: Nginx configuration for Pagure +Requires: %{name} = %{version}-%{release} +Requires: nginx +Requires: python3-gunicorn +%description web-nginx +This package provides the configuration files for deploying +a Pagure server using the Nginx web server. + + %package theme-upstream Summary: Base theme for the Pagure web interface Requires: %{name} = %{version}-%{release} @@ -309,7 +336,11 @@ # Install apache configuration file mkdir -p %{buildroot}/%{_sysconfdir}/apache2/vhosts.d -install -p -m 644 files/pagure.conf %{buildroot}/%{_sysconfdir}/apache2/vhosts.d/pagure.conf +install -p -m 644 files/pagure-apache-httpd.conf %{buildroot}/%{_sysconfdir}/apache2/vhosts.d/pagure.conf + +# Install nginx configuration file +mkdir -p %{buildroot}/%{_sysconfdir}/nginx/vhosts.d/ +install -p -m 644 files/pagure-nginx.conf %{buildroot}/%{_sysconfdir}/nginx/vhosts.d/pagure.conf # Install configuration file mkdir -p %{buildroot}/%{_sysconfdir}/pagure @@ -340,11 +371,25 @@ # Install the alembic revisions cp -r alembic %{buildroot}/%{_datadir}/pagure +# Install the systemd file for the web frontend +mkdir -p %{buildroot}/%{_unitdir} +install -p -m 644 files/pagure_web.service \ + %{buildroot}/%{_unitdir}/pagure_web.service + +# Install the systemd file for the docs web frontend +mkdir -p %{buildroot}/%{_unitdir} +install -p -m 644 files/pagure_docs_web.service \ + %{buildroot}/%{_unitdir}/pagure_docs_web.service + # Install the systemd file for the worker mkdir -p %{buildroot}/%{_unitdir} install -p -m 644 files/pagure_worker.service \ %{buildroot}/%{_unitdir}/pagure_worker.service +# Install the systemd file for the authorized_keys worker +install -p -m 644 files/pagure_authorized_keys_worker.service \ + %{buildroot}/%{_unitdir}/pagure_authorized_keys_worker.service + # Install the systemd file for the gitolite worker install -p -m 644 files/pagure_gitolite_worker.service \ %{buildroot}/%{_unitdir}/pagure_gitolite_worker.service @@ -418,8 +463,10 @@ # Switch interpreter for systemd units to correct Python interpreter sed -e "s|/usr/bin/python|%{__python3}|g" -i %{buildroot}/%{_unitdir}/*.service -# Change to correct static file path for apache httpd -sed -e "s/pythonX.Y/python%{python3_version}/g" -i %{buildroot}/%{_sysconfdir}/apache2/vhosts.d/pagure.conf +# Change to correct static file path for apache httpd and nginx +sed -e "s/pythonX.Y/python%{python3_version}/g" -i \ + %{buildroot}/%{_sysconfdir}/apache2/vhosts.d/pagure.conf \ + %{buildroot}/%{_sysconfdir}/nginx/vhosts.d/pagure.conf # Make symlinks for default theme packages mv %{buildroot}/%{python3_sitelib}/pagure/themes/default %{buildroot}/%{python3_sitelib}/pagure/themes/upstream @@ -430,6 +477,15 @@ %fdupes %{buildroot}/%{python3_sitelib} %fdupes doc/ +# Make log directory and files +mkdir -p %{buildroot}/%{_localstatedir}/log/pagure +logfiles="web docs_web" + +for logfile in $logfiles; do + touch %{buildroot}/%{_localstatedir}/log/pagure/access_${logfile}.log + touch %{buildroot}/%{_localstatedir}/log/pagure/error_${logfile}.log +done + # Regenerate clobbered symlinks (Cf. https://pagure.io/pagure/issue/3782) runnerhooks="post-receive pre-receive" @@ -440,7 +496,7 @@ # Make the rcFOO symlinks for systemd services mkdir -p %{buildroot}/%{_sbindir} -paguresvcs="api_key_expire_mail ci ev gitolite_worker loadjson logcom milter mirror webhook worker mirror_project_in" +paguresvcs="api_key_expire_mail ci ev authorized_keys_worker gitolite_worker loadjson logcom milter mirror webhook worker mirror_project_in" for paguresvc in $paguresvcs; do ln -sf %{_sbindir}/service %{buildroot}/%{_sbindir}/rcpagure_$paguresvc done @@ -451,6 +507,7 @@ mkdir -p %{buildroot}/srv/gitolite/repositories/{,docs,forks,requests,tickets} mkdir -p %{buildroot}/srv/gitolite/remotes mkdir -p %{buildroot}/srv/gitolite/.gitolite/{conf,keydir,logs} +mkdir -p %{buildroot}/srv/gitolite/.ssh # Add empty gitolite config file touch %{buildroot}/srv/gitolite/.gitolite/conf/gitolite.conf @@ -465,16 +522,15 @@ echo "Create wsgi rundir if it doesn't exist..." mkdir -p /srv/www/run || : -echo "Setting up facls..." -setfacl -m user:wwwrun:rx --default /srv/gitolite || : -setfacl -Rdm user:wwwrun:rx /srv/gitolite || : -setfacl -Rm user:wwwrun:rx /srv/gitolite || : - echo "See %{_docdir}/%{name}/README.SUSE to continue" %systemd_post pagure_worker.service +%systemd_post pagure_authorized_keys_worker.service %systemd_post pagure_gitolite_worker.service %systemd_post pagure_api_key_expire_mail.timer %systemd_post pagure_mirror_project_in.timer +%post web-nginx +%systemd_post pagure_web.service +%systemd_post pagure_docs_web.service %post milters %tmpfiles_create %{_tmpfilesdir}/%{name}-milter.conf %systemd_post pagure_milter.service @@ -493,9 +549,13 @@ %preun %systemd_preun pagure_worker.service +%systemd_preun pagure_authorized_keys_worker.service %systemd_preun pagure_gitolite_worker.service %systemd_preun pagure_api_key_expire_mail.timer %systemd_preun pagure_mirror_project_in.timer +%preun web-nginx +%systemd_preun pagure_web.service +%systemd_preun pagure_docs_web.service %preun milters %systemd_preun pagure_milter.service %preun ev @@ -513,9 +573,13 @@ %postun %systemd_postun_with_restart pagure_worker.service +%systemd_postun_with_restart pagure_authorized_keys_worker.service %systemd_postun_with_restart pagure_gitolite_worker.service %systemd_postun pagure_api_key_expire_mail.timer %systemd_postun pagure_mirror_project_in.timer +%postun web-nginx +%systemd_postun_with_restart pagure_web.service +%systemd_postun_with_restart pagure_docs_web.service %postun milters %systemd_postun_with_restart pagure_milter.service %postun ev @@ -533,14 +597,12 @@ %files -%doc README.SUSE README.rst UPGRADING.rst doc/ files/gitolite3.rc files/pagure.conf files/pagure.cfg.sample +%doc README.SUSE README.rst UPGRADING.rst doc/ files/gitolite3.rc files/pagure.cfg.sample %license LICENSE -%config(noreplace) %{_sysconfdir}/apache2/vhosts.d/pagure.conf %config(noreplace) %{_sysconfdir}/pagure/pagure.cfg %config(noreplace) %{_sysconfdir}/pagure/alembic.ini %dir %{_sysconfdir}/pagure/ %dir %{_datadir}/pagure/ -%config(noreplace) %{_datadir}/pagure/*.wsgi %{_datadir}/pagure/*.py* %exclude %{_datadir}/pagure/comment_email_milter.py* %{_datadir}/pagure/alembic/ @@ -555,6 +617,7 @@ %{python3_sitelib}/pagure*.egg-info %{_bindir}/pagure-admin %{_unitdir}/pagure_worker.service +%{_unitdir}/pagure_authorized_keys_worker.service %{_unitdir}/pagure_gitolite_worker.service %{_unitdir}/pagure_api_key_expire_mail.service %{_unitdir}/pagure_api_key_expire_mail.timer @@ -562,6 +625,7 @@ %{_unitdir}/pagure_mirror_project_in.timer %{_sbindir}/rcpagure_api_key_expire_mail %{_sbindir}/rcpagure_worker +%{_sbindir}/rcpagure_authorized_keys_worker %{_sbindir}/rcpagure_gitolite_worker %{_sbindir}/rcpagure_mirror_project_in # Pagure data content @@ -569,11 +633,29 @@ %attr(-,git,git) %dir /srv/gitolite/remotes %attr(-,git,git) %dir /srv/gitolite/repositories/{,docs,forks,requests,tickets} %attr(-,git,git) %dir /srv/gitolite/.gitolite/{,conf,keydir,logs} +%attr(750,git,git) %dir /srv/gitolite/.ssh %attr(-,git,git) %config(noreplace) /srv/gitolite/.gitolite/conf/gitolite.conf %attr(-,git,git) %config(noreplace) /srv/gitolite/.gitolite.rc %attr(-,git,git) %dir /srv/www/pagure-releases +%files web-apache-httpd +%license LICENSE +%doc files/pagure-apache-httpd.conf +%config(noreplace) %{_sysconfdir}/apache2/vhosts.d/pagure.conf +%config(noreplace) %{_datadir}/pagure/*.wsgi + + +%files web-nginx +%license LICENSE +%doc files/pagure-nginx.conf +%config(noreplace) %{_sysconfdir}/nginx/vhosts.d/pagure.conf +%{_unitdir}/pagure_web.service +%{_unitdir}/pagure_docs_web.service +%attr(-,git,git) %dir %{_localstatedir}/log/pagure +%ghost %{_localstatedir}/log/pagure/*.log + + %files theme-upstream %license LICENSE %{python3_sitelib}/pagure/themes/upstream/ ++++++ 0001-Make-the-stats-page-use-the-new-stats-API-endpoint.patch ++++++ >From 990a357f8edb2a25b791be249dd10c889422b353 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon <pin...@pingoured.fr> Date: Fri, 15 May 2020 14:19:30 +0200 Subject: [PATCH] Make the stats page use the new stats API endpoint We originally designed this code to use the existing API endpoint with an argument to say that it wants the detailed version of the stats. We later changed our mind and move the details to a new API endpoint, but apparently we forgot to update the UI to point to the new API endpoint (while all the JS code is compatible/expected this data). Signed-off-by: Pierre-Yves Chibon <pin...@pingoured.fr> --- pagure/templates/repo_stats.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pagure/templates/repo_stats.html b/pagure/templates/repo_stats.html index 0e92b674..1f67477c 100644 --- a/pagure/templates/repo_stats.html +++ b/pagure/templates/repo_stats.html @@ -64,11 +64,10 @@ issues_history_stats_plot_call = function() { $("#commiter_list").hide(); $(".commit_trend").hide(); var _stats_url = "{{ url_for( - 'api_ns.api_view_issues_history_stats', + 'api_ns.api_view_issues_history_detailed_stats', repo=g.repo.name, username=username, - namespace=g.repo.namespace, - detailed=True) }}"; + namespace=g.repo.namespace) }}"; var _s = $("#data_stats_spinner"); _s.html( "<img id='spinnergif' src='{{ url_for('static', filename='images/spinner.gif') }}?version={{ g.version}}'>" -- 2.26.1 ++++++ pagure-5.0-default-example-cfg.patch ++++++ --- /var/tmp/diff_new_pack.rM8X70/_old 2020-05-21 12:59:18.742791521 +0200 +++ /var/tmp/diff_new_pack.rM8X70/_new 2020-05-21 12:59:18.742791521 +0200 @@ -1,6 +1,6 @@ -diff -rup pagure-5.0/files/gitolite3.rc pagure-5.0.cfg-defs/files/gitolite3.rc ---- pagure-5.0/files/gitolite3.rc 2018-08-20 05:28:38.000000000 -0400 -+++ pagure-5.0.cfg-defs/files/gitolite3.rc 2018-09-24 17:29:01.927780974 -0400 +diff -rup pagure/files/gitolite3.rc pagure.cfg-defs/files/gitolite3.rc +--- pagure/files/gitolite3.rc 2020-05-08 21:32:56.673172022 -0400 ++++ pagure.cfg-defs/files/gitolite3.rc 2020-05-08 21:37:03.018641878 -0400 @@ -16,7 +16,7 @@ # ------------------------------------------------------------------ @@ -10,10 +10,61 @@ # default umask gives you perms of '0700'; see the rc file docs for # how/why you might change this -diff -rup pagure-5.0/files/pagure.cfg.sample pagure-5.0.cfg-defs/files/pagure.cfg.sample ---- pagure-5.0/files/pagure.cfg.sample 2018-09-24 15:57:50.000000000 -0400 -+++ pagure-5.0.cfg-defs/files/pagure.cfg.sample 2018-09-24 17:29:01.928780964 -0400 -@@ -68,21 +68,21 @@ GIT_URL_GIT = 'git://localhost.localdoma +diff -rup pagure/files/pagure-apache-httpd.conf pagure.cfg-defs/files/pagure-apache-httpd.conf +--- pagure/files/pagure-apache-httpd.conf 2020-05-08 21:33:38.860594994 -0400 ++++ pagure.cfg-defs/files/pagure-apache-httpd.conf 2020-05-08 21:39:33.815153778 -0400 +@@ -29,9 +29,9 @@ + ## Use secure TLSv1.1 and TLSv1.2 ciphers + #Header always add Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" + +- #SSLCertificateFile /etc/pki/tls/....crt +- #SSLCertificateChainFile /etc/pki/tls/....intermediate.crt +- #SSLCertificateKeyFile /etc/pki/tls/....key ++ #SSLCertificateFile /etc/ssl/....crt ++ #SSLCertificateChainFile /etc/ssl/....intermediate.crt ++ #SSLCertificateKeyFile /etc/ssl/....key + + #Alias /static /usr/lib/pythonX.Y/site-packages/pagure/static/ + +@@ -60,9 +60,9 @@ + ## Use secure TLSv1.1 and TLSv1.2 ciphers + #Header always add Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" + +- #SSLCertificateFile /etc/pki/tls/....crt +- #SSLCertificateChainFile /etc/pki/tls/....intermediate.crt +- #SSLCertificateKeyFile /etc/pki/tls/....key ++ #SSLCertificateFile /etc/ssl/....crt ++ #SSLCertificateChainFile /etc/ssl/....intermediate.crt ++ #SSLCertificateKeyFile /etc/ssl/....key + + #Alias /static /usr/lib/pythonX.Y/site-packages/pagure/static/ + #Alias /releases /var/www/releases +@@ -97,7 +97,7 @@ + #</IfModule> + #</Location> + +- #<Directory /var/www/releases> ++ #<Directory /srv/www/pagure-releases> + #Options +Indexes + #</Directory> + +diff -rup pagure/files/pagure.cfg.sample pagure.cfg-defs/files/pagure.cfg.sample +--- pagure/files/pagure.cfg.sample 2020-05-08 21:32:56.679172082 -0400 ++++ pagure.cfg-defs/files/pagure.cfg.sample 2020-05-08 22:03:36.961622933 -0400 +@@ -72,25 +72,33 @@ DOC_APP_URL = 'http://docs.localhost.loc + + ### The URL to use to clone git repositories. + GIT_URL_SSH = 'ssh://git@localhost.localdomain/' +-GIT_URL_GIT = 'git://localhost.localdomain/' ++GIT_URL_GIT = 'http://localhost.localdomain/' ++ ++ ++### Folder containing the pagure user SSH authorized keys ++SSH_FOLDER = os.path.join( ++ '/srv', ++ 'gitolite', ++ '.ssh' ++) ### Folder containing to the git repos GIT_FOLDER = os.path.join( @@ -42,7 +93,7 @@ 'remotes' ) -@@ -92,21 +92,23 @@ VIRUS_SCAN_ATTACHMENTS = False +@@ -100,21 +108,23 @@ VIRUS_SCAN_ATTACHMENTS = False ### Configuration file for gitolite GITOLITE_CONFIG = os.path.join( @@ -70,61 +121,78 @@ ### Path to the gitolite.rc file GL_RC = None -diff -rup pagure-5.0/files/pagure.conf pagure-5.0.cfg-defs/files/pagure.conf ---- pagure-5.0/files/pagure.conf 2018-08-23 15:08:03.000000000 -0400 -+++ pagure-5.0.cfg-defs/files/pagure.conf 2018-09-24 17:29:01.928780964 -0400 -@@ -29,9 +29,9 @@ - ## Use secure TLSv1.1 and TLSv1.2 ciphers - #Header always add Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" - -- #SSLCertificateFile /etc/pki/tls/....crt -- #SSLCertificateChainFile /etc/pki/tls/....intermediate.crt -- #SSLCertificateKeyFile /etc/pki/tls/....key -+ #SSLCertificateFile /etc/ssl/....crt -+ #SSLCertificateChainFile /etc/ssl/....intermediate.crt -+ #SSLCertificateKeyFile /etc/ssl/....key - - #Alias /static /usr/lib/pythonX.Y/site-packages/pagure/static/ - -@@ -60,24 +60,24 @@ - ## Use secure TLSv1.1 and TLSv1.2 ciphers - #Header always add Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" - -- #SSLCertificateFile /etc/pki/tls/....crt -- #SSLCertificateChainFile /etc/pki/tls/....intermediate.crt -- #SSLCertificateKeyFile /etc/pki/tls/....key -+ #SSLCertificateFile /etc/ssl/....crt -+ #SSLCertificateChainFile /etc/ssl/....intermediate.crt -+ #SSLCertificateKeyFile /etc/ssl/....key - - #Alias /static /usr/lib/pythonX.Y/site-packages/pagure/static/ -- #Alias /releases /var/www/releases -+ #Alias /releases /srv/www/pagure-releases - - ## Section used to support cloning git repo over http (https in this case) -- #SetEnv GIT_PROJECT_ROOT /path/to/git/repositories -+ #SetEnv GIT_PROJECT_ROOT /srv/gitolite/repositories - -- #AliasMatch ^/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /path/to/git/repositories/$1 -- #AliasMatch ^/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /path/to/git/repositories/$1 -+ #AliasMatch ^/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /srv/gitolite/repositories/$1 -+ #AliasMatch ^/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /srv/gitolite/repositories/$1 - #ScriptAliasMatch \ - #"(?x)^/(.*/(HEAD | \ - #info/refs | \ - #objects/info/[^/]+ | \ - #git-(upload|receive)-pack))$" \ -- #/usr/libexec/git-core/git-http-backend/$1 -+ #/usr/lib/git/git-http-backend/$1 - - #<Location /> - #WSGIProcessGroup pagure -@@ -106,7 +106,7 @@ - #</IfModule> - #</Location> - -- #<Directory /var/www/releases> -+ #<Directory /srv/www/pagure-releases> - #Options +Indexes - #</Directory> - +Only in pagure.cfg-defs/files: pagure.cfg.sample.orig +diff -rup pagure/files/pagure_docs_web.service pagure.cfg-defs/files/pagure_docs_web.service +--- pagure/files/pagure_docs_web.service 2020-05-08 21:33:38.862595014 -0400 ++++ pagure.cfg-defs/files/pagure_docs_web.service 2020-05-08 21:41:42.996448966 -0400 +@@ -5,7 +5,7 @@ Documentation=https://pagure.io/pagure + + + [Service] +-ExecStart=/usr/bin/gunicorn --workers 4 --env PAGURE_CONFIG=/etc/pagure/pagure.cfg --access-logfile /var/log/pagure/access_docs_web.log --error-logfile /var/log/pagure/error_docs_web.log --bind unix:/tmp/pagure_docs_web.sock pagure.docs_server:APP ++ExecStart=/usr/bin/gunicorn --workers 4 --env PAGURE_CONFIG=/etc/pagure/pagure.cfg --access-logfile /var/log/pagure/access_docs_web.log --error-logfile /var/log/pagure/error_docs_web.log --bind unix:/srv/gitolite/.pagure_docs_web.sock pagure.docs_server:APP + Type=simple + User=git + Group=git +diff -rup pagure/files/pagure-nginx.conf pagure.cfg-defs/files/pagure-nginx.conf +--- pagure/files/pagure-nginx.conf 2020-05-08 21:33:38.860594994 -0400 ++++ pagure.cfg-defs/files/pagure-nginx.conf 2020-05-08 21:43:48.199704257 -0400 +@@ -12,15 +12,15 @@ + #access_log /var/log/nginx/pagure_docs.access.log; + #error_log /var/log/nginx/pagure_docs.error.log; + +- #ssl_certificate /etc/pki/tls/....crt +- #ssl_certificate_key /etc/pki/tls/....key ++ #ssl_certificate /etc/ssl/....crt ++ #ssl_certificate_key /etc/ssl/....key + + #location @pagure_docs { + #proxy_set_header Host $http_host; + #proxy_set_header X-Real-IP $remote_addr; + #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + #proxy_set_header X-Forwarded-Proto $scheme; +- #proxy_pass http://unix:/tmp/pagure_docs_web.sock; ++ #proxy_pass http://unix:/srv/gitolite/.pagure_docs_web.sock; + #} + + #location / { +@@ -48,15 +48,15 @@ + #access_log /var/log/nginx/pagure.access.log; + #error_log /var/log/nginx/pagure.error.log; + +- #ssl_certificate /etc/pki/tls/....crt +- #ssl_certificate_key /etc/pki/tls/....key ++ #ssl_certificate /etc/ssl/....crt ++ #ssl_certificate_key /etc/ssl/....key + + #location @pagure { + #proxy_set_header Host $http_host; + #proxy_set_header X-Real-IP $remote_addr; + #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + #proxy_set_header X-Forwarded-Proto $scheme; +- #proxy_pass http://unix:/tmp/pagure_web.sock; ++ #proxy_pass http://unix:/srv/gitolite/.pagure_web.sock; + #} + + #location / { +@@ -68,7 +68,7 @@ + #} + + #location /releases { +- #alias /var/www/releases/; ++ #alias /srv/www/pagure-releases/; + #autoindex on; + #} + +diff -rup pagure/files/pagure_web.service pagure.cfg-defs/files/pagure_web.service +--- pagure/files/pagure_web.service 2020-05-08 21:33:38.862595014 -0400 ++++ pagure.cfg-defs/files/pagure_web.service 2020-05-08 21:41:26.941287994 -0400 +@@ -5,7 +5,7 @@ Documentation=https://pagure.io/pagure + + + [Service] +-ExecStart=/usr/bin/gunicorn --workers 4 --env PAGURE_CONFIG=/etc/pagure/pagure.cfg --access-logfile /var/log/pagure/access_web.log --error-logfile /var/log/pagure/error_web.log --bind unix:/tmp/pagure_web.sock "pagure.flask_app:create_app()" ++ExecStart=/usr/bin/gunicorn --workers 4 --env PAGURE_CONFIG=/etc/pagure/pagure.cfg --access-logfile /var/log/pagure/access_web.log --error-logfile /var/log/pagure/error_web.log --bind unix:/srv/gitolite/.pagure_web.sock "pagure.flask_app:create_app()" + Type=simple + User=git + Group=git ++++++ pagure-5.9.1.tar.gz -> pagure-5.10.0.tar.gz ++++++ /work/SRC/openSUSE:Leap:15.2/pagure/pagure-5.9.1.tar.gz /work/SRC/openSUSE:Leap:15.2/.pagure.new.2738/pagure-5.10.0.tar.gz differ: char 5, line 1 ++++++ pagure-README.SUSE ++++++ --- /var/tmp/diff_new_pack.rM8X70/_old 2020-05-21 12:59:18.798791643 +0200 +++ /var/tmp/diff_new_pack.rM8X70/_new 2020-05-21 12:59:18.798791643 +0200 @@ -7,6 +7,8 @@ mkdir -p /srv/gitolite/pseudo mkdir -p /srv/gitolite/remotes mkdir -p /srv/gitolite/.gitolite/{conf,keydir,logs} +mkdir -p /srv/gitolite/.ssh +chmod 700 /srv/gitolite/.ssh touch /srv/gitolite/.gitolite/conf/gitolite.conf @@ -17,10 +19,6 @@ mkdir -p /srv/www/run -setfacl -m user:wwwrun:rx --default /srv/gitolite -setfacl -Rdm user:wwwrun:rx /srv/gitolite -setfacl -Rm user:wwwrun:rx /srv/gitolite - 1. Install and set up a database Option A: PostgreSQL @@ -84,13 +82,55 @@ 4. Edit /etc/pagure/pagure.cfg to set up pagure settings as appropriate. +As we set up a database earlier using PostgreSQL or MariaDB, comment out the DB_URL for SQLite and +uncomment the correct one. Change the URL to match your database server location. + +You'll also want to change email address and domain used for this instance to something real, especially if +you're using with HTTPS or having it public facing. + +While currently Pagure defaults to the somewhat brittle legacy Gitolite backend, you should use +the more reliable and performant internal backend. + +This is done by setting the following in /etc/pagure/pagure.cfg: + +GIT_AUTH_BACKEND = "pagure_authorized_keys" +HTTP_REPO_ACCESS_GITOLITE = None + +SSH_COMMAND_NON_REPOSPANNER = ([ + "/usr/bin/%(cmd)s", + "/srv/gitolite/repositories/%(reponame)s", +], {"GL_USER": "%(username)s"}) + + For details on all the options in pagure.cfg, see https://docs.pagure.org/pagure/configuration.html 5. Populate the database python3 /usr/share/pagure/pagure_createdb.py -c /etc/pagure/pagure.cfg -i /etc/pagure/alembic.ini -6. Edit /etc/apache2/vhosts.d/pagure.conf to set up web settings as appropriate. +Note: On upgrades, just drop the "-i /etc/pagure/alembic.ini", and the script will do the correct +thing to upgrade the database. + +6. Install either Apache HTTPD or Nginx web server and set up web configuration + +Option A: Apache HTTPD + +zypper install pagure-web-apache-httpd + +A1. Edit /etc/apache2/vhosts.d/pagure.conf to set up web settings as appropriate. + +Most of the settings just need to be uncommented to work. However, you may need to tweak based +on whether or not you're using HTTPS and if you are using HTTPS, where your certs are and what your domain(s) are. + +Option B: Nginx + +zypper install pagure-web-nginx +systemctl enable --now pagure_web.service pagure_docs_web.service + +B1. Edit /etc/nginx/vhosts.d/pagure.conf to set up web settings as appropriate. + +Most of the settings just need to be uncommented to work. However, you may need to tweak based +on whether or not you're using HTTPS and if you are using HTTPS, where your certs are and what your domain(s) are. 7. Open ports in the firewall as appropriate @@ -102,8 +142,8 @@ 8. Enable and start pagure services -systemctl enable --now pagure_worker pagure_gitolite_worker pagure_api_key_expire_mail.timer pagure_mirror_project_in.timer +systemctl enable --now pagure_worker.service pagure_authorized_keys_worker.service pagure_api_key_expire_mail.timer pagure_mirror_project_in.timer -9. Enable and start apache2, or restart if it's already running +9. Enable and start your webserver, or restart if it's already running For more details on setup, take a look at the official Pagure documentation: https://docs.pagure.org/pagure/