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 (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id E9A7E15A7D9 for ; Sat, 18 Mar 2023 21:45:52 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id ED4AEE0882; Sat, 18 Mar 2023 21:45:51 +0000 (UTC) Received: from smtp.gentoo.org (dev.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) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id CAE85E0882 for ; Sat, 18 Mar 2023 21:45:51 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id D7DE9341205 for ; Sat, 18 Mar 2023 21:45:50 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 034148D5 for ; Sat, 18 Mar 2023 21:45:49 +0000 (UTC) From: "James Le Cuirot" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "James Le Cuirot" Message-ID: <1679175879.7174cefafde328549353f72f365032df71524e3e.chewi@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: app-eselect/eselect-lapack/files/, app-eselect/eselect-lapack/ X-VCS-Repository: repo/gentoo X-VCS-Files: app-eselect/eselect-lapack/eselect-lapack-0.3.ebuild app-eselect/eselect-lapack/files/lapack.eselect-0.3 X-VCS-Directories: app-eselect/eselect-lapack/files/ app-eselect/eselect-lapack/ X-VCS-Committer: chewi X-VCS-Committer-Name: James Le Cuirot X-VCS-Revision: 7174cefafde328549353f72f365032df71524e3e X-VCS-Branch: master Date: Sat, 18 Mar 2023 21:45:49 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 86156421-9646-4313-b148-2905a7ea65f0 X-Archives-Hash: 30ffe9fd3af6d3fa2237c22e2d01d668 commit: 7174cefafde328549353f72f365032df71524e3e Author: James Le Cuirot gentoo org> AuthorDate: Mon Feb 27 23:35:10 2023 +0000 Commit: James Le Cuirot gentoo org> CommitDate: Sat Mar 18 21:44:39 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7174cefa app-eselect/eselect-lapack: Bump to fix ROOT handling and apply quoting The module assumed that ROOT should be present in LDPATH variable of the generated config files. This makes no sense because ROOT is not applicable at runtime. Signed-off-by: James Le Cuirot gentoo.org> .../eselect-lapack/eselect-lapack-0.3.ebuild | 27 ++++ .../eselect-lapack/files/lapack.eselect-0.3 | 167 +++++++++++++++++++++ 2 files changed, 194 insertions(+) diff --git a/app-eselect/eselect-lapack/eselect-lapack-0.3.ebuild b/app-eselect/eselect-lapack/eselect-lapack-0.3.ebuild new file mode 100644 index 000000000000..ace0c922c6fa --- /dev/null +++ b/app-eselect/eselect-lapack/eselect-lapack-0.3.ebuild @@ -0,0 +1,27 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DESCRIPTION="LAPACK module for eselect" +HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="" + +# Need skel.bash lib +RDEPEND=( ">=app-admin/eselect-1.0.5" ) +DEPEND="${RDEPEND}" + +S="${WORKDIR}" + +src_install() { + local MODULEDIR="/usr/share/eselect/modules" + local MODULE="lapack" + insinto ${MODULEDIR} + newins "${FILESDIR}"/${MODULE}.eselect-${PVR} ${MODULE}.eselect + doman "${FILESDIR}"/lapack.eselect.5 +} diff --git a/app-eselect/eselect-lapack/files/lapack.eselect-0.3 b/app-eselect/eselect-lapack/files/lapack.eselect-0.3 new file mode 100644 index 000000000000..f3fd6619f22f --- /dev/null +++ b/app-eselect/eselect-lapack/files/lapack.eselect-0.3 @@ -0,0 +1,167 @@ +# -*-eselect-*- vim: ft=eselect +# Copyright 2019-2023 Gentoo Authors +# Distributed under the terms of the GNU GPL version 2 or later + +inherit config tests multilib skel + +MODULE="LAPACK" +IFACE="lapack" +DESCRIPTION="Manage installed alternatives of $MODULE shared objects" +MAINTAINER="lumin@debian.org" +VERSION="0.3" + +### helper utility to find all available LAPACK implementations +find_targets_in() { + [[ $# -eq 1 ]] || die -q "in which libdir?" + + local cand + for cand in "${EROOT}/etc/env.d/lapack/$1"/*; do + [[ "config" = $(basename ${cand}) ]] && continue + [[ -r ${cand} ]] && basename ${cand} + done +} + +### helper utility to validate a LAPACK library directory +validate_lapacklibdir() { + [[ -d $1 ]] || return 2 # dir doesn't exist + [[ -r "${1}/liblapack.so.3" ]] && [[ -r "${1}/liblapack.so" ]] \ + || return 1 +} + +### show action +do_show() { + # do_show -- show both lib64 and lib32 selection + # do_show libxx -- show libxx selection + local libdir cur libdirs=( $(list_libdirs) ) + + # if manually specified libdirs + if [[ ! $# -eq 0 ]]; then + for libdir in $@; do + has $libdir ${libdirs[@]} || die -q "invalid libdir '$libdir'!" + done + libdirs=( $@ ) + fi + + for libdir in ${libdirs[@]}; do + [[ ! -d ${EROOT}/usr/$libdir ]] && continue + [[ ! -r ${EROOT}/etc/env.d/lapack/${libdir}/config ]] && continue + cur=$(load_config "${EROOT}"/etc/env.d/lapack/${libdir}/config CURRENT) + echo ${libdir}: $cur + done +} + +### list action +do_list() { + local i cur targets + local libdir libdirs=( $(list_libdirs) ) + + # if manually specified libdirs + if [[ ! $# -eq 0 ]]; then + for libdir in $@; do + has $libdir ${libdirs[@]} || die -q "invalid libdir '$libdir'!" + done + libdirs=( $@ ) + fi + + for libdir in ${libdirs[@]}; do + [[ ! -d ${EROOT}/usr/$libdir ]] || [[ -L ${EROOT}/usr/$libdir ]] && continue + targets=( $(find_targets_in $libdir) ) + cur=$(load_config "${EROOT}"/etc/env.d/lapack/${libdir}/config CURRENT) + + write_list_start "Available LAPACK ($libdir) candidates:" + for (( i = 0; i < ${#targets[@]}; i++ )); do + [[ ${targets[i]} = $cur ]] \ + && targets[i]=$(highlight_marker "${targets[i]}") + done + write_numbered_list -m "(none found)" "${targets[@]}" + done +} + +### validate action +describe_validate() { + echo "validate candidates and remove invalid ones" +} + +do_validate() { + local i ldpath targets target candidate + local libdir libdirs=( $(list_libdirs) ) + for libdir in ${libdirs[@]}; do + [[ ! -d ${EROOT}/usr/$libdir ]] || [[ -L ${EROOT}/usr/$libdir ]] && continue + targets=( $(find_targets_in $libdir) ) + for target in ${targets[@]}; do + candidate=${EROOT}/etc/env.d/lapack/${libdir}/${target} + ldpath=$(load_config "$candidate" LDPATH) + if ! validate_lapacklibdir "${ROOT}/$ldpath"; then + echo "Removing invalid LAPACK candidate ($candidate) ..." + rm -v "$candidate" + fi + done + done +} + +### set action + +describe_set() { + echo "Activate one of the installed $MODULE implementations" +} + +describe_set_parameters() { + echo "[] " +} + +describe_set_options() { + echo "libdir: lib64 or lib32. Will use the native one when omitted." + echo "implementation : implementation name or number (from 'list' action)" +} + +do_set() { + local libdirs=( $(list_libdirs) ) + local targets libdir ldconf libpath impl + + # check argument existence + [[ $# -eq 1 ]] || [[ $# -eq 2 ]] || \ + die -q "Please specify [] to activate!" + # read argumenets + if [[ $# -eq 2 ]]; then libdir="$1"; else libdir="$(get_libdir)"; fi + if [[ $# -eq 2 ]]; then impl="$2"; else impl="$1"; fi + # validate arguments + has "$libdir" "${libdirs[@]}" || die -q "Invalid libdir ($libdir) !" + targets=( $(find_targets_in $libdir) ) + if ! has "$impl" "${targets[@]}"; then + if [[ ${impl} -gt 0 ]] && [[ ${impl} -le ${#targets[@]} ]]; then + impl=${targets[(${impl} - 1)]} + else + die -q "Invalid impl ($impl) !" + fi + fi + # store the configuration to env.d + store_config "${EROOT}"/etc/env.d/lapack/${libdir}/config CURRENT "${impl}" + # generate ld.so.conf file + ldconf="${EROOT}/etc/ld.so.conf.d/82-lapack-${libdir}.conf" + libpath=$(load_config ${EROOT}/etc/env.d/lapack/${libdir}/${impl} LDPATH) + truncate -s0 "$ldconf" + echo "# Auto-generated by eselect::lapack. DON'T EDIT." >> "$ldconf" + echo "$libpath" >> "$ldconf" + + # refresh cache. env-update will call ldconfig (see + # portage::env_update.py) so we don't need to call it explicitly. + env-update +} + +### add action +describe_add_parameters() { + echo " " +} + +describe_add_options() { + echo "libdir : library directory where $MODULE implementation is installed (lib, lib64, etc.)" + echo "dir : directory containing liblapack.so{.3}" + echo "impl : name of the $MODULE implementation" +} + +do_add() { + [[ $# -eq 3 ]] \ + || die -q "Please specify to activate!" + validate_lapacklibdir "${ROOT}/$2" || die -q "invalid lapack libdir!" + store_config "${EROOT}/etc/env.d/lapack/$1/$3" LDPATH "$2" +}