openSUSE Commits
Threads by month
- ----- 2024 -----
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
December 2022
- 1 participants
- 2263 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package openblas for openSUSE:Factory checked in at 2022-12-28 10:54:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openblas (Old)
and /work/SRC/openSUSE:Factory/.openblas.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openblas"
Wed Dec 28 10:54:15 2022 rev:53 rq:1045254 version:0.3.21
Changes:
--------
--- /work/SRC/openSUSE:Factory/openblas/openblas.changes 2022-12-03 10:03:31.983205800 +0100
+++ /work/SRC/openSUSE:Factory/.openblas.new.1563/openblas.changes 2022-12-28 10:54:17.816036733 +0100
@@ -1,0 +2,6 @@
+Sun Dec 25 00:19:21 UTC 2022 - Stefan Br��ns <stefan.bruens(a)rwth-aachen.de>
+
+- Fix aarch64 builds with GCC < 9 (i.e. Leap/SLE 15.x), disable
+ NEOVERSEN2 target. See gh#xianyi/OpenBLAS#3874.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openblas.spec ++++++
--- /var/tmp/diff_new_pack.apTQYL/_old 2022-12-28 10:54:19.464045289 +0100
+++ /var/tmp/diff_new_pack.apTQYL/_new 2022-12-28 10:54:19.512045539 +0100
@@ -191,8 +191,6 @@
Patch102: Handle-s390-correctly.patch
Patch103: openblas-ppc64be_up2_p8.patch
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-
#BuildRequires: cmake
BuildRequires: memory-constraints
%if 0%{?cc_v:1}
@@ -346,6 +344,10 @@
%endif
%ifarch aarch64
%global openblas_target %openblas_target TARGET=ARMV8
+%if 0%{?suse_version} < 1550
+# Only enable targets without sve when using GCC < 9
+%global openblas_target %openblas_target DYNAMIC_LIST="ARMV8 CORTEXA53 CORTEXA57 CORTEXA72 CORTEXA73 CORTEXA55 FALKOR THUNDERX THUNDERX2T99 TSV110 EMAG8180 NEOVERSEN1 NEOVERSEV1 THUNDERX3T110"
+%endif
%define openblas_opt BUILD_BFLOAT16=1
%endif
%ifarch s390 s390x
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-traitlets for openSUSE:Factory checked in at 2022-12-28 10:54:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-traitlets (Old)
and /work/SRC/openSUSE:Factory/.python-traitlets.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-traitlets"
Wed Dec 28 10:54:14 2022 rev:14 rq:1045326 version:5.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-traitlets/python-traitlets.changes 2022-10-23 16:33:19.127288095 +0200
+++ /work/SRC/openSUSE:Factory/.python-traitlets.new.1563/python-traitlets.changes 2022-12-28 10:54:16.812031521 +0100
@@ -1,0 +2,19 @@
+Sun Dec 25 21:51:35 UTC 2022 - Ben Greiner <code(a)bnavigator.de>
+
+- Update to 5.8.0
+ * Shell command-line tab-completion via argcomplete #811 (@azjps)
+ * Define trait.__doc__ = trait.help for better API Docs #816
+ (@minrk)
+ * Expose more attributes for typing #817 (@blink1073)
+ * Fix lint #814 (@blink1073)
+ * Additional Application examples and docs #811 (@azjps)
+- Release 5.7.1
+ * fix: some descriptors raise AttributeError #812
+ (@maartenbreddels)
+- Release 5.7.0
+ * Performance: decrease runtime overhead for constructing
+ HasTraits (up to 20x faster) #777 (@maartenbreddels)
+ * Minor fixes for Application.aliases #810 (@azjps)
+ * Adopt ruff and address lint #809 (@blink1073)
+
+-------------------------------------------------------------------
Old:
----
traitlets-5.5.0.tar.gz
New:
----
python-traitlets.rpmlintrc
traitlets-5.8.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-traitlets.spec ++++++
--- /var/tmp/diff_new_pack.pf1yHB/_old 2022-12-28 10:54:17.428034719 +0100
+++ /var/tmp/diff_new_pack.pf1yHB/_new 2022-12-28 10:54:17.428034719 +0100
@@ -17,15 +17,18 @@
Name: python-traitlets
-Version: 5.5.0
+Version: 5.8.0
Release: 0
Summary: Traitlets Python configuration system
License: BSD-3-Clause
URL: https://github.com/ipython/traitlets
Source: https://files.pythonhosted.org/packages/source/t/traitlets/traitlets-%{vers…
+Source99: python-traitlets.rpmlintrc
+BuildRequires: %{python_module argcomplete >= 2.0}
BuildRequires: %{python_module base >= 3.7}
BuildRequires: %{python_module hatchling >= 1.5}
BuildRequires: %{python_module pip}
+BuildRequires: %{python_module pytest-mock}
BuildRequires: %{python_module pytest}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
++++++ python-traitlets.rpmlintrc ++++++
# Leave examples as is
addFilter("env-script-interpreter .*examples")
(No newline at EOF)
++++++ traitlets-5.5.0.tar.gz -> traitlets-5.8.0.tar.gz ++++++
++++ 4499 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-kiwi for openSUSE:Factory checked in at 2022-12-28 10:54:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-kiwi (Old)
and /work/SRC/openSUSE:Factory/.python-kiwi.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-kiwi"
Wed Dec 28 10:54:13 2022 rev:103 rq:1045322 version:9.24.55
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-kiwi/python-kiwi.changes 2022-10-27 13:53:18.892305070 +0200
+++ /work/SRC/openSUSE:Factory/.python-kiwi.new.1563/python-kiwi.changes 2022-12-28 10:54:15.576025104 +0100
@@ -1,0 +2,338 @@
+Sun Dec 18 20:33:54 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Bump version: 9.24.54 ��� 9.24.55
+
+-------------------------------------------------------------------
+Wed Dec 14 16:26:27 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Allow to pass credentials as file reference
+
+-------------------------------------------------------------------
+Tue Dec 13 15:20:41 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Fixed handling of container archive compression
+
+ In kiwi we support handling of the container archive compression
+ via a runtime configuration setting of the following form, eg
+ in /etc/kiwi.yml
+
+ ```yaml
+ container:
+ # Specify compression for container images
+ # Possible values are true, false, xz or none.
+ - compress: true
+ ```
+
+ However, this setting was only taken into account in the kiwi
+ bundler. Meaning if the user calls 'kiwi result bundle ...'
+ after the container image has been created the result bundler
+ will take the compression setting into account. From my perspective
+ this behavior is misleading and also prevents users from
+ creating compressed container archives without a subsequent
+ result bundler call. Therefore this commit moves the place to
+ handle the compression setting into the container classes.
+ The bundler code for containers will no longer operate on it
+ and just takes what it gets, which can be either compressed
+ or not. The default setting was "No compression" and this
+ was not changed. This Fixes #2217
+
+-------------------------------------------------------------------
+Tue Dec 13 14:32:43 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Add type hints for OCI and APPX classes
+
+-------------------------------------------------------------------
+Sun Dec 11 20:17:23 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Bump version: 9.24.53 ��� 9.24.54
+
+-------------------------------------------------------------------
+Sun Dec 11 20:15:24 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Fix publish to pypi
+
+ bind gh-action module to v1 release
+
+-------------------------------------------------------------------
+Sun Dec 11 19:59:49 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Bump version: 9.24.52 ��� 9.24.53
+
+-------------------------------------------------------------------
+Sat Dec 10 21:35:19 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Use ubuntu-20.04 as github hosted runner
+
+ It seems on ubuntu-latest no python 3.6 is available anymore
+
+-------------------------------------------------------------------
+Sat Dec 10 20:13:15 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Allow external commands in tox targets
+
+-------------------------------------------------------------------
+Fri Dec 09 21:30:03 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Fix unit test run for BLS spec base class
+
+ Do not really call blkid as used in get_boot_cmdline
+
+-------------------------------------------------------------------
+Fri Dec 09 15:33:51 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Fixed typo in documentation
+
+ Capitalize at the start of a sentence.
+ This Fixes #2216
+
+-------------------------------------------------------------------
+Fri Dec 02 11:12:30 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Fix unit tests to run in parallel
+
+ Setting sys.argv and global variables impacts tests such that
+ they cannot run in parallel. The little footprint of excluding
+ the --config global args test from the coverage is beneficial
+ to allow parallel test runs
+
+-------------------------------------------------------------------
+Fri Dec 02 10:01:52 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Don't show secret parts of an URI
+
+ Using URIs of the form uri://user:pass@location should not be
+ logged or printed including its credential data
+
+-------------------------------------------------------------------
+Fri Dec 02 09:33:11 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Don't use split on potential None value
+
+-------------------------------------------------------------------
+Thu Dec 01 12:06:58 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Allow to select partition mapper tool
+
+ The recent change from kpartx to partx caused some appliance
+ builds to break depending on their configuration. I spotted
+ issues when building disks with veritysetup or integritysetup
+ root devices. There are also issues with grub-install on other
+ architectures e.g s390. It seems partx cannot be used as a drop
+ in replacement and so I suggest to make this a runtime
+ configuration option with partx as the new default but also
+ allow for the old method
+
+-------------------------------------------------------------------
+Thu Dec 01 09:49:49 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Bump version: 9.24.51 ��� 9.24.52
+
+-------------------------------------------------------------------
+Wed Nov 30 22:19:08 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Fix status indicator in helper/build_status.sh
+
+ colored output only worked for toplevel results
+
+-------------------------------------------------------------------
+Wed Nov 30 15:53:29 CET 2022 - Neal Gompa <neal(a)gompa.dev>
+
+- Eliminate redundant partx calls for cleaning up loop devices
+
+ partx can clean up all partition loops associated with a loop device
+ when deleting the main loop device. Apparently, sometimes it goes and
+ does this even when only deleting the partition loop, so to avoid
+ this problem, we will just eliminate the redundant call.
+
+ Fixes: 8f2b8fda82a37d7a7ebbf8a6557870cc63b0ae91
+
+-------------------------------------------------------------------
+Wed Nov 30 15:18:12 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Support repo URI's with credentials on cmdline
+
+ Specifying a repository as part of the image description
+ allows for credentials via the username and password attributes.
+ Howver, repositories can also be specified on the commandline
+ via the --set-repo / --add-repo options. The options on the
+ commandline did not allow to specify credentials so far.
+ This commit adds the commandline options --set-repo-credentials
+ and --add-repo-credentials to support them
+
+-------------------------------------------------------------------
+Wed Nov 30 11:29:14 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Update test-image-vagrant
+
+ virtualbox-guest-x11 seems to be deleted from TW
+
+-------------------------------------------------------------------
+Wed Nov 30 11:12:26 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Fixed test-image-custom-partitions
+
+ The test was done prior kiwi added the partitions element and
+ demonstrates how to influence the partition table via scripts.
+ These scripts uses kpartx and the device mapper. Due to the
+ recent change from kpartx to partx the scripts must be
+ adapted
+
+-------------------------------------------------------------------
+Tue Nov 29 17:12:59 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Bump version: 9.24.50 ��� 9.24.51
+
+-------------------------------------------------------------------
+Tue Nov 29 17:10:37 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Added code style batch to landing page
+
+-------------------------------------------------------------------
+Tue Nov 29 17:05:17 CET 2022 - Marcus Sch��fer <marcus.schaefer(a)gmail.com>
+
+- Delete obsolete gitlab pipeline status flag
+
+ Delete obsolete gitlab pipeline status from the project
+ landing page. We do no longer use gitlab since they added
+ that quota thing for their CI system
++++ 176 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/python-kiwi/python-kiwi.changes
++++ and /work/SRC/openSUSE:Factory/.python-kiwi.new.1563/python-kiwi.changes
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-kiwi.spec ++++++
--- /var/tmp/diff_new_pack.8UAM7y/_old 2022-12-28 10:54:16.300028862 +0100
+++ /var/tmp/diff_new_pack.8UAM7y/_new 2022-12-28 10:54:16.304028884 +0100
@@ -43,7 +43,7 @@
%endif
Name: python-kiwi
-Version: 9.24.49
+Version: 9.24.55
Provides: kiwi-schema = 7.5
Release: 0
Url: https://github.com/OSInside/kiwi
++++++ PKGBUILD ++++++
--- /var/tmp/diff_new_pack.8UAM7y/_old 2022-12-28 10:54:16.356029153 +0100
+++ /var/tmp/diff_new_pack.8UAM7y/_new 2022-12-28 10:54:16.360029174 +0100
@@ -3,7 +3,7 @@
pkgname=('python-kiwi' 'kiwi-man-pages' 'dracut-kiwi-lib' 'dracut-kiwi-oem-repart' 'dracut-kiwi-oem-dump' 'dracut-kiwi-live' 'dracut-kiwi-overlay')
arch=(x86_64)
-pkgver=9.24.49
+pkgver=9.24.55
pkgrel=0
pkgdesc="KIWI - Appliance Builder Next Generation"
url="https://github.com/SUSE/kiwi/tarball/master"
@@ -12,7 +12,7 @@
provides=(kiwi-ng kiwi)
source=("${pkgname}.tar.gz")
changelog="${pkgname}.changes"
-md5sums=('2f443034d660eec6201f77643eb15310')
+md5sums=('90bb67123ca2ffef2f8c2886d1e8f493')
build() {
++++++ python-kiwi.tar.gz ++++++
++++ 3900 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-ipython for openSUSE:Factory checked in at 2022-12-28 10:54:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ipython (Old)
and /work/SRC/openSUSE:Factory/.python-ipython.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ipython"
Wed Dec 28 10:54:13 2022 rev:35 rq:1045320 version:8.7.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ipython/python-ipython.changes 2022-11-07 13:51:26.055714802 +0100
+++ /work/SRC/openSUSE:Factory/.python-ipython.new.1563/python-ipython.changes 2022-12-28 10:54:13.932016569 +0100
@@ -1,0 +2,10 @@
+Sun Dec 25 19:08:47 UTC 2022 - Ben Greiner <code(a)bnavigator.de>
+
+- Update to 8.7.0
+ * PR #13834 bump the minimum prompt toolkit to 3.0.11.
+ * IPython shipped with the py.typed marker now, and we are
+ progressively adding more types. PR #13831
+ * PR #13817 add configuration of code blacks formatting.
+- Move to PEP517 build
+
+-------------------------------------------------------------------
Old:
----
ipython-8.6.0.tar.gz
New:
----
ipython-8.7.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ipython.spec ++++++
--- /var/tmp/diff_new_pack.9x1Ac6/_old 2022-12-28 10:54:14.464019331 +0100
+++ /var/tmp/diff_new_pack.9x1Ac6/_new 2022-12-28 10:54:14.472019372 +0100
@@ -32,7 +32,7 @@
# extra tests are skipped automatically, don't require these packages for Ring1
%bcond_with localtest
Name: python-ipython%{psuffix}
-Version: 8.6.0
+Version: 8.7.0
Release: 0
Summary: Rich architecture for interactive computing with Python
License: BSD-3-Clause
@@ -41,15 +41,16 @@
Source: https://files.pythonhosted.org/packages/source/i/ipython/ipython-%{version}…
Source1: https://raw.githubusercontent.com/jupyter/qtconsole/4.0.0/qtconsole/resourc…
BuildRequires: %{python_module base >= 3.8}
+BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools >= 51.0.0}
+BuildRequires: %{python_module wheel}
BuildRequires: %{pythons}
BuildRequires: fdupes
BuildRequires: python-rpm-macros >= 20210929
-Requires: (python-prompt_toolkit > 3.0.1 with python-prompt_toolkit < 3.1)
+Requires: (python-prompt_toolkit >= 3.0.11 with python-prompt_toolkit < 3.1)
# requires the full stdlib including sqlite3
Requires: python >= 3.8
Requires: python-backcall
-Requires: python-black
Requires: python-decorator
Requires: python-jedi >= 0.16
Requires: python-matplotlib-inline
@@ -84,7 +85,6 @@
BuildRequires: %{python_module matplotlib}
BuildRequires: %{python_module numpy >= 1.20}
BuildRequires: %{python_module pandas}
-BuildRequires: %{python_module pygments >= 2.4.0}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module testpath}
@@ -144,7 +144,7 @@
%autosetup -p1 -n ipython-%{version}
%build
-%python_build
+%pyproject_wheel
%if !%{with test}
%if %{with ico}
@@ -157,10 +157,12 @@
%install
%if !%{with test}
-%python_install
+%pyproject_install
%python_clone -a %{buildroot}%{_bindir}/ipython
%python_clone -a %{buildroot}%{_bindir}/ipython3
+# gh#ipython/ipython#13815
+%python_expand cp %{buildroot}%{_bindir}/ipython{-%{$python_bin_suffix },%{$python_bin_suffix}}
# must clone after copy
cp %{buildroot}%{_mandir}/man1/ipython{,3}.1
@@ -203,6 +205,8 @@
%if %{with test}
%check
+# check our fix for https://github.com/ipython/ipython/issues/13815
+%python_expand ipython%{$python_bin_suffix} --show-config | grep "Python %{$python_version}"
export PYTHONPATH=$(pwd)
%pytest
%endif
@@ -229,10 +233,11 @@
%doc README.rst docs/source/about/license_and_copyright.rst
%python_alternative %{_bindir}/ipython
%python_alternative %{_bindir}/ipython3
+%{_bindir}/ipython%{python_bin_suffix}
%python_alternative %{_mandir}/man1/ipython.1.gz
%python_alternative %{_mandir}/man1/ipython3.1.gz
%{python_sitelib}/IPython/
-%{python_sitelib}/ipython-%{version}-py*.egg-info
+%{python_sitelib}/ipython-%{version}.dist-info
%{_datadir}/applications/ipython-%{python_bin_suffix}.desktop
%{_datadir}/icons/hicolor/scalable/apps/IPython-%{python_bin_suffix}.svg
%if %{with ico}
++++++ ipython-8.6.0.tar.gz -> ipython-8.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/compilerop.py new/ipython-8.7.0/IPython/core/compilerop.py
--- old/ipython-8.6.0/IPython/core/compilerop.py 2022-10-30 08:09:10.000000000 +0100
+++ new/ipython-8.7.0/IPython/core/compilerop.py 2022-11-28 09:58:47.000000000 +0100
@@ -116,6 +116,21 @@
"""
return code_name(transformed_code, number)
+ def format_code_name(self, name):
+ """Return a user-friendly label and name for a code block.
+
+ Parameters
+ ----------
+ name : str
+ The name for the code block returned from get_code_name
+
+ Returns
+ -------
+ A (label, name) pair that can be used in tracebacks, or None if the default formatting should be used.
+ """
+ if name in self._filename_map:
+ return "Cell", "In[%s]" % self._filename_map[name]
+
def cache(self, transformed_code, number=0, raw_code=None):
"""Make a name for a block of code, and cache the code.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/completer.py new/ipython-8.7.0/IPython/core/completer.py
--- old/ipython-8.6.0/IPython/core/completer.py 2022-10-29 13:43:50.000000000 +0200
+++ new/ipython-8.7.0/IPython/core/completer.py 2022-11-28 09:58:47.000000000 +0100
@@ -671,6 +671,19 @@
Matcher: TypeAlias = Union[MatcherAPIv1, MatcherAPIv2]
+def has_any_completions(result: MatcherResult) -> bool:
+ """Check if any result includes any completions."""
+ if hasattr(result["completions"], "__len__"):
+ return len(result["completions"]) != 0
+ try:
+ old_iterator = result["completions"]
+ first = next(old_iterator)
+ result["completions"] = itertools.chain([first], old_iterator)
+ return True
+ except StopIteration:
+ return False
+
+
def completion_matcher(
*, priority: float = None, identifier: str = None, api_version: int = 1
):
@@ -684,7 +697,10 @@
identifier : Optional[str]
identifier of the matcher allowing users to modify the behaviour via traitlets,
and also used to for debugging (will be passed as ``origin`` with the completions).
- Defaults to matcher function ``__qualname__``.
+
+ Defaults to matcher function's ``__qualname__`` (for example,
+ ``IPCompleter.file_matcher`` for the built-in matched defined
+ as a ``file_matcher`` method of the ``IPCompleter`` class).
api_version: Optional[int]
version of the Matcher API used by this matcher.
Currently supported values are 1 and 2.
@@ -1447,14 +1463,18 @@
If False, only the completion results from the first non-empty
completer will be returned.
-
+
As of version 8.6.0, setting the value to ``False`` is an alias for:
``IPCompleter.suppress_competing_matchers = True.``.
""",
).tag(config=True)
disable_matchers = ListTrait(
- Unicode(), help="""List of matchers to disable."""
+ Unicode(),
+ help="""List of matchers to disable.
+
+ The list should contain matcher identifiers (see :any:`completion_matcher`).
+ """,
).tag(config=True)
omit__names = Enum(
@@ -1952,7 +1972,7 @@
else:
return []
- def python_matches(self, text:str)->List[str]:
+ def python_matches(self, text: str) -> Iterable[str]:
"""Match attributes or global python names"""
if "." in text:
try:
@@ -2807,7 +2827,7 @@
should_suppress = (
(suppression_config is True)
or (suppression_recommended and (suppression_config is not False))
- ) and len(result["completions"])
+ ) and has_any_completions(result)
if should_suppress:
suppression_exceptions = result.get("do_not_suppress", set())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/magics/basic.py new/ipython-8.7.0/IPython/core/magics/basic.py
--- old/ipython-8.6.0/IPython/core/magics/basic.py 2022-10-29 13:02:00.000000000 +0200
+++ new/ipython-8.7.0/IPython/core/magics/basic.py 2022-11-28 09:58:47.000000000 +0100
@@ -297,7 +297,10 @@
oname = args and args or '_'
info = self.shell._ofind(oname)
if info['found']:
- txt = (raw and str or pformat)( info['obj'] )
+ if raw:
+ txt = str(info["obj"])
+ else:
+ txt = pformat(info["obj"])
page.page(txt)
else:
print('Object `%s` not found' % oname)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/magics/config.py new/ipython-8.7.0/IPython/core/magics/config.py
--- old/ipython-8.6.0/IPython/core/magics/config.py 2022-10-29 13:43:50.000000000 +0200
+++ new/ipython-8.7.0/IPython/core/magics/config.py 2022-11-28 09:58:47.000000000 +0100
@@ -82,6 +82,8 @@
Current: False
IPCompleter.disable_matchers=<list-item-1>...
List of matchers to disable.
+ The list should contain matcher identifiers (see
+ :any:`completion_matcher`).
Current: []
IPCompleter.greedy=<Bool>
Activate greedy completion
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/release.py new/ipython-8.7.0/IPython/core/release.py
--- old/ipython-8.6.0/IPython/core/release.py 2022-10-30 10:30:09.000000000 +0100
+++ new/ipython-8.7.0/IPython/core/release.py 2022-11-28 14:50:12.000000000 +0100
@@ -16,7 +16,7 @@
# release. 'dev' as a _version_extra string means this is a development
# version
_version_major = 8
-_version_minor = 6
+_version_minor = 7
_version_patch = 0
_version_extra = ".dev"
# _version_extra = "rc1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/tests/test_completer.py new/ipython-8.7.0/IPython/core/tests/test_completer.py
--- old/ipython-8.6.0/IPython/core/tests/test_completer.py 2022-10-29 13:43:50.000000000 +0200
+++ new/ipython-8.7.0/IPython/core/tests/test_completer.py 2022-11-28 09:58:47.000000000 +0100
@@ -1396,6 +1396,65 @@
configure({"b_matcher": True})
_("do not suppress", ["completion_b"])
+ configure(True)
+ _("do not suppress", ["completion_a"])
+
+ def test_matcher_suppression_with_iterator(self):
+ @completion_matcher(identifier="matcher_returning_iterator")
+ def matcher_returning_iterator(text):
+ return iter(["completion_iter"])
+
+ @completion_matcher(identifier="matcher_returning_list")
+ def matcher_returning_list(text):
+ return ["completion_list"]
+
+ with custom_matchers([matcher_returning_iterator, matcher_returning_list]):
+ ip = get_ipython()
+ c = ip.Completer
+
+ def _(text, expected):
+ c.use_jedi = False
+ s, matches = c.complete(text)
+ self.assertEqual(expected, matches)
+
+ def configure(suppression_config):
+ cfg = Config()
+ cfg.IPCompleter.suppress_competing_matchers = suppression_config
+ c.update_config(cfg)
+
+ configure(False)
+ _("---", ["completion_iter", "completion_list"])
+
+ configure(True)
+ _("---", ["completion_iter"])
+
+ configure(None)
+ _("--", ["completion_iter", "completion_list"])
+
+ def test_matcher_suppression_with_jedi(self):
+ ip = get_ipython()
+ c = ip.Completer
+ c.use_jedi = True
+
+ def configure(suppression_config):
+ cfg = Config()
+ cfg.IPCompleter.suppress_competing_matchers = suppression_config
+ c.update_config(cfg)
+
+ def _():
+ with provisionalcompleter():
+ matches = [completion.text for completion in c.completions("dict.", 5)]
+ self.assertIn("keys", matches)
+
+ configure(False)
+ _()
+
+ configure(True)
+ _()
+
+ configure(None)
+ _()
+
def test_matcher_disabling(self):
@completion_matcher(identifier="a_matcher")
def a_matcher(text):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/core/ultratb.py new/ipython-8.7.0/IPython/core/ultratb.py
--- old/ipython-8.6.0/IPython/core/ultratb.py 2022-10-30 08:09:10.000000000 +0100
+++ new/ipython-8.7.0/IPython/core/ultratb.py 2022-11-28 09:58:47.000000000 +0100
@@ -173,7 +173,7 @@
def _format_filename(file, ColorFilename, ColorNormal, *, lineno=None):
"""
- Format filename lines with `In [n]` if it's the nth code cell or `File *.py` if it's a module.
+ Format filename lines with custom formatting from caching compiler or `File *.py` by default
Parameters
----------
@@ -184,23 +184,29 @@
ColorScheme's normal coloring to be used.
"""
ipinst = get_ipython()
-
- if ipinst is not None and file in ipinst.compile._filename_map:
- file = "[%s]" % ipinst.compile._filename_map[file]
+ if (
+ ipinst is not None
+ and (data := ipinst.compile.format_code_name(file)) is not None
+ ):
+ label, name = data
if lineno is None:
- tpl_link = f"Cell {ColorFilename}In {{file}}{ColorNormal}"
+ tpl_link = f"{{label}} {ColorFilename}{{name}}{ColorNormal}"
else:
- tpl_link = f"Cell {ColorFilename}In {{file}}, line {{lineno}}{ColorNormal}"
+ tpl_link = (
+ f"{{label}} {ColorFilename}{{name}}, line {{lineno}}{ColorNormal}"
+ )
else:
- file = util_path.compress_user(
+ label = "File"
+ name = util_path.compress_user(
py3compat.cast_unicode(file, util_path.fs_encoding)
)
if lineno is None:
- tpl_link = f"File {ColorFilename}{{file}}{ColorNormal}"
+ tpl_link = f"{{label}} {ColorFilename}{{name}}{ColorNormal}"
else:
- tpl_link = f"File {ColorFilename}{{file}}:{{lineno}}{ColorNormal}"
+ # can we make this the more friendly ", line {{lineno}}", or do we need to preserve the formatting with the colon?
+ tpl_link = f"{{label}} {ColorFilename}{{name}}:{{lineno}}{ColorNormal}"
- return tpl_link.format(file=file, lineno=lineno)
+ return tpl_link.format(label=label, name=name, lineno=lineno)
#---------------------------------------------------------------------------
# Module classes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/sphinxext/ipython_directive.py new/ipython-8.7.0/IPython/sphinxext/ipython_directive.py
--- old/ipython-8.6.0/IPython/sphinxext/ipython_directive.py 2022-10-29 13:02:00.000000000 +0200
+++ new/ipython-8.7.0/IPython/sphinxext/ipython_directive.py 2022-11-28 09:58:47.000000000 +0100
@@ -981,8 +981,9 @@
self.shell.warning_is_error = warning_is_error
# setup bookmark for saving figures directory
- self.shell.process_input_line('bookmark ipy_savedir %s'%savefig_dir,
- store_history=False)
+ self.shell.process_input_line(
+ 'bookmark ipy_savedir "%s"' % savefig_dir, store_history=False
+ )
self.shell.clear_cout()
return rgxin, rgxout, promptin, promptout
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/IPython/utils/_sysinfo.py new/ipython-8.7.0/IPython/utils/_sysinfo.py
--- old/ipython-8.6.0/IPython/utils/_sysinfo.py 2022-10-30 10:30:09.000000000 +0100
+++ new/ipython-8.7.0/IPython/utils/_sysinfo.py 2022-11-28 14:50:12.000000000 +0100
@@ -1,2 +1,2 @@
# GENERATED BY setup.py
-commit = "f8d0e4c79"
+commit = "ff770b25d"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/MANIFEST.in new/ipython-8.7.0/MANIFEST.in
--- old/ipython-8.6.0/MANIFEST.in 2022-09-28 10:27:21.000000000 +0200
+++ new/ipython-8.7.0/MANIFEST.in 2022-11-15 11:31:42.000000000 +0100
@@ -4,6 +4,7 @@
include setupbase.py
include MANIFEST.in
include pytest.ini
+include py.typed
include mypy.ini
include .mailmap
include .flake8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/PKG-INFO new/ipython-8.7.0/PKG-INFO
--- old/ipython-8.6.0/PKG-INFO 2022-10-30 10:30:09.000000000 +0100
+++ new/ipython-8.7.0/PKG-INFO 2022-11-28 14:50:12.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: ipython
-Version: 8.6.0
+Version: 8.7.0
Summary: IPython: Productive Interactive Computing
Home-page: https://ipython.org
Author: The IPython Development Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/docs/source/whatsnew/version8.rst new/ipython-8.7.0/docs/source/whatsnew/version8.rst
--- old/ipython-8.6.0/docs/source/whatsnew/version8.rst 2022-10-30 10:29:48.000000000 +0100
+++ new/ipython-8.7.0/docs/source/whatsnew/version8.rst 2022-11-28 10:06:22.000000000 +0100
@@ -2,6 +2,32 @@
8.x Series
============
+
+.. _version 8.7.0:
+
+IPython 8.7.0
+-------------
+
+
+Small release of IPython with a couple of bug fixes and new features for this
+month. Next month is end of year, it is unclear if there will be a release close
+the new year's eve, or if the next release will be at end of January.
+
+Here are a few of the relevant fixes,
+as usual you can find the full list of PRs on GitHub under `the 8.7 milestone
+<https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__.
+
+
+ - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11.
+ - IPython shipped with the ``py.typed`` marker now, and we are progressively
+ adding more types. :ghpull:`13831`
+ - :ghpull:`13817` add configuration of code blacks formatting.
+
+
+Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
+work on IPython and related libraries.
+
+
.. _version 8.6.0:
IPython 8.6.0
@@ -40,7 +66,7 @@
The ``open()`` function present in the user namespace by default will now refuse
to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython.
-This mostly occurs in teaching context when incorrect values get passed around.
+This mostly occurs in teaching context when incorrect values get passed around.
The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/ipython.egg-info/PKG-INFO new/ipython-8.7.0/ipython.egg-info/PKG-INFO
--- old/ipython-8.6.0/ipython.egg-info/PKG-INFO 2022-10-30 10:30:09.000000000 +0100
+++ new/ipython-8.7.0/ipython.egg-info/PKG-INFO 2022-11-28 14:50:12.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: ipython
-Version: 8.6.0
+Version: 8.7.0
Summary: IPython: Productive Interactive Computing
Home-page: https://ipython.org
Author: The IPython Development Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/ipython.egg-info/SOURCES.txt new/ipython-8.7.0/ipython.egg-info/SOURCES.txt
--- old/ipython-8.6.0/ipython.egg-info/SOURCES.txt 2022-10-30 10:30:09.000000000 +0100
+++ new/ipython-8.7.0/ipython.egg-info/SOURCES.txt 2022-11-28 14:50:12.000000000 +0100
@@ -18,6 +18,7 @@
IPython/consoleapp.py
IPython/display.py
IPython/paths.py
+IPython/py.typed
IPython/core/__init__.py
IPython/core/alias.py
IPython/core/application.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/ipython.egg-info/entry_points.txt new/ipython-8.7.0/ipython.egg-info/entry_points.txt
--- old/ipython-8.6.0/ipython.egg-info/entry_points.txt 2022-10-30 10:30:09.000000000 +0100
+++ new/ipython-8.7.0/ipython.egg-info/entry_points.txt 2022-11-28 14:50:12.000000000 +0100
@@ -1,8 +1,4 @@
[console_scripts]
ipython = IPython:start_ipython
ipython3 = IPython:start_ipython
-
-[pygments.lexers]
-ipython = IPython.lib.lexers:IPythonLexer
-ipython3 = IPython.lib.lexers:IPython3Lexer
-ipythonconsole = IPython.lib.lexers:IPythonConsoleLexer
+ipython3.10 = IPython:start_ipython
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/ipython.egg-info/requires.txt new/ipython-8.7.0/ipython.egg-info/requires.txt
--- old/ipython-8.6.0/ipython.egg-info/requires.txt 2022-10-30 10:30:09.000000000 +0100
+++ new/ipython-8.7.0/ipython.egg-info/requires.txt 2022-11-28 14:50:12.000000000 +0100
@@ -3,7 +3,7 @@
jedi>=0.16
matplotlib-inline
pickleshare
-prompt_toolkit<3.1.0,>3.0.1
+prompt_toolkit<3.1.0,>=3.0.11
pygments>=2.4.0
stack_data
traitlets>=5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/setup.cfg new/ipython-8.7.0/setup.cfg
--- old/ipython-8.6.0/setup.cfg 2022-10-30 10:30:09.000000000 +0100
+++ new/ipython-8.7.0/setup.cfg 2022-11-28 14:50:12.000000000 +0100
@@ -37,7 +37,7 @@
matplotlib-inline
pexpect>4.3; sys_platform != "win32"
pickleshare
- prompt_toolkit>3.0.1,<3.1.0
+ prompt_toolkit>=3.0.11,<3.1.0
pygments>=2.4.0
stack_data
traitlets>=5
@@ -106,9 +106,6 @@
IPython.testing.plugin = *.txt
[options.entry_points]
-console_scripts =
- ipython = IPython:start_ipython
- ipython3 = IPython:start_ipython
pygments.lexers =
ipythonconsole = IPython.lib.lexers:IPythonConsoleLexer
ipython = IPython.lib.lexers:IPythonLexer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipython-8.6.0/setup.py new/ipython-8.7.0/setup.py
--- old/ipython-8.6.0/setup.py 2022-09-28 10:27:21.000000000 +0200
+++ new/ipython-8.7.0/setup.py 2022-11-28 09:58:47.000000000 +0100
@@ -66,7 +66,7 @@
# Our own imports
sys.path.insert(0, ".")
-from setupbase import target_update
+from setupbase import target_update, find_entry_points
from setupbase import (
setup_args,
@@ -139,6 +139,7 @@
'install_scripts_sym': install_scripts_for_symlink,
'unsymlink': unsymlink,
}
+setup_args["entry_points"] = {"console_scripts": find_entry_points()}
#---------------------------------------------------------------------------
# Do the actual setup now
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-ipykernel for openSUSE:Factory checked in at 2022-12-28 10:54:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ipykernel (Old)
and /work/SRC/openSUSE:Factory/.python-ipykernel.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ipykernel"
Wed Dec 28 10:54:11 2022 rev:32 rq:1045315 version:6.19.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ipykernel/python-ipykernel.changes 2022-11-07 13:51:24.855708057 +0100
+++ /work/SRC/openSUSE:Factory/.python-ipykernel.new.1563/python-ipykernel.changes 2022-12-28 10:54:12.644009882 +0100
@@ -1,0 +2,49 @@
+Sun Dec 25 17:46:14 UTC 2022 - Ben Greiner <code(a)bnavigator.de>
+
+- Update to 6.19.4
+ * Don't pass None kernels to logging configurable in Comm #1061
+ (@bollwyvl)
+- Release 6.19.3
+ * format dates as ISO8601 #1057 (@GRcharles)
+ * Fix comms and add qtconsole downstream test #1056 (@blink1073)
+ * Fix lint #1058 (@blink1073)
+ * Fix comms and add qtconsole downstream test #1056 (@blink1073)
+- Release 6.19.2
+ * Fix error in %edit magic #1053 (@ccordoba12)
+- Release 6.19.1
+ * fix: too many arguments dropped when passing to base comm
+ constructor #1051 (@maartenbreddels)
+- Release 6.19.0
+ * Fix: there can be only one comm_manager #1049
+ (@maartenbreddels)
+ * Adopt ruff and address lint #1046 (@blink1073)
+- Release 6.18.3
+ * Fix Comm interface for downstream users #1042
+ (@maartenbreddels)
+- Release 6.18.2
+ * Configurables needs to be configurable #1037 (@Carreau)
+- Release 6.18.1
+ * fix: use comm package in backwards compatible way #1028
+ (@maartenbreddels)
+ * Add more testing and deprecate the Gtk event loops #1036
+ (@blink1073)
+ * More coverage improvements #1035 (@blink1073)
+ * Add more tests #1034 (@blink1073)
+ * Add more kernel tests #1032 (@blink1073)
+ * Add more coverage and add Readme badges #1031 (@blink1073)
+ * Clean up testing and coverage #1030 (@blink1073)
+ * Use base setup dependency type #1029 (@blink1073)
+- Release 6.18.0
+ * Add terminal color support #1025 (@blink1073)
+ * Extract the Comm Python package #973 (@martinRenou)
+ * Add windows coverage and clean up workflows #1023 (@blink1073)
+ * Increase coverage #1021 (@blink1073)
+ * Allow releasing from repo #1020 (@blink1073)
+- Release 6.17.1
+ * Ignore the new Jupyter_core deprecation warning in CI #1019
+ (@jasongrout)
+ * Bump actions/checkout from 2 to 3 #1018 (@dependabot)
+ * Add dependabot #1017 (@blink1073)
+ * Add pyupgrade to pre-commit #1014 (@blink1073)
+
+-------------------------------------------------------------------
Old:
----
ipykernel-6.17.0.tar.gz
New:
----
ipykernel-6.19.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ipykernel.spec ++++++
--- /var/tmp/diff_new_pack.uqJfUZ/_old 2022-12-28 10:54:13.572014699 +0100
+++ /var/tmp/diff_new_pack.uqJfUZ/_new 2022-12-28 10:54:13.576014721 +0100
@@ -17,7 +17,7 @@
Name: python-ipykernel
-Version: 6.17.0
+Version: 6.19.4
Release: 0
Summary: IPython Kernel for Jupyter
License: BSD-3-Clause
@@ -43,6 +43,7 @@
BuildRequires: python-rpm-macros
# /SECTION
# SECTION dependencies
+BuildRequires: %{python_module comm >= 0.1.1}
BuildRequires: %{python_module debugpy >= 1.0}
BuildRequires: %{python_module ipython >= 7.23.1}
BuildRequires: %{python_module jupyter-client >= 6.1.12}
@@ -53,6 +54,7 @@
BuildRequires: %{python_module pyzmq >= 17}
BuildRequires: %{python_module tornado >= 6.1}
BuildRequires: %{python_module traitlets >= 5.1.0}
+Requires: python-comm >= 0.1.1
Requires: python-debugpy >= 1.0
Requires: python-ipython >= 7.23.1
Requires: python-jupyter-client >= 6.1.12
@@ -62,12 +64,13 @@
Requires: python-psutil
Requires: python-pyzmq >= 17
Requires: python-tornado >= 6.1
-Requires: python-traitlets >= 5.1.0
+Requires: python-traitlets >= 5.4.0
# /SECTION
# SECTION test requirements
BuildRequires: %{python_module flaky}
BuildRequires: %{python_module matplotlib}
BuildRequires: %{python_module pytest >= 7.0}
+BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest-timeout}
# we don't want ipyparallel and its dependencies in Ring1, see below
#BuildRequires: #{python_module ipyparallel}
@@ -83,8 +86,6 @@
%prep
%autosetup -p1 -n ipykernel-%{version}
-# 5 tests out of 116, we don't want ipyparallel and its dependencies in Ring1
-rm ipykernel/tests/test_pickleutil.py
sed -i -e 's/--color=yes//' pyproject.toml
%build
@@ -113,6 +114,9 @@
donttest="test_shutdown_subprocesses"
# fails in obs setups
ignoretests="--ignore ipykernel/tests/test_debugger.py"
+# we don't want ipyparallel and its dependencies in Ring1
+ignoretests="$ignoretests --ignore ipykernel/tests/test_pickleutil.py"
+donttest="$donttest or test_do_apply"
%pytest -k "not ($donttest)" $ignoretests
%files %{python_files}
++++++ ipykernel-6.17.0.tar.gz -> ipykernel-6.19.4.tar.gz ++++++
++++ 3682 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000update-repos for openSUSE:Factory checked in at 2022-12-27 21:12:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000update-repos (Old)
and /work/SRC/openSUSE:Factory/.000update-repos.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000update-repos"
Tue Dec 27 21:12:31 2022 rev:2179 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
New:
----
factory:non-oss_3449.1.packages.zst
factory_20221226.packages.zst
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000product for openSUSE:Factory checked in at 2022-12-27 18:37:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000product (Old)
and /work/SRC/openSUSE:Factory/.000product.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000product"
Tue Dec 27 18:37:39 2022 rev:3450 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ MicroOS-dvd5-dvd-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:44.632818574 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:44.644818644 +0100
@@ -1,4 +1,4 @@
-<image name="OBS__MicroOS___20221226" schemaversion="4.1">
+<image name="OBS__MicroOS___20221227" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -35,11 +35,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20221226</productvar>
+ <productvar name="VERSION">20221227</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:microos:20221226,openSUSE MicroOS</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:microos:20221227,openSUSE MicroOS</productinfo>
<productinfo name="LINGUAS">en_US </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/MicroOS/20221226/x86_64</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/MicroOS/20221227/x86_64</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
@@ -2111,7 +2111,6 @@
<repopackage name="pam-config"/>
<repopackage name="pam-manpages"/>
<repopackage name="pam_pwquality"/>
- <repopackage name="pam_unix"/>
<repopackage name="parallel-printer-support" arch="x86_64"/>
<repopackage name="paratype-pt-mono-fonts"/>
<repopackage name="paratype-pt-sans-fonts"/>
++++++ openSUSE-Addon-NonOss-ftp-ftp-i586_x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:44.676818831 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:44.680818853 +0100
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE-Addon-NonOss___20221226" schemaversion="4.1">
+<image name="OBS__openSUSE-Addon-NonOss___20221227" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -36,11 +36,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20221226</productvar>
+ <productvar name="VERSION">20221227</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse-addon-nonoss:20221226,openSUSE NonOSS Addon</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse-addon-nonoss:20221227,openSUSE NonOSS Addon</productinfo>
<productinfo name="LINGUAS">af ar be_BY bg br ca cy el et ga gl gu_IN he hi_IN hr ka km ko lt mk nn pa_IN rw sk sl sr_CS ss st tg th tr uk ve vi xh zu </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-Addon-NonOss/2022… obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-Addon-NonOss/2022…</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-Addon-NonOss/2022… obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE-Addon-NonOss/2022…</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
++++++ openSUSE-cd-mini-i586.kiwi ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:44.704818994 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:44.708819017 +0100
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20221226" schemaversion="4.1">
+<image name="OBS__openSUSE___20221227" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -32,11 +32,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20221226</productvar>
+ <productvar name="VERSION">20221227</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20221226,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20221227,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221226/i586</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221227/i586</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
++++++ openSUSE-cd-mini-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:44.736819180 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:44.740819203 +0100
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20221226" schemaversion="4.1">
+<image name="OBS__openSUSE___20221227" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -35,11 +35,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20221226</productvar>
+ <productvar name="VERSION">20221227</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20221226,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20221227,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221226/x86_64</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221227/x86_64</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
++++++ openSUSE-dvd5-dvd-i586.kiwi ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:44.764819344 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:44.768819367 +0100
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20221226" schemaversion="4.1">
+<image name="OBS__openSUSE___20221227" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -32,11 +32,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20221226</productvar>
+ <productvar name="VERSION">20221227</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20221226,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20221227,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221226/i586</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221227/i586</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
@@ -1598,7 +1598,7 @@
<repopackage name="libfakekey0"/>
<repopackage name="libfarstream-0_2-5"/>
<repopackage name="libfastjson4"/>
- <repopackage name="libfaxutil7_0_5"/>
+ <repopackage name="libfaxutil7_0_6"/>
<repopackage name="libfcitx-config4"/>
<repopackage name="libfcitx-core0"/>
<repopackage name="libfcitx-gclient1"/>
@@ -3226,7 +3226,6 @@
<repopackage name="pam_mount"/>
<repopackage name="pam_pwquality"/>
<repopackage name="pam_ssh"/>
- <repopackage name="pam_unix"/>
<repopackage name="paperkey"/>
<repopackage name="par"/>
<repopackage name="parallel-printer-support"/>
++++++ openSUSE-dvd5-dvd-x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:44.792819507 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:44.796819530 +0100
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20221226" schemaversion="4.1">
+<image name="OBS__openSUSE___20221227" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -35,11 +35,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20221226</productvar>
+ <productvar name="VERSION">20221227</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20221226,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20221227,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221226/x86_64</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221227/x86_64</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
<productoption name="PLUGIN_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
@@ -1688,7 +1688,7 @@
<repopackage name="libfakekey0"/>
<repopackage name="libfarstream-0_2-5"/>
<repopackage name="libfastjson4"/>
- <repopackage name="libfaxutil7_0_5"/>
+ <repopackage name="libfaxutil7_0_6"/>
<repopackage name="libfcitx-config4"/>
<repopackage name="libfcitx-core0"/>
<repopackage name="libfcitx-gclient1"/>
@@ -3491,7 +3491,6 @@
<repopackage name="pam_pwquality-32bit" arch="x86_64"/>
<repopackage name="pam_ssh"/>
<repopackage name="pam_ssh-32bit" arch="x86_64"/>
- <repopackage name="pam_unix"/>
<repopackage name="paperkey"/>
<repopackage name="par"/>
<repopackage name="parallel-printer-support"/>
++++++ openSUSE-ftp-ftp-i586_x86_64.kiwi ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:44.820819670 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:44.824819694 +0100
@@ -1,4 +1,4 @@
-<image name="OBS__openSUSE___20221226" schemaversion="4.1">
+<image name="OBS__openSUSE___20221227" schemaversion="4.1">
<description type="system">
<author>The SUSE Team</author>
<contact>build(a)opensuse.org</contact>
@@ -24,7 +24,7 @@
<productvar name="DISTNAME">openSUSE</productvar>
<productvar name="FLAVOR">ftp</productvar>
<productvar name="MAKE_LISTINGS">true</productvar>
- <productvar name="MEDIUM_NAME">openSUSE-20221226-i586-x86_64</productvar>
+ <productvar name="MEDIUM_NAME">openSUSE-20221227-i586-x86_64</productvar>
<productvar name="MULTIPLE_MEDIA">true</productvar>
<productvar name="PRODUCT_DIR">/</productvar>
<productvar name="PRODUCT_NAME">$DISTNAME-$FLAVOR</productvar>
@@ -36,11 +36,11 @@
<productvar name="SEPARATE_MEDIA">true</productvar>
<productvar name="SHA1OPT">-x -2</productvar>
<productvar name="VENDOR">openSUSE</productvar>
- <productvar name="VERSION">20221226</productvar>
+ <productvar name="VERSION">20221227</productvar>
<productinfo name="CONTENTSTYLE">11</productinfo>
- <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20221226,openSUSE Tumbleweed</productinfo>
+ <productinfo name="DISTRO">cpe:/o:opensuse:opensuse:20221227,openSUSE Tumbleweed</productinfo>
<productinfo name="LINGUAS">cs da de el en en_GB en_US es fr hu it ja pl pt pt_BR ru zh zh_CN zh_TW </productinfo>
- <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221226/i586 obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221226/x86_64</productinfo>
+ <productinfo name="REPOID">obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221227/i586 obsproduct://build.opensuse.org/openSUSE:Factory/openSUSE/20221227/x86_64</productinfo>
<productinfo name="VENDOR">openSUSE</productinfo>
<productoption name="DEBUGMEDIUM">2</productoption>
<productoption name="INI_DIR">/usr/share/kiwi/modules/plugins/tumbleweed</productoption>
++++++ MicroOS.product ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:44.876819997 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:44.880820020 +0100
@@ -6,7 +6,7 @@
<name>MicroOS</name>
<releasepkgname>MicroOS-release</releasepkgname>
<endoflife/>
- <version>20221226</version>
+ <version>20221227</version>
<!-- release is no longer optional -->
<release>0</release>
<productline>MicroOS</productline>
++++++ dvd.group ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:44.976820580 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:44.984820626 +0100
@@ -1885,7 +1885,7 @@
<package name="libfakekey0" supportstatus="unsupported"/> <!-- reason: common_locks:expansion -->
<package name="libfarstream-0_2-5" supportstatus="unsupported"/> <!-- reason: dvd:patterns-gnome-gnome -->
<package name="libfastjson4" supportstatus="unsupported"/> <!-- reason: dvd:patterns-media-rest_dvd -->
- <package name="libfaxutil7_0_5" supportstatus="unsupported"/> <!-- reason: dvd:patterns-media-rest_dvd -->
+ <package name="libfaxutil7_0_6" supportstatus="unsupported"/> <!-- reason: dvd:patterns-media-rest_dvd -->
<package name="libfcitx-config4" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="libfcitx-core0" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="libfcitx-gclient1" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
@@ -3176,7 +3176,6 @@
<package name="pam_mount" supportstatus="unsupported"/> <!-- reason: dvd:patterns-media-rest_cd_core -->
<package name="pam_pwquality" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="pam_ssh" supportstatus="unsupported"/> <!-- reason: common_locks:expansion -->
- <package name="pam_unix" supportstatus="unsupported"/> <!-- reason: dvd:openSUSE-release -->
<package name="paperkey" supportstatus="unsupported"/> <!-- reason: dvd:patterns-kde-kde -->
<package name="par" supportstatus="unsupported"/> <!-- reason: common_locks:expansion -->
<package name="parallel-printer-support" supportstatus="unsupported"/> <!-- reason: dvd:patterns-base-console -->
++++++ openSUSE-Addon-NonOss.product ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:45.004820743 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:45.012820790 +0100
@@ -4,7 +4,7 @@
<product>
<vendor>openSUSE</vendor>
<name>openSUSE-Addon-NonOss</name>
- <version>20221226</version>
+ <version>20221227</version>
<release>0</release>
<summary>openSUSE NonOSS Addon</summary>
<shortsummary>non oss addon</shortsummary>
++++++ openSUSE.product ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:45.040820953 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:45.044820976 +0100
@@ -4,7 +4,7 @@
<product>
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20221226</version>
+ <version>20221227</version>
<release>0</release>
<productline>openSUSE</productline>
++++++ opensuse_microos.group ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:45.084821210 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:45.088821233 +0100
@@ -921,7 +921,6 @@
<package name="pam-config" supportstatus="unsupported"/> <!-- reason: opensuse_microos:MicroOS-release -->
<package name="pam-manpages" supportstatus="unsupported"/> <!-- reason: opensuse_microos:MicroOS-release -->
<package name="pam_pwquality" supportstatus="unsupported"/> <!-- reason: opensuse_microos:MicroOS-release -->
- <package name="pam_unix" supportstatus="unsupported"/> <!-- reason: opensuse_microos:MicroOS-release -->
<package name="paratype-pt-mono-fonts" supportstatus="unsupported"/> <!-- reason: opensuse_microos:MicroOS-release -->
<package name="paratype-pt-sans-fonts" supportstatus="unsupported"/> <!-- reason: opensuse_microos:MicroOS-release -->
<package name="paratype-pt-serif-fonts" supportstatus="unsupported"/> <!-- reason: opensuse_microos:MicroOS-release -->
++++++ unsorted.yml ++++++
--- /var/tmp/diff_new_pack.8QgfFv/_old 2022-12-27 18:37:45.152821606 +0100
+++ /var/tmp/diff_new_pack.8QgfFv/_new 2022-12-27 18:37:45.172821723 +0100
@@ -8144,7 +8144,6 @@
- jupyter-nbdime-git
- jupyter-nbdime-hg
- jupyter-nbdime-jupyterlab
- - jupyter-nbformat
- jupyter-notebook
- jupyter-notebook-filesystem
- jupyter-notebook-lang
@@ -19103,7 +19102,6 @@
- pam_snapper
- pam_ssh_agent_auth
- pam_u2f
- - pam_unix-32bit: [x86_64]
- pam_userpass
- pam_userpass-32bit: [x86_64]
- pam_wrapper
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000release-packages for openSUSE:Factory checked in at 2022-12-27 18:37:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000release-packages (Old)
and /work/SRC/openSUSE:Factory/.000release-packages.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000release-packages"
Tue Dec 27 18:37:37 2022 rev:2020 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
openSUSE-Addon-NonOss-release.spec: same change
openSUSE-release.spec: same change
stub.spec: same change
++++++ weakremovers.inc ++++++
--- /var/tmp/diff_new_pack.ZtC97F/_old 2022-12-27 18:37:40.968797207 +0100
+++ /var/tmp/diff_new_pack.ZtC97F/_new 2022-12-27 18:37:40.976797253 +0100
@@ -6690,6 +6690,8 @@
Provides: weakremover(jupyter-jupytext)
Provides: weakremover(jupyter-jupytext-jupyterlab)
Provides: weakremover(jupyter-nbconvert-doc)
+Provides: weakremover(jupyter-nbformat)
+Provides: weakremover(jupyter-nbformat-doc)
Provides: weakremover(jupyter-nbinteract)
Provides: weakremover(jupyter-nbpresent)
Provides: weakremover(jupyter-notebook-shim)
@@ -9059,6 +9061,7 @@
Provides: weakremover(libfaxutil7_0_2)
Provides: weakremover(libfaxutil7_0_3)
Provides: weakremover(libfaxutil7_0_4)
+Provides: weakremover(libfaxutil7_0_5)
Provides: weakremover(libfbclient-devel)
Provides: weakremover(libfbclient2)
Provides: weakremover(libfcft3)
@@ -13794,7 +13797,6 @@
Provides: weakremover(pam-modules)
Provides: weakremover(pam-python)
Provides: weakremover(pam_cap)
-Provides: weakremover(pam_unix-nis)
Provides: weakremover(paman)
Provides: weakremover(pandoc-pdf)
Provides: weakremover(pangomm1_4-doc)
@@ -32089,7 +32091,6 @@
Provides: weakremover(pam-deprecated-32bit)
Provides: weakremover(pam-modules-32bit)
Provides: weakremover(pam_cap-32bit)
-Provides: weakremover(pam_unix-nis-32bit)
Provides: weakremover(parpack-openmpi-devel-32bit)
Provides: weakremover(pattern:SUSE-MicroOS-apparmor)
Provides: weakremover(pattern:SUSE-MicroOS-hardware)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000release-packages for openSUSE:Factory checked in at 2022-12-27 12:42:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000release-packages (Old)
and /work/SRC/openSUSE:Factory/.000release-packages.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000release-packages"
Tue Dec 27 12:42:59 2022 rev:2019 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ MicroOS-release.spec ++++++
--- /var/tmp/diff_new_pack.4vaeX8/_old 2022-12-27 12:43:02.015401609 +0100
+++ /var/tmp/diff_new_pack.4vaeX8/_new 2022-12-27 12:43:02.019401632 +0100
@@ -17,7 +17,7 @@
Name: MicroOS-release
-Version: 20221226
+Version: 20221227
Release: 0
Summary: openSUSE MicroOS
License: GPL-2.0-or-later
@@ -176,9 +176,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = MicroOS
-Provides: product(MicroOS) = 20221226-0
+Provides: product(MicroOS) = 20221227-0
Provides: product-label() = openSUSE%20MicroOS
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Amicroos%3A20221226
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Amicroos%3A20221227
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(MicroOS)
@@ -194,7 +194,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(MicroOS) = 20221226-0
+Provides: product_flavor(MicroOS) = 20221227-0
Summary: openSUSE MicroOS%{?betaversion: %{betaversion}}
%description dvd
@@ -210,7 +210,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(MicroOS) = 20221226-0
+Provides: product_flavor(MicroOS) = 20221227-0
Summary: openSUSE MicroOS%{?betaversion: %{betaversion}}
%description appliance
@@ -274,11 +274,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>MicroOS</name>
- <version>20221226</version>
+ <version>20221227</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:microos:20221226</cpeid>
+ <cpeid>cpe:/o:opensuse:microos:20221227</cpeid>
<productline>MicroOS</productline>
<register>
<pool>
++++++ openSUSE-Addon-NonOss-release.spec ++++++
--- /var/tmp/diff_new_pack.4vaeX8/_old 2022-12-27 12:43:02.047401788 +0100
+++ /var/tmp/diff_new_pack.4vaeX8/_new 2022-12-27 12:43:02.055401833 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package openSUSE-Addon-NonOss-release (Version 20221226)
+# spec file for package openSUSE-Addon-NonOss-release (Version 20221227)
#
# Copyright (c) 2022 openSUSE.
#
@@ -16,7 +16,7 @@
Name: openSUSE-Addon-NonOss-release
%define product openSUSE-Addon-NonOss
Summary: openSUSE NonOSS Addon%{?betaversion: %{betaversion}}
-Version: 20221226
+Version: 20221227
Release: 0
License: BSD-3-Clause
Group: System/Fhs
@@ -24,9 +24,9 @@
Provides: %name-%version
Provides: product() = openSUSE%2DAddon%2DNonOss
-Provides: product(openSUSE-Addon-NonOss) = 20221226-0
+Provides: product(openSUSE-Addon-NonOss) = 20221227-0
Provides: product-label() = non%20oss%20addon
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20221226
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20221227
AutoReqProv: on
@@ -49,10 +49,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE-Addon-NonOss</name>
- <version>20221226</version>
+ <version>20221227</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20221226</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20221227</cpeid>
<register>
<pool>
</pool>
++++++ openSUSE-release.spec ++++++
--- /var/tmp/diff_new_pack.4vaeX8/_old 2022-12-27 12:43:02.083401991 +0100
+++ /var/tmp/diff_new_pack.4vaeX8/_new 2022-12-27 12:43:02.087402013 +0100
@@ -20,7 +20,7 @@
#define betaversion %{nil}
%define codename Tumbleweed
Name: openSUSE-release
-Version: 20221226
+Version: 20221227
Release: 0
# 0 is the product release, not the build release of this package
Summary: openSUSE Tumbleweed
@@ -180,7 +180,7 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = openSUSE
-Provides: product(openSUSE) = 20221226-0
+Provides: product(openSUSE) = 20221227-0
%ifarch x86_64
Provides: product-register-target() = openSUSE%2DTumbleweed%2Dx86_64
%endif
@@ -194,7 +194,7 @@
Provides: product-register-target() = openSUSE%2DTumbleweed%2Daarch64
%endif
Provides: product-label() = openSUSE
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20221226
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20221227
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-url(repository) = http%3A%2F%2Fdownload.opensuse.org%2Ftumbleweed%2Frepo%2Foss%2F
Requires: product_flavor(openSUSE)
@@ -208,7 +208,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(ftp)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description ftp
@@ -223,7 +223,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(mini)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description mini
@@ -238,7 +238,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description dvd
@@ -253,7 +253,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-kde)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-kde
@@ -268,7 +268,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-x11)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-x11
@@ -283,7 +283,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-gnome)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-gnome
@@ -298,7 +298,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-xfce)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-xfce
@@ -313,7 +313,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-kde)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-kde
@@ -328,7 +328,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-gnome)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-gnome
@@ -343,7 +343,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-x11)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-x11
@@ -358,7 +358,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance
@@ -373,7 +373,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-docker)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-docker
@@ -388,7 +388,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-kvm)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-kvm
@@ -403,7 +403,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-vmware)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-vmware
@@ -418,7 +418,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-openstack)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-openstack
@@ -433,7 +433,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-hyperv)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-hyperv
@@ -448,7 +448,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-vagrant)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-vagrant
@@ -463,7 +463,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-wsl)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-wsl
@@ -478,7 +478,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-custom)
-Provides: product_flavor(openSUSE) = 20221226-0
+Provides: product_flavor(openSUSE) = 20221227-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-custom
@@ -557,10 +557,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20221226</version>
+ <version>20221227</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse:20221226</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse:20221227</cpeid>
<productline>openSUSE</productline>
<register>
<pool>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package hylafax+ for openSUSE:Factory checked in at 2022-12-27 11:55:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hylafax+ (Old)
and /work/SRC/openSUSE:Factory/.hylafax+.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hylafax+"
Tue Dec 27 11:55:04 2022 rev:43 rq:1045467 version:7.0.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/hylafax+/hylafax+.changes 2022-06-08 14:24:48.932494525 +0200
+++ /work/SRC/openSUSE:Factory/.hylafax+.new.1563/hylafax+.changes 2022-12-27 11:55:15.227378608 +0100
@@ -1,0 +2,15 @@
+Mon Dec 26 15:10:02 UTC 2022 - Axel Braun <axel.braun(a)gmx.de>
+
+- version 7.0.6
+ * add support for libtiff v4.4 (10 Jun 2022)
+ * libtiff44.diff removed
+ * cope with SSL Fax senders who skip Phase C (5 May 2022)
+ * add ability to trace SSL Fax data reception (3 May 2022)
+ * handle timeout OK response to +FRH=3 and +FRM=n (25 Apr 2022)
+ * don't leave the modem waiting for a response when in SSL Fax (25 Apr 2022)
+ * improve recovery from unexpected SSL Fax terminations during ECM (15, 18, 26 Apr 2022)
+ * try to cope with false "no dialtone" results (4, 8 Apr 2022)
+ * add initial support for SSL Fax Proxy servers (4, 23 Feb; 4, 19 Apr; 10, 24 Jun 2022)
+ * buildrequirement for libssl added (Thanks Dimstar)
+
+-------------------------------------------------------------------
Old:
----
hylafax-7.0.5.tar.gz
libtiff44.diff
New:
----
hylafax-7.0.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ hylafax+.spec ++++++
--- /var/tmp/diff_new_pack.9D8tp4/_old 2022-12-27 11:55:15.983382813 +0100
+++ /var/tmp/diff_new_pack.9D8tp4/_new 2022-12-27 11:55:15.991382857 +0100
@@ -19,7 +19,7 @@
%global faxspool %{_localstatedir}/spool/hylafax
%define lib_version %(echo %{version} | tr \. _)
Name: hylafax+
-Version: 7.0.5
+Version: 7.0.6
Release: 0
Summary: A fax server
License: BSD-3-Clause
@@ -41,8 +41,6 @@
Source15: hylafax-service.xml
Source16: hylafax-helper.xml
-Patch0: libtiff44.diff
-
BuildRequires: firewalld
BuildRequires: gcc-c++
BuildRequires: ghostscript
@@ -56,6 +54,7 @@
# needed together with devel for proper configure detection
BuildRequires: tiff
BuildRequires: pkgconfig(lcms2)
+BuildRequires: pkgconfig(libssl)
BuildRequires: pkgconfig(libtiff-4)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(zlib)
@@ -107,8 +106,6 @@
%prep
%setup -q -n hylafax-%{version}
-%autopatch -p1
-
cp %{SOURCE8} .
cp %{SOURCE9} .
++++++ hylafax-7.0.5.tar.gz -> hylafax-7.0.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/CHANGES new/hylafax-7.0.6/CHANGES
--- old/hylafax-7.0.5/CHANGES 2021-12-05 05:53:43.000000000 +0100
+++ new/hylafax-7.0.6/CHANGES 2022-06-24 21:36:27.000000000 +0200
@@ -2,6 +2,17 @@
New Changes
+* add support for libtiff v4.4 (10 Jun 2022)
+* cope with SSL Fax senders who skip Phase C (5 May 2022)
+* add ability to trace SSL Fax data reception (3 May 2022)
+* handle timeout OK response to +FRH=3 and +FRM=n (25 Apr 2022)
+* don't leave the modem waiting for a response when in SSL Fax (25 Apr 2022)
+* improve recovery from unexpected SSL Fax terminations during ECM (15, 18, 26 Apr 2022)
+* try to cope with false "no dialtone" results (4, 8 Apr 2022)
+* add initial support for SSL Fax Proxy servers (4, 23 Feb; 4, 19 Apr; 10, 24 Jun 2022)
+
+(7.0.5)
+
* extend Class1RecvAbortOK = 0 timeout to 500 ms (4 Dec 2021)
* cope with Si2435 V.34/V.8 connection glitch (17, 19 Nov 2021)
* cope with spurious +FCERROR or other delayed messages from modem (26 Oct 2021)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/VERSION new/hylafax-7.0.6/VERSION
--- old/hylafax-7.0.5/VERSION 2021-09-08 04:03:25.000000000 +0200
+++ new/hylafax-7.0.6/VERSION 2022-02-23 23:56:08.000000000 +0100
@@ -1 +1 @@
-7.0.5
+7.0.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/configure new/hylafax-7.0.6/configure
--- old/hylafax-7.0.5/configure 2021-07-25 23:16:27.000000000 +0200
+++ new/hylafax-7.0.6/configure 2022-06-10 16:21:28.000000000 +0200
@@ -2583,7 +2583,7 @@
echo '#define TIFFSTRIPBYTECOUNTS uint32_t'
echo '#define TIFFVERSION TIFF_VERSION'
echo '#define TIFFHEADER TIFFHeader';;
- 4.[0123]) tiff_runlen_t="uint32_t"
+ 4.[01234]) tiff_runlen_t="uint32_t"
tiff_offset_t="uint64_t"
echo '#define TIFFSTRIPBYTECOUNTS uint64_t'
echo '#define TIFFVERSION TIFF_VERSION_CLASSIC'
@@ -2625,7 +2625,7 @@
Incompatible TIFF Library.
HylaFAX ${VERSION} requires TIFF software distribution versions 3.4 through
-4.0. If you do not have up to date TIFF software on your system
+4.4. If you do not have up to date TIFF software on your system
then you can retrieve it from the location where you obtained this software.
The Home Page for version 3.5 and later is http://www.remotesensing.org/libtiff/
EOF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/etc/faxsetup.sh.in new/hylafax-7.0.6/etc/faxsetup.sh.in
--- old/hylafax-7.0.5/etc/faxsetup.sh.in 2021-10-12 21:39:04.000000000 +0200
+++ new/hylafax-7.0.6/etc/faxsetup.sh.in 2022-06-09 01:48:18.000000000 +0200
@@ -2128,7 +2128,7 @@
echo
fi
if isOK "$ok"; then
- $OPENSSL req -x509 -nodes -days 9999 -newkey rsa:1024 -keyout $DIR_SPOOL/etc/ssl.pem -out $DIR_SPOOL/etc/ssl.pem
+ $OPENSSL req -x509 -nodes -days 9999 -newkey rsa:2048 -keyout $DIR_SPOOL/etc/ssl.pem -out $DIR_SPOOL/etc/ssl.pem
$CHOWN $faxUID $DIR_SPOOL/etc/ssl.pem; $CHGRP $faxGID $DIR_SPOOL/etc/ssl.pem
else
echo "Skipping creation of etc/ssl.pem for SSL Fax."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/Class1.c++ new/hylafax-7.0.6/faxd/Class1.c++
--- old/hylafax-7.0.5/faxd/Class1.c++ 2021-12-05 05:52:46.000000000 +0100
+++ new/hylafax-7.0.6/faxd/Class1.c++ 2022-05-05 18:37:22.000000000 +0200
@@ -311,8 +311,8 @@
useSSLFax = false;
isSSLFax = false;
suppressSSLFax = false;
+ usingSSLFaxProxy = false;
setSSLFaxFd(0);
- if (sslWatchModem) abortReceive();
sslWatchModem = false;
wasSSLFax = true;
}
@@ -382,6 +382,7 @@
isSSLFax = false;
wasSSLFax = false;
suppressSSLFax = false;
+ usingSSLFaxProxy = false;
remoteCSAinfo = "";
sslFaxPasscode = randomString(10);
remoteCSAType = 0x00;
@@ -410,6 +411,7 @@
isSSLFax = false;
wasSSLFax = false;
suppressSSLFax = false;
+ usingSSLFaxProxy = false;
sslRcvCC = sslRcvNext = sslRcvBit = sslGotByte = 0;
sslSawBlockEnd = false;
sslWatchModem = false;
@@ -538,7 +540,7 @@
* T.30 5.3.6.2.12.
*/
void
-Class1Modem::encodeCSA(fxStr& binary, const fxStr& ascii)
+Class1Modem::encodeCSA(fxStr& binary, const fxStr& ascii, bool haspasscode)
{
u_int n = ascii.length();
if (n > 60) {
@@ -547,8 +549,10 @@
return;
}
fxStr url = ascii;
- url.insert('@');
- url.insert(sslFaxPasscode);
+ if (!haspasscode) {
+ url.insert('@');
+ url.insert(sslFaxPasscode);
+ }
url.insert("ssl://");
n = url.length();
u_int i, j = 0;
@@ -719,8 +723,8 @@
protoTrace("SSL FAX WRITE ERROR: %s", (const char*) sslFaxProcess.emsg);
useSSLFax = false;
isSSLFax = false;
+ usingSSLFaxProxy = false;
setSSLFaxFd(0);
- if (sslWatchModem) abortReceive();
sslWatchModem = false;
wasSSLFax = true;
params.br = storedBitrate;
@@ -750,6 +754,7 @@
if (wasSSLFax) {
// the abort already happened
wasSSLFax = false;
+ setTimeout(false);
return;
}
bool b = wasTimeout();
@@ -817,13 +822,16 @@
SSLFax sfp;
int r = sfp.read(sslFaxProcess, buf, 1, (sslWatchModem ? getModemFd() : 0), (ms ? ms : 60000));
if (r > 0) {
+ if (getSSLFaxTracing()) protoTrace("--> SSL Fax <%u:%.2X>", r, (buf[0] & 0xFF));
+ memmove(sslFaxPastData, sslFaxPastData+1, 10);
+ sslFaxPastData[10] = buf[0] & 0xFF;
return (buf[0] & 0xFF);
}
protoTrace("SSL FAX READ ERROR: %s", (const char*) sslFaxProcess.emsg);
useSSLFax = false;
isSSLFax = false;
+ usingSSLFaxProxy = false;
setSSLFaxFd(0);
- if (r != -1 && sslWatchModem) abortReceive();
sslWatchModem = false;
wasSSLFax = true;
params.br = storedBitrate;
@@ -866,8 +874,11 @@
}
// enable this to simulate a VERY noisy connection
// if (((int) Sys::now() & 1) && ((random() % 10000)/10000.0) > 0.95) return (1);
- if (sslGotByte == EOF) return (EOF);
- else if (sslGotByte & (0x80 >> --sslRcvBit)) return (1);
+ if (sslGotByte == EOF) {
+ sslSawBlockEnd = true;
+ sawBlockEnd();
+ return (EOF);
+ } else if (sslGotByte & (0x80 >> --sslRcvBit)) return (1);
else return (0);
}
@@ -1760,7 +1771,7 @@
}
}
} while (((u_int) Sys::now()-start < howmany(conf.t1Timer, 1000)) && !wasTimeout() &&
- (lastResponse == AT_FCERROR || lastResponse == AT_NOCARRIER || (lastResponse == AT_ERROR && onhooks <= conf.class1HookSensitivity)));
+ (lastResponse == AT_FCERROR || lastResponse == AT_NOCARRIER || lastResponse == AT_OK || (lastResponse == AT_ERROR && onhooks <= conf.class1HookSensitivity)));
}
if (readPending) {
stopTimeout("waiting for HDLC flags");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/Class1.h new/hylafax-7.0.6/faxd/Class1.h
--- old/hylafax-7.0.5/faxd/Class1.h 2021-07-25 23:16:27.000000000 +0200
+++ new/hylafax-7.0.6/faxd/Class1.h 2022-05-05 18:37:22.000000000 +0200
@@ -143,8 +143,10 @@
bool isSSLFax; // whether or not SSL Fax handshaking succeeded
bool wasSSLFax; // whether or not SSL Fax handshaking succeeded before
bool suppressSSLFax; // whether or not to suspend SSL Fax for this session
+ bool usingSSLFaxProxy; // whether or not an SSL Fax proxy is used
fxStr remoteCSAinfo; // remote CSA string (host:port)
u_char remoteCSAType; // remote CSA type
+ u_char sslFaxPastData[11]; // most recent 11 bytes of received SSL Fax data
#if defined(HAVE_SSL)
SSLFaxProcess sslFaxProcess;// contains data about SSL Fax process
#endif
@@ -200,7 +202,7 @@
virtual bool atCmd(const fxStr& cmd, ATResponse = AT_OK, long ms = 30*1000);
bool switchingPause(fxStr& emsg, u_int times = 1);
void encodeTSI(fxStr& binary, const fxStr& ascii);
- void encodeCSA(fxStr& binary, const fxStr& ascii);
+ void encodeCSA(fxStr& binary, const fxStr& ascii, bool haspasscode);
void encodeNSF(fxStr& binary, const fxStr& ascii);
const fxStr& decodeTSI(fxStr& ascii, const HDLCFrame& binary);
const fxStr& decodeCSA(fxStr& ascii, const HDLCFrame& binary);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/Class1Recv.c++ new/hylafax-7.0.6/faxd/Class1Recv.c++
--- old/hylafax-7.0.5/faxd/Class1Recv.c++ 2021-10-20 01:11:46.000000000 +0200
+++ new/hylafax-7.0.6/faxd/Class1Recv.c++ 2022-06-10 17:43:32.000000000 +0200
@@ -584,7 +584,7 @@
if (sslFaxProcess.emsg != "") protoTrace("SSL Fax: \"%s\"", (const char*) sslFaxProcess.emsg);
if (!sslFaxProcess.server) {
protoTrace("SSL Fax connection failed.");
- if (!conf.class1SSLFaxInfo.length()) useSSLFax = false;
+ if (!conf.class1SSLFaxInfo.length() && !conf.class1SSLFaxProxy.length()) useSSLFax = false;
} else {
protoTrace("SSL Fax connection was successful.");
ok = true;
@@ -748,7 +748,7 @@
if (sslFaxProcess.emsg != "") protoTrace("SSL Fax: \"%s\"", (const char*) sslFaxProcess.emsg);
if (!sslFaxProcess.server) {
protoTrace("SSL Fax connection failed.");
- if (!conf.class1SSLFaxInfo.length()) useSSLFax = false;
+ if (!conf.class1SSLFaxInfo.length() && !conf.class1SSLFaxProxy.length()) useSSLFax = false;
} else {
protoTrace("SSL Fax connection was successful.");
isSSLFax = true;
@@ -757,9 +757,38 @@
}
}
- if (!isSSLFax && useSSLFax && conf.class1SSLFaxInfo.length()) {
+ if (!isSSLFax && useSSLFax && (conf.class1SSLFaxInfo.length() || conf.class1SSLFaxProxy.length())) {
SSLFax sslfax;
- sslFaxProcess = sslfax.startServer(conf.class1SSLFaxInfo, conf.class1SSLFaxCert);
+ fxStr info = conf.class1SSLFaxInfo;
+ bool haspasscode = false;
+ if (conf.class1SSLFaxInfo.length()) {
+ sslFaxProcess = sslfax.startServer(conf.class1SSLFaxInfo, conf.class1SSLFaxCert);
+ } else {
+ u_int atpos = conf.class1SSLFaxProxy.next(0, '@');
+ fxStr passcode;
+ if (atpos < conf.class1SSLFaxProxy.length()) {
+ passcode = conf.class1SSLFaxProxy.extract(0, atpos);
+ } else {
+ passcode = "";
+ atpos = -1;
+ }
+ fxStr hostport = conf.class1SSLFaxProxy.extract(atpos+1, conf.class1SSLFaxProxy.length()-atpos-1);
+ protoTrace("Connecting to SSL Fax Proxy %s", (const char*) conf.class1SSLFaxProxy);
+
+ sslFaxProcess = sslfax.startClient(hostport, passcode, rtcRev, conf.class1SSLFaxServerTimeout);
+ if (sslFaxProcess.server) {
+ info = "";
+ haspasscode = true;
+ char buf[2];
+ int r;
+ do {
+ r = sslfax.read(sslFaxProcess, buf, 1, 0, 1000);
+ if (r > 0 && buf[0] != 0) info.append( buf[0]&0xFF );
+ } while (r > 0 && (buf[0]&0xFF) != 0);
+ protoTrace("Proxy SSL Fax info: \"%s\"", (const char*) info);
+ usingSSLFaxProxy = true;
+ }
+ }
if (sslFaxProcess.emsg.length()) protoTrace("SSL Fax: \"%s\"", (const char*) sslFaxProcess.emsg);
if (sslFaxProcess.server == 0 ) {
setSSLFaxFd(0);
@@ -767,7 +796,7 @@
}
if (useSSLFax) {
fxStr csa;
- encodeCSA(csa, conf.class1SSLFaxInfo);
+ encodeCSA(csa, info, haspasscode);
protoTrace("Send CSA frame to accept HylaFAX SSL fax feature.");
startTimeout(7550);
transmitFrame(FCF_CSA|FCF_RCVR, csa, false);
@@ -846,7 +875,7 @@
do {
(void) atCmd(rmCmd, AT_NOTHING);
rmResponse = atResponse(rbuf, conf.class1RMPersistence ? conf.t2Timer + 2900 : conf.t2Timer - 2900);
- } while ((rmResponse == AT_NOTHING || rmResponse == AT_FCERROR) && ++attempts < conf.class1RMPersistence && !getSSLFaxConnection());
+ } while ((rmResponse == AT_NOTHING || rmResponse == AT_FCERROR || rmResponse == AT_OK) && ++attempts < conf.class1RMPersistence && !getSSLFaxConnection());
#if defined(HAVE_SSL)
if (useSSLFax) {
SSLFax sslfax;
@@ -857,19 +886,23 @@
sslWatchModem = false;
setSSLFaxFd(0);
} else {
- protoTrace("SSL Fax connection detected.");
- sslfax.acceptClient(sslFaxProcess, sslFaxPasscode, getModemFd(), conf.class1SSLFaxClientTimeout);
- if (sslFaxProcess.emsg != "") protoTrace("SSL Fax accept client: %s", (const char*) sslFaxProcess.emsg);
+ if (!usingSSLFaxProxy) {
+ protoTrace("SSL Fax connection detected.");
+ sslfax.acceptClient(sslFaxProcess, sslFaxPasscode, getModemFd(), conf.class1SSLFaxClientTimeout);
+ if (sslFaxProcess.emsg != "") protoTrace("SSL Fax accept client: %s", (const char*) sslFaxProcess.emsg);
+ }
+ sslWatchModem = false;
+ setSSLFaxFd(0);
if (!sslFaxProcess.server) {
protoTrace("SSL Fax client accept failure. Expecting a traditional fax now.");
sslfax.cleanup(sslFaxProcess);
useSSLFax = false;
- sslWatchModem = false;
- setSSLFaxFd(0);
do {
rmResponse = atResponse(rbuf, conf.class1RMPersistence ? conf.t2Timer + 2900 : conf.t2Timer - 2900);
} while ((rmResponse == AT_NOTHING || rmResponse == AT_FCERROR) && ++attempts < conf.class1RMPersistence && atCmd(rmCmd, AT_NOTHING));
} else {
+ abortReceive();
+ setSSLFaxFd(sslFaxProcess.server);
isSSLFax = true;
storedBitrate = params.br;
params.br = BR_SSLFAX;
@@ -1470,7 +1503,7 @@
do {
(void) atCmd(rmCmd, AT_NOTHING);
lastResponse = atResponse(rbuf, conf.class1RMPersistence ? conf.t2Timer + 2900 : conf.t2Timer - 2900);
- } while ((lastResponse == AT_NOTHING || lastResponse == AT_FCERROR) && ++attempts < conf.class1RMPersistence && !getSSLFaxConnection());
+ } while ((lastResponse == AT_NOTHING || lastResponse == AT_FCERROR || lastResponse == AT_OK) && ++attempts < conf.class1RMPersistence && !getSSLFaxConnection());
#if defined(HAVE_SSL)
if (useSSLFax) {
SSLFax sslfax;
@@ -1481,19 +1514,23 @@
sslWatchModem = false;
setSSLFaxFd(0);
} else {
- protoTrace("SSL Fax connection detected.");
- sslfax.acceptClient(sslFaxProcess, sslFaxPasscode, getModemFd(), conf.class1SSLFaxClientTimeout);
- if (sslFaxProcess.emsg != "") protoTrace("SSL Fax accept client: %s", (const char*) sslFaxProcess.emsg);
+ if (!usingSSLFaxProxy) {
+ protoTrace("SSL Fax connection detected.");
+ sslfax.acceptClient(sslFaxProcess, sslFaxPasscode, getModemFd(), conf.class1SSLFaxClientTimeout);
+ if (sslFaxProcess.emsg != "") protoTrace("SSL Fax accept client: %s", (const char*) sslFaxProcess.emsg);
+ }
+ sslWatchModem = false;
+ setSSLFaxFd(0);
if (!sslFaxProcess.server) {
protoTrace("SSL Fax client accept failure. Expecting a traditional fax now.");
sslfax.cleanup(sslFaxProcess);
useSSLFax = false;
- sslWatchModem = false;
- setSSLFaxFd(0);
do {
lastResponse = atResponse(rbuf, conf.class1RMPersistence ? conf.t2Timer + 2900 : conf.t2Timer - 2900);
} while ((lastResponse == AT_NOTHING || lastResponse == AT_FCERROR) && ++attempts < conf.class1RMPersistence && atCmd(rmCmd, AT_NOTHING));
} else {
+ abortReceive();
+ setSSLFaxFd(sslFaxProcess.server);
isSSLFax = true;
storedBitrate = params.br;
params.br = BR_SSLFAX;
@@ -1633,17 +1670,20 @@
sslWatchModem = false;
setSSLFaxFd(0);
} else {
- protoTrace("SSL Fax connection detected.");
- sslfax.acceptClient(sslFaxProcess, sslFaxPasscode, getModemFd(), conf.class1SSLFaxClientTimeout);
- if (sslFaxProcess.emsg != "") protoTrace("SSL Fax accept client: %s", (const char*) sslFaxProcess.emsg);
+ if (!usingSSLFaxProxy) {
+ protoTrace("SSL Fax connection detected.");
+ sslfax.acceptClient(sslFaxProcess, sslFaxPasscode, getModemFd(), conf.class1SSLFaxClientTimeout);
+ if (sslFaxProcess.emsg != "") protoTrace("SSL Fax accept client: %s", (const char*) sslFaxProcess.emsg);
+ }
+ sslWatchModem = false;
+ setSSLFaxFd(0);
if (!sslFaxProcess.server) {
protoTrace("SSL Fax client accept failure. Expecting a traditional fax now.");
sslfax.cleanup(sslFaxProcess);
useSSLFax = false;
- sslWatchModem = false;
- setSSLFaxFd(0);
gotprimary = waitForDCEChannel(false); // resume V.34-Fax session
} else {
+ setSSLFaxFd(sslFaxProcess.server);
isSSLFax = true;
storedBitrate = params.br;
params.br = BR_SSLFAX;
@@ -1933,7 +1973,7 @@
}
} else {
dataseen = true; // assume that garbage was meant to be data
- if (wasTimeout()) break;
+ if (wasTimeout() || sslSawBlockEnd) break;
if (isSSLFax || !useV34) syncECMFrame();
if ((!isSSLFax && useV34) && (gotEOT || gotCTRL)) rcpcnt = 3;
}
@@ -1966,7 +2006,7 @@
}
}
}
- if (!isSSLFax && !useV34) {
+ if (!isSSLFax && !useV34 && !sslSawBlockEnd) {
// wait for message carrier to drop
time_t nocarrierstart = Sys::now();
bool gotnocarrier = false;
@@ -1976,6 +2016,8 @@
} while (!gotnocarrier && lastResponse != AT_EMPTYLINE && Sys::now() < (nocarrierstart + 5));
}
bool gotpps = false;
+ sslSawBlockEnd = false;
+ wasSSLFax = false;
HDLCFrame ppsframe(conf.class1FrameOverhead);
u_short recvFrameCount = 0;
do {
@@ -1998,9 +2040,17 @@
* believe that we've hung up. This latter option seems the
* least likely to be problematic, so that's what we're doing.
*/
- u_int br = useV34 ? primaryV34Rate : curcap->br + 1;
- long wait = br >= 1 && br <= 15 ? 273066 / br : conf.t2Timer;
- gotpps = recvFrame(ppsframe, FCF_RCVR, wait, false, false); // wait longer, no CRP
+ if (isSSLFax && fcount == 0 && rcpcnt == 1 && sslFaxPastData[0] == 0xFF && sslFaxPastData[1] == 0x13 && sslFaxPastData[2] == 0xBF) {
+ // For some reason the sender has skipped over Phase C data and sent PPS. Cope as best we can.
+ protoTrace("The sender seems to have skipped Phase C.");
+ for (u_int i = 0; i < 9; i++) ppsframe.put(frameRev[sslFaxPastData[i] & 0xFF]);
+ traceHDLCFrame("-->", ppsframe);
+ gotpps = true;
+ } else {
+ u_int br = useV34 ? primaryV34Rate : curcap->br + 1;
+ long wait = br >= 1 && br <= 15 ? 273066 / br : conf.t2Timer;
+ gotpps = recvFrame(ppsframe, FCF_RCVR, wait, false, false); // wait longer, no CRP
+ }
} while (!gotpps && gotCONNECT && !wasTimeout() && !gotEOT && ++recvFrameCount < 5);
if (gotpps) {
traceFCF("RECV recv", ppsframe.getFCF());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/Class1Send.c++ new/hylafax-7.0.6/faxd/Class1Send.c++
--- old/hylafax-7.0.5/faxd/Class1Send.c++ 2021-11-19 15:29:34.000000000 +0100
+++ new/hylafax-7.0.6/faxd/Class1Send.c++ 2022-04-26 01:33:13.000000000 +0200
@@ -928,12 +928,42 @@
if (!frameSent)
return (false);
#if defined(HAVE_SSL)
- if (!suppressSSLFax && !isSSLFax && conf.class1SSLFaxSupport && conf.class1SSLFaxInfo.length() && \
+ if (!suppressSSLFax && !isSSLFax && conf.class1SSLFaxSupport && \
+ (conf.class1SSLFaxInfo.length() || conf.class1SSLFaxProxy.length()) && \
(dis_caps.features & FaxParams::FEATURE_SSLFAX || (dis_caps.isBitEnabled(FaxParams::BITNUM_T37) && dis_caps.isBitEnabled(FaxParams::BITNUM_T38)))) {
// We can't trust T.38 support indications to indicate that the remote device actually supports TSA frames.
useSSLFax = true;
SSLFax sslfax;
- sslFaxProcess = sslfax.startServer(conf.class1SSLFaxInfo, conf.class1SSLFaxCert);
+ fxStr info = conf.class1SSLFaxInfo;
+ bool haspasscode = false;
+ if (conf.class1SSLFaxInfo.length()) {
+ sslFaxProcess = sslfax.startServer(conf.class1SSLFaxInfo, conf.class1SSLFaxCert);
+ } else {
+ int atpos = conf.class1SSLFaxProxy.next(0, '@');
+ fxStr passcode;
+ if (atpos < conf.class1SSLFaxProxy.length()) {
+ passcode = conf.class1SSLFaxProxy.extract(0, atpos);
+ } else {
+ passcode = "";
+ atpos = -1;
+ }
+ fxStr hostport = conf.class1SSLFaxProxy.extract(atpos+1, conf.class1SSLFaxProxy.length()-atpos-1);
+ protoTrace("Connecting to SSL Fax Proxy %s", (const char*) conf.class1SSLFaxProxy);
+
+ sslFaxProcess = sslfax.startClient(hostport, passcode, rtcRev, conf.class1SSLFaxServerTimeout);
+ if (sslFaxProcess.server) {
+ info = "";
+ haspasscode = true;
+ char buf[2];
+ int r;
+ do {
+ r = sslfax.read(sslFaxProcess, buf, 1, 0, 1000);
+ if (r > 0 && buf[0] != 0) info.append( buf[0]&0xFF );
+ } while (r > 0 && (buf[0]&0xFF) != 0);
+ protoTrace("Proxy SSL Fax info: \"%s\"", (const char*) info);
+ usingSSLFaxProxy = true;
+ }
+ }
if (sslFaxProcess.emsg.length()) protoTrace("SSL Fax: \"%s\"", (const char*) sslFaxProcess.emsg);
if (sslFaxProcess.server == 0 ) {
setSSLFaxFd(0);
@@ -941,7 +971,7 @@
}
if (useSSLFax) {
fxStr tsa;
- encodeCSA(tsa, conf.class1SSLFaxInfo);
+ encodeCSA(tsa, info, haspasscode);
protoTrace("Sending TSA frame to initiate HylaFAX SSL fax feature.");
startTimeout(7550);
frameSent = sendFrame(FCF_TSA|FCF_SNDR, tsa, false);
@@ -1174,18 +1204,21 @@
sslWatchModem = false;
setSSLFaxFd(0);
} else {
- protoTrace("SSL Fax connection detected.");
- sslfax.acceptClient(sslFaxProcess, sslFaxPasscode, getModemFd(), conf.class1SSLFaxClientTimeout);
- if (sslFaxProcess.emsg != "") protoTrace("SSL Fax accept client: %s", (const char*) sslFaxProcess.emsg);
+ if (!usingSSLFaxProxy) {
+ protoTrace("SSL Fax connection detected.");
+ sslfax.acceptClient(sslFaxProcess, sslFaxPasscode, getModemFd(), conf.class1SSLFaxClientTimeout);
+ if (sslFaxProcess.emsg != "") protoTrace("SSL Fax accept client: %s", (const char*) sslFaxProcess.emsg);
+ }
+ sslWatchModem = false;
+ setSSLFaxFd(0);
if (!sslFaxProcess.server) {
protoTrace("SSL Fax client accept failure. Proceeding with a traditional fax now.");
sslfax.cleanup(sslFaxProcess);
useSSLFax = false;
- sslWatchModem = false;
- setSSLFaxFd(0);
} else {
+ abortReceive();
+ setSSLFaxFd(sslFaxProcess.server);
isSSLFax = true;
- sslWatchModem = true;
storedBitrate = params.br;
params.br = BR_SSLFAX;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/ClassModem.c++ new/hylafax-7.0.6/faxd/ClassModem.c++
--- old/hylafax-7.0.5/faxd/ClassModem.c++ 2021-10-26 21:40:18.000000000 +0200
+++ new/hylafax-7.0.6/faxd/ClassModem.c++ 2022-04-08 20:37:50.000000000 +0200
@@ -161,7 +161,19 @@
}
}
emsg = "";
- CallStatus cs = (atCmd(dialcmd, AT_NOTHING) ? dialResponse(emsg) : FAILURE);
+ int nodialtones = 0;
+ bool repeat;
+ CallStatus cs;
+ do {
+ repeat = false;
+ cs = (atCmd(dialcmd, AT_NOTHING) ? dialResponse(emsg) : FAILURE);
+ if (cs == NODIALTONE && nodialtones++ < conf.noDialtoneRetries) {
+ repeat = true;
+ sleep(1);
+ atCmd(conf.onHookCmd, AT_OK, 5000);
+ sleep(3);
+ }
+ } while (repeat);
if (cs != OK && emsg == "") {
emsg = callStatus[cs];
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/FaxModem.c++ new/hylafax-7.0.6/faxd/FaxModem.c++
--- old/hylafax-7.0.5/faxd/FaxModem.c++ 2021-07-25 23:16:27.000000000 +0200
+++ new/hylafax-7.0.6/faxd/FaxModem.c++ 2022-05-04 05:38:19.000000000 +0200
@@ -771,6 +771,8 @@
{ return (server.getSessionTracing() & FAXTRACE_HDLC) != 0; }
bool FaxModem::getECMTracing()
{ return (server.getSessionTracing() & FAXTRACE_ECM) != 0; }
+bool FaxModem::getSSLFaxTracing()
+ { return (server.getSessionTracing() & FAXTRACE_SSLFAX) != 0; }
void FaxModem::setSSLFaxFd(int fd)
{ server.setSSLFaxFd(fd); }
int FaxModem::getSSLFaxFd()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/FaxModem.h new/hylafax-7.0.6/faxd/FaxModem.h
--- old/hylafax-7.0.5/faxd/FaxModem.h 2021-07-25 23:16:27.000000000 +0200
+++ new/hylafax-7.0.6/faxd/FaxModem.h 2022-05-04 05:38:19.000000000 +0200
@@ -148,6 +148,7 @@
// server-related stuff
bool getHDLCTracing();
bool getECMTracing();
+ bool getSSLFaxTracing();
void setSSLFaxFd(int fd);
int getModemFd();
int getSSLFaxFd();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/FaxTrace.h new/hylafax-7.0.6/faxd/FaxTrace.h
--- old/hylafax-7.0.5/faxd/FaxTrace.h 2015-07-27 02:46:05.000000000 +0200
+++ new/hylafax-7.0.6/faxd/FaxTrace.h 2022-05-04 05:38:19.000000000 +0200
@@ -48,6 +48,7 @@
const int FAXTRACE_DOCREFS = 0x20000; // document reference handling
const int FAXTRACE_TIFF = 0x40000; // TIFF library msgs
const int FAXTRACE_ECM = 0x80000; // ECM HDLC image data frames
+const int FAXTRACE_SSLFAX = 0x100000; // SSL Fax data
const int FAXTRACE_ANY = 0xffffffff;
const int FAXTRACE_MASK = 0xfffff;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/Makefile.in new/hylafax-7.0.6/faxd/Makefile.in
--- old/hylafax-7.0.5/faxd/Makefile.in 2018-11-09 22:12:30.000000000 +0100
+++ new/hylafax-7.0.6/faxd/Makefile.in 2022-02-04 23:47:09.000000000 +0100
@@ -98,6 +98,8 @@
faxGettyApp.c++ \
faxQueueApp.c++ \
faxSendApp.c++ \
+ sslfaxproxy.c++ \
+ sslfaxproxytest.c++ \
tagtest.c++ \
tsitest.c++ \
pageSendApp.c++
@@ -159,7 +161,7 @@
FAXGETTYOBJS= Getty.o Getty@GETTY@.o faxGettyApp.o
TARGETS=libfaxserver.${DSO} \
faxq faxsend faxgetty pagesend faxqclean \
- tsitest tagtest cqtest choptest
+ sslfaxproxy sslfaxproxytest tsitest tagtest cqtest choptest
default all::
@${MAKE} incdepend
@@ -199,6 +201,10 @@
pagesend:${PAGESENDOBJS} libfaxserver.${DSO} ${LIBS}
${C++F} -o $@ ${PAGESENDOBJS} ${LIBFAXSERVER} ${LDFLAGS}
+sslfaxproxy: sslfaxproxy.o libfaxserver.${DSO} ${LIBS}
+ ${C++F} -o $@ sslfaxproxy.o ${LIBFAXSERVER} ${LDFLAGS}
+sslfaxproxytest: sslfaxproxytest.o libfaxserver.${DSO} ${LIBS}
+ ${C++F} -o $@ sslfaxproxytest.o ${LIBFAXSERVER} ${LDFLAGS}
tagtest: tagtest.o libfaxserver.${DSO} ${LIBS}
${C++F} -o $@ tagtest.o ${LIBFAXSERVER} ${LDFLAGS}
cqtest: cqtest.o libfaxserver.${DSO} ${LIBS}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/ModemConfig.c++ new/hylafax-7.0.6/faxd/ModemConfig.c++
--- old/hylafax-7.0.5/faxd/ModemConfig.c++ 2021-08-16 19:18:24.000000000 +0200
+++ new/hylafax-7.0.6/faxd/ModemConfig.c++ 2022-04-08 20:37:50.000000000 +0200
@@ -172,6 +172,7 @@
{ "tiff2faxcmd", &ModemConfig::tiff2faxCmd, FAX_TIFF2FAXCMD },
{ "class1sslfaxinfo", &ModemConfig::class1SSLFaxInfo, "" },
{ "class1sslfaxcert", &ModemConfig::class1SSLFaxCert, "etc/ssl.pem" },
+{ "class1sslfaxproxy", &ModemConfig::class1SSLFaxProxy, "" },
{ "class2recvdatatrigger", &ModemConfig::class2RecvDataTrigger },
{ "ringdata", &ModemConfig::ringData },
{ "ringfax", &ModemConfig::ringFax },
@@ -212,6 +213,7 @@
{ "modemringsbeforeresponse", &ModemConfig::ringsBeforeResponse, 0 },
{ "modemsoftresetcmddelay", &ModemConfig::softResetCmdDelay, 3000 },
{ "modemnoautoanswercmddelay", &ModemConfig::noAutoAnswerCmdDelay, 0 },
+{ "modemnodialtoneretries", &ModemConfig::noDialtoneRetries, 1 },
{ "class1tcfrecvtimeout", &ModemConfig::class1TCFRecvTimeout, 4500 },
{ "class1recvabortok", &ModemConfig::class1RecvAbortOK, 200 },
{ "class1rmpersistence", &ModemConfig::class1RMPersistence, 2 },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/ModemConfig.h new/hylafax-7.0.6/faxd/ModemConfig.h
--- old/hylafax-7.0.5/faxd/ModemConfig.h 2021-08-16 19:18:24.000000000 +0200
+++ new/hylafax-7.0.6/faxd/ModemConfig.h 2022-04-08 20:37:50.000000000 +0200
@@ -167,6 +167,7 @@
bool class1SSLFaxSupport; // to enable/disable SSL Fax
fxStr class1SSLFaxInfo; // host:port information for "SSL Fax" server feature
fxStr class1SSLFaxCert; // SSL encryption certificate for "SSL Fax" feature
+ fxStr class1SSLFaxProxy; // password@host:port information for "SSL Fax" proxy
fxStr class1TCFRecvHackCmd; // cmd to avoid +FCERROR before TCF
u_int class1TCFRecvTimeout; // timeout receiving TCF
u_int class1RecvAbortOK; // if non-zero, OK sent after recv abort
@@ -255,6 +256,7 @@
u_int maxConsecutiveBadLines; // max consecutive bad lines in page
u_int minAcceptedLineCount; // min accepted number of lines in page
u_int minSpeed; // minimum speed for fax transmits
+ u_int noDialtoneRetries; // maximum number of attempts to get dialtone
bool softRTFCC; // real-time fax compression conversion (software)
bool waitForConnect; // modem sends multiple answer responses
fxStr tagLineFmt; // format string for tag lines
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/sslfax.c++ new/hylafax-7.0.6/faxd/sslfax.c++
--- old/hylafax-7.0.5/faxd/sslfax.c++ 2020-01-31 19:41:10.000000000 +0100
+++ new/hylafax-7.0.6/faxd/sslfax.c++ 2022-02-04 23:47:09.000000000 +0100
@@ -32,6 +32,7 @@
#include <sys/time.h>
#include "sslfax.h"
#include "Sys.h"
+#include "Socket.h"
timeval currentTime() {
timeval curTime;
@@ -89,6 +90,7 @@
addr.sin_family = AF_INET;
addr.sin_port = htons (port);
addr.sin_addr.s_addr = INADDR_ANY;
+
if (bind (sd, (struct sockaddr*)&addr, sizeof (addr)) != 0) {
emsg = fxStr::format("Can't bind port %d: %s", port, strerror(errno));
return 0;
@@ -257,7 +259,7 @@
return (SSL_pending(sfp.ssl));
}
-int SSLFax::read(SSLFaxProcess& sfp, void *buf, size_t count, int modemFd, long ms)
+int SSLFax::read(SSLFaxProcess& sfp, void *buf, size_t count, int modemFd, long ms, bool sustain, bool carryon)
{
/*
* We cannot just use select() on the socket to see if there is data waiting
@@ -326,17 +328,19 @@
}
if (!selret) {
sfp.emsg = fxStr::format("Timeout waiting for SSL Fax read (wanting to %s).", (cerror == SSL_ERROR_WANT_READ ? "read" : "write"));
- cleanup(sfp);
+ cleanup(sfp, sustain);
return (0);
} else if (selret < 0) {
sfp.emsg = fxStr::format("Error waiting for SSL Fax read (wanting to %s): %s", (cerror == SSL_ERROR_WANT_READ ? "read" : "write"), strerror(errno));
- cleanup(sfp);
+ cleanup(sfp, sustain);
return (0);
}
if (modemFd && FD_ISSET(modemFd, &rfds)) {
// The modem got a signal. This probably means that SSL Fax is not happening.
- sfp.emsg = "Modem has data when waiting for SSL Fax read. Terminating SSL Fax.";
- cleanup(sfp);
+ if (!carryon) {
+ sfp.emsg = "Modem has data when waiting for SSL Fax read. Terminating SSL Fax.";
+ cleanup(sfp, sustain);
+ }
return (-1);
}
}
@@ -348,13 +352,13 @@
} else {
sfp.emsg = fxStr::format("Unable to read from SSL Fax connection. Error %d: %s", cerror, ssl_err_string());
}
- cleanup(sfp);
+ cleanup(sfp, sustain);
return (-2);
}
return (ret);
}
-int SSLFax::write(SSLFaxProcess& sfp, const u_char *buf, u_int count, const u_char* bitrev, int modemFd, long ms, bool filter)
+int SSLFax::write(SSLFaxProcess& sfp, const u_char *buf, u_int count, const u_char* bitrev, int modemFd, long ms, bool filter, bool sustain)
{
/*
* Similar approach here as with read() above; however...
@@ -406,17 +410,17 @@
}
if (!selret) {
sfp.emsg = fxStr::format("Timeout waiting for SSL Fax write (wanting to %s).", (cerror == SSL_ERROR_WANT_READ ? "read" : "write"));
- cleanup(sfp);
+ cleanup(sfp, sustain);
return (0);
} else if (selret < 0) {
sfp.emsg = fxStr::format("Error waiting for SSL Fax write (wanting to %s): %s", (cerror == SSL_ERROR_WANT_READ ? "read" : "write"), strerror(errno));
- cleanup(sfp);
+ cleanup(sfp, sustain);
return (0);
}
if (modemFd && FD_ISSET(modemFd, &rfds)) {
// The modem got a signal. This probably means that SSL Fax is not happening.
sfp.emsg = "Modem has data when waiting for SSL Fax write. Terminating SSL Fax.";
- cleanup(sfp);
+ cleanup(sfp, sustain);
return (-1);
}
}
@@ -428,7 +432,7 @@
} else {
sfp.emsg = fxStr::format("Unable to write to SSL Fax connection. Error %d: %s", cerror, ssl_err_string());
}
- cleanup(sfp);
+ cleanup(sfp, sustain);
return (-2);
}
if (filter && buf[pos] == bitrev[16] && !isDLE) {
@@ -439,7 +443,7 @@
isDLE = false;
}
}
- return (ret);
+ return (count);
}
SSLFaxProcess SSLFax::null()
@@ -571,6 +575,9 @@
sfp.emsg = fxStr::format("Could not determine port number from \"%s\", got \"%s\".", (const char*) info, (const char*) port);
return (sfp);
}
+ // portnum = 1 is a special case for dynamic port allocation by the server
+ if (portnum == 1) portnum = 0;
+
SSL_library_init(); /* Initialize the SSL library */
sfp.ctx = InitServerCTX(); /* initialize SSL */
if (sfp.ctx == NULL) {
@@ -599,7 +606,7 @@
return (sfp);
}
-void SSLFax::acceptClient(SSLFaxProcess& sfp, fxStr passcode, int modemFd, long ms)
+bool SSLFax::acceptClient1(SSLFaxProcess& sfp, long ms, bool sustain)
{
/* Now we wait for the client to connect. */
/* We can use select() here without SSL telling us to because SSL hasn't started yet. */
@@ -610,13 +617,13 @@
tv.tv_sec = (int) ms / 1000;
tv.tv_usec = (ms % 1000)*1000;
#if CONFIG_BADSELECTPROTO
- if (!select(sfp.server+1, (int*) &sfd, NULL, NULL, &tv)) {
+ if (!select(sfp.server+1, (int*) &sfd, NULL, NULL, ms == 0 ? NULL : &tv)) {
#else
- if (!select(sfp.server+1, &sfd, NULL, NULL, &tv)) {
+ if (!select(sfp.server+1, &sfd, NULL, NULL, ms == 0 ? NULL : &tv)) {
#endif
sfp.emsg = "Timeout waiting for SSL Fax client connection.";
- cleanup(sfp);
- return;
+ cleanup(sfp, sustain);
+ return (false);
}
/* A client is waiting... */
struct sockaddr_in addr;
@@ -624,8 +631,8 @@
sfp.client = accept(sfp.server, (struct sockaddr*) &addr, &len); /* accept connection as usual */
if (fcntl(sfp.client, F_SETFL, fcntl(sfp.client, F_GETFL, 0) | O_NONBLOCK) == -1) {
sfp.emsg.append("Unable to set client SSL Fax socket to non-blocking.");
- cleanup(sfp);
- return;
+ cleanup(sfp, sustain);
+ return (false);
}
char address[50];
if (inet_ntop(addr.sin_family, &addr.sin_addr, address, 50)) {
@@ -637,6 +644,11 @@
} else {
sfp.emsg = fxStr::format("SSL Fax connection: <unknown address>:%d ", ntohs(addr.sin_port));
}
+ return (true);
+}
+
+void SSLFax::acceptClient2(SSLFaxProcess& sfp, fxStr passcode, int modemFd, long ms, bool sustain)
+{
sfp.ssl = SSL_new(sfp.ctx); /* get new SSL state with context */
SSL_set_fd(sfp.ssl, sfp.client); /* set connection socket to SSL state */
@@ -676,17 +688,17 @@
}
if (!selret) {
sfp.emsg = fxStr::format("Timeout in waiting for SSL Fax accept (wanting to %s).", (cerror == SSL_ERROR_WANT_READ ? "read" : "write"));
- cleanup(sfp);
+ cleanup(sfp, sustain);
return;
} else if (selret < 0) {
sfp.emsg = fxStr::format("Error in waiting for SSL Fax accept (wanting to %s): %s", (cerror == SSL_ERROR_WANT_READ ? "read" : "write"), strerror(errno));
- cleanup(sfp);
+ cleanup(sfp, sustain);
return;
}
if (modemFd && FD_ISSET(modemFd, &rfds)) {
// The modem got a signal. This probably means that SSL Fax is not happening.
sfp.emsg = "Modem has data when waiting for SSL Fax accept. Terminating SSL Fax.";
- cleanup(sfp);
+ cleanup(sfp, sustain);
return;
}
}
@@ -698,7 +710,7 @@
} else {
sfp.emsg = fxStr::format("Unable to accept SSL Fax connection. Error %d: %s", cerror, ssl_err_string());
}
- cleanup(sfp);
+ cleanup(sfp, sustain);
return;
}
@@ -707,12 +719,12 @@
for (u_int i = 0; i < passcode.length(); i++) {
if (read(sfp, p, 1, modemFd, 1000) <= 0) {
sfp.emsg.append(" (passcode)");
- cleanup(sfp);
+ cleanup(sfp, sustain);
return;
}
if (p[0] != passcode[i]) {
sfp.emsg.append("Invalid Passcode");
- cleanup(sfp);
+ cleanup(sfp, sustain);
return;
}
}
@@ -720,23 +732,33 @@
return;
}
-void SSLFax::cleanup(SSLFaxProcess& sfp)
+void SSLFax::acceptClient(SSLFaxProcess& sfp, fxStr passcode, int modemFd, long ms)
+{
+ if (!acceptClient1(sfp, ms)) return;
+ acceptClient2(sfp, passcode, modemFd, (ms == 0) ? 1000 : ms); // Set a reasonable timeout after our indefinite wait for a client connection.
+ return;
+}
+
+void SSLFax::cleanup(SSLFaxProcess& sfp, bool sustain)
{
- if (sfp.ctx) {
- ERR_free_strings(); /* free memory from SSL_load_error_strings */
- EVP_cleanup(); /* free memory from OpenSSL_add_all_algorithms */
- SSL_CTX_free(sfp.ctx); /* release context */
- }
- sfp.ctx = NULL;
sfp.ssl = NULL;
- if (sfp.server) {
- /*
- * This is the client. We want the client-side to shut down
- * first so that the server-side is not left with TIME_WAIT.
- * We'll get the TIME_WAIT on the client-side, and that's okay.
- */
- shutdown(sfp.server, SHUT_RDWR);
- close(sfp.server);
+ if (!sustain) {
+ if (sfp.ctx) {
+ ERR_free_strings(); /* free memory from SSL_load_error_strings */
+ EVP_cleanup(); /* free memory from OpenSSL_add_all_algorithms */
+ SSL_CTX_free(sfp.ctx); /* release context */
+ }
+ sfp.ctx = NULL;
+ if (sfp.server) {
+ /*
+ * This is the client. We want the client-side to shut down
+ * first so that the server-side is not left with TIME_WAIT.
+ * We'll get the TIME_WAIT on the client-side, and that's okay.
+ */
+ shutdown(sfp.server, SHUT_RDWR);
+ close(sfp.server);
+ }
+ sfp.server = 0;
}
if (sfp.client) {
/*
@@ -772,7 +794,6 @@
} while (!done);
close(sfp.client);
}
- sfp.server = 0;
sfp.client = 0;
return;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/sslfax.h new/hylafax-7.0.6/faxd/sslfax.h
--- old/hylafax-7.0.5/faxd/sslfax.h 2020-01-31 19:41:10.000000000 +0100
+++ new/hylafax-7.0.6/faxd/sslfax.h 2022-02-04 23:47:09.000000000 +0100
@@ -58,10 +58,12 @@
SSLFaxProcess startServer(fxStr info, fxStr pemFile);
SSLFaxProcess startClient(fxStr info, fxStr passcode, const u_char* bitrev, long ms);
void acceptClient(SSLFaxProcess& sfp, fxStr passcode, int modemFd, long ms);
- void cleanup(SSLFaxProcess& sfp);
+ bool acceptClient1(SSLFaxProcess& sfp, long ms, bool sustain = false);
+ void acceptClient2(SSLFaxProcess& sfp, fxStr passcode, int modemFd, long ms, bool sustain = false);
+ void cleanup(SSLFaxProcess& sfp, bool sustain = false);
int pending(SSLFaxProcess& sfp);
- int read(SSLFaxProcess& sfp, void *buf, size_t count, int modemFd, long ms);
- int write(SSLFaxProcess& sfp, const u_char *buf, u_int count, const u_char* bitrev, int modemFd, long ms, bool eod);
+ int read(SSLFaxProcess& sfp, void *buf, size_t count, int modemFd, long ms, bool sustain = false, bool carryon = false);
+ int write(SSLFaxProcess& sfp, const u_char *buf, u_int count, const u_char* bitrev, int modemFd, long ms, bool eod, bool sustain = false);
};
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/sslfaxproxy.c++ new/hylafax-7.0.6/faxd/sslfaxproxy.c++
--- old/hylafax-7.0.5/faxd/sslfaxproxy.c++ 1970-01-01 01:00:00.000000000 +0100
+++ new/hylafax-7.0.6/faxd/sslfaxproxy.c++ 2022-06-24 21:36:08.000000000 +0200
@@ -0,0 +1,268 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/socket.h>
+#include <tiffio.h>
+#include <pthread.h>
+#include <sys/time.h>
+
+#include "config.h"
+#if defined(HAVE_SSL)
+#include "Sys.h"
+#include "ClassModem.h"
+#include "sslfax.h"
+
+const u_char* bitrev = TIFFGetBitRevTable(false);
+
+void
+printlog(FILE *fp, const char *fmt, ...)
+{
+ va_list ap;
+ char buf[32];
+ struct timeval tv;
+
+ gettimeofday(&tv, NULL);
+ time_t tt = tv.tv_sec;
+ strftime(buf, sizeof(buf), "[%Y-%m-%d %H:%M:%S", localtime(&tt));
+ fprintf(fp, "%s.%.6ld] ", buf, tv.tv_usec);
+
+ va_start(ap, fmt);
+ vfprintf(fp, fmt, ap);
+ va_end(ap);
+ fflush(fp);
+}
+
+timeval currentTime() {
+ timeval curTime;
+ gettimeofday(&curTime, 0);
+ return curTime;
+}
+
+/*
+ * Data structure for pthread argument for SSLFax endpoint thread.
+ */
+struct sslFaxThreadData {
+ int id, rfd, wfd;
+ SSLFax* sslfax;
+ SSLFaxProcess* sfp;
+};
+
+/*
+ * Wrapper function for SSLFax endpoint thread.
+ */
+void*
+sslFaxThread(void* sd)
+{
+ sslFaxThreadData *s = (sslFaxThreadData*) sd;
+
+ if (fcntl(s->rfd, F_SETFL, fcntl(s->rfd, F_GETFL, 0) | O_NONBLOCK) == -1) {
+ printlog(stderr, "Unable to set pipe read descriptor to non-blocking.\n");
+ return (NULL);
+ }
+
+ char buf[1024];
+ int cc;
+ int loops = 0;
+ while ((cc = s->sslfax->read(*(s->sfp), buf, 1024, s->rfd, 60000, true, true)) != 0) {
+ if (cc > 0) {
+ // Write read buf data to pipe.
+ cc = Sys::write(s->wfd, buf, cc);
+ if (cc <= 0) {
+ s->sfp->emsg = "Error writing to pipe";
+ break;;
+ }
+ } else if (cc == -1) {
+ // Data is waiting to be read from pipe.
+ while ((cc = Sys::read(s->rfd, buf, 1024)) > 0) {
+ loops = 0;
+ cc = s->sslfax->write(*(s->sfp), (u_char*) buf, cc, bitrev, 0, 60000, false, true);
+ if (cc <= 0) {
+ s->sfp->emsg = "Error writing to SSL Fax client";
+ goto done;
+ }
+ }
+ if (cc <= 0) {
+ if (loops++ > 100 || cc == 0 || errno != EAGAIN) {
+ s->sfp->emsg = "Error reading from pipe";
+ break;
+ }
+ }
+ } else {
+ // Some error occurred.
+ break;
+ }
+ }
+done:
+ Sys::close(s->wfd);
+ Sys::close(s->rfd);
+ return (NULL);
+}
+
+char*
+randomString(int len)
+{
+ static char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+ int cs = sizeof(charset) - 1;
+ char* rstr = (char*) malloc((len + 1) * sizeof(char));
+ for (int i = 0; i < len; i++) rstr[i] = charset[rand() % cs];
+ rstr[len] = '\0';
+ return rstr;
+}
+
+void
+pairingThread(SSLFaxProcess* sfp, const char* infohost, const char* pemfile)
+{
+ // we have a client connection for proxy-server service. Now start up the other end...
+
+ SSLFax sslfax;
+ SSLFaxProcess sslFaxProcess2 = sslfax.startServer(":1", pemfile); // "1" indicates randomly assigned port
+
+ if (sslFaxProcess2.server) {
+ struct sockaddr_in data_addr;
+ socklen_t dlen = sizeof (data_addr);
+ if (getsockname(sslFaxProcess2.server, (struct sockaddr *) &data_addr, &dlen) < 0) {
+ printlog(stderr, "getsockname(ctrl): %s\n", strerror(errno));
+ }
+
+ srand(currentTime().tv_sec);
+ const char* passcode = randomString(10);
+
+ fxStr info = fxStr::format("%s@%s:%d", passcode, infohost, ntohs(data_addr.sin_port));
+ printlog(stdout, "Listening for paired client on: %s\n", (const char*) info);
+ const char* infostr = info;
+ int cs = sslfax.write(*sfp, (const u_char*) infostr, info.length(), bitrev, 0, 60000, false);
+ u_char buf[1];
+ buf[0] = 0;
+ cs = sslfax.write(*sfp, buf, 1, bitrev, 0, 60000, false);
+
+ sslfax.acceptClient(sslFaxProcess2, passcode, 0, 120000); // 2 min timeout for connection
+ printlog(stdout, "SSL Fax accept paired client: %s\n", (const char*) sslFaxProcess2.emsg);
+
+ if (sslFaxProcess2.ssl) {
+ // Make a pretty-looking log entry describing the communication path.
+ int str1len = sfp->emsg.next(20, ' ') - 20;
+ int str2len = sslFaxProcess2.emsg.next(20, ' ') - 20;
+ if (str1len > 0 && str2len > 0) {
+ printlog(stdout, "%s <--> %s <--> %s\n", (const char*) sfp->emsg.extract(20, str1len), (const char*) info, (const char*) sslFaxProcess2.emsg.extract(20, str2len));
+ }
+
+ /*
+ * We now have two SSLFax connections, one to each client, and we need simply exchange data
+ * between them. So, we just read bytes from each connection and write them to the other.
+ * To do both concurrently we'll start up a thread and set of pipes for each and pass data
+ * between the two threads.
+ */
+ int pfd1[2]; // read communication pipe for sslFaxProcess1 ("a")
+ int pfd2[2]; // read communication pipe for sslFaxProcess2 ("b")
+ if (pipe(pfd1) >= 0 && pipe(pfd2) >= 0) {
+ pthread_t at;
+ struct sslFaxThreadData *a = (struct sslFaxThreadData *) malloc(sizeof(struct sslFaxThreadData));
+ a->id = 1;
+ a->rfd = pfd1[0];
+ a->wfd = pfd2[1];
+ a->sslfax = &sslfax;
+ a->sfp = sfp;
+ pthread_t bt;
+ struct sslFaxThreadData *b = (struct sslFaxThreadData *) malloc(sizeof(struct sslFaxThreadData));
+ b->id = 2;
+ b->rfd = pfd2[0];
+ b->wfd = pfd1[1];
+ b->sslfax = &sslfax;
+ b->sfp = &sslFaxProcess2;
+ if (pthread_create(&at, NULL, &sslFaxThread, (void *) a) != 0) {
+ printlog(stderr, "Error starting thread a.\n");
+ }
+ if (pthread_create(&bt, NULL, &sslFaxThread, (void *) b) != 0) {
+ printlog(stderr, "Error starting thread b.\n");
+ }
+
+ pthread_join(at, NULL);
+ pthread_join(bt, NULL);
+
+ sslfax.cleanup(sslFaxProcess2, false);
+
+ printlog(stdout, "Terminating connection with client on: %s\n", (const char*) info);
+ } else {
+ printlog(stderr, "Error starting communication pipes.\n");
+ }
+ } else {
+ // Connection failure message would have been shown above.
+ }
+ } else {
+ printlog(stderr, "Error creating pairing SSL Fax service: %s\n", (const char*) sslFaxProcess2.emsg);
+ }
+ return;
+}
+
+int
+main(int argc, char* argv[])
+{
+ if (argc != 4 && argc != 5) {
+ printlog(stderr, "usage: %s port passcode infohost [pemfile]\n", argv[0]);
+ exit(-1);
+ }
+ printlog(stdout, "%s started\n", argv[0]);
+ const char* pemfile;
+ if (argc == 5) pemfile = argv[4];
+ else pemfile = "/var/spool/hylafax/etc/ssl.pem";
+
+ char portstr[7];
+ snprintf(portstr, sizeof(portstr), ":%s", argv[1]);
+
+ bool repeat = true;
+
+ SSLFax sslfax;
+ SSLFaxProcess sfp = sslfax.startServer(portstr, pemfile);
+
+ do {
+ SSLFaxProcess sslFaxProcess;
+ sslFaxProcess.ctx = sfp.ctx;
+ sslFaxProcess.ssl = NULL;
+ sslFaxProcess.emsg = sfp.emsg;
+ sslFaxProcess.server = sfp.server;
+ sslFaxProcess.client = 0;
+
+ if (sslFaxProcess.server && sslfax.acceptClient1(sslFaxProcess, 0, true)) {
+
+ switch (fork()) {
+ case 0: /* child */
+ {
+ sslfax.acceptClient2(sslFaxProcess, argv[2], 0, 1000, true);
+ if (!sslFaxProcess.ssl) {
+ printlog(stderr, "Error accepting SSL Fax client: %s\n", (const char*) sslFaxProcess.emsg);
+ } else {
+ printlog(stdout, "SSL Fax accept client: %s\n", (const char*) sslFaxProcess.emsg);
+ pairingThread(&sslFaxProcess, argv[3], pemfile);
+ }
+ sslfax.cleanup(sslFaxProcess, true);
+ exit(0);
+ }
+ case -1: /* fork failure */
+ printlog(stderr, "Error forking for SSL Fax service.\n");
+ break;
+ default: /* parent */
+ close(sslFaxProcess.client); // close parent thread's handle on the forked client
+ break;
+ }
+
+ } else {
+ printlog(stderr, "Error creating primary SSL Fax service: %s\n", (const char*) sslFaxProcess.emsg);
+ sleep(60);
+ if (!sslFaxProcess.server) {
+ sfp.emsg = "";
+ sfp = sslfax.startServer(portstr, pemfile);
+ }
+ }
+ int wstatus;
+ while (waitpid(-1, &wstatus, WNOHANG) > 0); // clean up defunct child processes
+ } while (repeat);
+
+ exit (0);
+}
+#else
+int
+main(int argc, char* argv[])
+{
+ printlog(stderr, "%s not available due to lack of SSL Fax support.\n", argv[0]);
+ exit (0);
+}
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/faxd/sslfaxproxytest.c++ new/hylafax-7.0.6/faxd/sslfaxproxytest.c++
--- old/hylafax-7.0.5/faxd/sslfaxproxytest.c++ 1970-01-01 01:00:00.000000000 +0100
+++ new/hylafax-7.0.6/faxd/sslfaxproxytest.c++ 2022-02-04 23:47:09.000000000 +0100
@@ -0,0 +1,63 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <tiffio.h>
+
+#include "config.h"
+#include "ClassModem.h"
+#if defined(HAVE_SSL)
+#include "sslfax.h"
+#endif
+
+const u_char* bitrev = TIFFGetBitRevTable(false);
+
+int
+main(int argc, char* argv[])
+{
+ if (argc != 3) {
+ fprintf(stderr, "usage: %s info passcode\n", argv[0]);
+ exit(-1);
+ }
+
+ SSLFax sslfax;
+ SSLFaxProcess sslFaxProcess = sslfax.startClient(argv[1], argv[2], bitrev, 1000);
+ printf("%s\n", (const char*) sslFaxProcess.emsg);
+
+ char buf[1024];
+ int r;
+ fxStr info;
+ do {
+ r = sslfax.read(sslFaxProcess, buf, 1, 0, 60000);
+ if (r > 0 && buf[0] != 0) info.append( buf[0]&0xFF );
+ } while (r > 0 && (buf[0]&0xFF) != 0);
+ printf("Got info: %s\n", (const char*) info);
+
+ int atpos = info.next(0, '@');
+ fxStr passcode = info.extract(0, atpos);
+ fxStr hostport = info.extract(atpos+1, info.length()-atpos-1);
+ printf("Connecting to %s with passcode %s\n", (const char*) hostport, (const char*) passcode);
+
+ SSLFaxProcess sslFaxProcess2 = sslfax.startClient(hostport, passcode, bitrev, 1000);
+ printf("%s\n", (const char*) sslFaxProcess2.emsg);
+
+ u_char test[7] = { 0xFF, 0x13, 0x84, 0xEA, 0x7D, 0x10, 0x03 }; // a CFR signal
+
+ do {
+
+ int cs = sslfax.write(sslFaxProcess2, test, 7, bitrev, 0, 60000, false);
+ int cc = 0;
+ while (cc < 7) {
+ int cr = sslfax.read(sslFaxProcess, buf, 1024, 0, 60000);
+ if (cr > 0) cc += cr;
+ }
+ printf("%.2X/%.2X %.2X/%.2X %.2X/%.2X %.2X/%.2X %.2X/%.2X %.2X/%.2X %.2X/%.2X\n", buf[0]&0xFF, test[0], buf[1]&0xFF, test[1], buf[2]&0xFF, test[2], buf[3]&0xFF, test[3], buf[4]&0xFF, test[4], buf[5]&0xFF, test[5], buf[6]&0xFF, test[6]);
+
+ cs = sslfax.write(sslFaxProcess, test, 7, bitrev, 0, 60000, false);
+ cc = 0;
+ while (cc < 7) {
+ int cr = sslfax.read(sslFaxProcess2, buf, 1024, 0, 60000);
+ if (cr > 0) cc += cr;
+ }
+ printf("%.2X/%.2X %.2X/%.2X %.2X/%.2X %.2X/%.2X %.2X/%.2X %.2X/%.2X %.2X/%.2X\n", buf[0]&0xFF, test[0], buf[1]&0xFF, test[1], buf[2]&0xFF, test[2], buf[3]&0xFF, test[3], buf[4]&0xFF, test[4], buf[5]&0xFF, test[5], buf[6]&0xFF, test[6]);
+
+ } while (true);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hylafax-7.0.5/man/hylafax-config.4f new/hylafax-7.0.6/man/hylafax-config.4f
--- old/hylafax-7.0.5/man/hylafax-config.4f 2021-12-05 05:57:28.000000000 +0100
+++ new/hylafax-7.0.6/man/hylafax-config.4f 2022-05-04 05:41:00.000000000 +0200
@@ -274,6 +274,7 @@
ModemModelQueryCmd string \- command for querying modem model
ModemNoAutoAnswerCmd string \s-1ATS0=0\s+1 command for disabling auto-answer
ModemNoAutoAnswerCmdDelay integer \s-10\s+1 time, in ms, to pause after a disabling auto-answer
+ModemNoDialtoneRetries integer \s-11\s+1 maximum number of attempts to get dialtone
ModemNoFlowCmd string \- command for disabling hardware flow control between \s-1DTE\s+1 and \s-1DCE\s+1
ModemOnHookCmd string \s-1ATH0\s+1 command for placing phone ``on hook''
ModemPageDoneTimeout integer \s-1180000\s+1 page send/receive timeout (ms)
@@ -351,6 +352,7 @@
Class1SSLFaxCert string \s-1etc/ssl.pem\s+1 Class 1/1.0: PEM certificate file for SSL Fax
Class1SSLFaxClientTimeout integer \s-15000\s+1 Class 1/1.0: timeout waiting for client connection
Class1SSLFaxInfo string \- Class 1/1.0: hostname and port number for SSL Fax
+Class1SSLFaxProxy string \- Class 1/1.0: hostname and port number for SSL Fax Proxy
Class1SSLFaxSupport boolean \s-1Yes\s+1 Class 1/1.0: support for SSL Fax
Class1SSLFaxServerTimeout integer \s-12000\s+1 Class 1/1.0: timeout waiting for server connection
Class1TCFRecvHackCmd string \s-1""\s+1 Class 1/1.0: command to avoid +FCERROR before TCF
@@ -1749,6 +1751,7 @@
131072 (0x20000) Docq Changes document reference handling
262144 (0x40000) TIFF library any messages produced by the TIFF library
524288 (0x80000) ECM Frames binary \s-1T.30-A HDLC\s+1 ECM frames
+1048576 (0x100000) SSL Fax data SSL Fax data bytes
.sp .5
.fi
For example, to enable tracing of server operations and
@@ -2500,6 +2503,9 @@
before any further commands are sent to the modem. All input from
the modem is flushed after pausing.
.TP
+.B ModemNoDialtoneRetries
+The maximum number of attempts that can be made to obtain dialtone from the line when placing a call.
+.TP
.B ModemNoFlowCmd
The command to disable flow control between
.SM DTE
@@ -3115,6 +3121,16 @@
is configured for one system, then it is always dependent on the remote
systems to operate as the SSL Fax server.
.TP
+.B Class1SSLFaxProxy
+The formatted password, hostname, and port number
+(``<passcode@<hostname>:<port>'') for an SSL Fax proxy connection
+to be used if no
+.B Class1SSLFaxInfo
+is configured. This causes \*(Fx to establish an outbound SSL Fax connection
+to a configured SSL Fax proxy server when fax connections to remote systems
+support SSL Fax. The proxy server will provide the proxied SSL Fax URL back
+to \*(Fx which will be used in CSA and TSA signals for SSL Fax.
+.TP
.B Class1SSLFaxServerTimeout
The time, in milliseconds, that the SSL Fax client should wait for the
connection to the server to complete before abandoning SSL Fax and proceeding
1
0