2021-11-28 | Paul Boddie | raw annotate files changeset graph | Introduced support for values that can be allocated on a special thread-local stack, copied around and overwritten/mutated, demonstrating the concept using integer and floating-point numbers. Various complications arise with special attributes (such as __data__) due to the way references are tagged to indicate mutable values, and attribute slots must be cleared in locals, objects and fragments before values are stored since target slots are tested for mutable values. | tagged-address-values |
1 #!/bin/sh 2 3 DIRNAME=`dirname $0` 4 PROGNAME=`basename $0` 5 OUTDIR=$1 6 7 if [ ! "$OUTDIR" ] || [ "$1" = '--help' ] ; then 8 cat 1>&2 <<EOF 9 Usage: $PROGNAME <output directory> [ <page prefix> ] [ --releases [ --sign ] ] 10 EOF 11 exit 1 12 fi 13 14 if [ -e "$OUTDIR" ]; then 15 echo "Please remove $OUTDIR before generating a new package." 1>&2 16 exit 1 17 fi 18 19 if [ "$2" = '--releases' ]; then 20 PREFIX= 21 RELEASES=$2 22 SIGN=$3 23 else 24 PREFIX=$2 25 RELEASES=$3 26 SIGN=$4 27 fi 28 29 # Generate release archives. These are held in a separate, semi-permanent 30 # place so that archives and signatures are not regenerated unnecessarily. 31 32 if [ "$RELEASES" ]; then 33 "$DIRNAME/make_releases.sh" releases 34 fi 35 36 if [ "$SIGN" ]; then 37 "$DIRNAME/sign_releases.sh" releases 38 fi 39 40 # Generate a manifest for the page package. 41 42 MANIFEST="$OUTDIR/MOIN_PACKAGE" 43 44 mkdir "$OUTDIR" 45 cat > "$MANIFEST" <<EOF 46 MoinMoinPackage|1 47 EOF 48 49 # Add the pages to the manifest. 50 51 DOCS="$DIRNAME/../wiki" 52 53 cp "$DOCS/"* "$OUTDIR" 54 55 for FILENAME in "$DOCS/"* ; do 56 BASENAME=`basename "$FILENAME"` 57 PAGENAME=`echo "$BASENAME" | sed 's/--/\//g'` 58 if [ "$PREFIX" ]; then 59 if [ "$PAGENAME" = "Lichen" ]; then 60 PAGENAME="$PREFIX" 61 else 62 PAGENAME="$PREFIX/$PAGENAME" 63 fi 64 fi 65 echo "AddRevision|$BASENAME|$PAGENAME" >> "$MANIFEST" 66 done 67 68 if [ ! -e "releases" ]; then 69 echo "No releases to add to the page package!" 1>&2 70 else 71 # Combine the releases with the pages. 72 73 ATTACHMENT="attachment_" 74 75 for FILENAME in releases/* ; do 76 BASENAME=`basename "$FILENAME"` 77 cp "$FILENAME" "$OUTDIR/$ATTACHMENT$BASENAME" 78 done 79 80 # Add the releases to the manifest. 81 82 for FILENAME in releases/* ; do 83 BASENAME=`basename "$FILENAME"` 84 PAGENAME="Downloads" 85 if [ "$PREFIX" ]; then 86 PAGENAME="$PREFIX/$PAGENAME" 87 fi 88 echo "AddAttachment|$ATTACHMENT$BASENAME|$BASENAME|$PAGENAME" >> "$MANIFEST" 89 done 90 fi 91 92 zip -j "$OUTDIR" "$OUTDIR/"*