1. makefile geth и логика компиляции
В предыдущей статье упоминалось использование make geth для компиляции клиента geth. Давайте посмотрим, что делает файл make:
.PHONY: geth android ios evm all test clean
GOBIN = ./build/bin
GO ?= latest
GORUN = env GO111MODULE=on go run
geth:
$(GORUN) build/ci.go install ./cmd/geth
@echo "Done building."
@echo "Run \"$(GOBIN)/geth\" to launch geth."
all:
$(GORUN) build/ci.go install
Казненный ci.go
func main() {
log.SetFlags(log.Lshortfile)
if !common.FileExist(filepath.Join("build", "ci.go")) {
log.Fatal("this script must be run from the root of the repository")
}
if len(os.Args) < 2 {
log.Fatal("need subcommand as first argument")
}
switch os.Args[1] {
case "install":
doInstall(os.Args[2:])
}
В нем делается две вещи:
1. Команда ln -s генерирует образ файла go-etherum в директории build/_workspace/, который не занимает места на диске и обновляется синхронно с исходным файлом
2