diff mbox series

[v2] clang: Include the libclang python bindings in the build

Message ID 20250519083344.1646432-1-luca.fancellu@arm.com
State New
Headers show
Series [v2] clang: Include the libclang python bindings in the build | expand

Commit Message

Luca Fancellu May 19, 2025, 8:33 a.m. UTC
Modify the clang recipe to provide also the python module
'clang' when building libclang.

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
v2 changes:
 - used PACKAGECONFIG and default on
---
 meta/recipes-devtools/clang/clang_git.bb | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Quentin Schulz May 19, 2025, 10:43 a.m. UTC | #1
Hi Luca,

On 5/19/25 10:33 AM, luca fancellu via lists.openembedded.org wrote:
> Modify the clang recipe to provide also the python module
> 'clang' when building libclang.
> 
> Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
> ---
> v2 changes:
>   - used PACKAGECONFIG and default on
> ---
>   meta/recipes-devtools/clang/clang_git.bb | 7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb
> index b41b700292c7..42f52af4056e 100644
> --- a/meta/recipes-devtools/clang/clang_git.bb
> +++ b/meta/recipes-devtools/clang/clang_git.bb
> @@ -49,7 +49,7 @@ def get_clang_host_arch(bb, d):
>   def get_clang_target_arch(bb, d):
>       return get_clang_arch(bb, d, 'TARGET_ARCH')
>   
> -PACKAGECONFIG_CLANG_COMMON = "build-id eh libedit rtti shared-libs \
> +PACKAGECONFIG_CLANG_COMMON = "build-id eh libedit rtti shared-libs libclang-python \
>                                 ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcplusplus libomp unwindlib', '', d)} \
>                                 "
>   
> @@ -90,6 +90,7 @@ PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=O
>   PACKAGECONFIG[terminfo] = "-DLLVM_ENABLE_TERMINFO=ON -DCOMPILER_RT_TERMINFO_LIB=ON,-DLLVM_ENABLE_TERMINFO=OFF -DCOMPILER_RT_TERMINFO_LIB=OFF,ncurses,"
>   PACKAGECONFIG[thin-lto] = "-DLLVM_ENABLE_LTO=Thin -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
>   PACKAGECONFIG[unwindlib] = "-DCLANG_DEFAULT_UNWINDLIB=libunwind,-DCLANG_DEFAULT_UNWINDLIB=libgcc,,"
> +PACKAGECONFIG[libclang-python] = "-DCLANG_PYTHON_BINDINGS_VERSIONS=${PYTHON_BASEVERSION},,"
>   
>   OECMAKE_SOURCEPATH = "${S}/llvm"
>   
> @@ -312,7 +313,7 @@ PROVIDES:append:class-native = " llvm-native libclc-native"
>   PROVIDES:append:class-target = " llvm libclc"
>   PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc"
>   
> -PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc \
> +PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc \
>                libclang lldb lldb-server liblldb llvm-linker-tools"
>   
>   
> @@ -342,6 +343,8 @@ FILES:${PN}-libclang-cpp = "${libdir}/libclang-cpp.so.*"
>   
>   FILES:${PN}-lldb-python = "${libdir}/python*/site-packages/lldb/*"
>   
> +FILES:${PN}-libclang-python = "${libdir}/python*/site-packages/clang/*"
> +

Wondering if we cannot use ${PYTHON_SITEPACKAGES_DIR}/clang/* here from 
python3-dir.bbclass? (same for lldb-python and do_install:append()?).

Cheers,
Quentin
Luca Fancellu May 19, 2025, 10:46 a.m. UTC | #2
Hi Quentin,

> On 19 May 2025, at 11:43, Quentin Schulz <quentin.schulz@cherry.de> wrote:
> 
> Hi Luca,
> 
> On 5/19/25 10:33 AM, luca fancellu via lists.openembedded.org wrote:
>> Modify the clang recipe to provide also the python module
>> 'clang' when building libclang.
>> Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
>> ---
>> v2 changes:
>>  - used PACKAGECONFIG and default on
>> ---
>>  meta/recipes-devtools/clang/clang_git.bb | 7 +++++--
>>  1 file changed, 5 insertions(+), 2 deletions(-)
>> diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb
>> index b41b700292c7..42f52af4056e 100644
>> --- a/meta/recipes-devtools/clang/clang_git.bb
>> +++ b/meta/recipes-devtools/clang/clang_git.bb
>> @@ -49,7 +49,7 @@ def get_clang_host_arch(bb, d):
>>  def get_clang_target_arch(bb, d):
>>      return get_clang_arch(bb, d, 'TARGET_ARCH')
>>  -PACKAGECONFIG_CLANG_COMMON = "build-id eh libedit rtti shared-libs \
>> +PACKAGECONFIG_CLANG_COMMON = "build-id eh libedit rtti shared-libs libclang-python \
>>                                ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcplusplus libomp unwindlib', '', d)} \
>>                                "
>>  @@ -90,6 +90,7 @@ PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=O
>>  PACKAGECONFIG[terminfo] = "-DLLVM_ENABLE_TERMINFO=ON -DCOMPILER_RT_TERMINFO_LIB=ON,-DLLVM_ENABLE_TERMINFO=OFF -DCOMPILER_RT_TERMINFO_LIB=OFF,ncurses,"
>>  PACKAGECONFIG[thin-lto] = "-DLLVM_ENABLE_LTO=Thin -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
>>  PACKAGECONFIG[unwindlib] = "-DCLANG_DEFAULT_UNWINDLIB=libunwind,-DCLANG_DEFAULT_UNWINDLIB=libgcc,,"
>> +PACKAGECONFIG[libclang-python] = "-DCLANG_PYTHON_BINDINGS_VERSIONS=${PYTHON_BASEVERSION},,"
>>    OECMAKE_SOURCEPATH = "${S}/llvm"
>>  @@ -312,7 +313,7 @@ PROVIDES:append:class-native = " llvm-native libclc-native"
>>  PROVIDES:append:class-target = " llvm libclc"
>>  PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc"
>>  -PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc \
>> +PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc \
>>               libclang lldb lldb-server liblldb llvm-linker-tools"
>>    @@ -342,6 +343,8 @@ FILES:${PN}-libclang-cpp = "${libdir}/libclang-cpp.so.*"
>>    FILES:${PN}-lldb-python = "${libdir}/python*/site-packages/lldb/*"
>>  +FILES:${PN}-libclang-python = "${libdir}/python*/site-packages/clang/*"
>> +
> 
> Wondering if we cannot use ${PYTHON_SITEPACKAGES_DIR}/clang/* here from python3-dir.bbclass? (same for lldb-python and do_install:append()?).

it would surely work, I can do the change on the bits I’m touching, but I’m not confident to change the rest,
is that ok for you?

Cheers,
Luca
Quentin Schulz May 19, 2025, 10:51 a.m. UTC | #3
Hi Luca,

On 5/19/25 12:46 PM, Luca Fancellu wrote:
> Hi Quentin,
> 
>> On 19 May 2025, at 11:43, Quentin Schulz <quentin.schulz@cherry.de> wrote:
>>
>> Hi Luca,
>>
>> On 5/19/25 10:33 AM, luca fancellu via lists.openembedded.org wrote:
>>> Modify the clang recipe to provide also the python module
>>> 'clang' when building libclang.
>>> Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
>>> ---
>>> v2 changes:
>>>   - used PACKAGECONFIG and default on
>>> ---
>>>   meta/recipes-devtools/clang/clang_git.bb | 7 +++++--
>>>   1 file changed, 5 insertions(+), 2 deletions(-)
>>> diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb
>>> index b41b700292c7..42f52af4056e 100644
>>> --- a/meta/recipes-devtools/clang/clang_git.bb
>>> +++ b/meta/recipes-devtools/clang/clang_git.bb
>>> @@ -49,7 +49,7 @@ def get_clang_host_arch(bb, d):
>>>   def get_clang_target_arch(bb, d):
>>>       return get_clang_arch(bb, d, 'TARGET_ARCH')
>>>   -PACKAGECONFIG_CLANG_COMMON = "build-id eh libedit rtti shared-libs \
>>> +PACKAGECONFIG_CLANG_COMMON = "build-id eh libedit rtti shared-libs libclang-python \
>>>                                 ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcplusplus libomp unwindlib', '', d)} \
>>>                                 "
>>>   @@ -90,6 +90,7 @@ PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=O
>>>   PACKAGECONFIG[terminfo] = "-DLLVM_ENABLE_TERMINFO=ON -DCOMPILER_RT_TERMINFO_LIB=ON,-DLLVM_ENABLE_TERMINFO=OFF -DCOMPILER_RT_TERMINFO_LIB=OFF,ncurses,"
>>>   PACKAGECONFIG[thin-lto] = "-DLLVM_ENABLE_LTO=Thin -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
>>>   PACKAGECONFIG[unwindlib] = "-DCLANG_DEFAULT_UNWINDLIB=libunwind,-DCLANG_DEFAULT_UNWINDLIB=libgcc,,"
>>> +PACKAGECONFIG[libclang-python] = "-DCLANG_PYTHON_BINDINGS_VERSIONS=${PYTHON_BASEVERSION},,"
>>>     OECMAKE_SOURCEPATH = "${S}/llvm"
>>>   @@ -312,7 +313,7 @@ PROVIDES:append:class-native = " llvm-native libclc-native"
>>>   PROVIDES:append:class-target = " llvm libclc"
>>>   PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc"
>>>   -PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc \
>>> +PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc \
>>>                libclang lldb lldb-server liblldb llvm-linker-tools"
>>>     @@ -342,6 +343,8 @@ FILES:${PN}-libclang-cpp = "${libdir}/libclang-cpp.so.*"
>>>     FILES:${PN}-lldb-python = "${libdir}/python*/site-packages/lldb/*"
>>>   +FILES:${PN}-libclang-python = "${libdir}/python*/site-packages/clang/*"
>>> +
>>
>> Wondering if we cannot use ${PYTHON_SITEPACKAGES_DIR}/clang/* here from python3-dir.bbclass? (same for lldb-python and do_install:append()?).
> 
> it would surely work, I can do the change on the bits I’m touching, but I’m not confident to change the rest,
> is that ok for you?
> 

It's a good start :)

PYTHON_SITEPACKAGES_DIR has a harcoded python version, so I hope that 
this is fine. I assume this shouldn't be an issue for the native class 
as we don't generate packages for the native class anyway if I remember 
correctly (considering that I'm not sure whether we take python from the 
host (as it is an actual dependency of BitBake already) or from the 
native sysroot). So, the change in do_install:append() is probably not 
the best idea for that reason.

Cheers,
Quentin
diff mbox series

Patch

diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb
index b41b700292c7..42f52af4056e 100644
--- a/meta/recipes-devtools/clang/clang_git.bb
+++ b/meta/recipes-devtools/clang/clang_git.bb
@@ -49,7 +49,7 @@  def get_clang_host_arch(bb, d):
 def get_clang_target_arch(bb, d):
     return get_clang_arch(bb, d, 'TARGET_ARCH')
 
-PACKAGECONFIG_CLANG_COMMON = "build-id eh libedit rtti shared-libs \
+PACKAGECONFIG_CLANG_COMMON = "build-id eh libedit rtti shared-libs libclang-python \
                               ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcplusplus libomp unwindlib', '', d)} \
                               "
 
@@ -90,6 +90,7 @@  PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=O
 PACKAGECONFIG[terminfo] = "-DLLVM_ENABLE_TERMINFO=ON -DCOMPILER_RT_TERMINFO_LIB=ON,-DLLVM_ENABLE_TERMINFO=OFF -DCOMPILER_RT_TERMINFO_LIB=OFF,ncurses,"
 PACKAGECONFIG[thin-lto] = "-DLLVM_ENABLE_LTO=Thin -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
 PACKAGECONFIG[unwindlib] = "-DCLANG_DEFAULT_UNWINDLIB=libunwind,-DCLANG_DEFAULT_UNWINDLIB=libgcc,,"
+PACKAGECONFIG[libclang-python] = "-DCLANG_PYTHON_BINDINGS_VERSIONS=${PYTHON_BASEVERSION},,"
 
 OECMAKE_SOURCEPATH = "${S}/llvm"
 
@@ -312,7 +313,7 @@  PROVIDES:append:class-native = " llvm-native libclc-native"
 PROVIDES:append:class-target = " llvm libclc"
 PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc"
 
-PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc \
+PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools ${PN}-clc \
              libclang lldb lldb-server liblldb llvm-linker-tools"
 
 
@@ -342,6 +343,8 @@  FILES:${PN}-libclang-cpp = "${libdir}/libclang-cpp.so.*"
 
 FILES:${PN}-lldb-python = "${libdir}/python*/site-packages/lldb/*"
 
+FILES:${PN}-libclang-python = "${libdir}/python*/site-packages/clang/*"
+
 FILES:${PN}-tidy = "${bindir}/*clang-tidy*"
 FILES:${PN}-format = "${bindir}/*clang-format*"