2019-09-26 12:45:48 +02:00
|
|
|
export GO111MODULE=on
|
2020-06-13 19:29:50 +02:00
|
|
|
GOPROXY ?= https://gocenter.io,direct
|
2020-03-13 10:55:30 +01:00
|
|
|
export GOPROXY
|
2018-03-23 05:23:16 +01:00
|
|
|
|
2020-02-28 00:08:35 +01:00
|
|
|
BUILD_TAG = devel
|
2019-10-04 21:43:42 +02:00
|
|
|
ARCH ?= $(shell uname -m)
|
2019-09-26 12:45:48 +02:00
|
|
|
BIN := yay
|
2018-03-23 05:23:16 +01:00
|
|
|
DESTDIR :=
|
2019-09-26 12:45:48 +02:00
|
|
|
GO ?= go
|
2019-10-04 21:43:42 +02:00
|
|
|
PKGNAME := yay
|
|
|
|
PREFIX := /usr/local
|
2018-03-23 05:23:16 +01:00
|
|
|
|
2020-06-13 19:29:50 +02:00
|
|
|
MAJORVERSION := 10
|
|
|
|
MINORVERSION := 0
|
|
|
|
PATCHVERSION := 0
|
2018-10-08 19:46:51 +02:00
|
|
|
VERSION ?= ${MAJORVERSION}.${MINORVERSION}.${PATCHVERSION}
|
2018-03-23 05:23:16 +01:00
|
|
|
|
2020-05-08 18:13:51 +02:00
|
|
|
LOCALEDIR := po
|
2020-05-30 01:04:03 +02:00
|
|
|
SYSTEMLOCALEPATH := $(PREFIX)/share/locale/
|
2020-05-04 09:24:32 +02:00
|
|
|
|
2020-07-13 14:16:59 +02:00
|
|
|
LANGS := pt pt_BR en es eu fr_FR ja pl_PL ru_RU zh_CN
|
2020-05-30 00:43:18 +02:00
|
|
|
POTFILE := default.pot
|
2020-05-04 09:24:32 +02:00
|
|
|
POFILES := $(addprefix $(LOCALEDIR)/,$(addsuffix .po,$(LANGS)))
|
|
|
|
MOFILES := $(POFILES:.po=.mo)
|
|
|
|
|
2020-06-15 09:42:46 +02:00
|
|
|
GOFLAGS ?= -v -trimpath -mod=readonly -modcacherw
|
|
|
|
EXTRA_GOFLAGS ?= -buildmode=pie
|
2020-05-30 00:43:18 +02:00
|
|
|
LDFLAGS := $(LDFLAGS) -X "main.yayVersion=${VERSION}" -X "main.localePath=${SYSTEMLOCALEPATH}"
|
2019-10-04 21:43:42 +02:00
|
|
|
|
2019-09-26 12:45:48 +02:00
|
|
|
RELEASE_DIR := ${PKGNAME}_${VERSION}_${ARCH}
|
|
|
|
PACKAGE := $(RELEASE_DIR).tar.gz
|
2020-05-30 00:43:18 +02:00
|
|
|
SOURCES ?= $(shell find . -name "*.go" -type f)
|
2016-12-02 19:22:21 +01:00
|
|
|
|
2020-05-04 09:24:32 +02:00
|
|
|
.PRECIOUS: ${LOCALEDIR}/%.po
|
|
|
|
|
2019-09-26 12:45:48 +02:00
|
|
|
.PHONY: default
|
2016-09-05 04:32:57 +02:00
|
|
|
default: build
|
|
|
|
|
2019-10-10 17:37:37 +02:00
|
|
|
.PHONY: all
|
|
|
|
all: | clean release
|
|
|
|
|
2019-09-26 12:45:48 +02:00
|
|
|
.PHONY: clean
|
|
|
|
clean:
|
2019-10-05 12:16:58 +02:00
|
|
|
$(GO) clean $(GOFLAGS) -i ./...
|
2020-02-28 00:08:35 +01:00
|
|
|
rm -rf $(BIN) $(PKGNAME)_*
|
2019-09-26 12:45:48 +02:00
|
|
|
|
2020-07-04 23:04:40 +02:00
|
|
|
.PHONY: test_lint
|
|
|
|
test_lint: test lint
|
|
|
|
|
2019-09-26 12:45:48 +02:00
|
|
|
.PHONY: test
|
2019-10-05 12:16:58 +02:00
|
|
|
test:
|
|
|
|
$(GO) vet $(GOFLAGS) ./...
|
2020-07-04 23:04:40 +02:00
|
|
|
@test -z "$$(gofmt -l $(SOURCES))" || (echo "Files need to be linted. Use make fmt" && false)
|
|
|
|
$(GO) test $(GOFLAGS) ./...
|
2019-09-26 12:45:48 +02:00
|
|
|
|
|
|
|
.PHONY: build
|
|
|
|
build: $(BIN)
|
|
|
|
|
|
|
|
.PHONY: release
|
|
|
|
release: $(PACKAGE)
|
|
|
|
|
|
|
|
.PHONY: docker-release-all
|
|
|
|
docker-release-all:
|
2020-02-28 00:08:35 +01:00
|
|
|
make docker-release-armv7h ARCH=armv7h
|
|
|
|
make docker-release-x86_64 ARCH=x86_64
|
|
|
|
make docker-release-aarch64 ARCH=aarch64
|
2018-02-17 19:25:43 +01:00
|
|
|
|
2020-11-17 16:21:44 +01:00
|
|
|
docker-release:
|
|
|
|
docker create --name yay-$(ARCH) yay:${ARCH}
|
2019-09-26 12:45:48 +02:00
|
|
|
docker cp yay-$(ARCH):/app/${PACKAGE} $(PACKAGE)
|
|
|
|
docker container rm yay-$(ARCH)
|
|
|
|
|
|
|
|
.PHONY: docker-build
|
|
|
|
docker-build:
|
2020-02-28 00:08:35 +01:00
|
|
|
docker build -t yay-$(ARCH):${VERSION} .
|
2020-06-15 09:42:46 +02:00
|
|
|
docker run -e="ARCH=$(ARCH)" --name yay-$(ARCH) yay-$(ARCH):${VERSION} make build VERSION=${VERSION} PREFIX=${PREFIX}
|
2020-02-28 00:08:35 +01:00
|
|
|
docker cp yay-$(ARCH):/app/${BIN} $(BIN)
|
|
|
|
docker container rm yay-$(ARCH)
|
2019-09-26 12:45:48 +02:00
|
|
|
|
2019-10-13 21:10:46 +02:00
|
|
|
.PHONY: lint
|
2019-10-16 03:44:10 +02:00
|
|
|
lint:
|
2020-07-04 23:04:40 +02:00
|
|
|
golangci-lint run ./...
|
2019-10-13 21:10:46 +02:00
|
|
|
|
2019-10-05 12:16:58 +02:00
|
|
|
.PHONY: fmt
|
|
|
|
fmt:
|
2020-05-30 00:43:18 +02:00
|
|
|
go fmt ./...
|
2019-10-05 12:16:58 +02:00
|
|
|
|
2019-09-26 12:45:48 +02:00
|
|
|
.PHONY: install
|
2020-05-04 09:24:32 +02:00
|
|
|
install: build ${MOFILES}
|
2019-09-26 12:45:48 +02:00
|
|
|
install -Dm755 ${BIN} $(DESTDIR)$(PREFIX)/bin/${BIN}
|
2018-03-23 05:23:16 +01:00
|
|
|
install -Dm644 doc/${PKGNAME}.8 $(DESTDIR)$(PREFIX)/share/man/man8/${PKGNAME}.8
|
|
|
|
install -Dm644 completions/bash $(DESTDIR)$(PREFIX)/share/bash-completion/completions/${PKGNAME}
|
|
|
|
install -Dm644 completions/zsh $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_${PKGNAME}
|
|
|
|
install -Dm644 completions/fish $(DESTDIR)$(PREFIX)/share/fish/vendor_completions.d/${PKGNAME}.fish
|
2020-05-30 00:43:18 +02:00
|
|
|
for lang in ${LANGS}; do \
|
|
|
|
install -Dm644 ${LOCALEDIR}/$${lang}.mo $(DESTDIR)$(PREFIX)/share/locale/$$lang/LC_MESSAGES/${PKGNAME}.mo; \
|
|
|
|
done
|
2018-03-23 05:23:16 +01:00
|
|
|
|
2019-09-26 12:45:48 +02:00
|
|
|
.PHONY: uninstall
|
2018-03-23 05:23:16 +01:00
|
|
|
uninstall:
|
2019-09-26 12:45:48 +02:00
|
|
|
rm -f $(DESTDIR)$(PREFIX)/bin/${BIN}
|
2018-03-23 05:23:16 +01:00
|
|
|
rm -f $(DESTDIR)$(PREFIX)/share/man/man8/${PKGNAME}.8
|
|
|
|
rm -f $(DESTDIR)$(PREFIX)/share/bash-completion/completions/${PKGNAME}
|
|
|
|
rm -f $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_${PKGNAME}
|
|
|
|
rm -f $(DESTDIR)$(PREFIX)/share/fish/vendor_completions.d/${PKGNAME}.fish
|
2020-05-04 09:24:32 +02:00
|
|
|
for lang in ${LANGS}; do \
|
|
|
|
rm -f $(DESTDIR)$(PREFIX)/share/locale/$$lang/LC_MESSAGES/${PKGNAME}.mo; \
|
|
|
|
done
|
|
|
|
|
2020-05-08 18:13:51 +02:00
|
|
|
$(BIN): $(SOURCES)
|
|
|
|
$(GO) build $(GOFLAGS) -ldflags '-s -w $(LDFLAGS)' $(EXTRA_GOFLAGS) -o $@
|
|
|
|
|
|
|
|
$(RELEASE_DIR):
|
|
|
|
mkdir $(RELEASE_DIR)
|
|
|
|
|
2020-06-13 23:20:22 +02:00
|
|
|
$(PACKAGE): $(BIN) $(RELEASE_DIR) ${MOFILES}
|
2020-05-08 18:13:51 +02:00
|
|
|
cp -t $(RELEASE_DIR) ${BIN} doc/${PKGNAME}.8 completions/* ${MOFILES}
|
|
|
|
tar -czvf $(PACKAGE) $(RELEASE_DIR)
|
|
|
|
|
2020-05-30 00:58:24 +02:00
|
|
|
locale:
|
2020-05-30 00:43:18 +02:00
|
|
|
xgotext -in . -out po
|
2020-07-05 03:43:35 +02:00
|
|
|
for lang in ${LANGS}; do \
|
|
|
|
test -f po/$$lang.po || msginit -l po/$$lang.po -i po/${POTFILE} -o po/$$lang.po \
|
|
|
|
msgmerge -U po/$$lang.po po/${POTFILE}; \
|
|
|
|
touch po/$$lang.po; \
|
|
|
|
done
|
|
|
|
|
2020-05-04 09:24:32 +02:00
|
|
|
${LOCALEDIR}/%.mo: ${LOCALEDIR}/%.po
|
|
|
|
msgfmt $< -o $@
|