X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fautodist%2Fautodist.in;h=fd5b1b1d06086942b955dc89e5b2a36d1178e5fe;hb=9bcca19274fc7e01b7d5888ab0ca8b47fa94b362;hp=00a7c95585758eb15c37a833aed072c34ef7c744;hpb=17886a01cad2650b1421367d4f3f0eadc25261bb;p=autodist.git diff --git a/apps/autodist/autodist.in b/apps/autodist/autodist.in index 00a7c95..fd5b1b1 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 @@ -183,26 +224,29 @@ ad_create_distdefs_h() fname=$DISTDEFS rm -f $fname - echo "/*" > $fname - echo " Automatically generated by Autodist $ver. Do not edit." >> $fname - echo >> $fname - echo " Generated: `date` by `whoami`" >> $fname - echo " Distribution: $distribution" >> $fname - echo " License: $license" >> $fname - echo "*/" >> $fname - echo >> $fname - echo "#ifndef _"$DP"_DISTDEFS_H" >> $fname - echo "#define _"$DP"_DISTDEFS_H" >> $fname - echo >> $fname + cat > $fname <>$fname done - echo >> $fname - echo "#endif /* _"$DP"_DISTDEFS_H */" >> $fname + cat >> $fname </dev/null 2>/dev/null + if test x$debug = xtrue; then + $ACLOCAL + else + $ACLOCAL 1>/dev/null 2>/dev/null + fi if test $? != 0; then ad_fatal "aclocal failed" fi @@ -279,7 +327,7 @@ ad_make_configure_ac() ad_fatal "The configure file '$1' does not exist" fi - check="`cat $1 | sed 's/^[ ]*//' | grep -v "^#" | grep -e "AD_INIT"`" + check="`sed 's/^[ ]*//' < $1 | grep -v "^#" | grep -e "AD_INIT"`" if test -z $check; then rm -f configure.ad.cfs rm -f $fname $fname.tmp @@ -299,7 +347,7 @@ ad_make_configure_ac() done if test -f configure.ad.cfs; then - check="`cat $1 | sed 's/^[ ]*//' | grep -v "^#" | grep -e "AD_INCLUDE_CONFIGURE"`" + check="`sed 's/^[ ]*//' < $1 | 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" @@ -308,14 +356,16 @@ ad_make_configure_ac() # Header for configure.ac fname="configure.tmp.ac" - echo "# Automatically generated by Autodist $ver. Do not edit." > $fname - echo "# To make changes edit the configure.ad file in the source tree." >> $fname - echo >> $fname - echo "# Source: configure.ad" >> $fname - echo "# Generated: `date` by `whoami`" >> $fname - echo "# Distribution: $distribution" >> $fname - echo "# License: $license" >> $fname - echo >> $fname + cat > $fname < configure.ac + sed -e :a -e '/\\$/N; s/[ ]*\\\n//; ta' < $fname > configure.ac else cp -p $fname.tmp configure.ac fi @@ -381,14 +431,16 @@ ad_make_makefile_ams() fname=`echo $ff | sed s/\.ad//` # Header for the Makefile.am - echo "# Automatically generated by Autodist $ver from Makefile.ad. Do not edit." > $fname.am - echo "# To make changes edit the $ff file in the source tree." >> $fname.am - echo >> $fname.am - echo "# Source: $ff" >> $fname.am - echo "# Generated: `date` by `whoami`" >> $fname.am - echo "# Distribution: $distribution" >> $fname.am - echo "# License: $license" >> $fname.am - echo >> $fname.am + cat > $fname.am <> $fname.am + sed -e :a -e '/\\$/N; s/[ ]*\\\n//; ta' < $fname.tmp >> $fname.am else cat $ff >> $fname.am fi @@ -422,16 +474,6 @@ ad_process_ads() do fname=`echo $i | sed s/\.ad//` - # Header - echo "# Automatically generated by Autodist $ver. Do not edit." > $fname - echo "# To make changes edit the $i file in the source tree." >> $fname - echo >> $fname - echo "# Source: $i" >> $fname - echo "# Generated: `date` by `whoami`" >> $fname - echo "# Distribution: $distribution" >> $fname - echo "# License: $license" >> $fname - echo >> $fname - # Run the distribution processing for this file ad_debug "Processing $i to be $fname" ad_process_file $i $fname @@ -560,7 +602,7 @@ ad_dist_includes() fi # Recursively call this function with expanded pathnames. The - # reason why we don't let sh by default expand patnames is that + # reason why we don't let sh by default expand pathnames is that # the include's destination is optional. If sh expands by default # we don't know the destination. For this reason, we handle the # expansion here ourselves. @@ -646,16 +688,21 @@ ad_process_tree() { ad_debug ">ad_process_tree: $1" - # We take all files, other than *.ad, including source files, in case - # they use the non-C-compiler-friendly format of distdefs, which is - # possible. - - files=`find $am_distdir \! -name \*\.ad` + # Take files, except source and .ad files. + files=`find $am_distdir \! -name \*\.ad \( \ + \! -name \*\.[cC] -a \ + \! -name \*\.[cC][cCpP] -a \ + \! -name \*\.[cC][xX][xX] -a \ + \! -name \*\.[cC][pP][pP] -a \ + \! -name \*\.[cC]++ -a \ + \! -name \*\.m -a \ + \! -name \*\.[hH] -a \ + \! -name \*\.hh \)` files=`echo $files | sed 's/$am_distdir//'` # Take away noprocess list if test -f autodist.noprocess; then - files=`echo $files | sh autodist.noprocess` || exit 1 + files=`echo $files" " | sh autodist.noprocess` || exit 1 fi for ff in $files @@ -699,7 +746,7 @@ ad_process_source_tree() # Take away noprocess list if test -f autodist.noprocess; then - files=`echo $files | sh autodist.noprocess` || exit 1 + files=`echo $files" " | sh autodist.noprocess` || exit 1 fi for ff in $files @@ -737,7 +784,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` @@ -781,11 +828,11 @@ ad_makedist() fi # Parse the requested distribution - distribution=`cat autodist.dist | grep "dist:" | cut -d: -f2` - dist_version=`cat autodist.dist | grep "ver:" | cut -d: -f2` + distribution=`grep "dist:" < autodist.dist | cut -d: -f2` || exit 1 + dist_version=`grep "ver:" < autodist.dist | cut -d: -f2` || exit 1 + am_distdir=`grep "distdir:" < autodist.dist | cut -d: -f2` || exit 1 ad_parse_distribution $distribution false ad_process_distdefs - am_distdir="$package-$dist_version" if test x$opt_no_dist = xtrue; then ad_fatal "The '$distribution' distribution cannot be packaged" @@ -949,11 +996,11 @@ ad_parse_distribution() fi # Get inherited - inhs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + inhs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "inherit " | cut -d' ' -f2 | sort | uniq` # Get distdefs - defs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + defs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "define " | cut -d' ' -f2 | sort | uniq` if test "$inhs" = "" && test "$defs" = ""; then @@ -961,23 +1008,23 @@ ad_parse_distribution() fi # Get undefined distdefs - undefs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + undefs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "undef " | cut -d' ' -f2 | sort | uniq` # Get includes - incs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + incs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "include " | sed 's/include / : /'` # Get excludes - excs=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + excs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "exclude " | cut -d' ' -f2- | sort | uniq` # Get noprocesses - nops=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + nops=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "noprocess " | cut -d' ' -f2- | sort | uniq` # Get options - opts=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + opts=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "option " | cut -d' ' -f2- | sort | uniq` # Check options @@ -989,13 +1036,13 @@ ad_parse_distribution() ad_fatal "Template distribution '$1' cannot be prepared or packaged" fi - ad_debug "inherits=$inhs" - ad_debug "distdefs=$defs" - ad_debug "includes=$incs" - ad_debug "excludes=$excs" - ad_debug "noprocess=$nops" - ad_debug "undistdefs=$undefs" - ad_debug "options=$opts" + ad_debug "inherits: $inhs" + ad_debug "distdefs: $defs" + ad_debug "includes: $incs" + ad_debug "excludes: $excs" + ad_debug "noprocess: $nops" + ad_debug "undistdefs: $undefs" + ad_debug "options: $opts" # Expand distdefs from inherited distributions for i in $inhs @@ -1014,17 +1061,17 @@ ad_parse_distribution() done # Get license - license=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + license=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "license " | cut -d' ' -f2` - licenseh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + licenseh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "license-header " | sed 's/license-header / : /'` - ad_debug "license=$license" - ad_debug "licenseh=$licenseh" + ad_debug "license: $license" + ad_debug "licenseh: $licenseh" if test x$2 = xfalse; then # Get distribution name - dname=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + dname=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "name " | cut -d' ' -f2-` if test "$dname"; then @@ -1032,7 +1079,7 @@ ad_parse_distribution() fi # Get distribution package name (optional) - dpname=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + dpname=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "package " | cut -d' ' -f2` if test "$dpname"; then @@ -1042,30 +1089,30 @@ ad_parse_distribution() fi # Get Bug-report email address (optional) - bugr=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + bugr=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "bug-report " | cut -d' ' -f2-` if test "$bugr"; then bug_report=$bugr fi - ad_debug "distribution=$distribution" - ad_debug "package=$package" - ad_debug "bug-report=$bug_report" + ad_debug "distribution: $distribution" + ad_debug "package: $package" + ad_debug "bug-report: $bug_report" # Get hooks (optional) - prh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + prh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "pre-hook " | cut -d' ' -f2-` - poh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ + poh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ | grep "post-hook " | cut -d' ' -f2-` - prdh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ - | grep "pre-dist-hook " | sed 's/^[ ]*//' | cut -d' ' -f2-` - podh=`cat $distdir/$1 | grep -v "^#" \ - | grep "post-dist-hook " | sed 's/^[ ]*//' | cut -d' ' -f2-` - prpdh=`cat $distdir/$1 | sed 's/^[ ]*//' | grep -v "^#" \ - | grep "pre-process-dist-hook " | sed 's/^[ ]*//' | cut -d' ' -f2-` - popdh=`cat $distdir/$1 | grep -v "^#" \ - | grep "post-process-dist-hook " | sed 's/^[ ]*//' | cut -d' ' -f2-` + prdh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ + | grep "pre-dist-hook " | cut -d' ' -f2-` + podh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ + | grep "post-dist-hook " | cut -d' ' -f2-` + prpdh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ + | grep "pre-process-dist-hook " | cut -d' ' -f2-` + popdh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \ + | grep "post-process-dist-hook " | cut -d' ' -f2-` pre_hooks="$pre_hooks $prh" post_hooks="$post_hooks $poh" @@ -1073,10 +1120,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 @@ -1104,18 +1151,17 @@ ad_process_distdefs() for i in $undistdefs do ad_debug "undefining $i distdef" - distdefs=`echo $distdefs | sed s/$i//` + distdefs=`echo $distdefs | sed s/$i//g` 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 do echo $i >>autodist.tmp.defs done - distdefs=`cat autodist.tmp.defs | sort | uniq` + distdefs=`sort < autodist.tmp.defs | uniq` distdefs=`echo $distdefs` rm -f autodist.tmp.defs @@ -1188,14 +1234,17 @@ ad_process_noprocess() ad_debug ">ad_process_noprocess" + cur=`pwd` + cd $am_distdir || exit 1 for i in $noprocess do # Escape ie=`echo $i | sed 's/\\//\\\\\//g'` || exit 1 - n="$n -e 's/$am_distdir\\/$ie//'" + n="$n -e 's/$am_distdir\\/$ie //'" np=true done + cd $cur || exit 1 rm -f autodist.noprocess if test x$np = xtrue; then @@ -1240,8 +1289,8 @@ ad_process_file() 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" - ad_debug "ndefs=$ndefs" + ad_debug "defs in $1: $defs" + ad_debug "ndefs in $1: $ndefs" # Create the script to include and exclude stuff in the file according # to the distribution defines @@ -1345,7 +1394,8 @@ ad_process_source_file() 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" + ad_debug "defs in $1: $defs" + ad_debug "ndefs in $1: $ndefs" # Create the script to include and exclude stuff in the file according # to the distribution defines @@ -1428,7 +1478,7 @@ ad_run_hooks() if test '!' -f $i; then ad_fatal "Hook script $i does not exist" fi - sh $i $distribution $dist_version $package || exit 1 + sh $i "$distribution" "$dist_version" "$package" || exit 1 done ad_debug " autodist.dist echo "ver:$dist_version" >> autodist.dist -echo "$package-$dist_version" >> autodist.dist +echo "distdir:$package-$dist_version" >> autodist.dist # # Run post-hooks