From c2ced9eaa6a8f174866ecbdb77d7ce7b02bb969c Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期二, 17 十二月 2019 16:40:52 +0800
Subject: [PATCH] add sdk config

---
 /dev/null      |    0 
 sdkconfig.yaml |    3 +++
 proc/master.go |   26 +++++++++++++++++++++++---
 proc/reaper.go |   24 ++++++++++++++++--------
 4 files changed, 42 insertions(+), 11 deletions(-)

diff --git a/build-libdarknet.so b/build-libdarknet.so
deleted file mode 100755
index 667361e..0000000
--- a/build-libdarknet.so
+++ /dev/null
Binary files differ
diff --git a/build.log b/build.log
deleted file mode 100644
index e69de29..0000000
--- a/build.log
+++ /dev/null
diff --git a/proc/master.go b/proc/master.go
index 7c69c0a..eec37c2 100644
--- a/proc/master.go
+++ b/proc/master.go
@@ -4,6 +4,8 @@
 	"analysis/logo"
 	"analysis/util"
 	"context"
+
+	"github.com/spf13/viper"
 )
 
 func reaper(ctxt context.Context) {
@@ -18,17 +20,35 @@
 
 	util.InitDBAPI()
 
+	const (
+		configFilePath = "/opt/vasystem/config/"
+		configFileName = "sdkconfig"
+		configFileType = "yaml"
+	)
+	viper.SetConfigType(configFileType)
+	viper.SetConfigName(configFileName)
+	viper.AddConfigPath(configFilePath)
+	viper.AddConfigPath("./")
+
+	envString := ""
+
 	sdks := util.SDKInfo()
 	for k, v := range sdks {
+
+		if err := viper.ReadInConfig(); err == nil {
+
+			envString = viper.GetString(v.SdkType)
+
+		}
+		logo.Errorln("MASTER ANALYSIS START SLAVE TYPE: ", v.SdkType, " SDK CONFIG: ", envString)
+
 		args := []string{
 			`-role=slave`,
 			"-sdk=" + v.SdkType,
 			"-id=" + v.IpcId,
 		}
-
 		args = append(args, (*util.GetParams())...)
-
-		pid, err := runProc(ctx, "./analysis", args)
+		pid, err := runProc(ctx, "./analysis", args, &envString)
 
 		if err != nil {
 			logo.Errorf("ANALYSIS START SLAVE PROC %s IPC: %s error %+v\n", v.SdkType, v.IpcId, err)
diff --git a/proc/reaper.go b/proc/reaper.go
index f0fbd8d..5a48028 100644
--- a/proc/reaper.go
+++ b/proc/reaper.go
@@ -10,14 +10,19 @@
 	"time"
 )
 
+type procInfo struct {
+	cmd *exec.Cmd
+	env string
+}
+
 var (
-	procMap = make(map[int]*exec.Cmd)
+	procMap = make(map[int]*procInfo)
 )
 
 func restartProc(ctxt context.Context, pid int) {
-	cmd, ok := procMap[pid]
+	info, ok := procMap[pid]
 	if ok {
-		err := cmd.Wait()
+		err := info.cmd.Wait()
 
 		if err != nil {
 			logo.Errorln("pid : [", pid, "] quit error: ", err)
@@ -25,32 +30,35 @@
 			logo.Infoln("pid : [", pid, "] quit")
 		}
 		delete(procMap, pid)
-		runProc(ctxt, cmd.Path, cmd.Args[1:])
+		runProc(ctxt, info.cmd.Path, info.cmd.Args[1:], &info.env)
 	} else {
 		logo.Errorln(pid, " doesn't exist")
 	}
 }
 
 func quitProc(pid int) {
-	cmd, ok := procMap[pid]
+	info, ok := procMap[pid]
 	if ok {
 		delete(procMap, pid)
 
 		syscall.Kill(pid, syscall.SIGINT)
-		cmd.Wait()
+		info.cmd.Wait()
 	} else {
 		logo.Errorln(pid, " doesn't exist")
 	}
 }
-func runProc(ctxt context.Context, bin string, args []string) (int, error) {
+func runProc(ctxt context.Context, bin string, args []string, env *string) (int, error) {
 	cmd := exec.CommandContext(ctxt, bin, args...)
+	cmd.Env = os.Environ()
+	cmd.Env = append(cmd.Env, *env)
+
 	pid := -1
 	cmd.Stdout = os.Stdout
 	cmd.Stderr = os.Stderr
 	err := cmd.Start()
 	if err == nil {
 		pid = cmd.Process.Pid
-		procMap[pid] = cmd
+		procMap[pid] = &procInfo{cmd, *env}
 	}
 	return pid, err
 }
diff --git a/sdkconfig.yaml b/sdkconfig.yaml
new file mode 100644
index 0000000..7d7da23
--- /dev/null
+++ b/sdkconfig.yaml
@@ -0,0 +1,3 @@
+FaceDetect: LD_LIBRARY_PATH=./libs:/usr/local/cuda-8.0/lib64
+Yolo: LD_LIBRARY_PATH=./libs:/usr/local/cuda-8.0/lib64
+HumanTrack: LD_LIBRARY_PATH=./libs:/usr/local/cuda-10.0/lib64

--
Gitblit v1.8.0