Add instructions to build Windows package on Windows

Fixes #37
This commit is contained in:
Luke Bakken 2018-11-08 13:45:54 -08:00
parent ad183bf6fa
commit 7925efada9
No known key found for this signature in database
GPG Key ID: B707DD932540186E
2 changed files with 125 additions and 0 deletions

117
PKG_WINDOWS.md Normal file
View File

@ -0,0 +1,117 @@
# Build RabbitMQ Windows Package using Windows
Last updated: `2018-11-08 12:31:19`
## Environment
Windows 8.1 using this `Vagrantfile`:
```
Vagrant.configure("2") do |config|
config.vm.box = "inclusivedesign/windows81-eval-x64"
config.vm.provider "virtualbox" do |v|
v.gui = true
end
end
```
## Initial Steps
Bring up the VM and go through the process of updating Windows and VirtualBox
tools. You'll notice that the evaluation license is expired. Re-arm it by
running this command via an administrative prompt:
```
slmgr -rearm
```
This part of the process will take a while as Windows is updated. Go make some
coffee and check your email.
## Install Erlang and Elixir
Using Chocolatey is the easiest method to install the most recent version of
Erlang and Elixir. Install Chocolatey [using these
instructions](https://chocolatey.org/install#installing-chocolatey)
([link](https://chocolatey.org/install#installing-chocolatey)), then install
both Erlang and Elixir using this command from an *administrative* `cmd.exe` or
Powershell terminal:
```
choco install elixir which
```
To confirm installation, open a new command prompt and run the following:
```
erl -version
elixir -v
which erl
which elixir
```
## Install MSYS2 and NSIS
Chocolatey is also an easy way to install `msys2` and the NSIS install script
builder. Run the following from an *administrative* command prompt:
```
choco install msys2 nsis
```
As a bonus, it will update your `msys2` installation for you during the initial
install process.
## Install MSYS2 packages
Start up an `msys2` shell by running the following command (does not have to be
admin):
```
C:\tools\msys64\msys2_shell.cmd
```
In that shell, install all of these dependencies. If you are prompted for
input, just hit ENTER to choose the default:
```
pacman -S --needed git make tar rsync python zip unzip dos2unix man
```
## Build RabbitMQ
### Clone this repository
From within your MSYS2 shell:
```
git clone https://github.com/rabbitmq/rabbitmq-server-release.git
```
### Set `PATH`
```
export PATH="$PATH:/c/ProgramData/Chocolatey/bin:/c/ProgramData/Chocolatey/lib/Elixir/bin:/c/Program Files (x86)/NSIS/bin"
```
### Fetch and build deps
*Note:* as of this writing, RabbitMQ `3.7.8` is the latest version. Be sure to check out the tag appropriate for your use:
```
cd rabbitmq-server-release
# the following checks out the "next to be released" branch
# this branch and version 3.7.9 have a necessary fix for building
# on windows, see this: https://github.com/rabbitmq/rabbitmq-server-release/pull/89
git checkout v3.7.x
make deps
```
### Build Windows package
```
make UNIX_TO_DOS=unix2dos package-windows
```

View File

@ -204,15 +204,18 @@ flavors, accepts the `RPM_OS` variable to set the flavor. It can be:
### Windows package ### Windows package
We create two artefacts: We create two artefacts:
* a Zip archive, resembling the `generic-unix` package; * a Zip archive, resembling the `generic-unix` package;
* an installer. * an installer.
To create them: To create them:
``` ```
make package-windows make package-windows
``` ```
To create them separately: To create them separately:
``` ```
make -C packaging/windows # the Zip archive make -C packaging/windows # the Zip archive
make -C packaging/windows-exe # the installer make -C packaging/windows-exe # the installer
@ -228,6 +231,7 @@ one requires the Zip archive as its input, not the source archive.
So you need to built the Zip archive first, then the installer. You can So you need to built the Zip archive first, then the installer. You can
specify the path to the Zip archive using the `ZIP` variable: specify the path to the Zip archive using the `ZIP` variable:
``` ```
make -C packaging/windows-exe ZIP=/path/to/rabbitmq-server-windows.zip make -C packaging/windows-exe ZIP=/path/to/rabbitmq-server-windows.zip
``` ```
@ -237,10 +241,14 @@ everything following the third integer was replaced by `.0`. Thus it's
only fine if the version is a semver-based version (eg. 3.8.1-pre.3 or only fine if the version is a semver-based version (eg. 3.8.1-pre.3 or
3.8.2). If the version doesn't conform to that, you need to set the 3.8.2). If the version doesn't conform to that, you need to set the
`PRODUCT_VERSION` variable: `PRODUCT_VERSION` variable:
``` ```
make package-windows PROJECT_VERSION=3.8.1-rc.1 PRODUCT_VERSION=3.8.1.0 make package-windows PROJECT_VERSION=3.8.1-rc.1 PRODUCT_VERSION=3.8.1.0
``` ```
To build the Windows package using a Windows machine, follow the
instructions in [`PKG_WINDOWS.md`](PKG_WINDOWS.md).
### Standalone package ### Standalone package
This is the equivalent of the `generic-unix` package with Erlang This is the equivalent of the `generic-unix` package with Erlang