debianize: Fix unexpected characters in package lists

Message ID 20250318155216.263546-1-amikan@ilbers.de
State Superseded, archived
Headers show
Series debianize: Fix unexpected characters in package lists | expand

Commit Message

Anton Mikanovich March 18, 2025, 3:52 p.m. UTC
Newer dpkg-deb versions got more pedantic to the control file format.

Introduce debian package list format helper to cleanup empty items or
unexpected commas in dependency options passing to the default control
file.

This prevents errors like:
| dpkg-deb: error: unexpected end of file in archive magic version number in *.deb
| Unexpected character ')' parsing formula 'Package (= ), Architecture (= ), $PackageType (= deb)'!
| There have been errors!
caused by empty DEBIAN_BUILD_DEPENDS value in the line:
| Build-Depends: debhelper-compat (= ${DEBIAN_COMPAT}), ${DEBIAN_BUILD_DEPENDS}
which results in:
| Build-Depends: debhelper-compat (= 13),

Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
 meta/classes/base.bbclass      | 12 ++++++++++++
 meta/classes/debianize.bbclass | 14 ++++++++------
 2 files changed, 20 insertions(+), 6 deletions(-)

Patch

diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 7d4ab49f..2a0eadd7 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -334,3 +334,15 @@  do_unpack[postfuncs] += "create_source_date_epoch_stamp"
 
 def get_source_date_epoch_value(d):
     return oe.reproducible.epochfile_read(d.getVar('SDE_FILE'), d)
+
+def deb_list_beautify(d, varname):
+    line = d.getVar(varname)
+    if not line:
+        return ''
+
+    var_list = []
+    for a in line.split(','):
+        stripped = a.strip()
+        if stripped:
+            var_list.append(stripped)
+    return ', '.join(var_list)
diff --git a/meta/classes/debianize.bbclass b/meta/classes/debianize.bbclass
index 5e9d76f3..b9ebc4ba 100644
--- a/meta/classes/debianize.bbclass
+++ b/meta/classes/debianize.bbclass
@@ -18,6 +18,8 @@  DEBIAN_CHANGELOG_TIMESTAMP ??= "3600"
 DESCRIPTION ??= "must not be empty"
 MAINTAINER ??= "Unknown maintainer <unknown@example.com>"
 
+DEBIANIZE_BUILD_DEPENDS ?= "debhelper-compat (= ${DEBIAN_COMPAT}), ${DEBIAN_BUILD_DEPENDS}"
+
 deb_add_changelog() {
 	changelog_v="${CHANGELOG_V}"
 	timestamp="${DEBIAN_CHANGELOG_TIMESTAMP}"
@@ -73,15 +75,15 @@  Section: misc
 Priority: optional
 Standards-Version: 3.9.6
 Maintainer: ${MAINTAINER}
-Build-Depends: debhelper-compat (= ${DEBIAN_COMPAT}), ${DEBIAN_BUILD_DEPENDS}
+Build-Depends: ${@ deb_list_beautify(d, 'DEBIANIZE_BUILD_DEPENDS')}
 
 Package: ${BPN}
 Architecture: ${DPKG_ARCH}
-Depends: ${DEBIAN_DEPENDS}
-Provides: ${DEBIAN_PROVIDES}
-Replaces: ${DEBIAN_REPLACES}
-Breaks: ${DEBIAN_BREAKS}
-Conflicts: ${DEBIAN_CONFLICTS}
+Depends: ${@ deb_list_beautify(d, 'DEBIAN_DEPENDS')}
+Provides: ${@ deb_list_beautify(d, 'DEBIAN_PROVIDES')}
+Replaces: ${@ deb_list_beautify(d, 'DEBIAN_REPLACES')}
+Breaks: ${@ deb_list_beautify(d, 'DEBIAN_BREAKS')}
+Conflicts: ${@ deb_list_beautify(d, 'DEBIAN_CONFLICTS')}
 Multi-Arch: ${DEBIAN_MULTI_ARCH}
 Description: ${DESCRIPTION}
 EOF