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 43 6f 64 65 20 52 ful....## Code R
0090: 65 70 6f 73 69 74 6f 72 79 20 41 63 63 65 73 73 epository Access
00a0: 0a 0a 4d 79 53 51 4c 2b 2b 20 75 73 65 73 20 74 ..MySQL++ uses t
00b0: 68 65 20 5b 46 6f 73 73 69 6c 5d 5b 66 73 6c 5d he [Fossil][fsl]
00c0: 20 5b 64 69 73 74 72 69 62 75 74 65 64 20 76 65 [distributed ve
00d0: 72 73 69 6f 6e 20 63 6f 6e 74 72 6f 6c 0a 73 79 rsion control.sy
00e0: 73 74 65 6d 5d 5b 64 76 63 73 5d 2e 20 53 65 65 stem][dvcs]. See
00f0: 20 69 74 73 20 5b 71 75 69 63 6b 20 73 74 61 72 its [quick star
0100: 74 20 67 75 69 64 65 5d 5b 66 73 6c 71 5d 20 69 t guide][fslq] i
0110: 66 20 79 6f 75 20 61 72 65 20 75 6e 66 61 6d 69 f you are unfami
0120: 6c 61 72 0a 77 69 74 68 20 46 6f 73 73 69 6c 2e lar.with Fossil.
0130: 0a 0a 59 6f 75 20 6d 75 73 74 20 62 65 20 72 75 ..You must be ru
0140: 6e 6e 69 6e 67 20 46 6f 73 73 69 6c 20 76 65 72 nning Fossil ver
0150: 73 69 6f 6e 20 32 2e 31 20 6f 72 20 68 69 67 68 sion 2.1 or high
0160: 65 72 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 er to access the
0170: 20 4d 79 53 51 4c 2b 2b 0a 72 65 70 6f 73 69 74 MySQL++.reposit
0180: 6f 72 79 2e 20 49 66 20 79 6f 75 72 20 6f 70 65 ory. If your ope
0190: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e rating system in
01a0: 63 6c 75 64 65 73 20 61 6e 20 6f 6c 64 65 72 20 cludes an older
01b0: 46 6f 73 73 69 6c 20 70 61 63 6b 61 67 65 2c 0a Fossil package,.
01c0: 79 6f 75 20 77 69 6c 6c 20 65 69 74 68 65 72 20 you will either
01d0: 68 61 76 65 20 74 6f 20 69 6e 73 74 61 6c 6c 20 have to install
01e0: 5b 61 6e 20 6f 66 66 69 63 69 61 6c 20 62 69 6e [an official bin
01f0: 61 72 79 5d 5b 66 73 6c 62 5d 20 6f 72 20 5b 62 ary][fslb] or [b
0200: 75 69 6c 64 0a 69 74 20 66 72 6f 6d 20 73 6f 75 uild.it from sou
0210: 72 63 65 5d 5b 66 73 6c 73 5d 2e 0a 0a 54 6f 20 rce][fsls]...To
0220: 63 6c 6f 6e 65 20 74 68 65 20 4d 79 53 51 4c 2b clone the MySQL+
0230: 2b 20 72 65 70 6f 73 69 74 6f 72 79 20 61 6e 6f + repository ano
0240: 6e 79 6d 6f 75 73 6c 79 2c 20 73 61 79 3a 0a 0a nymously, say:..
0250: 20 20 20 20 24 20 66 6f 73 73 69 6c 20 63 6c 6f $ fossil clo
0260: 6e 65 20 68 74 74 70 73 3a 2f 2f 74 61 6e 67 65 ne https://tange
0270: 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d 79 73 71 6c ntsoft.com/mysql
0280: 70 70 20 6d 79 73 71 6c 70 70 2e 66 6f 73 73 69 pp mysqlpp.fossi
0290: 6c 0a 0a 49 66 20 79 6f 75 20 68 61 76 65 20 61 l..If you have a
02a0: 20 64 65 76 65 6c 6f 70 65 72 20 61 63 63 6f 75 developer accou
02b0: 6e 74 20 6f 6e 20 74 68 65 20 4d 79 53 51 4c 2b nt on the MySQL+
02c0: 2b 20 46 6f 73 73 69 6c 20 69 6e 73 74 61 6e 63 + Fossil instanc
02d0: 65 2c 20 6a 75 73 74 20 61 64 64 0a 79 6f 75 72 e, just add.your
02e0: 20 75 73 65 72 6e 61 6d 65 20 74 6f 20 74 68 65 username to the
02f0: 20 55 52 4c 20 6c 69 6b 65 20 73 6f 3a 0a 0a 20 URL like so:..
0300: 20 20 20 24 20 66 6f 73 73 69 6c 20 63 6c 6f 6e $ fossil clon
0310: 65 20 68 74 74 70 73 3a 2f 2f 75 73 65 72 6e 61 e https://userna
0320: 6d 65 40 74 61 6e 65 6e 74 73 6f 66 74 2e 63 6f me@tanentsoft.co
0330: 6d 2f 6d 79 73 71 6c 70 70 20 6d 79 73 71 6c 70 m/mysqlpp mysqlp
0340: 70 2e 66 6f 73 73 69 6c 0a 0a 54 68 61 74 20 77 p.fossil..That w
0350: 69 6c 6c 20 67 65 74 20 79 6f 75 20 61 20 66 69 ill get you a fi
0360: 6c 65 20 63 61 6c 6c 65 64 20 60 6d 79 73 71 6c le called `mysql
0370: 70 70 2e 66 6f 73 73 69 6c 60 20 63 6f 6e 74 61 pp.fossil` conta
0380: 69 6e 69 6e 67 20 74 68 65 20 5b 61 62 72 69 64 ining the [abrid
0390: 67 65 64 0a 76 65 72 73 69 6f 6e 20 68 69 73 74 ged.version hist
03a0: 6f 72 79 5d 5b 61 76 68 5d 20 6f 66 20 4d 79 53 ory][avh] of MyS
03b0: 51 4c 2b 2b 20 62 61 63 6b 20 74 6f 20 74 68 65 QL++ back to the
03c0: 20 70 72 6f 6a 65 63 74 27 73 20 66 6f 75 6e 64 project's found
03d0: 69 6e 67 2e 0a 0a 54 68 65 20 72 65 70 6f 73 69 ing...The reposi
03e0: 74 6f 72 79 20 63 6c 6f 6e 65 20 66 69 6c 65 20 tory clone file
03f0: 63 61 6e 20 62 65 20 6e 61 6d 65 64 20 61 6e 79 can be named any
0400: 74 68 69 6e 67 20 79 6f 75 20 6c 69 6b 65 2e 20 thing you like.
0410: 45 76 65 6e 20 74 68 65 0a 60 2e 66 6f 73 73 69 Even the.`.fossi
0420: 6c 60 20 65 78 74 65 6e 73 69 6f 6e 20 69 73 20 l` extension is
0430: 6a 75 73 74 20 61 20 63 6f 6e 76 65 6e 74 69 6f just a conventio
0440: 6e 2c 20 6e 6f 74 20 61 20 72 65 71 75 69 72 65 n, not a require
0450: 6d 65 6e 74 2e 0a 0a 54 6f 20 22 6f 70 65 6e 22 ment...To "open"
0460: 20 74 68 65 20 72 65 70 6f 20 63 6c 6f 6e 65 20 the repo clone
0470: 73 6f 20 79 6f 75 20 63 61 6e 20 68 61 63 6b 20 so you can hack
0480: 6f 6e 20 69 74 2c 20 73 61 79 3a 0a 0a 20 20 20 on it, say:..
0490: 20 24 20 6d 6b 64 69 72 20 6d 79 73 71 6c 70 70 $ mkdir mysqlpp
04a0: 0a 20 20 20 20 24 20 63 64 20 6d 79 73 71 6c 70 . $ cd mysqlp
04b0: 70 0a 20 20 20 20 24 20 66 6f 73 73 69 6c 20 6f p. $ fossil o
04c0: 70 65 6e 20 2e 2e 2f 6d 79 73 71 6c 70 70 2e 66 pen ../mysqlpp.f
04d0: 6f 73 73 69 6c 0a 0a 57 65 20 63 72 65 61 74 65 ossil..We create
04e0: 64 20 61 20 6e 65 77 20 73 75 62 64 69 72 65 63 d a new subdirec
04f0: 74 6f 72 79 20 62 65 63 61 75 73 65 20 74 68 65 tory because the
0500: 20 60 6f 70 65 6e 60 20 63 6f 6d 6d 61 6e 64 20 `open` command
0510: 63 68 65 63 6b 73 20 6f 75 74 20 74 68 65 0a 74 checks out the.t
0520: 69 70 20 6f 66 20 74 68 65 20 72 65 70 6f 73 69 ip of the reposi
0530: 74 6f 72 79 27 73 20 74 72 75 6e 6b 20 69 6e 74 tory's trunk int
0540: 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 69 o the current di
0550: 72 65 63 74 6f 72 79 20 62 79 20 64 65 66 61 75 rectory by defau
0560: 6c 74 2e 0a 0a 41 73 20 77 69 74 68 20 60 6d 79 lt...As with `my
0570: 73 71 6c 70 70 2e 66 6f 73 73 69 6c 60 2c 20 79 sqlpp.fossil`, y
0580: 6f 75 20 63 61 6e 20 63 61 6c 6c 20 74 68 65 20 ou can call the
0590: 77 6f 72 6b 69 6e 67 20 64 69 72 65 63 74 6f 72 working director
05a0: 79 20 61 6e 79 74 68 69 6e 67 0a 79 6f 75 20 6c y anything.you l
05b0: 69 6b 65 2e 20 49 20 61 63 74 75 61 6c 6c 79 20 ike. I actually
05c0: 70 72 65 66 65 72 20 61 20 77 6f 72 6b 69 6e 67 prefer a working
05d0: 20 74 72 65 65 20 74 68 61 74 20 6c 6f 6f 6b 73 tree that looks
05e0: 20 6c 69 6b 65 20 74 68 69 73 3a 0a 0a 20 20 20 like this:..
05f0: 20 7e 2f 6d 75 73 65 75 6d 2f 20 20 20 20 20 20 ~/museum/
0600: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 57 68 # Wh
0610: 65 72 65 20 66 6f 73 73 69 6c 73 20 61 72 65 20 ere fossils are
0620: 6b 65 70 74 0a 20 20 20 20 20 20 20 20 6d 79 73 kept. mys
0630: 71 6c 70 70 2e 66 6f 73 73 69 6c 0a 20 20 20 20 qlpp.fossil.
0640: 7e 2f 73 72 63 2f 20 20 20 20 20 20 20 20 20 20 ~/src/
0650: 20 20 20 20 20 20 20 20 20 20 20 23 20 57 6f 72 # Wor
0660: 6b 69 6e 67 20 74 72 65 65 20 66 6f 72 20 73 6f king tree for so
0670: 66 74 77 61 72 65 20 70 72 6f 6a 65 63 74 73 0a ftware projects.
0680: 20 20 20 20 20 20 20 20 6d 79 73 71 6c 70 70 2f mysqlpp/
0690: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 6b 75 . sku
06a0: 6c 6c 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 ll/
06b0: 23 20 46 6f 73 73 69 6c 20 68 65 61 64 2c 20 67 # Fossil head, g
06c0: 65 74 20 69 74 3f 20 20 20 49 20 63 72 61 63 6b et it? I crack
06d0: 20 6d 65 20 75 70 2e 0a 20 20 20 20 20 20 20 20 me up..
06e0: 20 20 20 20 74 72 75 6e 6b 20 2d 3e 20 73 6b 75 trunk -> sku
06f0: 6c 6c 2f 20 20 20 20 23 20 41 6c 69 61 73 20 74 ll/ # Alias t
0700: 6f 20 6d 61 74 63 68 20 46 6f 73 73 69 6c 20 62 o match Fossil b
0710: 72 61 6e 63 68 20 6e 61 6d 69 6e 67 0a 20 20 20 ranch naming.
0720: 20 20 20 20 20 20 20 20 20 73 6f 6d 65 2d 62 72 some-br
0730: 61 6e 63 68 2f 20 20 20 20 20 20 20 23 20 53 65 anch/ # Se
0740: 70 61 72 61 74 65 6c 79 2d 6f 70 65 6e 65 64 20 parately-opened
0750: 77 6f 72 6b 69 6e 67 20 62 72 61 6e 63 68 0a 20 working branch.
0760: 20 20 20 20 20 20 20 20 20 20 20 33 2e 32 2e 33 3.2.3
0770: 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 / #
0780: 54 61 67 67 65 64 20 72 65 6c 65 61 73 65 20 63 Tagged release c
0790: 68 65 63 6b 6f 75 74 0a 0a 46 6f 73 73 69 6c 20 heckout..Fossil
07a0: 77 69 6c 6c 20 6c 65 74 20 79 6f 75 20 6d 61 6b will let you mak
07b0: 65 20 61 6e 79 20 6d 6f 64 69 66 69 63 61 74 69 e any modificati
07c0: 6f 6e 73 20 79 6f 75 20 6c 69 6b 65 20 74 6f 20 ons you like to
07d0: 79 6f 75 72 20 6c 6f 63 61 6c 0a 72 65 70 6f 73 your local.repos
07e0: 69 74 6f 72 79 20 63 6f 70 79 2e 20 46 6f 72 20 itory copy. For
07f0: 74 68 6f 73 65 20 77 69 74 68 20 70 72 69 76 69 those with privi
0800: 6c 65 67 65 73 20 6f 6e 20 74 68 65 20 75 70 73 leges on the ups
0810: 74 72 65 61 6d 20 63 6f 70 79 2c 0a 63 68 65 63 tream copy,.chec
0820: 6b 69 6e 73 20 67 65 74 20 61 75 74 6f 6d 61 74 kins get automat
0830: 69 63 61 6c 6c 79 20 73 79 6e 63 65 64 20 77 69 ically synced wi
0840: 74 68 20 69 74 20 62 79 20 64 65 66 61 75 6c 74 th it by default
0850: 2e 20 28 49 66 20 79 6f 75 20 70 72 65 66 65 72 . (If you prefer
0860: 0a 47 69 74 20 6f 72 20 4d 65 72 63 75 72 69 61 .Git or Mercuria
0870: 6c 20 73 74 79 6c 65 20 74 77 6f 2d 70 68 61 73 l style two-phas
0880: 65 20 63 6f 6d 6d 69 74 73 2c 20 79 6f 75 20 63 e commits, you c
0890: 61 6e 20 73 61 79 20 60 66 6f 73 73 69 6c 20 73 an say `fossil s
08a0: 65 74 74 69 6e 67 73 0a 61 75 74 6f 73 79 6e 63 ettings.autosync
08b0: 20 6f 66 66 60 2e 29 20 49 66 20 79 6f 75 20 64 off`.) If you d
08c0: 6f 6e 27 74 20 68 61 76 65 20 73 75 63 68 20 70 on't have such p
08d0: 65 72 6d 69 73 73 69 6f 6e 73 2c 20 79 6f 75 20 ermissions, you
08e0: 6a 75 73 74 20 6d 6f 64 69 66 79 0a 79 6f 75 72 just modify.your
08f0: 20 6c 6f 63 61 6c 20 63 6f 70 79 2c 20 74 68 65 local copy, the
0900: 6e 20 68 61 76 65 20 74 6f 20 6d 65 72 67 65 20 n have to merge
0910: 69 6e 20 75 70 73 74 72 65 61 6d 20 63 68 61 6e in upstream chan
0920: 67 65 73 20 77 68 65 6e 20 75 70 64 61 74 69 6e ges when updatin
0930: 67 0a 79 6f 75 72 20 6c 6f 63 61 6c 20 63 6c 6f g.your local clo
0940: 6e 65 2e 0a 0a 44 65 76 65 6c 6f 70 65 72 73 20 ne...Developers
0950: 61 72 65 20 65 78 70 65 63 74 65 64 20 74 6f 20 are expected to
0960: 6d 61 6b 65 20 61 6c 6c 20 63 68 61 6e 67 65 73 make all changes
0970: 20 74 68 61 74 20 61 66 66 65 63 74 20 74 68 65 that affect the
0980: 20 6c 69 62 61 72 79 27 73 0a 41 50 49 2c 20 41 libary's.API, A
0990: 42 49 2c 20 6f 72 20 62 65 68 61 76 69 6f 72 20 BI, or behavior
09a0: 6f 6e 20 61 20 62 72 61 6e 63 68 2c 20 72 61 74 on a branch, rat
09b0: 68 65 72 20 74 68 61 6e 20 63 68 65 63 6b 20 73 her than check s
09c0: 75 63 68 20 63 68 61 6e 67 65 73 0a 64 69 72 65 uch changes.dire
09d0: 63 74 6c 79 20 69 6e 74 6f 20 74 68 65 20 74 72 ctly into the tr
09e0: 75 6e 6b 2e 20 4f 6e 63 65 20 77 65 20 68 61 76 unk. Once we hav
09f0: 65 20 64 69 73 63 75 73 73 65 64 20 74 68 65 20 e discussed the
0a00: 63 68 61 6e 67 65 20 6f 6e 20 74 68 65 0a 5b 6d change on the.[m
0a10: 61 69 6c 69 6e 67 20 6c 69 73 74 5d 5b 6d 6c 5d ailing list][ml]
0a20: 20 61 6e 64 20 72 65 73 6f 6c 76 65 64 20 61 6e and resolved an
0a30: 79 20 69 73 73 73 75 65 73 20 77 69 74 68 20 74 y isssues with t
0a40: 68 65 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 0a he experimental.
0a50: 62 72 61 6e 63 68 2c 20 69 74 20 77 69 6c 6c 20 branch, it will
0a60: 62 65 20 6d 65 72 67 65 64 20 69 6e 74 6f 20 74 be merged into t
0a70: 68 65 20 74 72 75 6e 6b 2e 0a 0a 43 72 65 61 74 he trunk...Creat
0a80: 69 6e 67 20 61 20 62 72 61 6e 63 68 20 69 6e 20 ing a branch in
0a90: 46 6f 73 73 69 6c 20 69 73 20 73 63 61 72 79 2d Fossil is scary-
0aa0: 73 69 6d 70 6c 65 2c 20 74 6f 20 74 68 65 20 70 simple, to the p
0ab0: 6f 69 6e 74 20 74 68 61 74 20 74 68 6f 73 65 0a oint that those.
0ac0: 63 6f 6d 69 6e 67 20 66 72 6f 6d 20 6f 74 68 65 coming from othe
0ad0: 72 20 76 65 72 73 69 6f 6e 20 63 6f 6e 74 72 6f r version contro
0ae0: 6c 20 73 79 73 74 65 6d 73 20 6d 61 79 20 61 73 l systems may as
0af0: 6b 2c 20 22 49 73 20 74 68 61 74 20 72 65 61 6c k, "Is that real
0b00: 6c 79 20 61 6c 6c 0a 74 68 65 72 65 20 69 73 20 ly all.there is
0b10: 74 6f 20 69 74 3f 22 20 59 65 73 2c 20 72 65 61 to it?" Yes, rea
0b20: 6c 6c 79 2c 20 74 68 69 73 20 69 73 20 69 74 3a lly, this is it:
0b30: 0a 0a 20 20 20 20 24 20 66 6f 73 73 69 6c 20 63 .. $ fossil c
0b40: 68 65 63 6b 69 6e 20 2d 2d 62 72 61 6e 63 68 20 heckin --branch
0b50: 6e 65 77 2d 62 72 61 6e 63 68 2d 6e 61 6d 65 0a new-branch-name.
0b60: 0a 54 68 61 74 20 69 73 20 74 6f 20 73 61 79 2c .That is to say,
0b70: 20 79 6f 75 20 6d 61 6b 65 20 79 6f 75 72 20 63 you make your c
0b80: 68 61 6e 67 65 73 20 61 73 20 79 6f 75 20 6e 6f hanges as you no
0b90: 72 6d 61 6c 6c 79 20 77 6f 75 6c 64 3b 20 74 68 rmally would; th
0ba0: 65 6e 20 77 68 65 6e 0a 79 6f 75 20 67 6f 20 74 en when.you go t
0bb0: 6f 20 63 68 65 63 6b 20 74 68 65 6d 20 69 6e 2c o check them in,
0bc0: 20 79 6f 75 20 67 69 76 65 20 74 68 65 20 60 2d you give the `-
0bd0: 2d 62 72 61 6e 63 68 60 20 6f 70 74 69 6f 6e 20 -branch` option
0be0: 74 6f 20 74 68 65 0a 60 63 69 2f 63 68 65 63 6b to the.`ci/check
0bf0: 69 6e 60 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 70 in` command to p
0c00: 75 74 20 74 68 65 20 63 68 61 6e 67 65 73 20 6f ut the changes o
0c10: 6e 20 61 20 6e 65 77 20 62 72 61 6e 63 68 2c 20 n a new branch,
0c20: 72 61 74 68 65 72 20 74 68 61 6e 20 61 64 64 0a rather than add.
0c30: 74 68 65 6d 20 74 6f 20 74 68 65 20 73 61 6d 65 them to the same
0c40: 20 62 72 61 6e 63 68 20 74 68 65 20 63 68 61 6e branch the chan
0c50: 67 65 73 20 77 65 72 65 20 6d 61 64 65 20 61 67 ges were made ag
0c60: 61 69 6e 73 74 2e 0a 0a 41 74 20 73 6f 6d 65 20 ainst...At some
0c70: 70 6f 69 6e 74 2c 20 74 68 65 20 74 72 75 6e 6b point, the trunk
0c80: 20 76 65 72 73 69 6f 6e 20 62 65 63 6f 6d 65 73 version becomes
0c90: 20 74 68 65 20 6e 65 78 74 20 6d 61 6a 6f 72 20 the next major
0ca0: 76 65 72 73 69 6f 6e 2e 20 53 74 61 62 6c 65 0a version. Stable.
0cb0: 76 65 72 73 69 6f 6e 73 20 62 65 63 6f 6d 65 20 versions become
0cc0: 65 69 74 68 65 72 20 74 61 67 73 20 6f 72 20 62 either tags or b
0cd0: 72 61 6e 63 68 65 73 2e 20 28 54 68 65 20 6f 6e ranches. (The on
0ce0: 6c 79 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 ly difference be
0cf0: 74 77 65 65 6e 0a 74 61 67 73 20 61 6e 64 20 62 tween.tags and b
0d00: 72 61 6e 63 68 65 73 20 69 6e 20 46 6f 73 73 69 ranches in Fossi
0d10: 6c 20 69 73 20 74 68 61 74 20 62 72 61 6e 63 68 l is that branch
0d20: 65 73 20 6d 61 79 20 68 61 76 65 20 73 75 62 73 es may have subs
0d30: 65 71 75 65 6e 74 20 63 68 61 6e 67 65 73 0a 6d equent changes.m
0d40: 61 64 65 20 74 6f 20 74 68 65 6d 2e 29 0a 0a 5b ade to them.)..[
0d50: 61 76 68 5d 3a 20 20 68 74 74 70 73 3a 2f 2f 74 avh]: https://t
0d60: 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d angentsoft.com/m
0d70: 79 73 71 6c 70 70 2f 77 69 6b 69 3f 6e 61 6d 65 ysqlpp/wiki?name
0d80: 3d 41 62 72 69 64 67 65 64 2b 56 65 72 73 69 6f =Abridged+Versio
0d90: 6e 2b 48 69 73 74 6f 72 79 0a 5b 64 76 63 73 5d n+History.[dvcs]
0da0: 3a 20 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 : http://en.wiki
0db0: 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 44 pedia.org/wiki/D
0dc0: 69 73 74 72 69 62 75 74 65 64 5f 72 65 76 69 73 istributed_revis
0dd0: 69 6f 6e 5f 63 6f 6e 74 72 6f 6c 0a 5b 66 73 6c ion_control.[fsl
0de0: 5d 3a 20 20 68 74 74 70 3a 2f 2f 66 6f 73 73 69 ]: http://fossi
0df0: 6c 2d 73 63 6d 2e 6f 72 67 2f 0a 5b 66 73 6c 62 l-scm.org/.[fslb
0e00: 5d 3a 20 68 74 74 70 3a 2f 2f 66 6f 73 73 69 6c ]: http://fossil
0e10: 2d 73 63 6d 2e 6f 72 67 2f 69 6e 64 65 78 2e 68 -scm.org/index.h
0e20: 74 6d 6c 2f 75 76 2f 64 6f 77 6e 6c 6f 61 64 2e tml/uv/download.
0e30: 68 74 6d 6c 0a 5b 66 73 6c 71 5d 3a 20 68 74 74 html.[fslq]: htt
0e40: 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e 6f p://fossil-scm.o
0e50: 72 67 2f 69 6e 64 65 78 2e 68 74 6d 6c 2f 64 6f rg/index.html/do
0e60: 63 2f 74 72 75 6e 6b 2f 77 77 77 2f 71 75 69 63 c/trunk/www/quic
0e70: 6b 73 74 61 72 74 2e 77 69 6b 69 0a 5b 66 73 6c kstart.wiki.[fsl
0e80: 73 5d 3a 20 68 74 74 70 3a 2f 2f 66 6f 73 73 69 s]: http://fossi
0e90: 6c 2d 73 63 6d 2e 6f 72 67 2f 69 6e 64 65 78 2e l-scm.org/index.
0ea0: 68 74 6d 6c 2f 64 6f 63 2f 74 72 75 6e 6b 2f 77 html/doc/trunk/w
0eb0: 77 77 2f 62 75 69 6c 64 2e 77 69 6b 69 0a 5b 6d ww/build.wiki.[m
0ec0: 6c 5d 3a 20 20 20 68 74 74 70 73 3a 2f 2f 6c 69 l]: https://li
0ed0: 73 74 73 2e 6d 79 73 71 6c 2e 63 6f 6d 2f 70 6c sts.mysql.com/pl
0ee0: 75 73 70 6c 75 73 2f 0a 0a 0a 23 23 20 42 6f 6f usplus/...## Boo
0ef0: 74 73 74 72 61 70 70 69 6e 67 20 74 68 65 20 4c tstrapping the L
0f00: 69 62 72 61 72 79 0a 0a 57 68 65 6e 20 79 6f 75 ibrary..When you
0f10: 20 63 68 65 63 6b 20 6f 75 74 20 4d 79 53 51 4c check out MySQL
0f20: 2b 2b 20 66 72 6f 6d 20 46 6f 73 73 69 6c 2c 20 ++ from Fossil,
0f30: 74 68 65 72 65 20 61 72 65 20 61 20 6c 6f 74 20 there are a lot
0f40: 6f 66 20 74 68 69 6e 67 73 0a 22 6d 69 73 73 69 of things."missi
0f50: 6e 67 22 20 61 73 20 63 6f 6d 70 61 72 65 64 20 ng" as compared
0f60: 74 6f 20 61 20 64 69 73 74 72 69 62 75 74 65 64 to a distributed
0f70: 20 74 61 72 62 61 6c 6c 2c 20 62 65 63 61 75 73 tarball, becaus
0f80: 65 20 74 68 65 20 46 6f 73 73 69 6c 0a 72 65 70 e the Fossil.rep
0f90: 6f 73 69 74 6f 72 79 20 63 6f 6e 74 61 69 6e 73 ository contains
0fa0: 20 6f 6e 6c 79 20 73 6f 75 72 63 65 20 66 69 6c only source fil
0fb0: 65 73 2c 20 6e 6f 20 67 65 6e 65 72 61 74 65 64 es, no generated
0fc0: 20 66 69 6c 65 73 2e 20 20 54 68 65 0a 70 72 6f files. The.pro
0fd0: 63 65 73 73 20 74 68 61 74 20 74 75 72 6e 73 20 cess that turns
0fe0: 61 20 66 72 65 73 68 20 4d 79 53 51 4c 2b 2b 20 a fresh MySQL++
0ff0: 72 65 70 6f 73 69 74 6f 72 79 20 63 68 65 63 6b repository check
1000: 6f 75 74 20 69 6e 74 6f 0a 73 6f 6d 65 74 68 69 out into.somethi
1010: 6e 67 20 79 6f 75 20 63 61 6e 20 62 75 69 6c 64 ng you can build
1020: 20 61 6e 64 20 68 61 63 6b 20 6f 6e 20 69 73 20 and hack on is
1030: 63 61 6c 6c 65 64 20 62 6f 6f 74 73 74 72 61 70 called bootstrap
1040: 70 69 6e 67 2e 0a 0a 42 6f 6f 73 74 72 61 70 70 ping...Boostrapp
1050: 69 6e 67 20 69 73 20 62 65 73 74 20 64 6f 6e 65 ing is best done
1060: 20 6f 6e 20 61 20 6d 6f 64 65 72 6e 20 55 6e 69 on a modern Uni
1070: 78 20 74 79 70 65 20 70 6c 61 74 66 6f 72 6d 3a x type platform:
1080: 20 4c 69 6e 75 78 2c 20 4f 53 0a 58 2c 20 42 53 Linux, OS.X, BS
1090: 44 2c 20 53 6f 6c 61 72 69 73 2e 2e 2e 61 6e 79 D, Solaris...any
10a0: 20 76 65 72 73 69 6f 6e 20 72 65 6c 65 61 73 65 version release
10b0: 64 20 73 69 6e 63 65 20 32 30 30 35 20 6f 72 20 d since 2005 or
10c0: 73 6f 2e 20 49 74 27 73 0a 70 6f 73 73 69 62 6c so. It's.possibl
10d0: 65 20 74 6f 20 64 6f 20 69 74 20 6f 6e 20 57 69 e to do it on Wi
10e0: 6e 64 6f 77 73 2c 20 62 75 74 20 6d 75 63 68 20 ndows, but much
10f0: 68 61 72 64 65 72 3b 20 77 65 20 63 6f 76 65 72 harder; we cover
1100: 20 74 68 65 20 6f 70 74 69 6f 6e 73 0a 62 65 6c the options.bel
1110: 6f 77 20 69 6e 20 61 20 73 65 70 61 72 61 74 65 ow in a separate
1120: 20 73 65 63 74 69 6f 6e 2e 0a 0a 54 77 6f 20 6f section...Two o
1130: 66 20 74 68 65 20 74 6f 6f 6c 73 20 79 6f 75 20 f the tools you
1140: 6e 65 65 64 20 74 6f 20 64 6f 20 74 68 69 73 20 need to do this
1150: 61 72 65 20 63 6f 6d 6d 6f 6e 6c 79 20 61 76 61 are commonly ava
1160: 69 6c 61 62 6c 65 20 6f 6e 20 55 6e 69 78 79 0a ilable on Unixy.
1170: 73 79 73 74 65 6d 73 2c 20 61 74 20 6c 65 61 73 systems, at leas
1180: 74 20 61 73 20 61 6e 20 6f 70 74 69 6f 6e 3a 20 t as an option:
1190: 50 65 72 6c 20 35 2c 20 61 6e 64 20 47 4e 55 20 Perl 5, and GNU
11a0: 41 75 74 6f 63 6f 6e 66 20 31 2e 35 39 20 6f 72 Autoconf 1.59 or
11b0: 20 68 69 67 68 65 72 2e 0a 49 66 20 74 68 65 79 higher..If they
11c0: 27 72 65 20 6e 6f 74 20 69 6e 73 74 61 6c 6c 65 're not installe
11d0: 64 2c 20 79 6f 75 20 63 61 6e 20 70 72 6f 62 61 d, you can proba
11e0: 62 6c 79 20 72 75 6e 20 79 6f 75 72 20 73 79 73 bly run your sys
11f0: 74 65 6d 27 73 20 70 61 63 6b 61 67 65 0a 6d 61 tem's package.ma
1200: 6e 61 67 65 72 20 74 6f 20 69 6e 73 74 61 6c 6c nager to install
1210: 20 73 75 69 74 61 62 6c 65 20 76 65 72 73 69 6f suitable versio
1220: 6e 73 2e 0a 0a 54 68 65 72 65 27 73 20 61 20 74 ns...There's a t
1230: 68 69 72 64 20 74 6f 6f 6c 20 79 6f 75 27 6c 6c hird tool you'll
1240: 20 6e 65 65 64 20 74 6f 20 62 6f 6f 74 73 74 72 need to bootstr
1250: 61 70 20 4d 79 53 51 4c 2b 2b 20 63 61 6c 6c 65 ap MySQL++ calle
1260: 64 0a 5b 42 61 6b 65 66 69 6c 65 5d 5b 62 66 5d d.[Bakefile][bf]
1270: 2e 20 54 68 65 20 73 79 6e 74 61 78 20 75 73 65 . The syntax use
1280: 64 20 69 6e 20 60 6d 79 73 71 6c 2b 2b 2e 62 6b d in `mysql++.bk
1290: 6c 60 20 72 65 71 75 69 72 65 73 20 61 74 20 6c l` requires at l
12a0: 65 61 73 74 0a 42 61 6b 65 66 69 6c 65 20 30 2e east.Bakefile 0.
12b0: 32 2e 35 20 6f 72 20 68 69 67 68 65 72 2c 20 77 2.5 or higher, w
12c0: 68 69 63 68 20 69 6e 20 74 75 72 6e 20 72 65 71 hich in turn req
12d0: 75 69 72 65 73 20 50 79 74 68 6f 6e 20 32 2e 33 uires Python 2.3
12e0: 20 6f 72 20 68 69 67 68 65 72 20 74 6f 0a 72 75 or higher to.ru
12f0: 6e 2e 20 59 6f 75 20 6d 61 79 20 72 65 71 75 69 n. You may requi
1300: 72 65 20 61 20 6e 65 77 65 72 20 76 65 72 73 69 re a newer versi
1310: 6f 6e 20 6f 66 20 42 61 6b 65 66 69 6c 65 20 74 on of Bakefile t
1320: 6f 20 73 75 70 70 6f 72 74 20 6e 65 77 65 72 20 o support newer
1330: 4f 53 65 73 0a 61 6e 64 20 50 79 74 68 6f 6e 20 OSes.and Python
1340: 76 65 72 73 69 6f 6e 73 3b 20 77 65 27 76 65 20 versions; we've
1350: 74 65 73 74 65 64 20 77 69 74 68 20 76 65 72 73 tested with vers
1360: 69 6f 6e 73 20 75 70 20 74 6f 20 30 2e 32 2e 31 ions up to 0.2.1
1370: 31 0a 73 75 63 63 65 73 73 66 75 6c 6c 79 2e 20 1.successfully.
1380: 20 44 6f 20 6e 6f 74 20 75 73 65 20 61 6e 79 20 Do not use any
1390: 6f 66 20 74 68 65 20 42 61 6b 65 66 69 6c 65 20 of the Bakefile
13a0: 31 2e 78 20 76 65 72 73 69 6f 6e 73 3a 20 69 74 1.x versions: it
13b0: 27 73 20 61 20 6d 61 6a 6f 72 0a 63 68 61 6e 67 's a major.chang
13c0: 65 20 69 6e 20 64 69 72 65 63 74 69 6f 6e 20 77 e in direction w
13d0: 68 69 63 68 20 77 65 20 68 61 76 65 6e 27 74 20 hich we haven't
13e0: 74 72 69 65 64 20 74 6f 20 66 6f 6c 6c 6f 77 2e tried to follow.
13f0: 0a 0a 4f 6e 63 65 20 79 6f 75 20 68 61 76 65 20 ..Once you have
1400: 61 6c 6c 20 74 68 65 20 74 6f 6f 6c 73 20 69 6e all the tools in
1410: 20 70 6c 61 63 65 2c 20 79 6f 75 20 63 61 6e 20 place, you can
1420: 62 6f 6f 74 73 74 72 61 70 20 4d 79 53 51 4c 2b bootstrap MySQL+
1430: 2b 20 77 69 74 68 20 61 0a 42 6f 75 72 6e 65 20 + with a.Bourne
1440: 73 68 65 6c 6c 20 73 63 72 69 70 74 20 63 61 6c shell script cal
1450: 6c 65 64 20 60 62 6f 6f 74 73 74 72 61 70 60 2c led `bootstrap`,
1460: 20 77 68 69 63 68 20 79 6f 75 20 67 65 74 20 61 which you get a
1470: 73 20 70 61 72 74 20 6f 66 20 74 68 65 0a 46 6f s part of the.Fo
1480: 73 73 69 6c 20 63 68 65 63 6b 6f 75 74 2e 20 49 ssil checkout. I
1490: 74 27 73 20 66 61 69 72 6c 79 20 70 6f 77 65 72 t's fairly power
14a0: 66 75 6c 2c 20 77 69 74 68 20 6d 61 6e 79 20 6f ful, with many o
14b0: 70 74 69 6f 6e 73 2e 20 20 46 6f 72 20 6d 6f 73 ptions. For mos
14c0: 74 0a 63 61 73 65 73 2c 20 69 74 20 73 75 66 66 t.cases, it suff
14d0: 69 63 65 73 20 74 6f 20 6a 75 73 74 20 72 75 6e ices to just run
14e0: 20 69 74 20 77 69 74 68 6f 75 74 20 61 6e 79 20 it without any
14f0: 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 20 20 20 20 arguments:..
1500: 24 20 2e 2f 62 6f 6f 74 73 74 72 61 70 0a 0a 46 $ ./bootstrap..F
1510: 6f 72 20 6d 6f 72 65 20 75 6e 75 73 75 61 6c 20 or more unusual
1520: 73 69 74 75 61 74 69 6f 6e 73 2c 20 68 65 72 65 situations, here
1530: 27 73 20 74 68 65 20 63 6f 6d 70 6c 65 74 65 20 's the complete
1540: 75 73 61 67 65 3a 0a 0a 20 20 20 20 24 20 2e 2f usage:.. $ ./
1550: 62 6f 6f 74 73 74 72 61 70 20 5b 6e 6f 7b 64 6f bootstrap [no{do
1560: 63 2c 65 78 2c 6c 69 62 2c 6f 70 74 7d 5d 20 5b c,ex,lib,opt}] [
1570: 70 65 64 61 6e 74 69 63 5d 20 5b 62 61 74 5d 20 pedantic] [bat]
1580: 5b 63 6f 6e 66 69 67 75 72 65 20 66 6c 61 67 73 [configure flags
1590: 5d 0a 0a 41 72 67 75 6d 65 6e 74 73 3a 0a 0a 2a ]..Arguments:..*
15a0: 20 20 20 60 6e 6f 64 6f 63 60 0a 0a 20 20 20 20 `nodoc`..
15b0: 54 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f The documentatio
15c0: 6e 20 77 6f 6e 27 74 20 62 65 20 63 6f 6e 73 69 n won't be consi
15d0: 64 65 72 65 64 20 61 20 70 72 65 72 65 71 75 69 dered a prerequi
15e0: 73 69 74 65 20 66 6f 72 20 62 75 69 6c 64 69 6e site for buildin
15f0: 67 0a 20 20 20 20 74 68 65 20 64 69 73 74 72 69 g. the distri
1600: 62 75 74 69 6f 6e 20 74 61 72 62 61 6c 6c 2e 20 bution tarball.
1610: 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 6f This is useful o
1620: 6e 20 73 79 73 74 65 6d 73 20 77 68 65 72 65 20 n systems where
1630: 74 68 65 0a 20 20 20 20 64 6f 63 75 6d 65 6e 74 the. document
1640: 61 74 69 6f 6e 20 64 6f 65 73 6e 27 74 20 62 75 ation doesn't bu
1650: 69 6c 64 20 63 6f 72 72 65 63 74 6c 79 2c 20 61 ild correctly, a
1660: 6e 64 20 79 6f 75 20 6f 6e 6c 79 20 6e 65 65 64 nd you only need
1670: 20 74 6f 20 6d 61 6b 65 20 61 0a 20 20 20 20 62 to make a. b
1680: 69 6e 61 72 79 20 52 50 4d 2e 20 54 68 61 74 20 inary RPM. That
1690: 70 72 6f 63 65 73 73 20 72 65 71 75 69 72 65 73 process requires
16a0: 20 61 20 74 61 72 62 61 6c 6c 2c 20 62 75 74 20 a tarball, but
16b0: 64 6f 65 73 6e 27 74 20 6e 65 65 64 20 74 68 65 doesn't need the
16c0: 0a 20 20 20 20 64 6f 63 75 6d 65 6e 74 61 74 69 . documentati
16d0: 6f 6e 2e 20 44 6f 6e 27 74 20 64 69 73 74 72 69 on. Don't distri
16e0: 62 75 74 65 20 74 68 65 20 74 61 72 62 61 6c 6c bute the tarball
16f0: 20 6f 72 20 53 52 50 4d 20 74 68 61 74 20 72 65 or SRPM that re
1700: 73 75 6c 74 73 2c 20 61 73 0a 20 20 20 20 74 68 sults, as. th
1710: 65 79 20 61 72 65 20 6e 6f 20 67 6f 6f 64 20 66 ey are no good f
1720: 6f 72 20 61 6e 79 20 6f 74 68 65 72 20 70 75 72 or any other pur
1730: 70 6f 73 65 2e 0a 0a 2a 20 20 20 60 6e 6f 65 78 pose...* `noex
1740: 60 0a 0a 20 20 20 20 54 68 65 20 67 65 6e 65 72 `.. The gener
1750: 61 74 65 64 20 60 4d 61 6b 65 66 69 6c 65 73 60 ated `Makefiles`
1760: 20 61 6e 64 20 70 72 6f 6a 65 63 74 20 66 69 6c and project fil
1770: 65 73 20 77 6f 6e 27 74 20 74 72 79 20 74 6f 20 es won't try to
1780: 62 75 69 6c 64 20 61 6e 79 20 6f 66 0a 20 20 20 build any of.
1790: 20 74 68 65 20 65 78 61 6d 70 6c 65 73 2e 0a 0a the examples...
17a0: 2a 20 20 20 60 6e 6f 6c 69 62 60 0a 0a 20 20 20 * `nolib`..
17b0: 20 54 68 65 20 67 65 6e 65 72 61 74 65 64 20 60 The generated `
17c0: 4d 61 6b 65 66 69 6c 65 73 60 20 61 6e 64 20 70 Makefiles` and p
17d0: 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 77 6f 6e roject files won
17e0: 27 74 20 74 72 79 20 74 6f 20 62 75 69 6c 64 20 't try to build
17f0: 74 68 65 0a 20 20 20 20 4d 79 53 51 4c 2b 2b 20 the. MySQL++
1800: 6c 69 62 72 61 72 79 2e 0a 0a 2a 20 20 20 60 6e library...* `n
1810: 6f 6d 61 69 6e 74 60 0a 0a 20 20 20 20 54 75 72 omaint`.. Tur
1820: 6e 20 6f 66 66 20 22 6d 61 69 6e 74 61 69 6e 65 n off "maintaine
1830: 72 20 6d 6f 64 65 22 20 73 74 75 66 66 20 69 6e r mode" stuff in
1840: 20 74 68 65 20 62 75 69 6c 64 2e 20 54 68 65 73 the build. Thes
1850: 65 20 61 72 65 20 66 65 61 74 75 72 65 73 0a 20 e are features.
1860: 20 20 20 75 73 65 64 20 6f 6e 6c 79 20 62 79 20 used only by
1870: 74 68 6f 73 65 20 62 75 69 6c 64 69 6e 67 20 4d those building M
1880: 79 53 51 4c 2b 2b 20 66 72 6f 6d 20 46 6f 73 73 ySQL++ from Foss
1890: 69 6c 2e 20 54 68 65 20 60 64 69 73 74 60 20 62 il. The `dist` b
18a0: 75 69 6c 64 0a 20 20 20 20 74 61 72 67 65 74 20 uild. target
18b0: 75 73 65 73 20 74 68 69 73 20 77 68 65 6e 20 63 uses this when c
18c0: 72 65 61 74 69 6e 67 20 74 68 65 20 74 61 72 62 reating the tarb
18d0: 61 6c 6c 2e 0a 0a 2a 20 20 20 60 6e 6f 6f 70 74 all...* `noopt
18e0: 60 0a 0a 20 20 20 20 43 6f 6d 70 69 6c 65 72 20 `.. Compiler
18f0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 77 69 6c optimization wil
1900: 6c 20 62 65 20 74 75 72 6e 65 64 20 6f 66 66 2e l be turned off.
1910: 20 28 54 68 69 73 20 63 75 72 72 65 6e 74 6c 79 (This currently
1920: 20 68 61 73 20 6e 6f 0a 20 20 20 20 65 66 66 65 has no. effe
1930: 63 74 20 6f 6e 20 4d 69 6e 47 57 20 6f 72 20 56 ct on MinGW or V
1940: 69 73 75 61 6c 20 43 2b 2b 2e 29 0a 0a 2a 20 20 isual C++.)..*
1950: 20 60 70 65 64 61 6e 74 69 63 60 0a 0a 20 20 20 `pedantic`..
1960: 20 54 75 72 6e 73 20 6f 6e 20 61 6c 6c 20 6f 66 Turns on all of
1970: 20 47 43 43 27 73 20 77 61 72 6e 69 6e 67 73 20 GCC's warnings
1980: 61 6e 64 20 70 6f 72 74 61 62 69 6c 69 74 79 20 and portability
1990: 63 68 65 63 6b 73 2e 20 20 47 6f 6f 64 20 66 6f checks. Good fo
19a0: 72 0a 20 20 20 20 63 68 65 63 6b 69 6e 67 20 63 r. checking c
19b0: 68 61 6e 67 65 73 20 62 65 66 6f 72 65 20 6d 61 hanges before ma
19c0: 6b 69 6e 67 20 61 20 70 75 62 6c 69 63 20 72 65 king a public re
19d0: 6c 65 61 73 65 2e 0a 0a 2a 20 20 20 60 62 61 74 lease...* `bat
19e0: 60 0a 0a 20 20 20 20 52 75 6e 73 20 60 62 6f 6f `.. Runs `boo
19f0: 74 73 74 72 61 70 2e 62 61 74 60 20 76 69 61 20 tstrap.bat` via
1a00: 60 63 6d 64 2e 65 78 65 60 20 66 6f 72 20 79 6f `cmd.exe` for yo
1a10: 75 2c 20 70 61 73 73 69 6e 67 20 61 6c 6f 6e 67 u, passing along
1a20: 20 65 71 75 69 76 61 6c 65 6e 74 0a 20 20 20 20 equivalent.
1a30: 6f 70 74 69 6f 6e 73 20 74 6f 20 61 6e 79 20 6f options to any o
1a40: 66 20 74 68 65 20 22 2a 6e 6f 2a 22 20 6f 70 74 f the "*no*" opt
1a50: 69 6f 6e 73 20 79 6f 75 20 67 69 76 65 20 62 65 ions you give be
1a60: 66 6f 72 65 20 69 74 2e 0a 0a 20 20 20 20 4f 6e fore it... On
1a70: 6c 79 20 74 68 65 20 22 2a 6e 6f 2a 22 20 6f 70 ly the "*no*" op
1a80: 74 69 6f 6e 73 20 61 62 6f 76 65 20 68 61 76 65 tions above have
1a90: 20 61 6e 20 65 66 66 65 63 74 20 6f 6e 20 74 68 an effect on th
1aa0: 65 20 67 65 6e 65 72 61 74 65 64 20 62 75 69 6c e generated buil
1ab0: 64 0a 20 20 20 20 73 79 73 74 65 6d 20 66 69 6c d. system fil
1ac0: 65 73 20 77 68 65 6e 20 79 6f 75 20 67 69 76 65 es when you give
1ad0: 20 22 60 62 61 74 60 22 2e 20 20 49 6e 20 70 61 "`bat`". In pa
1ae0: 72 74 69 63 75 6c 61 72 2c 20 74 68 65 20 66 69 rticular, the fi
1af0: 6c 65 73 0a 20 20 20 20 67 65 6e 65 72 61 74 65 les. generate
1b00: 64 20 62 79 20 60 62 6f 6f 74 73 74 72 61 70 2e d by `bootstrap.
1b10: 62 61 74 60 20 6d 61 6b 65 20 6e 6f 20 64 69 73 bat` make no dis
1b20: 74 69 6e 63 74 69 6f 6e 20 62 65 74 77 65 65 6e tinction between
1b30: 20 22 70 65 64 61 6e 74 69 63 22 0a 20 20 20 20 "pedantic".
1b40: 61 6e 64 20 6e 6f 72 6d 61 6c 20 62 75 69 6c 64 and normal build
1b50: 73 2e 0a 0a 20 20 20 20 50 61 73 73 69 6e 67 20 s... Passing
1b60: 60 62 61 74 60 20 73 74 6f 70 73 20 61 6c 6c 20 `bat` stops all
1b70: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 70 72 6f command line pro
1b80: 63 65 73 73 69 6e 67 20 69 6e 20 74 68 65 20 60 cessing in the `
1b90: 62 6f 6f 74 73 74 72 61 70 60 0a 20 20 20 20 73 bootstrap`. s
1ba0: 63 72 69 70 74 2c 20 73 6f 20 69 66 20 79 6f 75 cript, so if you
1bb0: 20 61 6c 73 6f 20 70 61 73 73 20 73 6f 6d 65 20 also pass some
1bc0: 6f 66 20 74 68 65 20 6f 74 68 65 72 20 6f 70 74 of the other opt
1bd0: 69 6f 6e 73 2c 20 22 60 62 61 74 60 22 20 6d 75 ions, "`bat`" mu
1be0: 73 74 0a 20 20 20 20 62 65 20 6c 61 73 74 2e 0a st. be last..
1bf0: 20 20 20 20 0a 20 20 20 20 54 68 65 20 60 62 6f . The `bo
1c00: 6f 74 73 74 72 61 70 2e 62 61 74 60 20 73 63 72 otstrap.bat` scr
1c10: 69 70 74 20 69 73 20 75 73 65 66 75 6c 20 6f 6e ipt is useful on
1c20: 6c 79 20 77 68 65 6e 20 79 6f 75 20 69 6e 74 65 ly when you inte
1c30: 6e 64 20 74 6f 20 62 75 69 6c 64 0a 20 20 20 20 nd to build.
1c40: 4d 79 53 51 4c 2b 2b 20 77 69 74 68 20 4d 69 6e MySQL++ with Min
1c50: 47 57 20 6f 72 20 56 69 73 75 61 6c 20 43 2b 2b GW or Visual C++
1c60: 2c 20 61 6e 64 20 79 6f 75 20 61 72 65 20 75 73 , and you are us
1c70: 69 6e 67 20 43 79 67 77 69 6e 20 6f 6e 6c 79 20 ing Cygwin only
1c80: 61 73 20 61 0a 20 20 20 20 63 6f 6d 6d 61 6e 64 as a. command
1c90: 20 6c 69 6e 65 20 65 6e 76 69 72 6f 6e 6d 65 6e line environmen
1ca0: 74 2e 20 20 49 66 20 79 6f 75 20 69 6e 74 65 6e t. If you inten
1cb0: 64 20 74 6f 20 62 75 69 6c 64 20 4d 79 53 51 4c d to build MySQL
1cc0: 2b 2b 20 77 69 74 68 0a 20 20 20 20 43 79 67 77 ++ with. Cygw
1cd0: 69 6e 27 73 20 47 43 43 20 74 6f 6f 6c 63 68 61 in's GCC toolcha
1ce0: 69 6e 2c 20 79 6f 75 20 6d 75 73 74 20 6e 6f 74 in, you must not
1cf0: 20 67 69 76 65 20 74 68 69 73 20 6f 70 74 69 6f give this optio
1d00: 6e 2c 20 65 6c 73 65 20 79 6f 75 20 77 69 6c 6c n, else you will
1d10: 0a 20 20 20 20 6e 6f 74 20 65 6e 64 20 75 70 20 . not end up
1d20: 77 69 74 68 20 74 68 65 20 6e 65 63 65 73 73 61 with the necessa
1d30: 72 79 20 62 75 69 6c 64 20 73 79 73 74 65 6d 20 ry build system
1d40: 66 69 6c 65 73 2e 0a 0a 20 20 20 20 4f 6e 65 20 files... One
1d50: 61 64 76 61 6e 74 61 67 65 20 6f 66 20 74 68 69 advantage of thi
1d60: 73 20 66 65 61 74 75 72 65 20 69 73 20 74 68 61 s feature is tha
1d70: 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64 73 20 6e t the commands n
1d80: 65 63 65 73 73 61 72 79 20 74 6f 0a 20 20 20 20 ecessary to.
1d90: 61 63 68 69 65 76 65 20 61 20 67 69 76 65 6e 20 achieve a given
1da0: 65 66 66 65 63 74 20 77 69 74 68 20 60 62 6f 6f effect with `boo
1db0: 74 73 74 72 61 70 2e 62 61 74 60 20 77 68 65 6e tstrap.bat` when
1dc0: 20 72 75 6e 20 76 69 61 20 60 62 6f 6f 74 73 74 run via `bootst
1dd0: 72 61 70 60 0a 20 20 20 20 61 72 65 20 73 68 6f rap`. are sho
1de0: 72 74 65 72 20 74 68 61 6e 20 77 68 65 6e 20 79 rter than when y
1df0: 6f 75 20 72 75 6e 20 74 68 65 20 62 61 74 63 68 ou run the batch
1e00: 20 66 69 6c 65 20 64 69 72 65 63 74 6c 79 2e 0a file directly..
1e10: 0a 20 20 20 20 41 6e 6f 74 68 65 72 20 61 64 76 . Another adv
1e20: 61 6e 74 61 67 65 20 69 73 20 74 68 61 74 20 74 antage is that t
1e30: 68 69 73 20 6c 6f 77 2d 73 74 72 65 6e 67 74 68 his low-strength
1e40: 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 version of the
1e50: 62 6f 6f 74 73 74 72 61 70 0a 20 20 20 20 73 63 bootstrap. sc
1e60: 72 69 70 74 20 72 75 6e 73 20 66 61 73 74 65 72 ript runs faster
1e70: 20 74 68 61 6e 20 74 68 65 20 66 75 6c 6c 2d 73 than the full-s
1e80: 74 72 65 6e 67 74 68 20 66 6f 72 6d 2c 20 62 65 trength form, be
1e90: 63 61 75 73 65 20 69 74 20 70 72 6f 64 75 63 65 cause it produce
1ea0: 73 0a 20 20 20 20 66 65 77 65 72 20 66 69 6c 65 s. fewer file
1eb0: 73 2e 0a 0a 20 20 20 20 46 69 6e 61 6c 6c 79 2c s... Finally,
1ec0: 20 72 75 6e 6e 69 6e 67 20 60 62 6f 6f 74 73 74 running `bootst
1ed0: 72 61 70 2e 62 61 74 60 20 69 6e 64 69 72 65 63 rap.bat` indirec
1ee0: 74 6c 79 20 6c 69 6b 65 20 74 68 69 73 20 6c 65 tly like this le
1ef0: 74 73 20 79 6f 75 20 61 76 6f 69 64 0a 20 20 20 ts you avoid.
1f00: 20 75 73 69 6e 67 20 60 63 6d 64 2e 65 78 65 60 using `cmd.exe`
1f10: 2c 20 61 20 63 6f 6d 6d 61 6e 64 20 73 68 65 6c , a command shel
1f20: 6c 20 67 72 65 61 74 6c 79 20 69 6e 66 65 72 69 l greatly inferi
1f30: 6f 72 20 74 6f 20 61 6e 79 20 6f 66 20 74 68 6f or to any of tho
1f40: 73 65 0a 20 20 20 20 61 76 61 69 6c 61 62 6c 65 se. available
1f50: 20 66 6f 72 20 43 79 67 77 69 6e 2e 0a 0a 2a 20 for Cygwin...*
1f60: 20 20 60 63 6f 6e 66 69 67 75 72 65 60 20 73 63 `configure` sc
1f70: 72 69 70 74 20 6f 70 74 69 6f 6e 73 0a 0a 20 20 ript options..
1f80: 20 20 41 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 As soon as the
1f90: 20 62 6f 6f 74 73 74 72 61 70 20 73 63 72 69 70 bootstrap scrip
1fa0: 74 20 73 65 65 73 20 61 6e 20 6f 70 74 69 6f 6e t sees an option
1fb0: 20 74 68 61 74 20 69 74 20 64 6f 65 73 6e 27 74 that it doesn't
1fc0: 0a 20 20 20 20 75 6e 64 65 72 73 74 61 6e 64 2c . understand,
1fd0: 20 69 74 20 73 74 6f 70 73 20 70 72 6f 63 65 73 it stops proces
1fe0: 73 69 6e 67 20 74 68 65 20 63 6f 6d 6d 61 6e 64 sing the command
1ff0: 20 6c 69 6e 65 2e 20 20 41 6e 79 20 73 75 62 73 line. Any subs
2000: 65 71 75 65 6e 74 0a 20 20 20 20 6f 70 74 69 6f equent. optio
2010: 6e 73 20 61 72 65 20 70 61 73 73 65 64 20 74 6f ns are passed to
2020: 20 74 68 65 20 60 63 6f 6e 66 69 67 75 72 65 60 the `configure`
2030: 20 73 63 72 69 70 74 2e 20 53 65 65 0a 20 20 20 script. See.
2040: 20 5b 52 45 41 44 4d 45 2d 55 6e 69 78 2e 74 78 [README-Unix.tx
2050: 74 5d 5b 72 6d 75 5d 20 66 6f 72 20 6d 6f 72 65 t][rmu] for more
2060: 20 6f 6e 20 60 63 6f 6e 66 69 67 75 72 65 60 20 on `configure`
2070: 73 63 72 69 70 74 20 6f 70 74 69 6f 6e 73 2e 0a script options..
2080: 0a 5b 62 66 5d 3a 20 20 68 74 74 70 3a 2f 2f 62 .[bf]: http://b
2090: 61 6b 65 66 69 6c 65 2e 6f 72 67 2f 0a 5b 72 6d akefile.org/.[rm
20a0: 75 5d 3a 20 68 74 74 70 73 3a 2f 2f 74 61 6e 67 u]: https://tang
20b0: 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d 79 73 71 entsoft.com/mysq
20c0: 6c 70 70 2f 66 69 6c 65 2f 52 45 41 44 4d 45 2d lpp/file/README-
20d0: 55 6e 69 78 2e 74 78 74 0a 0a 0a 23 23 20 42 6f Unix.txt...## Bo
20e0: 6f 74 73 74 72 61 70 70 69 6e 67 20 74 68 65 20 otstrapping the
20f0: 4c 69 62 72 61 72 79 20 55 73 69 6e 67 20 4f 6e Library Using On
2100: 6c 79 20 57 69 6e 64 6f 77 73 0a 0a 54 68 65 20 ly Windows..The
2110: 74 68 69 6e 67 20 74 68 61 74 20 6d 61 6b 65 73 thing that makes
2120: 20 62 6f 6f 74 73 74 72 61 70 70 69 6e 67 20 6f bootstrapping o
2130: 6e 20 57 69 6e 64 6f 77 73 20 64 69 66 66 69 63 n Windows diffic
2140: 75 6c 74 20 69 73 20 74 68 61 74 20 6f 6e 65 20 ult is that one
2150: 6f 66 0a 74 68 65 20 72 65 71 75 69 72 65 64 20 of.the required
2160: 73 74 65 70 73 20 75 73 65 73 20 61 20 55 6e 69 steps uses a Uni
2170: 78 2d 63 65 6e 74 72 69 63 20 74 6f 6f 6c 2c 20 x-centric tool,
2180: 60 61 75 74 6f 63 6f 6e 66 60 2e 20 20 54 68 69 `autoconf`. Thi
2190: 73 20 73 65 63 74 69 6f 6e 0a 69 73 20 61 62 6f s section.is abo
21a0: 75 74 20 77 6f 72 6b 69 6e 67 20 6f 75 74 20 61 ut working out a
21b0: 20 77 61 79 20 74 6f 20 67 65 74 20 74 68 61 74 way to get that
21c0: 20 77 6f 72 6b 69 6e 67 20 6f 6e 20 57 69 6e 64 working on Wind
21d0: 6f 77 73 2c 20 6f 72 20 61 76 6f 69 64 69 6e 67 ows, or avoiding
21e0: 0a 74 68 65 20 6e 65 65 64 20 66 6f 72 20 69 74 .the need for it
21f0: 2c 20 73 6f 20 79 6f 75 20 63 61 6e 20 67 65 74 , so you can get
2200: 20 6f 6e 20 77 69 74 68 20 68 61 63 6b 69 6e 67 on with hacking
2210: 20 6f 6e 20 4d 79 53 51 4c 2b 2b 20 6f 6e 20 57 on MySQL++ on W
2220: 69 6e 64 6f 77 73 2e 0a 0a 54 68 65 20 74 68 69 indows...The thi
2230: 6e 67 20 60 61 75 74 6f 63 6f 6e 66 60 20 64 6f ng `autoconf` do
2240: 65 73 20 74 68 61 74 27 73 20 72 65 6c 65 76 61 es that's releva
2250: 6e 74 20 74 6f 20 57 69 6e 64 6f 77 73 20 62 75 nt to Windows bu
2260: 69 6c 64 73 20 6f 66 20 4d 79 53 51 4c 2b 2b 0a ilds of MySQL++.
2270: 69 73 20 74 68 61 74 20 69 74 20 73 75 62 73 74 is that it subst
2280: 69 74 75 74 65 73 20 74 68 65 20 63 75 72 72 65 itutes the curre
2290: 6e 74 20 4d 79 53 51 4c 2b 2b 20 76 65 72 73 69 nt MySQL++ versi
22a0: 6f 6e 20 6e 75 6d 62 65 72 20 69 6e 74 6f 20 73 on number into s
22b0: 65 76 65 72 61 6c 0a 73 6f 75 72 63 65 20 66 69 everal.source fi
22c0: 6c 65 73 2e 20 54 68 69 73 20 61 6c 6c 6f 77 73 les. This allows
22d0: 20 75 73 20 74 6f 20 63 68 61 6e 67 65 20 74 68 us to change th
22e0: 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 e version number
22f0: 20 69 6e 20 6a 75 73 74 20 6f 6e 65 0a 70 6c 61 in just one.pla
2300: 63 65 20 e2 80 94 20 60 63 6f 6e 66 69 67 75 72 ce — `configur
2310: 65 2e 61 63 60 20 e2 80 94 20 61 6e 64 20 68 61 e.ac` — and ha
2320: 76 65 20 69 74 20 61 70 70 6c 69 65 64 20 74 6f ve it applied to
2330: 20 61 6c 6c 20 74 68 65 73 65 20 6f 74 68 65 72 all these other
2340: 20 70 6c 61 63 65 73 2e 0a 55 6e 74 69 6c 20 79 places..Until y
2350: 6f 75 20 64 6f 20 74 68 69 73 20 73 74 65 70 2c ou do this step,
2360: 20 61 6e 20 46 6f 73 73 69 6c 20 63 68 65 63 6b an Fossil check
2370: 6f 75 74 20 6f 66 20 4d 79 53 51 4c 2b 2b 20 77 out of MySQL++ w
2380: 6f 6e 27 74 20 62 75 69 6c 64 2c 0a 62 65 63 61 on't build,.beca
2390: 75 73 65 20 74 68 65 73 65 20 66 69 6c 65 73 20 use these files
23a0: 77 69 74 68 20 74 68 65 20 76 65 72 73 69 6f 6e with the version
23b0: 20 6e 75 6d 62 65 72 73 20 69 6e 20 74 68 65 6d numbers in them
23c0: 20 77 6f 6e 27 74 20 62 65 20 67 65 6e 65 72 61 won't be genera
23d0: 74 65 64 2e 0a 0a 0a 23 23 23 20 4f 70 74 69 6f ted....### Optio
23e0: 6e 20 31 3a 20 43 6f 70 79 20 74 68 65 20 67 65 n 1: Copy the ge
23f0: 6e 65 72 61 74 65 64 20 66 69 6c 65 73 20 6f 76 nerated files ov
2400: 65 72 20 66 72 6f 6d 20 61 20 72 65 6c 65 61 73 er from a releas
2410: 65 64 20 76 65 72 73 69 6f 6e 0a 0a 4f 6e 6c 79 ed version..Only
2420: 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 67 65 one of these ge
2430: 6e 65 72 61 74 65 64 20 66 69 6c 65 73 20 69 73 nerated files is
2440: 20 61 62 73 6f 6c 75 74 65 6c 79 20 63 72 69 74 absolutely crit
2450: 69 63 61 6c 20 74 6f 20 61 6c 6c 6f 77 69 6e 67 ical to allowing
2460: 0a 4d 79 53 51 4c 2b 2b 20 74 6f 20 62 75 69 6c .MySQL++ to buil
2470: 64 3a 20 60 6c 69 62 2f 6d 79 73 71 6c 2b 2b 2e d: `lib/mysql++.
2480: 68 60 2e 20 53 6f 2c 20 74 68 65 20 73 69 6d 70 h`. So, the simp
2490: 6c 65 73 74 20 6f 70 74 69 6f 6e 20 79 6f 75 20 lest option you
24a0: 68 61 76 65 20 74 6f 0a 62 6f 6f 74 73 74 72 61 have to.bootstra
24b0: 70 20 4d 79 53 51 4c 2b 2b 20 65 6e 74 69 72 65 p MySQL++ entire
24c0: 6c 79 20 6f 6e 20 57 69 6e 64 6f 77 73 20 69 73 ly on Windows is
24d0: 20 74 6f 20 63 6f 70 79 20 60 6c 69 62 2f 6d 79 to copy `lib/my
24e0: 73 71 6c 2b 2b 2e 68 60 20 6f 76 65 72 0a 66 72 sql++.h` over.fr
24f0: 6f 6d 20 61 20 72 65 6c 65 61 73 65 64 20 76 65 om a released ve
2500: 72 73 69 6f 6e 20 6f 66 20 4d 79 53 51 4c 2b 2b rsion of MySQL++
2510: 2e 20 57 68 69 6c 65 20 79 6f 75 27 72 65 20 64 . While you're d
2520: 6f 69 6e 67 20 74 68 61 74 2c 20 79 6f 75 20 6d oing that, you m
2530: 69 67 68 74 0a 63 6f 70 79 20 6f 76 65 72 20 74 ight.copy over t
2540: 68 65 20 6f 74 68 65 72 20 73 75 63 68 20 67 65 he other such ge
2550: 6e 65 72 61 74 65 64 20 66 69 6c 65 73 3a 0a 0a nerated files:..
2560: 20 20 20 20 69 6e 73 74 61 6c 6c 2e 68 74 61 0a install.hta.
2570: 20 20 20 20 6d 79 73 71 6c 2b 2b 2e 73 70 65 63 mysql++.spec
2580: 0a 20 20 20 20 64 6f 63 2f 75 73 65 72 6d 61 6e . doc/userman
2590: 2f 75 73 65 72 6d 61 6e 2e 64 62 78 0a 20 20 20 /userman.dbx.
25a0: 20 6c 69 62 2f 44 6f 78 79 66 69 6c 65 0a 0a 48 lib/Doxyfile..H
25b0: 61 76 69 6e 67 20 64 6f 6e 65 20 74 68 61 74 2c aving done that,
25c0: 20 79 6f 75 20 63 61 6e 20 63 6f 6d 70 6c 65 74 you can complet
25d0: 65 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70 70 e the bootstrapp
25e0: 69 6e 67 20 70 72 6f 63 65 73 73 20 62 79 20 72 ing process by r
25f0: 75 6e 6e 69 6e 67 0a 60 62 6f 6f 74 73 74 72 61 unning.`bootstra
2600: 70 2e 62 61 74 60 2e 20 49 74 20 68 61 73 20 74 p.bat`. It has t
2610: 68 65 20 73 61 6d 65 20 70 75 72 70 6f 73 65 20 he same purpose
2620: 61 73 20 74 68 65 20 42 6f 75 72 6e 65 20 73 68 as the Bourne sh
2630: 65 6c 6c 20 73 63 72 69 70 74 0a 64 65 73 63 72 ell script.descr
2640: 69 62 65 64 20 61 62 6f 76 65 2c 20 62 75 74 20 ibed above, but
2650: 6d 75 63 68 20 73 69 6d 70 6c 65 72 2e 20 49 74 much simpler. It
2660: 20 68 61 73 20 6e 6f 6e 65 20 6f 66 20 74 68 65 has none of the
2670: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0a 6f 70 command line.op
2680: 74 69 6f 6e 73 20 64 65 73 63 72 69 62 65 64 20 tions described
2690: 61 62 6f 76 65 2c 20 66 6f 72 20 6f 6e 65 20 74 above, for one t
26a0: 68 69 6e 67 2e 0a 0a 54 68 65 20 6d 61 69 6e 20 hing...The main
26b0: 64 6f 77 6e 73 69 64 65 20 6f 66 20 64 6f 69 6e downside of doin
26c0: 67 20 69 74 20 74 68 69 73 20 77 61 79 20 69 73 g it this way is
26d0: 20 74 68 61 74 20 79 6f 75 72 20 63 68 61 6e 67 that your chang
26e0: 65 64 20 76 65 72 73 69 6f 6e 20 77 69 6c 6c 0a ed version will.
26f0: 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 76 65 have the same ve
2700: 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 61 73 20 rsion number as
2710: 74 68 65 20 72 65 6c 65 61 73 65 20 6f 66 20 4d the release of M
2720: 79 53 51 4c 2b 2b 20 79 6f 75 20 63 6f 70 69 65 ySQL++ you copie
2730: 64 20 74 68 65 0a 66 69 6c 65 73 20 66 72 6f 6d d the.files from
2740: 2c 20 75 6e 6c 65 73 73 20 79 6f 75 20 67 6f 20 , unless you go
2750: 69 6e 74 6f 20 65 61 63 68 20 66 69 6c 65 20 61 into each file a
2760: 6e 64 20 63 68 61 6e 67 65 20 74 68 65 20 76 65 nd change the ve
2770: 72 73 69 6f 6e 20 6e 75 6d 62 65 72 73 2e 0a 0a rsion numbers...
2780: 0a 23 23 23 20 4f 70 74 69 6f 6e 20 32 3a 20 43 .### Option 2: C
2790: 79 67 77 69 6e 0a 0a 49 66 20 79 6f 75 27 64 20 ygwin..If you'd
27a0: 6c 69 6b 65 20 74 6f 20 68 61 63 6b 20 6f 6e 20 like to hack on
27b0: 4d 79 53 51 4c 2b 2b 20 65 6e 74 69 72 65 6c 79 MySQL++ entirely
27c0: 20 6f 6e 20 57 69 6e 64 6f 77 73 20 61 6e 64 20 on Windows and
27d0: 68 61 76 65 20 61 6c 6c 20 74 68 65 0a 62 75 69 have all the.bui
27e0: 6c 64 20 66 72 65 65 64 6f 6d 73 20 65 6e 6a 6f ld freedoms enjo
27f0: 79 65 64 20 62 79 20 74 68 6f 73 65 20 77 6f 72 yed by those wor
2800: 6b 69 6e 67 20 6f 6e 20 55 6e 69 78 79 20 70 6c king on Unixy pl
2810: 61 74 66 6f 72 6d 73 2c 20 74 68 65 20 73 69 6d atforms, the sim
2820: 70 6c 65 73 74 0a 73 6f 6c 75 74 69 6f 6e 20 69 plest.solution i
2830: 73 20 70 72 6f 62 61 62 6c 79 20 74 6f 20 5b 69 s probably to [i
2840: 6e 73 74 61 6c 6c 20 43 79 67 77 69 6e 5d 5b 63 nstall Cygwin][c
2850: 79 67 36 34 5d 2e 20 28 36 34 2d 62 69 74 2e 20 yg64]. (64-bit.
2860: 41 20 5b 33 32 2d 62 69 74 0a 69 6e 73 74 61 6c A [32-bit.instal
2870: 6c 65 72 5d 5b 63 79 67 33 32 5d 20 69 73 20 61 ler][cyg32] is a
2880: 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 2e 29 0a lso available.).
2890: 0a 57 68 65 6e 20 79 6f 75 20 72 75 6e 20 69 74 .When you run it
28a0: 2c 20 69 74 20 77 69 6c 6c 20 77 61 6c 6b 20 79 , it will walk y
28b0: 6f 75 20 74 68 72 6f 75 67 68 20 74 68 65 20 73 ou through the s
28c0: 74 65 70 73 20 74 6f 20 69 6e 73 74 61 6c 6c 20 teps to install
28d0: 43 79 67 77 69 6e 2e 0a 41 75 74 6f 63 6f 6e 66 Cygwin..Autoconf
28e0: 20 61 6e 64 20 50 65 72 6c 20 35 20 61 72 65 6e and Perl 5 aren
28f0: 27 74 20 69 6e 73 74 61 6c 6c 65 64 20 69 6e 20 't installed in
2900: 43 79 67 77 69 6e 20 62 79 20 64 65 66 61 75 6c Cygwin by defaul
2910: 74 2c 20 73 6f 20 77 68 65 6e 20 79 6f 75 0a 67 t, so when you.g
2920: 65 74 20 74 6f 20 74 68 65 20 70 61 63 6b 61 67 et to the packag
2930: 65 73 20 6c 69 73 74 2c 20 62 65 20 73 75 72 65 es list, be sure
2940: 20 74 6f 20 73 65 6c 65 63 74 20 74 68 65 6d 2e to select them.
2950: 20 41 75 74 6f 63 6f 6e 66 20 69 73 20 69 6e 20 Autoconf is in
2960: 74 68 65 0a 44 65 76 65 6c 20 63 61 74 65 67 6f the.Devel catego
2970: 72 79 2c 20 61 6e 64 20 50 65 72 6c 20 35 20 69 ry, and Perl 5 i
2980: 6e 20 74 68 65 20 49 6e 74 65 72 70 72 65 74 65 n the Interprete
2990: 72 73 20 63 61 74 65 67 6f 72 79 2e 0a 0a 59 6f rs category...Yo
29a0: 75 20 77 69 6c 6c 20 61 6c 73 6f 20 6e 65 65 64 u will also need
29b0: 20 74 6f 20 69 6e 73 74 61 6c 6c 20 74 68 65 20 to install the
29c0: 6e 61 74 69 76 65 20 57 69 6e 64 6f 77 73 20 62 native Windows b
29d0: 69 6e 61 72 79 20 76 65 72 73 69 6f 6e 20 6f 66 inary version of
29e0: 0a 5b 42 61 6b 65 66 69 6c 65 5d 28 68 74 74 70 .[Bakefile](http
29f0: 3a 2f 2f 62 61 6b 65 66 69 6c 65 2e 6f 72 67 2f ://bakefile.org/
2a00: 29 2e 20 20 44 6f 6e 27 74 20 67 65 74 20 74 68 ). Don't get th
2a10: 65 20 73 6f 75 72 63 65 20 76 65 72 73 69 6f 6e e source version
2a20: 20 61 6e 64 20 74 72 79 0a 74 6f 20 62 75 69 6c and try.to buil
2a30: 64 20 42 61 6b 65 66 69 6c 65 20 75 6e 64 65 72 d Bakefile under
2a40: 20 43 79 67 77 69 6e 3b 20 69 74 20 77 6f 6e 27 Cygwin; it won'
2a50: 74 20 77 6f 72 6b 2e 20 54 68 65 20 57 69 6e 64 t work. The Wind
2a60: 6f 77 73 20 62 69 6e 61 72 79 0a 76 65 72 73 69 ows binary.versi
2a70: 6f 6e 20 6f 66 20 42 61 6b 65 66 69 6c 65 20 69 on of Bakefile i
2a80: 6e 63 6c 75 64 65 73 20 61 6e 20 65 6d 62 65 64 ncludes an embed
2a90: 64 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 50 ded version of P
2aa0: 79 74 68 6f 6e 2c 20 73 6f 20 79 6f 75 20 77 6f ython, so you wo
2ab0: 6e 27 74 0a 6e 65 65 64 20 74 6f 20 69 6e 73 74 n't.need to inst
2ac0: 61 6c 6c 20 43 79 67 77 69 6e 27 73 20 50 79 74 all Cygwin's Pyt
2ad0: 68 6f 6e 2e 0a 0a 48 61 76 69 6e 67 20 64 6f 6e hon...Having don
2ae0: 65 20 61 6c 6c 20 74 68 69 73 2c 20 79 6f 75 20 e all this, you
2af0: 63 61 6e 20 66 6f 6c 6c 6f 77 20 74 68 65 20 55 can follow the U
2b00: 6e 69 78 20 62 6f 6f 74 73 74 72 61 70 70 69 6e nix bootstrappin
2b10: 67 0a 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 69 g.instructions i
2b20: 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73 n the previous s
2b30: 65 63 74 69 6f 6e 2e 0a 0a 5b 63 79 67 33 32 5d ection...[cyg32]
2b40: 3a 20 68 74 74 70 3a 2f 2f 63 79 67 77 69 6e 2e : http://cygwin.
2b50: 63 6f 6d 2f 73 65 74 75 70 2d 78 38 36 2e 65 78 com/setup-x86.ex
2b60: 65 0a 5b 63 79 67 36 34 5d 3a 20 68 74 74 70 3a e.[cyg64]: http:
2b70: 2f 2f 63 79 67 77 69 6e 2e 63 6f 6d 2f 73 65 74 //cygwin.com/set
2b80: 75 70 2d 78 38 36 5f 36 34 2e 65 78 65 0a 0a 0a up-x86_64.exe...
2b90: 23 23 23 20 4f 70 74 69 6f 6e 20 33 3a 20 5b 22 ### Option 3: ["
2ba0: 48 65 72 65 27 73 20 61 20 6e 69 63 6b 65 6c 2c Here's a nickel,
2bb0: 20 6b 69 64 2c 20 67 65 74 20 79 6f 75 72 73 65 kid, get yourse
2bc0: 6c 66 20 61 20 62 65 74 74 65 72 20 63 6f 6d 70 lf a better comp
2bd0: 75 74 65 72 2e 22 5d 5b 64 63 5d 0a 0a 46 69 6e uter."][dc]..Fin
2be0: 61 6c 6c 79 2c 20 79 6f 75 20 6d 69 67 68 74 20 ally, you might
2bf0: 68 61 76 65 20 61 63 63 65 73 73 20 74 6f 20 61 have access to a
2c00: 20 55 6e 69 78 79 20 73 79 73 74 65 6d 2c 20 6f Unixy system, o
2c10: 72 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f r the ability to
2c20: 20 73 65 74 0a 6f 6e 65 20 75 70 2e 20 59 6f 75 set.one up. You
2c30: 20 64 6f 6e 27 74 20 65 76 65 6e 20 6e 65 65 64 don't even need
2c40: 20 61 20 73 65 70 61 72 61 74 65 20 70 68 79 73 a separate phys
2c50: 69 63 61 6c 20 63 6f 6d 70 75 74 65 72 2c 20 6e ical computer, n
2c60: 6f 77 20 74 68 61 74 0a 76 69 72 74 75 61 6c 20 ow that.virtual
2c70: 6d 61 63 68 69 6e 65 20 74 65 63 68 6f 6c 6f 67 machine techolog
2c80: 79 20 69 73 20 66 72 65 65 2e 0a 0a 47 69 76 65 y is free...Give
2c90: 6e 20 73 75 63 68 20 61 20 6d 61 63 68 69 6e 65 n such a machine
2ca0: 2c 20 79 6f 75 27 64 20 64 6f 20 74 68 65 20 46 , you'd do the F
2cb0: 6f 73 73 69 6c 20 63 68 65 63 6b 6f 75 74 20 6f ossil checkout o
2cc0: 66 20 4d 79 53 51 4c 2b 2b 20 6f 6e 20 74 68 61 f MySQL++ on tha
2cd0: 74 0a 6d 61 63 68 69 6e 65 2c 20 74 68 65 6e 20 t.machine, then
2ce0: 62 6f 6f 74 73 74 72 61 70 20 69 74 20 74 68 65 bootstrap it the
2cf0: 72 65 20 75 73 69 6e 67 20 74 68 65 20 69 6e 73 re using the ins
2d00: 74 72 75 63 74 69 6f 6e 73 20 69 6e 20 74 68 65 tructions in the
2d10: 20 70 72 65 76 69 6f 75 73 0a 73 65 63 74 69 6f previous.sectio
2d20: 6e 2c 20 61 6e 64 20 63 6f 70 79 20 74 68 65 20 n, and copy the
2d30: 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65 73 20 generated files
2d40: 62 61 63 6b 20 74 6f 20 74 68 65 20 57 69 6e 64 back to the Wind
2d50: 6f 77 73 20 62 6f 78 2e 0a 0a 5b 64 63 5d 3a 20 ows box...[dc]:
2d60: 68 74 74 70 3a 2f 2f 74 6f 6d 61 79 6b 6f 2e 63 http://tomayko.c
2d70: 6f 6d 2f 77 72 69 74 69 6e 67 73 2f 74 68 61 74 om/writings/that
2d80: 2d 64 69 6c 62 65 72 74 2d 63 61 72 74 6f 6f 6e -dilbert-cartoon
2d90: 0a 0a 0a 23 23 20 4f 6e 20 4d 61 6e 69 70 75 6c ...## On Manipul
2da0: 61 74 69 6e 67 20 74 68 65 20 42 75 69 6c 64 20 ating the Build
2db0: 53 79 73 74 65 6d 20 53 6f 75 72 63 65 20 46 69 System Source Fi
2dc0: 6c 65 73 0a 0a 4f 6e 65 20 6f 66 20 74 68 65 20 les..One of the
2dd0: 74 68 69 6e 67 73 20 74 68 65 20 62 6f 6f 74 73 things the boots
2de0: 74 72 61 70 70 69 6e 67 20 73 79 73 74 65 6d 20 trapping system
2df0: 64 65 73 63 72 69 62 65 64 20 61 62 6f 76 65 0a described above.
2e00: 64 6f 65 73 20 69 73 20 70 72 6f 64 75 63 65 73 does is produces
2e10: 20 76 61 72 69 6f 75 73 20 74 79 70 65 73 20 6f various types o
2e20: 66 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 6d 61 f project and ma
2e30: 6b 65 20 66 69 6c 65 73 20 66 72 6f 6d 20 61 0a ke files from a.
2e40: 73 6d 61 6c 6c 20 6e 75 6d 62 65 72 20 6f 66 20 small number of
2e50: 73 6f 75 72 63 65 20 66 69 6c 65 73 2e 20 54 68 source files. Th
2e60: 69 73 20 73 79 73 74 65 6d 20 6c 65 74 73 20 75 is system lets u
2e70: 73 20 73 75 70 70 6f 72 74 20 6d 61 6e 79 0a 70 s support many.p
2e80: 6c 61 74 66 6f 72 6d 73 20 77 69 74 68 6f 75 74 latforms without
2e90: 20 68 61 76 69 6e 67 20 74 6f 20 6d 61 69 6e 74 having to maint
2ea0: 61 69 6e 20 73 65 70 61 72 61 74 65 20 62 75 69 ain separate bui
2eb0: 6c 64 20 73 79 73 74 65 6d 20 66 69 6c 65 73 0a ld system files.
2ec0: 66 6f 72 20 65 61 63 68 20 70 6c 61 74 66 6f 72 for each platfor
2ed0: 6d 2e 0a 0a 5b 42 61 6b 65 66 69 6c 65 5d 28 68 m...[Bakefile](h
2ee0: 74 74 70 3a 2f 2f 62 61 6b 65 66 69 6c 65 2e 6f ttp://bakefile.o
2ef0: 72 67 2f 29 20 70 72 6f 64 75 63 65 73 20 6d 6f rg/) produces mo
2f00: 73 74 20 6f 66 20 74 68 65 73 65 20 70 72 6f 6a st of these proj
2f10: 65 63 74 20 61 6e 64 20 6d 61 6b 65 0a 66 69 6c ect and make.fil
2f20: 65 73 20 66 72 6f 6d 20 61 20 73 69 6e 67 6c 65 es from a single
2f30: 20 73 6f 75 72 63 65 20 66 69 6c 65 20 63 61 6c source file cal
2f40: 6c 65 64 20 5b 60 6d 79 73 71 6c 2b 2b 2e 62 6b led [`mysql++.bk
2f50: 6c 60 5d 5b 62 6b 6c 5d 2e 0a 0a 45 78 63 65 70 l`][bkl]...Excep
2f60: 74 20 66 6f 72 20 73 6d 61 6c 6c 20 6c 6f 63 61 t for small loca
2f70: 6c 20 63 68 61 6e 67 65 73 2c 20 69 74 27 73 20 l changes, it's
2f80: 62 65 73 74 20 74 6f 20 63 68 61 6e 67 65 20 60 best to change `
2f90: 6d 79 73 71 6c 2b 2b 2e 62 6b 6c 60 20 61 6e 64 mysql++.bkl` and
2fa0: 0a 22 72 65 2d 62 61 6b 65 22 20 74 68 65 20 70 ."re-bake" the p
2fb0: 72 6f 6a 65 63 74 20 61 6e 64 20 6d 61 6b 65 20 roject and make
2fc0: 66 69 6c 65 73 20 72 61 74 68 65 72 20 74 68 61 files rather tha
2fd0: 6e 20 63 68 61 6e 67 65 20 74 68 6f 73 65 20 66 n change those f
2fe0: 69 6c 65 73 0a 64 69 72 65 63 74 6c 79 2e 20 59 iles.directly. Y
2ff0: 6f 75 20 63 61 6e 20 64 6f 20 74 68 69 73 20 77 ou can do this w
3000: 69 74 68 20 74 68 65 20 62 6f 6f 74 73 74 72 61 ith the bootstra
3010: 70 20 73 63 72 69 70 74 73 20 63 6f 76 65 72 65 p scripts covere
3020: 64 20 61 62 6f 76 65 2e 20 4f 6e 0a 57 69 6e 64 d above. On.Wind
3030: 6f 77 73 2c 20 69 66 20 61 6c 6c 20 79 6f 75 27 ows, if all you'
3040: 76 65 20 63 68 61 6e 67 65 64 20 69 73 20 60 6d ve changed is `m
3050: 79 73 71 6c 2b 2b 2e 62 6b 6c 60 2c 20 79 6f 75 ysql++.bkl`, you
3060: 20 63 61 6e 20 75 73 65 0a 60 72 65 62 61 6b 65 can use.`rebake
3070: 2e 62 61 74 60 20 69 6e 73 74 65 61 64 2c 20 77 .bat` instead, w
3080: 68 69 63 68 20 64 6f 65 73 6e 27 74 20 74 72 79 hich doesn't try
3090: 20 74 6f 20 64 6f 20 61 73 20 6d 75 63 68 20 61 to do as much a
30a0: 73 0a 60 62 6f 6f 74 73 74 72 61 70 2e 62 61 74 s.`bootstrap.bat
30b0: 60 2e 0a 0a 42 61 6b 65 66 69 6c 65 20 70 72 6f `...Bakefile pro
30c0: 64 75 63 65 73 20 66 69 6e 69 73 68 65 64 20 70 duces finished p
30d0: 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 66 6f 72 roject files for
30e0: 20 56 69 73 75 61 6c 20 43 2b 2b 20 61 6e 64 20 Visual C++ and
30f0: 58 63 6f 64 65 20 61 6e 64 0a 66 69 6e 69 73 68 Xcode and.finish
3100: 65 64 20 60 4d 61 6b 65 66 69 6c 65 73 60 20 66 ed `Makefiles` f
3110: 6f 72 20 4d 69 6e 47 57 2e 20 49 74 20 61 6c 73 or MinGW. It als
3120: 6f 20 70 72 6f 64 75 63 65 73 20 60 4d 61 6b 65 o produces `Make
3130: 66 69 6c 65 2e 69 6e 60 2c 20 77 68 69 63 68 20 file.in`, which
3140: 69 73 0a 69 6e 70 75 74 20 74 6f 20 47 4e 55 20 is.input to GNU
3150: 41 75 74 6f 63 6f 6e 66 20 61 6c 6f 6e 67 20 77 Autoconf along w
3160: 69 74 68 20 63 6f 6e 66 69 67 75 72 65 2e 61 63 ith configure.ac
3170: 20 61 6e 64 20 60 63 6f 6e 66 69 67 2f 2a 60 2e and `config/*`.
3180: 20 59 6f 75 20 6d 61 79 0a 6e 65 65 64 20 74 6f You may.need to
3190: 20 63 68 61 6e 67 65 20 74 68 65 73 65 20 6c 61 change these la
31a0: 74 74 65 72 20 66 69 6c 65 73 20 69 6e 20 61 64 tter files in ad
31b0: 64 69 74 69 6f 6e 20 74 6f 20 6f 72 20 69 6e 73 dition to or ins
31c0: 74 65 61 64 20 6f 66 0a 60 6d 79 73 71 6c 2b 2b tead of.`mysql++
31d0: 2e 62 6b 6c 60 20 74 6f 20 67 65 74 20 74 68 65 .bkl` to get the
31e0: 20 65 66 66 65 63 74 20 79 6f 75 20 77 61 6e 74 effect you want
31f0: 2e 20 20 52 75 6e 6e 69 6e 67 20 62 6f 6f 74 73 . Running boots
3200: 74 72 61 70 0a 69 6e 63 6f 72 70 6f 72 61 74 65 trap.incorporate
3210: 73 20 63 68 61 6e 67 65 73 20 74 6f 20 61 6c 6c s changes to all
3220: 20 6f 66 20 74 68 65 73 65 20 66 69 6c 65 73 20 of these files
3230: 69 6e 20 74 68 65 20 47 4e 55 20 41 75 74 6f 63 in the GNU Autoc
3240: 6f 6e 66 20 6f 75 74 70 75 74 2e 0a 0a 57 68 69 onf output...Whi
3250: 6c 65 20 42 61 6b 65 66 69 6c 65 27 73 20 64 6f le Bakefile's do
3260: 63 75 6d 65 6e 74 61 74 69 6f 6e 20 69 73 6e 27 cumentation isn'
3270: 74 20 61 73 20 63 6f 6d 70 72 65 68 65 6e 73 69 t as comprehensi
3280: 76 65 20 61 73 20 69 74 0a 6f 75 67 68 74 20 74 ve as it.ought t
3290: 6f 20 62 65 2c 20 79 6f 75 20 63 61 6e 20 61 74 o be, you can at
32a0: 20 6c 65 61 73 74 20 63 6f 75 6e 74 20 6f 6e 20 least count on
32b0: 69 74 20 74 6f 20 6c 69 73 74 20 61 6c 6c 20 6f it to list all o
32c0: 66 20 74 68 65 0a 61 76 61 69 6c 61 62 6c 65 20 f the.available
32d0: 66 65 61 74 75 72 65 73 2e 20 53 6f 2c 20 69 66 features. So, if
32e0: 20 79 6f 75 20 63 61 6e 27 74 20 73 65 65 20 61 you can't see a
32f0: 20 77 61 79 20 74 6f 20 6d 61 6b 65 20 42 61 6b way to make Bak
3300: 65 66 69 6c 65 0a 64 6f 20 73 6f 6d 65 74 68 69 efile.do somethi
3310: 6e 67 2c 20 69 74 27 73 20 6c 69 6b 65 6c 79 20 ng, it's likely
3320: 69 74 20 6a 75 73 74 20 63 61 6e 27 74 20 64 6f it just can't do
3330: 20 69 74 2e 20 42 61 6b 65 66 69 6c 65 20 69 73 it. Bakefile is
3340: 20 61 0a 68 69 67 68 2d 6c 65 76 65 6c 20 61 62 a.high-level ab
3350: 73 74 72 61 63 74 69 6f 6e 20 6f 66 20 62 75 69 straction of bui
3360: 6c 64 20 73 79 73 74 65 6d 73 20 69 6e 20 67 65 ld systems in ge
3370: 6e 65 72 61 6c 2c 20 73 6f 20 69 74 27 6c 6c 20 neral, so it'll
3380: 6e 65 76 65 72 0a 73 75 70 70 6f 72 74 20 61 6c never.support al
3390: 6c 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72 l the particular
33a0: 73 20 6f 66 20 65 76 65 72 79 20 6f 64 64 20 62 s of every odd b
33b0: 75 69 6c 64 20 73 79 73 74 65 6d 20 6f 75 74 20 uild system out
33c0: 74 68 65 72 65 2e 0a 0a 5b 62 6b 6c 5d 3a 20 68 there...[bkl]: h
33d0: 74 74 70 73 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f ttps://tangentso
33e0: 66 74 2e 63 6f 6d 2f 6d 79 73 71 6c 70 70 2f 66 ft.com/mysqlpp/f
33f0: 69 6c 65 2f 6d 79 73 71 6c 25 32 42 25 32 42 2e ile/mysql%2B%2B.
3400: 62 6b 6c 0a 0a 0a 23 23 20 53 75 62 6d 69 74 74 bkl...## Submitt
3410: 69 6e 67 20 50 61 74 63 68 65 73 0a 0a 49 66 20 ing Patches..If
3420: 79 6f 75 20 77 69 73 68 20 74 6f 20 73 75 62 6d you wish to subm
3430: 69 74 20 61 20 70 61 74 63 68 20 74 6f 20 74 68 it a patch to th
3440: 65 20 6c 69 62 72 61 72 79 2c 20 70 6c 65 61 73 e library, pleas
3450: 65 20 73 65 6e 64 20 69 74 20 74 6f 20 74 68 65 e send it to the
3460: 0a 5b 4d 79 53 51 4c 2b 2b 20 6d 61 69 6c 69 6e .[MySQL++ mailin
3470: 67 20 6c 69 73 74 5d 5b 6d 6c 5d 2e 20 20 57 65 g list][ml]. We
3480: 20 77 61 6e 74 20 70 61 74 63 68 65 73 20 69 6e want patches in
3490: 20 75 6e 69 66 69 65 64 20 64 69 66 66 20 66 6f unified diff fo
34a0: 72 6d 61 74 2e 0a 0a 57 65 20 77 69 6c 6c 20 61 rmat...We will a
34b0: 6c 73 6f 20 61 63 63 65 70 74 20 74 72 69 76 69 lso accept trivi
34c0: 61 6c 20 70 61 74 63 68 65 73 20 6e 6f 74 20 6e al patches not n
34d0: 65 65 64 69 6e 67 20 64 69 73 63 75 73 73 69 6f eeding discussio
34e0: 6e 20 61 73 20 74 65 78 74 0a 69 6e 20 61 20 46 n as text.in a F
34f0: 6f 73 73 69 6c 20 74 69 63 6b 65 74 2e 0a 0a 54 ossil ticket...T
3500: 68 65 20 65 61 73 69 65 73 74 20 77 61 79 20 74 he easiest way t
3510: 6f 20 67 65 74 20 61 20 75 6e 69 66 69 65 64 20 o get a unified
3520: 64 69 66 66 20 69 73 20 74 6f 20 63 68 65 63 6b diff is to check
3530: 20 6f 75 74 20 61 20 63 6f 70 79 20 6f 66 20 74 out a copy of t
3540: 68 65 0a 63 75 72 72 65 6e 74 20 4d 79 53 51 4c he.current MySQL
3550: 2b 2b 20 74 72 65 65 20 61 73 20 64 65 73 63 72 ++ tree as descr
3560: 69 62 65 64 20 61 62 6f 76 65 2e 20 54 68 65 6e ibed above. Then
3570: 20 6d 61 6b 65 20 79 6f 75 72 20 63 68 61 6e 67 make your chang
3580: 65 2c 20 60 63 64 60 0a 74 6f 20 74 68 65 20 4d e, `cd`.to the M
3590: 79 53 51 4c 2b 2b 20 72 6f 6f 74 20 64 69 72 65 ySQL++ root dire
35a0: 63 74 6f 72 79 2c 20 61 6e 64 20 61 73 6b 20 46 ctory, and ask F
35b0: 6f 73 73 69 6c 20 74 6f 20 67 65 6e 65 72 61 74 ossil to generat
35c0: 65 20 74 68 65 20 70 61 74 63 68 0a 66 6f 72 20 e the patch.for
35d0: 79 6f 75 3a 0a 0a 20 20 20 20 24 20 66 6f 73 73 you:.. $ foss
35e0: 69 6c 20 64 69 66 66 20 3e 20 6d 79 63 68 61 6e il diff > mychan
35f0: 67 65 2e 70 61 74 63 68 0a 0a 49 66 20 79 6f 75 ge.patch..If you
3600: 72 20 70 61 74 63 68 20 61 64 64 73 20 6e 65 77 r patch adds new
3610: 20 66 69 6c 65 73 2c 20 6d 6f 76 65 73 20 66 69 files, moves fi
3620: 6c 65 73 2c 20 6f 72 20 6e 65 65 64 73 20 74 6f les, or needs to
3630: 20 62 65 20 75 6e 64 65 72 73 74 6f 6f 64 20 69 be understood i
3640: 6e 0a 74 65 72 6d 73 20 6f 66 20 6d 75 6c 74 69 n.terms of multi
3650: 70 6c 65 20 63 68 65 63 6b 69 6e 73 2c 20 69 74 ple checkins, it
3660: 27 73 20 62 65 73 74 20 74 6f 20 64 6f 20 74 68 's best to do th
3670: 61 74 20 77 6f 72 6b 20 6f 6e 20 61 20 5b 70 72 at work on a [pr
3680: 69 76 61 74 65 0a 6c 6f 63 61 6c 20 62 72 61 6e ivate.local bran
3690: 63 68 5d 5b 70 62 72 5d 2c 20 74 68 65 6e 20 73 ch][pbr], then s
36a0: 65 6e 64 20 61 20 5b 62 75 6e 64 6c 65 5d 5b 66 end a [bundle][f
36b0: 62 5d 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 b] instead of a
36c0: 70 61 74 63 68 2e 0a 0a 49 66 20 79 6f 75 27 76 patch...If you'v
36d0: 65 20 73 65 6e 74 20 70 61 74 63 68 65 73 20 74 e sent patches t
36e0: 6f 20 4d 79 53 51 4c 2b 2b 20 62 65 66 6f 72 65 o MySQL++ before
36f0: 20 61 6e 64 20 64 6f 6e 27 74 20 68 61 76 65 20 and don't have
3700: 61 20 46 6f 73 73 69 6c 0a 64 65 76 65 6c 6f 70 a Fossil.develop
3710: 65 72 20 6c 6f 67 69 6e 2c 20 61 6e 6f 74 68 65 er login, anothe
3720: 72 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 73 r alternative is
3730: 20 74 6f 20 61 73 6b 20 66 6f 72 20 61 20 6c 6f to ask for a lo
3740: 67 69 6e 20 62 65 66 6f 72 65 20 79 6f 75 0a 62 gin before you.b
3750: 65 67 69 6e 20 77 6f 72 6b 20 73 6f 20 74 68 61 egin work so tha
3760: 74 20 79 6f 75 72 20 63 68 61 6e 67 65 73 20 61 t your changes a
3770: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 re automatically
3780: 20 73 79 6e 63 27 64 20 74 6f 20 74 68 65 20 6d sync'd to the m
3790: 61 69 6e 0a 46 6f 73 73 69 6c 20 72 65 70 6f 73 ain.Fossil repos
37a0: 69 74 6f 72 79 20 61 73 20 79 6f 75 20 77 6f 72 itory as you wor
37b0: 6b 2c 20 73 6f 20 79 6f 75 20 64 6f 6e 27 74 20 k, so you don't
37c0: 68 61 76 65 20 74 6f 20 73 65 6e 64 20 62 75 6e have to send bun
37d0: 64 6c 65 73 20 6f 72 0a 70 61 74 63 68 20 66 69 dles or.patch fi
37e0: 6c 65 73 2e 20 57 65 20 67 65 6e 65 72 61 6c 6c les. We generall
37f0: 79 20 64 6f 6e 27 74 20 72 65 66 75 73 65 20 73 y don't refuse s
3800: 75 63 68 20 72 65 71 75 65 73 74 73 20 69 66 20 uch requests if
3810: 79 6f 75 27 76 65 20 61 6c 72 65 61 64 79 0a 70 you've already.p
3820: 72 6f 76 65 6e 20 79 6f 75 72 20 61 62 69 6c 69 roven your abili
3830: 74 79 20 74 6f 20 77 6f 72 6b 20 77 65 6c 6c 20 ty to work well
3840: 77 69 74 68 20 74 68 65 20 4d 79 53 51 4c 2b 2b with the MySQL++
3850: 20 70 72 6f 6a 65 63 74 2e 0a 0a 49 66 20 79 6f project...If yo
3860: 75 27 72 65 20 6d 61 6b 69 6e 67 20 61 20 70 61 u're making a pa
3870: 74 63 68 20 61 67 61 69 6e 73 74 20 61 20 4d 79 tch against a My
3880: 53 51 4c 2b 2b 20 64 69 73 74 72 69 62 75 74 69 SQL++ distributi
3890: 6f 6e 20 74 61 72 62 61 6c 6c 2c 20 74 68 65 6e on tarball, then
38a0: 0a 79 6f 75 20 63 61 6e 20 67 65 6e 65 72 61 74 .you can generat
38b0: 65 20 61 20 70 61 74 63 68 20 74 68 69 73 20 77 e a patch this w
38c0: 61 79 3a 0a 0a 20 20 20 20 24 20 64 69 66 66 20 ay:.. $ diff
38d0: 2d 72 75 4e 20 6d 79 73 71 6c 2b 2b 2d 6f 6c 64 -ruN mysql++-old
38e0: 64 69 72 20 6d 79 73 71 6c 2b 2b 2d 6e 65 77 64 dir mysql++-newd
38f0: 69 72 20 3e 20 6d 79 63 68 61 6e 67 65 2e 70 61 ir > mychange.pa
3900: 74 63 68 0a 0a 54 68 65 20 60 64 69 66 66 60 20 tch..The `diff`
3910: 63 6f 6d 6d 61 6e 64 20 69 73 20 70 61 72 74 20 command is part
3920: 6f 66 20 65 76 65 72 79 20 55 6e 69 78 20 61 6e of every Unix an
3930: 64 20 4c 69 6e 75 78 20 73 79 73 74 65 6d 2c 20 d Linux system,
3940: 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 0a 69 6e and should be.in
3950: 73 74 61 6c 6c 65 64 20 62 79 20 64 65 66 61 75 stalled by defau
3960: 6c 74 2e 20 49 66 20 79 6f 75 27 72 65 20 6f 6e lt. If you're on
3970: 20 61 20 57 69 6e 64 6f 77 73 20 6d 61 63 68 69 a Windows machi
3980: 6e 65 2c 20 47 4e 55 20 64 69 66 66 20 69 73 20 ne, GNU diff is
3990: 70 61 72 74 0a 6f 66 20 5b 43 79 67 77 69 6e 5d part.of [Cygwin]
39a0: 28 68 74 74 70 3a 2f 2f 63 79 67 77 69 6e 2e 63 (http://cygwin.c
39b0: 6f 6d 2f 29 2e 20 46 6f 73 73 69 6c 20 69 73 20 om/). Fossil is
39c0: 61 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 66 also available f
39d0: 6f 72 20 61 6c 6c 20 6f 66 0a 74 68 65 73 65 20 or all of.these
39e0: 73 79 73 74 65 6d 73 2e 20 54 68 65 72 65 20 61 systems. There a
39f0: 72 65 20 6e 6f 20 65 78 63 75 73 65 73 20 66 6f re no excuses fo
3a00: 72 20 6e 6f 74 20 62 65 69 6e 67 20 61 62 6c 65 r not being able
3a10: 20 74 6f 20 6d 61 6b 65 20 75 6e 69 66 69 65 64 to make unified
3a20: 0a 64 69 66 66 73 2e 20 3a 29 0a 0a 5b 66 62 5d .diffs. :)..[fb]
3a30: 3a 20 20 68 74 74 70 3a 2f 2f 66 6f 73 73 69 6c : http://fossil
3a40: 2d 73 63 6d 2e 6f 72 67 2f 69 6e 64 65 78 2e 68 -scm.org/index.h
3a50: 74 6d 6c 2f 68 65 6c 70 3f 63 6d 64 3d 62 75 6e tml/help?cmd=bun
3a60: 64 6c 65 0a 5b 70 62 72 5d 3a 20 68 74 74 70 73 dle.[pbr]: https
3a70: 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 ://tangentsoft.c
3a80: 6f 6d 2f 6d 79 73 71 6c 70 70 2f 66 69 6c 65 2f om/mysqlpp/file/
3a90: 48 41 43 4b 45 52 53 2e 6d 64 23 70 72 69 76 61 HACKERS.md#priva
3aa0: 74 65 0a 0a 0a 23 23 20 54 68 65 20 4d 79 53 51 te...## The MySQ
3ab0: 4c 2b 2b 20 43 6f 64 65 20 53 74 79 6c 65 0a 0a L++ Code Style..
3ac0: 45 76 65 72 79 20 63 6f 64 65 20 62 61 73 65 20 Every code base
3ad0: 73 68 6f 75 6c 64 20 68 61 76 65 20 61 20 63 6f should have a co
3ae0: 6d 6d 6f 6e 20 63 6f 64 65 20 73 74 79 6c 65 2e mmon code style.
3af0: 20 4c 6f 76 65 20 69 74 20 6f 72 0a 68 61 74 65 Love it or.hate
3b00: 20 69 74 2c 20 68 65 72 65 20 61 72 65 20 4d 79 it, here are My
3b10: 53 51 4c 2b 2b 27 73 20 63 75 72 72 65 6e 74 20 SQL++'s current
3b20: 63 6f 64 65 20 73 74 79 6c 65 20 72 75 6c 65 73 code style rules
3b30: 3a 0a 0a 0a 23 23 23 20 53 6f 75 72 63 65 20 43 :...### Source C
3b40: 6f 64 65 0a 0a 46 69 6c 65 20 74 79 70 65 73 3a ode..File types:
3b50: 20 60 61 63 60 2c 20 60 63 70 70 60 2c 20 60 68 `ac`, `cpp`, `h
3b60: 60 2c 20 60 69 6e 60 2c 20 60 6d 34 60 2c 20 60 `, `in`, `m4`, `
3b70: 70 6c 60 0a 0a 2d 20 20 20 54 61 62 73 20 66 6f pl`..- Tabs fo
3b80: 72 20 69 6e 64 65 6e 74 73 2c 20 73 69 7a 65 20 r indents, size
3b90: 34 0a 0a 2d 20 20 20 55 6e 69 78 20 6c 69 6e 65 4..- Unix line
3ba0: 20 65 6e 64 69 6e 67 73 2e 20 41 6e 79 20 64 65 endings. Any de
3bb0: 63 65 6e 74 20 70 72 6f 67 72 61 6d 6d 65 72 27 cent programmer'
3bc0: 73 20 65 64 69 74 6f 72 20 63 61 6e 20 63 6f 70 s editor can cop
3bd0: 65 20 77 69 74 68 0a 20 20 20 20 74 68 69 73 2c e with. this,
3be0: 20 65 76 65 6e 20 6f 6e 20 57 69 6e 64 6f 77 73 even on Windows
3bf0: 2e 0a 0a 2d 20 20 20 43 2f 43 2b 2b 20 72 75 6c ...- C/C++ rul
3c00: 65 73 3a 0a 0a 20 20 20 20 2d 20 20 20 42 61 73 es:.. - Bas
3c10: 65 20 77 68 69 74 65 73 70 61 63 65 20 73 74 79 e whitespace sty
3c20: 6c 65 20 69 73 20 41 54 26 54 69 73 68 3a 20 4b le is AT&Tish: K
3c30: 26 52 2f 53 74 72 6f 75 73 74 72 75 70 2c 20 70 &R/Stroustrup, p
3c40: 6c 75 73 20 61 20 6c 69 74 74 6c 65 0a 20 20 20 lus a little.
3c50: 20 20 20 20 20 6c 6f 63 61 6c 20 73 70 69 63 65 local spice
3c60: 2e 20 49 66 20 79 6f 75 20 68 61 76 65 20 74 68 . If you have th
3c70: 65 20 69 6e 64 65 6e 74 28 31 29 20 70 72 6f 67 e indent(1) prog
3c80: 72 61 6d 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 ram, the command
3c90: 20 69 73 3a 0a 0a 20 20 20 20 20 20 20 20 20 20 is:..
3ca0: 20 20 69 6e 64 65 6e 74 20 2d 6b 72 20 2d 6e 63 indent -kr -nc
3cb0: 65 20 2d 63 6c 69 34 20 2d 73 73 20 2d 64 69 31 e -cli4 -ss -di1
3cc0: 20 2d 70 73 6c 20 2d 74 73 34 20 46 49 4c 45 53 -psl -ts4 FILES
3cd0: 2e 2e 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 61 ..... Tha
3ce0: 74 20 69 73 2c 20 64 6f 6e 27 74 20 63 75 64 64 t is, don't cudd
3cf0: 6c 65 20 65 6c 73 65 2c 20 69 6e 64 65 6e 74 20 le else, indent
3d00: 63 61 73 65 20 73 74 61 74 65 6d 65 6e 74 20 6c case statement l
3d10: 61 62 65 6c 73 2c 20 73 70 61 63 65 0a 20 20 20 abels, space.
3d20: 20 20 20 20 20 62 65 66 6f 72 65 20 73 65 6d 69 before semi
3d30: 63 6f 6c 6f 6e 20 77 69 74 68 20 65 6d 70 74 79 colon with empty
3d40: 20 6c 6f 6f 70 20 62 6f 64 79 2c 20 6e 6f 20 65 loop body, no e
3d50: 78 74 72 61 20 73 70 61 63 65 20 62 65 74 77 65 xtra space betwe
3d60: 65 6e 20 61 0a 20 20 20 20 20 20 20 20 76 61 72 en a. var
3d70: 69 61 62 6c 65 20 74 79 70 65 20 61 6e 64 20 6e iable type and n
3d80: 61 6d 65 2c 20 72 65 74 75 72 6e 20 76 61 6c 75 ame, return valu
3d90: 65 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 6f 6e e of function on
3da0: 20 73 65 70 61 72 61 74 65 0a 20 20 20 20 20 20 separate.
3db0: 20 20 6c 69 6e 65 20 66 72 6f 6d 20 72 65 73 74 line from rest
3dc0: 20 6f 66 20 64 65 66 69 6e 69 74 69 6f 6e 2e 0a of definition..
3dd0: 0a 20 20 20 20 2d 20 20 20 43 6c 61 73 73 20 6e . - Class n
3de0: 61 6d 65 73 20 61 72 65 20 69 6e 20 60 43 61 6d ames are in `Cam
3df0: 65 6c 43 61 73 65 60 2c 20 75 70 70 65 72 63 61 elCase`, upperca
3e00: 73 65 64 20 66 69 72 73 74 20 6c 65 74 74 65 72 sed first letter
3e10: 0a 0a 20 20 20 20 2d 20 20 20 4d 65 74 68 6f 64 .. - Method
3e20: 20 6e 61 6d 65 73 20 61 72 65 20 69 6e 20 60 61 names are in `a
3e30: 6c 6c 5f 6c 6f 77 65 72 5f 63 61 73 65 5f 77 69 ll_lower_case_wi
3e40: 74 68 5f 75 6e 64 65 72 73 63 6f 72 65 73 28 29 th_underscores()
3e50: 60 3b 0a 20 20 20 20 20 20 20 20 64 69 74 74 6f `;. ditto
3e60: 20 6d 6f 73 74 20 6f 74 68 65 72 20 67 6c 6f 62 most other glob
3e70: 61 6c 20 73 79 6d 62 6f 6c 73 2e 0a 0a 20 20 20 al symbols...
3e80: 20 2d 20 20 20 4d 61 63 72 6f 20 6e 61 6d 65 73 - Macro names
3e90: 20 61 72 65 20 69 6e 20 60 41 4c 4c 5f 55 50 50 are in `ALL_UPP
3ea0: 45 52 43 41 53 45 5f 57 49 54 48 5f 55 4e 44 45 ERCASE_WITH_UNDE
3eb0: 52 53 43 4f 52 45 53 60 0a 0a 20 20 20 20 2d 20 RSCORES`.. -
3ec0: 20 20 44 6f 78 79 67 65 6e 20 63 6f 6d 6d 65 6e Doxygen commen
3ed0: 74 20 66 6f 72 20 61 6c 6c 20 70 75 62 6c 69 63 t for all public
3ee0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2c 20 75 declarations, u
3ef0: 6e 6c 65 73 73 20 74 68 65 72 65 20 69 73 20 61 nless there is a
3f00: 0a 20 20 20 20 20 20 20 20 76 65 72 79 20 67 6f . very go
3f10: 6f 64 20 72 65 61 73 6f 6e 20 74 6f 20 6b 65 65 od reason to kee
3f20: 70 20 74 68 65 20 74 68 69 6e 67 20 75 6e 64 6f p the thing undo
3f30: 63 75 6d 65 6e 74 65 64 2e 0a 0a 2d 20 20 20 50 cumented...- P
3f40: 65 72 6c 20 61 6e 64 20 73 68 65 6c 6c 20 73 63 erl and shell sc
3f50: 72 69 70 74 20 72 75 6c 65 73 20 61 72 65 20 6d ript rules are m
3f60: 6f 72 65 20 6f 72 20 6c 65 73 73 20 74 68 65 20 ore or less the
3f70: 73 61 6d 65 20 61 73 20 66 6f 72 20 43 2f 43 2b same as for C/C+
3f80: 2b 2c 0a 20 20 20 20 74 6f 20 74 68 65 20 65 78 +,. to the ex
3f90: 74 65 6e 74 20 74 68 69 73 20 6d 61 6b 65 73 20 tent this makes
3fa0: 73 65 6e 73 65 2e 0a 0a 0a 23 23 23 20 58 4d 4c sense....### XML
3fb0: 2f 48 54 4d 4c 20 44 69 61 6c 65 63 74 73 0a 0a /HTML Dialects..
3fc0: 46 69 6c 65 20 74 79 70 65 73 3a 20 60 62 6b 6c File types: `bkl
3fd0: 60 2c 20 60 64 62 78 60 2c 20 60 68 74 61 60 0a `, `dbx`, `hta`.
3fe0: 0a 2d 20 20 20 53 70 61 63 65 73 20 66 6f 72 20 .- Spaces for
3ff0: 69 6e 64 65 6e 74 73 2c 20 73 69 7a 65 20 32 2e indents, size 2.
4000: 20 53 68 61 6c 6c 6f 77 20 69 6e 64 65 6e 74 73 Shallow indents
4010: 20 64 75 65 20 74 6f 20 74 68 65 20 68 69 67 68 due to the high
4020: 20 6c 65 76 65 6c 20 6f 66 0a 20 20 20 20 6e 65 level of. ne
4030: 73 74 69 6e 67 20 6f 63 63 75 72 72 69 6e 67 20 sting occurring
4040: 69 6e 20 73 75 63 68 20 66 69 6c 65 73 2c 20 61 in such files, a
4050: 6e 64 20 73 70 61 63 65 73 20 62 65 63 61 75 73 nd spaces becaus
4060: 65 20 74 68 65 79 27 72 65 20 6e 6f 74 20 61 73 e they're not as
4070: 0a 20 20 20 20 61 6e 6e 6f 79 69 6e 67 20 61 74 . annoying at
4080: 20 73 68 61 6c 6c 6f 77 20 69 6e 64 65 6e 74 20 shallow indent
4090: 6c 65 76 65 6c 73 20 69 6e 20 65 64 69 74 6f 72 levels in editor
40a0: 73 20 74 68 61 74 20 64 6f 6e 27 74 20 74 72 65 s that don't tre
40b0: 61 74 20 73 70 61 63 65 0a 20 20 20 20 69 6e 64 at space. ind
40c0: 65 6e 74 73 20 6c 69 6b 65 20 74 61 62 73 2e 0a ents like tabs..
40d0: 0a 2d 20 20 20 55 6e 69 78 20 6c 69 6e 65 20 65 .- Unix line e
40e0: 6e 64 69 6e 67 73 2e 20 41 67 61 69 6e 2c 20 74 ndings. Again, t
40f0: 68 65 73 65 20 61 72 65 20 69 6e 74 65 6e 64 65 hese are intende
4100: 64 20 74 6f 20 62 65 20 76 69 65 77 65 64 20 69 d to be viewed i
4110: 6e 20 61 0a 20 20 20 20 70 72 6f 67 72 61 6d 6d n a. programm
4120: 65 72 27 73 20 74 65 78 74 20 65 64 69 74 6f 72 er's text editor
4130: 2c 20 77 68 69 63 68 20 73 68 6f 75 6c 64 20 77 , which should w
4140: 6f 72 6b 20 77 69 74 68 20 55 6e 69 78 20 6c 69 ork with Unix li
4150: 6e 65 20 65 6e 64 69 6e 67 73 0a 20 20 20 20 6e ne endings. n
4160: 6f 20 6d 61 74 74 65 72 20 74 68 65 20 70 6c 61 o matter the pla
4170: 74 66 6f 72 6d 2e 0a 0a 0a 23 23 23 20 50 6c 61 tform....### Pla
4180: 69 6e 20 54 65 78 74 20 46 69 6c 65 73 0a 0a 46 in Text Files..F
4190: 69 6c 65 20 74 79 70 65 73 3a 20 60 74 78 74 60 ile types: `txt`
41a0: 0a 0a 2d 20 20 20 53 70 61 63 65 73 20 66 6f 72 ..- Spaces for
41b0: 20 69 6e 64 65 6e 74 73 2c 20 73 69 7a 65 20 34 indents, size 4
41c0: 2e 20 53 70 61 63 65 73 20 62 65 63 61 75 73 65 . Spaces because
41d0: 20 73 75 63 68 20 66 69 6c 65 73 20 61 72 65 20 such files are
41e0: 6f 66 74 65 6e 0a 20 20 20 20 76 69 65 77 65 64 often. viewed
41f0: 20 69 6e 20 4e 6f 74 65 70 61 64 20 61 6e 64 20 in Notepad and
4200: 73 69 6d 69 6c 61 72 6c 79 20 63 72 69 70 70 6c similarly crippl
4210: 65 64 20 74 65 78 74 20 65 64 69 74 6f 72 73 20 ed text editors
4220: 77 68 69 63 68 20 75 73 65 20 61 0a 20 20 20 20 which use a.
4230: 64 65 66 61 75 6c 74 20 69 6e 64 65 6e 74 20 6c default indent l
4240: 65 76 65 6c 20 6f 66 20 38 2e 0a 0a 2d 20 20 20 evel of 8...-
4250: 44 4f 53 20 6c 69 6e 65 20 65 6e 64 69 6e 67 73 DOS line endings
4260: 2c 20 61 67 61 69 6e 20 66 6f 72 20 74 68 65 20 , again for the
4270: 4e 6f 74 65 70 61 64 20 72 65 61 73 6f 6e 2e 20 Notepad reason.
4280: 41 6e 64 20 6f 6e 20 6d 6f 64 65 72 6e 20 55 6e And on modern Un
4290: 69 78 79 0a 20 20 20 20 70 6c 61 74 66 6f 72 6d ixy. platform
42a0: 73 2c 20 74 68 65 20 74 6f 6f 6c 73 20 63 6f 70 s, the tools cop
42b0: 65 20 77 69 74 68 20 44 4f 53 20 6c 69 6e 65 20 e with DOS line
42c0: 65 6e 64 69 6e 67 73 20 72 65 61 73 6f 6e 61 62 endings reasonab
42d0: 6c 79 20 77 65 6c 6c 2e 0a 20 20 20 20 42 65 74 ly well.. Bet
42e0: 74 65 72 20 74 68 61 6e 20 74 68 65 20 63 6f 6e ter than the con
42f0: 76 65 72 73 65 2c 20 61 6e 79 77 61 79 2e 0a 0a verse, anyway...
4300: 0a 57 68 65 6e 20 69 6e 20 64 6f 75 62 74 2c 20 .When in doubt,
4310: 6d 69 6d 69 63 20 77 68 61 74 20 79 6f 75 20 73 mimic what you s
4320: 65 65 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e ee in the curren
4330: 74 20 63 6f 64 65 2e 20 57 68 65 6e 20 73 74 69 t code. When sti
4340: 6c 6c 20 69 6e 0a 64 6f 75 62 74 2c 20 61 73 6b ll in.doubt, ask
4350: 20 6f 6e 20 74 68 65 20 5b 6d 61 69 6c 69 6e 67 on the [mailing
4360: 20 6c 69 73 74 5d 5b 6d 6c 5d 2e 0a 0a 0a 23 23 list][ml]....##
4370: 20 54 65 73 74 69 6e 67 20 59 6f 75 72 20 50 72 Testing Your Pr
4380: 6f 70 6f 73 65 64 20 43 68 61 6e 67 65 0a 0a 4d oposed Change..M
4390: 79 53 51 4c 2b 2b 20 69 6e 63 6c 75 64 65 73 20 ySQL++ includes
43a0: 61 20 73 65 6c 66 2d 74 65 73 74 20 6d 65 63 68 a self-test mech
43b0: 61 6e 69 73 6d 20 63 61 6c 6c 65 64 20 60 64 74 anism called `dt
43c0: 65 73 74 60 2e 20 49 74 27 73 20 61 20 42 6f 75 est`. It's a Bou
43d0: 72 6e 65 0a 73 68 65 6c 6c 20 73 63 72 69 70 74 rne.shell script
43e0: 2c 20 72 75 6e 20 6d 75 63 68 20 6c 69 6b 65 20 , run much like
43f0: 60 65 78 72 75 6e 60 3a 0a 0a 20 20 20 20 24 20 `exrun`:.. $
4400: 2e 2f 64 74 65 73 74 20 5b 2d 73 20 73 65 72 76 ./dtest [-s serv
4410: 65 72 5f 61 64 64 72 5d 20 5b 2d 75 20 75 73 65 er_addr] [-u use
4420: 72 5d 20 5b 2d 70 20 70 61 73 73 77 6f 72 64 5d r] [-p password]
4430: 0a 0a 54 68 69 73 20 61 75 74 6f 6d 61 74 69 63 ..This automatic
4440: 61 6c 6c 79 20 72 75 6e 73 20 6d 6f 73 74 20 6f ally runs most o
4450: 66 20 74 68 65 20 65 78 61 6d 70 6c 65 73 2c 20 f the examples,
4460: 63 61 70 74 75 72 65 73 20 74 68 65 20 6f 75 74 captures the out
4470: 70 75 74 73 20 74 6f 20 61 0a 66 69 6c 65 2c 20 puts to a.file,
4480: 61 6e 64 20 74 68 65 6e 20 63 6f 6d 70 61 72 65 and then compare
4490: 73 20 74 68 61 74 20 74 6f 20 61 20 6b 6e 6f 77 s that to a know
44a0: 6e 2d 67 6f 6f 64 20 72 75 6e 27 73 20 6f 75 74 n-good run's out
44b0: 70 75 74 73 2c 20 73 74 6f 72 65 64 20 69 6e 0a puts, stored in.
44c0: 60 62 6d 61 72 6b 2e 74 78 74 60 2e 20 53 6f 2c `bmark.txt`. So,
44d0: 20 62 65 66 6f 72 65 20 79 6f 75 20 73 75 62 6d before you subm
44e0: 69 74 20 61 20 70 61 74 63 68 2c 20 72 75 6e 20 it a patch, run
44f0: 60 64 74 65 73 74 60 20 74 6f 20 73 65 65 20 69 `dtest` to see i
4500: 66 0a 61 6e 79 74 68 69 6e 67 20 68 61 73 20 63 f.anything has c
4510: 68 61 6e 67 65 64 2e 20 49 66 20 73 6f 6d 65 74 hanged. If somet
4520: 68 69 6e 67 20 68 61 73 20 61 6e 64 20 79 6f 75 hing has and you
4530: 20 63 61 6e 27 74 20 61 63 63 6f 75 6e 74 20 66 can't account f
4540: 6f 72 20 69 74 2c 20 69 74 0a 72 65 70 72 65 73 or it, it.repres
4550: 65 6e 74 73 20 61 20 70 72 6f 62 6c 65 6d 20 74 ents a problem t
4560: 68 61 74 20 79 6f 75 27 6c 6c 20 68 61 76 65 20 hat you'll have
4570: 74 6f 20 66 69 78 20 62 65 66 6f 72 65 20 73 75 to fix before su
4580: 62 6d 69 74 74 69 6e 67 20 74 68 65 0a 70 61 74 bmitting the.pat
4590: 63 68 2e 20 49 66 20 69 74 20 67 69 76 65 73 20 ch. If it gives
45a0: 61 6e 20 65 78 70 65 63 74 65 64 20 63 68 61 6e an expected chan
45b0: 67 65 2c 20 72 65 6d 6f 76 65 20 60 62 6d 61 72 ge, remove `bmar
45c0: 6b 2e 74 78 74 60 2c 20 72 65 2d 72 75 6e 0a 60 k.txt`, re-run.`
45d0: 64 74 65 73 74 60 2c 20 61 6e 64 20 69 6e 63 6c dtest`, and incl
45e0: 75 64 65 20 74 68 65 20 60 62 6d 61 72 6b 2e 74 ude the `bmark.t
45f0: 78 74 60 20 64 69 66 66 73 20 69 6e 20 79 6f 75 xt` diffs in you
4600: 72 20 70 61 74 63 68 2e 20 54 68 69 73 0a 63 6f r patch. This.co
4610: 6d 6d 75 6e 69 63 61 74 65 73 20 74 6f 20 75 73 mmunicates to us
4620: 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 79 the fact that y
4630: 6f 75 20 6b 6e 6f 77 20 74 68 65 72 65 20 61 72 ou know there ar
4640: 65 20 64 69 66 66 65 72 65 6e 63 65 73 20 61 6e e differences an
4650: 64 20 77 61 6e 74 0a 74 68 65 20 70 61 74 63 68 d want.the patch
4660: 20 65 76 61 6c 75 61 74 65 64 20 61 6e 79 77 61 evaluated anywa
4670: 79 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 77 65 y. Otherwise, we
4680: 20 61 72 65 20 6c 69 6b 65 6c 79 20 74 6f 20 76 are likely to v
4690: 69 65 77 20 74 68 65 20 63 68 61 6e 67 65 0a 61 iew the change.a
46a0: 73 20 61 20 62 75 67 2e 0a 0a 60 64 74 65 73 74 s a bug...`dtest
46b0: 60 20 61 6c 73 6f 20 72 75 6e 73 20 61 6c 6c 20 ` also runs all
46c0: 6f 66 20 74 68 65 20 75 6e 69 74 20 74 65 73 74 of the unit test
46d0: 73 20 69 6e 20 60 74 65 73 74 2f 2a 60 2e 20 54 s in `test/*`. T
46e0: 68 65 20 70 75 72 70 6f 73 65 20 6f 66 0a 60 74 he purpose of.`t
46f0: 65 73 74 2f 2a 60 20 69 73 20 64 69 66 66 65 72 est/*` is differ
4700: 65 6e 74 20 66 72 6f 6d 20 74 68 61 74 20 6f 66 ent from that of
4710: 20 60 65 78 61 6d 70 6c 65 73 2f 2a 60 3a 0a 0a `examples/*`:..
4720: 2d 20 20 20 60 74 65 73 74 2f 2a 60 20 61 72 65 - `test/*` are
4730: 20 75 6e 69 74 20 74 65 73 74 73 3a 20 65 61 63 unit tests: eac
4740: 68 20 74 65 73 74 73 20 6f 6e 6c 79 20 6f 6e 65 h tests only one
4750: 20 4d 79 53 51 4c 2b 2b 20 63 6c 61 73 73 2c 0a MySQL++ class,.
4760: 20 20 20 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 independent
4770: 6f 66 20 65 76 65 72 79 74 68 69 6e 67 20 65 6c of everything el
4780: 73 65 2e 20 42 65 63 61 75 73 65 20 44 42 20 61 se. Because DB a
4790: 63 63 65 73 73 20 72 65 71 75 69 72 65 73 20 73 ccess requires s
47a0: 65 76 65 72 61 6c 0a 20 20 20 20 4d 79 53 51 4c everal. MySQL
47b0: 2b 2b 20 63 6c 61 73 73 65 73 20 74 6f 20 63 6f ++ classes to co
47c0: 6f 70 65 72 61 74 65 2c 20 61 20 75 6e 69 74 20 operate, a unit
47d0: 74 65 73 74 20 6e 65 76 65 72 20 61 63 63 65 73 test never acces
47e0: 73 65 73 20 61 20 64 61 74 61 62 61 73 65 3b 0a ses a database;.
47f0: 20 20 20 20 68 65 6e 63 65 2c 20 6e 6f 20 75 6e hence, no un
4800: 69 74 20 74 65 73 74 20 6e 65 65 64 73 20 44 42 it test needs DB
4810: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 61 72 61 connection para
4820: 6d 65 74 65 72 73 2e 20 20 57 65 20 77 69 6c 6c meters. We will
4830: 20 6e 65 76 65 72 0a 20 20 20 20 67 65 74 20 31 never. get 1
4840: 30 30 25 20 63 6f 64 65 20 63 6f 76 65 72 61 67 00% code coverag
4850: 65 20 66 72 6f 6d 20 60 74 65 73 74 2f 2a 60 20 e from `test/*`
4860: 61 6c 6f 6e 65 2e 0a 0a 2d 20 20 20 60 65 78 61 alone...- `exa
4870: 6d 70 6c 65 73 2f 2a 60 20 63 61 6e 20 62 65 20 mples/*` can be
4880: 74 68 6f 75 67 68 74 20 6f 66 20 61 73 20 69 6e thought of as in
4890: 74 65 67 72 61 74 69 6f 6e 20 74 65 73 74 73 3a tegration tests:
48a0: 20 74 68 65 79 20 74 65 73 74 20 6d 61 6e 79 0a they test many.
48b0: 20 20 20 20 70 69 65 63 65 73 20 6f 66 20 4d 79 pieces of My
48c0: 53 51 4c 2b 2b 20 77 6f 72 6b 69 6e 67 20 74 6f SQL++ working to
48d0: 67 65 74 68 65 72 2c 20 61 63 63 65 73 73 69 6e gether, accessin
48e0: 67 20 61 20 72 65 61 6c 20 64 61 74 61 62 61 73 g a real databas
48f0: 65 0a 20 20 20 20 73 65 72 76 65 72 2e 20 49 6e e. server. In
4900: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 65 6e 73 addition to ens
4910: 75 72 69 6e 67 20 74 68 61 74 20 61 6c 6c 20 74 uring that all t
4920: 68 65 20 70 69 65 63 65 73 20 77 6f 72 6b 20 74 he pieces work t
4930: 6f 67 65 74 68 65 72 0a 20 20 20 20 61 6e 64 20 ogether. and
4940: 67 69 76 65 20 63 6f 6e 73 69 73 74 65 6e 74 20 give consistent
4950: 72 65 73 75 6c 74 73 20 66 72 6f 6d 20 70 6c 61 results from pla
4960: 74 66 6f 72 6d 20 74 6f 20 70 6c 61 74 66 6f 72 tform to platfor
4970: 6d 20 61 6e 64 20 72 75 6e 20 74 6f 0a 20 20 20 m and run to.
4980: 20 72 75 6e 2c 20 69 74 20 61 6c 73 6f 20 66 69 run, it also fi
4990: 6c 6c 73 20 69 6e 20 67 61 70 73 20 69 6e 20 74 lls in gaps in t
49a0: 68 65 20 63 6f 64 65 20 63 6f 76 65 72 61 67 65 he code coverage
49b0: 20 77 68 65 72 65 20 6e 6f 20 73 75 69 74 61 62 where no suitab
49c0: 6c 65 0a 20 20 20 20 60 74 65 73 74 2f 2a 60 20 le. `test/*`
49d0: 6d 6f 64 75 6c 65 20 63 6f 75 6c 64 20 62 65 20 module could be
49e0: 63 72 65 61 74 65 64 2e 0a 0a 2d 20 20 20 60 74 created...- `t
49f0: 65 73 74 2f 2a 60 20 70 72 6f 67 72 61 6d 73 20 est/*` programs
4a00: 61 6c 77 61 79 73 20 72 75 6e 20 73 69 6c 65 6e always run silen
4a10: 74 6c 79 20 6f 6e 20 73 75 63 63 65 73 73 2c 20 tly on success,
4a20: 77 72 69 74 69 6e 67 20 6f 75 74 70 75 74 0a 20 writing output.
4a30: 20 20 20 6f 6e 6c 79 20 74 6f 20 69 6e 64 69 63 only to indic
4a40: 61 74 65 20 74 65 73 74 20 66 61 69 6c 75 72 65 ate test failure
4a50: 73 2e 20 54 68 69 73 20 69 73 20 62 65 63 61 75 s. This is becau
4a60: 73 65 20 74 68 65 79 27 72 65 20 75 73 75 61 6c se they're usual
4a70: 6c 79 20 6f 6e 6c 79 0a 20 20 20 20 72 75 6e 20 ly only. run
4a80: 76 69 61 20 60 64 74 65 73 74 60 2e 0a 0a 2d 20 via `dtest`...-
4a90: 20 20 60 65 78 61 6d 70 6c 65 73 2f 2a 60 20 61 `examples/*` a
4aa0: 72 65 20 61 6c 77 61 79 73 20 22 6e 6f 69 73 79 re always "noisy
4ab0: 2c 22 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 ," regardless of
4ac0: 20 77 68 65 74 68 65 72 20 74 68 65 79 20 73 75 whether they su
4ad0: 63 63 65 65 64 0a 20 20 20 20 6f 72 20 66 61 69 cceed. or fai
4ae0: 6c 2c 20 62 65 63 61 75 73 65 20 74 68 65 79 27 l, because they'
4af0: 72 65 20 61 6c 73 6f 20 72 75 6e 20 69 6e 74 65 re also run inte
4b00: 72 61 63 74 69 76 65 6c 79 20 62 79 20 70 65 6f ractively by peo
4b10: 70 6c 65 20 6c 65 61 72 6e 69 6e 67 0a 20 20 20 ple learning.
4b20: 20 74 6f 20 75 73 65 20 4d 79 53 51 4c 2b 2b 2e to use MySQL++.
4b30: 0a 0a 50 61 74 63 68 65 73 20 73 68 6f 75 6c 64 ..Patches should
4b40: 20 69 6e 63 6c 75 64 65 20 74 65 73 74 73 20 69 include tests i
4b50: 66 20 74 68 65 79 20 69 6e 74 72 6f 64 75 63 65 f they introduce
4b60: 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 61 6c 69 new functionali
4b70: 74 79 20 6f 72 20 66 69 78 0a 61 20 62 75 67 20 ty or fix.a bug
4b80: 74 68 61 74 20 74 68 65 20 65 78 69 73 74 69 6e that the existin
4b90: 67 20 74 65 73 74 20 63 6f 76 65 72 61 67 65 20 g test coverage
4ba0: 66 61 69 6c 65 64 20 74 6f 20 63 61 74 63 68 2e failed to catch.
4bb0: 20 20 49 66 20 74 68 65 20 74 65 73 74 20 69 73 If the test is
4bc0: 0a 6e 6f 69 73 79 2c 20 6e 65 65 64 73 20 44 42 .noisy, needs DB
4bd0: 20 61 63 63 65 73 73 2c 20 6f 72 20 74 65 73 74 access, or test
4be0: 73 20 6d 75 6c 74 69 70 6c 65 20 70 61 72 74 73 s multiple parts
4bf0: 20 6f 66 20 74 68 65 20 6c 69 62 72 61 72 79 20 of the library
4c00: 61 74 20 6f 6e 63 65 2c 0a 69 74 20 67 6f 65 73 at once,.it goes
4c10: 20 69 6e 20 60 65 78 61 6d 70 6c 65 73 2f 2a 60 in `examples/*`
4c20: 2e 20 49 66 20 79 6f 75 72 20 63 68 61 6e 67 65 . If your change
4c30: 20 61 66 66 65 63 74 73 20 6f 6e 6c 79 20 6f 6e affects only on
4c40: 65 20 63 6c 61 73 73 20 69 6e 0a 4d 79 53 51 4c e class in.MySQL
4c50: 2b 2b 20 61 6e 64 20 74 65 73 74 69 6e 67 20 69 ++ and testing i
4c60: 74 20 63 61 6e 20 62 65 20 64 6f 6e 65 20 77 69 t can be done wi
4c70: 74 68 6f 75 74 20 69 6e 73 74 61 6e 74 69 61 74 thout instantiat
4c80: 69 6e 67 20 6f 74 68 65 72 20 4d 79 53 51 4c 2b ing other MySQL+
4c90: 2b 0a 63 6c 61 73 73 65 73 20 e2 80 94 20 6f 74 +.classes — ot
4ca0: 68 65 72 20 74 68 61 6e 20 62 79 20 63 6f 6d 70 her than by comp
4cb0: 6f 73 69 74 69 6f 6e 2c 20 6f 66 20 63 6f 75 72 osition, of cour
4cc0: 73 65 20 e2 80 94 20 69 74 20 73 68 6f 75 6c 64 se — it should
4cd0: 20 67 6f 20 69 6e 0a 60 74 65 73 74 2f 2a 60 2e go in.`test/*`.
4ce0: 0a 0a 49 6e 20 67 65 6e 65 72 61 6c 2c 20 70 72 ..In general, pr
4cf0: 65 66 65 72 20 6d 6f 64 69 66 79 69 6e 67 20 61 efer modifying a
4d00: 6e 20 65 78 69 73 74 69 6e 67 20 60 65 78 61 6d n existing `exam
4d10: 70 6c 65 73 2f 2a 60 20 6f 72 20 60 74 65 73 74 ples/*` or `test
4d20: 2f 2a 60 0a 70 72 6f 67 72 61 6d 2e 20 20 41 64 /*`.program. Ad
4d30: 64 20 61 20 6e 65 77 20 6f 6e 65 20 6f 6e 6c 79 d a new one only
4d40: 20 69 66 20 79 6f 75 27 72 65 20 69 6e 74 72 6f if you're intro
4d50: 64 75 63 69 6e 67 20 62 72 61 6e 64 20 6e 65 77 ducing brand new
4d60: 0a 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f .functionality o
4d70: 72 20 77 68 65 6e 20 61 20 67 69 76 65 6e 20 66 r when a given f
4d80: 65 61 74 75 72 65 20 63 75 72 72 65 6e 74 6c 79 eature currently
4d90: 20 68 61 73 20 6e 6f 20 74 65 73 74 20 61 74 20 has no test at
4da0: 61 6c 6c 2e 0a 0a 42 65 77 61 72 65 20 74 68 61 all...Beware tha
4db0: 74 20 74 68 65 20 70 72 69 6d 61 72 79 20 72 6f t the primary ro
4dc0: 6c 65 20 74 68 65 20 65 78 61 6d 70 6c 65 73 20 le the examples
4dd0: 69 73 20 74 6f 20 69 6c 6c 75 73 74 72 61 74 65 is to illustrate
4de0: 20 70 6f 69 6e 74 73 20 69 6e 20 74 68 65 0a 75 points in the.u
4df0: 73 65 72 20 6d 61 6e 75 61 6c 2e 20 49 66 20 61 ser manual. If a
4e00: 6e 20 65 78 69 73 74 69 6e 67 20 65 78 61 6d 70 n existing examp
4e10: 6c 65 20 64 6f 65 73 20 73 6f 6d 65 74 68 69 6e le does somethin
4e20: 67 20 73 69 6d 69 6c 61 72 20 74 6f 20 77 68 61 g similar to wha
4e30: 74 20 61 0a 70 72 6f 70 65 72 20 74 65 73 74 20 t a.proper test
4e40: 77 6f 75 6c 64 20 6e 65 65 64 20 74 6f 20 64 6f would need to do
4e50: 20 61 6e 64 20 74 68 65 20 74 65 73 74 20 64 6f and the test do
4e60: 65 73 6e 27 74 20 63 68 61 6e 67 65 20 74 68 65 esn't change the
4e70: 20 6e 61 74 75 72 65 20 6f 66 0a 74 68 65 20 65 nature of.the e
4e80: 78 61 6d 70 6c 65 2c 20 64 6f 6e 27 74 20 77 6f xample, don't wo
4e90: 72 72 79 20 61 62 6f 75 74 20 63 68 61 6e 67 69 rry about changi
4ea0: 6e 67 20 74 68 65 20 65 78 61 6d 70 6c 65 20 63 ng the example c
4eb0: 6f 64 65 2e 20 49 66 20 79 6f 75 72 20 74 65 73 ode. If your tes
4ec0: 74 0a 77 6f 75 6c 64 20 63 68 61 6e 67 65 20 74 t.would change t
4ed0: 68 65 20 6e 61 74 75 72 65 20 6f 66 20 74 68 65 he nature of the
4ee0: 20 65 78 61 6d 70 6c 65 2c 20 79 6f 75 20 65 69 example, you ei
4ef0: 74 68 65 72 20 6e 65 65 64 20 74 6f 20 64 6f 20 ther need to do
4f00: 74 68 65 20 74 65 73 74 0a 61 6e 6f 74 68 65 72 the test.another
4f10: 20 77 61 79 2c 20 6f 72 20 61 6c 73 6f 20 73 75 way, or also su
4f20: 62 6d 69 74 20 61 20 63 68 61 6e 67 65 20 74 6f bmit a change to
4f30: 20 60 64 6f 63 2f 75 73 65 72 6d 61 6e 2f 2a 2e `doc/userman/*.
4f40: 64 62 78 60 20 74 68 61 74 0a 69 6e 63 6f 72 70 dbx` that.incorp
4f50: 6f 72 61 74 65 73 20 74 68 65 20 64 69 66 66 65 orates the diffe
4f60: 72 65 6e 63 65 2e 0a 0a 0a 23 23 20 41 64 64 69 rence....## Addi
4f70: 6e 67 20 53 75 70 70 6f 72 74 20 66 6f 72 20 61 ng Support for a
4f80: 20 44 69 66 66 65 72 65 6e 74 20 43 6f 6d 70 69 Different Compi
4f90: 6c 65 72 0a 0a 41 73 20 64 65 73 63 72 69 62 65 ler..As describe
4fa0: 64 20 61 62 6f 76 65 2c 20 4d 79 53 51 4c 2b 2b d above, MySQL++
4fb0: 20 75 73 65 73 20 74 68 65 20 42 61 6b 65 66 69 uses the Bakefi
4fc0: 6c 65 20 73 79 73 74 65 6d 20 66 6f 72 20 63 72 le system for cr
4fd0: 65 61 74 69 6e 67 0a 70 72 6f 6a 65 63 74 20 66 eating.project f
4fe0: 69 6c 65 73 20 61 6e 64 20 6d 61 6b 65 66 69 6c iles and makefil
4ff0: 65 73 2e 20 54 68 69 73 20 61 6c 6c 6f 77 73 20 es. This allows
5000: 75 73 20 74 6f 20 6d 61 6b 65 20 63 68 61 6e 67 us to make chang
5010: 65 73 20 74 6f 20 61 20 73 69 6e 67 6c 65 0a 73 es to a single.s
5020: 65 74 20 6f 66 20 66 69 6c 65 73 2c 20 61 6e 64 et of files, and
5030: 20 68 61 76 65 20 74 68 65 20 70 72 6f 70 65 72 have the proper
5040: 20 63 68 61 6e 67 65 73 20 62 65 20 6d 61 64 65 changes be made
5050: 20 74 6f 20 61 6c 6c 20 67 65 6e 65 72 61 74 65 to all generate
5060: 64 0a 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 d.project files
5070: 61 6e 64 20 6d 61 6b 65 66 69 6c 65 73 2e 20 49 and makefiles. I
5080: 6e 20 74 68 65 20 70 61 73 74 2c 20 77 65 20 75 n the past, we u
5090: 73 65 64 20 6d 6f 72 65 20 61 64 2d 68 6f 63 20 sed more ad-hoc
50a0: 73 79 73 74 65 6d 73 2c 0a 61 6e 64 20 77 65 27 systems,.and we'
50b0: 64 20 66 72 65 71 75 65 6e 74 6c 79 20 66 6f 72 d frequently for
50c0: 67 65 74 20 74 6f 20 75 70 64 61 74 65 20 69 6e get to update in
50d0: 64 69 76 69 64 75 61 6c 20 70 72 6f 6a 65 63 74 dividual project
50e0: 20 66 69 6c 65 73 20 61 6e 64 0a 6d 61 6b 65 66 files and.makef
50f0: 69 6c 65 73 2c 20 73 6f 20 61 74 20 61 6e 79 20 iles, so at any
5100: 67 69 76 65 6e 20 74 69 6d 65 2c 20 61 74 20 6c given time, at l
5110: 65 61 73 74 20 6f 6e 65 20 74 61 72 67 65 74 20 east one target
5120: 77 61 73 20 6c 69 6b 65 6c 79 20 74 6f 20 62 65 was likely to be
5130: 0a 62 72 6f 6b 65 6e 2e 0a 0a 49 66 20 4d 79 53 .broken...If MyS
5140: 51 4c 2b 2b 20 64 6f 65 73 6e 27 74 20 63 75 72 QL++ doesn't cur
5150: 72 65 6e 74 6c 79 20 73 68 69 70 20 77 69 74 68 rently ship with
5160: 20 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 6f project files o
5170: 72 20 6d 61 6b 65 66 69 6c 65 73 20 74 75 6e 65 r makefiles tune
5180: 64 0a 66 6f 72 20 79 6f 75 72 20 63 6f 6d 70 69 d.for your compi
5190: 6c 65 72 20 6f 66 20 63 68 6f 69 63 65 2c 20 79 ler of choice, y
51a0: 6f 75 20 6e 65 65 64 20 74 6f 20 77 6f 72 6b 20 ou need to work
51b0: 74 68 72 6f 75 67 68 20 74 68 65 20 42 61 6b 65 through the Bake
51c0: 66 69 6c 65 0a 6d 65 63 68 61 6e 69 73 6d 20 74 file.mechanism t
51d0: 6f 20 61 64 64 20 73 75 70 70 6f 72 74 2e 20 57 o add support. W
51e0: 65 27 72 65 20 6e 6f 74 20 77 69 6c 6c 69 6e 67 e're not willing
51f0: 20 74 6f 20 64 6f 20 61 64 2d 68 6f 63 20 70 6c to do ad-hoc pl
5200: 61 74 66 6f 72 6d 0a 73 75 70 70 6f 72 74 20 61 atform.support a
5210: 6e 79 20 6d 6f 72 65 2c 20 73 6f 20 70 6c 65 61 ny more, so plea
5220: 73 65 20 64 6f 6e 27 74 20 61 73 6b 20 69 66 20 se don't ask if
5230: 79 6f 75 20 63 61 6e 20 73 65 6e 64 20 75 73 20 you can send us
5240: 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 0a 69 6e project files.in
5250: 73 74 65 61 64 3b 20 77 65 20 64 6f 6e 27 74 20 stead; we don't
5260: 77 61 6e 74 20 74 68 65 6d 2e 0a 0a 49 66 20 79 want them...If y
5270: 6f 75 20 77 61 6e 74 20 74 6f 20 70 6f 72 74 20 ou want to port
5280: 4d 79 53 51 4c 2b 2b 20 74 6f 20 61 6e 6f 74 68 MySQL++ to anoth
5290: 65 72 20 70 6c 61 74 66 6f 72 6d 2c 20 77 65 20 er platform, we
52a0: 6e 65 65 64 20 74 6f 20 62 65 20 63 6f 6e 66 69 need to be confi
52b0: 64 65 6e 74 0a 74 68 61 74 20 74 68 65 20 65 6e dent.that the en
52c0: 74 69 72 65 20 6c 69 62 72 61 72 79 20 77 6f 72 tire library wor
52d0: 6b 73 20 6f 6e 20 79 6f 75 72 20 70 6c 61 74 66 ks on your platf
52e0: 6f 72 6d 20 62 65 66 6f 72 65 20 77 65 27 6c 6c orm before we'll
52f0: 20 61 63 63 65 70 74 0a 70 61 74 63 68 65 73 2e accept.patches.
5300: 20 49 6e 20 74 68 65 20 70 61 73 74 2c 20 77 65 In the past, we
5310: 27 76 65 20 68 61 64 20 62 72 6f 6b 65 6e 20 70 've had broken p
5320: 6f 72 74 73 20 74 68 61 74 20 77 65 72 65 20 6d orts that were m
5330: 69 73 73 69 6e 67 20 69 6d 70 6f 72 74 61 6e 74 issing important
5340: 0a 6c 69 62 72 61 72 79 20 66 65 61 74 75 72 65 .library feature
5350: 73 2c 20 6f 72 20 74 68 61 74 20 63 72 61 73 68 s, or that crash
5360: 65 64 20 77 68 65 6e 20 62 75 69 6c 74 20 69 6e ed when built in
5370: 20 63 65 72 74 61 69 6e 20 77 61 79 73 2e 20 46 certain ways. F
5380: 65 77 20 70 65 6f 70 6c 65 0a 77 69 6c 6c 20 6b ew people.will k
5390: 6e 6f 77 69 6e 67 6c 79 20 75 73 65 20 61 20 63 nowingly use a c
53a0: 72 69 70 70 6c 65 64 20 76 65 72 73 69 6f 6e 20 rippled version
53b0: 6f 66 20 4d 79 53 51 4c 2b 2b 2c 20 73 69 6e 63 of MySQL++, sinc
53c0: 65 20 74 68 65 72 65 20 61 72 65 0a 75 73 75 61 e there are.usua
53d0: 6c 6c 79 20 61 63 63 65 70 74 61 62 6c 65 20 61 lly acceptable a
53e0: 6c 74 65 72 6e 61 74 69 76 65 73 2e 20 20 54 68 lternatives. Th
53f0: 65 72 65 66 6f 72 65 2c 20 73 75 63 68 20 70 6f erefore, such po
5400: 72 74 73 20 62 65 63 6f 6d 65 0a 6d 61 69 6e 74 rts become.maint
5410: 65 6e 61 6e 63 65 20 62 61 67 67 61 67 65 20 77 enance baggage w
5420: 69 74 68 20 6c 69 74 74 6c 65 20 63 6f 6d 70 65 ith little compe
5430: 6e 73 61 74 69 6e 67 20 76 61 6c 75 65 2e 0a 0a nsating value...
5440: 0a 23 23 20 3c 61 20 6e 61 6d 65 3d 22 70 72 69 .## <a name="pri
5450: 76 61 74 65 22 3e 3c 2f 61 3e 4d 61 69 6e 74 61 vate"></a>Mainta
5460: 69 6e 69 6e 67 20 61 20 50 72 69 76 61 74 65 20 ining a Private
5470: 52 65 70 6f 73 69 74 6f 72 79 0a 0a 41 6c 74 68 Repository..Alth
5480: 6f 75 67 68 20 46 6f 73 73 69 6c 20 73 79 6e 63 ough Fossil sync
5490: 73 20 63 68 61 6e 67 65 73 20 62 61 63 6b 20 74 s changes back t
54a0: 6f 20 74 68 65 20 60 74 61 6e 67 65 6e 74 73 6f o the `tangentso
54b0: 66 74 2e 63 6f 6d 2f 6d 79 73 71 6c 70 70 60 0a ft.com/mysqlpp`.
54c0: 46 6f 73 73 69 6c 20 72 65 70 6f 73 69 74 6f 72 Fossil repositor
54d0: 79 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 74 y by default, it
54e0: 20 69 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 is possible to
54f0: 6d 61 69 6e 74 61 69 6e 20 61 20 70 72 69 76 61 maintain a priva
5500: 74 65 20 63 6f 70 79 0a 74 68 61 74 20 73 69 6d te copy.that sim
5510: 70 6c 79 20 70 75 6c 6c 73 20 63 68 61 6e 67 65 ply pulls change
5520: 73 20 69 6e 20 6f 63 63 61 73 69 6f 6e 61 6c 6c s in occasionall
5530: 79 2e 0a 0a 54 68 65 20 66 69 72 73 74 20 73 74 y...The first st
5540: 65 70 20 69 73 20 74 6f 20 74 75 72 6e 20 6f 66 ep is to turn of
5550: 66 20 74 68 65 20 61 75 74 6f 2d 73 79 6e 63 20 f the auto-sync
5560: 66 65 61 74 75 72 65 3a 0a 0a 20 20 20 20 20 24 feature:.. $
5570: 20 66 6f 73 73 69 6c 20 73 65 74 20 61 75 74 6f fossil set auto
5580: 73 79 6e 63 20 30 0a 0a 54 68 65 6e 2c 20 49 20 sync 0..Then, I
5590: 72 65 63 6f 6d 6d 65 6e 64 20 74 68 61 74 20 79 recommend that y
55a0: 6f 75 20 6d 61 6b 65 20 61 6e 79 20 6c 6f 63 61 ou make any loca
55b0: 6c 20 63 68 61 6e 67 65 73 20 6f 6e 20 61 20 62 l changes on a b
55c0: 72 61 6e 63 68 3a 0a 0a 20 20 20 20 2e 2e 2e 68 ranch:.. ...h
55d0: 61 63 6b 2c 20 68 61 63 6b 2c 20 68 61 63 6b 2e ack, hack, hack.
55e0: 2e 2e 0a 20 20 20 20 24 20 66 6f 73 73 69 6c 20 ... $ fossil
55f0: 63 69 20 2d 2d 62 72 61 6e 63 68 20 6d 79 2d 6c ci --branch my-l
5600: 6f 63 61 6c 2d 62 72 61 6e 63 68 0a 0a 41 66 74 ocal-branch..Aft
5610: 65 72 20 79 6f 75 20 67 69 76 65 20 74 68 65 20 er you give the
5620: 60 2d 2d 62 72 61 6e 63 68 60 20 6f 70 74 69 6f `--branch` optio
5630: 6e 20 6f 6e 20 61 20 63 68 65 63 6b 69 6e 2c 20 n on a checkin,
5640: 46 6f 73 73 69 6c 20 61 75 74 6f 6d 61 74 69 63 Fossil automatic
5650: 61 6c 6c 79 0a 73 77 69 74 63 68 65 73 20 79 6f ally.switches yo
5660: 75 72 20 6c 6f 63 61 6c 20 63 68 65 63 6b 6f 75 ur local checkou
5670: 74 20 74 6f 20 74 68 61 74 20 62 72 61 6e 63 68 t to that branch
5680: 2c 20 73 6f 20 74 68 61 74 20 61 6c 6c 20 66 75 , so that all fu
5690: 72 74 68 65 72 0a 63 68 65 63 6b 69 6e 73 20 63 rther.checkins c
56a0: 61 6e 20 62 65 20 6d 61 64 65 20 77 69 74 68 6f an be made witho
56b0: 75 74 20 74 68 65 20 60 2d 2d 62 72 61 6e 63 68 ut the `--branch
56c0: 60 20 6f 70 74 69 6f 6e 2e 20 20 54 6f 20 67 65 ` option. To ge
56d0: 74 20 62 61 63 6b 20 74 6f 20 74 68 65 0a 74 72 t back to the.tr
56e0: 75 6e 6b 2c 20 79 6f 75 27 64 20 73 61 79 20 60 unk, you'd say `
56f0: 66 6f 73 73 69 6c 20 75 70 20 74 72 75 6e 6b 60 fossil up trunk`
5700: 2c 20 62 75 74 20 75 6e 64 65 72 20 74 68 69 73 , but under this
5710: 20 77 6f 72 6b 66 6c 6f 77 2c 20 74 68 65 20 6e workflow, the n
5720: 65 65 64 0a 66 6f 72 20 74 68 61 74 20 77 69 6c eed.for that wil
5730: 6c 20 62 65 20 72 61 72 65 2e 0a 0a 57 68 65 6e l be rare...When
5740: 20 73 6f 6d 65 74 68 69 6e 67 20 68 61 70 70 65 something happe
5750: 6e 73 20 6f 6e 20 74 68 65 20 6f 66 66 69 63 69 ns on the offici
5760: 61 6c 20 74 72 75 6e 6b 20 6f 6e 20 60 74 61 6e al trunk on `tan
5770: 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 60 20 74 68 gentsoft.com` th
5780: 61 74 0a 79 6f 75 20 77 61 6e 74 20 70 75 6c 6c at.you want pull
5790: 65 64 20 69 6e 74 6f 20 79 6f 75 72 20 70 72 69 ed into your pri
57a0: 76 61 74 65 20 72 65 70 6f 73 69 74 6f 72 79 2c vate repository,
57b0: 20 73 61 79 3a 0a 0a 20 20 20 20 24 20 66 6f 73 say:.. $ fos
57c0: 73 69 6c 20 73 79 6e 63 0a 20 20 20 20 24 20 66 sil sync. $ f
57d0: 6f 73 73 69 6c 20 6d 65 72 67 65 20 74 72 75 6e ossil merge trun
57e0: 6b 0a 0a 54 68 65 20 66 69 72 73 74 20 63 6f 6d k..The first com
57f0: 6d 61 6e 64 20 70 75 6c 6c 73 20 61 6c 6c 20 72 mand pulls all r
5800: 65 6d 6f 74 65 20 63 68 61 6e 67 65 73 20 69 6e emote changes in
5810: 74 6f 20 79 6f 75 72 20 6c 6f 63 61 6c 20 63 6c to your local cl
5820: 6f 6e 65 2c 20 62 75 74 0a 73 69 6e 63 65 20 74 one, but.since t
5830: 68 6f 73 65 20 63 68 61 6e 67 65 73 20 64 6f 6e hose changes don
5840: 27 74 20 61 66 66 65 63 74 20 79 6f 75 72 20 70 't affect your p
5850: 72 69 76 61 74 65 20 62 72 61 6e 63 68 2c 20 79 rivate branch, y
5860: 6f 75 20 77 6f 6e 27 74 20 73 65 65 20 61 6e 79 ou won't see any
5870: 0a 69 6d 6d 65 64 69 61 74 65 20 63 68 61 6e 67 .immediate chang
5880: 65 2e 20 54 68 65 20 73 65 63 6f 6e 64 20 61 74 e. The second at
5890: 74 65 6d 70 74 73 20 74 6f 20 6d 65 72 67 65 20 tempts to merge
58a0: 74 68 65 20 74 72 75 6e 6b 20 62 72 61 6e 63 68 the trunk branch
58b0: 27 73 0a 63 68 61 6e 67 65 73 20 73 69 6e 63 65 's.changes since
58c0: 20 74 68 65 20 6c 61 73 74 20 62 72 61 6e 63 68 the last branch
58d0: 20 6f 72 20 6d 65 72 67 65 20 70 6f 69 6e 74 20 or merge point
58e0: 69 6e 74 6f 20 79 6f 75 72 20 70 72 69 76 61 74 into your privat
58f0: 65 20 62 72 61 6e 63 68 2e 0a 0a 57 68 65 74 68 e branch...Wheth
5900: 65 72 20 74 68 65 20 6d 65 72 67 65 20 69 73 20 er the merge is
5910: 73 75 63 63 65 73 73 66 75 6c 20 6f 72 20 6e 6f successful or no
5920: 74 2c 20 46 6f 73 73 69 6c 20 64 6f 65 73 20 6e t, Fossil does n
5930: 6f 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a 6d ot immediately.m
5940: 6f 64 69 66 79 20 79 6f 75 72 20 63 6c 6f 6e 65 odify your clone
5950: 2c 20 6f 6e 6c 79 20 74 68 65 20 77 6f 72 6b 69 , only the worki
5960: 6e 67 20 63 68 65 63 6b 6f 75 74 20 64 69 72 65 ng checkout dire
5970: 63 74 6f 72 79 2e 20 59 6f 75 20 6d 75 73 74 20 ctory. You must
5980: 74 68 65 6e 0a 73 61 79 20 60 66 6f 73 73 69 6c then.say `fossil
5990: 20 63 69 60 20 6f 6e 63 65 20 79 6f 75 27 72 65 ci` once you're
59a0: 20 68 61 70 70 79 20 77 69 74 68 20 74 68 65 20 happy with the
59b0: 6d 65 72 67 65 2e 20 55 6e 74 69 6c 20 74 68 65 merge. Until the
59c0: 6e 2c 20 61 6c 6c 20 74 68 65 0a 75 73 75 61 6c n, all the.usual
59d0: 20 46 6f 73 73 69 6c 20 63 6f 6d 6d 61 6e 64 73 Fossil commands
59e0: 20 6c 69 6b 65 20 60 66 6f 73 73 69 6c 20 64 69 like `fossil di
59f0: 66 66 60 20 61 6e 64 20 60 66 6f 73 73 69 6c 20 ff` and `fossil
5a00: 73 74 61 74 75 73 60 20 77 69 6c 6c 20 68 65 6c status` will hel
5a10: 70 0a 79 6f 75 20 63 6f 6d 65 20 74 6f 20 74 68 p.you come to th
5a20: 61 74 20 64 65 63 69 73 69 6f 6e 2e 0a 0a 49 66 at decision...If
5a30: 20 79 6f 75 20 65 76 65 72 20 64 65 63 69 64 65 you ever decide
5a40: 20 74 6f 20 63 6f 6e 74 72 69 62 75 74 65 20 79 to contribute y
5a50: 6f 75 72 20 70 72 69 76 61 74 65 20 62 72 61 6e our private bran
5a60: 63 68 20 74 6f 20 74 68 65 20 4d 79 53 51 4c 2b ch to the MySQL+
5a70: 2b 0a 70 72 6f 6a 65 63 74 2c 20 74 68 65 72 65 +.project, there
5a80: 20 61 72 65 20 61 20 63 6f 75 70 6c 65 20 6f 66 are a couple of
5a90: 20 65 61 73 79 20 77 61 79 73 20 74 6f 20 61 63 easy ways to ac
5aa0: 68 69 65 76 65 20 74 68 61 74 2e 20 41 73 6b 20 hieve that. Ask
5ab0: 61 62 6f 75 74 20 69 74 0a 6f 6e 20 74 68 65 20 about it.on the
5ac0: 5b 6d 61 69 6c 69 6e 67 20 6c 69 73 74 5d 5b 6d [mailing list][m
5ad0: 6c 5d 20 69 66 20 79 6f 75 20 66 69 6e 64 20 79 l] if you find y
5ae0: 6f 75 72 73 65 6c 66 20 69 6e 20 74 68 69 73 20 ourself in this
5af0: 73 69 74 75 61 74 69 6f 6e 2e 0a situation..