On Fri, Nov 15, 2019 at 4:01 PM Stephen Smalley <sds@xxxxxxxxxxxxx> wrote: > > On 11/15/19 9:54 AM, Petr Lautrbach wrote: > > When org.selinux.relabel_on_boot(0) was called twice, it failed with > > FileNotFoundError. > > > > Fixes: > > $ dbus-send --system --print-reply --dest=org.selinux /org/selinux/object org.selinux.relabel_on_boot int64:1 > > method return sender=:1.53 -> dest=:1.54 reply_serial=2 > > $ dbus-send --system --print-reply --dest=org.selinux /org/selinux/object org.selinux.relabel_on_boot int64:0 > > method return sender=:1.53 -> dest=:1.55 reply_serial=2 > > $ dbus-send --system --print-reply --dest=org.selinux /org/selinux/object org.selinux.relabel_on_boot int64:0 > > Error org.freedesktop.DBus.Python.FileNotFoundError: FileNotFoundError: [Errno 2] No such file or directory: '/.autorelabel' > > > > Signed-off-by: Petr Lautrbach <plautrba@xxxxxxxxxx> > > --- > > > > Note: This is python 3 only code and it fails in travis with PYVER=python2.7 RUBYLIBVER=2.6: > > > > $ PATH="$VIRTUAL_ENV/bin:$PATH" ./scripts/run-flake8 > > > > Analyzing 187 Python scripts > > > > ./dbus/selinux_server.py:90:20: F821 undefined name 'FileNotFoundError' > > > > ./installdir/usr/share/system-config-selinux/selinux_server.py:90:20: F821 undefined name 'FileNotFoundError' > > > > The command "PATH="$VIRTUAL_ENV/bin:$PATH" ./scripts/run-flake8" exited with 1. > > Hmm...given that, do we want to defer it until after 3.0 final release, > or are we going to switch travis over to only test with python3 now? Hello, I personally do not have a strong opinion about dropping Python 2 support before or after 3.0 final release (for information, the Arch Linux packages will be Python 3-only anyway, because the distribution maintainers began dropping related Python 2 packages such as python2-audit). Nevertheless, on the patch itself, I am wondering whether "FileNotFoundError" could be replaced with "OSError" in order to make it compatible with Python 2. The main drawback of this alternative approach is that it silences PermissionError and other kind of errors that could be useful when debugging some issues on a production system. This is why I prefer keeping "FileNotFoundError", and the patch looks good to me. Thanks, Nicolas > > > > dbus/selinux_server.py | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/dbus/selinux_server.py b/dbus/selinux_server.py > > index b9debc071485..be4f4557a9fa 100644 > > --- a/dbus/selinux_server.py > > +++ b/dbus/selinux_server.py > > @@ -85,7 +85,10 @@ class selinux_server(slip.dbus.service.Object): > > fd = open("/.autorelabel", "w") > > fd.close() > > else: > > - os.unlink("/.autorelabel") > > + try: > > + os.unlink("/.autorelabel") > > + except FileNotFoundError: > > + pass > > > > def write_selinux_config(self, enforcing=None, policy=None): > > path = selinux.selinux_path() + "config" > > >