0000: 23 20 48 61 63 6b 69 6e 67 20 6f 6e 20 4d 79 53 # Hacking on MyS
0010: 51 4c 2b 2b 0a 0a 49 66 20 79 6f 75 20 61 72 65 QL++..If you are
0020: 20 67 6f 69 6e 67 20 74 6f 20 6d 61 6b 65 20 61 going to make a
0030: 6e 79 20 63 68 61 6e 67 65 73 20 74 6f 20 4d 79 ny changes to My
0040: 53 51 4c 2b 2b 2c 20 74 68 69 73 20 66 69 6c 65 SQL++, this file
0050: 20 68 61 73 20 73 6f 6d 65 0a 68 69 6e 74 73 20 has some.hints
0060: 61 6e 64 20 63 6f 6d 6d 65 6e 74 61 72 79 20 79 and commentary y
0070: 6f 75 20 6d 61 79 20 66 69 6e 64 20 68 65 6c 70 ou may find help
0080: 66 75 6c 2e 0a 0a 0a 23 23 20 3c 61 20 69 64 3d ful....## <a id=
0090: 22 72 65 70 6f 22 3e 3c 2f 61 3e 43 6f 64 65 20 "repo"></a>Code
00a0: 52 65 70 6f 73 69 74 6f 72 79 20 41 63 63 65 73 Repository Acces
00b0: 73 0a 0a 4d 79 53 51 4c 2b 2b 20 75 73 65 73 20 s..MySQL++ uses
00c0: 74 68 65 20 5b 46 6f 73 73 69 6c 5d 5b 66 73 6c the [Fossil][fsl
00d0: 5d 20 5b 64 69 73 74 72 69 62 75 74 65 64 20 76 ] [distributed v
00e0: 65 72 73 69 6f 6e 20 63 6f 6e 74 72 6f 6c 0a 73 ersion control.s
00f0: 79 73 74 65 6d 5d 5b 64 76 63 73 5d 2e 20 53 65 ystem][dvcs]. Se
0100: 65 20 69 74 73 20 5b 71 75 69 63 6b 20 73 74 61 e its [quick sta
0110: 72 74 20 67 75 69 64 65 5d 5b 66 73 6c 71 5d 20 rt guide][fslq]
0120: 69 66 20 79 6f 75 20 61 72 65 20 75 6e 66 61 6d if you are unfam
0130: 69 6c 61 72 0a 77 69 74 68 20 46 6f 73 73 69 6c ilar.with Fossil
0140: 2e 0a 0a 54 68 61 74 20 46 6f 73 73 69 6c 20 72 ...That Fossil r
0150: 65 70 6f 73 69 74 6f 72 79 20 69 73 20 61 6c 73 epository is als
0160: 6f 20 5b 6d 69 72 72 6f 72 65 64 20 74 6f 20 47 o [mirrored to G
0170: 69 74 48 75 62 5d 5b 67 68 6d 5d 20 6e 69 67 68 itHub][ghm] nigh
0180: 74 6c 79 2c 20 62 75 74 0a 74 68 69 73 20 69 73 tly, but.this is
0190: 20 61 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 69 72 a read-only mir
01a0: 72 6f 72 2c 20 6d 65 61 6e 74 20 66 6f 72 20 75 ror, meant for u
01b0: 73 65 20 77 69 74 68 20 47 69 74 20 61 75 74 6f se with Git auto
01c0: 6d 61 74 69 6f 6e 20 74 6f 6f 6c 69 6e 67 2e 0a mation tooling..
01d0: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 79 6f 75 For example, you
01e0: 20 63 6f 75 6c 64 20 75 73 65 20 4d 79 53 51 4c could use MySQL
01f0: 2b 2b 20 61 73 20 61 20 73 75 62 6d 6f 64 75 6c ++ as a submodul
0200: 65 20 69 6e 20 61 20 6c 61 72 67 65 72 20 47 69 e in a larger Gi
0210: 74 0a 70 72 6f 6a 65 63 74 20 76 69 61 20 74 68 t.project via th
0220: 69 73 20 63 68 61 6e 6e 65 6c 2e 20 5b 43 68 61 is channel. [Cha
0230: 6e 67 65 73 20 74 6f 20 4d 79 53 51 4c 2b 2b 5d nges to MySQL++]
0240: 28 23 70 61 74 63 68 65 73 29 20 73 74 69 6c 6c (#patches) still
0250: 20 6d 75 73 74 20 67 6f 0a 67 6f 20 74 68 72 6f must go.go thro
0260: 75 67 68 20 74 68 65 20 46 6f 73 73 69 6c 20 72 ugh the Fossil r
0270: 65 70 6f 73 69 74 6f 72 79 2e 0a 0a 59 6f 75 20 epository...You
0280: 6d 75 73 74 20 62 65 20 72 75 6e 6e 69 6e 67 20 must be running
0290: 46 6f 73 73 69 6c 20 76 65 72 73 69 6f 6e 20 32 Fossil version 2
02a0: 2e 31 20 6f 72 20 68 69 67 68 65 72 20 74 6f 20 .1 or higher to
02b0: 61 63 63 65 73 73 20 74 68 65 20 4d 79 53 51 4c access the MySQL
02c0: 2b 2b 0a 72 65 70 6f 73 69 74 6f 72 79 2e 20 49 ++.repository. I
02d0: 66 20 79 6f 75 72 20 6f 70 65 72 61 74 69 6e 67 f your operating
02e0: 20 73 79 73 74 65 6d 20 69 6e 63 6c 75 64 65 73 system includes
02f0: 20 61 6e 20 6f 6c 64 65 72 20 46 6f 73 73 69 6c an older Fossil
0300: 20 70 61 63 6b 61 67 65 2c 0a 79 6f 75 20 77 69 package,.you wi
0310: 6c 6c 20 65 69 74 68 65 72 20 68 61 76 65 20 74 ll either have t
0320: 6f 20 69 6e 73 74 61 6c 6c 20 5b 61 6e 20 6f 66 o install [an of
0330: 66 69 63 69 61 6c 20 62 69 6e 61 72 79 5d 5b 66 ficial binary][f
0340: 73 6c 62 5d 20 6f 72 20 5b 62 75 69 6c 64 0a 69 slb] or [build.i
0350: 74 20 66 72 6f 6d 20 73 6f 75 72 63 65 5d 5b 66 t from source][f
0360: 73 6c 73 5d 2e 0a 0a 54 6f 20 63 6c 6f 6e 65 20 sls]...To clone
0370: 74 68 65 20 4d 79 53 51 4c 2b 2b 20 72 65 70 6f the MySQL++ repo
0380: 73 69 74 6f 72 79 20 61 6e 6f 6e 79 6d 6f 75 73 sitory anonymous
0390: 6c 79 2c 20 73 61 79 3a 0a 0a 20 20 20 20 24 20 ly, say:.. $
03a0: 66 6f 73 73 69 6c 20 63 6c 6f 6e 65 20 68 74 74 fossil clone htt
03b0: 70 73 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f 66 74 ps://tangentsoft
03c0: 2e 63 6f 6d 2f 6d 79 73 71 6c 70 70 20 6d 79 73 .com/mysqlpp mys
03d0: 71 6c 70 70 2e 66 6f 73 73 69 6c 0a 0a 49 66 20 qlpp.fossil..If
03e0: 79 6f 75 20 68 61 76 65 20 61 20 64 65 76 65 6c you have a devel
03f0: 6f 70 65 72 20 61 63 63 6f 75 6e 74 20 6f 6e 20 oper account on
0400: 74 68 65 20 4d 79 53 51 4c 2b 2b 20 46 6f 73 73 the MySQL++ Foss
0410: 69 6c 20 69 6e 73 74 61 6e 63 65 2c 20 6a 75 73 il instance, jus
0420: 74 20 61 64 64 0a 79 6f 75 72 20 75 73 65 72 6e t add.your usern
0430: 61 6d 65 20 74 6f 20 74 68 65 20 55 52 4c 20 6c ame to the URL l
0440: 69 6b 65 20 73 6f 3a 0a 0a 20 20 20 20 24 20 66 ike so:.. $ f
0450: 6f 73 73 69 6c 20 63 6c 6f 6e 65 20 68 74 74 70 ossil clone http
0460: 73 3a 2f 2f 55 53 45 52 4e 41 4d 45 40 74 61 6e s://USERNAME@tan
0470: 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d 79 73 gentsoft.com/mys
0480: 71 6c 70 70 20 6d 79 73 71 6c 70 70 2e 66 6f 73 qlpp mysqlpp.fos
0490: 73 69 6c 0a 0a 54 68 61 74 20 77 69 6c 6c 20 67 sil..That will g
04a0: 65 74 20 79 6f 75 20 61 20 66 69 6c 65 20 63 61 et you a file ca
04b0: 6c 6c 65 64 20 60 6d 79 73 71 6c 70 70 2e 66 6f lled `mysqlpp.fo
04c0: 73 73 69 6c 60 20 63 6f 6e 74 61 69 6e 69 6e 67 ssil` containing
04d0: 20 74 68 65 20 5b 61 62 72 69 64 67 65 64 0a 76 the [abridged.v
04e0: 65 72 73 69 6f 6e 20 68 69 73 74 6f 72 79 5d 5b ersion history][
04f0: 61 76 68 5d 20 6f 66 20 4d 79 53 51 4c 2b 2b 20 avh] of MySQL++
0500: 62 61 63 6b 20 74 6f 20 74 68 65 20 70 72 6f 6a back to the proj
0510: 65 63 74 27 73 20 66 6f 75 6e 64 69 6e 67 2e 0a ect's founding..
0520: 0a 54 68 65 20 72 65 70 6f 73 69 74 6f 72 79 20 .The repository
0530: 63 6c 6f 6e 65 20 66 69 6c 65 20 63 61 6e 20 62 clone file can b
0540: 65 20 6e 61 6d 65 64 20 61 6e 79 74 68 69 6e 67 e named anything
0550: 20 79 6f 75 20 6c 69 6b 65 2e 20 45 76 65 6e 20 you like. Even
0560: 74 68 65 0a 60 2e 66 6f 73 73 69 6c 60 20 65 78 the.`.fossil` ex
0570: 74 65 6e 73 69 6f 6e 20 69 73 20 6a 75 73 74 20 tension is just
0580: 61 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 20 6e 6f a convention, no
0590: 74 20 61 20 72 65 71 75 69 72 65 6d 65 6e 74 2e t a requirement.
05a0: 0a 0a 54 6f 20 22 6f 70 65 6e 22 20 74 68 65 20 ..To "open" the
05b0: 72 65 70 6f 20 63 6c 6f 6e 65 20 73 6f 20 79 6f repo clone so yo
05c0: 75 20 63 61 6e 20 68 61 63 6b 20 6f 6e 20 69 74 u can hack on it
05d0: 2c 20 73 61 79 3a 0a 0a 20 20 20 20 24 20 6d 6b , say:.. $ mk
05e0: 64 69 72 20 6d 79 73 71 6c 70 70 0a 20 20 20 20 dir mysqlpp.
05f0: 24 20 63 64 20 6d 79 73 71 6c 70 70 0a 20 20 20 $ cd mysqlpp.
0600: 20 24 20 66 6f 73 73 69 6c 20 6f 70 65 6e 20 2e $ fossil open .
0610: 2e 2f 6d 79 73 71 6c 70 70 2e 66 6f 73 73 69 6c ./mysqlpp.fossil
0620: 0a 0a 54 68 69 73 20 74 77 6f 20 73 74 65 70 20 ..This two step
0630: e2 80 9c 63 6c 6f 6e 65 20 61 6e 64 20 6f 70 65 “clone and ope
0640: 6e e2 80 9d 20 70 72 6f 63 65 73 73 20 6d 61 79 n” process may
0650: 20 73 65 65 6d 20 77 65 69 72 64 20 69 66 20 79 seem weird if y
0660: 6f 75 e2 80 99 72 65 20 75 73 65 64 20 74 6f 0a ou’re used to.
0670: 47 69 74 2c 20 62 75 74 20 5b 69 74 e2 80 99 73 Git, but [it’s
0680: 20 61 6e 20 69 6e 74 65 6e 74 69 6f 6e 61 6c 20 an intentional
0690: 66 65 61 74 75 72 65 5d 5b 6d 63 6b 5d 20 6f 66 feature][mck] of
06a0: 20 46 6f 73 73 69 6c 20 74 68 61 74 20 74 68 65 Fossil that the
06b0: 0a 72 65 70 6f 73 69 74 6f 72 79 20 61 6e 64 20 .repository and
06c0: 77 6f 72 6b 69 6e 67 20 64 69 72 65 63 74 6f 72 working director
06d0: 69 65 73 20 61 72 65 20 73 65 70 61 72 61 74 65 ies are separate
06e0: 2e 20 49 74 20 61 6c 6c 6f 77 73 20 79 6f 75 20 . It allows you
06f0: 74 6f 20 65 61 73 69 6c 79 0a 6d 61 6e 61 67 65 to easily.manage
0700: 20 6d 75 6c 74 69 70 6c 65 20 69 6e 64 65 70 65 multiple indepe
0710: 6e 64 65 6e 74 20 63 68 65 63 6b 6f 75 74 73 20 ndent checkouts
0720: 66 72 6f 6d 20 61 20 73 69 6e 67 6c 65 20 72 65 from a single re
0730: 70 6f 20 63 6c 6f 6e 65 2e 20 49 20 6c 69 6b 65 po clone. I like
0740: 20 61 0a 77 6f 72 6b 69 6e 67 20 74 72 65 65 20 a.working tree
0750: 74 68 61 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 that looks like
0760: 74 68 69 73 3a 0a 0a 20 20 20 20 7e 2f 6d 75 73 this:.. ~/mus
0770: 65 75 6d 2f 20 20 20 20 20 20 20 20 20 20 20 20 eum/
0780: 20 20 20 20 20 20 23 20 57 68 65 72 65 20 6f 6e # Where on
0790: 65 20 6b 65 65 70 73 20 66 6f 73 73 69 6c 73 2c e keeps fossils,
07a0: 20 72 69 67 68 74 3f 0a 20 20 20 20 20 20 20 20 right?.
07b0: 6d 79 73 71 6c 70 70 2e 66 6f 73 73 69 6c 0a 20 mysqlpp.fossil.
07c0: 20 20 20 7e 2f 73 72 63 2f 20 20 20 20 20 20 20 ~/src/
07d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 #
07e0: 57 6f 72 6b 69 6e 67 20 74 72 65 65 20 66 6f 72 Working tree for
07f0: 20 73 6f 66 74 77 61 72 65 20 70 72 6f 6a 65 63 software projec
0800: 74 73 0a 20 20 20 20 20 20 20 20 6d 79 73 71 6c ts. mysql
0810: 70 70 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 pp/
0820: 20 20 23 20 41 20 64 69 72 65 63 74 6f 72 79 20 # A directory
0830: 66 6f 72 20 65 61 63 68 20 70 72 6f 6a 65 63 74 for each project
0840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 75 . tru
0850: 6e 6b 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 nk/
0860: 23 20 50 72 69 6d 61 72 79 20 77 6f 72 6b 69 6e # Primary workin
0870: 67 20 62 72 61 6e 63 68 20 66 6f 72 20 4d 79 53 g branch for MyS
0880: 51 4c 2b 2b 0a 20 20 20 20 20 20 20 20 20 20 20 QL++.
0890: 20 76 32 2e 33 2e 32 2d 6d 6f 64 65 72 6e 2f 20 v2.3.2-modern/
08a0: 20 20 20 20 23 20 43 68 65 63 6b 6f 75 74 20 66 # Checkout f
08b0: 6f 72 20 61 6e 6f 74 68 65 72 20 62 72 61 6e 63 or another branc
08c0: 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 33 h. v3
08d0: 2e 32 2e 33 2f 20 20 20 20 20 20 20 20 20 20 20 .2.3/
08e0: 20 23 20 43 68 65 63 6b 6f 75 74 20 66 6f 72 20 # Checkout for
08f0: 61 20 74 61 67 67 65 64 20 73 74 61 62 6c 65 20 a tagged stable
0900: 72 65 6c 65 61 73 65 0a 0a 59 6f 75 20 63 68 65 release..You che
0910: 63 6b 20 6f 75 74 20 61 20 62 72 61 6e 63 68 20 ck out a branch
0920: 6f 72 20 74 61 67 20 6c 69 6b 65 20 73 6f 3a 0a or tag like so:.
0930: 0a 20 20 20 20 24 20 63 64 20 7e 2f 73 72 63 2f . $ cd ~/src/
0940: 6d 79 73 71 6c 70 70 2f 76 33 2e 32 2e 33 0a 20 mysqlpp/v3.2.3.
0950: 20 20 20 24 20 66 6f 73 73 69 6c 20 6f 70 65 6e $ fossil open
0960: 20 7e 2f 6d 75 73 65 75 6d 2f 6d 79 73 71 6c 70 ~/museum/mysqlp
0970: 70 2e 66 6f 73 73 69 6c 20 76 33 2e 32 2e 33 0a p.fossil v3.2.3.
0980: 0a 46 6f 73 73 69 6c 20 77 69 6c 6c 20 6c 65 74 .Fossil will let
0990: 20 79 6f 75 20 6d 61 6b 65 20 61 6e 79 20 6d 6f you make any mo
09a0: 64 69 66 69 63 61 74 69 6f 6e 73 20 79 6f 75 20 difications you
09b0: 6c 69 6b 65 20 74 6f 20 79 6f 75 72 20 6c 6f 63 like to your loc
09c0: 61 6c 0a 72 65 70 6f 73 69 74 6f 72 79 20 63 6f al.repository co
09d0: 70 79 2e 20 46 6f 72 20 74 68 6f 73 65 20 77 69 py. For those wi
09e0: 74 68 20 63 68 65 63 6b 2d 69 6e 20 70 72 69 76 th check-in priv
09f0: 69 6c 65 67 65 73 20 6f 6e 20 74 68 65 20 75 70 ileges on the up
0a00: 73 74 72 65 61 6d 0a 63 6f 70 79 2c 20 63 68 61 stream.copy, cha
0a10: 6e 67 65 73 20 67 65 74 20 61 75 74 6f 6d 61 74 nges get automat
0a20: 69 63 61 6c 6c 79 20 73 79 6e 63 65 64 20 77 69 ically synced wi
0a30: 74 68 20 69 74 20 62 79 20 64 65 66 61 75 6c 74 th it by default
0a40: 2e 0a 0a 28 49 66 20 79 6f 75 20 70 72 65 66 65 ...(If you prefe
0a50: 72 20 47 69 74 20 6f 72 20 4d 65 72 63 75 72 69 r Git or Mercuri
0a60: 61 6c 20 73 74 79 6c 65 20 74 77 6f 2d 70 68 61 al style two-pha
0a70: 73 65 20 63 6f 6d 6d 69 74 73 2c 20 79 6f 75 20 se commits, you
0a80: 63 61 6e 20 73 61 79 0a 60 66 6f 73 73 69 6c 20 can say.`fossil
0a90: 73 65 74 20 61 75 74 6f 73 79 6e 63 20 6f 66 66 set autosync off
0aa0: 60 2c 20 74 68 65 6e 20 6c 61 74 65 72 20 73 61 `, then later sa
0ab0: 79 20 60 66 6f 73 73 69 6c 20 70 75 73 68 60 20 y `fossil push`
0ac0: 61 66 74 65 72 20 6d 61 6b 69 6e 67 20 6f 6e 65 after making one
0ad0: 0a 6f 72 20 6d 6f 72 65 20 63 68 65 63 6b 69 6e .or more checkin
0ae0: 73 2e 29 0a 0a 49 66 20 79 6f 75 20 64 6f 6e 27 s.)..If you don'
0af0: 74 20 68 61 76 65 20 63 6f 6d 6d 69 74 20 63 61 t have commit ca
0b00: 70 61 62 69 6c 69 74 79 20 6f 6e 20 74 68 65 20 pability on the
0b10: 63 65 6e 74 72 61 6c 20 72 65 70 6f 73 69 74 6f central reposito
0b20: 72 79 20 73 65 72 76 65 72 2c 0a 63 68 65 63 6b ry server,.check
0b30: 69 6e 73 20 6a 75 73 74 20 6d 6f 64 69 66 79 20 ins just modify
0b40: 79 6f 75 72 20 6c 6f 63 61 6c 20 72 65 70 6f 73 your local repos
0b50: 69 74 6f 72 79 20 63 6c 6f 6e 65 2e 20 49 66 20 itory clone. If
0b60: 79 6f 75 20 64 6f 20 73 75 63 68 0a 63 68 65 63 you do such.chec
0b70: 6b 69 6e 73 20 6f 6e 20 61 20 62 72 61 6e 63 68 kins on a branch
0b80: 2c 20 79 6f 75 20 64 6f 6e e2 80 99 74 20 6e 65 , you don’t ne
0b90: 65 64 20 74 6f 20 77 6f 72 72 79 20 61 62 6f 75 ed to worry abou
0ba0: 74 20 63 6f 6e 66 6c 69 63 74 73 20 77 68 65 6e t conflicts when
0bb0: 0a 70 75 6c 6c 69 6e 67 20 64 6f 77 6e 20 75 70 .pulling down up
0bc0: 73 74 72 65 61 6d 20 63 68 61 6e 67 65 73 20 69 stream changes i
0bd0: 6e 74 6f 20 79 6f 75 72 20 6c 6f 63 61 6c 20 63 nto your local c
0be0: 6c 6f 6e 65 2e 0a 0a 44 65 76 65 6c 6f 70 65 72 lone...Developer
0bf0: 73 20 61 72 65 20 65 78 70 65 63 74 65 64 20 74 s are expected t
0c00: 6f 20 6d 61 6b 65 20 61 6c 6c 20 63 68 61 6e 67 o make all chang
0c10: 65 73 20 74 68 61 74 20 61 66 66 65 63 74 20 74 es that affect t
0c20: 68 65 20 6c 69 62 61 72 79 27 73 0a 41 50 49 2c he libary's.API,
0c30: 20 41 42 49 2c 20 6f 72 20 62 65 68 61 76 69 6f ABI, or behavio
0c40: 72 20 6f 6e 20 61 20 62 72 61 6e 63 68 2c 20 72 r on a branch, r
0c50: 61 74 68 65 72 20 74 68 61 6e 20 63 68 65 63 6b ather than check
0c60: 20 73 75 63 68 20 63 68 61 6e 67 65 73 0a 64 69 such changes.di
0c70: 72 65 63 74 6c 79 20 69 6e 74 6f 20 74 68 65 20 rectly into the
0c80: 74 72 75 6e 6b 2e 20 4f 6e 63 65 20 77 65 20 68 trunk. Once we h
0c90: 61 76 65 20 64 69 73 63 75 73 73 65 64 20 74 68 ave discussed th
0ca0: 65 20 63 68 61 6e 67 65 20 6f 6e 20 74 68 65 0a e change on the.
0cb0: 5b 66 6f 72 75 6d 5d 5b 66 6f 72 5d 20 61 6e 64 [forum][for] and
0cc0: 20 72 65 73 6f 6c 76 65 64 20 61 6e 79 20 69 73 resolved any is
0cd0: 73 73 75 65 73 20 77 69 74 68 20 74 68 65 20 65 ssues with the e
0ce0: 78 70 65 72 69 6d 65 6e 74 61 6c 20 62 72 61 6e xperimental bran
0cf0: 63 68 2c 20 69 74 0a 77 69 6c 6c 20 62 65 20 6d ch, it.will be m
0d00: 65 72 67 65 64 20 69 6e 74 6f 20 74 68 65 20 74 erged into the t
0d10: 72 75 6e 6b 2e 0a 0a 43 72 65 61 74 69 6e 67 20 runk...Creating
0d20: 61 20 62 72 61 6e 63 68 20 69 6e 20 46 6f 73 73 a branch in Foss
0d30: 69 6c 20 69 73 20 73 63 61 72 79 2d 73 69 6d 70 il is scary-simp
0d40: 6c 65 2c 20 74 6f 20 74 68 65 20 70 6f 69 6e 74 le, to the point
0d50: 20 74 68 61 74 20 74 68 6f 73 65 0a 63 6f 6d 69 that those.comi
0d60: 6e 67 20 66 72 6f 6d 20 6f 74 68 65 72 20 76 65 ng from other ve
0d70: 72 73 69 6f 6e 20 63 6f 6e 74 72 6f 6c 20 73 79 rsion control sy
0d80: 73 74 65 6d 73 20 6d 61 79 20 61 73 6b 2c 20 22 stems may ask, "
0d90: 49 73 20 74 68 61 74 20 72 65 61 6c 6c 79 20 61 Is that really a
0da0: 6c 6c 0a 74 68 65 72 65 20 69 73 20 74 6f 20 69 ll.there is to i
0db0: 74 3f 22 20 59 65 73 2c 20 72 65 61 6c 6c 79 2c t?" Yes, really,
0dc0: 20 74 68 69 73 20 69 73 20 69 74 3a 0a 0a 20 20 this is it:..
0dd0: 20 20 24 20 66 6f 73 73 69 6c 20 63 68 65 63 6b $ fossil check
0de0: 69 6e 20 2d 2d 62 72 61 6e 63 68 20 6e 65 77 2d in --branch new-
0df0: 62 72 61 6e 63 68 2d 6e 61 6d 65 0a 0a 54 68 61 branch-name..Tha
0e00: 74 20 69 73 20 74 6f 20 73 61 79 2c 20 79 6f 75 t is to say, you
0e10: 20 6d 61 6b 65 20 79 6f 75 72 20 63 68 61 6e 67 make your chang
0e20: 65 73 20 61 73 20 79 6f 75 20 6e 6f 72 6d 61 6c es as you normal
0e30: 6c 79 20 77 6f 75 6c 64 3b 20 74 68 65 6e 20 77 ly would; then w
0e40: 68 65 6e 0a 79 6f 75 20 67 6f 20 74 6f 20 6d 61 hen.you go to ma
0e50: 6b 65 20 74 68 65 20 66 69 72 73 74 20 63 68 65 ke the first che
0e60: 63 6b 69 6e 2c 20 79 6f 75 20 67 69 76 65 20 74 ckin, you give t
0e70: 68 65 20 60 2d 2d 62 72 61 6e 63 68 60 20 6f 70 he `--branch` op
0e80: 74 69 6f 6e 20 74 6f 20 70 75 74 0a 74 68 65 20 tion to put.the
0e90: 63 68 61 6e 67 65 73 20 6f 6e 20 61 20 6e 65 77 changes on a new
0ea0: 20 62 72 61 6e 63 68 2c 20 72 61 74 68 65 72 20 branch, rather
0eb0: 74 68 61 6e 20 61 64 64 20 74 68 65 6d 20 74 6f than add them to
0ec0: 20 74 68 65 20 73 61 6d 65 20 62 72 61 6e 63 68 the same branch
0ed0: 20 74 68 65 0a 63 68 61 6e 67 65 73 20 77 65 72 the.changes wer
0ee0: 65 20 6d 61 64 65 20 61 67 61 69 6e 73 74 2e 20 e made against.
0ef0: 45 76 65 72 79 20 73 75 62 73 65 71 75 65 6e 74 Every subsequent
0f00: 20 63 68 65 63 6b 69 6e 20 77 69 74 68 6f 75 74 checkin without
0f10: 20 61 20 60 2d 2d 62 72 61 6e 63 68 60 0a 6f 70 a `--branch`.op
0f20: 74 69 6f 6e 20 67 65 74 73 20 63 68 65 63 6b 65 tion gets checke
0f30: 64 20 69 6e 20 61 73 20 74 68 65 20 6e 65 77 20 d in as the new
0f40: 74 69 70 20 6f 66 20 74 68 61 74 20 62 72 61 6e tip of that bran
0f50: 63 68 2e 0a 0a 49 66 20 79 6f 75 e2 80 99 72 65 ch...If you’re
0f60: 20 63 72 65 61 74 69 6e 67 20 61 20 62 72 61 6e creating a bran
0f70: 63 68 20 74 68 61 74 20 77 69 6c 6c 20 70 72 6f ch that will pro
0f80: 62 61 62 6c 79 20 6c 69 76 65 20 61 20 6c 6f 6e bably live a lon
0f90: 67 20 65 6e 6f 75 67 68 20 74 69 6d 65 0a 74 68 g enough time.th
0fa0: 61 74 20 79 6f 75 e2 80 99 6c 6c 20 77 61 6e 74 at you’ll want
0fb0: 20 74 6f 20 72 65 74 75 72 6e 20 74 6f 20 74 72 to return to tr
0fc0: 75 6e 6b 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 unk one or more
0fd0: 74 69 6d 65 73 20 77 68 69 6c 65 20 74 68 61 74 times while that
0fe0: 20 62 72 61 6e 63 68 0a 6c 69 76 65 73 2c 20 79 branch.lives, y
0ff0: 6f 75 20 6d 69 67 68 74 20 66 6f 6c 6c 6f 77 20 ou might follow
1000: 74 68 65 20 61 62 6f 76 65 20 63 6f 6d 6d 61 6e the above comman
1010: 64 20 77 69 74 68 20 61 20 73 65 71 75 65 6e 63 d with a sequenc
1020: 65 20 6c 69 6b 65 20 74 68 69 73 3a 0a 0a 20 20 e like this:..
1030: 20 20 24 20 66 6f 73 73 69 6c 20 75 70 64 61 74 $ fossil updat
1040: 65 20 74 72 75 6e 6b 20 20 20 20 20 20 20 20 20 e trunk
1050: 20 20 23 20 72 65 74 75 72 6e 20 77 6f 72 6b 69 # return worki
1060: 6e 67 20 64 69 72 20 74 6f 20 74 69 70 2d 6f 66 ng dir to tip-of
1070: 2d 74 72 75 6e 6b 0a 20 20 20 20 24 20 6d 6b 64 -trunk. $ mkd
1080: 69 72 20 2e 2e 2f 6e 65 77 2d 62 72 61 6e 63 68 ir ../new-branch
1090: 2d 6e 61 6d 65 0a 20 20 20 20 24 20 63 64 20 2e -name. $ cd .
10a0: 2e 2f 6e 65 77 2d 62 72 61 6e 63 68 2d 6e 61 6d ./new-branch-nam
10b0: 65 0a 20 20 20 20 24 20 66 6f 73 73 69 6c 20 6f e. $ fossil o
10c0: 70 65 6e 20 7e 2f 6d 75 73 65 75 6d 2f 6d 79 73 pen ~/museum/mys
10d0: 71 6c 70 70 2e 66 6f 73 73 69 6c 20 6e 65 77 2d qlpp.fossil new-
10e0: 62 72 61 6e 63 68 2d 6e 61 6d 65 0a 0a 4e 6f 77 branch-name..Now
10f0: 20 79 6f 75 20 63 61 6e 20 62 6f 75 6e 63 65 20 you can bounce
1100: 62 61 63 6b 20 61 6e 64 20 66 6f 72 74 68 20 62 back and forth b
1110: 65 74 77 65 65 6e 20 74 72 75 6e 6b 20 61 6e 64 etween trunk and
1120: 20 79 6f 75 72 20 6e 65 77 20 62 72 61 6e 63 68 your new branch
1130: 20 77 69 74 68 0a 61 20 73 69 6d 70 6c 65 20 60 with.a simple `
1140: 63 64 60 20 63 6f 6d 6d 61 6e 64 2c 20 72 61 74 cd` command, rat
1150: 68 65 72 20 74 68 61 6e 20 73 77 69 74 63 68 69 her than switchi
1160: 6e 67 20 69 6e 20 70 6c 61 63 65 2c 20 61 73 20 ng in place, as
1170: 69 73 20 74 79 70 69 63 61 6c 0a 77 69 74 68 20 is typical.with
1180: 47 69 74 2e 20 54 68 69 73 20 73 74 79 6c 65 20 Git. This style
1190: 6f 66 20 77 6f 72 6b 20 61 76 6f 69 64 73 20 69 of work avoids i
11a0: 6e 76 61 6c 69 64 61 74 69 6e 67 20 62 75 69 6c nvalidating buil
11b0: 64 20 73 79 73 74 65 6d 20 6f 75 74 70 75 74 73 d system outputs
11c0: 2c 0a 61 6e 64 20 69 74 20 6d 61 6b 65 73 20 69 ,.and it makes i
11d0: 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 77 t possible to sw
11e0: 69 74 63 68 20 62 72 61 6e 63 68 65 73 20 77 69 itch branches wi
11f0: 74 68 6f 75 74 20 63 68 65 63 6b 69 6e 67 20 69 thout checking i
1200: 6e 20 6f 72 0a 73 74 61 73 68 69 6e 67 20 79 6f n or.stashing yo
1210: 75 72 20 77 6f 72 6b 20 6f 6e 20 74 68 65 20 6f ur work on the o
1220: 74 68 65 72 20 62 72 61 6e 63 68 20 66 69 72 73 ther branch firs
1230: 74 2e 0a 0a 5b 61 76 68 5d 3a 20 20 68 74 74 70 t...[avh]: http
1240: 73 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e s://tangentsoft.
1250: 63 6f 6d 2f 6d 79 73 71 6c 70 70 2f 77 69 6b 69 com/mysqlpp/wiki
1260: 3f 6e 61 6d 65 3d 41 62 72 69 64 67 65 64 2b 56 ?name=Abridged+V
1270: 65 72 73 69 6f 6e 2b 48 69 73 74 6f 72 79 0a 5b ersion+History.[
1280: 64 76 63 73 5d 3a 20 68 74 74 70 3a 2f 2f 65 6e dvcs]: http://en
1290: 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 .wikipedia.org/w
12a0: 69 6b 69 2f 44 69 73 74 72 69 62 75 74 65 64 5f iki/Distributed_
12b0: 72 65 76 69 73 69 6f 6e 5f 63 6f 6e 74 72 6f 6c revision_control
12c0: 0a 5b 66 6f 72 5d 3a 20 20 68 74 74 70 73 3a 2f .[for]: https:/
12d0: 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d /tangentsoft.com
12e0: 2f 6d 79 73 71 6c 70 70 2f 66 6f 72 75 6d 2f 0a /mysqlpp/forum/.
12f0: 5b 66 73 6c 5d 3a 20 20 68 74 74 70 3a 2f 2f 66 [fsl]: http://f
1300: 6f 73 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f 0a 5b ossil-scm.org/.[
1310: 66 73 6c 62 5d 3a 20 68 74 74 70 3a 2f 2f 66 6f fslb]: http://fo
1320: 73 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f 66 6f 73 ssil-scm.org/fos
1330: 73 69 6c 2f 75 76 2f 64 6f 77 6e 6c 6f 61 64 2e sil/uv/download.
1340: 68 74 6d 6c 0a 5b 66 73 6c 71 5d 3a 20 68 74 74 html.[fslq]: htt
1350: 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e 6f p://fossil-scm.o
1360: 72 67 2f 66 6f 73 73 69 6c 2f 64 6f 63 2f 74 72 rg/fossil/doc/tr
1370: 75 6e 6b 2f 77 77 77 2f 71 75 69 63 6b 73 74 61 unk/www/quicksta
1380: 72 74 2e 77 69 6b 69 0a 5b 66 73 6c 73 5d 3a 20 rt.wiki.[fsls]:
1390: 68 74 74 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 http://fossil-sc
13a0: 6d 2e 6f 72 67 2f 66 6f 73 73 69 6c 2f 64 6f 63 m.org/fossil/doc
13b0: 2f 74 72 75 6e 6b 2f 77 77 77 2f 62 75 69 6c 64 /trunk/www/build
13c0: 2e 77 69 6b 69 0a 5b 67 68 6d 5d 3a 20 20 68 74 .wiki.[ghm]: ht
13d0: 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d tps://github.com
13e0: 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2f 6d 79 73 /tangentsoft/mys
13f0: 71 6c 70 70 0a 5b 6d 63 6b 5d 3a 20 20 68 74 74 qlpp.[mck]: htt
1400: 70 73 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e ps://fossil-scm.
1410: 6f 72 67 2f 66 6f 73 73 69 6c 2f 64 6f 63 2f 74 org/fossil/doc/t
1420: 72 75 6e 6b 2f 77 77 77 2f 66 6f 73 73 69 6c 2d runk/www/fossil-
1430: 76 2d 67 69 74 2e 77 69 6b 69 23 63 68 65 63 6b v-git.wiki#check
1440: 6f 75 74 73 0a 0a 0a 23 23 20 3c 61 20 69 64 3d outs...## <a id=
1450: 22 62 6f 6f 74 73 74 72 61 70 22 3e 3c 2f 61 3e "bootstrap"></a>
1460: 42 6f 6f 74 73 74 72 61 70 70 69 6e 67 20 74 68 Bootstrapping th
1470: 65 20 4c 69 62 72 61 72 79 0a 0a 57 68 65 6e 20 e Library..When
1480: 79 6f 75 20 63 68 65 63 6b 20 6f 75 74 20 4d 79 you check out My
1490: 53 51 4c 2b 2b 20 66 72 6f 6d 20 46 6f 73 73 69 SQL++ from Fossi
14a0: 6c 2c 20 74 68 65 72 65 20 61 72 65 20 61 20 6c l, there are a l
14b0: 6f 74 20 6f 66 20 74 68 69 6e 67 73 0a 22 6d 69 ot of things."mi
14c0: 73 73 69 6e 67 22 20 61 73 20 63 6f 6d 70 61 72 ssing" as compar
14d0: 65 64 20 74 6f 20 61 20 64 69 73 74 72 69 62 75 ed to a distribu
14e0: 74 65 64 20 74 61 72 62 61 6c 6c 2c 20 62 65 63 ted tarball, bec
14f0: 61 75 73 65 20 74 68 65 20 46 6f 73 73 69 6c 0a ause the Fossil.
1500: 72 65 70 6f 73 69 74 6f 72 79 20 63 6f 6e 74 61 repository conta
1510: 69 6e 73 20 6f 6e 6c 79 20 73 6f 75 72 63 65 20 ins only source
1520: 66 69 6c 65 73 2c 20 6e 6f 20 67 65 6e 65 72 61 files, no genera
1530: 74 65 64 20 66 69 6c 65 73 2e 20 20 54 68 65 0a ted files. The.
1540: 70 72 6f 63 65 73 73 20 74 68 61 74 20 74 75 72 process that tur
1550: 6e 73 20 61 20 66 72 65 73 68 20 4d 79 53 51 4c ns a fresh MySQL
1560: 2b 2b 20 72 65 70 6f 73 69 74 6f 72 79 20 63 68 ++ repository ch
1570: 65 63 6b 6f 75 74 20 69 6e 74 6f 0a 73 6f 6d 65 eckout into.some
1580: 74 68 69 6e 67 20 79 6f 75 20 63 61 6e 20 62 75 thing you can bu
1590: 69 6c 64 20 61 6e 64 20 68 61 63 6b 20 6f 6e 20 ild and hack on
15a0: 69 73 20 63 61 6c 6c 65 64 20 62 6f 6f 74 73 74 is called bootst
15b0: 72 61 70 70 69 6e 67 2e 0a 0a 42 6f 6f 73 74 72 rapping...Boostr
15c0: 61 70 70 69 6e 67 20 69 73 20 62 65 73 74 20 64 apping is best d
15d0: 6f 6e 65 20 6f 6e 20 61 20 6d 6f 64 65 72 6e 20 one on a modern
15e0: 55 6e 69 78 20 74 79 70 65 20 70 6c 61 74 66 6f Unix type platfo
15f0: 72 6d 3a 20 4c 69 6e 75 78 2c 20 4f 53 20 58 2c rm: Linux, OS X,
1600: 0a 42 53 44 2c 20 53 6f 6c 61 72 69 73 2e 2e 2e .BSD, Solaris...
1610: 61 6e 79 20 76 65 72 73 69 6f 6e 20 72 65 6c 65 any version rele
1620: 61 73 65 64 20 73 69 6e 63 65 20 32 30 30 35 20 ased since 2005
1630: 6f 72 20 73 6f 2e 0a 0a 49 74 27 73 20 70 6f 73 or so...It's pos
1640: 73 69 62 6c 65 20 74 6f 20 5b 62 6f 6f 74 73 74 sible to [bootst
1650: 72 61 70 20 4d 79 53 51 4c 2b 2b 20 6f 6e 20 57 rap MySQL++ on W
1660: 69 6e 64 6f 77 73 5d 28 23 77 69 6e 62 73 29 2c indows](#winbs),
1670: 20 62 75 74 20 69 74 e2 80 99 73 20 6d 75 63 68 but it’s much
1680: 0a 68 61 72 64 65 72 2e 0a 0a 54 77 6f 20 6f 66 .harder...Two of
1690: 20 74 68 65 20 74 6f 6f 6c 73 20 79 6f 75 20 6e the tools you n
16a0: 65 65 64 20 74 6f 20 64 6f 20 74 68 69 73 20 61 eed to do this a
16b0: 72 65 20 63 6f 6d 6d 6f 6e 6c 79 20 61 76 61 69 re commonly avai
16c0: 6c 61 62 6c 65 20 6f 6e 20 55 6e 69 78 79 0a 73 lable on Unixy.s
16d0: 79 73 74 65 6d 73 2c 20 61 74 20 6c 65 61 73 74 ystems, at least
16e0: 20 61 73 20 61 6e 20 6f 70 74 69 6f 6e 3a 20 50 as an option: P
16f0: 65 72 6c 20 35 2c 20 61 6e 64 20 47 4e 55 20 41 erl 5, and GNU A
1700: 75 74 6f 63 6f 6e 66 20 31 2e 35 39 20 6f 72 20 utoconf 1.59 or
1710: 68 69 67 68 65 72 2e 0a 49 66 20 74 68 65 79 27 higher..If they'
1720: 72 65 20 6e 6f 74 20 69 6e 73 74 61 6c 6c 65 64 re not installed
1730: 2c 20 79 6f 75 20 63 61 6e 20 70 72 6f 62 61 62 , you can probab
1740: 6c 79 20 72 75 6e 20 79 6f 75 72 20 73 79 73 74 ly run your syst
1750: 65 6d 27 73 20 70 61 63 6b 61 67 65 0a 6d 61 6e em's package.man
1760: 61 67 65 72 20 74 6f 20 69 6e 73 74 61 6c 6c 20 ager to install
1770: 73 75 69 74 61 62 6c 65 20 76 65 72 73 69 6f 6e suitable version
1780: 73 2e 0a 0a 54 68 65 72 65 27 73 20 61 20 74 68 s...There's a th
1790: 69 72 64 20 74 6f 6f 6c 20 79 6f 75 27 6c 6c 20 ird tool you'll
17a0: 6e 65 65 64 20 74 6f 20 62 6f 6f 74 73 74 72 61 need to bootstra
17b0: 70 20 4d 79 53 51 4c 2b 2b 20 63 61 6c 6c 65 64 p MySQL++ called
17c0: 0a 5b 42 61 6b 65 66 69 6c 65 5d 5b 62 66 5d 2e .[Bakefile][bf].
17d0: 20 54 68 65 20 73 79 6e 74 61 78 20 75 73 65 64 The syntax used
17e0: 20 69 6e 20 60 6d 79 73 71 6c 2b 2b 2e 62 6b 6c in `mysql++.bkl
17f0: 60 20 72 65 71 75 69 72 65 73 20 61 74 20 6c 65 ` requires at le
1800: 61 73 74 0a 42 61 6b 65 66 69 6c 65 20 30 2e 32 ast.Bakefile 0.2
1810: 2e 35 20 6f 72 20 68 69 67 68 65 72 2c 20 77 68 .5 or higher, wh
1820: 69 63 68 20 69 6e 20 74 75 72 6e 20 72 65 71 75 ich in turn requ
1830: 69 72 65 73 20 50 79 74 68 6f 6e 20 32 2e 33 20 ires Python 2.3
1840: 6f 72 20 68 69 67 68 65 72 20 74 6f 0a 72 75 6e or higher to.run
1850: 2e 20 59 6f 75 20 6d 61 79 20 72 65 71 75 69 72 . You may requir
1860: 65 20 61 20 6e 65 77 65 72 20 76 65 72 73 69 6f e a newer versio
1870: 6e 20 6f 66 20 42 61 6b 65 66 69 6c 65 20 74 6f n of Bakefile to
1880: 20 73 75 70 70 6f 72 74 20 6e 65 77 65 72 20 4f support newer O
1890: 53 65 73 0a 61 6e 64 20 50 79 74 68 6f 6e 20 76 Ses.and Python v
18a0: 65 72 73 69 6f 6e 73 3b 20 77 65 27 76 65 20 74 ersions; we've t
18b0: 65 73 74 65 64 20 77 69 74 68 20 76 65 72 73 69 ested with versi
18c0: 6f 6e 73 20 75 70 20 74 6f 20 30 2e 32 2e 31 31 ons up to 0.2.11
18d0: 0a 73 75 63 63 65 73 73 66 75 6c 6c 79 2e 0a 0a .successfully...
18e0: 44 6f 20 6e 6f 74 20 75 73 65 20 61 6e 79 20 6f Do not use any o
18f0: 66 20 74 68 65 20 42 61 6b 65 66 69 6c 65 20 31 f the Bakefile 1
1900: 2e 78 20 76 65 72 73 69 6f 6e 73 3a 20 69 74 e2 .x versions: it
1910: 80 99 73 20 61 6e 20 69 6e 63 6f 6d 70 61 74 69 s an incompati
1920: 62 6c 65 0a 63 68 61 6e 67 65 2c 20 61 6e 64 20 ble.change, and
1930: 77 65 20 63 75 72 72 65 6e 74 6c 79 20 68 61 76 we currently hav
1940: 65 20 6e 6f 20 69 6e 74 65 6e 74 69 6f 6e 20 74 e no intention t
1950: 6f 20 73 77 69 74 63 68 20 66 72 6f 6d 20 42 61 o switch from Ba
1960: 6b 65 66 69 6c 65 20 30 2e 78 2e 0a 0a 4f 6e 63 kefile 0.x...Onc
1970: 65 20 79 6f 75 20 68 61 76 65 20 61 6c 6c 20 74 e you have all t
1980: 68 65 20 74 6f 6f 6c 73 20 69 6e 20 70 6c 61 63 he tools in plac
1990: 65 2c 20 79 6f 75 20 63 61 6e 20 62 6f 6f 74 73 e, you can boots
19a0: 74 72 61 70 20 4d 79 53 51 4c 2b 2b 20 77 69 74 trap MySQL++ wit
19b0: 68 20 61 0a 42 6f 75 72 6e 65 20 73 68 65 6c 6c h a.Bourne shell
19c0: 20 73 63 72 69 70 74 20 63 61 6c 6c 65 64 20 60 script called `
19d0: 62 6f 6f 74 73 74 72 61 70 60 2c 20 77 68 69 63 bootstrap`, whic
19e0: 68 20 79 6f 75 20 67 65 74 20 61 73 20 70 61 72 h you get as par
19f0: 74 20 6f 66 20 74 68 65 0a 46 6f 73 73 69 6c 20 t of the.Fossil
1a00: 63 68 65 63 6b 6f 75 74 2e 20 49 74 27 73 20 66 checkout. It's f
1a10: 61 69 72 6c 79 20 70 6f 77 65 72 66 75 6c 2c 20 airly powerful,
1a20: 77 69 74 68 20 6d 61 6e 79 20 6f 70 74 69 6f 6e with many option
1a30: 73 2e 20 20 46 6f 72 20 6d 6f 73 74 0a 63 61 73 s. For most.cas
1a40: 65 73 2c 20 69 74 20 73 75 66 66 69 63 65 73 20 es, it suffices
1a50: 74 6f 20 6a 75 73 74 20 72 75 6e 20 69 74 20 77 to just run it w
1a60: 69 74 68 6f 75 74 20 61 6e 79 20 61 72 67 75 6d ithout any argum
1a70: 65 6e 74 73 3a 0a 0a 20 20 20 20 24 20 2e 2f 62 ents:.. $ ./b
1a80: 6f 6f 74 73 74 72 61 70 0a 0a 46 6f 72 20 6d 6f ootstrap..For mo
1a90: 72 65 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61 re unusual situa
1aa0: 74 69 6f 6e 73 2c 20 68 65 72 65 27 73 20 74 68 tions, here's th
1ab0: 65 20 63 6f 6d 70 6c 65 74 65 20 75 73 61 67 65 e complete usage
1ac0: 3a 0a 0a 20 20 20 20 24 20 2e 2f 62 6f 6f 74 73 :.. $ ./boots
1ad0: 74 72 61 70 20 5b 6e 6f 7b 64 6f 63 2c 65 78 2c trap [no{doc,ex,
1ae0: 6c 69 62 2c 6f 70 74 7d 5d 20 5b 70 65 64 61 6e lib,opt}] [pedan
1af0: 74 69 63 5d 20 5b 62 61 74 5d 20 5b 63 6f 6e 66 tic] [bat] [conf
1b00: 69 67 75 72 65 20 66 6c 61 67 73 5d 0a 0a 41 72 igure flags]..Ar
1b10: 67 75 6d 65 6e 74 73 3a 0a 0a 2a 20 20 20 60 6e guments:..* `n
1b20: 6f 64 6f 63 60 0a 0a 20 20 20 20 54 68 65 20 64 odoc`.. The d
1b30: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 77 6f 6e ocumentation won
1b40: 27 74 20 62 65 20 63 6f 6e 73 69 64 65 72 65 64 't be considered
1b50: 20 61 20 70 72 65 72 65 71 75 69 73 69 74 65 20 a prerequisite
1b60: 66 6f 72 20 62 75 69 6c 64 69 6e 67 0a 20 20 20 for building.
1b70: 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f the distributio
1b80: 6e 20 74 61 72 62 61 6c 6c 2e 20 54 68 69 73 20 n tarball. This
1b90: 69 73 20 75 73 65 66 75 6c 20 6f 6e 20 73 79 73 is useful on sys
1ba0: 74 65 6d 73 20 77 68 65 72 65 20 74 68 65 0a 20 tems where the.
1bb0: 20 20 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e documentation
1bc0: 20 64 6f 65 73 6e 27 74 20 62 75 69 6c 64 20 63 doesn't build c
1bd0: 6f 72 72 65 63 74 6c 79 2c 20 61 6e 64 20 79 6f orrectly, and yo
1be0: 75 20 6f 6e 6c 79 20 6e 65 65 64 20 74 6f 20 6d u only need to m
1bf0: 61 6b 65 20 61 0a 20 20 20 20 62 69 6e 61 72 79 ake a. binary
1c00: 20 52 50 4d 2e 20 54 68 61 74 20 70 72 6f 63 65 RPM. That proce
1c10: 73 73 20 72 65 71 75 69 72 65 73 20 61 20 74 61 ss requires a ta
1c20: 72 62 61 6c 6c 2c 20 62 75 74 20 64 6f 65 73 6e rball, but doesn
1c30: 27 74 20 6e 65 65 64 20 74 68 65 0a 20 20 20 20 't need the.
1c40: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 20 44 documentation. D
1c50: 6f 6e 27 74 20 64 69 73 74 72 69 62 75 74 65 20 on't distribute
1c60: 74 68 65 20 74 61 72 62 61 6c 6c 20 6f 72 20 53 the tarball or S
1c70: 52 50 4d 20 74 68 61 74 20 72 65 73 75 6c 74 73 RPM that results
1c80: 2c 20 61 73 0a 20 20 20 20 74 68 65 79 20 61 72 , as. they ar
1c90: 65 20 6e 6f 20 67 6f 6f 64 20 66 6f 72 20 61 6e e no good for an
1ca0: 79 20 6f 74 68 65 72 20 70 75 72 70 6f 73 65 2e y other purpose.
1cb0: 0a 0a 2a 20 20 20 60 6e 6f 65 78 60 0a 0a 20 20 ..* `noex`..
1cc0: 20 20 54 68 65 20 67 65 6e 65 72 61 74 65 64 20 The generated
1cd0: 60 4d 61 6b 65 66 69 6c 65 73 60 20 61 6e 64 20 `Makefiles` and
1ce0: 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 77 6f project files wo
1cf0: 6e 27 74 20 74 72 79 20 74 6f 20 62 75 69 6c 64 n't try to build
1d00: 20 61 6e 79 20 6f 66 0a 20 20 20 20 74 68 65 20 any of. the
1d10: 65 78 61 6d 70 6c 65 73 2e 0a 0a 2a 20 20 20 60 examples...* `
1d20: 6e 6f 6c 69 62 60 0a 0a 20 20 20 20 54 68 65 20 nolib`.. The
1d30: 67 65 6e 65 72 61 74 65 64 20 60 4d 61 6b 65 66 generated `Makef
1d40: 69 6c 65 73 60 20 61 6e 64 20 70 72 6f 6a 65 63 iles` and projec
1d50: 74 20 66 69 6c 65 73 20 77 6f 6e 27 74 20 74 72 t files won't tr
1d60: 79 20 74 6f 20 62 75 69 6c 64 20 74 68 65 0a 20 y to build the.
1d70: 20 20 20 4d 79 53 51 4c 2b 2b 20 6c 69 62 72 61 MySQL++ libra
1d80: 72 79 2e 0a 0a 2a 20 20 20 60 6e 6f 6d 61 69 6e ry...* `nomain
1d90: 74 60 0a 0a 20 20 20 20 54 75 72 6e 20 6f 66 66 t`.. Turn off
1da0: 20 22 6d 61 69 6e 74 61 69 6e 65 72 20 6d 6f 64 "maintainer mod
1db0: 65 22 20 73 74 75 66 66 20 69 6e 20 74 68 65 20 e" stuff in the
1dc0: 62 75 69 6c 64 2e 20 54 68 65 73 65 20 61 72 65 build. These are
1dd0: 20 66 65 61 74 75 72 65 73 0a 20 20 20 20 75 73 features. us
1de0: 65 64 20 6f 6e 6c 79 20 62 79 20 74 68 6f 73 65 ed only by those
1df0: 20 62 75 69 6c 64 69 6e 67 20 4d 79 53 51 4c 2b building MySQL+
1e00: 2b 20 66 72 6f 6d 20 46 6f 73 73 69 6c 2e 20 54 + from Fossil. T
1e10: 68 65 20 60 64 69 73 74 60 20 62 75 69 6c 64 0a he `dist` build.
1e20: 20 20 20 20 74 61 72 67 65 74 20 75 73 65 73 20 target uses
1e30: 74 68 69 73 20 77 68 65 6e 20 63 72 65 61 74 69 this when creati
1e40: 6e 67 20 74 68 65 20 74 61 72 62 61 6c 6c 2c 20 ng the tarball,
1e50: 62 65 63 61 75 73 65 20 69 74 20 72 65 64 75 63 because it reduc
1e60: 65 73 20 74 68 65 0a 20 20 20 20 62 75 69 6c 64 es the. build
1e70: 20 74 69 6d 65 20 73 6f 6d 65 77 68 61 74 2e 0a time somewhat..
1e80: 0a 2a 20 20 20 60 6e 6f 6f 70 74 60 0a 0a 20 20 .* `noopt`..
1e90: 20 20 43 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6d Compiler optim
1ea0: 69 7a 61 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 ization will be
1eb0: 74 75 72 6e 65 64 20 6f 66 66 2e 20 28 54 68 69 turned off. (Thi
1ec0: 73 20 63 75 72 72 65 6e 74 6c 79 20 68 61 73 20 s currently has
1ed0: 6e 6f 0a 20 20 20 20 65 66 66 65 63 74 20 6f 6e no. effect on
1ee0: 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 20 4d the generated M
1ef0: 69 6e 47 57 20 4d 61 6b 65 66 69 6c 65 20 6f 72 inGW Makefile or
1f00: 20 74 68 65 20 56 69 73 75 61 6c 20 43 2b 2b 20 the Visual C++
1f10: 70 72 6f 6a 65 63 74 0a 20 20 20 20 66 69 6c 65 project. file
1f20: 73 2e 29 0a 0a 2a 20 20 20 60 70 65 64 61 6e 74 s.)..* `pedant
1f30: 69 63 60 0a 0a 20 20 20 20 54 75 72 6e 73 20 6f ic`.. Turns o
1f40: 6e 20 61 6c 6c 20 6f 66 20 47 43 43 27 73 20 77 n all of GCC's w
1f50: 61 72 6e 69 6e 67 73 20 61 6e 64 20 70 6f 72 74 arnings and port
1f60: 61 62 69 6c 69 74 79 20 63 68 65 63 6b 73 2e 20 ability checks.
1f70: 20 57 65 20 75 73 65 20 74 68 69 73 0a 20 20 20 We use this.
1f80: 20 61 73 20 70 61 72 74 20 6f 66 20 6f 75 72 20 as part of our
1f90: 5b 72 65 6c 65 61 73 65 20 70 72 6f 63 65 73 73 [release process
1fa0: 5d 28 2e 2f 52 45 4c 45 41 53 45 2d 43 48 45 43 ](./RELEASE-CHEC
1fb0: 4b 4c 49 53 54 2e 74 78 74 29 2e 0a 0a 2a 20 20 KLIST.txt)...*
1fc0: 20 60 62 61 74 60 0a 0a 20 20 20 20 52 75 6e 73 `bat`.. Runs
1fd0: 20 60 62 6f 6f 74 73 74 72 61 70 2e 62 61 74 60 `bootstrap.bat`
1fe0: 20 76 69 61 20 60 63 6d 64 2e 65 78 65 60 20 66 via `cmd.exe` f
1ff0: 6f 72 20 79 6f 75 2c 20 70 61 73 73 69 6e 67 20 or you, passing
2000: 61 6c 6f 6e 67 20 65 71 75 69 76 61 6c 65 6e 74 along equivalent
2010: 0a 20 20 20 20 6f 70 74 69 6f 6e 73 20 74 6f 20 . options to
2020: 61 6e 79 20 6f 66 20 74 68 65 20 22 2a 6e 6f 2a any of the "*no*
2030: 22 20 6f 70 74 69 6f 6e 73 20 79 6f 75 20 67 69 " options you gi
2040: 76 65 20 62 65 66 6f 72 65 20 69 74 2e 0a 0a 20 ve before it...
2050: 20 20 20 4f 6e 6c 79 20 74 68 65 20 22 2a 6e 6f Only the "*no
2060: 2a 22 20 6f 70 74 69 6f 6e 73 20 61 62 6f 76 65 *" options above
2070: 20 68 61 76 65 20 61 6e 20 65 66 66 65 63 74 20 have an effect
2080: 6f 6e 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 on the generated
2090: 20 62 75 69 6c 64 0a 20 20 20 20 73 79 73 74 65 build. syste
20a0: 6d 20 66 69 6c 65 73 20 77 68 65 6e 20 79 6f 75 m files when you
20b0: 20 67 69 76 65 20 22 60 62 61 74 60 22 2e 20 20 give "`bat`".
20c0: 49 6e 20 70 61 72 74 69 63 75 6c 61 72 2c 20 74 In particular, t
20d0: 68 65 20 66 69 6c 65 73 0a 20 20 20 20 67 65 6e he files. gen
20e0: 65 72 61 74 65 64 20 62 79 20 60 62 6f 6f 74 73 erated by `boots
20f0: 74 72 61 70 2e 62 61 74 60 20 6d 61 6b 65 20 6e trap.bat` make n
2100: 6f 20 64 69 73 74 69 6e 63 74 69 6f 6e 20 62 65 o distinction be
2110: 74 77 65 65 6e 20 22 70 65 64 61 6e 74 69 63 22 tween "pedantic"
2120: 0a 20 20 20 20 61 6e 64 20 6e 6f 72 6d 61 6c 20 . and normal
2130: 62 75 69 6c 64 73 2e 0a 0a 20 20 20 20 50 61 73 builds... Pas
2140: 73 69 6e 67 20 60 62 61 74 60 20 73 74 6f 70 73 sing `bat` stops
2150: 20 61 6c 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e all command lin
2160: 65 20 70 72 6f 63 65 73 73 69 6e 67 20 69 6e 20 e processing in
2170: 74 68 65 20 60 62 6f 6f 74 73 74 72 61 70 60 0a the `bootstrap`.
2180: 20 20 20 20 73 63 72 69 70 74 2c 20 73 6f 20 69 script, so i
2190: 66 20 79 6f 75 20 61 6c 73 6f 20 70 61 73 73 20 f you also pass
21a0: 73 6f 6d 65 20 6f 66 20 74 68 65 20 6f 74 68 65 some of the othe
21b0: 72 20 6f 70 74 69 6f 6e 73 2c 20 22 60 62 61 74 r options, "`bat
21c0: 60 22 20 6d 75 73 74 0a 20 20 20 20 62 65 20 6c `" must. be l
21d0: 61 73 74 2e 0a 20 20 20 20 0a 20 20 20 20 54 68 ast.. . Th
21e0: 65 20 60 62 6f 6f 74 73 74 72 61 70 2e 62 61 74 e `bootstrap.bat
21f0: 60 20 73 63 72 69 70 74 20 69 73 20 75 73 65 66 ` script is usef
2200: 75 6c 20 6f 6e 6c 79 20 77 68 65 6e 20 79 6f 75 ul only when you
2210: 20 69 6e 74 65 6e 64 20 74 6f 20 62 75 69 6c 64 intend to build
2220: 0a 20 20 20 20 4d 79 53 51 4c 2b 2b 20 77 69 74 . MySQL++ wit
2230: 68 20 4d 69 6e 47 57 20 6f 72 20 56 69 73 75 61 h MinGW or Visua
2240: 6c 20 43 2b 2b 2c 20 61 6e 64 20 79 6f 75 20 61 l C++, and you a
2250: 72 65 20 75 73 69 6e 67 20 43 79 67 77 69 6e 20 re using Cygwin
2260: 6f 6e 6c 79 20 61 73 20 61 0a 20 20 20 20 63 6f only as a. co
2270: 6d 6d 61 6e 64 20 6c 69 6e 65 20 65 6e 76 69 72 mmand line envir
2280: 6f 6e 6d 65 6e 74 2e 20 20 49 66 20 79 6f 75 20 onment. If you
2290: 69 6e 74 65 6e 64 20 74 6f 20 62 75 69 6c 64 20 intend to build
22a0: 4d 79 53 51 4c 2b 2b 20 77 69 74 68 0a 20 20 20 MySQL++ with.
22b0: 20 43 79 67 77 69 6e 27 73 20 47 43 43 20 74 6f Cygwin's GCC to
22c0: 6f 6c 63 68 61 69 6e 2c 20 79 6f 75 20 6d 75 73 olchain, you mus
22d0: 74 20 6e 6f 74 20 67 69 76 65 20 74 68 69 73 20 t not give this
22e0: 6f 70 74 69 6f 6e 2c 20 65 6c 73 65 20 79 6f 75 option, else you
22f0: 20 77 69 6c 6c 0a 20 20 20 20 6e 6f 74 20 65 6e will. not en
2300: 64 20 75 70 20 77 69 74 68 20 74 68 65 20 6e 65 d up with the ne
2310: 63 65 73 73 61 72 79 20 62 75 69 6c 64 20 73 79 cessary build sy
2320: 73 74 65 6d 20 66 69 6c 65 73 2e 0a 0a 20 20 20 stem files...
2330: 20 4f 6e 65 20 61 64 76 61 6e 74 61 67 65 20 6f One advantage o
2340: 66 20 74 68 69 73 20 66 65 61 74 75 72 65 20 69 f this feature i
2350: 73 20 74 68 61 74 20 74 68 65 20 63 6f 6d 6d 61 s that the comma
2360: 6e 64 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f nds necessary to
2370: 0a 20 20 20 20 61 63 68 69 65 76 65 20 61 20 67 . achieve a g
2380: 69 76 65 6e 20 65 66 66 65 63 74 20 77 69 74 68 iven effect with
2390: 20 60 62 6f 6f 74 73 74 72 61 70 2e 62 61 74 60 `bootstrap.bat`
23a0: 20 77 68 65 6e 20 72 75 6e 20 76 69 61 20 60 62 when run via `b
23b0: 6f 6f 74 73 74 72 61 70 60 0a 20 20 20 20 61 72 ootstrap`. ar
23c0: 65 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20 77 e shorter than w
23d0: 68 65 6e 20 79 6f 75 20 72 75 6e 20 74 68 65 20 hen you run the
23e0: 62 61 74 63 68 20 66 69 6c 65 20 64 69 72 65 63 batch file direc
23f0: 74 6c 79 2e 0a 0a 20 20 20 20 41 6e 6f 74 68 65 tly... Anothe
2400: 72 20 61 64 76 61 6e 74 61 67 65 20 69 73 20 74 r advantage is t
2410: 68 61 74 20 74 68 69 73 20 6c 6f 77 2d 73 74 72 hat this low-str
2420: 65 6e 67 74 68 20 76 65 72 73 69 6f 6e 20 6f 66 ength version of
2430: 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70 0a 20 the bootstrap.
2440: 20 20 20 73 63 72 69 70 74 20 72 75 6e 73 20 66 script runs f
2450: 61 73 74 65 72 20 74 68 61 6e 20 74 68 65 20 66 aster than the f
2460: 75 6c 6c 2d 73 74 72 65 6e 67 74 68 20 66 6f 72 ull-strength for
2470: 6d 2c 20 62 65 63 61 75 73 65 20 69 74 20 70 72 m, because it pr
2480: 6f 64 75 63 65 73 0a 20 20 20 20 66 65 77 65 72 oduces. fewer
2490: 20 66 69 6c 65 73 2e 0a 0a 20 20 20 20 46 69 6e files... Fin
24a0: 61 6c 6c 79 2c 20 72 75 6e 6e 69 6e 67 20 60 62 ally, running `b
24b0: 6f 6f 74 73 74 72 61 70 2e 62 61 74 60 20 69 6e ootstrap.bat` in
24c0: 64 69 72 65 63 74 6c 79 20 6c 69 6b 65 20 74 68 directly like th
24d0: 69 73 20 6c 65 74 73 20 79 6f 75 20 61 76 6f 69 is lets you avoi
24e0: 64 0a 20 20 20 20 75 73 69 6e 67 20 60 63 6d 64 d. using `cmd
24f0: 2e 65 78 65 60 2c 20 61 20 63 6f 6d 6d 61 6e 64 .exe`, a command
2500: 20 73 68 65 6c 6c 20 67 72 65 61 74 6c 79 20 69 shell greatly i
2510: 6e 66 65 72 69 6f 72 20 74 6f 20 61 6e 79 20 6f nferior to any o
2520: 66 20 74 68 6f 73 65 0a 20 20 20 20 61 76 61 69 f those. avai
2530: 6c 61 62 6c 65 20 66 6f 72 20 43 79 67 77 69 6e lable for Cygwin
2540: 2e 0a 0a 2a 20 20 20 60 63 6f 6e 66 69 67 75 72 ...* `configur
2550: 65 60 20 73 63 72 69 70 74 20 6f 70 74 69 6f 6e e` script option
2560: 73 0a 0a 20 20 20 20 41 73 20 73 6f 6f 6e 20 61 s.. As soon a
2570: 73 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70 20 s the bootstrap
2580: 73 63 72 69 70 74 20 73 65 65 73 20 61 6e 20 6f script sees an o
2590: 70 74 69 6f 6e 20 74 68 61 74 20 69 74 20 64 6f ption that it do
25a0: 65 73 6e 27 74 0a 20 20 20 20 75 6e 64 65 72 73 esn't. unders
25b0: 74 61 6e 64 2c 20 69 74 20 73 74 6f 70 73 20 70 tand, it stops p
25c0: 72 6f 63 65 73 73 69 6e 67 20 74 68 65 20 63 6f rocessing the co
25d0: 6d 6d 61 6e 64 20 6c 69 6e 65 2e 20 20 41 6e 79 mmand line. Any
25e0: 20 73 75 62 73 65 71 75 65 6e 74 0a 20 20 20 20 subsequent.
25f0: 6f 70 74 69 6f 6e 73 20 61 72 65 20 70 61 73 73 options are pass
2600: 65 64 20 74 6f 20 74 68 65 20 60 63 6f 6e 66 69 ed to the `confi
2610: 67 75 72 65 60 20 73 63 72 69 70 74 2e 20 53 65 gure` script. Se
2620: 65 0a 20 20 20 20 5b 52 45 41 44 4d 45 2d 55 6e e. [README-Un
2630: 69 78 2e 74 78 74 5d 5b 72 6d 75 5d 20 66 6f 72 ix.txt][rmu] for
2640: 20 6d 6f 72 65 20 6f 6e 20 60 63 6f 6e 66 69 67 more on `config
2650: 75 72 65 60 20 73 63 72 69 70 74 20 6f 70 74 69 ure` script opti
2660: 6f 6e 73 2e 0a 0a 5b 62 66 5d 3a 20 20 68 74 74 ons...[bf]: htt
2670: 70 3a 2f 2f 62 61 6b 65 66 69 6c 65 2e 6f 72 67 p://bakefile.org
2680: 2f 0a 5b 72 6d 75 5d 3a 20 68 74 74 70 73 3a 2f /.[rmu]: https:/
2690: 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d /tangentsoft.com
26a0: 2f 6d 79 73 71 6c 70 70 2f 66 69 6c 65 2f 52 45 /mysqlpp/file/RE
26b0: 41 44 4d 45 2d 55 6e 69 78 2e 74 78 74 0a 0a 0a ADME-Unix.txt...
26c0: 23 23 20 3c 61 20 69 64 3d 22 77 69 6e 62 73 22 ## <a id="winbs"
26d0: 3e 3c 2f 61 3e 42 6f 6f 74 73 74 72 61 70 70 69 ></a>Bootstrappi
26e0: 6e 67 20 74 68 65 20 4c 69 62 72 61 72 79 20 55 ng the Library U
26f0: 73 69 6e 67 20 4f 6e 6c 79 20 57 69 6e 64 6f 77 sing Only Window
2700: 73 0a 0a 54 68 65 20 74 68 69 6e 67 20 74 68 61 s..The thing tha
2710: 74 20 6d 61 6b 65 73 20 62 6f 6f 74 73 74 72 61 t makes bootstra
2720: 70 70 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73 pping on Windows
2730: 20 64 69 66 66 69 63 75 6c 74 20 69 73 20 74 68 difficult is th
2740: 61 74 20 6f 6e 65 20 6f 66 0a 74 68 65 20 72 65 at one of.the re
2750: 71 75 69 72 65 64 20 73 74 65 70 73 20 75 73 65 quired steps use
2760: 73 20 61 20 55 6e 69 78 2d 63 65 6e 74 72 69 63 s a Unix-centric
2770: 20 74 6f 6f 6c 2c 20 41 75 74 6f 63 6f 6e 66 2e tool, Autoconf.
2780: 20 20 54 68 69 73 20 73 65 63 74 69 6f 6e 0a 67 This section.g
2790: 69 76 65 73 20 61 6c 74 65 72 6e 61 74 69 76 65 ives alternative
27a0: 73 20 66 6f 72 20 65 69 74 68 65 72 20 67 65 74 s for either get
27b0: 74 69 6e 67 20 41 75 74 6f 63 6f 6e 66 20 77 6f ting Autoconf wo
27c0: 72 6b 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73 rking on Windows
27d0: 20 6f 72 0a 61 76 6f 69 64 69 6e 67 20 74 68 65 or.avoiding the
27e0: 20 6e 65 65 64 20 66 6f 72 20 69 74 2e 0a 0a 54 need for it...T
27f0: 68 65 20 74 68 69 6e 67 20 41 75 74 6f 63 6f 6e he thing Autocon
2800: 66 20 64 6f 65 73 20 74 68 61 74 27 73 20 72 65 f does that's re
2810: 6c 65 76 61 6e 74 20 74 6f 20 57 69 6e 64 6f 77 levant to Window
2820: 73 20 62 75 69 6c 64 73 20 6f 66 20 4d 79 53 51 s builds of MySQ
2830: 4c 2b 2b 0a 69 73 20 74 68 61 74 20 69 74 20 73 L++.is that it s
2840: 75 62 73 74 69 74 75 74 65 73 20 74 68 65 20 63 ubstitutes the c
2850: 75 72 72 65 6e 74 20 4d 79 53 51 4c 2b 2b 20 76 urrent MySQL++ v
2860: 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 69 6e ersion number in
2870: 74 6f 20 73 65 76 65 72 61 6c 0a 73 6f 75 72 63 to several.sourc
2880: 65 20 66 69 6c 65 73 2e 20 54 68 69 73 20 61 6c e files. This al
2890: 6c 6f 77 73 20 75 73 20 74 6f 20 63 68 61 6e 67 lows us to chang
28a0: 65 20 74 68 65 20 76 65 72 73 69 6f 6e 20 6e 75 e the version nu
28b0: 6d 62 65 72 20 69 6e 20 6a 75 73 74 20 6f 6e 65 mber in just one
28c0: 0a 70 6c 61 63 65 20 e2 80 94 20 60 63 6f 6e 66 .place — `conf
28d0: 69 67 75 72 65 2e 61 63 60 20 e2 80 94 20 61 6e igure.ac` — an
28e0: 64 20 68 61 76 65 20 69 74 20 61 70 70 6c 69 65 d have it applie
28f0: 64 20 74 6f 20 61 6c 6c 20 74 68 65 73 65 20 6f d to all these o
2900: 74 68 65 72 20 70 6c 61 63 65 73 2e 0a 55 6e 74 ther places..Unt
2910: 69 6c 20 79 6f 75 20 64 6f 20 74 68 69 73 20 73 il you do this s
2920: 74 65 70 2c 20 61 20 46 6f 73 73 69 6c 20 63 68 tep, a Fossil ch
2930: 65 63 6b 6f 75 74 20 6f 66 20 4d 79 53 51 4c 2b eckout of MySQL+
2940: 2b 20 77 6f 6e 27 74 20 62 75 69 6c 64 2c 0a 62 + won't build,.b
2950: 65 63 61 75 73 65 20 74 68 65 73 65 20 66 69 6c ecause these fil
2960: 65 73 20 77 69 74 68 20 74 68 65 20 76 65 72 73 es with the vers
2970: 69 6f 6e 20 6e 75 6d 62 65 72 73 20 69 6e 20 74 ion numbers in t
2980: 68 65 6d 20 77 6f 6e 27 74 20 62 65 20 67 65 6e hem won't be gen
2990: 65 72 61 74 65 64 2e 0a 0a 0a 23 23 23 20 4f 70 erated....### Op
29a0: 74 69 6f 6e 20 31 3a 20 43 6f 70 79 20 74 68 65 tion 1: Copy the
29b0: 20 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65 73 generated files
29c0: 20 6f 76 65 72 20 66 72 6f 6d 20 61 20 72 65 6c over from a rel
29d0: 65 61 73 65 64 20 76 65 72 73 69 6f 6e 0a 0a 4f eased version..O
29e0: 6e 6c 79 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 nly one of these
29f0: 20 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65 73 generated files
2a00: 20 69 73 20 61 62 73 6f 6c 75 74 65 6c 79 20 63 is absolutely c
2a10: 72 69 74 69 63 61 6c 20 74 6f 20 61 6c 6c 6f 77 ritical to allow
2a20: 69 6e 67 0a 4d 79 53 51 4c 2b 2b 20 74 6f 20 62 ing.MySQL++ to b
2a30: 75 69 6c 64 3a 20 60 6c 69 62 2f 6d 79 73 71 6c uild: `lib/mysql
2a40: 2b 2b 2e 68 60 2e 20 53 6f 2c 20 74 68 65 20 73 ++.h`. So, the s
2a50: 69 6d 70 6c 65 73 74 20 6f 70 74 69 6f 6e 20 79 implest option y
2a60: 6f 75 20 68 61 76 65 20 74 6f 0a 62 6f 6f 74 73 ou have to.boots
2a70: 74 72 61 70 20 4d 79 53 51 4c 2b 2b 20 65 6e 74 trap MySQL++ ent
2a80: 69 72 65 6c 79 20 6f 6e 20 57 69 6e 64 6f 77 73 irely on Windows
2a90: 20 69 73 20 74 6f 20 63 6f 70 79 20 60 6c 69 62 is to copy `lib
2aa0: 2f 6d 79 73 71 6c 2b 2b 2e 68 60 20 6f 76 65 72 /mysql++.h` over
2ab0: 0a 66 72 6f 6d 20 61 20 72 65 6c 65 61 73 65 64 .from a released
2ac0: 20 76 65 72 73 69 6f 6e 20 6f 66 20 4d 79 53 51 version of MySQ
2ad0: 4c 2b 2b 2e 20 57 68 69 6c 65 20 79 6f 75 27 72 L++. While you'r
2ae0: 65 20 64 6f 69 6e 67 20 74 68 61 74 2c 20 79 6f e doing that, yo
2af0: 75 20 6d 69 67 68 74 0a 63 6f 70 79 20 6f 76 65 u might.copy ove
2b00: 72 20 74 68 65 20 6f 74 68 65 72 20 73 75 63 68 r the other such
2b10: 20 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65 73 generated files
2b20: 3a 0a 0a 20 20 20 20 69 6e 73 74 61 6c 6c 2e 68 :.. install.h
2b30: 74 61 0a 20 20 20 20 6d 79 73 71 6c 2b 2b 2e 73 ta. mysql++.s
2b40: 70 65 63 0a 20 20 20 20 64 6f 63 2f 75 73 65 72 pec. doc/user
2b50: 6d 61 6e 2f 75 73 65 72 6d 61 6e 2e 64 62 78 0a man/userman.dbx.
2b60: 20 20 20 20 6c 69 62 2f 44 6f 78 79 66 69 6c 65 lib/Doxyfile
2b70: 0a 0a 48 61 76 69 6e 67 20 64 6f 6e 65 20 74 68 ..Having done th
2b80: 61 74 2c 20 79 6f 75 20 63 61 6e 20 63 6f 6d 70 at, you can comp
2b90: 6c 65 74 65 20 74 68 65 20 62 6f 6f 74 73 74 72 lete the bootstr
2ba0: 61 70 70 69 6e 67 20 70 72 6f 63 65 73 73 20 62 apping process b
2bb0: 79 20 72 75 6e 6e 69 6e 67 0a 60 62 6f 6f 74 73 y running.`boots
2bc0: 74 72 61 70 2e 62 61 74 60 2e 20 49 74 20 68 61 trap.bat`. It ha
2bd0: 73 20 74 68 65 20 73 61 6d 65 20 70 75 72 70 6f s the same purpo
2be0: 73 65 20 61 73 20 74 68 65 20 42 6f 75 72 6e 65 se as the Bourne
2bf0: 20 73 68 65 6c 6c 20 73 63 72 69 70 74 0a 64 65 shell script.de
2c00: 73 63 72 69 62 65 64 20 5b 61 62 6f 76 65 5d 28 scribed [above](
2c10: 23 62 6f 6f 74 73 74 72 61 70 29 2c 20 62 75 74 #bootstrap), but
2c20: 20 77 69 74 68 20 61 20 64 69 66 66 65 72 65 6e with a differen
2c30: 74 20 61 6e 64 20 73 69 6d 70 6c 65 72 20 75 73 t and simpler us
2c40: 61 67 65 3a 0a 0a 20 20 20 20 43 3a 5c 3e 20 62 age:.. C:\> b
2c50: 6f 6f 74 73 74 72 61 70 2e 62 61 74 20 5b 62 61 ootstrap.bat [ba
2c60: 6b 65 66 69 6c 65 2d 6f 70 74 69 6f 6e 73 5d 0a kefile-options].
2c70: 0a 41 6e 79 20 6f 70 74 69 6f 6e 73 20 70 61 73 .Any options pas
2c80: 73 65 64 20 61 72 65 20 70 61 73 73 65 64 20 61 sed are passed a
2c90: 73 2d 69 73 20 74 6f 20 42 61 6b 65 66 69 6c 65 s-is to Bakefile
2ca0: 2e 20 54 68 69 73 20 69 73 20 6e 6f 72 6d 61 6c . This is normal
2cb0: 6c 79 20 75 73 65 64 0a 74 6f 20 70 61 73 73 20 ly used.to pass
2cc0: 60 2d 44 60 20 6f 70 74 69 6f 6e 73 20 74 6f 20 `-D` options to
2cd0: 61 66 66 65 63 74 20 74 68 65 20 67 65 6e 65 72 affect the gener
2ce0: 61 74 65 64 20 62 75 69 6c 64 20 73 79 73 74 65 ated build syste
2cf0: 6d 20 6f 75 74 70 75 74 20 66 69 6c 65 73 2e 0a m output files..
2d00: 0a 0a 23 23 23 20 4f 70 74 69 6f 6e 20 32 3a 20 ..### Option 2:
2d10: 43 79 67 77 69 6e 0a 0a 49 66 20 79 6f 75 27 64 Cygwin..If you'd
2d20: 20 6c 69 6b 65 20 74 6f 20 68 61 63 6b 20 6f 6e like to hack on
2d30: 20 4d 79 53 51 4c 2b 2b 20 65 6e 74 69 72 65 6c MySQL++ entirel
2d40: 79 20 6f 6e 20 57 69 6e 64 6f 77 73 20 61 6e 64 y on Windows and
2d50: 20 68 61 76 65 20 61 6c 6c 20 74 68 65 0a 62 75 have all the.bu
2d60: 69 6c 64 20 66 72 65 65 64 6f 6d 73 20 65 6e 6a ild freedoms enj
2d70: 6f 79 65 64 20 62 79 20 74 68 6f 73 65 20 77 6f oyed by those wo
2d80: 72 6b 69 6e 67 20 6f 6e 20 55 6e 69 78 79 20 70 rking on Unixy p
2d90: 6c 61 74 66 6f 72 6d 73 2c 20 74 68 65 20 73 69 latforms, the si
2da0: 6d 70 6c 65 73 74 0a 73 6f 6c 75 74 69 6f 6e 20 mplest.solution
2db0: 69 73 20 70 72 6f 62 61 62 6c 79 20 74 6f 20 5b is probably to [
2dc0: 69 6e 73 74 61 6c 6c 20 43 79 67 77 69 6e 5d 5b install Cygwin][
2dd0: 63 79 67 5d 2e 20 49 74 20 64 6f 65 73 6e e2 80 cyg]. It doesn
2de0: 99 74 20 6d 61 74 74 65 72 20 77 68 65 74 68 65 t matter whethe
2df0: 72 0a 79 6f 75 20 75 73 65 20 74 68 65 20 33 32 r.you use the 32
2e00: 2d 62 69 74 20 6f 72 20 36 34 2d 62 69 74 20 76 -bit or 64-bit v
2e10: 65 72 73 69 6f 6e 2c 20 66 6f 72 20 6f 75 72 20 ersion, for our
2e20: 70 75 72 70 6f 73 65 73 20 68 65 72 65 2e 0a 0a purposes here...
2e30: 57 68 69 6c 65 20 69 6e 20 74 68 65 20 43 79 67 While in the Cyg
2e40: 77 69 6e 20 73 65 74 75 70 20 70 72 6f 67 72 61 win setup progra
2e50: 6d 2c 20 79 6f 75 20 77 69 6c 6c 20 68 61 76 65 m, you will have
2e60: 20 74 6f 20 61 64 64 20 74 68 65 20 41 75 74 6f to add the Auto
2e70: 63 6f 6e 66 20 61 6e 64 0a 50 65 72 6c 20 35 20 conf and.Perl 5
2e80: 70 61 63 6b 61 67 65 73 2c 20 77 68 69 63 68 20 packages, which
2e90: 61 72 65 6e 27 74 20 69 6e 73 74 61 6c 6c 65 64 aren't installed
2ea0: 20 69 6e 20 43 79 67 77 69 6e 20 62 79 20 64 65 in Cygwin by de
2eb0: 66 61 75 6c 74 2e 20 20 41 75 74 6f 63 6f 6e 66 fault. Autoconf
2ec0: 0a 69 73 20 69 6e 20 74 68 65 20 44 65 76 65 6c .is in the Devel
2ed0: 20 63 61 74 65 67 6f 72 79 2c 20 61 6e 64 20 50 category, and P
2ee0: 65 72 6c 20 35 20 69 6e 20 74 68 65 20 49 6e 74 erl 5 in the Int
2ef0: 65 72 70 72 65 74 65 72 73 20 63 61 74 65 67 6f erpreters catego
2f00: 72 79 2e 0a 0a 59 6f 75 20 77 69 6c 6c 20 61 6c ry...You will al
2f10: 73 6f 20 6e 65 65 64 20 74 6f 20 69 6e 73 74 61 so need to insta
2f20: 6c 6c 20 74 68 65 20 6e 61 74 69 76 65 20 57 69 ll the native Wi
2f30: 6e 64 6f 77 73 20 62 69 6e 61 72 79 20 76 65 72 ndows binary ver
2f40: 73 69 6f 6e 20 6f 66 0a 5b 42 61 6b 65 66 69 6c sion of.[Bakefil
2f50: 65 5d 28 68 74 74 70 3a 2f 2f 62 61 6b 65 66 69 e](http://bakefi
2f60: 6c 65 2e 6f 72 67 2f 29 2e 20 20 44 6f 6e 27 74 le.org/). Don't
2f70: 20 67 65 74 20 74 68 65 20 73 6f 75 72 63 65 20 get the source
2f80: 76 65 72 73 69 6f 6e 20 61 6e 64 20 74 72 79 0a version and try.
2f90: 74 6f 20 62 75 69 6c 64 20 42 61 6b 65 66 69 6c to build Bakefil
2fa0: 65 20 75 6e 64 65 72 20 43 79 67 77 69 6e 3b 20 e under Cygwin;
2fb0: 69 74 20 77 6f 6e 27 74 20 77 6f 72 6b 2e 20 54 it won't work. T
2fc0: 68 65 20 57 69 6e 64 6f 77 73 20 62 69 6e 61 72 he Windows binar
2fd0: 79 0a 76 65 72 73 69 6f 6e 20 6f 66 20 42 61 6b y.version of Bak
2fe0: 65 66 69 6c 65 20 69 6e 63 6c 75 64 65 73 20 61 efile includes a
2ff0: 6e 20 65 6d 62 65 64 64 65 64 20 76 65 72 73 69 n embedded versi
3000: 6f 6e 20 6f 66 20 50 79 74 68 6f 6e 2c 20 73 6f on of Python, so
3010: 20 79 6f 75 20 77 6f 6e 27 74 0a 6e 65 65 64 20 you won't.need
3020: 74 6f 20 69 6e 73 74 61 6c 6c 20 43 79 67 77 69 to install Cygwi
3030: 6e 27 73 20 50 79 74 68 6f 6e 2e 0a 0a 48 61 76 n's Python...Hav
3040: 69 6e 67 20 64 6f 6e 65 20 61 6c 6c 20 74 68 69 ing done all thi
3050: 73 2c 20 79 6f 75 20 63 61 6e 20 66 6f 6c 6c 6f s, you can follo
3060: 77 20 74 68 65 20 55 6e 69 78 20 62 6f 6f 74 73 w the Unix boots
3070: 74 72 61 70 70 69 6e 67 0a 69 6e 73 74 72 75 63 trapping.instruc
3080: 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 70 72 65 tions in the pre
3090: 76 69 6f 75 73 20 73 65 63 74 69 6f 6e 2e 0a 0a vious section...
30a0: 5b 63 79 67 5d 3a 20 68 74 74 70 3a 2f 2f 63 79 [cyg]: http://cy
30b0: 67 77 69 6e 2e 63 6f 6d 2f 0a 0a 0a 23 23 23 20 gwin.com/...###
30c0: 4f 70 74 69 6f 6e 20 33 3a 20 57 69 6e 64 6f 77 Option 3: Window
30d0: 73 20 53 75 62 73 79 73 74 65 6d 20 66 6f 72 20 s Subsystem for
30e0: 4c 69 6e 75 78 20 28 57 53 4c 29 0a 0a 49 66 20 Linux (WSL)..If
30f0: 79 6f 75 e2 80 99 72 65 20 6f 6e 20 57 69 6e 64 you’re on Wind
3100: 6f 77 73 20 31 30 2c 20 79 6f 75 20 68 61 76 65 ows 10, you have
3110: 20 74 68 65 20 6f 70 74 69 6f 6e 20 6f 66 20 5b the option of [
3120: 69 6e 73 74 61 6c 6c 69 6e 67 20 57 53 4c 5d 5b installing WSL][
3130: 77 73 6c 5d 2c 20 61 0a 6c 69 67 68 74 77 65 69 wsl], a.lightwei
3140: 67 68 74 20 4c 69 6e 75 78 20 6b 65 72 6e 65 6c ght Linux kernel
3150: 20 61 6e 64 20 75 73 65 72 20 65 6e 76 69 72 6f and user enviro
3160: 6e 6d 65 6e 74 20 74 68 61 74 20 72 75 6e 73 20 nment that runs
3170: 61 74 6f 70 20 57 69 6e 64 6f 77 73 2e 0a 54 68 atop Windows..Th
3180: 69 73 20 69 73 20 66 75 6e 64 61 6d 65 6e 74 61 is is fundamenta
3190: 6c 6c 79 20 64 69 66 66 65 72 65 6e 74 20 74 65 lly different te
31a0: 63 68 6e 6f 6c 6f 67 79 20 74 68 61 6e 20 43 79 chnology than Cy
31b0: 67 77 69 6e 2c 20 62 75 74 20 74 68 65 0a 75 73 gwin, but the.us
31c0: 65 72 2d 6c 65 76 65 6c 20 65 66 66 65 63 74 20 er-level effect
31d0: 6f 66 20 69 74 20 69 73 20 74 68 65 20 73 61 6d of it is the sam
31e0: 65 20 61 73 20 66 61 72 20 61 73 20 4d 79 53 51 e as far as MySQ
31f0: 4c 2b 2b e2 80 99 73 20 62 75 69 6c 64 20 73 79 L++’s build sy
3200: 73 74 65 6d 0a 67 6f 65 73 2e 0a 0a 41 73 73 75 stem.goes...Assu
3210: 6d 69 6e 67 20 79 6f 75 20 75 73 65 20 74 68 65 ming you use the
3220: 20 64 65 66 61 75 6c 74 20 55 62 75 6e 74 75 20 default Ubuntu
3230: 65 6e 76 69 72 6f 6d 65 6e 74 20 61 74 6f 70 20 enviroment atop
3240: 57 53 4c 2c 20 74 68 65 20 5b 73 74 61 6e 64 61 WSL, the [standa
3250: 72 64 0a 62 6f 6f 74 73 74 72 61 70 70 69 6e 67 rd.bootstrapping
3260: 20 70 72 6f 63 65 73 73 5d 28 23 62 6f 6f 74 73 process](#boots
3270: 74 72 61 70 29 20 61 70 70 6c 69 65 73 2c 20 61 trap) applies, a
3280: 66 74 65 72 20 79 6f 75 20 69 6e 73 74 61 6c 6c fter you install
3290: 20 74 68 65 20 6e 65 65 64 65 64 0a 74 6f 6f 6c the needed.tool
32a0: 73 3a 0a 0a 20 20 20 20 24 20 61 70 74 20 69 6e s:.. $ apt in
32b0: 73 74 61 6c 6c 20 62 61 6b 65 66 69 6c 65 20 62 stall bakefile b
32c0: 75 69 6c 64 2d 65 73 73 65 6e 74 69 61 6c 20 70 uild-essential p
32d0: 65 72 6c 20 6c 69 62 6d 79 73 71 6c 63 6c 69 65 erl libmysqlclie
32e0: 6e 74 2d 64 65 76 0a 0a 5b 77 73 6c 5d 3a 20 68 nt-dev..[wsl]: h
32f0: 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 6d 69 63 72 ttps://docs.micr
3300: 6f 73 6f 66 74 2e 63 6f 6d 2f 65 6e 2d 75 73 2f osoft.com/en-us/
3310: 77 69 6e 64 6f 77 73 2f 77 73 6c 2f 69 6e 73 74 windows/wsl/inst
3320: 61 6c 6c 2d 77 69 6e 31 30 0a 0a 0a 23 23 23 20 all-win10...###
3330: 4f 70 74 69 6f 6e 20 34 3a 20 5b 22 48 65 72 65 Option 4: ["Here
3340: 27 73 20 61 20 6e 69 63 6b 65 6c 2c 20 6b 69 64 's a nickel, kid
3350: 2c 20 67 65 74 20 79 6f 75 72 73 65 6c 66 20 61 , get yourself a
3360: 20 62 65 74 74 65 72 20 63 6f 6d 70 75 74 65 72 better computer
3370: 2e 22 5d 5b 64 63 5d 0a 0a 46 69 6e 61 6c 6c 79 ."][dc]..Finally
3380: 2c 20 79 6f 75 20 6d 69 67 68 74 20 68 61 76 65 , you might have
3390: 20 61 63 63 65 73 73 20 74 6f 20 61 20 55 6e 69 access to a Uni
33a0: 78 79 20 73 79 73 74 65 6d 2c 20 6f 72 20 74 68 xy system, or th
33b0: 65 20 61 62 69 6c 69 74 79 20 74 6f 20 73 65 74 e ability to set
33c0: 0a 6f 6e 65 20 75 70 2e 20 59 6f 75 20 64 6f 6e .one up. You don
33d0: 27 74 20 65 76 65 6e 20 6e 65 65 64 20 61 20 73 't even need a s
33e0: 65 70 61 72 61 74 65 20 70 68 79 73 69 63 61 6c eparate physical
33f0: 20 63 6f 6d 70 75 74 65 72 2c 20 6e 6f 77 20 74 computer, now t
3400: 68 61 74 0a 76 69 72 74 75 61 6c 20 6d 61 63 68 hat.virtual mach
3410: 69 6e 65 20 74 65 63 68 6f 6c 6f 67 79 20 69 73 ine techology is
3420: 20 66 72 65 65 2e 0a 0a 47 69 76 65 6e 20 73 75 free...Given su
3430: 63 68 20 61 20 6d 61 63 68 69 6e 65 2c 20 79 6f ch a machine, yo
3440: 75 27 64 20 64 6f 20 74 68 65 20 46 6f 73 73 69 u'd do the Fossi
3450: 6c 20 63 68 65 63 6b 6f 75 74 20 6f 66 20 4d 79 l checkout of My
3460: 53 51 4c 2b 2b 20 6f 6e 20 74 68 61 74 0a 6d 61 SQL++ on that.ma
3470: 63 68 69 6e 65 2c 20 74 68 65 6e 20 62 6f 6f 74 chine, then boot
3480: 73 74 72 61 70 20 69 74 20 74 68 65 72 65 20 75 strap it there u
3490: 73 69 6e 67 20 74 68 65 20 69 6e 73 74 72 75 63 sing the instruc
34a0: 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 70 72 65 tions in the pre
34b0: 76 69 6f 75 73 0a 73 65 63 74 69 6f 6e 2c 20 61 vious.section, a
34c0: 6e 64 20 63 6f 70 79 20 74 68 65 20 67 65 6e 65 nd copy the gene
34d0: 72 61 74 65 64 20 66 69 6c 65 73 20 62 61 63 6b rated files back
34e0: 20 74 6f 20 74 68 65 20 57 69 6e 64 6f 77 73 20 to the Windows
34f0: 62 6f 78 2e 0a 0a 5b 64 63 5d 3a 20 68 74 74 70 box...[dc]: http
3500: 3a 2f 2f 74 6f 6d 61 79 6b 6f 2e 63 6f 6d 2f 77 ://tomayko.com/w
3510: 72 69 74 69 6e 67 73 2f 74 68 61 74 2d 64 69 6c ritings/that-dil
3520: 62 65 72 74 2d 63 61 72 74 6f 6f 6e 0a 0a 0a 23 bert-cartoon...#
3530: 23 20 4f 6e 20 4d 61 6e 69 70 75 6c 61 74 69 6e # On Manipulatin
3540: 67 20 74 68 65 20 42 75 69 6c 64 20 53 79 73 74 g the Build Syst
3550: 65 6d 20 53 6f 75 72 63 65 20 46 69 6c 65 73 0a em Source Files.
3560: 0a 4f 6e 65 20 6f 66 20 74 68 65 20 74 68 69 6e .One of the thin
3570: 67 73 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70 gs the bootstrap
3580: 70 69 6e 67 20 73 79 73 74 65 6d 20 64 65 73 63 ping system desc
3590: 72 69 62 65 64 20 5b 61 62 6f 76 65 5d 28 23 62 ribed [above](#b
35a0: 6f 6f 74 73 74 72 61 70 29 0a 64 6f 65 73 20 69 ootstrap).does i
35b0: 73 20 70 72 6f 64 75 63 65 73 20 76 61 72 69 6f s produces vario
35c0: 75 73 20 74 79 70 65 73 20 6f 66 20 70 72 6f 6a us types of proj
35d0: 65 63 74 20 61 6e 64 20 6d 61 6b 65 20 66 69 6c ect and make fil
35e0: 65 73 20 66 72 6f 6d 20 61 20 73 6d 61 6c 6c 0a es from a small.
35f0: 6e 75 6d 62 65 72 20 6f 66 20 73 6f 75 72 63 65 number of source
3600: 20 66 69 6c 65 73 2e 20 54 68 69 73 20 73 79 73 files. This sys
3610: 74 65 6d 20 6c 65 74 73 20 75 73 20 73 75 70 70 tem lets us supp
3620: 6f 72 74 20 6d 61 6e 79 20 70 6c 61 74 66 6f 72 ort many platfor
3630: 6d 73 0a 77 69 74 68 6f 75 74 20 68 61 76 69 6e ms.without havin
3640: 67 20 74 6f 20 6d 61 69 6e 74 61 69 6e 20 73 65 g to maintain se
3650: 70 61 72 61 74 65 20 62 75 69 6c 64 20 73 79 73 parate build sys
3660: 74 65 6d 20 66 69 6c 65 73 20 66 6f 72 20 65 61 tem files for ea
3670: 63 68 0a 70 6c 61 74 66 6f 72 6d 2e 0a 0a 5b 42 ch.platform...[B
3680: 61 6b 65 66 69 6c 65 5d 5b 62 66 5d 20 70 72 6f akefile][bf] pro
3690: 64 75 63 65 73 20 6d 6f 73 74 20 6f 66 20 74 68 duces most of th
36a0: 65 73 65 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 ese project and
36b0: 6d 61 6b 65 0a 66 69 6c 65 73 20 66 72 6f 6d 20 make.files from
36c0: 61 20 73 69 6e 67 6c 65 20 73 6f 75 72 63 65 20 a single source
36d0: 66 69 6c 65 20 63 61 6c 6c 65 64 20 5b 60 6d 79 file called [`my
36e0: 73 71 6c 2b 2b 2e 62 6b 6c 60 5d 5b 62 6b 6c 5d sql++.bkl`][bkl]
36f0: 2e 0a 0a 45 78 63 65 70 74 20 66 6f 72 20 73 6d ...Except for sm
3700: 61 6c 6c 20 6c 6f 63 61 6c 20 63 68 61 6e 67 65 all local change
3710: 73 2c 20 69 74 27 73 20 62 65 73 74 20 74 6f 20 s, it's best to
3720: 63 68 61 6e 67 65 20 60 6d 79 73 71 6c 2b 2b 2e change `mysql++.
3730: 62 6b 6c 60 20 61 6e 64 0a 22 72 65 2d 62 61 6b bkl` and."re-bak
3740: 65 22 20 74 68 65 20 70 72 6f 6a 65 63 74 20 61 e" the project a
3750: 6e 64 20 6d 61 6b 65 20 66 69 6c 65 73 20 72 61 nd make files ra
3760: 74 68 65 72 20 74 68 61 6e 20 63 68 61 6e 67 65 ther than change
3770: 20 74 68 6f 73 65 20 66 69 6c 65 73 0a 64 69 72 those files.dir
3780: 65 63 74 6c 79 2e 20 59 6f 75 20 63 61 6e 20 64 ectly. You can d
3790: 6f 20 74 68 69 73 20 77 69 74 68 20 74 68 65 20 o this with the
37a0: 62 6f 6f 74 73 74 72 61 70 20 73 63 72 69 70 74 bootstrap script
37b0: 73 20 63 6f 76 65 72 65 64 20 61 62 6f 76 65 2e s covered above.
37c0: 20 4f 6e 0a 57 69 6e 64 6f 77 73 2c 20 69 66 20 On.Windows, if
37d0: 61 6c 6c 20 79 6f 75 27 76 65 20 63 68 61 6e 67 all you've chang
37e0: 65 64 20 69 73 20 60 6d 79 73 71 6c 2b 2b 2e 62 ed is `mysql++.b
37f0: 6b 6c 60 2c 20 79 6f 75 20 63 61 6e 20 75 73 65 kl`, you can use
3800: 0a 60 72 65 62 61 6b 65 2e 62 61 74 60 20 69 6e .`rebake.bat` in
3810: 73 74 65 61 64 2c 20 77 68 69 63 68 20 64 6f 65 stead, which doe
3820: 73 6e 27 74 20 74 72 79 20 74 6f 20 64 6f 20 61 sn't try to do a
3830: 73 20 6d 75 63 68 20 61 73 0a 60 62 6f 6f 74 73 s much as.`boots
3840: 74 72 61 70 2e 62 61 74 60 2e 0a 0a 42 61 6b 65 trap.bat`...Bake
3850: 66 69 6c 65 20 70 72 6f 64 75 63 65 73 20 66 69 file produces fi
3860: 6e 69 73 68 65 64 20 70 72 6f 6a 65 63 74 20 66 nished project f
3870: 69 6c 65 73 20 66 6f 72 20 56 69 73 75 61 6c 20 iles for Visual
3880: 43 2b 2b 20 61 6e 64 20 58 63 6f 64 65 20 61 6e C++ and Xcode an
3890: 64 0a 66 69 6e 69 73 68 65 64 20 60 4d 61 6b 65 d.finished `Make
38a0: 66 69 6c 65 73 60 20 66 6f 72 20 4d 69 6e 47 57 files` for MinGW
38b0: 2e 20 49 74 20 61 6c 73 6f 20 70 72 6f 64 75 63 . It also produc
38c0: 65 73 20 60 4d 61 6b 65 66 69 6c 65 2e 69 6e 60 es `Makefile.in`
38d0: 2c 20 77 68 69 63 68 20 69 73 0a 69 6e 70 75 74 , which is.input
38e0: 20 74 6f 20 47 4e 55 20 41 75 74 6f 63 6f 6e 66 to GNU Autoconf
38f0: 20 61 6c 6f 6e 67 20 77 69 74 68 20 60 63 6f 6e along with `con
3900: 66 69 67 75 72 65 2e 61 63 60 20 61 6e 64 20 60 figure.ac` and `
3910: 63 6f 6e 66 69 67 2f 2a 60 2e 20 59 6f 75 20 6d config/*`. You m
3920: 61 79 0a 6e 65 65 64 20 74 6f 20 63 68 61 6e 67 ay.need to chang
3930: 65 20 74 68 65 73 65 20 6c 61 74 74 65 72 20 66 e these latter f
3940: 69 6c 65 73 20 69 6e 20 61 64 64 69 74 69 6f 6e iles in addition
3950: 20 74 6f 20 6f 72 20 69 6e 73 74 65 61 64 20 6f to or instead o
3960: 66 0a 60 6d 79 73 71 6c 2b 2b 2e 62 6b 6c 60 20 f.`mysql++.bkl`
3970: 74 6f 20 67 65 74 20 74 68 65 20 65 66 66 65 63 to get the effec
3980: 74 20 79 6f 75 20 77 61 6e 74 2e 20 20 52 75 6e t you want. Run
3990: 6e 69 6e 67 20 62 6f 6f 74 73 74 72 61 70 0a 69 ning bootstrap.i
39a0: 6e 63 6f 72 70 6f 72 61 74 65 73 20 63 68 61 6e ncorporates chan
39b0: 67 65 73 20 74 6f 20 61 6c 6c 20 6f 66 20 74 68 ges to all of th
39c0: 65 73 65 20 66 69 6c 65 73 20 69 6e 20 74 68 65 ese files in the
39d0: 20 47 4e 55 20 41 75 74 6f 63 6f 6e 66 20 6f 75 GNU Autoconf ou
39e0: 74 70 75 74 2e 0a 0a 57 68 69 6c 65 20 42 61 6b tput...While Bak
39f0: 65 66 69 6c 65 27 73 20 64 6f 63 75 6d 65 6e 74 efile's document
3a00: 61 74 69 6f 6e 20 69 73 6e 27 74 20 61 73 20 63 ation isn't as c
3a10: 6f 6d 70 72 65 68 65 6e 73 69 76 65 20 61 73 20 omprehensive as
3a20: 69 74 0a 6f 75 67 68 74 20 74 6f 20 62 65 2c 20 it.ought to be,
3a30: 79 6f 75 20 63 61 6e 20 61 74 20 6c 65 61 73 74 you can at least
3a40: 20 63 6f 75 6e 74 20 6f 6e 20 69 74 20 74 6f 20 count on it to
3a50: 6c 69 73 74 20 61 6c 6c 20 6f 66 20 74 68 65 0a list all of the.
3a60: 61 76 61 69 6c 61 62 6c 65 20 66 65 61 74 75 72 available featur
3a70: 65 73 2e 20 53 6f 2c 20 69 66 20 79 6f 75 20 63 es. So, if you c
3a80: 61 6e 27 74 20 73 65 65 20 61 20 77 61 79 20 74 an't see a way t
3a90: 6f 20 6d 61 6b 65 20 42 61 6b 65 66 69 6c 65 0a o make Bakefile.
3aa0: 64 6f 20 73 6f 6d 65 74 68 69 6e 67 2c 20 69 74 do something, it
3ab0: 27 73 20 6c 69 6b 65 6c 79 20 69 74 20 6a 75 73 's likely it jus
3ac0: 74 20 63 61 6e 27 74 20 64 6f 20 69 74 2e 20 42 t can't do it. B
3ad0: 61 6b 65 66 69 6c 65 20 69 73 20 61 0a 68 69 67 akefile is a.hig
3ae0: 68 2d 6c 65 76 65 6c 20 61 62 73 74 72 61 63 74 h-level abstract
3af0: 69 6f 6e 20 6f 66 20 62 75 69 6c 64 20 73 79 73 ion of build sys
3b00: 74 65 6d 73 20 69 6e 20 67 65 6e 65 72 61 6c 2c tems in general,
3b10: 20 73 6f 20 69 74 27 6c 6c 20 6e 65 76 65 72 0a so it'll never.
3b20: 73 75 70 70 6f 72 74 20 61 6c 6c 20 74 68 65 20 support all the
3b30: 70 61 72 74 69 63 75 6c 61 72 73 20 6f 66 20 65 particulars of e
3b40: 76 65 72 79 20 6f 64 64 20 62 75 69 6c 64 20 73 very odd build s
3b50: 79 73 74 65 6d 20 6f 75 74 20 74 68 65 72 65 2e ystem out there.
3b60: 0a 0a 5b 62 6b 6c 5d 3a 20 68 74 74 70 73 3a 2f ..[bkl]: https:/
3b70: 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d /tangentsoft.com
3b80: 2f 6d 79 73 71 6c 70 70 2f 66 69 6c 65 2f 6d 79 /mysqlpp/file/my
3b90: 73 71 6c 25 32 42 25 32 42 2e 62 6b 6c 0a 0a 0a sql%2B%2B.bkl...
3ba0: 3c 61 20 69 64 3d 22 70 61 74 63 68 65 73 22 3e <a id="patches">
3bb0: 3c 2f 61 3e 0a 23 23 20 53 75 62 6d 69 74 74 69 </a>.## Submitti
3bc0: 6e 67 20 50 61 74 63 68 65 73 0a 0a 49 66 20 79 ng Patches..If y
3bd0: 6f 75 20 77 69 73 68 20 74 6f 20 73 75 62 6d 69 ou wish to submi
3be0: 74 20 61 20 70 61 74 63 68 20 74 6f 20 74 68 65 t a patch to the
3bf0: 20 6c 69 62 72 61 72 79 20 61 6e 64 20 79 6f 75 library and you
3c00: 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 61 0a 64 do not have a.d
3c10: 65 76 65 6c 6f 70 65 72 20 61 63 63 6f 75 6e 74 eveloper account
3c20: 20 6f 6e 20 6f 75 72 20 46 6f 73 73 69 6c 20 72 on our Fossil r
3c30: 65 70 6f 2c 20 69 74 e2 80 99 73 20 70 72 6f 62 epo, it’s prob
3c40: 61 62 6c 79 20 73 69 6d 70 6c 65 73 74 20 74 6f ably simplest to
3c50: 20 70 61 73 74 65 20 69 74 0a 69 6e 74 6f 20 61 paste it.into a
3c60: 20 5b 66 6f 72 75 6d 20 70 6f 73 74 5d 5b 66 6f [forum post][fo
3c70: 72 5d 2c 20 69 66 20 69 74 e2 80 99 73 20 73 6d r], if it’s sm
3c80: 61 6c 6c 2e 20 49 66 20 69 74 e2 80 99 73 20 6c all. If it’s l
3c90: 61 72 67 65 2c 20 70 75 74 20 69 74 20 69 6e 0a arge, put it in.
3ca0: 50 61 73 74 65 62 69 6e 20 6f 72 20 73 69 6d 69 Pastebin or simi
3cb0: 6c 61 72 2c 20 74 68 65 6e 20 6c 69 6e 6b 20 74 lar, then link t
3cc0: 6f 20 69 74 20 66 72 6f 6d 20 61 20 66 6f 72 75 o it from a foru
3cd0: 6d 20 70 6f 73 74 2e 20 20 57 65 20 77 61 6e 74 m post. We want
3ce0: 20 70 61 74 63 68 65 73 0a 69 6e 20 75 6e 69 66 patches.in unif
3cf0: 69 65 64 20 64 69 66 66 20 66 6f 72 6d 61 74 2e ied diff format.
3d00: 0a 0a 57 65 20 77 69 6c 6c 20 61 6c 73 6f 20 61 ..We will also a
3d10: 63 63 65 70 74 20 74 72 69 76 69 61 6c 20 70 61 ccept trivial pa
3d20: 74 63 68 65 73 20 6e 6f 74 20 6e 65 65 64 69 6e tches not needin
3d30: 67 20 64 69 73 63 75 73 73 69 6f 6e 20 61 73 20 g discussion as
3d40: 74 65 78 74 0a 6f 72 20 61 74 74 61 63 68 6d 65 text.or attachme
3d50: 6e 74 73 20 74 6f 20 5b 61 20 46 6f 73 73 69 6c nts to [a Fossil
3d60: 20 74 69 63 6b 65 74 5d 5b 74 6b 74 5d 2e 0a 0a ticket][tkt]...
3d70: 54 68 65 20 65 61 73 69 65 73 74 20 77 61 79 20 The easiest way
3d80: 74 6f 20 67 65 74 20 61 20 75 6e 69 66 69 65 64 to get a unified
3d90: 20 64 69 66 66 20 69 73 20 74 6f 20 63 68 65 63 diff is to chec
3da0: 6b 20 6f 75 74 20 61 20 63 6f 70 79 20 6f 66 20 k out a copy of
3db0: 74 68 65 0a 63 75 72 72 65 6e 74 20 4d 79 53 51 the.current MySQ
3dc0: 4c 2b 2b 20 74 72 65 65 20 5b 61 73 20 64 65 73 L++ tree [as des
3dd0: 63 72 69 62 65 64 20 61 62 6f 76 65 5d 28 23 72 cribed above](#r
3de0: 65 70 6f 29 2e 20 54 68 65 6e 20 6d 61 6b 65 20 epo). Then make
3df0: 79 6f 75 72 20 63 68 61 6e 67 65 2c 0a 60 63 64 your change,.`cd
3e00: 60 20 74 6f 20 74 68 65 20 4d 79 53 51 4c 2b 2b ` to the MySQL++
3e10: 20 72 6f 6f 74 20 64 69 72 65 63 74 6f 72 79 2c root directory,
3e20: 20 61 6e 64 20 61 73 6b 20 46 6f 73 73 69 6c 20 and ask Fossil
3e30: 74 6f 20 67 65 6e 65 72 61 74 65 20 74 68 65 20 to generate the
3e40: 70 61 74 63 68 0a 66 6f 72 20 79 6f 75 3a 0a 0a patch.for you:..
3e50: 20 20 20 20 24 20 66 6f 73 73 69 6c 20 64 69 66 $ fossil dif
3e60: 66 20 3e 20 6d 79 63 68 61 6e 67 65 2e 70 61 74 f > mychange.pat
3e70: 63 68 0a 0a 49 66 20 79 6f 75 72 20 70 61 74 63 ch..If your patc
3e80: 68 20 61 64 64 73 20 6e 65 77 20 66 69 6c 65 73 h adds new files
3e90: 2c 20 6d 6f 76 65 73 20 66 69 6c 65 73 2c 20 6f , moves files, o
3ea0: 72 20 6e 65 65 64 73 20 74 6f 20 62 65 20 75 6e r needs to be un
3eb0: 64 65 72 73 74 6f 6f 64 20 69 6e 0a 74 65 72 6d derstood in.term
3ec0: 73 20 6f 66 20 6d 75 6c 74 69 70 6c 65 20 63 68 s of multiple ch
3ed0: 65 63 6b 69 6e 73 2c 20 69 74 27 73 20 62 65 73 eckins, it's bes
3ee0: 74 20 74 6f 20 64 6f 20 74 68 61 74 20 77 6f 72 t to do that wor
3ef0: 6b 20 6f 6e 20 61 0a 5b 70 72 69 76 61 74 65 20 k on a.[private
3f00: 6c 6f 63 61 6c 20 62 72 61 6e 63 68 5d 28 23 70 local branch](#p
3f10: 72 69 76 61 74 65 29 2c 20 74 68 65 6e 20 73 65 rivate), then se
3f20: 6e 64 20 61 20 5b 62 75 6e 64 6c 65 5d 5b 66 62 nd a [bundle][fb
3f30: 5d 20 69 6e 73 74 65 61 64 20 6f 66 20 61 0a 70 ] instead of a.p
3f40: 61 74 63 68 2e 0a 0a 49 66 20 79 6f 75 27 76 65 atch...If you've
3f50: 20 73 65 6e 74 20 70 61 74 63 68 65 73 20 74 6f sent patches to
3f60: 20 4d 79 53 51 4c 2b 2b 20 62 65 66 6f 72 65 20 MySQL++ before
3f70: 61 6e 64 20 64 6f 6e 27 74 20 68 61 76 65 20 61 and don't have a
3f80: 20 46 6f 73 73 69 6c 0a 64 65 76 65 6c 6f 70 65 Fossil.develope
3f90: 72 20 6c 6f 67 69 6e 2c 20 61 6e 6f 74 68 65 72 r login, another
3fa0: 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 73 20 alternative is
3fb0: 74 6f 20 61 73 6b 20 66 6f 72 20 61 20 6c 6f 67 to ask for a log
3fc0: 69 6e 20 62 65 66 6f 72 65 20 79 6f 75 0a 62 65 in before you.be
3fd0: 67 69 6e 20 77 6f 72 6b 20 73 6f 20 74 68 61 74 gin work so that
3fe0: 20 79 6f 75 72 20 63 68 61 6e 67 65 73 20 61 72 your changes ar
3ff0: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 e automatically
4000: 73 79 6e 63 27 64 20 74 6f 20 74 68 65 20 6d 61 sync'd to the ma
4010: 69 6e 0a 46 6f 73 73 69 6c 20 72 65 70 6f 73 69 in.Fossil reposi
4020: 74 6f 72 79 20 61 73 20 79 6f 75 20 77 6f 72 6b tory as you work
4030: 2c 20 73 6f 20 79 6f 75 20 64 6f 6e 27 74 20 68 , so you don't h
4040: 61 76 65 20 74 6f 20 73 65 6e 64 20 62 75 6e 64 ave to send bund
4050: 6c 65 73 20 6f 72 0a 70 61 74 63 68 20 66 69 6c les or.patch fil
4060: 65 73 2e 20 57 65 20 67 65 6e 65 72 61 6c 6c 79 es. We generally
4070: 20 64 6f 6e 27 74 20 72 65 66 75 73 65 20 73 75 don't refuse su
4080: 63 68 20 72 65 71 75 65 73 74 73 20 69 66 20 79 ch requests if y
4090: 6f 75 27 76 65 20 61 6c 72 65 61 64 79 0a 70 72 ou've already.pr
40a0: 6f 76 65 6e 20 79 6f 75 72 20 61 62 69 6c 69 74 oven your abilit
40b0: 79 20 74 6f 20 77 6f 72 6b 20 70 72 6f 64 75 63 y to work produc
40c0: 74 69 76 65 6c 79 20 77 69 74 68 20 74 68 65 20 tively with the
40d0: 4d 79 53 51 4c 2b 2b 20 70 72 6f 6a 65 63 74 2e MySQL++ project.
40e0: 0a 0a 49 66 20 79 6f 75 27 72 65 20 6d 61 6b 69 ..If you're maki
40f0: 6e 67 20 61 20 70 61 74 63 68 20 61 67 61 69 6e ng a patch again
4100: 73 74 20 61 20 4d 79 53 51 4c 2b 2b 20 64 69 73 st a MySQL++ dis
4110: 74 72 69 62 75 74 69 6f 6e 20 74 61 72 62 61 6c tribution tarbal
4120: 6c 2c 20 74 68 65 6e 0a 79 6f 75 20 63 61 6e 20 l, then.you can
4130: 67 65 6e 65 72 61 74 65 20 61 20 70 61 74 63 68 generate a patch
4140: 20 74 68 69 73 20 77 61 79 3a 0a 0a 20 20 20 20 this way:..
4150: 24 20 64 69 66 66 20 2d 72 75 4e 20 6d 79 73 71 $ diff -ruN mysq
4160: 6c 2b 2b 2d 6f 6c 64 64 69 72 20 6d 79 73 71 6c l++-olddir mysql
4170: 2b 2b 2d 6e 65 77 64 69 72 20 3e 20 6d 79 63 68 ++-newdir > mych
4180: 61 6e 67 65 2e 70 61 74 63 68 0a 0a 54 68 65 20 ange.patch..The
4190: 60 64 69 66 66 60 20 63 6f 6d 6d 61 6e 64 20 69 `diff` command i
41a0: 73 20 70 61 72 74 20 6f 66 20 65 76 65 72 79 20 s part of every
41b0: 55 6e 69 78 20 61 6e 64 20 4c 69 6e 75 78 20 73 Unix and Linux s
41c0: 79 73 74 65 6d 2c 20 61 6e 64 20 73 68 6f 75 6c ystem, and shoul
41d0: 64 20 62 65 0a 69 6e 73 74 61 6c 6c 65 64 20 62 d be.installed b
41e0: 79 20 64 65 66 61 75 6c 74 2e 20 49 66 20 79 6f y default. If yo
41f0: 75 27 72 65 20 6f 6e 20 61 20 57 69 6e 64 6f 77 u're on a Window
4200: 73 20 6d 61 63 68 69 6e 65 2c 20 47 4e 55 20 64 s machine, GNU d
4210: 69 66 66 20 69 73 20 70 61 72 74 0a 6f 66 20 5b iff is part.of [
4220: 43 79 67 77 69 6e 5d 28 68 74 74 70 3a 2f 2f 63 Cygwin](http://c
4230: 79 67 77 69 6e 2e 63 6f 6d 2f 29 2e 20 46 6f 73 ygwin.com/). Fos
4240: 73 69 6c 20 69 73 20 61 6c 73 6f 20 61 76 61 69 sil is also avai
4250: 6c 61 62 6c 65 20 66 6f 72 20 61 6c 6c 20 6f 66 lable for all of
4260: 0a 74 68 65 73 65 20 73 79 73 74 65 6d 73 2e 20 .these systems.
4270: 54 68 65 72 65 20 61 72 65 20 6e 6f 20 65 78 63 There are no exc
4280: 75 73 65 73 20 66 6f 72 20 6e 6f 74 20 62 65 69 uses for not bei
4290: 6e 67 20 61 62 6c 65 20 74 6f 20 6d 61 6b 65 20 ng able to make
42a0: 75 6e 69 66 69 65 64 0a 64 69 66 66 73 2e 20 3a unified.diffs. :
42b0: 29 0a 0a 41 6c 74 68 6f 75 67 68 20 4d 79 53 51 )..Although MySQ
42c0: 4c 2b 2b 20 64 6f 65 73 20 68 61 76 65 20 61 20 L++ does have a
42d0: 5b 47 69 74 48 75 62 20 6d 69 72 72 6f 72 5d 5b [GitHub mirror][
42e0: 67 68 6d 5d 2c 20 77 65 20 70 72 65 66 65 72 20 ghm], we prefer
42f0: 6e 6f 74 20 74 6f 0a 61 63 63 63 65 70 74 20 50 not to.acccept P
4300: 52 73 20 76 69 61 20 74 68 61 74 20 63 68 61 6e Rs via that chan
4310: 6e 65 6c 2e 20 49 74 20 69 73 20 69 6e 74 65 6e nel. It is inten
4320: 64 65 64 20 61 73 20 61 20 72 65 61 64 2d 6f 6e ded as a read-on
4330: 6c 79 20 6d 69 72 72 6f 72 20 66 6f 72 0a 74 68 ly mirror for.th
4340: 6f 73 65 20 68 65 61 76 69 6c 79 20 74 69 65 64 ose heavily tied
4350: 20 69 6e 74 6f 20 47 69 74 2d 62 61 73 65 64 20 into Git-based
4360: 74 6f 6f 6c 69 6e 67 2e 20 59 6f 75 e2 80 99 72 tooling. You’r
4370: 65 20 77 65 6c 63 6f 6d 65 20 74 6f 20 73 65 6e e welcome to sen
4380: 64 20 75 73 20 61 0a 50 52 20 61 6e 79 77 61 79 d us a.PR anyway
4390: 2c 20 62 75 74 20 72 65 61 6c 69 7a 65 20 74 68 , but realize th
43a0: 61 74 20 77 68 61 74 e2 80 99 73 20 67 6f 69 6e at what’s goin
43b0: 67 20 74 6f 20 68 61 70 70 65 6e 20 6f 6e 20 74 g to happen on t
43c0: 68 65 20 62 61 63 6b 20 65 6e 64 20 69 73 0a 74 he back end is.t
43d0: 68 61 74 20 77 65 e2 80 99 6c 6c 20 67 65 6e 65 hat we’ll gene
43e0: 72 61 74 65 20 61 20 70 61 74 63 68 2c 20 61 70 rate a patch, ap
43f0: 70 6c 79 20 69 74 20 74 6f 20 74 68 65 20 46 6f ply it to the Fo
4400: 73 73 69 6c 20 72 65 70 6f 20 62 79 20 68 61 6e ssil repo by han
4410: 64 2c 20 74 65 73 74 0a 69 74 2c 20 61 6e 64 20 d, test.it, and
4420: 74 68 65 6e 20 63 6f 6d 6d 69 74 20 69 74 20 74 then commit it t
4430: 6f 20 74 68 65 20 72 65 70 6f 73 69 74 6f 72 79 o the repository
4440: 20 75 6e 64 65 72 20 6f 6e 65 20 6f 66 20 74 68 under one of th
4450: 65 20 65 78 69 73 74 69 6e 67 0a 64 65 76 65 6c e existing.devel
4460: 6f 70 65 72 20 61 63 63 6f 75 6e 74 73 2e 20 4f oper accounts. O
4470: 6e 6c 79 20 74 68 65 6e 20 64 6f 20 77 65 20 75 nly then do we u
4480: 70 64 61 74 65 20 74 68 65 20 6d 69 72 72 6f 72 pdate the mirror
4490: 20 73 6f 20 74 68 61 74 20 74 68 65 20 63 68 61 so that the cha
44a0: 6e 67 65 0a 61 70 70 65 61 72 73 20 6f 6e 20 47 nge.appears on G
44b0: 69 74 48 75 62 2c 20 61 6e 64 20 79 6f 75 20 64 itHub, and you d
44c0: 6f 6e e2 80 99 74 20 67 65 74 20 47 69 74 48 75 on’t get GitHu
44d0: 62 20 63 72 65 64 69 74 20 66 6f 72 20 74 68 65 b credit for the
44e0: 20 50 52 2e 20 54 68 69 73 20 69 73 0a 61 6c 6c PR. This is.all
44f0: 20 64 75 65 20 74 6f 20 5b 69 6e 68 65 72 65 6e due to [inheren
4500: 74 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 6f 66 t limitations of
4510: 20 74 68 65 20 6d 69 72 72 6f 72 69 6e 67 20 70 the mirroring p
4520: 72 6f 63 65 73 73 5d 5b 66 67 65 5d 2e 20 49 66 rocess][fge]. If
4530: 20 79 6f 75 0a 77 61 6e 74 20 63 72 65 64 69 74 you.want credit
4540: 20 66 6f 72 20 79 6f 75 72 20 63 6f 64 65 20 63 for your code c
4550: 6f 6e 74 72 69 62 75 74 69 6f 6e 73 2c 20 61 73 ontributions, as
4560: 6b 20 75 73 20 66 6f 72 20 61 6e 20 61 63 63 6f k us for an acco
4570: 75 6e 74 20 6f 6e 20 74 68 65 0a 46 6f 73 73 69 unt on the.Fossi
4580: 6c 20 72 65 70 6f 2c 20 74 68 65 6e 20 63 6f 6d l repo, then com
4590: 6d 69 74 20 69 74 20 74 68 65 72 65 20 69 6e 73 mit it there ins
45a0: 74 65 61 64 2e 0a 0a 5b 66 62 5d 3a 20 20 68 74 tead...[fb]: ht
45b0: 74 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e tp://fossil-scm.
45c0: 6f 72 67 2f 66 6f 73 73 69 6c 2f 68 65 6c 70 3f org/fossil/help?
45d0: 63 6d 64 3d 62 75 6e 64 6c 65 0a 5b 66 67 65 5d cmd=bundle.[fge]
45e0: 3a 20 68 74 74 70 73 3a 2f 2f 66 6f 73 73 69 6c : https://fossil
45f0: 2d 73 63 6d 2e 6f 72 67 2f 66 6f 73 73 69 6c 2f -scm.org/fossil/
4600: 64 6f 63 2f 74 72 75 6e 6b 2f 77 77 77 2f 6d 69 doc/trunk/www/mi
4610: 72 72 6f 72 74 6f 67 69 74 68 75 62 2e 6d 64 0a rrortogithub.md.
4620: 5b 74 6b 74 5d 3a 20 68 74 74 70 73 3a 2f 2f 74 [tkt]: https://t
4630: 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d angentsoft.com/m
4640: 79 73 71 6c 70 70 2f 74 6b 74 6e 65 77 0a 0a 0a ysqlpp/tktnew...
4650: 23 23 20 54 68 65 20 4d 79 53 51 4c 2b 2b 20 43 ## The MySQL++ C
4660: 6f 64 65 20 53 74 79 6c 65 0a 0a 45 76 65 72 79 ode Style..Every
4670: 20 63 6f 64 65 20 62 61 73 65 20 73 68 6f 75 6c code base shoul
4680: 64 20 68 61 76 65 20 61 20 63 6f 6d 6d 6f 6e 20 d have a common
4690: 63 6f 64 65 20 73 74 79 6c 65 2e 20 4c 6f 76 65 code style. Love
46a0: 20 69 74 20 6f 72 0a 68 61 74 65 20 69 74 2c 20 it or.hate it,
46b0: 68 65 72 65 20 61 72 65 20 4d 79 53 51 4c 2b 2b here are MySQL++
46c0: 27 73 20 63 75 72 72 65 6e 74 20 63 6f 64 65 20 's current code
46d0: 73 74 79 6c 65 20 72 75 6c 65 73 3a 0a 0a 0a 23 style rules:...#
46e0: 23 23 20 53 6f 75 72 63 65 20 43 6f 64 65 0a 0a ## Source Code..
46f0: 46 69 6c 65 20 74 79 70 65 73 3a 20 60 61 63 60 File types: `ac`
4700: 2c 20 60 63 70 70 60 2c 20 60 68 60 2c 20 60 69 , `cpp`, `h`, `i
4710: 6e 60 2c 20 60 6d 34 60 2c 20 60 70 6c 60 0a 0a n`, `m4`, `pl`..
4720: 2d 20 20 20 54 61 62 73 20 66 6f 72 20 69 6e 64 - Tabs for ind
4730: 65 6e 74 73 2c 20 73 69 7a 65 20 34 0a 0a 2d 20 ents, size 4..-
4740: 20 20 55 6e 69 78 20 6c 69 6e 65 20 65 6e 64 69 Unix line endi
4750: 6e 67 73 2e 20 41 6e 79 20 64 65 63 65 6e 74 20 ngs. Any decent
4760: 70 72 6f 67 72 61 6d 6d 65 72 27 73 20 65 64 69 programmer's edi
4770: 74 6f 72 20 63 61 6e 20 63 6f 70 65 20 77 69 74 tor can cope wit
4780: 68 0a 20 20 20 20 74 68 69 73 2c 20 65 76 65 6e h. this, even
4790: 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0a 0a 2d 20 on Windows...-
47a0: 20 20 43 2f 43 2b 2b 20 72 75 6c 65 73 3a 0a 0a C/C++ rules:..
47b0: 20 20 20 20 2d 20 20 20 42 61 73 65 20 77 68 69 - Base whi
47c0: 74 65 73 70 61 63 65 20 73 74 79 6c 65 20 69 73 tespace style is
47d0: 20 41 54 26 54 69 73 68 3a 20 4b 26 52 2f 53 74 AT&Tish: K&R/St
47e0: 72 6f 75 73 74 72 75 70 2c 20 70 6c 75 73 20 61 roustrup, plus a
47f0: 20 6c 69 74 74 6c 65 0a 20 20 20 20 20 20 20 20 little.
4800: 6c 6f 63 61 6c 20 73 70 69 63 65 2e 20 49 66 20 local spice. If
4810: 79 6f 75 20 68 61 76 65 20 74 68 65 20 69 6e 64 you have the ind
4820: 65 6e 74 28 31 29 20 70 72 6f 67 72 61 6d 2c 20 ent(1) program,
4830: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 3a 0a the command is:.
4840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 . ind
4850: 65 6e 74 20 2d 6b 72 20 2d 6e 63 65 20 2d 63 6c ent -kr -nce -cl
4860: 69 34 20 2d 73 73 20 2d 64 69 31 20 2d 70 73 6c i4 -ss -di1 -psl
4870: 20 2d 74 73 34 20 46 49 4c 45 53 2e 2e 2e 0a 0a -ts4 FILES.....
4880: 20 20 20 20 20 20 20 20 54 68 61 74 20 69 73 2c That is,
4890: 20 64 6f 6e 27 74 20 63 75 64 64 6c 65 20 65 6c don't cuddle el
48a0: 73 65 2c 20 69 6e 64 65 6e 74 20 63 61 73 65 20 se, indent case
48b0: 73 74 61 74 65 6d 65 6e 74 20 6c 61 62 65 6c 73 statement labels
48c0: 2c 20 73 70 61 63 65 0a 20 20 20 20 20 20 20 20 , space.
48d0: 62 65 66 6f 72 65 20 73 65 6d 69 63 6f 6c 6f 6e before semicolon
48e0: 20 77 69 74 68 20 65 6d 70 74 79 20 6c 6f 6f 70 with empty loop
48f0: 20 62 6f 64 79 2c 20 6e 6f 20 65 78 74 72 61 20 body, no extra
4900: 73 70 61 63 65 20 62 65 74 77 65 65 6e 20 61 0a space between a.
4910: 20 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65 variable
4920: 20 74 79 70 65 20 61 6e 64 20 6e 61 6d 65 2c 20 type and name,
4930: 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 return value of
4940: 66 75 6e 63 74 69 6f 6e 20 6f 6e 20 73 65 70 61 function on sepa
4950: 72 61 74 65 0a 20 20 20 20 20 20 20 20 6c 69 6e rate. lin
4960: 65 20 66 72 6f 6d 20 72 65 73 74 20 6f 66 20 64 e from rest of d
4970: 65 66 69 6e 69 74 69 6f 6e 2e 0a 0a 20 20 20 20 efinition...
4980: 2d 20 20 20 43 6c 61 73 73 20 6e 61 6d 65 73 20 - Class names
4990: 61 72 65 20 69 6e 20 60 43 61 6d 65 6c 43 61 73 are in `CamelCas
49a0: 65 60 2c 20 75 70 70 65 72 63 61 73 65 64 20 66 e`, uppercased f
49b0: 69 72 73 74 20 6c 65 74 74 65 72 0a 0a 20 20 20 irst letter..
49c0: 20 2d 20 20 20 4d 65 74 68 6f 64 20 6e 61 6d 65 - Method name
49d0: 73 20 61 72 65 20 69 6e 20 60 61 6c 6c 5f 6c 6f s are in `all_lo
49e0: 77 65 72 5f 63 61 73 65 5f 77 69 74 68 5f 75 6e wer_case_with_un
49f0: 64 65 72 73 63 6f 72 65 73 28 29 60 3b 0a 20 20 derscores()`;.
4a00: 20 20 20 20 20 20 64 69 74 74 6f 20 6d 6f 73 74 ditto most
4a10: 20 6f 74 68 65 72 20 67 6c 6f 62 61 6c 20 73 79 other global sy
4a20: 6d 62 6f 6c 73 2e 0a 0a 20 20 20 20 2d 20 20 20 mbols... -
4a30: 4d 61 63 72 6f 20 6e 61 6d 65 73 20 61 72 65 20 Macro names are
4a40: 69 6e 20 60 41 4c 4c 5f 55 50 50 45 52 43 41 53 in `ALL_UPPERCAS
4a50: 45 5f 57 49 54 48 5f 55 4e 44 45 52 53 43 4f 52 E_WITH_UNDERSCOR
4a60: 45 53 60 0a 0a 20 20 20 20 2d 20 20 20 44 6f 78 ES`.. - Dox
4a70: 79 67 65 6e 20 63 6f 6d 6d 65 6e 74 20 66 6f 72 ygen comment for
4a80: 20 61 6c 6c 20 70 75 62 6c 69 63 20 64 65 63 6c all public decl
4a90: 61 72 61 74 69 6f 6e 73 2c 20 75 6e 6c 65 73 73 arations, unless
4aa0: 20 74 68 65 72 65 20 69 73 20 61 0a 20 20 20 20 there is a.
4ab0: 20 20 20 20 76 65 72 79 20 67 6f 6f 64 20 72 65 very good re
4ac0: 61 73 6f 6e 20 74 6f 20 6b 65 65 70 20 74 68 65 ason to keep the
4ad0: 20 74 68 69 6e 67 20 75 6e 64 6f 63 75 6d 65 6e thing undocumen
4ae0: 74 65 64 2e 0a 0a 2d 20 20 20 50 65 72 6c 20 61 ted...- Perl a
4af0: 6e 64 20 73 68 65 6c 6c 20 73 63 72 69 70 74 20 nd shell script
4b00: 72 75 6c 65 73 20 61 72 65 20 6d 6f 72 65 20 6f rules are more o
4b10: 72 20 6c 65 73 73 20 74 68 65 20 73 61 6d 65 20 r less the same
4b20: 61 73 20 66 6f 72 20 43 2f 43 2b 2b 2c 0a 20 20 as for C/C++,.
4b30: 20 20 74 6f 20 74 68 65 20 65 78 74 65 6e 74 20 to the extent
4b40: 74 68 69 73 20 6d 61 6b 65 73 20 73 65 6e 73 65 this makes sense
4b50: 2e 0a 0a 0a 23 23 23 20 58 4d 4c 2f 48 54 4d 4c ....### XML/HTML
4b60: 20 44 69 61 6c 65 63 74 73 0a 0a 46 69 6c 65 20 Dialects..File
4b70: 74 79 70 65 73 3a 20 60 62 6b 6c 60 2c 20 60 64 types: `bkl`, `d
4b80: 62 78 60 2c 20 60 68 74 61 60 0a 0a 2d 20 20 20 bx`, `hta`..-
4b90: 53 70 61 63 65 73 20 66 6f 72 20 69 6e 64 65 6e Spaces for inden
4ba0: 74 73 2c 20 73 69 7a 65 20 32 2e 20 53 68 61 6c ts, size 2. Shal
4bb0: 6c 6f 77 20 69 6e 64 65 6e 74 73 20 64 75 65 20 low indents due
4bc0: 74 6f 20 74 68 65 20 68 69 67 68 20 6c 65 76 65 to the high leve
4bd0: 6c 20 6f 66 0a 20 20 20 20 6e 65 73 74 69 6e 67 l of. nesting
4be0: 20 6f 63 63 75 72 72 69 6e 67 20 69 6e 20 73 75 occurring in su
4bf0: 63 68 20 66 69 6c 65 73 2c 20 61 6e 64 20 73 70 ch files, and sp
4c00: 61 63 65 73 20 62 65 63 61 75 73 65 20 74 68 65 aces because the
4c10: 79 27 72 65 20 6e 6f 74 20 61 73 0a 20 20 20 20 y're not as.
4c20: 61 6e 6e 6f 79 69 6e 67 20 61 74 20 73 68 61 6c annoying at shal
4c30: 6c 6f 77 20 69 6e 64 65 6e 74 20 6c 65 76 65 6c low indent level
4c40: 73 20 69 6e 20 65 64 69 74 6f 72 73 20 74 68 61 s in editors tha
4c50: 74 20 64 6f 6e 27 74 20 74 72 65 61 74 20 73 70 t don't treat sp
4c60: 61 63 65 0a 20 20 20 20 69 6e 64 65 6e 74 73 20 ace. indents
4c70: 6c 69 6b 65 20 74 61 62 73 2e 0a 0a 2d 20 20 20 like tabs...-
4c80: 55 6e 69 78 20 6c 69 6e 65 20 65 6e 64 69 6e 67 Unix line ending
4c90: 73 2e 20 41 67 61 69 6e 2c 20 74 68 65 73 65 20 s. Again, these
4ca0: 61 72 65 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 are intended to
4cb0: 62 65 20 76 69 65 77 65 64 20 69 6e 20 61 0a 20 be viewed in a.
4cc0: 20 20 20 70 72 6f 67 72 61 6d 6d 65 72 27 73 20 programmer's
4cd0: 74 65 78 74 20 65 64 69 74 6f 72 2c 20 77 68 69 text editor, whi
4ce0: 63 68 20 73 68 6f 75 6c 64 20 77 6f 72 6b 20 77 ch should work w
4cf0: 69 74 68 20 55 6e 69 78 20 6c 69 6e 65 20 65 6e ith Unix line en
4d00: 64 69 6e 67 73 0a 20 20 20 20 6e 6f 20 6d 61 74 dings. no mat
4d10: 74 65 72 20 74 68 65 20 70 6c 61 74 66 6f 72 6d ter the platform
4d20: 2e 0a 0a 0a 23 23 23 20 50 6c 61 69 6e 20 54 65 ....### Plain Te
4d30: 78 74 20 46 69 6c 65 73 0a 0a 46 69 6c 65 20 74 xt Files..File t
4d40: 79 70 65 73 3a 20 60 74 78 74 60 0a 0a 2d 20 20 ypes: `txt`..-
4d50: 20 53 70 61 63 65 73 20 66 6f 72 20 69 6e 64 65 Spaces for inde
4d60: 6e 74 73 2c 20 73 69 7a 65 20 34 2e 20 53 70 61 nts, size 4. Spa
4d70: 63 65 73 20 62 65 63 61 75 73 65 20 73 75 63 68 ces because such
4d80: 20 66 69 6c 65 73 20 61 72 65 20 6f 66 74 65 6e files are often
4d90: 0a 20 20 20 20 76 69 65 77 65 64 20 69 6e 20 4e . viewed in N
4da0: 6f 74 65 70 61 64 20 61 6e 64 20 73 69 6d 69 6c otepad and simil
4db0: 61 72 6c 79 20 63 72 69 70 70 6c 65 64 20 74 65 arly crippled te
4dc0: 78 74 20 65 64 69 74 6f 72 73 20 77 68 69 63 68 xt editors which
4dd0: 20 75 73 65 20 61 0a 20 20 20 20 64 65 66 61 75 use a. defau
4de0: 6c 74 20 69 6e 64 65 6e 74 20 6c 65 76 65 6c 20 lt indent level
4df0: 6f 66 20 38 2e 0a 0a 2d 20 20 20 44 4f 53 20 6c of 8...- DOS l
4e00: 69 6e 65 20 65 6e 64 69 6e 67 73 2c 20 61 67 61 ine endings, aga
4e10: 69 6e 20 66 6f 72 20 74 68 65 20 4e 6f 74 65 70 in for the Notep
4e20: 61 64 20 72 65 61 73 6f 6e 2e 20 41 6e 64 20 6f ad reason. And o
4e30: 6e 20 6d 6f 64 65 72 6e 20 55 6e 69 78 79 0a 20 n modern Unixy.
4e40: 20 20 20 70 6c 61 74 66 6f 72 6d 73 2c 20 74 68 platforms, th
4e50: 65 20 74 6f 6f 6c 73 20 63 6f 70 65 20 77 69 74 e tools cope wit
4e60: 68 20 44 4f 53 20 6c 69 6e 65 20 65 6e 64 69 6e h DOS line endin
4e70: 67 73 20 72 65 61 73 6f 6e 61 62 6c 79 20 77 65 gs reasonably we
4e80: 6c 6c 2e 0a 20 20 20 20 42 65 74 74 65 72 20 74 ll.. Better t
4e90: 68 61 6e 20 74 68 65 20 63 6f 6e 76 65 72 73 65 han the converse
4ea0: 2c 20 61 6e 79 77 61 79 2e 0a 0a 0a 57 68 65 6e , anyway....When
4eb0: 20 69 6e 20 64 6f 75 62 74 2c 20 6d 69 6d 69 63 in doubt, mimic
4ec0: 20 77 68 61 74 20 79 6f 75 20 73 65 65 20 69 6e what you see in
4ed0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 64 the current cod
4ee0: 65 2e 20 57 68 65 6e 20 73 74 69 6c 6c 20 69 6e e. When still in
4ef0: 0a 64 6f 75 62 74 2c 20 61 73 6b 20 6f 6e 20 5b .doubt, ask on [
4f00: 74 68 65 20 66 6f 72 75 6d 5d 5b 66 6f 72 5d 2e the forum][for].
4f10: 0a 0a 0a 23 23 20 54 65 73 74 69 6e 67 20 59 6f ...## Testing Yo
4f20: 75 72 20 50 72 6f 70 6f 73 65 64 20 43 68 61 6e ur Proposed Chan
4f30: 67 65 0a 0a 4d 79 53 51 4c 2b 2b 20 69 6e 63 6c ge..MySQL++ incl
4f40: 75 64 65 73 20 61 20 73 65 6c 66 2d 74 65 73 74 udes a self-test
4f50: 20 6d 65 63 68 61 6e 69 73 6d 20 63 61 6c 6c 65 mechanism calle
4f60: 64 20 60 64 74 65 73 74 60 2e 20 49 74 27 73 20 d `dtest`. It's
4f70: 61 20 42 6f 75 72 6e 65 0a 73 68 65 6c 6c 20 73 a Bourne.shell s
4f80: 63 72 69 70 74 2c 20 72 75 6e 20 6d 75 63 68 20 cript, run much
4f90: 6c 69 6b 65 20 60 65 78 72 75 6e 60 3a 0a 0a 20 like `exrun`:..
4fa0: 20 20 20 24 20 2e 2f 64 74 65 73 74 20 5b 2d 73 $ ./dtest [-s
4fb0: 20 73 65 72 76 65 72 5f 61 64 64 72 5d 20 5b 2d server_addr] [-
4fc0: 75 20 75 73 65 72 5d 20 5b 2d 70 20 70 61 73 73 u user] [-p pass
4fd0: 77 6f 72 64 5d 0a 0a 54 68 69 73 20 61 75 74 6f word]..This auto
4fe0: 6d 61 74 69 63 61 6c 6c 79 20 72 75 6e 73 20 6d matically runs m
4ff0: 6f 73 74 20 6f 66 20 74 68 65 20 65 78 61 6d 70 ost of the examp
5000: 6c 65 73 2c 20 63 61 70 74 75 72 65 73 20 74 68 les, captures th
5010: 65 20 6f 75 74 70 75 74 73 20 74 6f 20 61 0a 66 e outputs to a.f
5020: 69 6c 65 2c 20 61 6e 64 20 74 68 65 6e 20 63 6f ile, and then co
5030: 6d 70 61 72 65 73 20 74 68 61 74 20 74 6f 20 61 mpares that to a
5040: 20 6b 6e 6f 77 6e 2d 67 6f 6f 64 20 72 75 6e 27 known-good run'
5050: 73 20 6f 75 74 70 75 74 73 2c 20 73 74 6f 72 65 s outputs, store
5060: 64 20 69 6e 0a 60 62 6d 61 72 6b 2e 74 78 74 60 d in.`bmark.txt`
5070: 2e 20 53 6f 2c 20 62 65 66 6f 72 65 20 79 6f 75 . So, before you
5080: 20 73 75 62 6d 69 74 20 61 20 70 61 74 63 68 2c submit a patch,
5090: 20 72 75 6e 20 60 64 74 65 73 74 60 20 74 6f 20 run `dtest` to
50a0: 73 65 65 20 69 66 0a 61 6e 79 74 68 69 6e 67 20 see if.anything
50b0: 68 61 73 20 63 68 61 6e 67 65 64 2e 20 49 66 20 has changed. If
50c0: 73 6f 6d 65 74 68 69 6e 67 20 68 61 73 20 61 6e something has an
50d0: 64 20 79 6f 75 20 63 61 6e 27 74 20 61 63 63 6f d you can't acco
50e0: 75 6e 74 20 66 6f 72 20 69 74 2c 20 69 74 0a 72 unt for it, it.r
50f0: 65 70 72 65 73 65 6e 74 73 20 61 20 70 72 6f 62 epresents a prob
5100: 6c 65 6d 20 74 68 61 74 20 79 6f 75 27 6c 6c 20 lem that you'll
5110: 68 61 76 65 20 74 6f 20 66 69 78 20 62 65 66 6f have to fix befo
5120: 72 65 20 73 75 62 6d 69 74 74 69 6e 67 20 74 68 re submitting th
5130: 65 0a 70 61 74 63 68 2e 20 49 66 20 69 74 20 67 e.patch. If it g
5140: 69 76 65 73 20 61 6e 20 65 78 70 65 63 74 65 64 ives an expected
5150: 20 63 68 61 6e 67 65 2c 20 72 65 6d 6f 76 65 20 change, remove
5160: 60 62 6d 61 72 6b 2e 74 78 74 60 2c 20 72 65 2d `bmark.txt`, re-
5170: 72 75 6e 0a 60 64 74 65 73 74 60 2c 20 61 6e 64 run.`dtest`, and
5180: 20 69 6e 63 6c 75 64 65 20 74 68 65 20 60 62 6d include the `bm
5190: 61 72 6b 2e 74 78 74 60 20 64 69 66 66 73 20 69 ark.txt` diffs i
51a0: 6e 20 79 6f 75 72 20 70 61 74 63 68 2e 20 54 68 n your patch. Th
51b0: 69 73 0a 63 6f 6d 6d 75 6e 69 63 61 74 65 73 20 is.communicates
51c0: 74 6f 20 75 73 20 74 68 65 20 66 61 63 74 20 74 to us the fact t
51d0: 68 61 74 20 79 6f 75 20 6b 6e 6f 77 20 74 68 65 hat you know the
51e0: 72 65 20 61 72 65 20 64 69 66 66 65 72 65 6e 63 re are differenc
51f0: 65 73 20 61 6e 64 20 77 61 6e 74 0a 74 68 65 20 es and want.the
5200: 70 61 74 63 68 20 65 76 61 6c 75 61 74 65 64 20 patch evaluated
5210: 61 6e 79 77 61 79 2e 20 4f 74 68 65 72 77 69 73 anyway. Otherwis
5220: 65 2c 20 77 65 20 61 72 65 20 6c 69 6b 65 6c 79 e, we are likely
5230: 20 74 6f 20 76 69 65 77 20 74 68 65 20 63 68 61 to view the cha
5240: 6e 67 65 0a 69 6e 20 74 68 65 20 70 72 6f 67 72 nge.in the progr
5250: 61 6d 20 6f 75 74 70 75 74 73 20 61 73 20 61 20 am outputs as a
5260: 62 75 67 20 6f 72 20 72 65 67 72 65 73 73 69 6f bug or regressio
5270: 6e 2e 0a 0a 60 64 74 65 73 74 60 20 61 6c 73 6f n...`dtest` also
5280: 20 72 75 6e 73 20 61 6c 6c 20 6f 66 20 74 68 65 runs all of the
5290: 20 75 6e 69 74 20 74 65 73 74 73 20 69 6e 20 60 unit tests in `
52a0: 74 65 73 74 2f 2a 60 2e 20 54 68 65 20 70 75 72 test/*`. The pur
52b0: 70 6f 73 65 20 6f 66 0a 60 74 65 73 74 2f 2a 60 pose of.`test/*`
52c0: 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 is different fr
52d0: 6f 6d 20 74 68 61 74 20 6f 66 20 60 65 78 61 6d om that of `exam
52e0: 70 6c 65 73 2f 2a 60 3a 0a 0a 2d 20 20 20 60 74 ples/*`:..- `t
52f0: 65 73 74 2f 2a 60 20 61 72 65 20 75 6e 69 74 20 est/*` are unit
5300: 74 65 73 74 73 3a 20 65 61 63 68 20 74 65 73 74 tests: each test
5310: 73 20 6f 6e 6c 79 20 6f 6e 65 20 4d 79 53 51 4c s only one MySQL
5320: 2b 2b 20 63 6c 61 73 73 2c 0a 20 20 20 20 69 6e ++ class,. in
5330: 64 65 70 65 6e 64 65 6e 74 20 6f 66 20 65 76 65 dependent of eve
5340: 72 79 74 68 69 6e 67 20 65 6c 73 65 2e 20 42 65 rything else. Be
5350: 63 61 75 73 65 20 44 42 20 61 63 63 65 73 73 20 cause DB access
5360: 72 65 71 75 69 72 65 73 20 73 65 76 65 72 61 6c requires several
5370: 0a 20 20 20 20 4d 79 53 51 4c 2b 2b 20 63 6c 61 . MySQL++ cla
5380: 73 73 65 73 20 74 6f 20 63 6f 6f 70 65 72 61 74 sses to cooperat
5390: 65 2c 20 61 20 75 6e 69 74 20 74 65 73 74 20 6e e, a unit test n
53a0: 65 76 65 72 20 61 63 63 65 73 73 65 73 20 61 20 ever accesses a
53b0: 64 61 74 61 62 61 73 65 3b 0a 20 20 20 20 68 65 database;. he
53c0: 6e 63 65 2c 20 6e 6f 20 75 6e 69 74 20 74 65 73 nce, no unit tes
53d0: 74 20 6e 65 65 64 73 20 44 42 20 63 6f 6e 6e 65 t needs DB conne
53e0: 63 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 ction parameters
53f0: 2e 20 20 57 65 20 77 69 6c 6c 20 6e 65 76 65 72 . We will never
5400: 0a 20 20 20 20 67 65 74 20 31 30 30 25 20 63 6f . get 100% co
5410: 64 65 20 63 6f 76 65 72 61 67 65 20 66 72 6f 6d de coverage from
5420: 20 60 74 65 73 74 2f 2a 60 20 61 6c 6f 6e 65 2e `test/*` alone.
5430: 0a 0a 2d 20 20 20 60 65 78 61 6d 70 6c 65 73 2f ..- `examples/
5440: 2a 60 20 63 61 6e 20 62 65 20 74 68 6f 75 67 68 *` can be though
5450: 74 20 6f 66 20 61 73 20 69 6e 74 65 67 72 61 74 t of as integrat
5460: 69 6f 6e 20 74 65 73 74 73 3a 20 74 68 65 79 20 ion tests: they
5470: 74 65 73 74 20 6d 61 6e 79 0a 20 20 20 20 70 69 test many. pi
5480: 65 63 65 73 20 6f 66 20 4d 79 53 51 4c 2b 2b 20 eces of MySQL++
5490: 77 6f 72 6b 69 6e 67 20 74 6f 67 65 74 68 65 72 working together
54a0: 2c 20 61 63 63 65 73 73 69 6e 67 20 61 20 72 65 , accessing a re
54b0: 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20 20 20 al database.
54c0: 73 65 72 76 65 72 2e 20 49 6e 20 61 64 64 69 74 server. In addit
54d0: 69 6f 6e 20 74 6f 20 65 6e 73 75 72 69 6e 67 20 ion to ensuring
54e0: 74 68 61 74 20 61 6c 6c 20 74 68 65 20 70 69 65 that all the pie
54f0: 63 65 73 20 77 6f 72 6b 20 74 6f 67 65 74 68 65 ces work togethe
5500: 72 0a 20 20 20 20 61 6e 64 20 67 69 76 65 20 63 r. and give c
5510: 6f 6e 73 69 73 74 65 6e 74 20 72 65 73 75 6c 74 onsistent result
5520: 73 20 66 72 6f 6d 20 70 6c 61 74 66 6f 72 6d 20 s from platform
5530: 74 6f 20 70 6c 61 74 66 6f 72 6d 20 61 6e 64 20 to platform and
5540: 72 75 6e 20 74 6f 0a 20 20 20 20 72 75 6e 2c 20 run to. run,
5550: 69 74 20 61 6c 73 6f 20 66 69 6c 6c 73 20 69 6e it also fills in
5560: 20 67 61 70 73 20 69 6e 20 74 68 65 20 63 6f 64 gaps in the cod
5570: 65 20 63 6f 76 65 72 61 67 65 20 77 68 65 72 65 e coverage where
5580: 20 6e 6f 20 73 75 69 74 61 62 6c 65 0a 20 20 20 no suitable.
5590: 20 60 74 65 73 74 2f 2a 60 20 6d 6f 64 75 6c 65 `test/*` module
55a0: 20 63 6f 75 6c 64 20 62 65 20 63 72 65 61 74 65 could be create
55b0: 64 2e 0a 0a 2d 20 20 20 60 74 65 73 74 2f 2a 60 d...- `test/*`
55c0: 20 70 72 6f 67 72 61 6d 73 20 61 6c 77 61 79 73 programs always
55d0: 20 72 75 6e 20 73 69 6c 65 6e 74 6c 79 20 6f 6e run silently on
55e0: 20 73 75 63 63 65 73 73 2c 20 77 72 69 74 69 6e success, writin
55f0: 67 20 6f 75 74 70 75 74 0a 20 20 20 20 6f 6e 6c g output. onl
5600: 79 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 65 y to indicate te
5610: 73 74 20 66 61 69 6c 75 72 65 73 2e 20 54 68 69 st failures. Thi
5620: 73 20 69 73 20 62 65 63 61 75 73 65 20 74 68 65 s is because the
5630: 79 27 72 65 20 75 73 75 61 6c 6c 79 20 6f 6e 6c y're usually onl
5640: 79 0a 20 20 20 20 72 75 6e 20 76 69 61 20 60 64 y. run via `d
5650: 74 65 73 74 60 2e 0a 0a 2d 20 20 20 60 65 78 61 test`...- `exa
5660: 6d 70 6c 65 73 2f 2a 60 20 61 72 65 20 61 6c 77 mples/*` are alw
5670: 61 79 73 20 22 6e 6f 69 73 79 2c 22 20 72 65 67 ays "noisy," reg
5680: 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 ardless of wheth
5690: 65 72 20 74 68 65 79 20 73 75 63 63 65 65 64 0a er they succeed.
56a0: 20 20 20 20 6f 72 20 66 61 69 6c 2c 20 62 65 63 or fail, bec
56b0: 61 75 73 65 20 74 68 65 79 27 72 65 20 61 6c 73 ause they're als
56c0: 6f 20 72 75 6e 20 69 6e 74 65 72 61 63 74 69 76 o run interactiv
56d0: 65 6c 79 20 62 79 20 70 65 6f 70 6c 65 20 6c 65 ely by people le
56e0: 61 72 6e 69 6e 67 0a 20 20 20 20 74 6f 20 75 73 arning. to us
56f0: 65 20 4d 79 53 51 4c 2b 2b 2e 0a 0a 50 61 74 63 e MySQL++...Patc
5700: 68 65 73 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 hes should inclu
5710: 64 65 20 74 65 73 74 73 20 69 66 20 74 68 65 79 de tests if they
5720: 20 69 6e 74 72 6f 64 75 63 65 20 6e 65 77 20 66 introduce new f
5730: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 72 20 unctionality or
5740: 66 69 78 0a 61 20 62 75 67 20 74 68 61 74 20 74 fix.a bug that t
5750: 68 65 20 65 78 69 73 74 69 6e 67 20 74 65 73 74 he existing test
5760: 20 63 6f 76 65 72 61 67 65 20 66 61 69 6c 65 64 coverage failed
5770: 20 74 6f 20 63 61 74 63 68 2e 20 20 49 66 20 74 to catch. If t
5780: 68 65 20 74 65 73 74 20 69 73 0a 6e 6f 69 73 79 he test is.noisy
5790: 2c 20 6e 65 65 64 73 20 44 42 20 61 63 63 65 73 , needs DB acces
57a0: 73 2c 20 6f 72 20 74 65 73 74 73 20 6d 75 6c 74 s, or tests mult
57b0: 69 70 6c 65 20 70 61 72 74 73 20 6f 66 20 74 68 iple parts of th
57c0: 65 20 6c 69 62 72 61 72 79 20 61 74 20 6f 6e 63 e library at onc
57d0: 65 2c 0a 69 74 20 67 6f 65 73 20 69 6e 20 60 65 e,.it goes in `e
57e0: 78 61 6d 70 6c 65 73 2f 2a 60 2e 20 49 66 20 79 xamples/*`. If y
57f0: 6f 75 72 20 63 68 61 6e 67 65 20 61 66 66 65 63 our change affec
5800: 74 73 20 6f 6e 6c 79 20 6f 6e 65 20 63 6c 61 73 ts only one clas
5810: 73 20 69 6e 0a 4d 79 53 51 4c 2b 2b 20 61 6e 64 s in.MySQL++ and
5820: 20 74 65 73 74 69 6e 67 20 69 74 20 63 61 6e 20 testing it can
5830: 62 65 20 64 6f 6e 65 20 77 69 74 68 6f 75 74 20 be done without
5840: 69 6e 73 74 61 6e 74 69 61 74 69 6e 67 20 6f 74 instantiating ot
5850: 68 65 72 20 4d 79 53 51 4c 2b 2b 0a 63 6c 61 73 her MySQL++.clas
5860: 73 65 73 20 e2 80 94 20 6f 74 68 65 72 20 74 68 ses — other th
5870: 61 6e 20 62 79 20 63 6f 6d 70 6f 73 69 74 69 6f an by compositio
5880: 6e 2c 20 6f 66 20 63 6f 75 72 73 65 20 e2 80 94 n, of course —
5890: 20 69 74 20 73 68 6f 75 6c 64 20 67 6f 20 69 6e it should go in
58a0: 0a 60 74 65 73 74 2f 2a 60 2e 0a 0a 49 6e 20 67 .`test/*`...In g
58b0: 65 6e 65 72 61 6c 2c 20 70 72 65 66 65 72 20 6d eneral, prefer m
58c0: 6f 64 69 66 79 69 6e 67 20 61 6e 20 65 78 69 73 odifying an exis
58d0: 74 69 6e 67 20 60 65 78 61 6d 70 6c 65 73 2f 2a ting `examples/*
58e0: 60 20 6f 72 20 60 74 65 73 74 2f 2a 60 0a 70 72 ` or `test/*`.pr
58f0: 6f 67 72 61 6d 2e 20 20 41 64 64 20 61 20 6e 65 ogram. Add a ne
5900: 77 20 6f 6e 65 20 6f 6e 6c 79 20 69 66 20 79 6f w one only if yo
5910: 75 27 72 65 20 69 6e 74 72 6f 64 75 63 69 6e 67 u're introducing
5920: 20 62 72 61 6e 64 20 6e 65 77 0a 66 75 6e 63 74 brand new.funct
5930: 69 6f 6e 61 6c 69 74 79 20 6f 72 20 77 68 65 6e ionality or when
5940: 20 61 20 67 69 76 65 6e 20 66 65 61 74 75 72 65 a given feature
5950: 20 63 75 72 72 65 6e 74 6c 79 20 68 61 73 20 6e currently has n
5960: 6f 20 74 65 73 74 20 61 74 20 61 6c 6c 2e 0a 0a o test at all...
5970: 42 65 77 61 72 65 20 74 68 61 74 20 74 68 65 20 Beware that the
5980: 70 72 69 6d 61 72 79 20 72 6f 6c 65 20 6f 66 20 primary role of
5990: 74 68 65 20 65 78 61 6d 70 6c 65 73 20 69 73 20 the examples is
59a0: 74 6f 20 69 6c 6c 75 73 74 72 61 74 65 20 70 6f to illustrate po
59b0: 69 6e 74 73 20 69 6e 20 74 68 65 0a 75 73 65 72 ints in the.user
59c0: 20 6d 61 6e 75 61 6c 2e 20 49 66 20 61 6e 20 65 manual. If an e
59d0: 78 69 73 74 69 6e 67 20 65 78 61 6d 70 6c 65 20 xisting example
59e0: 64 6f 65 73 20 73 6f 6d 65 74 68 69 6e 67 20 73 does something s
59f0: 69 6d 69 6c 61 72 20 74 6f 20 77 68 61 74 20 61 imilar to what a
5a00: 0a 70 72 6f 70 65 72 20 74 65 73 74 20 77 6f 75 .proper test wou
5a10: 6c 64 20 6e 65 65 64 20 74 6f 20 64 6f 20 61 6e ld need to do an
5a20: 64 20 74 68 65 20 74 65 73 74 20 64 6f 65 73 6e d the test doesn
5a30: 27 74 20 63 68 61 6e 67 65 20 74 68 65 20 6e 61 't change the na
5a40: 74 75 72 65 20 6f 66 0a 74 68 65 20 65 78 61 6d ture of.the exam
5a50: 70 6c 65 2c 20 64 6f 6e 27 74 20 77 6f 72 72 79 ple, don't worry
5a60: 20 61 62 6f 75 74 20 63 68 61 6e 67 69 6e 67 20 about changing
5a70: 74 68 65 20 65 78 61 6d 70 6c 65 20 63 6f 64 65 the example code
5a80: 2e 20 49 66 20 79 6f 75 72 20 74 65 73 74 0a 77 . If your test.w
5a90: 6f 75 6c 64 20 63 68 61 6e 67 65 20 74 68 65 20 ould change the
5aa0: 6e 61 74 75 72 65 20 6f 66 20 74 68 65 20 65 78 nature of the ex
5ab0: 61 6d 70 6c 65 2c 20 79 6f 75 20 65 69 74 68 65 ample, you eithe
5ac0: 72 20 6e 65 65 64 20 74 6f 20 64 6f 20 74 68 65 r need to do the
5ad0: 20 74 65 73 74 0a 61 6e 6f 74 68 65 72 20 77 61 test.another wa
5ae0: 79 20 6f 72 20 61 6c 73 6f 20 73 75 62 6d 69 74 y or also submit
5af0: 20 61 20 63 68 61 6e 67 65 20 74 6f 20 60 64 6f a change to `do
5b00: 63 2f 75 73 65 72 6d 61 6e 2f 2a 2e 64 62 78 60 c/userman/*.dbx`
5b10: 20 74 68 61 74 0a 69 6e 63 6f 72 70 6f 72 61 74 that.incorporat
5b20: 65 73 20 74 68 65 20 64 69 66 66 65 72 65 6e 63 es the differenc
5b30: 65 2e 0a 0a 0a 23 23 20 41 64 64 69 6e 67 20 53 e....## Adding S
5b40: 75 70 70 6f 72 74 20 66 6f 72 20 61 20 44 69 66 upport for a Dif
5b50: 66 65 72 65 6e 74 20 43 6f 6d 70 69 6c 65 72 0a ferent Compiler.
5b60: 0a 41 73 20 64 65 73 63 72 69 62 65 64 20 61 62 .As described ab
5b70: 6f 76 65 2c 20 4d 79 53 51 4c 2b 2b 20 75 73 65 ove, MySQL++ use
5b80: 73 20 74 68 65 20 42 61 6b 65 66 69 6c 65 20 73 s the Bakefile s
5b90: 79 73 74 65 6d 20 66 6f 72 20 63 72 65 61 74 69 ystem for creati
5ba0: 6e 67 0a 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 ng.project files
5bb0: 20 61 6e 64 20 6d 61 6b 65 66 69 6c 65 73 2e 20 and makefiles.
5bc0: 54 68 69 73 20 61 6c 6c 6f 77 73 20 61 20 73 69 This allows a si
5bd0: 6e 67 6c 65 20 63 68 61 6e 67 65 20 74 6f 20 70 ngle change to p
5be0: 72 6f 70 61 67 61 74 65 0a 61 63 72 6f 73 73 20 ropagate.across
5bf0: 61 6c 6c 20 62 75 69 6c 64 20 73 79 73 74 65 6d all build system
5c00: 73 20 77 65 20 73 75 70 70 6f 72 74 2e 20 49 6e s we support. In
5c10: 20 74 68 65 20 70 61 73 74 2c 20 77 65 20 75 73 the past, we us
5c20: 65 64 20 6d 6f 72 65 20 61 64 2d 68 6f 63 0a 73 ed more ad-hoc.s
5c30: 79 73 74 65 6d 73 2c 20 61 6e 64 20 77 65 27 64 ystems, and we'd
5c40: 20 66 72 65 71 75 65 6e 74 6c 79 20 66 6f 72 67 frequently forg
5c50: 65 74 20 74 6f 20 75 70 64 61 74 65 20 74 68 65 et to update the
5c60: 20 62 75 69 6c 64 20 73 79 73 74 65 6d 20 66 6f build system fo
5c70: 72 20 61 0a 70 61 72 74 69 63 75 6c 61 72 20 70 r a.particular p
5c80: 6c 61 74 66 6f 72 6d 2c 20 73 6f 20 74 68 61 74 latform, so that
5c90: 20 61 74 20 61 6e 79 20 67 69 76 65 6e 20 74 69 at any given ti
5ca0: 6d 65 2c 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 me, at least one
5cb0: 20 74 61 72 67 65 74 20 77 61 73 0a 6c 69 6b 65 target was.like
5cc0: 6c 79 20 74 6f 20 62 65 20 62 72 6f 6b 65 6e 2e ly to be broken.
5cd0: 20 57 65 20 77 69 6c 6c 20 74 68 65 72 65 66 6f We will therefo
5ce0: 72 65 20 72 65 73 69 73 74 20 61 6e 79 20 63 68 re resist any ch
5cf0: 61 6e 67 65 20 74 68 61 74 20 72 65 71 75 69 72 ange that requir
5d00: 65 73 0a 74 68 61 74 20 77 65 20 67 6f 20 62 61 es.that we go ba
5d10: 63 6b 20 74 6f 20 64 69 73 74 72 69 62 75 74 69 ck to distributi
5d20: 6e 67 20 6d 61 6e 75 61 6c 6c 79 2d 6d 61 69 6e ng manually-main
5d30: 74 61 69 6e 65 64 20 62 75 69 6c 64 20 73 79 73 tained build sys
5d40: 74 65 6d 20 66 69 6c 65 73 0a 6e 6f 74 20 67 65 tem files.not ge
5d50: 6e 65 72 61 74 65 64 20 66 72 6f 6d 20 61 20 73 nerated from a s
5d60: 69 6e 67 6c 65 20 73 6f 75 72 63 65 2e 0a 0a 49 ingle source...I
5d70: 66 20 4d 79 53 51 4c 2b 2b 20 64 6f 65 73 6e 27 f MySQL++ doesn'
5d80: 74 20 63 75 72 72 65 6e 74 6c 79 20 73 68 69 70 t currently ship
5d90: 20 77 69 74 68 20 70 72 6f 6a 65 63 74 20 66 69 with project fi
5da0: 6c 65 73 20 6f 72 20 6d 61 6b 65 66 69 6c 65 73 les or makefiles
5db0: 20 74 75 6e 65 64 0a 66 6f 72 20 79 6f 75 72 20 tuned.for your
5dc0: 63 6f 6d 70 69 6c 65 72 20 6f 66 20 63 68 6f 69 compiler of choi
5dd0: 63 65 2c 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 ce, you need to
5de0: 77 6f 72 6b 20 74 68 72 6f 75 67 68 20 74 68 65 work through the
5df0: 20 42 61 6b 65 66 69 6c 65 0a 6d 65 63 68 61 6e Bakefile.mechan
5e00: 69 73 6d 20 74 6f 20 61 64 64 20 73 75 70 70 6f ism to add suppo
5e10: 72 74 2e 20 57 65 27 72 65 20 6e 6f 74 20 77 69 rt. We're not wi
5e20: 6c 6c 69 6e 67 20 74 6f 20 64 6f 20 61 64 2d 68 lling to do ad-h
5e30: 6f 63 20 70 6c 61 74 66 6f 72 6d 0a 73 75 70 70 oc platform.supp
5e40: 6f 72 74 20 61 6e 79 20 6d 6f 72 65 2c 20 73 6f ort any more, so
5e50: 20 70 6c 65 61 73 65 20 64 6f 6e 27 74 20 61 73 please don't as
5e60: 6b 20 69 66 20 79 6f 75 20 63 61 6e 20 73 65 6e k if you can sen
5e70: 64 20 75 73 20 70 72 6f 6a 65 63 74 20 66 69 6c d us project fil
5e80: 65 73 0a 69 6e 73 74 65 61 64 3b 20 77 65 20 64 es.instead; we d
5e90: 6f 6e 27 74 20 77 61 6e 74 20 74 68 65 6d 2e 0a on't want them..
5ea0: 0a 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 .If you want to
5eb0: 70 6f 72 74 20 4d 79 53 51 4c 2b 2b 20 74 6f 20 port MySQL++ to
5ec0: 61 6e 6f 74 68 65 72 20 70 6c 61 74 66 6f 72 6d another platform
5ed0: 2c 20 77 65 20 6e 65 65 64 20 74 6f 20 62 65 20 , we need to be
5ee0: 63 6f 6e 66 69 64 65 6e 74 0a 74 68 61 74 20 74 confident.that t
5ef0: 68 65 20 65 6e 74 69 72 65 20 6c 69 62 72 61 72 he entire librar
5f00: 79 20 77 6f 72 6b 73 20 6f 6e 20 79 6f 75 72 20 y works on your
5f10: 70 6c 61 74 66 6f 72 6d 20 62 65 66 6f 72 65 20 platform before
5f20: 77 65 27 6c 6c 20 61 63 63 65 70 74 0a 70 61 74 we'll accept.pat
5f30: 63 68 65 73 2e 20 49 6e 20 74 68 65 20 70 61 73 ches. In the pas
5f40: 74 2c 20 77 65 27 76 65 20 68 61 64 20 62 72 6f t, we've had bro
5f50: 6b 65 6e 20 70 6f 72 74 73 20 74 68 61 74 20 77 ken ports that w
5f60: 65 72 65 20 65 69 74 68 65 72 20 6d 69 73 73 69 ere either missi
5f70: 6e 67 0a 69 6d 70 6f 72 74 61 6e 74 20 6c 69 62 ng.important lib
5f80: 72 61 72 79 20 66 65 61 74 75 72 65 73 2c 20 6f rary features, o
5f90: 72 20 77 68 69 63 68 20 63 72 61 73 68 65 64 20 r which crashed
5fa0: 77 68 65 6e 20 62 75 69 6c 74 20 69 6e 20 63 65 when built in ce
5fb0: 72 74 61 69 6e 20 77 61 79 73 2e 0a 46 65 77 20 rtain ways..Few
5fc0: 70 65 6f 70 6c 65 20 77 69 6c 6c 20 6b 6e 6f 77 people will know
5fd0: 69 6e 67 6c 79 20 75 73 65 20 61 20 63 72 69 70 ingly use a crip
5fe0: 70 6c 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 pled version of
5ff0: 4d 79 53 51 4c 2b 2b 2c 20 73 69 6e 63 65 20 74 MySQL++, since t
6000: 68 65 72 65 0a 61 72 65 20 75 73 75 61 6c 6c 79 here.are usually
6010: 20 61 63 63 65 70 74 61 62 6c 65 20 61 6c 74 65 acceptable alte
6020: 72 6e 61 74 69 76 65 73 2e 20 20 54 68 65 72 65 rnatives. There
6030: 66 6f 72 65 2c 20 73 75 63 68 20 70 6f 72 74 73 fore, such ports
6040: 20 62 65 63 6f 6d 65 0a 6d 61 69 6e 74 65 6e 61 become.maintena
6050: 6e 63 65 20 62 61 67 67 61 67 65 20 77 69 74 68 nce baggage with
6060: 20 6c 69 74 74 6c 65 20 63 6f 6d 70 65 6e 73 61 little compensa
6070: 74 69 6e 67 20 76 61 6c 75 65 2e 0a 0a 0a 3c 61 ting value....<a
6080: 20 6e 61 6d 65 3d 22 70 72 69 76 61 74 65 22 3e name="private">
6090: 3c 2f 61 3e 0a 23 23 20 4d 61 69 6e 74 61 69 6e </a>.## Maintain
60a0: 69 6e 67 20 61 20 50 72 69 76 61 74 65 20 52 65 ing a Private Re
60b0: 70 6f 73 69 74 6f 72 79 0a 0a 41 6c 74 68 6f 75 pository..Althou
60c0: 67 68 20 46 6f 73 73 69 6c 20 73 79 6e 63 73 20 gh Fossil syncs
60d0: 63 68 61 6e 67 65 73 20 62 61 63 6b 20 74 6f 20 changes back to
60e0: 74 68 65 20 5b 4d 79 53 51 4c 2b 2b 20 46 6f 73 the [MySQL++ Fos
60f0: 73 69 6c 0a 72 65 70 6f 73 69 74 6f 72 79 5d 5b sil.repository][
6100: 68 6f 6d 65 5d 20 62 79 20 64 65 66 61 75 6c 74 home] by default
6110: 2c 20 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65 , it is possible
6120: 20 74 6f 20 6d 61 69 6e 74 61 69 6e 20 61 20 70 to maintain a p
6130: 72 69 76 61 74 65 20 63 6f 70 79 0a 74 68 61 74 rivate copy.that
6140: 20 73 69 6d 70 6c 79 20 70 75 6c 6c 73 20 63 68 simply pulls ch
6150: 61 6e 67 65 73 20 69 6e 20 6f 63 63 61 73 69 6f anges in occasio
6160: 6e 61 6c 6c 79 2e 0a 0a 54 68 65 20 66 69 72 73 nally...The firs
6170: 74 20 73 74 65 70 20 69 73 20 74 6f 20 74 75 72 t step is to tur
6180: 6e 20 6f 66 66 20 74 68 65 20 61 75 74 6f 2d 73 n off the auto-s
6190: 79 6e 63 20 66 65 61 74 75 72 65 3a 0a 0a 20 20 ync feature:..
61a0: 20 20 20 24 20 66 6f 73 73 69 6c 20 73 65 74 20 $ fossil set
61b0: 61 75 74 6f 73 79 6e 63 20 6f 66 66 0a 0a 2e 2e autosync off....
61c0: 2e 6f 72 20 73 65 74 20 69 74 20 73 6f 20 69 74 .or set it so it
61d0: 20 6f 6e 6c 79 20 70 75 6c 6c 73 20 66 72 6f 6d only pulls from
61e0: 20 74 68 65 20 63 65 6e 74 72 61 6c 20 72 65 70 the central rep
61f0: 6f 20 77 69 74 68 6f 75 74 20 74 72 79 69 6e 67 o without trying
6200: 20 74 6f 20 70 75 73 68 0a 6c 6f 63 61 6c 20 63 to push.local c
6210: 68 61 6e 67 65 73 2c 20 6d 61 6b 69 6e 67 20 69 hanges, making i
6220: 74 20 63 6f 6d 70 6c 61 69 6e 20 74 68 61 74 20 t complain that
6230: 79 6f 75 20 64 6f 6e e2 80 99 74 20 68 61 76 65 you don’t have
6240: 20 63 6f 6d 6d 69 74 20 63 61 70 61 62 69 6c 69 commit capabili
6250: 74 79 3a 0a 0a 20 20 20 20 20 24 20 66 6f 73 73 ty:.. $ foss
6260: 69 6c 20 73 65 74 20 61 75 74 6f 73 79 6e 63 20 il set autosync
6270: 70 75 6c 6c 6f 6e 6c 79 0a 0a 54 68 65 6e 20 49 pullonly..Then I
6280: 20 72 65 63 6f 6d 6d 65 6e 64 20 74 68 61 74 20 recommend that
6290: 79 6f 75 20 6d 61 6b 65 20 61 6e 79 20 6c 6f 63 you make any loc
62a0: 61 6c 20 63 68 61 6e 67 65 73 20 6f 6e 20 61 20 al changes on a
62b0: 62 72 61 6e 63 68 3a 0a 0a 20 20 20 20 2e 2e 2e branch:.. ...
62c0: 68 61 63 6b 2c 20 68 61 63 6b 2c 20 68 61 63 6b hack, hack, hack
62d0: 2e 2e 2e 0a 20 20 20 20 24 20 66 6f 73 73 69 6c .... $ fossil
62e0: 20 63 69 20 2d 2d 62 72 61 6e 63 68 20 6d 79 2d ci --branch my-
62f0: 6c 6f 63 61 6c 2d 62 72 61 6e 63 68 0a 0a 41 66 local-branch..Af
6300: 74 65 72 20 79 6f 75 20 67 69 76 65 20 74 68 65 ter you give the
6310: 20 60 2d 2d 62 72 61 6e 63 68 60 20 6f 70 74 69 `--branch` opti
6320: 6f 6e 20 6f 6e 20 61 20 63 68 65 63 6b 69 6e 2c on on a checkin,
6330: 20 46 6f 73 73 69 6c 20 61 75 74 6f 6d 61 74 69 Fossil automati
6340: 63 61 6c 6c 79 0a 73 77 69 74 63 68 65 73 20 79 cally.switches y
6350: 6f 75 72 20 6c 6f 63 61 6c 20 63 68 65 63 6b 6f our local checko
6360: 75 74 20 74 6f 20 74 68 61 74 20 62 72 61 6e 63 ut to that branc
6370: 68 2c 20 73 6f 20 74 68 61 74 20 61 6c 6c 20 66 h, so that all f
6380: 75 72 74 68 65 72 0a 63 68 65 63 6b 69 6e 73 20 urther.checkins
6390: 63 61 6e 20 62 65 20 6d 61 64 65 20 77 69 74 68 can be made with
63a0: 6f 75 74 20 74 68 65 20 60 2d 2d 62 72 61 6e 63 out the `--branc
63b0: 68 60 20 6f 70 74 69 6f 6e 2e 20 20 54 6f 20 67 h` option. To g
63c0: 65 74 20 62 61 63 6b 20 74 6f 20 74 68 65 0a 74 et back to the.t
63d0: 72 75 6e 6b 2c 20 79 6f 75 27 64 20 73 61 79 20 runk, you'd say
63e0: 60 66 6f 73 73 69 6c 20 75 70 20 74 72 75 6e 6b `fossil up trunk
63f0: 60 2c 20 62 75 74 20 75 6e 64 65 72 20 74 68 69 `, but under thi
6400: 73 20 77 6f 72 6b 66 6c 6f 77 2c 20 74 68 65 20 s workflow, the
6410: 6e 65 65 64 0a 66 6f 72 20 74 68 61 74 20 77 69 need.for that wi
6420: 6c 6c 20 62 65 20 72 61 72 65 2e 0a 0a 57 68 65 ll be rare...Whe
6430: 6e 20 73 6f 6d 65 74 68 69 6e 67 20 68 61 70 70 n something happ
6440: 65 6e 73 20 6f 6e 20 74 68 65 20 6f 66 66 69 63 ens on the offic
6450: 69 61 6c 20 74 72 75 6e 6b 20 6f 6e 20 60 74 61 ial trunk on `ta
6460: 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 60 20 74 ngentsoft.com` t
6470: 68 61 74 0a 79 6f 75 20 77 61 6e 74 20 70 75 6c hat.you want pul
6480: 6c 65 64 20 69 6e 74 6f 20 79 6f 75 72 20 70 72 led into your pr
6490: 69 76 61 74 65 20 72 65 70 6f 73 69 74 6f 72 79 ivate repository
64a0: 2c 20 73 61 79 3a 0a 0a 20 20 20 20 24 20 66 6f , say:.. $ fo
64b0: 73 73 69 6c 20 70 75 6c 6c 0a 20 20 20 20 24 20 ssil pull. $
64c0: 66 6f 73 73 69 6c 20 6d 65 72 67 65 20 74 72 75 fossil merge tru
64d0: 6e 6b 0a 0a 54 68 65 20 66 69 72 73 74 20 63 6f nk..The first co
64e0: 6d 6d 61 6e 64 20 70 75 6c 6c 73 20 61 6c 6c 20 mmand pulls all
64f0: 72 65 6d 6f 74 65 20 63 68 61 6e 67 65 73 20 69 remote changes i
6500: 6e 74 6f 20 79 6f 75 72 20 6c 6f 63 61 6c 20 63 nto your local c
6510: 6c 6f 6e 65 2c 20 62 75 74 0a 73 69 6e 63 65 20 lone, but.since
6520: 74 68 6f 73 65 20 63 68 61 6e 67 65 73 20 64 6f those changes do
6530: 6e 27 74 20 61 66 66 65 63 74 20 79 6f 75 72 20 n't affect your
6540: 70 72 69 76 61 74 65 20 62 72 61 6e 63 68 2c 20 private branch,
6550: 79 6f 75 20 77 6f 6e 27 74 20 73 65 65 20 61 6e you won't see an
6560: 79 0a 69 6d 6d 65 64 69 61 74 65 20 63 68 61 6e y.immediate chan
6570: 67 65 2e 20 54 68 65 20 73 65 63 6f 6e 64 20 61 ge. The second a
6580: 74 74 65 6d 70 74 73 20 74 6f 20 6d 65 72 67 65 ttempts to merge
6590: 20 74 68 65 20 74 72 75 6e 6b 20 62 72 61 6e 63 the trunk branc
65a0: 68 27 73 0a 63 68 61 6e 67 65 73 20 73 69 6e 63 h's.changes sinc
65b0: 65 20 74 68 65 20 6c 61 73 74 20 62 72 61 6e 63 e the last branc
65c0: 68 20 6f 72 20 6d 65 72 67 65 20 70 6f 69 6e 74 h or merge point
65d0: 20 69 6e 74 6f 20 79 6f 75 72 20 70 72 69 76 61 into your priva
65e0: 74 65 20 62 72 61 6e 63 68 2e 0a 0a 57 68 65 74 te branch...Whet
65f0: 68 65 72 20 74 68 65 20 6d 65 72 67 65 20 69 73 her the merge is
6600: 20 73 75 63 63 65 73 73 66 75 6c 20 6f 72 20 6e successful or n
6610: 6f 74 2c 20 46 6f 73 73 69 6c 20 64 6f 65 73 20 ot, Fossil does
6620: 6e 6f 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a not immediately.
6630: 6d 6f 64 69 66 79 20 79 6f 75 72 20 63 6c 6f 6e modify your clon
6640: 65 2c 20 6f 6e 6c 79 20 74 68 65 20 77 6f 72 6b e, only the work
6650: 69 6e 67 20 63 68 65 63 6b 6f 75 74 20 64 69 72 ing checkout dir
6660: 65 63 74 6f 72 79 2e 20 59 6f 75 20 6d 75 73 74 ectory. You must
6670: 20 74 68 65 6e 0a 73 61 79 20 60 66 6f 73 73 69 then.say `fossi
6680: 6c 20 63 69 60 20 6f 6e 63 65 20 79 6f 75 27 72 l ci` once you'r
6690: 65 20 68 61 70 70 79 20 77 69 74 68 20 74 68 65 e happy with the
66a0: 20 6d 65 72 67 65 2e 20 55 6e 74 69 6c 20 74 68 merge. Until th
66b0: 65 6e 2c 20 61 6c 6c 20 74 68 65 0a 75 73 75 61 en, all the.usua
66c0: 6c 20 46 6f 73 73 69 6c 20 63 6f 6d 6d 61 6e 64 l Fossil command
66d0: 73 20 6c 69 6b 65 20 60 66 6f 73 73 69 6c 20 64 s like `fossil d
66e0: 69 66 66 60 20 61 6e 64 20 60 66 6f 73 73 69 6c iff` and `fossil
66f0: 20 73 74 61 74 75 73 60 20 77 69 6c 6c 20 68 65 status` will he
6700: 6c 70 0a 79 6f 75 20 63 6f 6d 65 20 74 6f 20 74 lp.you come to t
6710: 68 61 74 20 64 65 63 69 73 69 6f 6e 2e 0a 0a 49 hat decision...I
6720: 66 20 79 6f 75 20 65 76 65 72 20 64 65 63 69 64 f you ever decid
6730: 65 20 74 6f 20 63 6f 6e 74 72 69 62 75 74 65 20 e to contribute
6740: 79 6f 75 72 20 70 72 69 76 61 74 65 20 62 72 61 your private bra
6750: 6e 63 68 20 74 6f 20 74 68 65 20 4d 79 53 51 4c nch to the MySQL
6760: 2b 2b 0a 70 72 6f 6a 65 63 74 2c 20 74 68 65 72 ++.project, ther
6770: 65 20 61 72 65 20 61 20 63 6f 75 70 6c 65 20 6f e are a couple o
6780: 66 20 65 61 73 79 20 77 61 79 73 20 74 6f 20 61 f easy ways to a
6790: 63 68 69 65 76 65 20 74 68 61 74 2e 20 41 73 6b chieve that. Ask
67a0: 20 61 62 6f 75 74 20 69 74 0a 6f 6e 20 5b 74 68 about it.on [th
67b0: 65 20 66 6f 72 75 6d 5d 5b 66 6f 72 5d 20 69 66 e forum][for] if
67c0: 20 79 6f 75 20 66 69 6e 64 20 79 6f 75 72 73 65 you find yourse
67d0: 6c 66 20 69 6e 20 74 68 69 73 20 73 69 74 75 61 lf in this situa
67e0: 74 69 6f 6e 2e 0a 0a 5b 68 6f 6d 65 5d 3a 20 68 tion...[home]: h
67f0: 74 74 70 73 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f ttps://tangentso
6800: 66 74 2e 63 6f 6d 2f 6d 79 73 71 6c 70 70 2f 0a ft.com/mysqlpp/.