Re: [PATCH gentoolkit] bin: Add merge-driver-ekeyword
Zac Medico <[email protected]> Mon, 28 Dec 2020 21:54:25 -0800
| Newsgroups | gmane.linux.gentoo.portage.devel |
|---|---|
| Message-ID | <[email protected]> |
On 12/28/20 5:09 PM, Zac Medico wrote:
> On 12/28/20 3:15 PM, Matt Turner wrote:
>> +def apply_keyword_changes(ebuild: str, pathname: str,
>> + changes: List[Tuple[Optional[str],
>> + Optional[str]]]) -> int:
>> + result: int = 0
>> +
>> + # ekeyword will only modify files named *.ebuild, so make a symlink
>> + ebuild_symlink: str = os.path.basename(pathname)
>> + os.symlink(ebuild, ebuild_symlink)
>
> Are we sure that the current working directory is an entirely safe place
> to create this symlink? A simple fix would be to use
> tempfile.TemporaryDirectory to create a temporary directory to hold the
> symlink. Or, we could change ekeyword to assume that an argument is an
> ebuild if os.path.isfile(arg) succeeds.
>
>> + for removals, additions in changes:
>> + args = []
>> + for rem in removals:
>> + # Drop leading '~' and '-' characters and prepend '^'
>> + i = 1 if rem[0] in ('~', '-') else 0
>> + args.append('^' + rem[i:])
>> + if additions:
>> + args.extend(additions)
>> + args.append(ebuild_symlink)
>> +
>> + result = ekeyword.main(args)
Another option is to bypass the ekeyword.main function, like this:
try:
ekeyword.process_ebuild(pathname, list(map(ekeyword.arg_to_op, args))
except Exception:
result = 1
traceback.print_exc()
else:
result = 0
>> + if result != 0:
>> + break
>> +
>> + os.remove(ebuild_symlink)
>> + return result
>
>
--
Thanks,
Zac
signature.asc
(application/pgp-signature, 981 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQKTBAEBCgB9FiEE8OgXaltWzqgSupCu0HX7jBBKPSAFAl/qxJFfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEYw RTgxNzZBNUI1NkNFQTgxMkJBOTBBRUQwNzVGQjhDMTA0QTNEMjAACgkQ0HX7jBBK PSAWvBAAvaLYz9tfDGemIxAnBPy0AjKIdowjVP4kWVI1BthpxVo7zwmpL/iLZrzZ tm7pqKkxXP+LW7++DvjbP0NZMDE7C/G1JyGRBy5AHEq0OZXmcWDK0h05nL+R/ZDx I8v8H2FnARcgl3ghbjzEOTRygmSNDXETWCWIOylIAQc1JP5zwsbyFtiIAm/NpbdW DbKT/hh2uGjx2l0pfkmSCTB17/nQrHZ7JJq1z0+s+CP/6LV2kxXKYr2/DcKtcN+O UNIKDZ7fpDct77PjkXBZI7sTtYkMb2KNAqzyvFtYSk8RY3+GYGeAx4gLv78/Xf2m 43vbFLoR6bmnceEG8FvbyCsibY8vhsCR6md43mbJKN/SsjEy4jI4rq9OhaLITP+I vn5CuSfb3UY9OC4yMMBF1V+0xv13YoWtCBJIAeLflkwIrpKiRDs6ZOgmC68cQGSW 4/QXLj3gnO685rRPKQxZoE3AK3V4shJaTI9BSdvh8boIQzxf6HfYgRb5mUSERXJ2 cxYIu9GuNsJjhDrCvceqHx8LaddbF3uRgL7VvdPGueUGpBrknx0CsPbAc7wxEysa dzPSAvcgRaTCiqSoPneFdfM9Wq5U+dDYHR8DgDWyDEWaQsM+6hnQvIBucrADHr6X qv5VcwrsqO2VZlVArwz1OqdM/raIjydqRVv80/upGHYR2zmX9kA= =v/jM -----END PGP SIGNATURE-----