<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>59222</bug_id>
          
          <creation_ts>2026-05-16 12:50:17 +0300</creation_ts>
          <short_desc>Поддержка сборки ядра с помощью LLVM/clang</short_desc>
          <delta_ts>2026-05-16 12:50:25 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>kernel-build-tools</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>59221</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</reporter>
          <assigned_to name="Anton V. Boyarshinov">boyarsh</assigned_to>
          <cc>boyarsh</cc>
    
    <cc>glebfm</cc>
    
    <cc>kernelbot</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>rider</cc>
    
    <cc>sbolshakov</cc>
    
    <cc>shrek</cc>
    
    <cc>sin</cc>
    
    <cc>vitty</cc>
    
    <cc>vsu</cc>
    
    <cc>vt</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>287604</commentid>
    <comment_count>0</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2026-05-16 12:50:17 +0300</bug_when>
    <thetext>В общем и целом ядро собирается с минимальными правками исходного .spec:

- необходимо указать версию llvm, если используется отличная от версии по-умолчанию
- необходимо выставить переменную ALTWRAP_LLVM_VERSION=%{llvm_version} в %build если используется версия llvm, отличная от версии по умолчанию
- необходимо выставить переменную LLVM=1 в %build перед сборкой ядра
- в сборочные зависимости требуется clang, llvm-devel и lld + обновленные elfutils (см. https://bugzilla.altlinux.org/59221).

Для сборки модулей как минимум нужны следующие действия

- сборочные зависимости должны автоматически подтянуть clang, llvm-devel и lld нужных версий.
- в %build должны быть определены переменные LLVM или CC/LD/OBJDUMP (заметил при  сборке модулей nvidia).

Как это делать вопрос открытый, для сборочных зависимостей можно просто расширить макрос setup_kernel_module() добавив туда проверку на включение clang&apos;а:

@@ -172,7 +173,8 @@ done \
     %{?!kepoch: %global kepoch %nil} \
     %{?!kversion: %global kversion %nil} \
     %{?!krelease: %global krelease %nil} \
-    %setup_kernel_module_from_globals
+    %setup_kernel_module_from_globals \
+    %setup_llvm_packages
 %setup_kernel_module_from_globals() \
     %global kbuildrelease %( a=&quot;%{krelease}&quot;; echo &quot;${a#alt}&quot;) \
     %global kcode %_kernel_version_code %kversion \
@@ -183,6 +185,19 @@ BuildRequires: kernel-headers-modules-%kflavour = %{?kepoch}%kversion-%krelease
 # For writing Requires in modules:
 %requires_kimage %{?kimage:Requires(pre,postun): %kimage}
 
+%setup_llvm_packages() \
+%{?!_with_clang: %global _with_clang %nil} \
+%{?!llvm_version: %global llvm_version %nil} \
+%{?_with_clang:BuildRequires: llvm%{llvm_version} lld%{llvm_version}}

(версия llvm_version может выставлена где-то глобально)

для %build сложнее, тут либо нужно переопределить %make_build либо сделать отдельный макрос где выставляются все нужные переменные:

+%setup_llvm_env() \
+%{?_with_clang:\
+export ALTWRAP_LLVM_VERSION=%{llvm_version} \
+export LLVM=1 \
+export CC=clang \
+export LD=ld.lld \
+export OBJDUMP=llvm-objdump}</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>