diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 0b9c5ac1..00000000 --- a/pyproject.toml +++ /dev/null @@ -1,52 +0,0 @@ -[build-system] -requires = ["setuptools>=64.0.0", "wheel", "setuptools_scm[toml]>=6.2"] -build-backend = "setuptools.build_meta" - -[project] -name = "fenrir-screenreader" -dynamic = ["version"] -description = "A TTY Screen Reader for Linux" -readme = "README.md" -requires-python = ">=3.8" -license = {text = "GNU General Public License v3 or later (GPLv3+)"} -keywords = ["screenreader", "a11y", "accessibility", "terminal", "TTY", "console"] -authors = [ - {name = "Storm Dragon, Jeremiah, Chrys and others", email = "storm_dragon@stormux.org"} -] -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", -] -dependencies = [ - "evdev>=1.1.2", - "daemonize>=2.5.0", - "dbus-python>=1.2.8", - "pyudev>=0.21.0", - "setuptools", - "pexpect", - "pyttsx3", - "pyte>=0.7.0", -] - -[project.urls] -Homepage = "https://git.stormux.org/storm/fenrir/" - -[tool.setuptools] -package-dir = {"" = "src"} -include-package-data = true -zip-safe = false - -[tool.setuptools.packages.find] -where = ["src"] -include = ["fenrirscreenreader*"] -namespaces = true - -[tool.setuptools_scm] -write_to = "src/fenrirscreenreader/_version.py" - -[tool.setuptools.data-files] -"usr/share/man/man1" = ["docs/fenrir.1"] -"usr/share/fenrirscreenreader/tools" = ["tools/*"] diff --git a/setup.py b/setup.py index 8db6e5e0..a78113d0 100755 --- a/setup.py +++ b/setup.py @@ -1,46 +1,132 @@ #!/usr/bin/env python3 -import os -import glob +#https://python-packaging.readthedocs.io/en/latest/minimal.html +import os, glob, sys +import os.path +from shutil import copyfile +from setuptools import find_namespace_packages from setuptools import setup -def get_data_files(): - data_files = [] - - # Handle configuration files - 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' - elif 'config/scripts' in directory: - dest_dir = 'usr/share/fenrirscreenreader/scripts' - if dest_dir and files: - data_files.append((dest_dir, files)) +# handle flags for package manager like aurman and pacaur. +forceSettingsFlag = False +if "--force-settings" in sys.argv: + forceSettingsFlag = True + sys.argv.remove("--force-settings") - # Handle sound files - files = glob.glob('config/sound/default/*') - if files: - data_files.append(('usr/share/sounds/fenrirscreenreader/default', files)) - - files = glob.glob('config/sound/template/*') - if files: - data_files.append(('usr/share/sounds/fenrirscreenreader/template', files)) +dataFiles = [] - # Handle tools directory - files = glob.glob('tools/*') - if files: - data_files.append(('usr/share/fenrirscreenreader/tools', files)) +# 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])) - # Add man page - if os.path.exists('docs/fenrir.1'): - data_files.append(('usr/share/man/man1', ['docs/fenrir.1'])) +# 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: + del(files[files.index('config/settings/settings.conf')]) + except: + pass + elif 'config/scripts' in directory: + destDir = '/usr/share/fenrirscreenreader/scripts' + if destDir != '': + dataFiles.append((destDir, files)) - return data_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'])) -if __name__ == "__main__": - setup(data_files=get_data_files()) +def read(fname): + return open(os.path.join(os.path.dirname(__file__), fname)).read() + +setup( + # Application name: + name="fenrir-screenreader", + # Version is now handled by setuptools_scm + use_scm_version=True, + setup_requires=['setuptools_scm'], + # 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", + "pyudev>=0.21.0", + "setuptools", + "pexpect", + "pyttsx3", + "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('/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 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')