Skip to content

fix(Virtualbox) get version function for detector#149

Open
ifurther wants to merge 1 commit into
hashicorp:mainfrom
ifurther:patch-1
Open

fix(Virtualbox) get version function for detector#149
ifurther wants to merge 1 commit into
hashicorp:mainfrom
ifurther:patch-1

Conversation

@ifurther

@ifurther ifurther commented Mar 4, 2025

Copy link
Copy Markdown

Closes #130

@ifurther ifurther requested a review from a team as a code owner March 4, 2025 12:00
@hashicorp-cla-app

hashicorp-cla-app Bot commented Mar 4, 2025

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@hashicorp-cla-app

Copy link
Copy Markdown

CLA assistant check

Thank you for your submission! We require that all contributors sign our Contributor License Agreement ("CLA") before we can accept the contribution. Read and sign the agreement

Learn more about why HashiCorp requires a CLA and what the CLA includes

Have you signed the CLA already but the status is still pending? Recheck it.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aims to fix VirtualBox version detection (used by the driver and guest additions download logic) when VBoxManage --version output contains extra warning text (e.g., LOGNAME/USER does not correspond...), as reported in #130.

Changes:

  • Modifies the VBox42Driver.Version() regex used to extract the VirtualBox version from VBoxManage --version output.
Comments suppressed due to low confidence (1)

builder/virtualbox/common/driver_4_2.go:328

  • The updated regex introduces an extra capture group and still anchors to the start of the output, causing Version() to fail in all cases: FindAllStringSubmatch will return 3 entries (full match + 2 groups) so len(matches[0]) != 2 is always true, and the ^ anchor still won't match when a warning line precedes the version (as in issue #130). Consider matching the first dotted numeric version anywhere in the output and switch to FindStringSubmatch so the capture count is unambiguous.
	versionRe := regexp.MustCompile("^(|id.\n)([.0-9]+)(?:_(?:RC|OSEr)[0-9]+)?")
	matches := versionRe.FindAllStringSubmatch(versionOutput, 1)
	if matches == nil || len(matches[0]) != 2 {
		return "", fmt.Errorf("No version found: %s", versionOutput)
	}

	log.Printf("VirtualBox version: %s", matches[0][1])
	return matches[0][1], nil

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Environment variable LOGNAME or USER does not correspond to effective user id

2 participants