Phoenicis Winebuild is a python library and a command line tool that compiles winehq automatically. It is the designated successor of PlayOnLinux Winebuild service.
We also provide pre-built binaries for Linux and macOS: https://www.playonlinux.com/wine/binaries/phoenicis/
Phoenicis Winebuild can:
- run on any OS (Linux and Mac OS)
- build wine for any target OS (see prerequisites).
-
Python 3
-
Docker
-
docker-py
pip install docker
Ensure that your current user belongs to the docker group. You might need to restart your session
- Install Docker
- Install homebrew
- brew install Python3
- pip3 install docker
You need to extract Mac OS 10.11 SDK from XCode 9, compress it into a .tar.xz file and place it to darwin/SDK directory
After setup, run examples/interactive_builder.py PYTHONPATH="$PWD" python examples/interactive_builder.py
After setup, run examples/interactive_builder.py PYTHONPATH="$PWD" python3 examples/interactive_builder.py
An Environment is a pre-installed operating system where wine can be built. It corresponds to a docker image. We support currently two environment:
- linux-x86-wine is a x86 environment containing all tools required to build wine for Linux
- darwin-x86-wine is a x86 environment containing all tools required to cross-compile wine for MacOS
A container is the instanciation of an environment. It corresponds to a docker container. Thanks to containers, you can run multiple compilation inside a given environment at the same time
A Builder is the components that builds wine. A builder needs a container to operate. We currently support one kind of builder :
- WineBuilder downloads the source of wine into /root/wine-git and runs a script
A script can be run inside a context initiated by a builder. We have two scripts:
- builder_darwin_x86_wine
- builder_linux_x86_wine
After setup, run run_web_server.py
-
Go to the endpoint /environments (http://localhost:5000/environments)
-
Grab the docker name of a supported environment (exemple: phoenicis/winebuild/linux-x86:wine)
-
Create an environement creation task
curl -d '{"type": "EnvironmentCreationTask", "argument": "phoenicis/winebuild/linux-x86:wine"}' -H "Content-Type: application/json" -X POST http://localhost:5000/tasks
-
Go to the endpoint /tasks to track the task creation process: http://127.0.0.1:5000/tasks. You should get a response like this one:
[{ BuilderStageReaderTest.py"argument": { "docker_name": "phoenicis/winebuild/linux-x86:wine_osxcross" }, "description": "Environment creation: phoenicis/winebuild/linux-x86:wine_osxcross", "end_date": null, "id": "698ed9bd-f0af-4ed4-9063-d058fb7ec391", "last_update_date": "Sun, 21 Oct 2018 14:22:51 GMT", "progress": 94, "running": true, "start_date": "Sun, 21 Oct 2018 14:18:39 GMT", "type": "EnvironmentCreationTask" }]
Make a POST request to the /tasks endpoint:
curl -d '{"type": "PhoenicisWinePackageCreationTask", "argument": {"os": "darwin", "distribution": "upstream", "arch": "x86", "version": "wine-3.0.3"}}' -H "Content-Type: application/json" -X POST http://localhost:5000/tasks
You have two example python files (example_linux.py and example_darwin.py). If you need to tweak your build (select the version, use custom script, ...) you'll probably need to use the python API (See Key Concepts)
#!/usr/bin/env python
from packagers.PhoenicisWinePackageCreator import PhoenicisWinePackageCreator
builder = PhoenicisWinePackageCreator()
## Builds wine 4.0 x86 for darwin aka macOS
builder.build("upstream", "wine-4.0", "darwin", "x86")
Try to export this environement variable:
export FREETYPE_PROPERTIES="truetype:interpreter-version=35"