X-Git-Url: http://www.git.cypherpunks.ru/?p=goredo.git;a=blobdiff_plain;f=run.go;h=1c1b0d7759295786f9e1237975a5a8e18064bd1f;hp=4ca90d649af939e151326ea2636f65cd59e6f3bc;hb=c41fe0fbd726f397636b569161f286821e221885;hpb=d830f32d30e4ea9d9f06ae835db6ec5c4822dcfc diff --git a/run.go b/run.go index 4ca90d6..1c1b0d7 100644 --- a/run.go +++ b/run.go @@ -362,18 +362,6 @@ func runScript(tgtOrig string, errs chan error, traced bool) error { fdNum++ } - if JSR == nil { - // infinite jobs - cmd.Env = append(cmd.Env, fmt.Sprintf("%s=NO", EnvJSFd)) - } else { - cmd.ExtraFiles = append(cmd.ExtraFiles, JSR) - cmd.ExtraFiles = append(cmd.ExtraFiles, JSW) - cmd.Env = append(cmd.Env, fmt.Sprintf( - "%s=%d,%d", EnvJSFd, 3+fdNum+0, 3+fdNum+1, - )) - fdNum += 2 - } - // Preparing stderr var fdStderr *os.File if StderrKeep { @@ -396,7 +384,21 @@ func runScript(tgtOrig string, errs chan error, traced bool) error { Jobs.Add(1) go func() { - jsAcquire(shCtx) + jsToken := jsAcquire(shCtx) + if JSR == nil { + // infinite jobs + cmd.Env = append(cmd.Env, fmt.Sprintf("%s=NO", EnvJobs)) + } else { + cmd.ExtraFiles = append(cmd.ExtraFiles, JSR) + cmd.ExtraFiles = append(cmd.ExtraFiles, JSW) + cmd.Env = append(cmd.Env, fmt.Sprintf( + "%s=%s %s%d,%d", + MakeFlagsName, MakeFlags, MakeJSArg, 3+fdNum+0, 3+fdNum+1, + )) + fdNum += 2 + cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%d", EnvJSToken, jsToken)) + } + if FdStatus != nil { FdStatus.Write([]byte{StatusRun}) } @@ -421,7 +423,7 @@ func runScript(tgtOrig string, errs chan error, traced bool) error { fdNum++ defer func() { - jsRelease(shCtx) + jsRelease(shCtx, jsToken) lockRelease() fdDep.Close() fdStdout.Close()