Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:manual:contrib:packaging_guidelines [2022/03/08 22:36]
i3_relativism ↷ Page moved from en:project:packaging_guidelines to en:contrib:packaging_guidelines
en:manual:contrib:packaging_guidelines [2024/02/22 18:06] (current)
throgh
Line 21: Line 21:
     * b) If a package is an important dependency for active projects and there is no a current replacement for it.     * b) If a package is an important dependency for active projects and there is no a current replacement for it.
     * c) If a package is a driver, firmware or hardware emulation and there is no a current replacement for it.     * c) If a package is a driver, firmware or hardware emulation and there is no a current replacement for it.
-  - **Snapshot versions**: Since Hyperbola is a long-term support (LTS) distribution; all packages are based on Arch snapshots and package versions based on Debian from the above-mentioned date announced in the Hyperbola mailing lists or main page, and designed to be supported for a longer than normal period until the [[en:project:releases|next stable release]]. Exceptions are considered:+  - **Package versions**: Since Hyperbola is a long-term support (LTS) system; all packages are based on the package versions Debian is using foremost in the current stable or old-stable and designed to be supported for a longer than normal period until the [[en:project:releases|next stable release]]. Exceptions are considered:
     * a) Binutils and GCC should follow the same version used in HyperbolaBSD.     * a) Binutils and GCC should follow the same version used in HyperbolaBSD.
     * b) If a package version needs taking security parts from a newer version, but it is inefficient to be backported, a newer version could be considered as exception (see Backporting amendment for further details).     * b) If a package version needs taking security parts from a newer version, but it is inefficient to be backported, a newer version could be considered as exception (see Backporting amendment for further details).
Line 27: Line 27:
     * a) If the current package used on the [[en:project:releases|current stable release]] needs many modifications spread across multiple files of the code to solve some specific issue (eg. security issue) and it is inefficient to be fixed.     * a) If the current package used on the [[en:project:releases|current stable release]] needs many modifications spread across multiple files of the code to solve some specific issue (eg. security issue) and it is inefficient to be fixed.
     * b) All newer version packages and its required newer version library and dependency packages should be repackaged with the appropriate package release too, since it will be rebuilt in a stable environment so that it will run without new libraries. This suffix is applied until the [[en:project:releases|next stable release]].     * b) All newer version packages and its required newer version library and dependency packages should be repackaged with the appropriate package release too, since it will be rebuilt in a stable environment so that it will run without new libraries. This suffix is applied until the [[en:project:releases|next stable release]].
-    * c) All newer version packages should follow the snapshot version and Debian'package version rules from Hyperbola Packaging Guidelines using its release date as a snapshot version and package versions based on Debian, it means Hyperbola **will not accept** recurrent drastic version changes as long as fixing is possible.+    * c) All newer version packages should follow the package version rules from Hyperbola Packaging Guidelines, it means Hyperbola **will not accept** recurrent drastic version changes as long as fixing is possible.
   - **Package licenses**: All packages contain a license field that specifies the license(s) source that apply to the package using the commonly used licenses in /usr/share/licenses/common. It means, if a source is under a license which is available in /usr/share/licenses/common (eg. GPL-2), simply it should be referenced in the package license field (eg. license=('GPL-2')). If it is not the case, then it should be included in the package itself and set license=('custom:LicenseName'). The license file should be placed in /usr/share/licenses/$pkgname when building the package. If multiple licenses are applicable, the conditions are:   - **Package licenses**: All packages contain a license field that specifies the license(s) source that apply to the package using the commonly used licenses in /usr/share/licenses/common. It means, if a source is under a license which is available in /usr/share/licenses/common (eg. GPL-2), simply it should be referenced in the package license field (eg. license=('GPL-2')). If it is not the case, then it should be included in the package itself and set license=('custom:LicenseName'). The license file should be placed in /usr/share/licenses/$pkgname when building the package. If multiple licenses are applicable, the conditions are:
     * a) If an upstream source provides the preference to choose a license, add only that license in the package license field. The chosen license must be compatible with the linked library dependencies used by the package. (eg. if the chosen license for ffmpeg is the version 3 of LGPL, then the configure parameter `--enable-version3` must be added in ffmpeg's PKGBUILD to activate this licensing option and use the LGPL-3 compatible libraries).     * a) If an upstream source provides the preference to choose a license, add only that license in the package license field. The chosen license must be compatible with the linked library dependencies used by the package. (eg. if the chosen license for ffmpeg is the version 3 of LGPL, then the configure parameter `--enable-version3` must be added in ffmpeg's PKGBUILD to activate this licensing option and use the LGPL-3 compatible libraries).
Line 48: Line 48:
   - **GPG**: All packages should use signature verification. Exceptions are considered:   - **GPG**: All packages should use signature verification. Exceptions are considered:
     * a) If tarballs do not contain signatures.     * a) If tarballs do not contain signatures.
 +    * b) If the corresponding gpg-key is no longer valid.
   - **Anti-obfuscation**: obfuscation is the deliberate act of creating obfuscated code, i.e. source or machine code that is difficult for humans to understand. All obfuscated code will be **rejected** without exceptions.   - **Anti-obfuscation**: obfuscation is the deliberate act of creating obfuscated code, i.e. source or machine code that is difficult for humans to understand. All obfuscated code will be **rejected** without exceptions.