mirror of
https://github.com/clearlinux/mixer-tools.git
synced 2026-09-03 20:21:32 +00:00
This release includes major performance improvements to mixer build process and removes some of its legacy systems. On the performance side, RPM extraction is now performed by rpm2archive and tar instead of dnf. This cuts a significant amount of time from the overall build. Selective compression for fullfiles have also been introduced and the default compression method is set to xz only. This change reduces fullfiles generation time to 30% of the previous time at the cost of 0.3% increase in build size for a mix with all upstream packages. Lastly, zero packs creation have been parallelized to further reduce build time. Iterative manifests are now gone. Our tests showed that they didn't present any performance advantage in comparison with delta manifests which are already being used in production. The 'bundle index' bundle has also been removed. This feature was never used for its intended purpose and caused builds to fail frequently due to hash mismatches during its generation. Existing mixes with this bundle will just have it propagated as a empty bundle until the next format bump. At that point, the bundle will be automatically removed. Built in support for Docker has also been removed. The `--native` flag has been deprecated and all commands now run in a native setup. Docker support was introduced to allow auto-format-bump feature to be implemented, but current mixer implementation does not require it anymore to work. External docker images, like mixer-ci, should be used as a replacement in use cases where the built-in docker support was used to create mix in incompatible host OSes. Mixer now provides the possibility of customizing the URL where the bundles are downloaded from. Previously that was hardcoded to upstream bundles, which prevented mixes from being created based of downstream releases. This option can be configured in 'builder.conf'. Signed-off-by: Rodrigo Chiossi <rodrigo.chiossi@intel.com>
113 lines
3.2 KiB
Makefile
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.0.0
|
|
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" "$@"
|