From a852434410d9751c7b1104eb975f2e153c492cb2 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 15 May 2024 18:47:27 -0400 Subject: [PATCH] packer: fix listing on windows with .exe ext Listing installed plugins on Windows requires the extension to be set in the ListOptions, otherwise they are not discovered. While working on the discovery code, and consolidating it in a single location, we've forgotten to pass the argument to ListInstallations, so that makes it impossible to automatically discover installed components on Windows. This commit fixes this issue for the plugins required, and the general discovery process during build/validate. --- command/plugins_required.go | 5 +++++ packer/plugin.go | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/command/plugins_required.go b/command/plugins_required.go index 7ba301dcf..2fcaf60f3 100644 --- a/command/plugins_required.go +++ b/command/plugins_required.go @@ -83,11 +83,16 @@ func (c *PluginsRequiredCommand) RunContext(buildCtx context.Context, cla *Plugi return ret } + ext := "" + if runtime.GOOS == "windows" { + ext = ".exe" + } opts := plugingetter.ListInstallationsOptions{ PluginDirectory: c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, + Ext: ext, APIVersionMajor: pluginsdk.APIVersionMajor, APIVersionMinor: pluginsdk.APIVersionMinor, Checksummers: []plugingetter.Checksummer{ diff --git a/packer/plugin.go b/packer/plugin.go index 72549a03d..c4fe1845c 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -75,11 +75,17 @@ func (c *PluginConfig) Discover() error { c.PluginDirectory, _ = PluginFolder() } + ext := "" + if runtime.GOOS == "windows" { + ext = ".exe" + } + installations, err := plugingetter.Requirement{}.ListInstallations(plugingetter.ListInstallationsOptions{ PluginDirectory: c.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, + Ext: ext, APIVersionMajor: pluginsdk.APIVersionMajor, APIVersionMinor: pluginsdk.APIVersionMinor, Checksummers: []plugingetter.Checksummer{