Skip to Content.
Sympa Menu

sm-commit - Re: [SM-Commit] BZR Change 28 to devel sorcery by Andrew Stitt <astitt@sourcemage.org>

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Arwed von Merkatz <v.merkatz AT gmx.net>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: Re: [SM-Commit] BZR Change 28 to devel sorcery by Andrew Stitt <astitt AT sourcemage.org>
  • Date: Thu, 11 May 2006 00:25:37 +0200

On Wed, May 10, 2006 at 03:16:15PM -0700, Andrew wrote:
> I'd suggest runtime_depends fall back to depends and suggest_depends
> fallback to optional_depends. Then you can start converting existing
> spells (like fcron) now.

runtime_depends falling back to depends should probably work. I'm not so
sure about suggest_depends as that will lead to circular dependencies
for the use-case for which it's really meant.
btw., do we have a optional_runtime_depends?

> Im primarily interested in ensuring that when theres a new sorcery api
> that theres *something* in libcompat for them. Rather than having function
> not found errors.

Yeah, we should provide all functions, I just wanted to figure out what
the best fallback for them is.

> I dont know if this should go to stable-rc or not, I'm inclined to think
> no. I cant think of a scenario where stable-rc would have a bug fixed
> by converting one of the depends functions to the runtime variant.

If such a case happens, we can always pull the libcompat change into
stable-rc. Until that's the case it can stay in test.

> On Wed, May 10, 2006 at 07:21:02PM +0200, Arwed von Merkatz wrote:
> > On Wed, May 10, 2006 at 10:06:43AM -0700, Andrew Stitt wrote:
> > > Can someone working in the grimoire please add libcompat stubs for
> > > runtime_depends and suggest_depends for backwards compatibility.
> >
> > What exactly should they do? Just nothing? Since both are there for
> > cases where the 'dependency' has to be built later, we can't just fall
> > back to depends.
> >
> > > On Tue, May 09, 2006 at 10:55:07PM -0500, scm AT mail.sourcemage.org wrote:
> > > > ------------------------------------------------------------
> > > > revno: 28
> > > > committer: Andrew Stitt <astitt AT sourcemage.org>
> > > > branch nick: devel-hack4
> > > > timestamp: Tue 2006-05-09 20:53:20 -0700
> > > > message:
> > > > add runtime/suggested dependencies bugs 10110 and 10790
> > > >
> > > > === modified file 'ChangeLog'
> > > > --- ChangeLog
> > > > +++ ChangeLog
> > > > @@ -1,3 +1,16 @@
> > > > +2006-05-09 Andrew Stitt <astitt AT sourcemage.org>
> > > > + * libapi: add runtime and suggest_depends, bugs 10110 and
> > > > 10790.
> > > > + Remove altruistic_sub_depends stub.
> > > > + * dispel: add improved messages to handle new dependency
> > > > states
> > > > + * libdepends: Add new frontend routines for runtime/suggest
> > > > + dependencies. Factor most common message calls into a
> > > > + subroutine. Add controls for compute_install_depends
> > > > functions
> > > > + to work on either true dependencies as well as the full set.
> > > > + Generalized the way UP_DEPENDS works because
> > > > runtime/suggest depends
> > > > + need it as well.
> > > > + * libstate: Add new dependency states to sanity check
> > > > + * cast: update to use generalized bonus spell mechanism
> > > > +
> > > > 2006-05-03 Andrew Stitt <astitt AT sourcemage.org>
> > > > * gaze: fix bug 10465, gaze allows grimoire selection
> > > > * libresurrect: fix bug 10528, install_config_files marks
> > > > files
> > > >
> > > > === modified file 'usr/sbin/cast'
> > > > --- usr/sbin/cast
> > > > +++ usr/sbin/cast
> > > > @@ -347,7 +347,7 @@
> > > >
> > > > SPELLS_TO_CAST=$(hash_get_table_fields "to_cast"|tr '\n' ' ')
> > > >
> > > > - SPELLS="$SPELLS ${UP_DEPENDS[*]}"
> > > > + SPELLS="$SPELLS ${BONUS_SPELLS[*]}"
> > > >
> > > > # special case of no spell making it through dependency resolution
> > > > # or if DEPS_ONLY is set, there arent any dependent spells to cast
> > > >
> > > > === modified file 'usr/sbin/dispel'
> > > > --- usr/sbin/dispel
> > > > +++ usr/sbin/dispel
> > > > @@ -256,6 +256,37 @@
> > > > }
> > > >
> > > >
> > > > #---------------------------------------------------------------------
> > > > +## Display what dependencies were removed
> > > > +#---------------------------------------------------------------------
> > > > +function dispel_parents_list_borkers() {
> > > > + local parent=$1
> > > > + local optional_borkers=$2
> > > > + local runtime_borkers=$3
> > > > + local suggested_borkers=$4
> > > > + if [[ "$optional_borkers" ]] ; then
> > > > + message
> > > > "${SPELL_COLOR}${parent}${DEFAULT_COLOR}${MESSAGE_COLOR}" \
> > > > + "had the following optional dependencies
> > > > removed:${DEFAULT_COLOR}"
> > > > + message "${SPELL_COLOR}"
> > > > + echo $optional_borkers | col
> > > > + message "${DEFAULT_COLOR}"
> > > > + fi
> > > > + if [[ "$runtime_borkers" ]] ; then
> > > > + message
> > > > "${SPELL_COLOR}${parent}${DEFAULT_COLOR}${MESSAGE_COLOR}" \
> > > > + "had the following runtime dependencies
> > > > removed:${DEFAULT_COLOR}"
> > > > + message "${SPELL_COLOR}"
> > > > + echo $runtime_borkers | col
> > > > + message "${DEFAULT_COLOR}"
> > > > + fi
> > > > + if [[ "$suggested_borkers" ]] ; then
> > > > + message
> > > > "${SPELL_COLOR}${parent}${DEFAULT_COLOR}${MESSAGE_COLOR}" \
> > > > + "had the following suggested dependencies
> > > > removed:${DEFAULT_COLOR}"
> > > > + message "${SPELL_COLOR}"
> > > > + echo $suggested_borkers | col
> > > > + message "${DEFAULT_COLOR}"
> > > > + fi
> > > > +}
> > > > +
> > > > +#---------------------------------------------------------------------
> > > > ## @param spell to dispel
> > > > ##
> > > > ## Frontend to do common things for dispelling (keep a note of what
> > > > @@ -494,27 +525,33 @@
> > > > # for all borked spells either recast, dispel, or ignore
> > > > for parent in $(hash_get_table_fields BORKED_PARENTS) ; do
> > > > message "$parent is borked because of $(hash_get
> > > > BORKED_PARENTS $parent)"
> > > > - recastable=yes
> > > > + local recastable=yes
> > > > borkers=$(hash_get BORKED_PARENTS $parent)
> > > > - local non_optional_borkers
> > > > + local non_optional_borkers suggested_borkers runtime_borkers
> > > > type
> > > > # if any of the removed children are required depends of the
> > > > current
> > > > # spell, the spell is not recastable
> > > > # note: this doesnt take into account the spell changing out
> > > > from
> > > > # under us. Oh well.
> > > > for child in $borkers; do
> > > > - if [[ $(grep "$parent:$child\(([^:]*)\)\?:on:required"
> > > > $DEPENDS_STATUS) ]] ; then
> > > > + type=$(grep -m 1 "$parent:$child\(([^:]*)\)\?:on"
> > > > $DEPENDS_STATUS|cut -f4 -d:)
> > > > + if [[ "$type" == required ]]; then
> > > > recastable=no
> > > > list_add non_optional_borkers $child
> > > > + elif [[ "$type" == "runtime" ]] ; then
> > > > + [[ "$recastable" != no ]] && recastable=NA
> > > > + list_add runtime_borkers $child
> > > > + elif [[ "$type" == "suggest" ]] ; then
> > > > + [[ "$recastable" != no ]] && recastable=NA
> > > > + list_add suggested_borkers $child
> > > > + else
> > > > + list_add optional_borkers $child
> > > > fi
> > > > done
> > > > if [[ $recastable == yes ]] ; then
> > > > - message
> > > > "${SPELL_COLOR}${parent}${DEFAULT_COLOR}${MESSAGE_COLOR}" \
> > > > - "had the following optional depends
> > > > removed:${DEFAULT_COLOR}"
> > > > - message "${SPELL_COLOR}"
> > > > - echo $borkers | col
> > > > - message "${DEFAULT_COLOR}"
> > > > - if dispel_parent_query \
> > > > - "Re-cast $parent without these optional
> > > > depends?" \
> > > > + dispel_parents_list_borkers $parent "$optional_borkers" \
> > > > + "$runtime_borkers"
> > > > "$suggested_borkers"
> > > > + if [[ $optional_borkers ]] && dispel_parent_query \
> > > > + "Re-cast $parent without these non-optional
> > > > depends?" \
> > > > "$RECAST_PARENT_DEFAULT" ; then
> > > > # fix up the abandoned depends data for impending recompile
> > > > # this is a bit of a hack but should work:
> > > > @@ -541,7 +578,7 @@
> > > > done
> > > >
> > > > list_add NEW_CASTS $parent
> > > > - elif dispel_parent_query "Dispel $parent instead?" \
> > > > + elif dispel_parent_query "Dispel $parent?" \
> > > > "$DISPEL_PARENT_DEFAULT" ; then
> > > >
> > > > foo=$(hash_get down_deps $parent)
> > > > @@ -553,12 +590,8 @@
> > > > message "Please fix broken dependencies with cleanse
> > > > --prune"
> > > > fi
> > > > else
> > > > - message
> > > > "${SPELL_COLOR}${parent}${DEFAULT_COLOR}${MESSAGE_COLOR}" \
> > > > - "had the following non-optional depends removed:" \
> > > > - "${DEFAULT_COLOR}"
> > > > - message "${SPELL_COLOR}"
> > > > - echo $non_optional_borkers | col
> > > > - message "${DEFAULT_COLOR}"
> > > > + dispel_parents_list_borkers $parent "$optional_borkers" \
> > > > + "$runtime_borkers"
> > > > "$suggested_borkers"
> > > > if dispel_parent_query "Dispel $parent?" \
> > > > "$DISPEL_PARENT_DEFAULT"; then
> > > >
> > > > @@ -607,8 +640,8 @@
> > > > if [[ $DO_DEPENDS ]] ; then
> > > > while [[ $SPELLS ]] ; do
> > > > debug dispel "recomputing depends tree"
> > > > - compute_installed_depends down_deps
> > > > - compute_reverse_installed_depends up_deps
> > > > + compute_installed_depends down_deps all
> > > > + compute_reverse_installed_depends up_deps all
> > > > dispel_depends_engine "$SPELLS" SPELLS
> > > > debug dispel "SPELLS $SPELLS"
> > > > done
> > > >
> > > > === modified file 'var/lib/sorcery/modules/libapi'
> > > > --- var/lib/sorcery/modules/libapi
> > > > +++ var/lib/sorcery/modules/libapi
> > > > @@ -19,7 +19,6 @@
> > > >
> > > > #---------------------------------------------------------------------
> > > > # functions defined in here: (in alphabetical order)
> > > > # acquire_src (libsummon)
> > > > -# altruistic_sub_depends (libdepends)
> > > > # config_query (libmisc)
> > > > # config_query_list (libmisc)
> > > > # config_query_option (libmisc)
> > > > @@ -70,6 +69,7 @@
> > > > # query (libmisc)
> > > > # query_string (libmisc)
> > > > # requires (libdepends)
> > > > +# runtime_depends (libdepends)
> > > > # rm_source_dir (libgrimoire)
> > > > # sedit (libmisc)
> > > > # sub_depends (libdepends)
> > > > @@ -77,6 +77,7 @@
> > > > # spell_held (libstate)
> > > > # spell_installed (libstate)
> > > > # spell_ok (libstate)
> > > > +# suggest_depends (libdepends)
> > > > # track_manual (libtrack)
> > > > # uncompress (libunpack)
> > > > # unpack (libunpack) (deprecated)
> > > > @@ -129,19 +130,6 @@
> > > > }
> > > >
> > > >
> > > > #---------------------------------------------------------------------
> > > > -## @Type API
> > > > -## @params Name of a sub-depends that the current spell is providing.
> > > > -## @See <@function
> > > > var.lib.sorcery.modules.libdepends.html,real_altruistic_sub_depends>
> > > > for more details.
> > > > -##
> > > > -## Altruistically provide a sub-depends.
> > > > -##
> > > > -#---------------------------------------------------------------------
> > > > -function altruistic_sub_depends() {
> > > > - debug "libapi" "$FUNCNAME - $*"
> > > > - real_altruistic_sub_depends "$@"
> > > > -}
> > > > -
> > > > -#---------------------------------------------------------------------
> > > > ## @See <@function
> > > > var.lib.sorcery.modules.libmisc.html,real_config_query> for more
> > > > details.
> > > > ## @param config file variable
> > > > ## @param question
> > > > @@ -984,6 +972,20 @@
> > > >
> > > >
> > > > #---------------------------------------------------------------------
> > > > ## @Type API
> > > > +## @param spell/service
> > > > +## @param enabled options (optional)
> > > > +## @param description (optional)
> > > > +## @param grimoires (optional)
> > > > +## @See <@function
> > > > var.lib.sorcery.modules.libdepends.html,real_depends> for more
> > > > details.
> > > > +## Denotes that a spell requires another spell to work.
> > > > +#---------------------------------------------------------------------
> > > > +function runtime_depends () {
> > > > + debug "libapi" "runtime_depends - $*"
> > > > + real_runtime_depends "$@"
> > > > +}
> > > > +
> > > > +#---------------------------------------------------------------------
> > > > +## @Type API
> > > > ## @param sed command
> > > > ## @param file
> > > > ## @See <@function var.lib.sorcery.modules.libmisc.html,real_sedit>
> > > > for more details.
> > > > @@ -1063,6 +1065,21 @@
> > > >
> > > >
> > > > #---------------------------------------------------------------------
> > > > ## @Type API
> > > > +## @param spell/service
> > > > +## @param enabled options (optional)
> > > > +## @param disabled options (optional)
> > > > +## @param description (optional)
> > > > +## @param grimoires (optional)
> > > > +## @See <@function
> > > > var.lib.sorcery.modules.libdepends.html,real_suggest_depends> for
> > > > more details.
> > > > +## Denotes that a spell can use another spell for additional
> > > > functionality.
> > > > +#---------------------------------------------------------------------
> > > > +function suggest_depends () {
> > > > + debug "libapi" "suggest_depends - $*"
> > > > + real_suggest_depends "$@"
> > > > +}
> > > > +
> > > > +#---------------------------------------------------------------------
> > > > +## @Type API
> > > > ## @param file to uncompress
> > > > ## @See <@function
> > > > var.lib.sorcery.modules.libunpack.html,real_uncompress> for more
> > > > details.
> > > > ##
> > > >
> > > > === modified file 'var/lib/sorcery/modules/libdepends'
> > > > --- var/lib/sorcery/modules/libdepends
> > > > +++ var/lib/sorcery/modules/libdepends
> > > > @@ -18,24 +18,24 @@
> > > > # -> run PREPARE
> > > > # -> run CONFIGURE
> > > > # -> run DEPENDS
> > > > -# -> depends <spell> (external)
> > > > +# -> depends|runtime_depends <spell> (external)
> > > > # -> work_depends_spell
> > > > # -> private_common_depends -> libstate.add_depends
> > > > # -> add to NEW_DEPENDS
> > > > # -> libstate.add_depends
> > > > -# -> optional_depends <spell> (external)
> > > > +# -> optional_depends|suggest_depends <spell> (external)
> > > > # -> work_optional_depends_spell
> > > > # -> query
> > > > # -> private_common_depends -> libstate.add_depends
> > > > # -> add to NEW_DEPENDS
> > > > # -> libstate.add_depends
> > > > -# -> depends <provider> (external)
> > > > +# -> depends|runtime_depends <provider> (external)
> > > > # -> work_depends_provider
> > > > # -> select provider
> > > > # -> private_common_depends -> libstate.add_depends
> > > > # -> add to NEW_DEPENDS
> > > > # -> libstate.add_depends
> > > > -# -> optional_depends <provider> (external)
> > > > +# -> optional_depends|suggest_depends <provider> (external)
> > > > # -> work_optional_depends_provider
> > > > # -> select provider
> > > > # -> private_common_depends
> > > > @@ -82,8 +82,7 @@
> > > >
> > > > debug "cast" "run_prepare() - SPELL = $SPELL SCRIPT_DIRECTORY =
> > > > $SCRIPT_DIRECTORY"
> > > >
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}preparing environment...${DEFAULT_COLOR}"
> > > > + depends_message "${SPELL}" "preparing environment..."
> > > >
> > > > # these are here so you can source section/grimoire level scripts
> > > > in
> > > > # PREPARE, which by definition runs before the spell is loaded
> > > > @@ -139,8 +138,7 @@
> > > > local PROTECT_SORCERY=yes
> > > > persistent_load &&
> > > > if [ -x $SCRIPT_DIRECTORY/CONFIGURE ]; then
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}running configuration...${DEFAULT_COLOR}"
> > > > + depends_message "${SPELL}" "running configuration..."
> > > > . $SCRIPT_DIRECTORY/CONFIGURE
> > > > else
> > > > default_configure
> > > > @@ -166,8 +164,7 @@
> > > > local PROTECT_SORCERY=yes
> > > > persistent_load &&
> > > > if [ -x $SCRIPT_DIRECTORY/DEPENDS ]; then
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}checking dependencies...${DEFAULT_COLOR}"
> > > > + depends_message "${SPELL}" "checking dependencies..."
> > > > . $SCRIPT_DIRECTORY/DEPENDS
> > > > else
> > > > default_depends
> > > > @@ -191,8 +188,7 @@
> > > >
> > > > local PROTECT_SORCERY=yes
> > > > if [ -x $SCRIPT_DIRECTORY/UP_TRIGGERS ]; then
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}checking for reverse
> > > > triggers...${DEFAULT_COLOR}"
> > > > + depends_message "${SPELL}" "checking for reverse triggers..."
> > > > # we need &&'s to preserve the proper return code
> > > > (persistant_save
> > > > # will probably succeed even if PREPARE fails)
> > > > persistent_load &&
> > > > @@ -251,6 +247,7 @@
> > > > run_details
> > > > local NEW_SUB_DEPENDEES=""
> > > > local NEW_DEPENDS=()
> > > > + local NEW_RUNTIME_DEPENDS=()
> > > > process_sub_depends "$this_spell" "$sub_dependee"
> > > > "$sub_depends" ||
> > > > return 1
> > > >
> > > > @@ -314,12 +311,19 @@
> > > > local hash=$1
> > > > touch $DEPENDS_STATUS $SPELL_STATUS &>/dev/null
> > > >
> > > > + local pattern
> > > > + if [[ $2 ]] ; then
> > > > + pattern="required|optional|runtime|suggest"
> > > > + else
> > > > + pattern="required|optional"
> > > > + fi
> > > > +
> > > > # From here forward $1 and $2 are only used to refer to awk
> > > > variables
> > > >
> > > > # sub(/(.*)/, "", $2) removes a provider name
> > > > - eval $(awk -F : 'BEGIN {
> > > > + eval $(awk -v pattern="$pattern" -F : 'BEGIN {
> > > > while (getline < ARGV[1] ) {
> > > > - if( $3=="on") {
> > > > + if( $3=="on" && ( $4 ~ pattern ) ) {
> > > > sub(/\(.*\)/, "", $2);
> > > > depmap[$1]=depmap[$1]" "$2" "
> > > > }
> > > > @@ -343,13 +347,19 @@
> > > > #$1==hash table to fill
> > > > local hash=$1
> > > > touch $DEPENDS_STATUS $SPELL_STATUS &>/dev/null
> > > > + local pattern
> > > > + if [[ $2 ]] ; then
> > > > + pattern="required|optional|runtime|suggest"
> > > > + else
> > > > + pattern="required|optional"
> > > > + fi
> > > >
> > > > # From here forward $1 and $2 are only used to refer to awk
> > > > variables
> > > >
> > > > # sub(/(.*)/, "", $2) removes a provider name
> > > > - eval $(awk -F : 'BEGIN {
> > > > + eval $(awk -v pattern="$pattern" -F : 'BEGIN {
> > > > while (getline < ARGV[1] ) {
> > > > - if( $3=="on") {
> > > > + if( $3=="on" && ( $4 ~ pattern ) ) {
> > > > sub(/\(.*\)/, "", $2);
> > > > depmap[$2]=depmap[$2]" "$1" "
> > > > }
> > > > @@ -393,6 +403,7 @@
> > > > local CAST_HASH="$1"
> > > > local BACK_CAST_HASH="$2"
> > > > local CANNOT_CAST_HASH="$3"
> > > > + BONUS_SPELLS=()
> > > > shift 3
> > > > local spell spells
> > > > spells=( $@ )
> > > > @@ -423,6 +434,8 @@
> > > >
> > > > # we need this so processes on the other side of make know whats
> > > > going on
> > > > hash_export uncommitted_hash
> > > > +
> > > > + BONUS_SPELLS=( ${BONUS_SPELLS[*]} ${UP_DEPENDS[*]} )
> > > > }
> > > >
> > > >
> > > > #---------------------------------------------------------------------
> > > > @@ -438,6 +451,8 @@
> > > > # special accumulators for the current spell
> > > > local NEW_DEPENDS=""
> > > > local NEW_SUB_DEPENDEES=""
> > > > + local NEW_RUNTIME_DEPENDS=""
> > > > + local NEW_UP_DEPENDS=""
> > > > local triggerees=""
> > > > local spell_depends
> > > > local spell_sub_depends
> > > > @@ -460,8 +475,7 @@
> > > > # have a chance at being fixed, ideally we should check in
> > > > # depends/optional_depends and fail there
> > > > if spell_exiled $1; then
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}is exiled and will not be
> > > > cast.${DEFAULT_COLOR}"
> > > > + depends_message "${SPELL}" "is exiled and will not be cast."
> > > > return 1
> > > > fi
> > > > get_uncommitted_depends_file $SPELL spell_depends
> > > > @@ -491,13 +505,17 @@
> > > > # no point in keeping the file around if its empty...
> > > > test -s $spell_depends || rm -f $spell_depends $spell_sub_depends
> > > >
> > > > + if echo "${RUNTIME_DEPENDS[*]}"| tr " " "\n" | grep -x -q
> > > > "$SPELL" ; then
> > > > + local k=${#BONUS_SPELLS[@]}
> > > > + BONUS_SPELLS[$k]=$SPELL
> > > > + fi
> > > > +
> > > > # this processes any sub-depends we requested and the
> > > > sub-dependee
> > > > # has already been processed, so we must process them on their
> > > > behalf
> > > > # this must be done after everything else!
> > > > run_other_sub_depends "$SPELL" || return 1
> > > > else
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}No work to do.${DEFAULT_COLOR}"
> > > > + depends_message "${SPELL}" "No work to do."
> > > > hash_put "depends_looked_at" "$SPELL" "ignore"
> > > > fi
> > > >
> > > > @@ -506,10 +524,9 @@
> > > > }
> > > >
> > > >
> > > > #---------------------------------------------------------------------
> > > > -## Decides if a spell should be case. Check if the spell is installed
> > > > -## if it matters, etc...
> > > > -## Perhaps this function is overly splayed out in elif's but its
> > > > -## easier to add to later than what we had before...
> > > > +## Decides if a spell should be cast, or if we can leave it alone.
> > > > +## Check if the spell is installed, or if theres some other reason to
> > > > +## rebuild it.
> > > > ## @param Spell
> > > >
> > > > #---------------------------------------------------------------------
> > > > function private_should_cast()
> > > > @@ -558,10 +575,10 @@
> > > > # and/or move the weird pattern into library functions...
> > > > # (afrayedknot 2005-10-02)
> > > > tmp=$(grep "^.*:$1\(([^:]*)\)\?" $DEPENDS_STATUS|cut -f1 -d:|tr
> > > > "\n" " ")
> > > > - local j each
> > > > - let j=${#UP_DEPENDS[*]}
> > > > + local j k each
> > > > + let j=${#NEW_UP_DEPENDS[*]}
> > > > for each in $tmp; do
> > > > - UP_DEPENDS[$j]=$each
> > > > + NEW_UP_DEPENDS[$j]=$each
> > > > let j++
> > > > done
> > > > spells=( ${spells[*]} ${tmp} )
> > > > @@ -575,14 +592,12 @@
> > > > function private_recast_optionals() {
> > > > if [[ $RECAST_OPTIONALS ]] && [[ $RECAST_OPTIONALS != ignore ]] ;
> > > > then
> > > > local spell j enabled
> > > > - let j=${#UP_DEPENDS[*]}
> > > > + let j=${#NEW_UP_DEPENDS[*]}
> > > > for spell in $(search_depends_status_exact $DEPENDS_STATUS \
> > > > '.*' "$1\(([^:]*)\)\?" off optional '.*' '.*'|cut
> > > > -f1 -d:); do
> > > >
> > > > enabled=""
> > > > - message "${SPELL_COLOR}$spell${DEFAULT_COLOR}${CHECK_COLOR}" \
> > > > - "has a disabled optional depends on${DEFAULT_COLOR}" \
> > > > - "${SPELL_COLOR}$1${DEFAULT_COLOR}"
> > > > + message "$spell" "has a disabled optional dependency on" "$1"
> > > > if [[ $RECAST_OPTIONALS == always ]] ; then
> > > > enabled=yes
> > > > else
> > > > @@ -593,7 +608,7 @@
> > > > fi
> > > > fi
> > > > if [[ $enabled ]] ; then
> > > > - UP_DEPENDS[$j]=$each
> > > > + NEW_UP_DEPENDS[$j]=$each
> > > > let j++
> > > > remove_depends_status $DEPENDS_STATUS $each
> > > > "${1}\(([^:]*)\)\?"
> > > > fi
> > > > @@ -611,9 +626,17 @@
> > > > ## @param grimoires to look in
> > > > ## Delegates provider and spell cases to different worker functions.
> > > > ## and gets grimoires if necessary for cross grimoire depends
> > > > -#---------------------------------------------------------------------
> > > > -function real_depends()
> > > > +##
> > > > +## Called by real_depends and real_runtime_depends
> > > > +#---------------------------------------------------------------------
> > > > +function real_generic_required_depends()
> > > > {
> > > > + local failure_ok=$1
> > > > + local article=$2
> > > > + local query_term=$3
> > > > + local database_term=$4
> > > > + shift 4
> > > > +
> > > > if [[ "$1" == "-sub" ]] ; then
> > > > local requested_sub_depends=$2
> > > > shift 2
> > > > @@ -684,24 +707,46 @@
> > > > fi
> > > > if [[ ! $here ]] && [[ ! $current ]] ; then
> > > > message "${PROBLEM_COLOR}no grimoire for $1 was
> > > > retrieved${DEFAULT_COLOR}"
> > > > - return 1
> > > > + if [[ $failure_ok == "no" ]] || ! query "Build $1 anyway?" y;
> > > > then
> > > > + return 1
> > > > + fi
> > > > fi
> > > > fi
> > > >
> > > > local target_spell
> > > > if ! codex_does_spell_exist $1 &> /dev/null; then
> > > > - work_depends_provider "$@" &&
> > > > + work_depends_provider "$failure_ok" "$article" \
> > > > + "$query_term" "$databse_term"
> > > > "$@" &&
> > > > if [[ "$requested_sub_depends" ]]; then
> > > > target_spell=$(get_spell_provider "$SPELL" "$1")
> > > > fi
> > > > else
> > > > - work_depends_spell "$@" &&
> > > > + work_depends_spell "$failure_ok" "$article" \
> > > > + "$query_term" "$databse_term"
> > > > "$@" &&
> > > > target_spell=$1
> > > > fi &&
> > > > for sub_depend in $requested_sub_depends; do
> > > > sub_depends "$target_spell" "$sub_depend" || return 1
> > > > done
> > > > }
> > > > +
> > > > +
> > > > +#---------------------------------------------------------------------
> > > > +## Passthrough to real_generic_required_depends, specifies the
> > > > +## parts that differ from runtime depends
> > > > +#---------------------------------------------------------------------
> > > > +function real_depends() {
> > > > + real_generic_required_depends "no" "a" "dependency" "required" "$@"
> > > > +}
> > > > +
> > > > +#---------------------------------------------------------------------
> > > > +## Passthrough to real_generic_required_depends, specifies the
> > > > +## parts that differ from required depends
> > > > +#---------------------------------------------------------------------
> > > > +function real_runtime_depends() {
> > > > + real_generic_required_depends "yes" "a" "runtime dependency"
> > > > "runtime" "$@"
> > > > +}
> > > > +
> > > >
> > > >
> > > > #---------------------------------------------------------------------
> > > > ## @param spell or provider name
> > > > @@ -710,9 +755,17 @@
> > > > ## @param description
> > > > ## @param grimoires to look in
> > > > ## Delegates provider and spell cases to different worker functions.
> > > > -#---------------------------------------------------------------------
> > > > -function real_optional_depends()
> > > > +##
> > > > +## Called by real_depends and real_runtime_depends
> > > > +#---------------------------------------------------------------------
> > > > +function real_generic_optional_depends()
> > > > {
> > > > + local failure_ok=$1
> > > > + local article=$2
> > > > + local query_term=$3
> > > > + local database_term=$4
> > > > + shift 4
> > > > +
> > > > if [[ "$1" == "-sub" ]] ; then
> > > > local requested_sub_depends=$2
> > > > shift 2
> > > > @@ -781,18 +834,20 @@
> > > > if [[ ! $here ]] && [[ ! $current ]] ; then
> > > > message "${PROBLEM_COLOR}no grimoire for $1 was
> > > > retrieved${DEFAULT_COLOR}"
> > > > message "Assuming dependency is off because it could not be
> > > > met"
> > > > - private_common_depends "$1" "off" "optional" "$2" "$3"
> > > > + private_common_depends "$1" "off" "$database_term" "$2" "$3"
> > > > fi
> > > > fi
> > > >
> > > > local target_spell
> > > > if ! codex_does_spell_exist $1 &> /dev/null; then
> > > > - work_optional_depends_provider "$@" &&
> > > > + work_optional_depends_provider "$failure_ok" "$article" \
> > > > + "$query_term" "$databse_term"
> > > > "$@" &&
> > > > if [[ "$requested_sub_depends" ]]; then
> > > > target_spell=$(get_spell_provider "$SPELL" "$1")
> > > > fi
> > > > else
> > > > - work_optional_depends_spell "$@" &&
> > > > + work_optional_depends_spell "$failure_ok" "$article" \
> > > > + "$query_term" "$databse_term"
> > > > "$@" &&
> > > > target_spell=$1
> > > > fi &&
> > > > if [[ "$requested_sub_depends" ]] &&
> > > > @@ -806,6 +861,23 @@
> > > > }
> > > >
> > > >
> > > > #---------------------------------------------------------------------
> > > > +## Passthrough to real_generic_optional_depends, specifies the
> > > > +## parts that differ from suggest depends
> > > > +#---------------------------------------------------------------------
> > > > +function real_optional_depends() {
> > > > + real_generic_optional_depends "no" "an" "optional dependency"
> > > > "optional" "$@"
> > > > +}
> > > > +
> > > > +#---------------------------------------------------------------------
> > > > +## Passthrough to real_generic_required_depends, specifies the
> > > > +## parts that differ from optional depends
> > > > +#---------------------------------------------------------------------
> > > > +function real_suggest_depends() {
> > > > + real_generic_optional_depends "yes" "a" "suggested dependency"
> > > > "suggest" "$@"
> > > > +}
> > > > +
> > > > +
> > > > +#---------------------------------------------------------------------
> > > > ## Asks the user what provider for a depends is desired if a choice
> > > > ## has not ben made before.
> > > > ## @param Service
> > > > @@ -819,14 +891,16 @@
> > > > local default tmp installed=no
> > > > local status=()
> > > >
> > > > + local failure_ok=$1
> > > > + local article=$2
> > > > + local query_term=$3
> > > > + local database_term=$4
> > > > + shift 4
> > > > +
> > > > if [[ $3 ]] ; then
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}requires some${DEFAULT_COLOR}" \
> > > > - "${SPELL_COLOR}${1}${DEFAULT_COLOR} ($3)."
> > > > + depends_message "${SPELL}" "has $article $query_term on some"
> > > > "${1}" "($3)."
> > > > else
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}requires some${DEFAULT_COLOR}" \
> > > > - "${SPELL_COLOR}${1}${DEFAULT_COLOR}."
> > > > + depends_message "$SPELL" "has $article $query_term on some"
> > > > "${1}."
> > > > fi
> > > >
> > > > local CANDIDATES=$( find_providers $1)
> > > > @@ -834,7 +908,9 @@
> > > > message "${PROBLEM_COLOR}No providers of${DEFAULT_COLOR}" \
> > > > "${SPELL_COLOR}$1${DEFAULT_COLOR}" \
> > > > "${PROBLEM_COLOR} can be found!${DEFAULT_COLOR}"
> > > > - return 1
> > > > + if [[ $failure_ok == "no" ]] || ! query "Build $1 anyway?" y;
> > > > then
> > > > + return 1
> > > > + fi
> > > > fi
> > > >
> > > > # if not reconfiguring check if theres already an answer in
> > > > DEPENDS_STATUS
> > > > @@ -847,7 +923,7 @@
> > > > tmp=${status[1]%(*} # Name of spell which provides $1
> > > > if spell_ok $tmp &&
> > > > query "Continue to use ${SPELL_COLOR}$tmp${DEFAULT_COLOR}?"
> > > > y; then
> > > > - private_common_depends "$tmp($1)" "on" "required" "$2" "$3"
> > > > + private_common_depends "$tmp($1)" "on" "$database_term" "$2"
> > > > "$3"
> > > > return 0
> > > > fi
> > > > fi
> > > > @@ -881,7 +957,7 @@
> > > >
> > > > select_provider "provider" "$default" 0 $CANDIDATES
> > > >
> > > > - private_common_depends "$provider($1)" "on" "required" "$2" ""
> > > > + private_common_depends "$provider($1)" "on" "$database_term" "$2"
> > > > ""
> > > > }
> > > >
> > > >
> > > > #---------------------------------------------------------------------
> > > > @@ -889,23 +965,27 @@
> > > > ## on to the common dependency function, <@function
> > > > private_common_depends>
> > > > ## @param Spell
> > > > ## @param enabled options
> > > > -## @param disabled options (useless, but included for some reason)
> > > > -## @param grimoire the spell is in, if its different than the
> > > > current one
> > > >
> > > > #---------------------------------------------------------------------
> > > > function work_depends_spell()
> > > > {
> > > > debug "libdepends" "$FUNCNAME - $@"
> > > >
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}depends on" \
> > > > - "${SPELL_COLOR}${1}${DEFAULT_COLOR}"
> > > > + local failure_ok=$1
> > > > + local article=$2
> > > > + local query_term=$3
> > > > + local database_term=$4
> > > > + shift 4
> > > > +
> > > > + depends_message "${SPELL}" "has $article $query_term on" "$1"
> > > >
> > > > if spell_exiled $1 ; then
> > > > - hash_put $CANNOT_CAST_HASH "$1" "Exiled"
> > > > - message "${SPELL_COLOR}${1}${DEFAULT_COLOR} has been exiled!"
> > > > - return 1
> > > > - fi
> > > > - private_common_depends "$1" "on" "required" "$2" ""
> > > > + depends_message "${1}" "has been exiled!"
> > > > + if [[ $failure_ok == "no" ]] || ! query "Build $1 anyway?" y;
> > > > then
> > > > + hash_put $CANNOT_CAST_HASH "$1" "Exiled"
> > > > + return 1
> > > > + fi
> > > > + fi
> > > > + private_common_depends "$1" "on" "$database_term" "$2" ""
> > > >
> > > > }
> > > >
> > > > @@ -923,14 +1003,16 @@
> > > > local default tmp installed=no
> > > > local status=()
> > > >
> > > > + local failure_ok=$1
> > > > + local article=$2
> > > > + local query_term=$3
> > > > + local database_term=$4
> > > > + shift 4
> > > > +
> > > > if [[ $4 ]] ; then
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}optionally requires some${DEFAULT_COLOR}"
> > > > \
> > > > - "${SPELL_COLOR}${1}${DEFAULT_COLOR} ($4)."
> > > > + depends_message "${SPELL}" "has $article $query_term on some"
> > > > "${1}" "($4)."
> > > > else
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}optionally requires some${DEFAULT_COLOR}"
> > > > \
> > > > - "${SPELL_COLOR}${1}${DEFAULT_COLOR}."
> > > > + depends_message "${SPELL}" "has $article $query_term on some"
> > > > "${1}."
> > > > fi
> > > >
> > > > local CANDIDATES=$( find_providers $1)
> > > > @@ -940,7 +1022,7 @@
> > > > local tmp=${status[1]%(*} # Name of spell which provides $1
> > > > if spell_ok $tmp &&
> > > > query "Continue to use
> > > > ${SPELL_COLOR}$tmp${DEFAULT_COLOR}?" y; then
> > > > - private_common_depends "$tmp($1)" "on" "required" "$2" "$3"
> > > > + private_common_depends "$tmp($1)" "on" "$database_term" "$2"
> > > > "$3"
> > > > return 0
> > > > fi
> > > > fi
> > > > @@ -990,9 +1072,9 @@
> > > > select_provider "provider" "$default" 1 $CANDIDATES
> > > >
> > > > if [ $provider == "none" ] ; then
> > > > - private_common_depends "($1)" "off" "optional" "$2" "$3"
> > > > + private_common_depends "($1)" "off" "$database_term" "$2" "$3"
> > > > else
> > > > - private_common_depends "$provider($1)" "on" "optional" "$2" "$3"
> > > > + private_common_depends "$provider($1)" "on" "$database_term"
> > > > "$2" "$3"
> > > > fi
> > > >
> > > > }
> > > > @@ -1009,12 +1091,18 @@
> > > >
> > > > debug "libdepends" "$FUNCNAME - $@"
> > > > local default
> > > > +
> > > > + local failure_ok=$1
> > > > + local article=$2
> > > > + local query_term=$3
> > > > + local database_term=$4
> > > > + shift 4
> > > >
> > > > # if $1 optionally depends on something exiled we always say no
> > > > if spell_exiled $1 ; then
> > > > - message "${SPELL_COLOR}${1}${DEFAULT_COLOR} has been exiled! not
> > > > using as a depends"
> > > > + depends_message "${1}" "has been exiled! not using as $article
> > > > $query_term"
> > > > hash_put $CANNOT_CAST_HASH "$1" "Exiled"
> > > > - private_common_depends "$1" "off" "optional" "$2" "$3"
> > > > + private_common_depends "$1" "off" "$database_term" "$2" "$3"
> > > > return 0
> > > > fi
> > > >
> > > > @@ -1028,18 +1116,25 @@
> > > > if [[ ${status[2]} ]] ; then
> > > > # ah there are! use them
> > > > if [[ ${status[2]} == "on" ]] ; then
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}optionally depends on" \
> > > > - "${SPELL_COLOR}${1}${DEFAULT_COLOR}"
> > > > + depends_message "${SPELL}" "has an enabled $query_term on"
> > > > "${1}"
> > > > else
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}has a disabled optional depends on" \
> > > > - "${SPELL_COLOR}${1}${DEFAULT_COLOR}"
> > > > + depends_message "${SPELL}" "has a disabled $query_term on"
> > > > "${1}"
> > > > fi
> > > > - private_common_depends "$1" "${status[2]}" "optional" "$2" "$3"
> > > > + private_common_depends "$1" "${status[2]}" "$database_term"
> > > > "$2" "$3"
> > > > return 0
> > > > fi
> > > > fi
> > > > + # colors differ from depends_message
> > > > + if [[ $4 ]]; then
> > > > + message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > + "has $article $query_term on" \
> > > > + "${SPELL_COLOR}$1${DEFAULT_COLOR} ($4)"
> > > > + else
> > > > + message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > + "has $article $query_term on" \
> > > > + "${SPELL_COLOR}$1${DEFAULT_COLOR}"
> > > > + fi
> > > > +
> > > >
> > > > # check for abandoned answers
> > > > if [ -e $ABANDONED_DEPENDS/$SPELL ] ; then
> > > > @@ -1086,10 +1181,6 @@
> > > >
> > > > local stuff
> > > > [[ $default == off ]] && stuff=n || stuff=y
> > > > -
> > > > - message "${SPELL_COLOR}${1}${DEFAULT_COLOR}" \
> > > > - "is an optional dependency for" \
> > > > - "${SPELL_COLOR}$SPELL${DEFAULT_COLOR} ($4)"
> > > >
> > > > if spell_ok $1 ; then
> > > > query "Do you want to use ${SPELL_COLOR}$1${DEFAULT_COLOR}?"
> > > > "$stuff" &&
> > > > @@ -1099,7 +1190,7 @@
> > > > install="on"
> > > > fi
> > > >
> > > > - private_common_depends "$1" "$install" "optional" "$2" "$3"
> > > > + private_common_depends "$1" "$install" "$database_term" "$2" "$3"
> > > > }
> > > >
> > > >
> > > > #---------------------------------------------------------------------
> > > > @@ -1209,10 +1300,8 @@
> > > > local sub_dependee=$1
> > > > local sub_depends=$2
> > > >
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}requests" \
> > > > -
> > > > "${SPELL_COLOR}$sub_dependee${DEFAULT_COLOR}${CHECK_COLOR}" \
> > > > - "with ${SPELL_COLOR}$sub_depends${DEFAULT_COLOR}"
> > > > + message "${SPELL}${DEFAULT_COLOR}" "requests" "$sub_dependee" \
> > > > + "${CHECK_COLOR} with
> > > > ${SPELL_COLOR}$sub_depends${DEFAULT_COLOR}"
> > > >
> > > > # Check if the sub-depends is already known
> > > > if spell_ok $sub_dependee; then
> > > > @@ -1233,7 +1322,6 @@
> > > > test -x $SCRIPT_DIRECTORY/PRE_SUB_DEPENDS || return 1
> > > > persistent_load &&
> > > > source $SCRIPT_DIRECTORY/PRE_SUB_DEPENDS; rc=$?
> > > > -echo $rc
> > > > persistent_save
> > > > return $rc
> > > > ) && {
> > > > @@ -1278,9 +1366,7 @@
> > > > debug "libdepends" "$FUNCNAME - $SPELL - $@"
> > > > local check=$(hash_get "depends_looked_at" "$1")
> > > >
> > > > - message "${SPELL_COLOR}${SPELL}${DEFAULT_COLOR}" \
> > > > - "${CHECK_COLOR}is forcing a recast of" \
> > > > - "${SPELL_COLOR}${1}${DEFAULT_COLOR}"
> > > > + message "${SPELL}" "is forcing a recast of" "${1}"
> > > >
> > > > if [[ "$check" == "ignore" ]] ; then
> > > > hash_put "depends_looked_at" "$1" ""
> > > > @@ -1298,12 +1384,18 @@
> > > > {
> > > > debug "libdepends" "$FUNCNAME - $SPELL - $@"
> > > > add_depends $spell_depends "$SPELL" "$@"
> > > > -
> > > > +
> > > > + # runtime and suggested depends have no formal dependency info
> > > > if [[ $2 == on ]] ; then
> > > > # ${1%(*} = spell name (strips potential provider name)
> > > > local spell_name=${1%(*}
> > > > - NEW_DEPENDS=( ${NEW_DEPENDS[*]} $spell_name )
> > > > - fi
> > > > + case $3 in
> > > > + runtime|suggest)
> > > > + NEW_RUNTIME_DEPENDS=( ${NEW_RUNTIME_DEPENDS[*]}
> > > > $spell_name ) ;;
> > > > + *) NEW_DEPENDS=( ${NEW_DEPENDS[*]} $spell_name ) ;;
> > > > + esac
> > > > + fi
> > > > +
> > > >
> > > > return 0
> > > > }
> > > > @@ -1389,10 +1481,16 @@
> > > > hash_append "$BACK_CAST_HASH" "basesystem" "$SPELL"
> > > > fi
> > > >
> > > > - spells=( ${spells[*]} ${NEW_DEPENDS[*]} ${NEW_SUB_DEPENDEES[*]} )
> > > > + spells=( ${spells[*]} ${NEW_DEPENDS[*]}
> > > > + ${NEW_SUB_DEPENDEES[*]}
> > > > + ${NEW_RUNTIME_DEPENDS[*]} )
> > > > +
> > > > + RUNTIME_DEPENDS=( ${RUNTIME_DEPENDS[*]} ${NEW_RUNTIME_DEPENDS[*]} )
> > > >
> > > > TRIGGEREES=( ${TRIGGEREES[*]} ${triggerees[*]} )
> > > > spells=( ${spells[*]} ${triggerees[*]} )
> > > > +
> > > > + UP_DEPENDS=( ${UP_DEPENDS[*]} ${NEW_UP_DEPENDS[*]} )
> > > >
> > > > hash_put "depends_looked_at" "$SPELL" "done"
> > > >
> > > > @@ -1405,8 +1503,7 @@
> > > > function want_lazy_update() {
> > > > if [[ $LAZY_DEPENDS_UPDATES ]] && [[ $LAZY_DEPENDS_UPDATES !=
> > > > ignore ]] ; then
> > > > if does_spell_need_update "$1" ; then
> > > > - message "${SPELL_COLOR}$1${DEFAULT_COLOR}${CHECK_COLOR}" \
> > > > - "needs updating${DEFAULT_COLOR}"
> > > > + depends_message "$1" "needs updating"
> > > > if [[ "$LAZY_DEPENDS_UPDATES" == always ]] ; then
> > > > return 0
> > > > else
> > > > @@ -1417,6 +1514,20 @@
> > > > fi
> > > > fi
> > > > return 1
> > > > +}
> > > > +
> > > > +function depends_message() {
> > > > + if [[ $# -ge 2 ]] ; then
> > > > + message -n "${SPELL_COLOR}${1}${DEFAULT_COLOR}" \
> > > > + "${CHECK_COLOR}${2}${DEFAULT_COLOR}"
> > > > + fi
> > > > + if [[ $# -ge 3 ]] ; then
> > > > + message -n " ${SPELL_COLOR}${3}${DEFAULT_COLOR}"
> > > > + fi
> > > > + if [[ $# -ge 4 ]] ; then
> > > > + message -n " ($4)"
> > > > + fi
> > > > + message ""
> > > > }
> > > >
> > > >
> > > >
> > > > === modified file 'var/lib/sorcery/modules/libstate'
> > > > --- var/lib/sorcery/modules/libstate
> > > > +++ var/lib/sorcery/modules/libstate
> > > > @@ -40,7 +40,8 @@
> > > >
> > > > #ensure the info is valid (perhaps add check that spells exist?)
> > > > if ( [[ $3 != on ]] && [[ $3 != off ]] ) ||
> > > > - ( [[ $4 != required ]] && [[ $4 != optional ]] ); then
> > > > + ( [[ $4 != required ]] && [[ $4 != optional ]] &&
> > > > + [[ $4 != runtime ]] && [[ $4 != suggest ]]; ); then
> > > > return 1
> > > > fi
> > > >
> > > >
> > > > _______________________________________________
> > > > SM-Commit mailing list
> > > > SM-Commit AT lists.ibiblio.org
> > > > http://lists.ibiblio.org/mailman/listinfo/sm-commit
> > > _______________________________________________
> > > SM-Commit mailing list
> > > SM-Commit AT lists.ibiblio.org
> > > http://lists.ibiblio.org/mailman/listinfo/sm-commit
> > >
> >
> > --
> > Arwed v. Merkatz Source Mage GNU/Linux
> > developer
> >
> > http://www.sourcemage.org
> > _______________________________________________
> > SM-Commit mailing list
> > SM-Commit AT lists.ibiblio.org
> > http://lists.ibiblio.org/mailman/listinfo/sm-commit
>
> --
> _________________________________________________________________________
> | Andrew D. Stitt | acedit at armory.com | astitt at sourcemage.org |
> | irc: afrayedknot | Sorcery Team Lead | ftp://t.armory.com/ |
> | 1024D/D39B096C | 76E4 728A 04EE 62B2 A09A 96D7 4D9E 239B D39B 096C |
> -------------------------------------------------------------------------
> _______________________________________________
> SM-Commit mailing list
> SM-Commit AT lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/sm-commit
>

--
Arwed v. Merkatz Source Mage GNU/Linux developer
http://www.sourcemage.org




Archive powered by MHonArc 2.6.24.

Top of Page