Public bug reported:

xfaces 3.3-30.3 has been stuck in stonking-proposed for ~346 days. It
fails to build on every architecture (amd64, amd64v3, arm64, armhf,
ppc64el, s390x; riscv64 was cancelled):

  missing build on amd64/amd64v3/arm64/armhf/ppc64el/riscv64: xfaces
(from 3.3-30.2)

Build log (amd64):
https://launchpad.net/ubuntu/+source/xfaces/3.3-30.3/+build/32793662

Failure:

  faces.h:537:13: error: conflicting types for 'regerror'; have 'void(char *)'
    537 | extern void regerror P_((String s));
  regexp.h:20:13: note: previous declaration of 'regsub' with type 'void(void)'
     20 | extern void regsub();
  faces.h:553:16: error: conflicting types for 'regcomp'; have 'regexp *(char 
*)'
  faces.h:554:12: error: conflicting types for 'regexec'; have 'int(regexp *, 
char *)'
  faces.h:558:13: error: conflicting types for 'regsub'; have 'void(regexp *, 
char *, char *)'

Cause:
gcc-15 defaults to C23, where an empty parameter list "f()" means "f(void)" 
instead of "unspecified arguments". xfaces is 1990s K&R code: its bundled 
regexp.h declares

  extern regexp *regcomp();
  extern int regexec();
  extern void regsub();
  extern void regerror();

and faces.h later declares the same functions with real prototypes,
which now conflict. (This is xfaces' own bundled V8 regexp
implementation, not glibc's regex.h.) The build used gcc-15
15.3.0-4ubuntu1. Not Ubuntu-specific.

Debian / upstream status:
- Debian #1098135 "xfaces: ftbfs with GCC-15" (open, no fix). Debian unstable 
still shows old binaries built before gcc-15.
  https://bugs.debian.org/1098135
- Upstream is long dead (xfaces 3.3, 1990s); the package only gets NMUs in 
Debian (last one: 3.3-30.3, source format 3.0 conversion).

Suggested direction (to be done by whoever picks this up):
- Simplest fix: build in C17 mode. debian/rules is an old-style hand-written 
rules file that runs xmkmf and then
    $(MAKE) $(shell dpkg-buildflags --export=cmdline) all
  so exporting DEB_CFLAGS_MAINT_APPEND = -std=gnu17 at the top of debian/rules 
should reach the compiler (check the compile lines in the build log).
- Cleaner fix: give regexp.h proper prototypes matching 
faces.h/regexp.c/regsub.c, e.g.
    extern regexp *regcomp(char *exp);
    extern int regexec(regexp *prog, char *string);
    extern void regsub(regexp *prog, char *source, char *dest);
    extern void regerror(char *s);
  then check for further C23 errors in the rest of the K&R code (old-style 
definitions are only warnings, but other empty-parens declarations may also 
conflict). -std=gnu17 is probably the pragmatic choice for this code base.
- Test-build in stonking, upload as an Ubuntu delta, and send the patch to 
Debian on #1098135.
- Given the package's age and state, also consider whether removal is more 
appropriate, but the fix looks like a one-liner.

** Affects: xfaces (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: ftbfs update-excuse

** Tags added: update-excuse

** Tags added: ftbfs

** Bug watch added: Debian Bug tracker #1098135
   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1098135

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2170338

Title:
  xfaces FTBFS in stonking with gcc-15 (C23): conflicting types for
  regcomp/regexec/regsub/regerror

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/xfaces/+bug/2170338/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to