Skip to content

Commit 6e57602

Browse files
authored
Merge pull request #21625 from nirs/kvm-driver-internal
kvm: remove dependency on external driver
2 parents 776f602 + 4089e1c commit 6e57602

File tree

28 files changed

+205
-609
lines changed

28 files changed

+205
-609
lines changed

Makefile

Lines changed: 13 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ DEB_REVISION ?= 0
3333
RPM_VERSION ?= $(DEB_VERSION)
3434
RPM_REVISION ?= 0
3535

36-
# used by hack/jenkins/release_build_and_upload.sh and KVM_BUILD_IMAGE, see also BUILD_IMAGE below
36+
# used by hack/jenkins/release_build_and_upload.sh, see also BUILD_IMAGE below
3737
# update this only by running `make update-golang-version`
3838
GO_VERSION ?= 1.24.6
3939
# set GOTOOLCHAIN to GO_VERSION to override any toolchain version specified in
@@ -42,10 +42,6 @@ export GOTOOLCHAIN := go$(GO_VERSION)
4242
# update this only by running `make update-golang-version`
4343
GO_K8S_VERSION_PREFIX ?= v1.34.0
4444

45-
# replace "x.y.0" => "x.y". kube-cross and go.dev/dl use different formats for x.y.0 go versions
46-
KVM_GO_VERSION ?= $(GO_VERSION:.0=)
47-
48-
4945
INSTALL_SIZE ?= $(shell du out/minikube-windows-amd64.exe | cut -f1)
5046
BUILDROOT_BRANCH ?= 2025.02
5147
# the go version on the line below is for the ISO
@@ -69,9 +65,6 @@ BUILD_IMAGE ?= registry.k8s.io/build-image/kube-cross:$(GO_K8S_VERSION_PREFIX)-
6965

7066
ISO_BUILD_IMAGE ?= $(REGISTRY)/buildroot-image
7167

72-
KVM_BUILD_IMAGE_AMD64 ?= $(REGISTRY)/kvm-build-image_amd64:$(KVM_GO_VERSION)
73-
KVM_BUILD_IMAGE_ARM64 ?= $(REGISTRY)/kvm-build-image_arm64:$(KVM_GO_VERSION)
74-
7568
ISO_BUCKET ?= minikube/iso
7669

7770
MINIKUBE_VERSION ?= $(ISO_VERSION)
@@ -147,7 +140,11 @@ MARKDOWNLINT ?= markdownlint
147140

148141
MINIKUBE_MARKDOWN_FILES := README.md CONTRIBUTING.md CHANGELOG.md
149142

150-
MINIKUBE_BUILD_TAGS :=
143+
# The `libvirt_dlopen` build tag is used only linux to avoid linking with
144+
# libvirt shared library. This is not documnted but can be found in the source.
145+
# https://gitlab.com/libvirt/libvirt-go-module/-/blob/f7cdeba9979dd248582901d2aaf7ab1f2d27cbe0/domain.go#L30
146+
MINIKUBE_BUILD_TAGS := libvirt_dlopen
147+
151148
MINIKUBE_INTEGRATION_BUILD_TAGS := integration $(MINIKUBE_BUILD_TAGS)
152149

153150
CMD_SOURCE_DIRS = cmd pkg deploy/addons translations
@@ -160,9 +157,6 @@ ADDON_FILES = $(shell find "deploy/addons" -type f | grep -v "\.go")
160157
TRANSLATION_FILES = $(shell find "translations" -type f | grep -v "\.go")
161158
ASSET_FILES = $(ADDON_FILES) $(TRANSLATION_FILES)
162159

163-
# kvm2 ldflags
164-
KVM2_LDFLAGS := -X k8s.io/minikube/pkg/drivers/kvm.version=$(VERSION) -X k8s.io/minikube/pkg/drivers/kvm.gitCommitID=$(COMMIT)
165-
166160
# hyperkit ldflags
167161
HYPERKIT_LDFLAGS := -X k8s.io/minikube/pkg/drivers/hyperkit.version=$(VERSION) -X k8s.io/minikube/pkg/drivers/hyperkit.gitCommitID=$(COMMIT)
168162

@@ -362,18 +356,11 @@ all: cross drivers e2e-cross cross-tars exotic retro out/gvisor-addon ## Build a
362356

363357
# After https://github.com/kubernetes/minikube/issues/19959 is fixed kvm2-arm64 can be added back
364358
.PHONY: drivers
365-
drivers: ## Build Hyperkit and KVM2 drivers
366-
drivers: docker-machine-driver-hyperkit \
367-
docker-machine-driver-kvm2 \
368-
out/docker-machine-driver-kvm2-amd64
369-
359+
drivers: docker-machine-driver-hyperkit ## Build external drivers
370360

371361
.PHONY: docker-machine-driver-hyperkit
372362
docker-machine-driver-hyperkit: out/docker-machine-driver-hyperkit ## Build Hyperkit driver
373363

374-
.PHONY: docker-machine-driver-kvm2
375-
docker-machine-driver-kvm2: out/docker-machine-driver-kvm2 ## Build KVM2 driver
376-
377364
.PHONY: integration
378365
integration: out/minikube$(IS_EXE) ## Trigger minikube integration test, logs to ./out/testout_COMMIT.txt
379366
go test -ldflags="${MINIKUBE_LDFLAGS}" -v -test.timeout=90m $(INTEGRATION_TESTS_TO_RUN) --tags="$(MINIKUBE_INTEGRATION_BUILD_TAGS)" $(TEST_ARGS) 2>&1 | tee "./out/testout_$(COMMIT_SHORT).txt"
@@ -473,7 +460,6 @@ checksum: ## Generate checksums
473460
for f in out/minikube-amd64.iso out/minikube-arm64.iso out/minikube-linux-amd64 out/minikube-linux-arm \
474461
out/minikube-linux-arm64 out/minikube-linux-ppc64le out/minikube-linux-s390x \
475462
out/minikube-darwin-amd64 out/minikube-darwin-arm64 out/minikube-windows-amd64.exe \
476-
out/docker-machine-driver-kvm2 out/docker-machine-driver-kvm2-amd64 out/docker-machine-driver-kvm2-arm64 \
477463
out/docker-machine-driver-hyperkit; do \
478464
if [ -f "$${f}" ]; then \
479465
openssl sha256 "$${f}" | awk '{print $$2}' > "$${f}.sha256" ; \
@@ -532,9 +518,9 @@ out/linters/golangci-lint-$(GOLINT_VERSION):
532518
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
533519
lint:
534520
docker run --rm -v `pwd`:/app:Z -w /app golangci/golangci-lint:$(GOLINT_VERSION) \
535-
golangci-lint run ${GOLINT_OPTIONS} ./..."
536-
# --skip-dirs "cmd/drivers/kvm|cmd/drivers/hyperkit|pkg/drivers/kvm|pkg/drivers/hyperkit"
537-
# The "--skip-dirs" parameter is no longer supported in the V2 version. If you need to skip the directory,
521+
golangci-lint run ${GOLINT_OPTIONS} ./..."
522+
# --skip-dirs "cmd/drivers/kvm|cmd/drivers/hyperkit|pkg/drivers/kvm|pkg/drivers/hyperkit"
523+
# The "--skip-dirs" parameter is no longer supported in the V2 version. If you need to skip the directory,
538524
# add it under "linters.settings.exclusions.paths" in the ".golangci.yaml" file.
539525
else
540526
lint: out/linters/golangci-lint-$(GOLINT_VERSION) ## Run lint
@@ -567,10 +553,7 @@ out/docs/minikube.md: $(shell find "cmd") $(shell find "pkg/minikube/constants")
567553

568554
.PHONY: debs ## Build all deb packages
569555
debs: out/minikube_$(DEB_VERSION)-$(DEB_REVISION)_amd64.deb \
570-
out/minikube_$(DEB_VERSION)-$(DEB_REVISION)_arm64.deb \
571-
out/docker-machine-driver-kvm2_$(DEB_VERSION).deb \
572-
out/docker-machine-driver-kvm2_$(DEB_VERSION)-$(DEB_REVISION)_amd64.deb
573-
# out/docker-machine-driver-kvm2_$(DEB_VERSION)-$(DEB_REVISION)_arm64.deb
556+
out/minikube_$(DEB_VERSION)-$(DEB_REVISION)_arm64.deb
574557

575558
.PHONY: deb_version
576559
deb_version:
@@ -634,8 +617,8 @@ out/repodata/repomd.xml: out/minikube-$(RPM_VERSION).rpm
634617
-u "$(MINIKUBE_RELEASES_URL)/$(VERSION)/" out
635618

636619
.SECONDEXPANSION:
637-
TAR_TARGETS_linux-amd64 := out/minikube-linux-amd64 out/docker-machine-driver-kvm2
638-
TAR_TARGETS_linux-arm64 := out/minikube-linux-arm64 #out/docker-machine-driver-kvm2
620+
TAR_TARGETS_linux-amd64 := out/minikube-linux-amd64
621+
TAR_TARGETS_linux-arm64 := out/minikube-linux-arm64
639622
TAR_TARGETS_darwin-amd64 := out/minikube-darwin-amd64 out/docker-machine-driver-hyperkit
640623
TAR_TARGETS_darwin-arm64 := out/minikube-darwin-arm64 #out/docker-machine-driver-hyperkit
641624
TAR_TARGETS_windows-amd64 := out/minikube-windows-amd64.exe
@@ -847,113 +830,6 @@ update-leaderboard:
847830
update-yearly-leaderboard:
848831
hack/yearly-leaderboard.sh
849832

850-
out/docker-machine-driver-kvm2: out/docker-machine-driver-kvm2-$(GOARCH)
851-
# skipping kvm2-arm64 till https://github.com/kubernetes/minikube/issues/19959 is fixed
852-
ifneq ($(GOARCH),arm64)
853-
$(if $(quiet),@echo " CP $@")
854-
$(Q)cp $< $@
855-
endif
856-
857-
out/docker-machine-driver-kvm2-x86_64: out/docker-machine-driver-kvm2-amd64
858-
$(if $(quiet),@echo " CP $@")
859-
$(Q)cp $< $@
860-
861-
# https://github.com/kubernetes/minikube/issues/19959
862-
out/docker-machine-driver-kvm2-aarch64: out/docker-machine-driver-kvm2-arm64
863-
$(if $(quiet),@echo " CP $@")
864-
$(Q)cp $< $@
865-
866-
867-
out/docker-machine-driver-kvm2_$(DEB_VERSION).deb: out/docker-machine-driver-kvm2_$(DEB_VERSION)-0_amd64.deb
868-
cp $< $@
869-
870-
out/docker-machine-driver-kvm2_$(DEB_VERSION)-0_%.deb: out/docker-machine-driver-kvm2-%
871-
cp -r installers/linux/deb/kvm2_deb_template out/docker-machine-driver-kvm2_$(DEB_VERSION)
872-
chmod 0755 out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN
873-
sed -E -i -e 's/--VERSION--/$(DEB_VERSION)/g' out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN/control
874-
sed -E -i -e 's/--ARCH--/'$*'/g' out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN/control
875-
mkdir -p out/docker-machine-driver-kvm2_$(DEB_VERSION)/usr/bin
876-
cp $< out/docker-machine-driver-kvm2_$(DEB_VERSION)/usr/bin/docker-machine-driver-kvm2
877-
fakeroot dpkg-deb --build out/docker-machine-driver-kvm2_$(DEB_VERSION) $@
878-
rm -rf out/docker-machine-driver-kvm2_$(DEB_VERSION)
879-
880-
out/docker-machine-driver-kvm2-$(RPM_VERSION).rpm: out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.x86_64.rpm
881-
cp $< $@
882-
883-
out/docker-machine-driver-kvm2_$(RPM_VERSION).amd64.rpm: out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.x86_64.rpm
884-
cp $< $@
885-
886-
out/docker-machine-driver-kvm2_$(RPM_VERSION).arm64.rpm: out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.aarch64.rpm
887-
cp $< $@
888-
889-
out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.%.rpm: out/docker-machine-driver-kvm2-%
890-
cp -r installers/linux/rpm/kvm2_rpm_template out/docker-machine-driver-kvm2-$(RPM_VERSION)
891-
sed -E -i -e 's/--VERSION--/'$(RPM_VERSION)'/g' out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec
892-
sed -E -i -e 's|--OUT--|'$(PWD)/out'|g' out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec
893-
rpmbuild -bb -D "_rpmdir $(PWD)/out" --target $* \
894-
out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec
895-
@mv out/$*/docker-machine-driver-kvm2-$(RPM_VERSION)-0.$*.rpm out/ && rmdir out/$*
896-
rm -rf out/docker-machine-driver-kvm2-$(RPM_VERSION)
897-
898-
.PHONY: kvm-image-amd64
899-
kvm-image-amd64: installers/linux/kvm/Dockerfile.amd64 ## Convenient alias to build the docker container
900-
docker build --build-arg "GO_VERSION=$(GO_VERSION)" -t $(KVM_BUILD_IMAGE_AMD64) -f $< $(dir $<)
901-
@echo ""
902-
@echo "$(@) successfully built"
903-
904-
.PHONY: kvm-image-arm64
905-
kvm-image-arm64: installers/linux/kvm/Dockerfile.arm64 docker-multi-arch-build ## Convenient alias to build the docker container
906-
docker buildx build --platform linux/arm64 --build-arg "GO_VERSION=$(GO_VERSION)" -t $(KVM_BUILD_IMAGE_ARM64) -f $< $(dir $<)
907-
@echo ""
908-
@echo "$(@) successfully built"
909-
910-
kvm_in_docker:
911-
docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE_AMD64) || $(MAKE) kvm-image-amd64
912-
rm -f out/docker-machine-driver-kvm2
913-
$(call DOCKER,$(KVM_BUILD_IMAGE_AMD64),/usr/bin/make out/docker-machine-driver-kvm2 COMMIT=$(COMMIT))
914-
915-
.PHONY: install-kvm-driver
916-
install-kvm-driver: out/docker-machine-driver-kvm2 ## Install KVM Driver
917-
mkdir -p $(GOBIN)
918-
cp out/docker-machine-driver-kvm2 $(GOBIN)/docker-machine-driver-kvm2
919-
920-
921-
out/docker-machine-driver-kvm2-arm64:
922-
@echo "skipping kvm2-arm64 till https://github.com/kubernetes/minikube/issues/19959 is fixed"
923-
# ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
924-
# docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE_ARM64) || $(MAKE) kvm-image-arm64
925-
# $(call DOCKER,$(KVM_BUILD_IMAGE_ARM64),/usr/bin/make $@ COMMIT=$(COMMIT))
926-
# else
927-
# $(if $(quiet),@echo " GO $@")
928-
# $(Q)GOARCH=arm64 \
929-
# go build \
930-
# -buildvcs=false \
931-
# -installsuffix "static" \
932-
# -ldflags="$(KVM2_LDFLAGS)" \
933-
# -tags "libvirt_without_lxc" \
934-
# -o $@ \
935-
# k8s.io/minikube/cmd/drivers/kvm
936-
# endif
937-
# chmod +X $@
938-
939-
out/docker-machine-driver-kvm2-%:
940-
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
941-
docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE_AMD64) || $(MAKE) kvm-image-amd64
942-
$(call DOCKER,$(KVM_BUILD_IMAGE_AMD64),/usr/bin/make $@ COMMIT=$(COMMIT))
943-
else
944-
$(if $(quiet),@echo " GO $@")
945-
$(Q)GOARCH=$* \
946-
go build \
947-
-buildvcs=false \
948-
-installsuffix "static" \
949-
-ldflags="$(KVM2_LDFLAGS)" \
950-
-tags "libvirt_without_lxc" \
951-
-o $@ \
952-
k8s.io/minikube/cmd/drivers/kvm
953-
endif
954-
chmod +X $@
955-
956-
957833
site/themes/docsy/assets/vendor/bootstrap/package.js: ## update the website docsy theme git submodule
958834
git submodule update -f --init
959835

cmd/drivers/kvm/main-nolinux.go

Lines changed: 0 additions & 33 deletions
This file was deleted.

cmd/drivers/kvm/main.go

Lines changed: 0 additions & 37 deletions
This file was deleted.

hack/jenkins/common.sh

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,18 +176,22 @@ echo
176176
echo ">> Downloading test inputs from ${MINIKUBE_LOCATION} ..."
177177
gsutil -qm cp \
178178
"gs://minikube-builds/${MINIKUBE_LOCATION}/minikube-${OS_ARCH}" \
179-
"gs://minikube-builds/${MINIKUBE_LOCATION}/docker-machine-driver"-* \
180-
"gs://minikube-builds/${MINIKUBE_LOCATION}/e2e-${OS_ARCH}" out
179+
"gs://minikube-builds/${MINIKUBE_LOCATION}/e2e-${OS_ARCH}" \
180+
out
181181

182182
gsutil -qm cp -r "gs://minikube-builds/${MINIKUBE_LOCATION}/testdata"/* testdata/
183183

184184
gsutil -qm cp "gs://minikube-builds/${MINIKUBE_LOCATION}/gvisor-addon" testdata/
185185

186+
if [[ "${DRIVER}" == "hyperkit" ]]; then
187+
gsutil -qm cp "gs://minikube-builds/${MINIKUBE_LOCATION}/docker-machine-driver-hyperkit" out
188+
chmod +x out/docker-machine-driver-hyperkit
189+
fi
186190

187191
# Set the executable bit on the e2e binary and out binary
188192
export MINIKUBE_BIN="out/minikube-${OS_ARCH}"
189193
export E2E_BIN="out/e2e-${OS_ARCH}"
190-
chmod +x "${MINIKUBE_BIN}" "${E2E_BIN}" out/docker-machine-driver-*
194+
chmod +x "${MINIKUBE_BIN}" "${E2E_BIN}"
191195
"${MINIKUBE_BIN}" version
192196

193197
procs=$(pgrep "minikube-${OS_ARCH}|e2e-${OS_ARCH}" || true)

hack/jenkins/minikube_cross_build_and_upload.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ make -j 16 \
4949
out/mkcmp \
5050
out/minikube_${DEB_VER}_amd64.deb \
5151
out/minikube_${DEB_VER}_arm64.deb \
52-
out/docker-machine-driver-kvm2_$(make deb_version_base).deb \
53-
out/docker-machine-driver-kvm2_${DEB_VER}_amd64.deb \
5452
&& failed=$? || failed=$?
5553

5654
BUILT_VERSION=$("out/minikube-$(go env GOOS)-$(go env GOARCH)" version)

hack/jenkins/release_build_and_upload.sh

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ env BUILD_IN_DOCKER=y \
6464
"out/minikube_${DEB_VERSION}-${DEB_REVISION}_armhf.deb" \
6565
"out/minikube_${DEB_VERSION}-${DEB_REVISION}_ppc64el.deb" \
6666
"out/minikube_${DEB_VERSION}-${DEB_REVISION}_s390x.deb" \
67-
"out/docker-machine-driver-kvm2_${DEB_VERSION}-${DEB_REVISION}_amd64.deb"
68-
# "out/docker-machine-driver-kvm2_${DEB_VERSION}-${DEB_REVISION}_arm64.deb"
6967

7068
env BUILD_IN_DOCKER=y \
7169
make \
@@ -74,7 +72,6 @@ env BUILD_IN_DOCKER=y \
7472
"out/minikube-${RPM_VERSION}-${RPM_REVISION}.armv7hl.rpm" \
7573
"out/minikube-${RPM_VERSION}-${RPM_REVISION}.ppc64le.rpm" \
7674
"out/minikube-${RPM_VERSION}-${RPM_REVISION}.s390x.rpm" \
77-
"out/docker-machine-driver-kvm2-${RPM_VERSION}-${RPM_REVISION}.x86_64.rpm"
7875

7976
# check if 'commit: <commit-id>' line contains '-dirty' commit suffix
8077
BUILT_VERSION="$(out/minikube-$(go env GOOS)-$(go env GOARCH) version)"

installers/linux/archlinux-driver/.SRCINFO

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)