OLD | NEW |
1 Name: sqlite | 1 Name: sqlite |
2 URL: http://sqlite.org/ | 2 URL: http://sqlite.org/ |
3 Version: 3.7.6.3 | 3 Version: 3.8.7.4 |
4 Included In Release: Yes | 4 Included In Release: Yes |
5 Security Critical: Yes | 5 Security Critical: Yes |
6 License: Public domain | 6 License: Public domain |
7 | 7 |
8 1) Managing differences between SQLite core and Chromium's version. | 8 1) Managing differences between SQLite core and Chromium's version. |
9 2) Making changes to Chromium SQLite. | 9 2) Making changes to Chromium SQLite. |
10 3) Import new release of SQLite. | 10 3) Import new release of SQLite. |
11 4) Running SQLite's test suite within the Chromium checkout. | 11 4) Running SQLite's test suite within the Chromium checkout. |
12 | 12 |
13 --- | 13 --- |
(...skipping 29 matching lines...) Expand all Loading... |
43 | 43 |
44 Once your patch is complete, squash it down into a reasonable CL, then | 44 Once your patch is complete, squash it down into a reasonable CL, then |
45 re-generate the patches. This is a truncated version of the import flow. The | 45 re-generate the patches. This is a truncated version of the import flow. The |
46 following is written like a shell script to allow copy/paste to a shell, ignore | 46 following is written like a shell script to allow copy/paste to a shell, ignore |
47 comments and change the obvious lines. These instructions should work on Linux | 47 comments and change the obvious lines. These instructions should work on Linux |
48 or OSX. They may assume a modern version of git (I'm using 2.2.1). | 48 or OSX. They may assume a modern version of git (I'm using 2.2.1). |
49 | 49 |
50 # Everything based in sqlite subdir. | 50 # Everything based in sqlite subdir. |
51 cd third_party/sqlite | 51 cd third_party/sqlite |
52 | 52 |
53 BASE=3070603 | 53 BASE=3080704 |
54 | 54 |
55 #### Create a reference branch. | 55 #### Create a reference branch. |
56 git checkout -b sqlite_${BASE} master | 56 git checkout -b sqlite_${BASE} master |
57 git rm -rf src | 57 git rm -rf src |
58 cp -a sqlite-src-${BASE} src | 58 cp -a sqlite-src-${BASE} src |
59 # -f includes ignored files, of which there are a couple. | 59 # -f includes ignored files, of which there are a couple. |
60 git add -f src/ | 60 git add -f src/ |
61 git commit -m "Reset to sqlite-src-${BASE}" | 61 git commit -m "Reset to sqlite-src-${BASE}" |
62 # This branch is unlikely to build. | 62 # This branch is unlikely to build. |
63 | 63 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 rm -rf src | 119 rm -rf src |
120 cp -a sqlite-src-${BASE} src | 120 cp -a sqlite-src-${BASE} src |
121 # -f includes ignored files, of which there are a couple. | 121 # -f includes ignored files, of which there are a couple. |
122 git add -f src/ | 122 git add -f src/ |
123 git commit -m "Reset to sqlite-src-${BASE}" | 123 git commit -m "Reset to sqlite-src-${BASE}" |
124 # This branch is unlikely to build. | 124 # This branch is unlikely to build. |
125 | 125 |
126 #### Convert patches into CLs. | 126 #### Convert patches into CLs. |
127 git checkout -b sqlite_${BASE}_patched master | 127 git checkout -b sqlite_${BASE}_patched master |
128 git rebase sqlite_${BASE} | 128 git rebase sqlite_${BASE} |
129 git am patches/*.patch | 129 git am --keep-non-patch patches/*.patch |
130 git diff master | 130 git diff master |
131 # This branch should be identical to master. | 131 # This branch should be identical to master. |
132 | 132 |
133 #### Create new-SQLite reference branch. | 133 #### Create new-SQLite reference branch. |
134 git checkout -b sqlite_${VERSION} master | 134 git checkout -b sqlite_${VERSION} master |
135 git rebase sqlite_${BASE} | 135 git rebase sqlite_${BASE} |
136 # SQLite's download page is at <http://www.sqlite.org/download.html>. Scroll to | 136 # SQLite's download page is at <http://www.sqlite.org/download.html>. Scroll to |
137 # "Legacy Source Code Distribution Formats", and grab sqlite-src-<VERSION>.zip. | 137 # "Legacy Source Code Distribution Formats", and grab sqlite-src-<VERSION>.zip. |
138 # Unzip it and pull it into the repo. | 138 # Unzip it and pull it into the repo. |
139 wget http://www.sqlite.org/2014/sqlite-src-${VERSION}.zip | 139 wget http://www.sqlite.org/2014/sqlite-src-${VERSION}.zip |
140 unzip sqlite-src-${VERSION}.zip | 140 unzip sqlite-src-${VERSION}.zip |
141 rm sqlite-src-${VERSION}.zip | 141 rm sqlite-src-${VERSION}.zip |
142 # -f includes ignored files, of which there are a couple. | 142 # -f includes ignored files, of which there are a couple. |
143 git add -f sqlite-src-${VERSION}/ | 143 git add -f sqlite-src-${VERSION}/ |
144 # Sometimes DOS line endings sneak into the source code. This command works on | 144 # Sometimes DOS line endings sneak into the source code. This command works on |
145 # OSX and Linux and fixes those files, but double-check the results before | 145 # OSX and Linux and fixes those files, but double-check the results before |
146 # committing: | 146 # committing: |
147 egrep --exclude="*.eps" --exclude="*.ico" --exclude="*.jpg" \ | 147 egrep --exclude="*.eps" --exclude="*.ico" --exclude="*.jpg" \ |
148 --exclude="*.gif" --exclude="*.tiff" --exclude="*.vsix" -URl '\r' . | \ | 148 --exclude="*.gif" --exclude="*.tiff" --exclude="*.vsix" -URl '\r' . | \ |
149 LANG=C xargs sed -i~ -e $'s/\r$//' | 149 LANG=C xargs sed -i~ -e $'s/\r$//' |
150 git commit -m "Begin import of sqlite-src-${VERSION}"es | 150 git commit -m "Begin import of sqlite-src-${VERSION}" sqlite-src-${VERSION} |
151 sqlite-src-${VERSION} | |
152 rm -rf src | 151 rm -rf src |
153 cp -a sqlite-src-${VERSION} src | 152 cp -a sqlite-src-${VERSION} src |
154 # -f includes ignored files, of which there are a couple. | 153 # -f includes ignored files, of which there are a couple. |
155 git add -f src/ | 154 git add -f src/ |
156 git commit -m "Update src to sqlite-src-${VERSION}" src/ | 155 git commit -m "Update src to sqlite-src-${VERSION}" src/ |
157 # This branch is unlikely to build. | 156 # This branch is unlikely to build. |
158 | 157 |
159 #### Create a branch for merging the CLs to the new SQLite. | 158 #### Create a branch for merging the CLs to the new SQLite. |
160 git checkout -b sqlite_${VERSION}_patched master | 159 git checkout -b sqlite_${VERSION}_patched master |
161 git rebase sqlite_${VERSION} | 160 git rebase sqlite_${VERSION} |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 sudo port install tcl | 214 sudo port install tcl |
216 TODO(shess): OSX works fine with either tcl8.5 or tcl8.6, but on Ubuntu 14.04.1 | 215 TODO(shess): OSX works fine with either tcl8.5 or tcl8.6, but on Ubuntu 14.04.1 |
217 with tcl8.6, I see crashes in some of the WAL tests. Revisit using tcl8.6 on | 216 with tcl8.6, I see crashes in some of the WAL tests. Revisit using tcl8.6 on |
218 next import of SQLite. | 217 next import of SQLite. |
219 TODO(shess): That Homebrew command has installed tcl8.6 for a few years, so the | 218 TODO(shess): That Homebrew command has installed tcl8.6 for a few years, so the |
220 above may require some adaptation of the build files. | 219 above may require some adaptation of the build files. |
221 | 220 |
222 cd third_party/sqlite/src | 221 cd third_party/sqlite/src |
223 mkdir build | 222 mkdir build |
224 cd build | 223 cd build |
225 make -f ../Makefile.linux-gcc testfixture sqlite3 | 224 make -j -f ../Makefile.linux-gcc testfixture sqlite3 |
226 # NOTE(shess): 64-bit builds under 3.7.6.3 show various warnings. AFAICT they | |
227 # don't impact test operation. Later versions are better so I'm not fixing it. | |
228 make -f ../Makefile.linux-gcc test > /tmp/test.log | 225 make -f ../Makefile.linux-gcc test > /tmp/test.log |
229 egrep 'errors out of' /tmp/test.log | 226 egrep 'errors out of' /tmp/test.log |
230 # Show broken tests: | 227 # Show broken tests: |
231 egrep 'Failures on these tests:' /tmp/test.log | 228 egrep 'Failures on these tests:' /tmp/test.log |
232 # Broken tests will also show lines ending in "..." instead of "... Ok". | 229 # Broken tests will also show lines ending in "..." instead of "... Ok". |
233 | 230 |
234 In version Right now on OSX, I see no failures: | 231 In version 3.8.7.4 on OSX 10.9.5, I see: |
235 0 errors out of 77849 tests | 232 6 errors out of 138390 tests |
| 233 The failed tests are: |
| 234 pager4-1.3 pager4-1.4 pager4-1.5 pager4-1.9 pager4-1.10 pager4-1.11 |
| 235 This is due to the change in os_unix.c fileHasMoved() to support WebDatabase. |
| 236 Commenting out the early return allows them to succeed. |
236 | 237 |
237 In version 3.7.6.3 on Ubuntu 14.04 I see some failures: | 238 In version 3.8.7.4 on Ubuntu 14.04 I see: |
238 83 errors out of 78604 tests | 239 9 errors out of 138920 tests |
239 - precision in formatting numbers in enc4.test. | 240 The failed tests are: |
240 - case sensitivity in nan.test. | 241 oserror-1.1.1 oserror-1.1.2 oserror-1.1.3 |
241 - oserror-1.1.[1-3] fail because there are too many fds available. Fixed with | 242 pager4-1.3 pager4-1.4 pager4-1.5 pager4-1.9 pager4-1.10 pager4-1.11 |
242 "ulimit -n 1024". | 243 The oserror tests fail because there are too many fds available, and can be |
| 244 fixed by running "ulimit -n 1024" before the test. The pager4 tests are failing |
| 245 for the same reason as above. |
243 | 246 |
244 -- | 247 -- |
245 | 248 |
246 NOTE(shess): On Ubuntu it is possible to run the tests in a tmpfs something | 249 NOTE(shess): On Ubuntu it is possible to run the tests in a tmpfs something |
247 like: | 250 like: |
248 | 251 |
249 TMPFS=/dev/shm/sqlite_build | 252 TMPFS=/dev/shm/sqlite_build |
250 BUILD=$PWD | 253 BUILD=$PWD |
251 mkdir $TMPFS | 254 mkdir $TMPFS |
252 (cd $TMPFS ; $BUILD/testfixture $BUILD/../test/veryquick.test >/tmp/test.log) | 255 (cd $TMPFS ; $BUILD/testfixture $BUILD/../test/veryquick.test >/tmp/test.log) |
253 | 256 |
254 This is faster, but it is plausible that different things are being tested than | 257 This is faster, but it is plausible that different things are being tested than |
255 real-world use. | 258 real-world use. |
OLD | NEW |