Bug#1075601: unar: ftbfs with GCC-14

2024-07-03 Thread Yavor Doganov
Control: tags -1 + patch

Hi Alex,

Here's a patch fixing this bug.
Description: Fix FTBFS with GCC 14.
Bug-Debian: https://bugs.debian.org/1075601
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2024-07-03
---

--- unar-1.10.8+ds1.orig/XADRAR5Parser.m
+++ unar-1.10.8+ds1/XADRAR5Parser.m
@@ -74,12 +74,6 @@
return 8;
 }
 
-+(BOOL)recognizeFileWithHandle:(CSHandle *)handle firstBytes:(NSData *)data 
name:(NSString *)name
-{
-off_t signatureLocation = [self signatureLocationInData:data];
-return signatureLocation != RAR5SignatureNotFound;
-}
-
 + (off_t)signatureLocationInData:(NSData *)data {
 const uint8_t *bytes=[data bytes];
 int length=[data length];
@@ -98,6 +92,12 @@
 return RAR5SignatureNotFound;
 }
 
++(BOOL)recognizeFileWithHandle:(CSHandle *)handle firstBytes:(NSData *)data 
name:(NSString *)name
+{
+off_t signatureLocation = [self signatureLocationInData:data];
+return signatureLocation != RAR5SignatureNotFound;
+}
+
 +(NSArray *)volumesForHandle:(CSHandle *)handle firstBytes:(NSData *)data 
name:(NSString *)name
 {
 // Check if multipart


Bug#1074452: timemon.app: dh_gnustep removal

2024-07-01 Thread Yavor Doganov
Niels Thykier wrote:
> On Fri, 28 Jun 2024 23:14:32 +0300 Yavor Doganov  wrote:
> > Usertags: dh_gnustep-removal

> I do not understand the rationale. [...] At this point, 2/3 of all
> tools named `dh_` are *not* part of debhelper.

I didn't realize there are so many.

> In other words, it seems unnecessary to me to rename the tool just to
> avoid the debhelper association - at least from the position I am
> looking. Obviously, I am not involved in any of this and it might
> still make sense to rename if the plan is to also change the behavior
> of the tool.

Hmm, apparently the plan was not well thought.

I wanted to change the behavior by writing a dh_bugfiles addition.
We want the GNUstep backend to be reported automatically so
gnustep-back will soon have a bug script which can be symlinked by any
package that depends on gnustep-gui.  This addition will automatically
create the symlink (/usr/share/bug/$package ->
/usr/share/bug/gnustep-back-common) if it detects that gnustep-backN
is in depends and will add a versioned dependency via ${misc:Depends}
on the gnustep-back-common package containing the bug script.

But then I thought that such change in behavior might be too risky so
I came to the idea that writing another tool would be a better option.
And I couldn't come up with another name but gsdh_bugfiles (which
cannot have its dh_ counterpart as that's the debhelper dh_bugfiles).
So the dh_gnustep removal is mostly for consistency.

Perhaps the right thing to do is to follow your advice and close these
bugs; I am still undecided.

P.S. I see nothing wrong to implement this new ala dh_bugfiles
 behavior within dh_gnustep with the appropriate NEWS entry and a
 test rebuild of all GNUstep packages that use (gs)dh_gnustep.



Bug#1074459: volumecontrol.app: dh_gnustep removal

2024-06-28 Thread Yavor Doganov
Source: volumecontrol.app
Version: 0.8-1
Tags: sid trixie ftbfs
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: dh_gnustep-removal

This package uses dh_gnustep directly but dh_gnustep will be removed
in the near future.  It is not part of debhelper so the program
(script) name is misleading.

There is a /usr/bin/gsdh_gnustep symlink which currently points to
/usr/bin/dh_gnustep; the plan is to leave only gsdh_gnustep which will
be the real script.  So please make sure to invoke gsdh_gnustep
directly in your debian/rules.

You can remove the build-dependency on gnustep-make straight away
(lintian issues a warning if a dh_* command is in another package and
the source package using it is not build-depending on it); the
gsdh_gnustep symlink exists since the first time when (gs)dh_gnustep
was implemented (gnustep-make/1.11.1-1) and is guaranteed to be
available across all relevant Debian suites.

The severity of this bug will be promoted to "serious" as soon as the
appropriate gnustep-make upload (removing dh_gnustep) is made to
unstable as it will cause this package to FTBFS.

P.S.  Most probably I'll handle this myself when the time comes.



Bug#1074457: affiche: dh_gnustep removal

2024-06-28 Thread Yavor Doganov
Source: affiche
Version: 0.6.0-12
Tags: sid trixie ftbfs
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: dh_gnustep-removal

This package uses dh_gnustep directly but dh_gnustep will be removed
in the near future.  It is not part of debhelper so the program
(script) name is misleading.

There is a /usr/bin/gsdh_gnustep symlink which currently points to
/usr/bin/dh_gnustep; the plan is to leave only gsdh_gnustep which will
be the real script.  So please make sure to invoke gsdh_gnustep
directly in your debian/rules.

You can remove the build-dependency on gnustep-make straight away
(lintian issues a warning if a dh_* command is in another package and
the source package using it is not build-depending on it); the
gsdh_gnustep symlink exists since the first time when (gs)dh_gnustep
was implemented (gnustep-make/1.11.1-1) and is guaranteed to be
available across all relevant Debian suites.

The severity of this bug will be promoted to "serious" as soon as the
appropriate gnustep-make upload (removing dh_gnustep) is made to
unstable as it will cause this package to FTBFS.

P.S.  Most probably I'll handle this myself when the time comes.



Bug#1074456: viewpdf.app: dh_gnustep removal

2024-06-28 Thread Yavor Doganov
Source: viewpdf.app
Version: 1:0.2dfsg1-7
Tags: sid trixie ftbfs
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: dh_gnustep-removal

This package uses dh_gnustep directly but dh_gnustep will be removed
in the near future.  It is not part of debhelper so the program
(script) name is misleading.

There is a /usr/bin/gsdh_gnustep symlink which currently points to
/usr/bin/dh_gnustep; the plan is to leave only gsdh_gnustep which will
be the real script.  So please make sure to invoke gsdh_gnustep
directly in your debian/rules.

You can remove the build-dependency on gnustep-make straight away
(lintian issues a warning if a dh_* command is in another package and
the source package using it is not build-depending on it); the
gsdh_gnustep symlink exists since the first time when (gs)dh_gnustep
was implemented (gnustep-make/1.11.1-1) and is guaranteed to be
available across all relevant Debian suites.

The severity of this bug will be promoted to "serious" as soon as the
appropriate gnustep-make upload (removing dh_gnustep) is made to
unstable as it will cause this package to FTBFS.

P.S.  Most probably I'll handle this myself when the time comes.



Bug#1074455: chess.app: dh_gnustep removal

2024-06-28 Thread Yavor Doganov
Source: chess.app
Version: 2.8-4
Tags: sid trixie ftbfs
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: dh_gnustep-removal

This package uses dh_gnustep directly but dh_gnustep will be removed
in the near future.  It is not part of debhelper so the program
(script) name is misleading.

There is a /usr/bin/gsdh_gnustep symlink which currently points to
/usr/bin/dh_gnustep; the plan is to leave only gsdh_gnustep which will
be the real script.  So please make sure to invoke gsdh_gnustep
directly in your debian/rules.

You can remove the build-dependency on gnustep-make straight away
(lintian issues a warning if a dh_* command is in another package and
the source package using it is not build-depending on it); the
gsdh_gnustep symlink exists since the first time when (gs)dh_gnustep
was implemented (gnustep-make/1.11.1-1) and is guaranteed to be
available across all relevant Debian suites.

The severity of this bug will be promoted to "serious" as soon as the
appropriate gnustep-make upload (removing dh_gnustep) is made to
unstable as it will cause this package to FTBFS.

P.S.  Most probably I'll handle this myself when the time comes.



Bug#1074453: fontmanager.app: dh_gnustep removal

2024-06-28 Thread Yavor Doganov
Source: fontmanager.app
Version: 0.1-3
Tags: sid trixie ftbfs
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: dh_gnustep-removal

This package uses dh_gnustep directly but dh_gnustep will be removed
in the near future.  It is not part of debhelper so the program
(script) name is misleading.

There is a /usr/bin/gsdh_gnustep symlink which currently points to
/usr/bin/dh_gnustep; the plan is to leave only gsdh_gnustep which will
be the real script.  So please make sure to invoke gsdh_gnustep
directly in your debian/rules.

You can remove the build-dependency on gnustep-make straight away
(lintian issues a warning if a dh_* command is in another package and
the source package using it is not build-depending on it); the
gsdh_gnustep symlink exists since the first time when (gs)dh_gnustep
was implemented (gnustep-make/1.11.1-1) and is guaranteed to be
available across all relevant Debian suites.

The severity of this bug will be promoted to "serious" as soon as the
appropriate gnustep-make upload (removing dh_gnustep) is made to
unstable as it will cause this package to FTBFS.

P.S.  Most probably I'll handle this myself when the time comes.



Bug#1074452: timemon.app: dh_gnustep removal

2024-06-28 Thread Yavor Doganov
Source: timemon.app
Version: 4.2-3
Tags: sid trixie ftbfs
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: dh_gnustep-removal

This package uses dh_gnustep directly but dh_gnustep will be removed
in the near future.  It is not part of debhelper so the program
(script) name is misleading.

There is a /usr/bin/gsdh_gnustep symlink which currently points to
/usr/bin/dh_gnustep; the plan is to leave only gsdh_gnustep which will
be the real script.  So please make sure to invoke gsdh_gnustep
directly in your debian/rules.

You can remove the build-dependency on gnustep-make straight away
(lintian issues a warning if a dh_* command is in another package and
the source package using it is not build-depending on it); the
gsdh_gnustep symlink exists since the first time when (gs)dh_gnustep
was implemented (gnustep-make/1.11.1-1) and is guaranteed to be
available across all relevant Debian suites.

The severity of this bug will be promoted to "serious" as soon as the
appropriate gnustep-make upload (removing dh_gnustep) is made to
unstable as it will cause this package to FTBFS.

P.S.  Most probably I'll handle this myself when the time comes.



Bug#1074450: price.app: dh_gnustep removal

2024-06-28 Thread Yavor Doganov
Source: price.app
Version: 1.3.0-5
Tags: sid trixie
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: dh_gnustep-removal

This package uses dh_gnustep directly but dh_gnustep will be removed
in the near future.  It is not part of debhelper so the program
(script) name is misleading.

There is a /usr/bin/gsdh_gnustep symlink which currently points to
/usr/bin/dh_gnustep; the plan is to leave only gsdh_gnustep which will
be the real script.  So please make sure to invoke gsdh_gnustep
directly in your debian/rules.

You can remove the build-dependency on gnustep-make straight away
(lintian issues a warning if a dh_* command is in another package and
the source package using it is not build-depending on it); the
gsdh_gnustep symlink exists since the first time when (gs)dh_gnustep
was implemented (gnustep-make/1.11.1-1) and is guaranteed to be
available across all relevant Debian suites.

The severity of this bug will be promoted to "serious" as soon as the
appropriate gnustep-make upload (removing dh_gnustep) is made to
unstable as it will cause this package to FTBFS.

P.S.  Most probably I'll handle this myself when the time comes.



Bug#1074449: gridlock.app: dh_gnustep removal

2024-06-28 Thread Yavor Doganov
Source: gridlock.app
Version: 1.10-5
Tags: sid trixie ftbfs
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: dh_gnustep-removal

This package uses dh_gnustep directly but dh_gnustep will be removed
in the near future.  It is not part of debhelper so the program
(script) name is misleading.

There is a /usr/bin/gsdh_gnustep symlink which currently points to
/usr/bin/dh_gnustep; the plan is to leave only gsdh_gnustep which will
be the real script.  So please make sure to invoke gsdh_gnustep
directly in your debian/rules.

You can remove the build-dependency on gnustep-make straight away
(lintian issues a warning if a dh_* command is in another package and
the source package using it is not build-depending on it); the
gsdh_gnustep symlink exists since the first time when (gs)dh_gnustep
was implemented (gnustep-make/1.11.1-1) and is guaranteed to be
available across all relevant Debian suites.

The severity of this bug will be promoted to "serious" as soon as the
appropriate gnustep-make upload (removing dh_gnustep) is made to
unstable as it will cause this package to FTBFS.

P.S.  Most probably I'll handle this myself when the time comes.



Bug#1073528: RFS: parser/3.4.6-5 [RC] [QA] -- HTML-embedded scripting language

2024-06-16 Thread Yavor Doganov
Package: sponsorship-requests
Severity: important

Dear mentors,

I'm looking for a sponsor for the orphaned package "parser":

 * Package name : parser
   Version  : 3.4.6-5
   Upstream contact : Art Lebedev Studio 
 * URL  : http://www.parser.ru/en/
 * License  : other, GPL-2+, LGPL-2+, other-1, GPL-3,
  University-of-Illinois-Open-Source-License
 * Vcs  : https://salsa.debian.org/debian/parser
   Section  : web

The source builds the following binary packages:

  parser3 - Parser 3, HTML-embedded scripting language (metapackage)
  parser3-common - Common files for packages built from the Parser 3 source
  parser3-cgi - Parser 3, HTML-embedded scripting language (CGI binary)
  libapache2-mod-parser3 - Parser 3, HTML-embedded scripting language (Apache2 
module)
  parser3-dev - Files for Parser 3 module development

To access further information about this package, please visit the
following URL:

  https://mentors.debian.net/package/parser/

Alternatively, you can download the package with 'dget' using this
command:

  dget -x 
https://mentors.debian.net/debian/pool/main/p/parser/parser_3.4.6-5.dsc

Changes since the last upload:

parser (3.4.6-5) unstable; urgency=medium
 .
   * QA upload.
   * debian/patches/libxml2-2.12.patch: New; fix FTBFS with libxml2/2.12
 (Closes: #1073353).  Thanks Lucas Nussbaum for the report.
   * debian/control (Standards-Version): Bump to 4.7.0; no changes needed.
   * debian/copyright: Update copyright years.



Bug#1073313: gnustep-base: FTBFS: GSXML.m:2674:22: error: ‘xmlEntity’ {aka ‘struct _xmlEntity’} has no member named ‘checked’

2024-06-16 Thread Yavor Doganov
Control: fixed -1 1.30.0-1
Control: tags -1 + pending

[ CCing libxml2@packages.d.o ]

Lucas Nussbaum wrote:
> Source: gnustep-base
> Version: 1.29.0-7
> Severity: serious
...
> > GSXML.m: In function ‘getEntityDefault’:
> > GSXML.m:2674:22: error: ‘xmlEntity’ {aka ‘struct _xmlEntity’} has no member 
> > named ‘checked’
> >  2674 |   if (ret->checked == 0)
> >   |  ^~

Thanks for the report; I'll get it fixed in unstable ASAP.

IMVHO removing a public struct member constitutes an API break.

It is also an ABI break, because if a program or a library accesses
such member and is compiled against an old libxml2 version that is
supposed to be ABI-compatible (like 2.9.14+dfsg-1.3 in trixie), it
will crash at runtime with the new library version.



Bug#1072853: transition: gnustep-base, gnustep-gui

2024-06-08 Thread Yavor Doganov
Package: release.debian.org
Severity: normal
X-Debbugs-Cc: pkg-gnustep-maintain...@lists.alioth.debian.org
User: release.debian@packages.debian.org
Usertags: transition

Hi release managers,

On behalf of the GNUstep team I'd like to request a transition slot
for a combined gnustep-base/gnustep-gui transition (one-round binNMUs):

libgnustep-base1.29 -> 1.30
libgnustep-gui0.30 -> 0.31

The new libraries are available in experimental, built on all release
architectures.  Build-testing the rdeps revealed only one issue
(lynkeos.app, #1072736) which has been fixed in unstable so no
sourceful uploads (except gnustep-back) will be required.

FYI, the new gnustep-gui version adds support for ImageMagick 7
(release.d.o #1060103).

The automatically generated trackers look fine.



Bug#1072736: lynkeos.app: FTBFS with gnustep-gui/0.31.x: MyPluginsController.m:27:36: error: redeclaration of enumerator ‘NSControlKeyMask’

2024-06-07 Thread Yavor Doganov
Source: lynkeos.app
Version: 3.7+dfsg-1
Severity: important
Tags: sid trixie ftbfs
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: gnustep-gui0.31-transition gnustep-transition

This package fails to build with gnustep-gui/0.31.x (in experimental);
relevant part of the build log:

gcc /<>/application/GNUstep/../Sources/MyProcessingThread.m -c \
  -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -DCURRENT_PROJECT_VERSION=370.0 
-I. -I.. -I/<>/application/GNUstep.. 
-I/<>/application/GNUstep/../Sources 
-I/<>/application/GNUstep/../ThreadConnectionSources 
-I/<>/application/GNUstep/../ThirdPartySources/SMDoubleSlider 
-DNO_FRAMEWORK_CHECK=1 -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 
-DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -fexceptions 
-fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -fPIC -Wall -DGSWARN 
-DGSDIAGNOSE -Wno-import -g -O2 -g -O2 -ffile-prefix-map=/<>=. 
-fstack-protector-strong -fstack-clash-protection -Wformat 
-Werror=format-security -fcf-protection -std=gnu99 -Wno-unknown-pragmas 
-Wno-cpp -fconstant-string-class=NSConstantString -I. 
-I/usr/local/include/GNUstep -I/usr/include/GNUstep \
   -o obj/Lynkeos.obj/MyProcessingThread.m.o
/<>/application/GNUstep/../Sources/MyPluginsController.m:27:36: 
error: redeclaration of enumerator ‘NSControlKeyMask’
   27 | #define NSEventModifierFlagControl NSControlKeyMask
  |^~~~
/usr/include/GNUstep/AppKit/NSEvent.h:234:3: note: in expansion of macro 
‘NSEventModifierFlagControl’
  234 |   NSEventModifierFlagControl = NSControlKeyMask,
  |   ^~
In file included from /usr/include/GNUstep/AppKit/AppKit.h:89,
 from ../LynkeosCore/LynkeosProcessing.h:48,
 from ../LynkeosCore/LynkeosImageBuffer.h:31,
 from 
/<>/application/GNUstep/../Sources/LynkeosFileReader.h:66,
 from 
/<>/application/GNUstep/../Sources/MyPluginsController.m:39:
/usr/include/GNUstep/AppKit/NSEvent.h:225:3: note: previous definition of 
‘NSControlKeyMask’ with type ‘int’
  225 |   NSControlKeyMask = 4 << 16,
  |   ^~~~
/<>/application/GNUstep/../Sources/MyPluginsController.m:26:36: 
error: redeclaration of enumerator ‘NSCommandKeyMask’
   26 | #define NSEventModifierFlagCommand NSCommandKeyMask
  |^~~~
/usr/include/GNUstep/AppKit/NSEvent.h:236:3: note: in expansion of macro 
‘NSEventModifierFlagCommand’
  236 |   NSEventModifierFlagCommand = NSCommandKeyMask,
  |   ^~
/usr/include/GNUstep/AppKit/NSEvent.h:227:3: note: previous definition of 
‘NSCommandKeyMask’ with type ‘int’
  227 |   NSCommandKeyMask = 16 << 16,
  |   ^~~~
make[5]: *** [/usr/share/GNUstep/Makefiles/rules.make:534: 
obj/Lynkeos.obj/MyPluginsController.m.o] Error 1
...
make[1]: *** [debian/rules:23: override_dh_auto_build] Error 25
make[1]: Leaving directory '/<>'
make: *** [debian/rules:20: binary] Error 2

The severity of this bug will be raised to "serious" as soon as the
forthcoming GNUstep transition begins.



Bug#967258: artha: depends on deprecated GTK 2

2024-03-07 Thread Yavor Doganov
Control: tags -1 + patch
Control: block -1 with 955873

Please find attached a patch -- I tested it a lot but chances are that
I've missed something.

As there is no GtkStatusIcon (aka "trayicon") anymore, the
notifications are sent when the window is closed (and of course, when
they are enabled which was and still is the default).

The "Notify" toolbar item is now permanent (unlike in the original
code) because if a user disables notifications there is no way to
enable them again apart from editing the configuration file (since
there is no systray icon with a popup menu having a "Notify"
GtkCheckMenuItem).

Also please note that this patch formally depends on the patch I sent
to #955873 (hence the block) as that patch is its parent.  It cannot
be applied cleanly to current git master because of that but otherwise
this bug does not depend on it; they're completely orthogonal.
>From 5c15a90a1b6e4f912d1fd326d055c4bca2093ea6 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Fri, 8 Mar 2024 00:26:46 +0200
Subject: [PATCH] Port to GTK 3 (#967258)

---
 debian/changelog  |4 +-
 debian/control|3 +-
 debian/patches/gtk3.patch | 2406 +
 debian/patches/series |1 +
 4 files changed, 2411 insertions(+), 3 deletions(-)
 create mode 100644 debian/patches/gtk3.patch

diff --git a/debian/changelog b/debian/changelog
index abf4b48..5086ebd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,8 +3,10 @@ artha (1.0.5-4) UNRELEASED; urgency=medium
   * Team upload.
   * debian/patches/no-dbus-glib.patch: New; stop using dbus-glib in favor
 of dbus-gmain as recommended (Closes: #955873).
+  * debian/patches/gtk3.patch: New; port to GTK 3 (Closes: #967258).
   * debian/control (Build-Depends): Replace libdbus-glib-1-dev with
-libdbus-1-dev.
+libdbus-1-dev and libgtk2.0-dev with libgtk-3-dev.
+(Recommends): Drop libnotify4, the program uses GNotification now.
 
  -- Yavor Doganov   Mon, 04 Mar 2024 16:53:11 +0200
 
diff --git a/debian/control b/debian/control
index 83103fa..d2cc751 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@ Section: utils
 Priority: optional
 Build-Depends: debhelper-compat (= 13),
wordnet-dev,
-   libgtk2.0-dev,
+   libgtk-3-dev,
libdbus-1-dev
 Standards-Version: 4.6.0
 Vcs-Browser: https://salsa.debian.org/science-team/artha
@@ -20,7 +20,6 @@ Depends: ${misc:Depends},
  ${shlibs:Depends},
  wordnet
 Recommends: wordnet-sense-index,
-libnotify4,
 libenchant-2-2
 Suggests: aspell-en
 Description: Handy off-line thesaurus based on WordNet
diff --git a/debian/patches/gtk3.patch b/debian/patches/gtk3.patch
new file mode 100644
index 000..2fa388a
--- /dev/null
+++ b/debian/patches/gtk3.patch
@@ -0,0 +1,2406 @@
+Description: Port to GTK 3.
+Bug-Debian: https://bugs.debian.org/967258
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2024-03-08
+---
+
+--- artha.orig/configure.ac
 artha/configure.ac
+@@ -55,12 +55,10 @@
+ AC_SUBST([WORDNET_LIB])
+ 
+ 
+-# GtkComboBox with entry only since 2.24 only, hence check for GTK+-2.0 >= 
2.24
+-# check for GTK+ and GLib
+-PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.24 glib-2.0 >= 2.40], , [
++PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.21.4 glib-2.0 >= 2.40], , [
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
+-You must have GTK+ 2.0 (version 2.24 or above) and GLib 2.0 (version 2.40
++You must have GTK+ 3.0 (version 3.21.4 or above) and GLib 2.0 (version 2.40
+ or above) development headers installed to build.
+ 
+ If you have these installed already you may need to install pkg-config so 
+--- artha.orig/src/gui.c
 artha/src/gui.c
+@@ -54,7 +54,7 @@
+ static gboolean   was_double_click = FALSE, 
last_search_successful = FALSE, advanced_mode = FALSE, auto_contract = FALSE;
+ static gboolean   hotkey_set = FALSE, mod_suggest = FALSE;
+ // options which default to true
+-static gboolean   notifier_enabled = TRUE, show_polysemy = TRUE, 
launch_minimized = TRUE, show_trayicon = TRUE;
++static gboolean   notifier_enabled = TRUE, show_polysemy = TRUE, 
launch_minimized = TRUE;
+ static gboolean   last_lookup_a_notification = FALSE;
+ static gchar  last_search[MAX_LEMMA_LEN] = "";
+ #ifdef X11_AVAILABLE
+@@ -63,13 +63,11 @@
+ guint32   last_hotkey_time = 0;
+ static guint  num_lock_mask = 0, caps_lock_mask = 0, 
scroll_lock_mask = 0;
+ #endif
+-static guint  hotkey_trials[] = {GDK_w, GDK_a, GDK_t, GDK_q};
++static guint  hotkey_trials[] = {GDK_KEY_w, GDK_KEY_a, 
GDK_KEY_t, GDK_KEY_q};
+ GtkAccelKey   app_hotkey = {0};
+ static gint   notify_toolbar_index = -1;
+ static guint  status_msg_context_id = 0;
+ static GString*w

Bug#955873: artha: Depends on deprecated dbus-glib

2024-03-07 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch.
>From 6c94fcfbf0dc45114602312c8bc6f1bededbf840 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Mon, 4 Mar 2024 16:56:28 +0200
Subject: [PATCH] Drop dbus-glib dependency (#955873)

---
 debian/changelog  |  10 +
 debian/control|   2 +-
 debian/patches/no-dbus-glib.patch | 810 ++
 debian/patches/series |   1 +
 4 files changed, 822 insertions(+), 1 deletion(-)
 create mode 100644 debian/patches/no-dbus-glib.patch

diff --git a/debian/changelog b/debian/changelog
index 9ae7a98..abf4b48 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+artha (1.0.5-4) UNRELEASED; urgency=medium
+
+  * Team upload.
+  * debian/patches/no-dbus-glib.patch: New; stop using dbus-glib in favor
+of dbus-gmain as recommended (Closes: #955873).
+  * debian/control (Build-Depends): Replace libdbus-glib-1-dev with
+libdbus-1-dev.
+
+ -- Yavor Doganov   Mon, 04 Mar 2024 16:53:11 +0200
+
 artha (1.0.5-3) unstable; urgency=medium
 
   * DEP5 copyright
diff --git a/debian/control b/debian/control
index 780d311..83103fa 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Priority: optional
 Build-Depends: debhelper-compat (= 13),
wordnet-dev,
libgtk2.0-dev,
-   libdbus-glib-1-dev
+   libdbus-1-dev
 Standards-Version: 4.6.0
 Vcs-Browser: https://salsa.debian.org/science-team/artha
 Vcs-Git: https://salsa.debian.org/science-team/artha.git
diff --git a/debian/patches/no-dbus-glib.patch 
b/debian/patches/no-dbus-glib.patch
new file mode 100644
index 000..11e36d9
--- /dev/null
+++ b/debian/patches/no-dbus-glib.patch
@@ -0,0 +1,810 @@
+Description: Stop using dbus-glib.
+Bug-Debian: https://bugs.debian.org/955873
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2024-03-08
+---
+
+--- artha.orig/configure.ac
 artha/configure.ac
+@@ -57,10 +57,10 @@
+ 
+ # GtkComboBox with entry only since 2.24 only, hence check for GTK+-2.0 >= 
2.24
+ # check for GTK+ and GLib
+-PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.24 glib-2.0 >= 2.22], , [
++PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.24 glib-2.0 >= 2.40], , [
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
+-You must have GTK+ 2.0 (version 2.24 or above) and GLib 2.0 (version 2.22 
++You must have GTK+ 2.0 (version 2.24 or above) and GLib 2.0 (version 2.40
+ or above) development headers installed to build.
+ 
+ If you have these installed already you may need to install pkg-config so 
+@@ -97,12 +97,12 @@
+ # begin of POSIX specific config
+ if test "$build_mach" = "posix"; then
+ 
+-# check if dbus-1 alone is enough or dbus-glib-1 alone is enough
+-PKG_CHECK_MODULES([libdbus], [dbus-1 >= 0.60 dbus-glib-1 >= 0.60], 
++# check if dbus-1 alone is enough
++PKG_CHECK_MODULES([libdbus], [dbus-1 >= 1.8],
+ [AC_DEFINE([DBUS_AVAILABLE], [], [Dbus dev. headers are present])], [
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
+-You must have the dbus and dbus-glib-1 (version 0.60 or above) 
++You must have the dbus (version 1.8 or above)
+ development headers installed!
+ 
+ If it is installed already, you may need to install pkg-config so 
+--- artha.orig/src/Makefile.am
 artha/src/Makefile.am
+@@ -9,7 +9,7 @@
+ libwni_a_SOURCES = wni.c wni.h
+ 
+ artha_DEPENDENCIES = libwni.a
+-artha_SOURCES = mod_notify.c mod_notify.h \
++artha_SOURCES = dbus-gmain.c dbus-gmain.h mod_notify.c mod_notify.h \
+   suggestions.c suggestions.h \
+   hotkey_editor.c hotkey_editor.h \
+   gui.c gui.h addons.h
+@@ -38,7 +38,7 @@
+ 
+ if POSIX
+ AM_CFLAGS += @libdbus_CFLAGS@
+-artha_LDADD += -lX11 -ldbus-1 -ldbus-glib-1 -lgtk-x11-2.0 -lgdk-x11-2.0 \
++artha_LDADD += -lX11 -ldbus-1 -lgtk-x11-2.0 -lgdk-x11-2.0 \
+-lgio-2.0 -lgmodule-2.0 -lgobject-2.0 -lglib-2.0
+ else
+ artha_LDADD += @GTK_LIBS@
+--- /dev/null
 artha/src/dbus-gmain.c
+@@ -0,0 +1,666 @@
++/* -*- mode: C; c-file-style: "gnu" -*- */
++/* dbus-gmain.c GLib main loop integration
++ *
++ * Copyright © 2002-2003 CodeFactory AB
++ * Copyright © 2002-2010 Red Hat, Inc.
++ * Copyright © 2003 James Willcox
++ * Copyright © 2006 Marc-Andre Lureau
++ * Copyright © 2006-2018 Collabora Ltd.
++ * Copyright © 2010-2012 Mike Gorse
++ *
++ * SPDX-License-Identifier: AFL-2.1 OR GPL-2.0-or-later
++ *
++ * Licensed under the Academic Free License version 2.1
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more deta

Bug#999931: virtuoso-opensource: depends on obsolete pcre3 library

2024-03-04 Thread Yavor Doganov
Hi Andreas,

On Wed, 28 Feb 2024 18:36:04 +0200,
Andreas Beckmann wrote:
> On Wed, 20 Dec 2023 21:18:20 +0200 Yavor Doganov  wrote:
> > Please find attached a patch;
> 
> Thanks for the patch, I uploaded it to Debian and so far noone
> complained ;-)

Thanks!  Complaints usually come a bit later...
 
> But the patch doesn't apply cleanly on newer virtuoso-opensource
> versions, there are actually changes in pcre usage in
> libsrc/Wi/sqlbif.h that require adjustments.

Right; there's a new function.

> Could you take a look again and update the patch?

Attached is a patch (commit made to the try-7.2.12 branch) that
updates pcre2.patch so that it applies cleanly and restores the
build-dependency on libpcre2-dev.

> I've never worked with (any version of) pcre (from the programmer
> persepective,

Likewise, I'm a complete novice here.  It would be nice to finish this
transition, though.
>From 82b97264413540aa72d96297a93a6fd24f56adc2 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Mon, 4 Mar 2024 16:29:34 +0200
Subject: [PATCH] pcre2.patch: Update for the new upstream release

---
 debian/changelog   |   4 +
 debian/control |   2 +-
 debian/patches/pcre2.patch | 152 -
 debian/patches/series  |   2 +-
 4 files changed, 107 insertions(+), 53 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 907e89fc6..a566f67f2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,12 @@
 virtuoso-opensource (7.2.12+dfsg-0.1) UNRELEASED; urgency=medium
 
+  [ Andreas Beckmann ]
   * Non-maintainer upload.
   * New upstream release.
 
+  [ Yavor Doganov ]
+  * debian/patches/pcre2.patch: Update for the new upstream release.
+
  -- Andreas Beckmann   Wed, 28 Feb 2024 15:19:59 +0100
 
 virtuoso-opensource (7.2.5.1+dfsg1-0.6) unstable; urgency=medium
diff --git a/debian/control b/debian/control
index 5fd05fab9..db9b573c4 100644
--- a/debian/control
+++ b/debian/control
@@ -14,7 +14,7 @@ Build-Depends: debhelper-compat (= 13),
gperf,
libldap2-dev,
libmagickwand-dev,
-   libpcre3-dev,
+   libpcre2-dev,
libreadline-dev,
libssl-dev,
libtirpc-dev,
diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
index 98c06be51..104c1abc9 100644
--- a/debian/patches/pcre2.patch
+++ b/debian/patches/pcre2.patch
@@ -2,12 +2,12 @@ Description: Port to PCRE2.
 Bug-Debian: https://bugs.debian.org/31
 Author: Yavor Doganov 
 Forwarded: no
-Last-Update: 2023-12-20
+Last-Update: 2024-03-04
 ---
 
 --- virtuoso-opensource.orig/libsrc/Wi/Makefile.am
 +++ virtuoso-opensource/libsrc/Wi/Makefile.am
-@@ -559,7 +559,7 @@
+@@ -563,7 +563,7 @@
$(libwi_base_la_sources)
  
  libwi_la_CFLAGS  = $(libwi_base_la_cflags)
@@ -18,7 +18,7 @@ Last-Update: 2023-12-20
  libwi_odbc_la_SOURCES += \
 --- virtuoso-opensource.orig/libsrc/Wi/bif_regexp.c
 +++ virtuoso-opensource/libsrc/Wi/bif_regexp.c
-@@ -30,7 +30,8 @@
+@@ -31,7 +31,8 @@
  
  // Debian maintainer: replaced by external PCRE
  // #include "util/pcrelib/pcre.h"
@@ -28,7 +28,7 @@ Last-Update: 2023-12-20
  
  /*
 typedef struct rx_query_s {
-@@ -66,15 +67,16 @@
+@@ -65,16 +66,17 @@
  typedef struct compiled_regexp_s
  {
int refctr;
@@ -42,14 +42,16 @@ Last-Update: 2023-12-20
  
 -int32 c_pcre_match_limit_recursion = 500;
 -int32 c_pcre_match_limit = 10;
+-int32 pcre_max_cache_sz = 2;
 +static pcre2_match_context *match_ctxt = NULL;
 +
 +uint32 c_pcre_match_limit_recursion = 500;
 +uint32 c_pcre_match_limit = 10;
- int32 pcre_max_cache_sz = 2;
++uint32 pcre_max_cache_sz = 2;
  int32 pcre_rnd_seed;
  
-@@ -97,6 +99,23 @@
+ id_hashed_key_t
+@@ -96,6 +98,23 @@
  }
  
  void
@@ -73,7 +75,7 @@ Last-Update: 2023-12-20
  release_compiled_regexp (id_hash_t *c_r, compiled_regexp_t *data)
  {
int delete_data;
-@@ -112,9 +131,7 @@
+@@ -111,9 +130,7 @@
if (!delete_data)
  return;
if (NULL != data->code)
@@ -84,7 +86,7 @@ Last-Update: 2023-12-20
dk_free (data, sizeof (compiled_regexp_t));
  }
  
-@@ -137,10 +154,11 @@
+@@ -136,10 +153,11 @@
  }
  
  static compiled_regexp_t *
@@ -99,9 +101,9 @@ Last-Update: 2023-12-20
regexp_key_t key;
compiled_regexp_t **val = NULL;
compiled_regexp_t tmp, *new_val;
-@@ -156,46 +174,18 @@
+@@ -155,46 +173,18 @@
  }
-   HT_LEAVE (c_r);
+   HT_UNLOCK (c_r);
dbg_printf (("regex compiling (%s) with options %x ...\n", pattern, 
options));
 -  tmp.code = pcre_compile (pattern, options, , , 0);
 +  tmp.code = pcre2_compile ((PCRE2_SPTR) pattern, strlen (pattern),
@@ -149,9 +151,9 @@ Last-Update: 2023-12-20
new_val->code = tmp.code;
 -  new_val->code_x = tmp.code_x;
new_val->refctr = 1;
-   HT_ENTER (c_r);
+   HT_WRLOCK (c_r);
pcre_cache_check (c_r);
-@@ -302,18 +292,18 @@
+@@ -301,18 +291,18 @@
  }
  
  
@@ -175,7 +177,7 @

Bug#901677: amide: Window is too wide and not resizable

2024-02-24 Thread Yavor Doganov
Control: tags -1 + patch

Attached is a patch which makes the main (study) windows resizable at
the expense of losing automatic expanding and shrinking.  Currently,
if you switch off two of the Transverse/Coronal/Sagittal views the
window will shrink automatically.  Likewise, if you enable 2-way/3-way
views it will expand to the necessary height and by disabling them it
will shrink.  This is a nice feature and judging by the comment in
ui_study.c, it is the sole reason why upstream decided to make the
window non-resizable.

However, the OP's complaint is perfectly legitimate, it is very
difficult and unpleasant to work with a window that large.
Description: Make the main (study) window resizable.
 Toolbar menu items "Thickness", "Field of view" and "Zoom" do nothing
 but they are necessary -- if the window is resized so that the right
 border is at one of these widgets, no drop-down arrow will be shown
 so the user will not have access to the Gate/Time buttons.  Other
 items from "Threshold" leftwards are proper GtkToolItems (rather than
 widgets packed in a GtkToolItem) so their menus are fully functional
 and will appear as normal/toggle/radio menu items.
Bug-Debian: https://bugs.debian.org/901677
Bug: https://github.com/ferdymercury/amide/issues/26
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2024-02-24
---

--- amide.orig/amide-current/src/ui_study.c
+++ amide/amide-current/src/ui_study.c
@@ -540,7 +540,7 @@
   toolbar = gtk_toolbar_new();
   gtk_box_pack_start (GTK_BOX (ui_study->window_vbox), toolbar, FALSE, FALSE, 
0);
   gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS);
-  gtk_toolbar_set_show_arrow(GTK_TOOLBAR(toolbar), FALSE);
+  gtk_widget_set_hexpand(toolbar, FALSE);
 
   tool_item = gtk_radio_tool_button_new(NULL);
   gtk_tool_button_set_label(GTK_TOOL_BUTTON(tool_item), _("Near."));
@@ -568,9 +568,8 @@
   for (i_rendering = 0; i_rendering < AMITK_RENDERING_NUM; i_rendering++) 
 
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ui_study->rendering_menu), 
amitk_rendering_get_name(i_rendering));
   g_signal_connect(G_OBJECT(ui_study->rendering_menu), "changed", 
G_CALLBACK(ui_study_cb_rendering), ui_study);
-  ui_common_toolbar_insert_widget(toolbar, ui_study->rendering_menu,
-  _(amitk_rendering_explanation),
-  
gtk_toolbar_get_n_items(GTK_TOOLBAR(toolbar)));
+  ui_common_toolbar_append_widget(toolbar, ui_study->rendering_menu,
+  _(amitk_rendering_explanation));
 
   ui_common_toolbar_append_separator(toolbar);
 
@@ -672,7 +671,7 @@
 
   icon = gtk_image_new_from_icon_name("amide_icon_thresholding",
   GTK_ICON_SIZE_LARGE_TOOLBAR);
-  tool_item = gtk_tool_button_new(icon, _("_Threshold"));
+  tool_item = gtk_tool_button_new(icon, _("Threshold"));
   gtk_tool_item_set_tooltip_text(tool_item,
  _("Set the thresholds and colormaps for the 
active data set"));
   gtk_actionable_set_action_name(GTK_ACTIONABLE(tool_item), 
"win.thresholding");
@@ -697,7 +696,10 @@
   g_signal_connect(G_OBJECT(ui_study->zoom_spin), "output", 
G_CALLBACK(amitk_spin_button_scientific_output), NULL);
   g_signal_connect(G_OBJECT(ui_study->zoom_spin), "button_press_event",
   
G_CALLBACK(amitk_spin_button_discard_double_or_triple_click), NULL);
-  ui_common_toolbar_append_widget(toolbar,ui_study->zoom_spin,_("specify how 
much to magnify the images"));
+  ui_common_toolbar_append_widget_full(toolbar, ui_study->zoom_spin,
+   _("Zoom"),
+   _("specify how much to magnify the 
images"),
+   NULL, NULL);
 
   /* a separator for clarity */
   ui_common_toolbar_append_separator(toolbar);
@@ -716,7 +718,10 @@
   g_signal_connect(G_OBJECT(ui_study->fov_spin), "value_changed", 
G_CALLBACK(ui_study_cb_fov), ui_study);
   g_signal_connect(G_OBJECT(ui_study->fov_spin), "button_press_event",
   
G_CALLBACK(amitk_spin_button_discard_double_or_triple_click), NULL);
-  ui_common_toolbar_append_widget(toolbar,ui_study->fov_spin,_("specify how 
much of the image field of view to display"));
+  ui_common_toolbar_append_widget_full(toolbar, ui_study->fov_spin,
+   _("Field of view"),
+   _("specify how much of the image field 
of view to display"),
+   NULL, NULL);
 
   /* a separator for clarity */
   ui_common_toolbar_append_separator(toolbar);
@@ -736,7 +741,10 @@
   g_signal_connect(G_OBJECT(ui_study->thickness_spin), "output", 
G_CALLBAC

Bug#999921: xymon: depends on obsolete pcre3 library

2024-02-12 Thread Yavor Doganov
Hi Roland,

Roland Rosenfeld wrote:
> Oh, now I see the problem: pcre_copy_substring() returns the length of
> the string on match, while pcre2_substring_copy_bynumber() returns 0
> on success.  So the above has to be changed from "> 0" to "== 0".

Of course...  Many thanks for finding and fixing my mistakes!

> For showgraph.c this fixes the issue, but there are more places where
> the return code of pcre2_substring_copy_bynumber() is checked, which
> also may need adoption.  I found the following places:

Right, thanks again.  Have you found some other issues?  I tried to
trigger as much PCRE-related code as possible but as I'm not familiar
with this program I'm afraid I couldn't manage.



Bug#967256: apwal: depends on deprecated GTK 2

2024-01-18 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch.
(You might want to remove the last line from debian/rules to create a
dbgsym package.)
Description: Port to GTK 3.
Bug-Debian: https://bugs.debian.org/967256
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2024-01-19
---

--- apwal-0.4.5.orig/src/Makefile
+++ apwal-0.4.5/src/Makefile
@@ -7,11 +7,11 @@
 INSTALL ?= install
 
 ifdef APWAL_DEBUG
-CFLAGS += -g -Wall -Werror `$(PKG_CONFIG) --cflags gtk+-2.0 gthread-2.0 
libxml-2.0` -DGTK_DISABLE_DEPRECATED -DAPWAL_DEBUG $(CPPFLAGS)
-LDFLAGS += `$(PKG_CONFIG) --libs gtk+-2.0 gthread-2.0 libxml-2.0`
+CFLAGS +=  -DAPWAL_DEBUG $(CPPFLAGS) -g -Wall -Werror `$(PKG_CONFIG) --cflags 
gtk+-3.0 gthread-2.0 libxml-2.0`
+LDFLAGS += `$(PKG_CONFIG) --libs gtk+-3.0 gthread-2.0 libxml-2.0`
 else
-CFLAGS += -O2 `$(PKG_CONFIG) --cflags gtk+-2.0 gthread-2.0 libxml-2.0` 
$(CPPFLAGS)
-LDFLAGS += -O2 `$(PKG_CONFIG) --libs gtk+-2.0 gthread-2.0 libxml-2.0`
+CFLAGS += $(CPPFLAGS) -O2 `$(PKG_CONFIG) --cflags gtk+-3.0 gthread-2.0 
libxml-2.0`
+LDFLAGS += -O2 `$(PKG_CONFIG) --libs gtk+-3.0 gthread-2.0 libxml-2.0`
 endif
 
 OBJS=main.o app.o launcher.o editor.o property.o \
@@ -34,7 +34,6 @@
 all: apwal
 apwal: $(OBJS)
$(CC) -o $@ $^ $(LDFLAGS)
-   $(STRIP) $@
 endif
 
 install: all
@@ -42,14 +41,14 @@
$(INSTALL) apwal $(DESTDIR)/usr/bin
 
 .c.o: $(INCS)
-   $(CC) -c $< -o $*.o $(CFLAGS)
+   $(CC) $(CFLAGS) -c $< -o $*.o
 
 xmlrc.o: xmlrc.c $(INCS)
-   $(CC) -c $< -o $*.o $(CFLAGS)
+   $(CC) $(CFLAGS) -c $< -o $*.o
 about.o: about.c $(INCS) ../Makefile.inc
-   $(CC) -c $< -o $*.o $(CFLAGS) -DAPWAL_VERSION=\"$(VERS)\"
+   $(CC) -DAPWAL_VERSION=\"$(VERS)\" $(CFLAGS) -c $< -o $*.o
 
-gtkstuff.o: pixbufinline.inc
+gtkstuff.o: pixbufinline.inc gresource.c
 xmlrc.o: xmlrcinline.inc
 
 $(OBJS): $(INCS)
@@ -88,6 +87,18 @@
echo   "sizeof(pixbufinline_t));" >> $@; \
echo "" >> $@;
 
+gresource.c: ../pixmaps/*.png
+   @echo "generating $@..."
+   @echo "" >> $*.xml
+   @echo "" >> $*.xml
+   @echo "" >> $*.xml
+   @for f in ../pixmaps/*.png; do \
+ echo "$$f" >> $*.xml; \
+   done;
+   @echo "" >> $*.xml
+   @echo "" >> $*.xml
+   @glib-compile-resources --generate-source $*.xml
+
 tags: $(INCS) $(OBJS:.o=.c)
ctags -R
 
@@ -102,5 +113,5 @@

 
 clean:
-   -rm -f $(OBJS) apwal pixbufinline.inc xmlrcinline.inc tags
+   -rm -f $(OBJS) apwal pixbufinline.inc gresource.* xmlrcinline.inc tags
 
--- apwal-0.4.5.orig/src/apwalapp.h
+++ apwal-0.4.5/src/apwalapp.h
@@ -49,9 +49,6 @@
   GtkWidget   *w2_btn_cancel;
   GtkWidget   *w2_btn_ok;
 
-  
-  GtkTooltips  *tips;
-
   struct apwal_pref_t *apwal_pref;
   struct editor_t *editor;
   struct property_t   *prop;
--- apwal-0.4.5.orig/src/launcher.h
+++ apwal-0.4.5/src/launcher.h
@@ -35,7 +35,6 @@
   GtkWidget *event_box;
   GtkWidget *image;
   GdkPixbuf *pixbuf;
-  GdkBitmap *bitmap_mask;
 
   gint   x;
   gint   y;
--- apwal-0.4.5.orig/src/launcher.c
+++ apwal-0.4.5/src/launcher.c
@@ -29,6 +29,7 @@
 {
   launcher_t  *l;
   app_list_t *apps;
+  GdkRectangle geom;
 
   l = (launcher_t *)malloc(sizeof(launcher_t));
   g_assert(l != NULL);
@@ -51,7 +52,6 @@
 
   l->image = NULL;
   l->pixbuf = NULL;
-  l->bitmap_mask = NULL;
 
   l->x = 0;
   l->y = 0;
@@ -60,8 +60,10 @@
 
   l->editor_started = FALSE;
 
-  l->xwidth = gdk_screen_width();
-  l->xheight = gdk_screen_height();
+  gdk_monitor_get_geometry(gdk_display_get_primary_monitor
+   (gdk_display_get_default()), );
+  l->xwidth = geom.width;
+  l->xheight = geom.height;
 
   l->timeout_activated = 0;
   l->apps = NULL;
@@ -75,6 +77,10 @@
 void launcher_load_apps(launcher_t *l, app_list_t *apps)
 {
   app_t *app;
+  cairo_surface_t *surf;
+  cairo_region_t *region;
+  GdkWindow *win;
+  GdkSeat *seat;
   GdkPixbuf *pixbuf;
   GdkModifierType state;// mouse state
   gint x_min, y_min;
@@ -93,7 +99,6 @@
 
   l->pixbuf = NULL;
   l->image = NULL;
-  l->bitmap_mask = NULL;
 
   l->apps = apps;
   if (!apps)
@@ -107,7 +112,11 @@
  app_list_delta_x(l->apps), app_list_delta_y(l->apps),
  x_min, y_min); 
   // get the current position of the mouse cursor
-  gdk_window_get_pointer (l->window->window, >x, >y, );
+  gtk_widget_realize(l->window);
+  seat = gdk_display_get_default_seat(gdk_display_get_default());
+  win = gtk_widget_get_window(l->window);
+  gdk_window_get_device_position(win, gdk_seat_get_pointer(seat),
+ >x, >y, );
   // check if the position is correct
   l->x = l->x + (x_min * ICON_WIDTH);
   if (l->x < 0)
@@ -149,15 +

Bug#967242: abx: depends on deprecated GTK 2

2024-01-11 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch -- note that it applies against the
latest upstream release (0.1) which I assumed you would want to
package anyway.
Description: Port to GTK 3.
Bug-Debian: https://bugs.debian.org/967242
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2024-01-11
---

--- abx-0.1.orig/configure.ac
+++ abx-0.1/configure.ac
@@ -18,7 +18,7 @@
 PKG_CHECK_MODULES(portaudio, portaudio-2.0 >= 19)
 PKG_CHECK_MODULES(sndfile, sndfile)
 AM_PATH_GLIB_2_0(2.0.0, [], AC_MSG_ERROR([cannot find glib version 2.0 or 
later with thread support]), gthread)
-AM_PATH_GTK_2_0(2.6.0, [], AC_MSG_ERROR([cannot find gtk version 2.6 or 
later]), gthread)
+PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.9.12])
 
 AC_CONFIG_FILES([Makefile
  src/Makefile])
--- abx-0.1.orig/src/decidewin.c
+++ abx-0.1/src/decidewin.c
@@ -34,7 +34,7 @@
 case 0:
 case 1:
 set_guess(current_trial, response);
-gtk_widget_hide_all(dialog);
+gtk_widget_hide(dialog);
 if (current_trial == num_test_trials() - 1) {
 /* test over */
 show_result_window();
@@ -49,7 +49,7 @@
 break;
 case GTK_RESPONSE_DELETE_EVENT:
 case GTK_RESPONSE_CANCEL:
-gtk_widget_hide_all(dialog);
+gtk_widget_hide(dialog);
 break;
 }
 }
@@ -73,7 +73,7 @@
 gtk_dialog_add_button(GTK_DIALOG(dialog), "_A", 0);
 gtk_dialog_add_button(GTK_DIALOG(dialog), "_B", 1);
 gtk_dialog_add_button(GTK_DIALOG(dialog),
-  GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+  _("_Cancel"), GTK_RESPONSE_CANCEL);
 g_signal_connect(dialog, "response",
  G_CALLBACK(response_handler), NULL);
 gtk_widget_show_all(dialog);
@@ -84,6 +84,6 @@
 hide_decide_dialog(void)
 {
 if (dialog) {
-gtk_widget_hide_all(dialog);
+gtk_widget_hide(dialog);
 }
 }
--- abx-0.1.orig/src/mainwin.c
+++ abx-0.1/src/mainwin.c
@@ -45,7 +45,7 @@
 static GtkWidget *prev_marker;
 static GtkWidget *next_marker;
 
-static GtkObject *adjustment;
+static GtkAdjustment *adjustment;
 static GtkWidget *scale;
 static int is_user_seeking;
 
@@ -223,17 +223,17 @@
 menu_bar = create_menu_bar();
 create_status_bar();
 
-left_box = gtk_vbox_new(FALSE, 10);
+left_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10);
 gtk_box_pack_start(GTK_BOX(left_box), test_box, TRUE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(left_box), meta_box, TRUE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(left_box), playback_box, TRUE, FALSE, 0);
 
-main_hbox = gtk_hbox_new(FALSE, 10);
+main_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10);
 gtk_container_set_border_width(GTK_CONTAINER(main_hbox), 10);
 gtk_box_pack_start(GTK_BOX(main_hbox), left_box, TRUE, TRUE, 0);
 gtk_box_pack_start(GTK_BOX(main_hbox), marker_box, FALSE, FALSE, 0);
 
-main_box = gtk_vbox_new(FALSE, 0);
+main_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
 gtk_box_pack_start(GTK_BOX(main_box), menu_bar, FALSE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(main_box), main_hbox, TRUE, TRUE, 0);
 gtk_box_pack_start(GTK_BOX(main_box), status_bar, FALSE, FALSE, 0);
@@ -252,10 +252,11 @@
 static GtkWidget *
 create_play_button(gchar *label)
 {
-GtkWidget *aligned_box = gtk_hbox_new(TRUE, 0);
-GtkWidget *box = gtk_hbox_new(FALSE, 3);
+GtkWidget *aligned_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
+gtk_box_set_homogeneous(GTK_BOX(aligned_box), TRUE);
+GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3);
 gtk_box_pack_start(GTK_BOX(box),
-   gtk_image_new_from_stock(GTK_STOCK_MEDIA_PLAY,
+   gtk_image_new_from_icon_name("media-playback-start",
 GTK_ICON_SIZE_BUTTON),
FALSE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(box), gtk_label_new_with_mnemonic(label),
@@ -276,8 +277,7 @@
 GtkWidget *first_row;
 GtkWidget *second_row;
 adjustment = gtk_adjustment_new(0, 0, 60, 1.0, 15.0, 0);
-scale = gtk_hscale_new(GTK_ADJUSTMENT(adjustment));
-gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_DISCONTINUOUS);
+scale = gtk_scale_new(GTK_ORIENTATION_HORIZONTAL, adjustment);
 is_user_seeking = 0;
 g_signal_connect(G_OBJECT(scale), "button_press_event",
  G_CALLBACK(scale_button_pressed_or_released), NULL);
@@ -299,19 +299,25 @@
   create_play_button("Play _X"));
 g_signal_connect(G_OBJECT(test_sample), "clicked",
  G_CALLBACK(play_button_clicked), NULL);
-pause_button = gtk_button_new_from_stock(GTK_STOCK_MEDIA_PAUSE);
+pause_button = gtk_button_new_from_icon_name("media-playback-pause",
+ GTK_ICON_SIZE_BU

Bug#1000093: mysql-workbench: depends on obsolete pcre3 library

2024-01-09 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch, basically only build-tested (I also ran
it but I find it difficult to test specifically the affected code).
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/193
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2024-01-09
---

--- mysql-workbench-8.0.32+dfsg.orig/CMakeLists.txt
+++ mysql-workbench-8.0.32+dfsg/CMakeLists.txt
@@ -119,7 +119,7 @@
 endif(UNIX)
 
 
-pkg_check_modules(PCRE REQUIRED libpcre libpcrecpp)
+pkg_check_modules(PCRE REQUIRED libpcre2-8)
 pkg_check_modules(CAIRO REQUIRED cairo>=1.5.12)
 pkg_check_modules(UUID REQUIRED uuid)
 pkg_check_modules(LIBZIP REQUIRED libzip)
--- mysql-workbench-8.0.32+dfsg.orig/library/grt/src/grtpp_shell.cpp
+++ mysql-workbench-8.0.32+dfsg/library/grt/src/grtpp_shell.cpp
@@ -21,7 +21,8 @@
  * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 
  */
 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #include "grtpp_shell.h"
 
 using namespace grt;
@@ -30,28 +31,34 @@
 
 char *get_value_from_text_ex_opt(const char *txt, int txt_length, const char 
*regexpr, unsigned int substring_nr,
  int options_for_exec) {
-  pcre *pcre_exp;
-  const char *error_str;
-  int erroffset;
-  int o_vector[O_VECTOR_COUNT];
-  int rc;
-  const char *ret_val;
+  pcre2_code *pcre_exp;
+  pcre2_match_data *md;
+  int error;
+  PCRE2_SIZE erroffset;
+  PCRE2_SIZE *o_vector;
+  PCRE2_UCHAR *ret_val;
   char *value = NULL;
 
   if (txt && *txt) {
-pcre_exp = pcre_compile(regexpr, PCRE_CASELESS, _str, , 
NULL);
+pcre_exp = pcre2_compile(reinterpret_cast(regexpr),
+ PCRE2_ZERO_TERMINATED, PCRE2_CASELESS,
+ , , NULL);
 if (pcre_exp) {
-  if ((rc = pcre_exec(pcre_exp, NULL, txt, txt_length, 0, 
options_for_exec, o_vector, O_VECTOR_COUNT)) > 0) {
-if (o_vector[substring_nr * 2] != -1) {
-  pcre_get_substring(txt, o_vector, rc, substring_nr, _val);
+  md = pcre2_match_data_create(O_VECTOR_COUNT, NULL);
+  if (pcre2_match(pcre_exp, reinterpret_cast(txt),
+  txt_length, 0, options_for_exec, md, NULL) > 0) {
+o_vector = pcre2_get_ovector_pointer(md);
+if ((int)o_vector[substring_nr * 2] > 0) {
+  pcre2_substring_get_bynumber(md, substring_nr, _val, );
 
-  value = g_strdup(ret_val);
+  value = g_strdup(reinterpret_cast(ret_val));
 
-  pcre_free_substring((char *)ret_val);
+  pcre2_substring_free(ret_val);
 }
   }
 
-  pcre_free(pcre_exp);
+  pcre2_code_free(pcre_exp);
+  pcre2_match_data_free(md);
 }
   }
 
--- 
mysql-workbench-8.0.32+dfsg.orig/backend/wbprivate/sqlide/db_sql_editor_history_be.cpp
+++ 
mysql-workbench-8.0.32+dfsg/backend/wbprivate/sqlide/db_sql_editor_history_be.cpp
@@ -26,7 +26,6 @@
 #include 
 
 #include 
-#include 
 
 #include "db_sql_editor_history_be.h"
 #include "sqlide/recordset_data_storage.h"
--- 
mysql-workbench-8.0.32+dfsg.orig/backend/wbpublic/grt/grt_string_list_model.cpp
+++ mysql-workbench-8.0.32+dfsg/backend/wbpublic/grt/grt_string_list_model.cpp
@@ -22,7 +22,8 @@
  */
 
 #include "grt_string_list_model.h"
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #include "grtpp_util.h"
 
 using namespace bec;
@@ -266,33 +267,43 @@
   }
 
   // compile regexp
-  pcre *patre;
+  pcre2_code *patre;
+  pcre2_match_data *md;
   {
-const char *error;
-int erroffset;
-patre = pcre_compile(regexp.c_str(), PCRE_UTF8 | PCRE_EXTRA, , 
, NULL);
-if (!patre)
+char error[120];
+PCRE2_SIZE erroffset;
+int err;
+patre = pcre2_compile(reinterpret_cast(regexp.c_str()),
+  PCRE2_ZERO_TERMINATED, PCRE2_UTF,
+  , , NULL);
+if (!patre) {
+  pcre2_get_error_message(err, reinterpret_cast(error),
+  sizeof(error));
   throw std::logic_error("error compiling regex " + std::string(error));
+}
   }
 
   // sift items
   size_t n = 0;
+  md = pcre2_match_data_create_from_pattern(patre, NULL);
   for (std::vector::iterator i = items.begin(); i != items.end(); ++i, 
++n) {
 if (*i) {
   const Item_handler  = _items[n];
-  int patres[2];
+  PCRE2_SIZE *patres;
 
-  int substr_count = pcre_exec(patre, NULL, item.val.c_str(), 
static_cast(item.val.size()), 0, 0, patres,
-   sizeof(patres) / sizeof(int));
+  int substr_count = pcre2_match(patre, 
reinterpret_cast(item.val.c_str()),
+ item.val.size(), 0, 0, md, NULL);
+  patres = pcre2_get_ovector_pointer(md);
 
-  if (substr_count > 0 && patres[1] == (int)item.val.size())
+  if (substr_count > 0 && patres[1] == item.val.size())
 *i = match_means_visible;
   else
 *i = !match_means_visible;

Bug#1000113: kodi: depends on obsolete pcre3 library

2024-01-07 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch; I did my best to test it.

I believe the changes to the CRegExp class (xbmc/utils/RegExp.*) are
sane; they are tested in xbmc/utils/test/TestRegexp.cpp and some other
test programs that use CRegExp.  I added three more test cases:
invalid pattern, UTF-8 compilation/matching, and JIT.  The latter two
should pass on all the buildds since PCRE2 is built everywhere with
Unicode support, and on those architectures where JIT support is not
available, m_JitSupported will be false so the related functions in
the methods RegComp and PrivateRegFind will not be invoked.
Furthermore, according to the PCRE2 documentation, an application
doesn't need to check explicitly for JIT support because all of the
PCRE2 JIT-related functions have dummy placeholders and silently do
nothing if JIT support is not available.

The changes to CFTPParse (xbmc/filesystem/FTPParse.cpp) are clumsy,
overly verbose code; I'm not proud of it at all.  I tried to minimize
casting as much as possible.  AFAICS it's used only to obtain an ftp
directory contents.  I tried adding some directories from
ftp.gnustep.org as source, but of course there are no media files
there.  Then I installed an FTP server and populated /srv/ftp/ with
some video files.  Kodi displays their properties and plays them, but
I cannot be sure that CFTPParse methods are actually used.  I can't
put breakpoints in gdb as the app runs in fullscreen mode and I don't
know how to switch to normal mode.  (In hindsight, I guess I could
have added some printf statements but it's too late now and the beast
takes nearly 4 hours to build on my machine.)  An unpleasant obstacle
was that Kodi frequently crashes my videocard driver (nouveau) which
made testing very frustrating.

I guess the patch needs more testing and a closer look by someone
familiar with this package (ideally both as a user and maintainer), on
a machine that is capable of running Kodi.

Please let me know if there are problems that require correction.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/1000113
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2024-01-07
---

--- kodi-20.2+dfsg.orig/cmake/modules/FindPCRE.cmake
+++ kodi-20.2+dfsg/cmake/modules/FindPCRE.cmake
@@ -77,45 +77,34 @@
 
 else()
   # Populate paths for find_package_handle_standard_args
-  find_path(PCRE_INCLUDE_DIR pcre.h)
+  find_path(PCRE_INCLUDE_DIR pcre2.h)
 
-  find_library(PCRECPP_LIBRARY_RELEASE NAMES pcrecpp)
-  find_library(PCRECPP_LIBRARY_DEBUG NAMES pcrecppd)
-
-  find_library(PCRE_LIBRARY_RELEASE NAMES pcre)
-  find_library(PCRE_LIBRARY_DEBUG NAMES pcred)
+  find_library(PCRE_LIBRARY_RELEASE NAMES pcre2-8)
 endif()
   else()
 
 if(PKG_CONFIG_FOUND)
-  pkg_check_modules(PC_PCRE libpcrecpp QUIET)
+  pkg_check_modules(PC_PCRE libpcre2-8 QUIET)
 endif()
 
-find_path(PCRE_INCLUDE_DIR pcrecpp.h
+find_path(PCRE_INCLUDE_DIR pcre2.h
PATHS ${PC_PCRE_INCLUDEDIR})
-find_library(PCRECPP_LIBRARY_RELEASE NAMES pcrecpp
- PATHS ${PC_PCRE_LIBDIR})
-find_library(PCRE_LIBRARY_RELEASE NAMES pcre
+find_library(PCRE_LIBRARY_RELEASE NAMES pcre2-8
   PATHS ${PC_PCRE_LIBDIR})
-find_library(PCRECPP_LIBRARY_DEBUG NAMES pcrecppd
-   PATHS ${PC_PCRE_LIBDIR})
-find_library(PCRE_LIBRARY_DEBUG NAMES pcred
-   PATHS ${PC_PCRE_LIBDIR})
 set(PCRE_VERSION ${PC_PCRE_VERSION})
 
   endif()
 
   include(SelectLibraryConfigurations)
-  select_library_configurations(PCRECPP)
   select_library_configurations(PCRE)
 
   include(FindPackageHandleStandardArgs)
   find_package_handle_standard_args(PCRE
-REQUIRED_VARS PCRECPP_LIBRARY PCRE_LIBRARY 
PCRE_INCLUDE_DIR
+REQUIRED_VARS PCRE_LIBRARY PCRE_INCLUDE_DIR
 VERSION_VAR PCRE_VERSION)
 
   if(PCRE_FOUND)
-set(PCRE_LIBRARIES ${PCRECPP_LIBRARY} ${PCRE_LIBRARY})
+set(PCRE_LIBRARIES ${PCRE_LIBRARY})
 set(PCRE_INCLUDE_DIRS ${PCRE_INCLUDE_DIR})
 if(WIN32)
   set(PCRE_DEFINITIONS -DPCRE_STATIC=1)
@@ -166,5 +155,5 @@
 endif()
   endif()
 
-  mark_as_advanced(PCRE_INCLUDE_DIR PCRECPP_LIBRARY PCRE_LIBRARY)
+  mark_as_advanced(PCRE_INCLUDE_DIR PCRE_LIBRARY)
 endif()
--- kodi-20.2+dfsg.orig/xbmc/utils/RegExp.h
+++ kodi-20.2+dfsg/xbmc/utils/RegExp.h
@@ -13,16 +13,8 @@
 #include 
 #include 
 
-/* make sure stdlib.h is included before including pcre.h inside the
-   namespace; this works around stdlib.h definitions also living in
-   the PCRE namespace */
-#include 
-
-namespace PCRE {
-struct real_pcre_jit_stack; // forward declaration for PCRE without JIT
-typedef struct real_pcre_jit_stack pcre_jit_stack;
-#include 
-}
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 class CRegExp

Bug#1000100: eiskaltdcpp: depends on obsolete pcre3 library

2024-01-02 Thread Yavor Doganov
Control: tags -1 + patch

Please find a patch attached; build-tested only.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/1000100
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2024-01-02
---

--- eiskaltdcpp-2.4.2.orig/cmake/FindPCRE.cmake
+++ eiskaltdcpp-2.4.2/cmake/FindPCRE.cmake
@@ -4,23 +4,22 @@
 #  PCRE_INCLUDE_DIR - the PCRE include directory
 #  PCRE_LIBRARIES - link these to use PCRE
 
-if(PCRE_INCLUDE_DIR AND PCRE_LIBRARY AND PCRECPP_LIBRARY)
+if(PCRE_INCLUDE_DIR AND PCRE_LIBRARY)
   set(PCRE_FIND_QUIETLY TRUE)
-endif(PCRE_INCLUDE_DIR AND PCRE_LIBRARY AND PCRECPP_LIBRARY)
+endif(PCRE_INCLUDE_DIR AND PCRE_LIBRARY)
 
 # Include dir
-find_path(PCRE_INCLUDE_DIR NAMES pcre.h)
+find_path(PCRE_INCLUDE_DIR NAMES pcre2.h)
 
 # Libraries
-find_library(PCRE_LIBRARY NAMES pcre)
-find_library(PCRECPP_LIBRARY NAMES pcrecpp)
+find_library(PCRE_LIBRARY NAMES pcre2-8)
 
-if(PCRE_LIBRARY AND PCRECPP_LIBRARY)
-  set(PCRE_LIBRARIES ${PCRECPP_LIBRARY} ${PCRE_LIBRARY})
-endif(PCRE_LIBRARY AND PCRECPP_LIBRARY)
+if(PCRE_LIBRARY)
+  set(PCRE_LIBRARIES ${PCRE_LIBRARY})
+endif(PCRE_LIBRARY)
 
 INCLUDE(FindPackageHandleStandardArgs)
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCRE DEFAULT_MSG PCRE_LIBRARIES 
PCRE_INCLUDE_DIR)
 
-MARK_AS_ADVANCED(PCRE_LIBRARIES PCRE_INCLUDE_DIR PCRE_LIBRARY PCRECPP_LIBRARY)
+MARK_AS_ADVANCED(PCRE_LIBRARIES PCRE_INCLUDE_DIR PCRE_LIBRARY)
 
--- eiskaltdcpp-2.4.2.orig/dcpp/ADLSearch.cpp
+++ eiskaltdcpp-2.4.2/dcpp/ADLSearch.cpp
@@ -32,7 +32,8 @@
 #include "StringTokenizer.h"
 
 #ifdef USE_PCRE
-#include "pcrecpp.h"
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #endif
 
 namespace dcpp {
@@ -172,11 +173,28 @@
 bool ADLSearch::searchAll(const string& s) {
 #ifdef USE_PCRE
 if(bUseRegexp){
-pcrecpp::RE_Options options;
-options.set_utf8(true);
-options.set_caseless(true);
-pcrecpp::RE regexp(regexpstring, options);
-if(regexp.FullMatch(s))
+pcre2_code *re;
+pcre2_match_data *md;
+PCRE2_SPTR pat, subj;
+PCRE2_SIZE offset;
+uint32_t utf = 0, options = 0;
+int rc;
+
+pcre2_config(PCRE2_CONFIG_UNICODE, );
+if(utf)
+options |= PCRE2_UTF;
+options |= PCRE2_CASELESS;
+pat = reinterpret_cast(regexpstring.c_str());
+subj = reinterpret_cast(s.c_str());
+re = pcre2_compile(pat, PCRE2_ZERO_TERMINATED, options,
+   , , nullptr);
+if(offset != 0)
+return false;
+md = pcre2_match_data_create_from_pattern(re, nullptr);
+rc = pcre2_match(re, subj, s.size(), 0, 0, md, nullptr);
+pcre2_code_free(re);
+pcre2_match_data_free(md);
+if(rc >= 0)
 return true;
 else
 return false;


Bug#1000005: passwordmaker-cli: depends on obsolete pcre3 library

2024-01-02 Thread Yavor Doganov
Control: tags -1 + patch

Please find a patch attached.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/105
Bug: https://forums.passwordmaker.org/index.php?topic=1834.0
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2024-01-02
---

--- passwordmaker-cli-1.5+dfsg.orig/unix.mak
+++ passwordmaker-cli-1.5+dfsg/unix.mak
@@ -34,7 +34,7 @@
 LDFLAGS += $(shell dpkg-buildflags --get LDFLAGS)
 CPPFLAGS += $(shell dpkg-buildflags --get CPPFLAGS)
 INCPATH = -I.
-LIBS = -lmhash -lpcrecpp
+LIBS = -lmhash -lpcre2-8
 
 ifeq ($(USE_MAC), 1)
CFLAGS := $(CFLAGS) -m32
--- passwordmaker-cli-1.5+dfsg.orig/urlsearch.cpp
+++ passwordmaker-cli-1.5+dfsg/urlsearch.cpp
@@ -24,7 +24,8 @@
 #include 
 #include 
 #include 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #include "stdafx.h"
 #include "tinyxml.h"
 #include "urlsearch.h"
@@ -32,9 +33,24 @@
 using namespace std;
 
 int UrlSearch::regexCmp(const char *regexp, const char *string) {
-   pcrecpp::RE re(regexp);
+   pcre2_code *re;
+   pcre2_match_data *md;
+   PCRE2_SPTR pat, subj;
+   PCRE2_SIZE offset;
+   int rc;
 
-   if(re.FullMatch(string)) {
+   pat = reinterpret_cast(regexp);
+   subj = reinterpret_cast(string);
+   re = pcre2_compile(pat, PCRE2_ZERO_TERMINATED, 0,
+  , , nullptr);
+   if(offset != 0) {
+   return 0;
+   }
+   md = pcre2_match_data_create_from_pattern(re, nullptr);
+   rc = pcre2_match(re, subj, PCRE2_ZERO_TERMINATED, 0, 0, md, nullptr);
+   pcre2_code_free(re);
+   pcre2_match_data_free(md);
+   if(rc >= 0) {
return 1;
}
else {


Bug#999956: snort: depends on obsolete pcre3 library

2024-01-02 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch (it applies to the latest upstream
release 2.9.20 as well but not to the 3.x series).
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/56
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2024-01-02
---

--- snort-2.9.15.1.orig/configure.in
+++ snort-2.9.15.1/configure.in
@@ -465,19 +465,21 @@
 CPPFLAGS="${CPPFLAGS} -I${with_libpcre_includes}"
 ICONFIGFLAGS="${ICONFIGFLAGS} -I${with_libpcre_includes}"
 else
-CPPFLAGS="${CPPFLAGS} `pcre-config --cflags`"
+CPPFLAGS="${CPPFLAGS} `pcre2-config --cflags`"
 fi
 
 if test "x$with_libpcre_libraries" != "xno"; then
 LDFLAGS="${LDFLAGS}  -L${with_libpcre_libraries}"
 else
-LDFLAGS="${LDFLAGS} `pcre-config --libs`"
+LDFLAGS="${LDFLAGS} `pcre2-config --libs8`"
 fi
 
 # PCRE configuration (required)
 # Verify that we have the headers
 PCRE_H=""
-AC_CHECK_HEADERS(pcre.h,, PCRE_H="no")
+AC_CHECK_HEADERS([pcre2.h], [], [PCRE_H="no"], [[
+#define PCRE2_CODE_UNIT_WIDTH 8
+]])
 if test "x$PCRE_H" = "xno"; then
   echo
   echo "   ERROR!  Libpcre header not found."
@@ -487,36 +489,13 @@
 
 # Verify that we have the library
 PCRE_L=""
-pcre_version_six=""
-AC_CHECK_LIB(pcre, pcre_compile, ,PCRE_L="no")
+AC_CHECK_LIB([pcre2-8], [pcre2_compile_8], [], [PCRE_L="no"])
 if test "x$PCRE_L" = "xno"; then
 echo
 echo "   ERROR!  Libpcre library not found."
 echo "   Get it from http://www.pcre.org;
 echo
 exit 1
-else
-AC_MSG_CHECKING(for libpcre version 6.0 or greater)
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[
-   #if (PCRE_MAJOR < 6)
-   #error "Version failure"
-   #else
-   int a, b = 0, c = 0, d = 0;
-   pcre *tmp = NULL;
-   a = pcre_copy_named_substring(tmp, "", , c, "", "", d);
-   #endif
-  ]])],[pcre_version_six="yes"],[pcre_version_six="no"])
-fi
-
-if test "x$pcre_version_six" != "xyes"; then
-AC_MSG_RESULT(no)
-echo
-echo "ERROR!  Libpcre library version >= 6.0 not found."
-echo "Get it from http://www.pcre.org;
-echo
-exit 1
-else
-AC_MSG_RESULT(yes)
 fi
 
 # OPENSSL SHA configuration (optional)
--- snort-2.9.15.1.orig/src/dynamic-plugins/sf_engine/sf_snort_plugin_api.h
+++ snort-2.9.15.1/src/dynamic-plugins/sf_engine/sf_snort_plugin_api.h
@@ -30,7 +30,8 @@
 #ifndef SF_SNORT_PLUGIN_API_H_
 #define SF_SNORT_PLUGIN_API_H_
 
-#include "pcre.h"
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #include "stdio.h"
 
 #ifndef WIN32
@@ -226,7 +227,7 @@
 {
 char *expr;
 void *compiled_expr;
-void *compiled_extra;
+void *ctxt;
 uint32_t compile_flags;
 uint32_t flags; /* must include a CONTENT_BUF_X */
 int32_t   offset;
@@ -507,7 +508,7 @@
 ENGINE_LINKAGE void setAltDetect(uint8_t *buf, uint16_t altLen);
 
 ENGINE_LINKAGE int pcreExecWrapper(const PCREInfo *pcre_info, const char *buf, 
int len, int start_offset,
-int options, int *ovector, int ovecsize);
+int options, size_t *ovector, int 
ovecsize);
 
 static inline int invertMatchResult(int retVal)
 {
--- snort-2.9.15.1.orig/src/detection-plugins/sp_pcre.h
+++ snort-2.9.15.1/src/detection-plugins/sp_pcre.h
@@ -49,17 +49,18 @@
 
 void SetupPcre(void);
 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 typedef struct _PcreData
 {
-pcre *re;   /* compiled regex */
-pcre_extra *pe; /* studied regex foo */
-int options;/* sp_pcre specfic options (relative & inverse) */
+pcre2_code *re; /* compiled regex */
+pcre2_match_context *ctxt;
+uint32_t options;   /* sp_pcre specfic options (relative & inverse) */
 char *expression;
-uint32_t search_offset;
+PCRE2_SIZE search_offset;
 } PcreData;
 
-void PcreCapture(struct _SnortConfig *sc, const void *code, const void *extra);
+void PcreCapture(struct _SnortConfig *sc, const void *code);
 void PcreFree(void *d);
 uint32_t PcreHash(void *d);
 int PcreCompare(void *l, void *r);
--- snort-2.9.15.1.orig/src/detection-plugins/sp_pcre.c
+++ snort-2.9.15.1/src/detection-plugins/sp_pcre.c
@@ -46,7 +46,8 @@
 
 #include "sp_pcre.h"
 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 #include "snort.h"
 #include "profiler.h"
@@ -77,8 +78,8 @@
 PcreData *data = (PcreData *)d;
 
 free(data->expression);
-free(data->re);
-free(data->pe);
+pcre2_code_free(data->re);
+pcre2_match_context_free(data->ctxt);
 free(data);
 }
 
@@ -161,8 +162,8 @@
 pcre_dup->expression = pcre_src->expression;
   

Bug#1000126: gpt: depends on obsolete pcre3 library

2024-01-02 Thread Yavor Doganov
Control: tags -1 + patch

Please find a patch attached.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/1000126
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2024-01-02
---

--- gpt.orig/configure.ac
+++ gpt/configure.ac
@@ -109,10 +109,10 @@
 
 # AC_MSG_CHECKING(for pcre)
 
-AC_CHECK_PROG(has_pcre, pcre-config, yes)
+AC_CHECK_PROG(has_pcre, pcre2-config, yes)
 
 if test "x$has_pcre" = "xyes"; then
-  PCRE_CONFIG="pcre-config"
+  PCRE_CONFIG="pcre2-config"
 else
   AC_MSG_ERROR(
   [
@@ -123,8 +123,8 @@
 
 #pcrecpp
 
-PCRE_INC=`${PCRE_CONFIG} --cglags`
-PCRE_LIB="-L`${PCRE_CONFIG} --prefix`/lib -lpcrecpp"
+PCRE_INC=`${PCRE_CONFIG} --cflags`
+PCRE_LIB=`${PCRE_CONFIG} --libs8`
 AC_SUBST(PCRE_INC)
 AC_SUBST(PCRE_LIB)
 
--- gpt.orig/src/modules/interpreter/InterpreterDBG.cpp
+++ gpt/src/modules/interpreter/InterpreterDBG.cpp
@@ -33,7 +33,8 @@
   #include 
 #endif
 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #include 
 
 #ifndef WIN32
@@ -403,15 +404,40 @@
 void InterpreterDBG::processBreakpointCMD(string& bpcommand) {
  //cerr << "process breakpoint " << bpcommand << endl;
 
-  string cmd;
-  string file;
-  int line;
-  pcrecpp::RE re("breakpoint 
cmd=(add|remove).*file=\"([^\"]*)\".*line=(\\d+)");
-  if(!re.FullMatch(bpcommand, , , )) {
+  pcre2_code *re;
+  pcre2_match_data *md;
+  PCRE2_UCHAR *str;
+  PCRE2_SPTR pat, subj;
+  PCRE2_SIZE offset;
+  int line, rc;
+
+  pat = reinterpret_cast("breakpoint 
cmd=(add|remove).*file=\"([^\"]*)\".*line=(\\d+)");
+  subj = reinterpret_cast(bpcommand.c_str());
+  re = pcre2_compile(pat, PCRE2_ZERO_TERMINATED, 0, , , nullptr);
+  if(offset != 0) {
+return;
+  }
+
+  md = pcre2_match_data_create_from_pattern(re, nullptr);
+  rc = pcre2_match(re, subj, bpcommand.length(), 0, 0, md, nullptr);
+  pcre2_code_free(re);
+  if(rc != 4) {
 //cerr << PACKAGE << ": comando invalido (2): \"" << cmd << "\"" << endl;
+pcre2_match_data_free(md);
 return;
   }
 
+  pcre2_substring_get_bynumber(md, 1, , );
+  string cmd(reinterpret_cast(str));
+  pcre2_substring_free(str);
+  pcre2_substring_get_bynumber(md, 2, , );
+  string file(reinterpret_cast(str));
+  pcre2_substring_free(str);
+  pcre2_substring_get_bynumber(md, 3, , );
+  line = atoi((const char *)str);
+  pcre2_substring_free(str);
+  pcre2_match_data_free(md);
+
   //cerr << PACKAGE << ": capturado:" << cmd << ":" << file << ":" << line << 
endl;
 
   if(cmd == "add") {


Bug#1020989: trafficserver: failed to load plugin

2023-12-29 Thread Yavor Doganov
On Mon, Oct 24, 2022 at 10:39:45AM +0200, Jean Baptiste Favre wrote:
> Please provide some more details on you issue:
> * which plugin do you use? Is there any specific configuration?

I am not YunQiang Su but I'm pretty sure we're talking about the same
thing.  Any remap plugin will fail to load; for example, add the
following to /etc/trafficserver/remap.config (example from the manual):

map http://a.com http://b.com @plugin=regex_remap.so @pparam=maps.reg

With contents of /etc/trafficserver/maps.reg (again from the manual):

^/(ogre.*)/more http://www.ogre.com/$h/$0/$1

Global plugins are not affected by this issue.

> * do you have some trafficserver's logs to provide?

Here you are (/var/log/trafficserver/diags.log):

[Dec 28 20:00:59.369] traffic_server ERROR: plugin 'regex_remap.so' failed to 
load: 
/run/trafficserver/adb67a84-e739-4e8f-bc9d-c4797cec16e4/usr/lib/trafficserver/modules/regex_remap.so:
 failed to map segment from shared object
[Dec 28 20:00:59.369] traffic_server ERROR: [ReverseProxy] failed to add remap 
rule at /etc/trafficserver/remap.config line 199: 
/run/trafficserver/adb67a84-e739-4e8f-bc9d-c4797cec16e4/usr/lib/trafficserver/modules/regex_remap.so:
 failed to map segment from shared objectfailed to remove runtime copy: Success
[Dec 28 20:00:59.369] traffic_server WARNING: something failed during 
BuildTable() -- check your remap plugins!
[Dec 28 20:00:59.369] traffic_server FATAL: remap.config failed to load

[Dec 28 19:46:23.246] traffic_server ERROR: plugin 'cachekey.so' failed to 
load: 
/run/trafficserver/c4edf320-f56b-4193-8554-7db2dccfa0a7/usr/lib/trafficserver/modules/cachekey.so:
 failed to map segment from shared object
[Dec 28 19:46:23.246] traffic_server ERROR: [ReverseProxy] failed to add remap 
rule at /etc/trafficserver/remap.config line 197: 
/run/trafficserver/c4edf320-f56b-4193-8554-7db2dccfa0a7/usr/lib/trafficserver/modules/cachekey.so:
 failed to map segment from shared objectfailed to remove runtime copy: Success
[Dec 28 19:46:23.246] traffic_server WARNING: something failed during 
BuildTable() -- check your remap plugins!
[Dec 28 19:46:23.246] traffic_server FATAL: remap.config failed to load

There are errors from dlopen.  As the OP said, the culprit is that it
copies the plugins from /usr/lib to /run and tries to dlopen them
there.  This is doomed to fail because, exactly as the OP said, /run
is mounted with the "noexec" option.  Upstream logic behind this is to
dynamically reload plugins that are changed while the server is
running.  I guess it makes sense with custom plugins and some other
scenarios but there's no way for this to work on Debian systems.

The attached dirty hack removes this code but also leads to test
failures of two test programs where this dynamic reloading
functionality is tested.  It is not a proper fix but at least makes
remap plugins load again.

Like the OP, I also believe this bug deserves RC severity.

Additionally (and this is an entirely separate issue, completely
unrelated with the problem described above), some global plugins fail
to load as well, for various reasons:

[Dec 28 19:34:21.066] traffic_server NOTE: loading plugin '/usr/lib/trafficserve
r/modules/prefetch.so'
[Dec 28 19:34:21.066] traffic_server ERROR: unable to find TSPluginInit 
function in '/usr/lib/trafficserver/modules/prefetch.so': 
/usr/lib/trafficserver/modules/prefetch.so: undefined symbol: TSPluginInit
[Dec 28 19:34:21.066] traffic_server FATAL: unable to find TSPluginInit 
function in '/usr/lib/trafficserver/modules/prefetch.so': 
/usr/lib/trafficserver/modules/prefetch.so: undefined symbol: TSPluginInit

There is indeed no such function, and according to the plugin API
there should be.

[Dec 29 14:31:12.743] traffic_server ERROR: [geoip_acl] No Geo library 
available!
[Dec 29 14:31:12.743] traffic_server ERROR: [ReverseProxy] failed to add remap 
rule at /etc/trafficserver/remap.config line 206: failed to initialize plugin 
geoip_acl.so: Unknown plugin errorfailed to remove runtime copy: Success
[Dec 29 14:31:12.744] traffic_server WARNING: something failed during 
BuildTable() -- check your remap plugins!
[Dec 29 14:31:12.744] traffic_server FATAL: remap.config failed to load

I have tested only those that are pcre-based.
--- trafficserver-9.2.3+ds.orig/proxy/http/remap/PluginDso.cc
+++ trafficserver-9.2.3+ds/proxy/http/remap/PluginDso.cc
@@ -72,7 +72,7 @@
 result = false;
   } else {
 PluginDebug(_tag, "plugin '%s' effective path: %s", _configPath.c_str(), _effectivePath.c_str());
-
+#if 0
 /* Copy the installed plugin DSO to a runtime directory if dynamic reload enabled */
 std::error_code ec;
 if (isDynamicReloadEnabled() && !copy(_effectivePath, _runtimePath, ec)) {
@@ -88,9 +88,9 @@
   fs::file_status fs = fs::status(_effectivePath, ec);
   _mtime = fs::modification_time(fs);
   PluginDebug(_tag, "plugin '%s' modification time %ld", _configPath.c_str(), _mtime);
-
+#endif
   /* Now attempt 

Bug#999938: trafficserver: depends on obsolete pcre3 library

2023-12-29 Thread Yavor Doganov
Control: tags -1 + patch sid trixie

Please find attached a patch which I admit I could not test properly.

This package is fairly specialized and I'm absolutely unfamiliar with
it.  It requires some extra knowledge and right configuration in order
to expose the functionality that has to be tested.  Also, some of the
affected plugins fail to load due to #1020989.

The testsuite passes, and the server runs and loads some of the
pcre-based global plugins.  I also tested loading of the remap plugins
with a hack to workaround #1020989 (I'll follow-up there with more
details).
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/bug=38
Bug: https://github.com/apache/trafficserver/issues/8780
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-29
---

--- trafficserver-9.2.3+ds.orig/build/pcre.m4
+++ trafficserver-9.2.3+ds/build/pcre.m4
@@ -45,12 +45,12 @@
   fi
 ],
 [
-  AC_CHECK_PROG(PCRE_CONFIG, pcre-config, pcre-config)
+  AC_CHECK_PROG(PCRE_CONFIG, pcre2-config, pcre2-config)
   if test "x$PCRE_CONFIG" != "x"; then
 enable_pcre=yes
 pcre_base_dir="`$PCRE_CONFIG --prefix`"
 pcre_include="`$PCRE_CONFIG --cflags | sed -es/-I//`"
-pcre_ldflags="`$PCRE_CONFIG --libs | sed -es/-lpcre// -es/-L//`"
+pcre_ldflags="`$PCRE_CONFIG --libs8 | sed -es/-lpcre2-8// -es/-L//`"
   fi
 ])
 
@@ -58,7 +58,7 @@
   AC_MSG_CHECKING([for pcre location])
   AC_CACHE_VAL(ats_cv_pcre_dir,[
   for dir in /usr/local /usr ; do
-if test -d $dir && ( test -f $dir/include/pcre.h || test -f 
$dir/include/pcre/pcre.h ); then
+if test -d $dir && ( test -f $dir/include/pcre2.h ); then
   ats_cv_pcre_dir=$dir
   break
 fi
@@ -76,7 +76,7 @@
   fi
 else
   AC_MSG_CHECKING(for pcre headers in $pcre_include)
-  if test -d $pcre_include && test -d $pcre_ldflags && ( test -f 
$pcre_include/pcre.h || test -f $pcre_include/pcre/pcre.h ); then
+  if test -d $pcre_include && test -d $pcre_ldflags && ( test -f 
$pcre_include/pcre2.h ); then
 AC_MSG_RESULT([ok])
   else
 AC_MSG_RESULT([not found])
@@ -93,14 +93,15 @@
 TS_ADDTO(LDFLAGS, [-L${pcre_ldflags}])
 TS_ADDTO_RPATH(${pcre_ldflags})
   fi
-  AC_CHECK_LIB([pcre], [pcre_exec], [pcre_have_libs=1])
+  AC_CHECK_LIB([pcre2-8], [pcre2_match_8], [pcre_have_libs=1])
   if test "$pcre_have_libs" != "0"; then
-AC_CHECK_HEADERS(pcre.h, [pcre_have_headers=1])
-AC_CHECK_HEADERS(pcre/pcre.h, [pcre_have_headers=1])
+AC_CHECK_HEADERS([pcre2.h], [pcre_have_headers=1], [], [[
+#define PCRE2_CODE_UNIT_WIDTH 8
+]])
   fi
   if test "$pcre_have_headers" != "0"; then
 AC_DEFINE(HAVE_LIBPCRE,1,[Compiling with pcre support])
-AC_SUBST(LIBPCRE, [-lpcre])
+AC_SUBST(LIBPCRE, [-lpcre2-8])
   else
 enable_pcre=no
 CPPFLAGS=$saved_cppflags
--- trafficserver-9.2.3+ds.orig/include/tscore/Regex.h
+++ trafficserver-9.2.3+ds/include/tscore/Regex.h
@@ -30,11 +30,8 @@
 
 #include "tscore/ink_config.h"
 
-#ifdef HAVE_PCRE_PCRE_H
-#include 
-#else
-#include 
-#endif
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 /// Match flags for regular expression evaluation.
 enum REFlags {
@@ -94,8 +91,7 @@
   int get_capture_count();
 
 private:
-  pcre *regex = nullptr;
-  pcre_extra *regex_extra = nullptr;
+  pcre2_code *regex   = nullptr;
 };
 
 /** Deterministic Finite state Automata container.
--- trafficserver-9.2.3+ds.orig/include/tscore/ink_memory.h
+++ trafficserver-9.2.3+ds/include/tscore/ink_memory.h
@@ -22,6 +22,7 @@
  */
 #pragma once
 
+#ifdef __cplusplus
 #include 
 #include 
 #include 
@@ -29,6 +30,7 @@
 #include 
 #include 
 #include 
+#endif
 
 #include "tscore/ink_config.h"
 
@@ -56,6 +58,9 @@
 #include 
 #endif // ! TS_HAS_JEMALLOC
 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
+
 #ifndef MADV_NORMAL
 #define MADV_NORMAL 0
 #endif
@@ -80,18 +85,9 @@
 extern "C" {
 #endif /* __cplusplus */
 
-struct IOVec : public iovec {
-  IOVec()
-  {
-iov_base = nullptr;
-iov_len  = 0;
-  }
-  IOVec(void *base, size_t len)
-  {
-iov_base = base;
-iov_len  = len;
-  }
-};
+extern pcre2_general_context *gen_ctxt;
+extern pcre2_compile_context *comp_ctxt;
+extern pcre2_match_context *match_ctxt;
 
 void *ats_malloc(size_t size);
 void *ats_calloc(size_t nelem, size_t elsize);
@@ -100,6 +96,10 @@
 void ats_free(void *ptr);
 void *ats_free_null(void *ptr);
 
+void pcre_init(void);
+void *pcre_malloc(PCRE2_SIZE size, void *data);
+void pcre_free(void *ptr, void *data);
+
 int ats_msync(caddr_t addr, size_t len, caddr_t end, int flags);
 int ats_madvise(caddr_t addr, size_t len, int flags);
 int ats_mlock(caddr_t addr, size_t len);
@@ -142,6 +142,19 @@
 
 #include 
 
+struct IOVec : public iovec {
+  IOVec()
+  {
+iov_base = nullptr;
+iov_len  = 0;
+  }
+  IOVec(void *base, size_t len)
+  {
+iov_base = base;
+iov

Bug#1000044: ccze: depends on obsolete pcre3 library

2023-12-24 Thread Yavor Doganov
Axel Beckert wrote:
> sorry for the late reply, but I only managed to continue on this now
> as I'm on holidays now.

No problem at all, we are all busy.  And it's not late according to my
standards.  :)

> I though got another crash on this line:
> 
> Dec 24 06:43:16 c6 kernel: net_ratelimit: 1 callbacks suppressed

Good catch!  This is a case when process is allocated by
pcre2_substring_get_bynumber but since there are no square brackets
around, the strdup call at line 68 doesn't happen.

> I think I managed to fix it and will also upload, but I'd be happy for
> a short review of yours:

Removing the free call avoids the abort but leads to a memory leak.
Attached is a better fix, I think (tested with your line above and my
syslog, and of course with valgrind).
diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
index a5ee6b3..334d4e3 100644
--- a/debian/patches/pcre2.patch
+++ b/debian/patches/pcre2.patch
@@ -2473,7 +2473,7 @@ Last-Update: 2023-12-24
  {
char *date = NULL, *host = NULL, *send = NULL, *process = NULL;
char *msg = NULL, *pid = NULL, *tmp = NULL, *toret;
-+  int use_free = 0;
++  int msg_use_free = 0, process_use_free = 0;
 +  size_t l;

 -  pcre_get_substring (str, offsets, match, 1, (const char **));
@@ -2488,7 +2488,7 @@ Last-Update: 2023-12-24
 -msg = strdup (send);
 +{
 +  msg = strdup (send);
-+  use_free = 1;
++  msg_use_free = 1;
 +}
else
  {
@@ -2499,7 +2499,7 @@ Last-Update: 2023-12-24
  }

if (process)
-@@ -60,8 +64,8 @@
+@@ -60,8 +64,9 @@
  
  pid = strndup ([1], (size_t)(t2 - t - 1));
  tmp = strndup (process, (size_t)(t - process));
@@ -2507,10 +2507,11 @@ Last-Update: 2023-12-24
 -process = tmp;
 +pcre2_substring_free (process);
 +process = strdup (tmp);
++process_use_free = 1;
}
  }
  
-@@ -87,12 +91,17 @@
+@@ -87,12 +92,20 @@
else
  toret = strdup (send);
  
@@ -2522,18 +2523,21 @@ Last-Update: 2023-12-24
 +  pcre2_substring_free (date);
 +  pcre2_substring_free (host);
 +  pcre2_substring_free (send);
-+  /* free (process); */
free (pid);
 +  free (tmp);
 +
-+  if (use_free)
++  if (process_use_free)
++free (process);
++  else
++pcre2_substring_free (process);
++  if (msg_use_free)
 +free (msg);
 +  else
 +pcre2_substring_free (msg);
  
return toret;
  }
-@@ -100,33 +109,34 @@
+@@ -100,33 +113,34 @@
  static void
  ccze_syslog_setup (void)
  {


Bug#1000112: kjs: depends on obsolete pcre3 library

2023-12-23 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch; build-tested only.

I was unsure what to do with the recursion limit code in the match
method.  In the old PCRE3, PCRE_CONFIG_STACKRECURSE is 1 because of
the recursion implementation, which is stack-based.  In PCRE2, the
corresponding parameter PCRE2_CONFIG_STACKRECURSE is obsolete and
always 0.

Furthermore, according to pcre2api(3), if the recursion is great
enough, workspace vectors are allocated on the heap from version 10.32
onwards.  It also says that only local variables are allocated on the
stack and even a small stack can support a lot of recursion.  So I
concluded that limiting the stack space is unnecessary with PCRE2.  I
guess that only runtime tests can show if this is true, but as I am
not a Qt/KDE person I am unable to perform them, I'm afraid.

In any case, it is trivial to limit both the stack and the heap via a
match context -- just let me know and I'll make the required
modifications.

P.S.  This patch applies cleanly to the latest upstream release
  (5.113.0) but I haven't made a build test with it.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/1000112
Bug: https://bugs.kde.org/show_bug.cgi?id=457338
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-23
---

--- kjs-5.107.0.orig/cmake/FindPCRE.cmake
+++ kjs-5.107.0/cmake/FindPCRE.cmake
@@ -11,10 +11,10 @@
 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
 
 
-if (PCRE_INCLUDE_DIR AND PCRE_PCREPOSIX_LIBRARY AND PCRE_PCRE_LIBRARY)
+if (PCRE_INCLUDE_DIR AND PCRE_PCRE_LIBRARY)
   # Already in cache, be silent
   set(PCRE_FIND_QUIETLY TRUE)
-endif (PCRE_INCLUDE_DIR AND PCRE_PCREPOSIX_LIBRARY AND PCRE_PCRE_LIBRARY)
+endif (PCRE_INCLUDE_DIR AND PCRE_PCRE_LIBRARY)
 
 
 if (NOT WIN32)
@@ -22,23 +22,21 @@
   # in the FIND_PATH() and FIND_LIBRARY() calls
   find_package(PkgConfig)
 
-  pkg_check_modules(PC_PCRE QUIET libpcre)
+  pkg_check_modules(PC_PCRE QUIET libpcre2-8)
 
   set(PCRE_DEFINITIONS ${PC_PCRE_CFLAGS_OTHER})
 
 endif (NOT WIN32)
 
-find_path(PCRE_INCLUDE_DIR pcre.h 
+find_path(PCRE_INCLUDE_DIR pcre2.h
   HINTS ${PC_PCRE_INCLUDEDIR} ${PC_PCRE_INCLUDE_DIRS} 
-  PATH_SUFFIXES pcre)
+  )
 
-find_library(PCRE_PCRE_LIBRARY NAMES pcre pcred HINTS ${PC_PCRE_LIBDIR} 
${PC_PCRE_LIBRARY_DIRS})
-
-find_library(PCRE_PCREPOSIX_LIBRARY NAMES pcreposix pcreposixd HINTS 
${PC_PCRE_LIBDIR} ${PC_PCRE_LIBRARY_DIRS})
+find_library(PCRE_PCRE_LIBRARY NAMES pcre2-8 HINTS ${PC_PCRE_LIBDIR} 
${PC_PCRE_LIBRARY_DIRS})
 
 include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(PCRE DEFAULT_MSG PCRE_INCLUDE_DIR 
PCRE_PCRE_LIBRARY PCRE_PCREPOSIX_LIBRARY )
+find_package_handle_standard_args(PCRE DEFAULT_MSG PCRE_INCLUDE_DIR 
PCRE_PCRE_LIBRARY)
 
-set(PCRE_LIBRARIES ${PCRE_PCRE_LIBRARY} ${PCRE_PCREPOSIX_LIBRARY})
+set(PCRE_LIBRARIES ${PCRE_PCRE_LIBRARY})
 
-mark_as_advanced(PCRE_INCLUDE_DIR PCRE_LIBRARIES PCRE_PCREPOSIX_LIBRARY 
PCRE_PCRE_LIBRARY)
+mark_as_advanced(PCRE_INCLUDE_DIR PCRE_LIBRARIES PCRE_PCRE_LIBRARY)
--- kjs-5.107.0.orig/src/kjs/regexp.h
+++ kjs-5.107.0/src/kjs/regexp.h
@@ -26,7 +26,8 @@
 #include "global.h"
 
 #if HAVE_PCREPOSIX
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #else  // POSIX regex - not so good...
 extern "C" { // bug with some libc5 distributions
 #include 
@@ -115,7 +116,7 @@
 #endif
 private:
 #if HAVE_PCREPOSIX
-pcre *_regex;
+pcre2_code *_regex;
 #else
 regex_t _regex;
 #endif
--- kjs-5.107.0.orig/src/kjs/regexp.cpp
+++ kjs-5.107.0/src/kjs/regexp.cpp
@@ -273,8 +273,8 @@
 #if HAVE_PCREPOSIX
 // Determine whether libpcre has unicode support if need be..
 if (utf8Support == Unknown) {
-int supported;
-pcre_config(PCRE_CONFIG_UTF8, (void *));
+uint32_t supported;
+pcre2_config(PCRE2_CONFIG_UNICODE, );
 utf8Support = supported ? Supported : Unsupported;
 }
 #endif
@@ -282,50 +282,49 @@
 UString intern = sanitizePattern(p);
 
 #if HAVE_PCREPOSIX
-int options = 0;
+uint32_t options = 0;
 
 // we are close but not 100% the same as Perl
-#ifdef PCRE_JAVASCRIPT_COMPAT // introduced in PCRE 7.7
-options |= PCRE_JAVASCRIPT_COMPAT;
-#endif
+options |= (PCRE2_ALT_BSUX | PCRE2_MATCH_UNSET_BACKREF);
 
 // Note: the Global flag is already handled by RegExpProtoFunc::execute.
 // FIXME: That last comment is dubious. Not all RegExps get run through 
RegExpProtoFunc::execute.
 if (flags & IgnoreCase) {
-options |= PCRE_CASELESS;
+options |= PCRE2_CASELESS;
 }
 if (flags & Multiline) {
-options |= PCRE_MULTILINE;
+options |= PCRE2_MULTILINE;
 }
 
 if (utf8Support == Supported) {
-options |= (PCRE_UTF8 | PCRE_NO_UTF8_CHECK);
+options |= (PCRE2_UTF | PCRE2_NO_UTF_CHECK);
 }
 
-const char *errorMessage;
-int errorOffset;
+PCRE2_UCHAR errorMessage[120];
+PCRE2_SIZE errorOffset;
+int errCode;

Bug#999975: rdup: depends on obsolete pcre3 library

2023-12-22 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch -- build-tested after adding -Wno-error
to CFLAGS due to #941101.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/75
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-22
---

--- rdup-1.1.15.orig/configure.ac
+++ rdup-1.1.15/configure.ac
@@ -62,26 +62,28 @@
 if test "$with_libpcre_includes" != "no"; then
CFLAGS="${CFLAGS} -I${with_libpcre_includes}"
 else
-   CFLAGS="${CFLAGS} `pcre-config --cflags`"
+   CFLAGS="${CFLAGS} `pcre2-config --cflags`"
 fi
 
 if test "$with_libpcre_libraries" != "no"; then
LIBS="${LIBS} -L${with_libpcre_libraries}"
 else
-   LIBS="${LIBS} `pcre-config --libs`"
+   LIBS="${LIBS} `pcre2-config --libs8`"
 fi
 
 # PCRE configuration (required)
 # Verify that we have the headers
 PCRE_H=""
-AC_CHECK_HEADERS(pcre.h,, PCRE_H="no")
+AC_CHECK_HEADERS([pcre2.h], [], [PCRE_H="no"], [[
+#define PCRE2_CODE_UNIT_WIDTH 8
+]])
 if test "$PCRE_H" = "no"; then
AC_MSG_ERROR([** No pcre library found.])
 fi
 
 # Verify that we have the library
 PCRE_L=""
-AC_CHECK_LIB(pcre, pcre_compile, ,PCRE_L="no")
+AC_CHECK_LIB([pcre2-8], [pcre2_compile_8], [], [PCRE_L="no"])
 if test "$PCRE_L" = "no"; then
AC_MSG_ERROR([** No pcre library found.])
 fi
--- rdup-1.1.15.orig/gfunc.c
+++ rdup-1.1.15/gfunc.c
@@ -7,7 +7,8 @@
 
 #include "rdup.h"
 #include "protocol.h"
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #ifdef HAVE_LIBNETTLE
 #include 
 #else
@@ -622,20 +623,26 @@
 gboolean gfunc_regexp(GSList * l, char *n, size_t len)
 {
GSList *k;
-   pcre *P;
-   int ovector[REG_VECTOR];
+   pcre2_code *P;
+   pcre2_match_data *md;
 
+   md = pcre2_match_data_create(REG_VECTOR, NULL);
for (k = g_slist_nth(l, 0); k; k = k->next) {
-   if (sig != 0)
+   if (sig != 0) {
+   pcre2_match_data_free(md);
signal_abort(sig);
+   }
 
-   P = (pcre *) k->data;
+   P = (pcre2_code *) k->data;
/* pcre_exec errors are all < 0, so >= 0 is some kind
 * of success
 */
-   if (pcre_exec(P, NULL, n, len, 0, 0, ovector, REG_VECTOR) >= 0)
+   if (pcre2_match(P, (PCRE2_SPTR)n, len, 0, 0, md, NULL) >= 0) {
+   pcre2_match_data_free(md);
return TRUE;
+   }
}
+   pcre2_match_data_free(md);
return FALSE;
 }
 
--- rdup-1.1.15.orig/regexp.c
+++ rdup-1.1.15/regexp.c
@@ -6,7 +6,8 @@
  */
 
 #include "rdup.h"
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 GSList *pregex_list = NULL;
 
@@ -18,15 +19,16 @@
 {
FILE *fp;
char *buf;
-   const char *errbuf;
-   int erroff;
+   PCRE2_UCHAR errbuf[120];
+   PCRE2_SIZE erroff;
+   int err;
char delim;
gpointer d;
size_t l;
size_t s;
size_t re_length;
ssize_t j;
-   pcre *P;
+   pcre2_code *P;
 
if ((fp = fopen(file, "r")) == NULL) {
msg(_("Could not open '%s\': %s"), file, strerror(errno));
@@ -45,18 +47,20 @@
/* buf[j - 1] holds the delimeter */
buf[j - 1] = '\0';
 
-   if ((P = pcre_compile(buf, 0, , , NULL)) == NULL) 
{
+   if ((P = pcre2_compile((PCRE2_SPTR)buf, strlen(buf), 0, , 
, NULL)) == NULL) {
/* error */
fclose(fp);
+   pcre2_get_error_message(err, errbuf, sizeof(errbuf));
msg(_
-   ("Corrupt regular expression line: %zd, column %d: 
%s"),
+   ("Corrupt regular expression line: %zd, column %zu: 
%s"),
l, erroff, errbuf);
g_free(buf);
return FALSE;
} else {
-   pcre_fullinfo(P, NULL, PCRE_INFO_SIZE, _length);
+   pcre2_pattern_info(P, PCRE2_INFO_SIZE, _length);
d = g_malloc(re_length);
d = memcpy(d, P, re_length);
+   pcre2_code_free(P);
pregex_list = g_slist_append(pregex_list, d);
}
l++;


Bug#1000014: mydumper: depends on obsolete pcre3 library

2023-12-22 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch; build-tested only.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/114
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-22
---

--- mydumper-0.10.1.orig/cmake/modules/FindPCRE.cmake
+++ mydumper-0.10.1/cmake/modules/FindPCRE.cmake
@@ -11,10 +11,10 @@
 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
 
 
-if (PCRE_INCLUDE_DIR AND PCRE_PCREPOSIX_LIBRARY AND PCRE_PCRE_LIBRARY)
+if (PCRE_INCLUDE_DIR AND PCRE_PCRE_LIBRARY)
   # Already in cache, be silent
   set(PCRE_FIND_QUIETLY TRUE)
-endif (PCRE_INCLUDE_DIR AND PCRE_PCREPOSIX_LIBRARY AND PCRE_PCRE_LIBRARY)
+endif (PCRE_INCLUDE_DIR AND PCRE_PCRE_LIBRARY)
 
 
 if (NOT WIN32)
@@ -22,24 +22,22 @@
   # in the FIND_PATH() and FIND_LIBRARY() calls
   find_package(PkgConfig)
 
-  pkg_check_modules(PC_PCRE REQUIRED libpcre)
+  pkg_check_modules(PC_PCRE REQUIRED libpcre2-8)
 
   set(PCRE_DEFINITIONS ${PC_PCRE_CFLAGS_OTHER})
 
 endif (NOT WIN32)
 
-find_path(PCRE_INCLUDE_DIR pcre.h 
+find_path(PCRE_INCLUDE_DIR pcre2.h
   HINTS ${PC_PCRE_INCLUDEDIR} ${PC_PCRE_INCLUDE_DIRS} 
-  PATH_SUFFIXES pcre)
+  )
 
-find_library(PCRE_PCRE_LIBRARY NAMES pcre HINTS ${PC_PCRE_LIBDIR} 
${PC_PCRE_LIBRARY_DIRS})
-
-find_library(PCRE_PCREPOSIX_LIBRARY NAMES pcreposix HINTS ${PC_PCRE_LIBDIR} 
${PC_PCRE_LIBRARY_DIRS})
+find_library(PCRE_PCRE_LIBRARY NAMES pcre2-8 HINTS ${PC_PCRE_LIBDIR} 
${PC_PCRE_LIBRARY_DIRS})
 
 include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(PCRE DEFAULT_MSG PCRE_INCLUDE_DIR 
PCRE_PCRE_LIBRARY PCRE_PCREPOSIX_LIBRARY )
+find_package_handle_standard_args(PCRE DEFAULT_MSG PCRE_INCLUDE_DIR 
PCRE_PCRE_LIBRARY )
 
-set(PCRE_LIBRARIES ${PCRE_PCRE_LIBRARY} ${PCRE_PCREPOSIX_LIBRARY})
+set(PCRE_LIBRARIES ${PCRE_PCRE_LIBRARY})
 
-mark_as_advanced(PCRE_INCLUDE_DIR PCRE_LIBRARIES PCRE_PCREPOSIX_LIBRARY 
PCRE_PCRE_LIBRARY)
+mark_as_advanced(PCRE_INCLUDE_DIR PCRE_LIBRARIES PCRE_PCRE_LIBRARY)
 
--- mydumper-0.10.1.orig/mydumper.c
+++ mydumper-0.10.1/mydumper.c
@@ -36,7 +36,8 @@
 #include 
 #include 
 #include 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #include 
 #include 
 #include "config.h"
@@ -387,26 +388,31 @@
 
 gboolean check_regex(char *database, char *table) {
   /* This is not going to be used in threads */
-  static pcre *re = NULL;
+  static pcre2_code *re = NULL;
+  pcre2_match_data *md;
   int rc;
-  int ovector[9] = {0};
-  const char *error;
-  int erroroffset;
+  PCRE2_UCHAR error[120];
+  int err;
+  PCRE2_SIZE erroroffset;
 
   char *p;
 
   /* Let's compile the RE before we do anything */
   if (!re) {
-re = pcre_compile(regexstring, PCRE_CASELESS | PCRE_MULTILINE, ,
-  , NULL);
+re = pcre2_compile((PCRE2_SPTR)regexstring, strlen(regexstring),
+   PCRE2_CASELESS | PCRE2_MULTILINE,
+   , , NULL);
 if (!re) {
+  pcre2_get_error_message(err, error, sizeof(error));
   g_critical("Regular expression fail: %s", error);
   exit(EXIT_FAILURE);
 }
   }
 
   p = g_strdup_printf("%s.%s", database, table);
-  rc = pcre_exec(re, NULL, p, strlen(p), 0, 0, ovector, 9);
+  md = pcre2_match_data_create(9, NULL);
+  rc = pcre2_match(re, (PCRE2_SPTR)p, strlen(p), 0, 0, md, NULL);
+  pcre2_match_data_free(md);
   g_free(p);
 
   return (rc > 0) ? TRUE : FALSE;
--- mydumper-0.10.1.orig/server_detect.c
+++ mydumper-0.10.1/server_detect.c
@@ -15,73 +15,96 @@
 Authors:Andrew Hutchings, SkySQL (andrew at skysql dot com)
 */
 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #include 
 #include 
 #include "server_detect.h"
 
 int detect_server(MYSQL *conn) {
-  pcre *re = NULL;
-  const char *error;
-  int erroroffset;
-  int ovector[9] = {0};
+  pcre2_code *re = NULL;
+  pcre2_match_data *md;
+  PCRE2_UCHAR error[120];
+  PCRE2_SIZE erroroffset;
+  int err;
   int rc;
   const char *db_version = mysql_get_server_info(conn);
 
   // debug the version
   g_message("Server version reported as: %s", db_version);
 
-  re = pcre_compile(DETECT_TIDB_REGEX, 0, , , NULL);
+  re = pcre2_compile((PCRE2_SPTR)DETECT_TIDB_REGEX, PCRE2_ZERO_TERMINATED,
+ 0, , , NULL);
   if (!re) {
+pcre2_get_error_message(err, error, sizeof(error));
 g_critical("Regular expression fail: %s", error);
 exit(EXIT_FAILURE);
   }
 
-  rc = pcre_exec(re, NULL, db_version, strlen(db_version), 0, 0, ovector, 9);
-  pcre_free(re);
+  md = pcre2_match_data_create(9, NULL);
+  rc = pcre2_match(re, (PCRE2_SPTR)db_version, strlen(db_version),
+   0, 0, md, NULL);
+  pcre2_code_free(re);
 
   if (rc > 0) {
+pcre2_match_data_free(md);
 return SERVER_TYPE_TIDB;
   }
 
-  re = pcre_compile(DETECT_MYSQL_REGEX, 0, , , NULL);
+  re = pcre2_compile((PCRE2_SPTR)DETECT_MYSQL_REGEX, PCRE2_ZERO_TERMINATED,
+ 0, , , NULL);
 

Bug#999919: zoneminder: depends on obsolete pcre3 library

2023-12-22 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch; build-tested only.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/19
Bug: https://github.com/ZoneMinder/zoneminder/issues/3384
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-22
---

--- zoneminder-1.36.33+dfsg1.orig/CMakeLists.txt
+++ zoneminder-1.36.33+dfsg1/CMakeLists.txt
@@ -396,17 +396,17 @@
 endif()
 
 # pcre (using find_library and find_path)
-find_library(PCRE_LIBRARIES pcre)
+find_library(PCRE_LIBRARIES pcre2-8)
 if(PCRE_LIBRARIES)
   set(HAVE_LIBPCRE 1)
   list(APPEND ZM_BIN_LIBS "${PCRE_LIBRARIES}")
-  find_path(PCRE_INCLUDE_DIR pcre.h)
+  find_path(PCRE_INCLUDE_DIR pcre2.h)
   if(PCRE_INCLUDE_DIR)
 include_directories("${PCRE_INCLUDE_DIR}")
 set(CMAKE_REQUIRED_INCLUDES "${PCRE_INCLUDE_DIR}")
   endif()
   mark_as_advanced(FORCE PCRE_LIBRARIES PCRE_INCLUDE_DIR)
-  check_include_file("pcre.h" HAVE_PCRE_H)
+  check_include_file("pcre2.h" HAVE_PCRE2_H -DPCRE2_CODE_UNIT_WIDTH=8)
   set(optlibsfound "${optlibsfound} PCRE")
 else()
   set(optlibsnotfound "${optlibsnotfound} PCRE")
--- zoneminder-1.36.33+dfsg1.orig/src/zm_regexp.cpp
+++ zoneminder-1.36.33+dfsg1/src/zm_regexp.cpp
@@ -24,25 +24,20 @@
 
 #if HAVE_LIBPCRE
 
-RegExpr::RegExpr( const char *pattern, int flags, int p_max_matches ) : 
max_matches( p_max_matches ), match_buffers( nullptr ), match_lengths( nullptr 
), match_valid( nullptr )
+RegExpr::RegExpr( const char *pattern, uint32_t flags, int p_max_matches ) : 
max_matches( p_max_matches ), match_buffers( nullptr ), match_lengths( nullptr 
), match_valid( nullptr )
 {
-  const char *errstr;
-  int erroffset = 0;
-  if ( !(regex = pcre_compile( pattern, flags, , , 0 )) )
+  char errstr[120];
+  int err;
+  PCRE2_SIZE erroffset;
+  if ( !(regex = pcre2_compile( (PCRE2_SPTR)pattern, strlen( pattern ), flags, 
, , NULL )) )
   {
-Panic( "pcre_compile(%s): %s at %d", pattern, errstr, erroffset );
-  }
-
-  regextra = pcre_study( regex, 0,  );
-  if ( errstr )
-  {
-Panic( "pcre_study(%s): %s", pattern, errstr );
+pcre2_get_error_message( err, (PCRE2_UCHAR *)errstr, sizeof(errstr) );
+Panic( "pcre2_compile(%s): %s at %zu", pattern, errstr, erroffset );
   }
 
   if ( (ok = (bool)regex) )
   {
-match_vectors = new int[3*max_matches];
-memset( match_vectors, 0, sizeof(*match_vectors)*3*max_matches );
+match_data = pcre2_match_data_create( 3*max_matches, NULL );
 match_buffers = new char *[max_matches];
 memset( match_buffers, 0, sizeof(*match_buffers)*max_matches );
 match_lengths = new int[max_matches];
@@ -68,18 +63,20 @@
   delete[] match_valid;
   delete[] match_lengths;
   delete[] match_buffers;
-  delete[] match_vectors;
+  pcre2_match_data_free( match_data );
+  pcre2_code_free( regex );
 }
 
-int RegExpr::Match( const char *subject_string, int subject_length, int flags )
+int RegExpr::Match( const char *subject_string, PCRE2_SIZE subject_length, 
uint32_t flags )
 {
   match_string = subject_string;
 
-  n_matches = pcre_exec( regex, regextra, subject_string, subject_length, 0, 
flags, match_vectors, 2*max_matches );
+  n_matches = pcre2_match( regex, (PCRE2_SPTR)subject_string, subject_length, 
0, flags, match_data, NULL );
+  match_vectors = pcre2_get_ovector_pointer( match_data );
 
   if ( n_matches <= 0 )
   {
-if ( n_matches < PCRE_ERROR_NOMATCH )
+if ( n_matches != PCRE2_ERROR_NOMATCH )
 {
   Error( "Error %d executing regular expression", n_matches );
 }
@@ -101,7 +98,7 @@
   }
   if ( !match_valid[match_index] )
   {
-int match_len = 
match_vectors[(2*match_index)+1]-match_vectors[2*match_index];
+int match_len = 
(int)(match_vectors[(2*match_index)+1]-match_vectors[2*match_index]);
 if ( match_lengths[match_index] < (match_len+1) )
 {
   delete[] match_buffers[match_index];
@@ -121,7 +118,7 @@
   {
 return( 0 );
   }
-  return( match_vectors[(2*match_index)+1]-match_vectors[2*match_index] );
+  return( (int)(match_vectors[(2*match_index)+1]-match_vectors[2*match_index]) 
);
 }
 
 #endif // HAVE_LIBPCRE
--- zoneminder-1.36.33+dfsg1.orig/src/zm_regexp.h
+++ zoneminder-1.36.33+dfsg1/src/zm_regexp.h
@@ -24,21 +24,20 @@
 
 #if HAVE_LIBPCRE
 
-#if HAVE_PCRE_H
-#include 
-#elif HAVE_PCRE_PCRE_H
-#include 
+#if HAVE_PCRE2_H
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #else
-#error Unable to locate pcre.h, please do 'locate pcre.h' and report location 
to zoneminder.com
+#error Unable to locate pcre2.h, please do 'locate pcre2.h' and report 
location to zoneminder.com
 #endif
 
 class RegExpr
 {
 protected:
-  pcre *regex;
-  pcre_extra *regextra;
+  pcre2_code *regex;
+  pcre2_match_data *match_data;
   int max_matches;
-  int *match_vectors;
+  PCRE2_SIZE *match_vectors;
   mutable char **match_buffers;
   int *match_lengths;
   bool *match_valid;
@@ -51,11 +50,11 @@
   bool ok;
 
 public:
-

Bug#1000010: ohcount: depends on obsolete pcre3 library

2023-12-21 Thread Yavor Doganov
Control: tags -1 + patch

Please find a patch attached.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/110
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-21
---

--- ohcount-4.0.0.orig/build
+++ ohcount-4.0.0/build
@@ -31,7 +31,7 @@
   # You shouldn't have to change the following.
   CFLAGS="-fno-common -g"
   WARN="-Wall -Wno-parentheses"
-  SHARED="-dynamiclib -L$LIB_DIR -lpcre"
+  SHARED="-dynamiclib -L$LIB_DIR -lpcre2-8"
   SHARED_NAME=libohcount.dylib
   RB_SHARED="-dynamic -bundle -lruby"
   RB_SHARED_NAME=ohcount.bundle
@@ -97,7 +97,7 @@
   build_parser_o
   echo "Building Ohcount"
   mkdir -p bin/
-  sh -c "$cc src/ohcount.c $files -o bin/ohcount -lpcre -lmagic" || exit 1
+  sh -c "$cc src/ohcount.c $files -o bin/ohcount -lpcre2-8 -lmagic" || exit 1
 }
 
 build_test_suite()
@@ -105,7 +105,7 @@
   build_hash_headers
   build_parser_o
   echo "Building test suite"
-  sh -c "$cc test/unit/all_tests.c $files -o test/unit/run_tests -lpcre 
-lmagic" \
+  sh -c "$cc test/unit/all_tests.c $files -o test/unit/run_tests -lpcre2-8 
-lmagic" \
 || exit 1
 }
 
@@ -127,10 +127,10 @@
mkdir -p ruby/$arch
 echo $cc $RB_SHARED ruby/ohcount_wrap.c $files -o 
ruby/$arch/$RB_SHARED_NAME \
 -I$RUBY_HEADER_DIR -I$RUBY_CONFIG_DIR  
-I/usr/include/$rbconfig_arch/ruby-$RUBY_VERSION  \
--lpcre -lmagic
+-lpcre2-8 -lmagic
   sh -c "$cc $RB_SHARED ruby/ohcount_wrap.c $files -o 
ruby/$arch/$RB_SHARED_NAME \
 -I$RUBY_HEADER_DIR -I$RUBY_CONFIG_DIR  
-I/usr/include/$rbconfig_arch/ruby-$RUBY_VERSION  \
--lpcre -lmagic" || exit 1
+-lpcre2-8 -lmagic" || exit 1
   sh -c "cd test/unit/ruby && ruby ruby_test.rb" || exit 1
 }
 
--- ohcount-4.0.0.orig/src/structs.h
+++ ohcount-4.0.0/src/structs.h
@@ -4,7 +4,8 @@
 #ifndef OHCOUNT_STRUCTS_H
 #define OHCOUNT_STRUCTS_H
 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 /**
  * @struct License
@@ -24,7 +25,7 @@
   const char *re;
 
   /** PCRE flags for re. (Typically PCRE_CASELESS or PCRE_MULTILINE). */
-  int re_flags;
+  uint32_t re_flags;
 
   /**
* A PCRE regular expression for text that matches re, but should not match
@@ -33,13 +34,13 @@
   const char *exclude_re;
 
   /** PCRE flags for exclude_re. */
-  int exclude_re_flags;
+  uint32_t exclude_re_flags;
 
   /** The PCRE object for re. (This field is set automatically.) */
-  pcre *regexp;
+  pcre2_code *regexp;
 
   /** The PCRE object for exclude_re. (This field is set automatically.) */
-  pcre *exclude_regexp;
+  pcre2_code *exclude_regexp;
 
 } License;
 
--- ohcount-4.0.0.orig/src/detector.c
+++ ohcount-4.0.0/src/detector.c
@@ -889,7 +889,8 @@
   return NULL; // only blanks
 }
 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 // strnlen is not available on OS X, so we roll our own
 size_t mystrnlen(const char *begin, size_t maxlen) {
@@ -906,24 +907,35 @@
  return NULL;
 
/* prepare regular expressions */
-   const char *error;
-   int erroffset;
+   int error;
+   PCRE2_SIZE erroffset;
 
/* try harder with optional spaces */
-   pcre *keyword;
-   keyword = 
pcre_compile("^\\s*(ensure|content|notify|require|source)\\s+=>",
-   PCRE_MULTILINE, , , NULL);
-
-   if (pcre_exec(keyword, NULL, p, mystrnlen(p, 1), 0, 0, NULL, 0) > 
-1)
+   pcre2_code *keyword;
+   pcre2_match_data *md;
+   keyword = pcre2_compile((PCRE2_SPTR)
+   
"^\\s*(ensure|content|notify|require|source)\\s+=>",
+   PCRE2_ZERO_TERMINATED, PCRE2_MULTILINE,
+   , , NULL);
+   md = pcre2_match_data_create(30, NULL);
+   if (pcre2_match(keyword, (PCRE2_SPTR)p, mystrnlen(p, 1),
+   0, 0, md, NULL) > -1) {
+   pcre2_match_data_free(md);
return LANG_PUPPET;
+   }
 
/* check for standard puppet constructs */
-   pcre *construct;
-   construct = 
pcre_compile("^\\s*(define\\s+[\\w:-]+\\s*\\(|class\\s+[\\w:-]+(\\s+inherits\\s+[\\w:-]+)?\\s*[\\({]|node\\s+\\'?[\\w:\\.-]+\\'?\\s*{|import\\s+\"|include\\s+[\"']?[\\w:-][\"']?)",
-   PCRE_MULTILINE, , , NULL);
-
-   if (pcre_exec(construct, NULL, p, mystrnlen(p, 1), 0, 0, NULL, 0) > 
-1)
+   pcre2_code *construct;
+   construct = 
pcre2_compile((PCRE2_SPTR)"^\\s*(define\\s+[\\w:-]+\\s*\\(|class\\s+[\\w:-]+(\\s+inherits\\s+[\\w:-]+)?\\s*[\\({]|node\\s+\\'?[\\w:\\.-]+\\'?\\s*{|import\\s+\"|include\\s+[\"']?[\\w:-][\"']?)",
+ PCRE2_ZERO_TERMINATED, PCRE2_MULTILINE,
+ , , NULL);
+
+   if (pcre2_match(construct, (PCRE2_SPTR)p, mystrnlen(p, 1),
+  

Bug#999937: tup: depends on obsolete pcre3 library

2023-12-21 Thread Yavor Doganov
On Tue, Aug 29, 2023 at 03:18:26PM +0200, Bastian Germann wrote:
> On Tue, 31 Jan 2023 21:36:46 +0800 Bo YU  wrote:
> > The upstream has tried to switch pcre2[0], but the backporting is
> > not easy, so maybe waiting a new release is good iead.
> 
> I have started a backport in git but there is at least one linker
> flag missing.

That's right; the attached patch makes the build succeed for me but I
have not tested further (sorry for the patch noise; it's because I had
to "quilt refresh").
>From 2b6f55b4d9f476646072d2be197b4fc1defcf7ac Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Thu, 21 Dec 2023 19:20:23 +0200
Subject: [PATCH] pcre2.patch: Add missing linker flag; refresh

---
 debian/patches/pcre2.patch | 81 +-
 1 file changed, 37 insertions(+), 44 deletions(-)

diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
index 9d012bb..031b6a7 100644
--- a/debian/patches/pcre2.patch
+++ b/debian/patches/pcre2.patch
@@ -6,11 +6,9 @@ Subject: Update pcre 8.44 -> pcre2 10.42
 libpcre is no longer maintained, and was replaced by libpcre2. This
 requires some minor API changes.
 ---
-diff --git a/Tupfile b/Tupfile
-index 107c81cca..cc6ed1ce5 100644
 a/Tupfile
-+++ b/Tupfile
-@@ -30,7 +30,7 @@ srcs += src/sqlite3/*.o
+--- tup.orig/Tupfile
 tup/Tupfile
+@@ -30,7 +30,7 @@
  endif
  
  ifeq ($(use_system_pcre),y)
@@ -19,11 +17,9 @@ index 107c81cca..cc6ed1ce5 100644
  else
  srcs += src/pcre/*.o
  endif
-diff --git a/Tuprules.tup b/Tuprules.tup
-index 3cdab0ffc..a7fd6cb66 100644
 a/Tuprules.tup
-+++ b/Tuprules.tup
-@@ -99,7 +99,7 @@ else
+--- tup.orig/Tuprules.tup
 tup/Tuprules.tup
+@@ -89,7 +89,7 @@
  use_system_pcre = $(TUP_USE_SYSTEM_PCRE)
  endif
  ifeq ($(use_system_pcre),y)
@@ -32,11 +28,18 @@ index 3cdab0ffc..a7fd6cb66 100644
  else
  CFLAGS += -I$(TUP_CWD)/src/pcre
  CFLAGS += -DPCRE_STATIC
-diff --git a/build.sh b/build.sh
-index 7fecb8914..6ac7041e6 100755
 a/build.sh
-+++ b/build.sh
-@@ -80,6 +80,7 @@ mkdir luabuiltin
+--- tup.orig/build.sh
 tup/build.sh
+@@ -27,7 +27,7 @@
+ 	echo "Error: invalid TUP_SERVER \"$server\"" 1>&2
+ 	exit 1
+ fi
+-LDFLAGS="$LDFLAGS -lm"
++LDFLAGS="$LDFLAGS -lm -lpcre2-8"
+ : ${CC:=gcc}
+ case "$os" in
+ 	Linux)
+@@ -80,6 +80,7 @@
  ./lua ../src/luabuiltin/xxd.lua builtin.lua luabuiltin/luabuiltin.h
  
  CFLAGS="$CFLAGS -DTUP_SERVER=\"$server\""
@@ -44,11 +47,9 @@ index 7fecb8914..6ac7041e6 100755
  CFLAGS="$CFLAGS -DHAVE_CONFIG_H"
  
  for i in ../src/tup/*.c ../src/tup/tup/main.c ../src/tup/monitor/null.c ../src/tup/flock/fcntl.c ../src/inih/ini.c ../src/pcre/*.c $plat_files; do
-diff --git a/src/tup/entry.c b/src/tup/entry.c
-index 90e1b80c0..96842bc4b 100644
 a/src/tup/entry.c
-+++ b/src/tup/entry.c
-@@ -151,7 +151,7 @@ static int rm_entry(tupid_t tupid, int safe)
+--- tup.orig/src/tup/entry.c
 tup/src/tup/entry.c
+@@ -151,7 +151,7 @@
  		string_tree_rm(>parent->entries, >name);
  	}
  	if(tent->re) {
@@ -57,7 +58,7 @@ index 90e1b80c0..96842bc4b 100644
  	}
  	free_tent_tree(>stickies);
  	free_tent_tree(>group_stickies);
-@@ -504,11 +504,13 @@ static struct tup_entry *new_entry(tupid_t tupid, tupid_t dt,
+@@ -473,11 +473,13 @@
  	RB_INIT(>entries);
  
  	if(tent->dt == exclusion_dt()) {
@@ -75,7 +76,7 @@ index 90e1b80c0..96842bc4b 100644
  			return NULL;
  		}
  	} else {
-@@ -795,14 +797,16 @@ int exclusion_match(FILE *f, struct tent_entries *exclusion_root, const char *s,
+@@ -767,14 +769,16 @@
  	*match = 0;
  	RB_FOREACH(tt, tent_entries, exclusion_root) {
  		int rc;
@@ -95,10 +96,8 @@ index 90e1b80c0..96842bc4b 100644
  			fprintf(f, "tup error: Regex failed to execute: %s\n", tt->tent->name.s);
  			return -1;
  		}
-diff --git a/src/tup/entry.h b/src/tup/entry.h
-index 332849842..1b37e077e 100644
 a/src/tup/entry.h
-+++ b/src/tup/entry.h
+--- tup.orig/src/tup/entry.h
 tup/src/tup/entry.h
 @@ -26,9 +26,9 @@
  #include "string_tree.h"
  #include "db_types.h"
@@ -110,7 +109,7 @@ index 332849842..1b37e077e 100644
  
  struct variant;
  struct estring;
-@@ -51,7 +51,7 @@ struct tup_entry {
+@@ -51,7 +51,7 @@
  	_Atomic int refcount;
  
  	/* For exclusions */
@@ -119,11 +118,9 @@ index 332849842..1b37e077e 100644
  
  	/* For command strings */
  	char *flags;
-diff --git a/src/tup/parser.c b/src/tup/parser.c
-index ce057737f..71ee32c79 100644
 a/src/tup/parser.c
-+++ b/src/tup/parser.c
-@@ -2288,6 +2288,7 @@ struct path_list *new_pl(struct tupfile *tf, const char *s, int len, struct bin_
+--- tup.orig/src/tup/parser.c
 tup/src/tup/parser.c
+@@ -2235,6 +2235,7 @@
  	pl->pel = NULL;
  	pl->bin = NULL;
  	pl->re = NULL;
@@ -131,7 +128,8 @@ index ce057737f..71ee32c79 100644
  	memcpy(pl->mem, s, len);
  	pl->mem[len] = 0;
  	pl->orderid = orderid;
-@@ -2316,13 +2317,

Bug#999921: xymon: depends on obsolete pcre3 library

2023-12-21 Thread Yavor Doganov
Control: tags -1 + patch

Please find a patch which I've been testing for a while with no ill
effects AFAICT.  However, I'm not familiar at all with this package so
it's possible that I've missed something.  I also couldn't test all
available functionality.

Unfortunately the patch does not apply cleanly to the latest upstream
release (4.4-alpha) but I am ready and willing to rebase it, whenever
you decide to package it.  Just let me know.
>From d626686d8e004bbb9e1f5f0074ff825f27d1c2e5 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Thu, 21 Dec 2023 18:44:44 +0200
Subject: [PATCH] Port to PCRE2 (#21).

---
 debian/changelog  |5 +
 debian/control|2 +-
 debian/patches/93_pcre2.patch | 2167 +
 debian/patches/series |1 +
 debian/rules  |2 +-
 5 files changed, 2175 insertions(+), 2 deletions(-)
 create mode 100644 debian/patches/93_pcre2.patch

diff --git a/debian/changelog b/debian/changelog
index b406ada..1c01d47 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -37,6 +37,11 @@ xymon (4.3.30-2) UNRELEASED; urgency=medium
   * xymon: update xymonserver.cfg: ntpdate obsoleted the "-p" option.
 (Closes: #1057044)
 
+  [ Yavor Doganov ]
+  * debian/patches/93_pcre2.patch: New; port to PCRE2 (Closes: #21).
+  * debian/control (Build-Depends): Replace libpcre3-dev with libpcre2-dev.
+  * debian/rules (override_dh_auto_configure): Use pcre2-config.
+
  -- Axel Beckert   Mon, 10 Aug 2020 04:39:28 +0200
 
 xymon (4.3.30-1) unstable; urgency=medium
diff --git a/debian/control b/debian/control
index 6766762..aaa40b3 100644
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,7 @@ Build-Depends: debhelper-compat (= 13),
imagemagick,
libc-ares-dev,
libldap2-dev,
-   libpcre3-dev,
+   libpcre2-dev,
librrd-dev,
libssl-dev,
libtirpc-dev,
diff --git a/debian/patches/93_pcre2.patch b/debian/patches/93_pcre2.patch
new file mode 100644
index 000..7c163fd
--- /dev/null
+++ b/debian/patches/93_pcre2.patch
@@ -0,0 +1,2167 @@
+Description: Port to PCRE2.
+Bug-Debian: https://bugs.debian.org/999921
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2023-12-21
+---
+
+--- xymon.orig/lib/acknowledgementslog.c
 xymon/lib/acknowledgementslog.c
+@@ -26,7 +26,8 @@
+ #include 
+ #include 
+ 
+-#include 
++#define PCRE2_CODE_UNIT_WIDTH 8
++#include 
+ 
+ #include "libxymon.h"
+ 
+@@ -103,16 +104,17 @@
+   char title[200];
+ 
+   /* For the PCRE matching */
+-  const char *errmsg = NULL;
+-  int errofs = 0;
+-  pcre *pageregexp = NULL;
+-  pcre *expageregexp = NULL;
+-  pcre *hostregexp = NULL;
+-  pcre *exhostregexp = NULL;
+-  pcre *testregexp = NULL;
+-  pcre *extestregexp = NULL;
+-  pcre *rcptregexp = NULL;
+-  pcre *exrcptregexp = NULL;
++  int err;
++  PCRE2_SIZE errofs;
++  pcre2_code *pageregexp = NULL;
++  pcre2_code *expageregexp = NULL;
++  pcre2_code *hostregexp = NULL;
++  pcre2_code *exhostregexp = NULL;
++  pcre2_code *testregexp = NULL;
++  pcre2_code *extestregexp = NULL;
++  pcre2_code *rcptregexp = NULL;
++  pcre2_code *exrcptregexp = NULL;
++  pcre2_match_data *ovector;
+ 
+   if (maxminutes && (fromtime || totime)) {
+   fprintf(output, "Only one time interval type is 
allowed!");
+@@ -147,14 +149,14 @@
+ 
+   if (!maxcount) maxcount = 100;
+ 
+-  if (pageregex && *pageregex) pageregexp = pcre_compile(pageregex, 
PCRE_CASELESS, , , NULL);
+-  if (expageregex && *expageregex) expageregexp = 
pcre_compile(expageregex, PCRE_CASELESS, , , NULL);
+-  if (hostregex && *hostregex) hostregexp = pcre_compile(hostregex, 
PCRE_CASELESS, , , NULL);
+-  if (exhostregex && *exhostregex) exhostregexp = 
pcre_compile(exhostregex, PCRE_CASELESS, , , NULL);
+-  if (testregex && *testregex) testregexp = pcre_compile(testregex, 
PCRE_CASELESS, , , NULL);
+-  if (extestregex && *extestregex) extestregexp = 
pcre_compile(extestregex, PCRE_CASELESS, , , NULL);
+-  if (rcptregex && *rcptregex) rcptregexp = pcre_compile(rcptregex, 
PCRE_CASELESS, , , NULL);
+-  if (exrcptregex && *exrcptregex) exrcptregexp = 
pcre_compile(exrcptregex, PCRE_CASELESS, , , NULL);
++  if (pageregex && *pageregex) pageregexp = pcre2_compile(pageregex, 
strlen(pageregex), PCRE2_CASELESS, , , NULL);
++  if (expageregex && *expageregex) expageregexp = 
pcre2_compile(expageregex, strlen(expageregex), PCRE2_CASELESS, , , 
NULL);
++  if (hostregex && *hostregex) hostregexp = pcre2_compile(hostregex, 
strlen(hostregex), PCRE2_CASELESS, , , NULL);
++  if (exhostregex && *exhostregex) exhostregexp = 
pcre2_compile(exhostregex, strl

Bug#999922: xneur: depends on obsolete pcre3 library

2023-12-20 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/22
Author: Yavor Doganov ya...@gnu.org>
Forwarded: no
Last-Update: 2023-12-20
---

--- xneur.orig/configure.ac
+++ xneur/configure.ac
@@ -143,7 +143,7 @@
AC_DEFINE(WITH_DEBUG, 1, [Define if you want debug support])
 fi
 
-PKG_CHECK_MODULES(PCRE, [libpcre >= 5.0])
+PKG_CHECK_MODULES(PCRE, [libpcre2-8])
 
 AC_ARG_WITH(keylogger, [  --without-keyloggerCompile without keylogger 
function])
 if test "x$with_keylogger" != "xno"; then
--- xneur.orig/lib/misc/regexp.c
+++ xneur/lib/misc/regexp.c
@@ -21,7 +21,8 @@
 #  include "config.h"
 #endif
 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 #include 
 #include 
@@ -31,45 +32,58 @@
 
 int check_regexp_match(const char *str, const char *pattern)
 {
-   int options = PCRE_UTF8;
-   const char *error;
-   int erroffset;
+   pcre2_compile_context *ctxt;
+   uint32_t options = PCRE2_UTF;
+   int error;
+   PCRE2_SIZE erroffset;

//log_message(DEBUG, "Processing word '%s' against regular expression 
'%s'", str, pattern);

-   const unsigned char *tables = pcre_maketables();
-   pcre *re = pcre_compile(pattern, options, , , tables);
+   ctxt = pcre2_compile_context_create(NULL);
+   const uint8_t *tables = pcre2_maketables(NULL);
+   pcre2_set_character_tables(ctxt, tables);
+   pcre2_code *re = pcre2_compile((PCRE2_SPTR)pattern, strlen(pattern),
+  options, , , ctxt);
+   pcre2_maketables_free(NULL, tables);
+   pcre2_compile_context_free(ctxt);
if (!re)
{
log_message(ERROR, _("Can't compile regular expression '%s'"), 
pattern);
return FALSE;
}
 
-   int str_len = strlen(str);
+   PCRE2_SIZE str_len = strlen(str);
 
-   int ovector[50];
-   int count = pcre_exec(re, NULL, str, str_len, 0, 0, ovector, 50);
-   if (count <= 0 && count != PCRE_ERROR_NOMATCH)
+   pcre2_match_data *ovector;
+   ovector = pcre2_match_data_create(50, NULL);
+   int count = pcre2_match(re, (PCRE2_SPTR)str, str_len, 0, 0, ovector, 
NULL);
+   if (count <= 0 && count != PCRE2_ERROR_NOMATCH)
{
log_message(ERROR, _("Can't exec regular expression '%s', eror 
code %d"), pattern, count);
-   pcre_free(re);
-   pcre_free((void*)tables);
+   pcre2_code_free(re);
+   pcre2_match_data_free(ovector);
return FALSE;
}
 
-   pcre_free(re);
-   pcre_free((void*)tables);
+   pcre2_code_free(re);

-   if (count == PCRE_ERROR_NOMATCH)
+   if (count == PCRE2_ERROR_NOMATCH)
+   {
+   pcre2_match_data_free(ovector);
return FALSE;
+   }

-   const char *pcre_string = NULL;
-   if(pcre_get_substring(str, ovector, count, 0, _string) < 0)
+   PCRE2_UCHAR *pcre_string;
+   if(pcre2_substring_get_bynumber(ovector, 0, _string, _len) < 0)
+   {
+   pcre2_match_data_free(ovector);
return FALSE;
+   }
 
//log_message(TRACE, _("Match word '%s' and PERL pattern '%s'"), str, 
pattern);

-   pcre_free_substring(pcre_string);
+   pcre2_substring_free(pcre_string);
+   pcre2_match_data_free(ovector);

return TRUE;
 }


Bug#999931: virtuoso-opensource: depends on obsolete pcre3 library

2023-12-20 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch; build-tested only (although the
package's own testsuite has some checks which test this
functionality).
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/31
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-20
---

--- virtuoso-opensource.orig/libsrc/Wi/Makefile.am
+++ virtuoso-opensource/libsrc/Wi/Makefile.am
@@ -559,7 +559,7 @@
$(libwi_base_la_sources)
 
 libwi_la_CFLAGS  = $(libwi_base_la_cflags)
-libwi_la_LDLAGS  = -static -lminizip -lpcre
+libwi_la_LDLAGS  = -static -lminizip -lpcre2-8
 
 #KUBL_UNIV_FILES_ODBC
 libwi_odbc_la_SOURCES += \
--- virtuoso-opensource.orig/libsrc/Wi/bif_regexp.c
+++ virtuoso-opensource/libsrc/Wi/bif_regexp.c
@@ -30,7 +30,8 @@
 
 // Debian maintainer: replaced by external PCRE
 // #include "util/pcrelib/pcre.h"
-#include "pcre.h"
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 /*
typedef struct rx_query_s {
@@ -66,15 +67,16 @@
 typedef struct compiled_regexp_s
 {
   int refctr;
-  pcre *code;
-  pcre_extra *code_x;
+  pcre2_code *code;
 }
 compiled_regexp_t;
 
 id_hash_t *compiled_regexps;
 
-int32 c_pcre_match_limit_recursion = 500;
-int32 c_pcre_match_limit = 10;
+static pcre2_match_context *match_ctxt = NULL;
+
+uint32 c_pcre_match_limit_recursion = 500;
+uint32 c_pcre_match_limit = 10;
 int32 pcre_max_cache_sz = 2;
 int32 pcre_rnd_seed;
 
@@ -97,6 +99,23 @@
 }
 
 void
+create_match_context (void)
+{
+  if (NULL != match_ctxt)
+return;
+
+  match_ctxt = pcre2_match_context_create (NULL);
+  if (c_pcre_match_limit > 0)
+{
+  pcre2_set_match_limit (match_ctxt, c_pcre_match_limit);
+}
+  if (c_pcre_match_limit_recursion > 0)
+{
+  pcre2_set_depth_limit (match_ctxt, c_pcre_match_limit_recursion);
+}
+}
+
+void
 release_compiled_regexp (id_hash_t *c_r, compiled_regexp_t *data)
 {
   int delete_data;
@@ -112,9 +131,7 @@
   if (!delete_data)
 return;
   if (NULL != data->code)
-pcre_free (data->code);
-  if (NULL != data->code_x)
-pcre_free (data->code_x);
+pcre2_code_free (data->code);
   dk_free (data, sizeof (compiled_regexp_t));
 }
 
@@ -137,10 +154,11 @@
 }
 
 static compiled_regexp_t *
-get_compiled_regexp (id_hash_t *c_r, const char *pattern, int options, caddr_t 
*err_ret)
+get_compiled_regexp (id_hash_t *c_r, const char *pattern, uint32_t options, 
caddr_t *err_ret)
 {
-  const char *error = NULL;
-  int erroff;
+  int err;
+  PCRE2_UCHAR error[120];
+  PCRE2_SIZE erroff;
   regexp_key_t key;
   compiled_regexp_t **val = NULL;
   compiled_regexp_t tmp, *new_val;
@@ -156,46 +174,18 @@
 }
   HT_LEAVE (c_r);
   dbg_printf (("regex compiling (%s) with options %x ...\n", pattern, 
options));
-  tmp.code = pcre_compile (pattern, options, , , 0);
+  tmp.code = pcre2_compile ((PCRE2_SPTR) pattern, strlen (pattern),
+options, , , NULL);
   if (NULL == tmp.code)
 {
-  if (error)
-err_ret[0] = srv_make_new_error ("2201B",
-"SR098", "regexp error at \'%s\' column %d (%s)", pattern, erroff, 
error);
-  else
-err_ret[0] = srv_make_new_error ("2201B",
-"SR098", "regexp error at \'%s\' column %d", pattern, erroff);
+  pcre2_get_error_message(err, error, sizeof (error));
+  err_ret[0] = srv_make_new_error ("2201B",
+  "SR098", "regexp error at \'%s\' column %zu (%s)", pattern, erroff, 
error);
   return NULL;
 }
-  tmp.code_x = pcre_study (tmp.code, options, );
-#ifdef DEBUG
-  if (!tmp.code_x)
-dbg_printf (("***warning RX100: regexp warning: extra regular expression 
compiling failed\n"));
-#endif
-  if (!tmp.code_x)
- {
-   tmp.code_x = pcre_malloc (sizeof (pcre_extra));
-   if (tmp.code_x)
- memset (tmp.code_x, 0, sizeof (pcre_extra));
- }
-#ifdef PCRE_EXTRA_MATCH_LIMIT
-  if (c_pcre_match_limit > 0)
-{
-  tmp.code_x->flags |= PCRE_EXTRA_MATCH_LIMIT;
-  tmp.code_x->match_limit = c_pcre_match_limit;
-}
-#endif
-#ifdef PCRE_EXTRA_MATCH_LIMIT_RECURSION
-  if (c_pcre_match_limit_recursion > 0)
-{
-  tmp.code_x->flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION;
-  tmp.code_x->match_limit_recursion = c_pcre_match_limit_recursion;
-}
-#endif
   key.orig_strg = box_dv_short_string (pattern);
   new_val = (compiled_regexp_t *)dk_alloc (sizeof (compiled_regexp_t));
   new_val->code = tmp.code;
-  new_val->code_x = tmp.code_x;
   new_val->refctr = 1;
   HT_ENTER (c_r);
   pcre_cache_check (c_r);
@@ -302,18 +292,18 @@
 }
 
 
-static int
+static uint32_t
 regexp_optchars_to_bits (const char *strg)
 {
-  int res = 0;
+  uint32_t res = 0;
   const char *tail;
   for (tail = strg; '\0' != tail[0]; tail++)
 {
   switch (tail[0])
 {
-case 'i': case 'I': res |= PCRE_CASELESS; break;
-cas

Bug#999954: [Pkg-sugar-devel] Bug#999954: squeak-vm: depends on obsolete pcre3 library

2023-12-19 Thread Yavor Doganov
Jonas Smedegaard wrote:
> Quoting Yavor Doganov (2023-12-19 11:21:34)
> > Please find attached a patch;
> 
> Is it a patch that you composed yourself, or did you work based off of
> some upstream changeset.

The former.  I checked the new upstream release (downloaded with
uscan) and also checked upstream SVN trunk -- the problem was not
fixed there so I started off the current code in unstable.

This patch doesn't apply cleanly to the latest upstream release (it
has a bit different layout and there were changes to RePlugin) but I
guess it would be more or less trivial for me to adapt it.



Bug#999954: squeak-vm: depends on obsolete pcre3 library

2023-12-19 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch; unfortunately I could not find a way to
test it.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/54
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-19
---

--- squeak-vm.orig/platforms/unix/CMakeLists.txt
+++ squeak-vm/platforms/unix/CMakeLists.txt
@@ -125,7 +125,7 @@
   USE_LIBRARY ("-framework ${fwk}")
 ENDMACRO (USE_FRAMEWORK)
 
-USE_LIBRARY_SHARED ("-lpcre")
+USE_LIBRARY_SHARED ("-lpcre2-8")
 USE_LIBRARY_SHARED ("-ljpeg")
 
 MACRO (CONFIG_DEFINE var)
--- squeak-vm.orig/platforms/Cross/plugins/RePlugin/rePlugin.h
+++ squeak-vm/platforms/Cross/plugins/RePlugin/rePlugin.h
@@ -15,11 +15,9 @@
 
 The instance variables must appear in the preceding order.  MatchSpaceObj must 
be allocated by the calling routine and contain at least 6*(numGroups+1) bytes.
 */
-#include "pcre.h"
-#include "internal.h"
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 /* Adjust malloc and free routines as used by PCRE */
-static void rePluginFree(void * aPointer);
-static void * rePluginMalloc(size_t anInteger);
-void *(*pcre_malloc)(size_t) = rePluginMalloc;
-void  (*pcre_free)(void *) = rePluginFree;
+static void rePluginFree(void * aPointer, void * aData);
+static void * rePluginMalloc(size_t anInteger, void * aData);
--- squeak-vm.orig/platforms/unix/src/vm/intplugins/RePlugin/RePlugin.c
+++ squeak-vm/platforms/unix/src/vm/intplugins/RePlugin/RePlugin.c
@@ -35,7 +35,6 @@
 /*** Constants ***/
 
 /*** Function Prototypes ***/
-static sqInt allocateByteArrayAndSetRcvrExtraPtrFrom(sqInt anExtraPtr);
 static sqInt allocateByteArrayAndSetRcvrPCREPtrFromPCRE(sqInt aPCREPtr);
 static sqInt allocateStringAndSetRcvrErrorStrFromCStr(const char *aCStrBuffer);
 #pragma export on
@@ -52,17 +51,19 @@
 EXPORT(sqInt) primPCREExecfromto(void);
 EXPORT(sqInt) primPCRENumSubPatterns(void);
 #pragma export off
-static void rePluginFree(void *  aPointer);
+static void rePluginFree(void *  aPointer, void * aData);
 #pragma export on
-EXPORT(void *) rePluginMalloc(size_t  anInteger);
+EXPORT(void *) rePluginMalloc(size_t  anInteger, void * aData);
 EXPORT(sqInt) setInterpreter(struct VirtualMachine*anInterpreter);
 #pragma export off
 /*** Variables ***/
 static sqInt compileFlags;
-static sqInt errorOffset;
+static PCRE2_SIZE errorOffset;
 static sqInt errorStr;
-static const char *  errorStrBuffer;
-static sqInt extraPtr;
+static int errorCode;
+static pcre2_general_context * genContext = NULL;
+static pcre2_compile_context * compContext = NULL;
+static pcre2_match_context * matchContext = NULL;
 
 #ifdef SQUEAK_BUILTIN_PLUGIN
 extern
@@ -86,28 +87,6 @@
 static sqInt rcvr;
 
 
-static sqInt allocateByteArrayAndSetRcvrExtraPtrFrom(sqInt anExtraPtr) {
-   sqInt extraObject;
-   void *extraByteArrayPtr;
-
-   if (anExtraPtr) {
-
-   /* Allocate a Smalltalk ByteArray -- lastAlloc contains the 
length */
-
-   extraObject = 
interpreterProxy->instantiateClassindexableSize(interpreterProxy->classByteArray(),
 sizeof(real_pcre_extra));
-   /* begin loadRcvrFromStackAt: */
-   rcvr = interpreterProxy->stackObjectValue(0);
-   extraByteArrayPtr = interpreterProxy->arrayValueOf(extraObject);
-   memcpy(extraByteArrayPtr, (void *) anExtraPtr, 
sizeof(real_pcre_extra));
-   } else {
-   extraObject = interpreterProxy->nilObject();
-   }
-   /* begin rcvrExtraPtrFrom: */
-   interpreterProxy->storePointerofObjectwithValue(3, rcvr, extraObject);
-   ;
-   return extraObject;
-}
-
 static sqInt allocateByteArrayAndSetRcvrPCREPtrFromPCRE(sqInt aPCREPtr) {
sqInt patObject;
void *patByteArrayPtr;
@@ -184,13 +163,18 @@
 
 /* , where rcvr is an object with instance variables:
 
-   'patternStr compileFlags pcrePtr extraPtr errorStr errorOffset 
matchFlags'  
+   'patternStr compileFlags pcrePtr errorStr errorOffset matchFlags'
 
 Compile the regular expression in patternStr, and if the compilation is 
successful, attempt to optimize the compiled expression.  Store the results in 
 and , or fill errorStr with a meaningful errorString and 
errorOffset with an indicator where the error was found, applying compileFlags 
throughout.  Answer nil with a clean compile (regardless of whether an 
optimization is possible, and answer with the string otherwise. */
 
 EXPORT(sqInt) primPCRECompile(void) {
sqInt anInteger;
 
+   if (!genContext)
+   genContext = pcre2_general_context_create(rePluginMalloc,
+ rePluginFree, NULL);
+   if (!compContext)
+   compContext = pcre2_compile_context_create(genContext);
/* begin loadRcvrFromStackAt: */
rcvr = interpreterProxy->stackObjectValue(0);
patternStrPtr = ((char *) (interpreterProxy->fetchA

Bug#999960: sipxtapi: depends on obsolete pcre3 library

2023-12-18 Thread Yavor Doganov
Control: tags -1 + patch

Attached is a patch which I tested with the demo program at the end of
sipXportLib/src/utl/UtlRegex.cpp.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/60
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-18
---

--- sipxtapi-3.3.0~test18+dfsg.1.orig/configure.ac
+++ sipxtapi-3.3.0~test18+dfsg.1/configure.ac
@@ -59,7 +59,7 @@
 CHECK_OPUS
 
 # PCRE is mandatory
-PKG_CHECK_MODULES([DEPS_PCRE], [libpcre >= 4.5])
+PKG_CHECK_MODULES([DEPS_PCRE], [libpcre2-8])
 
 # OpenSSL is mandatory, find it or configure fails:
 CHECK_SSL
--- sipxtapi-3.3.0~test18+dfsg.1.orig/sipXportLib/include/utl/UtlRegex.h
+++ sipxtapi-3.3.0~test18+dfsg.1/sipXportLib/include/utl/UtlRegex.h
@@ -12,7 +12,8 @@
 #define _REGEX_H
 
 #include 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 #include "utl/UtlString.h"
 
 /**
@@ -61,8 +62,8 @@

/// Compile a regular expression to create the matching object.
   RegEx( const char * regex, //< the regular expression
- int   options = 0, //< any sum of PCRE options bits
- unsigned long int maxDepth = MAX_RECURSION // see MAX_RECURSION
+ uint32_t  options = 0, //< any sum of PCRE options bits
+ uint32_t maxDepth = MAX_RECURSION // see MAX_RECURSION
  );
   /**<
* If compiling the regular expression fails, an error message string is
@@ -71,7 +72,7 @@
*/
 
   /// Default maximum for the recursion depth in searches.
-  static const unsigned long int MAX_RECURSION;
+  static const uint32_t MAX_RECURSION;
   /**<
* The PCRE internal match() function implements some searches by recursion.
* This value is the default maximumm allowed depth for that recursion.  It 
can
@@ -115,7 +116,7 @@
   ~RegEx();
 
   /// Count the number of possible substrings returned by this expression
-  int SubStrings(void) const;
+  uint32_t SubStrings(void) const;
   /**<
*   SubStrings() @returns the number of substrings defined by
*   the regular expression.
@@ -142,8 +143,8 @@
 
   /// Search a string for matches to this regular expression
   bool Search( const char * subject,  ///< the string to be searched for a 
match
-   int len = -1,  ///< the length of the subject string
-   int options = 0///< sum of any PCRE options flags
+   PCRE2_SIZE len = -1,   ///< the length of the subject string
+   uint32_t options = 0   ///< sum of any PCRE options flags
);
   /**<
*Apply the regular expression to the subject string.
@@ -156,9 +157,9 @@
 
   /// Search a string starting at some offset for matches to this regular 
expression
   bool SearchAt(const char* subject,  ///< the string to be searched for a 
match
-int offset,   ///< offset to begin search in subject 
string
-int len = -1, ///< the length of the subject string
-int options = 0   ///< sum of any PCRE options flags
+PCRE2_SIZE offset,///< offset to begin search in subject 
string
+PCRE2_SIZE len = 0,   ///< the length of the subject string
+uint32_t options = 0  ///< sum of any PCRE options flags
 );
   /**<
*Apply the regular expression to the subject string, starting at the 
given offset.
@@ -175,7 +176,7 @@
 
 
   /// Repeat the last search operation, starting immediately after the 
previous match
-  bool SearchAgain( int options = 0///< sum of any PCRE options flags
+  bool SearchAgain( uint32_t options = 0   ///< sum of any PCRE options flags
);
   /**<
*SearchAgain() applies the regular expression to the same
@@ -432,17 +433,17 @@
 
   void ClearMatchList(void);
 
-  pcre * re;
+  pcre2_code * re;
+  pcre2_general_context * gen_ctxt;
+  pcre2_match_context * match_ctxt;
   size_t re_size;
-  pcre_extra * pe;
-  bool allocated_study;
-  size_t  study_size;
-  int substrcount; // maximum substrings in pattern
+  uint32_t substrcount;// maximum substrings in pattern
   const char * subjectStr; // original subject
-  int subjectLen;  // original length
-  int lastStart;   // offset of start for most recent Search or 
SearchAgain
-  int lastMatches; // pcre_exec return for most recent Search or 
SearchAgain
-  int * ovector;   // results from (and workspace for) pcre_exec
+  PCRE2_SIZE subjectLen;   // original length
+  PCRE2_SIZE lastStart;// offset of start for most recent Search or 
SearchAgain
+  int lastMatches; // pcre2_match return for most recent Search or 
SearchAgain
+  PCRE2_SIZE * ovector;// results from (and workspace for) pcre2_match
+  pcre2_match_data * md;   // PCRE match data block
   const char * * matchlist;// string cache for Match
 };
 
--- sipxtapi-3.3.0~test18+dfsg.1.orig/sipXportLib/src/

Bug#984331: sipxtapi: ftbfs with GCC-11

2023-12-18 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch.
Description: Fix FTBFS with GCC 11+.
Bug-Debian: https://bugs.debian.org/984331
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-18
---

--- sipxtapi-3.3.0~test18+dfsg.1.orig/sipXtackLib/src/net/SipMessage.cpp
+++ sipxtapi-3.3.0~test18+dfsg.1/sipXtackLib/src/net/SipMessage.cpp
@@ -3806,13 +3806,13 @@
 routeString.append(SIP_MULTIFIELD_SEPARATOR);
 }
 // Make sure the route is in name-addr format
-if(strstr(routeUri,"<") <= 0)
+if(!strstr(routeUri,"<"))
 {
 routeString.append("<");
 }
 
 routeString.append(routeUri);
-if(strstr(routeUri, ">") <= 0)
+if(!strstr(routeUri, ">"))
 {
 routeString.append(">");
 }


Bug#1058941: sipxtapi: FTBFS: PlgSpeex.c:21:10: fatal error: speex/speex.h: No such file or directory

2023-12-18 Thread Yavor Doganov
Source: sipxtapi
Version:  3.3.0~test18+dfsg.1-0.1
Severity: serious
Tags: sid ftbfs patch

This package fails to build from source because it has to build-depend
on libspeex-dev (libspeexdsp-dev only suggests it).  The exact error is:

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../../../.. 
-I../../../../../sipXmediaLib/include -I../../../../../sipXportLib/include 
-I../../../../../../sipXmediaLib/contrib/libspeex/include 
-I../../../../../sipXmediaLib/contrib/libspeex/include -Wdate-time 
-D_FORTIFY_SOURCE=2 -DHAVE_SSL 
-DDEFAULT_CODECS_PATH=\"/usr/lib/x86_64-linux-gnu/sipxtapi/codecs\" -g -O2 
"-ffile-prefix-map=/<>=." -fstack-protector-strong 
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection 
-DHAVE_SPEEX -D__pingtel_on_posix__ -D_linux_ -D_REENTRANT 
-D_FILE_OFFSET_BITS=64 -fmessage-length=0 -Wall -Wformat -Wwrite-strings 
-Wpointer-arith -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -c 
speex_nb.c  -fPIC -DPIC -o .libs/codec_speex_la-speex_nb.o
In file included from plgspeex.h:16,
 from speex_nb.c:16:
speex_nb.c:57:33: warning: no previous prototype for ‘speex_get_info_v1_1’ 
[-Wmissing-prototypes]
   57 | CODEC_API int PLG_GET_INFO_V1_1(speex)(const struct MppCodecInfoV1_1 
**codecInfo)
  | ^
../../../../../sipXmediaLib/include/mp/codecs/PlgDefsV1.h:183:40: note: in 
definition of macro ‘PLG_GET_INFO_V1_1’
  183 | #define PLG_GET_INFO_V1_1(x)   x##_get_info_v1_1
  |^
speex_nb.c:66:31: warning: no previous prototype for ‘speex_init_v1_2’ 
[-Wmissing-prototypes]
   66 | CODEC_API void *PLG_INIT_V1_2(speex)(const char* fmtp, int isDecoder,
  |   ^
../../../../../sipXmediaLib/include/mp/codecs/PlgDefsV1.h:184:40: note: in 
definition of macro ‘PLG_INIT_V1_2’
  184 | #define PLG_INIT_V1_2(x)   x##_init_v1_2
  |^
speex_nb.c:73:27: warning: no previous prototype for ‘speex_free_v1’ 
[-Wmissing-prototypes]
   73 | CODEC_API int PLG_FREE_V1(speex)(void* handle, int isDecoder)
  |   ^
../../../../../sipXmediaLib/include/mp/codecs/PlgDefsV1.h:188:40: note: in 
definition of macro ‘PLG_FREE_V1’
  188 | #define PLG_FREE_V1(x) x##_free_v1
  |^
speex_nb.c:78:43: warning: no previous prototype for 
‘speex_get_packet_samples_v1_2’ [-Wmissing-prototypes]
   78 | CODEC_API int PLG_GET_PACKET_SAMPLES_V1_2(speex)(void  *handle,
  |   ^
../../../../../sipXmediaLib/include/mp/codecs/PlgDefsV1.h:185:40: note: in 
definition of macro ‘PLG_GET_PACKET_SAMPLES_V1_2’
  185 | #define PLG_GET_PACKET_SAMPLES_V1_2(x) x##_get_packet_samples_v1_2
  |^
speex_nb.c:88:30: warning: no previous prototype for ‘speex_decode_v1’ 
[-Wmissing-prototypes]
   88 | CODEC_API  int PLG_DECODE_V1(speex)(void* handle, const void* 
pCodedData,
  |  ^
../../../../../sipXmediaLib/include/mp/codecs/PlgDefsV1.h:186:40: note: in 
definition of macro ‘PLG_DECODE_V1’
  186 | #define PLG_DECODE_V1(x)   x##_decode_v1
  |^
speex_nb.c:97:29: warning: no previous prototype for ‘speex_encode_v1’ 
[-Wmissing-prototypes]
   97 | CODEC_API int PLG_ENCODE_V1(speex)(void* handle, const void* 
pAudioBuffer,
  | ^
../../../../../sipXmediaLib/include/mp/codecs/PlgDefsV1.h:187:40: note: in 
definition of macro ‘PLG_ENCODE_V1’
  187 | #define PLG_ENCODE_V1(x)   x##_encode_v1
  |^
PlgSpeex.c:21:10: fatal error: speex/speex.h: No such file or directory
   21 | #include 
  |  ^~~
compilation terminated.
make[7]: *** [Makefile:576: codec_speex_la-PlgSpeex.lo] Error 1

Trivial patch attached.
--- debian/control.orig
+++ debian/control
@@ -2,7 +2,7 @@
 Section: libs
 Priority: optional
 Maintainer: Debian VoIP Team 
-Build-Depends: debhelper-compat (= 12), libssl-dev, libcppunit-dev, automake, 
libpcre3-dev, dpkg-dev (>= 1.16.1~), libxerces-c-dev, pkg-config, libgsm1-dev, 
libspandsp-dev, libspeexdsp-dev, doxygen, libopus-dev
+Build-Depends: debhelper-compat (= 12), libssl-dev, libcppunit-dev, automake, 
libpcre3-dev, dpkg-dev (>= 1.16.1~), libxerces-c-dev, pkg-config, libgsm1-dev, 
libspandsp-dev, libspeexdsp-dev, libspeex-dev, doxygen, libopus-dev
 Homepage: http://www.sipxtapi.org
 Standards-Version: 4.5.0
 Vcs-Git: https://salsa.debian.org/pkg-voip-team/sipxtapi.git


Bug#999964: shush: depends on obsolete pcre3 library

2023-12-17 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/64
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-17
---

--- shush-1.2.3.orig/configure.ac
+++ shush-1.2.3/configure.ac
@@ -60,9 +60,19 @@
 # Checks for libraries.
 AC_SEARCH_LIBS([basename], [gen])
 if test "x$with_pcre" != "xno"; then
-   AC_SEARCH_LIBS([pcre_compile], [pcre], ,
-   AC_MSG_WARN([Perl Compatible Regular Expressions library is missing.])
-   with_pcre="no")
+   save_libs="$LIBS"
+   LIBS="$LIBS -lpcre2-8"
+   AC_MSG_CHECKING([for pcre library])
+   AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
+]],
+  [[pcre2_match_data_create(4, NULL);]])],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+  AC_MSG_WARN([Perl Compatible Regular Expressions library is missing.])
+  with_pcre="no"
+  LIBS="$save_libs"])
 fi
 AC_SEARCH_LIBS([MD5Data], [md])
 AC_SEARCH_LIBS([md5_calc], [md5])
@@ -70,7 +80,11 @@
 # Checks for header files.
 AC_CHECK_HEADERS([md5.h paths.h pthread.h])
 if test "x$with_pcre" != "xno"; then
-   AC_CHECK_HEADERS([pcre.h])
+   AC_CHECK_HEADERS([pcre2.h],
+ [AC_DEFINE([HAVE_PCRE_H], [1],
+[Define to 1 if you have the  header file.])],
+ [], [[#define PCRE2_CODE_UNIT_WIDTH 8
+ ]])
 fi
 
 # Checks for typedefs, structures, and compiler characteristics.
--- shush-1.2.3.orig/src/analyzer.c
+++ shush-1.2.3/src/analyzer.c
@@ -16,7 +16,8 @@
 #include 
 #include 
 #if defined(HAVE_PCRE_H)
-# include 
+# define PCRE2_CODE_UNIT_WIDTH 8
+# include 
 #endif
 
 #include "analyzer.h"
@@ -40,7 +41,7 @@
 {
regex_t re;
 #if defined(HAVE_PCRE_H)
-   pcre *pcre;
+   pcre2_code *pcre;
 #endif
 } val;
 };
@@ -98,15 +99,19 @@
 static int
 compile_pcre(void *pcreptr, char *str)
 {
-pcre **re;
-const char *errmsg;
-int erroffset;
+pcre2_code **re;
+int err;
+PCRE2_SIZE erroffset;
 
 re = pcreptr;
-*re = pcre_compile(str, 0, , , NULL);
+*re = pcre2_compile((PCRE2_SPTR)str, strlen(str), 0,
+, , NULL);
 if (*re == NULL)
   {
-   error("Bad PCRE (offset %d): %s", erroffset, errmsg);
+   PCRE2_UCHAR errmsg[120];
+
+   pcre2_get_error_message(err, errmsg, sizeof(errmsg));
+   error("Bad PCRE (offset %zu): %s", erroffset, errmsg);
return -1;
   }
 return 0;
@@ -501,15 +506,17 @@
 #if defined(HAVE_PCRE_H)
  else if (type == PCRE)
{
- int ovector[3072];
+ PCRE2_SIZE *ovector;
+ pcre2_match_data *md;
 
- r = pcre_exec(list[condno].val.pcre, NULL, ln,
+ md = pcre2_match_data_create(3072, NULL);
+ r = pcre2_match(list[condno].val.pcre, (PCRE2_SPTR)ln,
(lndup != NULL) ? strlen(lndup) : nl - ln,
-   0, 0, ovector, 3072);
- if (r < 0 && r != PCRE_ERROR_NOMATCH)
+   0, 0, md, NULL);
+ if (r < 0 && r != PCRE2_ERROR_NOMATCH)
{
  /* Something bad happened */
- error("Fatal error during output analysis: pcre_exec() failed 
with code %d", r);
+ error("Fatal error during output analysis: pcre2_match() 
failed with code %d", r);
  error("Regular expression used was: %s",
list[condno].expression);
  error("Trying to match the following line of data: %s", ln);
@@ -517,6 +524,7 @@
  free(lndup);
  else
  *nl = '\n';
+  pcre2_match_data_free(md);
  return -1;
}
  else
@@ -527,14 +535,15 @@
 
  /* Matched */
  debug(DDATA,
-   "Matched: #%d %d[%c] (PCRE_ERROR_NOMATCH=%d)",
-   condno+1, r, list[condno].code, PCRE_ERROR_NOMATCH);
+   "Matched: #%d %d[%c] (PCRE2_ERROR_NOMATCH=%d)",
+   condno+1, r, list[condno].code, 
PCRE2_ERROR_NOMATCH);
  byteset_set(list[condno].code, 1);
  /* Check for substrings */
  i = 1;
+ ovector = pcre2_get_ovector_pointer(md);
  while (i < r)
{
- if (ovector[i*2] < 0 || ovector[i*2+1] < 0)
+ if ((int)ovector[i*2] < 0 || (int)ovector[i*2+1] < 0)
  continue;
  set_mark(marks, , ,
   ln - str + ovector[i*2], TOGGLE);
@@ 

Bug#999965: shadowsocks-libev: depends on obsolete pcre3 library

2023-12-17 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch, build-tested only.
>From a214f32480e417c9bf3358652f96d29d51325560 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Sun, 17 Dec 2023 14:23:39 +0200
Subject: [PATCH] Port to PCRE2 (#65)

---
 debian/changelog   |   7 ++
 debian/control |   2 +-
 debian/patches/pcre2.patch | 157 +
 debian/patches/series  |   1 +
 4 files changed, 166 insertions(+), 1 deletion(-)
 create mode 100644 debian/patches/pcre2.patch

diff --git a/debian/changelog b/debian/changelog
index c43a915..20c1f63 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+shadowsocks-libev (3.3.5+ds-11) UNRELEASED; urgency=medium
+
+  * debian/patches/pcre2.patch: New; port to PCRE2 (Closes: #65).
+  * debian/control (Build-Depends): Replace libpcre3-dev with libpcre2-dev.
+
+ -- Yavor Doganov   Sun, 17 Dec 2023 14:22:39 +0200
+
 shadowsocks-libev (3.3.5+ds-10) unstable; urgency=medium
 
   * Revert the move of systemd service files from /lib/ to /usr/lib/.
diff --git a/debian/control b/debian/control
index c2becba..d944661 100644
--- a/debian/control
+++ b/debian/control
@@ -16,7 +16,7 @@ Build-Depends:
  libev-dev,
  libjsonparser-dev,
  libmbedtls-dev,
- libpcre3-dev,
+ libpcre2-dev,
  libsodium-dev,
  pkg-config,
  xmlto,
diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
new file mode 100644
index 000..2691534
--- /dev/null
+++ b/debian/patches/pcre2.patch
@@ -0,0 +1,157 @@
+Description: Port to PCRE2.
+Bug-Debian: https://bugs.debian.org/65
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2023-12-17
+---
+
+--- shadowsocks-libev.orig/src/rule.c
 shadowsocks-libev/src/rule.c
+@@ -78,14 +78,18 @@
+ init_rule(rule_t *rule)
+ {
+ if (rule->pattern_re == NULL) {
+-const char *reerr;
+-int reerroffset;
++int reerr;
++PCRE2_SIZE reerroffset;
+ 
+ rule->pattern_re =
+-pcre_compile(rule->pattern, 0, , , NULL);
++pcre2_compile((PCRE2_SPTR)rule->pattern, strlen(rule->pattern),
++  0, , , NULL);
+ if (rule->pattern_re == NULL) {
+-LOGE("Regex compilation of \"%s\" failed: %s, offset %d",
+- rule->pattern, reerr, reerroffset);
++PCRE2_UCHAR buf[120];
++
++pcre2_get_error_message(reerr, buf, sizeof(buf));
++LOGE("Regex compilation of \"%s\" failed: %s, offset %zu",
++ rule->pattern, buf, reerroffset);
+ return 0;
+ }
+ }
+@@ -97,6 +101,7 @@
+ lookup_rule(const struct cork_dllist *rules, const char *name, size_t 
name_len)
+ {
+ struct cork_dllist_item *curr, *next;
++pcre2_match_data *md = NULL;
+ 
+ if (name == NULL) {
+ name = "";
+@@ -105,10 +110,15 @@
+ 
+ cork_dllist_foreach_void(rules, curr, next) {
+ rule_t *rule = cork_container_of(curr, rule_t, entries);
+-if (pcre_exec(rule->pattern_re, NULL,
+-  name, name_len, 0, 0, NULL, 0) >= 0)
++pcre2_match_data_free(md);
++md = pcre2_match_data_create_from_pattern(rule->pattern_re, NULL);
++if (pcre2_match(rule->pattern_re, (PCRE2_SPTR)name,
++name_len, 0, 0, md, NULL) >= 0) {
++pcre2_match_data_free(md);
+ return rule;
++}
+ }
++pcre2_match_data_free(md);
+ 
+ return NULL;
+ }
+@@ -128,6 +138,6 @@
+ 
+ ss_free(rule->pattern);
+ if (rule->pattern_re != NULL)
+-pcre_free(rule->pattern_re);
++pcre2_code_free(rule->pattern_re);
+ ss_free(rule);
+ }
+--- shadowsocks-libev.orig/src/rule.h
 shadowsocks-libev/src/rule.h
+@@ -33,17 +33,16 @@
+ 
+ #include 
+ 
+-#ifdef HAVE_PCRE_H
+-#include 
+-#elif HAVE_PCRE_PCRE_H
+-#include 
++#ifdef HAVE_PCRE2_H
++#define PCRE2_CODE_UNIT_WIDTH 8
++#include 
+ #endif
+ 
+ typedef struct rule {
+ char *pattern;
+ 
+ /* Runtime fields */
+-pcre *pattern_re;
++pcre2_code *pattern_re;
+ 
+ struct cork_dllist_item entries;
+ } rule_t;
+--- shadowsocks-libev.orig/m4/pcre.m4
 shadowsocks-libev/m4/pcre.m4
+@@ -82,12 +82,12 @@
+   fi
+ ],
+ [
+-  AC_CHECK_PROG(PCRE_CONFIG, pcre-config, pcre-config)
++  AC_CHECK_PROG(PCRE_CONFIG, pcre2-config, pcre2-config)
+   if test "x$PCRE_CONFIG" != "x"; then
+ enable_pcre=yes
+ pcre_base_dir="`$PCRE_CONFIG --prefix`"
+ pcre_include="`$PCRE_CONFIG --cflags | sed -es/-I//`"
+-pcre_ldflags="`$PCRE_CONFIG --libs | sed -es/-lpcre// -es/-L//`"
++pcre_ldflags="`$PCRE_CONFIG --libs8 | sed -es/-lpcre// -es/-L//`"
+   fi
+ ])
+ 
+@@ -95,7 +95,7 @@
+   AC_MSG_CHECKING([for pcre location])
+   AC_CACHE_VAL(ats_cv_pcre_dir,[
+   for dir in /usr/local /usr ; do
+-if test -d $dir &&

Bug#999968: sagan: depends on obsolete pcre3 library

2023-12-17 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch, build-tested only.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/68
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-17
---

--- sagan-1.2.0.orig/configure.ac
+++ sagan-1.2.0/configure.ac
@@ -392,14 +392,25 @@
 CPPFLAGS="${CPPFLAGS} -I${with_libpcre_includes}"
 fi
 
-AC_CHECK_HEADER(pcre.h,,[AC_ERROR(pcre.h not found ...)])
+AC_CHECK_HEADER([pcre2.h], [], [AC_MSG_ERROR([pcre2.h not found ...])],
+[[#define PCRE2_CODE_UNIT_WIDTH 8
+]])
 
 if test "$with_libpcre_libraries" != "no"; then
 LDFLAGS="${LDFLAGS} -L${with_libpcre_libraries}"
 fi
 
 PCRE=""
-AC_CHECK_LIB(pcre, pcre_get_substring,, PCRE="no")
+LIBS="$LIBS -lpcre2-8"
+AC_MSG_CHECKING([for pcre library])
+AC_LINK_IFELSE(
+  [AC_LANG_PROGRAM([[#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
+]],
+[[pcre2_match_data *md = pcre2_match_data_create(4, NULL);]])],
+  [AC_MSG_RESULT([yes])],
+  [AC_MSG_RESULT([no])
+   PCRE="no"])
 if test "$PCRE" = "no"; then
 echo
 echo "   ERROR!  pcre library not found, go get it"
@@ -408,98 +419,44 @@
 exit 1
 fi
 
-# libpcre 8.35 (especially on debian) has a known issue that results in 
segfaults
-if test "$with_libpcre_libraries" = "no"; then
-PKG_CHECK_MODULES(LIBPCREVERSION, [libpcre = 
8.35],[libpcre_buggy_found="yes"],[libprce_buggy_found="no"])
-if test "$libpcre_buggy_found" = "yes"; then
-echo
-echo "   Warning! vulnerable libpcre version 8.35 found"
-echo "   This version has a known issue that could result in segfaults"
-echo "   please upgrade to a newer version of pcre which you can get 
from"
-echo "   www.pcre.org. For more information, see issue #1693"
-echo
-echo "   Continuing for now with JIT disabled..."
-echo
-fi
-fi
-
-# To prevent duping the lib link we reset LIBS after this check. Setting 
action-if-found to NULL doesn't seem to work
-# see: http://blog.flameeyes.eu/2008/04/29/i-consider-ac_check_lib-harmful
-PCRE=""
-TMPLIBS="${LIBS}"
-AC_CHECK_LIB(pcre, pcre_dfa_exec,, PCRE="no")
-if test "$PCRE" = "no"; then
-echo
-echo "   ERROR!  pcre library was found but version was < 6.0"
-echo "   please upgrade to a newer version of pcre which you can get from"
-echo "   www.pcre.org."
-echo
-exit 1
-fi
-LIBS="${TMPLIBS}"
-
-AC_TRY_COMPILE([ #include  ],
-[ int eo = 0; eo |= PCRE_EXTRA_MATCH_LIMIT_RECURSION; ],
-[ pcre_match_limit_recursion_available=yes ], [:]
-)
-
-if test "$pcre_match_limit_recursion_available" != "yes"; then
-echo
-echo "   Warning! pcre extra opt PCRE_EXTRA_MATCH_LIMIT_RECURSION not 
found"
-echo "   This could lead to potential DoS please upgrade to pcre >= 6.5"
-echo "   from www.pcre.org."
-echo "   Continuing for now"
-echo
-AC_DEFINE([NO_PCRE_MATCH_RLIMIT],[1],[Pcre 
PCRE_EXTRA_MATCH_LIMIT_RECURSION not available])
-fi
-
-TMPCFLAGS="${CFLAGS}"
-CFLAGS="-O0 -g -Werror -Wall"
-AC_TRY_COMPILE([ #include  ],
-[ pcre_extra *extra = NULL; pcre_free_study(extra); ],
-[ AC_DEFINE([HAVE_PCRE_FREE_STUDY], [1], [Pcre pcre_free_study 
supported])], [:]
-)
-CFLAGS="${TMPCFLAGS}"
-
-
 #enable support for PCRE-jit available since pcre-8.20
 AC_MSG_CHECKING(for PCRE JIT support)
-AC_TRY_COMPILE([ #include  ],
-[
-int jit = 0;
-pcre_config(PCRE_CONFIG_JIT, );
-],
+AC_RUN_IFELSE(
+  [AC_LANG_PROGRAM([[#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
+]],
+[[uint32_t jit = 0;
+  pcre2_config(PCRE2_CONFIG_JIT, );
+  if (jit)
+exit(EXIT_SUCCESS);
+  exit(EXIT_FAILURE);]])],
 [ pcre_jit_available=yes ], [ pcre_jit_available=no ]
 )
 
-# bug 1693, libpcre 8.35 is broken and debian jessie is still using that
-if test "$libpcre_buggy_found" = "yes"; then
-pcre_jit_available="no, libpcre 8.35 blacklisted"
-fi
-
 
 if test "x$pcre_jit_available" = "xyes"; then
AC_MSG_RESULT(yes)
AC_DEFINE([PCRE_HAVE_JIT], [1], [Pcre with JIT compiler support enabled])
 
AC_MSG_CHECKING(for PCRE JIT support usability)
-   AC_TRY_COMPILE([ #include  ],
-   [
-   const char* regexstr = "(a|b|c|d)";
-   pcre *re;
-   const char *error;
-   pcre_extra *extra;
-   int err_offset;
-   re = pcre_compile(regexstr,0, , _offset,NULL);
-   extra = pcre_study(re, PCRE_STUDY_JIT_COMPILE, );
-   if (extra == NULL)
-   exit(EXIT_FAILURE);
-   int jit = 0;
-   int ret = pcre_fullinfo(re, extra, PCRE_INFO_JIT, );
-   if (ret != 0 || jit !=

Bug#999984: prads: depends on obsolete pcre3 library

2023-12-16 Thread Yavor Doganov
Control: tags -1 + patch

Please find a patch attached.
I could not observe problems while testing it.
>From 014406e858e3e2af471bfb2b392ea693674120e3 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Sun, 17 Dec 2023 00:53:23 +0200
Subject: [PATCH] Port to PCRE2 (#84)

---
 debian/changelog  |   8 +
 debian/control|   5 +-
 debian/patches/debian-changes | 359 ++
 src/Makefile  |   2 +-
 src/prads.c   |   5 +-
 src/prads.h   |   6 +-
 src/servicefp/servicefp.c |  31 ++-
 src/servicefp/servicefp.h |   4 +-
 src/servicefp/tcpc.c  |  18 +-
 src/servicefp/tcps.c  |  18 +-
 src/servicefp/udps.c  |  18 +-
 11 files changed, 430 insertions(+), 44 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 445f0e0..9735891 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+prads (0.3.3-8) UNRELEASED; urgency=medium
+
+  * Port to PCRE2 (Closes: #84).
+  * debian/control (Depends): Drop libpcre3.
+(Build-Depends): Replace libpcre3-dev with libpcre2-dev.
+
+ -- Yavor Doganov   Sun, 17 Dec 2023 00:51:17 +0200
+
 prads (0.3.3-7) unstable; urgency=medium
 
   * Remove 1 obsolete maintscript entry.
diff --git a/debian/control b/debian/control
index 5895778..a2fb71f 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,7 @@ Maintainer: Stig Sandbeck Mathisen 
 Build-Depends:
  debhelper-compat (= 13),
  libpcap-dev,
- libpcre3-dev,
+ libpcre2-dev,
  python3-docutils,
 Standards-Version: 4.6.0
 Homepage: https://gamelinux.github.com/prads/
@@ -15,8 +15,7 @@ Vcs-Browser: https://salsa.debian.org/debian/prads
 Package: prads
 Architecture: any
 Pre-Depends: ${misc:Pre-Depends}
-Depends: ${shlibs:Depends}, ${misc:Depends}, libpcap0.8, libpcre3,
- adduser
+Depends: ${shlibs:Depends}, ${misc:Depends}, libpcap0.8, adduser
 Description: Passive Real-time Asset Detection System
  PRADS is a Passive Real-time Asset Detection System.
  .
diff --git a/debian/patches/debian-changes b/debian/patches/debian-changes
index 89c1c18..848acc3 100644
--- a/debian/patches/debian-changes
+++ b/debian/patches/debian-changes
@@ -58,6 +58,15 @@ A single combined diff, containing all the changes, follows.
  
  # for finding static libraries
  LIBDIR=/usr/lib/x86_64-linux-gnu
+@@ -28,7 +28,7 @@ ifeq (${STATIC},)
+ ifeq (${TCMALLOC},y)
+ LDFLAGS+=-ltcmalloc
+ endif
+-LDFLAGS+=-lpcap -lpcre -lresolv
++LDFLAGS+=-lpcap -lpcre2-8 -lresolv
+ CFLAGS+=-DCONFDIR='"${CONFDIR}/"'
+ else
+ ifeq (${TCMALLOC},y)
 --- prads-0.3.3.orig/src/output-plugins/log.h
 +++ prads-0.3.3/src/output-plugins/log.h
 @@ -19,8 +19,8 @@ typedef struct _output_plugin {
@@ -82,3 +91,353 @@ A single combined diff, containing all the changes, follows.
  
  /* --
   * FUNCTION : init_identification
+@@ -135,8 +135,8 @@ int parse_raw_signature(bstring line, in
+ signature *sig, *head;
+ sig = head = NULL;
+ bstring pcre_string = NULL;
+-const char *err = NULL; /* PCRE */
+-int erroffset;  /* PCRE */
++int err;/* PCRE */
++PCRE2_SIZE erroffset;   /* PCRE */
+ int ret = 0;
+ int i;
+ 
+@@ -207,18 +207,17 @@ int parse_raw_signature(bstring line, in
+  */
+ if (pcre_string != NULL) {
+ if ((sig->regex =
+- pcre_compile((char *)bdata(pcre_string), 0, ,
+-  , NULL)) == NULL) {
++ pcre2_compile((PCRE2_SPTR)bdata(pcre_string),
++   PCRE2_ZERO_TERMINATED, 0, ,
++   , NULL)) == NULL) {
++PCRE2_UCHAR buf[120];
++
++pcre2_get_error_message(err, buf, sizeof(buf));
+ printf("Unable to compile signature:  %s at line %d (%s)",
+-   err, lineno, bdata(line));
++   buf, lineno, bdata(line));
+ ret = -1;
+ }
+ }
+-if (ret != -1) {
+-sig->study = pcre_study(sig->regex, 0, );
+-if (err != NULL)
+-printf("Unable to study signature:  %s", err);
+-}
+ 
+ /*
+  * Add signature to 'signature_list' data structure. 
+@@ -266,8 +265,7 @@ void free_signature_list (signature *hea
+ bdestroy(head->title.app);
+ bdestroy(head->title.ver);
+ bdestroy(head->title.misc);
+-if (head->regex != NULL) free(head->regex);
+-if (head->study != NULL) free(head->study);
++pcre2_code_free(head->regex);
+ tmp = head->next;
+ free(head);
+ head = NULL;
+@@ -297,11 +295,11 @@ void del_signature_lists()
+  * INPUT: 0 - Signature Pointer
+  *  : 1 - payload
+  *

Bug#1058817: picom: depends on obsolete pcre3 library

2023-12-16 Thread Yavor Doganov
Source: picom
Version: 10.2-1
Severity: serious
Tags: sid trixie fixed-upstream
User: matthew-pcre...@debian.org
Usertags: obsolete-pcre3

Dear maintainer,

During the mass bug filing for the pcre3->pcre2 transition [*], this
package was left out somehow.  I am filing this (edited copy)
post-factum.  Fortunately this bug has been fixed upstream.

[*] https://release.debian.org/transitions/html/pcre3-to-pcre2.html

Your package still depends on the old, obsolete PCRE3 libraries
(i.e. libpcre3-dev). This has been end of life for a while now, and
upstream do not intend to fix any further bugs in it. Accordingly, we
would like to remove the pcre3 libraries from Debian.

The newer PCRE2 library was first released in 2015, and has been in
Debian since stretch. Upstream's documentation for PCRE2 is available
here: https://pcre.org/current/doc/html/

Many large projects that use PCRE have made the switch now (e.g. git,
php); it does involve some work, but we are now at the stage where
PCRE3 should not be used, particularly if it might ever be exposed to
untrusted input.

This mass bug filing was discussed on debian-devel@ in
https://lists.debian.org/debian-devel/2021/11/msg00176.html



Bug#1000001: pgpcre: depends on obsolete pcre3 library

2023-12-16 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch.

I have not tested the package except the build-time tests.  Initially,
I tried to follow upstream's desire for custom memory management, so I
created a pcre2_general_context in _PG_init (changing the
pgpcre_malloc/pgpcre_free prototypes as is required).  Unfortunately,
the test program crashes when pfree is invoked in
src:pcre2:src/pcre2_match.c:6846.  It looks like palloc/pfree are not
suitable as PCRE2 custom memory management functions as they use memory
context like in PCRE2 itself.  Or I am misunderstanding something.
>From f46d9ca762751a3c856369d781cf69554c31e001 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Sat, 16 Dec 2023 22:29:20 +0200
Subject: [PATCH] Port to PCRE2 (#101).

---
 debian/changelog   |   6 +
 debian/control |   2 +-
 debian/control.in  |   2 +-
 debian/patches/pcre2.patch | 268 +
 debian/patches/series  |   1 +
 5 files changed, 277 insertions(+), 2 deletions(-)
 create mode 100644 debian/patches/pcre2.patch
 create mode 100644 debian/patches/series

diff --git a/debian/changelog b/debian/changelog
index 1d0f545..cba8632 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+pgpcre (0.20190509-7) UNRELEASED; urgency=medium
+
+  * Port to PCRE2 (Closes: #101).
+
+ -- Yavor Doganov   Sat, 16 Dec 2023 22:27:38 +0200
+
 pgpcre (0.20190509-6) unstable; urgency=medium
 
   * Upload for PostgreSQL 16.
diff --git a/debian/control b/debian/control
index 1073417..bb8c141 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@ Uploaders:
  Christoph Berg ,
 Build-Depends:
  debhelper-compat (= 13),
- libpcre3-dev,
+ libpcre2-dev,
  pkg-config,
  postgresql-all (>= 217~),
 Standards-Version: 4.6.2
diff --git a/debian/control.in b/debian/control.in
index 5fe2318..0f01b24 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -6,7 +6,7 @@ Uploaders:
  Christoph Berg ,
 Build-Depends:
  debhelper-compat (= 13),
- libpcre3-dev,
+ libpcre2-dev,
  pkg-config,
  postgresql-all (>= 217~),
 Standards-Version: 4.6.2
diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
new file mode 100644
index 000..f138fb1
--- /dev/null
+++ b/debian/patches/pcre2.patch
@@ -0,0 +1,268 @@
+Description: Port to PCRE2.
+Bug-Debian: https://bugs.debian.org/101
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2023-12-16
+---
+
+--- pgpcre-0.20190509.orig/Makefile
 pgpcre-0.20190509/Makefile
+@@ -6,12 +6,12 @@
+ OBJS = pgpcre.o
+ DATA = pgpcre--0.sql pgpcre--1.sql pgpcre--0--1.sql
+ 
+-ifeq (no,$(shell $(PKG_CONFIG) libpcre || echo no))
++ifeq (no,$(shell $(PKG_CONFIG) libpcre2-8 || echo no))
+ $(warning libpcre not registed with pkg-config, build might fail)
+ endif
+ 
+-PG_CPPFLAGS += $(shell $(PKG_CONFIG) --cflags-only-I libpcre)
+-SHLIB_LINK += $(shell $(PKG_CONFIG) --libs libpcre)
++PG_CPPFLAGS += $(shell $(PKG_CONFIG) --cflags-only-I libpcre2-8)
++SHLIB_LINK += $(shell $(PKG_CONFIG) --libs libpcre2-8)
+ 
+ REGRESS = init test unicode
+ REGRESS_OPTS = --inputdir=test
+--- pgpcre-0.20190509.orig/pgpcre.c
 pgpcre-0.20190509/pgpcre.c
+@@ -5,7 +5,8 @@
+ #include 
+ #include 
+ 
+-#include 
++#define PCRE2_CODE_UNIT_WIDTH 8
++#include 
+ 
+ PG_MODULE_MAGIC;
+ 
+@@ -57,19 +58,19 @@
+ pcre_in(PG_FUNCTION_ARGS)
+ {
+   char   *input_string = PG_GETARG_CSTRING(0);
+-  pcre   *pc;
+-  const char *err;
+-  int erroffset;
+-  size_t  in_strlen;
+-  int rc, total_len, pcsize;
++  pcre2_code *pc;
++  int err;
++  PCRE2_SIZE  erroffset;
++  size_t  in_strlen, pcsize;
++  int rc, total_len;
+   pgpcre *result;
+ 
+   in_strlen = strlen(input_string);
+ 
+   if (GetDatabaseEncoding() == PG_UTF8)
+-  pc = pcre_compile(input_string, PCRE_UTF8 | PCRE_UCP, , 
, NULL);
++  pc = pcre2_compile((PCRE2_SPTR) input_string, in_strlen, 
PCRE2_UTF | PCRE2_UCP, , , NULL);
+   else if (GetDatabaseEncoding() == PG_SQL_ASCII)
+-  pc = pcre_compile(input_string, 0, , , NULL);
++  pc = pcre2_compile((PCRE2_SPTR) input_string, in_strlen, 0, 
, , NULL);
+   else
+   {
+   char *utf8string;
+@@ -78,22 +79,27 @@
+   
in_strlen,
+   
GetDatabaseEncoding(),
+   
PG_UTF8);
+-  pc = pcre_compile(utf8string, PCRE_UTF8 | PCRE_UCP, , 
, NULL);
++  pc = pcre2_compile((PCRE2_SPTR) utf8string, strlen(utf8string), 
PCRE2_UTF | PCRE2_UCP, , , NULL);
+   if (utf8string != inp

Bug#1000009: opencollada: depends on obsolete pcre3 library

2023-12-16 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch.
Tested with an example COLLADA file.
>From f1772e60500e6cbdf3231792a6f7216eb1ac53e0 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Sat, 16 Dec 2023 15:34:11 +0200
Subject: [PATCH] Port to PCRE2 (#109)

---
 debian/changelog   |   7 +
 debian/control |   2 +-
 debian/patches/pcre2.patch | 785 +
 debian/patches/series  |   1 +
 4 files changed, 794 insertions(+), 1 deletion(-)
 create mode 100644 debian/patches/pcre2.patch

diff --git a/debian/changelog b/debian/changelog
index c87ac4f..f0634a2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+opencollada (0.1.0~20180719.619d942+dfsg0-3) UNRELEASED; urgency=medium
+
+  * debian/patches/pcre2.patch: New; port to PCRE2 (Closes: #109).
+  * debian/control (Build-Depends): Replace libpcre3-dev with libpcre2-dev.
+
+ -- Yavor Doganov   Sat, 16 Dec 2023 15:32:13 +0200
+
 opencollada (0.1.0~20180719.619d942+dfsg0-2) unstable; urgency=medium
 
   * Upload to unstable
diff --git a/debian/control b/debian/control
index da6c13e..4c64ef8 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@ Uploaders: Matteo F. Vescovi 
 Build-Depends:
  cmake,
  debhelper-compat (= 11),
- libpcre3-dev,
+ libpcre2-dev,
  libxml2-dev
 Standards-Version: 4.2.1
 Homepage: http://www.opencollada.org/
diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
new file mode 100644
index 000..6849bc6
--- /dev/null
+++ b/debian/patches/pcre2.patch
@@ -0,0 +1,785 @@
+Description: Port to PCRE2.
+Bug-Debian: https://bugs.debian.org/109
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2023-12-16
+---
+
+--- opencollada.orig/CMakeLists.txt
 opencollada/CMakeLists.txt
+@@ -257,16 +257,8 @@
+ find_package(PCRE)

+ if (PCRE_FOUND)

+   message(STATUS "SUCCESSFUL: PCRE found")

+-else ()  # if pcre not found building its local copy from ./Externals

+-  if (WIN32 OR APPLE)

+-  message("WARNING: Native PCRE not found, taking PCRE from 
./Externals")

+-  add_definitions(-DPCRE_STATIC)

+-  add_subdirectory(${EXTERNAL_LIBRARIES}/pcre)

+-  set(PCRE_INCLUDE_DIR ${libpcre_include_dirs})

+-  set(PCRE_LIBRARIES pcre)

+-  else ()

+-  message("ERROR: PCRE not found, please install pcre library")

+-  endif ()

++else ()

++  message("ERROR: PCRE not found, please install pcre library")

+ endif ()

+ 

+ # building required libs

+--- opencollada.orig/COLLADABaseUtils/include/COLLADABUPcreCompiledPattern.h
 opencollada/COLLADABaseUtils/include/COLLADABUPcreCompiledPattern.h
+@@ -12,6 +12,8 @@
+ #define __COLLADABU_PCRECOMPILEDPATTERN_H__

+ 

+ #include "COLLADABUPrerequisites.h"

++#define PCRE2_CODE_UNIT_WIDTH 8
++#include 
+ 

+ struct real_pcre;
+ typedef struct real_pcre pcre;
+@@ -29,7 +31,7 @@
+   {

+   private:

+   /** The compiled pattern.*/

+-  pcre *mCompiledPattern;

++  pcre2_code *mCompiledPattern;

+ 

+   /** True, if we need to free the pattern in the destructor, 
false otherwise.*/

+   bool mFreePattern;

+@@ -44,7 +46,7 @@
+   virtual ~PcreCompiledPattern();

+ 

+   /** Returns the compiled pattern. */

+-  pcre* getCompiledPattern() const;

++  pcre2_code* getCompiledPattern() const;

+ 

+   private:

+ 

+@@ -55,7 +57,7 @@
+   const PcreCompiledPattern& operator= ( const 
PcreCompiledPattern& pre );

+ 

+   /** Compiles the pattern.*/

+-  pcre* compilePattern( const char* pattern );

++  pcre2_code* compilePattern( const char* pattern );

+ 

+   };

+ 

+--- opencollada.orig/COLLADABaseUtils/src/COLLADABUPcreCompiledPattern.cpp
 opencollada/COLLADABaseUtils/src/COLLADABUPcreCompiledPattern.cpp
+@@ -11,7 +11,6 @@
+ #include "COLLADABUStableHeaders.h"
+ #include "COLLADABUPcreCompiledPattern.h"
+ 
+-#include "pcre.h"
+ 
+ namespace COLLADABU
+ {
+@@ -30,17 +29,18 @@
+   {
+   if ( mFreePattern )
+   {
+-  pcre_free(mCompiledPattern);
++  pcre2_code_free(mCompiledPattern);
+   }
+   }
+ 
+   //--
+-  pcre* PcreCompiledPattern::compilePattern( const char* pattern )
++  pcre2_code* PcreCompiledPattern::compilePattern( const char* pattern )
+   {
+-  const char *error;
+-  int erroffset;
+-  pcre* compiledPattern = pcre_compile(
+-  pattern,
  /* the pattern */
++  int error;
++  size_t erroffset;
++  pcre2_code* compiledPattern = pcre2_compile(
++

Bug#1050187: mvdsv: depends on obsolete pcre3 library

2023-12-14 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch (build-tested only).
>From e7127e5a2fa57f84dc12cc6d63671c872c48d28b Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Thu, 14 Dec 2023 18:31:41 +0200
Subject: [PATCH] Port to PCRE2 (#1050187)

---
 debian/changelog   |   7 +
 debian/control |   2 +-
 debian/patches/pcre2.patch | 316 +
 debian/patches/series  |   1 +
 4 files changed, 325 insertions(+), 1 deletion(-)
 create mode 100644 debian/patches/pcre2.patch

diff --git a/debian/changelog b/debian/changelog
index 0f44607..9874ff2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+mvdsv (0.35-7) UNRELEASED; urgency=medium
+
+  * debian/patches/pcre2.patch: New; port to PCRE2 (Closes: #1050187).
+  * debian/control (Build-Depends): Replace libpcre3-dev with libpcre2-dev.
+
+ -- Yavor Doganov   Thu, 14 Dec 2023 18:30:40 +0200
+
 mvdsv (0.35-6) unstable; urgency=high
 
   * Fix build failure on big endian systems
diff --git a/debian/control b/debian/control
index d53102d..f69173d 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,7 @@ Priority: optional
 Build-Depends: debhelper-compat (= 13),
cmake,
libcurl4-openssl-dev,
-   libpcre3-dev,
+   libpcre2-dev,
 Rules-Requires-Root: no
 Standards-Version: 4.6.2
 Vcs-Browser: https://salsa.debian.org/games-team/mvdsv
diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
new file mode 100644
index 000..efad8d1
--- /dev/null
+++ b/debian/patches/pcre2.patch
@@ -0,0 +1,316 @@
+Description: Port to PCRE2.
+Bug-Debian: https://bugs.debian.org/1050187
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2023-12-14
+---
+
+--- mvdsv.orig/CMakeLists.txt
 mvdsv/CMakeLists.txt
+@@ -90,18 +90,14 @@
+ 
##
+  
+ # Check for PCRE. if found, include it; if not found, use bundled PCRE.
+-find_library(PCRE_LIBRARIES pcre)
++find_library(PCRE_LIBRARIES pcre2-8)
+ if(PCRE_LIBRARIES)
+   set(PCRE_FOUND 1)
+-  find_path(PCRE_INCLUDE_DIR pcre.h)
++  find_path(PCRE_INCLUDE_DIR pcre2.h)
+ endif(PCRE_LIBRARIES)
+ 
+ if(NOT PCRE_FOUND)
+-  message(STATUS "PCRE library not found. Using bundled PCRE instead.")
+-  list(APPEND SRC_COMMON
+-  "${DIR_SRC}/pcre/get.c"
+-  "${DIR_SRC}/pcre/pcre.c"
+-  )
++  message(FATAL_ERROR "PCRE library not found.")
+ else()
+   message(STATUS "Found PCRE: ${PCRE_LIBRARIES}")
+ endif()
+--- mvdsv.orig/src/sv_demo_misc.c
 mvdsv/src/sv_demo_misc.c
+@@ -22,7 +22,8 @@
+ #ifndef CLIENTONLY
+ #include "qwsvdef.h"
+ #ifndef SERVERONLY
+-#include "pcre.h"
++#define PCRE2_CODE_UNIT_WIDTH 8
++#include 
+ #endif
+ 
+ #define MAX_DEMOINFO_SIZE (1024 * 200)
+@@ -342,8 +343,10 @@
+   int files[MAX_DIRFILES + 1];
+ 
+   int r;
+-  pcre*preg;
+-  const char  *errbuf;
++  size_t erroffset;
++  pcre2_code *preg;
++  pcre2_match_data *md;
++  PCRE2_UCHAR errbuf[120];
+ 
+   memset(files, 0, sizeof(files));
+ 
+@@ -361,26 +364,29 @@
+   {
+   if (use_regex)
+   {
+-  if (!(preg = 
pcre_compile(Q_normalizetext(Cmd_Argv(j)), PCRE_CASELESS, , , NULL)))
++  if (!(preg = 
pcre2_compile((PCRE2_SPTR)Q_normalizetext(Cmd_Argv(j)), PCRE2_ZERO_TERMINATED, 
PCRE2_CASELESS, , , NULL)))
+   {
+-  Con_Printf("Sys_listdir: 
pcre_compile(%s) error: %s at offset %d\n",
+- Cmd_Argv(j), errbuf, r);
+-  pcre_free(preg);
++  pcre2_get_error_message(r, errbuf, 
sizeof(errbuf));
++  Con_Printf("Sys_listdir: 
pcre2_compile(%s) error: %s at offset %lu\n",
++ Cmd_Argv(j), errbuf, 
erroffset);
+   break;
+   }
+-  switch (r = pcre_exec(preg, NULL, list->name,
+-strlen(list->name), 0, 0, 
NULL, 0))
++  md = pcre2_match_data_create_from_pattern(preg, 
NULL);
++  switch (r = pcre2_match(preg, 
(PCRE2_SPTR)list->name,
++  strlen(list->name), 0, 
0, md, NULL))
+   {
+   case 0:
+-  pcre_free(preg);
++  pcre2_match_data_free(md);
++  pcre

Bug#1057281: RFS: parser/3.4.6-4 [QA] [RC] -- HTML-embedded scripting language

2023-12-12 Thread Yavor Doganov
On Sat, 02 Dec 2023 18:44:29 +0200,
Yavor Doganov wrote:
>* debian/patches/pcre2.patch: New; port to PCRE2 (Closes: #106).

Upstream reworked the patch that I forwarded to retain support for the
old PCRE, so I have updated it to the version that will be part of the
next upstream release and reuploaded the package to mentors.d.n.  The
only other change is the updated debian/changelog timestamp.



Bug#1000015: mp4h: depends on obsolete pcre3 library

2023-12-10 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch.
>From 4ead19b22c1564097192c50e2ec42c07351ef8de Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Sun, 10 Dec 2023 17:12:31 +0200
Subject: [PATCH] Port to PCRE2 (#115)

---
 debian/changelog   |   7 +
 debian/control |   2 +-
 debian/patches/pcre2.patch | 449 +
 debian/patches/series  |   1 +
 4 files changed, 458 insertions(+), 1 deletion(-)
 create mode 100644 debian/patches/pcre2.patch

diff --git a/debian/changelog b/debian/changelog
index b8143c6..018 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+mp4h (1.3.1-18) UNRELEASED; urgency=medium
+
+  * debian/patches/pcre2.patch: New; port to PCRE2 (Closes: #115).
+  * debian/control (Build-Depends): Replace libpcre3-dev with libpcre2-dev.
+
+ -- Yavor Doganov   Sun, 10 Dec 2023 17:11:18 +0200
+
 mp4h (1.3.1-17) unstable; urgency=medium
 
   [ Axel Beckert ]
diff --git a/debian/control b/debian/control
index 4ee9a51..4630c13 100644
--- a/debian/control
+++ b/debian/control
@@ -9,7 +9,7 @@ Build-Depends: autoconf (>= 2.57~),
fakeroot,
gettext,
libltdl-dev,
-   libpcre3-dev,
+   libpcre2-dev,
libtool,
tidy
 Build-Conflicts: autoconf2.13,
diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
new file mode 100644
index 000..15a5857
--- /dev/null
+++ b/debian/patches/pcre2.patch
@@ -0,0 +1,449 @@
+Description: Port to PCRE2.
+Bug-Debian: https://bugs.debian.org/115
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2023-12-10
+---
+
+--- mp4h.orig/src/Makefile.am
 mp4h/src/Makefile.am
+@@ -17,7 +17,7 @@
+ if LOADABLE_MODULES
+ mp4h_LDFLAGS = -export-dynamic
+ endif
+-mp4h_LDADD   = -lm $(top_builddir)/lib/libmp4h.a -lpcre @LIBINTL@ 
$(MODULE_LDADD)
++mp4h_LDADD   = -lm $(top_builddir)/lib/libmp4h.a -lpcre2-8 @LIBINTL@ 
$(MODULE_LDADD)
+ 
+ include_HEADERS = mp4h.h
+ noinst_HEADERS  = builtin.h
+--- mp4h.orig/src/builtin.c
 mp4h/src/builtin.c
+@@ -373,7 +373,7 @@
+ static char * utf8char_skip __P ((char *, int));
+ static int utf8char_strlen __P ((char *));
+ static int encoding_strlen __P ((char *));
+-static void substitute __P ((struct obstack *, const char *, const char *, 
int *));
++static void substitute __P ((struct obstack *, const char *, const char *, 
size_t *));
+ static void string_regexp __P ((struct obstack *, int, token_data **, int, 
const char *));
+ static void subst_in_string __P ((struct obstack *, int, token_data **, int));
+ static void generic_variable_lookup __P ((MP4H_BUILTIN_PROTO, boolean));
+@@ -382,6 +382,8 @@
+ static int array_member __P ((const char *, symbol *, boolean));
+ static int sort_function __P ((const void *, const void *));
+ static void logical_to_physical_paths __P ((char **));
++static void * pcre_malloc (size_t, void *);
++static void pcre_free (void *, void *);
+ 
+ /*  This symbol controls breakings of flow statements.  */
+ static symbol varbreak;
+@@ -398,7 +400,12 @@
+ struct lconv *my_locale;
+ 
+ /*  Table of characters used by PCRE with non-C locales  */
+-static const unsigned char *re_tableptr = NULL;
++static const uint8_t *re_tableptr = NULL;
++
++/*  PCRE contexts needed for custom memory management and adding
++non-builtin character tables.  */
++static pcre2_general_context *gen_ctxt;
++static pcre2_compile_context *comp_ctxt;
+ 
+ /*  Timer  */
+ static struct tms elapsed_time;
+@@ -662,12 +669,22 @@
+ | Initialise all builtin and predefined macros.  |
+ `---*/
+ 
++static void *
++pcre_malloc (size_t size, void *ptr)
++{
++  return xmalloc (size);
++}
++
++static void
++pcre_free (void *ptr, void *tag)
++{
++  xfree (ptr);
++}
++
+ void
+ builtin_init (void)
+ {
+   install_builtin_table (builtin_tab);
+-  pcre_malloc = xmalloc;
+-  pcre_free   = xfree;
+ }
+ 
+ /*---.
+@@ -688,18 +705,22 @@
+   varstack_check ();
+ }
+ 
+-static pcre *
++static pcre2_code *
+ xre_compile (const char *pattern, int cflags)
+ {
+-  pcre *patcomp;
+-  const char *errbuf;
+-  int erroffset;
++  pcre2_code *patcomp;
++  PCRE2_UCHAR errbuf[120];
++  int errcode;
++  size_t erroffset;
+ 
+   if (document_encoding == ENCODING_UTF8)
+-  cflags |= PCRE_UTF8;
+-  patcomp = pcre_compile (pattern, cflags, , , re_tableptr);
++  cflags |= PCRE2_UTF;
++  pcre2_set_character_tables (comp_ctxt, re_tableptr);
++  patcomp = pcre2_compile ((PCRE2_SPTR) pattern, PCRE2_ZERO_TERMINATED,
++   cflags, , , comp_ctxt);
+   if (patcomp == 0)
+ {
++  pcre2_get_error_message (errcode, errbuf, sizeof (errbuf));
+   MP4HERROR ((warning_status, 0,
+ _("Warning:%s:%d: Bad regular expression `%s' at position %d: %s"),
+  CURRENT_FILE_LINE, pattern, erroffset, errbuf));
+@@ -822,11 +843,10 @@
+

Bug#1000047: libsynthesis: depends on obsolete pcre3 library

2023-12-09 Thread Yavor Doganov
Control: tags -1 + patch

The patch available at the forwarded URL that Adrian Bunk added some
time ago looks decent to me -- I have build-tested it and include it
here in a form that can be directly dropped in debian/patches.
Description: Port to PCRE2.
Bug-Debian: https://bugs.debian.org/147
Author: Milan Crha
Forwarded: no
Last-Update: 2023-12-09
---

--- libsynthesis-3.4.0.47.5+syncevolution-1.5.3.orig/configure.in
+++ libsynthesis-3.4.0.47.5+syncevolution-1.5.3/configure.in
@@ -70,9 +70,9 @@
   [enable_regex=$enableval],
   [enable_regex="yes"])
 if test "$enable_regex" == "yes"; then
-PKG_CHECK_MODULES(PCRE, libpcre,
+PKG_CHECK_MODULES(PCRE, libpcre2-8,
   [HAVE_PCRE=1],
-  [AC_ERROR([libpcre not found, required for 
--enable-regex])])
+  [AC_ERROR([libpcre2 not found, required for 
--enable-regex])])
 HAVE_PCRE=1
 else
 HAVE_PCRE=0
--- 
libsynthesis-3.4.0.47.5+syncevolution-1.5.3.orig/src/sysync/scriptcontext.cpp
+++ libsynthesis-3.4.0.47.5+syncevolution-1.5.3/src/sysync/scriptcontext.cpp
@@ -24,7 +24,8 @@
 #include "vtimezone.h" // for SETTIMEZONE
 #include "mimediritemtype.h" // for AlldayCount/MakeAllday
 #ifdef REGEX_SUPPORT
-  #include "pcre.h" // for RegEx functions
+  #define PCRE2_CODE_UNIT_WIDTH 8
+  #include "pcre2.h" // for RegEx functions
 #endif
 
 #include 
@@ -1323,7 +1324,7 @@
   // Returns:  > 0 => success; value is the number of elements filled 
in
   //   = 0 => success, but offsets is not big enough
   //-1 => failed to match
-  //-2 => PCRE_ERROR_NULL => did not compile, error 
reported to aDbgLogger
+  //-2 => PCRE2_ERROR_NULL => did not compile, error 
reported to aDbgLogger
   //  < -2 => some kind of unexpected problem
   static int run_pcre(cAppCharP aRegEx, cAppCharP aSubject, stringSize 
aSubjLen, stringSize aSubjStart, int *aOutVec, int aOVSize, TDebugLogger 
*aDbgLogger)
   {
@@ -1351,11 +1352,11 @@
 cAppCharP o = p++;
 while (*o) {
   switch (*o) {
-case 'i' : options |= PCRE_CASELESS; break;
-case 'm' : options |= PCRE_MULTILINE; break;
-case 's' : options |= PCRE_DOTALL; break;
-case 'x' : options |= PCRE_EXTENDED; break;
-case 'U' : options |= PCRE_UNGREEDY; break;
+case 'i' : options |= PCRE2_CASELESS; break;
+case 'm' : options |= PCRE2_MULTILINE; break;
+case 's' : options |= PCRE2_DOTALL; break;
+case 'x' : options |= PCRE2_EXTENDED; break;
+case 'U' : options |= PCRE2_UNGREEDY; break;
   }
   o++;
 }
@@ -1369,23 +1370,43 @@
   } // while chars in regex
 } // if regex with delimiter
 // - compile regex
-pcre *regex;
-cAppCharP errMsg=NULL;
-int errOffs=0;
-regex = pcre_compile(aRegEx, options | PCRE_UTF8, , , NULL);
+pcre2_code *regex;
+int errNum=0;
+size_t errOffs=0;
+regex = pcre2_compile((PCRE2_SPTR) aRegEx, options | PCRE2_UTF | 
PCRE2_ZERO_TERMINATED, 0, , , NULL);
 if (regex==NULL) {
+  PCRE2_UCHAR buffer[256] = { 0 };
+  pcre2_get_error_message(errNum, buffer, sizeof(buffer));
   // error, display it in log if script logging is on
   PLOGDEBUGPRINTFX(aDbgLogger,DBG_SCRIPTS+DBG_ERROR,(
 "RegEx error at pattern pos %d: %s ",
-errOffs,
-errMsg ? errMsg : ""
+(int) errOffs,
+*buffer ? (const char *) buffer : ""
   ));
-  return PCRE_ERROR_NULL; // -2, regexp did not compile
+  return PCRE2_ERROR_NULL; // -2, regexp did not compile
 }
 else {
+  pcre2_match_data *match_data;
   // regExp is ok and can be executed against subject
-  int r = pcre_exec(regex, NULL, aSubject, aSubjLen, aSubjStart, 0, 
aOutVec, aOVSize);
-  pcre_free(regex);
+  match_data = pcre2_match_data_create_from_pattern(regex, NULL);
+  int r = pcre2_match(regex, (PCRE2_SPTR) aSubject, aSubjLen, 0, 0, 
match_data, NULL);
+  if (r > 0 && aOutVec != NULL) {
+PCRE2_SIZE *ovector;
+   ovector = pcre2_get_ovector_pointer(match_data);
+   if (ovector[0] > ovector[1]) {
+  aOutVec[0] = ovector[1];
+ r = 1;
+} else {
+   int ii;
+   for (ii = 0; ii < r && ii < aOVSize; ii++) {
+  aOutVec[ii] = (int) ovector[ii];
+   }
+   if (r > ii)
+  r = ii;
+}
+  }
+  pcre2_match_data_free(match_data);
+  pcre2_code_free(regex);
   return r;
 }
   } // run_pcre


Bug#1050183: httest: depends on obsolete pcre3 library

2023-12-09 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch.
Description: Port to PCRE2.
Debian-Bug: https://bugs.debian.org/1050183
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-09
---

--- httest-2.4.23.orig/configure.ac
+++ httest-2.4.23/configure.ac
@@ -54,9 +54,9 @@
 fi],
[APR_ICONV_INCLUDES="";
 APR_ICONV_LIBS=""])
-AC_ARG_WITH(pcre,AS_HELP_STRING(--with-pcre=PATH,path to pcre-config script),
-   [if test ! -x $withval/pcre-config; then 
AC_MSG_ERROR($withval/pcre-config do not exist or is not executable); else 
PCRE_CONFIG="$withval/pcre-config"; fi],
-   [PCRE_CONFIG="pcre-config"])
+AC_ARG_WITH(pcre,AS_HELP_STRING(--with-pcre=PATH,path to pcre2-config script),
+   [if test ! -x $withval/pcre2-config; then 
AC_MSG_ERROR($withval/pcre2-config do not exist or is not executable); else 
PCRE_CONFIG="$withval/pcre2-config"; fi],
+   [PCRE_CONFIG="pcre2-config"])
 AC_ARG_WITH(lua,AS_HELP_STRING(--with-lua=PATH,path to lua source dir),
[if test ! -d $withval; then AC_MSG_ERROR($withval is not a directory); 
else LUA_LIB_PATH="-L${withval}"; LUA_INCLUDES="-I${withval}"; LUA_LIB="-llua"; 
fi],
 [LUA_LIB_PATH=""; if test -d /usr/include/lua5.1; then 
LUA_INCLUDES="-I/usr/include/lua5.1"; else LUA_INCLUDES=""; fi; 
LUA_LIB="-llua5.1"])
@@ -93,7 +93,7 @@
 INCLUDES="`$APR_CONFIG --includes` `$APU_CONFIG --includes` $OPENSSL_INCLUDES 
$APR_ICONV_CONFIG"
 CFLAGS="`$APR_CONFIG --cflags` `$PCRE_CONFIG --cflags` $CFLAGS $INCLUDES"
 CPPFLAGS="`$APR_CONFIG --cppflags` $CPPFLAGS"
-LIBS="$OPENSSL_LIB_PATH -lssl -lcrypto `$APR_CONFIG --link-ld`  `$APU_CONFIG 
--link-ld` `$APR_CONFIG --libs` `$APU_CONFIG --libs` `$PCRE_CONFIG --libs` -lz 
-lm"
+LIBS="$OPENSSL_LIB_PATH -lssl -lcrypto `$APR_CONFIG --link-ld`  `$APU_CONFIG 
--link-ld` `$APR_CONFIG --libs` `$APU_CONFIG --libs` `$PCRE_CONFIG --libs8` -lz 
-lm"
 
 if test "$enable_ssl_legacy_reneg" = "yes"; then
   CFLAGS="$CFLAGS -DSSL_ALLOW_UNSAFE_LEGACY_RENEGOTIATION"
--- httest-2.4.23.orig/src/regex.c
+++ httest-2.4.23/src/regex.c
@@ -29,7 +29,8 @@
 #include 
 #endif
 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 #include 
 #include 
@@ -71,26 +72,27 @@
  *
  * @param p IN pool
  * @param pattern IN pattern to compile
- * @param error IN error string
+ * @param error IN error code
  * @param erroff IN offset into pattern wherer compilation fails
  *
  * @return regular express on success else NULL
  */
 htt_regex_t *htt_regexcomp(apr_pool_t * p, const char *pattern,
-  const char **error, int *erroff) {
+  int *error, size_t *erroff) {
   htt_regex_t *preg = apr_palloc(p, sizeof *preg);
 
   preg->match = 0;
   preg->pattern = apr_pstrdup(p, pattern);
 
-  preg->re_pcre = pcre_compile(pattern, 0, error, erroff, NULL);
+  preg->re_pcre = pcre2_compile((PCRE2_SPTR) pattern, PCRE2_ZERO_TERMINATED,
+0, error, erroff, NULL);
   preg->re_erroffset = *erroff;
 
   if (preg->re_pcre == NULL) {
 return NULL;
   }
 
-  pcre_fullinfo((const pcre *)preg->re_pcre, NULL, PCRE_INFO_CAPTURECOUNT, 
&(preg->re_nsub));
+  pcre2_pattern_info(preg->re_pcre, PCRE2_INFO_CAPTURECOUNT, &(preg->re_nsub));
 
   apr_pool_cleanup_register(p, (void *) preg, htt_regex_cleanup,
 apr_pool_cleanup_null);
@@ -114,24 +116,24 @@
 apr_size_t nmatch, regmatch_t pmatch[], int eflags) {
   int rc;
   int options = 0;
-  int *ovector = NULL;
-  int small_ovector[POSIX_MALLOC_THRESHOLD * 3];
-  int allocated_ovector = 0;
+  pcre2_match_data *md;
+  size_t *ovector = NULL;
+  uint32_t md_size;
 
   ((htt_regex_t *) preg)->re_erroffset = (apr_size_t) (-1); /* Only has 
meaning after compile */
 
   if (nmatch > 0) {
 if (nmatch <= POSIX_MALLOC_THRESHOLD) {
-  ovector = &(small_ovector[0]);
+  md_size = POSIX_MALLOC_THRESHOLD * 3;
 }
 else {
-  ovector = (int *) malloc(sizeof(int) * nmatch * 3);
-  allocated_ovector = 1;
+  md_size = nmatch * 3;
 }
   }
 
-  rc = pcre_exec((const pcre *) preg->re_pcre, NULL, data,
- len, 0, options, ovector, nmatch * 3);
+  md = pcre2_match_data_create(md_size, NULL);
+  rc = pcre2_match(preg->re_pcre, (PCRE2_SPTR) data,
+   len, 0, options, md, NULL);
 
   if (rc == 0) {
 rc = nmatch;/* All captured slots were filled in */
@@ -139,22 +141,19 @@
 
   if (rc >= 0) {
 apr_size_t i;
+ovector = pcre2_get_ovector_pointer(md);
 for (i = 0; i < (apr_size_t) rc; i++) {
   pmatch[i].rm_so = ovector[i * 2];
   pmatch[i].rm_eo = ovector[i * 2 + 1];
 }
-if (allocated_ovector) {
-  free(ovector);
-}
+pcre2_match

Bug#1000065: grok: depends on obsolete pcre3 library

2023-12-09 Thread Yavor Doganov
Control: tags -1 + patch

Please find a patch attached.  Tested with the examples only.  Also
tested discogrok with

$ discogrok --verbose --patterns /usr/share/grok/patterns/base

It hangs at this line:

[855838]   [capture] [grok_capture_add:28] Adding pattern 'YEAR' as capture 0 
(pcrenum 1)

But so does unpatched discogrok from sid.

Note that this patch breaks the libgrok ABI since the library exposes
the PCRE API.  As libgrok does not have any reverse dependencies in
Debian (even grok itself doesn't link with it), the second patch
simply removes it.  Alternatively, if you wish to retain it, you'd
have to bump the SONAME (using a Debian-specific one, perhaps) and the
package has to pass through NEW.  IMHO that's too much trouble for an
unused library, but of course it's up to you as maintainer.
>From 8f984ea80430f973d13a67f87b884d4dd3f7383e Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Sat, 9 Dec 2023 09:02:57 +0200
Subject: [PATCH 1/2] Port to PCRE2 (#165)

---
 Makefile  |   2 +-
 debian/control|   2 +-
 debian/patches/debian-changes | 556 +-
 grok.c|  55 ++--
 grok.h|  25 +-
 grok_discover.c   |   2 +-
 grokre.c  | 100 +++---
 predicates.c  |  38 ++-
 predicates.h  |   1 -
 9 files changed, 686 insertions(+), 95 deletions(-)

diff --git a/Makefile b/Makefile
index 564a8c3..fcbf843 100644
--- a/Makefile
+++ b/Makefile
@@ -42,7 +42,7 @@ VERSION=$(shell sh $(BASE)/version.sh)
 #LDFLAGS+=-g
 
 CFLAGS+=-pipe -fPIC -I. -O2
-LDFLAGS+=-lpcre -levent -rdynamic -ltokyocabinet
+LDFLAGS+=-lpcre2-8 -levent -rdynamic -ltokyocabinet
 
 LIBSUFFIX=$(shell sh $(BASE)/platform.sh libsuffix)
 VERLIBSUFFIX=$(shell sh $(BASE)/platform.sh libsuffix $(MAJOR))
diff --git a/debian/control b/debian/control
index b9f6cad..dd9afb1 100644
--- a/debian/control
+++ b/debian/control
@@ -10,7 +10,7 @@ Build-Depends:
  gperf,
  help2man,
  libevent-dev,
- libpcre3-dev,
+ libpcre2-dev,
  libtirpc-dev,
  libtokyocabinet-dev,
 Standards-Version: 3.9.3
diff --git a/debian/patches/debian-changes b/debian/patches/debian-changes
index 8718175..f1563fc 100644
--- a/debian/patches/debian-changes
+++ b/debian/patches/debian-changes
@@ -17,6 +17,15 @@ A single combined diff, containing all the changes, follows.
 
 --- grok-1.20110708.1.orig/Makefile
 +++ grok-1.20110708.1/Makefile
+@@ -42,7 +42,7 @@ VERSION=$(shell sh $(BASE)/version.sh)
+ #LDFLAGS+=-g
+ 
+ CFLAGS+=-pipe -fPIC -I. -O2
+-LDFLAGS+=-lpcre -levent -rdynamic -ltokyocabinet
++LDFLAGS+=-lpcre2-8 -levent -rdynamic -ltokyocabinet
+ 
+ LIBSUFFIX=$(shell sh $(BASE)/platform.sh libsuffix)
+ VERLIBSUFFIX=$(shell sh $(BASE)/platform.sh libsuffix $(MAJOR))
 @@ -162,14 +162,14 @@ cleanver:
  # Binary creation
  grok: LDFLAGS+=-levent
@@ -93,7 +102,12 @@ A single combined diff, containing all the changes, follows.
  
 --- grok-1.20110708.1.orig/grokre.c
 +++ grok-1.20110708.1/grokre.c
-@@ -12,8 +12,8 @@
+@@ -1,4 +1,3 @@
+-#include 
+ #include 
+ #include  
+ #include 
+@@ -12,8 +11,8 @@
  
  /* global, static variables */
  
@@ -104,15 +118,268 @@ A single combined diff, containing all the changes, 
follows.
  
  /* internal functions */
  static char *grok_pattern_expand(grok_t *grok); //, int offset, int length);
-@@ -183,7 +183,7 @@ static char *grok_pattern_expand(grok_t
+@@ -24,15 +23,15 @@ static void grok_capture_add_predicate(g
+ 
+ void grok_free_clone(const grok_t *grok) {
+   if (grok->re != NULL) {
+-pcre_free(grok->re);
++pcre2_code_free(grok->re);
+   }
+ 
+   if (grok->full_pattern != NULL) {
+ free(grok->full_pattern);
+   }
+ 
+-  if (grok->pcre_capture_vector != NULL) {
+-free(grok->pcre_capture_vector);
++  if (grok->md != NULL) {
++pcre2_match_data_free(grok->md);
+   }
+ 
+   if (grok->captures_by_name != NULL) {
+@@ -76,24 +75,28 @@ int grok_compilen(grok_t *grok, const ch
+   grok->full_pattern = grok_pattern_expand(grok);
+ 
+   if (grok->full_pattern == NULL) {
++const char *errstr;
++
+ grok_log(grok, LOG_COMPILE, "A failure occurred while compiling '%.*s'",
+  length, pattern);
+-grok->errstr = "failure occurred while expanding pattern "\
+-   "(too pattern recursion?)";
++errstr = "failure occurred while expanding pattern "
++ "(too pattern recursion?)";
++strcpy((char *)grok->errstr, errstr);
+ return GROK_ERROR_COMPILE_FAILED;
+   }
+ 
+-  grok->re = pcre_compile(grok->full_pattern, 0, 
+-  >pcre_errptr, >pcre_erroffset, NULL);
++  grok->re = pcre2_compile((PCRE2_SPTR)grok->full_pattern,
++   PCRE2_ZERO_TERMINATED, 0,
++   >pcre_errno, >pcre_erroffset, NULL);
+ 
+   if (grok->re == NULL) {
+-gr

Bug#1000118: generator-scripting-language: depends on obsolete pcre3 library

2023-12-06 Thread Yavor Doganov
Control: tags -1 + patch

On Thu, Jun 29, 2023 at 09:39:18PM +0100, Luca Boccassi wrote:
> If someone provides a patch, that is tested against such workflows
> to confirm that they are not affected, then I'd merged it, upstream.

Please find attached a patch.  I could not test it, though, as I do
not understand what these workflows are and I couldn't figure out how
to write a testcase after my (admittedly short) glimpse at the
documentation.
Description: Port to PCRE2
Bug-Debian: https://bugs.debian.org/1000118
Author: Yavor Doganov 
Forwarded: no
Last-Update: 2023-12-06
---

--- generator-scripting-language-4.1.5.orig/src/ggpcre.c
+++ generator-scripting-language-4.1.5/src/ggpcre.c
@@ -51,7 +51,8 @@
 regexp_functions, tblsize (regexp_functions) };
 
 
-#include 
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include 
 
 
 static int
@@ -86,13 +87,17 @@
   {
 GGCODE_TCB
 *tcb = gsl_thread-> tcb;
-pcre
+pcre2_code
 *re;
+pcre2_match_data
+*md;
 char
 *error;
-int 
+int
+errcode;
+size_t
 erroffset;
-int 
+size_t
 *ovector;
 int
 oveccount,
@@ -103,47 +108,50 @@
 VALUE
 value;
 
-re = pcre_compile (string_value (> value),
-   0,
-   (const char **) ,
-   ,
-   NULL);
+re = pcre2_compile ((PCRE2_SPTR) string_value (> value),
+PCRE2_ZERO_TERMINATED,
+0,
+,
+,
+NULL);
 if (! re)
   {
+PCRE2_UCHAR buf[120];
+
+pcre2_get_error_message (errcode, buf, sizeof(buf));
 snprintf (object_error, LINE_MAX,
   "Regular expression pattern error: %s\n%s\n%*c",
-  error,
+  buf,
   pattern-> value. s,
-  erroffset + 1, '^');
+  (int) erroffset + 1, '^');
 return -1;
   }
 
-rc = pcre_fullinfo (re,
-NULL,
-PCRE_INFO_CAPTURECOUNT,
-);
+rc = pcre2_pattern_info (re,
+ PCRE2_INFO_CAPTURECOUNT,
+ );
 oveccount = (oveccount + 1) * 3;
-ovector   = mem_alloc (oveccount * sizeof (int));
+md= pcre2_match_data_create (oveccount, NULL);
 
 string_value (> value);
-rc = pcre_exec (re,
-NULL,
-subject-> value. s,
-(int) strlen (subject-> value. s),
-0,
-0,
-ovector,
-oveccount);
+rc = pcre2_match (re,
+  (PCRE2_SPTR) subject-> value. s,
+  strlen (subject-> value. s),
+  0,
+  0,
+  md,
+  NULL);
 
-(pcre_free) (re);
+(pcre2_code_free) (re);
+ovector = pcre2_get_ovector_pointer (md);
 
-if (rc == PCRE_ERROR_NOMATCH)
+if (rc == PCRE2_ERROR_NOMATCH)
 rc = 0;
 else if (rc < 0)
   {
 snprintf (object_error, LINE_MAX,
  "Regular expression matching error: %d", rc);
-mem_free (ovector);
+pcre2_match_data_free (md);
 return -1;
   }
 else if (rc == 1)
@@ -179,7 +187,7 @@
   {
 strncpy (object_error, error, LINE_MAX);
 mem_free (value.s);
-mem_free (ovector);
+pcre2_match_data_free (md);
 return -1;
   }
 destroy_value (& value);
@@ -187,7 +195,7 @@
 i++;
   }
 
-mem_free (ovector);
+pcre2_match_data_free (md);
   }
 
 return 0;  /*  Just in case  */
--- generator-scripting-language-4.1.5.orig/src/Makefile
+++ generator-scripting-language-4.1.5/src/Makefile
@@ -51,9 +51,7 @@
 EXE =
 DBG =
 CC = ./c -q
-export CCLIBS = -lpcre
-
-CPPFLAGS ?= -I/usr/include/pcre
+export CCLIBS = -lpcre2-8
 
 # Reset the suffixes that will be considered to just our own list.
 #


Bug#1000044: ccze: depends on obsolete pcre3 library

2023-12-06 Thread Yavor Doganov
On Mon, 04 Dec 2023 15:46:29 +0200,
Yavor Doganov wrote:
> I guess I need to revisit my patch and find some way to fix this.

Here it is -- no memory leaks and I could not obtain crash or abort
with the logs I've tested.  Note that while my original patch
introduced some leaks, it also fixes some in the original code.

Tested the following plugins: dpkg, exim, httpd, procmail, sulog and
syslog (yours and mine).  Also compared the output between version -7
and git master + this new patch.

Please test extensively and let me know if something is wrong.

You may wish to apply (or not) two additional patches: 1 memory leak
that I discovered with aptitude/Xorg logs and 1 uninitialized value
(reported by valgrind as error).
>From 475cbc072cb08bd6a57befa6c3856f8458355b1b Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Wed, 6 Dec 2023 15:07:25 +0200
Subject: [PATCH] pcre2.patch: Fix some memory leaks

---
 debian/patches/pcre2.patch | 181 +
 1 file changed, 125 insertions(+), 56 deletions(-)

diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
index 6b60dc8..4014fc3 100644
--- a/debian/patches/pcre2.patch
+++ b/debian/patches/pcre2.patch
@@ -2,7 +2,7 @@ Description: Port to PCRE2.
 Bug-Debian: https://bugs.debian.org/144
 Author: Yavor Doganov 
 Forwarded: no
-Last-Update: 2023-12-03
+Last-Update: 2023-12-06
 ---
 
 --- ccze.orig/configure.ac
@@ -39,7 +39,7 @@ Last-Update: 2023-12-03
  
  static char *words_bad[] = {
"warn", "restart", "exit", "stop", "end", "shutting", "down", "close",
-@@ -71,33 +71,31 @@
+@@ -71,34 +71,35 @@
  void
  ccze_wordcolor_process_one (char *word, int slookup)
  {
@@ -48,8 +48,9 @@ Last-Update: 2023-12-03
 +  size_t wlen, l;
ccze_color_t col;
 -  int match, printed = 0;
+-  char *pre = NULL, *post = NULL, *tmp, *lword;
 +  int printed = 0;
-   char *pre = NULL, *post = NULL, *tmp, *lword;
++  char *pre = NULL, *post = NULL, *tmp = NULL, *lword;
 +  pcre2_match_data *offsets;
  
col = CCZE_COLOR_DEFAULT;
@@ -63,10 +64,11 @@ Last-Update: 2023-12-03
  {
 -  pcre_get_substring (word, offsets, match, 1, (const char **));
 -  pcre_get_substring (word, offsets, match, 2, (const char **));
--  free (word);
 +  pcre2_substring_get_bynumber (offsets, 1, (unsigned char **), );
 +  pcre2_substring_get_bynumber (offsets, 2, (unsigned char **), );
-   word = tmp;
+   free (word);
+-  word = tmp;
++  word = strdup (tmp);
  }
else
  pre = NULL;
@@ -78,13 +80,16 @@ Last-Update: 2023-12-03
  {
 -  pcre_get_substring (word, offsets, match, 1, (const char **));
 -  pcre_get_substring (word, offsets, match, 2, (const char **));
--  free (word);
++  pcre2_substring_free (tmp);
 +  pcre2_substring_get_bynumber (offsets, 1, (unsigned char **), );
 +  pcre2_substring_get_bynumber (offsets, 2, (unsigned char **), );
-   word = tmp;
+   free (word);
+-  word = tmp;
++  word = strdup (tmp);
  }
else
-@@ -107,45 +105,45 @@
+ post = NULL;
+@@ -107,45 +108,45 @@
lword = _stolower (word);

/** Host **/
@@ -144,20 +149,20 @@ Last-Update: 2023-12-03
  {
char *host, *ip;
size_t hostlen, iplen;
-@@ -206,9 +204,9 @@
- }
+@@ -207,8 +208,10 @@

free (lword);
--  free (word);
+   free (word);
 -  free (post);
 -  free (pre);
++  pcre2_substring_free (tmp);
 +  pcre2_substring_free (post);
 +  pcre2_substring_free (pre);
 +  pcre2_match_data_free (offsets);
  }
  
  void
-@@ -260,64 +258,67 @@
+@@ -260,64 +263,67 @@
  void
  ccze_wordcolor_setup (void)
  {
@@ -305,7 +310,8 @@ Last-Update: 2023-12-03
 +ccze_apm_process (pcre2_match_data *offsets)
  {
char *battery, *charge, *rate, *stuff1, *elapsed, *remain;
-   char *stuff2;
+-  char *stuff2;
++  char *stuff2, *ret;
 +  size_t l;

 -  pcre_get_substring (str, offsets, match, 1, (const char **));
@@ -325,7 +331,7 @@ Last-Update: 2023-12-03
  
ccze_addstr (CCZE_COLOR_DEFAULT, "Battery:");
ccze_space ();
-@@ -62,12 +63,12 @@
+@@ -62,48 +63,54 @@
ccze_addstr (CCZE_COLOR_DATE, remain);
ccze_space ();
  
@@ -335,16 +341,19 @@ Last-Update: 2023-12-03
 -  free (stuff1);
 -  free (elapsed);
 -  free (remain);
++  ret = strdup (stuff2);
 +  pcre2_substring_free (battery);
 +  pcre2_substring_free (charge);
 +  pcre2_substring_free (rate);
 +  pcre2_substring_free (stuff1);
 +  pcre2_substring_free (elapsed);
 +  pcre2_substring_free (remain);
++  pcre2_substring_free (stuff2);

-   return stuff2;
+-  return stuff2;
++  return ret;
  }
-@@ -75,35 +76,39 @@
+ 
  static void
  ccze_apm_setup (void)
  {
@@ -408,7 +417,8 @@ Last-Update: 2023-12-03
 -ccze_distcc_process (const char *str, int *offsets, int match)
 +ccze_distcc_process (pcre2_match_data *offsets)
  {
-   char *pid, *func, *rest;
+-  char *pid, *func, *rest;
++  char *pid,

Bug#1000041: ganglia: depends on obsolete pcre3 library

2023-12-05 Thread Yavor Doganov
Control: tags -1 + patch

Please find attached a patch.  As I know absolutely nothing about this
package, I was unable to test it properly.  I added the following
snippet to /etc/ganglia/gmond.conf (taken from gmond.conf manpage):

collection_group {
  collect_every = 60
  time_threshold = 300
  metric {
name_match = "multicpu_([a-z]+)([0-9]+)"
value_threshold = 1.0
title = "CPU-\\2 \\1"
  }
}

The output of "gmond -m" doesn't change (maybe that's expected) but at
least it doesn't crash.  According to INSTALL (as well as my humble
reading of the code), pcre is used only for parsing name_match in the
configuration file.  But it seems I cannot trigger a match or do
something else improperly.

Please test and let me know if corrections are needed.
>From 7d05aca52f9cf1b579b80f719bed47cfd6ba7b7b Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Tue, 5 Dec 2023 19:26:34 +0200
Subject: [PATCH] Port to PCRE2 (#141).

---
 debian/changelog   |   5 ++
 debian/control |   2 +-
 debian/patches/pcre2.patch | 130 +
 debian/patches/series  |   1 +
 4 files changed, 137 insertions(+), 1 deletion(-)
 create mode 100644 debian/patches/pcre2.patch

diff --git a/debian/changelog b/debian/changelog
index 081dbec..7c78336 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,13 @@
 ganglia (3.7.2-7) UNRELEASED; urgency=medium
 
+  [ Marcos Fouces ]
   * Remove Stuart from uploaders as he changed to the Emeritus status.
 (Closes: #1011995).
 
+  [ Yavor Doganov ]
+  * debian/patches/pcre2.patch: New; port to PCRE2 (Closes: #141).
+  * debian/control (Build-Depends): Replace libpcre3-dev with libpcre2-dev.
+
  -- Marcos Fouces   Sun, 29 May 2022 23:53:57 +0200
 
 ganglia (3.7.2-6) unstable; urgency=medium
diff --git a/debian/control b/debian/control
index 406ff30..40ade70 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,7 @@ Section: net
 Priority: optional
 Maintainer: Marcos Fouces 
 Homepage: http://ganglia.info/
-Build-Depends: debhelper-compat (=13), librrd-dev, libapr1-dev, libexpat1-dev, libconfuse-dev, po-debconf, libxml2-dev, libdbi0-dev, libpcre3-dev, gperf, rsync, libkvm-dev [kfreebsd-any], pkg-config, libz-dev, libtirpc-dev
+Build-Depends: debhelper-compat (=13), librrd-dev, libapr1-dev, libexpat1-dev, libconfuse-dev, po-debconf, libxml2-dev, libdbi0-dev, libpcre2-dev, gperf, rsync, libkvm-dev [kfreebsd-any], pkg-config, libz-dev, libtirpc-dev
 Standards-Version: 4.6.0
 Vcs-Git: https://salsa.debian.org/debian/ganglia.git
 Vcs-Browser: https://salsa.debian.org/debian/ganglia
diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
new file mode 100644
index 000..54ecaa0
--- /dev/null
+++ b/debian/patches/pcre2.patch
@@ -0,0 +1,130 @@
+Description: Port to PCRE2.
+Bug-Debian: https://bugs.debian.org/141
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2023-12-05
+---
+
+--- ganglia.orig/configure.ac
 ganglia/configure.ac
+@@ -520,14 +520,20 @@
+   echo "Added -L$libpcrepath/${LIB_SUFFIX} to LDFLAGS"
+ fi
+ if test x"$libpcre" == xyes ; then
+-  AC_CHECK_HEADERS([pcre/pcre.h pcre.h])
+-  AC_CHECK_LIB(pcre, pcre_compile)
+-  if test x"$ac_cv_lib_pcre_pcre_compile" = xyes; then
+-echo "Found a suitable pcre library"
+-  else
+-echo "libpcre not found, specify --with-libpcre=no to build without PCRE support"
+-exit 1;
+-  fi
++  AC_CHECK_HEADERS([pcre2.h], [], [], [[#define PCRE2_CODE_UNIT_WIDTH 8]])
++  LIBS="$LIBS -lpcre2-8"
++  AC_MSG_CHECKING([for pcre2_match_data_create in -lpcre2-8])
++  AC_LINK_IFELSE(
++[AC_LANG_PROGRAM([[#define PCRE2_CODE_UNIT_WIDTH 8
++   #include 
++ ]],
++ [[pcre2_match_data *md;
++   md = pcre2_match_data_create (16, NULL);]])],
++[AC_DEFINE([HAVE_LIBPCRE], [1], [Define if the PCRE2 library is available])
++ AC_MSG_RESULT([yes])
++ AC_MSG_RESULT([Found a suitable pcre library])],
++[AC_MSG_RESULT([no])
++ AC_MSG_FAILURE([libpcre not found, specify --with-libpcre=no to build without PCRE support], [1])])
+ else
+   echo "building without PCRE support"
+ fi
+--- ganglia.orig/gmond/gmond.c
 ganglia/gmond/gmond.c
+@@ -38,11 +38,8 @@
+ #include 
+ 
+ #ifdef HAVE_LIBPCRE
+-#if defined (HAVE_PCRE_PCRE_H)
+-#include 
+-#else
+-#include 
+-#endif
++#define PCRE2_CODE_UNIT_WIDTH 8
++#include 
+ #endif
+ 
+ #include "cmdline.h"   /* generated by cmdline.sh which runs gengetopt */
+@@ -2650,10 +2647,11 @@
+ 
+   if(name_match != NULL)
+ {
+-  pcre *pcre_re;
+-  const char *pcre_err_ptr;
+-  int pcre_err_offset;
+-  int pcre_ovector[PCRE_OVECCOUNT];
++  pcre2_code *pcre_re;
++  pcre2_match_data *pcre_md;
++  int pcre_e

Bug#1000044: ccze: depends on obsolete pcre3 library

2023-12-04 Thread Yavor Doganov
Axel Beckert wrote:
> A local test on my /var/log/syslog immediately ran into a segfault,
> though, so I guess, that's one of the plugins you couldn't test.

I tested it but I guess results depend on the contents of the log;
apparently my log didn't trigger this code.

> Culprit is this line, actually the first line in my current
> /var/log/syslog:
> 
>   Dec  3 06:38:28 c6 syslog-ng[26651]: Configuration reload request
>   received, reloading configuration;

Many thanks for the reproducer.  Attached is patch that fixes it for
me.  I suspect there are other issues like these; in fact my pathethic
patch introduces a few memory leaks (I should have told you that in
advance).  The problem is that ccze code manipulates strings obtained
with pcre_get_substring, and assumes it can always use "free" to free
them.  That assumption is fine in the case with the old pcre, because
the definition of pcre_free_substring is just a wrapper around free
(src:pcre3: pcre_get.c:655):

void
pcre_free_substring(const char *pointer)
{
(PUBL(free))((void *)pointer);
}

So ccze code always uses "free".  However, in pcre2, the equivalent
function is different (src:pcre2: src/pcre2_substring.c:240):

void
pcre2_substring_free(PCRE2_UCHAR *string)
{
if (string != NULL)
  {
  pcre2_memctl *memctl = (pcre2_memctl *)((char *)string - 
sizeof(pcre2_memctl));
  memctl->free(memctl, memctl->memory_data);
  }
}

Attempting to use "free" to free a string obtained with
pcre2_subtring_get_by* results in SIGABRT with invalid pointer, while
using pcre2_substring_free on a string obtained with strdup or some
other standard (glibc) string manipulation functions results in
SIGSEGV.  Attached are two equivalent minimalistic programs that
demonstrate this: foo.c uses pcre2 and if you exchange the free
functions at the end for date and dup, you will observe exactly what I
wrote above.  The other program, bar.c, uses the old pcre and it
doesn't make any difference if you swap them or use only "free" as
ccze does.

I guess I need to revisit my patch and find some way to fix this.
It's up to you whether to upload the memleaky patch now or wait for me
to find a solution.  Sorry about this.
diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
index 6b60dc8..2723ff8 100644
--- a/debian/patches/pcre2.patch
+++ b/debian/patches/pcre2.patch
@@ -2455,26 +2455,32 @@ Last-Update: 2023-12-03
  }

if (process)
-@@ -87,12 +87,13 @@
+@@ -60,7 +60,7 @@
+ 
+ pid = strndup ([1], (size_t)(t2 - t - 1));
+ tmp = strndup (process, (size_t)(t - process));
+-free (process);
++pcre2_substring_free (process);
+ process = tmp;
+   }
+ }
+@@ -87,11 +87,11 @@
else
  toret = strdup (send);
  
 -  free (date);
 -  free (host);
 -  free (send);
--  free (process);
--  free (msg);
 +  pcre2_substring_free (date);
 +  pcre2_substring_free (host);
 +  pcre2_substring_free (send);
-+  pcre2_substring_free (process);
 +  pcre2_substring_free (msg);
+   free (process);
+-  free (msg);
free (pid);
-+  free (tmp);
  
return toret;
- }
-@@ -100,33 +101,34 @@
+@@ -100,33 +100,34 @@
  static void
  ccze_syslog_setup (void)
  {
#define PCRE2_CODE_UNIT_WIDTH 8
#include 
#include 
#include 

int
main (void)
{
  pcre2_code *pcre;
  pcre2_match_data *md;
  int error;
  size_t errptr, l;
  char *date = NULL, *dup;
  const char *str = "Dec  3 06:38:28 c6 syslog-ng[26651]: Configuration "
"reload request received, reloading configuration;";

  pcre = pcre2_compile ("^(\\S*\\s{1,2}\\d{1,2}\\s\\d\\d:\\d\\d:\\d\\d)"
"\\s(\\S+)\\s+((\\S+:?)\\s(.*))$",
PCRE2_ZERO_TERMINATED, 0, , , NULL);

  md = pcre2_match_data_create (99, NULL);

  pcre2_match (pcre, str, PCRE2_ZERO_TERMINATED, 0, 0, md, NULL);
  pcre2_substring_get_bynumber (md, 1, (unsigned char **), );

  if (date)
{
  printf ("%s\n", date);
  dup = strdup (date);
}

  pcre2_substring_free (date);
  free (dup);

  return 0;
}
#include 
#include 
#include 

int
main (void)
{
  pcre *pcre;
  int md[99];
  const char *error;
  int errptr, match;
  char *date = NULL, *dup;
  const char *str = "Dec  3 06:38:28 c6 syslog-ng[26651]: Configuration "
"reload request received, reloading configuration;";

  pcre = pcre_compile ("^(\\S*\\s{1,2}\\d{1,2}\\s\\d\\d:\\d\\d:\\d\\d)"
   "\\s(\\S+)\\s+((\\S+:?)\\s(.*))$",
   0, , , NULL);

  match = pcre_exec (pcre, NULL, str, strlen (str), 0, 0, md, 99);
  pcre_get_substring (str, md, match, 1, (const char **));

  if (date)
{
  printf ("%s\n", date);
  dup = strdup (date);
}

  pcre_free_substring (date);
  free (dup);

  return 0;
}


Bug#1000044: ccze: depends on obsolete pcre3 library

2023-12-03 Thread Yavor Doganov
Control: tags -1 + patch

Please find a patch attached (I was not able to test all plugins).
>From 1b55bb243cb69c8f1ce006f237187eca7fb47793 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Sun, 3 Dec 2023 20:13:33 +0200
Subject: [PATCH] Port to PCRE2 (#144)

---
 debian/changelog   |7 +
 debian/control |2 +-
 debian/patches/pcre2.patch | 2807 
 debian/patches/series  |1 +
 4 files changed, 2816 insertions(+), 1 deletion(-)
 create mode 100644 debian/patches/pcre2.patch

diff --git a/debian/changelog b/debian/changelog
index 9e9de97..95eb7a5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+ccze (0.2.1-8) UNRELEASED; urgency=medium
+
+  * debian/patches/pcre2.patch: New; port to PCRE2 (Closes: #144).
+  * debian/control (Build-Depends): Replace libpcre3-dev with libpcre2-dev.
+
+ -- Yavor Doganov   Sun, 03 Dec 2023 20:00:06 +0200
+
 ccze (0.2.1-7) unstable; urgency=medium
 
   * Update debian/watch AGAIN with regards to Github changes.
diff --git a/debian/control b/debian/control
index 895d45e..2b67dd6 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,7 @@ Maintainer: Axel Beckert 
 Standards-Version: 4.6.0
 Build-Depends: debhelper-compat (= 13),
libncurses5-dev,
-   libpcre3-dev
+   libpcre2-dev
 Vcs-Git: https://salsa.debian.org/debian/ccze.git
 Vcs-Browser: https://salsa.debian.org/debian/ccze
 Homepage: https://github.com/madhouse/ccze
diff --git a/debian/patches/pcre2.patch b/debian/patches/pcre2.patch
new file mode 100644
index 000..6b60dc8
--- /dev/null
+++ b/debian/patches/pcre2.patch
@@ -0,0 +1,2807 @@
+Description: Port to PCRE2.
+Bug-Debian: https://bugs.debian.org/144
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2023-12-03
+---
+
+--- ccze.orig/configure.ac
 ccze/configure.ac
+@@ -102,14 +102,14 @@
+ AC_CHECK_FUNC(getopt_long, [], [AC_CHECK_LIB(gnugetopt, getopt_long)])
+ 
+ if test -z "${PCRE_CONFIG}"; then
+-	AC_PATH_PROG(PCRE_CONFIG, pcre-config, no)
++	AC_PATH_PROG(PCRE_CONFIG, pcre2-config, no)
+ fi
+ AC_MSG_CHECKING(for PCRE)
+ if test "${PCRE_CONFIG}" = "no"; then
+ 	AC_ERROR(PCRE not found)
+ fi
+ PCRE_CFLAGS=$($PCRE_CONFIG --cflags)
+-PCRE_LIBS=$($PCRE_CONFIG --libs)
++PCRE_LIBS=$($PCRE_CONFIG --libs8)
+ AC_SUBST(PCRE_CFLAGS)
+ AC_SUBST(PCRE_LIBS)
+ AC_MSG_RESULT(found)
+--- ccze.orig/src/ccze-wordcolor.c
 ccze/src/ccze-wordcolor.c
+@@ -29,9 +29,9 @@
+ #include "ccze-private.h"
+ #include "ccze-compat.h"
+ 
+-static pcre *reg_pre, *reg_post, *reg_host, *reg_mac, *reg_email;
+-static pcre *reg_uri, *reg_size, *reg_ver, *reg_time, *reg_addr;
+-static pcre *reg_num, *reg_sig, *reg_email2, *reg_hostip, *reg_msgid;
++static pcre2_code *reg_pre, *reg_post, *reg_host, *reg_mac, *reg_email;
++static pcre2_code *reg_uri, *reg_size, *reg_ver, *reg_time, *reg_addr;
++static pcre2_code *reg_num, *reg_sig, *reg_email2, *reg_hostip, *reg_msgid;
+ 
+ static char *words_bad[] = {
+   "warn", "restart", "exit", "stop", "end", "shutting", "down", "close",
+@@ -71,33 +71,31 @@
+ void
+ ccze_wordcolor_process_one (char *word, int slookup)
+ {
+-  size_t wlen;
+-  int offsets[99];
++  size_t wlen, l;
+   ccze_color_t col;
+-  int match, printed = 0;
++  int printed = 0;
+   char *pre = NULL, *post = NULL, *tmp, *lword;
++  pcre2_match_data *offsets;
+ 
+   col = CCZE_COLOR_DEFAULT;
+ 
++  offsets = pcre2_match_data_create (99, NULL);
++
+   /** prefix **/
+-  if ((match = pcre_exec (reg_pre, NULL, word, strlen (word), 0, 0,
+-			  offsets, 99)) >= 0)
++  if (pcre2_match (reg_pre, word, strlen (word), 0, 0, offsets, NULL) >= 0)
+ {
+-  pcre_get_substring (word, offsets, match, 1, (const char **));
+-  pcre_get_substring (word, offsets, match, 2, (const char **));
+-  free (word);
++  pcre2_substring_get_bynumber (offsets, 1, (unsigned char **), );
++  pcre2_substring_get_bynumber (offsets, 2, (unsigned char **), );
+   word = tmp;
+ }
+   else
+ pre = NULL;
+ 
+   /** postfix **/
+-  if ((match = pcre_exec (reg_post, NULL, word, strlen (word), 0, 0,
+-			  offsets, 99)) >= 0)
++  if (pcre2_match (reg_post, word, strlen (word), 0, 0, offsets, NULL) >= 0)
+ {
+-  pcre_get_substring (word, offsets, match, 1, (const char **));
+-  pcre_get_substring (word, offsets, match, 2, (const char **));
+-  free (word);
++  pcre2_substring_get_bynumber (offsets, 1, (unsigned char **), );
++  pcre2_substring_get_bynumber (offsets, 2, (unsigned char **), );
+   word = tmp;
+ }
+   else
+@@ -107,45 +105,45 @@
+   lword = _stolower (word);
+   
+   /** Host **/
+-  if (pcre_exec (reg_host, NULL, lword, wlen, 0, 0, offsets, 99) >= 0)
++  if (pcre2_match (reg_host, lword, wlen, 0, 0, offsets, NULL) >= 0)
+ col = CCZE_COLOR_HOST;

Bug#1057281: RFS: parser/3.4.6-4 [QA] [RC] -- HTML-embedded scripting language

2023-12-02 Thread Yavor Doganov
Package: sponsorship-requests
Severity: important

Dear mentors,

I'm looking for a sponsor for the orphaned package "parser":

 * Package name : parser
   Version  : 3.4.6-4
   Upstream contact : Art Lebedev Studio 
 * URL  : http://www.parser.ru/en/
 * License  : other, GPL-2+, LGPL-2+, other-1, GPL-3, 
University-of-Illinois-Open-Source-License
 * Vcs  : https://salsa.debian.org/debian/parser
   Section  : web

The source builds the following binary packages:

  parser3 - Parser 3, HTML-embedded scripting language (metapackage)
  parser3-common - Common files for packages built from the Parser 3 source
  parser3-cgi - Parser 3, HTML-embedded scripting language (CGI binary)
  libapache2-mod-parser3 - Parser 3, HTML-embedded scripting language (Apache2 
module)
  parser3-dev - Files for Parser 3 module development

To access further information about this package, please visit the
following URL:

  https://mentors.debian.net/package/parser/

Alternatively, you can download the package with 'dget' using this
command:

  dget -x 
https://mentors.debian.net/debian/pool/main/p/parser/parser_3.4.6-4.dsc

Changes since the last upload:

 parser (3.4.6-4) unstable; urgency=medium
 .
   * QA upload.
   * debian/patches/pcre2.patch: New; port to PCRE2 (Closes: #106).
   * debian/control (Build-Depends): Replace libpcre3-dev with
 libpcre2-dev.  Remove apache2-dev version constraint, satisfiable even
 in jessie.
 (Rules-Requires-Root): Set to "no".
 (Standards-Version): Bump to 4.6.2; no changes needed.
   * rules: Drop --with autoreconf; it's the default.
   * debian/watch: Upgrade to version 4.
   * debian/source.lintian-overrides: Rename as...
   * debian/source/lintian-overrides: ...and add
 license-problem-convert-utf-code (false positive).  Rename
 debian-watch-may-check-gpg-signature to
 debian-watch-does-not-check-openpgp-signature.
   * debian/copyright: Update copyright years, add more holders.  Add
 University of Illinois license.  Fix superfluous and redundant
 patterns; remove tabs in license text.



Bug#1056386: RFS: awffull/3.10.2-9 [QA] [RC] -- web server log analysis program

2023-11-21 Thread Yavor Doganov
Package: sponsorship-requests
Severity: important

Dear mentors,

I am looking for a sponsor for the orphaned package "awffull".  I would
also appreciate if someone can add me (yavor-guest) as member of the
Salsa project so that I can push the changes to the git repository.

 * Package name : awffull
   Version  : 3.10.2-9
   Upstream contact : Stephen McInerney 
 * URL  : http://www.stedee.id.au/awffull/
 * License  : LGPL-2+, ISC, GPL-3+
 * Vcs  : https://salsa.debian.org/debian/awffull
   Section  : web

The source builds the following binary package:

  awffull - web server log analysis program

To access further information about this package, please visit the
following URL:

  https://mentors.debian.net/package/awffull/

Alternatively, you can download the package with 'dget' using this
command:

  dget -x 
https://mentors.debian.net/debian/pool/main/a/awffull/awffull_3.10.2-9.dsc

Changes since the last upload:

 awffull (3.10.2-9) unstable; urgency=medium
 .
   * QA upload.
   * debian/patches/autoreconf.patch: New; fix autoreconf.
   * debian/patches/pcre2.patch: New; port to PCRE2 (Closes: #127).
   * debian/patches/compiler-warnings.patch: New; fix some warnings.
   * debian/patches/fix-spelling-errors.patch: Fix more errors.
   * debian/control (Build-Depends): Switch to the debhelper-compat
 mechanism; bump compat level to 13.  Remove autotools-dev.  Replace
 libpcre3-dev with libpcre2-dev.  Remove libfreetype6 and
 libfreetype6-dev; completely unnecessary.
 (Rules-Requires-Root): Set to "no".
 (Standards-Version): Claim compliance with 4.6.2.
   * debian/rules: Drop --parallel.  Enable hardening.  Include
 /usr/share/dpkg/info/pkg-info.mk, needed for $(DEB_VERSION).
 (CFLAGS): Rename as...
 (DEB_CFLAGS_MAINT_APPEND): ...and drop -Wl,-z,defs.
 (LDFLAGS): Rename as...
 (DEB_LDFLAGS_MAINT_APPEND): ...and drop -Wl,--as-needed.  Also move
 -Wl,-z,defs here where it belongs.
 (override_dh_autoreconf): New override; run upstream's bootstrap
 script.
 (override_dh_auto_configure): Remove handling of config.{guess,sub}.
 (override_dh_auto_clean): Likewise.  Remove unnecessary commands.
 Delete *.gmo files.  Adjust awffull_history_regen extension.
 (override_dh_auto_install): Use standard install command.
 (override_dh_installman): Install awffull_history_regen in sec 8.
 Avoid dpkg-parsechangelog usage.
 (override_dh_strip): Remove override; useless.
   * debian/compat: Delete.
   * debian/awffull.lintian-overrides: Strip context to eliminate context
 mismatch, leading to unused override.
   * debian/awffull_history_regen.pl.1: Delete; useless AFAICT.
   * debian/awffull.timer: New file; fixes lintian warning
 missing-systemd-timer-for-cron-script.
   * debian/awffull.service: Likewise; needed by awffull.timer.
   * debian/awffull.cron.daily: Skip job on systemd systems if it is
 invoked by cron; the systemd timer should be triggered instead.
   * debian/watch: Replace with a dummy one as upstream's site is gone.



Bug#1055981: wmforecast: Does not retrieve data; shows error

2023-11-15 Thread Yavor Doganov
Package: wmforecast
Version: 1.9.0-1
Severity: grave
X-Debbugs-Cc: Yavor Doganov 

Since some time (about 2 weeks, but I'm not entirely sure) wmforecast
displays an image with a question mark along with the text "ERROR".  The
following message(s) appear on the console:

$ LC_ALL=C wmforecast
GWeather-Message: 11:51:41.964: Failed to get weather.gov point data: [status: 
404] Not Found
GWeather-Message: 11:52:41.353: Failed to get weather.gov point data: [status: 
404] Not Found
GWeather-Message: 11:53:41.349: Failed to get weather.gov point data: [status: 
404] Not Found

(process:179771): GWeather-WARNING **: 11:54:40.649: Failed to get METAR data: 
HTTP/2 Error: NO_ERROR

My ~/GNUstep/Defaults/wmforecast:
,
| {
|   longitude = "27,91108";
|   interval = 60;
|   text = "#20b2aa";
|   icondir = "/usr/share/wmforecast";
|   units = c;
|   background = "#00";
|   latitude = "43,211375";
| }
`

-- System Information:
Debian Release: trixie/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 
'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, x32

Kernel: Linux 6.5.0-4-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=bg_BG.UTF-8, LC_CTYPE=bg_BG.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages wmforecast depends on:
ii  ca-certificates  20230311
ii  libc62.37-12
ii  libgeoclue-2-0   2.7.1-1
ii  libglib2.0-0 2.78.1-4
ii  libgweather-4-0  4.4.0-1
ii  libwings30.96.0-2+b1
ii  libwraster6  0.96.0-2+b1
ii  libwutil50.96.0-2+b1
ii  libx11-6 2:1.8.7-1

wmforecast recommends no packages.

wmforecast suggests no packages.

-- no debconf information



Bug#1040372: edenmath.app: Aborts with stack smashing when calculation result is large enough

2023-07-04 Thread Yavor Doganov
Package: edenmath.app
Version: 1.1.1a-8+b5
Severity: important

Type "40", then press the button "10^x" (second button from right to
left on the lowest row); EdenMath aborts with:
*** stack smashing detected *** terminated.

Backtrace:

Program received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=, signo=signo@entry=6, 
no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
44  ./nptl/pthread_kill.c: Няма такъв файл или директория.
(gdb) bt
#0  __pthread_kill_implementation
(threadid=, signo=signo@entry=6, no_tid=no_tid@entry=0)
at ./nptl/pthread_kill.c:44
#1  0x76ea815f in __pthread_kill_internal (signo=6, threadid=)
at ./nptl/pthread_kill.c:78
#2  0x76e5a472 in __GI_raise (sig=sig@entry=6) at 
../sysdeps/posix/raise.c:26
#3  0x76e444b2 in __GI_abort () at ./stdlib/abort.c:79
#4  0x76e451ed in __libc_message
(fmt=fmt@entry=0x76fb7543 "*** %s ***: terminated\n")
at ../sysdeps/posix/libc_fatal.c:150
#5  0x76f362c5 in __GI___fortify_fail
(msg=msg@entry=0x76fb752b "stack smashing detected")
at ./debug/fortify_fail.c:24
#6  0x76f362b0 in __stack_chk_fail () at ./debug/stack_chk_fail.c:24
#7  0xd0a6 in -[EMController updateDisplay]
(self=, _cmd=) at ./EMController.m:227
#8  0x77a5dabe in -[NSApplication sendAction:to:from:]
(self=, _cmd=, aSelector=0x557edf20, 
aTarget=, sender=0x56e18050) at ./Source/NSApplication.m:2273
#9  0x77a8f313 in -[NSButton sendAction:to:]
(self=0x56e18050, _cmd=, theAction=0x557edf20, 
theTarget=0x56e2ff30) at ./Source/NSButton.m:588
#10 0x77a9b01d in -[NSCell trackMouse:inRect:ofView:untilMouseUp:]
(self=self@entry=0x56e1f690, _cmd=_cmd@entry=0x77da0d50 
<_OBJC_SELECTOR_TABLE+1712>, theEvent=, 
theEvent@entry=0x56e23a30, cellFrame=..., 
controlView=controlView@entry=0x56e18050, flag=0 '\000') at 
./Source/NSCell.m:1807
#11 0x77abd56b in -[NSControl mouseDown:]
(self=0x56e18050, _cmd=, theEvent=)
at ./Source/NSControl.m:931
#12 0x77bfd354 in -[NSWindow sendEvent:]
(self=0x568b4480, _cmd=, theEvent=0x56e23a30)
at ./Source/NSWindow.m:4154
#13 0x77a63f5e in -[NSApplication run]
(self=0x55808a40, _cmd=) at ./Source/NSApplication.m:1585
#14 0x77a43ec9 in NSApplicationMain
(argc=, argv=) at ./Source/Functions.m:119
#15 0x76e456ca in __libc_start_call_main
(main=main@entry=0xb1f0 , argc=argc@entry=1, 
argv=argv@entry=0x7fffead8) at ../sysdeps/nptl/libc_start_call_main.h:58
#16 0x76e45785 in __libc_start_main_impl
(main=0xb1f0 , argc=1, argv=0x7fffead8, init=, fini=, rtld_fini=, stack_end=0x7fffeac8)
at ../csu/libc-start.c:360
#17 0xb231 in _start ()

Cannot be reproduced when built with -fno-stack-protector.  I guess the
culprit is a buffer overflow in -[EMController updateDisplay] where
buffer size is limited to 32 bytes.

-- System Information:
Debian Release: trixie/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 
'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, x32

Kernel: Linux 6.3.0-1-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=bg_BG.UTF-8, LC_CTYPE=bg_BG.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages edenmath.app depends on:
ii  gnustep-back0.30  0.30.0-2
ii  gnustep-base-runtime  1.29.0-4
ii  gnustep-gui-runtime   0.30.0-3
ii  libc6 2.37-3
ii  libgnustep-base1.29   1.29.0-4
ii  libgnustep-gui0.300.30.0-3
ii  libobjc4  13.1.0-7

Versions of packages edenmath.app recommends:
ii  helpviewer.app  0.4-1+b1

edenmath.app suggests no packages.

-- no debconf information



Bug#1040335: transition: gnustep-sqlclient

2023-07-04 Thread Yavor Doganov
Package: release.debian.org
Severity: normal
User: release.debian@packages.debian.org
Usertags: transition
X-Debbugs-Cc: gnustep-sqlcli...@packages.debian.org
Control: affects -1 + src:gnustep-sqlclient
Control: forwarded -1 
https://release.debian.org/transitions/html/auto-gnustep-sqlclient.html

We would like to have release team's permission to update the
gnustep-sqlclient library (libsqlclient1.8 -> 1.9).
The only rdep is adun.app, it builds fine and can be safely binNMUed.

Thanks.



Bug#929738: gnumail.app: gnumail freezes when i click 'info > preferences'

2023-07-02 Thread Yavor Doganov
Hi Svetlana,

On Thu, May 30, 2019 at 07:36:41AM +1000, Svetlana Tkachenko wrote:
> Package: gnumail.app
> Version: 1.3.0-1+b1
> Severity: normal
> 
>* What exactly did you do (or not do) that was effective (or
>  ineffective)?
> click info>preferences
>* What was the outcome of this action?
> it stays highlighted this menu item and does not open preferences

If you have the chance, could you please try gnumail.app/1.4.0-1
available in unstable (a.k.a. sid) and testing (a.k.a. trixie) and see
if this bug, as well as #929737, are fixed?

I could not reproduce either of them but this new version fixes a lot
of problems (albeit some still remain).

Thanks in advance.



Bug#1039875: transition: gnustep-performance

2023-06-29 Thread Yavor Doganov
Package: release.debian.org
Severity: normal
User: release.debian@packages.debian.org
Usertags: transition
X-Debbugs-Cc: gnustep-performa...@packages.debian.org
Control: affects -1 + src:gnustep-performance
Control: forwarded -1 
https://release.debian.org/transitions/html/auto-gnustep-performance.html

We (GNUstep team) would like to update gnustep-performance
(libperformance0.5 -> 0.6).  The new version is sitting in
experimental and the sole reverse dependency gnustep-sqlclient builds
fine against it.

Thanks.



Bug#1038996: transition: pantomime

2023-06-24 Thread Yavor Doganov
Package: release.debian.org
Severity: normal
User: release.debian@packages.debian.org
Usertags: transition
X-Debbugs-Cc: pantom...@packages.debian.org, 
pkg-gnustep-maintain...@lists.alioth.debian.org
Control: affects -1 + src:pantomime
Control: block -1 with 1032830

On behalf of the GNUstep team I'd like to request a transition slot
for pantomime (libpantomime1.3 > 1.4).  Out of the two rdeps
lusernet.app builds successfully while gnumail will require a
sourceful upload due to incompatible API changes (#1032830).

The automatically generated Ben tracker [1] looks fine.

Thanks for your work.

[1] https://release.debian.org/transitions/html/auto-pantomime.html



Bug#1038734: src:gnumail: FTBFS with pantomime/1.4.0: MailboxManagerController.m:801:33: error: ‘struct CWFolder’ has no member named ‘allMessages’

2023-06-20 Thread Yavor Doganov
Source: gnumail
Version: 1.3.0-1
Severity: important
Tags: ftbfs sid trixie
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: pantomime1.4-transition gnustep-transition

This package fails to build with pantomime/1.4.0+dfsg-1 from
experimental:

gcc MailboxManagerController.m -c \
  -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -DGNUSTEP 
-DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 
-DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -fexceptions -fobjc-exceptions 
-D_NATIVE_OBJC_EXCEPTIONS -pthread -fPIC -Wall -DGSWARN -DGSDIAGNOSE 
-Wno-import -g -O2 -g -O2 -ffile-prefix-map=/<>=. 
-fstack-protector-strong -Wformat -Werror=format-security -Wall -Wno-import 
-I/usr/kerberos/include -I/usr/local/ssl/include 
-fconstant-string-class=NSConstantString -I. -I./derived_src -I. 
-I/usr/local/include/GNUstep -I/usr/include/GNUstep \
   -o obj/GNUMail.obj/MailboxManagerController.m.o
MailboxManagerController.m: In function ‘-[MailboxManagerController 
outlineView:acceptDrop:item:childIndex:]’:
MailboxManagerController.m:801:33: error: ‘struct CWFolder’ has no member named 
‘allMessages’; did you mean ‘_allMessages’?
  801 | [aSourceFolder->allMessages objectAtIndex:
  | ^~~
  | _allMessages
...
make[5]: *** [/usr/share/GNUstep/Makefiles/rules.make:521: 
obj/GNUMail.obj/MailboxManagerController.m.o] Error 1
...
make[1]: *** [debian/rules:31: override_dh_auto_build] Error 25

The severity of this bug will be raised to "serious" as soon as
pantomime/1.4.0 is uploaded to unstable.



Bug#1028579: src:sope: FTBFS with gnustep-base/1.29.0

2023-06-17 Thread Yavor Doganov
On Fri, Jan 13, 2023 at 09:39:04AM +0200, Yavor Doganov wrote:
> On Fri, Jan 13, 2023 at 09:28:11AM +0200, Yavor Doganov wrote:
> > Tags: patch
> 
> Here it is.

It looks like I made a mistake; please find attached the correct one.
>From e3d7ed13d3b764c834dc25776a8f845756f820f0 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Fri, 13 Jan 2023 09:18:57 +0200
Subject: [PATCH] Fix FTBFS with gnustep-base/1.29.0.

---
 debian/control |  2 +-
 debian/patches/base-1.29.patch | 25 +
 debian/patches/series  |  1 +
 3 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 debian/patches/base-1.29.patch

diff --git a/debian/control b/debian/control
index f361674..172a89f 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders: Jeroen Dekkers ,
 Build-Depends: debhelper-compat (= 13),
  gnustep-make,
  gobjc,
- libgnustep-base-dev,
+ libgnustep-base-dev (>= 1.29),
  libxml2-dev,
  libldap2-dev,
  libpq-dev,
diff --git a/debian/patches/base-1.29.patch b/debian/patches/base-1.29.patch
new file mode 100644
index 000..b111a31
--- /dev/null
+++ b/debian/patches/base-1.29.patch
@@ -0,0 +1,25 @@
+Description: Fix FTBFS with gnustep-base/1.29.0
+Bug-Debian: https://bugs.debian.org/1028579
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2023-01-13
+---
+
+--- sope-5.8.0.orig/sope-mime/NGMime/NGMimeType.m
 sope-5.8.0/sope-mime/NGMime/NGMimeType.m
+@@ -125,13 +125,13 @@
+ encoding = NSKoreanEUCStringEncoding;
+   }
+   else if ([charset isEqualToString:@"big5"]) {
+-encoding = NSBIG5StringEncoding;
++encoding = NSBig5StringEncoding;
+   }
+   else if ([charset isEqualToString:@"iso-2022-jp"]) {
+ encoding = NSISO2022JPStringEncoding;
+   }
+   else if ([charset isEqualToString:@"gb2312"]) {
+-encoding = NSGB2312StringEncoding;
++encoding = NSHZ_GB_2312StringEncoding;
+   }
+   else if ([charset isEqualToString:@"koi8-r"]) {
+ encoding = NSKOI8RStringEncoding;
diff --git a/debian/patches/series b/debian/patches/series
index 68fbd93..381749b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
 0001-do-not-build-json.patch
 0002-Do-not-build-xmlrpc-and-stxsaxdriver.patch
 0003-Unset-MAKEFLAGS-and-MFLAGS-in-configure.patch
+base-1.29.patch
-- 
2.39.0



Bug#1022256: upgrade-reports: gnustep-base-common blocks upgrade from bullseye to bookworm because of version dependencies

2023-03-15 Thread Yavor Doganov
Control: tags -1 moreinfo unreproducible

Please accept my apologies that it took me so long to react.

On Sun, 23 Oct 2022 09:55:58 +0300,
Paul Gevers wrote:
> On 22-10-2022 22:06, Daniel Savi wrote:
> > My previous release is: bullseye
> > I am upgrading to: bookworm
> > Archive date: unknown
> > Upgrade date: 10-22-22
> > 
> > - Did any packages fail to upgrade?
> > gnustep-base-common could not be upgraded due to a versioning
> > conflict. Happened on two independent systems. The upgrade to
> > bookworm failed for that reason.  Removing gnustep-base-common
> > prior to the upgrade helped.

Unfortunately I could not reproduce this on an i386 machine.  I made a
fresh standard install of bullseye and then installed the "gnustep"
package.  Afterwards I upgraded to bookworm with the usual procedure
(apt upgrade; apt full-upgrade) -- everything went smoothly.

Daniel, could you please provide logs and/or more information, perhaps
some unusual setup or specific combination of installed packages that
triggers the problem?



Bug#1032830: gnumail: FTBFS with pantomime/1.4.0

2023-03-12 Thread Yavor Doganov
Source: gnumail
Version: 1.3.0-1
Severity: important
Tags: ftbfs trixie sid
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: pantomime1.4-transition gnustep-transition

This package fails to build with pantomime/1.4.0+dfsg-1 from
experimental:

gcc MailboxManagerController.m -c \
  -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -DGNUSTEP 
-DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 
-DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -fexceptions -fobjc-exceptions 
-D_NATIVE_OBJC_EXCEPTIONS -pthread -fPIC -Wall -DGSWARN -DGSDIAGNOSE 
-Wno-import -g -O2 -g -O2 -ffile-prefix-map=/<>=. 
-fstack-protector-strong -Wformat -Werror=format-security -Wall -Wno-import 
-I/usr/kerberos/include -I/usr/local/ssl/include 
-fconstant-string-class=NSConstantString -I. -I./derived_src -I. 
-I/usr/local/include/GNUstep -I/usr/include/GNUstep \
   -o obj/GNUMail.obj/MailboxManagerController.m.o
MailboxManagerController.m: In function ‘-[MailboxManagerController 
outlineView:acceptDrop:item:childIndex:]’:
MailboxManagerController.m:801:33: error: ‘struct CWFolder’ has no member named 
‘allMessages’; did you mean ‘_allMessages’?
  801 | [aSourceFolder->allMessages objectAtIndex:
  | ^~~
  | _allMessages
...
make[5]: *** [/usr/share/GNUstep/Makefiles/rules.make:521: 
obj/GNUMail.obj/MailboxManagerController.m.o] Error 1
make[5]: *** Waiting for unfinished jobs
make[4]: *** [/usr/share/GNUstep/Makefiles/Instance/framework.make:617: 
internal-framework-run-compile-submake] Error 2
make[3]: *** [/usr/share/GNUstep/Makefiles/Master/rules.make:297: 
GNUMail.all.framework.variables] Error 2
make[3]: Leaving directory '/<>/Framework/GNUMail'
make[2]: *** 
[/usr/share/GNUstep/Makefiles/Master/serial-subdirectories.make:53: 
internal-all] Error 2
make[2]: Leaving directory '/<>'

The severity of this bug will be raised to "serious" as soon as
pantomime/1.4.0 is uploaded to unstable.



Bug#1031442: gnustep-base: FTBFS: dh_auto_test: error: make -j8 check "TESTSUITEFLAGS=-j8 --verbose" VERBOSE=1 messages=yes returned exit code 2

2023-02-17 Thread Yavor Doganov
Lucas Nussbaum wrote:
> Source: gnustep-base
> Version: 1.28.1+really1.28.0-5
> Severity: serious
> Justification: FTBFS

> During a rebuild of all packages in sid, your package failed to build
> on amd64.

Thanks for the report; I believe this is due to tzdata #1031395.  I
cannot reproduce with tzdata/2022g-6 where the removal of
/etc/timezone has been reverted.

I'm unsure whether to reassign this bug or just close it when
tzdata/2022g-6 migrates to testing.



Bug#1030386: gnustep-dl2: FTBFS with TeXInfo 7.0.x

2023-02-08 Thread Yavor Doganov
reassign 1030386 src:gnustep-make 2.9.1-1
merge 1030387 1030386
affects 1030387 + src:gnustep-dl2
thanks

On Fri, 03 Feb 2023 23:16:13 +0200,
Hilmar Preusse wrote:
> Unfortunately I didn't find the makeinfo call in your source
> package, hence I can't provide a patch.

That's because gnustep-dl2 uses gnustep-make as build system.  It
builds successfully with a fixed gnustep-make package using the patch
you kindly provided at #1030387, so I'm merging the bugs.

AFAICT there are no other GNUstep packages affected.



Bug#1030387: Bug#1030387: gnustep-make: FTBFS with TeXInfo 7.0.x

2023-02-07 Thread Yavor Doganov
Control: tags -1 + pending

Hilmar Preuße wrote:
> Am 06.02.2023 um 22:45 teilte Richard Frith-Macdonald mit:
> > FYI I implemented the suggested change in gnustep-make trunk in the
> > git repository, after having tried it out with TeXinfo 5 and 6
> 
> I can't find your changes on salsa. ;-(

Richard is a GNUstep upstream developer so he has committed the change
to the gnustep-make upstream repository.  I'll take care to update the
Debian package; thanks.



Bug#1028602: transition: gnustep-base, gnustep-gui

2023-01-28 Thread Yavor Doganov
Sebastian Ramacher wrote:
> On 2023-01-13 15:15:10 +0200, Yavor Doganov wrote:
> > I realise we are already late and in all likelihood we've missed
> > the last bookworm train, which is rather unpleasant for us and
> > GNUstep users but entirely our fault.
> 
> I am not quite sure what you mean with unpleasant. What would be
> unpleasant for GNUstep users?

I meant that in case the transition is postponed to trixie, bookworm
will ship with old releases of core GNUstep.  It happened for bullseye
when I missed to inform upstream about Debian's freeze/release
schedule.  This time the upstream releases were made in time but we
failed to meet the deadline again.



Bug#1028602: transition: gnustep-base, gnustep-gui

2023-01-13 Thread Yavor Doganov
Package: release.debian.org
Severity: normal
User: release.debian@packages.debian.org
Usertags: transition
X-Debbugs-Cc: pkg-gnustep-maintain...@lists.alioth.debian.org
Control: affects -1 + src:gnustep-base src:gnustep-gui

Dear Release team,

We would like your permission to carry out a GNUstep transition (two
libraries simultaneously with one round of binNMUs):

  libgnustep-base1.28 -> 1.29
  libgnustep-gui0.29  -> 0.30

I realise we are already late and in all likelihood we've missed the
last bookworm train, which is rather unpleasant for us and GNUstep
users but entirely our fault.  In case it's not possible to do it now
(after tiff/poppler) then please have us in mind for the early stages
of the trixie development cycle.

gnustep-base/1.29.0-1 is available in experimental, not yet built on
mipsen, ppc64el and s390x.  But note that 1.28.1-2 was built in
unstable on all release architectures; 1.29.0 is essentially the same
except the version bump (the damage done was corrected; see #1028189).

gnustep-gui/0.30.0-1 is also available in experimental, not yet built
on ppc64el and s390x but I do not expect any problems there.

While build-testing all rdeps on amd64, the following problems were
observed:

agenda.app   #1028185  gnustep-gui bug, will be fixed with next upload
gnustep-dl2  #1028577  fixed locally; needs a sourceful upload
pantomime#1028578  likewise
sope #1028579  patch sent to the BTS; needs a sourceful upload

In addition, gnustep-back will require a sourceful upload (that is
always the case).

The automatic ben trackers at release.d.o look fine.



Bug#1028579: src:sope: FTBFS with gnustep-base/1.29.0

2023-01-12 Thread Yavor Doganov
On Fri, Jan 13, 2023 at 09:28:11AM +0200, Yavor Doganov wrote:
> Tags: patch

Here it is.
>From e3d7ed13d3b764c834dc25776a8f845756f820f0 Mon Sep 17 00:00:00 2001
From: Yavor Doganov 
Date: Fri, 13 Jan 2023 09:18:57 +0200
Subject: [PATCH] Fix FTBFS with gnustep-base/1.29.0.

---
 debian/control |  2 +-
 debian/patches/base-1.29.patch | 25 +
 debian/patches/series  |  1 +
 3 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 debian/patches/base-1.29.patch

diff --git a/debian/control b/debian/control
index f361674..172a89f 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders: Jeroen Dekkers ,
 Build-Depends: debhelper-compat (= 13),
  gnustep-make,
  gobjc,
- libgnustep-base-dev,
+ libgnustep-base-dev (>= 1.29),
  libxml2-dev,
  libldap2-dev,
  libpq-dev,
diff --git a/debian/patches/base-1.29.patch b/debian/patches/base-1.29.patch
new file mode 100644
index 000..b111a31
--- /dev/null
+++ b/debian/patches/base-1.29.patch
@@ -0,0 +1,25 @@
+Description: Fix FTBFS with gnustep-base/1.29.0
+Bug-Debian: https://bugs.debian.org/1028579
+Author: Yavor Doganov 
+Forwarded: no
+Last-Update: 2023-01-13
+---
+
+--- sope-5.8.0.orig/sope-mime/NGMime/NGMimeType.m
 sope-5.8.0/sope-mime/NGMime/NGMimeType.m
+@@ -125,13 +125,13 @@
+ encoding = NSKoreanEUCStringEncoding;
+   }
+   else if ([charset isEqualToString:@"big5"]) {
+-encoding = NSBIG5StringEncoding;
++encoding = NSBig5StringEncoding;
+   }
+   else if ([charset isEqualToString:@"iso-2022-jp"]) {
+ encoding = NSISO2022JPStringEncoding;
+   }
+   else if ([charset isEqualToString:@"gb2312"]) {
+-encoding = NSGB2312StringEncoding;
++encoding = NSChineseEUCStringEncoding;
+   }
+   else if ([charset isEqualToString:@"koi8-r"]) {
+ encoding = NSKOI8RStringEncoding;
diff --git a/debian/patches/series b/debian/patches/series
index 68fbd93..381749b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
 0001-do-not-build-json.patch
 0002-Do-not-build-xmlrpc-and-stxsaxdriver.patch
 0003-Unset-MAKEFLAGS-and-MFLAGS-in-configure.patch
+base-1.29.patch
-- 
2.39.0



Bug#1028579: src:sope: FTBFS with gnustep-base/1.29.0

2023-01-12 Thread Yavor Doganov
Source: sope
Version: 5.8.0-1
Severity: important
Tags: patch
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: gnustep-base1.29-transition gnustep-transition

This package fails to build with gnustep-base/1.29.0-1 from
experimental:

gcc NGMimeType.m -c \
  -MMD -MP -DLIBRARY_MAJOR_VERSION=4 -DLIBRARY_MINOR_VERSION=9 
-DLIBRARY_SUBMINOR_VERSION=3 -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_RUNTIME=1 
-DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -fexceptions -fobjc-exceptions 
-D_NATIVE_OBJC_EXCEPTIONS -pthread -fPIC -DDEBUG -fno-omit-frame-pointer -Wall 
-DGSWARN -DGSDIAGNOSE -Wno-import -g -g -O2 
-ffile-prefix-map=/build/sope-5.8.0=. -fstack-protector-strong -Wformat 
-Werror=format-security -O0 -g -frecord-gcc-switches 
-fconstant-string-class=NSConstantString -I.. -I../.. 
-I../../sope-core/NGStreams/ -I../../sope-core/NGExtensions/ -I../../sope-core 
-I. -I/usr/local/include/GNUstep -I/usr/include/GNUstep \
   -o obj/NGMime.obj/NGMimeType.m.o
NGMimeType.m: In function '+[NGMimeType stringEncodingForCharset:]':
NGMimeType.m:128:16: error: 'NSBIG5StringEncoding' undeclared (first use in 
this function); did you mean 'NSBig5StringEncoding'?
  128 | encoding = NSBIG5StringEncoding;
  |^~~~
  |NSBig5StringEncoding
NGMimeType.m:128:16: note: each undeclared identifier is reported only once for 
each function it appears in
NGMimeType.m:134:16: error: 'NSGB2312StringEncoding' undeclared (first use in 
this function); did you mean 'NSHZ_GB_2312StringEncoding'?
  134 | encoding = NSGB2312StringEncoding;
  |^~
  |NSHZ_GB_2312StringEncoding
make[7]: *** [/usr/share/GNUstep/Makefiles/rules.make:521: 
obj/NGMime.obj/NGMimeType.m.o] Error 1

The severity of this bug will be raised to "serious" once
gnustep-base/1.29.0 is uploaded to unstable.



Bug#1028577: src:gnustep-dl2: FTBFS with gnustep-base/1.29.0

2023-01-12 Thread Yavor Doganov
Source: gnustep-dl2
Version: 1.12.0-15.1
Severity: important
Tags: sid bookworm
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: gnustep-base1.29-transition gnustep-transition

This package fails to build with gnustep-base/1.29.0-1 from
experimental:

gcc EOAdaptor.m -c \
  -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -DGNUSTEP_BASE_LIBRARY=1 
-DGNU_RUNTIME=1 -g -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 
-DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -fexceptions 
-fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -fPIC -Wall -DGSWARN 
-DGSDIAGNOSE -Wno-import -g -O2 -g -O2 
-ffile-prefix-map=/build/gnustep-dl2-0.12.0=. -fstack-protector-strong -Wformat 
-Werror=format-security -DDEBUG -fconstant-string-class=NSConstantString 
-I../EOControl/. -I.. -I. -I/usr/local/include/GNUstep -I/usr/include/GNUstep \
   -o obj/EOAccess.obj/EOAdaptor.m.o
EOAdaptor.m:132:39: error: 'NSGB2312StringEncoding' undeclared here (not in a 
function); did you mean 'NSHZ_GB_2312StringEncoding'?
  132 |   { @"NSGB2312StringEncoding",NSGB2312StringEncoding },
  |   ^~
  |   NSHZ_GB_2312StringEncoding
EOAdaptor.m:135:39: error: 'NSBIG5StringEncoding' undeclared here (not in a 
function); did you mean 'NSBig5StringEncoding'?
  135 |   { @"NSBIG5StringEncoding",  NSBIG5StringEncoding },
  |   ^~~~
  |   NSBig5StringEncoding
make[6]: *** [/usr/share/GNUstep/Makefiles/rules.make:521: 
obj/EOAccess.obj/EOAdaptor.m.o] Error 1

The severity of this bug will be raised to "serious" once
gnustep-base/1.29.0 is uploaded to unstable.



Bug#1028578: src:pantomime: FTBFS with gnustep-base/1.29.0

2023-01-12 Thread Yavor Doganov
Source: pantomime
Version: 1.3.0+dfsg1-3
Severity: important
Tags: sid bookworm
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: gnustep-base1.29-transition gnustep-transition

This package fails to build with gnustep-base/1.29.0-1 from
experimental:

gcc NSString+Extensions.m -c \
  -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -DGNUSTEP 
-DGNUSTEP_BASE_LIBRARY=1 -DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 
-fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS 
-pthread -fPIC -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -O2 -g -O2 
-ffile-prefix-map=/build/pantomime-1.3.0+dfsg1=. -fstack-protector-strong 
-Wformat -Werror=format-security -DHAVE_ICONV -Wall -Wno-import 
-fconstant-string-class=NSConstantString -I.. -I./derived_src -I. 
-I/usr/local/include/GNUstep -I/usr/include/GNUstep \
   -o obj/Pantomime.obj/NSString+Extensions.m.o
NSString+Extensions.m: In function '+[NSString(PantomimeStringExtensions) 
encodingForCharset:convertToNSStringEncoding:]':
NSString+Extensions.m:243:23: error: 'NSBIG5StringEncoding' undeclared (first 
use in this function); did you mean 'NSBig5StringEncoding'?
  243 | {@"big5" ,NSBIG5StringEncoding  ,NO},
  |   ^~~~
  |   NSBig5StringEncoding
NSString+Extensions.m:243:23: note: each undeclared identifier is reported only 
once for each function it appears in
NSString+Extensions.m:244:23: error: 'NSGB2312StringEncoding' undeclared (first 
use in this function); did you mean 'NSHZ_GB_2312StringEncoding'?
  244 | {@"gb2312"   ,NSGB2312StringEncoding,NO},
  |   ^~
  |   NSHZ_GB_2312StringEncoding
NSString+Extensions.m: At top level:
NSString+Extensions.m:504:2: warning: #warning return Charset instead? [-Wcpp]
  504 | #warning return Charset instead?
  |  ^~~
make[5]: *** [/usr/share/GNUstep/Makefiles/rules.make:521: 
obj/Pantomime.obj/NSString+Extensions.m.o] Error 1

The severity of this bug will be raised to "serious" once
gnustep-base/1.29.0 is uploaded to unstable.



Bug#1028189: gnustep-base/1.28.1-2 should not migrate to testing

2023-01-08 Thread Yavor Doganov
Source: gnustep-base
Version: 1.28.1-1
Severity: serious
Justification: API/ABI break

Filing this bug to block migration to testing.  This upload will be
reverted as it introduced silent API/ABI break.



Bug#1028185: src:agenda.app: FTBFS with gnustep-gui/0.30.0

2023-01-07 Thread Yavor Doganov
Source: agenda.app
Version: 0.46-2
Severity: important
Tags: sid bookworm ftbfs
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: gnustep-gui0.30-transition gnustep-transition

This package fails to build with gnustep-gui/0.30.0-1 from
experimental:

gcc SoundBackend.m -c \
  -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -DGNUSTEP 
-DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 
-DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -fexceptions -fobjc-exceptions 
-D_NATIVE_OBJC_EXCEPTIONS -pthread -fPIC -Wall -DGSWARN -DGSDIAGNOSE 
-Wno-import -g -O2 -g -O2 -ffile-prefix-map=/build/agenda.app-0.46=. 
-fstack-protector-strong -Wformat -Werror=format-security 
-fconstant-string-class=NSConstantString -I. -I/usr/local/include/GNUstep 
-I/usr/include/GNUstep \
   -o obj/SimpleAgenda.obj/SoundBackend.m.o
In file included from SoundBackend.m:1:
/usr/include/GNUstep/AppKit/NSSound.h:58:1: error: expected '=', ',', ';', 
'asm' or '__attribute__' before 'interface'
   58 | @interface NSSound : NSObject 
  | ^~
make[5]: *** [/usr/share/GNUstep/Makefiles/rules.make:521: 
obj/SimpleAgenda.obj/SoundBackend.m.o] Error 1

That's certainly a gnustep-gui bug, trivial to fix.  I'll reassign and
fix accordingly.



Bug#1019472: RM: mknfonts.tool -- ROM; obsolete

2022-09-10 Thread Yavor Doganov
Package: ftp.debian.org
Severity: normal
X-Debbugs-Cc: pkg-gnustep-maintain...@lists.alioth.debian.org

This package is obsolete and now completely unnecessary following the
removal of the GNUstep art backend.  Please remove; thanks.



Bug#1017818: elpa-jabber: Fails to compile with Emacs 28: Error: Wrong number of arguments: make-obsolete, 2

2022-08-21 Thread Yavor Doganov
Package: elpa-jabber
Version: 0.8.92+git98dc8e-7
Severity: serious

The upgrade from Emacs 27 to 28 aborts because byte-compilation of
elpa-jabber fails with the following error(s):

| In toplevel form:
| jabber-vcard.el:67:1: Error: Wrong number of arguments: make-obsolete, 2

The full log is:

Install elpa-jabber for emacs
install/jabber-0.8.92: Handling install of emacsen flavor emacs
install/jabber-0.8.92: byte-compiling for emacs

In toplevel form:
fsm.el:108:1: Warning: Package cl is deprecated
fsm.el:131:1: Warning: ‘defmacro*’ is an obsolete alias (as of 27.1); use
‘cl-defmacro’ instead.

In define-state-machine:
fsm.el:166:18: Warning: ‘destructuring-bind’ is an obsolete alias (as of
27.1); use ‘cl-destructuring-bind’ instead.
fsm.el:183:1: Warning: ‘defmacro*’ is an obsolete alias (as of 27.1); use
‘cl-defmacro’ instead.
fsm.el:214:1: Warning: ‘defmacro*’ is an obsolete alias (as of 27.1); use
‘cl-defmacro’ instead.
fsm.el:233:1: Warning: ‘defmacro*’ is an obsolete alias (as of 27.1); use
‘cl-defmacro’ instead.

In define-fsm:
fsm.el:255:29: Warning: ‘loop’ is an obsolete alias (as of 27.1); use
‘cl-loop’ instead.

In fsm-goodbye-cruel-world:
fsm.el:283:8: Warning: ‘remprop’ is an obsolete function (as of 27.1); use
‘cl-remprop’ instead.
fsm.el:283:21: Warning: ‘remprop’ is an obsolete function (as of 27.1); use
‘cl-remprop’ instead.

In fsm-update:
fsm.el:333:12: Warning: ‘destructuring-bind’ is an obsolete alias (as of
27.1); use ‘cl-destructuring-bind’ instead.

In fsm-send-sync:
fsm.el:374:30: Warning: ‘destructuring-bind’ is an obsolete alias (as of
27.1); use ‘cl-destructuring-bind’ instead.

In hexrgb-read-color:
hexrgb.el:349:14: Warning: ‘interactive-p’ is an obsolete function (as of
23.2); use ‘called-interactively-p’ instead.

In hexrgb-complement:
hexrgb.el:373:10: Warning: ‘interactive-p’ is an obsolete function (as of
23.2); use ‘called-interactively-p’ instead.

In hexrgb-hsv-to-rgb:
hexrgb.el:497:25: Warning: ‘case’ is an obsolete alias (as of 27.1); use
‘cl-case’ instead.

In end of data:
hexrgb.el:332:35: Warning: the function ‘eyedrop-background-at-mouse’ is not
known to be defined.
hexrgb.el:328:35: Warning: the function ‘eyedrop-foreground-at-mouse’ is not
known to be defined.
hexrgb.el:326:66: Warning: the function ‘eyedrop-background-at-point’ is not
known to be defined.
../../elpa-src/jabber-0.8.92/jabber-util.el: Warning: ‘return’ is an obsolete 
alias (as of 27.1); use ‘cl-return’ instead.
../../elpa-src/jabber-0.8.92/jabber-util.el: Warning: ‘loop’ is an obsolete 
alias (as of 27.1); use ‘cl-loop’ instead.
../../elpa-src/jabber-0.8.92/jabber-util.el: Warning: ‘loop’ is an obsolete 
alias (as of 27.1); use ‘cl-loop’ instead.
../../elpa-src/jabber-0.8.92/jabber-util.el: Warning: ‘return’ is an obsolete 
alias (as of 27.1); use ‘cl-return’ instead.
../../elpa-src/jabber-0.8.92/jabber-util.el: Warning: ‘case’ is an obsolete 
alias (as of 27.1); use ‘cl-case’ instead.
../../elpa-src/jabber-0.8.92/jabber-util.el: Warning: ‘return’ is an obsolete 
alias (as of 27.1); use ‘cl-return’ instead.
../../elpa-src/jabber-0.8.92/jabber-util.el: Warning: ‘destructuring-bind’ is 
an obsolete alias (as of 27.1); use ‘cl-destructuring-bind’ instead.
../../elpa-src/jabber-0.8.92/jabber-util.el: Warning: ‘do’ is an obsolete alias 
(as of 27.1); use ‘cl-do’ instead.
../../elpa-src/jabber-0.8.92/jabber-xml.el: Warning: ‘loop’ is an obsolete 
alias (as of 27.1); use ‘cl-loop’ instead.
../../elpa-src/jabber-0.8.92/jabber-xml.el: Warning: ‘return’ is an obsolete 
alias (as of 27.1); use ‘cl-return’ instead.

In toplevel form:
jabber-activity.el:42:1: Warning: Package tls is deprecated
jabber-activity.el:42:1: Warning: Package starttls is deprecated
../../elpa-src/jabber-0.8.92/srv.el: Warning: ‘incf’ is an obsolete alias (as 
of 27.1); use ‘cl-incf’ instead.
../../elpa-src/jabber-0.8.92/srv.el: Warning: ‘return’ is an obsolete alias (as 
of 27.1); use ‘cl-return’ instead.
../../elpa-src/jabber-0.8.92/jabber-conn.el: Warning: ‘labels’ is an obsolete 
macro (as of 24.3); use ‘cl-labels’ instead.
../../elpa-src/jabber-0.8.92/jabber-conn.el: Warning: ‘labels’ is an obsolete 
macro (as of 24.3); use ‘cl-labels’ instead.
../../elpa-src/jabber-0.8.92/jabber-conn.el: Warning: ‘case’ is an obsolete 
alias (as of 27.1); use ‘cl-case’ instead.
../../elpa-src/jabber-0.8.92/fsm.el: Warning: ‘destructuring-bind’ is an 
obsolete alias (as of 27.1); use ‘cl-destructuring-bind’ instead.
../../elpa-src/jabber-0.8.92/fsm.el: Warning: ‘loop’ is an obsolete alias (as 
of 27.1); use ‘cl-loop’ instead.
../../elpa-src/jabber-0.8.92/fsm.el: Warning: ‘destructuring-bind’ is an 
obsolete alias (as of 27.1); use ‘cl-destructuring-bind’ instead.
../../elpa-src/jabber-0.8.92/fsm.el: Warning: ‘destructuring-bind’ is an 
obsolete alias (as of 27.1); use ‘cl-destructuring-bind’ instead.
../../elpa-src/jabber-0.8.92/jabber-core.el: Warning: ‘destructuring-bind’ is 

Bug#1012857: libpopplerkit0: Please update for Poppler 22.06

2022-06-20 Thread Yavor Doganov
On Wed, 15 Jun 2022 19:21:46 +0300,
Nathan Pratta Teodosio wrote:
> Package: libpopplerkit0
> Tags: patch

> Since Poppler 22.06 made its way into experimental, Libpopplerkit0
> will need the compatibility changes present in the attached debdiff.

Thanks for the patch.  I am currently rather busy; please feel free to
make a NMU at your earliest convenience in case popplerkit.framework
is a blocker for the forthcoming poppler transition.  TIA.



Bug#885786: gnustep-back: Please drop art backend package

2022-05-30 Thread Yavor Doganov
tags 885786 + pending
thanks

Bastian Germann wrote:
> Please drop the art backend package.  dia is in the process of being
> adopted and will also drop its art dependency, so we should make
> this happen as soon as possible so that bookworm can come without
> libart.

Will do in a few weeks; in any case it'll definitely happen well
before the freeze for the bookworm release.



Bug#1009066: pcre2: FTBFS on hurd-i386: error: ‘PATH_MAX’ undeclared

2022-04-06 Thread Yavor Doganov
Source: pcre2
Version: 10.39-1
Severity: important
Tags: patch ftbfs
User: debian-h...@lists.debian.org
Usertags: hurd

This packages fails to build on hurd-i386 as of version 10.39-1;
from the last build log for 10.39-3 [1]:

| gcc -DHAVE_CONFIG_H -I. -I./src  "-I./src" -Wdate-time -D_FORTIFY_SOURCE=2   
-g -O2 -ffile-prefix-map=/<>=. -fstack-protector-strong -Wformat 
-Werror=format-security -Dregcomp=PCRE2regcomp -Dregexec=PCRE2regexec 
-Dregerror=PCRE2regerror -Dregfree=PCRE2regfree -c -o src/pcre2grep-pcre2grep.o 
`test -f 'src/pcre2grep.c' || echo './'`src/pcre2grep.c
| src/pcre2grep.c: In function ‘grep_or_recurse’:
| src/pcre2grep.c:3365:25: error: ‘PATH_MAX’ undeclared (first use in this 
function)
|  3365 |   char resolvedpath[PATH_MAX];
|   | ^~~~
| src/pcre2grep.c:3365:25: note: each undeclared identifier is reported only 
once for each function it appears in
| Makefile:2574: recipe for target 'src/pcre2grep-pcre2grep.o' failed

[1] 
https://buildd.debian.org/status/fetch.php?pkg=pcre2=hurd-i386=10.39-3=1637168178=0

Attached is a simplistic patch.
--- pcre2-10.39.orig/src/pcre2grep.c
+++ pcre2-10.39/src/pcre2grep.c
@@ -3362,19 +3362,25 @@ if (isdirectory(pathname))
 
 #ifdef HAVE_REALPATH
   {
-  char resolvedpath[PATH_MAX];
+  char *resolvedpath;
   BOOL isSame;
   size_t rlen;
-  if (realpath(childpath, resolvedpath) == NULL)
+  if ((resolvedpath = realpath(childpath, NULL)) == NULL)
 continue; /* This path is invalid - we can skip processing this */
   isSame = strcmp(pathname, resolvedpath) == 0;
-  if (isSame) continue;/* We have a recursion */
+  if (isSame)
+{
+  free(resolvedpath);
+  continue;/* We have a recursion */
+}
   rlen = strlen(resolvedpath);
-  if (rlen++ < sizeof(resolvedpath) - 3)
+  rlen++;
 {
 BOOL contained;
+resolvedpath = (char *)realloc(resolvedpath, rlen + 1);
 strcat(resolvedpath, "/");
 contained = strncmp(pathname, resolvedpath, rlen) == 0;
+free(resolvedpath);
 if (contained) continue;/* We have a recursion */
 }
   }


Bug#1001537: gtamsanalyzer.app: Crashes when closing project window

2021-12-11 Thread Yavor Doganov
Package: gtamsanalyzer.app
Version: 0.42-7+b8
Severity: important
Tags: sid bookworm
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: gnustep-gui0.29-transition gnustep-transition

The program segfaults on exit or when closing the project window:

(gdb) bt
#0  0x77176d55 in objc_msg_lookup (receiver=0x55a7b790, 
op=0x77de0240 <_OBJC_SELECTOR_TABLE+4064>) at 
/build/gcc-11-RMIFfM/gcc-11-11.2.0/src/libobjc/sendmsg.c:442
#1  0x77ae8dbb in -[NSApplication targetForAction:to:from:] 
(self=, _cmd=, theAction=0x56f9e800, 
theTarget=0x55a7b790, sender=) at 
./Source/NSApplication.m:2294
#2  0x77baab68 in -[NSMenu _autoenableItem:] (self=, 
_cmd=, item=0x56542300) at ./Source/NSMenu.m:1179
#3  0x77bafd37 in -[NSMenu update] (self=0x56541c50, 
_cmd=) at ./Source/NSMenu.m:1255
#4  0x77bd55e1 in -[NSPopUpButtonCell setMenuItem:] 
(self=0x565420e0, _cmd=, item=0x0) at 
./Source/NSPopUpButtonCell.m:640
#5  0x77bd5dec in -[NSPopUpButtonCell synchronizeTitleAndSelectedItem] 
(self=0x565420e0, _cmd=) at ./Source/NSPopUpButtonCell.m:842
#6  0x77bd6a1b in -[NSPopUpButtonCell dealloc] (self=0x565420e0, 
_cmd=) at ./Source/NSPopUpButtonCell.m:152
#7  0x77b421c1 in -[NSControl dealloc] (self=0x56541f30, 
_cmd=) at ./Source/NSControl.m:125
#8  0x77c5dbdc in -[NSView removeSubview:] (self=0x56168120, 
_cmd=, aView=) at ./Source/NSView.m:965
#9  0x77c6cb70 in -[NSView dealloc] (self=, 
_cmd=) at ./Source/NSView.m:745
#10 0x77c5dbdc in -[NSView removeSubview:] (self=0x561669e0, 
_cmd=, aView=) at ./Source/NSView.m:965
#11 0x77c6cb70 in -[NSView dealloc] (self=, 
_cmd=) at ./Source/NSView.m:745
#12 0x77c79266 in -[NSWindow dealloc] (self=0x56ec7720, 
_cmd=) at ./Source/NSWindow.m:908
#13 0x773abebb in -[GSArray dealloc] (self=0x56168a90, 
_cmd=) at ./Source/GSArray.m:140
#14 0x7740c325 in -[NSAutoreleasePool emptyPool] (self=0x55880f00, 
_cmd=) at ./Source/NSAutoreleasePool.m:525
#15 0x7740c630 in -[NSAutoreleasePool dealloc] (self=0x55880f00, 
_cmd=0x77774eb0 <_OBJC_SELECTOR_TABLE+240>) at 
./Source/NSAutoreleasePool.m:571
#16 0x77ae824e in -[NSApplication run] (self=0x5599aac0, 
_cmd=) at ./Source/NSApplication.m:1601
#17 0x77ac7ef7 in NSApplicationMain (argc=, 
argv=) at ./Source/Functions.m:119
#18 0x76fcbe4a in __libc_start_main (main=0x555c3280 , 
argc=1, argv=0x7fffe868, init=, fini=, 
rtld_fini=, stack_end=0x7fffe858) at ../csu/libc-start.c:314
#19 0x555c34fa in _start ()

-- System Information:
Debian Release: bookworm/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 
'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, x32

Kernel: Linux 5.15.0-2-amd64 (SMP w/2 CPU threads)
Locale: LANG=bg_BG.UTF-8, LC_CTYPE=bg_BG.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages gtamsanalyzer.app depends on:
ii  gnustep-back0.29  0.29.0-2
ii  gnustep-base-runtime  1.28.0-4
ii  gnustep-gui-runtime   0.29.0-2
ii  libc6 2.32-5
ii  libgnustep-base1.28   1.28.0-4
ii  libgnustep-gui0.290.29.0-2
ii  libobjc4  11.2.0-12
ii  libpcre3  2:8.39-13

Versions of packages gtamsanalyzer.app recommends:
ii  graphviz  2.42.2-5+b1
ii  gv1:3.7.4-2+b1

gtamsanalyzer.app suggests no packages.

-- no debconf information



Bug#1000982: transition: gnustep-base, gnustep-gui

2021-12-01 Thread Yavor Doganov
Package: release.debian.org
Severity: normal
User: release.debian@packages.debian.org
Usertags: transition
X-Debbugs-Cc: pkg-gnustep-maintain...@lists.alioth.debian.org

We would like the Release Team's permission to carry out a GNUstep
transition, namely

  libgnustep-base1.27 -> 1.28
  libgnustep-gui0.28  -> 0.29

As usual, it's better to be done simultaneously (only one round
binNMUs for both libraries) since everything that depends on -gui also
depends on -base.  As always, gnustep-back will need a sourceful
upload and should not be binNMUed.

I have build-tested all rdeps and no problems were observed, at least
on amd64.  The auto tracker(s) at release.d.o is/are correct.



Bug#997986: RFS: gnomint/1.3.0-4 [QA] [RC] -- X.509 Certification Authority management tool for GNOME

2021-10-28 Thread Yavor Doganov
Package: sponsorship-requests
Severity: important

Dear mentors,

I'm looking for a sponsor for the orphaned package "gnomint":

 * Package name: gnomint
   Version : 1.3.0-4
   Upstream Author : David Marin Carreno 
 * URL : http://gnomint.sourceforge.net/
 * License : GPL-3+
 * Vcs : N/A
   Section : gnome

It builds this binary package:

  gnomint - X.509 Certification Authority management tool for GNOME

To access further information about this package, please visit the
following URL:

  https://mentors.debian.net/package/gnomint/

Alternatively, one can download the package with dget using this command:

  dget -x 
https://mentors.debian.net/debian/pool/main/g/gnomint/gnomint_1.3.0-4.dsc

Changes since the last upload:

 gnomint (1.3.0-4) unstable; urgency=medium
 .
   * QA upload.
   * debian/patches/glib-2.70.patch: New; fix FTBFS with glib/2.70
 (Closes: #997198).
   * debian/patches/series: Update.
   * debian/rules (override_dh_auto_configure): Remove alpha bits, it looks
 like the build failure was transient.
   * debian/control (Standards-Version): Bump to 4.6.0; no changes needed.



Bug#995007: gnustep-base ftbfs with updated autoconf/automake

2021-10-03 Thread Yavor Doganov
On Sat, 02 Oct 2021 16:01:45 +0300,
Peter Green wrote:
> I see a fix for this issue has been uploaded to mentors, do you want
> me to sponsor it?

I'd be very grateful, thanks in advance!
My usual sponsor is not answering...



Bug#963081: src:camera.app: Please switch to using pkg-config for libgphoto2

2020-07-20 Thread Yavor Doganov
Sudip Mukherjee wrote:
> On Fri, Jun 19, 2020 at 09:41:22PM +0300, Yavor Doganov wrote:
> > wf...@niif.hu wrote:
> > > Yavor Doganov  writes:
> > > > Thanks; I'll fix this shortly -- the upload will depend on my sponsor
> > > > though.  Meanwhile, feel free to upload libgphoto2 whenever you like
> > > > and raise the severity of this bug to serious.
> > > 
> > > Did so, thanks.  I'm willing to sponsor your upload fixing this issue if
> > > needed.
> > 
> > It has a bunch of other changes so I'm not sure you'll be comfortable
> > reviewing them.  And I've already contacted my sponsor...  Anyway, the
> > updated package is available at mentors.d.n and also on Salsa.
> 
> Fixing the FTBFS is fairly simple and the attached patch is sufficient.
> Might be worth doing the NMU as it has been removed from testing.

I've already pushed Ferenc's fix plus some other changes so please
don't NMU it.  Pinging my sponsor again (sorry to disturb you, Peter).



Bug#963535: RFS: grdesktop/0.23+d040330-7 [QA] -- GNOME frontend for the rdesktop client

2020-06-23 Thread Yavor Doganov
Package: sponsorship-requests
Severity: normal

Dear mentors,

I'm looking for a sponsor for a QA upload of the package "grdesktop".

 * Package name: grdesktop
   Version : 0.23+d040330-7
   Upstream Author : Thorsten Sauter 
 * URL : http://www.nongnu.org/grdesktop/
 * License : GPL-2+
 * Vcs : None
   Section : x11

It builds this binary package:

  grdesktop - GNOME frontend for the rdesktop client

To access further information about this package, please visit the
following URL:

  https://mentors.debian.net/package/grdesktop

Alternatively, one can download the package with dget using this command:

  dget -x 
https://mentors.debian.net/debian/pool/main/g/grdesktop/grdesktop_0.23+d040330-7.dsc

Changes since the last upload:

   * QA upload.
   * debian/patches/11_gcc-10.diff: New; fix FTBFS with GCC 10
 (Closes: #957308).
   * debian/patches/series: Update.
   * debian/control (Build-Depends): Switch to debhelper-compat; bump
 compat level to 13.
   * debian/compat: Delete.



Bug#963529: RFS: gnomint/1.3.0-3 [QA] -- X.509 Certification Authority management tool for GNOME

2020-06-23 Thread Yavor Doganov
Package: sponsorship-requests
Severity: normal

Dear mentors,

I am looking for a sponsor for the orphaned package "gnomint".

 * Package name: gnomint
   Version : 1.3.0-3
   Upstream Author : David Marin Carreno  (and others)
 * URL : http://gnomint.sourceforge.net/
 * License : GPL-3+
 * Vcs : None
   Section : gnome

It builds this binary package:

  gnomint - X.509 Certification Authority management tool for GNOME

To access further information about this package, please visit the
following URL:

  https://mentors.debian.net/package/gnomint

Alternatively, one can download the package with dget using this command:

  dget -x 
https://mentors.debian.net/debian/pool/main/g/gnomint/gnomint_1.3.0-3.dsc

Changes since the last upload:

   * QA upload.
   * debian/patches/gcc-10.patch: New; fix FTBFS with GCC 10
 (Closes: #957287).
   * debian/patches/series: Update.
   * debian/control (Build-Depends): Switch to debhelper-compat; bump
 compat level to 13.
 (Standards-Version): Claim compliance with 4.5.0; no changes needed.
   * debian/compat: Delete.
   * debian/rules (override_dh_auto_configure): Attempt to get some clues
 regarding the FTBFS on alpha.



Bug#963478: gworkspace.app: Crashes on startup

2020-06-22 Thread Yavor Doganov
Package: gworkspace.app
Version: 0.9.4-2+b1
Severity: grave
User: pkg-gnustep-maintain...@lists.alioth.debian.org
Usertags: gnustep-gui0.28-transition gnustep-transition

(gdb) r
Starting program: /usr/bin/GWorkspace 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
2020-06-22 10:08:32.852 GWorkspace[771743:771743] styleoffsets ... guessing 
offsets
2020-06-22 10:08:32.855 GWorkspace[771743:771743] styleoffsets ... guessing 
offsets
[Detaching after vfork from child process 771748]
[Detaching after vfork from child process 771750]
2020-06-22 10:08:36.914 fswatcher[771750:771750] register client 2
2020-06-22 10:08:37.373 GWorkspace[771743:771743] Selected non-scalable font.
2020-06-22 10:08:38.471 GWorkspace[771743:771743] Setting unknown encoding 1

Program received signal SIGSEGV, Segmentation fault.
0x77126981 in objc_msg_lookup (
receiver=0x77344f90 <+[NSArray arrayWithObjects:]>, 
op=0x776a19f0 <_OBJC_SELECTOR_TABLE+208>)
at /build/gcc-10-JUVXRb/gcc-10-10.1.0/src/libobjc/sendmsg.c:442
442 /build/gcc-10-JUVXRb/gcc-10-10.1.0/src/libobjc/sendmsg.c: Няма такъв 
файл или директория.
(gdb) bt
#0  0x77126981 in objc_msg_lookup
(receiver=0x77344f90 <+[NSArray arrayWithObjects:]>, op=0x776a19f0 
<_OBJC_SELECTOR_TABLE+208>)
at /build/gcc-10-JUVXRb/gcc-10-10.1.0/src/libobjc/sendmsg.c:442
#1  0x772e639e in -[GSInlineArray initWithObjects:count:]
(self=0x5a734200, _cmd=, objects=0x7fffdda0, 
count=35) at GSArray.m:420
#2  0x773450d9 in +[NSArray arrayWithObjects:]
(self=, _cmd=, firstObject=0x77e38a10 
<_OBJC_INSTANCE_155>) at NSArray.m:266
#3  0x77aaf3f6 in iterate_reps_for_types
(imageReps=, method=method@entry=0x77d617c0 
<_OBJC_SELECTOR_TABLE+4512>) at NSImage.m:2197
#4  0x77aaf6fa in +[NSImage imagePasteboardTypes]
(self=, _cmd=) at NSImage.m:2165
#5  0x77efc067 in -[IconView setInspector:]
(self=0x5a741470, _cmd=, insp=)
at IconView.m:35
#6  0x77ef2984 in -[Attributes initForInspector:]
(self=0x5a53c620, _cmd=, insp=0x5a71f320)
at Attributes.m:91
#7  0x77eefa88 in -[Inspector init]
(self=0x5a71f320, _cmd=) at Inspector.m:90
#8  0x555ec6c9 in -[GWorkspace applicationWillFinishLaunching:]
(self=0x5578a770, _cmd=, aNotification=)
at GWorkspace.m:496
#9  0x7740a604 in -[NSNotificationCenter _postAndRelease:]
(self=0x558c6d10, _cmd=, notification=0x55ad1de0)
at NSNotificationCenter.m:1198
#10 0x77a18285 in -[NSApplication finishLaunching]
(self=0x55abe5f0, _cmd=) at NSApplication.m:1016
#11 0x77a1c7b1 in -[NSApplication run]
(self=0x55abe5f0, _cmd=) at NSApplication.m:1561
#12 0x555e0775 in main
(argc=, argv=, env=)
at main.m:38

-- System Information:
Debian Release: bullseye/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 
'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, x32

Kernel: Linux 5.6.0-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=bg_BG.UTF-8, LC_CTYPE=bg_BG.UTF-8 (charmap=UTF-8), 
LANGUAGE=bg_BG.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages gworkspace.app depends on:
ii  gnustep-back0.28  0.28.0-2
ii  gnustep-base-runtime  1.27.0-3
ii  gnustep-gui-runtime   0.28.0-2
ii  gworkspace-common 0.9.4-2
ii  libc6 2.30-8
ii  libgcc-s1 10.1.0-4
ii  libgnustep-base1.27   1.27.0-3
ii  libgnustep-gui0.280.28.0-2
ii  libobjc4  10.1.0-4
ii  libpopplerkit00.0.20051227svn-8+b3
ii  libsqlite3-0  3.32.3-1

Versions of packages gworkspace.app recommends:
ii  cynthiune.app  1.0.0-2+b3
ii  price.app  1.3.0-4+b1
ii  systempreferences.app  1.2.0-2+b6
ii  textedit.app   5.0-2+b2
ii  viewpdf.app1:0.2dfsg1-7+b1
ii  zipper.app 1.5-3+b1

Versions of packages gworkspace.app suggests:
ii  gworkspace-apps-wrappers  0.9.4-2

-- no debconf information



Bug#963081: src:camera.app: Please switch to using pkg-config for libgphoto2

2020-06-19 Thread Yavor Doganov
wf...@niif.hu wrote:
> Yavor Doganov  writes:
> 
> > Thanks; I'll fix this shortly -- the upload will depend on my sponsor
> > though.  Meanwhile, feel free to upload libgphoto2 whenever you like
> > and raise the severity of this bug to serious.
> 
> Did so, thanks.  I'm willing to sponsor your upload fixing this issue if
> needed.

It has a bunch of other changes so I'm not sure you'll be comfortable
reviewing them.  And I've already contacted my sponsor...  Anyway, the
updated package is available at mentors.d.n and also on Salsa.

P.S. I noticed that libgphoto2/2.5.25-1 FTBFS almost everywhere, you
might want to take a look.



Bug#963081: src:camera.app: Please switch to using pkg-config for libgphoto2

2020-06-19 Thread Yavor Doganov
Ferenc Wágner wrote:
> Package: src:camera.app
> Version: 0.8.0-12
> Severity: normal
> 
> I plan to upload libgphoto2 2.5.25 without the config scripts,
> which upstream considers obsolete and hurt the multi-arch effort.
> It's easy to switch to using pkg-config instead, see the attached
> debdiff.

Thanks; I'll fix this shortly -- the upload will depend on my sponsor
though.  Meanwhile, feel free to upload libgphoto2 whenever you like
and raise the severity of this bug to serious.



  1   2   3   4   5   6   7   8   9   10   >