mirror of
https://github.com/containers/podman.git
synced 2025-05-17 06:59:07 +08:00
Document building Podman remote on Windows hosts
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
This commit is contained in:
@ -46,7 +46,8 @@ the “In Progress” label be set and a member will do so for you.
|
||||
|
||||
## Contributing to Podman
|
||||
|
||||
This section describes how to start a contribution to Podman. These instructions are geared towards using a Linux development machine, which is required for doing development on the podman backend. Check out these instructions for [building the podman client on MacOSX](./build_osx.md).
|
||||
This section describes how to start a contribution to Podman. These instructions are geared towards using a Linux development machine, which is required for doing development on the Podman backend. Check out these instructions for building the Podman client on [MacOSX](./build_osx.md) or
|
||||
[Windows](./build_windows.md).
|
||||
|
||||
### Prepare your environment
|
||||
|
||||
|
@ -51,5 +51,5 @@ $ man podman
|
||||
|
||||
## Using the client
|
||||
|
||||
To learn how to use the Podman client, refer its
|
||||
To learn how to use the Podman client, refer to its
|
||||
[tutorial](https://github.com/containers/podman/blob/main/docs/tutorials/remote_client.md).
|
||||
|
107
build_windows.md
Normal file
107
build_windows.md
Normal file
@ -0,0 +1,107 @@
|
||||
# Building the Podman client and client installer on Windows
|
||||
|
||||
The following describes the process for building the Podman client on Windows.
|
||||
|
||||
## OS requirements
|
||||
|
||||
Windows OS can behave very differently depending on how it was configured. This documentation assumes that one is using
|
||||
a [Windows 11 development machine](https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/) or a
|
||||
configuration close to this one. The Podman Windows client installer bundles several tools, which are unnecessary for Podman builds, but this
|
||||
set of packages is well aligned with GitHub's `windows-latest` offerings. Some of the tools will still be missing from
|
||||
this distribution and will have to be manually added after this installation completes.
|
||||
|
||||
## Install Pandoc
|
||||
|
||||
Pandoc could be installed from https://pandoc.org/installing.html When performing the Pandoc installation one, has to choose the option
|
||||
"Install for all users" (to put the binaries into "Program Files" directory).
|
||||
|
||||
## Install WiX Toolset v3 (is preinstalled in Github runner)
|
||||
The latest release of the WiX Toolset can be obtained from https://wixtoolset.org/docs/wix3/. Installing it into a clean VM might require
|
||||
an additional installation of .NET Framework 3.5 in advance
|
||||
([instructions for adding .NET Framework 3.5 via enabling the Windows feature](https://learn.microsoft.com/en-us/dotnet/framework/install/dotnet-35-windows#enable-the-net-framework-35-in-control-panel))
|
||||
|
||||
## Install msys2
|
||||
|
||||
Podman requires brew -- a collection of Unix like build tools and libraries adapted for Windows. More details and
|
||||
installation instructions are available from their [home page](https://www.msys2.org/). There are also premade GitHub
|
||||
actions for this tool that are available.
|
||||
|
||||
## Install build dependencies
|
||||
|
||||
Podman requires some software from msys2 to be able to build. This can be done using msys2 shell. One can start it
|
||||
from the Start menu. This documentation covers only usage of MSYS2 UCRT64 shell (msys2 shells come preconfigured for
|
||||
different [environments](https://www.msys2.org/docs/environments/)).
|
||||
|
||||
```
|
||||
$ pacman -S git make zip mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-go mingw-w64-ucrt-x86_64-python
|
||||
```
|
||||
|
||||
The Pandoc tool installed in a prior step is specific, that is the installer doesn't add the tool to any PATH environment
|
||||
variable known to msys2, so, it has to be linked explicitly to work.
|
||||
|
||||
```
|
||||
$ mkdir -p /usr/local/bin
|
||||
$ ln -sf "/c/Program Files/Pandoc/pandoc.exe" "/usr/local/bin/pandoc.exe"
|
||||
```
|
||||
|
||||
## Restart shell (important)
|
||||
|
||||
One needs to restart the [msys2](https://www.msys2.org/) shell after dependency installation before proceeding with the build.
|
||||
|
||||
## Obtain Podman source code
|
||||
|
||||
One can obtain the latest source code for Podman from its [GitHub](https://github.com/containers/podman) repository.
|
||||
|
||||
```
|
||||
$ git clone https://github.com/containers/podman.git go/src/github.com/containers/podman
|
||||
```
|
||||
|
||||
## Build client
|
||||
|
||||
After completing the preparatory steps of obtaining the Podman source code and installing its dependencies, the client
|
||||
can now be built.
|
||||
|
||||
```
|
||||
$ cd go/src/github.com/containers/podman
|
||||
$ make clean podman-remote-release-windows_amd64.zip
|
||||
```
|
||||
|
||||
The complete distribution will be packaged to the `podman-remote-release-windows_amd64.zip` file. It is possible to
|
||||
unzip it and replace files in the default Podman installation with the built ones to use the custom build.
|
||||
|
||||
### Build client only (for faster feedback loop)
|
||||
|
||||
Building Podman by following this documentation can take a fair amount of time and effort. Packaging the installer adds even more overhead. If
|
||||
the only needed artifact is the Podman binary itself, it is possible to build only it with this command:
|
||||
|
||||
```
|
||||
$ make podman-remote
|
||||
```
|
||||
|
||||
The binary will be located in `bin/windows/`. It could be used as drop in replacement for the installed version of
|
||||
Podman.
|
||||
|
||||
It is also possible to cross-build for other platforms by providing GOOS and GOARCH environment variables.
|
||||
|
||||
## Build client installer
|
||||
|
||||
As Windows requires more effort in comparison to Unix systems for installation procedures, it is sometimes
|
||||
easier to pack the changes into a ready-to-use installer. To create the installer, the full client distribution in ZIP
|
||||
format has to be built beforehand.
|
||||
|
||||
```
|
||||
$ export BUILD_PODMAN_VERSION=$(test/version/version | sed 's/-.*//')
|
||||
$ mkdir -p contrib/win-installer/current
|
||||
$ cp podman-remote-release-windows_amd64.zip contrib/win-installer/current/
|
||||
$ cd contrib/win-installer
|
||||
$ powershell -ExecutionPolicy Bypass -File build.ps1 $BUILD_PODMAN_VERSION dev current
|
||||
```
|
||||
|
||||
The installer will be located in the `contrib/win-installer` folder (relative to checkout root) and will have a name
|
||||
like `podman-4.5.0-dev-setup.exe`. This could be installed in a similar manner as the official Podman for Windows installers
|
||||
(when installing unsigned binaries is allowed on the host).
|
||||
|
||||
## Using the client
|
||||
|
||||
To learn how to use the Podman client, refer to its
|
||||
[tutorial](https://github.com/containers/podman/blob/main/docs/tutorials/remote_client.md).
|
Reference in New Issue
Block a user