From 4d471072dfa9d8717f99e685ff88470930ae1e94 Mon Sep 17 00:00:00 2001 From: Vadim Misbakh-Soloviov Date: Tue, 22 Sep 2020 12:29:57 +0700 Subject: app-eselect/eselect-luajit: added Package-Manager: Portage-3.0.6, Repoman-3.0.1 Signed-off-by: Vadim Misbakh-Soloviov --- app-eselect/eselect-luajit/eselect-luajit-1.ebuild | 24 ++++ app-eselect/eselect-luajit/files/luajit-1.eselect | 141 +++++++++++++++++++++ app-eselect/eselect-luajit/metadata.xml | 10 ++ 3 files changed, 175 insertions(+) create mode 100644 app-eselect/eselect-luajit/eselect-luajit-1.ebuild create mode 100644 app-eselect/eselect-luajit/files/luajit-1.eselect create mode 100644 app-eselect/eselect-luajit/metadata.xml (limited to 'app-eselect/eselect-luajit') diff --git a/app-eselect/eselect-luajit/eselect-luajit-1.ebuild b/app-eselect/eselect-luajit/eselect-luajit-1.ebuild new file mode 100644 index 000000000000..a68f42f7e2e7 --- /dev/null +++ b/app-eselect/eselect-luajit/eselect-luajit-1.ebuild @@ -0,0 +1,24 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DESCRIPTION="Manages LuaJIT symlinks" +HOMEPAGE="https://www.gentoo.org/" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux" +IUSE="" + +RDEPEND=" + >=app-admin/eselect-1.2.4 +" + +S="${WORKDIR}" + +src_install() { + insinto /usr/share/eselect/modules + newins "${FILESDIR}/luajit-${PV}.eselect" luajit.eselect || die "newins failed" +} diff --git a/app-eselect/eselect-luajit/files/luajit-1.eselect b/app-eselect/eselect-luajit/files/luajit-1.eselect new file mode 100644 index 000000000000..327e3d73a9ec --- /dev/null +++ b/app-eselect/eselect-luajit/files/luajit-1.eselect @@ -0,0 +1,141 @@ +# -*-eselect-*- vim: ft=eselect +# Copyright 2005-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 or later +# $Id: luajit.eselect mva $ + +inherit config multilib + +DESCRIPTION="Manage the LuaJIT symlink" +MAINTAINER="mva@gentoo.org" +VERSION="1" + +# sort function for luajit versions, to be used in a pipe +sort_luajit_versions() { + local vsort="sort --version-sort" + ${vsort} /dev/null || vsort=sort + sed -e 's/^\(luajit-\)\?\([[:digit:].]\+\)[-_]beta/\2 0 &/' \ + -e 't;s/^\(luajit-\)\?\([[:digit:].]\+\)/\2 1 &/' \ + | LC_ALL=C ${vsort} | sed 's/.* //' +} + +# find a list of luajit symlink targets +find_targets() { + local f + for f in $(find "${EROOT}"/usr/bin/ -type f -iname 'luajit-[[:digit:]]*'); do + basename "${f}" + done | sort_luajit_versions +} + +get_libdirs() { + local dir libdirs + for dir in $(list_libdirs); do + [[ -L ${EROOT}/usr/${dir} ]] && continue + ls "${EROOT}"/usr/${dir}/libluajit*.* > /dev/null 2>&1 || continue + + libdirs+=' '/usr/${dir} + done + echo ${libdirs:-/usr/lib} +} + + +# remove the luajit symlink +remove_symlinks() { + for dir in $(get_libdirs) ; do + [[ -L "${dir}/libluajit-5.1.so" ]] && rm "${dir}/libluajit-5.1.so" + [[ -L "${dir}/libluajit-5.1.a" ]] && rm "${dir}/libluajit-5.1.a" + [[ -L "${dir}/pkgconfig/luajit.pc" ]] && rm "${dir}/pkgconfig/luajit.pc" + done + [[ -L "${EROOT}/usr/bin/luajit" ]] && rm "${EROOT}/usr/bin/luajit" + rm -f "${EROOT}"/usr/share/man/man1/luajit.1{,.gz,.bz2,.lzma} &>/dev/null +} + +# set the luajit symlink +set_symlinks() { + local target=$1 + + if is_number "${target}"; then + local targets=( $(find_targets) ) + target=${targets[target-1]} + fi + + if [[ -z ${target} ]]; then + die -q "Target \"$1\" doesn't appear to be valid!" + elif [[ -f ${EROOT}/usr/bin/${target} ]]; then + ln -s "${target}" "${EROOT}/usr/bin/luajit" + for dir in $(get_libdirs) ; do + [[ -e "${dir}/lib${target}.so" ]] && ln -s "lib${target}.so" "${dir}/libluajit-5.1.so" + [[ -e "${dir}/lib${target}.a" ]] && ln -s "lib${target}.a" "${dir}/libluajit-5.1.a" + [[ -e "${dir}/pkgconfig/${target}.pc" ]] && ln -s "${target}.pc" "${dir}/pkgconfig/luajit.pc" + done + for orig in "${EROOT}"/usr/share/man/man1/$target.1* ; do + ln -s "$(basename ${orig})" "${orig/$target/luajit}" + done + else + die -q "Target \"$1\" doesn't appear to be valid!" + fi +} + +### show action ### + +describe_show() { + echo "Show the current luajit symlink" +} + +do_show() { + write_list_start "Current luajit symlink:" + if [[ -L ${EROOT}/usr/bin/luajit ]]; then + local SV=$(readlink "${EROOT}/usr/bin/luajit") + write_kv_list_entry "${SV%/}" + else + write_kv_list_entry "(unset)" + fi +} + +### list action ### + +describe_list() { + echo "List available luajit symlink targets" +} + +do_list() { + local i targets=( $(find_targets) ) + + write_list_start "Available luajit symlink targets:" + local SV=$(readlink "${EROOT}/usr/bin/luajit") + for (( i = 0; i < ${#targets[@]}; i++ )); do + [[ ${targets[i]} = \ + $(basename "${SV}") ]] \ + && targets[i]=$(highlight_marker "${targets[i]}") + done + write_numbered_list -m "(none found)" "${targets[@]}" +} + +### set action ### + +describe_set() { + echo "Set a new luajit symlink target" +} + +describe_set_parameters() { + echo "" +} + +describe_set_options() { + echo "target : Target name or number (from 'list' action)" +} + +do_set() { + [[ -z $1 ]] && die -q "You didn't tell me what to set the symlink to" + [[ $# -gt 1 ]] && die -q "Too many parameters" + + if [[ -L ${EROOT}/usr/bin/luajit ]]; then + # existing symlink + remove_symlinks || die -q "Couldn't remove existing symlink" + set_symlinks "$1" || die -q "Couldn't set a new symlink" + elif [[ -e ${EROOT}/usr/bin/luajit ]]; then + # we have something strange + die -q "${EROOT}/usr/bin/luajit exists but is not a symlink" + else + set_symlinks "$1" || die -q "Couldn't set a new symlink" + fi +} diff --git a/app-eselect/eselect-luajit/metadata.xml b/app-eselect/eselect-luajit/metadata.xml new file mode 100644 index 000000000000..d16e4728b93f --- /dev/null +++ b/app-eselect/eselect-luajit/metadata.xml @@ -0,0 +1,10 @@ + + + + + mva@gentoo.org + Vadim Misbakh-Soloviov + + eselect-module for choosing default LuaJIT interpreter + eselect-модуль для выбора интерпретатора LuaJIT по умолчанию + -- cgit v1.2.3-65-gdbad