Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] Manual.md: improve automatic depends section, adjust sections hierarchy
@ 2023-06-26 18:45 Chocimier
  2023-06-26 19:51 ` [PR REVIEW] " mhmdanas
                   ` (21 more replies)
  0 siblings, 22 replies; 23+ messages in thread
From: Chocimier @ 2023-06-26 18:45 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 367 bytes --]

There is a new 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: 14511 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 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/3] 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/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 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`.

^ 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_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: 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
                   ` (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: 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 ` 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: 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
  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: 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
                   ` (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

end of thread, other threads:[~2023-07-03 16:09 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2023-06-26 19:51 ` mhmdanas
2023-06-26 19:51 ` mhmdanas
2023-06-26 19:51 ` mhmdanas
2023-06-26 20:08 ` [PR PATCH] [Updated] " Chocimier
2023-06-26 20:09 ` Chocimier
2023-06-26 20:09 ` Chocimier
2023-06-26 20:09 ` Chocimier
2023-06-26 20:09 ` Chocimier
2023-06-26 20:09 ` Chocimier
2023-06-26 20:09 ` Chocimier
2023-06-26 20:25 ` Chocimier
2023-06-26 20:29 ` [PR REVIEW] " Chocimier
2023-06-27  9:37 ` classabbyamp
2023-06-27 10:33 ` Bnyro
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).