Files
kopia/Makefile
T
Jarek Kowalski e528b32748 Major refactoring of data formats to use protobuf instead of JSON. This is a breaking change to data formats, but hoping to stabilize soon.
This change removes lots of pointless string and custom format parsing code and instead relies on protobuf to do the thing. JSON is still an option thanks to proto3-generated output.

- Refactored ObjectID to use protobuf
- Indirect blocks to use protobuf (in the form of seek table)
- Added generic proto stream reader and writer
- ObjectIDFormat became proto enum

Also:

- fixed major issue where indirect object ID entries were not encrypted, since they were storing block IDs and not object IDs.
- dropped support for majority of formats, only supporting HMAC-{SHA256,SHA512,SHA512_384} hashes with AES256.
This produces object IDs of 32 or 64 characters long.
- changed how pretty-printing works for 'kopia show'
2016-08-20 16:59:10 -07:00

87 lines
2.7 KiB
Makefile

BUILD_VERSION ?= $(shell git describe --dirty)
BUILD_INFO ?= $(USER)@$(shell hostname -s)_$(shell date +%Y%m%d_%H%M%S)
RELEASE_SUFFIX ?= $(shell go env GOOS)-$(shell go env GOARCH)
RELEASE_VERSION ?= $(BUILD_VERSION)-$(RELEASE_SUFFIX)
RELEASE_NAME = kopia-$(RELEASE_VERSION)
LDARGS="-X main.buildVersion=$(BUILD_VERSION)"
RELEASE_TMP_DIR = $(CURDIR)/.release
RELEASES_OUT_DIR = $(CURDIR)/.releases
ZIP ?= 0
all: install test lint vet
install:
@echo Building version: $(BUILD_INFO) / $(BUILD_VERSION)
go install -ldflags $(LDARGS) github.com/kopia/kopia/cmd/kopia
build:
go build github.com/kopia/kopia/...
escape-analysis:
go build -gcflags '-m -l' github.com/kopia/kopia/...
protos:
protoc --go_out=../../.. fs/*.proto
protoc --go_out=../../.. repo/*.proto
protoc --go_out=../../.. vault/*.proto
protoc --go_out=../../.. internal/*.proto
play:
go run cmd/playground/main.go
lint:
-golint github.com/kopia/kopia/... | grep -v .pb.go
vet:
go tool vet -all .
deps:
go get -t -v github.com/kopia/kopia/...
release:
rm -rf $(RELEASE_TMP_DIR)
mkdir -p $(RELEASE_TMP_DIR)/$(RELEASE_NAME)/bin
go build -o $(RELEASE_TMP_DIR)/$(RELEASE_NAME)/bin/kopia$(EXE_SUFFIX) -ldflags $(LDARGS) github.com/kopia/kopia/cmd/kopia
cp README.md LICENSE $(RELEASE_TMP_DIR)/$(RELEASE_NAME)
ifeq ($(GOOS), windows)
(cd $(RELEASE_TMP_DIR) && zip -r $(RELEASES_OUT_DIR)/$(RELEASE_NAME).zip $(RELEASE_NAME)/)
else
(cd $(RELEASE_TMP_DIR) && tar -cvzf $(RELEASES_OUT_DIR)/$(RELEASE_NAME).tar.gz $(RELEASE_NAME)/)
endif
travis-setup: deps dev-deps
travis-release:
mkdir -p $(RELEASES_OUT_DIR)
GOARCH=386 GOOS=windows EXE_SUFFIX=.exe RELEASE_SUFFIX=windows-x86 make release
GOARCH=amd64 GOOS=windows EXE_SUFFIX=.exe RELEASE_SUFFIX=windows-x64 make release
GOARCH=386 GOOS=linux RELEASE_SUFFIX=linux-x86 make release
GOARCH=amd64 GOOS=linux RELEASE_SUFFIX=linux-x64 make release
GOARCH=amd64 GOOS=darwin RELEASE_SUFFIX=macosx-x64 make release
GOARCH=arm GOOS=linux RELEASE_SUFFIX=linux-arm make release
rm -rf $(RELEASE_TMP_DIR)
(cd $(RELEASES_OUT_DIR) && sha256sum kopia-* > CHECKSUM.txt)
(cd ../../.. && find -name .git | xargs -Izzz /bin/bash -c "(cd zzz && echo -n 'zzz: ' && git describe --always --long --abbrev=40)") | sort > $(RELEASES_OUT_DIR)/BUILD_INFO.txt
dev-deps:
go get -u golang.org/x/tools/cmd/gorename
go get -u github.com/golang/lint/golint
go get -u golang.org/x/tools/cmd/oracle
go get -u github.com/nsf/gocode
go get -u github.com/rogpeppe/godef
go get -u github.com/lukehoban/go-outline
go get -u github.com/newhook/go-symbols
go get -u github.com/sqs/goreturns
test: install
go test -timeout 30s github.com/kopia/kopia/...
vtest:
go test -v -timeout 30s github.com/kopia/kopia/...
godoc:
godoc -http=:33333
coverage:
./coverage.sh