| 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 |