Merge pull request #90 from rabbitmq/rabbitmq-server-release-37

Add documentation for packaging dependencies
This commit is contained in:
Michael Klishin 2018-11-09 02:31:55 +03:00 committed by GitHub
commit 48f2f982ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 193 additions and 0 deletions

60
PKG_LINUX.md Normal file
View File

@ -0,0 +1,60 @@
# Build RabbitMQ Packages using Linux
## Environment
Debian Jesse using this `Vagrantfile`:
```
$script = <<SCRIPT
export LANG='C.UTF-8'
export DEBIAN_FRONTEND=noninteractive
echo 'deb http://httpredir.debian.org/debian jessie-backports main' >> /etc/apt/sources.list.d/backports.list
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
dpkg -i erlang-solutions_1.0_all.deb
apt-get clean
apt-get update
apt-get install -y --fix-missing --no-install-recommends \
build-essential \
ca-certificates \
debhelper \
dh-systemd \
elinks \
esl-erlang \
elixir \
fakeroot \
git \
libfile-fcntllock-perl \
mandoc \
nsis \
python-lxml \
python-markdown \
python-simplejson \
rpm \
rsync \
tofrodos \
unzip \
xmlto \
xsltproc \
zip \
curl
date > /etc/vagrant_provisioned_at
SCRIPT
Vagrant.configure('2') do |config|
config.vm.box = "debian/jessie64"
config.vm.hostname = 'DEBIAN-JESSIE64'
config.vm.provision 'shell', inline: $script
end
```
## Instructions
Bring up a Debian Jesse instance using Vagrant, or, use the provisioning script
on a Debian Jesse server of your own. When it is done running, all necessary
package build requirements for either `apt`-based or `rpm`-based distros will
be present. See the [`README.md`](README.md#tldr) document for instructions on
building packages.

121
PKG_WINDOWS.md Normal file
View File

@ -0,0 +1,121 @@
# Build RabbitMQ Windows Package using Windows
## 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
```
Note that these steps should work on more recent versions of Windows as well.
If you have issues using a newer version of Windows, please provide full
details in a message to the
[`rabbitmq-users`](https://groups.google.com/forum/#!forum/rabbitmq-users)
mailing list.
## Initial Steps
Bring up the VM and go through the process of updating Windows and (optionall)
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

@ -38,6 +38,10 @@ make package-standalone-macosx
make -C packaging package-standalone-macosx SOURCE_DIST_FILE=/path/to/rabbitmq-server-3.8.1-rc.1.tar.xz
```
The instructions in the [`PKG_LINUX.md`](PKG_LINUX.md) document include a
script to install the necessary pre-requisites for building package archives as
well as `deb` and `rpm` packages.
## Source archive
### How to create it
@ -204,15 +208,18 @@ flavors, accepts the `RPM_OS` variable to set the flavor. It can be:
### Windows package
We create two artefacts:
* a Zip archive, resembling the `generic-unix` package;
* an installer.
To create them:
```
make package-windows
```
To create them separately:
```
make -C packaging/windows # the Zip archive
make -C packaging/windows-exe # the installer
@ -228,6 +235,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
specify the path to the Zip archive using the `ZIP` variable:
```
make -C packaging/windows-exe ZIP=/path/to/rabbitmq-server-windows.zip
```
@ -237,10 +245,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
3.8.2). If the version doesn't conform to that, you need to set the
`PRODUCT_VERSION` variable:
```
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
This is the equivalent of the `generic-unix` package with Erlang