Download raw body.
libstdthreads threads.h detection and gnulib
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
libstdthreads threads.h detection and gnulib