]> Cypherpunks.ru repositories - goredo.git/blobdiff - run.go
Correct relative dependency paths
[goredo.git] / run.go
diff --git a/run.go b/run.go
index 4ca90d649af939e151326ea2636f65cd59e6f3bc..57401ce627a54c83d6bfac2320c00a1ccc06a655 100644 (file)
--- a/run.go
+++ b/run.go
@@ -42,6 +42,7 @@ import (
 const (
        EnvDepFd        = "REDO_DEP_FD"
        EnvDirPrefix    = "REDO_DIRPREFIX"
+       EnvDepCwd       = "REDO_DEP_CWD"
        EnvBuildUUID    = "REDO_BUILD_UUID"
        EnvStderrPrefix = "REDO_STDERR_PREFIX"
        EnvTrace        = "REDO_TRACE"
@@ -362,18 +363,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 +385,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})
                }
@@ -419,9 +422,10 @@ func runScript(tgtOrig string, errs chan error, traced bool) error {
                cmd.ExtraFiles = append(cmd.ExtraFiles, fdDep)
                cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%d", EnvDepFd, 3+fdNum))
                fdNum++
+               cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", EnvDepCwd, cwd))
 
                defer func() {
-                       jsRelease(shCtx)
+                       jsRelease(shCtx, jsToken)
                        lockRelease()
                        fdDep.Close()
                        fdStdout.Close()