media-libs/mesa: probably have a working multilib build

from https://git.lab.how/mb/overlay-mb/raw/branch/master/media-libs/mesa/mesa-9999.ebuild
This commit is contained in:
odrling 2024-05-03 12:38:54 +02:00
parent ee99ea7a2f
commit 5c42b002b7
No known key found for this signature in database
GPG key ID: EC907F69A27A90C5
2 changed files with 63 additions and 99 deletions

View file

@ -1,5 +1,5 @@
DIST paste-1.0.14.tar.gz 18157 BLAKE2B 35e8548611c51ee75f4d04926149e5e54870d7073d9b635d550a6fa0f85891f57f326bdbcff3dd8618cf40f8e08cf903ef87d9c034d5921d8b91e1db842cdd7c SHA512 3a793f0e5e773a7f7defc798a4c17ae9a40d715144632ea6cb0a8c785e14c4212046491df016bb9838281f8eaf327a79f01c1e2ac5f26785c028bc880faff9ee
DIST proc-macro2-1.0.70.tar.gz 44343 BLAKE2B fff0dec06b21e391783cc136790238acb783780eaedcf14875a350e7ceb46fdc100c8b9e3f09fb7f4c2196c25d4c6b61e574c0dad762d94533b628faab68cf5c SHA512 ae9366856853f7d96caf7a7581843d36bfc7843f8683897b19ffc666c03b0b1eff502ddb18ca4c1c1a239a368f03f6cc258b0e2795f64b61c6a31404462eec5f
DIST quote-1.0.33.tar.gz 28090 BLAKE2B 77c4b166f1200e1ee2ab94a5014acd334c1fe4b7d72851d73768d491c56c6779a0882a304c1f30c88732a6168351f0f786b10516ae537cff993892a749175848 SHA512 c1e76c3c017e8554eebe309f8167fd56fce931981c06798aa85a0cc6d64a9cba6ab103f5a1324e69c6f9ca5dc47a8e31ff2e847850542748697afcd265b5939c
DIST syn-2.0.39.tar.gz 244129 BLAKE2B 2cff6626624d03f70f1662af45a8644c28a9f92e2dfe38999bef3ba4a4c1ce825ae598277e9cb7abd5585eebfb17b239effc8d0bbf1c6ac196499f0d288e5e01 SHA512 96cc347cfdb0f9ca0b6c7289279a1cad8fc401625783742292564f7ceca8237ced8d9a3f62069696f6132ed06092dff2baaf4be09ef53b21260d93785b0e27c3
DIST proc-macro2-1.0.78.tar.gz 47158 BLAKE2B c56a24fce3faca9e04db7965cab552d2a976c3764df0a84179b5a89d1230ab355c777a82b4c982e3945414f1f0478473a88821dd176c32d6de394d73a26adb9a SHA512 11956fe03a2e77a925cdff2c3c8bc8804dffab4fa1de963a128fa23f4189976fd2e2102bd346b92c33524beae320b71dadaa5213695a3ec638404196e14fa769
DIST quote-1.0.35.tar.gz 28136 BLAKE2B 81424245e1e2b94459df68bb3a9a866c6a364102b5e1d010ede9c5f8278f8406d7b651957d091c5914e936b494b0f6e9a6a1dd8b7d35cd7d7100f86dee4ec12e SHA512 f5314fb6af17cf36c228e1970c569c29ec248954a450a5f90ba9e2896d04f74904c9cec5a1f74325f2489295a94491eee4ce8fb461e22cd4b34e53f1f881efd2
DIST syn-2.0.48.tar.gz 250566 BLAKE2B e46b0863af76c3116c84d01b654a9820b7edc51f75c9c5301a7967d12284f78da602409f34fc40524728350dc6b998a4d738f08b8868f95236b3e5d24c460580 SHA512 926c0ad55cc743df20f9166b6d71fd44421aeb1f073fd86b6ddb53e13cd508b539c0360ce64b07b65597bb14639c8f33acf7e60951e1e9128624517aa3aee325
DIST unicode-ident-1.0.12.tar.gz 42168 BLAKE2B 4cede03c08758ccd6bf53a0d0057d7542dfdd0c93d342e89f3b90460be85518a9fd24958d8b1da2b5a09b5ddbee8a4263982194158e171c2bba3e394d88d6dac SHA512 bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920

View file

@ -7,42 +7,41 @@ LLVM_COMPAT=( {15..17} )
LLVM_OPTIONAL=1
PYTHON_COMPAT=( python3_{10..12} )
inherit llvm-r1 meson-multilib python-any-r1 linux-info
inherit llvm-r1 meson-multilib python-any-r1 linux-info rust-toolchain
MY_P="${P/_/-}"
DESCRIPTION="OpenGL-like graphic library for Linux"
HOMEPAGE="https://www.mesa3d.org/ https://mesa.freedesktop.org/"
SYN_VERSION=2.0.39
UNICODE_IDENT_VERSION=1.0.12
PROC_MACRO2_VERSION=1.0.70
QUOTE_VERSION=1.0.33
PASTE_VERSION=1.0.14
SYN_V=2.0.48
#SYN_V=2.0.39
PROC_MACRO2_V=1.0.78
#PROC_MACRO2_V=1.0.70
QUOTE_V=1.0.35
#QUOTE_V=1.0.33
UNICODE_IDENT_V=1.0.12
PASTE_V=1.0.14
NAK_URI="
https://crates.io/api/v1/crates/syn/${SYN_V}/download -> syn-${SYN_V}.tar.gz
https://crates.io/api/v1/crates/proc-macro2/${PROC_MACRO2_V}/download -> proc-macro2-${PROC_MACRO2_V}.tar.gz
https://crates.io/api/v1/crates/quote/${QUOTE_V}/download -> quote-${QUOTE_V}.tar.gz
https://crates.io/api/v1/crates/unicode-ident/${UNICODE_IDENT_V}/download -> unicode-ident-${UNICODE_IDENT_V}.tar.gz
https://crates.io/api/v1/crates/paste/${PASTE_V}/download -> paste-${PASTE_V}.tar.gz"
if [[ ${PV} == 9999 ]]; then
SRC_URI="
vulkan? (
video_cards_nouveau? (
https://crates.io/api/v1/crates/syn/${SYN_VERSION}/download -> syn-${SYN_VERSION}.tar.gz
https://crates.io/api/v1/crates/unicode-ident/${UNICODE_IDENT_VERSION}/download -> unicode-ident-${UNICODE_IDENT_VERSION}.tar.gz
https://crates.io/api/v1/crates/proc-macro2/${PROC_MACRO2_VERSION}/download -> proc-macro2-${PROC_MACRO2_VERSION}.tar.gz
https://crates.io/api/v1/crates/quote/${QUOTE_VERSION}/download -> quote-${QUOTE_VERSION}.tar.gz
https://crates.io/api/v1/crates/paste/${PASTE_VERSION}/download -> paste-${PASTE_VERSION}.tar.gz
)
)
"
EGIT_REPO_URI="https://gitlab.freedesktop.org/mesa/mesa.git"
SRC_URI="$NAK_URI"
inherit git-r3
else
SRC_URI="https://archive.mesa3d.org/${MY_P}.tar.xz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-solaris"
fi
S="${WORKDIR}/${MY_P}"
EGIT_CHECKOUT_DIR=${S}
LICENSE="MIT SGI-B-2.0"
SLOT="0"
RESTRICT="!test? ( test )"
RADEON_CARDS="r300 r600 radeon radeonsi"
VIDEO_CARDS="${RADEON_CARDS} d3d12 freedreno intel lavapipe lima nouveau panfrost v3d vc4 virgl vivante vmware"
@ -55,7 +54,7 @@ IUSE="${IUSE_VIDEO_CARDS}
lm-sensors opencl +opengl osmesa +proprietary-codecs selinux
test unwind vaapi valgrind vdpau vulkan
vulkan-overlay wayland +X xa zink +zstd"
RESTRICT="!test? ( test )"
REQUIRED_USE="
d3d9? (
|| (
@ -165,13 +164,17 @@ BDEPEND="
vulkan? (
dev-util/glslang
video_cards_nouveau? (
>=virtual/rust-1.73.0
dev-util/bindgen
>=dev-util/bindgen-0.58.0
>=dev-util/cbindgen-0.26.0
>=virtual/rust-1.73
)
)
wayland? ( dev-util/wayland-scanner )
"
S="${WORKDIR}/${MY_P}"
EGIT_CHECKOUT_DIR=${S}
QA_WX_LOAD="
x86? (
usr/lib/libglapi.so.0.0.0
@ -185,9 +188,9 @@ pkg_pretend() {
! use video_cards_freedreno &&
! use video_cards_intel &&
! use video_cards_radeonsi &&
! use video_cards_nouveau &&
! use video_cards_v3d; then
ewarn "Ignoring USE=vulkan since VIDEO_CARDS does not contain d3d12, freedreno, intel, radeonsi, nouveau, or v3d"
! use video_cards_v3d &&
! use video_cards_nouveau; then
ewarn "Ignoring USE=vulkan since VIDEO_CARDS does not contain d3d12, freedreno, intel, nouveau, or v3d"
fi
fi
@ -262,20 +265,29 @@ pkg_setup() {
src_unpack() {
if [[ ${PV} == 9999 ]]; then
git-r3_src_unpack
cd "${S}/subprojects" || die "no subprojects directory"
fi
default_src_unpack
if [[ -n ${A} ]]; then
einfo ${A}
unpack ${A}
fi
if use video_cards_nouveau; then
# TODO: What is the correct approach here? subprojects download pull too many packages
#cd ${P}
#meson subprojects download
#cd -
for pkg in syn-${SYN_V} quote-${QUOTE_V} unicode-ident-${UNICODE_IDENT_V} proc-macro2-${PROC_MACRO2_V} paste-${PASTE_V}; do
sub=mesa-${PV}/subprojects
mv ${pkg} ${sub}
cp ${sub}/packagefiles/${pkg%-*}/meson.build ${sub}/${pkg}
sed -i -e "s/directory = \S\+/directory = ${pkg}/" ${sub}/${pkg%-*}.wrap
done
fi
}
src_prepare() {
default
sed -i -e "/^PLATFORM_SYMBOLS/a '__gentoo_check_ldflags__'," \
bin/symbols-check.py || die # bug #830728
if use vulkan && use video_cards_nouveau; then
for wrap in syn quote unicode-ident proc-macro2 paste; do
meson subprojects packagefiles --apply $wrap
done
fi
}
multilib_src_configure() {
@ -376,7 +388,17 @@ multilib_src_configure() {
vulkan_enable video_cards_d3d12 microsoft-experimental
vulkan_enable video_cards_radeonsi amd
vulkan_enable video_cards_v3d broadcom
vulkan_enable video_cards_nouveau nouveau
if use video_cards_nouveau; then
vulkan_enable video_cards_nouveau nouveau
if ! multilib_is_native_abi; then
einfo "Applying Gentoo hack for nvk - 1/2"
echo -e "[binaries]\nrust = ['rustc', '--target=$(rust_abi $CBUILD)']" > "${T}/rust_fix.ini"
emesonargs+=(
--native-file "${T}"/rust_fix.ini
)
einfo "Applying Gentoo hack for nvk - 2/2"
fi
fi
fi
driver_list() {
@ -409,8 +431,6 @@ multilib_src_configure() {
emesonargs+=(-Dglx=disabled)
fi
use debug && EMESON_BUILDTYPE=debug
emesonargs+=(
$(meson_use test build-tests)
-Dshared-glapi=enabled
@ -432,9 +452,14 @@ multilib_src_configure() {
-Dvideo-codecs=$(usex proprietary-codecs "all" "all_free")
-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}")
-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}")
-Dbuildtype=$(usex debug debug plain)
-Db_ndebug=$(usex debug false true)
)
meson_src_configure
if ! multilib_is_native_abi && use video_cards_nouveau; then
einfo "Applying Gentoo hack for nvk - 2/2"
sed -i -E '{N; s/(rule rust_COMPILER_FOR_BUILD\n command = rustc) --target=[a-zA-Z0-9=:-]+ (.*) -C link-arg=-m[[:digit:]]+/\1 \2/g}' build.ninja
fi
}
multilib_src_test() {
@ -456,64 +481,3 @@ vulkan_enable() {
VULKAN_DRIVERS+=("$@")
fi
}
# override meson create native file
# @FUNCTION: _meson_create_native_file
# @RETURN: path to native file
# @INTERNAL
# @DESCRIPTION:
# Creates a native file. meson uses this to define settings for
# native compilers. This function is called from meson_src_configure.
_meson_create_native_file() {
local system cpu_family cpu
_meson_get_machine_info "${CBUILD}"
RUST_CBUILD="${CBUILD/-pc-/-unknown-}"
local fn=${T}/meson.${CBUILD}.${ABI}.ini
cat > "${fn}" <<-EOF
[binaries]
ar = $(_meson_env_array "$(tc-getBUILD_AR)")
c = $(_meson_env_array "$(tc-getBUILD_CC)")
cpp = $(_meson_env_array "$(tc-getBUILD_CXX)")
fortran = $(_meson_env_array "$(tc-getBUILD_PROG FC gfortran)")
llvm-config = '$(tc-getBUILD_PROG LLVM_CONFIG llvm-config)'
nm = $(_meson_env_array "$(tc-getBUILD_NM)")
objc = $(_meson_env_array "$(tc-getBUILD_PROG OBJC cc)")
objcopy = $(_meson_env_array "$(tc-getBUILD_OBJCOPY)")
objcpp = $(_meson_env_array "$(tc-getBUILD_PROG OBJCXX c++)")
# TODO: Cleanup 'pkgconfig' and keep just 'pkg-config' once we require
# >=1.3.0.
pkgconfig = '$(tc-getBUILD_PKG_CONFIG)'
pkg-config = '$(tc-getBUILD_PKG_CONFIG)'
strip = $(_meson_env_array "$(tc-getBUILD_STRIP)")
windres = $(_meson_env_array "$(tc-getBUILD_PROG RC windres)")
rust = ['rustc', '--target', '${RUST_CBUILD}']
[built-in options]
c_args = $(_meson_env_array "${BUILD_CFLAGS} ${BUILD_CPPFLAGS}")
c_link_args = $(_meson_env_array "${BUILD_CFLAGS} ${BUILD_LDFLAGS}")
cpp_args = $(_meson_env_array "${BUILD_CXXFLAGS} ${BUILD_CPPFLAGS}")
cpp_link_args = $(_meson_env_array "${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}")
fortran_args = $(_meson_env_array "${BUILD_FCFLAGS}")
fortran_link_args = $(_meson_env_array "${BUILD_FCFLAGS} ${BUILD_LDFLAGS}")
objc_args = $(_meson_env_array "${BUILD_OBJCFLAGS} ${BUILD_CPPFLAGS}")
objc_link_args = $(_meson_env_array "${BUILD_OBJCFLAGS} ${BUILD_LDFLAGS}")
objcpp_args = $(_meson_env_array "${BUILD_OBJCXXFLAGS} ${BUILD_CPPFLAGS}")
objcpp_link_args = $(_meson_env_array "${BUILD_OBJCXXFLAGS} ${BUILD_LDFLAGS}")
[properties]
needs_exe_wrapper = false
pkg_config_libdir = '${BUILD_PKG_CONFIG_LIBDIR:-${EPREFIX}/usr/$(get_libdir)/pkgconfig}'
[build_machine]
system = '${system}'
cpu_family = '${cpu_family}'
cpu = '${cpu}'
endian = ['$(tc-endian "${CBUILD}")']
EOF
echo "${fn}"
}