mirror of
https://github.com/containers/podman.git
synced 2025-06-23 02:18:13 +08:00
Merge pull request #3999 from jwhonce/wip/msi
Support building Windows msi file
This commit is contained in:
16
Makefile
16
Makefile
@ -83,7 +83,7 @@ LIBSECCOMP_COMMIT := release-2.3
|
|||||||
GINKGOTIMEOUT ?= -timeout=90m
|
GINKGOTIMEOUT ?= -timeout=90m
|
||||||
|
|
||||||
RELEASE_VERSION ?= $(shell hack/get_release_info.sh VERSION)
|
RELEASE_VERSION ?= $(shell hack/get_release_info.sh VERSION)
|
||||||
RELEASE_NUMBER ?= $(shell hack/get_release_info.sh NUMBER)
|
RELEASE_NUMBER ?= $(shell hack/get_release_info.sh NUMBER|sed -e 's/^v\(.*\)/\1/')
|
||||||
RELEASE_DIST ?= $(shell hack/get_release_info.sh DIST)
|
RELEASE_DIST ?= $(shell hack/get_release_info.sh DIST)
|
||||||
RELEASE_DIST_VER ?= $(shell hack/get_release_info.sh DIST_VER)
|
RELEASE_DIST_VER ?= $(shell hack/get_release_info.sh DIST_VER)
|
||||||
RELEASE_ARCH ?= $(shell hack/get_release_info.sh ARCH)
|
RELEASE_ARCH ?= $(shell hack/get_release_info.sh ARCH)
|
||||||
@ -164,6 +164,10 @@ podman: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman
|
|||||||
podman-remote: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman on remote environment
|
podman-remote: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman on remote environment
|
||||||
$(GO_BUILD) $(BUILDFLAGS) -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS) remoteclient" -o bin/$@ $(PROJECT)/cmd/podman
|
$(GO_BUILD) $(BUILDFLAGS) -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS) remoteclient" -o bin/$@ $(PROJECT)/cmd/podman
|
||||||
|
|
||||||
|
.PHONY: podman.msi
|
||||||
|
podman.msi: podman-remote-windows ## Will always rebuild exe as there is no podman-remote-windows.exe target to verify timestamp
|
||||||
|
wixl -D VERSION=$(RELEASE_NUMBER) -o bin/podman-v$(RELEASE_NUMBER).msi contrib/msi/podman.wxs
|
||||||
|
|
||||||
podman-remote-%: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build podman for a specific GOOS
|
podman-remote-%: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build podman for a specific GOOS
|
||||||
$(eval BINSFX := $(shell test "$*" != "windows" || echo ".exe"))
|
$(eval BINSFX := $(shell test "$*" != "windows" || echo ".exe"))
|
||||||
CGO_ENABLED=0 GOOS=$* $(GO_BUILD) -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "remoteclient containers_image_openpgp exclude_graphdriver_devicemapper" -o bin/$@$(BINSFX) $(PROJECT)/cmd/podman
|
CGO_ENABLED=0 GOOS=$* $(GO_BUILD) -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "remoteclient containers_image_openpgp exclude_graphdriver_devicemapper" -o bin/$@$(BINSFX) $(PROJECT)/cmd/podman
|
||||||
@ -328,9 +332,9 @@ release.txt:
|
|||||||
echo -n " $$field"; done >> "$@"
|
echo -n " $$field"; done >> "$@"
|
||||||
echo "" >> "$@"
|
echo "" >> "$@"
|
||||||
|
|
||||||
podman-$(RELEASE_NUMBER).tar.gz: binaries docs release.txt
|
podman-v$(RELEASE_NUMBER).tar.gz: binaries docs release.txt
|
||||||
$(eval TMPDIR := $(shell mktemp -d -p '' podman_XXXX))
|
$(eval TMPDIR := $(shell mktemp -d -p '' podman_XXXX))
|
||||||
$(eval SUBDIR := podman-$(RELEASE_NUMBER))
|
$(eval SUBDIR := podman-v$(RELEASE_NUMBER))
|
||||||
mkdir -p "$(TMPDIR)/$(SUBDIR)"
|
mkdir -p "$(TMPDIR)/$(SUBDIR)"
|
||||||
$(MAKE) install.bin install.man install.cni install.systemd "DESTDIR=$(TMPDIR)/$(SUBDIR)" "PREFIX=/usr"
|
$(MAKE) install.bin install.man install.cni install.systemd "DESTDIR=$(TMPDIR)/$(SUBDIR)" "PREFIX=/usr"
|
||||||
# release.txt location and content depended upon by automated tooling
|
# release.txt location and content depended upon by automated tooling
|
||||||
@ -339,7 +343,7 @@ podman-$(RELEASE_NUMBER).tar.gz: binaries docs release.txt
|
|||||||
-rm -rf "$(TMPDIR)"
|
-rm -rf "$(TMPDIR)"
|
||||||
|
|
||||||
# Must call make in-line: Dependency-spec. w/ wild-card also consumes variable value.
|
# Must call make in-line: Dependency-spec. w/ wild-card also consumes variable value.
|
||||||
podman-remote-$(RELEASE_NUMBER)-%.zip:
|
podman-remote-v$(RELEASE_NUMBER)-%.zip:
|
||||||
$(MAKE) podman-remote-$* install-podman-remote-docs release.txt \
|
$(MAKE) podman-remote-$* install-podman-remote-docs release.txt \
|
||||||
RELEASE_BASENAME=$(shell hack/get_release_info.sh REMOTENAME) \
|
RELEASE_BASENAME=$(shell hack/get_release_info.sh REMOTENAME) \
|
||||||
RELEASE_DIST=$* RELEASE_DIST_VER="-"
|
RELEASE_DIST=$* RELEASE_DIST_VER="-"
|
||||||
@ -364,12 +368,12 @@ podman-remote-$(RELEASE_NUMBER)-%.zip:
|
|||||||
.PHONY: podman-release
|
.PHONY: podman-release
|
||||||
podman-release:
|
podman-release:
|
||||||
rm -f release.txt
|
rm -f release.txt
|
||||||
$(MAKE) podman-$(RELEASE_NUMBER).tar.gz
|
$(MAKE) podman-v$(RELEASE_NUMBER).tar.gz
|
||||||
|
|
||||||
.PHONY: podman-remote-%-release
|
.PHONY: podman-remote-%-release
|
||||||
podman-remote-%-release:
|
podman-remote-%-release:
|
||||||
rm -f release.txt
|
rm -f release.txt
|
||||||
$(MAKE) podman-remote-$(RELEASE_NUMBER)-$*.zip
|
$(MAKE) podman-remote-v$(RELEASE_NUMBER)-$*.zip
|
||||||
|
|
||||||
docker-docs: docs
|
docker-docs: docs
|
||||||
(cd docs; ./dckrman.sh *.1)
|
(cd docs; ./dckrman.sh *.1)
|
||||||
|
BIN
contrib/msi/podman-logo.ico
Normal file
BIN
contrib/msi/podman-logo.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
43
contrib/msi/podman.bat
Normal file
43
contrib/msi/podman.bat
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal enableextensions
|
||||||
|
|
||||||
|
title Podman
|
||||||
|
|
||||||
|
:: If remote-host is given on command line -- use it
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
for %%a in (%*) do (
|
||||||
|
echo "%%a" |find "--remote-host" >NUL
|
||||||
|
if !errorlevel! == 0 (
|
||||||
|
goto run_podman
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
:: If PODMAN_VARLINK_BRIDGE is set -- use it
|
||||||
|
if defined PODMAN_VARLINK_BRIDGE (
|
||||||
|
goto run_podman
|
||||||
|
)
|
||||||
|
|
||||||
|
:: If the configuration file exists -- use it
|
||||||
|
set config_home=%USERPROFILE%\AppData\podman
|
||||||
|
set config_file=%config_home%\podman-remote.conf
|
||||||
|
if exist "%config_file%" (
|
||||||
|
goto run_podman
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Get connection information from user and build configuration file
|
||||||
|
md "%config_home%"
|
||||||
|
set /p host="Please enter the remote hosts name or IP address: "
|
||||||
|
set /p user="Please enter the remote user name: "
|
||||||
|
(
|
||||||
|
echo [connections]
|
||||||
|
echo [connections."%host%"]
|
||||||
|
echo destination = "%host%"
|
||||||
|
echo username = "%user%"
|
||||||
|
echo default = true
|
||||||
|
) >"%config_file%"
|
||||||
|
|
||||||
|
:run_podman
|
||||||
|
endlocal
|
||||||
|
podman-remote-windows.exe %*
|
||||||
|
|
||||||
|
:End
|
48
contrib/msi/podman.wxs
Normal file
48
contrib/msi/podman.wxs
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||||
|
|
||||||
|
<?ifndef var.VERSION?>
|
||||||
|
<?error VERSION must be defined via command line argument?>
|
||||||
|
<?endif?>
|
||||||
|
|
||||||
|
<Product Name="Podman $(var.VERSION)" Id="*" UpgradeCode="696BAB5D-CA1F-4B05-B123-320F245B8D6D" Version="$(var.VERSION)" Language="1033" Manufacturer="Red Hat Inc.">
|
||||||
|
|
||||||
|
<Package Id="*" Keywords="Installer" Description="Red Hat's Podman $(var.VERSION) Installer" Comments="Apache 2.0 License" Manufacturer="Red Hat Inc." InstallScope="perMachine" InstallerVersion="100" Compressed="yes"/>
|
||||||
|
<Media Id="1" Cabinet="Podman.cab" EmbedCab="yes"/>
|
||||||
|
<Property Id="DiskPrompt" Value="Red Hat's Podman $(var.VERSION) Installation"/>
|
||||||
|
|
||||||
|
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||||
|
|
||||||
|
<Directory Id="ProgramFilesFolder" Name="PFiles">
|
||||||
|
<Directory Id="RedHatPFiles" Name="RedHat">
|
||||||
|
<Directory Id="INSTALLDIR" Name="Podman">
|
||||||
|
<Component Id="INSTALLDIR_Component" Guid="14B310C4-9B5D-4DA5-ADF9-B9D008E4CD82">
|
||||||
|
<CreateFolder/>
|
||||||
|
</Component>
|
||||||
|
<Component Id="MainExecutable" Guid="73752F94-6589-4C7B-ABED-39D655A19714">
|
||||||
|
<File Id="520C6E17-77A2-4F41-9611-30FA763A0702" Name="podman-remote-windows.exe" Source="bin/podman-remote-windows.exe"/>
|
||||||
|
<File Id="A14218A0-4180-44AC-B109-7C63B3099DCA" Name="podman.bat" Source="podman.bat" KeyPath="yes"/>
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Property Id="setx" Value="setx.exe"/>
|
||||||
|
<CustomAction Id="ChangePath" ExeCommand='PATH "%PATH%;[INSTALLDIR]"' Property="setx" Execute="deferred" Impersonate="yes" Return="check"/>
|
||||||
|
|
||||||
|
<Feature Id="Complete" Level="1">
|
||||||
|
<ComponentRef Id="INSTALLDIR_Component"/>
|
||||||
|
<ComponentRef Id="MainExecutable"/>
|
||||||
|
</Feature>
|
||||||
|
|
||||||
|
<Icon Id="podman.ico" SourceFile="contrib/msi/podman-logo.ico"/>
|
||||||
|
<Property Id="ARPPRODUCTICON" Value="podman.ico"/>
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<RemoveExistingProducts Before="InstallInitialize"/>
|
||||||
|
<Custom Action="ChangePath" After="InstallServices">NOT Installed</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
|
||||||
|
</Product>
|
||||||
|
</Wix>
|
Reference in New Issue
Block a user