doc/manual.txt: multiple improvements and tweaks.

This commit is contained in:
Juan RP 2013-12-31 07:42:58 +01:00
parent 7f821b3682
commit 1594c3e48e

View file

@ -1,3 +1,5 @@
// vim: set syntax=asciidoc:
The XBPS source packages manual
===============================
Juan RP <xtraeme@gmail.com>
@ -8,7 +10,7 @@ Juan RP <xtraeme@gmail.com>
:website: http://www.voidlinux.eu
This article contains an exhaustive manual of how to create new source
packages for XBPS, the package manager of the *Void Linux distribution*.
packages for XBPS, the `Void Linux` native packaging system.
Introduction
------------
@ -80,25 +82,25 @@ Package build phases
Building a package consist of the following phases:
*fetch*::
This phase downloads required sources for a `source package`, as defined by
the `distfiles` variable or `do_fetch()` function.
This phase downloads required sources for a `source package`, as defined by
the `distfiles` variable or `do_fetch()` function.
*extract*::
This phase extracts the `distfiles` files into `$wrksrc` or executes the `do_extract()`
function, which is the directory to be used to compile the `source package`.
This phase extracts the `distfiles` files into `$wrksrc` or executes the `do_extract()`
function, which is the directory to be used to compile the `source package`.
*configure*::
This phase executes the `configuration` of a `source package`, i.e `GNU configure scripts`.
This phase executes the `configuration` of a `source package`, i.e `GNU configure scripts`.
*build*::
This phase compiles/prepares the `source files` via `make` or any other compatible method.
This phase compiles/prepares the `source files` via `make` or any other compatible method.
*install-destdir*::
This phase installs the `package files` into a `fake destdir`, via `make install` or
any other compatible method.
This phase installs the `package files` into a `fake destdir`, via `make install` or
any other compatible method.
*build-pkg*::
This phase builds the `binary packages` with files stored in the `package destdir`.
This phase builds the `binary packages` with files stored in the `package destdir`.
`xbps-src` supports running just the specified phase, and if it ran
successfully, the phase will be skipped later (unless its work directory
@ -111,28 +113,28 @@ The following functions are defined by `xbps-src` and can be used on any templat
*vinstall()*::
`vinstall <file> <mode> <targetdir> [<name>]`
Installs `file` with the specified `mode` into `targetdir` in `$DESTDIR`
(if called from a `source section`) or `$PKGDESTDIR` (if called from a `package section`).
The optional 4th argument can be used to change the `file name`.
Installs `file` with the specified `mode` into `targetdir` in `$DESTDIR`
(if called from a `source section`) or `$PKGDESTDIR` (if called from a `package section`).
The optional 4th argument can be used to change the `file name`.
*vcopy()*::
`vcopy <pattern> <targetdir>`
Copies resursively all files in `pattern` to `targetdir` on `$DESTDIR`
(if called from a `source section`) or `$PKGDESTDIR` (if called from a `package section`).
Copies resursively all files in `pattern` to `targetdir` on `$DESTDIR`
(if called from a `source section`) or `$PKGDESTDIR` (if called from a `package section`).
*vmove()*::
`vmove <pattern>`
Moves `pattern` to the specified directory in `$DESTDIR`
(if called from a `source section`) or `$PKGDESTDIR` (if called from a `package section`).
Moves `pattern` to the specified directory in `$DESTDIR`
(if called from a `source section`) or `$PKGDESTDIR` (if called from a `package section`).
*vmkdir()*::
`vmkdir <directory> [<mode>]`
Creates a directory in `$DESTDIR` (if called from a `source section`) or
$PKGDESTDIR` (if called from a `package section`). The 2nd optional argument
sets the mode of the directory.
Creates a directory in `$DESTDIR` (if called from a `source section`) or
`$PKGDESTDIR` (if called from a `package section`). The 2nd optional argument
sets the mode of the directory.
NOTE: shell wildcards must be properly quoted.
@ -141,37 +143,37 @@ Global variables
The following variables are defined by `xbps-src` and can be used on any template:
*makejobs*::
Set to `-jX` if `XBPS_MAKEJOBS` is defined, to allow parallel jobs with `GNU make`.
Set to `-jX` if `XBPS_MAKEJOBS` is defined, to allow parallel jobs with `GNU make`.
*sourcepkg*::
Set to the to main package name, can be used to match the main package
rather than additional binary package names.
Set to the to main package name, can be used to match the main package
rather than additional binary package names.
*CHROOT_READY*::
True if the target chroot (masterdir) is ready for chroot builds.
True if the target chroot (masterdir) is ready for chroot builds.
*CROSS_BUILD*::
True if `xbps-src` is cross compiling a package.
True if `xbps-src` is cross compiling a package.
*DESTDIR*::
Full path to the fake destdir used by the `source section`, set to
`${XBPS_MASTERDIR}/destdir/${sourcepkg}-${version}`.
Full path to the fake destdir used by the `source section`, set to
`${XBPS_MASTERDIR}/destdir/${sourcepkg}-${version}`.
*PKGDESTDIR*::
Full path to the fake destdir used by the `pkg_install()` function in the
`package section`, set to `${XBPS_MASTERDIR}/destdir/pkg-${pkgname}-${version}`.
Full path to the fake destdir used by the `pkg_install()` function in the
`package section`, set to `${XBPS_MASTERDIR}/destdir/pkg-${pkgname}-${version}`.
*XBPS_MACHINE*::
The machine architecture as returned by `uname -m`.
The machine architecture as returned by `uname -m`.
*XBPS_SRCDISTDIR*::
Full path to where the `source distfiles` are stored, i.e `$XBPS_HOSTDIR/sources`.
Full path to where the `source distfiles` are stored, i.e `$XBPS_HOSTDIR/sources`.
*XBPS_SRCPKGDIR*::
Full path to the `srcpkgs` directory.
Full path to the `srcpkgs` directory.
*XBPS_TARGET_MACHINE*::
The target machine architecture when cross compiling a package.
The target machine architecture when cross compiling a package.
Source section
@ -181,150 +183,151 @@ Mandatory variables
The list of mandatory variables in the `source section`:
*homepage*::
A string pointing to the `upstream` homepage.
A string pointing to the `upstream` homepage.
*license*::
A string matching any license file available in `/usr/share/licenses`.
Multiple licenses should be separated by commas, i.e `GPL-3, LGPL-2.1`.
A string matching any license file available in `/usr/share/licenses`.
Multiple licenses should be separated by commas, i.e `GPL-3, LGPL-2.1`.
*maintainer*::
A string in the form of `name <user@domain>`.
A string in the form of `name <user@domain>`.
*pkgname*::
A string with the package name, matching `srcpkgs/<pkgname>`.
A string with the package name, matching `srcpkgs/<pkgname>`.
*revision*::
A number that must be set to 1 when the `source package` is created, or
updated to a new `upstream version`. This should only be increased when
the generated `binary packages` have been modified.
A number that must be set to 1 when the `source package` is created, or
updated to a new `upstream version`. This should only be increased when
the generated `binary packages` have been modified.
*short_desc*::
A string with a brief description for this package. Max 72 chars.
A string with a brief description for this package. Max 72 chars.
*version*::
A string with the package version. Must not contain dashes and at least
one digit is required.
A string with the package version. Must not contain dashes and at least
one digit is required.
Optional variables
~~~~~~~~~~~~~~~~~~
*hostmakedepends*::
The list of `host` dependencies required to build the package. Dependencies
can be specified with the following version comparators: `<`, `>`, `<=`, `>=`
or `foo-1.0_1` to match an exact version. If version comparator is not
defined (just a package name), the version comparator is automatically set to `>=0`.
Example `hostmakedepends="foo blah<1.0"`.
The list of `host` dependencies required to build the package. Dependencies
can be specified with the following version comparators: `<`, `>`, `<=`, `>=`
or `foo-1.0_1` to match an exact version. If version comparator is not
defined (just a package name), the version comparator is automatically set to `>=0`.
Example `hostmakedepends="foo blah<1.0"`.
*makedepends*::
The list of `target` dependencies required to build the package. Dependencies
can be specified with the following version comparators: `<`, `>`, `<=`, `>=`
or `foo-1.0_1` to match an exact version. If version comparator is not
defined (just a package name), the version comparator is automatically set to `>=0`.
Example `makedepends="foo blah>=1.0"`.
The list of `target` dependencies required to build the package. Dependencies
can be specified with the following version comparators: `<`, `>`, `<=`, `>=`
or `foo-1.0_1` to match an exact version. If version comparator is not
defined (just a package name), the version comparator is automatically set to `>=0`.
Example `makedepends="foo blah>=1.0"`.
*bootstrap*::
If enabled the source package is considered to be part of the `bootstrap`
process and required to be able to build packages in the chroot. Only a
small number of packages must set this property.
If enabled the source package is considered to be part of the `bootstrap`
process and required to be able to build packages in the chroot. Only a
small number of packages must set this property.
*distfiles*::
The full URL to the `upstream` source distribution files. Multiple files
can be separated by blanks. The files must end in `.tar.lzma`, `.tar.xz`,
`.txz`, `.tar.bz2`, `.tbz`, `.tar.gz`, `.tgz`, `.gz`, `.bz2`, `.tar` or
`.zip`. Example `distfiles="http://foo.org/foo-1.0.tar.gz"`
The full URL to the `upstream` source distribution files. Multiple files
can be separated by blanks. The files must end in `.tar.lzma`, `.tar.xz`,
`.txz`, `.tar.bz2`, `.tbz`, `.tar.gz`, `.tgz`, `.gz`, `.bz2`, `.tar` or
`.zip`. Example `distfiles="http://foo.org/foo-1.0.tar.gz"`
*checksum*::
The `sha256` digests matching `${distfiles}`. Multiple files can be
separated by blanks. Please note that the order must be the same than
was used in `${distfiles}`. Example `checksum="kkas00xjkjas"`
The `sha256` digests matching `${distfiles}`. Multiple files can be
separated by blanks. Please note that the order must be the same than
was used in `${distfiles}`. Example `checksum="kkas00xjkjas"`
*long_desc*::
A long description of the main package. Max 80 chars per line and must
not contain the following characters: `&`, `<`, `>`.
A long description of the main package. Max 80 chars per line and must
not contain the following characters: `&`, `<`, `>`.
*wrksrc*::
The directory name where the package sources are extracted, by default
set to `${pkgname}-${version}`.
The directory name where the package sources are extracted, by default
set to `${pkgname}-${version}`.
*build_wrksrc*::
A directory relative to `${wrksrc}` that will be used when building the package.
A directory relative to `${wrksrc}` that will be used when building the package.
*create_wrksrc*::
Enable it to create the `${wrksrc}` directory. Required if a package
contains multiple `distfiles`.
Enable it to create the `${wrksrc}` directory. Required if a package
contains multiple `distfiles`.
*only_for_archs*::
This expects a separated list of architectures where the package can be
built matching `uname -m` output. Example `only_for_archs="x86_64 armv6l"`
This expects a separated list of architectures where the package can be
built matching `uname -m` output. Example `only_for_archs="x86_64 armv6l"`
*build_style*::
This specifies the `build method` for a package. Read below to know more
about the available package `build methods`. If `build_style` is not set,
the package must define at least a `do_install()` function, and optionally
more build phases as such `do_configure()`, `do_build()`, etc.
This specifies the `build method` for a package. Read below to know more
about the available package `build methods`. If `build_style` is not set,
the package must define at least a `do_install()` function, and optionally
more build phases as such `do_configure()`, `do_build()`, etc.
*create_srcdir*::
This creates a directory in `${XBPS_SRCDISTDIR}` as such `${pkgname}-${version}`
to store the package sources at the `extract` phase. Required in packages that
use unversioned ${distfiles}`.
This creates a directory in `${XBPS_SRCDISTDIR}` as such `${pkgname}-${version}`
to store the package sources at the `extract` phase. Required in packages that
use unversioned ${distfiles}`.
*configure_script*::
The name of the `configure` script to execute at the `configure` phase if
`${build_style}` is set to `configure` or `gnu-configure` build methods.
By default set to `./configure`.
The name of the `configure` script to execute at the `configure` phase if
`${build_style}` is set to `configure` or `gnu-configure` build methods.
By default set to `./configure`.
*configure_args*::
The arguments to be passed in to the `configure` script if `${build_style}`
is set to `configure` or `gnu-configure` build methods. By default, prefix
must be set to `/usr`. In `gnu-configure` packages, some options are already
set by default: `--prefix=/usr --sysconfdir=/etc --infodir=/usr/share/info --mandir=/usr/share/man --localstatedir=/var`.
The arguments to be passed in to the `configure` script if `${build_style}`
is set to `configure` or `gnu-configure` build methods. By default, prefix
must be set to `/usr`. In `gnu-configure` packages, some options are already
set by default: `--prefix=/usr --sysconfdir=/etc --infodir=/usr/share/info --mandir=/usr/share/man --localstatedir=/var`.
*make_cmd*::
The executable to run at the `build` phase if `${build_style}` is set to
`configure`, `gnu-configure` or `gnu-makefile` build methods.
By default set to `make`.
The executable to run at the `build` phase if `${build_style}` is set to
`configure`, `gnu-configure` or `gnu-makefile` build methods.
By default set to `make`.
*make_build_args*::
The arguments to be passed in to `${make_cmd}` at the build phase if
`${build_style}` is set to `configure`, `gnu-configure` or `gnu_makefile`
build methods. Unset by default.
The arguments to be passed in to `${make_cmd}` at the build phase if
`${build_style}` is set to `configure`, `gnu-configure` or `gnu_makefile`
build methods. Unset by default.
*make_install_args*::
The arguments to be passed in to `${make_cmd}` at the `install-destdir`
phase if `${build_style}` is set to `configure`, `gnu-configure` or
`gnu_makefile` build methods. Unset by default.
The arguments to be passed in to `${make_cmd}` at the `install-destdir`
phase if `${build_style}` is set to `configure`, `gnu-configure` or
`gnu_makefile` build methods. By default set to
`PREFIX=/usr DESTDIR=${DESTDIR}`.
*make_build_target*::
The target to be passed in to `${make_cmd}` at the build phase if
`${build_style}` is set to `configure`, `gnu-configure` or `gnu_makefile`
build methods. Unset by default (`all` target).
The target to be passed in to `${make_cmd}` at the build phase if
`${build_style}` is set to `configure`, `gnu-configure` or `gnu_makefile`
build methods. Unset by default (`all` target).
*make_install_target*::
The target to be passed in to `${make_cmd}` at the `install-destdir` phase
if `${build_style}` is set to `configure`, `gnu-configure` or `gnu_makefile`
build methods. By default set to `DESTDIR=${DESTDIR} install`.
The target to be passed in to `${make_cmd}` at the `install-destdir` phase
if `${build_style}` is set to `configure`, `gnu-configure` or `gnu_makefile`
build methods. By default set to `install`.
*patch_args*::
The arguments to be passed in to the `patch(1)` command when applying
patches to the package sources after `do_extract()`. Patches are stored in
`srcpkgs/<pkgname>/patches` and must be in `-p0` format. By default set to `-Np0`.
The arguments to be passed in to the `patch(1)` command when applying
patches to the package sources after `do_extract()`. Patches are stored in
`srcpkgs/<pkgname>/patches` and must be in `-p0` format. By default set to `-Np0`.
*disable_parallel_build*::
If set the package won't be built in parallel and `XBPS_MAKEJOBS` has no effect.
If set the package won't be built in parallel and `XBPS_MAKEJOBS` has no effect.
*keep_libtool_archives*::
If enabled the `GNU Libtool` archives won't be removed. By default those
files are always removed automatically.
If enabled the `GNU Libtool` archives won't be removed. By default those
files are always removed automatically.
*skip_extraction*::
A list of filenames that should not be extracted in the `extract` phase.
This must match the basename of any url defined in `${distfiles}`.
Example `skip_extraction="foo-${version}.tar.gz"`.
A list of filenames that should not be extracted in the `extract` phase.
This must match the basename of any url defined in `${distfiles}`.
Example `skip_extraction="foo-${version}.tar.gz"`.
*force_debug_pkgs*::
If enabled binary packages with debugging symbols will be generated
even if `XBPS_DEBUG_PKGS` is disabled in `xbps-src.conf` or in the
`command line arguments`.
If enabled binary packages with debugging symbols will be generated
even if `XBPS_DEBUG_PKGS` is disabled in `xbps-src.conf` or in the
`command line arguments`.
build style scripts
~~~~~~~~~~~~~~~~~~~
@ -336,42 +339,48 @@ to execute a `build_style` script must be defined via `hostmakedepends`.
The current list of available `build_style` scripts is the following:
*cmake*::
For packages that use the CMake build system, configuration arguments
can be passed in via `configure_args`.
For packages that use the CMake build system, configuration arguments
can be passed in via `configure_args`.
*configure*::
For packages that use non-GNU configure scripts, at least `--prefix=/usr`
should be passed in via `configure_args`.
For packages that use non-GNU configure scripts, at least `--prefix=/usr`
should be passed in via `configure_args`.
*gnu-configure*::
For packages that use GNU configure scripts, additional configuration
arguments can be passed in via `configure_args`.
For packages that use GNU configure scripts, additional configuration
arguments can be passed in via `configure_args`.
*gnu-makefile*::
For packages that use GNU make, build arguments can be passed in via
`make_build_args` and install arguments via `make_install_args`. The build
target can be overriden via `make_build_target` and the install target
For packages that use GNU make, build arguments can be passed in via
`make_build_args` and install arguments via `make_install_args`. The build
target can be overriden via `make_build_target` and the install target
via `make_install_target`.
*meta*::
For `meta-packages`, i.e packages that only install local files or simply
depend on additional packages.
For `meta-packages`, i.e packages that only install local files or simply
depend on additional packages. This build style does not install
dependencies to the root directory, and only checks if a binary package is
available in repositories.
*perl-ModuleBuild*::
For packages that use the Perl
http://search.cpan.org/~leont/Module-Build-0.4202/lib/Module/Build.pm[Module::Build] method.
For packages that use the Perl
http://search.cpan.org/~leont/Module-Build-0.4202/lib/Module/Build.pm[Module::Build] method.
*perl*::
For packages that use the Perl
http://perldoc.perl.org/ExtUtils/MakeMaker.html[ExtUtils::MakeMaker] build method.
For packages that use the Perl
http://perldoc.perl.org/ExtUtils/MakeMaker.html[ExtUtils::MakeMaker] build method.
*python-module*::
For packages that use the Python module build method (setup.py).
For packages that use the Python module build method (setup.py).
*waf3*::
For packages that use the Python3 `waf` build method with python3.
For packages that use the Python3 `waf` build method with python3.
*waf*::
For packages that use the Python `waf` method with python2.
For packages that use the Python `waf` method with python2.
NOTE: if `build_style` is not set, the template must (at least) define a
`do_install()` function and optionally more phases via `do_xxx()` functions.
Functions
~~~~~~~~~
@ -379,80 +388,47 @@ The following functions can be defined to change the behavior of how the
package is downloaded, compiled and installed.
*do_fetch()*::
if defined and `distfiles` is not set, use it to fetch the required sources.
if defined and `distfiles` is not set, use it to fetch the required sources.
*do_extract()*::
if defined and `distfiles` is not set, use it to extract the required sources.
if defined and `distfiles` is not set, use it to extract the required sources.
*post_extract()*::
Actions to execute after `do_extract()`.
Actions to execute after `do_extract()`.
*pre_configure()*::
Actions to execute after `post_extract()`.
Actions to execute after `post_extract()`.
*do_configure()*::
Actions to execute to configure the package; `${configure_args}` should
still be passed in if it's a GNU configure script.
Actions to execute to configure the package; `${configure_args}` should
still be passed in if it's a GNU configure script.
*post_configure()*::
Actions to execute after `do_configure()`.
Actions to execute after `do_configure()`.
*pre_build()*::
Actions to execute after `post_configure()`.
Actions to execute after `post_configure()`.
*do_build()*::
Actions to execute to build the package.
Actions to execute to build the package.
*post_build()*::
Actions to execute after `do_build()`.
Actions to execute after `do_build()`.
*pre_install()*::
Actions to execute after `post_build()`.
Actions to execute after `post_build()`.
*do_install()*::
Actions to execute to install the packages files into the `fake destdir`.
Actions to execute to install the packages files into the `fake destdir`.
*post_install()*::
Actions to execute after `do_install()`.
Actions to execute after `do_install()`.
NOTE: A function defined in a template has preference over the same function
defined by a `build_style` script.
Run-time dependencies
~~~~~~~~~~~~~~~~~~~~~
Dependencies for ELF executables or shared libraries are detected
automatically by `xbps-src`, hence run-time dependencies must not be specified
in the *package sections* with the following exceptions:
- ELF binaries using dlopen(3).
- non ELF objects, i.e perl/python/ruby/etc modules.
- Overriding the minimal version specified in the `shlibs` file.
The run-time dependencies for ELF binaries are detected by checking which SONAMEs
use and then the SONAMEs are mapped to a binary package name with a minimal
required version. The `shlibs` file in the `xbps-packages/common` directory
sets up the `SONAME pkgname>=version` mappings.
For example the `foo-1.0_1` package provides the `libfoo.so.1` SONAME and
software requiring this library will link to `libfoo`; the resulting binary
package will have a run-time dependency to `foo>=1.0_1` package as specified in
`common/shlibs`:
-----------------------
# common/shlibs
...
libfoo.so.1 foo-1.0_1
...
-----------------------
- The first field specifies the SONAME.
- The second field specified the package name and minimal version required.
- A third optional field specifies the architecture (rarely used).
Build options
~~~~~~~~~~~~~
-------------
Some packages might be built with different build options to enable/disable
additional features; `xbps-src` allows you to do this with some simple tweaks
to the `template` file.
@ -460,14 +436,14 @@ to the `template` file.
The following variables may be set to allow package build options:
*build_options*::
Sets the build options supported by the source package.
Sets the build options supported by the source package.
*build_options_default*::
Sets the default build options to be used by the source package.
Sets the default build options to be used by the source package.
*desc_option_<option>*::
Sets the description for the build option `option`. This must match the
keyword set in *build_options*.
Sets the description for the build option `option`. This must match the
keyword set in *build_options*.
After defining those required variables, you can check for the
`build_option_<option>` variable to know if it has been set and adapt the source
@ -533,9 +509,69 @@ The build options can also be shown for binary packages via `xbps-query(8)`:
$ xbps-query -R --property=build-options foo
--------------------------------------------
Contributing via git
~~~~~~~~~~~~~~~~~~~~
Package section
---------------
Mandatory functions
~~~~~~~~~~~~~~~~~~~
A `package section` needs at least one mandatory function matching the
`$pkgname` of the `source section`: `<pkgname>_package()`. Multiple binary
packages with the same template can be created by adding additional
`<pkg>_package()` functions.
Those `<pkg>_package()` functions are run in alphabetical order, with the
exception of the `<pkgname>_package()` function, which is always the last one.
Optional variables
~~~~~~~~~~~~~~~~~~
*conf_files*::
A list of configuration files the binary package owns; this expects full
paths, and multiple entries can be separated by blanks, i.e:
`conf_files="/etc/foo.conf /etc/foo2.conf"`.
*noarch*::
If set, the binary package is not architecture specific and can be shared
by all supported architectures.
*nonfree*::
If set, the binary package will be put into the *non free* repository.
*nostrip*::
If set, the ELF binaries with debugging symbols won't be stripped. By
default all binaries are stripped.
Run-time dependencies
---------------------
Dependencies for ELF executables or shared libraries are detected
automatically by `xbps-src`, hence run-time dependencies must not be specified
in the *package sections* with the following exceptions:
- ELF binaries using dlopen(3).
- non ELF objects, i.e perl/python/ruby/etc modules.
- Overriding the minimal version specified in the `shlibs` file.
The run-time dependencies for ELF binaries are detected by checking which SONAMEs
use and then the SONAMEs are mapped to a binary package name with a minimal
required version. The `shlibs` file in the `xbps-packages/common` directory
sets up the `SONAME pkgname>=version` mappings.
For example the `foo-1.0_1` package provides the `libfoo.so.1` SONAME and
software requiring this library will link to `libfoo`; the resulting binary
package will have a run-time dependency to `foo>=1.0_1` package as specified in
`common/shlibs`:
-----------------------
# common/shlibs
...
libfoo.so.1 foo-1.0_1
...
-----------------------
- The first field specifies the SONAME.
- The second field specified the package name and minimal version required.
- A third optional field specifies the architecture (rarely used).
Contributing via git
--------------------
You can fork the `xbps-packages` git repository on github and then set up
a remote to pull in new changes:
@ -556,8 +592,12 @@ for more information.
For commit messages please use the following rules:
- If you've imported a new package use `New package: <pkgver>`.
- If you've updated a package use `<pkgname>: updated to <version>`.
- If you've removed a package use `<pkgname>: removed ...`.
- If you've imported a new package use `"New package: <pkgver>"`.
- If you've updated a package use `"<pkgname>: updated to <version>"`.
- If you've removed a package use `"<pkgname>: removed ..."`.
- If you've modified a package use `"<pkgname>: ..."`.
Help
----
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.freenode.net`.