133 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python3
 | |
| import os, glob, sys
 | |
| import os.path
 | |
| from shutil import copyfile
 | |
| from setuptools import find_namespace_packages
 | |
| from setuptools import setup
 | |
| 
 | |
| # handle flags for package manager like aurman and pacaur.
 | |
| # Allow both environment variable and command line flag
 | |
| forceSettingsFlag = (
 | |
|     "--force-settings" in sys.argv or
 | |
|     os.environ.get('FENRIR_FORCE_SETTINGS') == '1'
 | |
| )
 | |
| if "--force-settings" in sys.argv:
 | |
|     sys.argv.remove("--force-settings")
 | |
| 
 | |
| dataFiles = []
 | |
| 
 | |
| # Handle locale files
 | |
| localeFiles = glob.glob('locale/*/LC_MESSAGES/*.mo')
 | |
| for localeFile in localeFiles:
 | |
|     lang = localeFile.split(os.sep)[1]
 | |
|     destDir = f'/usr/share/locale/{lang}/LC_MESSAGES'
 | |
|     dataFiles.append((destDir, [localeFile]))
 | |
| 
 | |
| # Handle other configuration files
 | |
| directories = glob.glob('config/*')
 | |
| for directory in directories:
 | |
|     files = glob.glob(directory+'/*')
 | |
|     destDir = ''
 | |
|     if 'config/punctuation' in directory :
 | |
|         destDir = '/etc/fenrirscreenreader/punctuation'
 | |
|     elif 'config/keyboard' in directory:
 | |
|         destDir = '/etc/fenrirscreenreader/keyboard'
 | |
|     elif 'config/settings' in directory:
 | |
|         destDir = '/etc/fenrirscreenreader/settings'
 | |
|         if not forceSettingsFlag:
 | |
|             try:
 | |
|                 files = [f for f in files if not f.endswith('settings.conf')]
 | |
|             except Exception as e:
 | |
|                 pass
 | |
|     elif 'config/scripts' in directory:
 | |
|         destDir = '/usr/share/fenrirscreenreader/scripts'
 | |
|     if destDir != '':
 | |
|         dataFiles.append((destDir, files))
 | |
| 
 | |
| files = glob.glob('config/sound/default/*')
 | |
| destDir = '/usr/share/sounds/fenrirscreenreader/default'
 | |
| dataFiles.append((destDir, files))
 | |
| files = glob.glob('config/sound//template/*')
 | |
| destDir = '/usr/share/sounds/fenrirscreenreader/template'
 | |
| dataFiles.append((destDir, files))
 | |
| files = glob.glob('tools/*') 
 | |
| dataFiles.append(('/usr/share/fenrirscreenreader/tools', files))
 | |
| dataFiles.append(('/usr/share/man/man1', ['docs/fenrir.1']))
 | |
| 
 | |
| def read(fname):
 | |
|     return open(os.path.join(os.path.dirname(__file__), fname)).read()
 | |
| 
 | |
| setup(
 | |
|     # Application name:
 | |
|     name="fenrir-screenreader",
 | |
|     # description
 | |
|     description="A TTY Screen Reader for Linux.",
 | |
|     long_description=read('README.md'),
 | |
|     long_description_content_type="text/markdown",
 | |
|     keywords=['screenreader', 'a11y', 'accessibility', 'terminal', 'TTY', 'console'],
 | |
|     license="License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
 | |
|     url="https://git.stormux.org/storm/fenrir/",
 | |
|     classifiers=[
 | |
|         "Programming Language :: Python",
 | |
|         "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
 | |
|         "Development Status :: 5 - Production/Stable",
 | |
|         "Topic :: Multimedia :: Sound/Audio :: Speech",
 | |
|         "Environment :: Console",
 | |
|     ],
 | |
| 
 | |
|     # Application author details:
 | |
|     author="Storm Dragon, Jeremiah, Chrys and others",
 | |
|     author_email="storm_dragon@stormux.org",
 | |
| 
 | |
|     # Packages
 | |
|     package_dir={'': 'src'},
 | |
|     packages=find_namespace_packages(
 | |
|         where='src',
 | |
|         include=['fenrirscreenreader*']
 | |
|     ),
 | |
|     scripts=['src/fenrir'],
 | |
| 
 | |
|     # Include additional files into the package
 | |
|     include_package_data=True,
 | |
|     zip_safe=False,
 | |
| 
 | |
|     data_files=dataFiles,
 | |
| 
 | |
|     # Dependent packages (distributions)
 | |
|     python_requires='>=3.6',
 | |
|     install_requires=[
 | |
|         "evdev>=1.1.2",
 | |
|         "daemonize>=2.5.0",
 | |
|         "dbus-python>=1.2.8",
 | |
|         "pyperclip",
 | |
|         "pyudev>=0.21.0",
 | |
|         "setuptools",
 | |
|         "setproctitle",
 | |
|         "pexpect",
 | |
|         "pyte>=0.7.0",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| if not forceSettingsFlag:
 | |
|     print('')
 | |
|     # create settings file from example if not exist
 | |
|     if not os.path.isfile('/etc/fenrirscreenreader/settings/settings.conf'):
 | |
|         try:
 | |
|             copyfile('config/fenrirscreenreader/settings/settings.conf', '/etc/fenrirscreenreader/settings/settings.conf')
 | |
|             print('create settings file in /etc/fenrirscreenreader/settings/settings.conf')
 | |
|         except OSError as e:
 | |
|             print(f"Could not copy settings file to destination: {e}")
 | |
|     else:
 | |
|         print('settings.conf file found. It is not overwritten automatical')
 | |
| 
 | |
| 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('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')
 |