Build the calibre installers, including all dependencies from scratch
=======================================================================

This folder contains code to automate the process of building calibre,
including all its dependencies, from scratch, for all platforms that calibre
supports.

In general, builds proceed in two steps: first build all the dependencies, then
build the calibre installer itself.

Requirements
---------------

Building *must* run on a Linux computer.

First create some empty top level directory and run the following commands::

    git clone https://github.com/kovidgoyal/bypy.git
    git clone https://github.com/kovidgoyal/calibre.git
    cd calibre

Now we need to bootstrap calibre, for which all its Linux build dependencies
must have already been installed (see the `Dependencies
<https://calibre-ebook.com/download_linux>`_ section of the Linux installation
page for details). Once the dependencies are installed, run::

    ./setup.py bootstrap

All building is done inside QEMU VMs. Linux VMs are auto-created as needed,
Windows and macOS VMs must be created manually. Instructions on
creating the VMs are in the bypy repo under :file:`virtual_machine/README.rst`.
Required software for the VMs is listed in :file:`bypy/windows.conf` and
:file:`bypy/macos.conf`.

Linux
-------

To build the Intel and ARM dependencies for calibre, run::

    ./setup.py build_dep linux
    ./setup.py build_dep linux-arm64

The output (after a very long time) will be in :literal:`bypy/b/linux/[32|64]`

Now you can build the calibre Linux tarballs with::

    ./setup.py linux

The output will be in :file:`dist`


macOS
--------------

Name the QEMU VM using ``vm_name`` from :literal:`bypy/macos.conf`.
Make sure all software mentioned in :file:`bypy/macos.conf` is installed.
To build the dependencies for calibre, run::

    ./setup.py build_dep macos

The output (after a very long time) will be in :literal:`bypy/b/macos`.
Now you can build the calibre ``.dmg`` with::

    ./setup.py osx --dont-sign --dont-notarize

The output will be in :file:`dist`


Windows
-------------

Name the QEMU VM using ``vm_name`` from :file:`bypy/windows.conf`.
Make sure all software mentioned in :file:`bypy/windows.conf` is installed.

To build the dependencies for calibre, run::

    ./setup.py build_dep windows

The output (after a very long time) will be in :literal:`bypy/b/windows/64`.
Now you can build the calibre Windows installers with::

    ./setup.py win64 --dont-sign

The output will be in :file:`dist`
