Skip to content

andyoungy1/phoenicis-winebuild

 
 

Repository files navigation

phoenicis-winebuild

Codacy Badge

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).

Prerequisites

  • Python 3
  • Docker
  • docker-py
    pip install docker

Linux user

Ensure that your current user belongs to the docker group. You might need to restart your session

macOS user

  • Install Docker
  • Install homebrew
  • brew install Python3
  • pip3 install docker

OSX targeted builds

You need to extract Mac OS 10.13 SDK from XCode 9.4.1, compress it into a .tar.xz file and place it to darwin/SDK directory

How to use

Basic Usage Linux

After setup, run examples/interactive_builder.py

PYTHONPATH="$PWD" python examples/interactive_builder.py  

Basic Usage macOS

After setup, run examples/interactive_builder.py

   PYTHONPATH="$PWD" python3 examples/interactive_builder.py  

Key concepts

Environment

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

Container

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

Builders

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

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

Web Services

After setup, run run_web_server.py

Create an environment

  • Go to the endpoint /environments (http://localhost:5000/environments)
  • Grab the docker name of a supported environment (example: phoenicis/winebuild/linux-x86:wine)
  • Create an environment creation task
     curl -d '{"type": "EnvironmentCreationTask", "argument": "phoenicis/winebuild/linux-x86:wine"}' -H "Content-Type: application/json" -X POST http://localhost:5000/tasks
    [{
      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"
    }]

Create a wine build task

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

Advanced scripting

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)

Examples

    #!/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")

Troubleshooting

The fonts are ugly on macOS

Try to export this environment variable:

    export FREETYPE_PROPERTIES="truetype:interpreter-version=35"

About

Docker based Wine building tool for Linux and macOS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 51.1%
  • Python 37.0%
  • C 11.9%