diff options
Diffstat (limited to 'app-eselect')
-rw-r--r-- | app-eselect/Manifest.gz | bin | 6704 -> 6869 bytes | |||
-rw-r--r-- | app-eselect/eselect-guile/Manifest | 3 | ||||
-rw-r--r-- | app-eselect/eselect-guile/eselect-guile-20250224.ebuild | 19 | ||||
-rw-r--r-- | app-eselect/eselect-guile/files/guile-20250224.eselect | 147 | ||||
-rw-r--r-- | app-eselect/eselect-guile/metadata.xml | 9 |
5 files changed, 178 insertions, 0 deletions
diff --git a/app-eselect/Manifest.gz b/app-eselect/Manifest.gz Binary files differindex 4b3fddc331ac..3665e84470e3 100644 --- a/app-eselect/Manifest.gz +++ b/app-eselect/Manifest.gz diff --git a/app-eselect/eselect-guile/Manifest b/app-eselect/eselect-guile/Manifest new file mode 100644 index 000000000000..b325ca0927f8 --- /dev/null +++ b/app-eselect/eselect-guile/Manifest @@ -0,0 +1,3 @@ +AUX guile-20250224.eselect 3837 BLAKE2B ec6bde67b30169e7ba3513e3d1d47cc2ef9bc13739fa34a81dc76f5a0c00f8299823d538e0fbc75ad7c9a7da34267497f3d39bbc3c1680ac8afd296b2da1bf29 SHA512 a9ab1f5c03ffa8b13c64ac2ec438b6f4226367dfcee26c5d02b12868f7eeafe06815e2a6d78fc2a0b20edf2f0a680821b8a25772059b42d73d85e9804d3edfe0 +EBUILD eselect-guile-20250224.ebuild 546 BLAKE2B fdddb395bbb3d072e60200f5dc9d05da14cd08271351984b252a8d1984a637b62a0ce225a1c10b6da55a8eb10bd63ed75335d162ea2dd5c02861ccdb6abebf15 SHA512 4b0e2f052c0e8087b8e66421ac9ab7fac94d16282bbe2c91a4d8695a8557b15ff8163abbb48131769d4403b62df75962169a6ebdb17a516356415da90f7e634f +MISC metadata.xml 287 BLAKE2B a5d87cd5b45deceb4c11e1daad0f08b86a605c38c22e5baf532d02a91348da05872326860e92a0ba500a2c0ba6c40e380c1846bbe3ee571b88dc1aef74c56ee4 SHA512 bf03bb378c312b1915b60e50187c7bdcba534047366497335b4289b8fab8641093925a1935f7a239a2479ce1aed792d7789be54cf1a8525aa56bb57a7ccb5d1d diff --git a/app-eselect/eselect-guile/eselect-guile-20250224.ebuild b/app-eselect/eselect-guile/eselect-guile-20250224.ebuild new file mode 100644 index 000000000000..ec4f89cdd23b --- /dev/null +++ b/app-eselect/eselect-guile/eselect-guile-20250224.ebuild @@ -0,0 +1,19 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="GNU Guile eselect module" +HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage" +S="${WORKDIR}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos" + +RDEPEND="app-admin/eselect" + +src_install() { + insinto /usr/share/eselect/modules/ + newins "${FILESDIR}"/guile-"${PV}".eselect guile.eselect +} diff --git a/app-eselect/eselect-guile/files/guile-20250224.eselect b/app-eselect/eselect-guile/files/guile-20250224.eselect new file mode 100644 index 000000000000..e0cd774077c1 --- /dev/null +++ b/app-eselect/eselect-guile/files/guile-20250224.eselect @@ -0,0 +1,147 @@ +# -*-eselect-*- vim: ft=eselect +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU GPL version 2 or later + +DESCRIPTION="Manage the selected GNU Guile installation" +MAINTAINER="scheme@gentoo.org" +VERSION="20250224" + +# List of all tools all GNU Guile versions install. Some GNU Guile versions +# don't have some of the tools (1.8 lacks 'guild'), but that's fine. +ALL_GUILE_TOOLS=( + guile{,-{config,snarf,tools}} + guild +) + + +find_versions() { + local f + for f in "${EROOT}"/usr/share/guile-data/*; do + [[ -d "${f}" ]] && echo "${f##*/}" + done +} + + +# Checks whether guile, guile-config, guile-snarf, guild and guile-tools exist +# and are not symlinks. Execute before filesystem operations. +safety_check() { + local f + # XXX: Tools listing. + for f in "${ALL_GUILE_TOOLS[@]}"; do + f="${EROOT}"/usr/bin/"${f}" + [[ -L "${f}" || ! -e "${f}" ]] \ + || die -q "!!! File \"${f}\" exists and is not a symbolic link! \ +Giving up, so that I don't trample anything." + done +} + + +# Usage: set_version USER_SELECTION +# If USER_SELECTION is a number, treat it as an index into the version list, +# otherwise treat it as a version. +set_version() { + local sel="$1" + if is_number "${sel}"; then + local versions=( $(find_versions) ) + sel="${versions[sel - 1]}" + fi + + [[ -z "${sel}" || ! -d "${EROOT}"/usr/share/guile-data/"${sel}" ]] \ + && die -q "Target \"$1\" does not appear to be valid" + + safety_check + + local tool + for tool in "${ALL_GUILE_TOOLS[@]}"; do + rm -f "${EROOT}"/usr/bin/"${tool}" + if [[ -x "${EROOT}"/usr/bin/"${tool}-${sel}" ]]; then + ln -s "${tool}-${sel}" "${EROOT}"/usr/bin/"${tool}" + fi + done +} + +# Usage: get_current FALLBACK +# Fallback defaults to UNDEFINED, which should be sufficiently invalid for +# [[ = ]]. +get_current() { + local current_lnk + if current_lnk="$(readlink "${EROOT}"/usr/bin/guile)"; then + echo "${current_lnk#guile-}" + else + echo "${1:-UNDEFINED}" + fi +} + + +### Actions ### +describe_list() { echo "List installed GNU Guile versions"; } +do_list() { + local vers=( $(find_versions) ) + local ver current i + + current="$(get_current)" + for (( i = 0; i < ${#vers[@]}; i++ )); do + [[ "${current}" == "${vers[i]}" ]] \ + && vers[i]="$(highlight_marker "${vers[i]}")" + done + + write_list_start "Available GNU Guile versions" + write_numbered_list \ + -m "(none installed; emerge a dev-scheme/guile today!)" \ + "${vers[@]}" +} + +describe_show() { echo "Get currently selected GNU Guile version"; } +do_show() { + write_list_start "Currently selected GNU Guile version" + write_kv_list_entry "$(get_current '(none selected)')" "" +} + +describe_set() { echo "Select an active version of GNU Guile"; } +describe_set_parameters() { echo "<target>"; } +describe_set_options() { + echo "target : Guile version or number (from 'list' action)" +} +do_set() { + [[ -z $1 ]] && die -q "You didn't name your choice!" + [[ $# -gt 1 ]] && die -q "Too many parameters" + set_version "$1" +} + +describe_unset() { echo "Remove GNU Guile selection"; } +do_unset() { + safety_check + for tool in "${ALL_GUILE_TOOLS[@]}"; do + rm -f "${EROOT}"/usr/bin/"${tool}" + done +} + +describe_update() { echo "Perform post-install/remove selection"; } +do_update() { + local vers=( $(find_versions) ) + + if [[ ${#vers[@]} -eq 0 ]]; then + # No more versions left. Clean up after ourselves and leave + write_warning_msg "No GNU Guile versions installed. Unsetting." + do_unset + return + fi + + if [[ -L "${EROOT}"/usr/bin/guile + && -e "${EROOT}"/usr/bin/guile ]]; then + # The user made a choice, and the choice is still valid. Respect it. + return + fi + + # Set latest. + IFS=$'\n' LC_COLLATE=C vers=( $(sort -V <<< "${vers[*]}") ) + set_version "${vers[-1]}" +} + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "VERSION=\"" +# time-stamp-format: "%Y%02m%02d" +# time-stamp-end: "\"" +# time-stamp-time-zone: t +# End: diff --git a/app-eselect/eselect-guile/metadata.xml b/app-eselect/eselect-guile/metadata.xml new file mode 100644 index 000000000000..2d56aa51838e --- /dev/null +++ b/app-eselect/eselect-guile/metadata.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>scheme@gentoo.org</email> + <name>Gentoo Scheme Project</name> + </maintainer> + <stabilize-allarches/> +</pkgmetadata> |