@@ -727,3 +727,11 @@ Changes in next
This was never documented and never had practical relevance. `oci-archive` is
the useful OCI image format that can be imported, e.g., by podman.
+
+### Allow setting Rules-Requires-Root
+
+Recipes based on the `debianize` class can now set the
+`DEBIAN_RULES_REQUIRES_ROOT` variable to control the value of the
+`Rules-Requires-Root` setting in the `debian/control` file. If this variable is
+unset (the default), `Rules-Requires-Root` will not be added. Otherwise,
+`Rules-Requires-Root` will be added and set to the value of the variable.
@@ -16,6 +16,7 @@ DEBIAN_BREAKS ??= ""
DEBIAN_MULTI_ARCH ??= "no"
DEBIAN_COMPAT ??= "10"
DEBIAN_CHANGELOG_TIMESTAMP ??= "3600"
+DEBIAN_RULES_REQUIRES_ROOT ??= ""
DESCRIPTION ??= "must not be empty"
MAINTAINER ??= "Unknown maintainer <unknown@example.com>"
@@ -74,8 +75,10 @@ deb_create_control[vardeps] += "DEBIANIZE_BUILD_DEPENDS \
DEBIAN_PROVIDES \
DEBIAN_REPLACES \
DEBIAN_BREAKS \
- DEBIAN_CONFLICTS"
+ DEBIAN_CONFLICTS \
+ DEBIAN_RULES_REQUIRES_ROOT"
deb_create_control() {
+ # Add Source section
cat << EOF > ${S}/debian/control
Source: ${BPN}
Section: misc
@@ -83,6 +86,18 @@ Priority: optional
Standards-Version: 3.9.6
Maintainer: ${MAINTAINER}
Build-Depends: ${@ deb_list_beautify(d, 'DEBIANIZE_BUILD_DEPENDS')}
+EOF
+
+ # If a value has been set, add the value of DEBIAN_RULES_REQUIRES_ROOT to
+ # the control file.
+ if [ -n "${DEBIAN_RULES_REQUIRES_ROOT}" ]; then
+ echo "Rules-Requires-Root: ${DEBIAN_RULES_REQUIRES_ROOT}" >> \
+ ${S}/debian/control
+ fi
+
+ # Add Package section proceeded by an empty line to separate it from the
+ # previous section.
+ cat << EOF >> ${S}/debian/control
Package: ${BPN}
Architecture: ${DPKG_ARCH}
Add a new variable "DEBIAN_RULES_REQUIRES_ROOT" which can be used to control the value of the "Rules-Requires-Root" parameter in the debian/control file. If this variable has no value (the default behaviour), nothing is added. Otherwise, it appends "Rules-Requires-Root: ${DEBIAN_RULES_REQUIRES_ROOT}" to the Source section of the debian/control file. This can be useful when using dpkg-raw, as setting this value to "no" skips calling `fakeroot` during the package build process, which can provide a considerable speedup in some environments (e.g. systems with very high open file descriptor limits and specific versions of fakeroot). Signed-off-by: Isaac True <itrue@emlix.com> --- Changes in v2: - Add information to RECIPE-API-CHANGELOG.md - Only add Rules-Requires-Root if the DEBIAN_RULES_REQUIRES_ROOT variable has been set RECIPE-API-CHANGELOG.md | 8 ++++++++ meta/classes/debianize.bbclass | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-)