The following includes changes needed for getting mesa up and running with nouveau vulkan drivers
Requires
cbindgen (NEW) see my autospec here
rustc 1.78 -> 1.79 see for-review.txt here
mesa with some changes see for-review.txt here
cbindgen
tarball url = https://github.com/mozilla/cbindgen/archive/refs/tags/0.26.0.tar.gz
license = MPL-2.0
make_command
CARGO_PROFILE_RELEASE_DEBUG=2 CARGO_PROFILE_RELEASE_LTO=true CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1 cargo build --release --frozen --all-targets
install_macro
install -Dm0755 ./target/release/%{NAME} %{buildroot}%{_bindir}/%{NAME}
make_check_command (tests dont work for cargo on autospec?)
RUSTC_BOOTSTRAP=1 cargo test --frozen
options.conf
set cargo_vendor = true
rustc
tarball url = https://static.rust-lang.org/dist/rustc-1.79.0-src.tar.xz
build_prepend
# Remove .git as the build system will try
# and sync external submodules otherwise
rm -fr .git
cat > config.toml <<END
change-id = 118703
profile = "user"
[llvm]
link-shared = true
[build]
target = [
"x86_64-unknown-linux-gnu",
"i686-unknown-linux-gnu",
]
cargo = "/usr/bin/cargo"
rustc = "/usr/bin/rustc"
rustfmt = "/usr/bin/rustfmt"
locked-deps = true
vendor = true
tools = [
"cargo",
"clippy",
"rustdoc",
"rustfmt",
"rust-analyzer-proc-macro-srv",
"analysis",
"src",
"rust-demangler",
]
sanitizers = true
profiler = true
docs = false
[install]
prefix = "/usr"
[rust]
debuginfo-level-std = 2
channel = "stable"
description = "Clear Linux %{version}-%{release}"
rpath = false
backtrace-on-ice = true
remap-debuginfo = false
jemalloc = true
# https://github.com/rust-lang/rust/issues/54872
codegen-units-std = 1
# codegen-tests depend on LLVM utils (FileCheck) we don't provide
codegen-tests = false
[dist]
compression-formats = ["gz"]
[target.x86_64-unknown-linux-gnu]
cc = "/usr/bin/gcc"
cxx = "/usr/bin/g++"
ar = "/usr/bin/gcc-ar"
ranlib = "/usr/bin/gcc-ranlib"
llvm-config = "/usr/bin/llvm-config"
[target.i686-unknown-linux-gnu]
cc = "/usr/bin/gcc"
cxx = "/usr/bin/g++"
ar = "/usr/bin/gcc-ar"
ranlib = "/usr/bin/gcc-ranlib"
END
buildreq_add
cmake
llvm
llvm-staticdev
llvm-staticdev32
ninja
rustc
python3-dev
gcc-dev32
glibc-dev32
libedit-dev
libffi-dev
libtirpc-dev
libxml2-dev
libxml2-dev32
ncurses-dev
ncurses-dev32
zlib-dev
zlib-dev32
zstd-dev
zstd-dev32
excludes
/usr/lib/rustlib/install.log
/usr/lib/rustlib/manifest-cargo
/usr/lib/rustlib/manifest-clippy-preview
/usr/lib/rustlib/manifest-rust-analysis-x86_64-unknown-linux-gnu
/usr/lib/rustlib/manifest-rust-demangler-preview
/usr/lib/rustlib/manifest-rust-src
/usr/lib/rustlib/manifest-rust-std-i686-unknown-linux-gnu
/usr/lib/rustlib/manifest-rust-std-x86_64-unknown-linux-gnu
/usr/lib/rustlib/manifest-rustfmt-preview
/usr/lib/rustlib/manifest-rustc
/usr/src/etc/bash_completion.d/cargo
install_append
mkdir -p %{buildroot}/usr/lib64/
mkdir -p %{buildroot}-v3/usr/lib64/
mv %{buildroot}/usr/lib/*.so %{buildroot}/usr/lib64/
mv %{buildroot}-v3/usr/lib/*.so %{buildroot}-v3/usr/lib64/
rm -f %{buildroot}/usr/lib/rustlib/i686-unknown-linux-gnu/lib/*.so
rm -f %{buildroot}/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/*.so
rm -f %{buildroot}-v3/usr/lib/rustlib/i686-unknown-linux-gnu/lib/*.so
rm -f %{buildroot}-v3/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/*.so
install_prepend
export RUST_BACKTRACE=1
export RUST_COMPILER_RT_ROOT=%{builddir}/compiler-rt
# x.py automatically adds -m32 when building for i686 target
# they end up clashing so using sed to filter it out works
export CFLAGS="`echo "$CFLAGS" | sed s/-m64//`"
export CXXFLAGS="$CFLAGS"
dev_extras (NEW) (I put this in to pickup i686 files since they get picked up with their full file name)
/usr/lib/rustlib/i686-unknown-linux-gnu/lib/*.rlib
mesa
buildreq_add
add these
rustc-dev
cbindgen
pkgconfig_ban
add these
paste
32paste
build_prepend_once
i686_dir="%{_builddir}/build32"
deps_dir=$i686_dir/subprojects/packagefiles
for dir in $deps_dir/*; do
name=$(basename $dir)
mv $dir/meson.build $i686_dir/subprojects/$name-*
done
cat > $i686_dir/lib32 <<END
[binaries]
c = ['gcc', '-m32']
cpp = ['g++', '-m32']
rust = ['rustc', '--target', 'i686-unknown-linux-gnu']
pkgconfig = 'pkg-config'
cups-config = 'cups-config'
llvm-config = 'llvm-config'
strip = 'strip'
[built-in options]
libdir = 'lib32'
[host_machine]
system = 'linux'
subsystem = 'linux'
kernel = 'linux'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'
END
build_prepend
deps_dir="./subprojects/packagefiles"
for dir in $deps_dir/*; do
name=$(basename $dir)
mv $dir/meson.build ./subprojects/$name-*
done
configure
add nouveau to -Dvulkan-drivers=intel,amd,intel_hasvk,swrast,virtio,swrast,nouveau
configure32
add --cross-file lib32 (based on cat in build_prepend_once)
excludes
delete the two lines below
/usr/share/vulkan/icd.d/intel_icd.i686.json
/usr/share/vulkan/icd.d/radeon_icd.i686.json
install_append
delete file
options.conf
archives = https://static.crates.io/crates/paste/paste-1.0.14.crate ./subprojects/paste-1.0.14 https://static.crates.io/crates/syn/syn-2.0.39.crate ./subprojects/syn-2.0.39 https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.70.crate ./subprojects/proc-macro2-1.0.70 https://static.crates.io/crates/quote/quote-1.0.33.crate ./subprojects/quote-1.0.33 https://static.crates.io/crates/unicode-ident/unicode-ident-1.0.12.crate ./subprojects/unicode-ident-1.0.12
...
cargo_vendor = false (cargo vendor isnt being called in this build)
Thank you
The following includes changes needed for getting mesa up and running with nouveau vulkan drivers
Requires
cbindgen (NEW) see my autospec here
rustc 1.78 -> 1.79 see for-review.txt here
mesa with some changes see for-review.txt here
cbindgen
tarball url = https://github.com/mozilla/cbindgen/archive/refs/tags/0.26.0.tar.gz
license = MPL-2.0
make_command
install_macro
make_check_command (tests dont work for cargo on autospec?)
options.conf
set
cargo_vendor = truerustc
tarball url = https://static.rust-lang.org/dist/rustc-1.79.0-src.tar.xz
build_prepend
buildreq_add
excludes
install_append
install_prepend
dev_extras (NEW) (I put this in to pickup i686 files since they get picked up with their full file name)
mesa
buildreq_add
add these
rustc-devcbindgenpkgconfig_ban
add these
paste32pastebuild_prepend_once
build_prepend
configure
add
nouveauto-Dvulkan-drivers=intel,amd,intel_hasvk,swrast,virtio,swrast,nouveauconfigure32
add
--cross-file lib32(based on cat in build_prepend_once)excludes
delete the two lines below
/usr/share/vulkan/icd.d/intel_icd.i686.json/usr/share/vulkan/icd.d/radeon_icd.i686.jsoninstall_append
delete file
options.conf
archives = https://static.crates.io/crates/paste/paste-1.0.14.crate ./subprojects/paste-1.0.14 https://static.crates.io/crates/syn/syn-2.0.39.crate ./subprojects/syn-2.0.39 https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.70.crate ./subprojects/proc-macro2-1.0.70 https://static.crates.io/crates/quote/quote-1.0.33.crate ./subprojects/quote-1.0.33 https://static.crates.io/crates/unicode-ident/unicode-ident-1.0.12.crate ./subprojects/unicode-ident-1.0.12
...
cargo_vendor = false (cargo vendor isnt being called in this build)
Thank you