On Mon, 13 Jan 2025 21:25:09 +0000, [email protected] wrote:
> I've been taking a close look at c++ ports on sparc64. I've submitted some low
> hanging fruit fixes that have been committed. However, there is a class of
> ports
> that it's not possible to fix without changing clang.port.mk and bsd.port.mk.
> Some background first.
>
> A c++ port that uses the base compiler that also depends on the c++ standard
> lib
> must add ${COMPILER_LIBCXX} to WANTLIB. COMPILER_LIBCXX is set to match the
> base
> compiler's c++ stdlib: c++ c++abi pthread on clang archs and stdc++ pthread on
> gcc archs. When a port is built using ports-clang or ports-gcc,
> COMPILER_LIBCXX
> is not updated. Rather it puts c++ standard lib depends directly into WANTLIB.
>
> This approach poses a problem for ports that use c++ where the resulting port
> is
> a header only port, or a port that produces only static libs, or a port that
> statically links in the c++ standard lib. For these ports they end up with
> extra
> WANTLIB that there is no way to fix. These types of ports don't put
> COMPILER_LIBCXX into WANTLIB but get the c++ standard lib anyway when a ports
> compiler is used.
>
> The following diff changes the clang.ports.mk and gcc4.ports.mk approach. It
> overrides LIBECXX which allows the rest of the makefile infrastructure to set
> COMPILER_LIBCXX to the correct value and does not inject the c++ standard libs
> into WANTLIB.
>
> It fixes the following WANTLIB problems:
>
> ports-clang ports-gcc: uses c++ to build but result has no depend on c++ libs:
> ./sysutils/py-tsk Extra: estdc++.19 on sparc64 and Extra: c++.10
> c++abi.7 pthread.27 on amd64
>
> base-clang: ports-clang ports-gcc c++ headers only:
> ./devel/catch2 Extra: estdc++.19 on sparc64
> ./devel/zug Extra: estdc++.19 on sparc64
> ./devel/immer Extra: estdc++.19 on sparc64
> ./devel/lager Extra: estdc++.19 on sparc64
> ./graphics/glm Extra: estdc++.19 on sparc64
>
> ports-clang: c++ static libs only:
> ./lang/wasi-sdk/compiler-rt Extra: estdc++.19 on sparc64 and Extra: c++.10
> c++abi.7 pthread.27 on amd64
> ./lang/wasi-sdk/libcxx Extra: estdc++.19 on sparc64 and Extra: c++.10
> c++abi.7 pthread.27 on amd64
> ./lang/wasi-sdk/libcxxabi Extra: estdc++.19 on sparc64 and Extra: c++.10
> c++abi.7 pthread.27 on amd64
>
> ports-clang: statically links in llvm libs
> ./lang/zig/Makefile Extra: c++.10 c++abi.7 on amd64
>
> ports-clang: c++ used but no depends on stdc++ libs:
> ./www/iridium Extra c++.10 c++abi.7 Unrelated: Extra: iconv.7
> Missing: epoll-shim lzma udev on amd64
> ./www/ungoogled-chromium Extra c++.10 c++abi.7 on amd64
>
> ports-gcc: uses c++ to build but no actual depend on c++ libs:
> ./devel/openmpi Extra estdc++.19 on both sparc64 and amd64
> ./lang/compcert Extra estdc++.19 on amd64
>
> Thoughts? If looks good, testing with a bulk build on amd64 and sparc64 would
> be
> helpful to ensure I didn't miss a port that needs a REVISION bump.
Yes, I think this is the correct way to fix it. Thank you. It works in
the test cases I tried and I failed to find any fault in the logic
behind it.
Anyone care to put it through a bulk?
> Index: lang/clang/clang.port.mk
> ===================================================================
> RCS file: /cvs/ports/lang/clang/clang.port.mk,v
> diff -u -p -u -r1.42 clang.port.mk
> --- lang/clang/clang.port.mk 17 Dec 2023 13:51:16 -0000 1.42
> +++ lang/clang/clang.port.mk 13 Jan 2025 19:52:27 -0000
> @@ -65,12 +65,12 @@ MODULES += gcc4
> MODCLANG_CPPLIBDEP = ${MODGCC4_CPPLIBDEP}
> LIB_DEPENDS += ${MODCLANG_CPPLIBDEP}
> MODCLANG_CPPWANTLIB = ${MODGCC4_CPPWANTLIB}
> -WANTLIB += ${MODCLANG_CPPWANTLIB}
> +LIBECXX = ${MODCLANG_CPPWANTLIB}
> . else
> # uses libc++
> MODCLANG_CPPLIBDEP =
> MODCLANG_CPPWANTLIB = c++ c++abi pthread
> -WANTLIB += ${MODCLANG_CPPWANTLIB}
> +LIBECXX = ${MODCLANG_CPPWANTLIB}
> . endif
> . endif
> .endif
> Index: lang/gcc/11/gcc4.port.mk
> ===================================================================
> RCS file: /cvs/ports/lang/gcc/11/gcc4.port.mk,v
> diff -u -p -u -r1.2 gcc4.port.mk
> --- lang/gcc/11/gcc4.port.mk 11 Mar 2022 19:28:58 -0000 1.2
> +++ lang/gcc/11/gcc4.port.mk 13 Jan 2025 19:52:27 -0000
> @@ -26,7 +26,7 @@ _MODGCC4_LINKS =
> MODGCC4STDCPP = estdc++
> MODGCC4_CPPLIBDEP = lang/gcc/11,-libs>=11,<12
> MODGCC4_CPPDEP = lang/gcc/11,-c++>=11,<12
> -MODGCC4_CPPWANTLIB = estdc++>=20
> +MODGCC4_CPPWANTLIB = estdc++>=20 pthread
> MODGCC4_ATOMICWANTLIB = atomic
>
> MODGCC4_FORTRANDEP = lang/gcc/11,-f95>=11,<12
> @@ -50,7 +50,7 @@ COMPILER_LINKS += gcc ${LOCALBASE}/bin/e
> . if ${MODGCC4_LANGS:L:Mc++}
> BUILD_DEPENDS += ${MODGCC4_CPPDEP}
> LIB_DEPENDS += ${MODGCC4_CPPLIBDEP}
> -WANTLIB += ${MODGCC4_CPPWANTLIB}
> +LIBECXX = ${MODGCC4_CPPWANTLIB}
> # XXX ports-clang already defines this
> . if !${COMPILER_LINKS:Mg++}
> COMPILER_LINKS += c++ ${LOCALBASE}/bin/eg++ g++ ${LOCALBASE}/bin/eg++
> Index: lang/gcc/8/gcc4.port.mk
> ===================================================================
> RCS file: /cvs/ports/lang/gcc/8/gcc4.port.mk,v
> diff -u -p -u -r1.5 gcc4.port.mk
> --- lang/gcc/8/gcc4.port.mk 11 Mar 2022 19:28:59 -0000 1.5
> +++ lang/gcc/8/gcc4.port.mk 13 Jan 2025 19:52:27 -0000
> @@ -26,7 +26,7 @@ _MODGCC4_LINKS =
> MODGCC4STDCPP = estdc++
> MODGCC4_CPPLIBDEP = lang/gcc/8,-libs>=8,<9
> MODGCC4_CPPDEP = lang/gcc/8,-c++>=8,<9
> -MODGCC4_CPPWANTLIB = estdc++>=19
> +MODGCC4_CPPWANTLIB = estdc++>=19 pthread
> MODGCC4_ATOMICWANTLIB = atomic
>
> MODGCC4_FORTRANDEP = lang/gcc/8,-f95>=8,<9
> @@ -50,7 +50,7 @@ COMPILER_LINKS += gcc ${LOCALBASE}/bin/e
> . if ${MODGCC4_LANGS:L:Mc++}
> BUILD_DEPENDS += ${MODGCC4_CPPDEP}
> LIB_DEPENDS += ${MODGCC4_CPPLIBDEP}
> -WANTLIB += ${MODGCC4_CPPWANTLIB}
> +LIBECXX = ${MODGCC4_CPPWANTLIB}
> # XXX ports-clang already defines this
> . if !${COMPILER_LINKS:Mg++}
> COMPILER_LINKS += c++ ${LOCALBASE}/bin/eg++ g++ ${LOCALBASE}/bin/eg++
> Index: devel/catch2/Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/catch2/Makefile,v
> diff -u -p -u -r1.52 Makefile
> --- devel/catch2/Makefile 4 Oct 2024 06:15:01 -0000 1.52
> +++ devel/catch2/Makefile 13 Jan 2025 19:52:20 -0000
> @@ -5,6 +5,8 @@ GH_PROJECT = Catch2
> GH_TAGNAME = v3.7.1
> PKGNAME = ${DISTNAME:L}
>
> +REVISION = 0
> +
> CATEGORIES = devel
>
> MAINTAINER = Rafael Sadowski <[email protected]>
> Index: devel/immer/Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/immer/Makefile,v
> diff -u -p -u -r1.4 Makefile
> --- devel/immer/Makefile 26 Dec 2024 21:48:10 -0000 1.4
> +++ devel/immer/Makefile 13 Jan 2025 19:52:20 -0000
> @@ -3,7 +3,7 @@ COMMENT = immutable and persistent data
> GH_ACCOUNT = arximboldi
> GH_PROJECT = immer
> GH_TAGNAME = v0.8.1
> -REVISION = 1
> +REVISION = 2
>
> CATEGORIES = devel
>
> Index: devel/lager/Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/lager/Makefile,v
> diff -u -p -u -r1.4 Makefile
> --- devel/lager/Makefile 5 Jan 2025 18:51:11 -0000 1.4
> +++ devel/lager/Makefile 13 Jan 2025 19:52:21 -0000
> @@ -3,7 +3,7 @@ COMMENT = redux for C++
> GH_ACCOUNT = arximboldi
> GH_PROJECT = lager
> GH_TAGNAME = v0.1.1
> -REVISION = 1
> +REVISION = 2
>
> CATEGORIES = devel
>
> Index: devel/openmpi/Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/openmpi/Makefile,v
> diff -u -p -u -r1.45 Makefile
> --- devel/openmpi/Makefile 10 Jan 2025 18:03:43 -0000 1.45
> +++ devel/openmpi/Makefile 13 Jan 2025 19:52:21 -0000
> @@ -2,7 +2,7 @@ COMMENT = open source MPI-3.1 implement
>
> V = 4.1.6
> DISTNAME = openmpi-$V
> -REVISION = 0
> +REVISION = 1
>
> SHARED_LIBS += open-pal 9.0 # 70.3
> SHARED_LIBS += mca_common_sm 5.0 # 70.0
> Index: devel/zug/Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/zug/Makefile,v
> diff -u -p -u -r1.4 Makefile
> --- devel/zug/Makefile 26 Dec 2024 21:47:47 -0000 1.4
> +++ devel/zug/Makefile 13 Jan 2025 19:52:24 -0000
> @@ -3,7 +3,7 @@ COMMENT = C++ library providing transduc
> GH_ACCOUNT = arximboldi
> GH_PROJECT = zug
> GH_TAGNAME = v0.1.1
> -REVISION = 1
> +REVISION = 2
>
> CATEGORIES = devel
>
> Index: graphics/glm/Makefile
> ===================================================================
> RCS file: /cvs/ports/graphics/glm/Makefile,v
> diff -u -p -u -r1.12 Makefile
> --- graphics/glm/Makefile 14 Oct 2022 13:27:10 -0000 1.12
> +++ graphics/glm/Makefile 13 Jan 2025 19:52:26 -0000
> @@ -4,6 +4,8 @@ GH_TAGNAME= 0.9.9.8
> GH_PROJECT= glm
> GH_ACCOUNT= g-truc
>
> +REVISION= 0
> +
> CATEGORIES= graphics math
>
> HOMEPAGE= https://glm.g-truc.net/
> Index: lang/compcert/Makefile
> ===================================================================
> RCS file: /cvs/ports/lang/compcert/Makefile,v
> diff -u -p -u -r1.43 Makefile
> --- lang/compcert/Makefile 5 Jan 2025 21:40:38 -0000 1.43
> +++ lang/compcert/Makefile 13 Jan 2025 19:52:27 -0000
> @@ -10,6 +10,7 @@ GH_PROJECT = CompCert
> GH_TAGNAME = v${V}
> DISTNAME = ${GH_PROJECT}-${V}
> PKGNAME = ${DISTNAME:L}
> +REVISION = 0
>
> HOMEPAGE = https://compcert.org/
>
> @@ -18,7 +19,7 @@ CATEGORIES = lang
> # INRIA Non-Commercial License Agreement.
> PERMIT_PACKAGE = Yes
>
> -WANTLIB += c m
> +WANTLIB += c m pthread
>
> COMPILER = ports-gcc
>
> Index: lang/wasi-sdk/compiler-rt/Makefile
> ===================================================================
> RCS file: /cvs/ports/lang/wasi-sdk/compiler-rt/Makefile,v
> diff -u -p -u -r1.8 Makefile
> --- lang/wasi-sdk/compiler-rt/Makefile 7 Dec 2023 12:01:18 -0000
> 1.8
> +++ lang/wasi-sdk/compiler-rt/Makefile 13 Jan 2025 19:52:27 -0000
> @@ -6,6 +6,8 @@ LIBPATH = wasi/libclang_rt.builtins-wasm
> BUILDSUBDIR = lib/builtins
> BUILD_DEPENDS += lang/wasi-libc>=0.20220413p0
>
> +REVISION = 0
> +
> # In transition from BSD-ish to Apache 2 + LLVM exceptions
> PERMIT_PACKAGE = Yes
>
> Index: lang/wasi-sdk/libcxx/Makefile
> ===================================================================
> RCS file: /cvs/ports/lang/wasi-sdk/libcxx/Makefile,v
> diff -u -p -u -r1.3 Makefile
> --- lang/wasi-sdk/libcxx/Makefile 7 Dec 2023 12:01:18 -0000 1.3
> +++ lang/wasi-sdk/libcxx/Makefile 13 Jan 2025 19:52:27 -0000
> @@ -5,6 +5,8 @@ PKGNAME = wasi-libcxx-${LLVM_V}
> LIBPATH = wasm32-wasi/libc++.a
> BUILDSUBDIR = libcxx
>
> +REVISION = 0
> +
> # In transition from BSD-ish to Apache 2 + LLVM exceptions
> PERMIT_PACKAGE = Yes
>
> Index: lang/wasi-sdk/libcxxabi/Makefile
> ===================================================================
> RCS file: /cvs/ports/lang/wasi-sdk/libcxxabi/Makefile,v
> diff -u -p -u -r1.3 Makefile
> --- lang/wasi-sdk/libcxxabi/Makefile 7 Dec 2023 12:01:18 -0000 1.3
> +++ lang/wasi-sdk/libcxxabi/Makefile 13 Jan 2025 19:52:27 -0000
> @@ -5,6 +5,8 @@ PKGNAME = wasi-libcxxabi-${LLVM_V}
> LIBPATH = wasm32-wasi/libc++abi.a
> BUILDSUBDIR = libcxxabi
>
> +REVISION = 0
> +
> # In transition from BSD-ish to Apache 2 + LLVM exceptions
> PERMIT_PACKAGE = Yes
>
> Index: lang/zig/Makefile
> ===================================================================
> RCS file: /cvs/ports/lang/zig/Makefile,v
> diff -u -p -u -r1.24 Makefile
> --- lang/zig/Makefile 22 Oct 2024 08:59:26 -0000 1.24
> +++ lang/zig/Makefile 13 Jan 2025 19:52:27 -0000
> @@ -11,6 +11,8 @@ GH_ACCOUNT = ziglang
> GH_PROJECT = zig
> GH_COMMIT = ${ZIG_COMMIT}
>
> +REVISION = 0
> +
> # see https://github.com/ziglang/zig/tree/0.13.0
> ZIG_VERSION = 0.13.0
> ZIG_COMMIT = cf90dfd3098bef5b3c22d5ab026173b3c357f2dd
> @@ -24,7 +26,7 @@ MAINTAINER = Sebastien Marie <semarie@ka
> # MIT
> PERMIT_PACKAGE = Yes
>
> -WANTLIB = ${COMPILER_LIBCXX} c m
> +WANTLIB = c m pthread
>
> # C++17
> COMPILER = ports-clang
> Index: sysutils/py-tsk/Makefile
> ===================================================================
> RCS file: /cvs/ports/sysutils/py-tsk/Makefile,v
> diff -u -p -u -r1.19 Makefile
> --- sysutils/py-tsk/Makefile 21 Dec 2024 11:38:54 -0000 1.19
> +++ sysutils/py-tsk/Makefile 13 Jan 2025 19:52:33 -0000
> @@ -3,7 +3,7 @@ COMMENT = Python bindings for The Sleuth
> MODPY_DISTV = 20200117
> DISTNAME = pytsk3-${MODPY_DISTV}
> PKGNAME = py-tsk-${MODPY_DISTV}
> -REVISION = 7
> +REVISION = 8
>
> CATEGORIES = sysutils
>
> @@ -21,7 +21,7 @@ MODULES += gnu
> MODPY_PI = Yes
> MODPY_PYBUILD = setuptools
>
> -WANTLIB += pthread talloc tsk ${MODPY_WANTLIB}
> +WANTLIB += talloc tsk ${MODPY_WANTLIB}
>
> # C++11
> COMPILER= ports-clang ports-gcc
> Index: www/iridium/Makefile
> ===================================================================
> RCS file: /cvs/ports/www/iridium/Makefile,v
> diff -u -p -u -r1.215 Makefile
> --- www/iridium/Makefile 6 Jan 2025 20:10:47 -0000 1.215
> +++ www/iridium/Makefile 13 Jan 2025 19:52:35 -0000
> @@ -18,6 +18,8 @@ DISTNAME= iridium-browser-${V}
> PKGNAME= iridium-${V}
> DISTFILES+= ${IRIDIUM_DISTFILES}
>
> +REVISION= 0
> +
> IRIDIUM_DISTFILES+= ${DISTNAME}${EXTRACT_SUFX}
> EXTRACT_ONLY= ${IRIDIUM_DISTFILES}
>
> @@ -50,14 +52,14 @@ COMPILER= ports-clang
> # uses pledge()
> WANTLIB+= GL X11 Xau Xcomposite Xdamage Xdmcp Xext Xfixes Xft Xi Xrandr
> WANTLIB+= Xrender Xtst aom atk-1.0 atk-bridge-2.0 atspi c cairo
> -WANTLIB+= cbor crypto cups dav1d dbus-1 drm event execinfo expat ffi fido2
> -WANTLIB+= fontconfig freetype fribidi gbm gio-2.0 glib-2.0 gmodule-2.0
> -WANTLIB+= gobject-2.0 graphite2 gthread-2.0 harfbuzz harfbuzz-gobject
> -WANTLIB+= harfbuzz-subset iconv icudata icui18n icuuc intl jpeg kvm m
> -WANTLIB+= nspr4 nss3 nssutil3 openh264 opus pango-1.0 pangocairo-1.0
> -WANTLIB+= pangoft2-1.0 pcre2-8 pixman-1 plc4 plds4 png pthread pthread
> smime3
> -WANTLIB+= sndio usbhid util vpx xcb xcb-render xcb-shm xkbcommon xml2
> -WANTLIB+= xshmfence xslt z
> +WANTLIB+= cbor crypto cups dav1d dbus-1 drm epoll-shim event execinfo
> +WANTLIB+= expat ffi fido2 fontconfig freetype fribidi gbm gio-2.0 glib-2.0
> +WANTLIB+= gmodule-2.0 gobject-2.0 graphite2 gthread-2.0 harfbuzz
> +WANTLIB+= harfbuzz-gobject harfbuzz-subset icudata icui18n icuuc intl jpeg
> +WANTLIB+= kvm lzma m nspr4 nss3 nssutil3 openh264 opus pango-1.0
> +WANTLIB+= pangocairo-1.0 pangoft2-1.0 pcre2-8 pixman-1 plc4 plds4 png
> +WANTLIB+= pthread smime3 sndio udev usbhid util vpx xcb xcb-render xcb-shm
> +WANTLIB+= xkbcommon xml2 xshmfence xslt z
>
> RUN_DEPENDS= devel/xdg-utils \
> devel/desktop-file-utils \
> Index: www/ungoogled-chromium/Makefile
> ===================================================================
> RCS file: /cvs/ports/www/ungoogled-chromium/Makefile,v
> diff -u -p -u -r1.149 Makefile
> --- www/ungoogled-chromium/Makefile 6 Jan 2025 20:11:01 -0000 1.149
> +++ www/ungoogled-chromium/Makefile 13 Jan 2025 19:52:36 -0000
> @@ -13,7 +13,7 @@ COMMENT= Chromium browser sans integrat
>
> V= 131.0.6778.204
> UGV= ${V}-1
> -REVISION= 0
> +REVISION= 1
>
> DISTNAME= ungoogled-chromium-${V}
>
>