From 191181a6a58d786fc39dab2fd7dc9f3e7825cb11 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Fri, 20 Dec 2024 11:32:26 -0500 Subject: [PATCH] This modern installation method is turning out to be a pita. --- setup.py | 111 +++++++++++++++++++++++-------------------------------- 1 file changed, 47 insertions(+), 64 deletions(-) diff --git a/setup.py b/setup.py index 66df62d4..986eb221 100755 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ import os import sys import glob -import shutil +from shutil import copyfile from setuptools import setup def get_data_files(): @@ -16,85 +16,68 @@ def get_data_files(): dest_dir = f'/usr/share/locale/{lang}/LC_MESSAGES' data_files.append((dest_dir, [locale_file])) - # Handle /etc/fenrirscreenreader directories - etc_dirs = { - 'keyboard': '/etc/fenrirscreenreader/keyboard', - 'punctuation': '/etc/fenrirscreenreader/punctuation', - 'settings': '/etc/fenrirscreenreader/settings' - } - - for src_dir, dest_dir in etc_dirs.items(): - src_path = f'config/{src_dir}' - if os.path.exists(src_path): - files = glob.glob(f'{src_path}/*') - if src_dir == 'settings': - if not force_settings: - # Remove settings.conf if it exists in the list - files = [f for f in files if not f.endswith('settings.conf')] - # Ensure settings.conf.example is included - example_file = os.path.join(src_path, 'settings.conf.example') - if os.path.exists(example_file) and example_file not in files: - files.append(example_file) - if files: # Only add if there are files to copy - data_files.append((dest_dir, files)) + # Handle configuration files - using original code + directories = glob.glob('config/*') + for directory in directories: + files = glob.glob(directory+'/*') + dest_dir = '' + if 'config/punctuation' in directory: + dest_dir = '/etc/fenrirscreenreader/punctuation' + elif 'config/keyboard' in directory: + dest_dir = '/etc/fenrirscreenreader/keyboard' + elif 'config/settings' in directory: + dest_dir = '/etc/fenrirscreenreader/settings' + if not force_settings: + try: + files.remove('config/settings/settings.conf') + except ValueError: + pass + elif 'config/scripts' in directory: + dest_dir = '/usr/share/fenrirscreenreader/scripts' + if dest_dir: + data_files.append((dest_dir, files)) - # Handle /usr/share/fenrirscreenreader directories - share_dirs = { - 'scripts': '/usr/share/fenrirscreenreader/scripts', - } - - for src_dir, dest_dir in share_dirs.items(): - src_path = f'config/{src_dir}' - if os.path.exists(src_path): - files = glob.glob(f'{src_path}/*') - if files: # Only add if there are files to copy - data_files.append((dest_dir, files)) - - # Handle sound directory separately since it has subdirectories - sound_src = 'config/sound' - if os.path.exists(sound_src): - # Handle default sounds - default_files = glob.glob(f'{sound_src}/default/*') - if default_files: - data_files.append(('/usr/share/sounds/fenrirscreenreader/default', default_files)) - - # Handle template sounds - template_files = glob.glob(f'{sound_src}/template/*') - if template_files: - data_files.append(('/usr/share/sounds/fenrirscreenreader/template', template_files)) + # Handle sound files + files = glob.glob('config/sound/default/*') + data_files.append(('/usr/share/sounds/fenrirscreenreader/default', files)) + files = glob.glob('config/sound/template/*') + data_files.append(('/usr/share/sounds/fenrirscreenreader/template', files)) # Handle tools directory - tools_files = glob.glob('tools/*') - if tools_files: - data_files.append(('/usr/share/fenrirscreenreader/tools', tools_files)) + files = glob.glob('tools/*') + data_files.append(('/usr/share/fenrirscreenreader/tools', files)) # Add man page - if os.path.exists('docs/fenrir.1'): - data_files.append(('/usr/share/man/man1', ['docs/fenrir.1'])) + data_files.append(('/usr/share/man/man1', ['docs/fenrir.1'])) return data_files if __name__ == "__main__": - setup(data_files=get_data_files()) + setup( + data_files=get_data_files(), + ) - # Post-install setup for settings.conf if needed - if not os.environ.get('FENRIR_FORCE_SETTINGS') == '1': - settings_path = '/etc/fenrirscreenreader/settings/settings.conf' - example_path = '/etc/fenrirscreenreader/settings/settings.conf.example' - if not os.path.exists(settings_path) and os.path.exists(example_path): + force_settings = os.environ.get('FENRIR_FORCE_SETTINGS') == '1' + if not force_settings: + print('') + # create settings file from example if not exist + if not os.path.isfile('/etc/fenrirscreenreader/settings/settings.conf'): try: - shutil.copyfile(example_path, settings_path) - print(f'Created settings file: {settings_path}') - except Exception as e: - print(f'Note: Could not create {settings_path}: {e}') - - print('\nSetup complete!') + copyfile('/etc/fenrirscreenreader/settings/settings.conf.example', + '/etc/fenrirscreenreader/settings/settings.conf') + print('create settings file in /etc/fenrirscreenreader/settings/settings.conf') + except: + pass + else: + print('settings.conf file found. It is not overwritten automatically') + + print('') print('To have Fenrir start at boot:') print('sudo systemctl enable fenrir') print('Pulseaudio users may want to run:') print('/usr/share/fenrirscreenreader/tools/configure_pulse.sh') print('once as their user account and once as root to configure Pulseaudio.') - print('\nPlease install the following packages manually:') + print('Please install the following packages manually:') print('- Speech-dispatcher: for the default speech driver') print('- Espeak: as basic TTS engine') print('- sox: is a player for the generic sound driver')