I think the best approach long-term would be to have this in base, but
now pre\release is the wrong time.

Short-term probably avoid adding to dependencies where possible to
reduce the number of ports accidentally picking it up...




On 2024/09/11 22:51, Antoine Jacoutot wrote:
> 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
> 

Reply via email to