MCPcopy Create free account
hub / github.com/LanceLRQ/deer-executor / compileWorkCodeFiles

Function compileWorkCodeFiles

client/packmgr/compile.go:40–103  ·  view source on GitHub ↗

编译作业代码

(config structs.JudgeConfiguration, libraryDir string)

Source from the content-addressed store, hash-verified

38
39// 编译作业代码
40func 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")

Callers 1

Calls 5

GetOrCreateBinaryRootFunction · 0.92
compileTestlibCodeFileFunction · 0.85
ErrorfMethod · 0.80
ErrorMethod · 0.45

Tested by

no test coverage detected