Files
mixer-tools/Makefile
T
Reagan Lopez b61fdd69dc Release v6.1.3
This release includes improved MCA performance along with other bug fixes.

With all the bundles and package repositories on the local system,
the execution time for MCA (mixer build validate) has improved
from ~106 min to ~15 min.

Changes:
- MCA: Instead of querying packages downloaded by `dnf install`,
  the packages are resolved and queried with `rpm`.
  When the packages are in local repos, the query operation
  is much faster.
- MCA: Added support to resolve packages that do not follow NVRA name format.
- MCA: Suppress verbose Mixer output.
- Return more package metadata during package resolution.
- Remove creation of `os-packages` file as it is empty and not being
  used.
- repo: Added support to handle packages within sub directories of a
  repo baseurl. Although, for better performance, it is still recommended
  to store the packages directly within the repo baseurl for local repos.

Signed-off-by: Reagan Lopez <reagan.lopez@intel.com>
2019-12-19 12:22:20 -08:00

113 lines
3.2 KiB
Makefile

# Makefile used to create packages for mixer-tools. It doesn't assume
# that the code is inside a GOPATH, and always copy the files into a
# new workspace to get the work done. Go tools doesn't reliably work
# with symbolic links.
#
# For historical purposes, it also works in a development environment
# when the repository is already inside a GOPATH.
include Makefile.bats
.NOTPARALLEL:
VERSION=6.1.3
GO_PACKAGE_PREFIX := github.com/clearlinux/mixer-tools
.PHONY: gopath
# Strictly speaking we should check if it the directory is inside an
# actual GOPATH, but the directory structure matching is likely enough.
ifeq (,$(findstring ${GO_PACKAGE_PREFIX},${CURDIR}))
LOCAL_GOPATH := ${CURDIR}/.gopath
export GOPATH := ${LOCAL_GOPATH}
gopath:
@rm -rf ${LOCAL_GOPATH}/src
@mkdir -p ${LOCAL_GOPATH}/src/${GO_PACKAGE_PREFIX}
@cp -af * ${LOCAL_GOPATH}/src/${GO_PACKAGE_PREFIX}
@echo "Prepared a local GOPATH=${GOPATH}"
else
LOCAL_GOPATH :=
GOPATH ?= ${HOME}/go
gopath:
@echo "Code already in existing GOPATH=${GOPATH}"
endif
.PHONY: build install clean check
.DEFAULT_GOAL := build
build: gopath
go install -ldflags="-X ${GO_PACKAGE_PREFIX}/builder.Version=${VERSION}" ${GO_PACKAGE_PREFIX}/mixer
go install ${GO_PACKAGE_PREFIX}/mixin
go install ${GO_PACKAGE_PREFIX}/swupd-extract
go install ${GO_PACKAGE_PREFIX}/swupd-inspector
go install ${GO_PACKAGE_PREFIX}/mixer-completion
install: gopath
test -d $(DESTDIR)/usr/bin || install -D -d -m 00755 $(DESTDIR)/usr/bin;
install -m 00755 $(GOPATH)/bin/mixer $(DESTDIR)/usr/bin/.
install -m 00755 $(GOPATH)/bin/mixin $(DESTDIR)/usr/bin/.
install -m 00755 $(GOPATH)/bin/swupd-extract $(DESTDIR)/usr/bin/.
install -m 00755 $(GOPATH)/bin/swupd-inspector $(DESTDIR)/usr/bin/.
$(GOPATH)/bin/mixer-completion bash --path $(DESTDIR)/usr/share/bash-completion/completions/mixer
$(GOPATH)/bin/mixer-completion zsh --path $(DESTDIR)/usr/share/zsh/site-functions/_mixer
test -d $(DESTDIR)/usr/share/man/man1 || install -D -d -m 00755 $(DESTDIR)/usr/share/man/man1
install -m 00644 $(MANPAGES) $(DESTDIR)/usr/share/man/man1/
check: gopath
go test -cover ${GO_PACKAGE_PREFIX}/...
.PHONY: checkcoverage
checkcoverage:
go test -cover ${GO_PACKAGE_PREFIX}/... -coverprofile=coverage.out
go tool cover -html=coverage.out
.PHONY: lint
lint: gopath
@golangci-lint run --deadline=10m --tests --disable-all \
--enable=misspell \
--enable=vet \
--enable=ineffassign \
--enable=gofmt \
$${CYCLO_MAX:+--enable=gocyclo --cyclo-over=$${CYCLO_MAX}} \
--enable=golint \
--enable=deadcode \
--enable=varcheck \
--enable=structcheck \
--enable=unused \
--enable=vetshadow \
--enable=errcheck \
./...
clean:
ifeq (,${LOCAL_GOPATH})
go clean -i -x
else
rm -rf ${LOCAL_GOPATH}
endif
rm -f mixer-tools-*.tar.gz
release:
@if [ ! -d .git ]; then \
echo "Release needs to be used from a git repository"; \
exit 1; \
fi
git archive --format=tar.gz --verbose -o mixer-tools-${VERSION}.tar.gz HEAD --prefix=mixer-tools-${VERSION}/
MANPAGES = \
docs/mixer.1 \
docs/mixer.add-rpms.1 \
docs/mixer.build.1 \
docs/mixer.bundle.1 \
docs/mixer.config.1 \
docs/mixer.init.1 \
docs/mixer.repo.1 \
docs/mixer.versions.1 \
docs/mixin.1
man: $(MANPAGES)
% : %.rst
mkdir -p "$$(dirname $@)"
rst2man.py "$<" > "$@.tmp" && mv -f "$@.tmp" "$@"