重构架构
This commit is contained in:
48
internal/handler/soft/source.go
Normal file
48
internal/handler/soft/source.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package soft
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
log "sunhpc/pkg/logger"
|
||||
"sunhpc/pkg/utils"
|
||||
)
|
||||
|
||||
// compileFromSource 通用源码编译流程
|
||||
func compileFromSource(srcDir, prefix string, jobs int) error {
|
||||
// 切换到源码目录
|
||||
if err := os.Chdir(srcDir); err != nil {
|
||||
return fmt.Errorf("进入源码目录失败: %v", err)
|
||||
}
|
||||
|
||||
// 检测 configure 脚本是否存在
|
||||
if utils.FileExists("./configure") {
|
||||
log.Debug("执行 configure ...")
|
||||
cmd := exec.Command("./configure", "--prefix="+prefix)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("configure 失败: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// make
|
||||
log.Debugf("执行 make -j%d ...", jobs)
|
||||
cmd := exec.Command("make", fmt.Sprintf("-j%d", jobs))
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("make 失败: %v", err)
|
||||
}
|
||||
|
||||
// make install
|
||||
log.Debug("执行 make install ...")
|
||||
cmd = exec.Command("make", "install")
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("make install 失败: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user