Re: [PATCH gentoolkit] bin: Add merge-driver-ekeyword

Zac Medico <[email protected]> Mon, 28 Dec 2020 17:09:15 -0800
Newsgroups gmane.linux.gentoo.portage.devel
Message-ID <[email protected]>
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)
> +        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

iQKSBAEBCgB9FiEE8OgXaltWzqgSupCu0HX7jBBKPSAFAl/qgbtfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEYw
RTgxNzZBNUI1NkNFQTgxMkJBOTBBRUQwNzVGQjhDMTA0QTNEMjAACgkQ0HX7jBBK
PSDK0A/2MLMAn+7is9rsm1FGiv6SkLqxJShwOxrAVs6wLZCHU7FUiPv2b5ZjL0e5
hKypCuOKgYMyZ/MnCA1YMCb0fOVPaiBO8dkvsttqJKCH7ilLhHtrJD9xgItm33KY
J1wII0VChAZefJj3P5PBGE/jVtkK7exRa9H+toX3UA115hskXzQLZXj1fXabcL8m
4dIISZoLnBIGYd66FB8kYZkH0fyc5W5G7v9WlZv9dqyeQ22vFACdHAKOdCXSnKCh
ItKherDA85FkMRCh4W21fsKf8PsFFDXU8ZCWdfPDiNaEnUw9Z5667EQFLxzDfETR
1avLtC5nhc/hbh9+EudZ0+fYPdWG7OfLvtPX1/jCcWBGimYGxgtb2JzmrxRMpjGa
nI8TYlRV4yUIXNj6VgXE0/QvfkZsFaUDDFlBiXyvQCZH7GHwS4eVgeZ8Cis8MoD7
KYGbpjfjDvs6FOm+830Js8bLZRLcjh1As1RFECHh5atqfwSJmywm0pGDQ1Sptowp
PySm+iHstBea/SQdb2FFC5feH9BBwZf4Wz8ECwxgED0mdxfZpX7Y/qcGl/tfe36v
kgE5RUdE8Mfacfd95zb+B5+1jH/J1IfAKpGzrBxC+pa0H4Kqdp8fz15xIvpIraQe
b0nNwz2lNbQFapiX0ZrTYGJgOIbxJhmJvr4WDgrkMx/WUik5AA==
=gI7y
-----END PGP SIGNATURE-----