From e3c79532e9a33b68ecacea4be7866778f4da614c Mon Sep 17 00:00:00 2001 From: Tony Fischetti Date: Mon, 29 Dec 2014 17:29:11 -0500 Subject: [PATCH] big update to documentation --- doc/texinfo/sake-doc.html | 143 +++++++++++++++++++++++++++++++- doc/texinfo/sake-doc.pdf | Bin 188630 -> 194198 bytes doc/texinfo/sake-doc.texi | 148 +++++++++++++++++++++++++++++++++- functests/test3/Sakefile.yaml | 2 +- sakelib/acts.py | 2 +- 5 files changed, 289 insertions(+), 6 deletions(-) diff --git a/doc/texinfo/sake-doc.html b/doc/texinfo/sake-doc.html index 2e39010..73a2d81 100644 --- a/doc/texinfo/sake-doc.html +++ b/doc/texinfo/sake-doc.html @@ -1343,11 +1343,150 @@

4 Advanced Sake Usage

4.1 Using Patterns

-

hi +

Sake may have a strong preference for elegance and simplicity, but that +doesn’t mean Sake is lacking advanced features. One such feature is +’formula patterns’. +

+

Very often in project building, the same procedure has to be performed +on many similar files. Formula patterns allow you to condense all of the +targets down to one that gets automatically autoexpanded. If you find +yourself with targets that have identical formulas except for a file +that changes from target to target, this might be a perfect application +for formula patterns. +

+

Concretely, it is a common C programming/compilation idiom to compile all +C files in a directory into object files (which then get linked together). +If there are four such .c files (file1.c, file2.c file3.c, and file4.c) +in a directory that all need to be object-compiled, you certainly +can create four different targets to perform this, but you can +also leverage formula patterns here. +

+

If the original Sakefile snippet looked like this: +

+
compile C file1:
+    help: compiles C file 1
+    dependencies:
+        - "file1.c"
+    formula: >
+        gcc -c -o file1.o file1.c
+    output:
+        - file1.o
+
+compile C file2:
+    help: compiles C file 2
+    ....
+
+ +

the new target to replace the four targets above will look like: +

+
compile %cfiles:
+    help: compiles file %cfiles into object file
+    dependencies:
+        - "%cfiles.c"
+    formula: >
+        gcc -c -o %cfiles.o %cfiles.c
+    output:
+        - %cfiles
+
+ +

This may appear as but one target in the Sakefile, but as far as Sake is +concerned, these are four different targets (or how ever many files the +pattern matches–it was just four in our example). +

+

To prove it, sake help will yield: +

+
"compile file1":
+  - compiles file file1 into object file
+
+"compile file2":
+  - compiles file file2 into object file
+...
+
+ +

Additionally, since these are separate targets, sake visual will +render them separately, and parallel sake will run them in parallel, if +applicable. +

+

Note that anywhere in the target the string "%cfiles" is used, the +substitution is of the base name of the file, and not the file extentions. +

+

For another example, say you have to convert all png images in a directory +to jpeg files; you have a program called "picconvert" that performes the +conversion. The Sakefile snippet will look a little like this: +

+
convert %picfile:
+    dependencies:
+        - %picfile.png
+    formula: >
+        picconvert --from png --to jpg %picfile.png %picfile.jpg
+    output:
+        - %picfile.jpg
+
+ +

When using patterns in your Sakefiles, there are four things to keep in mind +

    +
  1. The pattern must appear in the dependency field. +
  2. A target that has a pattern in the dependency must have the pattern in the +target name. Because Sake treats every file match as a new target, and +different targets cannot share a name, the pattern must be in the target name +to get outexpanded and keep the target names different and specific. +
  3. A target using a pattern must use the pattern in its formula. +
  4. A target using a pattern must have an output, and must use the pattern +in the output +
+

Don’t be worried about this requirements; It is hard to think of a +legitimate usage of formula patterns that will violate any of the rules above.

4.2 Using Includes

-

hi +

Sake’s second advanced feature is called "includes". +

+

Includes are a lot like storing macros in a different file and then +importing those macro definitions into your Sakefile. +

+

The primary use case for this feature would be to use the same Sakefile +across different architectures/platforms but be able to substitute +values for platform dependent variables. +

+

For example, let’s say a C project decides to support the two most +popular open source C compilers, clang and gcc. It would be silly to write +two different Sakefiles–one that uses gcc for compilation, and one that uses +clang for compilation–and switch which Sakefile you use dependending on +the machine being used. +

+

Instead, a program can be run to interrogate a system, find the name of the +extant/preferred C compiler, and drop that into a yaml file as a Sake +compatible macro. That very macro can then be included in the Sakefile. +

+

Concretely, let’s say a configure script is run and it determines that gcc is +the preferred C compiler. It can then create a file called config.yaml +with the following content: +

+
#! C_Compiler=gcc
+
+ +

In the Sakefile, we can include a line like this: +

+
#< config.yaml
+
+

This will make the C_Compiler macro available for use in the Sakefile. +(Note that "config.yaml" could have been named anything.) +

+

If you include a non-existent config file, sake will throw a fatal +error. There may be a use case, however, where you would like to include a +macro definition file, but don’t want to strictly require it. In this +case, you can label the include file optional, as in this line: +

+
#< filetoinclude.yaml optional
+
+ +

It is also possible to raise a warning when an optional include file is +missing; the user will see this warning everytime sake is run until +the include file becomes existent. This can be done thusly: +

+
#< filetoinclude.yaml or warning: include file missing
+
+

Everything after the "or" will be considered the warning message.


diff --git a/doc/texinfo/sake-doc.pdf b/doc/texinfo/sake-doc.pdf index dcd59342d9a63bcebebb4f0a23e9856030c8de8e..a0f8d231bd565386c7c418196d3e88163647829c 100644 GIT binary patch delta 46116 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 TK4A(9yyL{t>FH%uWYPZ@b1O1j diff --git a/doc/texinfo/sake-doc.texi b/doc/texinfo/sake-doc.texi index df10279..bb0e5e4 100644 --- a/doc/texinfo/sake-doc.texi +++ b/doc/texinfo/sake-doc.texi @@ -1324,11 +1324,155 @@ The Sakefile in the example above will yield a visualization like this: @c ----------------------- @section Using Patterns -hi +Sake may have a strong preference for elegance and simplicity, but that +doesn't mean Sake is lacking advanced features. One such feature is +'formula patterns'. + +Very often in project building, the same procedure has to be performed +on many similar files. Formula patterns allow you to condense all of the +targets down to one that gets automatically autoexpanded. If you find +yourself with targets that have identical formulas except for a file +that changes from target to target, this might be a perfect application +for formula patterns. + +Concretely, it is a common C programming/compilation idiom to compile all +C files in a directory into object files (which then get linked together). +If there are four such .c files (file1.c, file2.c file3.c, and file4.c) +in a directory that all need to be object-compiled, you certainly +@emph{can} create four different targets to perform this, but you can +also leverage formula patterns here. + +If the original Sakefile snippet looked like this: +@example +compile C file1: + help: compiles C file 1 + dependencies: + - "file1.c" + formula: > + gcc -c -o file1.o file1.c + output: + - file1.o + +compile C file2: + help: compiles C file 2 + .... +@end example + +the new target to replace the four targets above will look like: +@example +compile %cfiles: + help: compiles file %cfiles into object file + dependencies: + - "%cfiles.c" + formula: > + gcc -c -o %cfiles.o %cfiles.c + output: + - %cfiles +@end example + +This may appear as but one target in the Sakefile, but as far as Sake is +concerned, these are four different targets (or how ever many files the +pattern matches--it was just four in our example). + +To prove it, @code{sake help} will yield: +@example +"compile file1": + - compiles file file1 into object file + +"compile file2": + - compiles file file2 into object file +... +@end example + +Additionally, since these are separate targets, @code{sake visual} will +render them separately, and parallel sake will run them in parallel, if +applicable. + +Note that anywhere in the target the string "@code{%cfiles}" is used, the +substitution is of the base name of the file, and not the file extentions. + +For another example, say you have to convert all png images in a directory +to jpeg files; you have a program called "picconvert" that performes the +conversion. The Sakefile snippet will look a little like this: +@example +convert %picfile: + dependencies: + - %picfile.png + formula: > + picconvert --from png --to jpg %picfile.png %picfile.jpg + output: + - %picfile.jpg +@end example + +When using patterns in your Sakefiles, there are four things to keep in mind +@enumerate +@item +The pattern must appear in the dependency field. +@item +A target that has a pattern in the dependency must have the pattern in the +target name. Because Sake treats every file match as a new target, and +different targets cannot share a name, the pattern must be in the target name +to get outexpanded and keep the target names different and specific. +@item +A target using a pattern must use the pattern in its formula. +@item +A target using a pattern must have an output, and must use the pattern +in the output +@end enumerate +Don't be worried about this requirements; It is hard to think of a +legitimate usage of formula patterns that will violate any of the rules above. @c ----------------------- +@c ----------------------- @section Using Includes -hi +Sake's second advanced feature is called "includes". + +Includes are a lot like storing macros in a different file and then +importing those macro definitions into your Sakefile. + +The primary use case for this feature would be to use the same Sakefile +across different architectures/platforms but be able to substitute +values for platform dependent variables. + +For example, let's say a C project decides to support the two most +popular open source C compilers, clang and gcc. It would be silly to write +two different Sakefiles--one that uses gcc for compilation, and one that uses +clang for compilation--and switch which Sakefile you use dependending on +the machine being used. + +Instead, a program can be run to interrogate a system, find the name of the +extant/preferred C compiler, and drop that into a yaml file as a Sake +compatible macro. That very macro can then be included in the Sakefile. + +Concretely, let's say a configure script is run and it determines that gcc is +the preferred C compiler. It can then create a file called @code{config.yaml} +with the following content: +@example +#! C_Compiler=gcc +@end example + +In the Sakefile, we can include a line like this: +@example +#< config.yaml +@end example +This will make the @code{C_Compiler} macro available for use in the Sakefile. +(Note that "@code{config.yaml}" could have been named anything.) + +If you include a non-existent config file, @code{sake} will throw a fatal +error. There may be a use case, however, where you would like to include a +macro definition file, but don't want to strictly @emph{require} it. In this +case, you can label the include file @code{optional}, as in this line: +@example +#< filetoinclude.yaml optional +@end example + +It is also possible to raise a warning when an optional include file is +missing; the user will see this warning everytime @code{sake} is run until +the include file becomes existent. This can be done thusly: +@example +#< filetoinclude.yaml or warning: include file missing +@end example +Everything after the "@code{or}" will be considered the warning message. @c ----------------------- @c -------------------------------------------------------------------- diff --git a/functests/test3/Sakefile.yaml b/functests/test3/Sakefile.yaml index 95244fb..9007b8f 100644 --- a/functests/test3/Sakefile.yaml +++ b/functests/test3/Sakefile.yaml @@ -4,7 +4,7 @@ ## #< config.yaml -###< optional.yaml or this was optional anyways +######< optional.yaml or this was optional anyways #< optional.yaml optional #! CFLAGS=-w -O2 -I./include diff --git a/sakelib/acts.py b/sakelib/acts.py index b494edf..a3b2f87 100644 --- a/sakelib/acts.py +++ b/sakelib/acts.py @@ -169,7 +169,7 @@ def expand_macros(raw_text, macros={}): includes = {} result = [] pattern = re.compile("#!\s*(\w+)\s*=\s*(.+$)", re.UNICODE) - ipattern = re.compile("#<\s*(\S+)\s*(optional|or\s+(.+))?$") + ipattern = re.compile("#<\s*(\S+)\s*(optional|or\s+(.+))?$", re.UNICODE) for line in raw_text.split("\n"): line = string.Template(line).safe_substitute(macros) # note that the line is appended to result before it is checked for macros