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