openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
October 2022
- 1 participants
- 2854 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gstreamer-rtsp-server for openSUSE:Factory checked in at 2022-10-25 11:19:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-rtsp-server (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-rtsp-server.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-rtsp-server"
Tue Oct 25 11:19:26 2022 rev:37 rq:1030669 version:1.20.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer-rtsp-server/gstreamer-rtsp-server.changes 2022-06-24 09:45:19.633677728 +0200
+++ /work/SRC/openSUSE:Factory/.gstreamer-rtsp-server.new.2275/gstreamer-rtsp-server.changes 2022-10-25 11:19:27.674064013 +0200
@@ -1,0 +2,8 @@
+Sat Oct 22 09:10:27 UTC 2022 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 1.20.4:
+ + gst-rtsp-server: Fix pushing backlog to client.
+ + rtsp-server: stream: Don't loop forever if binding to the
+ multicast address fails.
+
+-------------------------------------------------------------------
Old:
----
gst-rtsp-server-1.20.3.tar.xz
New:
----
gst-rtsp-server-1.20.4.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-rtsp-server.spec ++++++
--- /var/tmp/diff_new_pack.zsXWGp/_old 2022-10-25 11:19:28.158065086 +0200
+++ /var/tmp/diff_new_pack.zsXWGp/_new 2022-10-25 11:19:28.166065104 +0200
@@ -20,7 +20,7 @@
%define _name gst-rtsp-server
Name: gstreamer-rtsp-server
-Version: 1.20.3
+Version: 1.20.4
Release: 0
Summary: GStreamer-based RTSP server library
License: LGPL-2.0-or-later
++++++ gst-rtsp-server-1.20.3.tar.xz -> gst-rtsp-server-1.20.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.20.3/ChangeLog new/gst-rtsp-server-1.20.4/ChangeLog
--- old/gst-rtsp-server-1.20.3/ChangeLog 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-rtsp-server-1.20.4/ChangeLog 2022-10-12 17:39:51.000000000 +0200
@@ -1,7 +1,85 @@
+=== release 1.20.4 ===
+
+2022-10-12 16:39:47 +0100 Tim-Philipp M��ller <tim(a)centricular.com>
+
+ * NEWS:
+ * RELEASE:
+ * docs/gst_plugins_cache.json:
+ * gst-rtsp-server.doap:
+ * meson.build:
+ Release 1.20.4
+
+2022-10-12 16:39:40 +0100 Tim-Philipp M��ller <tim(a)centricular.com>
+
+ * ChangeLog:
+ Update ChangeLogs for 1.20.4
+
+2022-08-24 19:50:19 +0800 Bruce Liang <Bruce.Liang(a)Abilitycorp.com.tw>
+
+ * gst/rtsp-server/rtsp-server-internal.h:
+ * gst/rtsp-server/rtsp-stream-transport.c:
+ * gst/rtsp-server/rtsp-stream.c:
+ gst-rtsp-server: Fix pushing backlog to client
+ Check back pressure of a stream transport before popping buffer from its backlog.
+ If the stream transport is not experiencing back pressure, the buffer can be popped from backlog and pushed to client.
+ Fixes:#1298
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2998>
+
+2022-09-02 16:31:54 +0300 Sebastian Dr��ge <sebastian(a)centricular.com>
+
+ * gst/rtsp-server/rtsp-stream.c:
+ rtsp-server: stream: Don't loop forever if binding to the multicast address fails
+ The address/port is pre-defined by the caller of the function, so
+ retrying is only going to loop forever.
+ Ideally the multicast address should be checked after allocating but
+ this doesn't happen currently, so it's better to error out cleanly then
+ to loop forever trying the same address.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2997>
+
+2022-05-25 18:40:30 +0530 Nirbheek Chauhan <nirbheek(a)centricular.com>
+
+ * gst/rtsp-sink/gstrtspclientsink.c:
+ rtsp+rtmp: Forward warning added to tls-validation-flags to our users
+ With the 2.72 release, glib-networking developers have decided that
+ TLS certificate validation cannot be implemented correctly by them, so
+ they've deprecated it.
+ In a nutshell: a cert can have several validation errors, but there
+ are no guarantees that the TLS backend will return all those errors,
+ and things are made even more complicated by the fact that the list of
+ errors might refer to certs that are added for backwards-compat and
+ won't actually be used by the TLS library.
+ Our best option is to ignore the deprecation and pass the warning onto
+ users so they can make an appropriate security decision regarding
+ this.
+ We can't deprecate the tls-validation-flags property because it is
+ very useful when connecting to RTSP cameras that will never get
+ updates to fix certificate errors.
+ Relevant upstream merge requests / issues:
+ https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2214
+ https://gitlab.gnome.org/GNOME/glib-networking/-/issues/179
+ https://gitlab.gnome.org/GNOME/glib-networking/-/merge_requests/193
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2818>
+
+2022-06-29 10:55:13 +0100 Tim-Philipp M��ller <tim(a)centricular.com>
+
+ * meson.build:
+ coding style: allow declarations after statement
+ See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1243/
+ and https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/78
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2702>
+
+2022-06-16 00:59:00 +0100 Tim-Philipp M��ller <tim(a)centricular.com>
+
+ * docs/gst_plugins_cache.json:
+ * meson.build:
+ Back to development
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2619>
+
=== release 1.20.3 ===
2022-06-15 23:36:18 +0100 Tim-Philipp M��ller <tim(a)centricular.com>
+ * ChangeLog:
* NEWS:
* RELEASE:
* docs/gst_plugins_cache.json:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.20.3/NEWS new/gst-rtsp-server-1.20.4/NEWS
--- old/gst-rtsp-server-1.20.3/NEWS 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-rtsp-server-1.20.4/NEWS 2022-10-12 17:39:51.000000000 +0200
@@ -2,13 +2,13 @@
GStreamer 1.20.0 was originally released on 3 February 2022.
-The latest bug-fix release in the 1.20 series is 1.20.3 and was released
-on 15 June 2022.
+The latest bug-fix release in the 1.20 series is 1.20.4 and was released
+on 12 October 2022.
See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
version of this document.
-Last updated: Monday 15 June 2022, 17:00 UTC (log)
+Last updated: Wednesday 12 October 2022, 15:00 UTC (log)
Introduction
@@ -757,7 +757,8 @@
- matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e.��stream-format avc3 and hev1) which allows on-the-fly
- profile/level/resolution changes.
+ profile/level changes, and from 1.20.4 onwards also resolution
+ changes.
- matroskamux: new "cluster-timestamp-offset" property, useful for use
cases where the container timestamps should map to some absolute
@@ -909,7 +910,7 @@
- vp8enc: finish support for temporal scalability: two new properties
("temporal-scalability-layer-flags",
"temporal-scalability-layer-sync-flags") and a unit change on the
- "temporal-scalability-target-bitrate" property (now expects bps);
+ "temporal-scalability-target-bitrate��� property (now expects bps);
also make temporal scalability details available to RTP payloaders
as buffer metadata.
@@ -1754,7 +1755,7 @@
names of internal elements anyway.
- The vp8enc element now expects bps (bits per second) for the
- "temporal-scalability-target-bitrate" property, which is consistent
+ "temporal-scalability-target-bitrate��� property, which is consistent
with the "target-bitrate" property. Since additional configuration
is required with modern libvpx to make temporal scaling work anyway,
chances are that very few people will have been using this property
@@ -2503,15 +2504,293 @@
- List of Merge Requests applied in 1.20.3
- List of Issues fixed in 1.20.3
+1.20.4
+
+The fourth 1.20 bug-fix release (1.20.4) was released on 12 October
+2022.
+
+This release only contains bugfixes and it should be safe to upgrade
+from 1.20.x.
+
+Highlighted bugfixes in 1.20.4
+
+- avaudiodec: fix playback issue with WMA files, would throw an error
+ at EOS with FFmpeg 5.x
+- Fix deadlock when loading gst-editing-services plugin
+- Fix input buffering capacity in live mode for aggregator,
+ video/audio aggregator subclasses, muxers
+- glimagesink: fix crash on Android
+- subtitle handling and subtitle overlay fixes
+- matroska-mux: allow width + height changes for avc3|hev1|vp8|vp9
+- rtspsrc: fix control url handling for spec compliant servers and add
+ fallback for incompliant servers
+- WebRTC fixes
+- RTP retransmission fixes
+- video: fixes for formats with 4x subsampling and horizontal co-sited
+ chroma (Y41B, YUV9, YVU9 and IYU9)
+- macOS build and packaging fixes, in particular fix finding of gio
+ modules on macOS for https/TLS support
+- Performance improvements
+- Miscellaneous bug fixes, memory leak fixes, and other stability and
+ reliability improvements
+
+gstreamer
+
+- buffer: drop parent meta in deep copy/foreach_metadata
+- devicemonitor: Use a sync bus handler for the provider to avoid
+ accumulating all messages until the provider is stopped
+- element: Fix requesting of pads with string templates
+- gst: Protect initialization state with a recursive mutex
+- gst: add missing define guard for build without gstreamer debug
+ logging support
+- gst_init: Initialize static plugins just before dynamic plugins
+- info: Parse ���NONE��� as a valid level name
+- meta: Set the parent refcount of the GstStructure correctly
+- pluginloader: Don���t hang on short reads/writes
+- tracers: leaks: fix potentially invalid memory access when trying to
+ detect object type
+- tracers: leaks: fix object-refings.class flags
+- uri: When setting the same string again do nothing
+- value: Don���t loop forever when serializing invalid flag
+
+Base Libraries
+
+- aggregator: fix input buffering in live mode (was too low before in
+ many cases)
+- aggregator: fix reversed active/flushing arguments in debug log
+ output
+- aggregator: Reset EOS flag after receiving a stream-start event
+
+Core Elements
+
+- queue2: Hold the lock when modifying sinkresult
+- queue2: Fix deadlock when deactivate is called in pull mode
+
+gst-plugins-base
+
+- decodebin3: fix mutex leaks
+- decodebin3: Fix memory issues with active selection list
+- decodebin3, uridecodebin3, urisourcebin: Event handling fixes
+- decodebin3: fix EOS event sequence
+- parsebin: Avoid crash with unknown streams
+- parsebin: SIGSEGV during HLS stream using souphttpsrc
+- glimagesink: only allow setting the GL display/context if it is a
+ valid value
+- glimagesink: segfault on android devices
+- gstgl: Fix several memory leaks in macOS
+- opusenc: improve inband-fec property documentation
+- playsink: Hold a reference to the soft volume element
+- pbutils: descriptions: fix gst_pb_utils_get_caps_description_flags()
+- rtspurl: Use gst_uri_join_strings() in
+ gst_rtsp_url_get_request_uri_with_control() instead of a
+ hand-crafted, wrong version
+- rtspconnection: protect cancellable by a mutex
+- sdpmessage: Don���t set SDP medias from caps without
+ media/payload/clock-rate fields
+- samiparse: fix handling of self-closing tags
+- ssaparse: include required system headers for isspace() and sscanf()
+ functions
+- subparse: fix crash when parsing invalid timestamps in mpl2
+- subparse fixes
+- textoverlay: Don���t miscalculate text running times
+- videoaggregator: always convert when user provides converter-config
+- video: Fix scaling in 4x horizontal co-sited chroma (Y41B, YUV9,
+ YVU9 and IYU9)
+- xmptag: register musicbrainz tags during init to fix critical in
+ jpegparse
+- xvimagesink: fix image leaks in error code path
+- tests: skip unit tests for dependency-less elements that have been
+ disabled
+
+Tools
+
+- No changes
+
+gst-plugins-good
+
+- alpha: fix stride issue when out buffer has padding on right
+- isoff: Fix earliest pts field parse issue
+- matroska-mux: allow width + height changes for avc3|hev1|vp8|vp9
+- qt: Fix another instance of Qt/GStreamer both defining GLsync
+ differently
+- qtdemux: Avoid crash on reconfiguring.
+- qtdemux: guard against timestamp calculation overflow in gap event
+ loop
+- qtdemux: Don���t use invalid values from failed trex parsing
+- qtdemux: possible endless loop
+- rtpjitterbuffer: Only unschedule timers for late packets if they���re
+ not RTX packets and only once
+- rtpjitterbuffer: remove lost timer for out of order packets
+- rtspsrc: SETUP generates 400 Bad Request
+- rtspsrc: Retry SETUP with non-compliant URL resolution on ���Bad
+ Request��� and ���Not found���
+- rtpst2022-1-fecenc: Drain column packets on EOS
+- rtpvp8depay: If configured to wait for keyframes after packet loss,
+ also do that if incomplete frames are detected
+- splitmuxsink: Don���t crash on EOS without buffer
+- splitmuxsrc: Stop pad task before cleanup
+- splitmuxsrc: don���t consider unlinked pads when deactivating part
+- soup: libsoup3 makes audio streaming stop
+- v4l2: fix critical when unreferencign buffer with no data
+- v4l2bufferpool: Fix debug trace
+- v4l2object: Add support for Apple���s full-range bt709 colorspace
+ variant 1:3:5:1
+- v4l2videocodec: workaround for failure to fully drain frames
+ preceding MIDSTREAM renegotiation
+- v4l2allocator: Fix invalid imported dmabuf fd
+- videoflip: Fix caps negotiation when method is selected
+- build failure trying to build jack examples
+- examples: don���t try and build jack examples if jack was disabled
+- tests: skip unit tests for dependency-less elements that have been
+ disabled
+
+gst-plugins-bad
+
+- amcvideodec: fix GstAmcSurfaceTexture segfault
+- audiobuffersplit: Fix drift that was introduced by wrong
+ calculations in gapless mode
+- avfvideosrc: Fix wrong default framerate value
+- audiovisualizer: fix buffer mapping to not increase refcount
+- d3d11decoder: Check 16K resolution support
+- d3d11videosink: Fix for force-aspect-ratio setting when rendering on
+ shared texture
+- mxfdemux: Always calculate BlockAlign of raw audio to work around
+ files with broken BlockAlign field in the headers
+- nvdec: Fix for HEVC decoding when coded resolution is larger than
+ display resolution
+- openh264: Register debug categories earlier
+- openh264enc: Fix constrained-high encoding
+- openmpt: update from now deprecated api
+- GstPlay: missing cleanup for g_autoptr
+- player/play: Fix object construction and various leaks
+- player: Plug a memory leak
+- proxysink: Make sure stream-start and caps events are forwarded, and
+ fix memory leak
+- tsdemux: Don���t trigger a program change when falling back to
+ ignore-pcr behaviour
+- va: allocator: Fix translation of VADRMPRIMESurfaceDescriptor
+- va: h265dec: Fix a crash because of missing reference frame.
+- vah265dec: Decoder segfaults on seek
+- wasapi: Implement default audio channel mask
+- wasapi2: Fix initial mute/volume setting
+- webrtcbin: Limit sink query to sink pads
+- webrtcbin: Fix pointer dereference before null check
+- webrtc: Make sure to return NULL when validating TURN server fails
+- tests: skip unit tests for dependency-less elements that have been
+ disabled
+
+gst-plugins-ugly
+
+- tests: skip unit tests for dependency-less elements that have been
+ disabled
+
+gst-libav
+
+- avauddec: fix regression with WMA files, would throw an error at EOS
+- avauddec: fix unnecessary reconfiguration if the audio layout isn���t
+ specified
+- libav: Fix for APNG encoder property registration
+- Failure to decode end of WMA file
+
+gst-rtsp-server
+
+- gst-rtsp-server: Fix pushing backlog to client
+- rtsp-server: stream: Don���t loop forever if binding to the multicast
+ address fails
+
+gstreamer-vaapi
+
+- vaapi: Handle when no encoders/decoders available.
+- vaapi: Crash in gst_vaapidecode_class_init() when no
+ decoders/encoders available
+
+gstreamer-sharp
+
+- No changes
+
+gst-omx
+
+- No changes
+
+gst-python
+
+- python: Do not call gst_init when it is already is_initialized
+
+gst-editing-services
+
+- Deadlock in ges because of recursive gst_init() call
+- ges/gstframepositioner: don���t create one compositor per frame meta
+- nle: clear seek event properly
+
+gst-examples:
+
+- examples/webrtc/signalling: Fix compatibility with Python 3.10
+
+Development build environment + gst-full build
+
+- build: Fix some compiler warnings by upgrading wraps
+- dv, opusparse: fix duplicate symbols in static build
+- Fix fedora 36 warnings - OpenSSL 3.0 deprecations + GLib 2.72
+ tls-validation deprecations
+- Various macOS build fixes
+- meson: Improve certifi documentation on macOS
+
+Cerbero build tool and packaging changes in 1.20.4
+
+- Add Ubuntu 22.04 Jammy Jellyfish
+- Add gst-rtsp-server library to the macOS framework
+- cerbero: Quick fix for gen-cache breakage
+- macos: Fix the install_name for the GStreamer framework
+- Download using powershell on Windows and rework download func
+- macos: Add arm64 to the metadata for the installer
+- cerbero: Allow building on Linux ARM64
+- pkg-config.recipe: Add to core platform files list
+- git: Fix issue with last security patch
+- distros: Fix CentOS allowance
+- cerbero: Print working directory for commands that are run
+- cerbero: Fix license property usage example
+- Fix issue getting distro_version in Debian Bookworm
+- glib: Fix gio modules loading on macOS
+- cmake: Fix macOS ARM64 -> x86_64 cross-compilation
+- Fix logo display in macOS installer
+- openssl.recipe: Fix segfault on latest macOS
+- msvc: Fix for broken CRT linking at application project because of
+ MSVCRT linking
+- cerbero: Do not add rpaths that already exist on macOS
+- android: fix build with android gradle plugin 7.2
+- macOS framework is unusable starting from 1.18.0
+
+Contributors to 1.20.4
+
+Adrian Fiergolski, Aleksandr Slobodeniuk, Andoni Morales Alastruey,
+Andrew Pritchard, Bruce Liang, Corentin Damman, Daniel Morin, Edward
+Hervey, Elliot Chen, Fabian Orccon, fduncanh, Guillaume Desmottes,
+Haihua Hu, He Junyan, Ignazio Pillai, James Cowgill, James Hilliard, Jan
+Alexander Steffens (heftig), Jan Schmidt, Jianhui Dai, Jonas Danielsson,
+Jordan Petridis, Khem Raj, Krystian Wojtas, Martin D��rum, Mart Raudsepp,
+Mathieu Duponchelle, Matthew Waters, Matthias Clasen, Nicolas Dufresne,
+Nirbheek Chauhan, Olivier Cr��te, Pawe�� Stawicki, Philippe Normand,
+Philipp Zabel, Piotr Brzezi��ski, Rafael Caricio, Rafael Sobral, Raul
+Tambre, Ruben Gonzalez, Sangchul Lee, Sebastian Dr��ge, Seungha Yang,
+St��phane Cerveau, Thibault Saunier, Tim-Philipp M��ller, Tristan
+Matthews, V��ctor Manuel J��quez Leal, Xavier Claessens, Zhiyuan Liu,
+
+��� and many others who have contributed bug reports, translations, sent
+suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.20.4
+
+- List of Merge Requests applied in 1.20.4
+- List of Issues fixed in 1.20.4
+
Schedule for 1.22
Our next major feature release will be 1.22, and 1.21 will be the
unstable development version leading up to the stable 1.22 release. The
development of 1.21/1.22 will happen in the git main branch.
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.22 development cycle is now confirmed, and we aim for
+a 1.22.0 release in December 2022.
1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.20.3/RELEASE new/gst-rtsp-server-1.20.4/RELEASE
--- old/gst-rtsp-server-1.20.3/RELEASE 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-rtsp-server-1.20.4/RELEASE 2022-10-12 17:39:51.000000000 +0200
@@ -1,4 +1,4 @@
-This is GStreamer gst-rtsp-server 1.20.3.
+This is GStreamer gst-rtsp-server 1.20.4.
The GStreamer team is thrilled to announce a new major feature release
of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.20.3/docs/gst_plugins_cache.json new/gst-rtsp-server-1.20.4/docs/gst_plugins_cache.json
--- old/gst-rtsp-server-1.20.3/docs/gst_plugins_cache.json 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-rtsp-server-1.20.4/docs/gst_plugins_cache.json 2022-10-12 17:39:51.000000000 +0200
@@ -321,7 +321,7 @@
"construct": false,
"construct-only": false,
"controllable": false,
- "default": "GStreamer/1.20.3",
+ "default": "GStreamer/1.20.4",
"mutable": "null",
"readable": true,
"type": "gchararray",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.20.3/gst/rtsp-server/rtsp-server-internal.h new/gst-rtsp-server-1.20.4/gst/rtsp-server/rtsp-server-internal.h
--- old/gst-rtsp-server-1.20.3/gst/rtsp-server/rtsp-server-internal.h 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-rtsp-server-1.20.4/gst/rtsp-server/rtsp-server-internal.h 2022-10-12 17:39:51.000000000 +0200
@@ -40,6 +40,8 @@
GstBufferList **buffer_list,
gboolean *is_rtp);
+gboolean gst_rtsp_stream_transport_backlog_peek_is_rtp (GstRTSPStreamTransport * trans);
+
gboolean gst_rtsp_stream_transport_backlog_is_empty (GstRTSPStreamTransport *trans);
void gst_rtsp_stream_transport_clear_backlog (GstRTSPStreamTransport * trans);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.20.3/gst/rtsp-server/rtsp-stream-transport.c new/gst-rtsp-server-1.20.4/gst/rtsp-server/rtsp-stream-transport.c
--- old/gst-rtsp-server-1.20.3/gst/rtsp-server/rtsp-stream-transport.c 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-rtsp-server-1.20.4/gst/rtsp-server/rtsp-stream-transport.c 2022-10-12 17:39:51.000000000 +0200
@@ -953,6 +953,25 @@
/* Not MT-safe, caller should ensure consistent locking.
* See gst_rtsp_stream_transport_lock_backlog() */
gboolean
+gst_rtsp_stream_transport_backlog_peek_is_rtp (GstRTSPStreamTransport * trans)
+{
+ BackLogItem *item;
+ GstRTSPStreamTransportPrivate *priv;
+
+ g_return_val_if_fail (!gst_rtsp_stream_transport_backlog_is_empty (trans),
+ FALSE);
+
+ priv = trans->priv;
+
+ item = (BackLogItem *) gst_queue_array_peek_head_struct (priv->items);
+
+ return item->is_rtp;
+}
+
+
+/* Not MT-safe, caller should ensure consistent locking.
+ * See gst_rtsp_stream_transport_lock_backlog() */
+gboolean
gst_rtsp_stream_transport_backlog_is_empty (GstRTSPStreamTransport * trans)
{
return gst_queue_array_is_empty (trans->priv->items);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.20.3/gst/rtsp-server/rtsp-stream.c new/gst-rtsp-server-1.20.4/gst/rtsp-server/rtsp-stream.c
--- old/gst-rtsp-server-1.20.3/gst/rtsp-server/rtsp-stream.c 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-rtsp-server-1.20.4/gst/rtsp-server/rtsp-stream.c 2022-10-12 17:39:51.000000000 +0200
@@ -1507,8 +1507,10 @@
|| multicast) {
GstRTSPAddressFlags flags;
- if (addr)
+ if (addr) {
+ g_assert (*server_addr_out == NULL);
rejected_addresses = g_list_prepend (rejected_addresses, addr);
+ }
if (!pool)
goto no_pool;
@@ -1558,9 +1560,15 @@
if (!g_socket_bind (rtp_socket, rtp_sockaddr, FALSE, NULL)) {
GST_DEBUG_OBJECT (stream, "rtp bind() failed, will try again");
g_object_unref (rtp_sockaddr);
- if (transport_settings_defined)
+ if (transport_settings_defined) {
goto transport_settings_error;
- goto again;
+ } else if (*server_addr_out && ((pool
+ && gst_rtsp_address_pool_has_unicast_addresses (pool))
+ || multicast)) {
+ goto no_address;
+ } else {
+ goto again;
+ }
}
g_object_unref (rtp_sockaddr);
@@ -2636,16 +2644,20 @@
gboolean is_rtp;
gboolean popped;
- popped =
- gst_rtsp_stream_transport_backlog_pop (trans, &buffer, &buffer_list,
- &is_rtp);
+ is_rtp = gst_rtsp_stream_transport_backlog_peek_is_rtp (trans);
+
+ if (!gst_rtsp_stream_transport_check_back_pressure (trans, is_rtp)) {
+ popped =
+ gst_rtsp_stream_transport_backlog_pop (trans, &buffer, &buffer_list,
+ &is_rtp);
- g_assert (popped == TRUE);
+ g_assert (popped == TRUE);
- send_ret = push_data (stream, trans, buffer, buffer_list, is_rtp);
+ send_ret = push_data (stream, trans, buffer, buffer_list, is_rtp);
- gst_clear_buffer (&buffer);
- gst_clear_buffer_list (&buffer_list);
+ gst_clear_buffer (&buffer);
+ gst_clear_buffer_list (&buffer_list);
+ }
}
gst_rtsp_stream_transport_unlock_backlog (trans);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.20.3/gst/rtsp-sink/gstrtspclientsink.c new/gst-rtsp-server-1.20.4/gst/rtsp-sink/gstrtspclientsink.c
--- old/gst-rtsp-server-1.20.3/gst/rtsp-sink/gstrtspclientsink.c 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-rtsp-server-1.20.4/gst/rtsp-sink/gstrtspclientsink.c 2022-10-12 17:39:51.000000000 +0200
@@ -666,6 +666,16 @@
* TLS certificate validation flags used to validate server
* certificate.
*
+ * GLib guarantees that if certificate verification fails, at least one
+ * error will be set, but it does not guarantee that all possible errors
+ * will be set. Accordingly, you may not safely decide to ignore any
+ * particular type of error.
+ *
+ * For example, it would be incorrect to mask %G_TLS_CERTIFICATE_EXPIRED if
+ * you want to allow expired certificates, because this could potentially be
+ * the only error flag set even if other problems exist with the
+ * certificate.
+ *
*/
g_object_class_install_property (gobject_class, PROP_TLS_VALIDATION_FLAGS,
g_param_spec_flags ("tls-validation-flags", "TLS validation flags",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.20.3/gst-rtsp-server.doap new/gst-rtsp-server-1.20.4/gst-rtsp-server.doap
--- old/gst-rtsp-server-1.20.3/gst-rtsp-server.doap 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-rtsp-server-1.20.4/gst-rtsp-server.doap 2022-10-12 17:39:51.000000000 +0200
@@ -32,6 +32,16 @@
<release>
<Version>
+ <revision>1.20.4</revision>
+ <branch>1.20</branch>
+ <name></name>
+ <created>2022-10-12</created>
+ <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.20.…" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.20.3</revision>
<branch>1.20</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-rtsp-server-1.20.3/meson.build new/gst-rtsp-server-1.20.4/meson.build
--- old/gst-rtsp-server-1.20.3/meson.build 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-rtsp-server-1.20.4/meson.build 2022-10-12 17:39:51.000000000 +0200
@@ -1,5 +1,5 @@
project('gst-rtsp-server', 'c',
- version : '1.20.3',
+ version : '1.20.4',
meson_version : '>= 0.59',
default_options : ['warning_level=1', 'buildtype=debugoptimized'])
@@ -126,7 +126,6 @@
'-Wmissing-include-dirs',
'-Waddress',
'-Wno-multichar',
- '-Wdeclaration-after-statement',
'-Wvla',
'-Wpointer-arith',
]
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-gst for openSUSE:Factory checked in at 2022-10-25 11:19:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-gst (Old)
and /work/SRC/openSUSE:Factory/.python-gst.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-gst"
Tue Oct 25 11:19:26 2022 rev:41 rq:1030668 version:1.20.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-gst/python-gst.changes 2022-06-24 09:45:23.661680547 +0200
+++ /work/SRC/openSUSE:Factory/.python-gst.new.2275/python-gst.changes 2022-10-25 11:19:26.750061965 +0200
@@ -1,0 +2,6 @@
+Sat Oct 22 09:08:56 UTC 2022 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 1.20.4:
+ + python: Do not call gst_init when it is already is_initialized.
+
+-------------------------------------------------------------------
Old:
----
gst-python-1.20.3.tar.xz
New:
----
gst-python-1.20.4.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-gst.spec ++++++
--- /var/tmp/diff_new_pack.WhxfW1/_old 2022-10-25 11:19:27.190062941 +0200
+++ /var/tmp/diff_new_pack.WhxfW1/_new 2022-10-25 11:19:27.198062959 +0200
@@ -19,7 +19,7 @@
%define _name gst-python
Name: python-gst
-Version: 1.20.3
+Version: 1.20.4
Release: 0
Summary: Python Bindings for GStreamer
License: LGPL-2.1-or-later
++++++ gst-python-1.20.3.tar.xz -> gst-python-1.20.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/ChangeLog new/gst-python-1.20.4/ChangeLog
--- old/gst-python-1.20.3/ChangeLog 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/ChangeLog 2022-10-12 17:39:51.000000000 +0200
@@ -1,7 +1,61 @@
+=== release 1.20.4 ===
+
+2022-10-12 16:39:47 +0100 Tim-Philipp M��ller <tim(a)centricular.com>
+
+ * NEWS:
+ * RELEASE:
+ * gst-python.doap:
+ * meson.build:
+ Release 1.20.4
+
+2022-10-12 16:39:40 +0100 Tim-Philipp M��ller <tim(a)centricular.com>
+
+ * ChangeLog:
+ Update ChangeLogs for 1.20.4
+
+2022-06-28 16:38:09 -0400 Thibault Saunier <tsaunier(a)igalia.com>
+
+ * examples/plugins/python/py_audiotestsrc.py:
+ python: Fix the audiotestsrc example
+ Since 830d1595b94ee855b664b2101f0832fbd0181b9c AudioInfo::from_caps has been hidden in python
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2737>
+
+2022-06-28 16:35:58 -0400 Thibault Saunier <tsaunier(a)igalia.com>
+
+ * examples/plugins/python/audioplot.py:
+ * examples/plugins/python/exampleTransform.py:
+ * examples/plugins/python/identity.py:
+ * examples/plugins/python/mixer.py:
+ * examples/plugins/python/py_audiotestsrc.py:
+ * examples/plugins/python/sinkelement.py:
+ * gi/overrides/Gst.py:
+ python: Add a Gst.init_python function to be called from plugins
+ Plugins know that they will be initialized after Gst was initialized
+ so they can call the initialization function dedicated for the python
+ bindings
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2737>
+
+2022-06-28 11:02:37 -0400 Thibault Saunier <tsaunier(a)igalia.com>
+
+ * gi/overrides/Gst.py:
+ python: Do not call gst_init when it is already is_initialized
+ GStreamer plugins written in python need to call `Gst.init` to ensure
+ that GStreamer is initialized so when loading a python plugin, we might
+ be recursively calling `gst_init` which is not a good idea.
+ Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/940
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2737>
+
+2022-06-16 00:59:00 +0100 Tim-Philipp M��ller <tim(a)centricular.com>
+
+ * meson.build:
+ Back to development
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2619>
+
=== release 1.20.3 ===
2022-06-15 23:36:18 +0100 Tim-Philipp M��ller <tim(a)centricular.com>
+ * ChangeLog:
* NEWS:
* RELEASE:
* gst-python.doap:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/NEWS new/gst-python-1.20.4/NEWS
--- old/gst-python-1.20.3/NEWS 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/NEWS 2022-10-12 17:39:51.000000000 +0200
@@ -2,13 +2,13 @@
GStreamer 1.20.0 was originally released on 3 February 2022.
-The latest bug-fix release in the 1.20 series is 1.20.3 and was released
-on 15 June 2022.
+The latest bug-fix release in the 1.20 series is 1.20.4 and was released
+on 12 October 2022.
See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
version of this document.
-Last updated: Monday 15 June 2022, 17:00 UTC (log)
+Last updated: Wednesday 12 October 2022, 15:00 UTC (log)
Introduction
@@ -757,7 +757,8 @@
- matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
(i.e.��stream-format avc3 and hev1) which allows on-the-fly
- profile/level/resolution changes.
+ profile/level changes, and from 1.20.4 onwards also resolution
+ changes.
- matroskamux: new "cluster-timestamp-offset" property, useful for use
cases where the container timestamps should map to some absolute
@@ -909,7 +910,7 @@
- vp8enc: finish support for temporal scalability: two new properties
("temporal-scalability-layer-flags",
"temporal-scalability-layer-sync-flags") and a unit change on the
- "temporal-scalability-target-bitrate" property (now expects bps);
+ "temporal-scalability-target-bitrate��� property (now expects bps);
also make temporal scalability details available to RTP payloaders
as buffer metadata.
@@ -1754,7 +1755,7 @@
names of internal elements anyway.
- The vp8enc element now expects bps (bits per second) for the
- "temporal-scalability-target-bitrate" property, which is consistent
+ "temporal-scalability-target-bitrate��� property, which is consistent
with the "target-bitrate" property. Since additional configuration
is required with modern libvpx to make temporal scaling work anyway,
chances are that very few people will have been using this property
@@ -2503,15 +2504,293 @@
- List of Merge Requests applied in 1.20.3
- List of Issues fixed in 1.20.3
+1.20.4
+
+The fourth 1.20 bug-fix release (1.20.4) was released on 12 October
+2022.
+
+This release only contains bugfixes and it should be safe to upgrade
+from 1.20.x.
+
+Highlighted bugfixes in 1.20.4
+
+- avaudiodec: fix playback issue with WMA files, would throw an error
+ at EOS with FFmpeg 5.x
+- Fix deadlock when loading gst-editing-services plugin
+- Fix input buffering capacity in live mode for aggregator,
+ video/audio aggregator subclasses, muxers
+- glimagesink: fix crash on Android
+- subtitle handling and subtitle overlay fixes
+- matroska-mux: allow width + height changes for avc3|hev1|vp8|vp9
+- rtspsrc: fix control url handling for spec compliant servers and add
+ fallback for incompliant servers
+- WebRTC fixes
+- RTP retransmission fixes
+- video: fixes for formats with 4x subsampling and horizontal co-sited
+ chroma (Y41B, YUV9, YVU9 and IYU9)
+- macOS build and packaging fixes, in particular fix finding of gio
+ modules on macOS for https/TLS support
+- Performance improvements
+- Miscellaneous bug fixes, memory leak fixes, and other stability and
+ reliability improvements
+
+gstreamer
+
+- buffer: drop parent meta in deep copy/foreach_metadata
+- devicemonitor: Use a sync bus handler for the provider to avoid
+ accumulating all messages until the provider is stopped
+- element: Fix requesting of pads with string templates
+- gst: Protect initialization state with a recursive mutex
+- gst: add missing define guard for build without gstreamer debug
+ logging support
+- gst_init: Initialize static plugins just before dynamic plugins
+- info: Parse ���NONE��� as a valid level name
+- meta: Set the parent refcount of the GstStructure correctly
+- pluginloader: Don���t hang on short reads/writes
+- tracers: leaks: fix potentially invalid memory access when trying to
+ detect object type
+- tracers: leaks: fix object-refings.class flags
+- uri: When setting the same string again do nothing
+- value: Don���t loop forever when serializing invalid flag
+
+Base Libraries
+
+- aggregator: fix input buffering in live mode (was too low before in
+ many cases)
+- aggregator: fix reversed active/flushing arguments in debug log
+ output
+- aggregator: Reset EOS flag after receiving a stream-start event
+
+Core Elements
+
+- queue2: Hold the lock when modifying sinkresult
+- queue2: Fix deadlock when deactivate is called in pull mode
+
+gst-plugins-base
+
+- decodebin3: fix mutex leaks
+- decodebin3: Fix memory issues with active selection list
+- decodebin3, uridecodebin3, urisourcebin: Event handling fixes
+- decodebin3: fix EOS event sequence
+- parsebin: Avoid crash with unknown streams
+- parsebin: SIGSEGV during HLS stream using souphttpsrc
+- glimagesink: only allow setting the GL display/context if it is a
+ valid value
+- glimagesink: segfault on android devices
+- gstgl: Fix several memory leaks in macOS
+- opusenc: improve inband-fec property documentation
+- playsink: Hold a reference to the soft volume element
+- pbutils: descriptions: fix gst_pb_utils_get_caps_description_flags()
+- rtspurl: Use gst_uri_join_strings() in
+ gst_rtsp_url_get_request_uri_with_control() instead of a
+ hand-crafted, wrong version
+- rtspconnection: protect cancellable by a mutex
+- sdpmessage: Don���t set SDP medias from caps without
+ media/payload/clock-rate fields
+- samiparse: fix handling of self-closing tags
+- ssaparse: include required system headers for isspace() and sscanf()
+ functions
+- subparse: fix crash when parsing invalid timestamps in mpl2
+- subparse fixes
+- textoverlay: Don���t miscalculate text running times
+- videoaggregator: always convert when user provides converter-config
+- video: Fix scaling in 4x horizontal co-sited chroma (Y41B, YUV9,
+ YVU9 and IYU9)
+- xmptag: register musicbrainz tags during init to fix critical in
+ jpegparse
+- xvimagesink: fix image leaks in error code path
+- tests: skip unit tests for dependency-less elements that have been
+ disabled
+
+Tools
+
+- No changes
+
+gst-plugins-good
+
+- alpha: fix stride issue when out buffer has padding on right
+- isoff: Fix earliest pts field parse issue
+- matroska-mux: allow width + height changes for avc3|hev1|vp8|vp9
+- qt: Fix another instance of Qt/GStreamer both defining GLsync
+ differently
+- qtdemux: Avoid crash on reconfiguring.
+- qtdemux: guard against timestamp calculation overflow in gap event
+ loop
+- qtdemux: Don���t use invalid values from failed trex parsing
+- qtdemux: possible endless loop
+- rtpjitterbuffer: Only unschedule timers for late packets if they���re
+ not RTX packets and only once
+- rtpjitterbuffer: remove lost timer for out of order packets
+- rtspsrc: SETUP generates 400 Bad Request
+- rtspsrc: Retry SETUP with non-compliant URL resolution on ���Bad
+ Request��� and ���Not found���
+- rtpst2022-1-fecenc: Drain column packets on EOS
+- rtpvp8depay: If configured to wait for keyframes after packet loss,
+ also do that if incomplete frames are detected
+- splitmuxsink: Don���t crash on EOS without buffer
+- splitmuxsrc: Stop pad task before cleanup
+- splitmuxsrc: don���t consider unlinked pads when deactivating part
+- soup: libsoup3 makes audio streaming stop
+- v4l2: fix critical when unreferencign buffer with no data
+- v4l2bufferpool: Fix debug trace
+- v4l2object: Add support for Apple���s full-range bt709 colorspace
+ variant 1:3:5:1
+- v4l2videocodec: workaround for failure to fully drain frames
+ preceding MIDSTREAM renegotiation
+- v4l2allocator: Fix invalid imported dmabuf fd
+- videoflip: Fix caps negotiation when method is selected
+- build failure trying to build jack examples
+- examples: don���t try and build jack examples if jack was disabled
+- tests: skip unit tests for dependency-less elements that have been
+ disabled
+
+gst-plugins-bad
+
+- amcvideodec: fix GstAmcSurfaceTexture segfault
+- audiobuffersplit: Fix drift that was introduced by wrong
+ calculations in gapless mode
+- avfvideosrc: Fix wrong default framerate value
+- audiovisualizer: fix buffer mapping to not increase refcount
+- d3d11decoder: Check 16K resolution support
+- d3d11videosink: Fix for force-aspect-ratio setting when rendering on
+ shared texture
+- mxfdemux: Always calculate BlockAlign of raw audio to work around
+ files with broken BlockAlign field in the headers
+- nvdec: Fix for HEVC decoding when coded resolution is larger than
+ display resolution
+- openh264: Register debug categories earlier
+- openh264enc: Fix constrained-high encoding
+- openmpt: update from now deprecated api
+- GstPlay: missing cleanup for g_autoptr
+- player/play: Fix object construction and various leaks
+- player: Plug a memory leak
+- proxysink: Make sure stream-start and caps events are forwarded, and
+ fix memory leak
+- tsdemux: Don���t trigger a program change when falling back to
+ ignore-pcr behaviour
+- va: allocator: Fix translation of VADRMPRIMESurfaceDescriptor
+- va: h265dec: Fix a crash because of missing reference frame.
+- vah265dec: Decoder segfaults on seek
+- wasapi: Implement default audio channel mask
+- wasapi2: Fix initial mute/volume setting
+- webrtcbin: Limit sink query to sink pads
+- webrtcbin: Fix pointer dereference before null check
+- webrtc: Make sure to return NULL when validating TURN server fails
+- tests: skip unit tests for dependency-less elements that have been
+ disabled
+
+gst-plugins-ugly
+
+- tests: skip unit tests for dependency-less elements that have been
+ disabled
+
+gst-libav
+
+- avauddec: fix regression with WMA files, would throw an error at EOS
+- avauddec: fix unnecessary reconfiguration if the audio layout isn���t
+ specified
+- libav: Fix for APNG encoder property registration
+- Failure to decode end of WMA file
+
+gst-rtsp-server
+
+- gst-rtsp-server: Fix pushing backlog to client
+- rtsp-server: stream: Don���t loop forever if binding to the multicast
+ address fails
+
+gstreamer-vaapi
+
+- vaapi: Handle when no encoders/decoders available.
+- vaapi: Crash in gst_vaapidecode_class_init() when no
+ decoders/encoders available
+
+gstreamer-sharp
+
+- No changes
+
+gst-omx
+
+- No changes
+
+gst-python
+
+- python: Do not call gst_init when it is already is_initialized
+
+gst-editing-services
+
+- Deadlock in ges because of recursive gst_init() call
+- ges/gstframepositioner: don���t create one compositor per frame meta
+- nle: clear seek event properly
+
+gst-examples:
+
+- examples/webrtc/signalling: Fix compatibility with Python 3.10
+
+Development build environment + gst-full build
+
+- build: Fix some compiler warnings by upgrading wraps
+- dv, opusparse: fix duplicate symbols in static build
+- Fix fedora 36 warnings - OpenSSL 3.0 deprecations + GLib 2.72
+ tls-validation deprecations
+- Various macOS build fixes
+- meson: Improve certifi documentation on macOS
+
+Cerbero build tool and packaging changes in 1.20.4
+
+- Add Ubuntu 22.04 Jammy Jellyfish
+- Add gst-rtsp-server library to the macOS framework
+- cerbero: Quick fix for gen-cache breakage
+- macos: Fix the install_name for the GStreamer framework
+- Download using powershell on Windows and rework download func
+- macos: Add arm64 to the metadata for the installer
+- cerbero: Allow building on Linux ARM64
+- pkg-config.recipe: Add to core platform files list
+- git: Fix issue with last security patch
+- distros: Fix CentOS allowance
+- cerbero: Print working directory for commands that are run
+- cerbero: Fix license property usage example
+- Fix issue getting distro_version in Debian Bookworm
+- glib: Fix gio modules loading on macOS
+- cmake: Fix macOS ARM64 -> x86_64 cross-compilation
+- Fix logo display in macOS installer
+- openssl.recipe: Fix segfault on latest macOS
+- msvc: Fix for broken CRT linking at application project because of
+ MSVCRT linking
+- cerbero: Do not add rpaths that already exist on macOS
+- android: fix build with android gradle plugin 7.2
+- macOS framework is unusable starting from 1.18.0
+
+Contributors to 1.20.4
+
+Adrian Fiergolski, Aleksandr Slobodeniuk, Andoni Morales Alastruey,
+Andrew Pritchard, Bruce Liang, Corentin Damman, Daniel Morin, Edward
+Hervey, Elliot Chen, Fabian Orccon, fduncanh, Guillaume Desmottes,
+Haihua Hu, He Junyan, Ignazio Pillai, James Cowgill, James Hilliard, Jan
+Alexander Steffens (heftig), Jan Schmidt, Jianhui Dai, Jonas Danielsson,
+Jordan Petridis, Khem Raj, Krystian Wojtas, Martin D��rum, Mart Raudsepp,
+Mathieu Duponchelle, Matthew Waters, Matthias Clasen, Nicolas Dufresne,
+Nirbheek Chauhan, Olivier Cr��te, Pawe�� Stawicki, Philippe Normand,
+Philipp Zabel, Piotr Brzezi��ski, Rafael Caricio, Rafael Sobral, Raul
+Tambre, Ruben Gonzalez, Sangchul Lee, Sebastian Dr��ge, Seungha Yang,
+St��phane Cerveau, Thibault Saunier, Tim-Philipp M��ller, Tristan
+Matthews, V��ctor Manuel J��quez Leal, Xavier Claessens, Zhiyuan Liu,
+
+��� and many others who have contributed bug reports, translations, sent
+suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.20.4
+
+- List of Merge Requests applied in 1.20.4
+- List of Issues fixed in 1.20.4
+
Schedule for 1.22
Our next major feature release will be 1.22, and 1.21 will be the
unstable development version leading up to the stable 1.22 release. The
development of 1.21/1.22 will happen in the git main branch.
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
-no major project-wide reorganisations in the 1.22 cycle we might try and
-aim for a release around August 2022.
+The plan for the 1.22 development cycle is now confirmed, and we aim for
+a 1.22.0 release in December 2022.
1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/RELEASE new/gst-python-1.20.4/RELEASE
--- old/gst-python-1.20.3/RELEASE 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/RELEASE 2022-10-12 17:39:51.000000000 +0200
@@ -1,4 +1,4 @@
-This is GStreamer gst-python 1.20.3.
+This is GStreamer gst-python 1.20.4.
The GStreamer team is thrilled to announce a new major feature release
of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/examples/plugins/python/audioplot.py new/gst-python-1.20.4/examples/plugins/python/audioplot.py
--- old/gst-python-1.20.3/examples/plugins/python/audioplot.py 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/examples/plugins/python/audioplot.py 2022-10-12 17:39:51.000000000 +0200
@@ -29,7 +29,7 @@
raise
-Gst.init(None)
+Gst.init_python()
AUDIO_FORMATS = [f.strip() for f in
GstAudio.AUDIO_FORMATS_ALL.strip('{ }').split(',')]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/examples/plugins/python/exampleTransform.py new/gst-python-1.20.4/examples/plugins/python/exampleTransform.py
--- old/gst-python-1.20.3/examples/plugins/python/exampleTransform.py 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/examples/plugins/python/exampleTransform.py 2022-10-12 17:39:51.000000000 +0200
@@ -15,7 +15,7 @@
import numpy as np
-Gst.init(None)
+Gst.init_python()
FIXED_CAPS = Gst.Caps.from_string('video/x-raw,format=GRAY8,width=[1,2147483647],height=[1,2147483647]')
class ExampleTransform(GstBase.BaseTransform):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/examples/plugins/python/identity.py new/gst-python-1.20.4/examples/plugins/python/identity.py
--- old/gst-python-1.20.3/examples/plugins/python/identity.py 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/examples/plugins/python/identity.py 2022-10-12 17:39:51.000000000 +0200
@@ -16,7 +16,7 @@
gi.require_version('GstBase', '1.0')
from gi.repository import Gst, GObject, GstBase
-Gst.init(None)
+Gst.init_python()
#
# Simple Identity element created entirely in python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/examples/plugins/python/mixer.py new/gst-python-1.20.4/examples/plugins/python/mixer.py
--- old/gst-python-1.20.3/examples/plugins/python/mixer.py 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/examples/plugins/python/mixer.py 2022-10-12 17:39:51.000000000 +0200
@@ -20,7 +20,7 @@
from gi.repository import Gst, GObject, GstBase
-Gst.init(None)
+Gst.init_python()
try:
from PIL import Image
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/examples/plugins/python/py_audiotestsrc.py new/gst-python-1.20.4/examples/plugins/python/py_audiotestsrc.py
--- old/gst-python-1.20.3/examples/plugins/python/py_audiotestsrc.py 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/examples/plugins/python/py_audiotestsrc.py 2022-10-12 17:39:51.000000000 +0200
@@ -22,6 +22,8 @@
Gst.error('py_audiotestsrc requires numpy')
raise
+Gst.init_python()
+
OCAPS = Gst.Caps.from_string (
'audio/x-raw, format=F32LE, layout=interleaved, rate=44100, channels=2')
@@ -84,7 +86,7 @@
self.set_format(Gst.Format.TIME)
def do_set_caps(self, caps):
- self.info.from_caps(caps)
+ self.info = GstAudio.AudioInfo.new_from_caps(caps)
self.set_blocksize(self.info.bpf * SAMPLESPERBUFFER)
return True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/examples/plugins/python/sinkelement.py new/gst-python-1.20.4/examples/plugins/python/sinkelement.py
--- old/gst-python-1.20.3/examples/plugins/python/sinkelement.py 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/examples/plugins/python/sinkelement.py 2022-10-12 17:39:51.000000000 +0200
@@ -17,7 +17,7 @@
# $ GST_DEBUG=python:4 gst-launch-1.0 fakesrc num-buffers=10 ! mysink
from gi.repository import Gst, GObject, GstBase
-Gst.init(None)
+Gst.init_python()
#
# Simple Sink element created entirely in python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/gi/overrides/Gst.py new/gst-python-1.20.4/gi/overrides/Gst.py
--- old/gst-python-1.20.3/gi/overrides/Gst.py 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/gi/overrides/Gst.py 2022-10-12 17:39:51.000000000 +0200
@@ -724,13 +724,22 @@
real_init = Gst.init
def init(argv):
init_pygst()
+
+ if Gst.is_initialized():
+ return True
+
return real_init(argv)
+
Gst.init = init
real_init_check = Gst.init_check
def init_check(argv):
init_pygst()
+ if Gst.is_initialized():
+ return True
+
return real_init_check(argv)
+
Gst.init_check = init_check
real_deinit = Gst.deinit
@@ -738,7 +747,14 @@
deinit_pygst()
return real_deinit()
+def init_python():
+ if not Gst.is_initialized():
+ raise NotInitialized("Gst.init_python should never be called before GStreamer itself is initialized")
+
+ init_pygst()
+
Gst.deinit = deinit
+Gst.init_python = init_python
if not Gst.is_initialized():
deinit_pygst()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/gst-python.doap new/gst-python-1.20.4/gst-python.doap
--- old/gst-python-1.20.3/gst-python.doap 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/gst-python.doap 2022-10-12 17:39:51.000000000 +0200
@@ -32,6 +32,16 @@
<release>
<Version>
+ <revision>1.20.4</revision>
+ <branch>1.20</branch>
+ <name></name>
+ <created>2022-10-12</created>
+ <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-python/gst-python-1.20.4.tar.xz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.20.3</revision>
<branch>1.20</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-python-1.20.3/meson.build new/gst-python-1.20.4/meson.build
--- old/gst-python-1.20.3/meson.build 2022-06-16 00:36:22.000000000 +0200
+++ new/gst-python-1.20.4/meson.build 2022-10-12 17:39:51.000000000 +0200
@@ -1,5 +1,5 @@
project('gst-python', 'c',
- version : '1.20.3',
+ version : '1.20.4',
meson_version : '>= 0.59',
default_options : [ 'warning_level=1',
'c_std=gnu99',
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package cepces for openSUSE:Factory checked in at 2022-10-25 11:18:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cepces (Old)
and /work/SRC/openSUSE:Factory/.cepces.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cepces"
Tue Oct 25 11:18:47 2022 rev:7 rq:1030897 version:0.3.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/cepces/cepces.changes 2022-05-22 20:25:57.582134462 +0200
+++ /work/SRC/openSUSE:Factory/.cepces.new.2275/cepces.changes 2022-10-25 11:18:57.277996642 +0200
@@ -1,0 +2,22 @@
+Thu Oct 20 12:15:15 UTC 2022 - David Mulder <dmulder(a)suse.com>
+
+Release v0.3.6:
+- Fix Bug #15 cepces.conf.dist: server should be pointed to actual CEP host
+- Replace old requests_kerberos with requests_gssapi
+- setup: Do not install example configs
+- setup: Respect the prefix the user specifies
+- Delete the spec file
+- Make Kerberos delegation configurable
+- Fix Bug #24 cepces-submit 'TypeError: option values must be strings'
+- Removed b755b56d25f3e54f8f15d9985fd0597b21c1051d.patch because
+ it is now upstream.
+
+-------------------------------------------------------------------
+Wed Jun 01 18:58:29 UTC 2022 - David Mulder <dmulder(a)suse.com>
+
+Release v0.3.5:
+- Added polling_interval which tells certmonger how long to wait in seconds before retrying.
+- Implemented Certificate authentication method.
+- Python 3.10 compatible.
+
+-------------------------------------------------------------------
Old:
----
b755b56d25f3e54f8f15d9985fd0597b21c1051d.patch
cepces-0.3.4.tar.bz2
New:
----
cepces-0.3.6.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cepces.spec ++++++
--- /var/tmp/diff_new_pack.EIoxI6/_old 2022-10-25 11:18:57.825997856 +0200
+++ /var/tmp/diff_new_pack.EIoxI6/_new 2022-10-25 11:18:57.833997874 +0200
@@ -21,14 +21,13 @@
%global logdir %{_localstatedir}/log/%{app_name}
Name: %{app_name}
-Version: 0.3.4
+Version: 0.3.6
Release: 0%{?dist}
Summary: Certificate Enrollment through CEP/CES
License: GPL-3.0-or-later
URL: https://github.com/ufven/%{app_name}
Source0: %{name}-%{version}.tar.bz2
-Patch1: https://github.com/openSUSE/cepces/pull/11/commits/b755b56d25f3e54f8f15d998…
BuildArch: noarch
Requires: %{app_name}-certmonger == %{version}
@@ -47,12 +46,12 @@
BuildRequires: python3-cryptography >= 1.2
BuildRequires: python3-devel
BuildRequires: python3-requests
-BuildRequires: python3-requests-kerberos >= 0.9
+BuildRequires: python3-requests-gssapi
BuildRequires: python3-setuptools
Requires: python3-cryptography >= 1.2
Requires: python3-requests
-Requires: python3-requests-kerberos >= 0.9
+Requires: python3-requests-gssapi
%description -n python3-%{app_name}
%{app_name} is an application for enrolling certificates through CEP and CES.
@@ -83,7 +82,6 @@
%prep
%setup -q -n %{app_name}-%{version}
-%autopatch -p1
%build
%py3_build
++++++ cepces-0.3.4.tar.bz2 -> cepces-0.3.6.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/bin/cepces-submit new/cepces-0.3.6/bin/cepces-submit
--- old/cepces-0.3.4/bin/cepces-submit 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/bin/cepces-submit 2022-10-20 13:58:52.000000000 +0200
@@ -83,17 +83,21 @@
choices=['Anonymous', 'Kerberos',
'UsernamePassword', 'Certificate'],
default='Kerberos')
+ parser.add_argument('--poll_interval',
+ help='Time in seconds before re-checking if the certificate has been issued')
parser.add_argument('--keytab', help='Use the specified keytab')
parser.add_argument('--principals',
help='A list of principals to try when requesting a ticket')
args = parser.parse_args()
+ g_overrides = {}
if args.server is not None:
- g_overrides = { 'server': args.server, 'auth': args.auth }
+ g_overrides['server'] = args.server
+ g_overrides['auth'] = args.auth
endpoint = 'https://%s/ADPolicyProvider_CEP_%s/service.svc/CEP' % \
(args.server, args.auth)
g_overrides['endpoint'] = endpoint
- else:
- g_overrides = {}
+ if args.poll_interval is not None:
+ g_overrides['poll_interval'] = args.poll_interval
k_overrides = {}
if args.keytab is not None:
k_overrides['keytab'] = args.keytab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/cepces/__init__.py new/cepces-0.3.6/cepces/__init__.py
--- old/cepces-0.3.4/cepces/__init__.py 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/cepces/__init__.py 2022-10-20 13:58:52.000000000 +0200
@@ -22,8 +22,8 @@
__title__ = 'cepces'
__description__ = 'CEP/CES library.'
-__url__ = 'https://github.com/ufven/cepces/'
-__version__ = '0.3.4'
+__url__ = 'https://github.com/openSUSE/cepces/'
+__version__ = '0.3.6'
__author__ = 'Daniel Uvehag'
__author_email__ = 'daniel.uvehag(a)gmail.com'
__license__ = 'GPLv3'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/cepces/auth.py new/cepces-0.3.6/cepces/auth.py
--- old/cepces-0.3.4/cepces/auth.py 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/cepces/auth.py 2022-10-20 13:58:52.000000000 +0200
@@ -23,6 +23,11 @@
from cepces.soap import auth as SOAPAuth
+def strtobool(value):
+ if str(value).lower() in ('t', 'true', 'y', 'yes', '1'):
+ return True
+ return False
+
class AuthenticationHandler(Base, metaclass=ABCMeta):
"""Base class for any authentication handled."""
def __init__(self, parser):
@@ -56,6 +61,7 @@
ccache = section.get('ccache', True)
principals = section.get('principals', '')
enctypes = section.get('enctypes', '')
+ delegate = strtobool(section.get('delegate', True))
# Decode all encryption types.
etypes = []
@@ -82,6 +88,7 @@
principal_name=principal,
init_ccache=ccache,
keytab=keytab,
+ delegate=delegate,
)
except KerberosError:
# Ignore
@@ -119,4 +126,20 @@
"""Handler for Certificate based authentication."""
def handle(self):
"""Constructs and returns a SOAPAuth authentication handler."""
- raise NotImplementedError()
+ parser = self._parser
+
+ # Ensure there's a certificate section present.
+ if 'certificate' not in parser:
+ raise RuntimeError(
+ 'Missing "certificate" section in configuration.',
+ )
+
+ section = parser['certificate']
+
+ certfile = section.get('certfile', None)
+ keyfile = section.get('keyfile', None)
+
+ return SOAPAuth.TransportCertificateAuthentication(
+ certfile,
+ keyfile,
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/cepces/certmonger/operation.py new/cepces-0.3.6/cepces/certmonger/operation.py
--- old/cepces-0.3.4/cepces/certmonger/operation.py 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/cepces/certmonger/operation.py 2022-10-20 13:58:52.000000000 +0200
@@ -132,14 +132,15 @@
# Output a "cookie" that can be used to later poll the status.
print(
- '{},{}'.format(
+ '{}\n{},{}'.format(
+ service._config.poll_interval,
result.request_id,
result.reference,
),
file=self._out,
)
- return CertmongerResult.WAIT
+ return CertmongerResult.WAITMORE
class Poll(Operation):
@@ -172,14 +173,15 @@
# Output a "cookie" that can be used to later poll the status.
print(
- '{},{}'.format(
+ '{}\n{},{}'.format(
+ service._config.poll_interval,
result.request_id,
result.reference,
),
file=self._out,
)
- return CertmongerResult.WAIT
+ return CertmongerResult.WAITMORE
class Identify(Operation):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/cepces/config.py new/cepces-0.3.6/cepces/config.py
--- old/cepces-0.3.4/cepces/config.py 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/cepces/config.py 2022-10-20 13:58:52.000000000 +0200
@@ -52,16 +52,17 @@
'Anonymous': SOAPAuth.AnonymousAuthentication,
'Kerberos': SOAPAuth.TransportKerberosAuthentication,
'UsernamePassword': SOAPAuth.MessageUsernamePasswordAuthentication,
- 'Certificate': SOAPAuth.MessageCertificateAuthentication,
+ 'Certificate': SOAPAuth.TransportCertificateAuthentication,
}
- def __init__(self, endpoint, endpoint_type, cas, auth):
+ def __init__(self, endpoint, endpoint_type, cas, auth, poll_interval):
super().__init__()
self._endpoint = endpoint
self._endpoint_type = endpoint_type
self._cas = cas
self._auth = auth
+ self._poll_interval = poll_interval
@property
def endpoint(self):
@@ -83,6 +84,11 @@
"""Return the authentication method."""
return self._auth
+ @property
+ def poll_interval(self):
+ """Return the poll interval."""
+ return self._poll_interval
+
@classmethod
def load(cls, files=None, dirs=None, global_overrides=None,
krb5_overrides=None):
@@ -149,7 +155,7 @@
section = parser['global']
# Ensure certain required variables are present.
- for var in ['endpoint', 'auth', 'type']:
+ for var in ['endpoint', 'auth', 'type', 'poll_interval']:
if var not in section:
raise RuntimeError(
'Missing "{}/{}" variable in configuration.'.format(
@@ -171,8 +177,9 @@
endpoint_type = section.get('type')
authn = Configuration.AUTH_HANDLER_MAP[section['auth']](parser)
cas = section.get('cas', True)
+ poll_interval = section.get('poll_interval')
if cas == '':
cas = False
- return Configuration(endpoint, endpoint_type, cas, authn.handle())
+ return Configuration(endpoint, endpoint_type, cas, authn.handle(), poll_interval)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/cepces/soap/auth.py new/cepces-0.3.6/cepces/soap/auth.py
--- old/cepces-0.3.4/cepces/soap/auth.py 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/cepces/soap/auth.py 2022-10-20 13:58:52.000000000 +0200
@@ -21,7 +21,8 @@
"""This module contains SOAP related authentication."""
from abc import ABCMeta, abstractmethod, abstractproperty
import os
-from requests_kerberos import HTTPKerberosAuth
+import gssapi
+from requests_gssapi import HTTPSPNEGOAuth
from cepces import Base
from cepces.krb5 import types as ktypes
from cepces.krb5.core import Context, Keytab, Principal
@@ -35,6 +36,11 @@
"""Property containing authentication mechanism for the transport layer
(i.e. requests)."""
+ @abstractproperty
+ def clientcertificate(self):
+ """Property containing TLS client certificate ��nformation for the transport layer
+ (i.e. requests)."""
+
@abstractmethod
def post_process(self, envelope):
"""Method for securing (post processing) a SOAP envelope."""
@@ -56,7 +62,7 @@
class TransportKerberosAuthentication(Authentication):
"""Kerberos authentication on the transport level."""
def __init__(self, principal_name=None, init_ccache=True, keytab=None,
- enctypes=None):
+ enctypes=None, delegate=True):
super().__init__()
self._config = {}
@@ -64,6 +70,7 @@
self._config['init_ccache'] = init_ccache
self._config['keytab'] = keytab
self._config['enctypes'] = enctypes
+ self._config['delegate'] = delegate
# Only initialize a credential cache if requested. Otherwise, rely on
# a credential cache already being available.
@@ -112,13 +119,18 @@
os.environ["KRB5CCNAME"] = ccache_name
def _init_transport(self):
- self._transport = HTTPKerberosAuth(principal=self._config['name'],
- delegate=True)
+ name = gssapi.Name(self._config['name'], gssapi.NameType.user)
+ creds = gssapi.Credentials(name=name, usage="initiate")
+ self._transport = HTTPSPNEGOAuth(creds=creds, delegate=self._config['delegate'])
@property
def transport(self):
return self._transport
+ @property
+ def clientcertificate(self):
+ return None
+
def post_process(self, envelope):
# Nothing to be done here.
return envelope
@@ -135,15 +147,29 @@
def transport(self):
return None
+ @property
+ def clientcertificate(self):
+ return None
+
def post_process(self, envelope):
raise NotImplementedError()
-class MessageCertificateAuthentication(Authentication):
- """Message authentication using a client certificate."""
+class TransportCertificateAuthentication(Authentication):
+ """Transport authentication using a client certificate."""
+ def __init__(self, certfile, keyfile):
+ super().__init__()
+ self._certfile = certfile
+ self._keyfile = keyfile
+
@property
def transport(self):
- raise NotImplementedError()
+ return None
+
+ @property
+ def clientcertificate(self):
+ return ( self._certfile, self._keyfile )
def post_process(self, envelope):
- raise NotImplementedError()
+ # Nothing to be done here.
+ return envelope
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/cepces/soap/service.py new/cepces-0.3.6/cepces/soap/service.py
--- old/cepces-0.3.4/cepces/soap/service.py 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/cepces/soap/service.py 2022-10-20 13:58:52.000000000 +0200
@@ -75,12 +75,15 @@
# Post process the envelope.
if self._auth:
message = self._auth.post_process(message)
+ data = ElementTree.tostring(message.element)
+ self._logger.debug(" -data after post-processing: %s", data)
# Post the envelope and raise an error if necessary.
req = requests.post(url=self._endpoint,
data=data,
headers=headers,
verify=self._capath,
+ cert=self._auth.clientcertificate,
auth=self._auth.transport)
# If we get an internal server error (code 500), there's a chance that
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/cepces/xml/binding.py new/cepces-0.3.6/cepces/xml/binding.py
--- old/cepces-0.3.4/cepces/xml/binding.py 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/cepces/xml/binding.py 2022-10-20 13:58:52.000000000 +0200
@@ -18,7 +18,7 @@
# pylint: disable=protected-access,too-few-public-methods,too-many-arguments
# pylint: disable=too-many-ancestors
"""Module containing XML bindings."""
-from collections import MutableSequence
+from collections.abc import MutableSequence
from xml.etree import ElementTree
import inspect
from abc import ABCMeta, abstractmethod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/cepces.spec new/cepces-0.3.6/cepces.spec
--- old/cepces-0.3.4/cepces.spec 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/cepces.spec 1970-01-01 01:00:00.000000000 +0100
@@ -1,174 +0,0 @@
-%global app_name cepces
-%global selinux_variants targeted
-%global logdir %{_localstatedir}/log/%{app_name}
-
-Name: %{app_name}
-Version: 0.3.3
-Release: 2%{?dist}
-Summary: Certificate Enrollment through CEP/CES
-
-License: GPLv3+
-URL: https://github.com/ufven/%{app_name}
-Source0: https://github.com/ufven/%{app_name}/archive/v%{version}/%{app_name}-%{vers…
-BuildArch: noarch
-
-Requires: python%{python3_pkgversion}-%{app_name} == %{version}
-Requires: %{app_name}-certmonger == %{version}
-Requires: %{app_name}-selinux == %{version}
-
-%description
-%{app_name} is an application for enrolling certificates through CEP and CES.
-It currently only operates through certmonger.
-
-%package -n python%{python3_pkgversion}-%{app_name}
-Summary: Python part of %{app_name}
-
-BuildRequires: python%{python3_pkgversion}-devel
-BuildRequires: python%{python3_pkgversion}-setuptools
-BuildRequires: python%{python3_pkgversion}-cryptography >= 1.2
-BuildRequires: python%{python3_pkgversion}-requests
-BuildRequires: python%{python3_pkgversion}-requests-kerberos >= 0.9
-
-Requires: python%{python3_pkgversion}-cryptography >= 1.2
-Requires: python%{python3_pkgversion}-requests
-Requires: python%{python3_pkgversion}-requests-kerberos >= 0.9
-
-%description -n python%{python3_pkgversion}-%{app_name}
-%{app_name} is an application for enrolling certificates through CEP and CES.
-This package provides the Python part for CEP and CES interaction.
-
-%package certmonger
-Summary: certmonger integration for %{app_name}
-
-Requires: certmonger
-
-%description certmonger
-%{app_name} is an application for enrolling certificates through CEP and CES.
-This package provides the certmonger integration.
-
-%package selinux
-Summary: SELinux support for %{app_name}
-
-BuildRequires: selinux-policy-devel
-
-Requires: selinux-policy
-Requires(post): selinux-policy-targeted
-
-%description selinux
-SELinux support for %{app_name}
-
-%prep
-%setup -q -n %{app_name}-%{version}
-
-%build
-%py3_build
-
-# Build the SELinux module(s).
-for SELINUXVARIANT in %{selinux_variants}; do
- make -C selinux clean all
- mv -v selinux/%{app_name}.pp selinux/%{app_name}-${SELINUXVARIANT}.pp
-done
-
-%install
-%py3_install
-
-install -d -m 0700 %{buildroot}%{logdir}
-
-# Install the SELinux module(s).
-rm -fv selinux-files.txt
-
-for SELINUXVARIANT in %{selinux_variants}; do
- install -d %{buildroot}%{_datadir}/selinux/${SELINUXVARIANT}
- install -p -m 644 selinux/%{app_name}-${SELINUXVARIANT}.pp \
- %{buildroot}%{_datadir}/selinux/${SELINUXVARIANT}/%{app_name}.pp
-
- echo %{_datadir}/selinux/${SELINUXVARIANT}/%{app_name}.pp >> \
- selinux-files.txt
-done
-
-# Install configuration files.
-install -d %{buildroot}%{_sysconfdir}/%{app_name}
-install -p -m 644 conf/cepces.conf.dist \
- %{buildroot}%{_sysconfdir}/%{app_name}/cepces.conf
-install -p -m 644 conf/logging.conf.dist \
- %{buildroot}%{_sysconfdir}/%{app_name}/logging.conf
-
-install -d %{buildroot}%{_libexecdir}/certmonger
-install -p -m 755 bin/%{app_name}-submit \
- %{buildroot}%{_libexecdir}/certmonger/%{app_name}-submit
-
-# Remove unused executables and configuration files.
-%{__rm} -rfv %{buildroot}/usr/local/etc
-%{__rm} -rfv %{buildroot}/usr/local/libexec/certmonger
-
-%post selinux
-for SELINUXVARIANT in %{selinux_variants}; do
- %{_sbindir}/semodule -n -s ${SELINUXVARIANT} \
- -i %{_datadir}/selinux/${SELINUXVARIANT}/%{app_name}.pp
-
- if %{_sbindir}/selinuxenabled; then
- %{_sbindir}/load_policy
- fi
-done
-
-%postun selinux
-if [ $1 -eq 0 ]
-then
- for SELINUXVARIANT in %{selinux_variants}; do
- %{_sbindir}/semodule -n -s ${SELINUXVARIANT} -r %{app_name} > /dev/null || :
-
- if %{_sbindir}/selinuxenabled; then
- %{_sbindir}/load_policy
- fi
- done
-fi
-
-%post certmonger
-# Install the CA into certmonger.
-if [[ "$1" == "1" ]]; then
- getcert add-ca -c %{app_name} \
- -e %{_libexecdir}/certmonger/%{app_name}-submit >/dev/null || :
-fi
-
-%preun certmonger
-# Remove the CA from certmonger, unless it's an upgrade.
-if [[ "$1" == "0" ]]; then
- getcert remove-ca -c %{app_name} >/dev/null || :
-fi
-
-%check
-%{__python3} setup.py test
-
-%files
-%doc LICENSE
-%doc README.rst
-%dir %{_sysconfdir}/%{app_name}/
-%config(noreplace) %{_sysconfdir}/%{app_name}/%{app_name}.conf
-%config(noreplace) %{_sysconfdir}/%{app_name}/logging.conf
-%dir %{logdir}
-
-%files -n python%{python3_pkgversion}-%{app_name}
-%{python3_sitelib}/%{app_name}
-%{python3_sitelib}/%{app_name}-%{version}-py?.?.egg-info
-
-%files certmonger
-%{_libexecdir}/certmonger/%{app_name}-submit
-
-%files selinux -f selinux-files.txt
-%defattr(0644,root,root,0755)
-
-%changelog
-* Mon Jul 29 2019 Daniel Uvehag <daniel.uvehag(a)gmail.com> - 0.3.3-2
-- Add missing log directory
-
-* Mon Jul 29 2019 Daniel Uvehag <daniel.uvehag(a)gmail.com> - 0.3.3-1
-- Update to version 0.3.3-1
-
-* Mon Feb 05 2018 Daniel Uvehag <daniel.uvehag(a)gmail.com> - 0.3.0-1
-- Update to version 0.3.0-1
-
-* Thu Feb 01 2018 Daniel Uvehag <daniel.uvehag(a)gmail.com> - 0.2.1-1
-- Update to version 0.2.1-1
-
-* Mon Jun 27 2016 Daniel Uvehag <daniel.uvehag(a)gmail.com> - 0.1.0-1
-- Initial package.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/conf/cepces.conf.dist new/cepces-0.3.6/conf/cepces.conf.dist
--- old/cepces-0.3.4/conf/cepces.conf.dist 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/conf/cepces.conf.dist 2022-10-20 13:58:52.000000000 +0200
@@ -1,6 +1,6 @@
[global]
-# Hostname of the issuing certification authority. This is an optional setting
-# and is only used to construct the URL to the Policy Provider endpoint.
+# Hostname of the Certificate Enrollment Policy (CEP) Server.
+# Used to construct the URL to the CEP endpoint.
#
# Default: ca
server=ca
@@ -25,8 +25,8 @@
# Message level authentication. The credentials are used in the
# message header for authentication.
# * Certificate
-# Message level authentication. A client certificate is used to
-# sign the message. This is not yet implemented.
+# Transport level authentication. A client certificate is used
+# for TLS client authentication in the HTTPS layer.
#
# Default: Kerberos
auth=Kerberos
@@ -45,6 +45,9 @@
# Default: <not defined>
#cas=
+# Time in seconds before re-checking if the certificate has been issued
+poll_interval=3600
+
[kerberos]
# Use the specified keytab. If unspecified, the system default is used.
#
@@ -82,3 +85,25 @@
arcfour-hmac
aes128-cts-hmac-sha1-96
aes256-cts-hmac-sha1-96
+
+# When the webenrollment services and the CA aren't installed on the same
+# machine you will get a access denied error if kerberos delegation is
+# disabled. This is enabled by default.
+#
+# Default: True
+delegate=True
+
+[certificate]
+# Use the following client certificate,
+# given as OpenSSL format certificate file.
+# The issuer CA certificate of this client certificate must be included
+# in the AD NTAuth container.
+#
+# Default: <not defined>
+#certfile = /path/to/openssl-certfile.pem
+
+# Use the following client certificate key,
+# given as OpenSSL format private key file without passphrase protection.
+#
+# Default: <not defined>
+#keyfile = /path/to/openssl-keyfile.pem
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/requirements.txt new/cepces-0.3.6/requirements.txt
--- old/cepces-0.3.4/requirements.txt 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/requirements.txt 2022-10-20 13:58:52.000000000 +0200
@@ -1,3 +1,3 @@
cryptography>=1.2
requests
-requests_kerberos>=0.9
+requests_gssapi>=1.2.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/selinux/cepces.te new/cepces-0.3.6/selinux/cepces.te
--- old/cepces-0.3.4/selinux/cepces.te 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/selinux/cepces.te 2022-10-20 13:58:52.000000000 +0200
@@ -1,4 +1,4 @@
-policy_module(cepces, 0.3.4)
+policy_module(cepces, 0.3.6)
require {
type certmonger_t;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cepces-0.3.4/setup.py new/cepces-0.3.6/setup.py
--- old/cepces-0.3.4/setup.py 2021-07-19 16:14:02.000000000 +0200
+++ new/cepces-0.3.6/setup.py 2022-10-20 13:58:52.000000000 +0200
@@ -41,7 +41,7 @@
license=cepces.__license__,
classifiers=[
- 'Development Status :: 4 - Beta',
+ 'Development Status :: 5 - Production/Stable',
'Environment :: Console',
@@ -50,9 +50,9 @@
'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
- 'Programming Language :: Python :: 3.4',
- 'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.8',
+ 'Programming Language :: Python :: 3.9',
+ 'Programming Language :: Python :: 3.10',
],
keywords='certificate ca cep ces adcs wstep xcep',
@@ -68,14 +68,7 @@
],
data_files=[
- ('/usr/local/libexec/certmonger', ['bin/cepces-submit']),
- (
- '/usr/local/etc/cepces',
- [
- 'conf/cepces.conf.dist',
- 'conf/logging.conf.dist',
- ]
- ),
+ ('libexec/certmonger', ['bin/cepces-submit']),
],
install_requires=[],
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gsoap for openSUSE:Factory checked in at 2022-10-25 11:18:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gsoap (Old)
and /work/SRC/openSUSE:Factory/.gsoap.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gsoap"
Tue Oct 25 11:18:45 2022 rev:78 rq:1030887 version:2.8.123
Changes:
--------
--- /work/SRC/openSUSE:Factory/gsoap/gsoap.changes 2022-08-30 14:48:44.352007007 +0200
+++ /work/SRC/openSUSE:Factory/.gsoap.new.2275/gsoap.changes 2022-10-25 11:18:56.313994505 +0200
@@ -1,0 +2,9 @@
+Mon Oct 24 13:23:19 UTC 2022 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 2.8.123
+ * Update to make `std::string` typed element tags self-closing,
+ which is consistent with `char*` typed element tags.
+ * Improvement to HTTP header line processing to drop start-end
+ quotes.
+
+-------------------------------------------------------------------
Old:
----
gsoap-2.8.122.tar.xz
New:
----
gsoap-2.8.123.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gsoap.spec ++++++
--- /var/tmp/diff_new_pack.K4cdhB/_old 2022-10-25 11:18:57.061996163 +0200
+++ /var/tmp/diff_new_pack.K4cdhB/_new 2022-10-25 11:18:57.069996181 +0200
@@ -17,8 +17,8 @@
Name: gsoap
-%define lname libgsoap-2_8_122
-Version: 2.8.122
+%define lname libgsoap-2_8_123
+Version: 2.8.123
Release: 0
Summary: Toolkit for SOAP/REST-based C/C++ server and client web service applications
License: SUSE-GPL-2.0+-with-openssl-exception
++++++ gsoap-2.8.122.tar.xz -> gsoap-2.8.123.tar.xz ++++++
/work/SRC/openSUSE:Factory/gsoap/gsoap-2.8.122.tar.xz /work/SRC/openSUSE:Factory/.gsoap.new.2275/gsoap-2.8.123.tar.xz differ: char 26, line 1
++++++ sanitize_source.sh ++++++
--- /var/tmp/diff_new_pack.K4cdhB/_old 2022-10-25 11:18:57.137996331 +0200
+++ /var/tmp/diff_new_pack.K4cdhB/_new 2022-10-25 11:18:57.141996340 +0200
@@ -13,7 +13,7 @@
exit 1;
fi;
-version="2.8.122"
+version="2.8.123"
shortver="2.8" # agh...
if [ ! -e "gsoap_$version.zip" ]; then
wget -c "https://downloads.sf.net/gsoap2/gsoap_$version.zip"
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package zchunk for openSUSE:Factory checked in at 2022-10-25 11:18:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/zchunk (Old)
and /work/SRC/openSUSE:Factory/.zchunk.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "zchunk"
Tue Oct 25 11:18:44 2022 rev:17 rq:1030885 version:1.2.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/zchunk/zchunk.changes 2022-04-23 19:45:07.370923157 +0200
+++ /work/SRC/openSUSE:Factory/.zchunk.new.2275/zchunk.changes 2022-10-25 11:18:54.337990125 +0200
@@ -1,0 +2,10 @@
+Mon Oct 24 13:06:52 UTC 2022 - Dirk M��ller <dmueller(a)suse.com>
+
+- update to 1.2.3:
+ * Remove meson deprecation warning
+ * Add license scan report and status
+ * test/zck_cmp_uncomp: fix printf format types
+ * meson: add option to build without docs
+ * zck: declare write_data as static
+
+-------------------------------------------------------------------
Old:
----
zchunk-1.2.2.tar.gz
New:
----
zchunk-1.2.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ zchunk.spec ++++++
--- /var/tmp/diff_new_pack.Bf5zvW/_old 2022-10-25 11:18:54.909991393 +0200
+++ /var/tmp/diff_new_pack.Bf5zvW/_new 2022-10-25 11:18:54.913991402 +0200
@@ -21,7 +21,7 @@
%global libname libzck%{somajor}
%global devname libzck-devel
Name: zchunk
-Version: 1.2.2
+Version: 1.2.3
Release: 0
Summary: Compressed file format that allows easy deltas
License: BSD-2-Clause AND MIT
++++++ zchunk-1.2.2.tar.gz -> zchunk-1.2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/.github/workflows/main.yml new/zchunk-1.2.3/.github/workflows/main.yml
--- old/zchunk-1.2.2/.github/workflows/main.yml 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/.github/workflows/main.yml 2022-09-16 22:35:16.000000000 +0200
@@ -35,25 +35,11 @@
steps:
- uses: actions/checkout@v2
- - uses: actions/checkout@v2
- with:
- repository: wolfv/argp-standalone
- path: argp-standalone
-
- name: Install mamba
uses: mamba-org/provision-with-micromamba@main
with:
environment-file: .github/environment.yml
- - name: Compile argp-standalone
- shell: cmd /C CALL {0}
- run: |
- CALL micromamba activate zchunk_test_env
- cd argp-standalone
- meson setup builddir
- meson compile -C builddir --prefix=%CONDA_PREFIX%\Library
- meson install -C builddir
-
- name: Compile zchunk
shell: cmd /C CALL {0}
run: |
@@ -75,11 +61,6 @@
steps:
- uses: actions/checkout@v2
- - uses: actions/checkout@v2
- with:
- repository: wolfv/argp-standalone
- path: argp-standalone
-
- uses: actions/setup-python@v1
with:
python-version: '3.x'
@@ -87,18 +68,36 @@
- name: Install meson and ninja
run: pip install meson ninja
- - name: Compile argp-standalone
+ - name: Compile zchunk
shell: cmd /C CALL {0}
run: |
- cd argp-standalone
meson setup builddir
meson compile -C builddir
- meson install -C builddir
+
+ - name: Run zchunk tests
+ shell: cmd /C CALL {0}
+ run: |
+ cd builddir
+ ninja test
+
+ windows-static:
+ runs-on: windows-latest
+
+ name: Compile and run tests (windows-latest-static)
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: actions/setup-python@v1
+ with:
+ python-version: '3.x'
+
+ - name: Install meson and ninja
+ run: pip install meson ninja
- name: Compile zchunk
shell: cmd /C CALL {0}
run: |
- meson setup builddir
+ meson setup builddir --default-library=static
meson compile -C builddir
- name: Run zchunk tests
@@ -107,6 +106,7 @@
cd builddir
ninja test
+
macos:
runs-on: macos-latest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/README.md new/zchunk-1.2.3/README.md
--- old/zchunk-1.2.2/README.md 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/README.md 2022-09-16 22:35:16.000000000 +0200
@@ -1,6 +1,7 @@
# zchunk
-[![Coverity Scan Build Status](https://img.shields.io/coverity/scan/16509.svg)](https://scan.cover…<br>
+[![Coverity Scan Build Status](https://img.shields.io/coverity/scan/16509.svg)](https://scan.cover… Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fzchunk%2Fzchu…
+<br>
[![GitHub Actions Test Status](https://github.com/zchunk/zchunk/actions/workflows/main.yml/badge.s…
zchunk is a compressed file format that splits the file into independent chunks.
@@ -87,3 +88,7 @@
- [Format definition](zchunk_format.txt)
- [Initial announcement](https://www.jdieter.net/posts/2018/04/30/introducing-zchunk)
- [How zchunk works (with pretty pictures)](https://www.jdieter.net/posts/2018/05/31/what-is-zchunk)
+
+
+## License
+[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fzchunk%2Fzchu…
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/autotest/alpine-edge/prep/Dockerfile new/zchunk-1.2.3/autotest/alpine-edge/prep/Dockerfile
--- old/zchunk-1.2.2/autotest/alpine-edge/prep/Dockerfile 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/autotest/alpine-edge/prep/Dockerfile 2022-09-16 22:35:16.000000000 +0200
@@ -1,3 +1,3 @@
FROM alpine:edge
-RUN apk add meson gcc musl-dev zstd-dev curl-dev openssl1.1-compat-dev argp-standalone
+RUN apk add meson gcc musl-dev zstd-dev curl-dev openssl-dev argp-standalone
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/meson.build new/zchunk-1.2.3/meson.build
--- old/zchunk-1.2.2/meson.build 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/meson.build 2022-09-16 22:35:16.000000000 +0200
@@ -1,6 +1,6 @@
project(
'zck', 'c',
- version : '1.2.2',
+ version : '1.2.3',
meson_version : '>=0.53.0',
default_options : ['c_std=gnu99']
)
@@ -58,17 +58,17 @@
# argp-standalone dependency (if required)
if build_machine.system() == 'windows' or build_machine.system() == 'darwin' or build_machine.system() == 'freebsd' or not cc.links('#include <argp.h>\nstatic error_t parse_opt (int key, char *arg, struct argp_state *state) { argp_usage(state); return 0; }; void main() {}')
- if fs.is_dir(join_paths([get_option('prefix'), 'include']))
- inc += include_directories(join_paths([get_option('prefix'), 'include']))
+ argplib = cc.find_library('argp', has_headers : ['argp.h'], required: false)
+ if not argplib.found()
+ argplib = dependency('argp-standalone')
endif
- argplib = cc.find_library('argp', dirs : join_paths([get_option('prefix'), 'lib']))
else
argplib = dependency('', required : false)
endif
subdir('include')
subdir('src')
-if not get_option('coverity')
+if not get_option('coverity') and get_option('tests')
subdir('test')
endif
@@ -81,13 +81,15 @@
description : 'A library for generating easy-to-delta files.'
)
-install_man([
- 'doc/unzck.1',
- 'doc/zck.1',
- 'doc/zck_delta_size.1',
- 'doc/zck_gen_zdict.1',
- 'doc/zck_read_header.1',
- 'doc/zckdl.1',
-])
+if get_option('docs')
+ install_man([
+ 'doc/unzck.1',
+ 'doc/zck.1',
+ 'doc/zck_delta_size.1',
+ 'doc/zck_gen_zdict.1',
+ 'doc/zck_read_header.1',
+ 'doc/zckdl.1',
+ ])
+endif
libzck_dep = declare_dependency(link_with: zcklib, include_directories: 'include')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/meson_options.txt new/zchunk-1.2.3/meson_options.txt
--- old/zchunk-1.2.2/meson_options.txt 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/meson_options.txt 2022-09-16 22:35:16.000000000 +0200
@@ -2,3 +2,5 @@
option('with-openssl', type : 'feature', value : 'auto')
option('with-curl', type : 'feature', value : 'auto')
option('coverity', type : 'boolean', value : false)
+option('docs', type : 'boolean', value : true)
+option('tests', type : 'boolean', value : true)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/src/lib/meson.build new/zchunk-1.2.3/src/lib/meson.build
--- old/zchunk-1.2.2/src/lib/meson.build 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/src/lib/meson.build 2022-09-16 22:35:16.000000000 +0200
@@ -7,19 +7,27 @@
lib_sources += files('zck.c', 'header.c', 'io.c', 'log.c', 'compint.c', 'error.c')
extra_c_args = []
+lib_suffix = []
+
if host_machine.system() != 'windows'
extra_c_args += ['-fvisibility=hidden']
else
lib_sources += files(['win32/regerror.c', 'win32/regcomp.c', 'win32/regexec.c', 'win32/tre-mem.c'])
- extra_c_args += ['-DZCHUNK_EXPORTS=1']
+ if get_option('default_library') == 'shared'
+ extra_c_args += ['-DZCHUNK_EXPORTS=1']
+ else
+ extra_c_args += ['-DZCHUNK_STATIC_LIB']
+ lib_suffix = 'lib'
+ endif
endif
zcklib = library('zck',
- lib_sources,
- # in meson 0.48, use `gnu_symbol_visibility: 'hidden'` kwarg
- c_args: extra_c_args,
- include_directories: inc,
- dependencies: [zstd_dep, openssl_dep],
- install: true,
- version: meson.project_version(),
- soversion: so_version)
+ lib_sources,
+ # in meson 0.48, use `gnu_symbol_visibility: 'hidden'` kwarg
+ c_args: extra_c_args,
+ include_directories: inc,
+ dependencies: [zstd_dep, openssl_dep],
+ install: true,
+ version: meson.project_version(),
+ soversion: so_version,
+ name_suffix: lib_suffix)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/src/meson.build new/zchunk-1.2.3/src/meson.build
--- old/zchunk-1.2.2/src/meson.build 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/src/meson.build 2022-09-16 22:35:16.000000000 +0200
@@ -1,7 +1,11 @@
subdir('lib')
+preprocessor_defines = []
if host_machine.system() == 'windows'
extra_win_src = ['lib/win32/basename.c', 'lib/win32/ftruncate.c']
+ if get_option('default_library') == 'static'
+ preprocessor_defines = '-DZCHUNK_STATIC_LIB=1'
+ endif
else
extra_win_src = []
endif
@@ -12,7 +16,8 @@
include_directories: inc,
dependencies: argplib,
link_with: zcklib,
- install: true
+ install: true,
+ c_args: preprocessor_defines
)
unzck = executable(
'unzck',
@@ -20,7 +25,8 @@
include_directories: inc,
dependencies: argplib,
link_with: zcklib,
- install: true
+ install: true,
+ c_args: preprocessor_defines
)
zck_gen_zdict = executable(
'zck_gen_zdict',
@@ -28,7 +34,8 @@
include_directories: inc,
dependencies: argplib,
link_with: zcklib,
- install: true
+ install: true,
+ c_args: preprocessor_defines
)
zck_read_header = executable(
'zck_read_header',
@@ -36,7 +43,8 @@
include_directories: inc,
dependencies: argplib,
link_with: zcklib,
- install: true
+ install: true,
+ c_args: preprocessor_defines
)
zck_delta_size = executable(
'zck_delta_size',
@@ -44,7 +52,8 @@
include_directories: inc,
dependencies: argplib,
link_with: zcklib,
- install: true
+ install: true,
+ c_args: preprocessor_defines
)
zckdl = executable(
'zckdl',
@@ -52,5 +61,6 @@
include_directories: inc,
dependencies: [argplib, curl_dep],
link_with: zcklib,
- install: true
+ install: true,
+ c_args: preprocessor_defines
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/src/zck.c new/zchunk-1.2.3/src/zck.c
--- old/zchunk-1.2.2/src/zck.c 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/src/zck.c 2022-09-16 22:35:16.000000000 +0200
@@ -159,7 +159,7 @@
static struct argp argp = {options, parse_opt, args_doc, doc};
-void write_data(zckCtx *zck, char *data, ssize_t in_size) {
+static void write_data(zckCtx *zck, char *data, ssize_t in_size) {
if(zck_write(zck, data, in_size) < 0) {
LOG_ERROR("%s", zck_get_error(zck));
exit(1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/subprojects/argp-standalone.wrap new/zchunk-1.2.3/subprojects/argp-standalone.wrap
--- old/zchunk-1.2.2/subprojects/argp-standalone.wrap 1970-01-01 01:00:00.000000000 +0100
+++ new/zchunk-1.2.3/subprojects/argp-standalone.wrap 2022-09-16 22:35:16.000000000 +0200
@@ -0,0 +1,7 @@
+[wrap-git]
+directory = argp-standalone-1.5.0
+url = https://github.com/argp-standalone/argp-standalone.git
+revision = 1.5.0
+
+[provide]
+dependency_names = argp-standalone
Binary files old/zchunk-1.2.2/test/abi/stable/libzck.so.1.2.2 and new/zchunk-1.2.3/test/abi/stable/libzck.so.1.2.2 differ
Binary files old/zchunk-1.2.2/test/abi/stable/libzck.so.1.2.3 and new/zchunk-1.2.3/test/abi/stable/libzck.so.1.2.3 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/test/abi/stable/zck.h new/zchunk-1.2.3/test/abi/stable/zck.h
--- old/zchunk-1.2.2/test/abi/stable/zck.h 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/test/abi/stable/zck.h 2022-09-16 22:35:16.000000000 +0200
@@ -1,7 +1,7 @@
#ifndef ZCK_H
#define ZCK_H
-#define ZCK_VERSION "1.2.2"
+#define ZCK_VERSION "1.2.3"
#include <stdlib.h>
#include <stdbool.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/test/compat_reports/zchunk/1.2.1_to_1.2.2/compat_report.html new/zchunk-1.2.3/test/compat_reports/zchunk/1.2.1_to_1.2.2/compat_report.html
--- old/zchunk-1.2.2/test/compat_reports/zchunk/1.2.1_to_1.2.2/compat_report.html 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/test/compat_reports/zchunk/1.2.1_to_1.2.2/compat_report.html 1970-01-01 01:00:00.000000000 +0100
@@ -1,475 +0,0 @@
-<!-- kind:binary;verdict:compatible;affected:0;added:0;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:2.3 -->
-<!-- kind:source;verdict:compatible;affected:0;added:0;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:2.3 -->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="viewport" content="width=device-width,initial-scale=1" />
-<meta name="keywords" content="zchunk, compatibility, API, ABI, report" />
-<meta name="description" content="API/ABI compatibility report for the zchunk object between 1.2.1 and 1.2.2 versions" />
-<meta name="robots" content="noindex" />
-<title>zchunk: 1.2.1 to 1.2.2 compatibility report</title>
-<style type="text/css">
-body {
- font-family:Arial, sans-serif;
- background-color:White;
- color:Black;
-}
-hr {
- color:Black;
- background-color:Black;
- height:1px;
- border:0;
-}
-h1 {
- margin-bottom:0px;
- padding-bottom:0px;
- font-size:1.625em;
-}
-h2 {
- margin-bottom:0px;
- padding-bottom:0px;
- font-size:1.25em;
- white-space:nowrap;
-}
-span.section {
- font-weight:bold;
- cursor:pointer;
- color:#003E69;
- white-space:nowrap;
- margin-left:0.3125em;
-}
-span.new_sign {
- font-weight:bold;
- margin-left:1.65em;
- color:#003E69;
-}
-span.new_sign_lbl {
- margin-left:3em;
- font-size:1em;
- color:Black;
-}
-span:hover.section {
- color:#336699;
-}
-span.sect_aff {
- cursor:pointer;
- padding-left:1.55em;
- font-size:0.875em;
- color:#cc3300;
-}
-span.sect_info {
- cursor:pointer;
- padding-left:1.55em;
- font-size:0.875em;
- color:Black;
-}
-span.ext {
- font-weight:normal;
-}
-span.h_name {
- color:#cc3300;
- font-size:0.875em;
- font-weight:bold;
-}
-div.h_list, div.lib_list {
- font-size:0.94em;
- padding-left:0.4em;
-}
-span.ns {
- color:#408080;
- font-size:0.94em;
-}
-span.lib_name {
- color:Green;
- font-size:0.875em;
- font-weight:bold;
-}
-span.iname {
- font-weight:bold;
- color:#003E69;
- margin-left:0.3125em;
-}
-span.iname_b {
- font-weight:bold;
-}
-span.iname_a {
- color:#333333;
- font-weight:bold;
- font-size:0.94em;
-}
-span.sym_p {
- font-weight:normal;
- white-space:normal;
-}
-span.sym_pd {
- white-space:normal;
-}
-span.sym_p span, span.sym_pd span {
- white-space:nowrap;
-}
-div.affect {
- padding-left:1em;
- padding-bottom:10px;
- font-size:0.87em;
- font-style:italic;
- line-height:0.9em;
-}
-div.affected {
- padding-left:1.9em;
- padding-top:10px;
-}
-table.ptable {
- border-collapse:collapse;
- border:1px outset black;
- margin-left:0.95em;
- margin-top:3px;
- margin-bottom:3px;
- width:56.25em;
-}
-table.ptable td {
- border:1px solid gray;
- padding:3px;
- font-size:0.875em;
- text-align:left;
- vertical-align:top;
- max-width:28em;
- word-wrap:break-word;
-}
-table.ptable th.pn {
- width:2%;
-}
-table.ptable th.chg {
- width:47%;
-}
-table.vtable {
- border-collapse:collapse;
- border:1px outset black;
- margin-left:1.9em;
- margin-top:0.7em;
-}
-table.vtable td {
- border:1px solid gray;
- padding:3px;
- font-size:0.875em;
- vertical-align:top;
- max-width:450px;
- word-wrap:break-word;
-}
-table.ptable th, table.vtable th {
- background-color:#eeeeee;
- font-weight:bold;
- color:#333333;
- font-family:Verdana, Arial;
- font-size:0.875em;
- border:1px solid gray;
- text-align:center;
- vertical-align:top;
- white-space:nowrap;
- padding:3px;
-}
-table.summary {
- border-collapse:collapse;
- border:1px outset black;
-}
-table.summary th {
- background-color:#eeeeee;
- font-weight:normal;
- text-align:left;
- font-size:0.94em;
- white-space:nowrap;
- border:1px inset gray;
- padding:3px;
-}
-table.summary td {
- text-align:right;
- white-space:nowrap;
- border:1px inset gray;
- padding:3px 5px 3px 10px;
-}
-span.mngl {
- padding-left:1em;
- font-size:0.875em;
- cursor:text;
- color:#444444;
- font-weight:bold;
-}
-span.pleft {
- padding-left:2.5em;
-}
-span.sym_ver {
- color:#333333;
- white-space:nowrap;
- font-family:"DejaVu Sans Mono", Monospace;
-}
-span.attr {
- color:#333333;
- font-weight:normal;
-}
-span.color_p {
- font-style:italic;
- color:Brown;
-}
-span.p {
- font-style:italic;
-}
-span.fp {
- font-style:italic;
- background-color:#DCDCDC;
-}
-span.ttype {
- font-weight:normal;
-}
-span.nowrap {
- white-space:nowrap;
-}
-span.value {
- font-weight:bold;
-}
-.passed {
- background-color:#CCFFCC;
- font-weight:normal;
-}
-.warning {
- background-color:#F4F4AF;
- font-weight:normal;
-}
-.failed {
- background-color:#FFCCCC;
- font-weight:normal;
-}
-.new {
- background-color:#C6DEFF;
- font-weight:normal;
-}
-.compatible {
- background-color:#CCFFCC;
- font-weight:normal;
-}
-.almost_compatible {
- background-color:#FFDAA3;
- font-weight:normal;
-}
-.incompatible {
- background-color:#FFCCCC;
- font-weight:normal;
-}
-.gray {
- background-color:#DCDCDC;
- font-weight:normal;
-}
-.top_ref {
- font-size:0.69em;
-}
-.footer {
- font-size:0.75em;
-}
-
-.tabset {
- float:left;
-}
-a.tab {
- border:1px solid Black;
- float:left;
- margin:0px 5px -1px 0px;
- padding:3px 5px 3px 5px;
- position:relative;
- font-size:0.875em;
- background-color:#DDD;
- text-decoration:none;
- color:Black;
-}
-a.disabled:hover
-{
- color:Black;
- background:#EEE;
-}
-a.active:hover
-{
- color:Black;
- background:White;
-}
-a.active {
- border-bottom-color:White;
- background-color:White;
-}
-div.tab {
- border-top:1px solid Black;
- padding:0px;
- width:100%;
- clear:both;
-}
-</style>
-<script type="text/javascript" language="JavaScript">
-<!--
-function showContent(header, id)
-{
- e = document.getElementById(id);
- if(e.style.display == 'none')
- {
- e.style.display = 'block';
- e.style.visibility = 'visible';
- header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi,"[−]");
- }
- else
- {
- e.style.display = 'none';
- e.style.visibility = 'hidden';
- header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi,"[+]");
- }
-}
-function initTabs()
-{
- var url = window.location.href;
- if(url.indexOf('_Source_')!=-1 || url.indexOf('#Source')!=-1)
- {
- var tab1 = document.getElementById('BinaryID');
- var tab2 = document.getElementById('SourceID');
- tab1.className='tab disabled';
- tab2.className='tab active';
- }
- var sets = document.getElementsByTagName('div');
- for (var i = 0; i < sets.length; i++)
- {
- if (sets[i].className.indexOf('tabset') != -1)
- {
- var tabs = [];
- var links = sets[i].getElementsByTagName('a');
- for (var j = 0; j < links.length; j++)
- {
- if (links[j].className.indexOf('tab') != -1)
- {
- tabs.push(links[j]);
- links[j].tabs = tabs;
- var tab = document.getElementById(links[j].href.substr(links[j].href.indexOf('#') + 1));
- //reset all tabs on start
- if (tab)
- {
- if (links[j].className.indexOf('active')!=-1) {
- tab.style.display = 'block';
- }
- else {
- tab.style.display = 'none';
- }
- }
- links[j].onclick = function()
- {
- var tab = document.getElementById(this.href.substr(this.href.indexOf('#') + 1));
- if (tab)
- {
- //reset all tabs before change
- for (var k = 0; k < this.tabs.length; k++)
- {
- document.getElementById(this.tabs[k].href.substr(this.tabs[k].href.indexOf('#') + 1)).style.display = 'none';
- this.tabs[k].className = this.tabs[k].className.replace('active', 'disabled');
- }
- this.className = 'tab active';
- tab.style.display = 'block';
- // window.location.hash = this.id.replace('ID', '');
- return false;
- }
- }
- }
- }
- }
- }
- if(url.indexOf('#')!=-1) {
- location.href=location.href;
- }
-}
-if (window.addEventListener) window.addEventListener('load', initTabs, false);
-else if (window.attachEvent) window.attachEvent('onload', initTabs);
--->
-</script>
-</head>
-<body><a name='Source'></a><a name='Binary'></a><a name='Top'></a><h1>API compatibility report for the <span style='color:Blue;'>libzck.so</span> object between <span style='color:Red;'>1.2.1</span> and <span style='color:Red;'>1.2.2</span> versions on <span style='color:Blue;'>x86_64</span></h1>
-
- <br/>
- <div class='tabset'>
- <a id='BinaryID' href='#BinaryTab' class='tab active'>Binary<br/>Compatibility</a>
- <a id='SourceID' href='#SourceTab' style='margin-left:3px' class='tab disabled'>Source<br/>Compatibility</a>
- </div><div id='BinaryTab' class='tab'>
-<h2>Test Info</h2><hr/>
-<table class='summary'>
-<tr><th>Module Name</th><td>zchunk</td></tr>
-<tr><th>Version #1</th><td>1.2.1</td></tr>
-<tr><th>Version #2</th><td>1.2.2</td></tr>
-<tr><th>Arch</th><td>x86_64</td></tr>
-<tr><th>GCC Version</th><td>11.2.1</td></tr>
-<tr><th>Subject</th><td width='150px'>Binary Compatibility</td></tr>
-</table>
-<h2>Test Results</h2><hr/>
-<table class='summary'><tr><th>Total Header Files</th><td><a href='#Headers' style='color:Blue;'>1</a></td></tr>
-<tr><th>Total Objects</th><td><a href='#Libs' style='color:Blue;'>1</a></td></tr>
-<tr><th>Total Symbols / Types</th><td>82 / 17</td></tr>
-<tr><th>Compatibility</th>
-<td class='compatible'>100%</td>
-</tr>
-</table>
-<h2>Problem Summary</h2><hr/>
-<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td>0</td></tr>
-<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr>
-<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr>
-<tr><td>Medium</td><td>0</td></tr>
-<tr><td>Low</td><td>0</td></tr>
-<tr><th rowspan='3'>Problems with<br/>Symbols</th><td>High</td><td>0</td></tr>
-<tr><td>Medium</td><td>0</td></tr>
-<tr><td>Low</td><td>0</td></tr>
-<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr>
-</table>
-
-<a name='Headers'></a><h2>Header Files <span class='gray'> 1 </span></h2><hr/>
-<div class='h_list'>
-zck.h<br/>
-</div>
-<br/><a class='top_ref' href='#Top'>to the top</a><br/>
-<a name='Libs'></a><h2>Objects <span class='gray'> 1 </span></h2><hr/>
-<div class='lib_list'>
-libzck.so.1.2.1<br/>
-</div>
-<br/><a class='top_ref' href='#Top'>to the top</a><br/>
-<br/><br/><br/></div><div id='SourceTab' class='tab'>
-<h2>Test Info</h2><hr/>
-<table class='summary'>
-<tr><th>Module Name</th><td>zchunk</td></tr>
-<tr><th>Version #1</th><td>1.2.1</td></tr>
-<tr><th>Version #2</th><td>1.2.2</td></tr>
-<tr><th>Arch</th><td>x86_64</td></tr>
-<tr><th>Subject</th><td width='150px'>Source Compatibility</td></tr>
-</table>
-<h2>Test Results</h2><hr/>
-<table class='summary'><tr><th>Total Header Files</th><td><a href='#Headers' style='color:Blue;'>1</a></td></tr>
-<tr><th>Total Objects</th><td><a href='#Libs' style='color:Blue;'>1</a></td></tr>
-<tr><th>Total Symbols / Types</th><td>82 / 17</td></tr>
-<tr><th>Compatibility</th>
-<td class='compatible'>100%</td>
-</tr>
-</table>
-<h2>Problem Summary</h2><hr/>
-<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td>0</td></tr>
-<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr>
-<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr>
-<tr><td>Medium</td><td>0</td></tr>
-<tr><td>Low</td><td>0</td></tr>
-<tr><th rowspan='3'>Problems with<br/>Symbols</th><td>High</td><td>0</td></tr>
-<tr><td>Medium</td><td>0</td></tr>
-<tr><td>Low</td><td>0</td></tr>
-<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr>
-</table>
-
-<a name='Headers'></a><h2>Header Files <span class='gray'> 1 </span></h2><hr/>
-<div class='h_list'>
-zck.h<br/>
-</div>
-<br/><a class='top_ref' href='#Top'>to the top</a><br/>
-<a name='Libs'></a><h2>Objects <span class='gray'> 1 </span></h2><hr/>
-<div class='lib_list'>
-libzck.so.1.2.1<br/>
-</div>
-<br/><a class='top_ref' href='#Top'>to the top</a><br/>
-<br/><br/><br/></div><hr/>
-<div class='footer' align='right'><i>Generated by <a href='https://github.com/lvc/abi-compliance-checker'>ABI Compliance Checker</a> 2.3  </i>
-</div>
-<br/>
-
-</body></html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/test/compat_reports/zchunk/1.2.2_to_1.2.3/compat_report.html new/zchunk-1.2.3/test/compat_reports/zchunk/1.2.2_to_1.2.3/compat_report.html
--- old/zchunk-1.2.2/test/compat_reports/zchunk/1.2.2_to_1.2.3/compat_report.html 1970-01-01 01:00:00.000000000 +0100
+++ new/zchunk-1.2.3/test/compat_reports/zchunk/1.2.2_to_1.2.3/compat_report.html 2022-09-16 22:35:16.000000000 +0200
@@ -0,0 +1,474 @@
+<!-- kind:binary;verdict:compatible;affected:0;added:0;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:2.3 -->
+<!-- kind:source;verdict:compatible;affected:0;added:0;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:2.3 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1" />
+<meta name="keywords" content="zchunk, compatibility, API, ABI, report" />
+<meta name="description" content="API/ABI compatibility report for the zchunk object between 1.2.2 and 1.2.3 versions" />
+<meta name="robots" content="noindex" />
+<title>zchunk: 1.2.2 to 1.2.3 compatibility report</title>
+<style type="text/css">
+body {
+ font-family:Arial, sans-serif;
+ background-color:White;
+ color:Black;
+}
+hr {
+ color:Black;
+ background-color:Black;
+ height:1px;
+ border:0;
+}
+h1 {
+ margin-bottom:0px;
+ padding-bottom:0px;
+ font-size:1.625em;
+}
+h2 {
+ margin-bottom:0px;
+ padding-bottom:0px;
+ font-size:1.25em;
+ white-space:nowrap;
+}
+span.section {
+ font-weight:bold;
+ cursor:pointer;
+ color:#003E69;
+ white-space:nowrap;
+ margin-left:0.3125em;
+}
+span.new_sign {
+ font-weight:bold;
+ margin-left:1.65em;
+ color:#003E69;
+}
+span.new_sign_lbl {
+ margin-left:3em;
+ font-size:1em;
+ color:Black;
+}
+span:hover.section {
+ color:#336699;
+}
+span.sect_aff {
+ cursor:pointer;
+ padding-left:1.55em;
+ font-size:0.875em;
+ color:#cc3300;
+}
+span.sect_info {
+ cursor:pointer;
+ padding-left:1.55em;
+ font-size:0.875em;
+ color:Black;
+}
+span.ext {
+ font-weight:normal;
+}
+span.h_name {
+ color:#cc3300;
+ font-size:0.875em;
+ font-weight:bold;
+}
+div.h_list, div.lib_list {
+ font-size:0.94em;
+ padding-left:0.4em;
+}
+span.ns {
+ color:#408080;
+ font-size:0.94em;
+}
+span.lib_name {
+ color:Green;
+ font-size:0.875em;
+ font-weight:bold;
+}
+span.iname {
+ font-weight:bold;
+ color:#003E69;
+ margin-left:0.3125em;
+}
+span.iname_b {
+ font-weight:bold;
+}
+span.iname_a {
+ color:#333333;
+ font-weight:bold;
+ font-size:0.94em;
+}
+span.sym_p {
+ font-weight:normal;
+ white-space:normal;
+}
+span.sym_pd {
+ white-space:normal;
+}
+span.sym_p span, span.sym_pd span {
+ white-space:nowrap;
+}
+div.affect {
+ padding-left:1em;
+ padding-bottom:10px;
+ font-size:0.87em;
+ font-style:italic;
+ line-height:0.9em;
+}
+div.affected {
+ padding-left:1.9em;
+ padding-top:10px;
+}
+table.ptable {
+ border-collapse:collapse;
+ border:1px outset black;
+ margin-left:0.95em;
+ margin-top:3px;
+ margin-bottom:3px;
+ width:56.25em;
+}
+table.ptable td {
+ border:1px solid gray;
+ padding:3px;
+ font-size:0.875em;
+ text-align:left;
+ vertical-align:top;
+ max-width:28em;
+ word-wrap:break-word;
+}
+table.ptable th.pn {
+ width:2%;
+}
+table.ptable th.chg {
+ width:47%;
+}
+table.vtable {
+ border-collapse:collapse;
+ border:1px outset black;
+ margin-left:1.9em;
+ margin-top:0.7em;
+}
+table.vtable td {
+ border:1px solid gray;
+ padding:3px;
+ font-size:0.875em;
+ vertical-align:top;
+ max-width:450px;
+ word-wrap:break-word;
+}
+table.ptable th, table.vtable th {
+ background-color:#eeeeee;
+ font-weight:bold;
+ color:#333333;
+ font-family:Verdana, Arial;
+ font-size:0.875em;
+ border:1px solid gray;
+ text-align:center;
+ vertical-align:top;
+ white-space:nowrap;
+ padding:3px;
+}
+table.summary {
+ border-collapse:collapse;
+ border:1px outset black;
+}
+table.summary th {
+ background-color:#eeeeee;
+ font-weight:normal;
+ text-align:left;
+ font-size:0.94em;
+ white-space:nowrap;
+ border:1px inset gray;
+ padding:3px;
+}
+table.summary td {
+ text-align:right;
+ white-space:nowrap;
+ border:1px inset gray;
+ padding:3px 5px 3px 10px;
+}
+span.mngl {
+ padding-left:1em;
+ font-size:0.875em;
+ cursor:text;
+ color:#444444;
+ font-weight:bold;
+}
+span.pleft {
+ padding-left:2.5em;
+}
+span.sym_ver {
+ color:#333333;
+ white-space:nowrap;
+ font-family:"DejaVu Sans Mono", Monospace;
+}
+span.attr {
+ color:#333333;
+ font-weight:normal;
+}
+span.color_p {
+ font-style:italic;
+ color:Brown;
+}
+span.p {
+ font-style:italic;
+}
+span.fp {
+ font-style:italic;
+ background-color:#DCDCDC;
+}
+span.ttype {
+ font-weight:normal;
+}
+span.nowrap {
+ white-space:nowrap;
+}
+span.value {
+ font-weight:bold;
+}
+.passed {
+ background-color:#CCFFCC;
+ font-weight:normal;
+}
+.warning {
+ background-color:#F4F4AF;
+ font-weight:normal;
+}
+.failed {
+ background-color:#FFCCCC;
+ font-weight:normal;
+}
+.new {
+ background-color:#C6DEFF;
+ font-weight:normal;
+}
+.compatible {
+ background-color:#CCFFCC;
+ font-weight:normal;
+}
+.almost_compatible {
+ background-color:#FFDAA3;
+ font-weight:normal;
+}
+.incompatible {
+ background-color:#FFCCCC;
+ font-weight:normal;
+}
+.gray {
+ background-color:#DCDCDC;
+ font-weight:normal;
+}
+.top_ref {
+ font-size:0.69em;
+}
+.footer {
+ font-size:0.75em;
+}
+
+.tabset {
+ float:left;
+}
+a.tab {
+ border:1px solid Black;
+ float:left;
+ margin:0px 5px -1px 0px;
+ padding:3px 5px 3px 5px;
+ position:relative;
+ font-size:0.875em;
+ background-color:#DDD;
+ text-decoration:none;
+ color:Black;
+}
+a.disabled:hover
+{
+ color:Black;
+ background:#EEE;
+}
+a.active:hover
+{
+ color:Black;
+ background:White;
+}
+a.active {
+ border-bottom-color:White;
+ background-color:White;
+}
+div.tab {
+ border-top:1px solid Black;
+ padding:0px;
+ width:100%;
+ clear:both;
+}
+</style>
+<script type="text/javascript" language="JavaScript">
+<!--
+function showContent(header, id)
+{
+ e = document.getElementById(id);
+ if(e.style.display == 'none')
+ {
+ e.style.display = 'block';
+ e.style.visibility = 'visible';
+ header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi,"[−]");
+ }
+ else
+ {
+ e.style.display = 'none';
+ e.style.visibility = 'hidden';
+ header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi,"[+]");
+ }
+}
+function initTabs()
+{
+ var url = window.location.href;
+ if(url.indexOf('_Source_')!=-1 || url.indexOf('#Source')!=-1)
+ {
+ var tab1 = document.getElementById('BinaryID');
+ var tab2 = document.getElementById('SourceID');
+ tab1.className='tab disabled';
+ tab2.className='tab active';
+ }
+ var sets = document.getElementsByTagName('div');
+ for (var i = 0; i < sets.length; i++)
+ {
+ if (sets[i].className.indexOf('tabset') != -1)
+ {
+ var tabs = [];
+ var links = sets[i].getElementsByTagName('a');
+ for (var j = 0; j < links.length; j++)
+ {
+ if (links[j].className.indexOf('tab') != -1)
+ {
+ tabs.push(links[j]);
+ links[j].tabs = tabs;
+ var tab = document.getElementById(links[j].href.substr(links[j].href.indexOf('#') + 1));
+ //reset all tabs on start
+ if (tab)
+ {
+ if (links[j].className.indexOf('active')!=-1) {
+ tab.style.display = 'block';
+ }
+ else {
+ tab.style.display = 'none';
+ }
+ }
+ links[j].onclick = function()
+ {
+ var tab = document.getElementById(this.href.substr(this.href.indexOf('#') + 1));
+ if (tab)
+ {
+ //reset all tabs before change
+ for (var k = 0; k < this.tabs.length; k++)
+ {
+ document.getElementById(this.tabs[k].href.substr(this.tabs[k].href.indexOf('#') + 1)).style.display = 'none';
+ this.tabs[k].className = this.tabs[k].className.replace('active', 'disabled');
+ }
+ this.className = 'tab active';
+ tab.style.display = 'block';
+ // window.location.hash = this.id.replace('ID', '');
+ return false;
+ }
+ }
+ }
+ }
+ }
+ }
+ if(url.indexOf('#')!=-1) {
+ location.href=location.href;
+ }
+}
+if (window.addEventListener) window.addEventListener('load', initTabs, false);
+else if (window.attachEvent) window.attachEvent('onload', initTabs);
+-->
+</script>
+</head>
+<body><a name='Source'></a><a name='Binary'></a><a name='Top'></a><h1>API compatibility report for the <span style='color:Blue;'>libzck.so</span> object between <span style='color:Red;'>1.2.2</span> and <span style='color:Red;'>1.2.3</span> versions on <span style='color:Blue;'>x86_64</span></h1>
+
+ <br/>
+ <div class='tabset'>
+ <a id='BinaryID' href='#BinaryTab' class='tab active'>Binary<br/>Compatibility</a>
+ <a id='SourceID' href='#SourceTab' style='margin-left:3px' class='tab disabled'>Source<br/>Compatibility</a>
+ </div><div id='BinaryTab' class='tab'>
+<h2>Test Info</h2><hr/>
+<table class='summary'>
+<tr><th>Module Name</th><td>zchunk</td></tr>
+<tr><th>Version #1</th><td>1.2.2 (gcc 11.2.1)</td></tr>
+<tr><th>Version #2</th><td>1.2.3 (gcc 12.2.1)</td></tr>
+<tr><th>Arch</th><td>x86_64</td></tr>
+<tr><th>Subject</th><td width='150px'>Binary Compatibility</td></tr>
+</table>
+<h2>Test Results</h2><hr/>
+<table class='summary'><tr><th>Total Header Files</th><td><a href='#Headers' style='color:Blue;'>1</a></td></tr>
+<tr><th>Total Objects</th><td><a href='#Libs' style='color:Blue;'>1</a></td></tr>
+<tr><th>Total Symbols / Types</th><td>82 / 17</td></tr>
+<tr><th>Compatibility</th>
+<td class='compatible'>100%</td>
+</tr>
+</table>
+<h2>Problem Summary</h2><hr/>
+<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td>0</td></tr>
+<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr>
+<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr>
+<tr><td>Medium</td><td>0</td></tr>
+<tr><td>Low</td><td>0</td></tr>
+<tr><th rowspan='3'>Problems with<br/>Symbols</th><td>High</td><td>0</td></tr>
+<tr><td>Medium</td><td>0</td></tr>
+<tr><td>Low</td><td>0</td></tr>
+<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr>
+</table>
+
+<a name='Headers'></a><h2>Header Files <span class='gray'> 1 </span></h2><hr/>
+<div class='h_list'>
+zck.h<br/>
+</div>
+<br/><a class='top_ref' href='#Top'>to the top</a><br/>
+<a name='Libs'></a><h2>Objects <span class='gray'> 1 </span></h2><hr/>
+<div class='lib_list'>
+libzck.so.1.2.2<br/>
+</div>
+<br/><a class='top_ref' href='#Top'>to the top</a><br/>
+<br/><br/><br/></div><div id='SourceTab' class='tab'>
+<h2>Test Info</h2><hr/>
+<table class='summary'>
+<tr><th>Module Name</th><td>zchunk</td></tr>
+<tr><th>Version #1</th><td>1.2.2</td></tr>
+<tr><th>Version #2</th><td>1.2.3</td></tr>
+<tr><th>Arch</th><td>x86_64</td></tr>
+<tr><th>Subject</th><td width='150px'>Source Compatibility</td></tr>
+</table>
+<h2>Test Results</h2><hr/>
+<table class='summary'><tr><th>Total Header Files</th><td><a href='#Headers' style='color:Blue;'>1</a></td></tr>
+<tr><th>Total Objects</th><td><a href='#Libs' style='color:Blue;'>1</a></td></tr>
+<tr><th>Total Symbols / Types</th><td>82 / 17</td></tr>
+<tr><th>Compatibility</th>
+<td class='compatible'>100%</td>
+</tr>
+</table>
+<h2>Problem Summary</h2><hr/>
+<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td>0</td></tr>
+<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr>
+<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr>
+<tr><td>Medium</td><td>0</td></tr>
+<tr><td>Low</td><td>0</td></tr>
+<tr><th rowspan='3'>Problems with<br/>Symbols</th><td>High</td><td>0</td></tr>
+<tr><td>Medium</td><td>0</td></tr>
+<tr><td>Low</td><td>0</td></tr>
+<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr>
+</table>
+
+<a name='Headers'></a><h2>Header Files <span class='gray'> 1 </span></h2><hr/>
+<div class='h_list'>
+zck.h<br/>
+</div>
+<br/><a class='top_ref' href='#Top'>to the top</a><br/>
+<a name='Libs'></a><h2>Objects <span class='gray'> 1 </span></h2><hr/>
+<div class='lib_list'>
+libzck.so.1.2.2<br/>
+</div>
+<br/><a class='top_ref' href='#Top'>to the top</a><br/>
+<br/><br/><br/></div><hr/>
+<div class='footer' align='right'><i>Generated by <a href='https://github.com/lvc/abi-compliance-checker'>ABI Compliance Checker</a> 2.3  </i>
+</div>
+<br/>
+
+</body></html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/test/meson.build new/zchunk-1.2.3/test/meson.build
--- old/zchunk-1.2.2/test/meson.build 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/test/meson.build 2022-09-16 22:35:16.000000000 +0200
@@ -56,7 +56,12 @@
c_args: preprocessor_defines,
install: false
)
-file_path = join_paths(meson.source_root(), 'test/files')
+
+if meson.version().version_compare('>=0.56.0')
+ file_path = join_paths(meson.project_source_root(), 'test/files')
+else
+ file_path = join_paths(meson.source_root(), 'test/files')
+endif
test(
'create and validate empty zchunk file',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-1.2.2/test/zck_cmp_uncomp.c new/zchunk-1.2.3/test/zck_cmp_uncomp.c
--- old/zchunk-1.2.2/test/zck_cmp_uncomp.c 2022-04-18 18:38:54.000000000 +0200
+++ new/zchunk-1.2.3/test/zck_cmp_uncomp.c 2022-09-16 22:35:16.000000000 +0200
@@ -216,7 +216,7 @@
size_t todwl = 0;
size_t reuse = 0;
while (iter) {
- printf("%12lu %s %s %12lu %12lu\n",
+ printf("%zd %s %s %zd %zd\n",
zck_get_chunk_number(iter),
zck_get_chunk_valid(iter) ? "SRC" : "DST",
zck_get_chunk_digest_uncompressed(iter),
@@ -232,8 +232,8 @@
iter = zck_get_next_chunk(iter);
}
- printf("\n\nTotal to be reused : %12lu\n", reuse);
- printf("Total to be downloaded : %12lu\n", todwl);
+ printf("\n\nTotal to be reused : %zu\n", reuse);
+ printf("Total to be downloaded : %zu\n", todwl);
close(in_fd);
close(zck_fd);
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-websocket-client for openSUSE:Factory checked in at 2022-10-25 11:18:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-websocket-client (Old)
and /work/SRC/openSUSE:Factory/.python-websocket-client.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-websocket-client"
Tue Oct 25 11:18:44 2022 rev:17 rq:1030886 version:1.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-websocket-client/python-websocket-client.changes 2022-04-16 00:13:39.593601885 +0200
+++ /work/SRC/openSUSE:Factory/.python-websocket-client.new.2275/python-websocket-client.changes 2022-10-25 11:18:55.205992049 +0200
@@ -1,0 +2,8 @@
+Tue Oct 11 17:11:02 UTC 2022 - Yogalakshmi Arunachalam <yarunachalam(a)suse.com>
+
+- Update to version 1.4.1
+ - Fix stack growth bug when `run_forever` reconnects (#854)
+ - Add doctest CI for sphinx docs code examples (d150099)
+ - General docs improvements
+
+-------------------------------------------------------------------
Old:
----
websocket-client-1.3.2.tar.gz
New:
----
websocket-client-1.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-websocket-client.spec ++++++
--- /var/tmp/diff_new_pack.CrFK6U/_old 2022-10-25 11:18:55.677993096 +0200
+++ /var/tmp/diff_new_pack.CrFK6U/_new 2022-10-25 11:18:55.681993104 +0200
@@ -25,7 +25,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-websocket-client
-Version: 1.3.2
+Version: 1.4.1
Release: 0
Summary: WebSocket client implementation
License: LGPL-2.1-only
++++++ websocket-client-1.3.2.tar.gz -> websocket-client-1.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/ChangeLog new/websocket-client-1.4.1/ChangeLog
--- old/websocket-client-1.3.2/ChangeLog 2022-03-29 12:20:48.000000000 +0200
+++ new/websocket-client-1.4.1/ChangeLog 2022-09-04 21:56:26.000000000 +0200
@@ -1,6 +1,20 @@
ChangeLog
============
+- 1.4.1
+ - Fix stack growth bug when `run_forever` reconnects (#854)
+ - Add doctest CI for sphinx docs code examples (d150099)
+ - General docs improvements
+
+- 1.4.0
+ - Fix automatic reconnect with `run_forever` (#838)
+ - Allow a timeout to be set when using a proxy (#842)
+
+- 1.3.3
+ - Fix unclosed socket error (#826)
+ - Update header dict access (#818)
+ - Add utf8 workaround to docs (fc9ee9f)
+
- 1.3.2
- Add support for pre-initialized stream socket in new WebSocketApp (#804)
- Remove rel.saferead() in examples (f0bf03d)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/PKG-INFO new/websocket-client-1.4.1/PKG-INFO
--- old/websocket-client-1.3.2/PKG-INFO 2022-03-29 12:24:33.153716800 +0200
+++ new/websocket-client-1.4.1/PKG-INFO 2022-09-04 21:59:51.740593200 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: websocket-client
-Version: 1.3.2
+Version: 1.4.1
Summary: WebSocket client for Python with low level API options
Home-page: https://github.com/websocket-client/websocket-client.git
Download-URL: https://github.com/websocket-client/websocket-client/releases
@@ -10,7 +10,6 @@
Project-URL: Documentation, https://websocket-client.readthedocs.io/
Project-URL: Source, https://github.com/websocket-client/websocket-client/
Keywords: websockets client
-Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
@@ -69,6 +68,9 @@
- To install `Sphinx` and `sphinx_rtd_theme` to build project documentation, use:
`pip3 install websocket-client[docs]`
+While not a strict dependency, [rel](https://github.com/bubbleboy14/registeredeventlistener)
+is useful when using `run_forever` with automatic reconnect. Install rel with `pip3 install rel`.
+
Footnote: Some shells, such as zsh, require you to escape the `[` and `]` characters with a `\`.
## Usage Tips
@@ -101,9 +103,13 @@
### Long-lived Connection
Most real-world WebSockets situations involve longer-lived connections.
-The WebSocketApp `run_forever` loop will automatically try to reconnect when a
+The WebSocketApp `run_forever` loop will automatically try to reconnect
+to an open WebSocket connection when a network
connection is lost if it is provided with a dispatcher parameter,
and provides a variety of event-based connection controls.
+`run_forever` does not automatically reconnect if the server
+closes the WebSocket. Customizing behavior when the server closes
+the WebSocket should be handled in the `on_close` callback.
This example uses [rel](https://github.com/bubbleboy14/registeredeventlistener)
for the dispatcher to provide automatic reconnection.
@@ -157,14 +163,3 @@
print("Received '%s'" % result)
ws.close()
```
-
-If you want to customize socket options, set sockopt, as seen below:
-
-```python
-from websocket import create_connection
-
-ws = create_connection("ws://echo.websocket.events/",
- sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),))
-```
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/README.md new/websocket-client-1.4.1/README.md
--- old/websocket-client-1.3.2/README.md 2022-03-11 18:25:16.000000000 +0100
+++ new/websocket-client-1.4.1/README.md 2022-08-26 14:51:50.000000000 +0200
@@ -36,6 +36,9 @@
- To install `Sphinx` and `sphinx_rtd_theme` to build project documentation, use:
`pip3 install websocket-client[docs]`
+While not a strict dependency, [rel](https://github.com/bubbleboy14/registeredeventlistener)
+is useful when using `run_forever` with automatic reconnect. Install rel with `pip3 install rel`.
+
Footnote: Some shells, such as zsh, require you to escape the `[` and `]` characters with a `\`.
## Usage Tips
@@ -68,9 +71,13 @@
### Long-lived Connection
Most real-world WebSockets situations involve longer-lived connections.
-The WebSocketApp `run_forever` loop will automatically try to reconnect when a
+The WebSocketApp `run_forever` loop will automatically try to reconnect
+to an open WebSocket connection when a network
connection is lost if it is provided with a dispatcher parameter,
and provides a variety of event-based connection controls.
+`run_forever` does not automatically reconnect if the server
+closes the WebSocket. Customizing behavior when the server closes
+the WebSocket should be handled in the `on_close` callback.
This example uses [rel](https://github.com/bubbleboy14/registeredeventlistener)
for the dispatcher to provide automatic reconnection.
@@ -124,12 +131,3 @@
print("Received '%s'" % result)
ws.close()
```
-
-If you want to customize socket options, set sockopt, as seen below:
-
-```python
-from websocket import create_connection
-
-ws = create_connection("ws://echo.websocket.events/",
- sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),))
-```
Binary files old/websocket-client-1.3.2/examples/__pycache__/echo_client.cpython-310.pyc and new/websocket-client-1.4.1/examples/__pycache__/echo_client.cpython-310.pyc differ
Binary files old/websocket-client-1.3.2/examples/__pycache__/echoapp_client.cpython-310.pyc and new/websocket-client-1.4.1/examples/__pycache__/echoapp_client.cpython-310.pyc differ
Binary files old/websocket-client-1.3.2/examples/__pycache__/rel_client.cpython-310.pyc and new/websocket-client-1.4.1/examples/__pycache__/rel_client.cpython-310.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/setup.py new/websocket-client-1.4.1/setup.py
--- old/websocket-client-1.3.2/setup.py 2022-03-29 12:18:04.000000000 +0200
+++ new/websocket-client-1.4.1/setup.py 2022-09-04 21:56:58.000000000 +0200
@@ -21,7 +21,7 @@
limitations under the License.
"""
-VERSION = "1.3.2"
+VERSION = "1.4.1"
install_requires = []
tests_require = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/websocket/__init__.py new/websocket-client-1.4.1/websocket/__init__.py
--- old/websocket-client-1.3.2/websocket/__init__.py 2022-03-29 12:18:18.000000000 +0200
+++ new/websocket-client-1.4.1/websocket/__init__.py 2022-09-04 21:57:07.000000000 +0200
@@ -17,10 +17,10 @@
limitations under the License.
"""
from ._abnf import *
-from ._app import WebSocketApp
+from ._app import WebSocketApp, setReconnect
from ._core import *
from ._exceptions import *
from ._logging import *
from ._socket import *
-__version__ = "1.3.2"
+__version__ = "1.4.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/websocket/_app.py new/websocket-client-1.4.1/websocket/_app.py
--- old/websocket-client-1.3.2/websocket/_app.py 2022-03-19 15:25:50.000000000 +0100
+++ new/websocket-client-1.4.1/websocket/_app.py 2022-09-04 21:52:06.000000000 +0200
@@ -1,3 +1,4 @@
+import inspect
import selectors
import sys
import threading
@@ -29,15 +30,40 @@
__all__ = ["WebSocketApp"]
+RECONNECT = 0
-class Dispatcher:
+
+def setReconnect(reconnectInterval):
+ global RECONNECT
+ RECONNECT = reconnectInterval
+
+
+class DispatcherBase:
"""
- Dispatcher
+ DispatcherBase
"""
def __init__(self, app, ping_timeout):
self.app = app
self.ping_timeout = ping_timeout
+ def timeout(self, seconds, callback):
+ time.sleep(seconds)
+ callback()
+
+ def reconnect(self, seconds, reconnector):
+ try:
+ while True:
+ _logging.info("reconnect() - retrying in %s seconds [%s frames in stack]" % (seconds, len(inspect.stack())))
+ time.sleep(seconds)
+ reconnector(reconnecting=True)
+ except KeyboardInterrupt as e:
+ _logging.info("User exited %s" % (e,))
+
+
+class Dispatcher(DispatcherBase):
+ """
+ Dispatcher
+ """
def read(self, sock, read_callback, check_callback):
while self.app.keep_running:
sel = selectors.DefaultSelector()
@@ -51,14 +77,10 @@
sel.close()
-class SSLDispatcher:
+class SSLDispatcher(DispatcherBase):
"""
SSLDispatcher
"""
- def __init__(self, app, ping_timeout):
- self.app = app
- self.ping_timeout = ping_timeout
-
def read(self, sock, read_callback, check_callback):
while self.app.keep_running:
r = self.select()
@@ -90,10 +112,17 @@
self.app = app
self.ping_timeout = ping_timeout
self.dispatcher = dispatcher
+ dispatcher.signal(2, dispatcher.abort) # keyboard interrupt
def read(self, sock, read_callback, check_callback):
self.dispatcher.read(sock, read_callback)
- self.ping_timeout and self.dispatcher.timeout(self.ping_timeout, check_callback)
+ self.ping_timeout and self.timeout(self.ping_timeout, check_callback)
+
+ def timeout(self, seconds, callback):
+ self.dispatcher.timeout(seconds, callback)
+
+ def reconnect(self, seconds, reconnector):
+ self.timeout(seconds, reconnector)
class WebSocketApp:
@@ -186,6 +215,7 @@
self.last_pong_tm = 0
self.subprotocols = subprotocols
self.prepared_socket = socket
+ self.has_errored = False
def send(self, data, opcode=ABNF.OPCODE_TEXT):
"""
@@ -228,9 +258,10 @@
ping_payload="",
http_proxy_host=None, http_proxy_port=None,
http_no_proxy=None, http_proxy_auth=None,
+ http_proxy_timeout=None,
skip_utf8_validation=False,
host=None, origin=None, dispatcher=None,
- suppress_origin=False, proxy_type=None):
+ suppress_origin=False, proxy_type=None, reconnect=None):
"""
Run event loop for WebSocket framework.
@@ -256,6 +287,10 @@
HTTP proxy host name.
http_proxy_port: int or str
HTTP proxy port. If not set, set to 80.
+ http_proxy_timeout: int or float
+ HTTP proxy timeout, default is 60 sec as per python-socks.
+ http_proxy_auth: tuple
+ HTTP proxy auth information. tuple of username and password. Default is None.
http_no_proxy: list
Whitelisted host names that don't use the proxy.
skip_utf8_validation: bool
@@ -276,6 +311,9 @@
True if any other exception was raised during a loop.
"""
+ if reconnect is None:
+ reconnect = RECONNECT
+
if ping_timeout is not None and ping_timeout <= 0:
raise WebSocketException("Ensure ping_timeout > 0")
if ping_interval is not None and ping_interval < 0:
@@ -317,84 +355,105 @@
# Finally call the callback AFTER all teardown is complete
self._callback(self.on_close, close_status_code, close_reason)
- try:
+ def setSock(reconnecting=False):
self.sock = WebSocket(
self.get_mask_key, sockopt=sockopt, sslopt=sslopt,
fire_cont_frame=self.on_cont_message is not None,
skip_utf8_validation=skip_utf8_validation,
enable_multithread=True)
self.sock.settimeout(getdefaulttimeout())
- self.sock.connect(
- self.url, header=self.header, cookie=self.cookie,
- http_proxy_host=http_proxy_host,
- http_proxy_port=http_proxy_port, http_no_proxy=http_no_proxy,
- http_proxy_auth=http_proxy_auth, subprotocols=self.subprotocols,
- host=host, origin=origin, suppress_origin=suppress_origin,
- proxy_type=proxy_type, socket=self.prepared_socket)
- dispatcher = self.create_dispatcher(ping_timeout, dispatcher)
-
- self._callback(self.on_open)
-
- if ping_interval:
- event = threading.Event()
- thread = threading.Thread(
- target=self._send_ping, args=(ping_interval, event, ping_payload))
- thread.daemon = True
- thread.start()
-
- def read():
- if not self.keep_running:
- return teardown()
+ try:
+ self.sock.connect(
+ self.url, header=self.header, cookie=self.cookie,
+ http_proxy_host=http_proxy_host,
+ http_proxy_port=http_proxy_port, http_no_proxy=http_no_proxy,
+ http_proxy_auth=http_proxy_auth, http_proxy_timeout=http_proxy_timeout,
+ subprotocols=self.subprotocols,
+ host=host, origin=origin, suppress_origin=suppress_origin,
+ proxy_type=proxy_type, socket=self.prepared_socket)
+
+ self._callback(self.on_open)
+
+ _logging.warning("websocket connected")
+ dispatcher.read(self.sock.sock, read, check)
+ except (WebSocketConnectionClosedException, ConnectionRefusedError, KeyboardInterrupt, SystemExit, Exception) as e:
+ _logging.error("%s - %s" % (e, reconnect and "reconnecting" or "goodbye"))
+ reconnecting or handleDisconnect(e)
+
+ def read():
+ if not self.keep_running:
+ return teardown()
+ try:
op_code, frame = self.sock.recv_data_frame(True)
- if op_code == ABNF.OPCODE_CLOSE:
- return teardown(frame)
- elif op_code == ABNF.OPCODE_PING:
- self._callback(self.on_ping, frame.data)
- elif op_code == ABNF.OPCODE_PONG:
- self.last_pong_tm = time.time()
- self._callback(self.on_pong, frame.data)
- elif op_code == ABNF.OPCODE_CONT and self.on_cont_message:
- self._callback(self.on_data, frame.data,
- frame.opcode, frame.fin)
- self._callback(self.on_cont_message,
- frame.data, frame.fin)
+ except (WebSocketConnectionClosedException, KeyboardInterrupt) as e:
+ if custom_dispatcher:
+ return handleDisconnect(e)
else:
- data = frame.data
- if op_code == ABNF.OPCODE_TEXT:
- data = data.decode("utf-8")
- self._callback(self.on_data, data, frame.opcode, True)
- self._callback(self.on_message, data)
-
- return True
-
- def check():
- if (ping_timeout):
- has_timeout_expired = time.time() - self.last_ping_tm > ping_timeout
- has_pong_not_arrived_after_last_ping = self.last_pong_tm - self.last_ping_tm < 0
- has_pong_arrived_too_late = self.last_pong_tm - self.last_ping_tm > ping_timeout
-
- if (self.last_ping_tm and
- has_timeout_expired and
- (has_pong_not_arrived_after_last_ping or has_pong_arrived_too_late)):
- raise WebSocketTimeoutException("ping/pong timed out")
- return True
-
- dispatcher.read(self.sock.sock, read, check)
- return False
- except (Exception, KeyboardInterrupt, SystemExit) as e:
+ raise e
+ if op_code == ABNF.OPCODE_CLOSE:
+ return teardown(frame)
+ elif op_code == ABNF.OPCODE_PING:
+ self._callback(self.on_ping, frame.data)
+ elif op_code == ABNF.OPCODE_PONG:
+ self.last_pong_tm = time.time()
+ self._callback(self.on_pong, frame.data)
+ elif op_code == ABNF.OPCODE_CONT and self.on_cont_message:
+ self._callback(self.on_data, frame.data,
+ frame.opcode, frame.fin)
+ self._callback(self.on_cont_message,
+ frame.data, frame.fin)
+ else:
+ data = frame.data
+ if op_code == ABNF.OPCODE_TEXT:
+ data = data.decode("utf-8")
+ self._callback(self.on_data, data, frame.opcode, True)
+ self._callback(self.on_message, data)
+
+ return True
+
+ def check():
+ if (ping_timeout):
+ has_timeout_expired = time.time() - self.last_ping_tm > ping_timeout
+ has_pong_not_arrived_after_last_ping = self.last_pong_tm - self.last_ping_tm < 0
+ has_pong_arrived_too_late = self.last_pong_tm - self.last_ping_tm > ping_timeout
+
+ if (self.last_ping_tm and
+ has_timeout_expired and
+ (has_pong_not_arrived_after_last_ping or has_pong_arrived_too_late)):
+ raise WebSocketTimeoutException("ping/pong timed out")
+ return True
+
+ def handleDisconnect(e):
+ self.has_errored = True
self._callback(self.on_error, e)
if isinstance(e, SystemExit):
# propagate SystemExit further
raise
- teardown()
- return not isinstance(e, KeyboardInterrupt)
+ if reconnect and not isinstance(e, KeyboardInterrupt):
+ _logging.info("websocket disconnected (retrying in %s seconds) [%s frames in stack]" % (reconnect, len(inspect.stack())))
+ dispatcher.reconnect(reconnect, setSock)
+ else:
+ teardown()
+
+ custom_dispatcher = bool(dispatcher)
+ dispatcher = self.create_dispatcher(ping_timeout, dispatcher, not not sslopt)
+
+ if ping_interval:
+ event = threading.Event()
+ thread = threading.Thread(
+ target=self._send_ping, args=(ping_interval, event, ping_payload))
+ thread.daemon = True
+ thread.start()
+
+ setSock()
+ return self.has_errored
- def create_dispatcher(self, ping_timeout, dispatcher=None):
+ def create_dispatcher(self, ping_timeout, dispatcher=None, is_ssl=False):
if dispatcher: # If custom dispatcher is set, use WrappedDispatcher
return WrappedDispatcher(self, ping_timeout, dispatcher)
timeout = ping_timeout or 10
- if self.sock.is_ssl():
+ if is_ssl:
return SSLDispatcher(self, timeout)
return Dispatcher(self, timeout)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/websocket/_core.py new/websocket-client-1.4.1/websocket/_core.py
--- old/websocket-client-1.3.2/websocket/_core.py 2022-02-25 22:17:34.000000000 +0100
+++ new/websocket-client-1.4.1/websocket/_core.py 2022-08-24 20:36:28.000000000 +0200
@@ -233,6 +233,8 @@
Whitelisted host names that don't use the proxy.
http_proxy_auth: tuple
HTTP proxy auth information. Tuple of username and password. Default is None.
+ http_proxy_timeout: int or float
+ HTTP proxy timeout, default is 60 sec as per python-socks.
redirect_limit: int
Number of redirects to follow.
subprotocols: list
@@ -572,6 +574,8 @@
Whitelisted host names that don't use the proxy.
http_proxy_auth: tuple
HTTP proxy auth information. tuple of username and password. Default is None.
+ http_proxy_timeout: int or float
+ HTTP proxy timeout, default is 60 sec as per python-socks.
enable_multithread: bool
Enable lock for multithread.
redirect_limit: int
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/websocket/_handshake.py new/websocket-client-1.4.1/websocket/_handshake.py
--- old/websocket-client-1.3.2/websocket/_handshake.py 2022-02-25 18:36:28.000000000 +0100
+++ new/websocket-client-1.4.1/websocket/_handshake.py 2022-05-08 21:58:55.000000000 +0200
@@ -81,7 +81,7 @@
hostport = _pack_hostname(host)
else:
hostport = "%s:%d" % (_pack_hostname(host), port)
- if "host" in options and options["host"] is not None:
+ if options.get("host"):
headers.append("Host: %s" % options["host"])
else:
headers.append("Host: %s" % hostport)
@@ -89,7 +89,7 @@
# scheme indicates whether http or https is used in Origin
# The same approach is used in parse_url of _url.py to set default port
scheme, url = url.split(":", 1)
- if "suppress_origin" not in options or not options["suppress_origin"]:
+ if not options.get("suppress_origin"):
if "origin" in options and options["origin"] is not None:
headers.append("Origin: %s" % options["origin"])
elif scheme == "wss":
@@ -100,16 +100,16 @@
key = _create_sec_websocket_key()
# Append Sec-WebSocket-Key & Sec-WebSocket-Version if not manually specified
- if 'header' not in options or 'Sec-WebSocket-Key' not in options['header']:
+ if not options.get('header') or 'Sec-WebSocket-Key' not in options['header']:
key = _create_sec_websocket_key()
headers.append("Sec-WebSocket-Key: %s" % key)
else:
key = options['header']['Sec-WebSocket-Key']
- if 'header' not in options or 'Sec-WebSocket-Version' not in options['header']:
+ if not options.get('header') or 'Sec-WebSocket-Version' not in options['header']:
headers.append("Sec-WebSocket-Version: %s" % VERSION)
- if 'connection' not in options or options['connection'] is None:
+ if not options.get('connection'):
headers.append('Connection: Upgrade')
else:
headers.append(options['connection'])
@@ -118,8 +118,8 @@
if subprotocols:
headers.append("Sec-WebSocket-Protocol: %s" % ",".join(subprotocols))
- if "header" in options:
- header = options["header"]
+ header = options.get("header")
+ if header:
if isinstance(header, dict):
header = [
": ".join([k, v])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/websocket/_http.py new/websocket-client-1.4.1/websocket/_http.py
--- old/websocket-client-1.3.2/websocket/_http.py 2022-01-01 04:15:40.000000000 +0100
+++ new/websocket-client-1.4.1/websocket/_http.py 2022-08-25 15:14:44.000000000 +0200
@@ -23,7 +23,7 @@
from ._exceptions import *
from ._logging import *
-from ._socket import*
+from ._socket import *
from ._ssl_compat import *
from ._url import *
@@ -59,7 +59,7 @@
self.no_proxy = options.get("http_no_proxy", None)
self.proxy_protocol = options.get("proxy_type", "http")
# Note: If timeout not specified, default python-socks timeout is 60 seconds
- self.proxy_timeout = options.get("timeout", None)
+ self.proxy_timeout = options.get("http_proxy_timeout", None)
if self.proxy_protocol not in ['http', 'socks4', 'socks4a', 'socks5', 'socks5h']:
raise ProxyError("Only http, socks4, socks5 proxy protocols are supported")
else:
@@ -114,22 +114,22 @@
if proxy.proxy_host and not socket and not (proxy.proxy_protocol == "http"):
return _start_proxied_socket(url, options, proxy)
- hostname, port, resource, is_secure = parse_url(url)
+ hostname, port_from_url, resource, is_secure = parse_url(url)
if socket:
- return socket, (hostname, port, resource)
+ return socket, (hostname, port_from_url, resource)
addrinfo_list, need_tunnel, auth = _get_addrinfo_list(
- hostname, port, is_secure, proxy)
+ hostname, port_from_url, is_secure, proxy)
if not addrinfo_list:
raise WebSocketException(
- "Host not found.: " + hostname + ":" + str(port))
+ "Host not found.: " + hostname + ":" + str(port_from_url))
sock = None
try:
sock = _open_socket(addrinfo_list, options.sockopt, options.timeout)
if need_tunnel:
- sock = _tunnel(sock, hostname, port, auth)
+ sock = _tunnel(sock, hostname, port_from_url, auth)
if is_secure:
if HAVE_SSL:
@@ -137,7 +137,7 @@
else:
raise WebSocketException("SSL not available.")
- return sock, (hostname, port, resource)
+ return sock, (hostname, port_from_url, resource)
except:
if sock:
sock.close()
@@ -184,17 +184,16 @@
try:
sock.connect(address)
except socket.error as error:
+ sock.close()
error.remote_ip = str(address[0])
try:
eConnRefused = (errno.ECONNREFUSED, errno.WSAECONNREFUSED, errno.ENETUNREACH)
- except:
+ except AttributeError:
eConnRefused = (errno.ECONNREFUSED, errno.ENETUNREACH)
if error.errno in eConnRefused:
err = error
continue
else:
- if sock:
- sock.close()
raise error
else:
break
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/websocket/_logging.py new/websocket-client-1.4.1/websocket/_logging.py
--- old/websocket-client-1.3.2/websocket/_logging.py 2022-02-25 22:19:33.000000000 +0100
+++ new/websocket-client-1.4.1/websocket/_logging.py 2022-08-24 20:16:25.000000000 +0200
@@ -35,7 +35,7 @@
"isEnabledForError", "isEnabledForDebug", "isEnabledForTrace"]
-def enableTrace(traceable, handler=logging.StreamHandler()):
+def enableTrace(traceable, handler=logging.StreamHandler(), level="DEBUG"):
"""
Turn on/off the traceability.
@@ -48,7 +48,7 @@
_traceEnabled = traceable
if traceable:
_logger.addHandler(handler)
- _logger.setLevel(logging.DEBUG)
+ _logger.setLevel(getattr(logging, level))
def dump(title, message):
@@ -70,6 +70,10 @@
_logger.debug(msg)
+def info(msg):
+ _logger.info(msg)
+
+
def trace(msg):
if _traceEnabled:
_logger.debug(msg)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/websocket/tests/test_app.py new/websocket-client-1.4.1/websocket/tests/test_app.py
--- old/websocket-client-1.3.2/websocket/tests/test_app.py 2022-02-25 22:32:28.000000000 +0100
+++ new/websocket-client-1.4.1/websocket/tests/test_app.py 2022-09-04 21:52:06.000000000 +0200
@@ -80,7 +80,8 @@
app = ws.WebSocketApp('ws://127.0.0.1:' + LOCAL_WS_SERVER_PORT, on_open=on_open, on_close=on_close, on_message=on_message)
app.run_forever()
- @unittest.skipUnless(TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled")
+# @unittest.skipUnless(TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled")
+ @unittest.skipUnless(False, "Test disabled for now (requires rel)")
def testRunForeverDispatcher(self):
""" A WebSocketApp should keep running as long as its self.keep_running
is not False (in the boolean context).
@@ -98,7 +99,9 @@
self.close()
app = ws.WebSocketApp('ws://127.0.0.1:' + LOCAL_WS_SERVER_PORT, on_open=on_open, on_message=on_message)
- app.run_forever(dispatcher="Dispatcher")
+ app.run_forever(dispatcher="Dispatcher") # doesn't work
+# app.run_forever(dispatcher=rel) # would work
+# rel.dispatch()
@unittest.skipUnless(TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled")
def testRunForeverTeardownCleanExit(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/websocket/tests/test_http.py new/websocket-client-1.4.1/websocket/tests/test_http.py
--- old/websocket-client-1.3.2/websocket/tests/test_http.py 2022-02-25 22:32:17.000000000 +0100
+++ new/websocket-client-1.4.1/websocket/tests/test_http.py 2022-08-24 20:36:28.000000000 +0200
@@ -105,15 +105,15 @@
if ws._http.HAVE_PYTHON_SOCKS:
# Need this check, otherwise case where python_socks is not installed triggers
# websocket._exceptions.WebSocketException: Python Socks is needed for SOCKS proxying but is not available
- self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks4", timeout=1))
- self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks4a", timeout=1))
- self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks5", timeout=1))
- self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks5h", timeout=1))
- self.assertRaises(ProxyConnectionError, connect, "wss://example.com", OptsList(), proxy_info(http_proxy_host="127.0.0.1", http_proxy_port=9999, proxy_type="socks4", timeout=1), None)
+ self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks4", http_proxy_timeout=1))
+ self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks4a", http_proxy_timeout=1))
+ self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks5", http_proxy_timeout=1))
+ self.assertRaises((ProxyTimeoutError, OSError), _start_proxied_socket, "wss://example.com", OptsList(), proxy_info(http_proxy_host="example.com", http_proxy_port="8080", proxy_type="socks5h", http_proxy_timeout=1))
+ self.assertRaises(ProxyConnectionError, connect, "wss://example.com", OptsList(), proxy_info(http_proxy_host="127.0.0.1", http_proxy_port=9999, proxy_type="socks4", http_proxy_timeout=1), None)
self.assertRaises(TypeError, _get_addrinfo_list, None, 80, True, proxy_info(http_proxy_host="127.0.0.1", http_proxy_port="9999", proxy_type="http"))
self.assertRaises(TypeError, _get_addrinfo_list, None, 80, True, proxy_info(http_proxy_host="127.0.0.1", http_proxy_port="9999", proxy_type="http"))
- self.assertRaises(socket.timeout, connect, "wss://google.com", OptsList(), proxy_info(http_proxy_host="8.8.8.8", http_proxy_port=9999, proxy_type="http", timeout=1), None)
+ self.assertRaises(socket.timeout, connect, "wss://google.com", OptsList(), proxy_info(http_proxy_host="8.8.8.8", http_proxy_port=9999, proxy_type="http", http_proxy_timeout=1), None)
self.assertEqual(
connect("wss://google.com", OptsList(), proxy_info(http_proxy_host="8.8.8.8", http_proxy_port=8080, proxy_type="http"), True),
(True, ("google.com", 443, "/")))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/websocket_client.egg-info/PKG-INFO new/websocket-client-1.4.1/websocket_client.egg-info/PKG-INFO
--- old/websocket-client-1.3.2/websocket_client.egg-info/PKG-INFO 2022-03-29 12:24:32.000000000 +0200
+++ new/websocket-client-1.4.1/websocket_client.egg-info/PKG-INFO 2022-09-04 21:59:51.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: websocket-client
-Version: 1.3.2
+Version: 1.4.1
Summary: WebSocket client for Python with low level API options
Home-page: https://github.com/websocket-client/websocket-client.git
Download-URL: https://github.com/websocket-client/websocket-client/releases
@@ -10,7 +10,6 @@
Project-URL: Documentation, https://websocket-client.readthedocs.io/
Project-URL: Source, https://github.com/websocket-client/websocket-client/
Keywords: websockets client
-Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
@@ -69,6 +68,9 @@
- To install `Sphinx` and `sphinx_rtd_theme` to build project documentation, use:
`pip3 install websocket-client[docs]`
+While not a strict dependency, [rel](https://github.com/bubbleboy14/registeredeventlistener)
+is useful when using `run_forever` with automatic reconnect. Install rel with `pip3 install rel`.
+
Footnote: Some shells, such as zsh, require you to escape the `[` and `]` characters with a `\`.
## Usage Tips
@@ -101,9 +103,13 @@
### Long-lived Connection
Most real-world WebSockets situations involve longer-lived connections.
-The WebSocketApp `run_forever` loop will automatically try to reconnect when a
+The WebSocketApp `run_forever` loop will automatically try to reconnect
+to an open WebSocket connection when a network
connection is lost if it is provided with a dispatcher parameter,
and provides a variety of event-based connection controls.
+`run_forever` does not automatically reconnect if the server
+closes the WebSocket. Customizing behavior when the server closes
+the WebSocket should be handled in the `on_close` callback.
This example uses [rel](https://github.com/bubbleboy14/registeredeventlistener)
for the dispatcher to provide automatic reconnection.
@@ -157,14 +163,3 @@
print("Received '%s'" % result)
ws.close()
```
-
-If you want to customize socket options, set sockopt, as seen below:
-
-```python
-from websocket import create_connection
-
-ws = create_connection("ws://echo.websocket.events/",
- sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),))
-```
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/websocket-client-1.3.2/websocket_client.egg-info/SOURCES.txt new/websocket-client-1.4.1/websocket_client.egg-info/SOURCES.txt
--- old/websocket-client-1.3.2/websocket_client.egg-info/SOURCES.txt 2022-03-29 12:24:33.000000000 +0200
+++ new/websocket-client-1.4.1/websocket_client.egg-info/SOURCES.txt 2022-09-04 21:59:51.000000000 +0200
@@ -7,6 +7,9 @@
examples/echo_client.py
examples/echoapp_client.py
examples/rel_client.py
+examples/__pycache__/echo_client.cpython-310.pyc
+examples/__pycache__/echoapp_client.cpython-310.pyc
+examples/__pycache__/rel_client.cpython-310.pyc
websocket/__init__.py
websocket/_abnf.py
websocket/_app.py
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package graphviz for openSUSE:Factory checked in at 2022-10-25 11:18:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/graphviz (Old)
and /work/SRC/openSUSE:Factory/.graphviz.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "graphviz"
Tue Oct 25 11:18:41 2022 rev:96 rq:1030687 version:2.49.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/graphviz/graphviz.changes 2022-08-30 14:48:20.851946942 +0200
+++ /work/SRC/openSUSE:Factory/.graphviz.new.2275/graphviz.changes 2022-10-25 11:18:53.393988033 +0200
@@ -1,0 +2,6 @@
+Wed Oct 19 10:40:10 UTC 2022 - Klaus K��mpf <kkaempf(a)suse.com>
+
+- add swig-4.1.0.patch to work around graphviz's incompatibility
+ with swig-4.1.0.
+
+-------------------------------------------------------------------
New:
----
swig-4.1.0.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ graphviz.spec ++++++
--- /var/tmp/diff_new_pack.uuRcpt/_old 2022-10-25 11:18:54.069989531 +0200
+++ /var/tmp/diff_new_pack.uuRcpt/_new 2022-10-25 11:18:54.073989540 +0200
@@ -81,6 +81,8 @@
Patch4: graphviz-useless_warnings.patch
Patch5: graphviz-no_strict_aliasing.patch
Patch6: graphviz-no_php_extra_libs.patch
+# https://gitlab.com/graphviz/graphviz/-/issues/2303
+Patch7: swig-4.1.0.patch
BuildRequires: autoconf
BuildRequires: automake
@@ -412,6 +414,7 @@
%patch4
%patch5 -p1
%patch6
+%patch7 -p1
# pkg-config returns 0 (TRUE) when guile-2.2 is present
if pkg-config --atleast-version=2.2 guile-2.2; then
++++++ swig-4.1.0.patch ++++++
diff --git a/tclpkg/gv/gv.i b/tclpkg/gv/gv.i
index ea65ada2f..0bab8817f 100644
--- a/tclpkg/gv/gv.i
+++ b/tclpkg/gv/gv.i
@@ -10,6 +10,13 @@
%module gv
+#ifdef SWIGPHP
+%pragma(php) code="/*
+This is a deprecated interface.
+Load graphviz via PHP's C API in php.ini instead.
+*/"
+#endif
+
#ifdef SWIGTCL
// A typemap telling SWIG to ignore an argument for input
// However, we still need to pass a pointer to the C function
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gnome-maps for openSUSE:Factory checked in at 2022-10-25 11:18:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-maps (Old)
and /work/SRC/openSUSE:Factory/.gnome-maps.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-maps"
Tue Oct 25 11:18:40 2022 rev:74 rq:1030680 version:43.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-maps/gnome-maps.changes 2022-09-21 14:41:06.177533731 +0200
+++ /work/SRC/openSUSE:Factory/.gnome-maps.new.2275/gnome-maps.changes 2022-10-25 11:18:52.313985639 +0200
@@ -1,0 +2,17 @@
+Sat Oct 22 11:32:16 UTC 2022 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 43.1:
+ + Fixing various issues left after the GTK 4 port.
+ + Fix setting adaptive narrow (phone) mode on first launch on
+ portrait displays.
+ + Fix dragging-and-dropping route entris in the sidebar.
+ + Fix opening shapelayer files when dragged-and-dropped onto the
+ main window.
+ + Fix selecting turnpoint instructions showing the position of
+ the instruction on the map.
+ + Fix local tiles (using the --local command-line option).
+ + Fix location service dialog.
+ + Fix send-to dialog.
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
gnome-maps-43.0.tar.xz
New:
----
gnome-maps-43.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-maps.spec ++++++
--- /var/tmp/diff_new_pack.t9TC2r/_old 2022-10-25 11:18:52.725986552 +0200
+++ /var/tmp/diff_new_pack.t9TC2r/_new 2022-10-25 11:18:52.733986570 +0200
@@ -17,7 +17,7 @@
Name: gnome-maps
-Version: 43.0
+Version: 43.1
Release: 0
Summary: Maps Application for GNOME
License: GPL-2.0-or-later
++++++ gnome-maps-43.0.tar.xz -> gnome-maps-43.1.tar.xz ++++++
++++ 18445 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libshumate for openSUSE:Factory checked in at 2022-10-25 11:18:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libshumate (Old)
and /work/SRC/openSUSE:Factory/.libshumate.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libshumate"
Tue Oct 25 11:18:39 2022 rev:4 rq:1030679 version:1.0.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/libshumate/libshumate.changes 2022-10-14 15:40:20.343697957 +0200
+++ /work/SRC/openSUSE:Factory/.libshumate.new.2275/libshumate.changes 2022-10-25 11:18:51.365983538 +0200
@@ -1,0 +2,9 @@
+Sat Oct 22 11:29:40 UTC 2022 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 1.0.2:
+ + Avoid flickering when panning the map.
+ + Fix warnings about min/max zoom levels for the viewport.
+ + Fix documentation comments.
+ + Fix cross-compilation for gi-docgen.
+
+-------------------------------------------------------------------
Old:
----
libshumate-1.0.1.obscpio
New:
----
libshumate-1.0.2.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libshumate.spec ++++++
--- /var/tmp/diff_new_pack.WNWtOG/_old 2022-10-25 11:18:51.917984761 +0200
+++ /var/tmp/diff_new_pack.WNWtOG/_new 2022-10-25 11:18:51.921984770 +0200
@@ -21,7 +21,7 @@
%define soname libshumate-%{somajor}_%{sominor}-1
Name: libshumate
-Version: 1.0.1
+Version: 1.0.2
Release: 0
Summary: C library providing a GtkWidget to display maps
License: LGPL-2.1-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.WNWtOG/_old 2022-10-25 11:18:51.953984842 +0200
+++ /var/tmp/diff_new_pack.WNWtOG/_new 2022-10-25 11:18:51.957984850 +0200
@@ -4,7 +4,7 @@
<param name="url">https://gitlab.gnome.org/GNOME/libshumate.git</param>
<param name="scm">git</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
- <param name="revision">refs/tags/1.0.1</param>
+ <param name="revision">refs/tags/1.0.2</param>
<param name="versionrewrite-pattern">(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
</service>
++++++ libshumate-1.0.1.obscpio -> libshumate-1.0.2.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/NEWS new/libshumate-1.0.2/NEWS
--- old/libshumate-1.0.1/NEWS 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/NEWS 2022-10-22 12:26:42.000000000 +0200
@@ -1,4 +1,12 @@
=====================
+Version 1.0.2
+=====================
+ - Avoid flickering when panning the map
+ - Fix warnings about min/max zoom levels for the viewport
+ - Fix documentation comments
+ - Fix cross-compilation for gi-docgen
+
+=====================
Version 1.0.1
=====================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/meson.build new/libshumate-1.0.2/meson.build
--- old/libshumate-1.0.1/meson.build 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/meson.build 2022-10-22 12:26:42.000000000 +0200
@@ -1,6 +1,6 @@
project(
'libshumate', 'c',
- version: '1.0.1',
+ version: '1.0.2',
license: 'LGPLv2.1+',
meson_version: '>= 0.53.0',
default_options: [
@@ -81,6 +81,7 @@
dependency('gi-docgen',
version: '>= 2021.1',
fallback: ['gi-docgen', 'dummy_dep'],
+ native : true,
)
gidocgen = find_program('gi-docgen')
endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/po/LINGUAS new/libshumate-1.0.2/po/LINGUAS
--- old/libshumate-1.0.1/po/LINGUAS 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/po/LINGUAS 2022-10-22 12:26:42.000000000 +0200
@@ -17,6 +17,7 @@
hr
hu
id
+it
ka
kk
ko
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/po/it.po new/libshumate-1.0.2/po/it.po
--- old/libshumate-1.0.1/po/it.po 1970-01-01 01:00:00.000000000 +0100
+++ new/libshumate-1.0.2/po/it.po 2022-10-22 12:26:42.000000000 +0200
@@ -0,0 +1,42 @@
+# Italian translation for libshumate.
+# Copyright (C) 2022 libshumate's COPYRIGHT HOLDER
+# This file is distributed under the same license as the libshumate package.
+# Davide Ferracin <davide.ferracin(a)protonmail.com>, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libshumate main\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libshumate/issues\n"
+"POT-Creation-Date: 2022-09-20 11:54+0000\n"
+"PO-Revision-Date: 2022-09-21 15:53+0200\n"
+"Last-Translator: Davide Ferracin <davide.ferracin(a)protonmail.com>\n"
+"Language-Team: Italian <gnome-it-list(a)gnome.org>\n"
+"Language: it\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"
+
+#. m is the unit for meters
+#: shumate/shumate-scale.c:197
+#, c-format
+msgid "%d��m"
+msgstr "%d��m"
+
+#. km is the unit for kilometers
+#: shumate/shumate-scale.c:200
+#, c-format
+msgid "%d��km"
+msgstr "%d��km"
+
+#. ft is the unit for feet
+#: shumate/shumate-scale.c:206
+#, c-format
+msgid "%d��ft"
+msgstr "%d��ft"
+
+#. mi is the unit for miles
+#: shumate/shumate-scale.c:209
+#, c-format
+msgid "%d��mi"
+msgstr "%d��mi"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/shumate/shumate-file-cache.h new/libshumate-1.0.2/shumate/shumate-file-cache.h
--- old/libshumate-1.0.1/shumate/shumate-file-cache.h 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/shumate/shumate-file-cache.h 2022-10-22 12:26:42.000000000 +0200
@@ -57,12 +57,12 @@
const char *cache_key,
const char *cache_dir);
-guint shumate_file_cache_get_size_limit (ShumateFileCache *file_cache);
-void shumate_file_cache_set_size_limit (ShumateFileCache *file_cache,
+guint shumate_file_cache_get_size_limit (ShumateFileCache *self);
+void shumate_file_cache_set_size_limit (ShumateFileCache *self,
guint size_limit);
-const char *shumate_file_cache_get_cache_dir (ShumateFileCache *file_cache);
-const char *shumate_file_cache_get_cache_key (ShumateFileCache *file_cache);
+const char *shumate_file_cache_get_cache_dir (ShumateFileCache *self);
+const char *shumate_file_cache_get_cache_key (ShumateFileCache *self);
void shumate_file_cache_purge_cache_async (ShumateFileCache *self,
GCancellable *cancellable,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/shumate/shumate-map-layer.c new/libshumate-1.0.2/shumate/shumate-map-layer.c
--- old/libshumate-1.0.1/shumate/shumate-map-layer.c 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/shumate/shumate-map-layer.c 2022-10-22 12:26:42.000000000 +0200
@@ -39,14 +39,12 @@
ShumateMapSource *map_source;
GHashTable *tile_children;
- int tile_initial_row;
- int tile_initial_column;
- int required_tiles_rows;
- int required_tiles_columns;
GHashTable *tile_fill;
guint recompute_grid_idle_id;
+ float last_recompute_x, last_recompute_y;
+
ShumateMemoryCache *memcache;
#ifdef SHUMATE_HAS_VECTOR_RENDERER
@@ -286,11 +284,12 @@
);
// This is the (column, row) of the top left tile
- int tile_initial_column = floor ((longitude_x - size_x) / (double) tile_size);
- int tile_initial_row = floor ((latitude_y - size_y) / (double) tile_size);
-
- int required_columns = (size_x * 2 / tile_size) + 2;
- int required_rows = (size_y * 2 / tile_size) + 2;
+ int tile_initial_column = floor ((longitude_x - size_x) / (double) tile_size) - 1;
+ int tile_initial_row = floor ((latitude_y - size_y) / (double) tile_size) - 1;
+ int tile_final_column = ceil ((longitude_x + size_x) / (double) tile_size) + 1;
+ int tile_final_row = ceil ((latitude_y + size_y) / (double) tile_size) + 1;
+ int required_columns = tile_final_column - tile_initial_column;
+ int required_rows = tile_final_row - tile_initial_row;
gboolean all_filled = TRUE;
@@ -314,8 +313,7 @@
}
}
- /* Next, make sure every visible tile position has a matching ShumateTile
- * widget. */
+ /* Next, make sure every visible tile position has a matching ShumateTile. */
for (int x = tile_initial_column; x < tile_initial_column + required_columns; x ++)
{
for (int y = tile_initial_row; y < tile_initial_row + required_rows; y ++)
@@ -352,10 +350,8 @@
}
}
- self->tile_initial_column = tile_initial_column;
- self->tile_initial_row = tile_initial_row;
- self->required_tiles_columns = required_columns;
- self->required_tiles_rows = required_rows;
+ self->last_recompute_y = latitude_y / (double) (tile_size * source_rows);
+ self->last_recompute_x = longitude_x / (double) (tile_size * source_columns);
gtk_widget_queue_draw (GTK_WIDGET (self));
}
@@ -540,6 +536,14 @@
}
}
+static double
+snap_coordinate (double point,
+ double translate,
+ double size)
+{
+ return round ((point - translate) / size) * size + translate;
+}
+
static void
shumate_map_layer_snapshot (GtkWidget *widget, GtkSnapshot *snapshot)
{
@@ -554,15 +558,46 @@
double latitude_y = shumate_map_source_get_y (self->map_source, zoom_level, latitude);
double longitude_x = shumate_map_source_get_x (self->map_source, zoom_level, longitude);
int tile_size = shumate_map_source_get_tile_size (self->map_source);
+ double tile_size_for_zoom = shumate_map_source_get_tile_size_at_zoom (self->map_source, zoom_level);
+ double map_width = shumate_map_source_get_column_count (self->map_source, zoom_level)
+ * tile_size_for_zoom;
+ double map_height = shumate_map_source_get_row_count (self->map_source, zoom_level)
+ * tile_size_for_zoom;
GHashTableIter iter;
gpointer key;
gpointer value;
+ /* Because Earth is round [citation needed], cylindrical projections like
+ * Mercator wrap around at the antimeridian. Moving across the antimeridian
+ * is the same as teleporting across the world: at one frame the longitude
+ * is just less than 180, and the next it's just more than -180.
+ *
+ * ShumateMapLayer doesn't handle teleportation well. Widgets can only be
+ * added/removed between frames, but animations are calculated during the
+ * frame. This means that by the time we know about the new viewport location,
+ * it's too late to move tiles around. recompute_grid(), which will fix the
+ * problem, won't be called until after the current frame.
+ *
+ * To fix this, recompute_grid() remembers the most recent location
+ * it saw. Then, to reduce "teleportation", here in snapshot() we render
+ * the "copy" of the new location that is closest to the one from
+ * recompute_grid(). This just means snapping the current location to a grid
+ * translated by the old location.
+ * */
+ longitude_x = snap_coordinate (self->last_recompute_x * map_width, longitude_x, map_width);
+ latitude_y = snap_coordinate (self->last_recompute_y * map_height, latitude_y, map_height);
+
/* Scale and rotate around the center of the view */
gtk_snapshot_save (snapshot);
gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (width / 2.0, height / 2.0));
gtk_snapshot_rotate (snapshot, rotation * 180 / G_PI);
+
+#define SHUMATE_DEBUG_MAP_LAYER 0
+#if SHUMATE_DEBUG_MAP_LAYER
+ gtk_snapshot_scale (snapshot, 0.5, 0.5);
+#endif
+
gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (-width / 2.0, -height / 2.0));
g_hash_table_iter_init (&iter, self->tile_children);
@@ -592,6 +627,17 @@
gtk_snapshot_restore (snapshot);
+#if SHUMATE_DEBUG_MAP_LAYER
+ float border_width[] = { 3, 3, 3, 3 };
+ GdkRGBA colors[4] = {
+ { 0, 0, 0, 1 },
+ { 0, 0, 0, 1 },
+ { 0, 0, 0, 1 },
+ { 0, 0, 0, 1 },
+ };
+ gtk_snapshot_append_border (snapshot, &GSK_ROUNDED_RECT_INIT (width * 0.25, height * 0.25, width * 0.5, height * 0.5), border_width, colors);
+#endif
+
#ifdef SHUMATE_HAS_VECTOR_RENDERER
gtk_widget_snapshot_child (widget, GTK_WIDGET (self->symbols), snapshot);
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/shumate/shumate-marker-layer.c new/libshumate-1.0.2/shumate/shumate-marker-layer.c
--- old/libshumate-1.0.1/shumate/shumate-marker-layer.c 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/shumate/shumate-marker-layer.c 2022-10-22 12:26:42.000000000 +0200
@@ -372,9 +372,9 @@
* shumate_marker_layer_new:
* @viewport: the @ShumateViewport
*
- * Creates a new instance of #ShumateMarkerLayer.
+ * Creates a new instance of [class@MarkerLayer].
*
- * Returns: a new #ShumateMarkerLayer ready to be used as a container for the markers.
+ * Returns: a new [class@MarkerLayer] ready to be used as a container for the markers.
*/
ShumateMarkerLayer *
shumate_marker_layer_new (ShumateViewport *viewport)
@@ -390,9 +390,9 @@
* @viewport: the @ShumateViewport
* @mode: Selection mode
*
- * Creates a new instance of #ShumateMarkerLayer with the specified selection mode.
+ * Creates a new instance of [class@MarkerLayer] with the specified selection mode.
*
- * Returns: a new #ShumateMarkerLayer ready to be used as a container for the markers.
+ * Returns: a new [class@MarkerLayer] ready to be used as a container for the markers.
*/
ShumateMarkerLayer *
shumate_marker_layer_new_full (ShumateViewport *viewport,
@@ -440,52 +440,52 @@
/**
* shumate_marker_layer_add_marker:
- * @layer: a #ShumateMarkerLayer
- * @marker: a #ShumateMarker
+ * @self: a [class@MarkerLayer]
+ * @marker: a [class@Marker]
*
* Adds the marker to the layer.
*/
void
-shumate_marker_layer_add_marker (ShumateMarkerLayer *layer,
+shumate_marker_layer_add_marker (ShumateMarkerLayer *self,
ShumateMarker *marker)
{
- g_return_if_fail (SHUMATE_IS_MARKER_LAYER (layer));
+ g_return_if_fail (SHUMATE_IS_MARKER_LAYER (self));
g_return_if_fail (SHUMATE_IS_MARKER (marker));
g_signal_connect_object (G_OBJECT (marker), "notify::latitude",
- G_CALLBACK (marker_position_notify), layer, 0);
+ G_CALLBACK (marker_position_notify), self, 0);
g_signal_connect_object (G_OBJECT (marker), "notify::longitude",
- G_CALLBACK (marker_position_notify), layer, 0);
+ G_CALLBACK (marker_position_notify), self, 0);
/*g_signal_connect (G_OBJECT (marker), "drag-motion",
G_CALLBACK (marker_move_by_cb), layer);*/
shumate_marker_set_selected (marker, FALSE);
- gtk_widget_insert_before (GTK_WIDGET(marker), GTK_WIDGET (layer), NULL);
- update_marker_visibility (layer, marker);
+ gtk_widget_insert_before (GTK_WIDGET(marker), GTK_WIDGET (self), NULL);
+ update_marker_visibility (self, marker);
}
/**
* shumate_marker_layer_remove_all:
- * @layer: a #ShumateMarkerLayer
+ * @self: a [class@MarkerLayer]
*
* Removes all markers from the layer.
*/
void
-shumate_marker_layer_remove_all (ShumateMarkerLayer *layer)
+shumate_marker_layer_remove_all (ShumateMarkerLayer *self)
{
GtkWidget *child;
- g_return_if_fail (SHUMATE_IS_MARKER_LAYER (layer));
+ g_return_if_fail (SHUMATE_IS_MARKER_LAYER (self));
- child = gtk_widget_get_first_child (GTK_WIDGET (layer));
+ child = gtk_widget_get_first_child (GTK_WIDGET (self));
while (child)
{
GtkWidget *next = gtk_widget_get_next_sibling (child);
- g_signal_handlers_disconnect_by_data (child, layer);
+ g_signal_handlers_disconnect_by_data (child, self);
gtk_widget_unparent (child);
child = next;
@@ -495,7 +495,7 @@
/**
* shumate_marker_layer_get_markers:
- * @layer: a #ShumateMarkerLayer
+ * @self: a [class@MarkerLayer]
*
* Gets a copy of the list of all markers inserted into the layer. You should
* free the list but not its contents.
@@ -503,14 +503,14 @@
* Returns: (transfer container) (element-type ShumateMarker): the list
*/
GList *
-shumate_marker_layer_get_markers (ShumateMarkerLayer *layer)
+shumate_marker_layer_get_markers (ShumateMarkerLayer *self)
{
GList *list = NULL;
GtkWidget *child;
- g_return_val_if_fail (SHUMATE_IS_MARKER_LAYER (layer), NULL);
+ g_return_val_if_fail (SHUMATE_IS_MARKER_LAYER (self), NULL);
- for (child = gtk_widget_get_last_child (GTK_WIDGET (layer));
+ for (child = gtk_widget_get_last_child (GTK_WIDGET (self));
child != NULL;
child = gtk_widget_get_prev_sibling (child))
{
@@ -524,7 +524,7 @@
/**
* shumate_marker_layer_get_selected:
- * @layer: a #ShumateMarkerLayer
+ * @self: a [class@MarkerLayer]
*
* Gets a list of selected markers in the layer.
*
@@ -540,12 +540,12 @@
/**
* shumate_marker_layer_select_marker:
- * @self: a #ShumateMarkerLayer
- * @marker: a #ShumateMarker that is a child of @self
+ * @self: a [class@MarkerLayer]
+ * @marker: a [class@Marker] that is a child of @self
*
* Selects a marker in this layer.
*
- * If #ShumateMarkerLayer:selection-mode is %GTK_SELECTION_SINGLE or
+ * If [class@MarkerLayer]:selection-mode is %GTK_SELECTION_SINGLE or
* %GTK_SELECTION_BROWSE, all other markers will be unselected. If the mode is
* %GTK_SELECTION_NONE or @marker is not selectable, nothing will happen.
*
@@ -589,12 +589,12 @@
/**
* shumate_marker_layer_unselect_marker:
- * @self: a #ShumateMarkerLayer
- * @marker: a #ShumateMarker that is a child of @self
+ * @self: a [class@MarkerLayer]
+ * @marker: a [class@Marker] that is a child of @self
*
* Unselects a marker in this layer.
*
- * This works even if #ShumateMarkerLayer:selection-mode is
+ * This works even if [class@MarkerLayer]:selection-mode is
* %GTK_SELECTION_BROWSE. Browse mode only prevents user interaction, not the
* program, from unselecting a marker.
*/
@@ -618,8 +618,8 @@
/**
* shumate_marker_layer_remove_marker:
- * @self: a #ShumateMarkerLayer
- * @marker: a #ShumateMarker
+ * @self: a [class@MarkerLayer]
+ * @marker: a [class@Marker]
*
* Removes the marker from the layer.
*/
@@ -647,7 +647,7 @@
/**
* shumate_marker_layer_unselect_all_markers:
- * @layer: a #ShumateMarkerLayer
+ * @self: a [class@MarkerLayer]
*
* Unselects all markers in the layer.
*/
@@ -668,7 +668,7 @@
/**
* shumate_marker_layer_select_all_markers:
- * @layer: a #ShumateMarkerLayer
+ * @self: a [class@MarkerLayer]
*
* Selects all selectable markers in the layer.
*/
@@ -689,8 +689,8 @@
/**
* shumate_marker_layer_set_selection_mode:
- * @self: a #ShumateMarkerLayer
- * @mode: a #GtkSelectionMode value
+ * @self: a [class@MarkerLayer]
+ * @mode: a [enum(a)Gtk.SelectionMode] value
*
* Sets the selection mode of the layer.
*
@@ -717,7 +717,7 @@
/**
* shumate_marker_layer_get_selection_mode:
- * @self: a #ShumateMarkerLayer
+ * @self: a [class@MarkerLayer]
*
* Gets the selection mode of the layer.
*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/shumate/shumate-marker-layer.h new/libshumate-1.0.2/shumate/shumate-marker-layer.h
--- old/libshumate-1.0.1/shumate/shumate-marker-layer.h 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/shumate/shumate-marker-layer.h 2022-10-22 12:26:42.000000000 +0200
@@ -41,22 +41,22 @@
ShumateMarkerLayer *shumate_marker_layer_new_full (ShumateViewport *viewport,
GtkSelectionMode mode);
-void shumate_marker_layer_add_marker (ShumateMarkerLayer *layer,
+void shumate_marker_layer_add_marker (ShumateMarkerLayer *self,
ShumateMarker *marker);
-void shumate_marker_layer_remove_marker (ShumateMarkerLayer *layer,
+void shumate_marker_layer_remove_marker (ShumateMarkerLayer *self,
ShumateMarker *marker);
-void shumate_marker_layer_remove_all (ShumateMarkerLayer *layer);
-GList *shumate_marker_layer_get_markers (ShumateMarkerLayer *layer);
-GList *shumate_marker_layer_get_selected (ShumateMarkerLayer *layer);
+void shumate_marker_layer_remove_all (ShumateMarkerLayer *self);
+GList *shumate_marker_layer_get_markers (ShumateMarkerLayer *self);
+GList *shumate_marker_layer_get_selected (ShumateMarkerLayer *self);
gboolean shumate_marker_layer_select_marker (ShumateMarkerLayer *self, ShumateMarker *marker);
void shumate_marker_layer_unselect_marker (ShumateMarkerLayer *self, ShumateMarker *marker);
-void shumate_marker_layer_select_all_markers (ShumateMarkerLayer *layer);
-void shumate_marker_layer_unselect_all_markers (ShumateMarkerLayer *layer);
+void shumate_marker_layer_select_all_markers (ShumateMarkerLayer *self);
+void shumate_marker_layer_unselect_all_markers (ShumateMarkerLayer *self);
-void shumate_marker_layer_set_selection_mode (ShumateMarkerLayer *layer,
+void shumate_marker_layer_set_selection_mode (ShumateMarkerLayer *self,
GtkSelectionMode mode);
-GtkSelectionMode shumate_marker_layer_get_selection_mode (ShumateMarkerLayer *layer);
+GtkSelectionMode shumate_marker_layer_get_selection_mode (ShumateMarkerLayer *self);
G_END_DECLS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/shumate/shumate-path-layer.c new/libshumate-1.0.2/shumate/shumate-path-layer.c
--- old/libshumate-1.0.1/shumate/shumate-path-layer.c 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/shumate/shumate-path-layer.c 2022-10-22 12:26:42.000000000 +0200
@@ -24,9 +24,9 @@
* A layer displaying line path between inserted [iface@Location] objects
*
* This layer shows a connection between inserted objects implementing the
- * [iface@Location] interface. This means that both #ShumateMarker
+ * [iface@Location] interface. This means that both [class@Marker]
* objects and [class@Coordinate] objects can be inserted into the layer.
- * Of course, custom objects implementing the #ShumateLocation interface
+ * Of course, custom objects implementing the [iface@Location] interface
* can be used as well.
*/
@@ -432,11 +432,11 @@
/**
* shumate_path_layer_new:
- * @viewport: the @ShumateViewport
+ * @viewport: the [class@Viewport]
*
- * Creates a new instance of #ShumatePathLayer.
+ * Creates a new instance of [class@PathLayer].
*
- * Returns: a new instance of #ShumatePathLayer.
+ * Returns: a new instance of [class@PathLayer].
*/
ShumatePathLayer *
shumate_path_layer_new (ShumateViewport *viewport)
@@ -473,10 +473,10 @@
/**
* shumate_path_layer_add_node:
- * @self: a #ShumatePathLayer
- * @location: a #ShumateLocation
+ * @self: a [class@PathLayer]
+ * @location: a [iface@Location]
*
- * Adds a #ShumateLocation object to the layer.
+ * Adds a [iface@Location] object to the layer.
* The node is prepended to the list.
*/
void
@@ -492,9 +492,9 @@
/**
* shumate_path_layer_remove_all:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
- * Removes all #ShumateLocation objects from the layer.
+ * Removes all [iface@Location] objects from the layer.
*/
void
shumate_path_layer_remove_all (ShumatePathLayer *self)
@@ -520,9 +520,9 @@
/**
* shumate_path_layer_get_nodes:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
- * Gets a copy of the list of all #ShumateLocation objects inserted into the layer. You should
+ * Gets a copy of the list of all [iface@Location] objects inserted into the layer. You should
* free the list but not its contents.
*
* Returns: (transfer container) (element-type ShumateLocation): the list
@@ -540,10 +540,10 @@
/**
* shumate_path_layer_remove_node:
- * @self: a #ShumatePathLayer
- * @location: a #ShumateLocation
+ * @self: a [class@PathLayer]
+ * @location: a [iface@Location]
*
- * Removes the #ShumateLocation object from the layer.
+ * Removes the [iface@Location] object from the layer.
*/
void
shumate_path_layer_remove_node (ShumatePathLayer *self,
@@ -561,11 +561,11 @@
/**
* shumate_path_layer_insert_node:
- * @self: a #ShumatePathLayer
- * @location: a #ShumateLocation
- * @position: position in the list where the #ShumateLocation object should be inserted
+ * @self: a [class@PathLayer]
+ * @location: a [iface@Location]
+ * @position: position in the list where the [iface@Location] object should be inserted
*
- * Inserts a #ShumateLocation object to the specified position.
+ * Inserts a [iface@Location] object to the specified position.
*/
void
shumate_path_layer_insert_node (ShumatePathLayer *self,
@@ -580,7 +580,7 @@
/**
* shumate_path_layer_set_fill_color:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
* @color: (nullable): The path's fill color or %NULL to reset to the
* default color. The color parameter is copied.
*
@@ -607,7 +607,7 @@
/**
* shumate_path_layer_get_fill_color:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
* Gets the path's fill color.
*
@@ -624,7 +624,7 @@
/**
* shumate_path_layer_set_stroke_color:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
* @color: (nullable): The path's stroke color or %NULL to reset to the
* default color. The color parameter is copied.
*
@@ -651,7 +651,7 @@
/**
* shumate_path_layer_get_stroke_color:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
* Gets the path's stroke color.
*
@@ -667,7 +667,7 @@
/**
* shumate_path_layer_set_outline_color:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
* @color: (nullable): The path's outline color or %NULL to reset to the
* default color. The color parameter is copied.
*
@@ -693,7 +693,7 @@
/**
* shumate_path_layer_get_outline_color:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
* Gets the path's outline color.
*
@@ -709,7 +709,7 @@
/**
* shumate_path_layer_set_stroke:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
* @value: if the path is stroked
*
* Sets the path to be stroked
@@ -729,7 +729,7 @@
/**
* shumate_path_layer_get_stroke:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
* Checks whether the path is stroked.
*
@@ -746,7 +746,7 @@
/**
* shumate_path_layer_set_fill:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
* @value: if the path is filled
*
* Sets the path to be filled
@@ -766,7 +766,7 @@
/**
* shumate_path_layer_get_fill:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
* Checks whether the path is filled.
*
@@ -783,7 +783,7 @@
/**
* shumate_path_layer_set_stroke_width:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
* @value: the width of the stroke (in pixels)
*
* Sets the width of the stroke
@@ -803,7 +803,7 @@
/**
* shumate_path_layer_get_stroke_width:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
* Gets the width of the stroke.
*
@@ -819,7 +819,7 @@
/**
* shumate_path_layer_set_outline_width:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
* @value: the width of the outline (in pixels)
*
* Sets the width of the outline
@@ -839,7 +839,7 @@
/**
* shumate_path_layer_get_outline_width:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
* Gets the width of the outline.
*
@@ -855,7 +855,7 @@
/**
* shumate_path_layer_set_closed:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
* @value: %TRUE to make the path closed
*
* Makes the path closed.
@@ -875,7 +875,7 @@
/**
* shumate_path_layer_get_closed:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
* Gets information whether the path is closed.
*
@@ -892,7 +892,7 @@
/**
* shumate_path_layer_set_dash:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
* @dash_pattern: (element-type guint): list of integer values representing lengths
* of dashes/spaces (see cairo documentation of cairo_set_dash())
*
@@ -924,7 +924,7 @@
/**
* shumate_path_layer_get_dash:
- * @self: a #ShumatePathLayer
+ * @self: a [class@PathLayer]
*
* Returns the list of dash segment lengths.
*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/shumate/shumate-path-layer.h new/libshumate-1.0.2/shumate/shumate-path-layer.h
--- old/libshumate-1.0.1/shumate/shumate-path-layer.h 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/shumate/shumate-path-layer.h 2022-10-22 12:26:42.000000000 +0200
@@ -38,50 +38,50 @@
ShumatePathLayer *shumate_path_layer_new (ShumateViewport *viewport);
-void shumate_path_layer_add_node (ShumatePathLayer *layer,
+void shumate_path_layer_add_node (ShumatePathLayer *self,
ShumateLocation *location);
-void shumate_path_layer_remove_node (ShumatePathLayer *layer,
+void shumate_path_layer_remove_node (ShumatePathLayer *self,
ShumateLocation *location);
-void shumate_path_layer_remove_all (ShumatePathLayer *layer);
-void shumate_path_layer_insert_node (ShumatePathLayer *layer,
+void shumate_path_layer_remove_all (ShumatePathLayer *self);
+void shumate_path_layer_insert_node (ShumatePathLayer *self,
ShumateLocation *location,
guint position);
-GList *shumate_path_layer_get_nodes (ShumatePathLayer *layer);
+GList *shumate_path_layer_get_nodes (ShumatePathLayer *self);
-GdkRGBA *shumate_path_layer_get_fill_color (ShumatePathLayer *layer);
-void shumate_path_layer_set_fill_color (ShumatePathLayer *layer,
+GdkRGBA *shumate_path_layer_get_fill_color (ShumatePathLayer *self);
+void shumate_path_layer_set_fill_color (ShumatePathLayer *self,
const GdkRGBA *color);
-GdkRGBA *shumate_path_layer_get_stroke_color (ShumatePathLayer *layer);
-void shumate_path_layer_set_stroke_color (ShumatePathLayer *layer,
+GdkRGBA *shumate_path_layer_get_stroke_color (ShumatePathLayer *self);
+void shumate_path_layer_set_stroke_color (ShumatePathLayer *self,
const GdkRGBA *color);
-GdkRGBA *shumate_path_layer_get_outline_color (ShumatePathLayer *layer);
-void shumate_path_layer_set_outline_color (ShumatePathLayer *layer,
+GdkRGBA *shumate_path_layer_get_outline_color (ShumatePathLayer *self);
+void shumate_path_layer_set_outline_color (ShumatePathLayer *self,
const GdkRGBA *color);
-gboolean shumate_path_layer_get_fill (ShumatePathLayer *layer);
-void shumate_path_layer_set_fill (ShumatePathLayer *layer,
+gboolean shumate_path_layer_get_fill (ShumatePathLayer *self);
+void shumate_path_layer_set_fill (ShumatePathLayer *self,
gboolean value);
-gboolean shumate_path_layer_get_stroke (ShumatePathLayer *layer);
-void shumate_path_layer_set_stroke (ShumatePathLayer *layer,
+gboolean shumate_path_layer_get_stroke (ShumatePathLayer *self);
+void shumate_path_layer_set_stroke (ShumatePathLayer *self,
gboolean value);
-double shumate_path_layer_get_stroke_width (ShumatePathLayer *layer);
-void shumate_path_layer_set_stroke_width (ShumatePathLayer *layer,
+double shumate_path_layer_get_stroke_width (ShumatePathLayer *self);
+void shumate_path_layer_set_stroke_width (ShumatePathLayer *self,
double value);
-double shumate_path_layer_get_outline_width (ShumatePathLayer *layer);
-void shumate_path_layer_set_outline_width (ShumatePathLayer *layer,
+double shumate_path_layer_get_outline_width (ShumatePathLayer *self);
+void shumate_path_layer_set_outline_width (ShumatePathLayer *self,
double value);
-gboolean shumate_path_layer_get_closed (ShumatePathLayer *layer);
-void shumate_path_layer_set_closed (ShumatePathLayer *layer,
+gboolean shumate_path_layer_get_closed (ShumatePathLayer *self);
+void shumate_path_layer_set_closed (ShumatePathLayer *self,
gboolean value);
-GList *shumate_path_layer_get_dash (ShumatePathLayer *layer);
-void shumate_path_layer_set_dash (ShumatePathLayer *layer,
+GList *shumate_path_layer_get_dash (ShumatePathLayer *self);
+void shumate_path_layer_set_dash (ShumatePathLayer *self,
GList *dash_pattern);
G_END_DECLS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/shumate/shumate-tile-downloader.c new/libshumate-1.0.2/shumate/shumate-tile-downloader.c
--- old/libshumate-1.0.1/shumate/shumate-tile-downloader.c 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/shumate/shumate-tile-downloader.c 2022-10-22 12:26:42.000000000 +0200
@@ -23,10 +23,10 @@
/**
* ShumateTileDownloader:
*
- * A [class(a)Shumate.DataSource] that asynchronously downloads tiles from an online
+ * A [class@DataSource] that asynchronously downloads tiles from an online
* service using a given template.
*
- * It contains an internal [class(a)Shumate.FileCache] to cache the tiles on the system.
+ * It contains an internal [class@FileCache] to cache the tiles on the system.
*/
struct _ShumateTileDownloader
@@ -163,10 +163,10 @@
* A template for construting the URL to download a tile from.
*
* The template has the following replacements:
- * - "#X#": The X coordinate of the tile
- * - "#Y#": The Y coordinate of the tile
- * - "#Z#": The zoom level of the tile
- * - "#TMSY#": The inverted Y coordinate (i.e. tile numbering starts with 0 at
+ * - "{x}": The X coordinate of the tile
+ * - "{y}": The Y coordinate of the tile
+ * - "{z}": The zoom level of the tile
+ * - "{tmsy}": The inverted Y coordinate (i.e. tile numbering starts with 0 at
* the bottom, rather than top, of the map)
*/
properties[PROP_URL_TEMPLATE] =
@@ -231,7 +231,6 @@
}
-#define SIZE 8
static char *
get_tile_uri (ShumateTileDownloader *self,
int x,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/shumate/shumate-vector-renderer.c new/libshumate-1.0.2/shumate/shumate-vector-renderer.c
--- old/libshumate-1.0.1/shumate/shumate-vector-renderer.c 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/shumate/shumate-vector-renderer.c 2022-10-22 12:26:42.000000000 +0200
@@ -22,7 +22,7 @@
/**
* ShumateVectorRenderer:
*
- * A [class(a)Shumate.MapSource] that renders tiles from a given vector data source.
+ * A [class@MapSource] that renders tiles from a given vector data source.
*/
#ifdef SHUMATE_HAS_VECTOR_RENDERER
@@ -434,7 +434,7 @@
/**
* shumate_vector_renderer_set_sprite_sheet_data:
* @self: a [class@VectorRenderer]
- * @sprites_pixbuf: a [class(a)Gdk.Pixbuf]
+ * @sprites_pixbuf: a [class(a)GdkPixbuf.Pixbuf]
* @sprites_json: a JSON string
* @error: return location for a #GError, or %NULL
*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/shumate/shumate-viewport.c new/libshumate-1.0.2/shumate/shumate-viewport.c
--- old/libshumate-1.0.1/shumate/shumate-viewport.c 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/shumate/shumate-viewport.c 2022-10-22 12:26:42.000000000 +0200
@@ -36,6 +36,9 @@
* accessible via the interface methods.
*/
+#define DEFAULT_MIN_ZOOM 0
+#define DEFAULT_MAX_ZOOM 20
+
struct _ShumateViewport
{
GObject parent_instance;
@@ -237,7 +240,7 @@
g_param_spec_uint ("min-zoom-level",
"Min zoom level",
"The lowest allowed level of zoom",
- 0, 20, 0,
+ 0, 20, DEFAULT_MIN_ZOOM,
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/**
@@ -249,7 +252,7 @@
g_param_spec_uint ("max-zoom-level",
"Max zoom level",
"The highest allowed level of zoom",
- 0, 20, 20,
+ 0, 20, DEFAULT_MAX_ZOOM,
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/**
@@ -292,6 +295,10 @@
static void
shumate_viewport_init (ShumateViewport *self)
{
+ /* We need to set these here, otherwise the max_zoom >= min_zoom check in
+ * the setter functions may fail if they're not called in the right order. */
+ self->min_zoom_level = DEFAULT_MIN_ZOOM;
+ self->max_zoom_level = DEFAULT_MAX_ZOOM;
}
static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libshumate-1.0.1/tests/viewport.c new/libshumate-1.0.2/tests/viewport.c
--- old/libshumate-1.0.1/tests/viewport.c 2022-09-18 21:40:56.000000000 +0200
+++ new/libshumate-1.0.2/tests/viewport.c 2022-10-22 12:26:42.000000000 +0200
@@ -30,11 +30,11 @@
ShumateViewport *viewport;
viewport = shumate_viewport_new ();
- g_assert_cmpuint (shumate_viewport_get_max_zoom_level (viewport), ==, 0);
-
- shumate_viewport_set_max_zoom_level (viewport, 20);
g_assert_cmpuint (shumate_viewport_get_max_zoom_level (viewport), ==, 20);
+ shumate_viewport_set_max_zoom_level (viewport, 17);
+ g_assert_cmpuint (shumate_viewport_get_max_zoom_level (viewport), ==, 17);
+
/* Setting the maximum zoom level must update the current zoom level too */
shumate_viewport_set_zoom_level (viewport, 15);
shumate_viewport_set_max_zoom_level (viewport, 10);
@@ -48,19 +48,19 @@
viewport = shumate_viewport_new ();
g_assert_cmpuint (shumate_viewport_get_min_zoom_level (viewport), ==, 0);
- g_assert_cmpuint (shumate_viewport_get_max_zoom_level (viewport), ==, 0);
+ g_assert_cmpuint (shumate_viewport_get_max_zoom_level (viewport), ==, 20);
/* Can't set min zoom level > max zoom level */
g_test_expect_message ("shumate",
G_LOG_LEVEL_CRITICAL,
"shumate_viewport_set_min_zoom_level: assertion 'min_zoom_level <= self->max_zoom_level' failed");
- shumate_viewport_set_min_zoom_level (viewport, 5);
+ shumate_viewport_set_min_zoom_level (viewport, 21);
g_test_assert_expected_messages ();
g_assert_cmpuint (shumate_viewport_get_min_zoom_level (viewport), ==, 0);
- shumate_viewport_set_max_zoom_level (viewport, 15);
shumate_viewport_set_min_zoom_level (viewport, 5);
+ shumate_viewport_set_max_zoom_level (viewport, 15);
/* Equally, can't set max zoom level < min zoom level */
g_test_expect_message ("shumate",
@@ -127,7 +127,7 @@
NULL);
/* Max zoom level */
- for (i = 20; i > 15; i--)
+ for (i = 10; i > 5; i--)
shumate_viewport_set_max_zoom_level (viewport, i);
g_assert_cmpuint (max_zoom_level_notify_counter, ==, 5);
++++++ libshumate.obsinfo ++++++
--- /var/tmp/diff_new_pack.WNWtOG/_old 2022-10-25 11:18:52.141985258 +0200
+++ /var/tmp/diff_new_pack.WNWtOG/_new 2022-10-25 11:18:52.145985267 +0200
@@ -1,5 +1,5 @@
name: libshumate
-version: 1.0.1
-mtime: 1663530056
-commit: 062c61815d2875beee19a1c704c473be8fabb3a7
+version: 1.0.2
+mtime: 1666434402
+commit: bcaeede96beb0ede116343aada1a25bab2a16ea4
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gstreamer-plugins-bad for openSUSE:Factory checked in at 2022-10-25 11:18:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-bad (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-bad"
Tue Oct 25 11:18:38 2022 rev:132 rq:1030675 version:1.20.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer-plugins-bad/gstreamer-plugins-bad.changes 2022-09-07 11:05:16.440290216 +0200
+++ /work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.2275/gstreamer-plugins-bad.changes 2022-10-25 11:18:48.577977359 +0200
@@ -1,0 +2,41 @@
+Sat Oct 22 09:19:02 UTC 2022 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 1.20.4:
+ + amcvideodec: fix GstAmcSurfaceTexture segfault.
+ + audiobuffersplit: Fix drift that was introduced by wrong
+ calculations in gapless mode.
+ + audiovisualizer: fix buffer mapping to not increase refcount.
+ + avfvideosrc: Fix wrong default framerate value.
+ + d3d11decoder: Check 16K resolution support.
+ + d3d11videosink: Fix for force-aspect-ratio setting when
+ rendering on shared texture.
+ + GstPlay: missing cleanup for g_autoptr.
+ + mxfdemux: Always calculate BlockAlign of raw audio to work
+ around files with broken BlockAlign field in the headers.
+ + nvdec: Fix for HEVC decoding when coded resolution is larger
+ than display resolution.
+ + openh264enc: Fix constrained-high encoding.
+ + openh264: Register debug categories earlier.
+ + openmpt: update from now deprecated api.
+ + player/play: Fix object construction and various leaks.
+ + player: Plug a memory leak.
+ + proxysink: Make sure stream-start and caps events are
+ forwarded, and fix memory leak.
+ + tests: skip unit tests for dependency-less elements that have
+ been disabled.
+ + tsdemux: Don't trigger a program change when falling back to
+ ignore-pcr behaviour.
+ + va:
+ - allocator: Fix translation of VADRMPRIMESurfaceDescriptor.
+ - h265dec: Fix a crash because of missing reference frame.
+ - vah265dec: Decoder segfaults on seek.
+ + wasapi2: Fix initial mute/volume setting.
+ + wasapi: Implement default audio channel mask.
+ + webrtcbin:
+ - Fix pointer dereference before null check.
+ - Limit sink query to sink pads.
+ + webrtc: Make sure to return NULL when validating TURN server
+ fails.
+- Drop va-allocator-fix.patch: fixed upstream.
+
+-------------------------------------------------------------------
Old:
----
gst-plugins-bad-1.20.3.tar.xz
va-allocator-fix.patch
New:
----
gst-plugins-bad-1.20.4.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-plugins-bad.spec ++++++
--- /var/tmp/diff_new_pack.l1L6oz/_old 2022-10-25 11:18:49.121978564 +0200
+++ /var/tmp/diff_new_pack.l1L6oz/_new 2022-10-25 11:18:49.125978573 +0200
@@ -61,7 +61,7 @@
%endif
Name: gstreamer-plugins-bad
-Version: 1.20.3
+Version: 1.20.4
Release: 0
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: LGPL-2.1-or-later
@@ -74,8 +74,6 @@
Patch0: fix-build-with-srt-1.3.4.patch
# PATCH-FIX-OPENSUSE spandsp3.patch jengelh(a)inai.de -- Fix build against spandsp 3.x. Patch is not upstreamable in this form
Patch2: spandsp3.patch
-# PATCH-FIX-UPSTREAM va-allocator-fix.patch -- Fix translation of VADRMPRIMESurfaceDescriptor + Use always lseek to get dmabuf size
-Patch3: va-allocator-fix.patch
%if %{with fdk_aac}
BuildRequires: pkgconfig(fdk-aac) >= 0.1.4
@@ -652,7 +650,6 @@
%if %{pkg_vcmp spandsp-devel >= 3}
%patch2 -p1
%endif
-%patch3 -p1
%build
%global optflags %{optflags} -fcommon
++++++ gst-plugins-bad-1.20.3.tar.xz -> gst-plugins-bad-1.20.4.tar.xz ++++++
++++ 2329 lines of diff (skipped)
1
0