summaryrefslogtreecommitdiff
path: root/vendor/modernc.org/sqlite/generator.go
diff options
context:
space:
mode:
authorLibravatar dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2024-03-04 09:42:11 +0000
committerLibravatar GitHub <noreply@github.com>2024-03-04 09:42:11 +0000
commitadb4cdcf6c9eacd369eaaf5b21774b198d57c040 (patch)
treea4f9c8fe2ce147fa952bcb795690afb9bb2affcb /vendor/modernc.org/sqlite/generator.go
parent[bugfix] update postgresqlstmt to correctly use postgres err hook (#2711) (diff)
downloadgotosocial-adb4cdcf6c9eacd369eaaf5b21774b198d57c040.tar.xz
[chore]: Bump modernc.org/sqlite from 1.28.0 to 1.29.2 (#2718)
Diffstat (limited to 'vendor/modernc.org/sqlite/generator.go')
-rw-r--r--vendor/modernc.org/sqlite/generator.go887
1 files changed, 0 insertions, 887 deletions
diff --git a/vendor/modernc.org/sqlite/generator.go b/vendor/modernc.org/sqlite/generator.go
deleted file mode 100644
index f43866919..000000000
--- a/vendor/modernc.org/sqlite/generator.go
+++ /dev/null
@@ -1,887 +0,0 @@
-// Copyright 2017 The Sqlite Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build generator
-// +build generator
-
-//TODO 2023-02-23, netbsd/amd64 fails generating SQLite 3.41:
-//
-// C front end 36/85: testdata/sqlite-src-3410000/ext/recover/sqlite3recover.c ... testdata/sqlite-src-3410000/ext/recover/sqlite3recover.c:2023:41: front-end: undefined: SQLITE_FCNTL_RESET_CACHE
-
-package main
-
-import (
- "archive/zip"
- "bufio"
- "bytes"
- "flag"
- "fmt"
- "io"
- "net/http"
- "os"
- "os/exec"
- "path/filepath"
- "runtime"
- "sort"
- "strings"
-
- "modernc.org/ccgo/v3/lib"
-)
-
-// gcc
-// -g
-// -O2
-// -DSQLITE_OS_UNIX=1
-// -I.
-// -I/home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src
-// -I/home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/rtree
-// -I/home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/icu
-// -I/home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/fts3
-// -I/home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/async
-// -I/home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/session
-// -I/home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/userauth
-// -D_HAVE_SQLITE_CONFIG_H
-// -DBUILD_sqlite
-// -DNDEBUG
-// -I/usr/include/tcl8.6
-// -DSQLITE_THREADSAFE=1
-// -DSQLITE_HAVE_ZLIB=1
-// -DSQLITE_NO_SYNC=1
-// -DSQLITE_TEMP_STORE=1
-// -DSQLITE_TEST=1
-// -DSQLITE_CRASH_TEST=1
-// -DTCLSH_INIT_PROC=sqlite3TestInit
-// -DSQLITE_SERVER=1
-// -DSQLITE_PRIVATE=
-// -DSQLITE_CORE
-// -DBUILD_sqlite
-// -DSQLITE_SERIES_CONSTRAINT_VERIFY=1
-// -DSQLITE_DEFAULT_PAGE_SIZE=1024
-// -DSQLITE_ENABLE_STMTVTAB
-// -DSQLITE_ENABLE_DBPAGE_VTAB
-// -DSQLITE_ENABLE_BYTECODE_VTAB
-// -DSQLITE_ENABLE_DESERIALIZE
-// -o testfixture
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test1.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test2.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test3.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test4.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test5.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test6.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test7.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test8.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test9.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_autoext.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_async.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_backup.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_bestindex.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_blob.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_btree.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_config.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_delete.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_demovfs.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_devsym.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_fs.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_func.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_hexio.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_init.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_intarray.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_journal.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_malloc.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_md5.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_multiplex.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_mutex.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_onefile.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_osinst.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_pcache.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_quota.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_rtree.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_schema.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_server.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_superlock.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_syscall.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_tclsh.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_tclvar.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_thread.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_vdbecov.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_vfs.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_windirent.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_window.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/test_wsd.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/fts3/fts3_term.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/fts3/fts3_test.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/session/test_session.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/rbu/test_rbu.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/expert/sqlite3expert.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/expert/test_expert.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/amatch.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/carray.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/closure.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/csv.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/decimal.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/eval.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/explain.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/fileio.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/fuzzer.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/fts5/fts5_tcl.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/fts5/fts5_test_mi.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/fts5/fts5_test_tok.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/ieee754.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/mmapwarm.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/nextchar.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/normalize.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/percentile.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/prefixes.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/regexp.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/remember.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/series.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/spellfix.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/totype.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/unionvtab.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/wholenumber.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/misc/zipfile.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/ext/userauth/userauth.c
-// /home/jnml/src/modernc.org/sqlite/testdata/SQLite-3c5e63c2/src/tclsqlite.c
-// sqlite3.c
-// -L/usr/lib/x86_64-linux-gnu
-// -ltcl8.6
-// -ldl
-// -lz
-// -lpthread
-
-const (
- volatiles = "-volatile=sqlite3_io_error_pending,sqlite3_open_file_count,sqlite3_pager_readdb_count,sqlite3_pager_writedb_count,sqlite3_pager_writej_count,sqlite3_search_count,sqlite3_sort_count,saved_cnt,randomnessPid"
-)
-
-// 2022-11-27 Removing -DSQLITE_ENABLE_SNAPSHOT from configTest. This #define
-// makes a single test fail on linux/ppc64le. That test is run only when the
-// -DSQLITE_ENABLE_SNAPSHOT is present when compiling the testfixture. When
-// investigating the failure it turns out this #define is actually NOT present
-// when doing '$ ./configure && make tcltest' in sqlite-src-3400000, ie. in the
-// original C code.
-//
-// libtool: link: gcc -g -O2 -DSQLITE_OS_UNIX=1 -I. -I/home/jnml/sqlite-src-3400000/src -I/home/jnml/sqlite-src-3400000/ext/rtree -I/home/jnml/sqlite-src-3400000/ext/icu -I/home/jnml/sqlite-src-3400000/ext/fts3 -I/home/jnml/sqlite-src-3400000/ext/async -I/home/jnml/sqlite-src-3400000/ext/session -I/home/jnml/sqlite-src-3400000/ext/userauth -D_HAVE_SQLITE_CONFIG_H -DBUILD_sqlite -DNDEBUG -I/usr/include/tcl8.6 -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_HAVE_ZLIB=1 -DSQLITE_NO_SYNC=1 -DSQLITE_TEMP_STORE=1 -DSQLITE_TEST=1 -DSQLITE_CRASH_TEST=1 -DTCLSH_INIT_PROC=sqlite3TestInit -DSQLITE_SERVER=1 -DSQLITE_PRIVATE= -DSQLITE_CORE -DBUILD_sqlite -DSQLITE_SERIES_CONSTRAINT_VERIFY=1 -DSQLITE_DEFAULT_PAGE_SIZE=1024 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_CKSUMVFS_STATIC -o testfixture ...
-
-var (
- configProduction = []string{
- "-DHAVE_USLEEP",
- "-DLONGDOUBLE_TYPE=double",
- "-DSQLITE_CORE",
- "-DSQLITE_DEFAULT_MEMSTATUS=0",
- "-DSQLITE_ENABLE_COLUMN_METADATA",
- "-DSQLITE_ENABLE_DBSTAT_VTAB",
- "-DSQLITE_ENABLE_FTS5",
- "-DSQLITE_ENABLE_GEOPOLY",
- "-DSQLITE_ENABLE_MATH_FUNCTIONS",
- "-DSQLITE_ENABLE_MEMORY_MANAGEMENT",
- "-DSQLITE_ENABLE_OFFSET_SQL_FUNC",
- "-DSQLITE_ENABLE_PREUPDATE_HOOK",
- "-DSQLITE_ENABLE_RBU",
- "-DSQLITE_ENABLE_RTREE",
- "-DSQLITE_ENABLE_SESSION",
- "-DSQLITE_ENABLE_SNAPSHOT",
- "-DSQLITE_ENABLE_STAT4",
- "-DSQLITE_ENABLE_UNLOCK_NOTIFY", // Adds sqlite3_unlock_notify().
- "-DSQLITE_LIKE_DOESNT_MATCH_BLOBS",
- "-DSQLITE_MUTEX_APPDEF=1",
- "-DSQLITE_MUTEX_NOOP",
- "-DSQLITE_SOUNDEX",
- "-DSQLITE_THREADSAFE=1",
- //DONT "-DNDEBUG", // To enable GO_GENERATE=-DSQLITE_DEBUG
- //DONT "-DSQLITE_DQS=0", // testfixture
- //DONT "-DSQLITE_NO_SYNC=1",
- //DONT "-DSQLITE_OMIT_DECLTYPE", // testfixture
- //DONT "-DSQLITE_OMIT_DEPRECATED", // mptest
- //DONT "-DSQLITE_OMIT_LOAD_EXTENSION", // mptest
- //DONT "-DSQLITE_OMIT_SHARED_CACHE",
- //DONT "-DSQLITE_USE_ALLOCA",
- //TODO "-DHAVE_MALLOC_USABLE_SIZE"
- //TODO "-DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1", //TODO report bug
- //TODO "-DSQLITE_ENABLE_FTS3",
- //TODO "-DSQLITE_ENABLE_FTS3_PARENTHESIS",
- //TODO "-DSQLITE_ENABLE_FTS3_TOKENIZER",
- //TODO "-DSQLITE_ENABLE_FTS4",
- //TODO "-DSQLITE_ENABLE_ICU",
- //TODO "-DSQLITE_MAX_EXPR_DEPTH=0", // bug reported https://sqlite.org/forum/forumpost/87b9262f66, fixed in https://sqlite.org/src/info/5f58dd3a19605b6f
- //TODO "-DSQLITE_MAX_MMAP_SIZE=8589934592", // testfixture, bug reported https://sqlite.org/forum/forumpost/34380589f7, fixed in https://sqlite.org/src/info/d8e47382160e98be
- //TODO- "-DSQLITE_DEBUG",
- //TODO- "-DSQLITE_ENABLE_API_ARMOR",
- //TODO- "-DSQLITE_MEMDEBUG",
- }
-
- configTest = []string{
- "-DHAVE_USLEEP",
- "-DLONGDOUBLE_TYPE=double",
- "-DSQLITE_CKSUMVFS_STATIC",
- "-DSQLITE_CORE", // testfixture
- "-DSQLITE_DEFAULT_MEMSTATUS=1",
- "-DSQLITE_DEFAULT_PAGE_SIZE=1024", // testfixture, hardcoded. See file_pages in autovacuum.test.
- "-DSQLITE_ENABLE_BYTECODE_VTAB", // testfixture
- "-DSQLITE_ENABLE_COLUMN_METADATA",
- "-DSQLITE_ENABLE_DBPAGE_VTAB", // testfixture
- "-DSQLITE_ENABLE_DBSTAT_VTAB",
- "-DSQLITE_ENABLE_DESERIALIZE", // testfixture
- "-DSQLITE_ENABLE_EXPLAIN_COMMENTS",
- "-DSQLITE_ENABLE_FTS5",
- "-DSQLITE_ENABLE_GEOPOLY",
- "-DSQLITE_ENABLE_MATH_FUNCTIONS",
- "-DSQLITE_ENABLE_MEMORY_MANAGEMENT",
- "-DSQLITE_ENABLE_OFFSET_SQL_FUNC",
- "-DSQLITE_ENABLE_PREUPDATE_HOOK",
- "-DSQLITE_ENABLE_RBU",
- "-DSQLITE_ENABLE_RTREE",
- "-DSQLITE_ENABLE_SESSION",
- "-DSQLITE_ENABLE_STAT4",
- "-DSQLITE_ENABLE_STMTVTAB", // testfixture
- "-DSQLITE_ENABLE_UNLOCK_NOTIFY", // Adds sqlite3_unlock_notify().
- "-DSQLITE_LIKE_DOESNT_MATCH_BLOBS",
- "-DSQLITE_MUTEX_APPDEF=1",
- "-DSQLITE_MUTEX_NOOP",
- "-DSQLITE_SOUNDEX",
- "-DSQLITE_TEMP_STORE=1", // testfixture
- "-DSQLITE_TEST",
- "-DSQLITE_THREADSAFE=1",
- //DONT "-DNDEBUG", // To enable GO_GENERATE=-DSQLITE_DEBUG
- //DONT "-DSQLITE_DQS=0", // testfixture
- //DONT "-DSQLITE_ENABLE_SNAPSHOT",
- //DONT "-DSQLITE_NO_SYNC=1",
- //DONT "-DSQLITE_OMIT_DECLTYPE", // testfixture
- //DONT "-DSQLITE_OMIT_DEPRECATED", // mptest
- //DONT "-DSQLITE_OMIT_LOAD_EXTENSION", // mptest
- //DONT "-DSQLITE_OMIT_SHARED_CACHE",
- //DONT "-DSQLITE_USE_ALLOCA",
- //TODO "-DHAVE_MALLOC_USABLE_SIZE"
- //TODO "-DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1", //TODO report bug
- //TODO "-DSQLITE_ENABLE_FTS3",
- //TODO "-DSQLITE_ENABLE_FTS3_PARENTHESIS",
- //TODO "-DSQLITE_ENABLE_FTS3_TOKENIZER",
- //TODO "-DSQLITE_ENABLE_FTS4",
- //TODO "-DSQLITE_ENABLE_ICU",
- //TODO "-DSQLITE_MAX_EXPR_DEPTH=0", // bug reported https://sqlite.org/forum/forumpost/87b9262f66, fixed in https://sqlite.org/src/info/5f58dd3a19605b6f
- //TODO "-DSQLITE_MAX_MMAP_SIZE=8589934592", // testfixture, bug reported https://sqlite.org/forum/forumpost/34380589f7, fixed in https://sqlite.org/src/info/d8e47382160e98be
- //TODO- "-DSQLITE_DEBUG",
- //TODO- "-DSQLITE_ENABLE_API_ARMOR",
- //TODO- "-DSQLITE_MEMDEBUG",
- }
-
- downloads = []struct {
- dir, url string
- sz int
- dev bool
- }{
- {sqliteDir, "https://www.sqlite.org/2023/sqlite-amalgamation-3410200.zip", 2457, false},
- {sqliteSrcDir, "https://www.sqlite.org/2023/sqlite-src-3410200.zip", 12814, false},
- }
-
- sqliteDir = filepath.FromSlash("testdata/sqlite-amalgamation-3410200")
- sqliteSrcDir = filepath.FromSlash("testdata/sqlite-src-3410200")
-)
-
-func download() {
- tmp, err := os.MkdirTemp("", "")
- if err != nil {
- fmt.Fprintf(os.Stderr, "%s\n", err)
- return
- }
-
- defer os.RemoveAll(tmp)
-
- for _, v := range downloads {
- dir := filepath.FromSlash(v.dir)
- root := filepath.Dir(v.dir)
- fi, err := os.Stat(dir)
- switch {
- case err == nil:
- if !fi.IsDir() {
- fmt.Fprintf(os.Stderr, "expected %s to be a directory\n", dir)
- }
- continue
- default:
- if !os.IsNotExist(err) {
- fmt.Fprintf(os.Stderr, "%s", err)
- continue
- }
- }
-
- if err := func() error {
- fmt.Printf("Downloading %v MB from %s\n", float64(v.sz)/1000, v.url)
- resp, err := http.Get(v.url)
- if err != nil {
- return err
- }
-
- defer resp.Body.Close()
-
- base := filepath.Base(v.url)
- name := filepath.Join(tmp, base)
- f, err := os.Create(name)
- if err != nil {
- return err
- }
-
- defer os.Remove(name)
-
- n, err := io.Copy(f, resp.Body)
- if err != nil {
- return err
- }
-
- if _, err := f.Seek(0, io.SeekStart); err != nil {
- return err
- }
-
- switch {
- case strings.HasSuffix(base, ".zip"):
- r, err := zip.NewReader(f, n)
- if err != nil {
- return err
- }
-
- for _, f := range r.File {
- fi := f.FileInfo()
- if fi.IsDir() {
- if err := os.MkdirAll(filepath.Join(root, f.Name), 0770); err != nil {
- return err
- }
-
- continue
- }
-
- if err := func() error {
- rc, err := f.Open()
- if err != nil {
- return err
- }
-
- defer rc.Close()
-
- file, err := os.OpenFile(filepath.Join(root, f.Name), os.O_CREATE|os.O_WRONLY, fi.Mode())
- if err != nil {
- return err
- }
-
- w := bufio.NewWriter(file)
- if _, err = io.Copy(w, rc); err != nil {
- return err
- }
-
- if err := w.Flush(); err != nil {
- return err
- }
-
- return file.Close()
- }(); err != nil {
- return err
- }
- }
- return nil
- }
- panic("internal error") //TODOOK
- }(); err != nil {
- fmt.Fprintln(os.Stderr, err)
- }
- }
-}
-
-func fail(s string, args ...interface{}) {
- fmt.Fprintf(os.Stderr, s, args...)
- os.Exit(1)
-}
-
-var (
- oFullPathComments = flag.Bool("full-path-comments", false, "")
-)
-
-func main() {
- flag.Parse()
- fmt.Printf("Running on %s/%s.\n", runtime.GOOS, runtime.GOARCH)
- env := os.Getenv("GO_GENERATE")
- goarch := runtime.GOARCH
- goos := runtime.GOOS
- if s := os.Getenv("TARGET_GOOS"); s != "" {
- goos = s
- }
- if s := os.Getenv("TARGET_GOARCH"); s != "" {
- goarch = s
- }
- var more []string
- if env != "" {
- more = strings.Split(env, ",")
- }
- ndebug := []string{"-DNDEBUG"}
- for _, v := range more {
- if v == "-DSQLITE_DEBUG" {
- ndebug = nil
- }
- }
- more = append(more, ndebug...)
- download()
- switch goos {
- case "linux", "freebsd", "openbsd":
- configProduction = append(configProduction, "-DSQLITE_OS_UNIX=1")
- case "netbsd":
- configProduction = append(configProduction, []string{
- "-DSQLITE_OS_UNIX=1",
- "-D__libc_cond_broadcast=pthread_cond_broadcast",
- "-D__libc_cond_destroy=pthread_cond_destroy",
- "-D__libc_cond_init=pthread_cond_init",
- "-D__libc_cond_signal=pthread_cond_signal",
- "-D__libc_cond_wait=pthread_cond_wait",
- "-D__libc_mutex_destroy=pthread_mutex_destroy",
- "-D__libc_mutex_init=pthread_mutex_init",
- "-D__libc_mutex_lock=pthread_mutex_lock",
- "-D__libc_mutex_trylock=pthread_mutex_trylock",
- "-D__libc_mutex_unlock=pthread_mutex_unlock",
- "-D__libc_mutexattr_destroy=pthread_mutexattr_destroy",
- "-D__libc_mutexattr_init=pthread_mutexattr_init",
- "-D__libc_mutexattr_settype=pthread_mutexattr_settype",
- "-D__libc_thr_yield=sched_yield",
- }...)
- case "darwin":
- configProduction = append(configProduction,
- "-DSQLITE_OS_UNIX=1",
- "-DSQLITE_WITHOUT_ZONEMALLOC",
- )
- configTest = append(configTest,
- "-DSQLITE_OS_UNIX=1",
- "-DSQLITE_WITHOUT_ZONEMALLOC",
- )
- case "windows":
- configProduction = append(configProduction,
- "-DSQLITE_OS_WIN=1",
- "-D_MSC_VER=1900",
- )
- configTest = append(configTest,
- "-DSQLITE_OS_WIN=1",
- "-D_MSC_VER=1900",
- )
- default:
- fail("unknows/unsupported os: %s\n", goos)
- }
- makeSqliteProduction(goos, goarch, more)
- makeSqliteTest(goos, goarch, more)
- makeMpTest(goos, goarch, more)
- makeSpeedTest(goos, goarch, more)
- makeTestfixture(goos, goarch, more)
- ccgo.MustCopyDir(true, "testdata/tcl", sqliteSrcDir+"/test", nil)
- ccgo.MustCopyDir(true, "testdata/tcl", "testdata/overlay", nil)
-}
-
-func configure(goos, goarch string) {
- wd, err := os.Getwd()
- if err != nil {
- fail("%s", err)
- }
-
- defer os.Chdir(wd)
-
- if err := os.Chdir(sqliteSrcDir); err != nil {
- fail("%s", err)
- }
-
- cmd := newCmd("make", "distclean")
- cmd.Run()
- var args []string
- switch goos {
- case "linux", "freebsd", "netbsd", "openbsd":
- // nop
- case "darwin":
- args = append(args, "--with-tcl=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Tcl.framework")
- case "windows":
- switch goarch {
- case "amd64":
- args = append(args, "--host=x86_64-w64-mingw32")
- case "386":
- args = append(args, "--host=i686-w64-mingw32")
- default:
- fail("unknown/unsupported os/arch: %s/%s\n", goos, goarch)
- }
- default:
- fail("unknown/unsupported os/arch: %s/%s\n", goos, goarch)
- }
- cmd = newCmd("./configure", args...)
- if err = cmd.Run(); err != nil {
- fail("%s\n", err)
- }
-
- cmd = newCmd("make", "parse.h", "opcodes.h")
- if err = cmd.Run(); err != nil {
- fail("%s\n", err)
- }
-}
-
-func newCmd(bin string, args ...string) *exec.Cmd {
- fmt.Printf("==== newCmd %s\n", bin)
- for _, v := range args {
- fmt.Printf("\t%v\n", v)
- }
- r := exec.Command(bin, args...)
- r.Stdout = os.Stdout
- r.Stderr = os.Stderr
- return r
-}
-
-func makeTestfixture(goos, goarch string, more []string) {
- dir := filepath.FromSlash(fmt.Sprintf("internal/testfixture"))
- files := []string{
- "ext/expert/sqlite3expert.c",
- "ext/expert/test_expert.c",
- "ext/fts3/fts3_term.c",
- "ext/fts3/fts3_test.c",
- "ext/fts5/fts5_tcl.c",
- "ext/fts5/fts5_test_mi.c",
- "ext/fts5/fts5_test_tok.c",
- "ext/misc/amatch.c",
- "ext/misc/appendvfs.c",
- "ext/misc/basexx.c",
- "ext/misc/carray.c",
- "ext/misc/cksumvfs.c",
- "ext/misc/closure.c",
- "ext/misc/csv.c",
- "ext/misc/decimal.c",
- "ext/misc/eval.c",
- "ext/misc/explain.c",
- "ext/misc/fileio.c",
- "ext/misc/fuzzer.c",
- "ext/misc/ieee754.c",
- "ext/misc/mmapwarm.c",
- "ext/misc/nextchar.c",
- "ext/misc/normalize.c",
- "ext/misc/percentile.c",
- "ext/misc/prefixes.c",
- "ext/misc/qpvtab.c",
- "ext/misc/regexp.c",
- "ext/misc/remember.c",
- "ext/misc/series.c",
- "ext/misc/spellfix.c",
- "ext/misc/totype.c",
- "ext/misc/unionvtab.c",
- "ext/misc/wholenumber.c",
- "ext/rbu/test_rbu.c",
- "ext/recover/dbdata.c",
- "ext/recover/sqlite3recover.c",
- "ext/recover/test_recover.c",
- "ext/rtree/test_rtreedoc.c",
- "ext/session/test_session.c",
- "ext/userauth/userauth.c",
- "src/tclsqlite.c",
- "src/test1.c",
- "src/test2.c",
- "src/test3.c",
- "src/test4.c",
- "src/test5.c",
- "src/test6.c",
- "src/test8.c",
- "src/test9.c",
- "src/test_async.c",
- "src/test_autoext.c",
- "src/test_backup.c",
- "src/test_bestindex.c",
- "src/test_blob.c",
- "src/test_btree.c",
- "src/test_config.c",
- "src/test_delete.c",
- "src/test_demovfs.c",
- "src/test_devsym.c",
- "src/test_fs.c",
- "src/test_func.c",
- "src/test_hexio.c",
- "src/test_init.c",
- "src/test_intarray.c",
- "src/test_journal.c",
- "src/test_malloc.c",
- "src/test_md5.c",
- "src/test_multiplex.c",
- "src/test_mutex.c",
- "src/test_onefile.c",
- "src/test_osinst.c",
- "src/test_pcache.c",
- "src/test_quota.c",
- "src/test_rtree.c",
- "src/test_schema.c",
- "src/test_superlock.c",
- "src/test_syscall.c",
- "src/test_tclsh.c",
- "src/test_tclvar.c",
- "src/test_thread.c",
- "src/test_vdbecov.c",
- "src/test_vfs.c",
- "src/test_windirent.c",
- "src/test_window.c",
- "src/test_wsd.c",
- }
- for i, v := range files {
- files[i] = filepath.Join(sqliteSrcDir, filepath.FromSlash(v))
- }
- configure(goos, goarch)
-
- var defines, includes []string
- switch goos {
- case "freebsd", "openbsd":
- includes = []string{"-I/usr/local/include/tcl8.6"}
- case "linux":
- includes = []string{"-I/usr/include/tcl8.6"}
- case "windows":
- includes = []string{"-I/usr/include/tcl8.6"}
- case "netbsd":
- includes = []string{"-I/usr/pkg/include"}
- defines = []string{
- "-D__libc_cond_broadcast=pthread_cond_broadcast",
- "-D__libc_cond_destroy=pthread_cond_destroy",
- "-D__libc_cond_init=pthread_cond_init",
- "-D__libc_cond_signal=pthread_cond_signal",
- "-D__libc_cond_wait=pthread_cond_wait",
- "-D__libc_mutex_destroy=pthread_mutex_destroy",
- "-D__libc_mutex_init=pthread_mutex_init",
- "-D__libc_mutex_lock=pthread_mutex_lock",
- "-D__libc_mutex_trylock=pthread_mutex_trylock",
- "-D__libc_mutex_unlock=pthread_mutex_unlock",
- "-D__libc_mutexattr_destroy=pthread_mutexattr_destroy",
- "-D__libc_mutexattr_init=pthread_mutexattr_init",
- "-D__libc_mutexattr_settype=pthread_mutexattr_settype",
- "-D__libc_thr_yield=sched_yield",
- }
- }
-
- args := join(
- []string{
- "ccgo",
- "-DBUILD_sqlite",
- "-DNDEBUG",
- "-DSQLITE_CKSUMVFS_STATIC",
- "-DSQLITE_CORE",
- "-DSQLITE_CRASH_TEST=1",
- "-DSQLITE_DEFAULT_PAGE_SIZE=1024",
- "-DSQLITE_ENABLE_BYTECODE_VTAB",
- "-DSQLITE_ENABLE_DBPAGE_VTAB",
- "-DSQLITE_ENABLE_MATH_FUNCTIONS",
- "-DSQLITE_ENABLE_STMTVTAB",
- "-DSQLITE_NO_SYNC=1",
- "-DSQLITE_OMIT_LOAD_EXTENSION",
- "-DSQLITE_PRIVATE=\"\"",
- "-DSQLITE_SERIES_CONSTRAINT_VERIFY=1",
- "-DSQLITE_SERVER=1",
- "-DSQLITE_TEMP_STORE=1",
- "-DSQLITE_TEST=1",
- "-DSQLITE_THREADSAFE=1",
- "-DTCLSH_INIT_PROC=sqlite3TestInit",
- "-D_HAVE_SQLITE_CONFIG_H",
- },
- defines,
- includes,
- []string{
- "-export-defines", "",
- "-export-fields", "F",
- "-ignore-unsupported-alignment",
- "-trace-translation-units",
- volatiles,
- "-lmodernc.org/sqlite/libtest",
- "-lmodernc.org/tcl/lib",
- "-lmodernc.org/z/lib",
- "-o", filepath.Join(dir, fmt.Sprintf("testfixture_%s_%s.go", goos, goarch)),
- fmt.Sprintf("-I%s", filepath.Join(sqliteSrcDir, filepath.FromSlash("ext/async"))),
- fmt.Sprintf("-I%s", filepath.Join(sqliteSrcDir, filepath.FromSlash("ext/fts3"))),
- fmt.Sprintf("-I%s", filepath.Join(sqliteSrcDir, filepath.FromSlash("ext/icu"))),
- fmt.Sprintf("-I%s", filepath.Join(sqliteSrcDir, filepath.FromSlash("ext/rtree"))),
- fmt.Sprintf("-I%s", filepath.Join(sqliteSrcDir, filepath.FromSlash("ext/session"))),
- fmt.Sprintf("-I%s", filepath.Join(sqliteSrcDir, filepath.FromSlash("ext/userauth"))),
- fmt.Sprintf("-I%s", filepath.Join(sqliteSrcDir, filepath.FromSlash("src"))),
- fmt.Sprintf("-I%s", sqliteDir),
- fmt.Sprintf("-I%s", sqliteSrcDir),
- },
- otherOpts(),
- files,
- more,
- configTest,
- )
- task := ccgo.NewTask(args, nil, nil)
- if err := task.Main(); err != nil {
- fail("%s\n", err)
- }
-}
-
-func otherOpts() (r []string) {
- if *oFullPathComments {
- r = append(r, "-full-path-comments")
- }
- return r
-}
-
-func makeSpeedTest(goos, goarch string, more []string) {
- task := ccgo.NewTask(
- join(
- []string{
- "ccgo",
- "-export-defines", "",
- "-ignore-unsupported-alignment",
- "-o", filepath.FromSlash(fmt.Sprintf("speedtest1/main_%s_%s.go", goos, goarch)),
- "-trace-translation-units",
- filepath.Join(sqliteSrcDir, "test", "speedtest1.c"),
- fmt.Sprintf("-I%s", sqliteDir),
- "-l", "modernc.org/sqlite/lib",
- },
- otherOpts(),
- more,
- configProduction,
- ),
- nil,
- nil,
- )
- if err := task.Main(); err != nil {
- fail("%s\n", err)
- }
-}
-
-func makeMpTest(goos, goarch string, more []string) {
- task := ccgo.NewTask(
- join(
- []string{
- "ccgo",
- "-export-defines", "",
- "-ignore-unsupported-alignment",
- "-o", filepath.FromSlash(fmt.Sprintf("internal/mptest/main_%s_%s.go", goos, goarch)),
- "-trace-translation-units",
- // filepath.Join(sqliteSrcDir, "mptest", "mptest.c"),
- filepath.Join("testdata", "mptest.c"),
- fmt.Sprintf("-I%s", sqliteDir),
- "-l", "modernc.org/sqlite/lib",
- },
- otherOpts(),
- more,
- configProduction,
- ),
- nil,
- nil,
- )
- if err := task.Main(); err != nil {
- fail("%s\n", err)
- }
-}
-
-func makeSqliteProduction(goos, goarch string, more []string) {
- fn := filepath.FromSlash(fmt.Sprintf("lib/sqlite_%s_%s.go", goos, goarch))
- task := ccgo.NewTask(
- join(
- []string{
- "ccgo",
- "-DSQLITE_PRIVATE=",
- "-export-defines", "",
- "-export-enums", "",
- "-export-externs", "X",
- "-export-fields", "F",
- "-export-typedefs", "",
- "-ignore-unsupported-alignment",
- "-pkgname", "sqlite3",
- volatiles,
- "-o", fn,
- "-trace-translation-units",
- filepath.Join(sqliteDir, "sqlite3.c"),
- },
- otherOpts(),
- more,
- configProduction,
- ),
- nil,
- nil,
- )
- if err := task.Main(); err != nil {
- fail("%s\n", err)
- }
-
- if err := patchXsqlite3_initialize(fn); err != nil {
- fail("%s\n", err)
- }
-}
-
-func makeSqliteTest(goos, goarch string, more []string) {
- fn := filepath.FromSlash(fmt.Sprintf("libtest/sqlite_%s_%s.go", goos, goarch))
- task := ccgo.NewTask(
- join(
- []string{
- "ccgo",
- "-DSQLITE_PRIVATE=",
- "-export-defines", "",
- "-export-enums", "",
- "-export-externs", "X",
- "-export-fields", "F",
- "-export-typedefs", "",
- "-ignore-unsupported-alignment",
- "-pkgname", "sqlite3",
- volatiles,
- "-o", fn,
- "-trace-translation-units",
- volatiles,
- filepath.Join(sqliteDir, "sqlite3.c"),
- },
- otherOpts(),
- more,
- configTest,
- ),
- nil,
- nil,
- )
- if err := task.Main(); err != nil {
- fail("%s\n", err)
- }
-
- if err := patchXsqlite3_initialize(fn); err != nil {
- fail("%s\n", err)
- }
-}
-
-func join(a ...[]string) (r []string) {
- n := 0
- for _, v := range a {
- n += len(v)
- }
- r = make([]string, 0, n)
- for _, v := range a {
- r = append(r, v...)
- }
- return r
-}
-
-func patchXsqlite3_initialize(fn string) error {
- const s = "func Xsqlite3_initialize(tls *libc.TLS) int32 {"
- return patch(fn, func(b []byte) []diff {
- x := bytes.Index(b, []byte(s))
- return []diff{{x, x + len(s), `
-var mu mutex
-
-func init() { mu.recursive = true }
-
-func Xsqlite3_initialize(tls *libc.TLS) int32 {
- mu.enter(tls.ID)
- defer mu.leave(tls.ID)
-
-`}}
- })
-}
-
-type diff struct {
- from, to int // byte offsets
- replace string // replaces b[from:to]
-}
-
-func patch(fn string, f func([]byte) []diff) error {
- b, err := os.ReadFile(fn)
- if err != nil {
- return err
- }
-
- diffs := f(b)
- sort.Slice(diffs, func(i, j int) bool { return diffs[i].from < diffs[j].from })
- var patched [][]byte
- off := 0
- for _, diff := range diffs {
- from := diff.from - off
- to := diff.to - off
- patched = append(patched, b[:from])
- patched = append(patched, []byte(diff.replace))
- b = b[to:]
- off += to
- }
- patched = append(patched, b)
- return os.WriteFile(fn, bytes.Join(patched, nil), 0660)
-}