1
0
mirror of https://github.com/Jguer/yay synced 2024-07-08 04:16:16 +00:00
yay/Makefile

131 lines
3.5 KiB
Makefile
Raw Normal View History

export GO111MODULE=on
2021-05-07 22:36:03 +00:00
GOPROXY ?= https://proxy.golang.org,direct
2020-03-13 09:55:30 +00:00
export GOPROXY
2020-02-27 23:08:35 +00:00
BUILD_TAG = devel
2019-10-04 19:43:42 +00:00
ARCH ?= $(shell uname -m)
BIN := yay
DESTDIR :=
GO ?= go
2019-10-04 19:43:42 +00:00
PKGNAME := yay
PREFIX := /usr/local
2021-09-08 20:28:08 +00:00
MAJORVERSION := 11
MINORVERSION := 0
PATCHVERSION := 0
VERSION ?= ${MAJORVERSION}.${MINORVERSION}.${PATCHVERSION}
2020-05-08 16:13:51 +00:00
LOCALEDIR := po
SYSTEMLOCALEPATH := $(PREFIX)/share/locale/
2021-06-13 18:16:18 +00:00
LANGS := pt pt_BR en es eu fr_FR ja pl_PL ru_RU zh_CN ko
2020-05-29 22:43:18 +00:00
POTFILE := default.pot
POFILES := $(addprefix $(LOCALEDIR)/,$(addsuffix .po,$(LANGS)))
MOFILES := $(POFILES:.po=.mo)
FLAGS ?= -trimpath -mod=readonly -modcacherw
EXTRA_FLAGS ?= -buildmode=pie
2021-03-20 17:35:02 +00:00
LDFLAGS := -X "main.yayVersion=${VERSION}" -X "main.localePath=${SYSTEMLOCALEPATH}" -linkmode=external
2019-10-04 19:43:42 +00:00
RELEASE_DIR := ${PKGNAME}_${VERSION}_${ARCH}
PACKAGE := $(RELEASE_DIR).tar.gz
2020-05-29 22:43:18 +00:00
SOURCES ?= $(shell find . -name "*.go" -type f)
2016-12-02 18:22:21 +00:00
.PRECIOUS: ${LOCALEDIR}/%.po
.PHONY: default
2016-09-05 02:32:57 +00:00
default: build
.PHONY: all
all: | clean release
.PHONY: clean
clean:
$(GO) clean $(FLAGS) -i ./...
2020-02-27 23:08:35 +00:00
rm -rf $(BIN) $(PKGNAME)_*
2020-07-04 21:04:40 +00:00
.PHONY: test_lint
test_lint: test lint
.PHONY: test
test:
$(GO) test -race -covermode=atomic $(FLAGS) ./...
.PHONY: build
build: $(BIN)
.PHONY: release
release: $(PACKAGE)
.PHONY: docker-release-all
docker-release-all:
2020-02-27 23:08:35 +00:00
make docker-release-armv7h ARCH=armv7h
make docker-release-x86_64 ARCH=x86_64
make docker-release-aarch64 ARCH=aarch64
2018-02-17 18:25:43 +00:00
2020-11-17 15:21:44 +00:00
docker-release:
docker create --name yay-$(ARCH) yay:${ARCH}
docker cp yay-$(ARCH):/app/${PACKAGE} $(PACKAGE)
docker container rm yay-$(ARCH)
.PHONY: docker-build
docker-build:
2020-02-27 23:08:35 +00:00
docker build -t yay-$(ARCH):${VERSION} .
docker run -e="ARCH=$(ARCH)" --name yay-$(ARCH) yay-$(ARCH):${VERSION} make build VERSION=${VERSION} PREFIX=${PREFIX}
2020-02-27 23:08:35 +00:00
docker cp yay-$(ARCH):/app/${BIN} $(BIN)
docker container rm yay-$(ARCH)
.PHONY: lint
lint:
$(GO) vet $(FLAGS) ./...
@test -z "$$(gofmt -l $(SOURCES))" || (echo "Files need to be linted. Use make fmt" && false)
2020-07-04 21:04:40 +00:00
golangci-lint run ./...
.PHONY: fmt
fmt:
2020-05-29 22:43:18 +00:00
go fmt ./...
.PHONY: install
install: build ${MOFILES}
install -Dm755 ${BIN} $(DESTDIR)$(PREFIX)/bin/${BIN}
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-29 22:43:18 +00:00
for lang in ${LANGS}; do \
install -Dm644 ${LOCALEDIR}/$${lang}.mo $(DESTDIR)$(PREFIX)/share/locale/$$lang/LC_MESSAGES/${PKGNAME}.mo; \
done
.PHONY: uninstall
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/${BIN}
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
for lang in ${LANGS}; do \
rm -f $(DESTDIR)$(PREFIX)/share/locale/$$lang/LC_MESSAGES/${PKGNAME}.mo; \
done
2020-05-08 16:13:51 +00:00
$(BIN): $(SOURCES)
$(GO) build $(FLAGS) -ldflags '$(LDFLAGS)' $(EXTRA_FLAGS) -o $@
2020-05-08 16:13:51 +00:00
$(RELEASE_DIR):
mkdir $(RELEASE_DIR)
2020-06-13 21:20:22 +00:00
$(PACKAGE): $(BIN) $(RELEASE_DIR) ${MOFILES}
2021-03-20 17:58:59 +00:00
strip ${BIN}
2020-05-08 16:13:51 +00:00
cp -t $(RELEASE_DIR) ${BIN} doc/${PKGNAME}.8 completions/* ${MOFILES}
tar -czvf $(PACKAGE) $(RELEASE_DIR)
locale:
2020-05-29 22:43:18 +00:00
xgotext -in . -out po
2020-07-05 01:43:35 +00: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
${LOCALEDIR}/%.mo: ${LOCALEDIR}/%.po
msgfmt $< -o $@