| Message ID | 20251103145133.235558-1-srinuvasan.a@siemens.com |
|---|---|
| State | Superseded |
| Headers | show |
| Series | [v4] debianize: set appropriate Standards-Version for each debian suite | expand |
> + if [ -z "${DEBIAN_STANDARDS_VERSION}" ]; then > + case "${BASE_DISTRO_CODENAME}" in > + buster) DEBIAN_STANDARDS_VERSION="4.3.0" ;; > + bullseye) DEBIAN_STANDARDS_VERSION="4.5.1" ;; > + bookworm) DEBIAN_STANDARDS_VERSION="4.6.2" ;; > + trixie|sid|*) DEBIAN_STANDARDS_VERSION="4.7.2" ;; > + esac > + fi I wonder if it might be better to do this using BitBake variable overrides, like: DEBIAN_STANDARDS_VERSION:buster = "4.3.0" DEBIAN_STANDARDS_VERSION:bullseye = "4.5.1" ... etc DEBIAN_STANDARDS_VERSION = "4.7.2" What do you think? Apart from that, this is missing the distro codenames for Ubuntu, meaning it would use the default 'DEBIAN_STANDARDS_VERSION = "4.7.2"' for all Ubuntu releases, which I'm pretty sure would break older releases like focal. I guess the default should probably be the lowest standards versions supported by all releases, rather than the newest. Cheers, Isaac On 03/11/2025 15:51, srinuvasan.a via isar-users wrote: > From: srinuvasan <srinuvasan.a@siemens.com> > > The Standards-Version field in debian/control declares the Debian Policy > version that the package complies with. Currently, the custom source packages > use a hard-coded Standards-Version: 3.9.6, which is obsolete and does not align > with the policies of newer Debian releases > > Update the packaging to set the correct Standards-Version dynamically based on > the target Debian suite, ensuring compliance with the appropriate Debian Policy > version for each release. > > Debian Policy evolves over time, newer versions may add, remove, or deprecate > control fields and packaging behaviors. Using an outdated Standards-Version > can miss required or recommended fields, leading to QA or functional issues. > > Examples: > - Rules-Requires-Root (Policy 4.1.0): declares if root privileges are needed > during debian/rules execution, improves reproducibility and isolation. > - Homepage (Policy 3.9.3): provides upstream project link for better metadata. > > Older Standards-Version(Policy 3.9.6) may trigger lintian warnings such as: > W: source: missing-rules-requires-root-field > W: source: missing-homepage-field > > Keeping Standards-Version current ensures clean builds, QA compliance, > and future compatibility. > > Signed-off-by: srinuvasan <srinuvasan.a@siemens.com> > --- > RECIPE-API-CHANGELOG.md | 7 +++++++ > meta/classes/debianize.bbclass | 14 ++++++++++++-- > 2 files changed, 19 insertions(+), 2 deletions(-) > > diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md > index cf04fa5c..9ddb8ae6 100644 > --- a/RECIPE-API-CHANGELOG.md > +++ b/RECIPE-API-CHANGELOG.md > @@ -242,6 +242,13 @@ consumption by imaging classes. > Additional build dependencies of auto-debianized packages can now be defined > by setting DEBIAN_BUILD_DEPENDS. > > +### Add DEBIAN_STANDARDS_VERSION as a deb_debianize parameter > + > +By default, the Standards-Version field in the debian/control file is automatically > +set based on the corresponding Debian suite. > +If you need to override this default value, you can do so by defining > +the DEBIAN_STANDARDS_VERSION variable in your recipe. > + > ### Separation of ${S} and ${D} in dpkg-raw > > ${S} can now be used for checking out sources without being linked implicitly > diff --git a/meta/classes/debianize.bbclass b/meta/classes/debianize.bbclass > index 1f54e8f9..4caf0ce5 100644 > --- a/meta/classes/debianize.bbclass > +++ b/meta/classes/debianize.bbclass > @@ -80,14 +80,24 @@ deb_create_control[vardeps] += "DEBIANIZE_BUILD_DEPENDS \ > DEBIAN_BREAKS \ > DEBIAN_BUILT_USING \ > DEBIAN_CONFLICTS \ > - DEBIAN_RULES_REQUIRES_ROOT" > + DEBIAN_RULES_REQUIRES_ROOT \ > + DEBIAN_STANDARDS_VERSION" > deb_create_control() { > # Add Source section > + if [ -z "${DEBIAN_STANDARDS_VERSION}" ]; then > + case "${BASE_DISTRO_CODENAME}" in > + buster) DEBIAN_STANDARDS_VERSION="4.3.0" ;; > + bullseye) DEBIAN_STANDARDS_VERSION="4.5.1" ;; > + bookworm) DEBIAN_STANDARDS_VERSION="4.6.2" ;; > + trixie|sid|*) DEBIAN_STANDARDS_VERSION="4.7.2" ;; > + esac > + fi > + > cat << EOF > ${S}/debian/control > Source: ${BPN} > Section: ${@ deb_list_beautify(d, 'DEBIAN_SECTION')} > Priority: optional > -Standards-Version: 3.9.6 > +Standards-Version: ${DEBIAN_STANDARDS_VERSION} > Maintainer: ${MAINTAINER} > Build-Depends: ${@ deb_list_beautify(d, 'DEBIANIZE_BUILD_DEPENDS')} > EOF
On Mon, Nov 3, 2025 at 8:26 PM 'Isaac True' via isar-users < isar-users@googlegroups.com> wrote: > > + if [ -z "${DEBIAN_STANDARDS_VERSION}" ]; then > > + case "${BASE_DISTRO_CODENAME}" in > > + buster) DEBIAN_STANDARDS_VERSION="4.3.0" ;; > > + bullseye) DEBIAN_STANDARDS_VERSION="4.5.1" ;; > > + bookworm) DEBIAN_STANDARDS_VERSION="4.6.2" ;; > > + trixie|sid|*) DEBIAN_STANDARDS_VERSION="4.7.2" ;; > > + esac > > + fi > > I wonder if it might be better to do this using BitBake variable > overrides, like: > > DEBIAN_STANDARDS_VERSION:buster = "4.3.0" > DEBIAN_STANDARDS_VERSION:bullseye = "4.5.1" > ... etc > DEBIAN_STANDARDS_VERSION = "4.7.2" > > What do you think? > Yes this approach also looks good to me, let me refactor the code. > > Apart from that, this is missing the distro codenames for Ubuntu, > meaning it would use the default 'DEBIAN_STANDARDS_VERSION = "4.7.2"' > for all Ubuntu releases, which I'm pretty sure would break older > releases like focal. > > I guess the default should probably be the lowest standards versions > supported by all releases, rather than the newest. > Sure, I will update the default one to the lowest standards, thanks. > > Cheers, > Isaac > > On 03/11/2025 15:51, srinuvasan.a via isar-users wrote: > > From: srinuvasan <srinuvasan.a@siemens.com> > > > > The Standards-Version field in debian/control declares the Debian Policy > > version that the package complies with. Currently, the custom source > packages > > use a hard-coded Standards-Version: 3.9.6, which is obsolete and does > not align > > with the policies of newer Debian releases > > > > Update the packaging to set the correct Standards-Version dynamically > based on > > the target Debian suite, ensuring compliance with the appropriate Debian > Policy > > version for each release. > > > > Debian Policy evolves over time, newer versions may add, remove, or > deprecate > > control fields and packaging behaviors. Using an outdated > Standards-Version > > can miss required or recommended fields, leading to QA or functional > issues. > > > > Examples: > > - Rules-Requires-Root (Policy 4.1.0): declares if root privileges are > needed > > during debian/rules execution, improves reproducibility and > isolation. > > - Homepage (Policy 3.9.3): provides upstream project link for better > metadata. > > > > Older Standards-Version(Policy 3.9.6) may trigger lintian warnings such > as: > > W: source: missing-rules-requires-root-field > > W: source: missing-homepage-field > > > > Keeping Standards-Version current ensures clean builds, QA compliance, > > and future compatibility. > > > > Signed-off-by: srinuvasan <srinuvasan.a@siemens.com> > > --- > > RECIPE-API-CHANGELOG.md | 7 +++++++ > > meta/classes/debianize.bbclass | 14 ++++++++++++-- > > 2 files changed, 19 insertions(+), 2 deletions(-) > > > > diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md > > index cf04fa5c..9ddb8ae6 100644 > > --- a/RECIPE-API-CHANGELOG.md > > +++ b/RECIPE-API-CHANGELOG.md > > @@ -242,6 +242,13 @@ consumption by imaging classes. > > Additional build dependencies of auto-debianized packages can now be > defined > > by setting DEBIAN_BUILD_DEPENDS. > > > > +### Add DEBIAN_STANDARDS_VERSION as a deb_debianize parameter > > + > > +By default, the Standards-Version field in the debian/control file is > automatically > > +set based on the corresponding Debian suite. > > +If you need to override this default value, you can do so by defining > > +the DEBIAN_STANDARDS_VERSION variable in your recipe. > > + > > ### Separation of ${S} and ${D} in dpkg-raw > > > > ${S} can now be used for checking out sources without being linked > implicitly > > diff --git a/meta/classes/debianize.bbclass > b/meta/classes/debianize.bbclass > > index 1f54e8f9..4caf0ce5 100644 > > --- a/meta/classes/debianize.bbclass > > +++ b/meta/classes/debianize.bbclass > > @@ -80,14 +80,24 @@ deb_create_control[vardeps] += > "DEBIANIZE_BUILD_DEPENDS \ > > DEBIAN_BREAKS \ > > DEBIAN_BUILT_USING \ > > DEBIAN_CONFLICTS \ > > - DEBIAN_RULES_REQUIRES_ROOT" > > + DEBIAN_RULES_REQUIRES_ROOT \ > > + DEBIAN_STANDARDS_VERSION" > > deb_create_control() { > > # Add Source section > > + if [ -z "${DEBIAN_STANDARDS_VERSION}" ]; then > > + case "${BASE_DISTRO_CODENAME}" in > > + buster) DEBIAN_STANDARDS_VERSION="4.3.0" ;; > > + bullseye) DEBIAN_STANDARDS_VERSION="4.5.1" ;; > > + bookworm) DEBIAN_STANDARDS_VERSION="4.6.2" ;; > > + trixie|sid|*) DEBIAN_STANDARDS_VERSION="4.7.2" ;; > > + esac > > + fi > > + > > cat << EOF > ${S}/debian/control > > Source: ${BPN} > > Section: ${@ deb_list_beautify(d, 'DEBIAN_SECTION')} > > Priority: optional > > -Standards-Version: 3.9.6 > > +Standards-Version: ${DEBIAN_STANDARDS_VERSION} > > Maintainer: ${MAINTAINER} > > Build-Depends: ${@ deb_list_beautify(d, 'DEBIANIZE_BUILD_DEPENDS')} > > EOF > > -- > Isaac True > emlix GmbH, https://www.emlix.com > Fon +49 228 94 77 96 94 > Bachstraße 6, 53115 Bonn, Germany > Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160 > Geschäftsfuehrung: Heike Jordan, Dr. Uwe Kracke > Ust-IdNr.: DE 205 198 055 > > emlix - smart embedded open source > > -- > You received this message because you are subscribed to the Google Groups > "isar-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to isar-users+unsubscribe@googlegroups.com. > To view this discussion visit > https://groups.google.com/d/msgid/isar-users/a4e3ee35-2f88-47e8-af7a-93fd2e0aba68%40emlix.com > . >
diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md index cf04fa5c..9ddb8ae6 100644 --- a/RECIPE-API-CHANGELOG.md +++ b/RECIPE-API-CHANGELOG.md @@ -242,6 +242,13 @@ consumption by imaging classes. Additional build dependencies of auto-debianized packages can now be defined by setting DEBIAN_BUILD_DEPENDS. +### Add DEBIAN_STANDARDS_VERSION as a deb_debianize parameter + +By default, the Standards-Version field in the debian/control file is automatically +set based on the corresponding Debian suite. +If you need to override this default value, you can do so by defining +the DEBIAN_STANDARDS_VERSION variable in your recipe. + ### Separation of ${S} and ${D} in dpkg-raw ${S} can now be used for checking out sources without being linked implicitly diff --git a/meta/classes/debianize.bbclass b/meta/classes/debianize.bbclass index 1f54e8f9..4caf0ce5 100644 --- a/meta/classes/debianize.bbclass +++ b/meta/classes/debianize.bbclass @@ -80,14 +80,24 @@ deb_create_control[vardeps] += "DEBIANIZE_BUILD_DEPENDS \ DEBIAN_BREAKS \ DEBIAN_BUILT_USING \ DEBIAN_CONFLICTS \ - DEBIAN_RULES_REQUIRES_ROOT" + DEBIAN_RULES_REQUIRES_ROOT \ + DEBIAN_STANDARDS_VERSION" deb_create_control() { # Add Source section + if [ -z "${DEBIAN_STANDARDS_VERSION}" ]; then + case "${BASE_DISTRO_CODENAME}" in + buster) DEBIAN_STANDARDS_VERSION="4.3.0" ;; + bullseye) DEBIAN_STANDARDS_VERSION="4.5.1" ;; + bookworm) DEBIAN_STANDARDS_VERSION="4.6.2" ;; + trixie|sid|*) DEBIAN_STANDARDS_VERSION="4.7.2" ;; + esac + fi + cat << EOF > ${S}/debian/control Source: ${BPN} Section: ${@ deb_list_beautify(d, 'DEBIAN_SECTION')} Priority: optional -Standards-Version: 3.9.6 +Standards-Version: ${DEBIAN_STANDARDS_VERSION} Maintainer: ${MAINTAINER} Build-Depends: ${@ deb_list_beautify(d, 'DEBIANIZE_BUILD_DEPENDS')} EOF