aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny van Dyk <kugelfang@gentoo.org>2005-06-07 06:57:38 +0000
committerDanny van Dyk <kugelfang@gentoo.org>2005-06-07 06:57:38 +0000
commit139a4ca25eb5d9513fbd4edc6034c4af06b0457d (patch)
tree92f8bdd75bbd577b1732fee8a88d3386daa9b153 /modules/kernel.eselect
parentAdded (start|stop|restart) functionality to rc.eclectic. (diff)
downloadeselect-139a4ca25eb5d9513fbd4edc6034c4af06b0457d.tar.gz
eselect-139a4ca25eb5d9513fbd4edc6034c4af06b0457d.tar.bz2
eselect-139a4ca25eb5d9513fbd4edc6034c4af06b0457d.zip
Moved to Gentoo infrastructure and renamed project to 'eselect'.
svn path=/trunk/; revision=117
Diffstat (limited to 'modules/kernel.eselect')
-rw-r--r--modules/kernel.eselect104
1 files changed, 104 insertions, 0 deletions
diff --git a/modules/kernel.eselect b/modules/kernel.eselect
new file mode 100644
index 0000000..ada4c9d
--- /dev/null
+++ b/modules/kernel.eselect
@@ -0,0 +1,104 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+DESCRIPTION="Manage the /usr/src/linux symlink"
+MAINTAINER="ciaranm@gentoo.org"
+SVN_DATE='$Date$'
+VERSION=$(svn_date_to_version "${SVN_DATE}" )
+
+# find a list of kernel symlink targets
+find_targets() {
+ for f in ${ROOT}/usr/src/linux-* ; do
+ [[ -d ${f} ]] && echo $(basename ${f} )
+ done
+}
+
+# try to remove the kernel symlink
+remove_symlink() {
+ rm "${ROOT}/usr/src/linux"
+}
+
+# set the kernel symlink
+set_symlink() {
+ target=${1}
+ if is_number "${target}" ; then
+ targets=( $(find_targets ) )
+ target=${targets[$(( ${target} - 1 ))]}
+ fi
+ if [[ -z ${target} ]] ; then
+ die -q "Target \"${1}\" doesn't appear to be valid!"
+ elif [[ -d "${ROOT}/usr/src/${target}" ]] ; then
+ pushd "${ROOT}/usr/src" 1>/dev/null
+ ln -s "${target}" "linux"
+ popd 1>/dev/null
+ else
+ die -q "Target \"${1}\" doesn't appear to be valid!"
+ fi
+}
+
+### show action ###
+
+describe_show() {
+ echo "Show the current kernel symlink"
+}
+
+do_show() {
+ write_list_start "Current kernel symlink:"
+ if [[ -L "${ROOT}/usr/src/linux" ]] ; then
+ write_kv_list_entry "$(readlink ${ROOT}/usr/src/linux )" ""
+ else
+ write_kv_list_entry "(unset)" ""
+ fi
+}
+
+### list action ###
+
+describe_list() {
+ echo "List available kernel symlink targets"
+}
+
+do_list() {
+ targets=( $(find_targets ) )
+ write_list_start "Available kernel symlink targets:"
+ if [[ -n ${targets[@]} ]] ; then
+ local i
+ for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do
+ [[ ${targets[${i}]} == $(readlink ${ROOT}/usr/src/linux ) ]] && \
+ targets[${i}]="${targets[${i}]} $(highlight '*' )"
+ done
+ write_numbered_list "${targets[@]}"
+ else
+ write_kv_list_entry "(none found)" ""
+ fi
+}
+
+### set action ###
+
+describe_set() {
+ echo "Set a new kernel symlink target"
+}
+
+do_set() {
+ if [[ -z ${1} ]] ; then
+ # no parameter
+ die -q "You didn't tell me what to set the symlink to"
+
+ elif [[ -L "${ROOT}/usr/src/linux" ]] ; then
+ # existing symlink
+ if ! remove_symlink ; then
+ die -q "Couldn't remove existing symlink"
+ elif ! set_symlink "${1}" ; then
+ die -q "Couldn't set a new symlink"
+ fi
+
+ elif [[ -e "${ROOT}/usr/src/linux" ]] ; then
+ # we have something strange
+ die -q "Sorry, ${ROOT}/usr/src/linux confuses me"
+
+ else
+ set_symlink "${1}" || die -q "Couldn't set a new symlink"
+ fi
+}
+
+# vim: set ft=eselect :