public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/lisp:master commit in: app-admin/eselect-guile/, app-admin/eselect-guile/files/1.2/
@ 2012-10-02 20:59 Cyprien Nicolas
  0 siblings, 0 replies; only message in thread
From: Cyprien Nicolas @ 2012-10-02 20:59 UTC (permalink / raw
  To: gentoo-commits

commit:     fdf334cd86a57980c0074045170139ac932b5b59
Author:     Cyprien Nicolas (fulax) <c.nicolas+gentoo <AT> gmail <DOT> com>
AuthorDate: Tue Oct  2 20:21:33 2012 +0000
Commit:     Cyprien Nicolas <c.nicolas+gentoo <AT> gmail <DOT> com>
CommitDate: Tue Oct  2 20:21:33 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/lisp.git;a=commit;h=fdf334cd

app-admin/eselect-guile: bump to 1.2. EAPI 4, fix 'update ifunset' bug (it was ignored currently). Remove 'GUILE_LOAD_PATH' from env.d file, as it breaks the not eselect'd guile version. Drop pkg_prerm phase.

(Portage version: 2.2.0_alpha134/git/Linux i686, signed Manifest commit with key 0xBE63A96F)

---
 app-admin/eselect-guile/ChangeLog                 |   12 +
 app-admin/eselect-guile/eselect-guile-1.2.ebuild  |   29 +++
 app-admin/eselect-guile/files/1.2/guile.eselect   |  247 +++++++++++++++++++++
 app-admin/eselect-guile/files/1.2/guile.eselect.5 |   94 ++++++++
 4 files changed, 382 insertions(+), 0 deletions(-)

diff --git a/app-admin/eselect-guile/ChangeLog b/app-admin/eselect-guile/ChangeLog
new file mode 100644
index 0000000..b75ff67
--- /dev/null
+++ b/app-admin/eselect-guile/ChangeLog
@@ -0,0 +1,12 @@
+# ChangeLog for app-admin/eselect-guile
+# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
+# $Header: $
+
+*eselect-guile-1.2 (02 Oct 2012)
+
+  02 Oct 2012; Cyprien Nicolas <c.nicolas+bugs@gmail.com> +files/1.2/guile.eselect,
+  +files/1.2/guile.eselect.5, +eselect-guile-1.2.ebuild:
+  version bump: EAPI 4, fix 'update ifunset' bug (it was ignored currently).
+  Remove 'GUILE_LOAD_PATH' from env.d file, as it breaks the not eselect'd
+  guile version. Drop pkg_prerm phase.
+

diff --git a/app-admin/eselect-guile/eselect-guile-1.2.ebuild b/app-admin/eselect-guile/eselect-guile-1.2.ebuild
new file mode 100644
index 0000000..b633d45
--- /dev/null
+++ b/app-admin/eselect-guile/eselect-guile-1.2.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=4
+
+DESCRIPTION="Manage multiple Guile versions on one system"
+HOMEPAGE="http://www.gentoo.org/proj/en/lisp/scheme/"
+#SRC_URI="mirror://gentoo/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~sparc-fbsd ~x86-fbsd ~x86-freebsd ~ia64-hpux ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~x86-solaris"
+IUSE=""
+
+# Versions prior to guile-1.8.8-r2 aren't properly slotted
+DEPEND=""
+RDEPEND=">=app-admin/eselect-1.2.6
+	!<dev-scheme/guile-1.8.8-r2"
+
+# We don't have any source directory to work on.
+S="${T}"
+
+src_install() {
+	insinto /usr/share/eselect/modules
+	doins "${FILESDIR}"/${PV}/guile.eselect
+	doman "${FILESDIR}"/${PV}/guile.eselect.5
+	#dodoc ChangeLog
+}

diff --git a/app-admin/eselect-guile/files/1.2/guile.eselect b/app-admin/eselect-guile/files/1.2/guile.eselect
new file mode 100644
index 0000000..9242070
--- /dev/null
+++ b/app-admin/eselect-guile/files/1.2/guile.eselect
@@ -0,0 +1,247 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id: $
+#
+# DOCUMENTATION
+# Following actions possible
+# * show		do_show()
+# * list		do_list()
+# * set			do_set()
+# * update		do_update()
+# * clean       do_clean()
+#
+# Behaviour:
+# do_show():
+#	Checks if /usr/bin/guile is a link and if the target exists,
+#	if yes, it outputs the currently linked Guile version.
+#	If it is no symlink, the user is told so, the same if there is
+#	no /usr/bin/guile or the target does not exist.
+# do_list(): List all available versions of GNU Guile
+# do_set(): Set a version to be target of the symlink.
+# do_update(): Set the target to the highest version available
+#	(optionally: only if not set)
+# do_clean(): Remove all set symlinks (for pkg_prerm)
+
+DESCRIPTION="Manage /usr/bin/guile* versions"
+MAINTAINER="scheme@gentoo.org"
+SVN_DATE='$Date: $'
+VERSION=$(svn_date_to_version "${SVN_DATE}")
+
+BINARYLIST="guile-snarf guile-config guile-tools guile guild"
+MANPAGELIST="guile"
+
+find_targets() {
+	# Return the list of available Guile binaries
+	local j
+	for j in "${EROOT}"/usr/bin/guile-[0-9]*; do
+		[[ -f ${j} ]] && basename ${j}
+	done
+}
+
+remove_envfile() {
+	# When cleaning symlinks this takes care of the info documentation settings
+	rm -f "${EROOT}/etc/env.d/50guile"
+}
+
+set_envfile() {
+	# Define INFOPATH environment variable in env file
+	[[ -d ${EROOT}/usr/share/info/guile-$1 ]] || return 1
+	echo "INFOPATH=${EPREFIX}/usr/share/info/guile-$1" >"${EROOT}/etc/env.d/50guile"
+}
+
+remove_symlinks() {
+	# Remove existing symlinks to binaries, man pages,
+	# m4 file, and the env file (own function)
+	local f
+	for f in ${BINARYLIST}; do
+		rm -f "${EROOT}/usr/bin/${f}"
+	done
+	for f in ${MANPAGELIST}; do
+		rm -f "${EROOT}"/usr/share/man/man1/${f}.1*
+	done
+	rm -f "${EROOT}"/usr/share/aclocal/guile.m4
+	remove_envfile
+}
+
+set_bin_symlinks() {
+	# Set symlinks to binaries in /usr/bin/
+	local target=${1} f
+	for f in ${BINARYLIST}; do
+		# set symlink only if target binary actually exists
+		if [[ -f ${EROOT}/usr/bin/${f}-${target} ]]; then
+			ln -s "${f}-${target}" "${EROOT}/usr/bin/${f}" || die \
+				"Couldn't set ${f}-${target} ${EROOT}/usr/bin/${f} symlink"
+		fi
+	done
+}
+
+set_m4_symlinks() {
+	# Set symlink to guile.m4
+	local target=${1}
+	if [[ -f ${EROOT}/usr/share/aclocal/guile-${target}.m4 ]]; then
+		ln -s "guile-${target}.m4" "${EROOT}"/usr/share/aclocal/guile.m4 \
+			|| die "Couldn't set guile-${target}.m4 guile.m4 symlink"
+	fi
+}
+
+set_man_symlinks() {
+	# Set symlinks to man pages
+	local target=${1} extension f i
+	for f in ${MANPAGELIST}; do
+		for i in "${EROOT}"/usr/share/man/man1/${f}-${target}.1*; do
+			if [[ -f ${i} ]]; then
+				# target file exists; determine compress extension
+				extension=${i##*/${f}-${target}.1}
+				ln -s "${f}-${target}.1${extension}" \
+					"${EROOT}/usr/share/man/man1/${f}.1${extension}"
+			fi
+		done
+	done
+}
+
+set_symlinks() {
+	# Set symlinks to binaries and man pages, update info path
+	local target=$1 targets major
+	# target may be specified by its name or its index
+	if is_number "${target}"; then
+		# numeric index, find the target's name
+		targets=( $(find_targets) )
+		[[ ${target} -ge 1 && ${target} -le ${#targets[@]} ]] \
+			|| die -q "Number out of range: ${1}"
+		target=${targets[target-1]}
+	fi
+
+	# is the target valid, i.e. does a Guile binary with this name exist?
+	[[ -f ${EROOT}/usr/bin/${target} ]] \
+		|| die -q "Target \"${1}\" doesn't appear to be valid!"
+
+	echo "Switching guile to ${target} ..."
+	remove_symlinks || die -q "Couldn't remove existing symlink"
+
+	major=${target#guile-}
+	set_bin_symlinks "${major}"
+	set_m4_symlinks  "${major}"
+	set_man_symlinks "${major}"
+	set_envfile "${major}"
+
+	# update /etc/profile.env from /etc/env.d files
+	do_action env update noldconfig
+
+	return 0
+}
+
+test_for_root() {
+	# checks if the user has rights to modify /usr/bin/
+	[[ -w ${EROOT}/usr/bin ]] || die -q "You need root privileges!"
+}
+
+### show action ###
+
+describe_show() {
+	echo "Show the current target of the Guile symlink"
+}
+
+do_show() {
+	[[ $# -gt 0 ]] && die -q "Too many parameters"
+
+	write_list_start "Current target of Guile symlink:"
+	if [[ -L ${EROOT}/usr/bin/guile && -e ${EROOT}/usr/bin/guile ]]; then
+		write_kv_list_entry \
+			"$(basename "$(readlink "${EROOT}/usr/bin/guile")")" ""
+	elif [[ -e ${EROOT}/usr/bin/guile ]]; then
+		write_kv_list_entry \
+			"(not a symlink or target of symlink does not exist)" ""
+	else
+		write_kv_list_entry "(unset)" ""
+	fi
+}
+
+### list action ###
+
+describe_list() {
+	echo "List available Guile symlink targets"
+}
+
+do_list() {
+	[[ $# -gt 0 ]] && die -q "Too many parameters"
+
+	local i targets
+	targets=( $(find_targets) )
+
+	for (( i = 0; i < ${#targets[@]}; i++ )); do
+		# Highlight the currently chosen version
+		[[ ${targets[i]} = \
+			$(basename "$(readlink "${EROOT}/usr/bin/guile")") ]] \
+			&& targets[i]=$(highlight_marker "${targets[i]}")
+	done
+	write_list_start "Available Guile symlink targets:"
+	write_numbered_list -m "(none found)" "${targets[@]}"
+}
+
+### set action ###
+
+describe_set() {
+	echo "Set a new Guile symlink"
+}
+
+describe_set_options() {
+	echo "target : Target name or number (from 'list' action)"
+}
+
+describe_set_parameters() {
+	echo "<target>"
+}
+
+do_set() {
+	[[ -z $1 ]] && die -q "You didn't tell me what to set the symlink to"
+	[[ $# -gt 1 ]] && die -q "Too many parameters"
+	test_for_root
+
+	if [[ -e ${EROOT}/usr/bin/guile && ! -L ${EROOT}/usr/bin/guile ]]; then
+		die -q "${EROOT}/usr/bin/guile exists but is not a symlink"
+	fi
+
+	set_symlinks "${1}" || die -q "Couldn't set a new symlink"
+}
+
+### update action ###
+
+describe_update() {
+	echo "Automatically update the Guile symlink"
+}
+
+describe_update_options() {
+	echo "ifunset : Do not override currently set version"
+}
+
+do_update() {
+	[[ -z $1 || $1 = ifunset || $1 = --if-unset ]] || die -q "Usage error"
+	[[ $# -gt 1 ]] && die -q "Too many parameters"
+
+	[[ $# -eq 1 && -L ${EROOT}/usr/bin/guile ]] && return 0
+
+	test_for_root
+
+	if [[ -L ${EROOT}/usr/bin/guile ]]; then
+		# this is not redundant: "update" is called in pkg_postrm() of guile
+		# and should clean up any dead symlinks if no valid target exists
+		remove_symlinks || die -q "Couldn't remove existing symlink"
+	elif [[ -e ${EROOT}/usr/bin/guile ]]; then
+		die -q "${EROOT}/usr/bin/guile exists but is not a symlink"
+	fi
+
+	local targets=( $(find_targets) )
+	if [[ ${#targets[@]} -gt 0 ]]; then
+		set_symlinks "${targets[${#targets[@]}-1]}" \
+			|| die -q "Couldn't set a new symlink"
+	fi
+}
+
+### Clean action
+describe_clean() {
+	echo "Remove any existing symlinks"
+}
+
+do_clean() {
+	remove_symlinks
+}

diff --git a/app-admin/eselect-guile/files/1.2/guile.eselect.5 b/app-admin/eselect-guile/files/1.2/guile.eselect.5
new file mode 100644
index 0000000..86dbe13
--- /dev/null
+++ b/app-admin/eselect-guile/files/1.2/guile.eselect.5
@@ -0,0 +1,94 @@
+.\" Copyright 2007-2011 Gentoo Foundation
+.\" Distributed under the terms of the GNU General Public License v2
+.\" $Id: $
+.\"
+.TH guile.eselect 5 "August 2011" "Gentoo Linux" eselect
+.SH NAME
+guile.eselect \- The Guile management module for Gentoo's eselect
+.SH SYNOPSIS
+.B eselect guile
+.RB [ help | usage | version ]
+.br
+.B eselect guile list
+.br
+.B eselect guile set
+.I target
+.br
+.B eselect guile show
+.br
+.B eselect guile update
+.RB [ ifunset ]
+.SH DESCRIPTION
+.B eselect
+is Gentoo's configuration and management tool.  It features modules
+that care for the individual administrative tasks.
+.SH ACTION: LIST
+.B eselect guile list
+.br
+List all installed Guile versions
+
+# eselect guile list
+.br
+Available Guile symlink targets:
+.br
+  [1]   guile-1.8
+  [2]   guile-2.0 *
+.SH ACTION: SET
+.B eselect guile set
+.I target
+.br
+Activate the selected Guile version.
+.I target
+can be either an identification number given by
+.B eselect guile list
+or the name of one installed version.
+.\" To avoid runtime issues with
+.\" incompatible byte-code from the previously selected Emacs version, run
+.\" .B emacs-updater -a rebuild
+.\" to remerge all needed packages.
+
+# eselect guile set 1
+.br
+Switching guile to guile-1.8 ...
+.SH ACTION: SHOW
+.B eselect guile show
+.br
+Print the currently activated Guile version.
+
+# eselect guile show
+.br
+Current target of Guile symlink:
+.br
+  emacs-1.8
+.SH ACTION: UPDATE
+.B eselect guile update
+.RB [ ifunset ]
+.br
+Update the guile symlink to the last available version.  If option
+.B ifunset
+is given, an existing implementation is not overridden.
+
+The update process consists in creating symlinks for guile's binaries,
+man page and aclocal.m4. It also generates an environment file.
+The symlinks concerns:
+.br
+* /usr/bin/guil[de] and /usr/bin/guile-{config,snarf,tools} binaries;
+.br
+* /usr/share/aclocal/guile.m4;
+.br
+* guile(1) man page.
+.br
+The environment file (/etc/env.d/50guile) defines INFOPATH and
+GUILE_LOAD_PATH.
+
+# eselect guile update
+.br
+Switching guile to guile-2.0 ...
+.SH AUTHORS
+Christian Faulhammer <fauli@gentoo.org>
+.br
+Ulrich Mueller <ulm@gentoo.org>
+.SH SEE ALSO
+.BR eselect (1)
+.SH REVISION
+$Id: $


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2012-10-02 20:59 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-02 20:59 [gentoo-commits] proj/lisp:master commit in: app-admin/eselect-guile/, app-admin/eselect-guile/files/1.2/ Cyprien Nicolas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox