• [gentoo-dev] [RFC 1/3] eclass: Add eqawarn to xorg-3.eclass if package

    From Matt Turner@21:1/5 to All on Tue Apr 29 20:40:01 2025
    ---
    eclass/xorg-3.eclass | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git ./eclass/xorg-3.eclass ./eclass/xorg-3.eclass
    index 4947cb86b8b0..81df265c922f 100644
    --- ./eclass/xorg-3.eclass
    +++ ./eclass/xorg-3.eclass
    @@ -285,6 +285,10 @@ xorg-3_reconf_source() {
    xorg-3_src_prepare() {
    debug-print-function ${FUNCNAME} "$@"

    + if [[ -e meson.build ]]; then
    + eqawarn "Package contains a meson.build and should be migrated to xorg-meson.eclass if possible"
    + fi
    +
    default
    xorg-3_reconf_source
    }
    --
    2.49.0

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matt Turner@21:1/5 to All on Tue Apr 29 20:40:01 2025
    To be used by X.Org packages with a meson build system. Largely a copy
    of xorg-3.eclass with changes necessary to switch from autotools to
    meson.

    Compared with xorg-3, I've dropped a few things that I don't think are necessary (at least initially), namely:

    - font support (media-libs/font-* packages); packages change very
    rarely and don't have meson build systems upstream.
    - XORG_DOC dependencies. This actually looks wrong in xorg-3?
    - asciidoc is used to generate docbook documentation (which I
    don't think we ever do in the ebuilds)
    - xmlto is used to create some man pages from XML, but the man pages
    are checked into git so we don't ever need to generate them
    ---
    eclass/xorg-meson.eclass | 224 +++++++++++++++++++++++++++++++++++++++
    1 file changed, 224 insertions(+)
    create mode 100644 eclass/xorg-meson.eclass

    diff --git ./eclass/xorg-meson.eclass ./eclass/xorg-meson.eclass
    new file mode 100644
    index 000000000000..5c0a7d582479
    --- /dev/null
    +++ ./eclass/xorg-meson.eclass
    @@ -0,0 +1,224 @@
    +# Copyright 2025 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +# @ECLASS: xorg-meson.eclass
    +# @MAINTAINER:
    +# x11@gentoo.org
    +# @AUTHOR:
    +# Author: Matt Turner <mattst88@gentoo.org>
    +# @SUPPORTED_EAPIS: 8
    +# @PROVIDES: meson meson-multilib
    +# @BLURB: Reduces code duplication in the modularized X11 ebuilds.
    +# @DESCRIPTION:
    +# This eclass makes trivial X ebuilds possible for apps, drivers,
    +# and more. Many things that would normally be done in various functions
    +# can be accessed by setting variables instead, such as patching,
    +# passing options to meson and installing docs.
    +#
    +# All you need to do in a bas
  • From =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?=@21:1/5 to Matt Turner on Sat May 3 08:10:01 2025
    On Tue, 2025-04-29 at 14:28 -0400, Matt Turner wrote:
    To be used by X.Org packages with a meson build system. Largely a copy
    of xorg-3.eclass with changes necessary to switch from autotools to
    meson.

    Compared with xorg-3, I've dropped a few things that I don't think are necessary (at least initially), namely:

    - font support (media-libs/font-* packages); packages change very
    rarely and don't have meson build systems upstream.
    - XORG_DOC dependencies. This actually looks wrong in xorg-3?
    - asciidoc is used to generate docbook documentation (which I
    don't think we ever do in the ebuilds)
    - xmlto is used to create some man pages from XML, but the man pages
    are checked into git so we don't ever need to generate them
    ---
    eclass/xorg-meson.eclass | 224 +++++++++++++++++++++++++++++++++++++++
    1 file changed, 224 insertions(+)
    create mode 100644 eclass/xorg-meson.eclass

    diff --git ./eclass/xorg-meson.eclass ./eclass/xorg-meson.eclass
    new file mode 100644
    index 000000000000..5c0a7d582479
    --- /dev/null
    +++ ./eclass/xorg-meson.eclass
    @@ -0,0 +1,224 @@
    +# Copyright 2025 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +# @ECLASS: xorg-meson.eclass
    +# @MAINTAINER:
    +# x11@gentoo.org
    +# @AUTHOR:
    +# Author: Matt Turner <mattst88@gentoo.org>
    +# @SUPPORTED_EAPIS: 8
    +# @PROVIDES: meson meson-multilib
    +# @BLURB: Reduces code duplication in the modularized X11 ebuilds.
    +# @DESCRIPTION:
    +# This eclass makes trivial X ebuilds possible for apps, drivers,
    +# and more. Many things that would normally be done in various functions
    +# can be accessed by setting variables instead, such as patching,
    +# passing options to meson and installing docs.
    +#
    +# All you need to do in a basic ebuild is inherit this eclass and set
    +# DESCRIPTION, KEYWORDS and RDEPEND/DEPEND. If your package is hosted
    +# with the other X packages, you don't need to set SRC_URI. Pretty much
    +# everything else should be automatic.
    +
    +case ${EAPI} in
    + 8) ;;
    + *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
    +esac
    +
    +if [[ -z ${_XORG_MESON_ECLASS} ]]; then
    +_XORG_MESON_ECLASS=1
    +
    +GIT_ECLASS=""
    +if [[ ${PV} == *9999* ]]; then
    + GIT_ECLASS="git-r3"
    +fi
    +
    +# @ECLASS_VARIABLE: XORG_MULTILIB
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# If set to 'yes', the multilib support for package will be enabled. Set
    +# before inheriting this eclass.
    +: "${XORG_MULTILIB:="no"}"
    +
    +inherit flag-o-matic ${GIT_ECLASS}
    +unset GIT_ECLASS
    +
    +[[ ${XORG_MULTILIB} == yes ]] && inherit meson-multilib || inherit meson
    +
    +# @ECLASS_VARIABLE: XORG_BASE_INDIVIDUAL_URI
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Set up SRC_URI for individual modular releases. If set to an empty
    +# string, no SRC_URI will be provided by the eclass.
    +: "${XORG_BASE_INDIVIDUAL_URI="https://www.x.org/releases/individual"}"
    +
    +# @ECLASS_VARIABLE: XORG_MODULE
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# The subdirectory to download source from. Possible settings are app,
    +# doc, data, util, driver, font, lib, proto, xserver. Set above the
    +# inherit to override the default autoconfigured module.
    +: "${XORG_MODULE:="auto"}"
    +if [[ ${XORG_MODULE} == auto ]]; then
    + case "${CATEGORY}/${P}" in
    + app-doc/*) XORG_MODULE=doc/ ;;
    + media-fonts/*) XORG_MODULE=font/ ;;
    + x11-apps/*|x11-wm/*) XORG_MODULE=app/ ;;
    + x11-misc/*|x11-themes/*) XORG_MODULE=util/ ;;
    + x11-base/*) XORG_MODULE=xserver/ ;;
    + x11-drivers/*) XORG_MODULE=driver/ ;;
    + x11-libs/*) XORG_MODULE=lib/ ;;
    + *) XORG_MODULE= ;;
    + esac
    +fi
    +
    +# @ECLASS_VARIABLE: XORG_PACKAGE_NAME
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# For git checkout the git repository might differ from package name.
    +# This variable can be used for proper directory specification
    +: "${XORG_PACKAGE_NAME:=${PN}}"
    +
    +HOMEPAGE="https://www.x.org/wiki/ https://gitlab.freedesktop.org/xorg/${XORG_MODULE}${XORG_PACKAGE_NAME}"
    +
    +# @ECLASS_VARIABLE: XORG_TARBALL_SUFFIX
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Most X11 projects provide tarballs as tar.xz. This eclass defaults to xz. +: "${XORG_TARBALL_SUFFIX:="xz"}"
    +
    +if [[ ${PV} == *9999* ]]; then
    + : "${EGIT_REPO_URI:="https://gitlab.freedesktop.org/xorg/${XORG_MODULE}${XORG_PACKAGE_NAME}.git"}"
    +elif [[ -n ${XORG_BASE_INDIVIDUAL_URI} ]]; then
    + SRC_URI="${XORG_BASE_INDIVIDUAL_URI}/${XORG_MODULE}${P}.tar.${XORG_TARBALL_SUFFIX}"
    +fi
    +
    +: "${SLOT:=0}"
    +
    +# Set the license for the package. This can be overridden by setting
    +# LICENSE after the inherit. Nearly all FreeDesktop-hosted X packages
    +# are under the MIT license.
    +: "${LICENSE:=MIT}"
    +
    +if [[ ${PN} == xf86-video-* || ${PN} == xf86-input-* ]]; then
    + DEPEND+=" x11-base/xorg-proto"
    + RDEPEND+=" x11-base/xorg-server:="
    + COMMON_DEPEND+=" >=x11-base/xorg-server-1.20[xorg]"
    + [[ ${PN} == xf86-video-* ]] && COMMON_DEPEND+=" >=x11-libs/libpciaccess-0.14"

    At this point, I'd suggest removing COMMON_DEPEND entirely and just
    inlining that stuff twice. In the end, xorg-server is explicitly
    in RDEPEND already, and listing libpciaccess twice doesn't seem like
    a big deal to me.

    +fi
    +BDEPEND+=" virtual/pkgconfig"
    +
    +# @ECLASS_VARIABLE: XORG_DOC
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Controls the installation of man3 developer documentation. Possible values +# are the name of the useflag or "no". Default value is "no".
    +: "${XORG_DOC:="no"}"

    What if I wanted to name the USE flag 'no'? xP

    +
    +case ${XORG_DOC} in
    + no)
    + ;;
    + *)
    + IUSE+=" ${XORG_DOC}"
    + ;;
    +esac
    +
    +DEPEND+=" ${COMMON_DEPEND}"
    +RDEPEND+=" ${COMMON_DEPEND}"
    +unset COMMON_DEPEND
    +
    +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND=${DEPEND}"
    +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND=${RDEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: PDEPEND=${PDEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: BDEPEND=${BDEPEND}"
    +
    +# @FUNCTION: xorg-meson_src_unpack
    +# @DESCRIPTION:
    +# Simply unpack source code.
    +xorg-meson_src_unpack() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${PV} == *9999* ]]; then
    + git-r3_src_unpack
    + else
    + unpack ${A}
    + fi
    +}
    +
    +# @FUNCTION: xorg-meson_flags_setup
    +# @DESCRIPTION:
    +# Set up CFLAGS for a debug build
    +xorg-meson_flags_setup() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + # Hardened flags break module autoloading et al (also fixes #778494)
    + if [[ ${PN} == xorg-server || ${PN} == xf86-video-* || ${PN} == xf86-input-* ]]; then
    + filter-flags -fno-plt
    + append-ldflags -Wl,-z,lazy
    + fi
    +}
    +
    +# @VARIABLE: XORG_CONFIGURE_OPTIONS
    +# @DESCRIPTION:
    +# Array of an additional options to pass to meson setup.
    +# @DEFAULT_UNSET

    All tags must go before @DESCRIPTION.

    +
    +# @FUNCTION: xorg-meson_src_configure
    +# @DESCRIPTION:
    +# Perform any necessary pre-configuration steps, then run configure +xorg-meson_src_configure() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + xorg-meson_flags_setup
    +
    + local emesonargs=(
    + -Ddefault_library=shared
    + "${XORG_CONFIGURE_OPTIONS[@]}"
    + )
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_configure "$@"
    + else
    + meson_src_configure "$@"
    + fi
    +}
    +
    +# @FUNCTION: xorg-meson_src_compile
    +# @DESCRIPTION:
    +# Compile a package, performing all X-related tasks. +xorg-meson_src_compile() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_compile "$@"
    + else
    + meson_src_compile "$@"
    + fi
    +}
    +
    +# @FUNCTION: xorg-meson_src_install
    +# @DESCRIPTION:
    +# Install a built package to ${D}, performing any necessary steps. +xorg-meson_src_install() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_install "$@"
    + else
    + meson_src_install "$@"
    + fi
    +
    + # Many X11 libraries unconditionally install developer documentation
    + if [[ -d "${D}"/usr/share/man/man3 ]]; then

    Maybe add '&& ! in_iuse doc' to the if?

    + ! in_iuse doc && eqawarn "ebuild should set XORG_DOC=doc since package installs man3 documentation"
    + fi
    +
    + if in_iuse doc && ! use doc; then
    + rm -rf "${D}"/usr/share/man/man3

    || die

    + rmdir "${D}"/usr{/share{/man,},} 2>/dev/null

    I generally prefer 'find -type d -empty -delete || die' over ignoring
    errors.

    + fi
    +}
    +
    +fi
    +
    +EXPORT_FUNCTIONS src_configure src_unpack src_compile src_install

    --
    Best regards,
    Michał Górny


    -----BEGIN PGP SIGNATURE-----

    iQFGBAABCgAwFiEEx2qEUJQJjSjMiybFY5ra4jKeJA4FAmgVsjUSHG1nb3JueUBn ZW50b28ub3JnAAoJEGOa2uIyniQOfbMIAJ0VXMXvN9J3DR6xD8Rqj3ukKmn+Y2Go bU+hJboV3sO5u6N4HgY0NxvSDDmM6fSW53ogADfl7kzKTY8i/oDiqJjV2jvQQnXw Jl1AcHHMLUsGLDSU+gquGKKCZADwYeykZGjILKmckV6fpNw1LCsDTiClPs599RSg jpcitH3OM3ebZ0eKzZegJRP9fnyKO70RUpFSaAWFx0WoJ6rsPzI1bhyRoniemd3K oyAqxBZeSxtTMkpzkHnz5/YcGFVEyl0ducxrZTjOOlFoJESzA1I7DM5SInlVGz36 FMQOPtQBDayHG+fJF899XzQWTIujujx2y4erVbSDVuhdPFHGScMO59M=
    =49fU
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sam James@21:1/5 to Matt Turner on Sat May 3 08:30:01 2025
    Matt Turner <mattst88@gentoo.org> writes:

    ---
    eclass/xorg-3.eclass | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git ./eclass/xorg-3.eclass ./eclass/xorg-3.eclass
    index 4947cb86b8b0..81df265c922f 100644
    --- ./eclass/xorg-3.eclass
    +++ ./eclass/xorg-3.eclass
    @@ -285,6 +285,10 @@ xorg-3_reconf_source() {
    xorg-3_src_prepare() {
    debug-print-function ${FUNCNAME} "$@"

    + if [[ -e meson.build ]]; then

    Maybe drop the extra space.

    + eqawarn "Package contains a meson.build and should be migrated to xorg-meson.eclass if possible"
    + fi
    +
    default
    xorg-3_reconf_source
    }

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sam James@21:1/5 to Matt Turner on Sat May 3 08:30:01 2025
    Matt Turner <mattst88@gentoo.org> writes:

    To be used by X.Org packages with a meson build system. Largely a copy
    of xorg-3.eclass with changes necessary to switch from autotools to
    meson.

    Compared with xorg-3, I've dropped a few things that I don't think are necessary (at least initially), namely:

    - font support (media-libs/font-* packages); packages change very
    rarely and don't have meson build systems upstream.

    Seems reasonable. We can add that later if needed (or give them their
    own eclass if things necessitated that).

    - XORG_DOC dependencies. This actually looks wrong in xorg-3?
    - asciidoc is used to generate docbook documentation (which I
    don't think we ever do in the ebuilds)
    - xmlto is used to create some man pages from XML, but the man pages
    are checked into git so we don't ever need to generate them

    Heh, I think I remember being confused about this before.

    ---
    eclass/xorg-meson.eclass | 224 +++++++++++++++++++++++++++++++++++++++
    1 file changed, 224 insertions(+)
    create mode 100644 eclass/xorg-meson.eclass

    diff --git ./eclass/xorg-meson.eclass ./eclass/xorg-meson.eclass
    new file mode 100644
    index 000000000000..5c0a7d582479
    --- /dev/null
    +++ ./eclass/xorg-meson.eclass
    @@ -0,0 +1,224 @@
    +# Copyright 2025 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +# @ECLASS: xorg-meson.eclass
    +# @MAINTAINER:
    +# x11@gentoo.org
    +# @AUTHOR:
    +# Author: Matt Turner <mattst88@gentoo.org>
    +# @SUPPORTED_EAPIS: 8
    +# @PROVIDES: meson meson-multilib
    +# @BLURB: Reduces code duplication in the modularized X11 ebuilds.

    IMO "modularized" in 2025 looks odd, it's obvious, but feel free to keep
    it.

    +# @DESCRIPTION:
    +# This eclass makes trivial X ebuilds possible for apps, drivers,
    +# and more. Many things that would normally be done in various functions
    +# can be accessed by setting variables instead, such as patching,
    +# passing options to meson and installing docs.
    +#
    +# All you need to do in a basic ebuild is inherit this eclass and set
    +# DESCRIPTION, KEYWORDS and RDEPEND/DEPEND. If your package is hosted
    +# with the other X packages, you don't need to set SRC_URI. Pretty much
    +# everything else should be automatic.
    +
    +case ${EAPI} in
    + 8) ;;
    + *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
    +esac
    +
    +if [[ -z ${_XORG_MESON_ECLASS} ]]; then
    +_XORG_MESON_ECLASS=1
    +
    +GIT_ECLASS=""
    +if [[ ${PV} == *9999* ]]; then
    + GIT_ECLASS="git-r3"
    +fi
    +
    +# @ECLASS_VARIABLE: XORG_MULTILIB
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# If set to 'yes', the multilib support for package will be enabled. Set

    s/the//

    +# before inheriting this eclass.
    +: "${XORG_MULTILIB:="no"}"
    +
    +inherit flag-o-matic ${GIT_ECLASS}
    +unset GIT_ECLASS

    Just call inherit twice (once earlier on), let's not bother with the variable and then
    having to unset it.

    +
    +[[ ${XORG_MULTILIB} == yes ]] && inherit meson-multilib || inherit meson
    +
    +# @ECLASS_VARIABLE: XORG_BASE_INDIVIDUAL_URI
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Set up SRC_URI for individual modular releases. If set to an empty
    +# string, no SRC_URI will be provided by the eclass.
    +: "${XORG_BASE_INDIVIDUAL_URI="https://www.x.org/releases/individual"}"
    +
    +# @ECLASS_VARIABLE: XORG_MODULE
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# The subdirectory to download source from. Possible settings are app,
    +# doc, data, util, driver, font, lib, proto, xserver. Set above the
    +# inherit to override the default autoconfigured module.
    +: "${XORG_MODULE:="auto"}"
    +if [[ ${XORG_MODULE} == auto ]]; then
    + case "${CATEGORY}/${P}" in
    + app-doc/*) XORG_MODULE=doc/ ;;
    + media-fonts/*) XORG_MODULE=font/ ;;
    + x11-apps/*|x11-wm/*) XORG_MODULE=app/ ;;
    + x11-misc/*|x11-themes/*) XORG_MODULE=util/ ;;
    + x11-base/*) XORG_MODULE=xserver/ ;;
    + x11-drivers/*) XORG_MODULE=driver/ ;;
    + x11-libs/*) XORG_MODULE=lib/ ;;
    + *) XORG_MODULE= ;;
    + esac
    +fi
    +
    +# @ECLASS_VARIABLE: XORG_PACKAGE_NAME
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# For git checkout the git repository might differ from package name.
    +# This variable can be used for proper directory specification
    +: "${XORG_PACKAGE_NAME:=${PN}}"
    +
    +HOMEPAGE="https://www.x.org/wiki/ https://gitlab.freedesktop.org/xorg/${XORG_MODULE}${XORG_PACKAGE_NAME}"
    +
    +# @ECLASS_VARIABLE: XORG_TARBALL_SUFFIX
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Most X11 projects provide tarballs as tar.xz. This eclass defaults to xz. +: "${XORG_TARBALL_SUFFIX:="xz"}"
    +
    +if [[ ${PV} == *9999* ]]; then
    + : "${EGIT_REPO_URI:="https://gitlab.freedesktop.org/xorg/${XORG_MODULE}${XORG_PACKAGE_NAME}.git"}"
    +elif [[ -n ${XORG_BASE_INDIVIDUAL_URI} ]]; then
    + SRC_URI="${XORG_BASE_INDIVIDUAL_URI}/${XORG_MODULE}${P}.tar.${XORG_TARBALL_SUFFIX}"
    +fi
    +
    +: "${SLOT:=0}"
    +
    +# Set the license for the package. This can be overridden by setting
    +# LICENSE after the inherit. Nearly all FreeDesktop-hosted X packages
    +# are under the MIT license.
    +: "${LICENSE:=MIT}"
    +
    +if [[ ${PN} == xf86-video-* || ${PN} == xf86-input-* ]]; then
    + DEPEND+=" x11-base/xorg-proto"
    + RDEPEND+=" x11-base/xorg-server:="
    + COMMON_DEPEND+=" >=x11-base/xorg-server-1.20[xorg]"
    + [[ ${PN} == xf86-video-* ]] && COMMON_DEPEND+=" >=x11-libs/libpciaccess-0.14"
    +fi
    +BDEPEND+=" virtual/pkgconfig"
    +
    +# @ECLASS_VARIABLE: XORG_DOC
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Controls the installation of man3 developer documentation. Possible values +# are the name of the useflag or "no". Default value is "no".
    +: "${XORG_DOC:="no"}"
    +
    +case ${XORG_DOC} in
    + no)
    + ;;
    + *)
    + IUSE+=" ${XORG_DOC}"
    + ;;
    +esac
    +
    +DEPEND+=" ${COMMON_DEPEND}"
    +RDEPEND+=" ${COMMON_DEPEND}"
    +unset COMMON_DEPEND
    +
    +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND=${DEPEND}"
    +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND=${RDEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: PDEPEND=${PDEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: BDEPEND=${BDEPEND}"
    +
    +# @FUNCTION: xorg-meson_src_unpack
    +# @DESCRIPTION:
    +# Simply unpack source code.
    +xorg-meson_src_unpack() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${PV} == *9999* ]]; then
    + git-r3_src_unpack
    + else
    + unpack ${A}
    + fi
    +}
    +
    +# @FUNCTION: xorg-meson_flags_setup
    +# @DESCRIPTION:
    +# Set up CFLAGS for a debug build

    Make this an internal function, maybe?

    +xorg-meson_flags_setup() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + # Hardened flags break module autoloading et al (also fixes #778494)
    + if [[ ${PN} == xorg-server || ${PN} == xf86-video-* || ${PN} == xf86-input-* ]]; then
    + filter-flags -fno-plt
    + append-ldflags -Wl,-z,lazy
    + fi
    +}
    +
    +# @VARIABLE: XORG_CONFIGURE_OPTIONS
    +# @DESCRIPTION:
    +# Array of an additional options to pass to meson setup.
    +# @DEFAULT_UNSET
    +
    +# @FUNCTION: xorg-meson_src_configure
    +# @DESCRIPTION:
    +# Perform any necessary pre-configuration steps, then run configure +xorg-meson_src_configure() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + xorg-meson_flags_setup
    +
    + local emesonargs=(
    + -Ddefault_library=shared
    + "${XORG_CONFIGURE_OPTIONS[@]}"
    + )
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_configure "$@"

    If you wanted, you could (earlier on) set ${_XORG_MESON} or something,
    and then use that like:
    ${_XORG_MESON}_src_configure
    ... but who cares.

    + else
    + meson_src_configure "$@"
    + fi
    +}
    +
    +# @FUNCTION: xorg-meson_src_compile
    +# @DESCRIPTION:
    +# Compile a package, performing all X-related tasks. +xorg-meson_src_compile() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_compile "$@"
    + else
    + meson_src_compile "$@"
    + fi
    +}
    +

    You're missing src_test? Does it Just Work? (If so, why do we need xorg-meson_src_compile then?)

    +# @FUNCTION: xorg-meson_src_install
    +# @DESCRIPTION:
    +# Install a built package to ${D}, performing any necessary steps. +xorg-meson_src_install() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_install "$@"
    + else
    + meson_src_install "$@"
    + fi
    +
    + # Many X11 libraries unconditionally install developer documentation
    + if [[ -d "${D}"/usr/share/man/man3 ]]; then

    ${ED} and below

    + ! in_iuse doc && eqawarn "ebuild should set XORG_DOC=doc since package installs man3 documentation"
    + fi
    +
    + if in_iuse doc && ! use doc; then
    + rm -rf "${D}"/usr/share/man/man3
    + rmdir "${D}"/usr{/share{/man,},} 2>/dev/null
    + fi
    +}
    +
    +fi
    +
    +EXPORT_FUNCTIONS src_configure src_unpack src_compile src_install

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matt Turner@21:1/5 to mgorny@gentoo.org on Mon May 5 18:00:02 2025
    On Sat, May 3, 2025 at 2:05 AM Michał Górny <mgorny@gentoo.org> wrote:

    On Tue, 2025-04-29 at 14:28 -0400, Matt Turner wrote:
    To be used by X.Org packages with a meson build system. Largely a copy
    of xorg-3.eclass with changes necessary to switch from autotools to
    meson.

    Compared with xorg-3, I've dropped a few things that I don't think are necessary (at least initially), namely:

    - font support (media-libs/font-* packages); packages change very
    rarely and don't have meson build systems upstream.
    - XORG_DOC dependencies. This actually looks wrong in xorg-3?
    - asciidoc is used to generate docbook documentation (which I
    don't think we ever do in the ebuilds)
    - xmlto is used to create some man pages from XML, but the man pages
    are checked into git so we don't ever need to generate them
    ---
    eclass/xorg-meson.eclass | 224 +++++++++++++++++++++++++++++++++++++++
    1 file changed, 224 insertions(+)
    create mode 100644 eclass/xorg-meson.eclass

    diff --git ./eclass/xorg-meson.eclass ./eclass/xorg-meson.eclass
    new file mode 100644
    index 000000000000..5c0a7d582479
    --- /dev/null
    +++ ./eclass/xorg-meson.eclass
    @@ -0,0 +1,224 @@
    +# Copyright 2025 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +# @ECLASS: xorg-meson.eclass
    +# @MAINTAINER:
    +# x11@gentoo.org
    +# @AUTHOR:
    +# Author: Matt Turner <mattst88@gentoo.org>
    +# @SUPPORTED_EAPIS: 8
    +# @PROVIDES: meson meson-multilib
    +# @BLURB: Reduces code duplication in the modularized X11 ebuilds.
    +# @DESCRIPTION:
    +# This eclass makes trivial X ebuilds possible for apps, drivers,
    +# and more. Many things that would normally be done in various functions +# can be accessed by setting variables instead, such as patching,
    +# passing options to meson and installing docs.
    +#
    +# All you need to do in a basic ebuild is inherit this eclass and set
    +# DESCRIPTION, KEYWORDS and RDEPEND/DEPEND. If your package is hosted
    +# with the other X packages, you don't need to set SRC_URI. Pretty much
    +# everything else should be automatic.
    +
    +case ${EAPI} in
    + 8) ;;
    + *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
    +esac
    +
    +if [[ -z ${_XORG_MESON_ECLASS} ]]; then
    +_XORG_MESON_ECLASS=1
    +
    +GIT_ECLASS=""
    +if [[ ${PV} == *9999* ]]; then
    + GIT_ECLASS="git-r3"
    +fi
    +
    +# @ECLASS_VARIABLE: XORG_MULTILIB
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# If set to 'yes', the multilib support for package will be enabled. Set +# before inheriting this eclass.
    +: "${XORG_MULTILIB:="no"}"
    +
    +inherit flag-o-matic ${GIT_ECLASS}
    +unset GIT_ECLASS
    +
    +[[ ${XORG_MULTILIB} == yes ]] && inherit meson-multilib || inherit meson
    +
    +# @ECLASS_VARIABLE: XORG_BASE_INDIVIDUAL_URI
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Set up SRC_URI for individual modular releases. If set to an empty
    +# string, no SRC_URI will be provided by the eclass.
    +: "${XORG_BASE_INDIVIDUAL_URI="https://www.x.org/releases/individual"}"
    +
    +# @ECLASS_VARIABLE: XORG_MODULE
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# The subdirectory to download source from. Possible settings are app,
    +# doc, data, util, driver, font, lib, proto, xserver. Set above the
    +# inherit to override the default autoconfigured module.
    +: "${XORG_MODULE:="auto"}"
    +if [[ ${XORG_MODULE} == auto ]]; then
    + case "${CATEGORY}/${P}" in
    + app-doc/*) XORG_MODULE=doc/ ;;
    + media-fonts/*) XORG_MODULE=font/ ;;
    + x11-apps/*|x11-wm/*) XORG_MODULE=app/ ;;
    + x11-misc/*|x11-themes/*) XORG_MODULE=util/ ;;
    + x11-base/*) XORG_MODULE=xserver/ ;;
    + x11-drivers/*) XORG_MODULE=driver/ ;;
    + x11-libs/*) XORG_MODULE=lib/ ;;
    + *) XORG_MODULE= ;;
    + esac
    +fi
    +
    +# @ECLASS_VARIABLE: XORG_PACKAGE_NAME
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# For git checkout the git repository might differ from package name.
    +# This variable can be used for proper directory specification
    +: "${XORG_PACKAGE_NAME:=${PN}}"
    +
    +HOMEPAGE="https://www.x.org/wiki/ https://gitlab.freedesktop.org/xorg/${XORG_MODULE}${XORG_PACKAGE_NAME}"
    +
    +# @ECLASS_VARIABLE: XORG_TARBALL_SUFFIX
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Most X11 projects provide tarballs as tar.xz. This eclass defaults to xz.
    +: "${XORG_TARBALL_SUFFIX:="xz"}"
    +
    +if [[ ${PV} == *9999* ]]; then
    + : "${EGIT_REPO_URI:="https://gitlab.freedesktop.org/xorg/${XORG_MODULE}${XORG_PACKAGE_NAME}.git"}"
    +elif [[ -n ${XORG_BASE_INDIVIDUAL_URI} ]]; then
    + SRC_URI="${XORG_BASE_INDIVIDUAL_URI}/${XORG_MODULE}${P}.tar.${XORG_TARBALL_SUFFIX}"
    +fi
    +
    +: "${SLOT:=0}"
    +
    +# Set the license for the package. This can be overridden by setting
    +# LICENSE after the inherit. Nearly all FreeDesktop-hosted X packages
    +# are under the MIT license.
    +: "${LICENSE:=MIT}"
    +
    +if [[ ${PN} == xf86-video-* || ${PN} == xf86-input-* ]]; then
    + DEPEND+=" x11-base/xorg-proto"
    + RDEPEND+=" x11-base/xorg-server:="
    + COMMON_DEPEND+=" >=x11-base/xorg-server-1.20[xorg]"
    + [[ ${PN} == xf86-video-* ]] && COMMON_DEPEND+=" >=x11-libs/libpciaccess-0.14"

    At this point, I'd suggest removing COMMON_DEPEND entirely and just
    inlining that stuff twice. In the end, xorg-server is explicitly
    in RDEPEND already, and listing libpciaccess twice doesn't seem like
    a big deal to me.

    Thanks, changed.

    +fi
    +BDEPEND+=" virtual/pkgconfig"
    +
    +# @ECLASS_VARIABLE: XORG_DOC
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Controls the installation of man3 developer documentation. Possible values
    +# are the name of the useflag or "no". Default value is "no".
    +: "${XORG_DOC:="no"}"

    What if I wanted to name the USE flag 'no'? xP

    Sorry :)

    +
    +case ${XORG_DOC} in
    + no)
    + ;;
    + *)
    + IUSE+=" ${XORG_DOC}"
    + ;;
    +esac
    +
    +DEPEND+=" ${COMMON_DEPEND}"
    +RDEPEND+=" ${COMMON_DEPEND}"
    +unset COMMON_DEPEND
    +
    +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND=${DEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND=${RDEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: PDEPEND=${PDEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: BDEPEND=${BDEPEND}"
    +
    +# @FUNCTION: xorg-meson_src_unpack
    +# @DESCRIPTION:
    +# Simply unpack source code.
    +xorg-meson_src_unpack() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${PV} == *9999* ]]; then
    + git-r3_src_unpack
    + else
    + unpack ${A}
    + fi
    +}
    +
    +# @FUNCTION: xorg-meson_flags_setup
    +# @DESCRIPTION:
    +# Set up CFLAGS for a debug build
    +xorg-meson_flags_setup() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + # Hardened flags break module autoloading et al (also fixes #778494) + if [[ ${PN} == xorg-server || ${PN} == xf86-video-* || ${PN} == xf86-input-* ]]; then
    + filter-flags -fno-plt
    + append-ldflags -Wl,-z,lazy
    + fi
    +}
    +
    +# @VARIABLE: XORG_CONFIGURE_OPTIONS
    +# @DESCRIPTION:
    +# Array of an additional options to pass to meson setup.
    +# @DEFAULT_UNSET

    All tags must go before @DESCRIPTION.

    Fixed, thanks.

    +
    +# @FUNCTION: xorg-meson_src_configure
    +# @DESCRIPTION:
    +# Perform any necessary pre-configuration steps, then run configure +xorg-meson_src_configure() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + xorg-meson_flags_setup
    +
    + local emesonargs=(
    + -Ddefault_library=shared
    + "${XORG_CONFIGURE_OPTIONS[@]}"
    + )
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_configure "$@"
    + else
    + meson_src_configure "$@"
    + fi
    +}
    +
    +# @FUNCTION: xorg-meson_src_compile
    +# @DESCRIPTION:
    +# Compile a package, performing all X-related tasks. +xorg-meson_src_compile() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_compile "$@"
    + else
    + meson_src_compile "$@"
    + fi
    +}
    +
    +# @FUNCTION: xorg-meson_src_install
    +# @DESCRIPTION:
    +# Install a built package to ${D}, performing any necessary steps. +xorg-meson_src_install() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_install "$@"
    + else
    + meson_src_install "$@"
    + fi
    +
    + # Many X11 libraries unconditionally install developer documentation + if [[ -d "${D}"/usr/share/man/man3 ]]; then

    Maybe add '&& ! in_iuse doc' to the if?

    + ! in_iuse doc && eqawarn "ebuild should set XORG_DOC=doc since package installs man3 documentation"
    + fi
    +
    + if in_iuse doc && ! use doc; then
    + rm -rf "${D}"/usr/share/man/man3

    || die

    + rmdir "${D}"/usr{/share{/man,},} 2>/dev/null

    I generally prefer 'find -type d -empty -delete || die' over ignoring
    errors.

    Thanks, fixed.

    + fi
    +}
    +
    +fi
    +
    +EXPORT_FUNCTIONS src_configure src_unpack src_compile src_install

    --
    Best regards,
    Michał Górny


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matt Turner@21:1/5 to All on Mon May 5 18:00:02 2025
    To be used by X.Org packages with a meson build system. Largely a copy
    of xorg-3.eclass with changes necessary to switch from autotools to
    meson.

    Compared with xorg-3, I've dropped a few things that I don't think are necessary (at least initially), namely:

    - font support (media-libs/font-* packages); packages change very
    rarely and don't have meson build systems upstream.
    - XORG_DOC dependencies. This actually looks wrong in xorg-3?
    - asciidoc is used to generate docbook documentation (which I
    don't think we ever do in the ebuilds)
    - xmlto is used to create some man pages from XML, but the man pages
    are checked into git so we don't ever need to generate them
    ---
    eclass/xorg-meson.eclass | 209 +++++++++++++++++++++++++++++++++++++++
    1 file changed, 209 insertions(+)
    create mode 100644 eclass/xorg-meson.eclass

    diff --git ./eclass/xorg-meson.eclass ./eclass/xorg-meson.eclass
    new file mode 100644
    index 000000000000..afb77e348618
    --- /dev/null
    +++ ./eclass/xorg-meson.eclass
    @@ -0,0 +1,209 @@
    +# Copyright 2025 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +# @ECLASS: xorg-meson.eclass
    +# @MAINTAINER:
    +# x11@gentoo.org
    +# @AUTHOR:
    +# Author: Matt Turner <mattst88@gentoo.org>
    +# @SUPPORTED_EAPIS: 8
    +# @PROVIDES: meson meson-multilib
    +# @BLURB: Reduces code duplication in the X11 ebuilds.
    +# @DESCRIPTION:
    +# This eclass makes trivial X ebuilds possible for apps, drivers,
    +# and more. Many things that would normally be done in various functions
    +# can be accessed by setting variables instead, such as patching,
    +# passing options to meson and installing docs.
    +#
    +# All you need to do in a basic ebuild is
  • From Matt Turner@21:1/5 to sam@gentoo.org on Mon May 5 18:00:02 2025
    On Sat, May 3, 2025 at 2:28 AM Sam James <sam@gentoo.org> wrote:

    Matt Turner <mattst88@gentoo.org> writes:

    To be used by X.Org packages with a meson build system. Largely a copy
    of xorg-3.eclass with changes necessary to switch from autotools to
    meson.

    Compared with xorg-3, I've dropped a few things that I don't think are necessary (at least initially), namely:

    - font support (media-libs/font-* packages); packages change very
    rarely and don't have meson build systems upstream.

    Seems reasonable. We can add that later if needed (or give them their
    own eclass if things necessitated that).

    - XORG_DOC dependencies. This actually looks wrong in xorg-3?
    - asciidoc is used to generate docbook documentation (which I
    don't think we ever do in the ebuilds)
    - xmlto is used to create some man pages from XML, but the man pages
    are checked into git so we don't ever need to generate them

    Heh, I think I remember being confused about this before.

    ---
    eclass/xorg-meson.eclass | 224 +++++++++++++++++++++++++++++++++++++++
    1 file changed, 224 insertions(+)
    create mode 100644 eclass/xorg-meson.eclass

    diff --git ./eclass/xorg-meson.eclass ./eclass/xorg-meson.eclass
    new file mode 100644
    index 000000000000..5c0a7d582479
    --- /dev/null
    +++ ./eclass/xorg-meson.eclass
    @@ -0,0 +1,224 @@
    +# Copyright 2025 Gentoo Authors
    +# Distributed under the terms of the GNU General Public License v2
    +
    +# @ECLASS: xorg-meson.eclass
    +# @MAINTAINER:
    +# x11@gentoo.org
    +# @AUTHOR:
    +# Author: Matt Turner <mattst88@gentoo.org>
    +# @SUPPORTED_EAPIS: 8
    +# @PROVIDES: meson meson-multilib
    +# @BLURB: Reduces code duplication in the modularized X11 ebuilds.

    IMO "modularized" in 2025 looks odd, it's obvious, but feel free to keep
    it.

    Agreed. Removed.

    +# @DESCRIPTION:
    +# This eclass makes trivial X ebuilds possible for apps, drivers,
    +# and more. Many things that would normally be done in various functions +# can be accessed by setting variables instead, such as patching,
    +# passing options to meson and installing docs.
    +#
    +# All you need to do in a basic ebuild is inherit this eclass and set
    +# DESCRIPTION, KEYWORDS and RDEPEND/DEPEND. If your package is hosted
    +# with the other X packages, you don't need to set SRC_URI. Pretty much
    +# everything else should be automatic.
    +
    +case ${EAPI} in
    + 8) ;;
    + *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
    +esac
    +
    +if [[ -z ${_XORG_MESON_ECLASS} ]]; then
    +_XORG_MESON_ECLASS=1
    +
    +GIT_ECLASS=""
    +if [[ ${PV} == *9999* ]]; then
    + GIT_ECLASS="git-r3"
    +fi
    +
    +# @ECLASS_VARIABLE: XORG_MULTILIB
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# If set to 'yes', the multilib support for package will be enabled. Set

    s/the//

    Thanks, fixed.

    +# before inheriting this eclass.
    +: "${XORG_MULTILIB:="no"}"
    +
    +inherit flag-o-matic ${GIT_ECLASS}
    +unset GIT_ECLASS

    Just call inherit twice (once earlier on), let's not bother with the variable and then
    having to unset it.

    Sounds good, fixed.

    +
    +[[ ${XORG_MULTILIB} == yes ]] && inherit meson-multilib || inherit meson
    +
    +# @ECLASS_VARIABLE: XORG_BASE_INDIVIDUAL_URI
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Set up SRC_URI for individual modular releases. If set to an empty
    +# string, no SRC_URI will be provided by the eclass.
    +: "${XORG_BASE_INDIVIDUAL_URI="https://www.x.org/releases/individual"}"
    +
    +# @ECLASS_VARIABLE: XORG_MODULE
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# The subdirectory to download source from. Possible settings are app,
    +# doc, data, util, driver, font, lib, proto, xserver. Set above the
    +# inherit to override the default autoconfigured module.
    +: "${XORG_MODULE:="auto"}"
    +if [[ ${XORG_MODULE} == auto ]]; then
    + case "${CATEGORY}/${P}" in
    + app-doc/*) XORG_MODULE=doc/ ;;
    + media-fonts/*) XORG_MODULE=font/ ;;
    + x11-apps/*|x11-wm/*) XORG_MODULE=app/ ;;
    + x11-misc/*|x11-themes/*) XORG_MODULE=util/ ;;
    + x11-base/*) XORG_MODULE=xserver/ ;;
    + x11-drivers/*) XORG_MODULE=driver/ ;;
    + x11-libs/*) XORG_MODULE=lib/ ;;
    + *) XORG_MODULE= ;;
    + esac
    +fi
    +
    +# @ECLASS_VARIABLE: XORG_PACKAGE_NAME
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# For git checkout the git repository might differ from package name.
    +# This variable can be used for proper directory specification
    +: "${XORG_PACKAGE_NAME:=${PN}}"
    +
    +HOMEPAGE="https://www.x.org/wiki/ https://gitlab.freedesktop.org/xorg/${XORG_MODULE}${XORG_PACKAGE_NAME}"
    +
    +# @ECLASS_VARIABLE: XORG_TARBALL_SUFFIX
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Most X11 projects provide tarballs as tar.xz. This eclass defaults to xz.
    +: "${XORG_TARBALL_SUFFIX:="xz"}"
    +
    +if [[ ${PV} == *9999* ]]; then
    + : "${EGIT_REPO_URI:="https://gitlab.freedesktop.org/xorg/${XORG_MODULE}${XORG_PACKAGE_NAME}.git"}"
    +elif [[ -n ${XORG_BASE_INDIVIDUAL_URI} ]]; then
    + SRC_URI="${XORG_BASE_INDIVIDUAL_URI}/${XORG_MODULE}${P}.tar.${XORG_TARBALL_SUFFIX}"
    +fi
    +
    +: "${SLOT:=0}"
    +
    +# Set the license for the package. This can be overridden by setting
    +# LICENSE after the inherit. Nearly all FreeDesktop-hosted X packages
    +# are under the MIT license.
    +: "${LICENSE:=MIT}"
    +
    +if [[ ${PN} == xf86-video-* || ${PN} == xf86-input-* ]]; then
    + DEPEND+=" x11-base/xorg-proto"
    + RDEPEND+=" x11-base/xorg-server:="
    + COMMON_DEPEND+=" >=x11-base/xorg-server-1.20[xorg]"
    + [[ ${PN} == xf86-video-* ]] && COMMON_DEPEND+=" >=x11-libs/libpciaccess-0.14"
    +fi
    +BDEPEND+=" virtual/pkgconfig"
    +
    +# @ECLASS_VARIABLE: XORG_DOC
    +# @PRE_INHERIT
    +# @DESCRIPTION:
    +# Controls the installation of man3 developer documentation. Possible values
    +# are the name of the useflag or "no". Default value is "no".
    +: "${XORG_DOC:="no"}"
    +
    +case ${XORG_DOC} in
    + no)
    + ;;
    + *)
    + IUSE+=" ${XORG_DOC}"
    + ;;
    +esac
    +
    +DEPEND+=" ${COMMON_DEPEND}"
    +RDEPEND+=" ${COMMON_DEPEND}"
    +unset COMMON_DEPEND
    +
    +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: DEPEND=${DEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: RDEPEND=${RDEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: PDEPEND=${PDEPEND}" +debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: BDEPEND=${BDEPEND}"
    +
    +# @FUNCTION: xorg-meson_src_unpack
    +# @DESCRIPTION:
    +# Simply unpack source code.
    +xorg-meson_src_unpack() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${PV} == *9999* ]]; then
    + git-r3_src_unpack
    + else
    + unpack ${A}
    + fi
    +}
    +
    +# @FUNCTION: xorg-meson_flags_setup
    +# @DESCRIPTION:
    +# Set up CFLAGS for a debug build

    Make this an internal function, maybe?

    Thanks, fixed.

    +xorg-meson_flags_setup() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + # Hardened flags break module autoloading et al (also fixes #778494) + if [[ ${PN} == xorg-server || ${PN} == xf86-video-* || ${PN} == xf86-input-* ]]; then
    + filter-flags -fno-plt
    + append-ldflags -Wl,-z,lazy
    + fi
    +}
    +
    +# @VARIABLE: XORG_CONFIGURE_OPTIONS
    +# @DESCRIPTION:
    +# Array of an additional options to pass to meson setup.
    +# @DEFAULT_UNSET
    +
    +# @FUNCTION: xorg-meson_src_configure
    +# @DESCRIPTION:
    +# Perform any necessary pre-configuration steps, then run configure +xorg-meson_src_configure() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + xorg-meson_flags_setup
    +
    + local emesonargs=(
    + -Ddefault_library=shared
    + "${XORG_CONFIGURE_OPTIONS[@]}"
    + )
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_configure "$@"

    If you wanted, you could (earlier on) set ${_XORG_MESON} or something,
    and then use that like:
    ${_XORG_MESON}_src_configure
    ... but who cares.

    After removing the src_compile implementation, there are only two
    instances so I'll just keep it as-is for now.

    + else
    + meson_src_configure "$@"
    + fi
    +}
    +
    +# @FUNCTION: xorg-meson_src_compile
    +# @DESCRIPTION:
    +# Compile a package, performing all X-related tasks. +xorg-meson_src_compile() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_compile "$@"
    + else
    + meson_src_compile "$@"
    + fi
    +}
    +

    You're missing src_test? Does it Just Work? (If so, why do we need xorg-meson_src_compile then?)

    Ah, good catch. Indeed, we don't need src_test nor src_compile.
    Removed src_compile.

    +# @FUNCTION: xorg-meson_src_install
    +# @DESCRIPTION:
    +# Install a built package to ${D}, performing any necessary steps. +xorg-meson_src_install() {
    + debug-print-function ${FUNCNAME} "$@"
    +
    + if [[ ${XORG_MULTILIB} == yes ]]; then
    + meson-multilib_src_install "$@"
    + else
    + meson_src_install "$@"
    + fi
    +
    + # Many X11 libraries unconditionally install developer documentation + if [[ -d "${D}"/usr/share/man/man3 ]]; then

    ${ED} and below

    Thanks, fixed.


    + ! in_iuse doc && eqawarn "ebuild should set XORG_DOC=doc since package installs man3 documentation"
    + fi
    +
    + if in_iuse doc && ! use doc; then
    + rm -rf "${D}"/usr/share/man/man3
    + rmdir "${D}"/usr{/share{/man,},} 2>/dev/null
    + fi
    +}
    +
    +fi
    +
    +EXPORT_FUNCTIONS src_configure src_unpack src_compile src_install

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)