Re: [gentoo-portage-dev] [PATCH] f{owners,perms}: Warn when using relative path
On Mon, 2018-09-17 at 12:42 -0400, Michael Orlitzky wrote: > On 09/17/2018 02:52 AM, Michał Górny wrote: > > > > --- a/bin/ebuild-helpers/fowners > > +++ b/bin/ebuild-helpers/fowners > > ... > > + eqawarn "This is unsupported. Please use 'chmod' when you need > > to work on files" > > This one should be 'chown' instead of 'chmod'. Good catch, thanks! > > (Calling chown on the live filesystem is often also a dangerous mistake, > but this probably isn't the place to fuss about it.) > I think this is more likely to be triggered on chown-ing stuff inside ${S}. -- Best regards, Michał Górny signature.asc Description: This is a digitally signed message part
Re: [gentoo-portage-dev] [PATCH] f{owners,perms}: Warn when using relative path
On 09/17/2018 02:52 AM, Michał Górny wrote: > > --- a/bin/ebuild-helpers/fowners > +++ b/bin/ebuild-helpers/fowners > ... > + eqawarn "This is unsupported. Please use 'chmod' when you need > to work on files" This one should be 'chown' instead of 'chmod'. (Calling chown on the live filesystem is often also a dangerous mistake, but this probably isn't the place to fuss about it.)
[gentoo-portage-dev] [PATCH] f{owners,perms}: Warn when using relative path
--- bin/ebuild-helpers/fowners | 15 +++ bin/ebuild-helpers/fperms | 15 +++ 2 files changed, 30 insertions(+) diff --git a/bin/ebuild-helpers/fowners b/bin/ebuild-helpers/fowners index 68004210b..70297c6e6 100755 --- a/bin/ebuild-helpers/fowners +++ b/bin/ebuild-helpers/fowners @@ -8,6 +8,21 @@ if ! ___eapi_has_prefix_variables; then EPREFIX= ED=${D} fi +got_owner= +for arg; do + [[ ${arg} == -* ]] && continue + if [[ ! ${got_owner} ]]; then + got_owner=1 + continue + fi + if [[ ${arg} != /* ]]; then + eqawarn "Relative path passed to '${0##*/}': ${arg}" + eqawarn "This is unsupported. Please use 'chmod' when you need to work on files" + eqawarn "outside the installation image (\${ED})." + fi +done + + # we can't prefix all arguments because # chown takes random options slash="/" diff --git a/bin/ebuild-helpers/fperms b/bin/ebuild-helpers/fperms index c63a6abc3..f98560039 100755 --- a/bin/ebuild-helpers/fperms +++ b/bin/ebuild-helpers/fperms @@ -8,6 +8,21 @@ if ! ___eapi_has_prefix_variables; then ED=${D} fi +got_mode= +for arg; do + # - can either be an option or a mode string + [[ ${arg} == -* && ${arg} != -[ugorwxXst] ]] && continue + if [[ ! ${got_mode} ]]; then + got_mode=1 + continue + fi + if [[ ${arg} != /* ]]; then + eqawarn "Relative path passed to '${0##*/}': ${arg}" + eqawarn "This is unsupported. Please use 'chmod' when you need to work on files" + eqawarn "outside the installation image (\${ED})." + fi +done + # we can't prefix all arguments because # chmod takes random options slash="/" -- 2.19.0