openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
December 2023
- 1 participants
- 1465 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ardour for openSUSE:Factory checked in at 2023-12-28 23:01:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ardour (Old)
and /work/SRC/openSUSE:Factory/.ardour.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ardour"
Thu Dec 28 23:01:22 2023 rev:9 rq:1135248 version:8.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ardour/ardour.changes 2023-10-23 23:41:09.539951775 +0200
+++ /work/SRC/openSUSE:Factory/.ardour.new.28375/ardour.changes 2023-12-28 23:03:01.077851379 +0100
@@ -1,0 +2,22 @@
+Fri Dec 22 09:12:34 UTC 2023 - Christophe Marin <christophe(a)krop.fr>
+
+- Update to 8.2.0. See https://ardour.org/whatsnew.html for the
+ full list of changes
+ New features:
+ * Change default sample rate to 48kHz.
+ * Keep track of the visibility of GUIs for LV2 plugins using the
+ externalUI extension.
+ * When importing tempo maps from Standard MIDI Files, insert the
+ tempo map at the correct position (not always at zero).
+ * When editing MIDI notes, show note length with verbose cursor.
+ * Add Mute button to recorder view.
+ * Allow clearing LV2 plugin scan info.
+ * Always allow playback even if there is no session start/end
+ defined yet.
+ * Improve straight line drawing for note velocity.
+ * Handle situations where user's value for XDG_CONFIG_HOME is
+ not an absolute path.
+ * Optimize tempo map operations for trivial (and overwhelmingly
+ common) case of 1 tempo and 1 meter.
+
+-------------------------------------------------------------------
Old:
----
Ardour-8.1.0.tar.bz2
New:
----
Ardour-8.2.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ardour.spec ++++++
--- /var/tmp/diff_new_pack.9GMfNf/_old 2023-12-28 23:03:01.885880910 +0100
+++ /var/tmp/diff_new_pack.9GMfNf/_new 2023-12-28 23:03:01.889881057 +0100
@@ -18,7 +18,7 @@
%define dirbase ardour8
Name: ardour
-Version: 8.1.0
+Version: 8.2.0
Release: 0
Summary: Multichannel Digital Audio Workstation
# Legal: Ardour is a mix of GPL-2.0-or-later, [L]GPL-3.0-or-later and a couple copyleft
@@ -188,6 +188,7 @@
%doc doc README
%dir %{_sysconfdir}/%{dirbase}
%config(noreplace) %{_sysconfdir}/%{dirbase}/*
+%{_bindir}/ardour8-new_aaf_session
%{_bindir}/%{dirbase}
%{_bindir}/%{dirbase}-copy-mixer
%{_bindir}/%{dirbase}-export
++++++ Ardour-8.1.0.tar.bz2 -> Ardour-8.2.0.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/ardour/Ardour-8.1.0.tar.bz2 /work/SRC/openSUSE:Factory/.ardour.new.28375/Ardour-8.2.0.tar.bz2 differ: char 11, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-astropy-healpix for openSUSE:Factory checked in at 2023-12-28 23:01:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-astropy-healpix (Old)
and /work/SRC/openSUSE:Factory/.python-astropy-healpix.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-astropy-healpix"
Thu Dec 28 23:01:18 2023 rev:5 rq:1135247 version:1.0.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-astropy-healpix/python-astropy-healpix.changes 2023-12-02 17:13:51.778865052 +0100
+++ /work/SRC/openSUSE:Factory/.python-astropy-healpix.new.28375/python-astropy-healpix.changes 2023-12-28 23:02:56.925699628 +0100
@@ -1,0 +2,7 @@
+Wed Dec 27 09:35:18 UTC 2023 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 1.0.2:
+ * lonlat_to_healpix now correctly returns -1 if the longitude
+ or latitude is NaN or infinite. [#208]
+
+-------------------------------------------------------------------
Old:
----
astropy_healpix-1.0.1.tar.gz
New:
----
astropy_healpix-1.0.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-astropy-healpix.spec ++++++
--- /var/tmp/diff_new_pack.W0wVpm/_old 2023-12-28 23:02:57.501720680 +0100
+++ /var/tmp/diff_new_pack.W0wVpm/_new 2023-12-28 23:02:57.505720826 +0100
@@ -17,7 +17,7 @@
Name: python-astropy-healpix
-Version: 1.0.1
+Version: 1.0.2
Release: 0
Summary: HEALPix for Astropy
License: BSD-3-Clause
++++++ astropy_healpix-1.0.1.tar.gz -> astropy_healpix-1.0.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astropy_healpix-1.0.1/.github/workflows/ci_cron_weekly.yml new/astropy_healpix-1.0.2/.github/workflows/ci_cron_weekly.yml
--- old/astropy_healpix-1.0.1/.github/workflows/ci_cron_weekly.yml 2023-11-28 18:07:08.000000000 +0100
+++ new/astropy_healpix-1.0.2/.github/workflows/ci_cron_weekly.yml 2023-12-12 16:43:05.000000000 +0100
@@ -15,7 +15,7 @@
steps:
- uses: actions/checkout@v4
- name: Set up Python to build docs with sphinx
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Install base dependencies
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astropy_healpix-1.0.1/.github/workflows/ci_tests.yml new/astropy_healpix-1.0.2/.github/workflows/ci_tests.yml
--- old/astropy_healpix-1.0.1/.github/workflows/ci_tests.yml 2023-11-28 18:07:08.000000000 +0100
+++ new/astropy_healpix-1.0.2/.github/workflows/ci_tests.yml 2023-12-12 16:43:05.000000000 +0100
@@ -73,7 +73,7 @@
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python }} on ${{ matrix.os }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install base dependencies
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astropy_healpix-1.0.1/CHANGES.rst new/astropy_healpix-1.0.2/CHANGES.rst
--- old/astropy_healpix-1.0.1/CHANGES.rst 2023-11-28 18:07:08.000000000 +0100
+++ new/astropy_healpix-1.0.2/CHANGES.rst 2023-12-12 16:43:05.000000000 +0100
@@ -4,6 +4,12 @@
Changes
*******
+1.0.2 (2023-12-12)
+==================
+
+- lonlat_to_healpix now correctly returns -1 if the longitude or latitude is
+ NaN or infinite. [#208]
+
1.0.1 (2023-11-28)
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astropy_healpix-1.0.1/PKG-INFO new/astropy_healpix-1.0.2/PKG-INFO
--- old/astropy_healpix-1.0.1/PKG-INFO 2023-11-28 18:07:31.105450600 +0100
+++ new/astropy_healpix-1.0.2/PKG-INFO 2023-12-12 16:43:26.704017600 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: astropy_healpix
-Version: 1.0.1
+Version: 1.0.2
Summary: BSD-licensed HEALPix for Astropy
Home-page: https://github.com/astropy/astropy-healpix
Author: Astropy Developers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astropy_healpix-1.0.1/astropy_healpix/_core.c new/astropy_healpix-1.0.2/astropy_healpix/_core.c
--- old/astropy_healpix-1.0.1/astropy_healpix/_core.c 2023-11-28 18:07:08.000000000 +0100
+++ new/astropy_healpix-1.0.2/astropy_healpix/_core.c 2023-12-12 16:43:05.000000000 +0100
@@ -1,4 +1,5 @@
#include <Python.h>
+#include <math.h>
#include <numpy/arrayobject.h>
#include <numpy/ufuncobject.h>
#include "healpix.h"
@@ -114,7 +115,8 @@
double *dy = (double *) &args[5][i * steps[5]];
int64_t xy = INVALID_INDEX;
- xy = radec_to_healpixlf(lon, lat, nside, dx, dy);
+ if (isfinite(lon) && isfinite(lat))
+ xy = radec_to_healpixlf(lon, lat, nside, dx, dy);
if (xy >= 0)
*pixel = funcs->xy_to_order(xy, nside);
else {
@@ -174,13 +176,15 @@
double *dy = (double *) &args[6][i * steps[6]];
int64_t xy = INVALID_INDEX;
- /* xyztohealpixlf expects a unit vector */
- double norm = sqrt(x*x + y*y + z*z);
- x /= norm;
- y /= norm;
- z /= norm;
+ if (isfinite(x) && isfinite(y) && isfinite(z)) {
+ /* xyztohealpixlf expects a unit vector */
+ double norm = sqrt(x*x + y*y + z*z);
+ x /= norm;
+ y /= norm;
+ z /= norm;
- xy = xyztohealpixlf(x, y, z, nside, dx, dy);
+ xy = xyztohealpixlf(x, y, z, nside, dx, dy);
+ }
if (xy >= 0)
*pixel = funcs->xy_to_order(xy, nside);
else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astropy_healpix-1.0.1/astropy_healpix/tests/test_core.py new/astropy_healpix-1.0.2/astropy_healpix/tests/test_core.py
--- old/astropy_healpix-1.0.1/astropy_healpix/tests/test_core.py 2023-11-28 18:07:08.000000000 +0100
+++ new/astropy_healpix-1.0.2/astropy_healpix/tests/test_core.py 2023-12-12 16:43:05.000000000 +0100
@@ -209,6 +209,13 @@
assert dy.shape == (2, 4)
+def test_lonlat_to_healpix_invalid():
+ """Check that if we pass NaN values for example, the index is set to -1"""
+ ipix = lonlat_to_healpix(np.nan * u.deg, np.nan * u.deg,
+ nside=1, order='nested')
+ assert ipix == -1
+
+
@pytest.mark.parametrize('function', [nested_to_ring, ring_to_nested])
def test_nested_ring_shape(function):
index = function(1, 8)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astropy_healpix-1.0.1/astropy_healpix/version.py new/astropy_healpix-1.0.2/astropy_healpix/version.py
--- old/astropy_healpix-1.0.1/astropy_healpix/version.py 2023-11-28 18:07:31.000000000 +0100
+++ new/astropy_healpix-1.0.2/astropy_healpix/version.py 2023-12-12 16:43:26.000000000 +0100
@@ -5,4 +5,4 @@
from setuptools_scm import get_version
version = get_version(root='..', relative_to=__file__)
except Exception:
- version = '1.0.1'
+ version = '1.0.2'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/astropy_healpix-1.0.1/astropy_healpix.egg-info/PKG-INFO new/astropy_healpix-1.0.2/astropy_healpix.egg-info/PKG-INFO
--- old/astropy_healpix-1.0.1/astropy_healpix.egg-info/PKG-INFO 2023-11-28 18:07:31.000000000 +0100
+++ new/astropy_healpix-1.0.2/astropy_healpix.egg-info/PKG-INFO 2023-12-12 16:43:26.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: astropy-healpix
-Version: 1.0.1
+Version: 1.0.2
Summary: BSD-licensed HEALPix for Astropy
Home-page: https://github.com/astropy/astropy-healpix
Author: Astropy Developers
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-django-axes for openSUSE:Factory checked in at 2023-12-28 23:01:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-axes (Old)
and /work/SRC/openSUSE:Factory/.python-django-axes.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-axes"
Thu Dec 28 23:01:12 2023 rev:6 rq:1135244 version:6.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-django-axes/python-django-axes.changes 2023-12-03 20:49:37.603568816 +0100
+++ /work/SRC/openSUSE:Factory/.python-django-axes.new.28375/python-django-axes.changes 2023-12-28 23:02:51.361496270 +0100
@@ -1,0 +2,9 @@
+Wed Dec 27 09:32:48 UTC 2023 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 6.2.0:
+ * Update documentation.
+ * Add new management command ``axes_reset_ip_username``.
+ * Add French translations.
+ * Avoid running data migration on incorrect databases.
+
+-------------------------------------------------------------------
Old:
----
django-axes-6.1.1.tar.gz
New:
----
django-axes-6.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-django-axes.spec ++++++
--- /var/tmp/diff_new_pack.SWnj4o/_old 2023-12-28 23:02:51.921516737 +0100
+++ /var/tmp/diff_new_pack.SWnj4o/_new 2023-12-28 23:02:51.921516737 +0100
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-django-axes
-Version: 6.1.1
+Version: 6.2.0
Release: 0
License: MIT
Summary: Keep track of failed login attempts in Django-powered sites
++++++ django-axes-6.1.1.tar.gz -> django-axes-6.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/.github/workflows/codeql.yml new/django-axes-6.2.0/.github/workflows/codeql.yml
--- old/django-axes-6.1.1/.github/workflows/codeql.yml 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/.github/workflows/codeql.yml 2023-12-08 18:59:34.000000000 +0100
@@ -14,7 +14,7 @@
steps:
- name: Checkout repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/.github/workflows/release.yml new/django-axes-6.2.0/.github/workflows/release.yml
--- old/django-axes-6.1.1/.github/workflows/release.yml 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/.github/workflows/release.yml 2023-12-08 18:59:34.000000000 +0100
@@ -14,12 +14,12 @@
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: 3.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/.github/workflows/test.yml new/django-axes-6.2.0/.github/workflows/test.yml
--- old/django-axes-6.1.1/.github/workflows/test.yml 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/.github/workflows/test.yml 2023-12-08 18:59:34.000000000 +0100
@@ -40,10 +40,10 @@
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/CHANGES.rst new/django-axes-6.2.0/CHANGES.rst
--- old/django-axes-6.1.1/CHANGES.rst 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/CHANGES.rst 2023-12-08 18:59:34.000000000 +0100
@@ -3,6 +3,19 @@
=======
+6.2.0 (2023-12-08)
+------------------
+
+- Update documentation.
+ [funkybob]
+- Add new management command ``axes_reset_ip_username``.
+ [p-l-]
+- Add French translations.
+ [laulaz]
+- Avoid running data migration on incorrect databases.
+ [christianbundy]
+
+
6.1.1 (2023-08-01)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/PKG-INFO new/django-axes-6.2.0/PKG-INFO
--- old/django-axes-6.1.1/PKG-INFO 2023-09-01 09:55:55.328319500 +0200
+++ new/django-axes-6.2.0/PKG-INFO 2023-12-08 18:59:48.553557400 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: django-axes
-Version: 6.1.1
+Version: 6.2.0
Summary: Keep track of failed login attempts in Django-powered sites.
Home-page: https://github.com/jazzband/django-axes
Author: Josh VanderLinden, Philip Neustrom, Michael Blume, Alex Clark, Camilo Nova, Aleksi Hakli
@@ -35,8 +35,11 @@
Classifier: Topic :: Security
Classifier: Topic :: System :: Logging
Requires-Python: >=3.7
-Provides-Extra: ipware
License-File: LICENSE
+Requires-Dist: django>=3.2
+Requires-Dist: setuptools
+Provides-Extra: ipware
+Requires-Dist: django-ipware>=3; extra == "ipware"
django-axes
@@ -127,6 +130,19 @@
=======
+6.2.0 (2023-12-08)
+------------------
+
+- Update documentation.
+ [funkybob]
+- Add new management command ``axes_reset_ip_username``.
+ [p-l-]
+- Add French translations.
+ [laulaz]
+- Avoid running data migration on incorrect databases.
+ [christianbundy]
+
+
6.1.1 (2023-08-01)
------------------
Binary files old/django-axes-6.1.1/axes/locale/fr/LC_MESSAGES/django.mo and new/django-axes-6.2.0/axes/locale/fr/LC_MESSAGES/django.mo differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/axes/locale/fr/LC_MESSAGES/django.po new/django-axes-6.2.0/axes/locale/fr/LC_MESSAGES/django.po
--- old/django-axes-6.1.1/axes/locale/fr/LC_MESSAGES/django.po 1970-01-01 01:00:00.000000000 +0100
+++ new/django-axes-6.2.0/axes/locale/fr/LC_MESSAGES/django.po 2023-12-08 18:59:34.000000000 +0100
@@ -0,0 +1,109 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-11-06 05:21-0600\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: admin.py:27
+msgid "Form Data"
+msgstr "Données de formulaire"
+
+#: admin.py:28 admin.py:65 admin.py:100
+msgid "Meta Data"
+msgstr "Métadonnées"
+
+#: conf.py:108
+msgid "Account locked: too many login attempts. Please try again later."
+msgstr ""
+"Compte verrouillé: trop de tentatives de connexion. Veuillez réessayer plus "
+"tard."
+
+#: conf.py:116
+msgid ""
+"Account locked: too many login attempts. Contact an admin to unlock your "
+"account."
+msgstr ""
+"Compte verrouillé: trop de tentatives de connexion. Contactez un "
+"administrateur pour déverrouiller votre compte."
+
+#: models.py:6
+msgid "User Agent"
+msgstr "User Agent"
+
+#: models.py:8
+msgid "IP Address"
+msgstr "Adresse IP"
+
+#: models.py:10
+msgid "Username"
+msgstr "Nom d'utilisateur"
+
+#: models.py:12
+msgid "HTTP Accept"
+msgstr "HTTP Accept"
+
+#: models.py:14
+msgid "Path"
+msgstr "Chemin"
+
+#: models.py:16
+msgid "Attempt Time"
+msgstr "Date de la tentative"
+
+#: models.py:26
+msgid "Access lock out"
+msgstr "Verrouillage de l'accès"
+
+#: models.py:34
+msgid "access failure"
+msgstr "échec de connexion"
+
+#: models.py:35
+msgid "access failures"
+msgstr "échecs de connexion"
+
+#: models.py:39
+msgid "GET Data"
+msgstr "Données GET"
+
+#: models.py:41
+msgid "POST Data"
+msgstr "Données POST"
+
+#: models.py:43
+msgid "Failed Logins"
+msgstr "Nombre d'échecs"
+
+#: models.py:49
+msgid "access attempt"
+msgstr "tentative de connexion"
+
+#: models.py:50
+msgid "access attempts"
+msgstr "tentatives de connexion"
+
+#: models.py:55
+msgid "Logout Time"
+msgstr "Date de la déconnexion"
+
+#: models.py:61
+msgid "access log"
+msgstr "connexion"
+
+#: models.py:62
+msgid "access logs"
+msgstr "connexions"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/axes/management/commands/axes_reset_ip_username.py new/django-axes-6.2.0/axes/management/commands/axes_reset_ip_username.py
--- old/django-axes-6.1.1/axes/management/commands/axes_reset_ip_username.py 1970-01-01 01:00:00.000000000 +0100
+++ new/django-axes-6.2.0/axes/management/commands/axes_reset_ip_username.py 2023-12-08 18:59:34.000000000 +0100
@@ -0,0 +1,19 @@
+from django.core.management.base import BaseCommand
+
+from axes.utils import reset
+
+
+class Command(BaseCommand):
+ help = "Reset all access attempts and lockouts for a given IP address and username"
+
+ def add_arguments(self, parser):
+ parser.add_argument("ip", type=str)
+ parser.add_argument("username", type=str)
+
+ def handle(self, *args, **options):
+ count = reset(ip=options["ip"], username=options["username"])
+
+ if count:
+ self.stdout.write(f"{count} attempts removed.")
+ else:
+ self.stdout.write("No attempts found.")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/axes/migrations/0007_alter_accessattempt_unique_together.py new/django-axes-6.2.0/axes/migrations/0007_alter_accessattempt_unique_together.py
--- old/django-axes-6.1.1/axes/migrations/0007_alter_accessattempt_unique_together.py 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/axes/migrations/0007_alter_accessattempt_unique_together.py 2023-12-08 18:59:34.000000000 +0100
@@ -1,12 +1,16 @@
# Generated by Django 3.2.7 on 2021-09-13 15:16
-from django.db import migrations
+from django.db import migrations, router
from django.db.models import Count
def deduplicate_attempts(apps, schema_editor):
AccessAttempt = apps.get_model("axes", "AccessAttempt")
db_alias = schema_editor.connection.alias
+
+ if db_alias != router.db_for_write(AccessAttempt):
+ return
+
duplicated_attempts = (
AccessAttempt.objects.using(db_alias)
.values("username", "user_agent", "ip_address")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/django_axes.egg-info/PKG-INFO new/django-axes-6.2.0/django_axes.egg-info/PKG-INFO
--- old/django-axes-6.1.1/django_axes.egg-info/PKG-INFO 2023-09-01 09:55:55.000000000 +0200
+++ new/django-axes-6.2.0/django_axes.egg-info/PKG-INFO 2023-12-08 18:59:48.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: django-axes
-Version: 6.1.1
+Version: 6.2.0
Summary: Keep track of failed login attempts in Django-powered sites.
Home-page: https://github.com/jazzband/django-axes
Author: Josh VanderLinden, Philip Neustrom, Michael Blume, Alex Clark, Camilo Nova, Aleksi Hakli
@@ -35,8 +35,11 @@
Classifier: Topic :: Security
Classifier: Topic :: System :: Logging
Requires-Python: >=3.7
-Provides-Extra: ipware
License-File: LICENSE
+Requires-Dist: django>=3.2
+Requires-Dist: setuptools
+Provides-Extra: ipware
+Requires-Dist: django-ipware>=3; extra == "ipware"
django-axes
@@ -127,6 +130,19 @@
=======
+6.2.0 (2023-12-08)
+------------------
+
+- Update documentation.
+ [funkybob]
+- Add new management command ``axes_reset_ip_username``.
+ [p-l-]
+- Add French translations.
+ [laulaz]
+- Avoid running data migration on incorrect databases.
+ [christianbundy]
+
+
6.1.1 (2023-08-01)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/django_axes.egg-info/SOURCES.txt new/django-axes-6.2.0/django_axes.egg-info/SOURCES.txt
--- old/django-axes-6.1.1/django_axes.egg-info/SOURCES.txt 2023-09-01 09:55:55.000000000 +0200
+++ new/django-axes-6.2.0/django_axes.egg-info/SOURCES.txt 2023-12-08 18:59:48.000000000 +0100
@@ -47,6 +47,8 @@
axes/locale/ar/LC_MESSAGES/django.po
axes/locale/de/LC_MESSAGES/django.mo
axes/locale/de/LC_MESSAGES/django.po
+axes/locale/fr/LC_MESSAGES/django.mo
+axes/locale/fr/LC_MESSAGES/django.po
axes/locale/id/LC_MESSAGES/django.mo
axes/locale/id/LC_MESSAGES/django.po
axes/locale/pl/LC_MESSAGES/django.mo
@@ -61,6 +63,7 @@
axes/management/commands/axes_reset.py
axes/management/commands/axes_reset_failure_logs.py
axes/management/commands/axes_reset_ip.py
+axes/management/commands/axes_reset_ip_username.py
axes/management/commands/axes_reset_logs.py
axes/management/commands/axes_reset_username.py
axes/migrations/0001_initial.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/docs/2_installation.rst new/django-axes-6.2.0/docs/2_installation.rst
--- old/django-axes-6.1.1/docs/2_installation.rst 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/docs/2_installation.rst 2023-12-08 18:59:34.000000000 +0100
@@ -34,10 +34,10 @@
'django.contrib.auth.backends.ModelBackend',
]
- For backwards compatibility, ``AxesBackend`` can be used in place of ``AxesStandaloneBackend``.
- The only difference is that ``AxesBackend`` also provides the permissions-checking functionality
- of Django's ``ModelBackend`` behind the scenes. We recommend using ``AxesStandaloneBackend``
- if you have any custom logic to override Django's standard permissions checks.
+For backwards compatibility, ``AxesBackend`` can be used in place of ``AxesStandaloneBackend``.
+The only difference is that ``AxesBackend`` also provides the permissions-checking functionality
+of Django's ``ModelBackend`` behind the scenes. We recommend using ``AxesStandaloneBackend``
+if you have any custom logic to override Django's standard permissions checks.
**3.** Add ``axes.middleware.AxesMiddleware`` to your list of ``MIDDLEWARE``::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/docs/3_usage.rst new/django-axes-6.2.0/docs/3_usage.rst
--- old/django-axes-6.1.1/docs/3_usage.rst 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/docs/3_usage.rst 2023-12-08 18:59:34.000000000 +0100
@@ -80,7 +80,7 @@
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Axes offers a command line interface with
-``axes_reset``, ``axes_reset_ip``, and ``axes_reset_username``
+``axes_reset``, ``axes_reset_ip``, ``axes_reset_username``, and ``axes_reset_ip_username``
management commands with the Django ``manage.py`` or ``django-admin`` command helpers:
- ``python manage.py axes_reset``
@@ -89,6 +89,8 @@
will clear lockouts and records for the given IP addresses.
- ``python manage.py axes_reset_username [username ...]``
will clear lockouts and records for the given usernames.
+- ``python manage.py axes_reset_ip_username [ip] [username]``
+ will clear lockouts and records for the given IP address and username.
- ``python manage.py axes_reset_logs (age)``
will reset (i.e. delete) AccessLog records that are older
than the given age where the default is 30 days.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/requirements-qa.txt new/django-axes-6.2.0/requirements-qa.txt
--- old/django-axes-6.1.1/requirements-qa.txt 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/requirements-qa.txt 2023-12-08 18:59:34.000000000 +0100
@@ -1,4 +1,4 @@
-black==23.7.0
-mypy==1.5.1
-prospector==1.10.2
+black==23.11.0
+mypy==1.7.1
+prospector==1.10.3
types-pkg_resources # Type stub
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/requirements-test.txt new/django-axes-6.2.0/requirements-test.txt
--- old/django-axes-6.1.1/requirements-test.txt 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/requirements-test.txt 2023-12-08 18:59:34.000000000 +0100
@@ -1,7 +1,7 @@
-e .
django-ipware>=3
-coverage==7.3.0
-pytest==7.4.0
+coverage==7.3.2
+pytest==7.4.3
pytest-cov==4.1.0
-pytest-django==4.5.2
+pytest-django==4.7.0
pytest-subtests==0.11.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/requirements.txt new/django-axes-6.2.0/requirements.txt
--- old/django-axes-6.1.1/requirements.txt 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/requirements.txt 2023-12-08 18:59:34.000000000 +0100
@@ -1,5 +1,5 @@
-e .
-r requirements-qa.txt
-r requirements-test.txt
-sphinx_rtd_theme==1.3.0
-tox==4.11.0
+sphinx_rtd_theme==2.0.0
+tox==4.11.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-axes-6.1.1/tests/test_management.py new/django-axes-6.2.0/tests/test_management.py
--- old/django-axes-6.1.1/tests/test_management.py 2023-09-01 09:55:38.000000000 +0200
+++ new/django-axes-6.2.0/tests/test_management.py 2023-12-08 18:59:34.000000000 +0100
@@ -56,18 +56,22 @@
username="john.doe", ip_address="10.0.0.2", failures_since_start="15"
)
+ AccessAttempt.objects.create(
+ username="richard.doe", ip_address="10.0.0.4", failures_since_start="12"
+ )
+
def test_axes_list_attempts(self):
out = StringIO()
call_command("axes_list_attempts", stdout=out)
- expected = "10.0.0.1\tjane.doe\t4\n10.0.0.2\tjohn.doe\t15\n"
+ expected = "10.0.0.1\tjane.doe\t4\n10.0.0.2\tjohn.doe\t15\n10.0.0.4\trichard.doe\t12\n"
self.assertEqual(expected, out.getvalue())
def test_axes_reset(self):
out = StringIO()
call_command("axes_reset", stdout=out)
- expected = "2 attempts removed.\n"
+ expected = "3 attempts removed.\n"
self.assertEqual(expected, out.getvalue())
def test_axes_reset_not_found(self):
@@ -86,6 +90,13 @@
expected = "1 attempts removed.\n"
self.assertEqual(expected, out.getvalue())
+
+ def test_axes_reset_ip_username(self):
+ out = StringIO()
+ call_command("axes_reset_ip_username", "10.0.0.4", "richard.doe", stdout=out)
+
+ expected = "1 attempts removed.\n"
+ self.assertEqual(expected, out.getvalue())
def test_axes_reset_ip_not_found(self):
out = StringIO()
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-cx_Freeze for openSUSE:Factory checked in at 2023-12-28 23:01:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cx_Freeze (Old)
and /work/SRC/openSUSE:Factory/.python-cx_Freeze.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cx_Freeze"
Thu Dec 28 23:01:08 2023 rev:12 rq:1135260 version:6.15.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cx_Freeze/python-cx_Freeze.changes 2023-12-03 20:49:08.734508371 +0100
+++ /work/SRC/openSUSE:Factory/.python-cx_Freeze.new.28375/python-cx_Freeze.changes 2023-12-28 23:02:48.941407820 +0100
@@ -1,0 +2,7 @@
+Wed Dec 27 10:04:06 UTC 2023 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 6.15.12:
+ * **Full Changelog**: https://github.com/marcelotduarte/cx_Free
+ ze/compare/6.15.11...6.15.12
+
+-------------------------------------------------------------------
Old:
----
6.15.11.tar.gz
New:
----
6.15.12.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-cx_Freeze.spec ++++++
--- /var/tmp/diff_new_pack.8bjM2y/_old 2023-12-28 23:02:49.521429018 +0100
+++ /var/tmp/diff_new_pack.8bjM2y/_new 2023-12-28 23:02:49.521429018 +0100
@@ -18,7 +18,7 @@
%define oldpython python
Name: python-cx_Freeze
-Version: 6.15.11
+Version: 6.15.12
Release: 0
Summary: Scripts to create standalone executables from Python scripts
License: Python-2.0
++++++ 6.15.11.tar.gz -> 6.15.12.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/.github/workflows/build-wheel.yml new/cx_Freeze-6.15.12/.github/workflows/build-wheel.yml
--- old/cx_Freeze-6.15.11/.github/workflows/build-wheel.yml 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/.github/workflows/build-wheel.yml 2023-12-18 07:33:24.000000000 +0100
@@ -30,7 +30,7 @@
ref: ${{ inputs.branch }}
repository: marcelotduarte/cx_Freeze
- - uses: actions/setup-python@v4
+ - uses: actions/setup-python@v5
with:
cache: 'pip'
python-version: ${{ matrix.python-version }}
@@ -52,15 +52,15 @@
python -m cibuildwheel --output-dir wheelhouse --prerelease-pythons
- name: Add sdist
- if: runner.os == 'Linux' && '${{ matrix.python-version }}' == '3.11'
+ if: runner.os == 'Linux' && matrix.python-version == '3.11'
run: |
python -m pip install --upgrade pip build
python -m build . --sdist -o wheelhouse
- name: Upload the artifact
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
- name: cx-freeze-wheelhouse
+ name: cx-freeze-pip-${{ matrix.os }}-${{ matrix.python-version }}
path: wheelhouse
publish:
@@ -82,16 +82,20 @@
repository: marcelotduarte/cx_Freeze
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
cache: 'pip'
python-version: "3.11"
- - name: Download the artifact
- uses: actions/download-artifact@v3
+ - name: Download all artifacts
+ uses: actions/download-artifact@v4
with:
- name: cx-freeze-wheelhouse
- path: wheelhouse
+ path: artifacts
+
+ - name: Join files to upload
+ run: |
+ mkdir -p wheelhouse
+ mv artifacts/cx-freeze-pip-*/* wheelhouse/
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
@@ -115,11 +119,10 @@
repository: marcelotduarte/cx_Freeze
token: ${{ secrets.PUSH }}
- - name: Download the artifact
- uses: actions/download-artifact@v3
+ - name: Download all artifacts
+ uses: actions/download-artifact@v4
with:
- name: cx-freeze-wheelhouse
- path: wheelhouse
+ path: artifacts
- name: If changed, extract and update the base executables and util module
run: |
@@ -132,7 +135,7 @@
# Remove any file that match - remove previous versions too
git rm --ignore-unmatch 'cx_Freeze/bases/*-win*.exe' 'cx_Freeze/util.*-win*.pyd'
# Extract base executables and util module
- for file in wheelhouse/*-win*.whl; do
+ for file in artifacts/cx-freeze-pip-windows-*/*-win*.whl; do
unzip -o $file 'cx_Freeze/bases/*-win*.exe' 'cx_Freeze/util.*-win*.pyd'
done
git add cx_Freeze/bases/*-win*.exe cx_Freeze/util.*-win*.pyd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/.github/workflows/ci.yml new/cx_Freeze-6.15.12/.github/workflows/ci.yml
--- old/cx_Freeze-6.15.11/.github/workflows/ci.yml 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/.github/workflows/ci.yml 2023-12-18 07:33:24.000000000 +0100
@@ -14,7 +14,7 @@
- uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
cache: 'pip'
python-version: "3.11"
@@ -40,7 +40,7 @@
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
cache: 'pip'
python-version: ${{ matrix.python-version }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/.github/workflows/codeql.yml new/cx_Freeze-6.15.12/.github/workflows/codeql.yml
--- old/cx_Freeze-6.15.11/.github/workflows/codeql.yml 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/.github/workflows/codeql.yml 2023-12-18 07:33:24.000000000 +0100
@@ -44,7 +44,7 @@
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@v2
+ uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -58,7 +58,7 @@
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@v2
+ uses: github/codeql-action/autobuild@v3
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-gith…
@@ -71,6 +71,6 @@
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v2
+ uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/.pre-commit-config.yaml new/cx_Freeze-6.15.12/.pre-commit-config.yaml
--- old/cx_Freeze-6.15.11/.pre-commit-config.yaml 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/.pre-commit-config.yaml 2023-12-18 07:33:24.000000000 +0100
@@ -36,7 +36,7 @@
- id: validate-pyproject
- repo: https://github.com/astral-sh/ruff-pre-commit
- rev: v0.1.6
+ rev: v0.1.7
hooks:
- id: ruff
args: ["--fix"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/cx_Freeze/__init__.py new/cx_Freeze-6.15.12/cx_Freeze/__init__.py
--- old/cx_Freeze-6.15.11/cx_Freeze/__init__.py 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/cx_Freeze/__init__.py 2023-12-18 07:33:24.000000000 +0100
@@ -42,7 +42,7 @@
__all__.append(bdist_rpm.__name__)
-__version__ = "6.15.11"
+__version__ = "6.15.12"
def setup(**attrs): # noqa: D103
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/cx_Freeze/command/bdist_mac.py new/cx_Freeze-6.15.12/cx_Freeze/command/bdist_mac.py
--- old/cx_Freeze-6.15.11/cx_Freeze/command/bdist_mac.py 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/cx_Freeze/command/bdist_mac.py 2023-12-18 07:33:24.000000000 +0100
@@ -429,28 +429,19 @@
target = os.path.join(self.bin_dir, executable.target_name)
self.move_file(source, target)
- # Make symlink between Resources/lib and Contents/MacOS so we can use
- # none-relative reference paths in order to pass codesign...
- resources_lib_dir = os.path.join(self.resources_dir, "lib")
- origin = os.path.join(self.bin_dir, "lib")
- relative_reference = os.path.relpath(resources_lib_dir, self.bin_dir)
- self.execute(
- os.symlink,
- (relative_reference, origin, True),
- msg=f"linking {origin} -> {relative_reference}",
- )
- # Make symlink between Resources/share and Contents/MacOS too.
- resource_share_dir = os.path.join(self.resources_dir, "share")
- if os.path.exists(resource_share_dir):
- origin = os.path.join(self.bin_dir, "share")
- relative_reference = os.path.relpath(
- resource_share_dir, self.bin_dir
- )
- self.execute(
- os.symlink,
- (relative_reference, origin, True),
- msg=f"linking {origin} -> {relative_reference}",
- )
+ # Make symlink between folders under Resources such as lib and others
+ # specified by the user in include_files and Contents/MacOS so we can
+ # use non-relative reference paths to pass codesign...
+ for filename in os.listdir(self.resources_dir):
+ target = os.path.join(self.resources_dir, filename)
+ if os.path.isdir(target):
+ origin = os.path.join(self.bin_dir, filename)
+ relative_reference = os.path.relpath(target, self.bin_dir)
+ self.execute(
+ os.symlink,
+ (relative_reference, origin, True),
+ msg=f"linking {origin} -> {relative_reference}",
+ )
# Copy the icon
if self.iconfile:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/cx_Freeze/darwintools.py new/cx_Freeze-6.15.12/cx_Freeze/darwintools.py
--- old/cx_Freeze-6.15.11/cx_Freeze/darwintools.py 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/cx_Freeze/darwintools.py 2023-12-18 07:33:24.000000000 +0100
@@ -479,15 +479,17 @@
def change_load_reference(
filename: str, old_reference: str, new_reference: str, verbose: bool = True
):
- """Utility function that uses intall_name_tool to change old_reference to
+ """Utility function that uses install_name_tool to change old_reference to
new_reference in the machO file specified by filename.
"""
if verbose:
print("Redirecting load reference for ", end="")
print(f"<{filename}> {old_reference} -> {new_reference}")
original = os.stat(filename).st_mode
- os.chmod(filename, original | stat.S_IWUSR)
- exitcode, output = subprocess.getstatusoutput(
+ new_mode = original | stat.S_IWUSR
+ if new_mode != original:
+ os.chmod(filename, new_mode)
+ subprocess.call(
(
"install_name_tool",
"-change",
@@ -496,9 +498,8 @@
filename,
)
)
- os.chmod(filename, original)
- if verbose and exitcode > 0:
- print("\tError:", exitcode, " ->", output)
+ if new_mode != original:
+ os.chmod(filename, original)
def apply_adhoc_signature(filename: str):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/cx_Freeze/hooks/_libs.py new/cx_Freeze-6.15.12/cx_Freeze/hooks/_libs.py
--- old/cx_Freeze-6.15.11/cx_Freeze/hooks/_libs.py 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/cx_Freeze/hooks/_libs.py 2023-12-18 07:33:24.000000000 +0100
@@ -7,7 +7,9 @@
from cx_Freeze.module import Module
-def replace_delvewheel_patch(module: Module) -> None:
+def replace_delvewheel_patch(
+ module: Module, libs_name: str | None = None
+) -> None:
"""Replace delvewheel injections of code to not find for module.libs
directory.
"""
@@ -15,6 +17,8 @@
if code is None:
return
+ if libs_name is None:
+ libs_name = f"{module.name}.libs"
delvewheel_func_names = "_delvewheel_init_patch_", "_delvewheel_patch_"
consts = list(code.co_consts)
for constant in consts:
@@ -26,7 +30,7 @@
import os, sys
libs_path = os.path.join(
- sys.frozen_dir, "lib", "{module.name}.libs"
+ sys.frozen_dir, "lib", "{libs_name}"
)
try:
os.add_dll_directory(libs_path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/cx_Freeze/hooks/av.py new/cx_Freeze-6.15.12/cx_Freeze/hooks/av.py
--- old/cx_Freeze-6.15.11/cx_Freeze/hooks/av.py 1970-01-01 01:00:00.000000000 +0100
+++ new/cx_Freeze-6.15.12/cx_Freeze/hooks/av.py 2023-12-18 07:33:24.000000000 +0100
@@ -0,0 +1,23 @@
+"""A collection of functions which are triggered automatically by finder when
+AV/PyAV package is included.
+"""
+from __future__ import annotations
+
+from cx_Freeze._compat import IS_WINDOWS
+from cx_Freeze.finder import ModuleFinder
+from cx_Freeze.hooks._libs import replace_delvewheel_patch
+from cx_Freeze.module import Module
+
+
+def load_av(finder: ModuleFinder, module: Module) -> None:
+ """The AV or PyAV package."""
+ if IS_WINDOWS:
+ libs_name = "av.libs"
+ source_dir = module.file.parent.parent / libs_name
+ if not source_dir.exists():
+ libs_name = "pyav.libs"
+ source_dir = module.file.parent.parent / libs_name
+ if source_dir.exists():
+ finder.include_files(source_dir, f"lib/{libs_name}")
+ replace_delvewheel_patch(module, libs_name)
+ finder.include_module("av.deprecation")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/doc/src/conf.py new/cx_Freeze-6.15.12/doc/src/conf.py
--- old/cx_Freeze-6.15.11/doc/src/conf.py 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/doc/src/conf.py 2023-12-18 07:33:24.000000000 +0100
@@ -42,7 +42,7 @@
# General information about the project.
project = "cx_Freeze"
copyright = "2023, Marcelo Duarte" # noqa: A001
-__version__ = "6.15.11"
+__version__ = "6.15.12"
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/pyproject.toml new/cx_Freeze-6.15.12/pyproject.toml
--- old/cx_Freeze-6.15.11/pyproject.toml 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/pyproject.toml 2023-12-18 07:33:24.000000000 +0100
@@ -116,7 +116,7 @@
[tool.bumpversion]
commit = true
-current_version = "6.15.11"
+current_version = "6.15.12"
message = "Bump version: {current_version} → {new_version} [ci skip]"
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)(\\-(?P<release>[a-z]+)(?P<build>\\d+))?"
serialize = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cx_Freeze-6.15.11/source/bases/common.c new/cx_Freeze-6.15.12/source/bases/common.c
--- old/cx_Freeze-6.15.11/source/bases/common.c 2023-11-29 02:10:40.000000000 +0100
+++ new/cx_Freeze-6.15.12/source/bases/common.c 2023-12-18 07:33:24.000000000 +0100
@@ -10,6 +10,7 @@
// this consists of <dir>/lib/library.zip and <dir>/lib
// where <dir> refers to the directory in which the executable is found
#if defined(MS_WINDOWS)
+ #include <libloaderapi.h>
#define CX_PATH_FORMAT L"%ls\\lib\\library.zip;%ls\\lib"
#define CX_LIB L"lib"
#define PY3_DLLNAME L"python3.dll"
@@ -55,7 +56,7 @@
wcscpy(g_LibDirName, g_ExecutableDirName);
wcscat(g_LibDirName, L"\\");
wcscat(g_LibDirName, CX_LIB);
- if (!SetDllDirectoryW(g_LibDirName))
+ if (AddDllDirectory(g_LibDirName) == 0)
return FatalError("Unable to change DLL search path!");
#else
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-bitarray for openSUSE:Factory checked in at 2023-12-28 23:01:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-bitarray (Old)
and /work/SRC/openSUSE:Factory/.python-bitarray.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-bitarray"
Thu Dec 28 23:01:04 2023 rev:25 rq:1135240 version:2.9.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-bitarray/python-bitarray.changes 2023-12-19 23:16:05.562102117 +0100
+++ /work/SRC/openSUSE:Factory/.python-bitarray.new.28375/python-bitarray.changes 2023-12-28 23:02:41.741144668 +0100
@@ -1,0 +2,24 @@
+Wed Dec 27 09:29:57 UTC 2023 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 2.9.1:
+ * avoid buffer being unnecessarily initialized with 0s in
+ several functions of the ``bitarray.util`` module
+ * fix ``.count()`` type hint in pyi-file
+ * improve testing
+ * deprecate support for Python 2 - Python 2.7 support will be
+ removed in bitarray version 3.0
+ * ``bitarray(n)`` for integer initializer ``n`` will always
+ return a bitarray of length ``n`` with all items initialized
+ to ``0``
+ * allow sub-bitarray in ``.count()``, `#212
+ * add ``util.ones()`` ``.find()`` and ``.index()``:
+ add keyword argument ``right`` for rightmost index
+ * ``.itersearch()``: add start and stop argument, and keyword
+ * argument ``right``
+ * deprecate ``util.rindex()`` (will be removed in 3.0 release),
+ * use ``.index(..., right=True)`` instead
+ * deprecate ``util.make_endian()`` (will be removed in 3.0
+ release),
+ * use ``bitarray(..., endian=...)`` instead
+
+-------------------------------------------------------------------
Old:
----
bitarray-2.8.5.tar.gz
New:
----
bitarray-2.9.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-bitarray.spec ++++++
--- /var/tmp/diff_new_pack.MKfcKm/_old 2023-12-28 23:02:42.289164697 +0100
+++ /var/tmp/diff_new_pack.MKfcKm/_new 2023-12-28 23:02:42.293164843 +0100
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-bitarray
-Version: 2.8.5
+Version: 2.9.1
Release: 0
Summary: Efficient Arrays of Booleans
License: Python-2.0
++++++ bitarray-2.8.5.tar.gz -> bitarray-2.9.1.tar.gz ++++++
++++ 3199 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-empy for openSUSE:Factory checked in at 2023-12-28 23:01:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-empy (Old)
and /work/SRC/openSUSE:Factory/.python-empy.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-empy"
Thu Dec 28 23:01:03 2023 rev:3 rq:1135239 version:4.0.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-empy/python-empy.changes 2023-12-08 22:31:53.139629496 +0100
+++ /work/SRC/openSUSE:Factory/.python-empy.new.28375/python-empy.changes 2023-12-28 23:02:40.729107680 +0100
@@ -1,0 +2,6 @@
+Wed Dec 27 09:29:19 UTC 2023 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 4.0.1:
+ * bugfixes over 4.0, no dedicated changelog available
+
+-------------------------------------------------------------------
Old:
----
empy-4.0.tar.gz
New:
----
empy-4.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-empy.spec ++++++
--- /var/tmp/diff_new_pack.l34s6y/_old 2023-12-28 23:02:41.481135165 +0100
+++ /var/tmp/diff_new_pack.l34s6y/_new 2023-12-28 23:02:41.485135311 +0100
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-empy
-Version: 4.0
+Version: 4.0.1
Release: 0
Summary: A templating system for Python
License: BSD-3-Clause
++++++ empy-4.0.tar.gz -> empy-4.0.1.tar.gz ++++++
++++ 11295 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package xemacs for openSUSE:Factory checked in at 2023-12-28 23:01:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xemacs (Old)
and /work/SRC/openSUSE:Factory/.xemacs.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xemacs"
Thu Dec 28 23:01:00 2023 rev:96 rq:1135225 version:21.5.34
Changes:
--------
--- /work/SRC/openSUSE:Factory/xemacs/xemacs.changes 2023-01-16 18:01:58.935852911 +0100
+++ /work/SRC/openSUSE:Factory/.xemacs.new.28375/xemacs.changes 2023-12-28 23:02:36.612957245 +0100
@@ -1,0 +2,6 @@
+Wed Dec 27 03:37:32 UTC 2023 - Bernhard Wiedemann <bwiedemann(a)suse.de>
+
+- Add reproducible.patch to make ,elc files deterministic
+ (boo#1084909, boo#1047218)
+
+-------------------------------------------------------------------
New:
----
reproducible.patch
BETA DEBUG BEGIN:
New:
- Add reproducible.patch to make ,elc files deterministic
(boo#1084909, boo#1047218)
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xemacs.spec ++++++
--- /var/tmp/diff_new_pack.CWhgND/_old 2023-12-28 23:02:37.588992917 +0100
+++ /var/tmp/diff_new_pack.CWhgND/_new 2023-12-28 23:02:37.592993063 +0100
@@ -114,6 +114,8 @@
# PATCH-FIX-SUSE sys_siglist is deprecated
Patch63: xemacs-21.5.34-strsignal.patch
Patch64: xemacs-21.5.34-fix2038.patch
+# PATCH-FIX-SUSE drop hostname+timestamp from .elc
+Patch65: reproducible.patch
Requires(pre): permissions
Requires: ctags
Requires: efont-unicode
@@ -229,6 +231,7 @@
%endif
%endif
%patch64 -p1
+%patch65 -p1
%build
cflags ()
++++++ reproducible.patch ++++++
Date: 2017-08-16
Author: Bernhard M. Wiedemann <bwiedemann suse de>
drop timestamp and build host name from .elc files
Index: xemacs-21.5.34/lisp/bytecomp.el
===================================================================
--- xemacs-21.5.34.orig/lisp/bytecomp.el
+++ xemacs-21.5.34/lisp/bytecomp.el
@@ -2156,11 +2156,8 @@ docstrings code.")
finally return res)))
(setq comments
(with-string-as-buffer-contents ""
- (insert "\n;;; compiled by "
- (or (and (boundp 'user-mail-address) user-mail-address)
- (concat (user-login-name) "@" (system-name)))
- " on "
- (current-time-string) "\n;;; from file " filename "\n")
+ (insert "\n;;; compiled"
+ "\n;;; from file " filename "\n")
(insert ";;; emacs version " emacs-version ".\n")
(insert ";;; bytecomp version " byte-compile-version "\n;;; "
(cond
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-feedgen for openSUSE:Factory checked in at 2023-12-28 23:00:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-feedgen (Old)
and /work/SRC/openSUSE:Factory/.python-feedgen.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-feedgen"
Thu Dec 28 23:00:58 2023 rev:3 rq:1135206 version:1.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-feedgen/python-feedgen.changes 2020-06-11 10:07:33.199712323 +0200
+++ /work/SRC/openSUSE:Factory/.python-feedgen.new.28375/python-feedgen.changes 2023-12-28 23:02:35.568919088 +0100
@@ -1,0 +2,27 @@
+Wed Dec 27 02:22:03 UTC 2023 - Mia Herkt <mia(a)0x0.st>
+
+- Update to v1.0.0
+ * Fix flake8 complaints
+ gh#lkiesow/python-feedgen#125
+ * Update dependency versions
+ gh#lkiesow/python-feedgen#126
+ * Add missing iTunes tags
+ gh#lkiesow/python-feedgen#97
+ * Fix a few comment typos
+ gh#lkiesow/python-feedgen#101
+ * Improve module documentation
+ gh#lkiesow/python-feedgen#128
+ * docs: Fix a few typos
+ gh#lkiesow/python-feedgen#112
+ * Fix etree to string conversion in FeedGenerator
+ gh#lkiesow/python-feedgen#124
+ * Use Unittest Asserts
+ gh#lkiesow/python-feedgen#93
+ * Allow integer to be used for enclosure length
+ gh#lkiesow/python-feedgen#129
+ * Fixed category documentation
+ gh#lkiesow/python-feedgen#130
+ * Fixed generating Atom feed when adding description as summary
+ gh#lkiesow/python-feedgen#131
+
+-------------------------------------------------------------------
Old:
----
feedgen-0.9.0.tar.gz
New:
----
feedgen-1.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-feedgen.spec ++++++
--- /var/tmp/diff_new_pack.NCiG7X/_old 2023-12-28 23:02:36.188941749 +0100
+++ /var/tmp/diff_new_pack.NCiG7X/_new 2023-12-28 23:02:36.188941749 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-feedgen
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,17 +16,14 @@
#
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-feedgen
-Version: 0.9.0
+Version: 1.0.0
Release: 0
Summary: Python feed generator module (ATOM, RSS, Podcasts)
License: BSD-2-Clause AND LGPL-3.0-or-later
Group: Development/Languages/Python
URL: https://lkiesow.github.io/python-feedgen
-# Use GitHub tarball as PyPI release lacks tests
-Source: https://github.com/lkiesow/python-feedgen/archive/v%{version}.tar.gz#/feedg…
-# Source: https://files.pythonhosted.org/packages/source/f/feedgen/feedgen-%%{version…
+Source: https://files.pythonhosted.org/packages/source/f/feedgen/feedgen-%{version}…
BuildRequires: %{python_module lxml}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module python-dateutil}
@@ -43,7 +40,7 @@
format. It has support for extensions.
%prep
-%setup -q
+%setup -q -n feedgen-%{version}
%build
%python_build
@@ -56,7 +53,7 @@
%pytest
%files %{python_files}
-%{python_sitelib}/*
+%{python_sitelib}/feedgen*
%doc readme.rst
%license license.bsd license.lgpl
++++++ feedgen-0.9.0.tar.gz -> feedgen-1.0.0.tar.gz ++++++
++++ 22585 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package wl-screenrec for openSUSE:Factory checked in at 2023-12-28 23:00:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wl-screenrec (Old)
and /work/SRC/openSUSE:Factory/.wl-screenrec.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wl-screenrec"
Thu Dec 28 23:00:56 2023 rev:2 rq:1135208 version:0.1.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/wl-screenrec/wl-screenrec.changes 2023-11-08 22:17:55.991625682 +0100
+++ /work/SRC/openSUSE:Factory/.wl-screenrec.new.28375/wl-screenrec.changes 2023-12-28 23:02:33.880857394 +0100
@@ -1,0 +2,9 @@
+Sat Dec 16 11:50:06 UTC 2023 - Soc Virnyl Estela <uncomfy+openbuildservice(a)uncomfyhalomacro.pl>
+
+- Update to version 0.1.2:
+ * use LTO for builds to reduce binary size
+ * fix off-by-one in region
+ * support ffmpeg 6.1
+ * fix negative positions
+
+-------------------------------------------------------------------
Old:
----
wl-screenrec-0.1.0.tar.gz
New:
----
wl-screenrec-0.1.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ wl-screenrec.spec ++++++
--- /var/tmp/diff_new_pack.B4s0pC/_old 2023-12-28 23:02:34.716887949 +0100
+++ /var/tmp/diff_new_pack.B4s0pC/_new 2023-12-28 23:02:34.716887949 +0100
@@ -17,7 +17,7 @@
Name: wl-screenrec
-Version: 0.1.0
+Version: 0.1.2
License: Apache-2.0
Release: 0
Summary: High performance hardware accelerated wlroots screen recorder
@@ -44,21 +44,11 @@
%prep
%autosetup -a1
-mkdir -p .cargo/
-cp cargo_config .cargo/config
%build
-export CC=clang
-export CXX=clang++
-export CFLAGS="%optflags"
-export CXXFLAGS="%optflags"
%{cargo_build} --all-features
%install
-export CC=clang
-export CXX=clang++
-export CFLAGS="%optflags"
-export CXXFLAGS="%optflags"
%{cargo_install} --all-features
%files
++++++ vendor.tar.zst ++++++
Binary files /var/tmp/diff_new_pack.B4s0pC/_old and /var/tmp/diff_new_pack.B4s0pC/_new differ
++++++ wl-screenrec-0.1.0.tar.gz -> wl-screenrec-0.1.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.1.0/Cargo.lock new/wl-screenrec-0.1.2/Cargo.lock
--- old/wl-screenrec-0.1.0/Cargo.lock 2023-10-02 05:06:03.000000000 +0200
+++ new/wl-screenrec-0.1.2/Cargo.lock 2023-12-04 04:07:52.000000000 +0100
@@ -4,9 +4,9 @@
[[package]]
name = "aho-corasick"
-version = "1.1.1"
+version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
+checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
dependencies = [
"memchr",
]
@@ -99,9 +99,9 @@
[[package]]
name = "bitflags"
-version = "2.4.0"
+version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
+checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
[[package]]
name = "cc"
@@ -140,9 +140,9 @@
[[package]]
name = "clap"
-version = "4.4.6"
+version = "4.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956"
+checksum = "41fffed7514f420abec6d183b1d3acfd9099c79c3a10a06ade4f8203f1411272"
dependencies = [
"clap_builder",
"clap_derive",
@@ -150,9 +150,9 @@
[[package]]
name = "clap_builder"
-version = "4.4.6"
+version = "4.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45"
+checksum = "63361bae7eef3771745f02d8d892bec2fee5f6e34af316ba556e7f97a7069ff1"
dependencies = [
"anstream",
"anstyle",
@@ -162,21 +162,21 @@
[[package]]
name = "clap_derive"
-version = "4.4.2"
+version = "4.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873"
+checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
dependencies = [
"heck",
"proc-macro2",
"quote",
- "syn 2.0.37",
+ "syn 2.0.39",
]
[[package]]
name = "clap_lex"
-version = "0.5.1"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
[[package]]
name = "colorchoice"
@@ -207,9 +207,9 @@
[[package]]
name = "ffmpeg-next"
-version = "6.0.0"
+version = "6.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8af03c47ad26832ab3aabc4cdbf210af3d3b878783edd5a7ba044ba33aab7a60"
+checksum = "f45d337871329d85f5aad1e3d7b09d033cd611d50f734fd6464c731fe7c769bf"
dependencies = [
"bitflags 1.3.2",
"ffmpeg-sys-next",
@@ -218,9 +218,9 @@
[[package]]
name = "ffmpeg-sys-next"
-version = "6.0.1"
+version = "6.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf650f461ccf130f4eef4927affed703cc387b183bfc4a7dfee86a076c131127"
+checksum = "c2529ad916d08c3562c754c21bc9b17a26c7882c0f5706cc2cd69472175f1620"
dependencies = [
"bindgen",
"cc",
@@ -274,9 +274,9 @@
[[package]]
name = "libc"
-version = "0.2.148"
+version = "0.2.150"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
+checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
[[package]]
name = "libloading"
@@ -343,7 +343,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
dependencies = [
- "bitflags 2.4.0",
+ "bitflags 2.4.1",
"cfg-if",
"libc",
]
@@ -382,9 +382,9 @@
[[package]]
name = "proc-macro2"
-version = "1.0.67"
+version = "1.0.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
+checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
dependencies = [
"unicode-ident",
]
@@ -409,9 +409,9 @@
[[package]]
name = "regex"
-version = "1.9.6"
+version = "1.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff"
+checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
dependencies = [
"aho-corasick",
"memchr",
@@ -421,9 +421,9 @@
[[package]]
name = "regex-automata"
-version = "0.3.9"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9"
+checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
dependencies = [
"aho-corasick",
"memchr",
@@ -432,9 +432,9 @@
[[package]]
name = "regex-syntax"
-version = "0.7.5"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
[[package]]
name = "rustc-hash"
@@ -456,29 +456,29 @@
[[package]]
name = "serde"
-version = "1.0.188"
+version = "1.0.193"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
+checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.188"
+version = "1.0.193"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
+checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.37",
+ "syn 2.0.39",
]
[[package]]
name = "serde_json"
-version = "1.0.107"
+version = "1.0.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
+checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
dependencies = [
"itoa",
"ryu",
@@ -512,9 +512,9 @@
[[package]]
name = "smallvec"
-version = "1.11.1"
+version = "1.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
+checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
[[package]]
name = "strsim"
@@ -535,9 +535,9 @@
[[package]]
name = "syn"
-version = "2.0.37"
+version = "2.0.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
+checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
dependencies = [
"proc-macro2",
"quote",
@@ -546,22 +546,22 @@
[[package]]
name = "thiserror"
-version = "1.0.49"
+version = "1.0.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4"
+checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.49"
+version = "1.0.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc"
+checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.37",
+ "syn 2.0.39",
]
[[package]]
@@ -602,7 +602,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3"
dependencies = [
- "bitflags 2.4.0",
+ "bitflags 2.4.1",
"nix 0.26.4",
"wayland-backend",
"wayland-scanner",
@@ -614,7 +614,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c"
dependencies = [
- "bitflags 2.4.0",
+ "bitflags 2.4.1",
"wayland-backend",
"wayland-client",
"wayland-scanner",
@@ -626,7 +626,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6"
dependencies = [
- "bitflags 2.4.0",
+ "bitflags 2.4.1",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -745,7 +745,7 @@
[[package]]
name = "wl-screenrec"
-version = "0.1.0"
+version = "0.1.2"
dependencies = [
"anyhow",
"clap",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.1.0/Cargo.toml new/wl-screenrec-0.1.2/Cargo.toml
--- old/wl-screenrec-0.1.0/Cargo.toml 2023-10-02 05:06:03.000000000 +0200
+++ new/wl-screenrec-0.1.2/Cargo.toml 2023-12-04 04:07:52.000000000 +0100
@@ -4,7 +4,7 @@
license-file = "LICENSE"
homepage = "https://github.com/russelltg/wl-screenrec"
repository = "https://github.com/russelltg/wl-screenrec"
-version = "0.1.0"
+version = "0.1.2"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -26,7 +26,9 @@
"staging",
] }
wayland-protocols-wlr = { version = "0.2", features = ["client"] }
-ffmpeg-next = "6.0.0"
+
+# ffmpeg-next does not support ffmpeg 6.1 yet, so grab from the 6.1 PR
+ffmpeg-next = "6.1"
thiserror = "1.0.38"
drm-fourcc = "2.2.0"
human-size = "0.4.2"
@@ -41,3 +43,6 @@
"process",
] }
serde_json = "1.0.103"
+
+[profile.release]
+lto = "thin"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.1.0/README.md new/wl-screenrec-0.1.2/README.md
--- old/wl-screenrec-0.1.0/README.md 2023-10-02 05:06:03.000000000 +0200
+++ new/wl-screenrec-0.1.2/README.md 2023-12-04 04:07:52.000000000 +0100
@@ -41,6 +41,8 @@
## From the AUR
```bash
+paru -S wl-screenrec
+# OR
paru -S wl-screenrec-git
```
Or, manually:
@@ -52,10 +54,14 @@
## From source using cargo
-Install ffmpeg, which is a required dependency.
+Install ffmpeg 6 or later, which is a required dependency.
+ffmpeg 5 may work, but is untested (open an issue or PR if you test with ffmpeg 5
+so I can update these docs on if it works or not)
```bash
-cargo install --git https://github.com/russelltg/wl-screenrec
+cargo install wl-screenrec # stable version
+# OR
+cargo install --git https://github.com/russelltg/wl-screenrec # git version
```
## FreeBSD
@@ -105,13 +111,21 @@
wl-screenrec --audio --audio-device alsa_output.pci-0000_00_1f.3.hdmi-stereo.monitor # capture desktop audio (example, use `pactl list short sources` to figure out what you should put here)
```
-Record with history
+Record with history:
```bash
wl-screenrec --history 10 & # record the most recent 10 seconds into memory, not writing into the file
# ... some important event occurs
killall -USR1 wl-screenrec # flush the most recent 10 seconds onto the file, and start appending to the file like recording normally
```
+Capture to [v4l2loopback](https://github.com/umlaeute/v4l2loopback) (for Zoom, etc):
+
+```bash
+sudo modprobe v4l2loopback
+v4l2-ctl --list-devices # find "Dummy video device" device. /dev/video6 in my case.
+wl-screenrec --ffmpeg-muxer v4l2 -f /dev/video6
+```
+
# All options
```text
@@ -134,11 +148,15 @@
--low-power <LOW_POWER>
[default: auto] [possible values: auto, on, off]
--codec <CODEC>
- which codec to use. Used in conjunction with --no-hw to determinte which enocder to use. Ignored if `encoder` is supplied [default: auto] [possible values: auto, avc, hevc, vp8, vp9]
+ which codec to use. Used in conjunction with --no-hw to determine which encoder to use. Ignored if `encoder` is supplied [default: auto] [possible values: auto, avc, hevc, vp8, vp9]
+ --ffmpeg-muxer <FFMPEG_MUXER>
+ Which ffmpeg muxer to use. Guessed from output filename by default
--ffmpeg-encoder <FFMPEG_ENCODER>
Use this to force a particular ffmpeg encoder. Generally, this is not necessary and the combo of --codec and --hw can get you to where you need to be
--encode-pixfmt <ENCODE_PIXFMT>
which pixel format to encode with. not all codecs will support all pixel formats. This should be a ffmpeg pixel format string, like nv12 or x2rgb10
+ --encode-resolution <ENCODE_RESOLUTION>
+ what resolution to encode at. example: 1920x1080. Default is the resolution of the captured region. If your goal is reducing filesize, it's suggested to try --bitrate/-b first
-b, --bitrate <BITRATE>
bitrate to encode at. Unit is bytes per second, so 5 MB is 40 Mbps [default: "5 MB"]
--history <HISTORY>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.1.0/src/avhw.rs new/wl-screenrec-0.1.2/src/avhw.rs
--- old/wl-screenrec-0.1.0/src/avhw.rs 2023-10-02 05:06:03.000000000 +0200
+++ new/wl-screenrec-0.1.2/src/avhw.rs 2023-12-04 04:07:52.000000000 +0100
@@ -15,7 +15,7 @@
}
impl AvHwDevCtx {
- pub fn new_libva(dri_device: &str) -> Self {
+ pub fn new_libva(dri_device: &str) -> Result<Self, ffmpeg::Error> {
unsafe {
let mut hw_device_ctx = null_mut();
@@ -31,9 +31,12 @@
opts.as_mut_ptr(),
0,
);
- assert_eq!(sts, 0, "failed to open {dri_device}");
- Self { ptr: hw_device_ctx }
+ if sts != 0 {
+ Err(ffmpeg::Error::from(sts))
+ } else {
+ Ok(Self { ptr: hw_device_ctx })
+ }
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.1.0/src/main.rs new/wl-screenrec-0.1.2/src/main.rs
--- old/wl-screenrec-0.1.0/src/main.rs 2023-10-02 05:06:03.000000000 +0200
+++ new/wl-screenrec-0.1.2/src/main.rs 2023-12-04 04:07:52.000000000 +0100
@@ -32,7 +32,7 @@
media, Packet, Rational,
};
use human_size::{Byte, Megabyte, Size, SpecificSize};
-use signal_hook::consts::{SIGINT, SIGUSR1};
+use signal_hook::consts::{SIGINT, SIGTERM, SIGUSR1};
use thiserror::Error;
use wayland_client::{
event_created_child,
@@ -108,8 +108,8 @@
)]
filename: String,
- #[clap(long, short, value_parser=parse_geometry, help="geometry to capture, format x,y WxH. Compatiable with the output of `slurp`. Mutually exclusive with --output")]
- geometry: Option<(u32, u32, u32, u32)>,
+ #[clap(long, short, value_parser=parse_geometry, help="geometry to capture, format x,y WxH. Compatiable with the output of `slurp`. Mutually exclusive with --output", allow_hyphen_values=true)]
+ geometry: Option<(i32, i32, u32, u32)>,
#[clap(
long,
@@ -135,12 +135,18 @@
long,
value_enum,
default_value_t,
- help = "which codec to use. Used in conjunction with --no-hw to determinte which enocder to use. Ignored if `encoder` is supplied"
+ help = "which codec to use. Used in conjunction with --no-hw to determine which encoder to use. Ignored if `encoder` is supplied"
)]
codec: Codec,
#[clap(
long,
+ help = "Which ffmpeg muxer to use. Guessed from output filename by default"
+ )]
+ ffmpeg_muxer: Option<String>,
+
+ #[clap(
+ long,
value_enum,
help = "Use this to force a particular ffmpeg encoder. Generally, this is not necessary and the combo of --codec and --hw can get you to where you need to be"
)]
@@ -152,6 +158,9 @@
)]
encode_pixfmt: Option<Pixel>,
+ #[clap(long, value_parser=parse_size, help="what resolution to encode at. example: 1920x1080. Default is the resolution of the captured region. If your goal is reducing filesize, it's suggested to try --bitrate/-b first")]
+ encode_resolution: Option<(u32, u32)>,
+
#[clap(long, short, default_value_t=SpecificSize::new(5, Megabyte).unwrap().into(), help="bitrate to encode at. Unit is bytes per second, so 5 MB is 40 Mbps")]
bitrate: Size,
@@ -207,7 +216,7 @@
Size,
}
-fn parse_geometry(s: &str) -> Result<(u32, u32, u32, u32), ParseGeometryError> {
+fn parse_geometry(s: &str) -> Result<(i32, i32, u32, u32), ParseGeometryError> {
use ParseGeometryError::*;
let mut it = s.split(' ');
let loc = it.next().ok_or(Structure)?;
@@ -223,6 +232,13 @@
return Err(Location);
}
+ let (sizex, sizey) = parse_size(size)?;
+
+ Ok((startx, starty, sizex, sizey))
+}
+
+fn parse_size(size: &str) -> Result<(u32, u32), ParseGeometryError> {
+ use ParseGeometryError::*;
let mut it = size.split('x');
let sizex = it.next().ok_or(Size)?.parse()?;
let sizey = it.next().ok_or(Size)?.parse()?;
@@ -230,7 +246,7 @@
return Err(Size);
}
- Ok((startx, starty, sizex, sizey))
+ Ok((sizex, sizey))
}
fn parse_duration(arg: &str) -> Result<std::time::Duration, std::num::ParseIntError> {
@@ -829,7 +845,7 @@
let _wlr_output_man: ZwlrOutputManagerV1 = gm
.bind(
&eq,
- ZwlrOutputManagerV1::interface().version..=ZwlrOutputManagerV1::interface().version,
+ 1..=4,
(),
)
.expect("Your compositor does not seem to support the wlr-output-manager protocol. wl-screenrec requires a wlroots based compositor like sway or Hyprland");
@@ -1008,8 +1024,6 @@
}
}
(Some((x, y, w, h)), "") => {
- let x = x as i32;
- let y = y as i32;
let w = w as i32;
let h = h as i32;
// --geometry but no --output
@@ -1138,12 +1152,16 @@
capture_pixfmt: Pixel,
refresh: Rational,
(capture_w, capture_h): (i32, i32), // pixels
- (encode_x, encode_y): (i32, i32),
- (encode_w, encode_h): (i32, i32),
+ (roi_x, roi_y): (i32, i32),
+ (roi_w, roi_h): (i32, i32),
sigusr1_flag: Arc<AtomicBool>,
dri_device: &str,
) -> anyhow::Result<Self> {
- let mut octx = ffmpeg_next::format::output(&args.filename).unwrap();
+ let mut octx = if let Some(muxer) = &args.ffmpeg_muxer {
+ ffmpeg_next::format::output_as(&args.filename, muxer).unwrap()
+ } else {
+ ffmpeg_next::format::output(&args.filename).unwrap()
+ };
let codec = if let Some(encoder) = &args.ffmpeg_encoder {
ffmpeg_next::encoder::find_by_name(encoder).ok_or_else(|| {
@@ -1187,17 +1205,19 @@
}
};
- let codec_id = codec.id();
-
let supported_formats = supported_formats(&codec);
- if supported_formats.is_empty() {
- bail!(
- "Encoder {} does not support any pixel formats?",
- codec.name()
- );
- }
-
- let enc_pixfmt = if supported_formats.contains(&Pixel::VAAPI) {
+ let enc_pixfmt = if supported_formats.is_empty() {
+ match args.encode_pixfmt {
+ Some(fmt) => EncodePixelFormat::Sw(fmt),
+ None => {
+ eprintln!(
+ "codec \"{}\" does not advertize supported pixel formats, just using NV12. Pass --encode-pixfmt to suppress this warning",
+ codec.name()
+ );
+ EncodePixelFormat::Sw(Pixel::NV12)
+ }
+ }
+ } else if supported_formats.contains(&Pixel::VAAPI) {
EncodePixelFormat::Vaapi(args.encode_pixfmt.unwrap_or(Pixel::NV12))
} else {
match args.encode_pixfmt {
@@ -1207,6 +1227,7 @@
}
};
+ let codec_id = codec.id();
if unsafe {
avformat_query_codec(
octx.format().as_ptr(),
@@ -1226,17 +1247,26 @@
eprintln!("Opening libva device from DRM device {dri_device}");
- let mut hw_device_ctx = AvHwDevCtx::new_libva(dri_device);
+ let mut hw_device_ctx = match AvHwDevCtx::new_libva(dri_device) {
+ Ok(hdc) => hdc,
+ Err(e) => bail!("Failed to load vaapi device: {e}\nThis is likely *not* a bug in wl-screenrec, but an issue with your vaapi installation. Follow your distribution's instructions. If you're pretty sure you've done this correctly, create a new issue with the output of `vainfo` and if `wf-recorder -c h264_vaapi -d /dev/dri/card0` works."),
+ };
let mut frames_rgb = hw_device_ctx
.create_frame_ctx(capture_pixfmt, capture_w, capture_h)
.unwrap();
+ let (enc_w, enc_h) = match args.encode_resolution {
+ Some((x, y)) => (x as i32, y as i32),
+ None => (roi_w, roi_h),
+ };
+
let (video_filter, filter_timebase) = video_filter(
&mut frames_rgb,
enc_pixfmt,
(capture_w, capture_h),
- (encode_x, encode_y),
- (encode_w, encode_h),
+ (roi_x, roi_y),
+ (roi_w, roi_h),
+ (enc_w, enc_h),
);
let mut frames_yuv = hw_device_ctx
@@ -1245,8 +1275,8 @@
EncodePixelFormat::Vaapi(fmt) => fmt,
EncodePixelFormat::Sw(fmt) => fmt,
},
- encode_w,
- encode_h,
+ enc_w,
+ enc_h,
)
.unwrap();
@@ -1258,7 +1288,7 @@
args,
enc_pixfmt,
&codec,
- (encode_w, encode_h),
+ (enc_w, enc_h),
refresh,
global_header,
&mut hw_device_ctx,
@@ -1287,7 +1317,7 @@
args,
enc_pixfmt,
&codec,
- (encode_w, encode_h),
+ (enc_w, enc_h),
refresh,
global_header,
&mut hw_device_ctx,
@@ -1540,13 +1570,16 @@
inctx: &mut AvHwFrameCtx,
pix_fmt: EncodePixelFormat,
(capture_width, capture_height): (i32, i32),
- (enc_x, enc_y): (i32, i32),
- (enc_width, enc_height): (i32, i32),
+ (roi_x, roi_y): (i32, i32),
+ (roi_w, roi_h): (i32, i32), // size (pixels) of the region to capture
+ (enc_w, enc_h): (i32, i32), // size (pixels) to encode. if not same as roi_{w,h}, the image will be scaled
) -> (filter::Graph, Rational) {
let mut g = ffmpeg::filter::graph::Graph::new();
g.add(
&filter::find("buffer").unwrap(),
"in",
+ // format is bogus, will be replaced below, as we need to pass
+ // hw_frames_ctx which isn't possible with args=
&format!(
"video_size=2840x2160:pix_fmt={}:time_base=1/1000000000",
AVPixelFormat::AV_PIX_FMT_VAAPI as c_int
@@ -1593,19 +1626,15 @@
)
};
+ // exact=1 should not be necessary, as the input is not chroma-subsampled
+ // however, there is a bug in ffmpeg that makes it required: https://trac.ffmpeg.org/ticket/10669
+ // it is harmless to add though, so keep it as a workaround
g.output("in", 0)
.unwrap()
.input("out", 0)
.unwrap()
.parse(&format!(
- "crop={}:{}:{}:{},scale_vaapi=format={}:w={}:h={}{}",
- enc_width,
- enc_height,
- enc_x,
- enc_y,
- output_real_pixfmt_name,
- enc_width,
- enc_height,
+ "crop={roi_w}:{roi_h}:{roi_x}:{roi_y}:exact=1,scale_vaapi=format={output_real_pixfmt_name}:w={enc_w}:h={enc_h}{}",
if let EncodePixelFormat::Vaapi(_) = pix_fmt {
""
} else {
@@ -1638,6 +1667,7 @@
let sigusr1_flag = Arc::new(AtomicBool::new(false));
signal_hook::flag::register(SIGINT, Arc::clone(&quit_flag)).unwrap();
+ signal_hook::flag::register(SIGTERM, Arc::clone(&quit_flag)).unwrap();
signal_hook::flag::register(SIGUSR1, Arc::clone(&sigusr1_flag)).unwrap();
let args = Args::parse();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wl-screenrec-0.1.0/tests/cmdline.rs new/wl-screenrec-0.1.2/tests/cmdline.rs
--- old/wl-screenrec-0.1.0/tests/cmdline.rs 2023-10-02 05:06:03.000000000 +0200
+++ new/wl-screenrec-0.1.2/tests/cmdline.rs 2023-12-04 04:07:52.000000000 +0100
@@ -59,6 +59,30 @@
}
#[test]
+fn scale() {
+ let filename = temp_dir().join("scale.mp4");
+
+ let mut cmd = Command::new(dbg!(wl_screenrec()))
+ .arg("--no-damage")
+ .arg("--encode-resolution=128x128")
+ .arg("-g=0,0 256x256")
+ .arg("-f")
+ .arg(&filename)
+ .spawn()
+ .unwrap();
+
+ sleep(Duration::from_secs(5));
+ let pid = Pid::from_raw(cmd.id() as i32);
+ kill(pid, SIGINT).unwrap();
+
+ let wait_start = Instant::now();
+ cmd.wait().unwrap();
+ assert!(wait_start.elapsed() < Duration::from_secs(1));
+
+ assert_eq!(file_resolution(&filename), (128, 128));
+}
+
+#[test]
fn basic() {
let filename = temp_dir().join("basic.mp4");
@@ -84,11 +108,12 @@
assert!(dur < Duration::from_secs_f64(3.5), "{:?} > 3.5s", dur);
}
-fn file_duration(filename: &Path) -> Duration {
- let json: Value = serde_json::from_str(
+fn file_metadata(filename: &Path) -> Value {
+ serde_json::from_str(
&String::from_utf8(
Command::new("ffprobe")
.arg("-show_format")
+ .arg("-show_streams")
.arg("-print_format")
.arg("json")
.arg(&filename)
@@ -98,7 +123,11 @@
)
.unwrap(),
)
- .unwrap();
+ .unwrap()
+}
+
+fn file_duration(filename: &Path) -> Duration {
+ let json = file_metadata(filename);
let dur: f64 = json
.pointer("/format/duration")
@@ -109,3 +138,22 @@
.unwrap();
Duration::from_secs_f64(dur)
}
+
+fn file_resolution(filename: &Path) -> (i64, i64) {
+ let json = file_metadata(filename);
+
+ (
+ json.pointer("/streams/0/width")
+ .unwrap()
+ .as_number()
+ .unwrap()
+ .as_i64()
+ .unwrap(),
+ json.pointer("/streams/0/height")
+ .unwrap()
+ .as_number()
+ .unwrap()
+ .as_i64()
+ .unwrap(),
+ )
+}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-python-pptx for openSUSE:Factory checked in at 2023-12-28 23:00:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-pptx (Old)
and /work/SRC/openSUSE:Factory/.python-python-pptx.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-python-pptx"
Thu Dec 28 23:00:53 2023 rev:4 rq:1135198 version:0.6.23
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-python-pptx/python-python-pptx.changes 2022-10-08 01:25:47.666308018 +0200
+++ /work/SRC/openSUSE:Factory/.python-python-pptx.new.28375/python-python-pptx.changes 2023-12-28 23:02:32.180795261 +0100
@@ -1,0 +2,14 @@
+Tue Dec 26 20:29:02 UTC 2023 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 0.6.23:
+ * fix: #912 Pillow<=9.5 constraint entails security
+ vulnerability
+ * Add #909 Add imgW, imgH params to `shapes.add_ole_object()`
+ * fix: #754 _Relationships.items() raises
+ * fix: #758 quote in autoshape name must be escaped
+ * fix: #746 update Python 3.x support in docs
+ * fix: #748 setup's `license` should be short string
+ * fix: #762 AttributeError: module 'collections' has no
+ attribute 'abc'
+
+-------------------------------------------------------------------
Old:
----
python-pptx-0.6.21.tar.gz
New:
----
python-pptx-0.6.23.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-python-pptx.spec ++++++
--- /var/tmp/diff_new_pack.A4pBoG/_old 2023-12-28 23:02:32.824818798 +0100
+++ /var/tmp/diff_new_pack.A4pBoG/_new 2023-12-28 23:02:32.824818798 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-python-pptx
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
# Copyright (c) 2021, Martin Hauke <mardnh(a)gmx.de>
#
# All modifications and additions to the file contributed by third parties
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-python-pptx
-Version: 0.6.21
+Version: 0.6.23
Release: 0
Summary: Generate and manipulate Open XML PowerPoint (pptx) files
License: MIT
++++++ python-pptx-0.6.21.tar.gz -> python-pptx-0.6.23.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-python-pptx/python-pptx-0.6.21.tar.gz /work/SRC/openSUSE:Factory/.python-python-pptx.new.28375/python-pptx-0.6.23.tar.gz differ: char 5, line 1
1
0