@@ -21,6 +21,7 @@ import (
2121 "github.com/sylabs/singularity-mpi/internal/pkg/checker"
2222 "github.com/sylabs/singularity-mpi/internal/pkg/implem"
2323 "github.com/sylabs/singularity-mpi/internal/pkg/sy"
24+ "github.com/sylabs/singularity-mpi/internal/pkg/syexec"
2425 "github.com/sylabs/singularity-mpi/internal/pkg/sys"
2526 util "github.com/sylabs/singularity-mpi/internal/pkg/util/file"
2627)
@@ -104,10 +105,6 @@ func Create(container *Config, sysCfg *sys.Config) error {
104105
105106 log .Printf ("- Creating image %s..." , container .Path )
106107
107- // We only let the mpirun command run for 10 minutes max
108- ctx , cancel := context .WithTimeout (context .Background (), sys .CmdTimeout * 2 * time .Minute )
109- defer cancel ()
110-
111108 // The definition file is ready so we simple build the container using the Singularity command
112109 if sysCfg .Debug {
113110 err = checker .CheckDefFile (container .DefFile )
@@ -117,24 +114,28 @@ func Create(container *Config, sysCfg *sys.Config) error {
117114 }
118115
119116 log .Printf ("-> Using definition file %s" , container .DefFile )
120- var stdout , stderr bytes.Buffer
121- var cmd * exec.Cmd
117+
118+ var cmd syexec.SyCmd
119+ singularityVersion := sy .GetVersion (sysCfg )
120+ cmd .ManifestData = []string {"Singularity version: " + singularityVersion }
121+ cmd .ManifestDir = container .InstallDir
122+ cmd .ExecDir = container .BuildDir
122123 if sy .IsSudoCmd ("build" , sysCfg ) {
123- log .Printf ("-> Running %s %s %s %s %s\n " , sysCfg .SudoBin , sysCfg .SingularityBin , "build" , container .Path , container .DefFile )
124- cmd = exec .CommandContext (ctx , sysCfg .SudoBin , sysCfg .SingularityBin , "build" , container .Path , container .DefFile )
124+ cmd .BinPath = sysCfg .SudoBin
125+ cmd .ManifestFileHash = []string {sysCfg .SingularityBin , container .DefFile }
126+ cmd .CmdArgs = []string {sysCfg .SingularityBin , "build" , container .Path , container .DefFile }
125127 } else if sysCfg .Nopriv {
126- log .Printf ("-> Running %s %s %s %s\n " , sysCfg .SingularityBin , "build --fakeroot" , container .Path , container .DefFile )
127- cmd = exec .CommandContext (ctx , sysCfg .SingularityBin , "build" , "--fakeroot" , container .Path , container .DefFile )
128+ cmd .BinPath = sysCfg .SingularityBin
129+ cmd .ManifestFileHash = []string {container .DefFile }
130+ cmd .CmdArgs = []string {"build" , "--fakeroot" , container .Path , container .DefFile }
128131 } else {
129- log .Printf ("-> Running %s %s %s %s\n " , sysCfg .SingularityBin , "build" , container .Path , container .DefFile )
130- cmd = exec .CommandContext (ctx , sysCfg .SingularityBin , "build" , container .Path , container .DefFile )
132+ cmd .BinPath = sysCfg .SingularityBin
133+ cmd .ManifestFileHash = []string {container .DefFile }
134+ cmd .CmdArgs = []string {"build" , container .Path , container .DefFile }
131135 }
132- cmd .Dir = container .BuildDir
133- cmd .Stdout = & stdout
134- cmd .Stderr = & stderr
135- err = cmd .Run ()
136- if err != nil {
137- return fmt .Errorf ("failed to execute command - stdout: %s; stderr: %s; err: %s" , stdout .String (), stderr .String (), err )
136+ res := cmd .Run ()
137+ if res .Err != nil {
138+ return fmt .Errorf ("failed to execute command - stdout: %s; stderr: %s; err: %s" , res .Stdout , res .Stderr , res .Err )
138139 }
139140
140141 // We make all SIF file executable to make it easier to integrate with other tools
0 commit comments