mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-21 18:37:45 +08:00
It is covered by sharness License: MIT Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
180 lines
4.8 KiB
Makefile
180 lines
4.8 KiB
Makefile
# Minimum version numbers for software required to build IPFS
|
|
IPFS_MIN_GO_VERSION = 1.7
|
|
IPFS_MIN_GX_VERSION = 0.6
|
|
IPFS_MIN_GX_GO_VERSION = 1.1
|
|
|
|
|
|
export IPFS_REUSEPORT=false
|
|
|
|
ifneq ($(COVERALLS_TOKEN), )
|
|
covertools_rule = covertools
|
|
GOT = overalls -project=github.com/ipfs/go-ipfs -covermode atomic -ignore=.git,Godeps,thirdparty,test,core/commands -- $(GOTFLAGS)
|
|
else
|
|
covertools_rule = $()
|
|
GOT = go test $(GOTFLAGS) ./...
|
|
endif
|
|
|
|
ifeq ($(TEST_NO_FUSE),1)
|
|
GOTFLAGS += -tags nofuse
|
|
endif
|
|
|
|
ifeq ($(OS),Windows_NT)
|
|
GOPATH_DELIMITER = ;
|
|
else
|
|
GOPATH_DELIMITER = :
|
|
endif
|
|
|
|
dist_root=/ipfs/QmNZL8wNsvAGdVYr8uGeUE9aGfHjFpHegAWywQFEdSaJbp
|
|
gx_bin=bin/gx-v0.9.0
|
|
gx-go_bin=bin/gx-go-v1.3.0
|
|
|
|
# use things in our bin before any other system binaries
|
|
export PATH := bin:$(PATH)
|
|
export IPFS_API ?= v04x.ipfs.io
|
|
|
|
all: help
|
|
|
|
godep:
|
|
go get github.com/tools/godep
|
|
|
|
go_check:
|
|
@bin/check_go_version $(IPFS_MIN_GO_VERSION)
|
|
|
|
bin/gx-v%:
|
|
@echo "installing gx $(@:bin/gx-%=%)"
|
|
@bin/dist_get ${dist_root} gx $@ $(@:bin/gx-%=%)
|
|
rm -f bin/gx
|
|
ln -s $(@:bin/%=%) bin/gx
|
|
|
|
bin/gx-go-v%:
|
|
@echo "installing gx-go $(@:bin/gx-go-%=%)"
|
|
@bin/dist_get ${dist_root} gx-go $@ $(@:bin/gx-go-%=%)
|
|
rm -f bin/gx-go
|
|
ln -s $(@:bin/%=%) bin/gx-go
|
|
|
|
gx_check: ${gx_bin} ${gx-go_bin}
|
|
|
|
path_check:
|
|
@bin/check_go_path $(realpath $(shell pwd)) $(realpath $(addsuffix /src/github.com/ipfs/go-ipfs,$(subst $(GOPATH_DELIMITER), ,$(GOPATH))))
|
|
|
|
deps: go_check gx_check path_check $(covertools_rule)
|
|
${gx_bin} --verbose install --global
|
|
|
|
covertools:
|
|
go get -u github.com/mattn/goveralls
|
|
go get -u golang.org/x/tools/cmd/cover
|
|
go get -u github.com/Kubuxu/overalls
|
|
|
|
# saves/vendors third-party dependencies to Godeps/_workspace
|
|
# -r flag rewrites import paths to use the vendored path
|
|
# ./... performs operation on all packages in tree
|
|
vendor: godep
|
|
godep save -r ./...
|
|
|
|
install build nofuse: deps
|
|
$(MAKE) -C cmd/ipfs $@
|
|
|
|
clean:
|
|
$(MAKE) -C cmd/ipfs clean
|
|
$(MAKE) -C test clean
|
|
|
|
uninstall:
|
|
$(MAKE) -C cmd/ipfs uninstall
|
|
|
|
PHONY += all help godep gx_check covertools
|
|
PHONY += go_check deps vendor install build nofuse clean uninstall
|
|
|
|
##############################################################
|
|
# tests targets
|
|
|
|
test: test_expensive
|
|
|
|
test_short: test_go_fmt build test_go_short test_sharness_short
|
|
|
|
test_expensive: test_go_fmt build test_go_expensive test_sharness_expensive windows_build_check
|
|
|
|
test_3node:
|
|
$(MAKE) -C test/3nodetest
|
|
|
|
test_go_fmt:
|
|
bin/test-go-fmt
|
|
|
|
|
|
test_go_short: GOTFLAGS += -test.short
|
|
test_go_race: GOTFLAGS += -race
|
|
test_go_expensive test_go_short test_go_race:
|
|
$(GOT)
|
|
ifneq ($(COVERALLS_TOKEN), )
|
|
goveralls -coverprofile=overalls.coverprofile -service $(SERVICE)
|
|
endif
|
|
|
|
test_sharness_short:
|
|
$(MAKE) -j1 -C test/sharness/
|
|
|
|
test_sharness_expensive:
|
|
TEST_EXPENSIVE=1 $(MAKE) -j1 -C test/sharness/
|
|
|
|
test_all_commits:
|
|
@echo "testing all commits between origin/master..HEAD"
|
|
@echo "WARNING: this will 'git rebase --exec'."
|
|
@test/bin/continueyn
|
|
GIT_EDITOR=true git rebase -i --exec "$(MAKE) test" origin/master
|
|
|
|
test_all_commits_travis:
|
|
# these are needed because travis.
|
|
# we don't use this yet because it takes way too long.
|
|
git config --global user.email "nemo@ipfs.io"
|
|
git config --global user.name "IPFS BOT"
|
|
git fetch origin master:master
|
|
GIT_EDITOR=true git rebase -i --exec "$(MAKE) test" master
|
|
|
|
# since we have CI for osx and linux but not windows, this should help
|
|
windows_build_check:
|
|
GOOS=windows GOARCH=amd64 go build -o .test.ipfs.exe ./cmd/ipfs
|
|
rm -f .test.ipfs.exe
|
|
|
|
PHONY += test test_short test_expensive
|
|
|
|
##############################################################
|
|
# A semi-helpful help message
|
|
|
|
help:
|
|
@echo 'DEPENDENCY TARGETS:'
|
|
@echo ''
|
|
@echo ' gx_check - Installs or upgrades gx and gx-go'
|
|
@echo ' deps - Download dependencies using gx'
|
|
@echo ' vendor - Create a Godep workspace of 3rd party dependencies'
|
|
@echo ''
|
|
@echo 'BUILD TARGETS:'
|
|
@echo ''
|
|
@echo ' all - print this help message'
|
|
@echo ' build - Build binary at ./cmd/ipfs/ipfs'
|
|
@echo ' nofuse - Build binary with no fuse support'
|
|
@echo ' install - Build binary and install into $$GOPATH/bin'
|
|
# @echo ' dist_install - TODO: c.f. ./cmd/ipfs/dist/README.md'
|
|
@echo ''
|
|
@echo 'CLEANING TARGETS:'
|
|
@echo ''
|
|
@echo ' clean - Remove binary from build directory'
|
|
@echo ' uninstall - Remove binary from $$GOPATH/bin'
|
|
@echo ''
|
|
@echo 'TESTING TARGETS:'
|
|
@echo ''
|
|
@echo ' test - Run expensive tests and Window$$ check'
|
|
@echo ' test_short - Run short tests and sharness tests'
|
|
@echo ' test_expensive - Run a few extras'
|
|
@echo ' test_3node'
|
|
@echo ' test_go_short'
|
|
@echo ' test_go_expensive'
|
|
@echo ' test_go_race'
|
|
@echo ' test_sharness_short'
|
|
@echo ' test_sharness_expensive'
|
|
@echo ' test_all_commits'
|
|
@echo " test_all_commits_travis - DON'T USE: takes way too long"
|
|
@echo ' windows_build_check'
|
|
@echo ''
|
|
|
|
PHONY += help
|
|
|
|
.PHONY: $(PHONY)
|