@@ -10,22 +10,33 @@ import (
10
10
"crypto/sha1"
11
11
"encoding/hex"
12
12
"errors"
13
+ "flag"
13
14
"fmt"
14
15
"io"
15
16
"io/ioutil"
16
17
"log"
17
18
"net/http"
18
19
"os"
20
+ "os/exec"
19
21
"path/filepath"
20
22
"strings"
21
23
"time"
22
24
23
25
"github.com/PuerkitoBio/goquery"
24
26
)
25
27
26
- const buildFlags = "-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1"
28
+ var (
29
+ cFlags = "-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1"
30
+ cleanup = true
31
+ )
27
32
28
33
func main () {
34
+ flag .StringVar (& shellPath , "shell" , shellPath , "path to shell executable" )
35
+ flag .StringVar (& makePath , "make" , makePath , "path to make executable" )
36
+ flag .StringVar (& cFlags , "cflags" , cFlags , "sqlite CFLAGS" )
37
+ flag .BoolVar (& cleanup , "cleanup" , cleanup , "cleanup source" )
38
+ flag .Parse ()
39
+
29
40
err := func () error {
30
41
fmt .Println ("Go-SQLite3 Upgrade Tool" )
31
42
@@ -38,7 +49,7 @@ func main() {
38
49
39
50
// Extract Source
40
51
baseDir , err := extractZip (source )
41
- if baseDir != "" && ! filepath .IsAbs (baseDir ) {
52
+ if cleanup && baseDir != "" && ! filepath .IsAbs (baseDir ) {
42
53
defer func () {
43
54
fmt .Println ("Cleaning up source: deleting" , baseDir )
44
55
os .RemoveAll (baseDir )
@@ -50,8 +61,8 @@ func main() {
50
61
fmt .Println ("Extracted sqlite source to" , baseDir )
51
62
52
63
// Build amalgamation files (OS-specific)
53
- fmt .Printf ("Starting to generate amalgamation with build flags : %s\n " , buildFlags )
54
- if err := buildAmalgamation (baseDir , buildFlags ); err != nil {
64
+ fmt .Printf ("Starting to generate amalgamation with CFLAGS : %s\n " , cFlags )
65
+ if err := buildAmalgamation (baseDir , cFlags ); err != nil {
55
66
return fmt .Errorf ("failed to build amalgamation: %v" , err )
56
67
}
57
68
fmt .Println ("SQLite3 amalgamation built" )
@@ -247,3 +258,27 @@ func patchSource(baseDir, src, dst string, extensions ...string) error {
247
258
248
259
return nil
249
260
}
261
+
262
+ func buildAmalgamation (baseDir , buildFlags string ) error {
263
+ configureScript := "./configure"
264
+ if cFlags != "" {
265
+ configureScript += fmt .Sprintf (" CFLAGS=%q" , cFlags )
266
+ }
267
+ cmd := exec .Command (shellPath , "-c" , configureScript )
268
+ cmd .Dir = baseDir
269
+ out , err := cmd .CombinedOutput ()
270
+ if err != nil {
271
+ return fmt .Errorf ("configure failed: %v\n \n %s" , err , out )
272
+ }
273
+ fmt .Println ("Ran configure successfully" )
274
+
275
+ cmd = exec .Command (makePath , "sqlite3.c" )
276
+ cmd .Dir = baseDir
277
+ out , err = cmd .CombinedOutput ()
278
+ if err != nil {
279
+ return fmt .Errorf ("make failed: %v\n \n %s" , err , out )
280
+ }
281
+ fmt .Println ("Ran make successfully" )
282
+
283
+ return nil
284
+ }
0 commit comments