X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fautodist%2Fautodist.in;h=67a266314f42237d242ebe8e5282b42a64acdf09;hb=472b9ed77838ccbcb24ab9a717c1683bc6f1b82e;hp=d969cd856d085f891cf1b6ba4aae80e35e680855;hpb=92b2597e91dfb53d1f95a402f3ec908b29f831c1;p=autodist.git diff --git a/apps/autodist/autodist.in b/apps/autodist/autodist.in index d969cd8..67a2663 100755 --- a/apps/autodist/autodist.in +++ b/apps/autodist/autodist.in @@ -30,6 +30,47 @@ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # +############################################################################### +# Shell compatibility + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + # Despite of this, we have managed to segfault some zsh's. + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + + ############################################################################### # Global variables @@ -60,7 +101,7 @@ distdefs= undistdefs= # All distribution options -options= +doptions= opt_template=false opt_no_dist=false opt_no_inherit=false @@ -214,9 +255,10 @@ ad_create_distdefs_h() # ad_make_configure() { - ad_debug ">ad_make_configure" local run_autoconf=false + ad_debug ">ad_make_configure" + rm -f configure if test "$ACLOCAL"; then @@ -270,13 +312,15 @@ ad_make_configure() # ad_make_configure_ac() { + local check + ad_debug ">ad_make_configure_ac: $1" if test '!' -f $1; then ad_fatal "The configure file '$1' does not exist" fi - local check="`cat $1 | sed 's/^[ ]*//' | grep -v "^#" | grep -e "AD_INIT"`" + check="`cat $1 | sed 's/^[ ]*//' | grep -v "^#" | grep -e "AD_INIT"`" if test -z $check; then rm -f configure.ad.cfs rm -f $fname $fname.tmp @@ -296,7 +340,7 @@ ad_make_configure_ac() done if test -f configure.ad.cfs; then - local check="`cat $1 | sed 's/^[ ]*//' | grep -v "^#" | grep -e "AD_INCLUDE_CONFIGURE"`" + check="`cat $1 | sed 's/^[ ]*//' | grep -v "^#" | grep -e "AD_INCLUDE_CONFIGURE"`" if test -z $check; then rm -f configure.ad.cfs ad_warning "configure.ad fragments found but 'AD_INCLUDE_CONFIGURE' is not set" @@ -455,13 +499,15 @@ ad_process_ads() # ad_dist_includes() { + local incs + ad_debug ">ad_dist_includes: $1 $2" # By default do not expand pathnames set -f # Add : separator at the end - local incs="`echo "$1" | sed 's/$/ : /'`" + incs="`echo "$1" | sed 's/$/ : /'`" src= dst= @@ -732,7 +778,7 @@ ad_makedist_makesane() ad_fatal "Makefile: No such file or directory" fi - configh=`grep "^CONFIG_HEADER" Makefile | cut -d= -f2 | sed 's/^[ \t]//'` + configh=`grep "^CONFIG_HEADER" Makefile | cut -d= -f2 | sed 's/^[ ]*//'` touch $am_distdir/$configh.in 1>/dev/null 2>/dev/null files=`find $am_distdir -name Makefile\.in` @@ -920,6 +966,23 @@ ad_clear_options() # ad_parse_distribution() { + local inhs + local defs + local undefs + local incs + local excs + local nops + local opts + local dname + local dpname + local bugr + local prh + local poh + local prdh + local podh + local prpdh + local popdh + ad_debug ">ad_parse_distribution: $1 $2" if test '!' -f $distdir/$1; then @@ -927,11 +990,11 @@ ad_parse_distribution() fi # Get inherited - local inhs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + inhs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "inherit " | cut -d' ' -f2 | sort | uniq` # Get distdefs - local defs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + defs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "define " | cut -d' ' -f2 | sort | uniq` if test "$inhs" = "" && test "$defs" = ""; then @@ -939,23 +1002,23 @@ ad_parse_distribution() fi # Get undefined distdefs - local undefs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + undefs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "undef " | cut -d' ' -f2 | sort | uniq` # Get includes - local incs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + incs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "include " | sed 's/include / : /'` # Get excludes - local excs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + excs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "exclude " | cut -d' ' -f2- | sort | uniq` # Get noprocesses - local nops=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + nops=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "noprocess " | cut -d' ' -f2- | sort | uniq` # Get options - local opts=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + opts=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "option " | cut -d' ' -f2- | sort | uniq` # Check options @@ -1002,7 +1065,7 @@ ad_parse_distribution() if test x$2 = xfalse; then # Get distribution name - local dname=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + dname=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "name " | cut -d' ' -f2-` if test "$dname"; then @@ -1010,7 +1073,7 @@ ad_parse_distribution() fi # Get distribution package name (optional) - local dpname=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + dpname=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "package " | cut -d' ' -f2` if test "$dpname"; then @@ -1020,7 +1083,7 @@ ad_parse_distribution() fi # Get Bug-report email address (optional) - local bugr=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + bugr=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "bug-report " | cut -d' ' -f2-` if test "$bugr"; then @@ -1032,17 +1095,17 @@ ad_parse_distribution() ad_debug "bug-report=$bug_report" # Get hooks (optional) - local prh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + prh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "pre-hook " | cut -d' ' -f2-` - local poh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + poh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "post-hook " | cut -d' ' -f2-` - local prdh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + prdh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "pre-dist-hook " | sed 's/^[ ]*//' | cut -d' ' -f2-` - local podh=`cat $distdir/$1 | grep -v "^#" \ + podh=`cat $distdir/$1 | grep -v "^#" \ | grep "post-dist-hook " | sed 's/^[ ]*//' | cut -d' ' -f2-` - local prpdh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + prpdh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ | grep "pre-process-dist-hook " | sed 's/^[ ]*//' | cut -d' ' -f2-` - local popdh=`cat $distdir/$1 | grep -v "^#" \ + popdh=`cat $distdir/$1 | grep -v "^#" \ | grep "post-process-dist-hook " | sed 's/^[ ]*//' | cut -d' ' -f2-` pre_hooks="$pre_hooks $prh" @@ -1051,10 +1114,10 @@ ad_parse_distribution() post_dist_hooks="$post_dist_hooks $podh" pre_p_dist_hooks="$pre_p_dist_hooks $prpdh" post_p_dist_hooks="$post_p_dist_hooks $popdh" - options="$options $opts" + doptions="$doptions $opts" - ad_handle_options "$options" - ad_debug "options=$options" + ad_handle_options "$doptions" + ad_debug "options=$doptions" fi # Return to caller @@ -1085,8 +1148,7 @@ ad_process_distdefs() distdefs=`echo $distdefs | sed s/$i//` done - rm -f autodist.tmp.defs autodist.pre.hooks autodist.post.hooks - rm -f autodist.pre.dist.hooks autodist.post.dist.hooks + rm -f autodist.tmp.defs # Remove duplicate distdefs for i in $distdefs @@ -1161,11 +1223,11 @@ ad_process_license_header() # ad_process_noprocess() { - ad_debug ">ad_process_noprocess" local np=false - local n="sed " + ad_debug ">ad_process_noprocess" + for i in $noprocess do # Escape @@ -1191,6 +1253,9 @@ ad_process_noprocess() ad_process_file() { local found=false + local f + local defs + local ndefs # Process only regular files if test '!' -f $1; then @@ -1199,7 +1264,7 @@ ad_process_file() ad_debug ">ad_process_file: $1 $2" - local f="autodist.tmp.script" + f="autodist.tmp.script" rm -f $f # If license header is provided, replace the license header in the file. @@ -1208,11 +1273,11 @@ ad_process_file() ad_debug "Getting #ifdef's and #ifndef's" # Get defined distribution defines - local defs=`awk "/^#ifdef "$DP"_DIST_|^#else "$DP"_DIST_/ { print; }" \ + defs=`awk "/^#ifdef "$DP"_DIST_|^#else "$DP"_DIST_/ { print; }" \ $1 |cut -d'*' -f2 |cut -d' ' -f2 | sort | uniq` # Get explicitly not-defined distribution defines - local ndefs=`awk "/^#ifndef "$DP"_DIST_|^#else !"$DP"_DIST_/ { print; }" \ + ndefs=`awk "/^#ifndef "$DP"_DIST_|^#else !"$DP"_DIST_/ { print; }" \ $1 |cut -d'*' -f2 |cut -d' ' -f2 | cut -d'!' -f2 | sort | uniq` ad_debug "defs=$defs" @@ -1293,6 +1358,9 @@ ad_process_file() ad_process_source_file() { local found=false + local f + local defs + local ndefs # Process only regular files if test '!' -f $1; then @@ -1301,7 +1369,7 @@ ad_process_source_file() ad_debug ">ad_process_source_file: $1 $2" - local f="autodist.tmp.script" + f="autodist.tmp.script" rm -f $f # If license header is provided, replace the license header in the file. @@ -1310,11 +1378,11 @@ ad_process_source_file() ad_debug "Getting #ifdef's and #ifndef's" # Get defined distribution defines - local defs=`awk '/^#ifdef SILC_DIST_|^#else \/\* SILC_DIST_/ { print; }' \ + defs=`awk '/^#ifdef SILC_DIST_|^#else \/\* SILC_DIST_/ { print; }' \ $1 |cut -d'*' -f2 |cut -d' ' -f2 | sort | uniq` # Get explicitly not-defined distribution defines - local ndefs=`awk '/^#ifndef SILC_DIST_|^#else \/\* \!SILC_DIST_/ { print; }' \ + ndefs=`awk '/^#ifndef SILC_DIST_|^#else \/\* \!SILC_DIST_/ { print; }' \ $1 |cut -d'*' -f2 |cut -d' ' -f2 | cut -d'!' -f2 | sort | uniq` ad_debug "defs=$defs ndefs=$ndefs" @@ -1582,6 +1650,11 @@ ad_make_makefile_ams # ad_make_configure_ac ./configure.ad +# +# Process all files with .ad suffix for distribution processing +# +ad_process_ads + # # Generate configure script # @@ -1592,11 +1665,6 @@ ad_make_configure # ad_make_makefile_ins -# -# Process all files with .ad suffix for distribution processing -# -ad_process_ads - # # Create autodist.dist #