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