summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Shapovalov <george@gentoo.org>2006-05-17 21:28:25 +0000
committerGeorge Shapovalov <george@gentoo.org>2006-05-17 21:28:25 +0000
commit9c74bc1b088cd06c245b67a426fffc9972e0ceec (patch)
treed1833a15c7945bfcc526a083fa3d0e2d3a230893 /app-admin/eselect-gnat
parentAdd ~x86-fbsd keyword for 4.1 series. (diff)
downloadhistorical-9c74bc1b088cd06c245b67a426fffc9972e0ceec.tar.gz
historical-9c74bc1b088cd06c245b67a426fffc9972e0ceec.tar.bz2
historical-9c74bc1b088cd06c245b67a426fffc9972e0ceec.zip
a fix to process all the installed libs, not just the 1st one..
Package-Manager: portage-2.1_rc1-r2
Diffstat (limited to 'app-admin/eselect-gnat')
-rw-r--r--app-admin/eselect-gnat/ChangeLog9
-rw-r--r--app-admin/eselect-gnat/Manifest19
-rw-r--r--app-admin/eselect-gnat/eselect-gnat-0.8-r1.ebuild25
-rw-r--r--app-admin/eselect-gnat/files/digest-eselect-gnat-0.8-r11
-rw-r--r--app-admin/eselect-gnat/files/gnat.eselect-0.8-r1299
5 files changed, 348 insertions, 5 deletions
diff --git a/app-admin/eselect-gnat/ChangeLog b/app-admin/eselect-gnat/ChangeLog
index a0931d7fde50..3bd9511f16d7 100644
--- a/app-admin/eselect-gnat/ChangeLog
+++ b/app-admin/eselect-gnat/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for app-admin/eselect-gnat
# Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-gnat/ChangeLog,v 1.7 2006/05/12 15:11:53 josejx Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-gnat/ChangeLog,v 1.8 2006/05/17 21:28:24 george Exp $
+
+*eselect-gnat-0.8-r1 (17 May 2006)
+
+ 17 May 2006; George Shapovalov <george@gentoo.org>
+ +files/gnat.eselect-0.8-r1, +eselect-gnat-0.8-r1.ebuild:
+ a fix to process all the installed libs, not just the 1st one.. (revbump, so
+ that everybody picks up the right code)
12 May 2006; Joseph Jezak <josejx@gentoo.org> eselect-gnat-0.8.ebuild:
Marked ~ppc for bug #133119.
diff --git a/app-admin/eselect-gnat/Manifest b/app-admin/eselect-gnat/Manifest
index 8f00ddb79022..439eeb7bb512 100644
--- a/app-admin/eselect-gnat/Manifest
+++ b/app-admin/eselect-gnat/Manifest
@@ -14,6 +14,10 @@ AUX gnat.eselect-0.8 8057 RMD160 494bbd332d33c01e59b8a6cf6863b7fe9bfcf6dc SHA1 8
MD5 2f31bfc00c3ae2bee128a2f5333c823a files/gnat.eselect-0.8 8057
RMD160 494bbd332d33c01e59b8a6cf6863b7fe9bfcf6dc files/gnat.eselect-0.8 8057
SHA256 612493f254777242dfcc5d5c1b08d54d7cf7cc8ad8e476160ce6ddc6229d32b4 files/gnat.eselect-0.8 8057
+AUX gnat.eselect-0.8-r1 8222 RMD160 0c34c47c9ea10dcddb951c1f49ee971e0e2e359a SHA1 524e94f31646de39d63b21e4cd420954c784cd58 SHA256 4619fb0eec258a411be8b5fa860f4dd7c377f27a72cb0243e35e321f0b10cd46 size 8222
+MD5 769d8a0d70b668d2a1b51c1c364e572a files/gnat.eselect-0.8-r1 8222
+RMD160 0c34c47c9ea10dcddb951c1f49ee971e0e2e359a files/gnat.eselect-0.8-r1 8222
+SHA256 4619fb0eec258a411be8b5fa860f4dd7c377f27a72cb0243e35e321f0b10cd46 files/gnat.eselect-0.8-r1 8222
EBUILD eselect-gnat-0.5.ebuild 532 RMD160 9829d41174edec589ceea93a32db824e1d7544c1 SHA1 471f313406b1db0c940c9cf8cde276271ac67a3a SHA256 e4dd83ef5dd80054712742b3a0604b35a473cceaba8ceb58ba00074cb568b0b0 size 532
MD5 cc6de5656c9a32406a8ac1daf4002efe eselect-gnat-0.5.ebuild 532
RMD160 9829d41174edec589ceea93a32db824e1d7544c1 eselect-gnat-0.5.ebuild 532
@@ -26,14 +30,18 @@ EBUILD eselect-gnat-0.7.ebuild 623 RMD160 6120ba6e8f37ec328a64658f1f61824c45e678
MD5 c3af14b9775c7785b643c40150c667e5 eselect-gnat-0.7.ebuild 623
RMD160 6120ba6e8f37ec328a64658f1f61824c45e678c5 eselect-gnat-0.7.ebuild 623
SHA256 2b850296732515727a6969895d9a14e096a06633034fd56e3b88f68d7d6b93ee eselect-gnat-0.7.ebuild 623
+EBUILD eselect-gnat-0.8-r1.ebuild 633 RMD160 6958b2679e8344af67ccecf074b91d379b726678 SHA1 6b7db13ab88dac5b947ad93672a54a84a792e6c1 SHA256 d9d4568b57177f71709b72ca4e9402783b40ae590aa7b55f7482dcdc58cbce12 size 633
+MD5 958651334279683f9b3447cd7d0e8720 eselect-gnat-0.8-r1.ebuild 633
+RMD160 6958b2679e8344af67ccecf074b91d379b726678 eselect-gnat-0.8-r1.ebuild 633
+SHA256 d9d4568b57177f71709b72ca4e9402783b40ae590aa7b55f7482dcdc58cbce12 eselect-gnat-0.8-r1.ebuild 633
EBUILD eselect-gnat-0.8.ebuild 628 RMD160 456940a07b15b0dac66f1b0fe1eaf91f7744a1cd SHA1 1f96517680277c8257a7b86c89632794d1b99c86 SHA256 0f3fbd4c483b3bec5898d9c0ac0b934ab29d15759ab679d38c341296d239f1ee size 628
MD5 10da4a9295792af05b1ac0e7199c3712 eselect-gnat-0.8.ebuild 628
RMD160 456940a07b15b0dac66f1b0fe1eaf91f7744a1cd eselect-gnat-0.8.ebuild 628
SHA256 0f3fbd4c483b3bec5898d9c0ac0b934ab29d15759ab679d38c341296d239f1ee eselect-gnat-0.8.ebuild 628
-MISC ChangeLog 1312 RMD160 6a3656ace2f9ddadd56cf4fa3d650615ed25a115 SHA1 7b15ec56622104abc093d1ffd7cf0f1332e89899 SHA256 e91f1984abe1a7ac2686ff2ba80d5033dced614732893221044c2a08c662d515 size 1312
-MD5 54b944087b0b5090b66421e7748f3548 ChangeLog 1312
-RMD160 6a3656ace2f9ddadd56cf4fa3d650615ed25a115 ChangeLog 1312
-SHA256 e91f1984abe1a7ac2686ff2ba80d5033dced614732893221044c2a08c662d515 ChangeLog 1312
+MISC ChangeLog 1582 RMD160 2b626d47ef63395bd2418987140dc78e4cf572bb SHA1 3cb86f82a79c18545d61772ffbc6aa017507e434 SHA256 0bb1813cd4488437c581d36234f7110307c15726e187c73a88293c59b6760bc9 size 1582
+MD5 8d5285da9d1c763c72f7f2980e6d4947 ChangeLog 1582
+RMD160 2b626d47ef63395bd2418987140dc78e4cf572bb ChangeLog 1582
+SHA256 0bb1813cd4488437c581d36234f7110307c15726e187c73a88293c59b6760bc9 ChangeLog 1582
MISC metadata.xml 244 RMD160 784e7fb6660b05dbdd027b1e23975e26e72b7a39 SHA1 e2df521788bf35a7cf98d8b44adca1a1b03df544 SHA256 c32a1e42a5f85acb0b69af3e2644f98213d48492817c90a82c833927d2881419 size 244
MD5 92e9934d7cc8cadaa1ca50badb669313 metadata.xml 244
RMD160 784e7fb6660b05dbdd027b1e23975e26e72b7a39 metadata.xml 244
@@ -50,3 +58,6 @@ SHA256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b files/di
MD5 68b329da9893e34099c7d8ad5cb9c940 files/digest-eselect-gnat-0.8 1
RMD160 c0da025038ed83c687ddc430da9846ecb97f3998 files/digest-eselect-gnat-0.8 1
SHA256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b files/digest-eselect-gnat-0.8 1
+MD5 68b329da9893e34099c7d8ad5cb9c940 files/digest-eselect-gnat-0.8-r1 1
+RMD160 c0da025038ed83c687ddc430da9846ecb97f3998 files/digest-eselect-gnat-0.8-r1 1
+SHA256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b files/digest-eselect-gnat-0.8-r1 1
diff --git a/app-admin/eselect-gnat/eselect-gnat-0.8-r1.ebuild b/app-admin/eselect-gnat/eselect-gnat-0.8-r1.ebuild
new file mode 100644
index 000000000000..48a052e6cd63
--- /dev/null
+++ b/app-admin/eselect-gnat/eselect-gnat-0.8-r1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-gnat/eselect-gnat-0.8-r1.ebuild,v 1.1 2006/05/17 21:28:24 george Exp $
+
+inherit eutils
+
+DESCRIPTION="gnat module for eselect."
+HOMEPAGE="http://www.gentoo.org"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+
+IUSE=""
+RDEPEND="app-admin/eselect"
+
+MODULEDIR="/usr/share/eselect/modules"
+
+src_install() {
+ dodir ${MODULEDIR}
+ insinto ${MODULEDIR}
+ doins ${FILESDIR}/gnat.eselect-${PVR}
+ mv ${D}${MODULEDIR}/gnat.eselect-${PVR} ${D}${MODULEDIR}/gnat.eselect
+}
diff --git a/app-admin/eselect-gnat/files/digest-eselect-gnat-0.8-r1 b/app-admin/eselect-gnat/files/digest-eselect-gnat-0.8-r1
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/app-admin/eselect-gnat/files/digest-eselect-gnat-0.8-r1
@@ -0,0 +1 @@
+
diff --git a/app-admin/eselect-gnat/files/gnat.eselect-0.8-r1 b/app-admin/eselect-gnat/files/gnat.eselect-0.8-r1
new file mode 100644
index 000000000000..6ebb3a31e120
--- /dev/null
+++ b/app-admin/eselect-gnat/files/gnat.eselect-0.8-r1
@@ -0,0 +1,299 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id: gnat.eselect-0.8-r1,v 1.1 2006/05/17 21:28:25 george Exp $
+
+DESCRIPTION="Manage the talled gnat compilers"
+MAINTAINER="ada@gentoo.org"
+SVN_DATE='$Date: 2006/05/17 21:28:25 $'
+VERSION=$(svn_date_to_version "${SVN_DATE}" )
+
+SPECSDIR="/usr/share/gnat/eselect"
+ENVDIR="/etc/env.d"
+MARKER="55gnat-"
+#LibMarker="56"
+
+### Phylosophy
+# Each gnat installs a "specs" file named ${ARCH}-${PN}-${SLOT} under ${SPECSDIR}
+# Each lib creates a dir with its name under ${SPECSDIR} and populates it with
+# similar specs files (same name scheme)
+# Recognizing gnat specs from lib specs is then eazy - test entry for being a
+# dir, then just check what gnat profiles are installed for each lib..
+# doset then creates env file that combines settings for gnat and for the
+# corresponding profile of each installed lib..
+
+
+### Helpers
+
+# create a list of all gnat env.d files
+# for now use trivial implementation - store name of active profile in the
+# env file name, so it gets called 55gnat-${ARCH}-${PN}-${SLOT}
+get_env_list() {
+ for fn in ${ENVDIR}/${MARKER}*; do
+ echo $(basename ${fn})
+ done
+}
+
+# return *the* name of the active profile, checking that we do not have multiple
+# env files.
+# There can be only one!
+get_current_gnat() {
+ local profiles=( $(get_env_list) )
+
+ if [ ${profiles[@]} == "${MARKER}*" ]; then exit; fi
+
+ if (( 1 == ${#profiles[@]} )); then
+ local active=${profiles[0]#${MARKER}}
+ else
+ die -q "${ENVDIR} contains multiple gnat profiles, please cleanup!"
+ fi
+
+ if [ -f ${SPECSDIR}/${active} ]; then
+ echo ${active}
+ else
+ die -q "the active env.d profile does not correspond to any installed gnat!"
+ fi
+}
+
+# find installed compilers and return a list
+find_compilers() {
+ [ ! -d ${SPECSDIR} ] && exit
+ for fn in ${SPECSDIR}/*; do
+ [ ! -d ${fn} ] && echo $(basename ${fn});
+ done
+}
+
+# find installed libs and return a list
+find_all_libs() {
+ [ ! -d ${SPECSDIR} ] && exit
+ for fn in ${SPECSDIR}/*; do
+ [ -d ${fn} ] && echo $(basename ${fn});
+ done
+}
+
+# find libs that have been built for a given profile
+# Arguments:
+# $1 - gnat profile for which to detect active libs
+find_libs4profile() {
+ libs=( $(find_all_libs) )
+
+ for (( i = 0 ; i < ${#libs[@]} ; i = i + 1 )) ; do
+ [ -f ${SPECSDIR}/${libs[$i]}/$1 ] && echo "${libs[$i]}"
+ done
+}
+
+# check if the passed arg represents the installed gnat and return it or
+# not_found
+# takes args:
+# $1 - list ID to check
+get_name_from_list() {
+ compiler=$1
+
+ compilers=( $(find_compilers) )
+ for (( i = 0 ; i < ${#compilers[@]} ; i = i + 1 )) ; do
+ if [[ ${compilers[$i]} == ${compiler} ]] ; then
+ echo ${compiler}
+ return
+ fi
+ done
+
+ echo "(not-found)"
+}
+
+
+# extracts values of the passed var definition from given spec file
+# params:
+# $1: spec file (as generated by gnabuild.eclass)
+# $2: variable name
+get_var_from_spec() {
+ local var=$(grep -e "^ *$2=" $1|cut -d= -f2)
+ echo ${var}
+}
+
+
+# Cycle through given libs and form a : separated list of settings for the given
+# var. Returned string starts with ":" if there is any non-empty setting,
+# otherwise returns empty string
+# params:
+# $1 - name of env var to process
+# $2 - name of gnat profile
+# $3.. - list of libs to check (to avoid its composition every time)
+# - the list is expanded to lest of args at the point of call
+get_lib_var_settings() {
+ local envVar=$1
+ local toset=$2
+ #echo "get_lib_var_settings params:$@" >> /tmp/eselect-gnat.rep
+ if [[ "none" != ${3} ]]; then
+ local envString
+ local specLine
+ while [[ -n $3 ]]; do
+ specLine=$(get_var_from_spec ${SPECSDIR}/$3/${toset} ${envVar})
+ #echo "$3:${specLine}." >> /tmp/eselect-gnat.rep
+ [[ -n ${specLine} ]] && envString="${envString}:${specLine}"
+ shift
+ done
+ echo "${envString}"
+ fi
+}
+
+
+# removes env files (for compiler and libs)
+# params:
+# $1: the name of profile for which to remove env file
+unset_env() {
+ rm -f ${ENVDIR}/${MARKER}$1 &> /dev/null
+}
+
+
+# Stuff common for do_set and do_update
+#
+# params:
+# $1 - profile to set (toset param inside)
+# $2 - envfile
+
+generate_envFile() {
+ local toset=$1
+ local envfile=$2
+
+ local binpath="$(get_var_from_spec ${SPECSDIR}/${toset} binpath)"
+ local libexecpath="$(get_var_from_spec ${SPECSDIR}/${toset} libexecpath)"
+ local libs=( $(find_libs4profile ${toset}) )
+ #echo "generate_envFile: ${libs[@]}" >> /tmp/eselect-gnat.rep
+ if (( 0 == ${#libs[@]} )); then
+ libs="none"
+ fi
+
+ local MyPath="${binpath}:${libexecpath}$(get_lib_var_settings PATH ${toset} ${libs[@]})"
+ echo "PATH=${MyPath}" > "${envfile}"
+ echo "ROOTPATH=${MyPath}" >> "${envfile}"
+ echo "MANPATH=$(get_var_from_spec ${SPECSDIR}/${toset} manpath)$(get_lib_var_settings MANPATH ${toset} ${libs[@]})" >> "${envfile}"
+ echo "INFOPATH=$(get_var_from_spec ${SPECSDIR}/${toset} infopath)$(get_lib_var_settings INFOPATH ${toset} ${libs[@]})" >> "${envfile}"
+ echo "ADA_INCLUDE_PATH=$(get_var_from_spec ${SPECSDIR}/${toset} ldpath)/adainclude$(get_lib_var_settings ADA_INCLUDE_PATH ${toset} ${libs[@]})" >> "${envfile}"
+ echo "ADA_OBJECTS_PATH=$(get_var_from_spec ${SPECSDIR}/${toset} ldpath)/adalib$(get_lib_var_settings ADA_OBJECTS_PATH ${toset} ${libs[@]})" >> "${envfile}"
+}
+
+### show action ###
+
+describe_show() {
+ echo "Show the active gnat compiler/profile and installed libs"
+}
+
+do_show() {
+ write_list_start "Current gnat version:"
+ active=$(get_current_gnat)
+ if [ ! -z ${active} ] ; then # not sure why [ -n ] does not do the same
+ write_kv_list_entry "$active" ""
+ libs=( $(find_libs4profile ${active}) )
+ write_list_start "Active libs:"
+ write_numbered_list "${libs[@]}"
+ else
+ write_kv_list_entry "(none set)" ""
+ fi
+}
+
+### list action ###
+
+describe_list() {
+ echo "List installed gnat compilers and libs"
+}
+
+do_list() {
+ compilers=( $(find_compilers ) )
+ active=$(get_current_gnat)
+
+ write_list_start "Available gnat compilers:"
+
+ if [[ -n ${compilers[@]} ]] ; then
+ local i
+ for (( i = 0 ; i < ${#compilers[@]} ; i = i + 1 )) ; do
+ linkversion=${compilers[${i}]}
+
+ [[ $linkversion == $active ]] && \
+ compilers[${i}]="${compilers[${i}]} $(highlight '*' )"
+ done
+ write_numbered_list "${compilers[@]}"
+
+ # now the libs
+ libs=( $(find_all_libs) )
+ write_list_start "Installed libs:"
+ for (( i = 0 ; i < ${#libs[@]} ; i = i + 1 )) ; do
+ [ -f ${SPECSDIR}/${libs[$i]}/${active} ] && \
+ libs[${i}]="${libs[${i}]} $(highlight '*' )"
+ done
+ write_numbered_list "${libs[@]}"
+ else
+ write_kv_list_entry "(none found)" ""
+ fi
+}
+
+
+### set action ###
+
+describe_set() {
+ echo "Set active gnat compiler"
+}
+
+# The set action. Parameters:
+# $1 - name of profile to set, obligatory, passed by eselect
+# $2 - optional, name of env file to generate. Used from gnat.eclass.
+do_set() {
+ if [[ -z ${1} ]] ; then
+ # no parameter
+ die -q "You didn't tell me which gnat to use"
+ fi
+
+ local toset=$(get_name_from_list $1)
+ if [[ ${toset} == "(not-found)" ]] ; then
+ die -q "I don't recognise the selection"
+ fi
+
+ # the action!
+ # in this implementation simply create an appropriate env file
+ local active=$(get_current_gnat)
+ if [[ -z ${2} ]] ; then
+ local envfile="${ENVDIR}/${MARKER}${toset}"
+
+ # now we need to remove an old env file, which is guaranteed to
+ # be unique by get_current_gnat above
+ if [[ -n ${active} ]] ; then
+ unset_env ${active}
+ fi
+ # just for a good measure remove the one we are going to write
+ unset_env ${toset}
+ else
+ local envfile="$2"
+ fi
+
+ generate_envFile ${toset} ${envfile}
+}
+
+
+
+### update action ###
+#
+# This action regenerates the /etc/env.d file for the current profile. Basically
+# the same as set, only it does not take any parameters. It should be called from ebuilds
+# installing Ada libs
+
+describe_update() {
+ echo "Update active gnat profile picking up new libs."
+}
+
+do_update() {
+ local toset=$(get_current_gnat)
+ local envfile="${ENVDIR}/${MARKER}${toset}"
+ generate_envFile ${toset} ${envfile}
+}
+
+### unset action ###
+
+describe_unset() {
+ echo "Remove settings for currently active gnat"
+}
+
+do_unset() {
+ local active=$(get_current_gnat)
+ # check whether we have any profile set before removing anything..
+ if [[ -n ${active} ]] ; then
+ unset_env ${active}
+ fi
+}