Bug 47780

Summary: Produce palatable build-id in clang-built executables
Product: Sisyphus Reporter: Arseny Maslennikov <arseny>
Component: clangAssignee: Arseny Maslennikov <arseny>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aen, arseny
Version: unstable   
Hardware: x86_64   
OS: Linux   
URL: https://lore.altlinux.org/devel/ZRS1KlTv1QQr0yvL@cello/
Bug Depends on:    
Bug Blocks: 46625    

Description Arseny Maslennikov 2023-09-28 20:51:35 MSK
On Sat, Sep 23, 2023 at 04:44:38PM +0700, Ilya Kurdyukov wrote:
> On 9/23/23 16:36, Dmitry V. Levin wrote:
> > >   > --ldflags=-Wl,--build-id=sha1
> > Этой истории уже много лет, поэтому удивительно, что где-то до сих пор
> > по умолчанию создаётся 64-битный build id.  С точки зрения репозитория
> > важно не столько, чтобы конкретный пакет был исправлен, сколько чтобы
> > этого не происходило по умолчанию.
> > 
> ghc (смотрел спеку 8.6.4) для armh/aarch64 собирается через LLVM:
> 
> * Thu Aug 17 2023 Anton Zhukharev <ancieg@altlinux.org> 8.6.4-alt9
> - Fixed FTBFS.
> - Built with llvm12.0 on armh and aarch64.
> - Stored LLVM version in %%ghc_llvm_version macro.
> 
> Это опции LLD, линковщика из LLVM:
> 
> --build-id=value
>     Generate a build ID note. value may be one of fast, md5, sha1, tree,
> uuid, 0xhex-string, and none. tree is an alias for sha1. Build-IDs of type
> fast, md5, sha1, and tree are calculated from the object contents. fast is
> not intended to be cryptographically secure.
> --build-id
>     Synonym for --build-id=fast.

Выяснилось, что собранные clang+lld бинарники вообще никакого build-id не содержат.
  % eu-readelf -n $(command -v make) | grep -cFA4 .note.gnu.build-id
  1
  % eu-readelf -n $(command -v clangd-17) | grep -cFA4 .note.gnu.build-id
  0

	«– Как же, позвольте?.. Он же служил в очистке...»

Пусть clang, используемый для сборки пакетов, передаёт линкеру --build-id=sha1 (именно так, чтобы все возможные линкеры поняли, что от них требуется).
Comment 1 Repository Robot 2023-10-01 19:13:53 MSK
llvm17.0-17.0.1-alt3 -> sisyphus:

 Thu Sep 28 2023 Arseny Maslennikov <arseny@altlinux> 17.0.1-alt3
 - clang: Restore the default disposition of -grecord-command-line.
 - clang: Pass --build-id=sha1 to linkers by default. (Closes: 47780)
   Both of these changes are applied to clangs we build ALT packages with; if we
   ever decouple clang-for-packages from clang-for-users, upstream behaviour can
   be restored for the latter.
 Mon Sep 25 2023 Arseny Maslennikov <arseny@altlinux> 17.0.1-alt2
 - Readjusted CMake file validation fixes.
Comment 2 AEN 2023-10-01 19:18:46 MSK
Спасибо!