Package: dput-ng
Version: 1.32
Dear maintainers,
It seems the `--override` option in dput-ng doesn't really override
parameters in profiles.
I've added the `check-debs` hook to my test profile and added the
following default values:
"check-debs": {
"enforce": "source",
"skip": false
},
To debug this issue, I also made `dput/uploader.py` print the values of
`args.override` and `profile` right before `run_pre_hooks(changes,
profile)` is ran:
foo@bar:/usr/lib/python3/dist-packages/dput# diff -C 3 uploader.py
new_uploader.py
*** uploader.py 2021-02-20 02:09:11.222489435 -0500
--- new_uploader.py 2021-02-20 02:09:05.314403878 -0500
***
*** 310,315
--- 310,317
if changes.get_changes_file().endswith(".changes"):
if 'hooks' in profile:
+ print("Printing overrides:\n", args.override) ## NEW
+ print("Printing profile:\n", profile) ## NEW
run_pre_hooks(changes, profile)
else:
logger.trace(profile)
Here's the result:
foo@bar:$ dput --override "check-debs.enforce=debs" --override
"check-debs.skip=true" test foo_1.0.0-1_amd64.changes
Uploading foo using ftp to test (host: test.org; directory:
/pub/UploadQueue/)
Printing overrides:
{'check-debs': {'enforce': [['debs']], 'skip': [['true']]}}
Printing profile:
{'name': 'test', 'allow_dcut': True, 'allow_unsigned_uploads': False,
'allowed_distributions': '(?!UNRELEASED)', 'default_host_main': 'test',
'full_upload_log': False, 'hash': 'md5', 'interface': 'cli', 'login':
'anonymous', 'meta': 'debian', 'method': 'ftp', 'passive_ftp': True,
'post_upload_command': '', 'pre_upload_command': '', 'run_lintian':
False, 'scp_compress': False, 'allowed-distribution':
{'codename-groups': ['general', 'backport', 'rm-managed']}, 'codenames':
'debian', 'hooks': ['allowed-distribution', 'protected-distribution',
'check-debs', 'checksum', 'suite-mismatch', 'gpg'], 'run_dinstall':
False, 'check_version': False, 'fqdn': 'test.org', 'incoming':
'/pub/UploadQueue/', 'check-debs': {'enforce': 'source', 'skip': False},
'valid_commands': ['break-the-archive', 'cancel', 'dm', 'reschedule',
'rm', 'upload']}
running allowed-distribution: check whether a local profile permits
uploads to the target distribution
running protected-distribution: warn before uploading to distributions
where a special policy applies
running check-debs: makes sure the upload contains a binary package
There are .debs in this upload, and enforcing they don't exist.
As you can see, the proper overrides are passed to `args.override`, but
they don't seem to be merged with the `profile` variable, which is the
one passed to the `run_pre_hooks(changes, profile)` command.
This makes it impossible to actually override any profile variables :(
I've put this in on my TODO list, but I'm not sure I'll have time to
send a patch anytime soon.
If someone else wants to have a go at this bug, please be my guest :)
--
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Louis-Philippe Véronneau
⢿⡄⠘⠷⠚⠋ po...@debian.org / veronneau.org
⠈⠳⣄