From 2159328b8e899cf12cded5cd56a8ec896bbb5dbd Mon Sep 17 00:00:00 2001 From: sezanzeb Date: Sat, 21 Nov 2020 16:36:20 +0100 Subject: [PATCH] correct prefix in .policy --- README.md | 2 +- data/org.key-mapper.policy | 8 ++++---- setup.py | 35 ++++++++++++++++++++++++++++++++++- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c4ac7b82..02704b89 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ will likely work. # Running ```bash -sudo python3 setup.py install --prefix /usr && sudo key-mapper-gtk -d +sudo python3 setup.py install && sudo key-mapper-gtk -d ``` You can also start it via your applications menu. diff --git a/data/org.key-mapper.policy b/data/org.key-mapper.policy index d65cb864..597e76f8 100644 --- a/data/org.key-mapper.policy +++ b/data/org.key-mapper.policy @@ -1,8 +1,8 @@ + "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" + "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd" + > mouse @@ -13,7 +13,7 @@ auth_admin auth_admin - /usr/bin/key-mapper-gtk + {executable} true diff --git a/setup.py b/setup.py index 6d7f5980..63e66b5f 100644 --- a/setup.py +++ b/setup.py @@ -19,9 +19,39 @@ # along with key-mapper. If not, see . +import os + import DistUtilsExtra.auto +class Install(DistUtilsExtra.auto.install_auto): + def run(self): + DistUtilsExtra.auto.install_auto.run(self) + self.ensure_polkit_prefix() + + def ensure_polkit_prefix(self): + """Make sure the policy file uses the right prefix.""" + executable = os.path.join(self.install_data, 'bin/key-mapper-gtk') + assert os.path.exists(executable) + + policy_path = '/usr/share/polkit-1/actions/org.key-mapper.policy' + + with open(policy_path, 'r') as f: + contents = f.read() + if '{executable}' not in contents: + # already done previously + return + + with open(policy_path, 'w') as f: + print( + f'Inserting the correct path "{executable}" into ' + 'org.key-mapper.policy' + ) + f.write(contents.format( + executable=executable + )) + + DistUtilsExtra.auto.setup( name='key-mapper', version='0.1.0', @@ -29,6 +59,9 @@ DistUtilsExtra.auto.setup( license='GPL-3.0', data_files=[ ('share/applications/', ['data/key-mapper.desktop']), - ('share/polkit-1/actions/', ['data/org.key-mapper.policy']), + ('/usr/share/polkit-1/actions/', ['data/org.key-mapper.policy']), ], + cmdclass={ + 'install': Install + } )