annotate tests/policy2.ur @ 1739:c414850f206f

Add support for -boot flag, which allows in-tree execution of Ur/Web The boot flag rewrites most hardcoded paths to point to the build directory, and also forces static compilation. This is convenient for developing Ur/Web, or if you cannot 'sudo make install' Ur/Web. The following changes were made: * Header files were moved to include/urweb instead of include; this lets FFI users point their C_INCLUDE_PATH at this directory at write <urweb/urweb.h>. For internal Ur/Web executables, we simply pass -I$PATH/include/urweb as normal. * Differentiate between LIB and SRCLIB; SRCLIB is Ur and JavaScript source files, while LIB is compiled products from libtool. For in-tree compilation these live in different places. * No longer reference Config for paths; instead use Settings; these settings can be changed dynamically by Compiler.enableBoot () (TODO: add a disableBoot function.) * config.h is now generated directly in include/urweb/config.h, for consistency's sake (especially since it gets installed along with the rest of the headers!) * All of the autotools build products got updated. * The linkStatic field in protocols now only contains the name of the build product, and not the absolute path. Future users have to be careful not to reference the Settings files to early, lest they get an old version (this was the source of two bugs during development of this patch.)
author Edward Z. Yang <ezyang@mit.edu>
date Wed, 02 May 2012 17:17:57 -0400
parents d5ecceb7d1a1
children
rev   line source
adamc@1236 1 type fruit = int
adamc@1236 2 table fruit : { Id : fruit, Nam : string, Weight : float, Secret : string }
adamc@1236 3 PRIMARY KEY Id,
adamc@1236 4 CONSTRAINT Nam UNIQUE Nam
adamc@1236 5
adamc@1236 6 (* Everyone may knows IDs and names. *)
adamc@1236 7 policy sendClient (SELECT fruit.Id, fruit.Nam
adamc@1236 8 FROM fruit)
adamc@1236 9
adamc@1236 10 (* The weight is sensitive information; you must know the secret. *)
adamc@1236 11 policy sendClient (SELECT fruit.Weight, fruit.Secret
adamc@1236 12 FROM fruit
adamc@1236 13 WHERE known(fruit.Secret))
adamc@1236 14
adamc@1236 15 fun main () =
adamc@1236 16 x1 <- queryX (SELECT fruit.Id, fruit.Nam
adamc@1236 17 FROM fruit
adamc@1236 18 WHERE fruit.Nam = "apple")
adamc@1236 19 (fn x => <xml><li>{[x.Fruit.Id]}: {[x.Fruit.Nam]}</li></xml>);
adamc@1236 20 return <xml><body>
adamc@1236 21 <ul>{x1}</ul>
adamc@1236 22 </body></xml>