| OLD | NEW |
| (Empty) |
| 1 Instructions for importing a new release of sqlite from sqlite.org. | |
| 2 | |
| 3 First, you need to be on Linux. | |
| 4 | |
| 5 Find the release you want at: | |
| 6 http://www.sqlite.org/cvstrac/timeline | |
| 7 | |
| 8 Search for "Milestone", and find the appropriate release. Click | |
| 9 through, and snag the "Date" for use in DATE line below. | |
| 10 Unfortunately, the actual displayed date string on that page will not | |
| 11 work, you have to make it YYYY/MM/DD. [TODO(shess) Determine if the | |
| 12 fact that sqlite.org thinks it's running under UTC is relevant.] | |
| 13 | |
| 14 DATE='2007/01/24 09:54:56' | |
| 15 | |
| 16 # Get to the third_party/sqlite directory in your Chromium client. | |
| 17 cd ../third_party/sqlite | |
| 18 | |
| 19 # Run the super awesome automatic merge tool (requires kdiff3). | |
| 20 # NOTE(shess): The following (which runs google_generate_preprocessed.sh) will | |
| 21 # produce different output on grhat versus goobuntu; I've been running it on | |
| 22 # goobuntu. | |
| 23 ./google_update_sqlite.sh "$DATE" | |
| 24 | |
| 25 # Resolve any conflicts. Figure out if we've got everything we should | |
| 26 # have (see below), or if we can omit any changes we no longer need. | |
| 27 | |
| 28 # TODO(shess) If we don't want the CVS dirs. | |
| 29 # find sqlite_vendor -name CVS -execdir rm -rf {} + -prune | |
| 30 | |
| 31 # Find a sucker. Send review. | |
| 32 # TODO(shess) Describe an appropriate comment style. Seems like it | |
| 33 # should include the DATE line, and the sqlite version number. | |
| 34 | |
| 35 | |
| 36 -------------------------------------------- | |
| 37 | |
| 38 Why all this convolution? The problem being solved is that we want to | |
| 39 harvest changes from the sqlite CVS tree, and merge them with any | |
| 40 local changes we make. In CVS, you would do this using a "vendor | |
| 41 import", which is essentially a branch dedictated to the vendor | |
| 42 version which is merged with local changes. | |
| 43 | |
| 44 third_party/sqlite_vendor/... is the CVS checkout for a particular | |
| 45 build from sqlite.org. third_party/sqlite_google/... is the local | |
| 46 version, with our local modifications. So we update the sqlite_vendor | |
| 47 tree, then use perforce to downintegrate changes into our | |
| 48 locally-modified tree. The downintegrate will call out any | |
| 49 conflicting changes, but will otherwise just merge things together. | |
| 50 Basically, sqlite_vendor is a gateway between CVS and perforce. | |
| 51 | |
| 52 Scott Hess <shess@google.com>, April 9, 2007. | |
| 53 | |
| 54 -------------------------------------------- | |
| 55 | |
| 56 How to run the SQLite tests for the Gears version of SQLite on Linux. | |
| 57 | |
| 58 cd ../third_party/sqlite_google/ | |
| 59 mkdir build | |
| 60 cd build | |
| 61 make -f ../Makefile.linux-gcc testfixture | |
| 62 make -f ../Makefile.linux-gcc test > /tmp/test.log | |
| 63 egrep -v 'Ok$' /tmp/test.log | |
| 64 # When run on a locally-mounted disk, my output ends with: | |
| 65 # 0 errors out of 57887 tests | |
| 66 | |
| 67 Scott Hess <shess@google.com>, December 11, 2007 | |
| 68 | |
| 69 -------------------------------------------- | |
| 70 | |
| 71 As of September 12, 2008, these are our changes from sqlite_vendor: | |
| 72 | |
| 73 - fts2.c disables fts2_tokenizer(). | |
| 74 - sqlite3Poison() in src/btree.c. | |
| 75 - BEGIN defaults to BEGIN IMMEDIATE in parse.y. | |
| 76 - Tweak to SQLITE_EXTENSION_INIT* in sqlite3ext.h. | |
| 77 - That implied a change in src/test_autoext.c for testing. | |
| 78 - Added fts.test and fts1.test in tests, modified quick.test. | |
| 79 - src/os_symbian.cc. | |
| 80 - Modifications to Makefile.linux-gcc and main.mk for compiling | |
| 81 SQLite tests. | |
| 82 - Compile warning fixed in func.c (check if this is still needed) | |
| 83 - Fixed a typo bug in fts2_icu.c: "strlen(nInput)" (filed upstream as | |
| 84 http://www.sqlite.org/cvstrac/tktview?tn=3543) | |
| 85 | |
| 86 Changes from Chrome: | |
| 87 - I marked all changes I made with "evanm", so you can find them with | |
| 88 "grep evanm *". | |
| 89 - Most files include sqlite3ext.h with SQLITE_CORE #defined, but two don't: | |
| 90 fts2_tokenizer.c and icu.c. Without this #define, the calls in | |
| 91 fts2_tokenizer.c try to go through some pointer to the sqlite API instead | |
| 92 of calling the functions directly (to work as a loadable module), but then | |
| 93 crash (because the other files never initialize that loadable module | |
| 94 support). As a hack I #defined it in these files, but it'd be nice to | |
| 95 figure out what really ought to happen here (perhaps this file is new and | |
| 96 hasn't been tested to verify it works right). Update: Seems this is an | |
| 97 issue we get because we're using fts2 instead of fts3. | |
| 98 - shell_icu.c is a Chrome-specific file used to load our ICU data. shell.c | |
| 99 has been modifed to call into shell_icu.c. | |
| 100 - fts2_icu.c has a critical bug. U8_NEXT is used over a UTF-16 string. It's | |
| 101 rep$ by U16_NEXT (jungshik) | |
| 102 - Added a new function sqlite3Preload we use to prime the database cache. It | |
| 103 allows much faster performance by reading the file in one contiguous | |
| 104 operation rather than bringing it in organically, which involves a lot of | |
| 105 seeking. | |
| OLD | NEW |