public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: Anton Mikanovich <amikan@ilbers.de>
To: isar-users@googlegroups.com
Cc: Anton Mikanovich <amikan@ilbers.de>
Subject: [PATCH v3] debianize: Fix unexpected characters in package lists
Date: Thu, 20 Mar 2025 16:45:12 +0200	[thread overview]
Message-ID: <20250320144512.342515-1-amikan@ilbers.de> (raw)

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>
---

Changes since v2:
- Fix missing vardeps.

Changes since v1:
- Update also file headers.

 meta/classes/base.bbclass      | 16 ++++++++++++++++
 meta/classes/debianize.bbclass | 21 +++++++++++++++------
 2 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 7d4ab49f..c730eec9 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -1,4 +1,8 @@
+# This software is a part of ISAR.
+#
 # Copyright (C) 2003  Chris Larson
+# Copyright (C) 2015-2025 ilbers GmbH
+# Copyright (C) 2017-2025 Siemens AG
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -334,3 +338,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..4989c601 100644
--- a/meta/classes/debianize.bbclass
+++ b/meta/classes/debianize.bbclass
@@ -1,6 +1,7 @@
 # This software is a part of ISAR.
 # Copyright (C) 2017-2019 Siemens AG
 # Copyright (C) 2021 Siemens Mobility GmbH
+# Copyright (C) 2025 ilbers GmbH
 #
 # SPDX-License-Identifier: MIT
 
@@ -18,6 +19,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}"
@@ -66,6 +69,12 @@ EOF
 }
 
 
+deb_create_control[vardeps] += "DEBIANIZE_BUILD_DEPENDS \
+                                DEBIAN_DEPENDS \
+                                DEBIAN_PROVIDES \
+                                DEBIAN_REPLACES \
+                                DEBIAN_BREAKS \
+                                DEBIAN_CONFLICTS"
 deb_create_control() {
 	cat << EOF > ${S}/debian/control
 Source: ${BPN}
@@ -73,15 +82,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
-- 
2.34.1

-- 
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/20250320144512.342515-1-amikan%40ilbers.de.

             reply	other threads:[~2025-03-20 14:45 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-20 14:45 Anton Mikanovich [this message]
2025-03-27 10:33 ` Uladzimir Bely

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250320144512.342515-1-amikan@ilbers.de \
    --to=amikan@ilbers.de \
    --cc=isar-users@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox