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 |
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
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
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 --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*"
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(-)