* Re: [PR REVIEW] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
@ 2023-06-26 19:51 ` mhmdanas
2023-06-26 19:51 ` mhmdanas
` (20 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: mhmdanas @ 2023-06-26 19:51 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 266 bytes --]
New review comment by mhmdanas on void-packages repository
https://github.com/void-linux/void-packages/pull/44649#discussion_r1242685050
Comment:
```suggestion
required version. The `common/shlibs` file sets up the
`<SONAME> <pkgname>>=<version>` mappings.
```
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR REVIEW] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
2023-06-26 19:51 ` [PR REVIEW] " mhmdanas
@ 2023-06-26 19:51 ` mhmdanas
2023-06-26 19:51 ` mhmdanas
` (19 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: mhmdanas @ 2023-06-26 19:51 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 240 bytes --]
New review comment by mhmdanas on void-packages repository
https://github.com/void-linux/void-packages/pull/44649#discussion_r1242683714
Comment:
```suggestion
must not be specified in templates via `depends`. Variable should list:
```
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR REVIEW] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
2023-06-26 19:51 ` [PR REVIEW] " mhmdanas
2023-06-26 19:51 ` mhmdanas
@ 2023-06-26 19:51 ` mhmdanas
2023-06-26 19:51 ` mhmdanas
` (18 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: mhmdanas @ 2023-06-26 19:51 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 221 bytes --]
New review comment by mhmdanas on void-packages repository
https://github.com/void-linux/void-packages/pull/44649#discussion_r1242684023
Comment:
```suggestion
- non-ELF objects, i.e perl/python/ruby/etc modules.
```
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR REVIEW] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (2 preceding siblings ...)
2023-06-26 19:51 ` mhmdanas
@ 2023-06-26 19:51 ` mhmdanas
2023-06-26 19:51 ` mhmdanas
` (17 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: mhmdanas @ 2023-06-26 19:51 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 240 bytes --]
New review comment by mhmdanas on void-packages repository
https://github.com/void-linux/void-packages/pull/44649#discussion_r1242684582
Comment:
```suggestion
- overriding the minimal version specified in the `common/shlibs` file.
```
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR REVIEW] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (3 preceding siblings ...)
2023-06-26 19:51 ` mhmdanas
@ 2023-06-26 19:51 ` mhmdanas
2023-06-26 19:51 ` mhmdanas
` (16 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: mhmdanas @ 2023-06-26 19:51 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 423 bytes --]
New review comment by mhmdanas on void-packages repository
https://github.com/void-linux/void-packages/pull/44649#discussion_r1242686022
Comment:
```suggestion
For example the `foo-1.0_1` package provides the `libfoo.so.1` SONAME and
software requiring this library will link to `libfoo.so.1`; the resulting binary
package will have a run-time dependency on `foo>=1.0_1` package as specified in
`common/shlibs`:
```
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR REVIEW] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (4 preceding siblings ...)
2023-06-26 19:51 ` mhmdanas
@ 2023-06-26 19:51 ` mhmdanas
2023-06-26 19:51 ` mhmdanas
` (15 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: mhmdanas @ 2023-06-26 19:51 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 258 bytes --]
New review comment by mhmdanas on void-packages repository
https://github.com/void-linux/void-packages/pull/44649#discussion_r1242686351
Comment:
```suggestion
Dependencies declared via `depends` are not installed to the master directory, rather are
```
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR REVIEW] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (5 preceding siblings ...)
2023-06-26 19:51 ` mhmdanas
@ 2023-06-26 19:51 ` mhmdanas
2023-06-26 20:08 ` [PR PATCH] [Updated] " Chocimier
` (14 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: mhmdanas @ 2023-06-26 19:51 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1049 bytes --]
New review comment by mhmdanas on void-packages repository
https://github.com/void-linux/void-packages/pull/44649#discussion_r1242686916
Comment:
```suggestion
As a special case, `virtual` dependencies may be specified as runtime dependencies in the
`depends` template variable. Several different packages can provide common functionality by
declaring a virtual name and version in the `provides` template variable (e.g.
`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
information on this map.
```
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (6 preceding siblings ...)
2023-06-26 19:51 ` mhmdanas
@ 2023-06-26 20:08 ` Chocimier
2023-06-26 20:09 ` Chocimier
` (13 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-06-26 20:08 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 15578 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 1/4] Manual.md: move section on automatically detected depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From 6342afe7c2d66169c524137cb83a9f1b3c800498 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 2/4] Manual.md: reword section on automatically detected
depends
---
Manual.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..cfb9e46aad1c 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,15 +789,16 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `$depends`. Variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- data files.
+- overriding the minimal version specified in the `shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
From 005171b74937f2f18b954dddd963a8889498796f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 3/4] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index cfb9e46aad1c..3676003bc6f9 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
From 1a4c6baf065cefc82fccf265eb8006a0371efd1b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:08:52 +0200
Subject: [PATCH 4/4] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index 3676003bc6f9..a1e31677a2a1 100644
--- a/Manual.md
+++ b/Manual.md
@@ -804,8 +804,8 @@ must not be specified in templates via `$depends`. Variable should list:
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
-sets up the `<SONAME> <pkgname>>=<version>` mappings.
+required version. The `common/shlibs` file 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
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (7 preceding siblings ...)
2023-06-26 20:08 ` [PR PATCH] [Updated] " Chocimier
@ 2023-06-26 20:09 ` Chocimier
2023-06-26 20:09 ` Chocimier
` (12 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-06-26 20:09 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 16442 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 1/5] Manual.md: move section on automatically detected depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From 6342afe7c2d66169c524137cb83a9f1b3c800498 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 2/5] Manual.md: reword section on automatically detected
depends
---
Manual.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..cfb9e46aad1c 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,15 +789,16 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `$depends`. Variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- data files.
+- overriding the minimal version specified in the `shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
From 005171b74937f2f18b954dddd963a8889498796f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 3/5] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index cfb9e46aad1c..3676003bc6f9 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
From 1a4c6baf065cefc82fccf265eb8006a0371efd1b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:08:52 +0200
Subject: [PATCH 4/5] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index 3676003bc6f9..a1e31677a2a1 100644
--- a/Manual.md
+++ b/Manual.md
@@ -804,8 +804,8 @@ must not be specified in templates via `$depends`. Variable should list:
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
-sets up the `<SONAME> <pkgname>>=<version>` mappings.
+required version. The `common/shlibs` file 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
From 73daf7a55f2dc0c4a8f27ca68a5fc179b38c594e Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:12 +0200
Subject: [PATCH 5/5] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index a1e31677a2a1..706ab93a09fc 100644
--- a/Manual.md
+++ b/Manual.md
@@ -794,7 +794,7 @@ is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`.
Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
-must not be specified in templates via `$depends`. Variable should list:
+must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (8 preceding siblings ...)
2023-06-26 20:09 ` Chocimier
@ 2023-06-26 20:09 ` Chocimier
2023-06-26 20:09 ` Chocimier
` (11 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-06-26 20:09 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 17220 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 1/6] Manual.md: move section on automatically detected depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From 6342afe7c2d66169c524137cb83a9f1b3c800498 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 2/6] Manual.md: reword section on automatically detected
depends
---
Manual.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..cfb9e46aad1c 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,15 +789,16 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `$depends`. Variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- data files.
+- overriding the minimal version specified in the `shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
From 005171b74937f2f18b954dddd963a8889498796f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 3/6] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index cfb9e46aad1c..3676003bc6f9 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
From 1a4c6baf065cefc82fccf265eb8006a0371efd1b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:08:52 +0200
Subject: [PATCH 4/6] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index 3676003bc6f9..a1e31677a2a1 100644
--- a/Manual.md
+++ b/Manual.md
@@ -804,8 +804,8 @@ must not be specified in templates via `$depends`. Variable should list:
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
-sets up the `<SONAME> <pkgname>>=<version>` mappings.
+required version. The `common/shlibs` file 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
From 73daf7a55f2dc0c4a8f27ca68a5fc179b38c594e Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:12 +0200
Subject: [PATCH 5/6] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index a1e31677a2a1..706ab93a09fc 100644
--- a/Manual.md
+++ b/Manual.md
@@ -794,7 +794,7 @@ is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`.
Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
-must not be specified in templates via `$depends`. Variable should list:
+must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
From df7250922c286613b4ce1968f63f1f5baa974bd0 Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:20 +0200
Subject: [PATCH 6/6] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 706ab93a09fc..823df890fd0b 100644
--- a/Manual.md
+++ b/Manual.md
@@ -798,7 +798,7 @@ must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
+- non-ELF objects, i.e perl/python/ruby/etc modules.
- data files.
- overriding the minimal version specified in the `shlibs` file.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (9 preceding siblings ...)
2023-06-26 20:09 ` Chocimier
@ 2023-06-26 20:09 ` Chocimier
2023-06-26 20:09 ` Chocimier
` (10 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-06-26 20:09 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 18137 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 1/7] Manual.md: move section on automatically detected depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From 6342afe7c2d66169c524137cb83a9f1b3c800498 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 2/7] Manual.md: reword section on automatically detected
depends
---
Manual.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..cfb9e46aad1c 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,15 +789,16 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `$depends`. Variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- data files.
+- overriding the minimal version specified in the `shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
From 005171b74937f2f18b954dddd963a8889498796f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 3/7] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index cfb9e46aad1c..3676003bc6f9 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
From 1a4c6baf065cefc82fccf265eb8006a0371efd1b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:08:52 +0200
Subject: [PATCH 4/7] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index 3676003bc6f9..a1e31677a2a1 100644
--- a/Manual.md
+++ b/Manual.md
@@ -804,8 +804,8 @@ must not be specified in templates via `$depends`. Variable should list:
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
-sets up the `<SONAME> <pkgname>>=<version>` mappings.
+required version. The `common/shlibs` file 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
From 73daf7a55f2dc0c4a8f27ca68a5fc179b38c594e Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:12 +0200
Subject: [PATCH 5/7] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index a1e31677a2a1..706ab93a09fc 100644
--- a/Manual.md
+++ b/Manual.md
@@ -794,7 +794,7 @@ is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`.
Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
-must not be specified in templates via `$depends`. Variable should list:
+must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
From df7250922c286613b4ce1968f63f1f5baa974bd0 Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:20 +0200
Subject: [PATCH 6/7] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 706ab93a09fc..823df890fd0b 100644
--- a/Manual.md
+++ b/Manual.md
@@ -798,7 +798,7 @@ must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
+- non-ELF objects, i.e perl/python/ruby/etc modules.
- data files.
- overriding the minimal version specified in the `shlibs` file.
From 7d360e570095b89fe4036f4a52491cb17337fb0b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:27 +0200
Subject: [PATCH 7/7] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 823df890fd0b..da9f53a55dcd 100644
--- a/Manual.md
+++ b/Manual.md
@@ -800,7 +800,7 @@ must not be specified in templates via `depends`. Variable should list:
- ELF objects using dlopen(3).
- non-ELF objects, i.e perl/python/ruby/etc modules.
- data files.
-- overriding the minimal version specified in the `shlibs` file.
+- overriding the minimal version specified in the `common/shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (10 preceding siblings ...)
2023-06-26 20:09 ` Chocimier
@ 2023-06-26 20:09 ` Chocimier
2023-06-26 20:09 ` Chocimier
` (9 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-06-26 20:09 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 19098 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 1/8] Manual.md: move section on automatically detected depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From 6342afe7c2d66169c524137cb83a9f1b3c800498 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 2/8] Manual.md: reword section on automatically detected
depends
---
Manual.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..cfb9e46aad1c 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,15 +789,16 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `$depends`. Variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- data files.
+- overriding the minimal version specified in the `shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
From 005171b74937f2f18b954dddd963a8889498796f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 3/8] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index cfb9e46aad1c..3676003bc6f9 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
From 1a4c6baf065cefc82fccf265eb8006a0371efd1b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:08:52 +0200
Subject: [PATCH 4/8] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index 3676003bc6f9..a1e31677a2a1 100644
--- a/Manual.md
+++ b/Manual.md
@@ -804,8 +804,8 @@ must not be specified in templates via `$depends`. Variable should list:
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
-sets up the `<SONAME> <pkgname>>=<version>` mappings.
+required version. The `common/shlibs` file 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
From 73daf7a55f2dc0c4a8f27ca68a5fc179b38c594e Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:12 +0200
Subject: [PATCH 5/8] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index a1e31677a2a1..706ab93a09fc 100644
--- a/Manual.md
+++ b/Manual.md
@@ -794,7 +794,7 @@ is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`.
Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
-must not be specified in templates via `$depends`. Variable should list:
+must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
From df7250922c286613b4ce1968f63f1f5baa974bd0 Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:20 +0200
Subject: [PATCH 6/8] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 706ab93a09fc..823df890fd0b 100644
--- a/Manual.md
+++ b/Manual.md
@@ -798,7 +798,7 @@ must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
+- non-ELF objects, i.e perl/python/ruby/etc modules.
- data files.
- overriding the minimal version specified in the `shlibs` file.
From 7d360e570095b89fe4036f4a52491cb17337fb0b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:27 +0200
Subject: [PATCH 7/8] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 823df890fd0b..da9f53a55dcd 100644
--- a/Manual.md
+++ b/Manual.md
@@ -800,7 +800,7 @@ must not be specified in templates via `depends`. Variable should list:
- ELF objects using dlopen(3).
- non-ELF objects, i.e perl/python/ruby/etc modules.
- data files.
-- overriding the minimal version specified in the `shlibs` file.
+- overriding the minimal version specified in the `common/shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
From ec83bb4354496a870f6bfc61f9779eb60c6a9736 Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:35 +0200
Subject: [PATCH 8/8] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index da9f53a55dcd..71577c9f76df 100644
--- a/Manual.md
+++ b/Manual.md
@@ -808,8 +808,8 @@ required version. The `common/shlibs` file 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
+software requiring this library will link to `libfoo.so.1`; the resulting binary
+package will have a run-time dependency on `foo>=1.0_1` package as specified in
`common/shlibs`:
```
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (11 preceding siblings ...)
2023-06-26 20:09 ` Chocimier
@ 2023-06-26 20:09 ` Chocimier
2023-06-26 20:09 ` Chocimier
` (8 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-06-26 20:09 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 20066 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 1/9] Manual.md: move section on automatically detected depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From 6342afe7c2d66169c524137cb83a9f1b3c800498 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 2/9] Manual.md: reword section on automatically detected
depends
---
Manual.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..cfb9e46aad1c 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,15 +789,16 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `$depends`. Variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- data files.
+- overriding the minimal version specified in the `shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
From 005171b74937f2f18b954dddd963a8889498796f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 3/9] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index cfb9e46aad1c..3676003bc6f9 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
From 1a4c6baf065cefc82fccf265eb8006a0371efd1b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:08:52 +0200
Subject: [PATCH 4/9] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index 3676003bc6f9..a1e31677a2a1 100644
--- a/Manual.md
+++ b/Manual.md
@@ -804,8 +804,8 @@ must not be specified in templates via `$depends`. Variable should list:
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
-sets up the `<SONAME> <pkgname>>=<version>` mappings.
+required version. The `common/shlibs` file 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
From 73daf7a55f2dc0c4a8f27ca68a5fc179b38c594e Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:12 +0200
Subject: [PATCH 5/9] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index a1e31677a2a1..706ab93a09fc 100644
--- a/Manual.md
+++ b/Manual.md
@@ -794,7 +794,7 @@ is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`.
Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
-must not be specified in templates via `$depends`. Variable should list:
+must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
From df7250922c286613b4ce1968f63f1f5baa974bd0 Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:20 +0200
Subject: [PATCH 6/9] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 706ab93a09fc..823df890fd0b 100644
--- a/Manual.md
+++ b/Manual.md
@@ -798,7 +798,7 @@ must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
+- non-ELF objects, i.e perl/python/ruby/etc modules.
- data files.
- overriding the minimal version specified in the `shlibs` file.
From 7d360e570095b89fe4036f4a52491cb17337fb0b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:27 +0200
Subject: [PATCH 7/9] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 823df890fd0b..da9f53a55dcd 100644
--- a/Manual.md
+++ b/Manual.md
@@ -800,7 +800,7 @@ must not be specified in templates via `depends`. Variable should list:
- ELF objects using dlopen(3).
- non-ELF objects, i.e perl/python/ruby/etc modules.
- data files.
-- overriding the minimal version specified in the `shlibs` file.
+- overriding the minimal version specified in the `common/shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
From ec83bb4354496a870f6bfc61f9779eb60c6a9736 Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:35 +0200
Subject: [PATCH 8/9] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index da9f53a55dcd..71577c9f76df 100644
--- a/Manual.md
+++ b/Manual.md
@@ -808,8 +808,8 @@ required version. The `common/shlibs` file 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
+software requiring this library will link to `libfoo.so.1`; the resulting binary
+package will have a run-time dependency on `foo>=1.0_1` package as specified in
`common/shlibs`:
```
From 5a1ea9ea0a3183a578fc4651ae713c5fe3d975fd Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:49 +0200
Subject: [PATCH 9/9] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 71577c9f76df..bbd06127f2a6 100644
--- a/Manual.md
+++ b/Manual.md
@@ -823,7 +823,7 @@ libfoo.so.1 foo-1.0_1
- The second field specified the package name and minimal version required.
- A third optional field (usually set to `ignore`) can be used to skip checks in soname bumps.
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
+Dependencies declared via `depends` are not installed to the master directory, rather are
only checked if they exist as binary packages, and are built automatically by `xbps-src` if
the specified version is not in the local repository.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (12 preceding siblings ...)
2023-06-26 20:09 ` Chocimier
@ 2023-06-26 20:09 ` Chocimier
2023-06-26 20:25 ` Chocimier
` (7 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-06-26 20:09 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 21404 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 01/10] Manual.md: move section on automatically detected
depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From 6342afe7c2d66169c524137cb83a9f1b3c800498 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 02/10] Manual.md: reword section on automatically detected
depends
---
Manual.md | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..cfb9e46aad1c 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,15 +789,16 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `$depends`. Variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- data files.
+- overriding the minimal version specified in the `shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
From 005171b74937f2f18b954dddd963a8889498796f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 03/10] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index cfb9e46aad1c..3676003bc6f9 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
From 1a4c6baf065cefc82fccf265eb8006a0371efd1b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:08:52 +0200
Subject: [PATCH 04/10] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index 3676003bc6f9..a1e31677a2a1 100644
--- a/Manual.md
+++ b/Manual.md
@@ -804,8 +804,8 @@ must not be specified in templates via `$depends`. Variable should list:
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
-sets up the `<SONAME> <pkgname>>=<version>` mappings.
+required version. The `common/shlibs` file 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
From 73daf7a55f2dc0c4a8f27ca68a5fc179b38c594e Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:12 +0200
Subject: [PATCH 05/10] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index a1e31677a2a1..706ab93a09fc 100644
--- a/Manual.md
+++ b/Manual.md
@@ -794,7 +794,7 @@ is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`.
Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
-must not be specified in templates via `$depends`. Variable should list:
+must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
From df7250922c286613b4ce1968f63f1f5baa974bd0 Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:20 +0200
Subject: [PATCH 06/10] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 706ab93a09fc..823df890fd0b 100644
--- a/Manual.md
+++ b/Manual.md
@@ -798,7 +798,7 @@ must not be specified in templates via `depends`. Variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
+- non-ELF objects, i.e perl/python/ruby/etc modules.
- data files.
- overriding the minimal version specified in the `shlibs` file.
From 7d360e570095b89fe4036f4a52491cb17337fb0b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:27 +0200
Subject: [PATCH 07/10] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 823df890fd0b..da9f53a55dcd 100644
--- a/Manual.md
+++ b/Manual.md
@@ -800,7 +800,7 @@ must not be specified in templates via `depends`. Variable should list:
- ELF objects using dlopen(3).
- non-ELF objects, i.e perl/python/ruby/etc modules.
- data files.
-- overriding the minimal version specified in the `shlibs` file.
+- overriding the minimal version specified in the `common/shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
From ec83bb4354496a870f6bfc61f9779eb60c6a9736 Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:35 +0200
Subject: [PATCH 08/10] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index da9f53a55dcd..71577c9f76df 100644
--- a/Manual.md
+++ b/Manual.md
@@ -808,8 +808,8 @@ required version. The `common/shlibs` file 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
+software requiring this library will link to `libfoo.so.1`; the resulting binary
+package will have a run-time dependency on `foo>=1.0_1` package as specified in
`common/shlibs`:
```
From 5a1ea9ea0a3183a578fc4651ae713c5fe3d975fd Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:49 +0200
Subject: [PATCH 09/10] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 71577c9f76df..bbd06127f2a6 100644
--- a/Manual.md
+++ b/Manual.md
@@ -823,7 +823,7 @@ libfoo.so.1 foo-1.0_1
- The second field specified the package name and minimal version required.
- A third optional field (usually set to `ignore`) can be used to skip checks in soname bumps.
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
+Dependencies declared via `depends` are not installed to the master directory, rather are
only checked if they exist as binary packages, and are built automatically by `xbps-src` if
the specified version is not in the local repository.
From 8f2c6f41be48c640533accec1fb6225184815271 Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 22:09:57 +0200
Subject: [PATCH 10/10] Update Manual.md
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Manual.md b/Manual.md
index bbd06127f2a6..ce17d3479504 100644
--- a/Manual.md
+++ b/Manual.md
@@ -828,8 +828,8 @@ only checked if they exist as binary packages, and are built automatically by `x
the specified version is not in the local repository.
As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`depends` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `provides` template variable (e.g.
`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (13 preceding siblings ...)
2023-06-26 20:09 ` Chocimier
@ 2023-06-26 20:25 ` Chocimier
2023-06-26 20:29 ` [PR REVIEW] " Chocimier
` (6 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-06-26 20:25 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 16545 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 1/3] Manual.md: move section on automatically detected depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From 51dd8a2bc3f01b8e7ca67cd5264339948eaa9d60 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 2/3] Manual.md: reword section on automatically detected
depends
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..792e3e5b81fd 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,24 +789,25 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `depends`. Variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- non-object code, e.g. C headers, perl/python/ruby/etc modules.
+- data files.
+- overriding the minimal version specified in the `common/shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
+required version. The `common/shlibs` file
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
+software requiring this library will link to `libfoo.so.1`; the resulting binary
+package will have a run-time dependency on `foo>=1.0_1` package as specified in
`common/shlibs`:
```
@@ -820,13 +821,13 @@ libfoo.so.1 foo-1.0_1
- The second field specified the package name and minimal version required.
- A third optional field (usually set to `ignore`) can be used to skip checks in soname bumps.
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
+Dependencies declared via `depends` are not installed to the master directory, rather are
only checked if they exist as binary packages, and are built automatically by `xbps-src` if
the specified version is not in the local repository.
As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`depends` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `provides` template variable (e.g.
`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
From fd56b09206d9982ce1c3fd131ed4ec2e8df21b27 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 3/3] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index 792e3e5b81fd..55bf267a534f 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR REVIEW] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (14 preceding siblings ...)
2023-06-26 20:25 ` Chocimier
@ 2023-06-26 20:29 ` Chocimier
2023-06-27 9:37 ` classabbyamp
` (5 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-06-26 20:29 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 213 bytes --]
New review comment by Chocimier on void-packages repository
https://github.com/void-linux/void-packages/pull/44649#discussion_r1242729930
Comment:
Thanks for remarks.
Here also abstracted over object format.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR REVIEW] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (15 preceding siblings ...)
2023-06-26 20:29 ` [PR REVIEW] " Chocimier
@ 2023-06-27 9:37 ` classabbyamp
2023-06-27 10:33 ` Bnyro
` (4 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: classabbyamp @ 2023-06-27 9:37 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 249 bytes --]
New review comment by classabbyamp on void-packages repository
https://github.com/void-linux/void-packages/pull/44649#discussion_r1243433695
Comment:
```suggestion
must not be specified in templates via `depends`. This variable should list:
```
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR REVIEW] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (16 preceding siblings ...)
2023-06-27 9:37 ` classabbyamp
@ 2023-06-27 10:33 ` Bnyro
2023-07-03 16:06 ` [PR PATCH] [Updated] " Chocimier
` (3 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Bnyro @ 2023-06-27 10:33 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 260 bytes --]
New review comment by Bnyro on void-packages repository
https://github.com/void-linux/void-packages/pull/44649#discussion_r1243521046
Comment:
```suggestion
Dependencies declared via `depends` are not installed to the master directory, rather they are
```
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (17 preceding siblings ...)
2023-06-27 10:33 ` Bnyro
@ 2023-07-03 16:06 ` Chocimier
2023-07-03 16:07 ` Chocimier
` (2 subsequent siblings)
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-07-03 16:06 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 17435 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 1/4] Manual.md: move section on automatically detected depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From 51dd8a2bc3f01b8e7ca67cd5264339948eaa9d60 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 2/4] Manual.md: reword section on automatically detected
depends
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..792e3e5b81fd 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,24 +789,25 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `depends`. Variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- non-object code, e.g. C headers, perl/python/ruby/etc modules.
+- data files.
+- overriding the minimal version specified in the `common/shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
+required version. The `common/shlibs` file
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
+software requiring this library will link to `libfoo.so.1`; the resulting binary
+package will have a run-time dependency on `foo>=1.0_1` package as specified in
`common/shlibs`:
```
@@ -820,13 +821,13 @@ libfoo.so.1 foo-1.0_1
- The second field specified the package name and minimal version required.
- A third optional field (usually set to `ignore`) can be used to skip checks in soname bumps.
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
+Dependencies declared via `depends` are not installed to the master directory, rather are
only checked if they exist as binary packages, and are built automatically by `xbps-src` if
the specified version is not in the local repository.
As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`depends` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `provides` template variable (e.g.
`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
From fd56b09206d9982ce1c3fd131ed4ec2e8df21b27 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 3/4] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index 792e3e5b81fd..55bf267a534f 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
From 8ed6aac98b4ad1b48ca7706c7916bcabc63b2c0b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 3 Jul 2023 18:06:39 +0200
Subject: [PATCH 4/4] Update Manual.md
Co-authored-by: classabbyamp <5366828+classabbyamp@users.noreply.github.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 55bf267a534f..a6d9a7f2e6b7 100644
--- a/Manual.md
+++ b/Manual.md
@@ -794,7 +794,7 @@ is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`.
Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
-must not be specified in templates via `depends`. Variable should list:
+must not be specified in templates via `depends`. This variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (18 preceding siblings ...)
2023-07-03 16:06 ` [PR PATCH] [Updated] " Chocimier
@ 2023-07-03 16:07 ` Chocimier
2023-07-03 16:08 ` Chocimier
2023-07-03 16:09 ` [PR PATCH] [Merged]: " Chocimier
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-07-03 16:07 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 18414 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 1/5] Manual.md: move section on automatically detected depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From 51dd8a2bc3f01b8e7ca67cd5264339948eaa9d60 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 2/5] Manual.md: reword section on automatically detected
depends
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..792e3e5b81fd 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,24 +789,25 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `depends`. Variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- non-object code, e.g. C headers, perl/python/ruby/etc modules.
+- data files.
+- overriding the minimal version specified in the `common/shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
+required version. The `common/shlibs` file
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
+software requiring this library will link to `libfoo.so.1`; the resulting binary
+package will have a run-time dependency on `foo>=1.0_1` package as specified in
`common/shlibs`:
```
@@ -820,13 +821,13 @@ libfoo.so.1 foo-1.0_1
- The second field specified the package name and minimal version required.
- A third optional field (usually set to `ignore`) can be used to skip checks in soname bumps.
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
+Dependencies declared via `depends` are not installed to the master directory, rather are
only checked if they exist as binary packages, and are built automatically by `xbps-src` if
the specified version is not in the local repository.
As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`depends` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `provides` template variable (e.g.
`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
From fd56b09206d9982ce1c3fd131ed4ec2e8df21b27 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 3/5] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index 792e3e5b81fd..55bf267a534f 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
From 8ed6aac98b4ad1b48ca7706c7916bcabc63b2c0b Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 3 Jul 2023 18:06:39 +0200
Subject: [PATCH 4/5] Update Manual.md
Co-authored-by: classabbyamp <5366828+classabbyamp@users.noreply.github.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index 55bf267a534f..a6d9a7f2e6b7 100644
--- a/Manual.md
+++ b/Manual.md
@@ -794,7 +794,7 @@ is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`.
Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
-must not be specified in templates via `depends`. Variable should list:
+must not be specified in templates via `depends`. This variable should list:
- executables called as separate processes.
- ELF objects using dlopen(3).
From f9755c114c79e7d9daf0d5ad4e0a5519d7d162f9 Mon Sep 17 00:00:00 2001
From: Chocimier <chocimier@tlen.pl>
Date: Mon, 3 Jul 2023 18:06:58 +0200
Subject: [PATCH 5/5] Update Manual.md
Co-authored-by: Bnyro <82752168+Bnyro@users.noreply.github.com>
---
Manual.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Manual.md b/Manual.md
index a6d9a7f2e6b7..63f10f354582 100644
--- a/Manual.md
+++ b/Manual.md
@@ -823,7 +823,7 @@ libfoo.so.1 foo-1.0_1
- The second field specified the package name and minimal version required.
- A third optional field (usually set to `ignore`) can be used to skip checks in soname bumps.
-Dependencies declared via `depends` are not installed to the master directory, rather are
+Dependencies declared via `depends` are not installed to the master directory, rather they are
only checked if they exist as binary packages, and are built automatically by `xbps-src` if
the specified version is not in the local repository.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Updated] Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (19 preceding siblings ...)
2023-07-03 16:07 ` Chocimier
@ 2023-07-03 16:08 ` Chocimier
2023-07-03 16:09 ` [PR PATCH] [Merged]: " Chocimier
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-07-03 16:08 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 372 bytes --]
There is an updated pull request by Chocimier against master on the void-packages repository
https://github.com/Chocimier/void-packages-org manual
https://github.com/void-linux/void-packages/pull/44649
Manual.md: improve automatic depends section, adjust sections hierarchy
None
A patch file from https://github.com/void-linux/void-packages/pull/44649.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-44649.patch --]
[-- Type: text/x-diff, Size: 16555 bytes --]
From a46b6131ee01f03c0a3bdcd5277efe1df6f529ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:01:53 +0200
Subject: [PATCH 1/3] Manual.md: move section on automatically detected depends
---
Manual.md | 91 +++++++++++++++++++++++++++----------------------------
1 file changed, 44 insertions(+), 47 deletions(-)
diff --git a/Manual.md b/Manual.md
index 1670863cbe54..da2572e911a0 100644
--- a/Manual.md
+++ b/Manual.md
@@ -27,7 +27,6 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Build helper scripts](#build_helper)
* [Functions](#functions)
* [Build options](#build_options)
- * [Runtime dependencies](#deps_runtime)
* [INSTALL and REMOVE files](#install_remove_files)
* [INSTALL.msg and REMOVE.msg files](#install_remove_files_msg)
* [Creating system accounts/groups at runtime](#runtime_account_creation)
@@ -787,11 +786,55 @@ should be listed in `checkdepends` and will be installed as if they were part of
a D-Bus session for applications that need it
- `git`: some test suites run the `git` command
+<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
modules and other programs that use `dlopen(3)` instead of dynamically linking.
+Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
+dependencies must not be specified in templates via `$depends` with the following exceptions:
+
+- ELF objects using dlopen(3).
+- non ELF objects, i.e perl/python/ruby/etc modules.
+- Overriding the minimal version specified in the `shlibs` file.
+
+The runtime dependencies for ELF objects are detected by checking which SONAMEs
+they require and then the SONAMEs are mapped to a binary package name with a minimal
+required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
+
+Dependencies declared via `${depends}` are not installed to the master directory, rather are
+only checked if they exist as binary packages, and are built automatically by `xbps-src` if
+the specified version is not in the local repository.
+
+As a special case, `virtual` dependencies may be specified as runtime dependencies in the
+`${depends}` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
+specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
+(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
+virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
+packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
+overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
+information on this map.
+
Finally, as a general rule, if a package is built the exact same way whether or
not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
@@ -1214,52 +1257,6 @@ Example: `XBPS_PKG_OPTIONS_xorg_server=opt`.
The list of supported package build options and its description is defined in the
`common/options.description` file.
-<a id="deps_runtime"></a>
-#### Runtime dependencies
-
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
-
-- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
-
-The runtime dependencies for ELF objects are detected by checking which SONAMEs
-they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-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 (usually set to `ignore`) can be used to skip checks in soname bumps.
-
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
-only checked if they exist as binary packages, and are built automatically by `xbps-src` if
-the specified version is not in the local repository.
-
-As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
-`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
-specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
-(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
-virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
-packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
-overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
-information on this map.
-
<a id="install_remove_files"></a>
### INSTALL and REMOVE files
From d1381a7fbe877bb9bfdb3e2d2df1653bb2d94dc7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:13:46 +0200
Subject: [PATCH 2/3] Manual.md: reword section on automatically detected
depends
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
---
Manual.md | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/Manual.md b/Manual.md
index da2572e911a0..bb1f4edfcc34 100644
--- a/Manual.md
+++ b/Manual.md
@@ -789,24 +789,25 @@ should be listed in `checkdepends` and will be installed as if they were part of
<a id="deps_runtime"></a>
Lastly, a package may require certain dependencies at runtime, without which it
is unusable. These dependencies, when they aren't detected automatically by
-XBPS, should be listed in `depends`. This is mostly relevant for Perl and Python
-modules and other programs that use `dlopen(3)` instead of dynamically linking.
+XBPS, should be listed in `depends`.
-Dependencies for ELF objects are detected automatically by `xbps-src`, hence runtime
-dependencies must not be specified in templates via `$depends` with the following exceptions:
+Libraries linked by ELF objects are detected automatically by `xbps-src`, hence they
+must not be specified in templates via `depends`. This variable should list:
+- executables called as separate processes.
- ELF objects using dlopen(3).
-- non ELF objects, i.e perl/python/ruby/etc modules.
-- Overriding the minimal version specified in the `shlibs` file.
+- non-object code, e.g. C headers, perl/python/ruby/etc modules.
+- data files.
+- overriding the minimal version specified in the `common/shlibs` file.
The runtime dependencies for ELF objects are detected by checking which SONAMEs
they require and then the SONAMEs are mapped to a binary package name with a minimal
-required version. The `shlibs` file in the `void-packages/common` directory
+required version. The `common/shlibs` file
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
+software requiring this library will link to `libfoo.so.1`; the resulting binary
+package will have a run-time dependency on `foo>=1.0_1` package as specified in
`common/shlibs`:
```
@@ -820,13 +821,13 @@ libfoo.so.1 foo-1.0_1
- The second field specified the package name and minimal version required.
- A third optional field (usually set to `ignore`) can be used to skip checks in soname bumps.
-Dependencies declared via `${depends}` are not installed to the master directory, rather are
+Dependencies declared via `depends` are not installed to the master directory, rather they are
only checked if they exist as binary packages, and are built automatically by `xbps-src` if
the specified version is not in the local repository.
As a special case, `virtual` dependencies may be specified as runtime dependencies in the
-`${depends}` template variable. Several different packages can provide common functionality by
-declaring a virtual name and version in the `${provides}` template variable (e.g.,
+`depends` template variable. Several different packages can provide common functionality by
+declaring a virtual name and version in the `provides` template variable (e.g.
`provides="vpkg-0.1_1"`). Packages that rely on the common functionality without concern for the
specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
From e5afc3008f83eaa99f83cc8668b1da1ed584fedc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <chocimier@tlen.pl>
Date: Mon, 26 Jun 2023 20:25:19 +0200
Subject: [PATCH 3/3] Manual.md: adjust sections hierarchy
---
Manual.md | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/Manual.md b/Manual.md
index bb1f4edfcc34..63f10f354582 100644
--- a/Manual.md
+++ b/Manual.md
@@ -5,7 +5,8 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents*
-* [Introduction](#Introduction)
+* The XBPS source packages manual
+ * [Introduction](#Introduction)
* [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions)
* [Libraries](#libs)
@@ -33,13 +34,14 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Writing runit services](#writing_runit_services)
* [32bit packages](#32bit_pkgs)
* [Subpackages](#pkgs_sub)
- * [Development packages](#pkgs_development)
- * [Data packages](#pkgs_data)
- * [Documentation packages](#pkgs_documentation)
- * [Python packages](#pkgs_python)
- * [Go packages](#pkgs_go)
- * [Haskell packages](#pkgs_haskell)
- * [Font packages](#pkgs_font)
+ * [Some package classes](#pkgs_classes)
+ * [Development packages](#pkgs_development)
+ * [Data packages](#pkgs_data)
+ * [Documentation packages](#pkgs_documentation)
+ * [Python packages](#pkgs_python)
+ * [Go packages](#pkgs_go)
+ * [Haskell packages](#pkgs_haskell)
+ * [Font packages](#pkgs_font)
* [Renaming a package](#pkg_rename)
* [Removing a package](#pkg_remove)
* [XBPS Triggers](#xbps_triggers)
@@ -72,10 +74,10 @@ packages for XBPS, the `Void Linux` native packaging system.
* [Void specific documentation](#documentation)
* [Notes](#notes)
* [Contributing via git](#contributing)
-* [Help](#help)
+ * [Help](#help)
<a id="Introduction"></a>
-## Introduction
+### Introduction
The `void-packages` repository contains all the
recipes to download, compile and build binary packages for Void Linux.
@@ -841,10 +843,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -852,7 +854,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1474,8 +1476,11 @@ destdir (`$DESTDIR`) to the `subpackage` destdir (`$PKGDESTDIR`).
Subpackages are processed always in alphabetical order; To force a custom order,
the `subpackages` variable can be declared with the wanted order.
+<a id="pkgs_classes"></a>
+### Some package classes
+
<a id="pkgs_development"></a>
-### Development packages
+#### Development packages
A development package, commonly generated as a subpackage, shall only contain
files required for development, that is, headers, static libraries, shared
@@ -1505,7 +1510,7 @@ following subset of files from the main package:
* Vala bindings `usr/share/vala`
<a id="pkgs_data"></a>
-### Data packages
+#### Data packages
Another common subpackage type is the `-data` subpackage. This subpackage
type used to split architecture independent, big(ger) or huge amounts
@@ -1517,7 +1522,7 @@ The main package must then have `depends="${pkgname}-data-${version}_${revision}
possibly in addition to other, non-automatic depends.
<a id="pkgs_documentation"></a>
-### Documentation packages
+#### Documentation packages
Packages intended for user interaction do not always unconditionally require
their documentation part. A user who does not want to e.g. develop
@@ -1532,7 +1537,7 @@ amounts of documentation for no reason. Thus the size of the documentation part
be your guidance to decide whether or not to split off a `-doc` subpackage.
<a id="pkgs_python"></a>
-### Python packages
+#### Python packages
Python packages should be built with the `python{,2,3}-module` build style, if possible.
This sets some environment variables required to allow cross compilation. Support to allow
@@ -1593,7 +1598,7 @@ Also, a set of useful variables are defined to use in the templates:
python versions.
<a id="pkgs_go"></a>
-### Go packages
+#### Go packages
Go packages should be built with the `go` build style, if possible.
The `go` build style takes care of downloading Go dependencies and
@@ -1627,7 +1632,7 @@ The path to the package's source inside `$GOPATH` is available as
`$GOSRCPATH`.
<a id="pkgs_haskell"></a>
-### Haskell packages
+#### Haskell packages
We build Haskell package using `stack` from
[Stackage](http://www.stackage.org/), generally the LTS versions.
@@ -1645,7 +1650,7 @@ The following variables influence how Haskell packages are built:
you can add your `--flag ...` parameters there.
<a id="pkgs_font"></a>
-### Font packages
+#### Font packages
Font packages are very straightforward to write, they are always set with the
following variables:
@@ -1902,7 +1907,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
@@ -2151,7 +2156,7 @@ to pull in new changes:
$ git pull --rebase upstream master
<a id="help"></a>
-## Help
+### Help
If after reading this `manual` you still need some kind of help, please join
us at `#xbps` via IRC at `irc.libera.chat`.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PR PATCH] [Merged]: Manual.md: improve automatic depends section, adjust sections hierarchy
2023-06-26 18:45 [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy Chocimier
` (20 preceding siblings ...)
2023-07-03 16:08 ` Chocimier
@ 2023-07-03 16:09 ` Chocimier
21 siblings, 0 replies; 23+ messages in thread
From: Chocimier @ 2023-07-03 16:09 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 209 bytes --]
There's a merged pull request on the void-packages repository
Manual.md: improve automatic depends section, adjust sections hierarchy
https://github.com/void-linux/void-packages/pull/44649
Description:
None
^ permalink raw reply [flat|nested] 23+ messages in thread