Summary: | WITHOUT_CLANG does not exclude SANITIZER_SHAREDIR from package file list | ||||||
---|---|---|---|---|---|---|---|
Product: | Base System | Reporter: | Siva Mahadevan <me> | ||||
Component: | bin | Assignee: | freebsd-pkgbase (Nobody) <pkgbase> | ||||
Status: | Closed FIXED | ||||||
Severity: | Affects Many People | CC: | dim, emaste, me, pkgbase | ||||
Priority: | --- | Flags: | linimon:
maintainer-feedback?
(pkgbase) |
||||
Version: | 14.0-STABLE | ||||||
Hardware: | Any | ||||||
OS: | Any | ||||||
Attachments: |
|
Description
Siva Mahadevan
2024-02-16 17:45:48 UTC
Hm, I don't see why only libclang_rt.asan-x86_64.so would be left? If you look at lib/Makefile, it descends into the lib/libclang_rt directory (which produces all the libclang_rt.* files, and the *_ignore_list.txt files), but it's only gated on the compiler type: # The libraries under libclang_rt can only be built by clang. .if ${COMPILER_TYPE} == "clang" _libclang_rt= libclang_rt .elif (${MK_ASAN} != "no" || ${MK_UBSAN} != "no") && make(all) .error Requested build with sanitizers but cannot build runtime libraries! .endif Ed, would we also need a test for MK_CLANG==no here? E.g.: .if ${COMPILER_TYPE} == "clang" && ${MK_CLANG} != "no" _libclang_rt= libclang_rt .elif (${MK_ASAN} != "no" || ${MK_UBSAN} != "no") && make(all) .error Requested build with sanitizers but cannot build runtime libraries! .endif Created attachment 248805 [details]
[PATCH] libclang_rt: avoid packaging share files when MK_CLANG=no
Testing your fix worked for me and seems reasonable. I'm including your fix as an attached patch for better visibility.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/src/commit/?id=514773a5486d1fa4f2d5acb5af1766965c20765b commit 514773a5486d1fa4f2d5acb5af1766965c20765b Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2024-04-25 15:05:29 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2024-04-25 15:05:29 +0000 Skip building libclang_rt when WITHOUT_CLANG is used As noted in bug 277096, when building a pkgbase repository using WITHOUT_CROSS_COMPILER and WITHOUT_TOOLCHAIN (which sets WITHOUT_CLANG), the following residual files are left over: /usr/lib/clang/18/lib/freebsd/libclang_rt.asan-x86_64.so /usr/lib/clang/18/share/asan_ignore_list.txt /usr/lib/clang/18/share/cfi_ignore_list.txt /usr/lib/clang/18/share/msan_ignore_list.txt This is because the lib/libclang_rt directory is still descended into, even if WITHOUT_CLANG is used. Fix it by not descending into the libclang_rt directory in that case. PR: 277096 Reported by: Siva Mahadevan <me@svmhdvn.name> MFC after: 3 days lib/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) A commit in branch stable/14 references this bug: URL: https://cgit.FreeBSD.org/src/commit/?id=9e6098a91168e4c90f6d38295f2876fe0e0fe190 commit 9e6098a91168e4c90f6d38295f2876fe0e0fe190 Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2024-04-25 15:05:29 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2024-04-28 08:03:37 +0000 Skip building libclang_rt when WITHOUT_CLANG is used As noted in bug 277096, when building a pkgbase repository using WITHOUT_CROSS_COMPILER and WITHOUT_TOOLCHAIN (which sets WITHOUT_CLANG), the following residual files are left over: /usr/lib/clang/18/lib/freebsd/libclang_rt.asan-x86_64.so /usr/lib/clang/18/share/asan_ignore_list.txt /usr/lib/clang/18/share/cfi_ignore_list.txt /usr/lib/clang/18/share/msan_ignore_list.txt This is because the lib/libclang_rt directory is still descended into, even if WITHOUT_CLANG is used. Fix it by not descending into the libclang_rt directory in that case. PR: 277096 Reported by: Siva Mahadevan <me@svmhdvn.name> MFC after: 3 days (cherry picked from commit 514773a5486d1fa4f2d5acb5af1766965c20765b) lib/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) |