From 05878f43203feb00ef84af0abe21e065945bf785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Wed, 2 Oct 2019 19:20:30 +0200 Subject: [PATCH 1/3] Built in paramfetch --- Makefile | 3 + build/genesis/.gitkeep | 0 build/paramfetch.go | 103 ++++++++++++++++++++++++++++++++ cmd/lotus-storage-miner/init.go | 5 ++ cmd/lotus-storage-miner/run.go | 5 ++ cmd/lotus/daemon.go | 27 +++++++-- go.mod | 3 + go.sum | 18 ++++++ 8 files changed, 160 insertions(+), 4 deletions(-) create mode 100644 build/genesis/.gitkeep create mode 100644 build/paramfetch.go diff --git a/Makefile b/Makefile index 212f95d8dfc..40f01022202 100644 --- a/Makefile +++ b/Makefile @@ -72,8 +72,11 @@ deps: $(BUILD_DEPS) .PHONY: deps build: $(BUILD_DEPS) + rm -f lotus lotus-storage-miner go build -o lotus ./cmd/lotus go build -o lotus-storage-miner ./cmd/lotus-storage-miner + rice append --exec lotus -i ./cmd/lotus -i ./build + rice append --exec lotus-storage-miner -i ./build .PHONY: build benchmarks: diff --git a/build/genesis/.gitkeep b/build/genesis/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/build/paramfetch.go b/build/paramfetch.go new file mode 100644 index 00000000000..b15c9146b15 --- /dev/null +++ b/build/paramfetch.go @@ -0,0 +1,103 @@ +package build + +import ( + "encoding/hex" + "encoding/json" + "io" + "net/http" + "os" + "path/filepath" + "strings" + + rice "github.com/GeertJohan/go.rice" + logging "github.com/ipfs/go-log" + "github.com/minio/blake2b-simd" + pb "gopkg.in/cheggaaa/pb.v1" +) + +var log = logging.Logger("miner") + +const gateway = "http://198.211.99.118/ipfs/" +const paramdir = "/var/tmp/filecoin-proof-parameters" + +type paramFile struct{ + Cid string `json:"cid"` + Digest string `json:"digest"` + SectorSize uint64 `json:"sector_size"` +} + +func GetParams(storage bool) error { + os.Mkdir(paramdir, 0755) + + var params map[string]paramFile + + paramBytes := rice.MustFindBox("proof-params").MustBytes("parameters.json") + if err := json.Unmarshal(paramBytes, ¶ms); err != nil { + return err + } + + for name, info := range params { + if info.SectorSize != SectorSize { + continue + } + if !storage && strings.HasSuffix(name, ".params") { + continue + } + + if err := maybeFetch(name, info); err != nil { + return err + } + } + + return nil +} + +func maybeFetch(name string, info paramFile) error { + path := filepath.Join(paramdir, name) + f, err := os.Open(path) + if err == nil { + defer f.Close() + + h := blake2b.New512() + if _, err := io.Copy(h, f); err != nil { + return err + } + + sum := h.Sum(nil) + strSum := hex.EncodeToString(sum[:16]) + if strSum == info.Digest { + return nil + } + + log.Warnf("Checksum mismatch in param file %s, %s != %s", name, strSum, info.Digest) + } + + return doFetch(path, info) +} + +func doFetch(out string, info paramFile) error { + log.Infof("Fetching %s", out) + + resp, err := http.Get(gateway + info.Cid) + if err != nil { + return err + } + defer resp.Body.Close() + + outf, err := os.Create(out) + if err != nil { + return err + } + defer outf.Close() + + bar := pb.New64(resp.ContentLength) + bar.Units = pb.U_BYTES + bar.ShowSpeed = true + bar.Start() + + _, err = io.Copy(outf, bar.NewProxyReader(resp.Body)) + + bar.Finish() + + return err +} diff --git a/cmd/lotus-storage-miner/init.go b/cmd/lotus-storage-miner/init.go index 81ca4182526..b422eee6834 100644 --- a/cmd/lotus-storage-miner/init.go +++ b/cmd/lotus-storage-miner/init.go @@ -49,6 +49,11 @@ var initCmd = &cli.Command{ log.Info("Initializing lotus storage miner") log.Info("Checking if repo exists") + log.Info("Checking proof parameters") + if err := build.GetParams(true); err != nil { + return xerrors.Errorf("fetching proof parameters: %w", err) + } + r, err := repo.NewFS(cctx.String(FlagStorageRepo)) if err != nil { return err diff --git a/cmd/lotus-storage-miner/run.go b/cmd/lotus-storage-miner/run.go index 026decf39aa..bd1f74be7f0 100644 --- a/cmd/lotus-storage-miner/run.go +++ b/cmd/lotus-storage-miner/run.go @@ -2,6 +2,7 @@ package main import ( "context" + "github.com/filecoin-project/go-lotus/build" "net/http" "os" "os/signal" @@ -31,6 +32,10 @@ var runCmd = &cli.Command{ }, }, Action: func(cctx *cli.Context) error { + if err := build.GetParams(true); err != nil { + return xerrors.Errorf("fetching proof parameters: %w", err) + } + nodeApi, err := lcli.GetFullNodeAPI(cctx) if err != nil { return err diff --git a/cmd/lotus/daemon.go b/cmd/lotus/daemon.go index 627a164f999..b50ea7a9386 100644 --- a/cmd/lotus/daemon.go +++ b/cmd/lotus/daemon.go @@ -4,8 +4,11 @@ package main import ( "context" + "github.com/filecoin-project/go-lotus/build" + "golang.org/x/xerrors" "io/ioutil" + rice "github.com/GeertJohan/go.rice" "github.com/multiformats/go-multiaddr" "gopkg.in/urfave/cli.v2" @@ -50,18 +53,34 @@ var DaemonCmd = &cli.Command{ return err } - genesis := node.Options() - if cctx.String(makeGenFlag) != "" { - genesis = node.Override(new(modules.Genesis), testing.MakeGenesis(cctx.String(makeGenFlag))) + if err := build.GetParams(false); err != nil { + return xerrors.Errorf("fetching proof parameters: %w", err) + } + + builtinGen, err := rice.FindBox("../../build/genesis") + if err != nil { + log.Warn("loading built-in genesis: %s", err) + } + genBytes, err := builtinGen.Bytes("devnet.car") + if err != nil { + log.Warn("loading built-in genesis: %s", err) } + if cctx.String("genesis") != "" { - genBytes, err := ioutil.ReadFile(cctx.String("genesis")) + genBytes, err = ioutil.ReadFile(cctx.String("genesis")) if err != nil { return err } + } + + genesis := node.Options() + if len(genBytes) > 0 { genesis = node.Override(new(modules.Genesis), modules.LoadGenesis(genBytes)) } + if cctx.String(makeGenFlag) != "" { + genesis = node.Override(new(modules.Genesis), testing.MakeGenesis(cctx.String(makeGenFlag))) + } var api api.FullNode stop, err := node.New(ctx, diff --git a/go.mod b/go.mod index 2e9e01b8511..35d479b3d21 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.13 require ( contrib.go.opencensus.io/exporter/jaeger v0.1.0 github.com/BurntSushi/toml v0.3.1 + github.com/GeertJohan/go.rice v1.0.0 github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect github.com/filecoin-project/go-amt-ipld v0.0.0-20190919045431-3650716fff16 github.com/filecoin-project/go-bls-sigs v0.0.0-20190718224239-4bc4b8a7bbf8 @@ -54,6 +55,7 @@ require ( github.com/libp2p/go-libp2p-tls v0.1.0 github.com/libp2p/go-libp2p-yamux v0.2.1 github.com/libp2p/go-maddr-filter v0.0.5 + github.com/mattn/go-runewidth v0.0.4 // indirect github.com/miekg/dns v1.1.16 // indirect github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 github.com/mitchellh/go-homedir v1.1.0 @@ -79,6 +81,7 @@ require ( golang.org/x/sys v0.0.0-20190904154756-749cb33beabd // indirect golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 google.golang.org/api v0.9.0 // indirect + gopkg.in/cheggaaa/pb.v1 v1.0.28 gopkg.in/urfave/cli.v2 v2.0.0-20180128182452-d3ae77c26ac8 gotest.tools v2.2.0+incompatible launchpad.net/gocheck v0.0.0-20140225173054-000000000087 // indirect diff --git a/go.sum b/go.sum index 65e5e9ddffc..8240534b471 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,10 @@ github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9 h1:HD8gA2tkBy github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/GeertJohan/go.incremental v1.0.0 h1:7AH+pY1XUgQE4Y1HcXYaMqAI0m9yrFqo/jt0CW30vsg= +github.com/GeertJohan/go.incremental v1.0.0/go.mod h1:6fAjUhbVuX1KcMD3c8TEgVUqmo4seqhv0i0kdATSkM0= +github.com/GeertJohan/go.rice v1.0.0 h1:KkI6O9uMaQU3VEKaj01ulavtF7o1fWT7+pk/4voiMLQ= +github.com/GeertJohan/go.rice v1.0.0/go.mod h1:eH6gbSOAUv07dQuZVnBmoDP8mgsM1rtixis4Tib9if0= github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= github.com/OpenPeeDeeP/depguard v1.0.0/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -18,6 +22,8 @@ github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrU github.com/Stebalien/go-bitfield v0.0.1 h1:X3kbSSPUaJK60wV2hjOPZwmpljr6VGCqdq4cBLhbQBo= github.com/Stebalien/go-bitfield v0.0.1/go.mod h1:GNjFpasyUVkHMsfEOk8EFLJ9syQ6SI+XWrX9Wf2XH0s= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/akavel/rsrc v0.8.0 h1:zjWn7ukO9Kc5Q62DOJCcxGpXC18RawVtYAGdz2aLlfw= +github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/apache/thrift v0.12.0 h1:pODnxUFNcjP9UTLZGTdeh+j16A8lJbRvD3rOtrk/7bs= @@ -50,6 +56,8 @@ github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0= github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= +github.com/daaku/go.zipexe v1.0.0 h1:VSOgZtH418pH9L16hC/JrgSNJbbAL26pj7lmD1+CGdY= +github.com/daaku/go.zipexe v1.0.0/go.mod h1:z8IiR6TsVLEYKwXAoE/I+8ys/sDkgTzSL0CLnGVd57E= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -276,6 +284,7 @@ github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsj github.com/jbenet/goprocess v0.1.3 h1:YKyIEECS/XvcfHtBzxtjBBbWK+MbvA6dG8ASiqwvr10= github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -436,6 +445,8 @@ github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= @@ -489,6 +500,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW github.com/nbutton23/zxcvbn-go v0.0.0-20160627004424-a22cb81b2ecd/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/nbutton23/zxcvbn-go v0.0.0-20171102151520-eafdab6b0663/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/neelance/parallel v0.0.0-20160708114440-4de9ce63d14c/go.mod h1:eTBvSIlRgLo+CNFFQRQTwUGTZOEdvXIKeZS/xG+D2yU= +github.com/nkovacs/streamquote v0.0.0-20170412213628-49af9bddb229 h1:E2B8qYyeSgv5MXpmzZXRNp8IAQ4vjxIjhpAf5hv/tAg= +github.com/nkovacs/streamquote v0.0.0-20170412213628-49af9bddb229/go.mod h1:0aYXnNPJ8l7uZxf45rWW1a/uME32OF0rhiYGNQ2oF2E= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -590,8 +603,11 @@ github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec/go.mod h1:Qimiff github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ultraware/funlen v0.0.1/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= +github.com/valyala/fasttemplate v1.0.1 h1:tY9CJiPnMXf1ERmG2EyK7gNUd+c6RKGD0IfU8WdUSz8= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/quicktemplate v1.1.1/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= @@ -775,6 +791,8 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= +gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= From 713f08e9bf5492b7c6f14490a5f6b6a64cfed635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Wed, 2 Oct 2019 22:29:40 +0200 Subject: [PATCH 2/3] move genesis loading to build pkg --- Makefile | 2 +- build/genesis.go | 17 ++++++++++++++++ build/paramfetch.go | 36 ++++++++++++++++----------------- cmd/lotus-storage-miner/init.go | 3 ++- cmd/lotus/daemon.go | 14 +++---------- 5 files changed, 41 insertions(+), 31 deletions(-) create mode 100644 build/genesis.go diff --git a/Makefile b/Makefile index 40f01022202..bd511937482 100644 --- a/Makefile +++ b/Makefile @@ -75,7 +75,7 @@ build: $(BUILD_DEPS) rm -f lotus lotus-storage-miner go build -o lotus ./cmd/lotus go build -o lotus-storage-miner ./cmd/lotus-storage-miner - rice append --exec lotus -i ./cmd/lotus -i ./build + rice append --exec lotus -i ./build rice append --exec lotus-storage-miner -i ./build .PHONY: build diff --git a/build/genesis.go b/build/genesis.go new file mode 100644 index 00000000000..29575dd672c --- /dev/null +++ b/build/genesis.go @@ -0,0 +1,17 @@ +package build + +import rice "github.com/GeertJohan/go.rice" + +func MaybeGenesis() []byte { + builtinGen, err := rice.FindBox("genesis") + if err != nil { + log.Warn("loading built-in genesis: %s", err) + return nil + } + genBytes, err := builtinGen.Bytes("devnet.car") + if err != nil { + log.Warn("loading built-in genesis: %s", err) + } + + return genBytes +} diff --git a/build/paramfetch.go b/build/paramfetch.go index b15c9146b15..d534623654c 100644 --- a/build/paramfetch.go +++ b/build/paramfetch.go @@ -15,14 +15,14 @@ import ( pb "gopkg.in/cheggaaa/pb.v1" ) -var log = logging.Logger("miner") +var log = logging.Logger("build") const gateway = "http://198.211.99.118/ipfs/" const paramdir = "/var/tmp/filecoin-proof-parameters" -type paramFile struct{ - Cid string `json:"cid"` - Digest string `json:"digest"` +type paramFile struct { + Cid string `json:"cid"` + Digest string `json:"digest"` SectorSize uint64 `json:"sector_size"` } @@ -79,25 +79,25 @@ func doFetch(out string, info paramFile) error { log.Infof("Fetching %s", out) resp, err := http.Get(gateway + info.Cid) - if err != nil { - return err - } - defer resp.Body.Close() - - outf, err := os.Create(out) - if err != nil { - return err - } - defer outf.Close() - - bar := pb.New64(resp.ContentLength) + if err != nil { + return err + } + defer resp.Body.Close() + + outf, err := os.Create(out) + if err != nil { + return err + } + defer outf.Close() + + bar := pb.New64(resp.ContentLength) bar.Units = pb.U_BYTES bar.ShowSpeed = true bar.Start() - _, err = io.Copy(outf, bar.NewProxyReader(resp.Body)) + _, err = io.Copy(outf, bar.NewProxyReader(resp.Body)) - bar.Finish() + bar.Finish() return err } diff --git a/cmd/lotus-storage-miner/init.go b/cmd/lotus-storage-miner/init.go index b422eee6834..7f7d1ce9bd9 100644 --- a/cmd/lotus-storage-miner/init.go +++ b/cmd/lotus-storage-miner/init.go @@ -47,13 +47,14 @@ var initCmd = &cli.Command{ }, Action: func(cctx *cli.Context) error { log.Info("Initializing lotus storage miner") - log.Info("Checking if repo exists") log.Info("Checking proof parameters") if err := build.GetParams(true); err != nil { return xerrors.Errorf("fetching proof parameters: %w", err) } + log.Info("Checking if repo exists") + r, err := repo.NewFS(cctx.String(FlagStorageRepo)) if err != nil { return err diff --git a/cmd/lotus/daemon.go b/cmd/lotus/daemon.go index b50ea7a9386..68bf41b386a 100644 --- a/cmd/lotus/daemon.go +++ b/cmd/lotus/daemon.go @@ -4,15 +4,14 @@ package main import ( "context" - "github.com/filecoin-project/go-lotus/build" - "golang.org/x/xerrors" "io/ioutil" - rice "github.com/GeertJohan/go.rice" "github.com/multiformats/go-multiaddr" + "golang.org/x/xerrors" "gopkg.in/urfave/cli.v2" "github.com/filecoin-project/go-lotus/api" + "github.com/filecoin-project/go-lotus/build" "github.com/filecoin-project/go-lotus/node" "github.com/filecoin-project/go-lotus/node/modules" "github.com/filecoin-project/go-lotus/node/modules/testing" @@ -57,14 +56,7 @@ var DaemonCmd = &cli.Command{ return xerrors.Errorf("fetching proof parameters: %w", err) } - builtinGen, err := rice.FindBox("../../build/genesis") - if err != nil { - log.Warn("loading built-in genesis: %s", err) - } - genBytes, err := builtinGen.Bytes("devnet.car") - if err != nil { - log.Warn("loading built-in genesis: %s", err) - } + genBytes := build.MaybeGenesis() if cctx.String("genesis") != "" { genBytes, err = ioutil.ReadFile(cctx.String("genesis")) From 2dbd92073f111340ca12562682a2bb1b3c1a65b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Thu, 3 Oct 2019 01:36:33 +0200 Subject: [PATCH 3/3] paramfetch review --- Makefile | 4 ++-- build/paramfetch.go | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index bd511937482..3f80f48da3d 100644 --- a/Makefile +++ b/Makefile @@ -75,8 +75,8 @@ build: $(BUILD_DEPS) rm -f lotus lotus-storage-miner go build -o lotus ./cmd/lotus go build -o lotus-storage-miner ./cmd/lotus-storage-miner - rice append --exec lotus -i ./build - rice append --exec lotus-storage-miner -i ./build + go run github.com/GeertJohan/go.rice/rice append --exec lotus -i ./build + go run github.com/GeertJohan/go.rice/rice append --exec lotus-storage-miner -i ./build .PHONY: build benchmarks: diff --git a/build/paramfetch.go b/build/paramfetch.go index d534623654c..8e4b2079fca 100644 --- a/build/paramfetch.go +++ b/build/paramfetch.go @@ -27,7 +27,9 @@ type paramFile struct { } func GetParams(storage bool) error { - os.Mkdir(paramdir, 0755) + if err := os.Mkdir(paramdir, 0755); err != nil { + return err + } var params map[string]paramFile