Coder Social home page Coder Social logo

polydawn / repeatr Goto Github PK

View Code? Open in Web Editor NEW
68.0 68.0 5.0 8.12 MB

Repeatr: Reproducible, hermetic Computation. Provision containers from Content-Addressable snapshots; run using familiar containers (e.g. runc); store outputs in Content-Addressable form too! JSON API; connect your own pipelines! (Or, use github.com/polydawn/stellar for pipelines!)

Home Page: https://repeatr.io

License: Apache License 2.0

Shell 9.65% Go 90.35%
containers distributed formula reproducibility reproducible-builds snapshots timeless timeless-stack

repeatr's People

Contributors

ericevenchick avatar hdonnay avatar kkroening avatar kofalt avatar timthelion avatar tripledogdare avatar warpfork avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

repeatr's Issues

Don't pannic when running repeatr as normal luser.

timothy@yoga ~/p/p/reppl> repeatr run build.formula 
panic: IO Error: mkdir /var/lib/repeatr/executor/runc/job/bmtx58cr-es4k7epa-z2p0ge35: permission denied

goroutine 20 [running]:
go.polydawn.net/repeatr/lib/flak.WithDir(0xc82003df20, 0xc82003def0, 0x3, 0x3)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/flak/assist.go:30 +0x167
go.polydawn.net/repeatr/core/executor/impl/runc.(*Executor).Start.func1(0xc82010b9e0, 0xc82010ba40, 0xc8200fbd10, 0xc820104e00, 0x0, 0x0, 0x7fe6014cece8, 0xc82016b000)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:80 +0x183
created by go.polydawn.net/repeatr/core/executor/impl/runc.(*Executor).Start
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:84 +0x1f6

goroutine 1 [chan receive]:
go.polydawn.net/repeatr/core/actors/terminal.step(0xc82010b8c0, 0x7fe602d151e8, 0xc820030018, 0xc82016afc0)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/actors/terminal/terminal.go:28 +0x5d
go.polydawn.net/repeatr/core/actors/terminal.Consume(0x7fe6014cec98, 0xc8200f6f00, 0xc82016afc0, 0x1a, 0x7fe602d151e8, 0xc820030018, 0x0)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/actors/terminal/terminal.go:20 +0xa8
go.polydawn.net/repeatr/cmd/repeatr/run.Run.func1(0xc820114a00, 0x0, 0x0)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/run/runCmd.go:105 +0x1350
reflect.Value.call(0xbca560, 0xc8200f98f0, 0x13, 0xd01230, 0x4, 0xc820176ad0, 0x1, 0x1, 0x0, 0x0, ...)
	/usr/local/go/src/reflect/value.go:432 +0x120a
reflect.Value.Call(0xbca560, 0xc8200f98f0, 0x13, 0xc820176ad0, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/reflect/value.go:300 +0xb1
github.com/codegangsta/cli.HandleAction(0xbca560, 0xc8200f98f0, 0xc820114a00, 0x0, 0x0)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/app.go:487 +0x2ee
github.com/codegangsta/cli.Command.Run(0xd08ca0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd13a20, 0xd, 0x0, ...)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/command.go:191 +0xfe6
github.com/codegangsta/cli.(*App).Run(0xc820066780, 0xc82000a240, 0x3, 0x3, 0x0, 0x0)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/app.go:240 +0xa9d
main.Main.func6()
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/main.go:229 +0x6c
go.polydawn.net/meep.Try(0xc8201777e0, 0xc820177e30, 0x2, 0x2)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40 +0x58
main.Main(0xc82000a240, 0x3, 0x3, 0x7fe602d15348, 0xc820030008, 0x7fe602d151e8, 0xc820030010, 0x7fe602d151e8, 0xc820030018, 0x0)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/main.go:244 +0x2910
main.main()
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/main.go:24 +0xd3

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
	/usr/local/go/src/runtime/asm_amd64.s:1696 +0x1

goroutine 18 [chan receive]:
go.polydawn.net/repeatr/core/executor/impl/runc.(*Executor).Start(0xc8200fbd10, 0xc82017e630, 0xc82017e660, 0x3, 0x3, 0x0, 0x0, 0xc82017e690, 0x0, 0x0, ...)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:86 +0x219
go.polydawn.net/repeatr/core/actors/runner.(*Runner).Run(0xc8200f6f00, 0x7fe6014cec18, 0xc82017e600)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/actors/runner/runner.go:69 +0x237
go.polydawn.net/repeatr/core/actors/runner.(*Runner).Run-fm(0x7fe6014cec18, 0xc82017e600)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/run/runCmd.go:69 +0x34
go.polydawn.net/go-sup.(*writ).Run.func1()
	/task/repeatr/.gopath/src/go.polydawn.net/go-sup/writ.go:108 +0x3e
go.polydawn.net/meep.Try(0xc82003cf38, 0xc82003cf50, 0x1, 0x1)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40 +0x58
go.polydawn.net/go-sup.(*writ).Run(0xc82010df10, 0xc82016cad0, 0x7fe6014cec50, 0xc82010df10)
	/task/repeatr/.gopath/src/go.polydawn.net/go-sup/writ.go:113 +0x2a3
created by go.polydawn.net/repeatr/cmd/repeatr/run.Run.func1
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/run/runCmd.go:69 +0xe43

Panic!

# cat repeatr-release-v0.14.frm 
inputs:
	"/":
		type: "tar"
		hash: "aLMH4qK1EdlPDavdhErOs0BPxqO0i6lUaeRE4DuUmnNMxhHtF56gkoeSulvwWNqT"
		silo: "http+ca://repeatr.s3.amazonaws.com/assets/"
	"/app/go/":
		type: "tar"
		hash: "UZlcQvHU5Qg5gXquDW2QTc-v6l-LzR1-8SRmJ2aWQjiqFcPggIETikoEta_DJZQc"
		silo: "https://storage.googleapis.com/golang/go1.7.4.linux-amd64.tar.gz"
	"/task/repeatr/":
		type: "git"
		hash: "72b19be26bbac56c9d1dc418a01bfe0b09a9363c"
		silo:
			- "./../.."
			- "https://github.com/polydawn/repeatr.git"
action:
	cwd: "/task/repeatr/"
	env:
		"PATH": "/bin/:/usr/bin/:/app/go/go/bin/"
		"GOROOT": "/app/go/go"
		"GITCOMMIT": "72b19be26bbac56c9d1dc418a01bfe0b09a9363c"
		"BUILDDATE": "2017-01-17 11:23:48-06:00"
		"GOOS": "linux"
		"GOARCH": "amd64"
	command: [ "./goad", "install" ]
outputs:
	"repeatr-linux-amd64-v0.14":
		mount: "/task/repeatr/.gopath/bin/"
		type: "tar"
		silo: "file://wares/"
root@yoga:/home/timothy/pu/projects/play-with-repeatr# /home/timothy/bin/repeatr run repeatr-release-v0.14.frm
INFO[04-05|14:35:29] Need 3 inputs to be ready 
INFO[04-05|14:35:29] Starting materialize                     input=/task/repeatr/ type=git hash=72b19be26bbac56c9d1dc418a01bfe0b09a9363c
INFO[04-05|14:35:29] Starting materialize                     input=/ type=tar hash=aLMH4qK1EdlPDavdhErOs0BPxqO0i6lUaeRE4DuUmnNMxhHtF56gkoeSulvwWNqT
INFO[04-05|14:35:29] Starting materialize                     input=/app/go/ type=tar hash=UZlcQvHU5Qg5gXquDW2QTc-v6l-LzR1-8SRmJ2aWQjiqFcPggIETikoEta_DJZQc
INFO[04-05|14:35:29] Finished materialize                     input=/app/go/ type=tar hash=UZlcQvHU5Qg5gXquDW2QTc-v6l-LzR1-8SRmJ2aWQjiqFcPggIETikoEta_DJZQc elapsed=0.000
INFO[04-05|14:35:29] Input 1/3 ready 
INFO[04-05|14:35:29] Finished materialize                     input=/task/repeatr/ type=git hash=72b19be26bbac56c9d1dc418a01bfe0b09a9363c elapsed=0.000
INFO[04-05|14:35:29] Finished materialize                     input=/ type=tar hash=aLMH4qK1EdlPDavdhErOs0BPxqO0i6lUaeRE4DuUmnNMxhHtF56gkoeSulvwWNqT elapsed=0.000
INFO[04-05|14:35:29] Input 2/3 ready 
INFO[04-05|14:35:29] Input 3/3 ready 
INFO[04-05|14:35:29] All inputs acquired... starting assembly 
panic: Error[rio.ErrAssembly]: System="aufsplacer";Path="";
	Caused by: invalid argument
	Stack trace:
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/meep.go:4: meep.Meep
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/placer/placers_linux.go:109: placer.NewAufsPlacer.func1
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/placer/assembler.go:34: placer.defaultAssembler.Assemble
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/placer/assembler.go:21: placer.(defaultAssembler).Assemble-fm
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:114: util.AssembleFilesystem
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:120: runc.(*Executor).Execute
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:98: runc.(*Executor).Run.func1
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:17: meep.RecoverPanics
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:99: runc.(*Executor).Run
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:79: runc.(*Executor).Start.func1.1
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/flak/assist.go:34: flak.WithDir
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:80: runc.(*Executor).Start.func1
		·> /app/go/go/src/runtime/asm_amd64.s:2086: runtime.goexit
 [recovered]
	panic: Error[rio.ErrAssembly]: System="aufsplacer";Path="";
	Caused by: invalid argument
	Stack trace:
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/meep.go:4: meep.Meep
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/placer/placers_linux.go:109: placer.NewAufsPlacer.func1
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/placer/assembler.go:34: placer.defaultAssembler.Assemble
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/placer/assembler.go:21: placer.(defaultAssembler).Assemble-fm
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:114: util.AssembleFilesystem
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:120: runc.(*Executor).Execute
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:98: runc.(*Executor).Run.func1
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:17: meep.RecoverPanics
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:99: runc.(*Executor).Run
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:79: runc.(*Executor).Start.func1.1
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/flak/assist.go:34: flak.WithDir
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:80: runc.(*Executor).Start.func1
		·> /app/go/go/src/runtime/asm_amd64.s:2086: runtime.goexit
 [recovered]
	panic: Error[rio.ErrAssembly]: System="aufsplacer";Path="";
	Caused by: invalid argument
	Stack trace:
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/meep.go:4: meep.Meep
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/placer/placers_linux.go:109: placer.NewAufsPlacer.func1
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/placer/assembler.go:34: placer.defaultAssembler.Assemble
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/placer/assembler.go:21: placer.(defaultAssembler).Assemble-fm
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:114: util.AssembleFilesystem
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:120: runc.(*Executor).Execute
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:98: runc.(*Executor).Run.func1
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:17: meep.RecoverPanics
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:99: runc.(*Executor).Run
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:79: runc.(*Executor).Start.func1.1
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/flak/assist.go:34: flak.WithDir
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/impl/runc/runc_executor.go:80: runc.(*Executor).Start.func1
		·> /app/go/go/src/runtime/asm_amd64.s:2086: runtime.goexit


goroutine 1 [running]:
panic(0x9cc9c0, 0xc42006c4e0)
	/app/go/go/src/runtime/panic.go:500 +0x1a1
go.polydawn.net/meep.TryPlan.MustHandle(0xc4201b7e58, 0x2, 0x2, 0xca6bc0, 0xc42006c4e0)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:69 +0x96
go.polydawn.net/meep.Try.func1(0xc4201b7e58, 0x2, 0x2)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:38 +0x79
panic(0x9cc9c0, 0xc42006c4e0)
	/app/go/go/src/runtime/panic.go:458 +0x243
github.com/codegangsta/cli.HandleAction.func1(0xc4201b7078)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/app.go:478 +0x247
panic(0x9cc9c0, 0xc42006c4e0)
	/app/go/go/src/runtime/panic.go:458 +0x243
go.polydawn.net/meep.TryPlan.MustHandle(0xcc8b60, 0x6, 0x6, 0xca6bc0, 0xc42006c4e0)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:69 +0x96
go.polydawn.net/repeatr/cmd/repeatr/run.Run.func1(0xc420146780, 0x0, 0x0)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/run/runCmd.go:108 +0xad6
reflect.Value.call(0x979360, 0xc42012b440, 0x13, 0xa39ed4, 0x4, 0xc4201b7038, 0x1, 0x1, 0x4850b8, 0xa2d260, ...)
	/app/go/go/src/reflect/value.go:434 +0x5c8
reflect.Value.Call(0x979360, 0xc42012b440, 0x13, 0xc4201b7038, 0x1, 0x1, 0x0, 0xc42004b028, 0x48dd26)
	/app/go/go/src/reflect/value.go:302 +0xa4
github.com/codegangsta/cli.HandleAction(0x979360, 0xc42012b440, 0xc420146780, 0x0, 0x0)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/app.go:487 +0x1e0
github.com/codegangsta/cli.Command.Run(0xa39c00, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa4105b, 0xd, 0x0, ...)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/command.go:191 +0xc3b
github.com/codegangsta/cli.(*App).Run(0xc4201a2300, 0xc42000c1b0, 0x3, 0x3, 0x0, 0x0)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/app.go:240 +0x611
main.Main.func6()
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/main.go:229 +0x6d
go.polydawn.net/meep.Try(0xc4201b7908, 0xc4201b7e58, 0x2, 0x2)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40 +0x61
main.Main(0xc42000c1b0, 0x3, 0x3, 0xca7600, 0xc42002a008, 0xca7680, 0xc42002a010, 0xca7680, 0xc42002a018, 0xc4200001a0)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/main.go:244 +0x18bb
main.main()
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/main.go:24 +0x8a
root@yoga:/home/timothy/pu/projects/play-with-repeatr# /home/timothy/bin/repeatr --version
repeatr v0.14
git commit 72b19be26bbac56c9d1dc418a01bfe0b09a9363c
build date 2017-01-17 11:23:48-06:00
root@yoga:/home/timothy/pu/projects/play-with-repeatr#

Failed to run

repeatr v0.14+dev
git commit 4924d654453164b1602de7543f153302efb50bea
build date xxx
timothy@yoga ~/p/p/reppl> `

> sudo repeatr run build.formula 
[sudo] password for timothy: 
Please touch the device.
INFO[06-29|23:47:38] Need 3 inputs to be ready 
INFO[06-29|23:47:38] Starting materialize                     input=/app/go type=tar hash=jZ8NkMmCPUb5rTHtjBLZEe0usTSDjgGfD71hN07wuuPfkoqG6pLB0FR4GKmQRAva
INFO[06-29|23:47:38] Starting materialize                     input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3
INFO[06-29|23:47:38] Starting materialize                     input=/ type=tar hash=aLMH4qK1EdlPDavdhErOs0BPxqO0i6lUaeRE4DuUmnNMxhHtF56gkoeSulvwWNqT
INFO[06-29|23:47:38] using `git version`:                     input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 v="git version 2.1.4"
INFO[06-29|23:47:45] git: connected to remote warehouse       input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 remote=https://github.com/polydawn/reppl
INFO[06-29|23:47:45] git: object fetch starting               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 remote=https://github.com/polydawn/reppl
INFO[06-29|23:47:47] git: object fetch complete               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 remote=https://github.com/polydawn/reppl elapsed=2.796
INFO[06-29|23:47:47] git: fetch complete                      input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 elapsed=2.800
INFO[06-29|23:47:47] git: tree checkout starting              input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3
INFO[06-29|23:47:47] git: tree checkout complete              input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 elapsed=0.005
INFO[06-29|23:47:47] git: checkout main repo complete         input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 elapsed=0.005
INFO[06-29|23:47:47] git: submodules found                    input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 count=10
INFO[06-29|23:47:47] git: object fetch starting               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=a5b47d31c556af34a302ce5d659e6fea44d90de0 remote=https://github.com/go-yaml/yaml
INFO[06-29|23:48:50] git: object fetch complete               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=a5b47d31c556af34a302ce5d659e6fea44d90de0 remote=https://github.com/go-yaml/yaml elapsed=62.768
INFO[06-29|23:48:50] git: object fetch starting               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=8ddce2a84170772b95dd5d576c48d517b22cac63 remote=https://github.com/jtolds/gls
INFO[06-29|23:48:52] git: object fetch complete               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=8ddce2a84170772b95dd5d576c48d517b22cac63 remote=https://github.com/jtolds/gls elapsed=1.384
INFO[06-29|23:48:52] git: object fetch starting               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=2063fd1cc7c975db70502811a34b06ad034ccdf2 remote=https://github.com/smartystreets/assertions
INFO[06-29|23:50:12] git: object fetch complete               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=2063fd1cc7c975db70502811a34b06ad034ccdf2 remote=https://github.com/smartystreets/assertions elapsed=80.004
INFO[06-29|23:50:12] git: object fetch starting               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=7befa7fd6e2e8ca28d2b94f2d39111929904b08d remote=https://github.com/smartystreets/goconvey
INFO[06-29|23:51:06] git: object fetch complete               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=7befa7fd6e2e8ca28d2b94f2d39111929904b08d remote=https://github.com/smartystreets/goconvey elapsed=54.479
INFO[06-29|23:51:06] git: object fetch starting               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=faddd6128c66c4708f45fdc007f575f75e592a3c remote=https://github.com/ugorji/go
INFO[06-29|23:51:48] git: object fetch complete               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=faddd6128c66c4708f45fdc007f575f75e592a3c remote=https://github.com/ugorji/go elapsed=41.609
INFO[06-29|23:51:48] git: object fetch starting               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=0bdeddeeb0f650497d603c4ad7b20cfe685682f6 remote=https://github.com/urfave/cli.git
INFO[06-29|23:52:13] git: object fetch complete               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=0bdeddeeb0f650497d603c4ad7b20cfe685682f6 remote=https://github.com/urfave/cli.git elapsed=25.211
INFO[06-29|23:52:13] git: object fetch starting               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=1f9454055098a3f478992ac20b5d13a7ab755c9d remote=https://github.com/polydawn/meep
INFO[06-29|23:52:17] git: object fetch complete               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=1f9454055098a3f478992ac20b5d13a7ab755c9d remote=https://github.com/polydawn/meep elapsed=4.486
INFO[06-29|23:52:17] git: object fetch starting               input=/task type=git hash=7566e337bc90d1863d823e2baeb80f4e547e85f3 submhash=f4d55dc36da57c233a7d4908f2e8cdccbe263b7d remote=https://github.com/polydawn/repeatr
WARN[06-29|23:53:00] Error during materialize                 input=/ type=tar hash=aLMH4qK1EdlPDavdhErOs0BPxqO0i6lUaeRE4DuUmnNMxhHtF56gkoeSulvwWNqT error="Error[rio.ErrUnknown]:\n\tCaused by: FSError: IO Error: read tcp 192.168.2.14:50990->54.231.176.162:80: read: connection reset by peer\n\t\"FSError\" backtrace:\n\tgo.polydawn.net/repeatr/lib/fs.ioError:errors.go:18\n\tgo.polydawn.net/repeatr/lib/fs.PlaceFile:emplacements.go:91\n\tgo.polydawn.net/repeatr/rio/transmat/impl/tar.Extract:tar_stream.go:146\n\tgo.polydawn.net/repeatr/rio/transmat/impl/tar.(*TarTransmat).Materialize.func1:tar_transmat.go:132\n\tgo.polydawn.net/meep.Try:try.go:41\n\tgo.polydawn.net/repeatr/rio/transmat/impl/tar.(*TarTransmat).Materialize:tar_transmat.go:156\n\tgo.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize:dispatchingTransmat.go:45\n\tgo.polydawn.net/repeatr/rio/transmat/impl/cachedir.(*CachingTransmat).Materialize:dircacher.go:84\n\tgo.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize:dispatchingTransmat.go:45\n\tgo.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1.1:provision.go:40\n\tgo.polydawn.net/meep.Try:try.go:41\n\tgo.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1:provision.go:64\n\truntime.goexit:asm_amd64.s:1697\n\tStack trace:\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try_handlers.go:34: meep.tryHandlerMapto.handle\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try_handlers.go:14: meep.handle)-fm\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:56: meep.TryPlan.Handle\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:67: meep.TryPlan.MustHandle\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:38: meep.Try.func1\n\t\t·> /usr/local/go/src/runtime/asm_amd64.s:437: runtime.call32\n\t\t·> /usr/local/go/src/runtime/panic.go:423: runtime.gopanic\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/fs/errors.go:18: fs.ioError\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/fs/emplacements.go:89: fs.PlaceFile\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_stream.go:145: tar.Extract\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_transmat.go:129: tar.(*TarTransmat).Materialize.func1\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40: meep.Try\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_transmat.go:155: tar.(*TarTransmat).Materialize\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45: mux.(*Transmat).Materialize\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/cachedir/dircacher.go:84: cachedir.(*CachingTransmat).Materialize\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45: mux.(*Transmat).Materialize\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:40: util.ProvisionInputs.func1.1\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40: meep.Try\n\t\t·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:63: util.ProvisionInputs.func1\n\t\t·> /usr/local/go/src/runtime/asm_amd64.s:1696: runtime.goexit\n" elapsed=322.347
panic: Error[rio.ErrUnknown]:
	Caused by: FSError: IO Error: read tcp 192.168.2.14:50990->54.231.176.162:80: read: connection reset by peer
	"FSError" backtrace:
	go.polydawn.net/repeatr/lib/fs.ioError:errors.go:18
	go.polydawn.net/repeatr/lib/fs.PlaceFile:emplacements.go:91
	go.polydawn.net/repeatr/rio/transmat/impl/tar.Extract:tar_stream.go:146
	go.polydawn.net/repeatr/rio/transmat/impl/tar.(*TarTransmat).Materialize.func1:tar_transmat.go:132
	go.polydawn.net/meep.Try:try.go:41
	go.polydawn.net/repeatr/rio/transmat/impl/tar.(*TarTransmat).Materialize:tar_transmat.go:156
	go.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize:dispatchingTransmat.go:45
	go.polydawn.net/repeatr/rio/transmat/impl/cachedir.(*CachingTransmat).Materialize:dircacher.go:84
	go.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize:dispatchingTransmat.go:45
	go.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1.1:provision.go:40
	go.polydawn.net/meep.Try:try.go:41
	go.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1:provision.go:64
	runtime.goexit:asm_amd64.s:1697
	Stack trace:
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try_handlers.go:34: meep.tryHandlerMapto.handle
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try_handlers.go:14: meep.handle)-fm
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:56: meep.TryPlan.Handle
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:67: meep.TryPlan.MustHandle
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:38: meep.Try.func1
		·> /usr/local/go/src/runtime/asm_amd64.s:437: runtime.call32
		·> /usr/local/go/src/runtime/panic.go:423: runtime.gopanic
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/fs/errors.go:18: fs.ioError
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/fs/emplacements.go:89: fs.PlaceFile
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_stream.go:145: tar.Extract
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_transmat.go:129: tar.(*TarTransmat).Materialize.func1
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40: meep.Try
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_transmat.go:155: tar.(*TarTransmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45: mux.(*Transmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/cachedir/dircacher.go:84: cachedir.(*CachingTransmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45: mux.(*Transmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:40: util.ProvisionInputs.func1.1
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40: meep.Try
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:63: util.ProvisionInputs.func1
		·> /usr/local/go/src/runtime/asm_amd64.s:1696: runtime.goexit
 [recovered]
	panic: Error[rio.ErrUnknown]:
	Caused by: FSError: IO Error: read tcp 192.168.2.14:50990->54.231.176.162:80: read: connection reset by peer
	"FSError" backtrace:
	go.polydawn.net/repeatr/lib/fs.ioError:errors.go:18
	go.polydawn.net/repeatr/lib/fs.PlaceFile:emplacements.go:91
	go.polydawn.net/repeatr/rio/transmat/impl/tar.Extract:tar_stream.go:146
	go.polydawn.net/repeatr/rio/transmat/impl/tar.(*TarTransmat).Materialize.func1:tar_transmat.go:132
	go.polydawn.net/meep.Try:try.go:41
	go.polydawn.net/repeatr/rio/transmat/impl/tar.(*TarTransmat).Materialize:tar_transmat.go:156
	go.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize:dispatchingTransmat.go:45
	go.polydawn.net/repeatr/rio/transmat/impl/cachedir.(*CachingTransmat).Materialize:dircacher.go:84
	go.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize:dispatchingTransmat.go:45
	go.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1.1:provision.go:40
	go.polydawn.net/meep.Try:try.go:41
	go.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1:provision.go:64
	runtime.goexit:asm_amd64.s:1697
	Stack trace:
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try_handlers.go:34: meep.tryHandlerMapto.handle
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try_handlers.go:14: meep.handle)-fm
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:56: meep.TryPlan.Handle
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:67: meep.TryPlan.MustHandle
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:38: meep.Try.func1
		·> /usr/local/go/src/runtime/asm_amd64.s:437: runtime.call32
		·> /usr/local/go/src/runtime/panic.go:423: runtime.gopanic
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/fs/errors.go:18: fs.ioError
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/fs/emplacements.go:89: fs.PlaceFile
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_stream.go:145: tar.Extract
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_transmat.go:129: tar.(*TarTransmat).Materialize.func1
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40: meep.Try
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_transmat.go:155: tar.(*TarTransmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45: mux.(*Transmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/cachedir/dircacher.go:84: cachedir.(*CachingTransmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45: mux.(*Transmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:40: util.ProvisionInputs.func1.1
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40: meep.Try
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:63: util.ProvisionInputs.func1
		·> /usr/local/go/src/runtime/asm_amd64.s:1696: runtime.goexit
 [recovered]
	panic: Error[rio.ErrUnknown]:
	Caused by: FSError: IO Error: read tcp 192.168.2.14:50990->54.231.176.162:80: read: connection reset by peer
	"FSError" backtrace:
	go.polydawn.net/repeatr/lib/fs.ioError:errors.go:18
	go.polydawn.net/repeatr/lib/fs.PlaceFile:emplacements.go:91
	go.polydawn.net/repeatr/rio/transmat/impl/tar.Extract:tar_stream.go:146
	go.polydawn.net/repeatr/rio/transmat/impl/tar.(*TarTransmat).Materialize.func1:tar_transmat.go:132
	go.polydawn.net/meep.Try:try.go:41
	go.polydawn.net/repeatr/rio/transmat/impl/tar.(*TarTransmat).Materialize:tar_transmat.go:156
	go.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize:dispatchingTransmat.go:45
	go.polydawn.net/repeatr/rio/transmat/impl/cachedir.(*CachingTransmat).Materialize:dircacher.go:84
	go.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize:dispatchingTransmat.go:45
	go.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1.1:provision.go:40
	go.polydawn.net/meep.Try:try.go:41
	go.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1:provision.go:64
	runtime.goexit:asm_amd64.s:1697
	Stack trace:
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try_handlers.go:34: meep.tryHandlerMapto.handle
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try_handlers.go:14: meep.handle)-fm
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:56: meep.TryPlan.Handle
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:67: meep.TryPlan.MustHandle
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:38: meep.Try.func1
		·> /usr/local/go/src/runtime/asm_amd64.s:437: runtime.call32
		·> /usr/local/go/src/runtime/panic.go:423: runtime.gopanic
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/fs/errors.go:18: fs.ioError
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/fs/emplacements.go:89: fs.PlaceFile
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_stream.go:145: tar.Extract
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_transmat.go:129: tar.(*TarTransmat).Materialize.func1
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40: meep.Try
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_transmat.go:155: tar.(*TarTransmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45: mux.(*Transmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/cachedir/dircacher.go:84: cachedir.(*CachingTransmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45: mux.(*Transmat).Materialize
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:40: util.ProvisionInputs.func1.1
		·> /task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40: meep.Try
		·> /task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:63: util.ProvisionInputs.func1
		·> /usr/local/go/src/runtime/asm_amd64.s:1696: runtime.goexit


goroutine 1 [running]:
go.polydawn.net/meep.TryPlan.MustHandle(0xc82014be30, 0x2, 0x2, 0x7fca634516d0, 0xc820487640)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:69 +0x8f
go.polydawn.net/meep.Try.func1(0xc82014be30, 0x2, 0x2)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:38 +0x83
github.com/codegangsta/cli.HandleAction.func1(0xc82014ab50)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/app.go:478 +0x38e
go.polydawn.net/meep.TryPlan.MustHandle(0x1118180, 0x6, 0x6, 0x7fca634516d0, 0xc820487640)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/tryplan.go:69 +0x8f
go.polydawn.net/repeatr/cmd/repeatr/run.Run.func1(0xc8200b6dc0, 0x0, 0x0)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/run/runCmd.go:108 +0x13ae
reflect.Value.call(0xbcd780, 0xc820105560, 0x13, 0xd04570, 0x4, 0xc82014aad0, 0x1, 0x1, 0x0, 0x0, ...)
	/usr/local/go/src/reflect/value.go:432 +0x120a
reflect.Value.Call(0xbcd780, 0xc820105560, 0x13, 0xc82014aad0, 0x1, 0x1, 0x0, 0x0, 0x0)
	/usr/local/go/src/reflect/value.go:300 +0xb1
github.com/codegangsta/cli.HandleAction(0xbcd780, 0xc820105560, 0xc8200b6dc0, 0x0, 0x0)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/app.go:487 +0x2ee
github.com/codegangsta/cli.Command.Run(0xd0bfe8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd16d80, 0xd, 0x0, ...)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/command.go:191 +0xfe6
github.com/codegangsta/cli.(*App).Run(0xc820072780, 0xc820066150, 0x3, 0x3, 0x0, 0x0)
	/task/repeatr/.gopath/src/github.com/codegangsta/cli/app.go:240 +0xa9d
main.Main.func6()
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/main.go:229 +0x6c
go.polydawn.net/meep.Try(0xc82014b7e0, 0xc82014be30, 0x2, 0x2)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40 +0x58
main.Main(0xc820066150, 0x3, 0x3, 0x7fca62409320, 0xc820070000, 0x7fca624091c0, 0xc820070008, 0x7fca624091c0, 0xc820070010, 0x0)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/main.go:244 +0x2910
main.main()
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/cmd/repeatr/main.go:24 +0xd3

goroutine 17 [syscall, 5 minutes, locked to thread]:
runtime.goexit()
	/usr/local/go/src/runtime/asm_amd64.s:1696 +0x1

goroutine 23 [chan receive]:
github.com/polydawn/gosh.(*ExecProc).Wait(0xc820500370)
	/task/repeatr/.gopath/src/github.com/polydawn/gosh/exec_proc.go:86 +0x3a
github.com/polydawn/gosh.Command.RunAndReport(0xc82019be60, 0x0, 0x0)
	/task/repeatr/.gopath/src/github.com/polydawn/gosh/shell.go:131 +0xff
go.polydawn.net/repeatr/rio/transmat/impl/git.yank(0x7fca6240a338, 0xc820520220, 0xc82051fdb0, 0x4a, 0xc8204772f7, 0x23)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/git/git_internals.go:46 +0x6f6
go.polydawn.net/repeatr/rio/transmat/impl/git.(*GitTransmat).Materialize.func1.3(0xc82014c000, 0xa, 0x10, 0xc8201509c0, 0x7fca6240a338, 0xc820119e40)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/git/git_transmat.go:197 +0x68b
go.polydawn.net/repeatr/rio/transmat/impl/git.(*GitTransmat).Materialize.func1()
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/git/git_transmat.go:202 +0xbf2
go.polydawn.net/meep.Try(0xc82004fa40, 0x1110740, 0x8, 0x8)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40 +0x58
go.polydawn.net/repeatr/rio/transmat/impl/git.(*GitTransmat).Materialize(0xc8201509c0, 0xc820117930, 0x3, 0xc820105cb0, 0x28, 0xc820010110, 0x1, 0x1, 0x7fca6240a338, 0xc820119e40, ...)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/git/git_transmat.go:268 +0x104
go.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize(0xc820070158, 0xc820117930, 0x3, 0xc820105cb0, 0x28, 0xc820010110, 0x1, 0x1, 0x7fca6240a338, 0xc820119e40, ...)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45 +0x2f5
go.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1.1()
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:40 +0x264
go.polydawn.net/meep.Try(0xc82004fef8, 0xc82004fe78, 0x1, 0x1)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40 +0x58
go.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1(0x7fca6240a338, 0xc820119b20, 0x7fca6240a6b8, 0xc820070158, 0xc82008bda0, 0xc820117910, 0x5, 0xc820075770)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:63 +0x537
created by go.polydawn.net/repeatr/core/executor/util.ProvisionInputs
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:64 +0x281

goroutine 25 [IO wait]:
net.runtime_pollWait(0x7fca61bc5050, 0x72, 0xc8200620a0)
	/usr/local/go/src/runtime/netpoll.go:157 +0x60
net.(*pollDesc).Wait(0xc8201925a0, 0x72, 0x0, 0x0)
	/usr/local/go/src/net/fd_poll_runtime.go:73 +0x3a
net.(*pollDesc).WaitRead(0xc8201925a0, 0x0, 0x0)
	/usr/local/go/src/net/fd_poll_runtime.go:78 +0x36
net.(*netFD).Read(0xc820192540, 0xc8207603d1, 0x7c2f, 0x7c2f, 0x0, 0x7fca62405028, 0xc8200620a0)
	/usr/local/go/src/net/fd_unix.go:232 +0x23a
net.(*conn).Read(0xc82002c080, 0xc8207603d1, 0x7c2f, 0x7c2f, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/net.go:172 +0xe4
crypto/tls.(*block).readFromUntil(0xc82000a780, 0x7fca63447360, 0xc82002c080, 0x58a, 0x0, 0x0)
	/usr/local/go/src/crypto/tls/conn.go:455 +0xcc
crypto/tls.(*Conn).readRecord(0xc820216000, 0xe8ba17, 0x0, 0x0)
	/usr/local/go/src/crypto/tls/conn.go:583 +0xccf
crypto/tls.(*Conn).Read(0xc820216000, 0xc8202b4000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
	/usr/local/go/src/crypto/tls/conn.go:901 +0x167
net/http.noteEOFReader.Read(0x7fca61384ad0, 0xc820216000, 0xc8201c6058, 0xc8202b4000, 0x8000, 0x8000, 0x56d, 0x0, 0x0)
	/usr/local/go/src/net/http/transport.go:1370 +0x67
net/http.(*noteEOFReader).Read(0xc820596100, 0xc8202b4000, 0x8000, 0x8000, 0x56d, 0x0, 0x0)
	<autogenerated>:126 +0xd0
bufio.(*Reader).Read(0xc820342180, 0xc8202b4000, 0x8000, 0x8000, 0x56d, 0x0, 0x0)
	/usr/local/go/src/bufio/bufio.go:197 +0x126
io.(*LimitedReader).Read(0xc82059c6c0, 0xc8202b4000, 0x8000, 0x8000, 0xc8200fdea0, 0x0, 0x0)
	/usr/local/go/src/io/io.go:427 +0xbd
net/http.(*body).readLocked(0xc820532440, 0xc8202b4000, 0x8000, 0x8000, 0xc800000000, 0x0, 0x0)
	/usr/local/go/src/net/http/transfer.go:632 +0x98
net/http.(*body).Read(0xc820532440, 0xc8202b4000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/http/transfer.go:624 +0x110
net/http.(*bodyEOFSignal).Read(0xc820532480, 0xc8202b4000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/http/transport.go:1296 +0x26a
bufio.(*Reader).fill(0xc8204327e0)
	/usr/local/go/src/bufio/bufio.go:97 +0x1e9
bufio.(*Reader).ReadByte(0xc8204327e0, 0x5d, 0x0, 0x0)
	/usr/local/go/src/bufio/bufio.go:229 +0x7a
compress/flate.(*decompressor).moreBits(0xc82011c000, 0x0, 0x0)
	/usr/local/go/src/compress/flate/inflate.go:699 +0x4d
compress/flate.(*decompressor).huffSym(0xc82011c000, 0xc82011c030, 0x1, 0x0, 0x0)
	/usr/local/go/src/compress/flate/inflate.go:721 +0x5b
compress/flate.(*decompressor).huffmanBlock(0xc82011c000)
	/usr/local/go/src/compress/flate/inflate.go:471 +0x46
compress/flate.(*decompressor).copyHuff(0xc82011c000)
	/usr/local/go/src/compress/flate/inflate.go:624 +0x3e
compress/flate.(*decompressor).Read(0xc82011c000, 0xc820728000, 0x8000, 0x8000, 0x406b01, 0x0, 0x0)
	/usr/local/go/src/compress/flate/inflate.go:349 +0x1ae
compress/gzip.(*Reader).Read(0xc820092000, 0xc820728000, 0x8000, 0x8000, 0xc8200fe3d0, 0x0, 0x0)
	/usr/local/go/src/compress/gzip/gunzip.go:250 +0xef
archive/tar.(*regFileReader).Read(0xc820548320, 0xc820728000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
	/usr/local/go/src/archive/tar/reader.go:760 +0xc5
archive/tar.(*Reader).Read(0xc820590000, 0xc820728000, 0x8000, 0x8000, 0x3a00, 0x0, 0x0)
	/usr/local/go/src/archive/tar/reader.go:745 +0x9a
go.polydawn.net/repeatr/lib/flak.(*HashingReader).Read(0xc820548380, 0xc820728000, 0x8000, 0x8000, 0x3a00, 0x0, 0x0)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/flak/hash.go:20 +0x85
io.copyBuffer(0x7fca624091c0, 0xc820070028, 0x7fca6240e9a0, 0xc820548380, 0xc820728000, 0x8000, 0x8000, 0x3a00, 0x0, 0x0)
	/usr/local/go/src/io/io.go:381 +0x247
io.Copy(0x7fca624091c0, 0xc820070028, 0x7fca6240e9a0, 0xc820548380, 0xc820070028, 0x0, 0x0)
	/usr/local/go/src/io/io.go:351 +0x64
go.polydawn.net/repeatr/lib/fs.PlaceFile(0xc82052c120, 0x2f, 0xc82044cfc0, 0x2b, 0x81a4, 0x0, 0x0, 0x19430, 0xed0b7c4e1, 0x0, ...)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/lib/fs/emplacements.go:87 +0x59b
go.polydawn.net/repeatr/rio/transmat/impl/tar.Extract(0xc820590000, 0xc82052c120, 0x2f, 0x7fca6240e870, 0xc82059c780, 0xe89758, 0x7fca6240a338, 0xc820119e20)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_stream.go:145 +0xcc3
go.polydawn.net/repeatr/rio/transmat/impl/tar.(*TarTransmat).Materialize.func1()
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_transmat.go:129 +0xd29
go.polydawn.net/meep.Try(0xc8200ff770, 0x1110740, 0x8, 0x8)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40 +0x58
go.polydawn.net/repeatr/rio/transmat/impl/tar.(*TarTransmat).Materialize(0xc820117e10, 0xc820117a50, 0x3, 0xc82013cbc0, 0x40, 0xc820190000, 0x1, 0x1, 0x7fca6240a338, 0xc820119e20, ...)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/tar/tar_transmat.go:155 +0x128
go.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize(0xc820119c00, 0xc820117a50, 0x3, 0xc82013cbc0, 0x40, 0xc820190000, 0x1, 0x1, 0x7fca6240a338, 0xc820119e20, ...)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45 +0x2f5
go.polydawn.net/repeatr/rio/transmat/impl/cachedir.(*CachingTransmat).Materialize(0xc820119c00, 0xc820117a50, 0x3, 0xc82013cbc0, 0x40, 0xc820190000, 0x1, 0x1, 0x7fca6240a338, 0xc820119e20, ...)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/impl/cachedir/dircacher.go:84 +0x326
go.polydawn.net/repeatr/rio/transmat/mux.(*Transmat).Materialize(0xc820070158, 0xc820117a50, 0x3, 0xc82013cbc0, 0x40, 0xc820190000, 0x1, 0x1, 0x7fca6240a338, 0xc820119e20, ...)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/rio/transmat/mux/dispatchingTransmat.go:45 +0x2f5
go.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1.1()
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:40 +0x264
go.polydawn.net/meep.Try(0xc8200ffee8, 0xc8200ffe68, 0x1, 0x1)
	/task/repeatr/.gopath/src/go.polydawn.net/meep/try.go:40 +0x58
go.polydawn.net/repeatr/core/executor/util.ProvisionInputs.func1(0x7fca6240a338, 0xc820119b20, 0x7fca6240a6b8, 0xc820070158, 0xc82008bda0, 0xc820117a30, 0x7, 0xc820075810)
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:63 +0x537
created by go.polydawn.net/repeatr/core/executor/util.ProvisionInputs
	/task/repeatr/.gopath/src/go.polydawn.net/repeatr/core/executor/util/provision.go:64 +0x281

goroutine 56 [select, 5 minutes]:
net/http.(*persistConn).writeLoop(0xc8201c6000)
	/usr/local/go/src/net/http/transport.go:1009 +0x40c
created by net/http.(*Transport).dialConn
	/usr/local/go/src/net/http/transport.go:686 +0xc9d

goroutine 55 [select, 5 minutes]:
net/http.(*persistConn).readLoop(0xc8201c6000)
	/usr/local/go/src/net/http/transport.go:976 +0xac7
created by net/http.(*Transport).dialConn
	/usr/local/go/src/net/http/transport.go:685 +0xc78

goroutine 48 [syscall]:
syscall.Syscall(0x0, 0xb, 0xc820106800, 0x200, 0x0, 0x4, 0x414159)
	/usr/local/go/src/syscall/asm_linux_amd64.s:18 +0x5
syscall.read(0xb, 0xc820106800, 0x200, 0x200, 0xc81ffd6f86, 0x0, 0x0)
	/usr/local/go/src/syscall/zsyscall_linux_amd64.go:783 +0x5f
syscall.Read(0xb, 0xc820106800, 0x200, 0x200, 0xc82002bce8, 0x0, 0x0)
	/usr/local/go/src/syscall/syscall_unix.go:160 +0x4d
os.(*File).read(0xc820070110, 0xc820106800, 0x200, 0x200, 0xc820106800, 0x0, 0x0)
	/usr/local/go/src/os/file_unix.go:211 +0x53
os.(*File).Read(0xc820070110, 0xc820106800, 0x200, 0x200, 0x410f16, 0x0, 0x0)
	/usr/local/go/src/os/file.go:95 +0x8a
bytes.(*Buffer).ReadFrom(0xc8201e6af0, 0x7fca62409320, 0xc820070110, 0x0, 0x0, 0x0)
	/usr/local/go/src/bytes/buffer.go:173 +0x23f
io.copyBuffer(0x7fca62409938, 0xc8201e6af0, 0x7fca62409320, 0xc820070110, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/usr/local/go/src/io/io.go:375 +0x180
io.Copy(0x7fca62409938, 0xc8201e6af0, 0x7fca62409320, 0xc820070110, 0xc82040a540, 0x0, 0x0)
	/usr/local/go/src/io/io.go:351 +0x64
os/exec.(*Cmd).writerDescriptor.func1(0x0, 0x0)
	/usr/local/go/src/os/exec/exec.go:232 +0x8b
os/exec.(*Cmd).Start.func1(0xc820598640, 0xc820520a40)
	/usr/local/go/src/os/exec/exec.go:340 +0x1d
created by os/exec.(*Cmd).Start
	/usr/local/go/src/os/exec/exec.go:341 +0x96d

goroutine 49 [syscall]:
syscall.Syscall6(0x3d, 0x2b3b, 0xc820027dfc, 0x0, 0xc8200a0240, 0x0, 0x0, 0x4325c4, 0xc8201c58b0, 0x200000003)
	/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
syscall.wait4(0x2b3b, 0xc820027dfc, 0x0, 0xc8200a0240, 0x90, 0x0, 0x0)
	/usr/local/go/src/syscall/zsyscall_linux_amd64.go:172 +0x72
syscall.Wait4(0x2b3b, 0xc820027e44, 0x0, 0xc8200a0240, 0x4121c4, 0x0, 0x0)
	/usr/local/go/src/syscall/syscall_linux.go:256 +0x55
os.(*Process).wait(0xc820520c40, 0x0, 0x0, 0x0)
	/usr/local/go/src/os/exec_unix.go:22 +0x105
os.(*Process).Wait(0xc820520c40, 0x0, 0x0, 0x0)
	/usr/local/go/src/os/doc.go:45 +0x2d
github.com/polydawn/gosh.(*ExecProc).waitTry(0xc820500370, 0xa49b80, 0x0, 0x0)
	/task/repeatr/.gopath/src/github.com/polydawn/gosh/exec_proc.go:238 +0x4d
github.com/polydawn/gosh.(*ExecProc).waitAndHandleExit(0xc820500370)
	/task/repeatr/.gopath/src/github.com/polydawn/gosh/exec_proc.go:213 +0x49
created by github.com/polydawn/gosh.(*ExecProc).start
	/task/repeatr/.gopath/src/github.com/polydawn/gosh/exec_proc.go:205 +0x833

Do everything Subuser needs

Repeatr should do all the things that Subuser needs! Because that project is awesome ;)

Specifically though, as a mission statement: Yes, Repeatr should make sense as a provider of image transport mechanisms for a project like Subuser. Deterministic application deployments for an end user, even on a graphical system -- even when these systems integrate with humans in such a way that they're not repeatable (e.g. interactive gui, etc) and/or stateful -- is totally on point with the kind of world we want to make possible with Repeatr.

Even if running desktop and graphical applications means building a lot of escape valves, there's still a ton of value here. Smooth delivery routes where repeatable build processes lead directly to an end-user install would make it not just possible but easy to to audit Where Stuff Came From... and that's the kind of desktop operating environment I'd love to live in.

See also subuser-security/subuser#220

Mac xhyve executor

https://github.com/zchee/libhyperkit is probably the right set of bindings to make use of that will work for mac hosts.

There needs to be a refactor in how the rio mount placer interacts with the executor - on mac they need to happen together, rather than first constructing the overlay FS and then setting the constructed FS as the environment in a docker / chroot container. On a mac host, an appropriate overlay FS can't easily be created on the host, but can exist within the executor environment.

There will also need to be a choice of what kernel should be used in the guest environment.

Local file silo conflict

Using same local file path for different types of transmat will cause errors.
e.g.
A formula outputs a dir type and then tries to output the same item as a tar type to the same wares directory.

sudo $(which repeatr) run gogs.frm >/dev/null
INFO[03-23|23:55:58] Job queued                               JobID=aemfo9ty-53b3oq2d-et8s3srp
INFO[03-23|23:55:58] Starting materialize for tar hash=H7NK-Nsm362N9c9hJ3PvQJWRIwJp6mUQ1zxBX5R0qCzUQcR3jhgtLzO2PP1BdLe8 JobID=aemfo9ty-53b3oq2d-et8s3srp
INFO[03-23|23:55:58] Finished materialize for tar hash=H7NK-Nsm362N9c9hJ3PvQJWRIwJp6mUQ1zxBX5R0qCzUQcR3jhgtLzO2PP1BdLe8 JobID=aemfo9ty-53b3oq2d-et8s3srp
INFO[03-23|23:55:58] Starting materialize for tar hash=RoOPPC6llRYEMRE0F6U2F95a2_0i_YNTfPEZ7PEToFmfEkz7T6Gp4bJYjHup-2Bb JobID=aemfo9ty-53b3oq2d-et8s3srp
WARN[03-23|23:55:58] Errored during materialize for tar hash=RoOPPC6llRYEMRE0F6U2F95a2_0i_YNTfPEZ7PEToFmfEkz7T6Gp4bJYjHup-2Bb JobID=aemfo9ty-53b3oq2d-et8s3srp error="WarehouseIOError: could not start decompressing: read wares/RoOPPC6llRYEMRE0F6U2F95a2_0i_YNTfPEZ7PEToFmfEkz7T6Gp4bJYjHup-2Bb: is a directory"
INFO[03-23|23:55:58] Starting materialize for tar hash=aLMH4qK1EdlPDavdhErOs0BPxqO0i6lUaeRE4DuUmnNMxhHtF56gkoeSulvwWNqT JobID=aemfo9ty-53b3oq2d-et8s3srp
INFO[03-23|23:55:58] Finished materialize for tar hash=aLMH4qK1EdlPDavdhErOs0BPxqO0i6lUaeRE4DuUmnNMxhHtF56gkoeSulvwWNqT JobID=aemfo9ty-53b3oq2d-et8s3srp
INFO[03-23|23:55:58] Job starting                             JobID=aemfo9ty-53b3oq2d-et8s3srp
EROR[03-23|23:55:58] Job execution errored                    JobID=aemfo9ty-53b3oq2d-et8s3srp error="WarehouseIOError: could not start decompressing: read wares/RoOPPC6llRYEMRE0F6U2F95a2_0i_YNTfPEZ7PEToFmfEkz7T6Gp4bJYjHup-2Bb: is a directory"
Exit: job execution errored: WarehouseIOError: could not start decompressing: read wares/RoOPPC6llRYEMRE0F6U2F95a2_0i_YNTfPEZ7PEToFmfEkz7T6Gp4bJYjHup-2Bb: is a directory
$ ls -hla wares | awk {'print $1" "$5"\t"$6" "$7" "$8" "$9'}
total      
drwxr-xr-x 4.0K Mar 23 23:52 .
drwxr-xr-x 4.0K Mar 23 23:42 ..
drwxr-xr-x 4.0K Mar 23 23:51 H8mtN--cw-fJWoQYhKpxIeKIZv3abTsBIBko00rnQjh8JaL6aV1a2eVZD-387INE
drwxr-xr-x 4.0K Mar 23 23:43 pRbQRKiqq8PWwHXfbkInDXb2DrE7Cw-E9QuQaBLJ6coo8-n9QOARbDpkm8mS2YiN
drwxr-xr-x 4.0K Mar 23 23:44 RoOPPC6llRYEMRE0F6U2F95a2_0i_YNTfPEZ7PEToFmfEkz7T6Gp4bJYjHup-2Bb
-rw-r--r-- 432M Mar 23 23:55 .tmp.upload.aemff4r1-bqcod6yy-p8ydvcw4

Fatal errors should not be logged as warnings

This was easy to miss on first run:

INFO[03-17|13:54:08] All inputs acquired... starting assembly 
INFO[03-17|13:54:13] Assembly complete!                       elapsed=4.623
INFO[03-17|13:54:13] Beginning execution! 
INFO[03-17|13:54:13] Execution done!                          elapsed=0.015
WARN[03-17|13:54:13] Container start failed: [8] System error: fork/exec /proc/self/exe: operation not permitted runc-time=2017-03-17T13:54:13Z runc-level=fatal
INFO[03-17|13:54:13] Have 1 outputs to be scanned 
INFO[03-17|13:54:13] Starting scan                            output=executable type=tar
INFO[03-17|13:54:13] Finished scan                            output=executable type=tar elapsed=0.000
INFO[03-17|13:54:13] Output 1/1 saved 
{
	"UID": "bbe8r1k6-vsm9rv60-drddxsrn",
	"results": {
		"$exitcode": {
			"hash": "1",
			"type": "exitcode"
		},
		"executable": {
			"hash": "",
			"type": "tar"
		}
	},
	"when": "2017-03-17T13:54:13Z"
}
job finished with non-zero exit status 1

I'm assuming the cause is that warning, which is then in fact an error and not a warning.

Create a repeatr formula transmat

It would be nice to be able to chain formulas like:

inputs:
    "/":
        type: "formula"
        hash: "lzcqJKln2_H4TIoizNBCr0qoh8u_Nb_LRwARTZL2RumfbChX031pVl46dcSCG4q3"
        silo: "file://./debian-base.frm"

Questions are:

  • How does one specify which output to use?

Repeatr fails without modprobe but doesn't need it

Basically this:

INFO[03-17|13:47:05] Input 3/3 ready 
panic: gosh: command not found: "modprobe" [recovered]
	panic: gosh: command not found: "modprobe" [recovered]
	panic: gosh: command not found: "modprobe"

It seems that repeatr attempts to load the AUFS kernel module, but if modprobe is present and AUFS isn't it falls back to to "slow fs assembly system" anyways. That fallback should probably also happen if modprobe isn't there.

WARN: using slow fs assembly system: install AUFS to use faster systems.

Version Mux stream

We should probably throw an int out front of the output stream before anything else.

This would facilitate the storage + playback of output streams across any protocol changes.
And in general it makes us less awful people.

Non-docker executors & DNS

From my runtime notes:

You now have a network address access, but not DNS.
Inside the container, here is my immediate way to fix that:

echo "nameserver 8.8.8.8" > /etc/resolv.conf

Checking if the rootFS resolve.conf (or distribution-specific? ugh) file is valid and defaulting to correcting it might be sane. Unless there's a better way to do this, which wouldn't surprise me.

At some point we should sufficiently research the ecosystem to decide our best course of action.
--net=host alleviates this, if we're committing to that we should update these notes.

Complicated by > 1 current & future executors.

Multiple Hash Mismatches Cause Valid Hash to be Reported as a Mismatch

Using this input section:

inputs:
        "/":
                type: "tar"
                tag:  "ubuntu-base+gcc"
                silo:
                        - "file+ca://./wares"
                        - "http+ca://repeatr.s3.amazonaws.com/assets/"
        "/task/src/gcc":
                type: "tar"
                hash: ""
                silo: "https://ftp.gnu.org/gnu/gcc/gcc-6.2.0/gcc-6.2.0.tar.gz"
        "/task/src/mpfr":
                type: "tar"
                hash: "zDDUnHejvCr6AOuxeJHXgG4tDtvB6_tVpmC8aIQFSsQmYBokgJxXtb2TeWdul9yZ"
                silo: "https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.5.tar.gz"
        "/task/src/gmp":
                type: "tar"
                hash: "mbO3LDXQDhJZvH9hKPUFYbidQc9tI8qkSqVvstJWGfdT4S3u6y2mDboltFVNjYKY"
                silo: "https://ftp.gnu.org/gnu/gmp/gmp-6.1.1.tar.bz2"
        "/task/src/mpc":
                type: "tar"
                hash: "WfzjtnEfTaA-NaczWSMymCVxH8ydkaUa44wlfbilZnBt_H5KNaXq4zChZJ7qFdiQ"
                silo: "https://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz"

The mpc hash is reported as invalid.

WARN[12-08|01:08:22] Error during materialize                 input=/task/src/mpc type=tar hash=WfzjtnEfTaA-NaczWSMymCVxH8ydkaUa44wlfbilZnBt_H5KNaXq4zChZJ7qFdiQ error="Hash Mismatch: expected \"WfzjtnEfTaA-NaczWSMymCVxH8ydkaUa44wlfbilZnBt_H5KNaXq4zChZJ7qFdiQ\", got \"WfzjtnEfTaA-NaczWSMymCVxH8ydkaUa44wlfbilZnBt_H9KNaXq4zChZJ7qFdiQ\" from " elapsed=0.836

However. this hash is valid. Other hashes are not, but this one is reported as an error despite matching.

Document what is cached and where

I'm starting to get time to look at actually slowly starting to play with repeatr. One thing that I don't 100% understand yet, is where data is stored/cached. When I scan something in, is it cached somewhere in var? What about when I run a formula? Docker, of course, stores everything in /var/ and the current recomendation for subuser that I give is to just nuke /var/ and run "subuser repair" to rebuild everything every couple of months. However, this isn't exactly elegant :P !!!

I recently watched a film about EU privacy regulations called Democracy . It was pretty interesting, so you might check it out. In the film, the guy that architected the privacy regulations came up with the following fundimental model: Before a company can store personal data, it must first get the consent of the user, and at the time the user gives consent, the company must describe what data is stored, what it is used for, and how long it is stored. And the company is forbidden from storing it for longer than necessary. I think that this general philosophy can also be applied to caching gigabytes of "stuff" in /var/. I want.

  • repeatr run -h # Should say what run stores, where, and for how long.
  • repeatr scan -h # Should say what scan stores, where, and for how long.

repeatr should automatically detect it is not running as root

repeatr scan --kind dir foo
Repeatr encountered a serious issue and was unable to complete your request!
Please file an issue to help us fix it.
We've logged the full error to a file: "/tmp/repeatr-error-report-997445596". Please include this in the report.

This is the short version of the problem:
TransmatError: Unable to create cacher work dirs: mkdir /var/lib/repeatr: permission denied

Pointing output at single file produces malformed TAR archive

With an output spec such as:

outputs:
  "executable":
    type: "tar"
    mount: "/go/src/github.com/tazjin/quinistry/quinistry"
    silo: "file://quinistry.tar.gz"

and that mount being the executable itself, we get a malformed TAR as the header is written like for a directory:

# tar xvf quinistry.tar.gz 
./
tar: Skipping to next header
tar: Exiting with failure status due to previous errors
# tar tvf quinistry.tar.gz 
drwxr-xr-x 1000/1000   6128052 2010-01-01 00:00 ./

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.