On Mon, 13 Jan 2025 21:25:09 +0000, k...@intricatesoftware.com 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 <rsadow...@openbsd.org> > 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} > >