编译作业代码
(config structs.JudgeConfiguration, libraryDir string)
| 38 | |
| 39 | // 编译作业代码 |
| 40 | func compileWorkCodeFiles(config structs.JudgeConfiguration, libraryDir string) error { |
| 41 | binRoot, err := executor.GetOrCreateBinaryRoot(&config) |
| 42 | if err != nil { |
| 43 | return err |
| 44 | } |
| 45 | // Generators |
| 46 | if config.TestLib.Generators != nil { |
| 47 | for _, gen := range config.TestLib.Generators { |
| 48 | err = compileTestlibCodeFile(gen.Source, gen.Name, binRoot, config.ConfigDir, libraryDir, "generator") |
| 49 | if err != nil { |
| 50 | return err |
| 51 | } |
| 52 | } |
| 53 | } |
| 54 | // Validator |
| 55 | if config.TestLib.Validator != "" && config.TestLib.ValidatorName != "" { |
| 56 | err = compileTestlibCodeFile(config.TestLib.Validator, config.TestLib.ValidatorName, binRoot, config.ConfigDir, libraryDir, "validator") |
| 57 | if err != nil { |
| 58 | return err |
| 59 | } |
| 60 | } |
| 61 | // Checker |
| 62 | if config.SpecialJudge.Mode > 0 { |
| 63 | if config.SpecialJudge.Name == "" { |
| 64 | return errors.Errorf("please setup special judge checker name") |
| 65 | } |
| 66 | if config.SpecialJudge.Checker == "" { |
| 67 | return errors.Errorf("please setup special judge checker") |
| 68 | } |
| 69 | checkerType := "checker" |
| 70 | if config.SpecialJudge.Mode == 2 { |
| 71 | checkerType = "interactor" |
| 72 | } |
| 73 | if config.SpecialJudge.UseTestlib { |
| 74 | err = compileTestlibCodeFile( |
| 75 | config.SpecialJudge.Checker, |
| 76 | config.SpecialJudge.Name, |
| 77 | binRoot, |
| 78 | config.ConfigDir, |
| 79 | libraryDir, |
| 80 | checkerType, |
| 81 | ) |
| 82 | if err != nil { |
| 83 | return err |
| 84 | } |
| 85 | } else { |
| 86 | fmt.Printf("build %s [%s]...", "special judge "+checkerType, config.SpecialJudge.Name) |
| 87 | _, err = executor.CompileSpecialJudgeCodeFile( |
| 88 | config.SpecialJudge.Checker, |
| 89 | config.SpecialJudge.Name, |
| 90 | binRoot, |
| 91 | config.ConfigDir, |
| 92 | libraryDir, |
| 93 | config.SpecialJudge.CheckerLang, |
| 94 | ) |
| 95 | if err != nil { |
| 96 | fmt.Printf("Error!\n%s", err.Error()) |
| 97 | return errors.Errorf("compile error") |
no test coverage detected