From 0439a6698b792207efc641569d9a7b3a6c8ed77f Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Sun, 24 Apr 2005 21:58:16 +0000 Subject: [PATCH] Top distribution takes precedence on distdefs over inherited. --- apps/autodist/CHANGES | 7 ++++++- apps/autodist/autodist.in | 10 ++++++++++ apps/autodist/doc/autodist.texi | 30 +++++++++++++++++++++++------- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/apps/autodist/CHANGES b/apps/autodist/CHANGES index 9b530d3..d954c06 100644 --- a/apps/autodist/CHANGES +++ b/apps/autodist/CHANGES @@ -1,7 +1,12 @@ -Sun Apr 24 14:11:49 EEST 2005 Pekka Riikonen +Sun Apr 24 21:11:49 EEST 2005 Pekka Riikonen * Fixed undefining to actually work. + * The top distribution now takes precedence on defined + distdefs over inherited distributions, and can override + defined and undefined distdefs (previously it could only + undefine defined but not define specificly undefined :)). + Sat Apr 23 12:49:09 EEST 2005 Pekka Riikonen * Autodist 1.2.1. diff --git a/apps/autodist/autodist.in b/apps/autodist/autodist.in index fd5b1b1..a87f486 100755 --- a/apps/autodist/autodist.in +++ b/apps/autodist/autodist.in @@ -1070,6 +1070,16 @@ ad_parse_distribution() ad_debug "licenseh: $licenseh" if test x$2 = xfalse; then + # Take rest of the stuff from top distribution + + # We take precedence on defined and undefined distdefs. Remove + # undefined distdefs if we have defined them. + for d in $defs + do + ad_debug "defining undefined $d distdef" + undistdefs=`echo $undistdefs | sed s/$d//g` + done + # Get distribution name dname=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "name " | cut -d' ' -f2-` diff --git a/apps/autodist/doc/autodist.texi b/apps/autodist/doc/autodist.texi index 928432e..393eb6a 100644 --- a/apps/autodist/doc/autodist.texi +++ b/apps/autodist/doc/autodist.texi @@ -581,13 +581,14 @@ into the distribution. The specifies the name of the inherited distribution. If the distribution cannot be inherited Autodist will give an error. -The 'inherit' will inherit the following information from the distribution: -distdefs, undefines, includes, excludes and noprocess. Other information -will not be inherited. If the inherited distribution inherits other -distributions, they will also be inherited automatically. User should be -careful when inheriting distributions as it may be possible to create an -infinite recursion. The Autodist would allow for this and not detect this -error. Zero or more 'inherit' directives may be set for distribution. +The 'inherit' will inherit the following information from the +distribution: distdefs, undefines, includes, excludes and noprocesses. +Other information will not be inherited. If the inherited distribution +inherits other distributions, they will also be inherited automatically. +User should be careful when inheriting distributions as it may be possible +to create an infinite recursion. The Autodist would allow for this and +not detect this error. Zero or more 'inherit' directives may be set for +distribution. Example: @example @@ -600,6 +601,21 @@ Will inherit distributions 'common', 'client' and 'toolkit' into this distribution. All distdefs, undefines, includes, excludes and noprocesses from these distributions are now also part this distribution. +The distribution that is being prepared or packaged take precedence when +defining distdefs that were specificly undefined in the inherited +distribution. This means that if the inherited distribution specificly +undefines a distdefs but the inheriting distribution (one being prepared +or packaged) specificly defines it, the distdef will be defined. +Similarly, if the inherited distribution defines a distdef but the +inheriting distribution undefines it, the distdef will be undefined. +Note that, this precedence works only in the top distribution (the one +being prepared or packaged). If the inherited distribution inherits other +distributions, all distdefs (defined and specificly undefined) will be +inherited as is. This means that if one inherited distribution defines a +distdef that other inherited distribution distdef undefines, it will be +undefined. However, the top distribution can then override them if +needed. + @section Directive: define -- 2.24.0