Commit 95e000ca authored by Jonathan Wilkes's avatar Jonathan Wilkes
Browse files

Merge branch 'master' into add-soundfiler-outlet-squashed

parents 21f7993d 3f242c54
# This file creates automated tests on GitLab CI for Purr Data.
# See https://docs.gitlab.com/ee/ci/yaml/README.html for details of the format.
# These are script snippets used in the jobs defined below.
.debian_image_preparation: &debian_image_preparation
- echo "" | sudo -S apt-get -qq purge -y pd-l2ork > /dev/null || echo "couldn't purge..."
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -qq -y update > /dev/null
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -qq -y upgrade > /dev/null
.build_all: &build_all
- echo -e "section_start:`date +%s`:build_all\r\e[0KBuilding Purr Data"
- cd l2ork_addons
- export V=0
- ./tar_em_up.sh $BUILD_TYPE_FLAG
- cd ..
- echo -e "section_end:`date +%s`:build_all\r\e[0K"
.test_linux: &test_linux
- echo -e "section_start:`date +%s`:test_linux\r\e[0KTesting Purr Data for Linux"
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- valgrind pd-l2ork -noprefs -nogui -nrt -noaudio -send "init dollarzero \$0" scripts/regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio scripts/external-tests.pd
- echo -e "section_end:`date +%s`:text_linux\r\e[0K"
.test_osx: &test_osx
- echo -e "section_start:`date +%s`:test_osx\r\e[0KTesting Purr Data for Mac OSX"
- cd scripts
- ../packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork -noprefs -nogui -noaudio -send "init dollarzero \$0" regression_tests.pd
- ../packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork -noprefs -nostdpath -nogui -noaudio external-tests.pd
- echo -e "section_end:`date +%s`:text_osx\r\e[0K"
.test_windows: &test_windows
- echo -e "section_start:`date +%s`:test_windows\r\e[0KTesting Purr Data for Windows"
- cd scripts
- ../packages/win32_inno/build/bin/pd.com -noprefs -nogui -noaudio -send "init dollarzero \$0" regression_tests.pd
- ../packages/win32_inno/build/bin/pd.com -noprefs -nostdpath -nogui -noaudio external-tests.pd
- echo -e "section_end:`date +%s`:text_windows\r\e[0K"
debian_stretch_x86_64_deb: debian_stretch_x86_64_deb:
tags: tags:
- debian - debian
- stretch - stretch
- x86_64 - x86_64
variables:
BUILD_TYPE_FLAG: -B
before_script:
- *debian_image_preparation
script: script:
- echo "" | sudo -S apt-get -qq purge -y pd-l2ork > /dev/null || echo "couldn't purge..." - *build_all
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -qq -y update > /dev/null - *test_linux
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -qq -y upgrade > /dev/null
- cd l2ork_addons
- ./tar_em_up.sh -B
- cd ..
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- valgrind pd-l2ork -noprefs -nogui -nrt -noaudio -send "init dollarzero \$0" scripts/regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio scripts/external-tests.pd
artifacts: artifacts:
name: "$CI_RUNNER_DESCRIPTION" name: "$CI_RUNNER_DESCRIPTION"
expire_in: 1 day expire_in: 1 day
...@@ -24,17 +60,13 @@ ubuntu_16.04_x86_64_deb: ...@@ -24,17 +60,13 @@ ubuntu_16.04_x86_64_deb:
- ubuntu - ubuntu
- v16.04 - v16.04
- x86_64 - x86_64
variables:
BUILD_TYPE_FLAG: -B
before_script:
- *debian_image_preparation
script: script:
- echo "" | sudo -S apt-get -qq purge -y pd-l2ork > /dev/null || echo "couldn't purge..." - *build_all
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -qq -y update > /dev/null - *test_linux
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -qq -y upgrade > /dev/null
- cd l2ork_addons
- ./tar_em_up.sh -B
- cd ..
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- cd scripts
- valgrind pd-l2ork -noprefs -nogui -nrt -noaudio -send "init dollarzero \$0" regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio external-tests.pd
artifacts: artifacts:
name: "$CI_RUNNER_DESCRIPTION" name: "$CI_RUNNER_DESCRIPTION"
expire_in: 1 day expire_in: 1 day
...@@ -46,13 +78,12 @@ osx_10.11_x86_64_dmg: ...@@ -46,13 +78,12 @@ osx_10.11_x86_64_dmg:
- osx - osx
- v10.11 - v10.11
- dmg - dmg
variables:
BUILD_TYPE_FLAG: -X
script: script:
- echo `pwd` - echo `pwd`
- cd l2ork_addons - *build_all
- ./tar_em_up.sh -X - *test_osx
- cd ../scripts
- ../packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork -noprefs -nogui -noaudio -send "init dollarzero \$0" regression_tests.pd
- ../packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork -noprefs -nostdpath -nogui -noaudio external-tests.pd
artifacts: artifacts:
name: "$CI_RUNNER_DESCRIPTION" name: "$CI_RUNNER_DESCRIPTION"
expire_in: 1 day expire_in: 1 day
...@@ -64,13 +95,13 @@ osx_10.8_x86_64_dmg: ...@@ -64,13 +95,13 @@ osx_10.8_x86_64_dmg:
- osx - osx
- v10.8 - v10.8
- dmg - dmg
variables:
BUILD_TYPE_FLAG: -X
osx_version: "10.8"
script: script:
- echo `pwd` - echo `pwd`
- cd l2ork_addons - *build_all
- osx_version=10.8 ./tar_em_up.sh -X - *test_osx
- cd ../scripts
- ../packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork -noprefs -nogui -noaudio -send "init dollarzero \$0" regression_tests.pd
- ../packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork -noprefs -nostdpath -nogui -noaudio external-tests.pd
artifacts: artifacts:
name: "$CI_RUNNER_DESCRIPTION" name: "$CI_RUNNER_DESCRIPTION"
expire_in: 1 day expire_in: 1 day
...@@ -81,13 +112,12 @@ windows_i386_innosetup: ...@@ -81,13 +112,12 @@ windows_i386_innosetup:
tags: tags:
- windows - windows
- i386 - i386
variables:
BUILD_TYPE_FLAG: -Z
script: script:
- echo `pwd` - echo `pwd`
- cd l2ork_addons - *build_all
- ./tar_em_up.sh -Z - *test_windows
- cd ../scripts
- ../packages/win32_inno/build/bin/pd.com -noprefs -nogui -noaudio -send "init dollarzero \$0" regression_tests.pd
- ../packages/win32_inno/build/bin/pd.com -noprefs -nostdpath -nogui -noaudio external-tests.pd
artifacts: artifacts:
name: "$CI_RUNNER_DESCRIPTION" name: "$CI_RUNNER_DESCRIPTION"
expire_in: 1 day expire_in: 1 day
...@@ -99,17 +129,14 @@ raspbian_stretch_armv7l_deb: ...@@ -99,17 +129,14 @@ raspbian_stretch_armv7l_deb:
- raspbian - raspbian
- arm - arm
- stretch - stretch
variables:
BUILD_TYPE_FLAG: -r
before_script:
- *debian_image_preparation
script: script:
- echo "" | sudo -S apt-get -qq purge -y pd-l2ork > /dev/null || echo "couldn't purge..."
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -qq -y update > /dev/null
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -qq -y upgrade > /dev/null
- echo `pwd` - echo `pwd`
- cd l2ork_addons - *build_all
- ./tar_em_up.sh -r - *test_linux
- cd ..
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- valgrind pd-l2ork -noprefs -nogui -nrt -noaudio -send "init dollarzero \$0" scripts/regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio scripts/external-tests.pd
artifacts: artifacts:
name: "$CI_RUNNER_DESCRIPTION" name: "$CI_RUNNER_DESCRIPTION"
expire_in: 1 day expire_in: 1 day
......
...@@ -85,8 +85,8 @@ export macos_target = 10.9 ...@@ -85,8 +85,8 @@ export macos_target = 10.9
# Installation prefix under which Pd-l2ork is installed (Linux only). If this # Installation prefix under which Pd-l2ork is installed (Linux only). If this
# isn't set, a default location will be used (usually /usr/local). NOTE: We # isn't set, a default location will be used (usually /usr/local). NOTE: We
# *always* assume that this variable is set properly in the install targets # *always* assume that this variable is set properly in the install targets,
# (see below). # as well as the (Linux) check target (see below).
prefix = /usr prefix = /usr
ifneq ($(prefix),) ifneq ($(prefix),)
...@@ -157,6 +157,40 @@ realclean: ...@@ -157,6 +157,40 @@ realclean:
git checkout . git checkout .
git clean -dffx -e pd/nw/nw/ git clean -dffx -e pd/nw/nw/
# Check targets. These run the regression tests in scripts.
# Requires a full build.
os = $(shell uname|sed 's/^\(MINGW[0-9]*\)_NT.*/\1/')
ifeq ($(os),Linux)
# Linux (all flavors)
pdprog = packages/linux_make/build$(prefix)/bin/pd-l2ork
else ifeq ($(os),Darwin)
# Mac
pdprog = packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork
else ifeq ($(os),MINGW64)
# Msys2 mingw64
pdprog = packages/win64_inno/build/bin/pd.exe
else ifeq ($(os),MINGW32)
# Msys2 mingw32
pdprog = packages/win32_inno/build/bin/pd.exe
endif
ifneq ($(pdprog),)
# This runs just a quick regression test, useful to see whether the program
# works at all.
check1:
$(pdprog) -noprefs -nogui -noaudio -send 'init dollarzero $$0' scripts/regression_tests.pd
# This runs the full test suite, including the test of the externals.
check:
$(pdprog) -noprefs -nogui -noaudio -send 'init dollarzero $$0' scripts/regression_tests.pd
$(pdprog) -noprefs -nostdpath -nogui -noaudio scripts/external-tests.pd
else
check1 check:
@echo "Target $(os) not recognized, can't run 'make $@'!"; false
endif
# Installation targets. These don't work on Mac and Windows right now, you # Installation targets. These don't work on Mac and Windows right now, you
# should use the generated installers on these systems instead. Also, # should use the generated installers on these systems instead. Also,
# $(prefix) must be set. $(DESTDIR) is supported as well, so you can do staged # $(prefix) must be set. $(DESTDIR) is supported as well, so you can do staged
......
...@@ -19,6 +19,7 @@ maintainers: ...@@ -19,6 +19,7 @@ maintainers:
* [OSX](#osx-64-bit-using-homebrew) * [OSX](#osx-64-bit-using-homebrew)
* [Windows](#windows-32-bit-using-msys2) * [Windows](#windows-32-bit-using-msys2)
* [Code of Conduct](#code-of-conduct) * [Code of Conduct](#code-of-conduct)
* [Project Governance](#project-governance)
* [Contributor Guide](#contributor-guide) * [Contributor Guide](#contributor-guide)
* [Human Interface Guidelines](#human-interface-guidelines) * [Human Interface Guidelines](#human-interface-guidelines)
* [Core Pd Notes](#core-pd-notes) * [Core Pd Notes](#core-pd-notes)
...@@ -63,16 +64,22 @@ Pd-L2ork has the following goals: ...@@ -63,16 +64,22 @@ Pd-L2ork has the following goals:
documentation. We like documentation, so it follows that we like consistent documentation. We like documentation, so it follows that we like consistent
interfaces. interfaces.
### User Guide ### User Guide and Weblinks
For a more in-depth look at Purr Data for new users and developers, see: For a more in-depth look at Purr Data for new users and developers, see:
[https://agraef.github.io/purr-data-intro/Purr-Data-Intro.html](https://agraef.github.io/purr-data-intro/Purr-Data-Intro.html) <https://agraef.github.io/purr-data-intro/Purr-Data-Intro.html>
For more resources see: For more resources see:
[https://agraef.github.io/purr-data/](https://agraef.github.io/purr-data/) <https://agraef.github.io/purr-data/>
For Ico Bukvic's original Pd-l2ork website see:
<http://l2ork.music.vt.edu/main/make-your-own-l2ork/software/>
(Note that the latter link is more about "classic" Pd-L2Ork a.k.a. Pd-L2Ork 1.0, see below. But it also contains some information about Purr Data.)
### Relationship of Purr Data to Pure Data ### Relationship of Purr Data to Pure Data
There are three maintained distributions of Pure Data: There are three maintained distributions of Pure Data:
...@@ -81,7 +88,7 @@ There are three maintained distributions of Pure Data: ...@@ -81,7 +88,7 @@ There are three maintained distributions of Pure Data:
external libraries and uses a modern GUI written using HTML5. external libraries and uses a modern GUI written using HTML5.
2. Pd-L2Ork 1.0, the version used by Ivica Bukvic for his laptop orchestra. 2. Pd-L2Ork 1.0, the version used by Ivica Bukvic for his laptop orchestra.
Pd-l2ork 1.0 uses tcl/tk (and tkpath) for the GUI. You can find it Pd-l2ork 1.0 uses tcl/tk (and tkpath) for the GUI. You can find it
[here](http://l2ork.music.vt.edu/main/make-your-own-l2ork/software/) [here](http://l2ork.music.vt.edu/main/make-your-own-l2ork/software/).
3. Pure Data "Vanilla". Miller Puckette's personal version which he hosts on 3. Pure Data "Vanilla". Miller Puckette's personal version which he hosts on
his website and maintains. It doesn't come with external libraries his website and maintains. It doesn't come with external libraries
pre-installed, but it does include an interface you can use to search pre-installed, but it does include an interface you can use to search
...@@ -89,156 +96,36 @@ There are three maintained distributions of Pure Data: ...@@ -89,156 +96,36 @@ There are three maintained distributions of Pure Data:
### Downloads ### Downloads
Packages for Windows and OSX: **Windows and OSX:**
[https://github.com/jonwwilkes/purr-data/releases](https://github.com/jonwwilkes/purr-data/releases)
Gnu/Linux installation instructions:
* [Arch](#arch)
* [Debian 9, 10, and testing](#debian)
* [Raspbian 9, and 10](#raspbian)
* [Ubuntu 16.04, 18.04, 19.04, and 19.10](#ubuntu)
* [openSUSE](#opensuse)
### Installation Guide
#### Arch
All of this needs to be done as root, using either `sudo` or `su`.
The following goes into /etc/pacman.conf:
~~~
[home_aggraef_Arch]
SigLevel = Never
Server = https://download.opensuse.org/repositories/home:aggraef/Arch/$arch
~~~
Then just run:
~~~
pacman -Sy
pacman -S purr-data
~~~
#### Debian
All of this needs to be done as root, using either `sudo` or `su`. Use "Debian_9.0" instead if you're running Debian Stretch rather than Buster; likewise if you're running Unstable or Testing.
You should import the repository key first, so that the packages can be updated automatically (this only needs to be done once):
~~~
wget -nv https://download.opensuse.org/repositories/home:aggraef/Debian_10/Release.key
apt-key add Release.key
~~~
Then add the repository to your apt sources as follows (taking Debian 10 as an example):
~~~
echo 'deb http://download.opensuse.org/repositories/home:/aggraef/Debian_10/ /' > /etc/apt/sources.list.d/home:aggraef.list
apt update
~~~
**NOTE:** This creates the source in a separate file /etc/apt/sources.list.d/home:aggraef.list. You can just remove this file when you don't need the repository any more.
Finally install the package:
~~~
apt install purr-data
~~~
#### Raspbian
All of this needs to be done as root, using either `sudo` or `su`. Use "Raspbian_9.0" instead if you're running Raspbian Stretch rather than Buster.
~~~ Releases are done on GitHub:
sudo su
~~~
You should import the repository key first, so that the packages can be updated automatically (this only needs to be done once): <https://github.com/jonwwilkes/purr-data/releases>
~~~ This is where the packages first come out as soon as Jonathan Wilkes releases them. The same packages can also be dowloaded (usually shortly after release) on Albert Gräf's mirror, which also provides a website, wiki, additional documentation, and an up-to-date mirror of the source code repository:
wget -nv https://download.opensuse.org/repositories/home:aggraef/Raspbian_10/Release.key
apt-key add Release.key
~~~
Then add the repository to your apt sources as follows: <https://github.com/agraef/purr-data/releases>
~~~ **Linux:**
echo 'deb http://download.opensuse.org/repositories/home:/aggraef/Raspbian_10/ /' > /etc/apt/sources.list.d/home:aggraef.list
apt update
~~~
Finally install the package: Packages for various Linux distributions (including Arch, Debian, Ubuntu, and openSUSE) are available through the JGU package repositories maintained by Albert Gräf on the OBS (Open Build System). Detailed instructions can be found [here](https://github.com/agraef/purr-data/wiki/Installation#linux).
~~~ You can also just go to the [OBS Download](https://software.opensuse.org/download/package?package=purr-data&project=home%3Aaggraef), pick your Linux system, and follow the instructions.
apt install purr-data
~~~
#### Ubuntu
All of this needs to be done as root, using either `sudo` or `su`. Replace "18.04" with the version of Ubuntu you use.
~~~
sudo su
~~~
You should import the repository key first, so that the packages can be updated automatically (this only needs to be done once):
~~~
wget -nv https://download.opensuse.org/repositories/home:aggraef/xUbuntu_18.04/Release.key
apt-key add Release.key
~~~
Then add the repository to your apt sources as follows:
~~~
echo 'deb http://download.opensuse.org/repositories/home:/aggraef/xUbuntu_18.04/ /' > /etc/apt/sources.list.d/home:aggraef.list
apt update
~~~
Finally install the package:
~~~
apt install purr-data
~~~
#### openSUSE
**NOTE:** The openSUSE builds are somewhat experimental right now. In particular, the flite external is not supported, because the required dependencies are not available. Also note that some of the multimedia functionality (Gem video, in particular) will require proprietary media codecs and thus won't work in stock openSUSE. You will need to add third-party repositories like [Packman](https://en.opensuse.org/Additional_package_repositories#Packman) to make these work.
We take Tumbleweed as an example here, if you're running Leap then replace "Tumbleweed" with "Leap_15.1" or whatever version you use.
~~~
sudo su
zypper addrepo https://download.opensuse.org/repositories/home:aggraef/openSUSE_Tumbleweed/home:aggraef.repo
zypper refresh
zypper install purr-data
~~~
### Build Guide ### Build Guide
**NOTE:** The instructions for Windows and OSX below talk about running the `tar_em_up.sh` build Purr Data is usually built by just running `make` in the toplevel source directory after checking out the sources from its git repository. This works across all supported platforms (Linux, Mac and Windows at this time). The Makefile also offers the customary targets to clean (`make clean`, or `make realclean` to put the sources in pristine state again) and to roll a self-contained distribution tarball (`make dist`), as well as some other convenience targets (please check the comments at the beginning of the Makefile for more information).
script, which is still the recommended way to build Purr Data right now.
However, Purr Data also has a new (and experimental) toplevel Makefile so that However, to make this work, you will most likely have to install some prerequisites first: *build tools* such as a C/C++ compiler and the make program itself, as well as *dependencies*, the libraries that Purr Data needs. Detailed instructions for each of the supported platforms are given below.
just typing `make` will build the package. You may find this easier. The
Makefile also offers the customary targets to clean (`make clean`, or
`make realclean` to put the sources in pristine state again) and to roll a
self-contained distribution tarball (`make dist`). Please check the comments
at the beginning of the Makefile for more information.
#### Linux #### Linux
Time to build: *10 minutes light install, 45 minutes to 1.5 hours full install* Time to build: *10 minutes light install, 45 minutes to 1.5 hours full install*
Hard drive space required: *roughly 2.5 GB* Hard drive space required: *roughly 2.5 GB*
1. Install the dependencies 1. Install the dependencies (please note that the packages may be named
slightly differently for different Linux distributions; the given names are
for Debian/Ubuntu)
sudo apt-get install bison flex automake libasound2-dev \ sudo apt-get install bison flex automake libasound2-dev \
libjack-jackd2-dev libtool libbluetooth-dev libgl1-mesa-dev \ libjack-jackd2-dev libtool libbluetooth-dev libgl1-mesa-dev \
...@@ -261,26 +148,17 @@ Hard drive space required: *roughly 2.5 GB* ...@@ -261,26 +148,17 @@ Hard drive space required: *roughly 2.5 GB*
git clone https://git.purrdata.net/jwilkes/purr-data.git git clone https://git.purrdata.net/jwilkes/purr-data.git
4. Compile the code *(5 minutes to 1.5 hours)* full 4. Compile the code *(5 minutes [light] to 1.5 hours [full])*
* to build only the core: `make light` *(5 minutes)* * to build only the core: `make light` *(5 minutes)*
* to build core and all externals: `make all` *(20 minutes to 1.5 hours)* * to build the core and all externals: `make all` *(20 minutes to 1.5 hours)*
* to build everything *except* Gem: `make incremental` *(10 to 20 minutes)* * to build everything *except* Gem: `make incremental` *(10 to 20 minutes)*
5. There should now be an installer file in the main directory of the repo. 5. If you're using an apt-based Linux distribution and you have the necessary
If you're using an apt-based Linux distribution it will be an apt package. Debian packaging tools installed, there should now be an installer file in
Otherwise, it will be a tarball which you can unzip, enter, and run the main source directory, which can be installed as usual. Otherwise, run
`make install` (as well as `make uninstall` to remove it). `make install` to install the software, and `make uninstall` to remove it
again.
To install using a pre-compiled binary, follow these instructions:
http://l2ork.music.vt.edu/main/?page_id=56
To set up a development environment, first make sure you have the following
package dependencies listed here:
http://l2ork.music.vt.edu/main/?page_id=56
Then follow the steps outlined here:
http://l2ork.music.vt.edu/main/?page_id=56#install-dev
#### OSX 64-bit using Homebrew #### OSX 64-bit using Homebrew
...@@ -311,45 +189,42 @@ Hard drive space required: *roughly 2 GB* ...@@ -311,45 +189,42 @@ Hard drive space required: *roughly 2 GB*
git clone https://git.purrdata.net/jwilkes/purr-data.git git clone https://git.purrdata.net/jwilkes/purr-data.git
4. Change to the directory 4. Change to the source directory
cd purr-data/l2ork_addons
5. Run the installer *(15 minutes)*
./tar_em_up.sh -X cd purr-data
6. When the installer finishes, type 5. Build the OSX app and the installer disk image (.dmg file) *(15 minutes)*
cd .. make
7. There should now be a .dmg file in your current directory 6. There should now be a .dmg file in your current directory, which lets you install the app in the usual way
#### Windows 32-bit Using msys2 #### Windows 32-bit Using msys2
Time to build: *roughly 1.5 hours-- 30 minutes of this is for Gem alone* Time to build: *roughly 1.5 hours-- 30 minutes of this is for Gem alone*
Hard drive space required to build: *rougly 2.5 GB* Hard drive space required to build: *rougly 2.5 GB*
Important note: check the name of your Windows user account. If it has a space **Important note:** We recommend doing the build under your msys2 home
in it-- like "My Home Computer" or "2nd Laptop", then **stop**. You may not directory (usually /home/username in the msys2 shell). This directory should
use this guide. (Actually you can probably just install everything in ~/.. in not have any spaces in it, which would otherwise cause trouble during the
that case, but I haven't tested doing it like that. Sorry. Get a better OS...) build. Never try using your Windows home directory for this purpose instead,
since it will usually contain spaces, making the build fail.
1. Download and install [msys2](https://msys2.github.io/) *(5 minutes)* 1. Download and install [msys2](https://msys2.github.io/) *(5 minutes)*
There are two installers-- one for 32-bit Windows systems (i386) and one for There are two installers-- one for 32-bit Windows systems (i686) and one for
64-bit Windows (x_64). Be sure you know which 64-bit Windows (x86_64). Be sure you know which
[version](http://windows.microsoft.com/en-us/windows/32-bit-and-64-bit-windows#1TC=windows-7) [version](http://windows.microsoft.com/en-us/windows/32-bit-and-64-bit-windows)
of Windows you are running and download the appropriate installer. of Windows you are running and download the appropriate installer.
Note: don't run it after it installs. You'll open it manually in the next Note: don't run the shell after installation finishes. You'll do that
step. manually in step 3.
2. Download and install [inno setup](http://www.jrsoftware.org/isdl.php) *(5 minutes)* 2. Download and install the [inno setup Quickstart Pack](http://www.jrsoftware.org/isdl.php) which includes the Script Editor *(5 minutes)*
3. Run MinGW-w64 Win32 Shell *(less than a minute)* 3. Run the "MSYS2 MinGW 32-bit" shell *(less than a minute)*
msys2 adds three Start Menu items for different "flavors" of shell: msys2 adds three Start Menu items for different "flavors" of shell:
+ MinGW-w64 __Win32__ Shell <- click this one! + MSYS2 MinGW __32-bit__ <- click this one!
+ MinGW-w64 Win64 Shell + MSYS2 MinGW 64-bit
+ MSYS Shell + MSYS2 MSYS
4. Install the dependencies *(5-10 minutes)* 4. Install the dependencies *(5-10 minutes)*
Once the shell opens, we need to install the dependencies for building Once the shell opens, we need to install the dependencies for building
...@@ -367,11 +242,13 @@ that case, but I haven't tested doing it like that. Sorry. Get a better OS...) ...@@ -367,11 +242,13 @@ that case, but I haven't tested doing it like that. Sorry. Get a better OS...)
pacman -S autoconf automake git libtool \ pacman -S autoconf automake git libtool \
make mingw-w64-i686-dlfcn mingw-w64-i686-fftw \ make mingw-w64-i686-dlfcn mingw-w64-i686-fftw \
mingw-w64-i686-fluidsynth \ mingw-w64-i686-fluidsynth \
mingw-w64-i686-SDL2 \
mingw-w64-i686-ftgl mingw-w64-i686-fribidi \ mingw-w64-i686-ftgl mingw-w64-i686-fribidi \
mingw-w64-i686-ladspa-sdk mingw-w64-i686-lame \ mingw-w64-i686-ladspa-sdk mingw-w64-i686-lame \
mingw-w64-i686-libsndfile mingw-w64-i686-libvorbis \ mingw-w64-i686-libsndfile mingw-w64-i686-libvorbis \
mingw-w64-i686-lua mingw-w64-i686-toolchain \ mingw-w64-i686-lua mingw-w64-i686-toolchain \
mingw-w64-i686-libjpeg-turbo \ mingw-w64-i686-libjpeg-turbo \
mingw-w64-i686-speex \
rsync unzip wget rsync unzip wget
5. Download the source code *(3-6 minutes)* 5. Download the source code *(3-6 minutes)*
...@@ -380,16 +257,24 @@ that case, but I haven't tested doing it like that. Sorry. Get a better OS...) ...@@ -380,16 +257,24 @@ that case, but I haven't tested doing it like that. Sorry. Get a better OS...)