On Wed, Sep 11, 2024 at 10:13:12PM +0200, Jeremie Courreges-Anglas wrote: > > So I spotted threads.h being picked up by math/octave and the > libstdthreads being junked after the configure step, something already > fixed by ajacoutot@ in the following ports: > > math/octave > math/pspp > textproc/link-grammar > > by adding devel/libstdthreads to BUILD_DEPENDS. These three ports use > gnulib's threadlib.m4. Other ports that may be affected by this issue: > > archivers/gcpio > archivers/gtar > astro/gnuastro > converters/recode > devel/bison > devel/gettext > devel/objfw > devel/universal-ctags > editors/le > editors/nano > editors/poke > games/trader > graphics/ttfautohint > lang/guile3 > math/datamash > misc/findutils > net/dico > net/isc-bind > net/lftp > net/monitoring-plugins > net/wget > net/wget2 > print/a2ps > print/libpaper > print/texinfo > security/gnutls > security/libgpg-error > security/libgsasl > sysutils/augeas > sysutils/coreutils > sysutils/ggrep > textproc/gdiff > textproc/gsed > textproc/recutils > x11/vlc > > (List found with grep '^checking for threads.h' on the latest amd64 > build logs.) > > I can think of several approaches to fix this: > > 1. add libstdthreads as a build dep to all those ports. Simple but > slightly problematic: > - IIUC, brings no functional value > - increases the chance of libstdthreads being picked up by future ports > > 2. "poison" threads.h detection for gnu.port.mk ports. This should be > enough for the gnulib occurences. > > 3. move libstdthreads header and libs to a subdirectory, to avoid > threads.h being picked up just because it's in the commonly used > /usr/local/include directory. > > The diff below, tested with sysutils/ggrep, implements approach #2. > If a gnu.port.mk port really wants libstdthreads, one needs to add > devel/libstdthreads to BUILD_DEPENDS (even though it really belongs in > LIB_DEPENDS), or add an override in CONFIGURE_ENV. > The diff isn't complete: it lacks at least REVISION bumps for at least > octave, pspp and link-grammar, and possibly safety bumps for all other > affected ports; but it shows the intent. > > Approach #3 seems to work too but is slightly tricker. wayland/foot > would need a meson.build patch. > > Thoughts?
I vote for #1. This is something we should have. #3 is horrible, we already struggle with such constructs in ports and honestly it's a pain (aka, this should be a short term solution that always ends up for eternity). Matthieu, should this be implemented / moved into base at some point? > Index: infrastructure/db/config.no-stdthreads > =================================================================== > RCS file: infrastructure/db/config.no-stdthreads > diff -N infrastructure/db/config.no-stdthreads > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ infrastructure/db/config.no-stdthreads 11 Sep 2024 17:11:24 -0000 > @@ -0,0 +1,3 @@ > +# $OpenBSD$ > +# included unless devel/libstdthreads > +ac_cv_header_threads_h=${ac_cv_header_threads_h=no} > Index: infrastructure/mk/gnu.port.mk > =================================================================== > RCS file: /home/cvs/ports/infrastructure/mk/gnu.port.mk,v > diff -u -p -r1.61 gnu.port.mk > --- infrastructure/mk/gnu.port.mk 14 May 2019 14:59:56 -0000 1.61 > +++ infrastructure/mk/gnu.port.mk 11 Sep 2024 17:02:52 -0000 > @@ -43,7 +43,8 @@ CONFIG_SITE_LIST += config.site > textproc/gsed gsed \ > archivers/gtar* gtar \ > lang/gawk gawk \ > - sysutils/coreutils coreutils > + sysutils/coreutils coreutils \ > + devel/libstdthreads stdthreads > . if !defined(BUILD_DEPENDS) || !${BUILD_DEPENDS:M$d} > CONFIG_SITE_LIST += config.no-${name} > . endif > > > -- > jca -- Antoine