From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 0950A1580FD for ; Sat, 21 Dec 2024 16:02:06 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 8EF62E0990; Sat, 21 Dec 2024 16:01:01 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 55388E0986 for ; Sat, 21 Dec 2024 16:01:01 +0000 (UTC) From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= To: gentoo-dev@lists.gentoo.org Cc: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Subject: [gentoo-dev] [PATCH 03/11] HACK! llvm-r1 -> llvm-r2 (to ease testing) Date: Sat, 21 Dec 2024 16:48:36 +0100 Message-ID: <20241221160053.780079-4-mgorny@gentoo.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241221160053.780079-1-mgorny@gentoo.org> References: <20241221160053.780079-1-mgorny@gentoo.org> Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Archives-Salt: b72360c8-ef2f-4a99-9672-b7637c421fef X-Archives-Hash: ec1018c70b82cae06661fc7e521aa539 --- eclass/llvm-r1.eclass | 201 +----------------------------------------- 1 file changed, 2 insertions(+), 199 deletions(-) diff --git a/eclass/llvm-r1.eclass b/eclass/llvm-r1.eclass index e59bd9c317b9..79fe63df3f96 100644 --- a/eclass/llvm-r1.eclass +++ b/eclass/llvm-r1.eclass @@ -47,207 +47,10 @@ esac if [[ -z ${_LLVM_R1_ECLASS} ]]; then _LLVM_R1_ECLASS=1 -inherit llvm-utils +inherit llvm-r2 -# == internal control knobs == - -# @ECLASS_VARIABLE: _LLVM_OLDEST_SLOT -# @INTERNAL -# @DESCRIPTION: -# Oldest supported LLVM slot. This is used to automatically filter out -# unsupported LLVM_COMPAT values. -_LLVM_OLDEST_SLOT=15 - -# @ECLASS_VARIABLE: _LLVM_NEWEST_STABLE -# @INTERNAL -# @DESCRIPTION: -# The newest stable LLVM version. Versions newer than that won't -# be automatically enabled via USE defaults. -_LLVM_NEWEST_STABLE=19 - -# == control variables == - -# @ECLASS_VARIABLE: LLVM_COMPAT -# @PRE_INHERIT -# @REQUIRED -# @DESCRIPTION: -# A list of LLVM slots supported by the package, oldest to newest. -# -# Example: -# @CODE -# LLVM_COMPAT=( {15..17} ) -# @CODE - -# @ECLASS_VARIABLE: LLVM_OPTIONAL -# @PRE_INHERIT -# @DEFAULT_UNSET -# @DESCRIPTION: -# If set to a non-empty value, disables setting REQUIRED_USE -# and exporting pkg_setup. You have to add LLVM_REQUIRED_USE and call -# pkg_setup manually, with appropriate USE conditions. - -# == global metadata == - -# @ECLASS_VARIABLE: LLVM_REQUIRED_USE -# @OUTPUT_VARIABLE -# @DESCRIPTION: -# An eclass-generated REQUIRED_USE string that enforces selecting -# exactly one slot. It LLVM_OPTIONAL is set, it needs to be copied -# into REQUIRED_USE, under appropriate USE conditions. Otherwise, -# it is added automatically. - -# @ECLASS_VARIABLE: LLVM_USEDEP -# @OUTPUT_VARIABLE -# @DESCRIPTION: -# An eclass-generated USE dependency string that can be applied to other -# packages using the same eclass, to enforce a LLVM slot match. - -_llvm_set_globals() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${LLVM_COMPAT@a} != *a* ]]; then - die "LLVM_COMPAT must be set to an array before inheriting ${ECLASS}" - fi - - local stable=() unstable=() - local x - for x in "${LLVM_COMPAT[@]}"; do - if [[ ${x} -gt ${_LLVM_NEWEST_STABLE} ]]; then - unstable+=( "${x}" ) - elif [[ ${x} -ge ${_LLVM_OLDEST_SLOT} ]]; then - stable+=( "${x}" ) - fi - done - - _LLVM_SLOTS=( "${stable[@]}" "${unstable[@]}" ) - if [[ ! ${_LLVM_SLOTS[@]} ]]; then - die "LLVM_COMPAT does not contain any valid versions (all older than ${_LLVM_OLDEST_SLOT}?)" - fi - - if [[ ${stable[@]} ]]; then - # If there is at least one stable slot supported, then enable - # the newest stable slot by default. - IUSE="+llvm_slot_${stable[-1]}" - unset 'stable[-1]' - else - # Otherwise, enable the "oldest" ~arch slot. We really only - # expect a single ~arch version, so this primarily prevents - # defaulting to non-keyworded slots. - IUSE="+llvm_slot_${unstable[0]}" - unset 'unstable[0]' - fi - local nondefault=( "${stable[@]}" "${unstable[@]}" ) - IUSE+=" ${nondefault[*]/#/llvm_slot_}" - - local flags=( "${_LLVM_SLOTS[@]/#/llvm_slot_}" ) - LLVM_REQUIRED_USE="^^ ( ${flags[*]} )" - local usedep_flags=${flags[*]/%/(-)?} - LLVM_USEDEP=${usedep_flags// /,} - readonly LLVM_REQUIRED_USE LLVM_USEDEP - - if [[ ! ${LLVM_OPTIONAL} ]]; then - REQUIRED_USE=${LLVM_REQUIRED_USE} - fi -} -_llvm_set_globals -unset -f _llvm_set_globals - -# == metadata helpers == - -# @FUNCTION: llvm_gen_dep -# @USAGE: -# @DESCRIPTION: -# Output a dependency block, repeating "" conditionally -# to all llvm_slot_* USE flags. Any occurences of '${LLVM_SLOT}' -# within the block will be substituted for the respective slot. -# -# Example: -# @CODE -# DEPEND=" -# $(llvm_gen_dep ' -# llvm-core/clang:${LLVM_SLOT}= -# llvm-core/llvm:${LLVM_SLOT}= -# ') -# " -# @CODE -llvm_gen_dep() { - debug-print-function ${FUNCNAME} "$@" - - [[ ${#} -ne 1 ]] && die "Usage: ${FUNCNAME} " - - local dep=${1} - - local slot - for slot in "${_LLVM_SLOTS[@]}"; do - echo "llvm_slot_${slot}? ( ${dep//\$\{LLVM_SLOT\}/${slot}} )" - done -} - -# == ebuild helpers == - -# @FUNCTION: get_llvm_prefix -# @USAGE: [-b|-d] -# @DESCRIPTION: -# Output the path to the selected LLVM slot. -# -# With no option or "-d", the path is prefixed by ESYSROOT. LLVM -# dependencies should be in DEPEND then. -# -# With "-b" option, the path is prefixed by BROOT. LLVM dependencies -# should be in BDEPEND then. -get_llvm_prefix() { - debug-print-function ${FUNCNAME} "$@" - - [[ ${#} -gt 1 ]] && die "Usage: ${FUNCNAME} [-b|-d]" - - local prefix - case ${1--d} in - -d) - prefix=${ESYSROOT} - ;; - -b) - prefix=${BROOT} - ;; - *) - die "${FUNCNAME}: invalid option: ${1}" - ;; - esac - - echo "${prefix}/usr/lib/llvm/${LLVM_SLOT}" -} - -# @FUNCTION: llvm-r1_pkg_setup -# @DESCRIPTION: -# Prepend the appropriate executable directory for the selected LLVM -# slot to PATH. -# -# The PATH manipulation is only done for source builds. The function -# is a no-op when installing a binary package. -# -# If any other behavior is desired, the contents of the function -# should be inlined into the ebuild and modified as necessary. -# -# Note that this function is not exported if LLVM_OPTIONAL is set. -# In that case, it needs to be called manually. llvm-r1_pkg_setup() { - debug-print-function ${FUNCNAME} "$@" - - if [[ ${MERGE_TYPE} != binary ]]; then - [[ -z ${LLVM_SLOT} ]] && die "LLVM_SLOT unset (broken USE_EXPAND?)" - - llvm_fix_clang_version CC CPP CXX - # keep in sync with profiles/features/llvm/make.defaults! - llvm_fix_tool_path ADDR2LINE AR AS LD NM OBJCOPY OBJDUMP RANLIB - llvm_fix_tool_path READELF STRINGS STRIP - - # Set LLVM_CONFIG to help Meson (bug #907965) but only do it - # for empty ESYSROOT (as a proxy for "are we cross-compiling?"). - if [[ -z ${ESYSROOT} ]] ; then - llvm_fix_tool_path LLVM_CONFIG - fi - - llvm_prepend_path "${LLVM_SLOT}" - fi + llvm-r2_pkg_setup } fi -- 2.47.1