From 8969889762abbbd0f6b1525f984315a9c3a676b4049afde1de7ac21b89805df7 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Sat, 17 Apr 2021 18:19:08 +0000 Subject: [PATCH] Accepting request 886349 from home:aaronpuchert:llvm-next - Move osmesa build back to Mesa, which we can now do after choosing another dummy driver there. - Use LLVM-versioned libclc runtime dependency to ensure bitcode compatibility. We have that in Tumbleweed and soon Leap. - U_clover-Fix-build-with-llvm-12.patch * Fixes build with LLVM 12. - U_clover-Add-missing-include-for-llvm-12-build-fix.patch * Fixes a missing header in the previous patch. - Move osmesa build back to Mesa, which we can now do after choosing another dummy driver there. - Use LLVM-versioned libclc runtime dependency to ensure bitcode compatibility. We have that in Tumbleweed and soon Leap. - U_clover-Fix-build-with-llvm-12.patch * Fixes build with LLVM 12. - U_clover-Add-missing-include-for-llvm-12-build-fix.patch * Fixes a missing header in the previous patch. OBS-URL: https://build.opensuse.org/request/show/886349 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=1032 --- Mesa-drivers.changes | 12 +++ Mesa-drivers.spec | 37 ++++---- Mesa.changes | 12 +++ Mesa.spec | 37 ++++---- ...issing-include-for-llvm-12-build-fix.patch | 28 ++++++ U_clover-Fix-build-with-llvm-12.patch | 90 +++++++++++++++++++ 6 files changed, 184 insertions(+), 32 deletions(-) create mode 100644 U_clover-Add-missing-include-for-llvm-12-build-fix.patch create mode 100644 U_clover-Fix-build-with-llvm-12.patch diff --git a/Mesa-drivers.changes b/Mesa-drivers.changes index 38bcd62..b15f3f4 100644 --- a/Mesa-drivers.changes +++ b/Mesa-drivers.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Sat Apr 17 16:41:33 UTC 2021 - Aaron Puchert + +- Move osmesa build back to Mesa, which we can now do after + choosing another dummy driver there. +- Use LLVM-versioned libclc runtime dependency to ensure + bitcode compatibility. We have that in Tumbleweed and soon Leap. +- U_clover-Fix-build-with-llvm-12.patch + * Fixes build with LLVM 12. +- U_clover-Add-missing-include-for-llvm-12-build-fix.patch + * Fixes a missing header in the previous patch. + ------------------------------------------------------------------- Sat Apr 17 14:39:04 UTC 2021 - Stefan Dirsch diff --git a/Mesa-drivers.spec b/Mesa-drivers.spec index dc5df94..807cfbe 100644 --- a/Mesa-drivers.spec +++ b/Mesa-drivers.spec @@ -128,6 +128,8 @@ Patch2: n_add-Mesa-headers-again.patch Patch54: n_drirc-disable-rgb10-for-chromium-on-amd.patch Patch58: u_dep_xcb.patch Patch100: U_fix-mpeg1_2-decode-mesa-20.2.patch +Patch101: U_clover-Fix-build-with-llvm-12.patch +Patch102: U_clover-Add-missing-include-for-llvm-12-build-fix.patch BuildRequires: bison BuildRequires: fdupes BuildRequires: flex @@ -269,6 +271,7 @@ Requires: Mesa-libGL-devel = %{version} Requires: Mesa-libGLESv1_CM-devel = %{version} Requires: Mesa-libGLESv2-devel = %{version} Requires: Mesa-libglapi-devel = %{version} +Requires: libOSMesa-devel = %{version} Requires: libgbm-devel Provides: Mesa-devel-static = %{version} Provides: xorg-x11-Mesa-devel = %{version} @@ -615,7 +618,11 @@ This package contains the VDPAU state tracker for radeonsi. %package -n Mesa-libOpenCL Summary: Mesa OpenCL implementation Group: System/Libraries +%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150300 +Requires: libclc(llvm%{_llvm_sonum}) +%else Requires: libclc +%endif %description -n Mesa-libOpenCL This package contains the Mesa OpenCL implementation or GalliumCompute. @@ -709,6 +716,8 @@ rm -rf docs/README.{VMS,WIN32,OS2} %patch54 -p1 %patch58 -p1 %patch100 -p1 +%patch101 -p1 +%patch102 -p1 # Remove requires to vulkan libs from baselibs.conf on platforms # where vulkan build is disabled; ugly ... @@ -733,13 +742,13 @@ egl_platforms=x11,wayland -Dgles2=false \ -Degl=true \ -Dglx=disabled \ - -Dosmesa=true \ + -Dosmesa=false \ %else -Dglvnd=true \ -Dgles1=true \ -Dgles2=true \ -Degl=true \ - -Dosmesa=false \ + -Dosmesa=true \ -Dglx=auto \ -Dllvm=false \ -Dvulkan-drivers= \ @@ -856,11 +865,6 @@ rm -rf %{buildroot}/%{_includedir}/KHR # workaround needed since Mesa 19.0.2 rm -f %{buildroot}/%{_libdir}/vdpau/libvdpau_gallium.so -# for some reason osmesa.h is missing after installation -mkdir -p -m 755 %{buildroot}/%{_includedir}/GL -install -m 644 include/GL/osmesa.h \ - %{buildroot}/%{_includedir}/GL/osmesa.h - %else rm -f %{buildroot}/%{_libdir}/dri/*_dri.so @@ -950,6 +954,7 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen %files libGL-devel %dir %{_includedir}/GL %{_includedir}/GL/*.h +%exclude %{_includedir}/GL/osmesa.h %{_libdir}/pkgconfig/gl.pc %{_mandir}/man3/gl[A-Z]* @@ -964,6 +969,15 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen %files libGLESv3-devel %{_includedir}/GLES3 +%files -n libOSMesa8 +%{_libdir}/libOSMesa.so.8.0.0 +%{_libdir}/libOSMesa.so.8 + +%files -n libOSMesa-devel +%{_includedir}/GL/osmesa.h +%{_libdir}/libOSMesa.so +%{_libdir}/pkgconfig/osmesa.pc + %files -n libgbm1 %{_libdir}/libgbm.so.1* @@ -974,15 +988,6 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen %endif %if %{drivers} -%files -n libOSMesa8 -%{_libdir}/libOSMesa.so.8.0.0 -%{_libdir}/libOSMesa.so.8 - -%files -n libOSMesa-devel -%{_includedir}/GL/osmesa.h -%{_libdir}/libOSMesa.so -%{_libdir}/pkgconfig/osmesa.pc - %ifarch aarch64 %{ix86} x86_64 %{arm} ppc64 ppc64le riscv64 %files -n libxatracker2 %{_libdir}/libxatracker.so.2* diff --git a/Mesa.changes b/Mesa.changes index 38bcd62..b15f3f4 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Sat Apr 17 16:41:33 UTC 2021 - Aaron Puchert + +- Move osmesa build back to Mesa, which we can now do after + choosing another dummy driver there. +- Use LLVM-versioned libclc runtime dependency to ensure + bitcode compatibility. We have that in Tumbleweed and soon Leap. +- U_clover-Fix-build-with-llvm-12.patch + * Fixes build with LLVM 12. +- U_clover-Add-missing-include-for-llvm-12-build-fix.patch + * Fixes a missing header in the previous patch. + ------------------------------------------------------------------- Sat Apr 17 14:39:04 UTC 2021 - Stefan Dirsch diff --git a/Mesa.spec b/Mesa.spec index 48e20a8..5b47b4a 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -127,6 +127,8 @@ Patch2: n_add-Mesa-headers-again.patch Patch54: n_drirc-disable-rgb10-for-chromium-on-amd.patch Patch58: u_dep_xcb.patch Patch100: U_fix-mpeg1_2-decode-mesa-20.2.patch +Patch101: U_clover-Fix-build-with-llvm-12.patch +Patch102: U_clover-Add-missing-include-for-llvm-12-build-fix.patch BuildRequires: bison BuildRequires: fdupes BuildRequires: flex @@ -268,6 +270,7 @@ Requires: Mesa-libGL-devel = %{version} Requires: Mesa-libGLESv1_CM-devel = %{version} Requires: Mesa-libGLESv2-devel = %{version} Requires: Mesa-libglapi-devel = %{version} +Requires: libOSMesa-devel = %{version} Requires: libgbm-devel Provides: Mesa-devel-static = %{version} Provides: xorg-x11-Mesa-devel = %{version} @@ -614,7 +617,11 @@ This package contains the VDPAU state tracker for radeonsi. %package -n Mesa-libOpenCL Summary: Mesa OpenCL implementation Group: System/Libraries +%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150300 +Requires: libclc(llvm%{_llvm_sonum}) +%else Requires: libclc +%endif %description -n Mesa-libOpenCL This package contains the Mesa OpenCL implementation or GalliumCompute. @@ -708,6 +715,8 @@ rm -rf docs/README.{VMS,WIN32,OS2} %patch54 -p1 %patch58 -p1 %patch100 -p1 +%patch101 -p1 +%patch102 -p1 # Remove requires to vulkan libs from baselibs.conf on platforms # where vulkan build is disabled; ugly ... @@ -732,13 +741,13 @@ egl_platforms=x11,wayland -Dgles2=false \ -Degl=true \ -Dglx=disabled \ - -Dosmesa=true \ + -Dosmesa=false \ %else -Dglvnd=true \ -Dgles1=true \ -Dgles2=true \ -Degl=true \ - -Dosmesa=false \ + -Dosmesa=true \ -Dglx=auto \ -Dllvm=false \ -Dvulkan-drivers= \ @@ -855,11 +864,6 @@ rm -rf %{buildroot}/%{_includedir}/KHR # workaround needed since Mesa 19.0.2 rm -f %{buildroot}/%{_libdir}/vdpau/libvdpau_gallium.so -# for some reason osmesa.h is missing after installation -mkdir -p -m 755 %{buildroot}/%{_includedir}/GL -install -m 644 include/GL/osmesa.h \ - %{buildroot}/%{_includedir}/GL/osmesa.h - %else rm -f %{buildroot}/%{_libdir}/dri/*_dri.so @@ -949,6 +953,7 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen %files libGL-devel %dir %{_includedir}/GL %{_includedir}/GL/*.h +%exclude %{_includedir}/GL/osmesa.h %{_libdir}/pkgconfig/gl.pc %{_mandir}/man3/gl[A-Z]* @@ -963,6 +968,15 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen %files libGLESv3-devel %{_includedir}/GLES3 +%files -n libOSMesa8 +%{_libdir}/libOSMesa.so.8.0.0 +%{_libdir}/libOSMesa.so.8 + +%files -n libOSMesa-devel +%{_includedir}/GL/osmesa.h +%{_libdir}/libOSMesa.so +%{_libdir}/pkgconfig/osmesa.pc + %files -n libgbm1 %{_libdir}/libgbm.so.1* @@ -973,15 +987,6 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen %endif %if %{drivers} -%files -n libOSMesa8 -%{_libdir}/libOSMesa.so.8.0.0 -%{_libdir}/libOSMesa.so.8 - -%files -n libOSMesa-devel -%{_includedir}/GL/osmesa.h -%{_libdir}/libOSMesa.so -%{_libdir}/pkgconfig/osmesa.pc - %ifarch aarch64 %{ix86} x86_64 %{arm} ppc64 ppc64le riscv64 %files -n libxatracker2 %{_libdir}/libxatracker.so.2* diff --git a/U_clover-Add-missing-include-for-llvm-12-build-fix.patch b/U_clover-Add-missing-include-for-llvm-12-build-fix.patch new file mode 100644 index 0000000..6d5a3a8 --- /dev/null +++ b/U_clover-Add-missing-include-for-llvm-12-build-fix.patch @@ -0,0 +1,28 @@ +From f0dccd957879ff642cfd921dda6e8b04dd35fec4 Mon Sep 17 00:00:00 2001 +From: Karol Herbst +Date: Tue, 2 Mar 2021 20:09:39 +0100 +Subject: [PATCH] clover: Add missing include for llvm-12 build fix + +Fixes: d1eab2b1eb1 ("clover: Fix build with llvm-12.") +Signed-off-by: Karol Herbst +Reviewed-by: Francisco Jerez +Part-of: +--- + src/gallium/frontends/clover/llvm/compat.hpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/gallium/frontends/clover/llvm/compat.hpp b/src/gallium/frontends/clover/llvm/compat.hpp +index d537819f292..380d16a8346 100644 +--- a/src/gallium/frontends/clover/llvm/compat.hpp ++++ b/src/gallium/frontends/clover/llvm/compat.hpp +@@ -49,6 +49,7 @@ + + #include + #include ++#include + + #if LLVM_VERSION_MAJOR >= 10 + #include +-- +2.31.1 + diff --git a/U_clover-Fix-build-with-llvm-12.patch b/U_clover-Fix-build-with-llvm-12.patch new file mode 100644 index 0000000..41c743c --- /dev/null +++ b/U_clover-Fix-build-with-llvm-12.patch @@ -0,0 +1,90 @@ +From d1eab2b1eb1dec10197db7d25e27d97f6ca1a2ea Mon Sep 17 00:00:00 2001 +From: Karol Herbst +Date: Wed, 24 Feb 2021 12:44:41 +0100 +Subject: [PATCH] clover: Fix build with llvm-12. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fix build error after LLVM commit c495dfe0268b ("[clang][cli] NFC: +Decrease the scope of ParseLangArgs parameters"). + +../src/gallium/frontends/clover/llvm/invocation.cpp: In function ‘std::unique_ptr {anonymous}::create_compiler_instance(const clover::device&, const string&, const std::vector >&, std::string&)’: +../src/gallium/frontends/clover/llvm/invocation.cpp:252:55: error: cannot convert ‘clang::PreprocessorOptions’ to ‘std::vector >&’ + 252 | c->getPreprocessorOpts(), + | ~~~~~~~~~~~~~~~~~~~~~~^~ + | | + | clang::PreprocessorOptions + +Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4114 +Signed-off-by: Karol Herbst +Reviewed-by: Francisco Jerez +Part-of: +--- + src/gallium/frontends/clover/llvm/compat.hpp | 22 +++++++++++++++---- + .../frontends/clover/llvm/invocation.cpp | 5 ++--- + 2 files changed, 20 insertions(+), 7 deletions(-) + +diff --git a/src/gallium/frontends/clover/llvm/compat.hpp b/src/gallium/frontends/clover/llvm/compat.hpp +index 78eb8c982a8..d537819f292 100644 +--- a/src/gallium/frontends/clover/llvm/compat.hpp ++++ b/src/gallium/frontends/clover/llvm/compat.hpp +@@ -38,14 +38,14 @@ + + #include + ++#include ++#include ++#include + #include + #include ++#include + #include + #include +-#include +- +-#include +-#include + + #include + #include +@@ -88,6 +88,20 @@ namespace clover { + cinv, copts.data(), copts.data() + copts.size(), diag); + #endif + } ++ ++ static inline void ++ compiler_set_lang_defaults(std::unique_ptr &c, ++ clang::InputKind ik, const ::llvm::Triple& triple, ++ clang::LangStandard::Kind d) ++ { ++ c->getInvocation().setLangDefaults(c->getLangOpts(), ik, triple, ++#if LLVM_VERSION_MAJOR >= 12 ++ c->getPreprocessorOpts().Includes, ++#else ++ c->getPreprocessorOpts(), ++#endif ++ d); ++ } + } + } + } +diff --git a/src/gallium/frontends/clover/llvm/invocation.cpp b/src/gallium/frontends/clover/llvm/invocation.cpp +index 536e952b100..30592e4343b 100644 +--- a/src/gallium/frontends/clover/llvm/invocation.cpp ++++ b/src/gallium/frontends/clover/llvm/invocation.cpp +@@ -247,9 +247,8 @@ namespace { + // http://www.llvm.org/bugs/show_bug.cgi?id=19735 + c->getDiagnosticOpts().ShowCarets = false; + +- c->getInvocation().setLangDefaults(c->getLangOpts(), +- compat::ik_opencl, ::llvm::Triple(target.triple), +- c->getPreprocessorOpts(), ++ compat::compiler_set_lang_defaults(c, compat::ik_opencl, ++ ::llvm::Triple(target.triple), + get_language_version(opts, device_clc_version)); + + c->createDiagnostics(new clang::TextDiagnosticPrinter( +-- +2.31.1 +