mirror of
https://github.com/QubesOS/qubes-doc.git
synced 2024-12-18 20:24:42 -05:00
127 lines
4.6 KiB
ReStructuredText
127 lines
4.6 KiB
ReStructuredText
|
=====================
|
|||
|
Qubes builder details
|
|||
|
=====================
|
|||
|
|
|||
|
|
|||
|
.. warning::
|
|||
|
Note: This information concerns the old Qubes builder (v1). It
|
|||
|
supports only building Qubes 4.1 or earlier.The build process has
|
|||
|
been completely rewritten in qubes-builder v2. This can be used for
|
|||
|
building Qubes R4.1 and later, and all related components.
|
|||
|
|
|||
|
|
|||
|
Components Makefile.builder file
|
|||
|
--------------------------------
|
|||
|
|
|||
|
|
|||
|
:doc:`QubesBuilder </developer/building/qubes-builder>` expects that each component have
|
|||
|
*Makefile.builder* file in its root directory. This file specifies what
|
|||
|
should be done to build the package. As name suggests, this is normal
|
|||
|
makefile, which is included by builder as its configuration. Its main
|
|||
|
purpose is to set some variables. Generally all available
|
|||
|
variables/settings are described as comments at the beginning of
|
|||
|
Makefile.* in :doc:`QubesBuilder </developer/building/qubes-builder>`.
|
|||
|
|
|||
|
Variables for Linux build:
|
|||
|
|
|||
|
- ``RPM_SPEC_FILES`` List (space separated) of spec files for RPM
|
|||
|
package build. Path should be relative to component root directory.
|
|||
|
:doc:`QubesBuilder </developer/building/qubes-builder>` will install all BuildRequires
|
|||
|
(in chroot environment) before the build. In most Qubes components
|
|||
|
all spec files are kept in *rpm_spec* directory. This is mainly used
|
|||
|
for Fedora packages build.
|
|||
|
|
|||
|
- ``ARCH_BUILD_DIRS`` List (space separated) of directories with
|
|||
|
PKGBUILD files for Archlinux package build. Similar to RPM build,
|
|||
|
:doc:`QubesBuilder </developer/building/qubes-builder>` will install all makedepends,
|
|||
|
then build the package.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Most components uses *archlinux* directory for this purpose, so its good
|
|||
|
to keep this style.
|
|||
|
|
|||
|
Variables for Windows build:
|
|||
|
|
|||
|
- ``WIN_COMPILER`` Choose which compiler should be used for this
|
|||
|
component, thus which build scripts. Currently two options available:
|
|||
|
|
|||
|
- ``WDK`` - Windows Driver Kit (default). Command used to build:
|
|||
|
*build -cZg*.
|
|||
|
|
|||
|
- ``mingw`` - MinGW (Windows gcc port). Command used to build: *make all*
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- ``WIN_SOURCE_SUBDIRS`` List of directories in which above command
|
|||
|
should be run. In most cases it will be only one entry: current
|
|||
|
directory (*.*).
|
|||
|
|
|||
|
- ``WIN_PREBUILD_CMD`` Command to run before build, mostly useful for
|
|||
|
WDK build (in mingw case, you can use makefile for this purpose). Can
|
|||
|
be used to set some variables, preprocess some files etc.
|
|||
|
|
|||
|
- ``WIN_SIGN_CMD`` Command used to sign resulting binaries. Note that
|
|||
|
default value is *sign.bat*. If you don’t want to sign binaries,
|
|||
|
specify some placeholder here (eg. *true*). Check existing components
|
|||
|
(eg. vmm-xen-windows-pvdrivers) for example scripts. This command
|
|||
|
will be run with certain environment variables:
|
|||
|
|
|||
|
- ``CERT_FILENAME`` Path to key file (pfx format)
|
|||
|
|
|||
|
- ``CERT_PASSWORD`` Key password
|
|||
|
|
|||
|
- ``CERT_PUBLIC_FILENAME`` Certificate path in the case of
|
|||
|
self-signed cert
|
|||
|
|
|||
|
- ``CERT_CROSS_CERT_FILENAME`` Certificate path in the case of
|
|||
|
correct autheticode cert
|
|||
|
|
|||
|
- ``SIGNTOOL`` Path to signtool
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- ``WIN_PACKAGE_CMD`` Command used to produce installation package (msi
|
|||
|
or msm). Default value is *wix.bat*, similar to above - use *true* if
|
|||
|
you don’t want this command.
|
|||
|
|
|||
|
- ``WIN_OUTPUT_HEADERS`` Directory (relative to ``WIN_SOURCE_SUBDIRS``
|
|||
|
element) with public headers of the package - for use in other
|
|||
|
components.
|
|||
|
|
|||
|
- ``WIN_OUTPUT_LIBS`` Directory (relative to ``WIN_SOURCE_SUBDIRS``
|
|||
|
element) with libraries (both DLL and implib) of the package - for
|
|||
|
use in other components. Note that
|
|||
|
:doc:`QubesBuilder </developer/building/qubes-builder>` will copy files specified as
|
|||
|
*$(WIN_OUTPUT_LIBS)/*/** to match WDK directory layout (*<specified directory>/<arch directory>/<actual libraries>*), so you in mingw
|
|||
|
build you need to place libraries in some additional subdirectory.
|
|||
|
|
|||
|
- ``WIN_BUILD_DEPS`` List of components required to build this one.
|
|||
|
:doc:`QubesBuilder </developer/building/qubes-builder>` will copy files specified with
|
|||
|
``WIN_OUTPUT_HEADERS`` and ``WIN_OUTPUT_LIBS`` of those components to
|
|||
|
some directory and provide its path with ``QUBES_INCLUDES`` and
|
|||
|
``QUBES_LIBS`` variables. Use those variables in your build scripts
|
|||
|
(*sources* or *Makefile* - depending on selected compiler). You can
|
|||
|
assume that the variables are always set and directories always
|
|||
|
exists, even if empty.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
builder.conf settings
|
|||
|
---------------------
|
|||
|
|
|||
|
|
|||
|
Most settings are documented in *builder.conf.default* file, which can
|
|||
|
be used as template the actual configuration.
|
|||
|
|
|||
|
**TODO**
|
|||
|
|
|||
|
Notes
|
|||
|
-----
|
|||
|
|
|||
|
|
|||
|
- For a list of custom TemplateVMs available in QubesBuilder look at
|
|||
|
:doc:`Supported Versions page </user/downloading-installing-upgrading/supported-releases>`.
|
|||
|
|
|||
|
|