diff --git a/Mesa.changes b/Mesa.changes index 262491f..3d2662f 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,30 @@ +------------------------------------------------------------------- +Sun Jun 23 00:24:07 UTC 2024 - Soc Virnyl Estela + +- Specfile cleanup + * copy rust crate sources into subprojects folder + * remove supplements. nvk is still new +- Specfile changes for Rust crates. Also added this to README-suse-maintenance.md + * Since Rust crates are not installed or discouraged to be installed + as system dependencies because of the maintenance burden of being the + next crates.io, we will have to download the following crates as vendored + dependencies. Hence, do not be scared if the dependencies are done like + this To check new crates or update the versions, just go to the subprojects + folder and run `grep -r crates .` then set versions appropriately. + +------------------------------------------------------------------- +Fri Jun 21 08:41:10 UTC 2024 - Soc Virnyl Estela + +- Update baselibs.conf +- Build requires rust-cbindgen >= 0.25. However, this means + we cannot build libvulkan_nouveau on Leap. +- Enable libvulkan_nouveau including the following depencencies + * add rust crate paste-1.0.14.tar.gz + * add rust crate proc-macro2-1.0.70.tar.gz + * add rust crate quote-1.0.33.tar.gz + * add rust crate syn-2.0.39.tar.gz + * add rust crate unicode-ident-1.0.12.tar.gz + ------------------------------------------------------------------- Thu Jun 20 13:39:48 UTC 2024 - Stefan Dirsch diff --git a/Mesa.spec b/Mesa.spec index 8e6fefc..78c0c59 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -1,5 +1,5 @@ # -# spec file +# spec file for package Mesa # # Copyright (c) 2024 SUSE LLC # @@ -76,11 +76,19 @@ %define with_opencl 1 %ifarch %{ix86} x86_64 %define with_vulkan 1 + %if 0%{?suse_version} > 1600 + %define vulkan_drivers swrast,amd,intel,intel_hasvk,nouveau + %else %define vulkan_drivers swrast,amd,intel,intel_hasvk + %endif %endif %ifarch %{arm} aarch64 %define with_vulkan 1 + %if 0%{?suse_version} > 1600 + %define vulkan_drivers swrast,amd,broadcom,freedreno,intel,intel_hasvk,nouveau + %else %define vulkan_drivers swrast,amd,broadcom,freedreno,intel,intel_hasvk + %endif %endif %ifarch riscv64 %define with_vulkan 1 @@ -88,7 +96,7 @@ %endif %endif -%ifarch aarch64 %{arm} ppc64 ppc64le riscv64 s390x %{ix86} x86_64 +%ifarch aarch64 %{arm} ppc64 ppc64le riscv64 s390x %{ix86} x86_64 ix86 %define with_llvm 1 %endif @@ -129,6 +137,13 @@ %define with_vulkan 0 %endif +# NVK aka Vulkan Nouveau dependencies +%global _unicode_ident_crate_ver 1.0.12 +%global _syn_crate_ver 2.0.39 +%global _quote_crate_ver 1.0.33 +%global _proc_macro2_ver 1.0.70 +%global _paste_crate_ver 1.0.14 + Name: Mesa%{psuffix} Version: 24.1.2 Release: 0 @@ -137,13 +152,27 @@ License: MIT Group: System/Libraries URL: https://www.mesa3d.org #Git-Clone: git://anongit.freedesktop.org/mesa/mesa -Source: https://archive.mesa3d.org/%{_name_archive}-%{_version}.tar.xz +Source0: https://archive.mesa3d.org/%{_name_archive}-%{_version}.tar.xz Source1: https://archive.mesa3d.org/%{_name_archive}-%{_version}.tar.xz.sig -Source2: baselibs.conf -Source3: README.updates -Source4: manual-pages.tar.bz2 -Source6: Mesa-rpmlintrc -Source7: Mesa.keyring +# NVK aka Vulkan Nouveau dependencies +# Explainer: +# Since Rust crates are not installed or discouraged to be installed as system +# dependencies because of the maintenance burden of being the next crates.io, +# we will have to download the following crates as vendored dependencies. +# Hence, do not be scared if the dependencies are done like this +# To check new crates or update the versions, just go to the subprojects folder and +# run `grep -r crates .` then set versions appropriately. +Source2: http://crates.io/api/v1/crates/unicode-ident/%{_unicode_ident_crate_ver}/download#/unicode-ident-%{_unicode_ident_crate_ver}.tar.gz +Source3: http://crates.io/api/v1/crates/syn/%{_syn_crate_ver}/download#/syn-%{_syn_crate_ver}.tar.gz +Source4: http://crates.io/api/v1/crates/quote/%{_quote_crate_ver}/download#/quote-%{_quote_crate_ver}.tar.gz +Source5: http://crates.io/api/v1/crates/proc-macro2/%{_proc_macro2_ver}/download#/proc-macro2-%{_proc_macro2_ver}.tar.gz +Source6: http://crates.io/api/v1/crates/paste/%{_paste_crate_ver}/download#/paste-%{_paste_crate_ver}.tar.gz +Source7: baselibs.conf +Source8: README.updates +Source9: manual-pages.tar.bz2 +Source10: Mesa-rpmlintrc +Source11: Mesa.keyring +Source12: README-suse-maintenance.md Patch2: n_add-Mesa-headers-again.patch Patch11: u_0001-intel-genxml-Drop-from-__future__-import-annotations.patch Patch12: u_0002-intel-genxml-Add-a-untyped-OrderedDict-fallback-for-.patch @@ -269,6 +298,12 @@ BuildRequires: clang18-devel BuildRequires: libclc BuildRequires: pkgconfig(LLVMSPIRVLib) BuildRequires: pkgconfig(SPIRV-Tools) +# For NVK or libvulkan_nouveau.so +# Rust Cbindgen >=0.25 is required +# but it's only available on tumbleweed +%if 0%{?suse_version} > 1600 +BuildRequires: rust-cbindgen >= 0.25 +%endif %if 0%{with_rusticl} BuildRequires: rust BuildRequires: rust-bindgen @@ -690,6 +725,17 @@ Obsoletes: Mesa-libVulkan-devel < 22.0.0 %description -n libvulkan_intel This package contains the Vulkan parts for Mesa. +# Only available on Tumbleweed because of rust-cbindgen >= 1.25 requirement +%if 0%{?suse_version} > 1600 +%package -n libvulkan_nouveau +Summary: Mesa vulkan driver for NVK (Nouveau Vulkan) +Group: System/Libraries +Requires: Mesa-vulkan-device-select = %{version} + +%description -n libvulkan_nouveau +This package contains the Vulkan parts for Mesa. +%endif + %package -n libvulkan_radeon Summary: Mesa vulkan driver for AMD GPU Group: System/Libraries @@ -764,10 +810,18 @@ This package provides the development environment for compiling programs against the XA state tracker. %prep -%setup -q -n %{_name_archive}-%{_version} -b4 +%setup -q -n %{_name_archive}-%{_version} -b9 # remove some docs rm -rf docs/README.{VMS,WIN32,OS2} +# Rust crates to subprojects +mkdir -p subprojects/packagecache +cp %{SOURCE2} subprojects/packagecache/ +cp %{SOURCE3} subprojects/packagecache/ +cp %{SOURCE4} subprojects/packagecache/ +cp %{SOURCE5} subprojects/packagecache/ +cp %{SOURCE6} subprojects/packagecache/ + %patch -P 2 -p1 # fixes build against python 3.6 %patch -P 11 -p1 @@ -902,6 +956,7 @@ egl_platforms=x11,wayland %meson_build %install +export MESON_PACKAGE_CACHE_DIR="%{_sourcedir}" %meson_install find %{buildroot} -type f -name "*.la" -delete -print @@ -1234,6 +1289,17 @@ echo "The \"Mesa\" package does not have the ability to render, but is supplemen %{_libdir}/libvulkan_intel_hasvk.so %endif +%ifarch %{ix86} x86_64 aarch64 %{arm} +# Only available on Tumbleweed because of rust-cbindgen >= 1.25 requirement +%if 0%{?suse_version} > 1600 +%files -n libvulkan_nouveau +%{_libdir}/libvulkan_nouveau.so +%{_datadir}/vulkan/icd.d/nouveau_icd.*.json +%dir %{_datadir}/vulkan +%dir %{_datadir}/vulkan/icd.d +%endif +%endif + %files -n libvulkan_radeon %{_libdir}/libvulkan_radeon.so %dir %{_datadir}/vulkan diff --git a/README-suse-maintenance.md b/README-suse-maintenance.md new file mode 100644 index 0000000..4794faf --- /dev/null +++ b/README-suse-maintenance.md @@ -0,0 +1,8 @@ +Since Rust crates are not installed or discouraged to be installed +as system dependencies because of the maintenance burden of being the +next crates.io, we will have to download the following crates as vendored +dependencies. Hence, do not be scared if the dependencies are done like +this. + +To check new crates or update the versions, just go to the subprojects +folder and run `grep -r crates .` then set versions appropriately. diff --git a/baselibs.conf b/baselibs.conf index 2e31850..0f17ae4 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -85,6 +85,10 @@ libvulkan_intel requires "Mesa-vulkan-device-select- = " provides "Mesa-libVulkan-devel- = 22.0.0" obsoletes "Mesa-libVulkan-devel- < 22.0.0" +libvulkan_nouveau + targetarch aarch64 +/usr/share/vulkan/icd.d/nouveau_icd.*.json + targetarch x86_64 +/usr/share/vulkan/icd.d/nouveau_icd.*.json + requires "Mesa-vulkan-device-select- = " libvulkan_radeon targetarch aarch64 +/usr/share/vulkan/icd.d/radeon_icd.*.json targetarch ppc64 +/usr/share/vulkan/icd.d/radeon_icd.*.json diff --git a/paste-1.0.14.tar.gz b/paste-1.0.14.tar.gz new file mode 100644 index 0000000..4ea3423 --- /dev/null +++ b/paste-1.0.14.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c +size 18157 diff --git a/proc-macro2-1.0.70.tar.gz b/proc-macro2-1.0.70.tar.gz new file mode 100644 index 0000000..4ea00dd --- /dev/null +++ b/proc-macro2-1.0.70.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b +size 44343 diff --git a/quote-1.0.33.tar.gz b/quote-1.0.33.tar.gz new file mode 100644 index 0000000..fbeee89 --- /dev/null +++ b/quote-1.0.33.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae +size 28090 diff --git a/syn-2.0.39.tar.gz b/syn-2.0.39.tar.gz new file mode 100644 index 0000000..30e4b20 --- /dev/null +++ b/syn-2.0.39.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a +size 244129 diff --git a/unicode-ident-1.0.12.tar.gz b/unicode-ident-1.0.12.tar.gz new file mode 100644 index 0000000..d8939fd --- /dev/null +++ b/unicode-ident-1.0.12.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b +size 42168