| 86 data, err := os.ReadFile("testconfig.xml") |
86 data, err := os.ReadFile("testconfig.xml") |
| 87 if err != nil { |
87 if err != nil { |
| 88 log.Fatal(err) |
88 log.Fatal(err) |
| 89 } |
89 } |
| 90 |
90 |
| 91 db, err := sql.Open("sqlite", "uwbuild.db") |
91 db := db_init() |
| 92 if err != nil { |
|
| 93 log.Fatal(err) |
|
| 94 } |
|
| 95 defer db.Close() |
92 defer db.Close() |
| 96 |
|
| 97 err = prepare_db(db) |
|
| 98 if err != nil { |
|
| 99 log.Fatal(err) |
|
| 100 } |
|
| 101 |
93 |
| 102 config := &Config{} |
94 config := &Config{} |
| 103 if err := xml.Unmarshal(data, &config); err != nil { |
95 if err := xml.Unmarshal(data, &config); err != nil { |
| 104 log.Fatal(err) |
96 log.Fatal(err) |
| 105 } |
97 } |
| 106 config.BuildEnvMap = make(map[string]BuildEnv) |
98 config.BuildEnvMap = make(map[string]BuildEnv) |
| 107 for _, env := range config.BuildEnv { |
99 for _, env := range config.BuildEnv { |
| 108 config.BuildEnvMap[env.Name] = env |
100 config.BuildEnvMap[env.Name] = env |
| 109 } |
101 } |
| |
102 |
| |
103 db_load_config(db, config) |
| 110 |
104 |
| 111 for ri := range config.Repository { |
105 for ri := range config.Repository { |
| 112 for bi := range config.Repository[ri].Build { |
106 for bi := range config.Repository[ri].Build { |
| 113 build := &config.Repository[ri].Build[bi] |
107 build := &config.Repository[ri].Build[bi] |
| 114 build.NotList = strings.Split(build.NotPlatform, ",") |
108 build.NotList = strings.Split(build.NotPlatform, ",") |
| 169 log.Fatal(err) |
163 log.Fatal(err) |
| 170 } |
164 } |
| 171 |
165 |
| 172 results := exec_buildenvs(config, &repo, tmp) |
166 results := exec_buildenvs(config, &repo, tmp) |
| 173 |
167 |
| 174 err = save_result(&repo, commit, results, tmp) |
168 err = save_result(db, &repo, commit, results, tmp) |
| 175 if err != nil { |
169 if err != nil { |
| 176 log.Print("cannot save results for commit ", commit.NodeShort) |
170 log.Print("cannot save results for commit ", commit.NodeShort) |
| 177 } |
171 } |
| 178 } |
172 } |
| 179 } |
|
| 180 |
|
| 181 func prepare_db(db *sql.DB) error { |
|
| 182 _, err := db.Exec(` |
|
| 183 create table Repository ( |
|
| 184 id integer primary key autoincrement, |
|
| 185 path text not null, |
|
| 186 name text not null |
|
| 187 ); |
|
| 188 create table RepoCommit ( |
|
| 189 id integer primary key autoincrement, |
|
| 190 repository_id integer not null, |
|
| 191 node text, |
|
| 192 node_short text, |
|
| 193 author text, |
|
| 194 description text, |
|
| 195 date text |
|
| 196 );`) |
|
| 197 return err |
|
| 198 } |
173 } |
| 199 |
174 |
| 200 func create_repo_archive(repo *Repository, tpl *template.Template, tpl2 *template.Template, tmp_dir string) error { |
175 func create_repo_archive(repo *Repository, tpl *template.Template, tpl2 *template.Template, tmp_dir string) error { |
| 201 // create a build directory, that contains the repository source |
176 // create a build directory, that contains the repository source |
| 202 // and build scripts |
177 // and build scripts |
| 476 commit.Desc = outb.String() |
451 commit.Desc = outb.String() |
| 477 |
452 |
| 478 return commit |
453 return commit |
| 479 } |
454 } |
| 480 |
455 |
| 481 func save_result(repo *Repository, commit *Commit, result []BuildEnvResult, tmp_dir string) error { |
456 func save_result(db *sql.DB, repo *Repository, commit *Commit, result []BuildEnvResult, tmp_dir string) error { |
| 482 out_dir := "out/" |
457 out_dir := "out/" |
| 483 src := path.Join(tmp_dir, "result") |
458 src := path.Join(tmp_dir, "result") |
| 484 dst := path.Join(out_dir, commit.Node) |
459 dst := path.Join(out_dir, commit.Node) |
| 485 |
460 |
| 486 // move result |
461 // move result |
| 487 if err := os.Rename(src, dst); err != nil { |
462 if err := os.Rename(src, dst); err != nil { |
| 488 return err |
463 return err |
| 489 } |
464 } |
| 490 |
465 |
| |
466 // store results in database |
| |
467 if err := db_store_results(db, repo, commit, result); err != nil { |
| |
468 return err |
| |
469 } |
| |
470 |
| 491 return nil |
471 return nil |
| 492 } |
472 } |