From 7046983d7c5508ca25f15c1271654394c4883fe7 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sun, 15 Mar 2026 10:13:26 +0100 Subject: [PATCH] cmds.projects.BaseCmdPkgRelations: --syntax debian Add support for --syntax to BaseCmdPkgRelations.pkg_relations(), and default to 'semver', i.e. the current state of affairs. If that's changed to 'debian', relations declared in project.conf as pkg.requires.os.devel = jw-pkg-devel > 1.2.3 will be output as jw-pkg-devel >> 1.2.3 which is what Debian expects. Signed-off-by: Jan Lindemann --- make/rpmdist.mk | 2 +- .../pkg/cmds/projects/BaseCmdPkgRelations.py | 20 +++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/make/rpmdist.mk b/make/rpmdist.mk index a6661323..98e2d6d5 100644 --- a/make/rpmdist.mk +++ b/make/rpmdist.mk @@ -48,7 +48,7 @@ PCKG_TAR ?= $(RPM_PROJECT)-$(RPM_VERSION).tar.gz ifeq ($(PKG_FORMAT),debian) # too bad: debian Requires: somepkg = 1.2.3 isn't satisfied by somepkg-1.2.3-5 - PROJ_QUERY_PKG_REQUIRES_EXTRA_ARGS = --dont-strip-revision + PROJ_QUERY_PKG_REQUIRES_EXTRA_ARGS = --syntax debian PCKG_RPM_RUN_I386 ?= $(RPM_PROJECT)-run_$(RPM_VERSION)_$(RPM_ARCH).deb ifeq ($(CREATE_DEVEL),true) PCKG_RPM_DEVEL_I386 ?= $(RPM_PROJECT)-devel_$(RPM_VERSION)_$(RPM_ARCH).deb diff --git a/src/python/jw/pkg/cmds/projects/BaseCmdPkgRelations.py b/src/python/jw/pkg/cmds/projects/BaseCmdPkgRelations.py index 1bee712f..f8022824 100644 --- a/src/python/jw/pkg/cmds/projects/BaseCmdPkgRelations.py +++ b/src/python/jw/pkg/cmds/projects/BaseCmdPkgRelations.py @@ -19,6 +19,9 @@ class BaseCmdPkgRelations(Cmd): ignore = args.ignore.split(',') flavours = args.flavour.split(',') + expand_semver_revision_range = args.expand_semver_revision_range + if args.syntax == 'debian': + expand_semver_revision_range = True log(DEBUG, f'flavour="{args.flavour}", subsecs="{", ".join(subsecs)}", "ignore="{args.ignore}"') version_pattern = re.compile("[0-9-.]*") @@ -69,11 +72,11 @@ class BaseCmdPkgRelations(Cmd): pass else: raise Exception("Unknown version specifier in " + spec) - if not args.expand_semver_revision_range: + if not expand_semver_revision_range: expanded_deps = [dep] else: expanded_deps = [] - if args.expand_semver_revision_range and len(dep) == 3: + if expand_semver_revision_range and len(dep) == 3: semver = re.split(r'[.-]', version) if len(semver) != 4: expanded_deps = [dep] @@ -92,6 +95,17 @@ class BaseCmdPkgRelations(Cmd): case _: raise NotImplementedError(f'Expanding SemVer range "{dep[0]} {dep[1]} {dep[3]}" is not yet implemented') for expanded_dep in expanded_deps: + match args.syntax: + case 'semver': + pass + case 'debian': + match expanded_dep[1]: + case '<': + expanded_dep[1] = '<<' + case '>': + expanded_dep[1] = '>>' + case '_': + raise NotImplementedError(f'Unknown dependency syntax "{args.syntax}" for dependency "{dep[0]} {dep[1]} {dep[3]}"') dep_str = ' '.join(expanded_dep) if not dep_str in r: log(DEBUG, f'Appending dependency "{dep_str}"') @@ -119,6 +133,8 @@ class BaseCmdPkgRelations(Cmd): default=False, help='Always treat VERSION macro as VERSION-REVISION') parser.add_argument('--expand-semver-revision-range', action='store_true', default=False, help='Always treat =VERSION macro as >= VERSION-0 and < (VERSION+1)-0') + parser.add_argument('--syntax', choices=['semver', 'debian'], + default='semver', help='Output syntax') parser.add_argument('--recursive', action='store_true', default=False, help='Find dependencies recursively') parser.add_argument('--dont-expand-version-macros', action='store_true',