Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Compile on weekly 2012.03.04
  • Loading branch information
hanwen committed Mar 10, 2012
1 parent e2a4e91 commit ab9fa31
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 41 deletions.
15 changes: 8 additions & 7 deletions bin/shell-wrapper/main.go
Expand Up @@ -10,6 +10,7 @@ import (
"os/exec"
"path/filepath"
"sort"
"syscall"
"strings"
"time"
)
Expand Down Expand Up @@ -170,7 +171,7 @@ func Shell() string {
return shell
}

func RunLocally(req *termite.WorkRequest, rule *termite.LocalRule) *os.Waitmsg {
func RunLocally(req *termite.WorkRequest, rule *termite.LocalRule) syscall.WaitStatus {
env := os.Environ()
if !rule.Recurse {
env = cleanEnv(env)
Expand All @@ -183,11 +184,11 @@ func RunLocally(req *termite.WorkRequest, rule *termite.LocalRule) *os.Waitmsg {
if err != nil {
log.Fatalf("os.StartProcess() for %v: %v", req, err)
}
msg, err := proc.Wait(0)
msg, err := proc.Wait()
if err != nil {
log.Fatalf("proc.Wait() for %v: %v", req, err)
}
return msg
return msg.Sys().(syscall.WaitStatus)
}

func main() {
Expand Down Expand Up @@ -241,7 +242,7 @@ func main() {
} else {
req, rule = PrepareRun(*command, *directory, topDir)
}
var waitMsg *os.Waitmsg
var waitMsg syscall.WaitStatus
rep := termite.WorkResponse{}
if rule != nil && rule.Local {
waitMsg = RunLocally(req, rule)
Expand All @@ -260,14 +261,14 @@ func main() {
os.Stdout.Write([]byte(rep.Stdout))
os.Stderr.Write([]byte(rep.Stderr))

waitMsg = &rep.Exit
waitMsg = rep.Exit
}

if waitMsg.ExitStatus() != 0 {
if waitMsg != 0 {
log.Printf("Failed %s: '%q'", rep.WorkerId, *command)
}

// TODO - is this necessary?
Rpc().Close()
os.Exit(waitMsg.ExitStatus())
os.Exit(int(waitMsg))
}
29 changes: 16 additions & 13 deletions bin/worker/main.go
Expand Up @@ -12,23 +12,21 @@ import (
"os/user"
"runtime"
"runtime/pprof"
"strconv"
"syscall"
)

var _ = log.Printf

func handleStop(daemon *termite.Worker) {
for {
sig := <-signal.Incoming
switch sig.(os.UnixSignal) {
case syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGINT:
log.Println("got signal: ", sig)
req := termite.ShutdownRequest{Kill: true}
rep := termite.ShutdownResponse{}
daemon.Shutdown(&req, &rep)
case syscall.SIGHUP:
daemon.Report()
}
ch := make(chan os.Signal, 1)

signal.Notify(ch, os.Interrupt, os.Kill)
for sig := range ch {
log.Println("got signal: ", sig)
req := termite.ShutdownRequest{Kill: true}
rep := termite.ShutdownResponse{}
daemon.Shutdown(&req, &rep)
}
}

Expand Down Expand Up @@ -109,7 +107,7 @@ func main() {
if err != nil {
log.Fatalf("close stderr: %v", err)
}
_, err = syscall.Dup(f.Fd())
_, err = syscall.Dup(int(f.Fd()))
if err != nil {
log.Fatalf("dup: %v", err)
}
Expand Down Expand Up @@ -137,7 +135,12 @@ func main() {
if err != nil {
log.Fatalf("can't lookup %q: %v", *userFlag, err)
}
opts.User = nobody
uid, err := strconv.ParseInt(nobody.Uid, 10, 64)
gid, err := strconv.ParseInt(nobody.Gid, 10, 64)
opts.User = &termite.User{
Uid: int(uid),
Gid: int(gid),
}
}

daemon := termite.NewWorker(&opts)
Expand Down
5 changes: 3 additions & 2 deletions termite/coordinator.go
Expand Up @@ -10,6 +10,7 @@ import (
"net/rpc"
"os"
"sort"
"syscall"
"sync"
"time"
)
Expand Down Expand Up @@ -506,11 +507,11 @@ func (me *Coordinator) ServeHTTP(port int) {
Handler: me.Mux,
}
err = httpServer.Serve(me.listener)
if e, ok := err.(*net.OpError); ok && e.Err == os.EINVAL {
if e, ok := err.(*net.OpError); ok && e.Err == syscall.EINVAL {
return
}

if err != nil && err != os.EINVAL {
if err != nil && err != syscall.EINVAL {
log.Println("httpServer.Serve:", err)
}
}
3 changes: 2 additions & 1 deletion termite/localmaster.go
Expand Up @@ -6,6 +6,7 @@ import (
"net"
"net/rpc"
"os"
"syscall"
)

// Expose functionality for the local tool to use.
Expand Down Expand Up @@ -68,7 +69,7 @@ func (me *LocalMaster) start(sock string) {
log.Println("accepting connections on", sock)
for {
conn, err := me.listener.Accept()
if err == os.EINVAL {
if err == syscall.EINVAL {
break
}
if err != nil {
Expand Down
17 changes: 5 additions & 12 deletions termite/masterrun.go
Expand Up @@ -5,7 +5,6 @@ import (
"github.com/hanwen/go-fuse/fuse"
"github.com/hanwen/termite/attr"
"log"
"os"
"path/filepath"
"strings"
"syscall"
Expand Down Expand Up @@ -114,7 +113,7 @@ func rmMaybeMasterRun(master *Master, req *WorkRequest, rep *WorkResponse) bool
master.replay(fs)

rep.Stderr = strings.Join(msgs, "\n")
rep.Exit.WaitStatus = syscall.WaitStatus(status << 8)
rep.Exit = syscall.WaitStatus(status << 8)
return true
}

Expand Down Expand Up @@ -183,7 +182,7 @@ func mkdirParentMasterRun(master *Master, arg string, rep *WorkResponse) {

if len(msgs) > 0 {
rep.Stderr = strings.Join(msgs, "\n")
rep.Exit.WaitStatus = 1 << 8
rep.Exit = 1 << 8
}
}

Expand All @@ -207,26 +206,20 @@ func mkdirNormalMasterRun(master *Master, arg string, rep *WorkResponse) {
dirAttr := master.fileServer.attributes.Get(dir)
if dirAttr.Deletion() {
rep.Stderr = fmt.Sprintf("File not found: /%s", dir)
rep.Exit = os.Waitmsg{
WaitStatus: (1 << 8),
}
rep.Exit = syscall.WaitStatus(1 << 8)
return
}

if !dirAttr.IsDir() {
rep.Stderr = fmt.Sprintf("Is not a directory: /%s", dir)
rep.Exit = os.Waitmsg{
WaitStatus: (1 << 8),
}
rep.Exit = syscall.WaitStatus(1 << 8)
return
}

chAttr := master.fileServer.attributes.Get(rootless)
if !chAttr.Deletion() {
rep.Stderr = fmt.Sprintf("File exists: /%s", rootless)
rep.Exit = os.Waitmsg{
WaitStatus: (1 << 8),
}
rep.Exit = syscall.WaitStatus(1 << 8)
return
}
chAttr = mkdirEntry(rootless)
Expand Down
5 changes: 3 additions & 2 deletions termite/rpc.go
Expand Up @@ -2,9 +2,10 @@ package termite

import (
"fmt"
"syscall"

"github.com/hanwen/termite/attr"
"github.com/hanwen/termite/stats"
"os"
)

type AttrRequest struct {
Expand Down Expand Up @@ -70,7 +71,7 @@ type Timing struct {
}

type WorkResponse struct {
Exit os.Waitmsg
Exit syscall.WaitStatus
Stderr string
Stdout string

Expand Down
4 changes: 2 additions & 2 deletions termite/task.go
Expand Up @@ -112,9 +112,9 @@ func (me *WorkerTask) runInFuse(fuseFs *workerFuseFs) error {
printCmd, cmd.Dir, fuseFs.id)
err := cmd.Wait()

waitMsg, ok := err.(*exec.ExitError)
exitErr, ok := err.(*exec.ExitError)
if ok {
me.rep.Exit = *waitMsg.Waitmsg
me.rep.Exit = exitErr.Sys().(syscall.WaitStatus)
err = nil
}

Expand Down
5 changes: 3 additions & 2 deletions termite/worker.go
Expand Up @@ -14,6 +14,7 @@ import (
"os"
"os/exec"
"strings"
"syscall"
"time"
)

Expand Down Expand Up @@ -186,11 +187,11 @@ func (me *Worker) RunWorkerServer() {

for {
conn, err := me.listener.Accept()
if err == os.EINVAL {
if err == syscall.EINVAL {
break
}
if err != nil {
if e, ok := err.(*net.OpError); ok && e.Err == os.EINVAL {
if e, ok := err.(*net.OpError); ok && e.Err == syscall.EINVAL {
break
}
log.Println("me.listener", err)
Expand Down

0 comments on commit ab9fa31

Please sign in to comment.