index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
-rw-r--r-- | PKGBUILD/archinstall/PKGBUILD | 26 | ||||
-rw-r--r-- | PKGBUILD/python-archinstall/PKGBUILD | 22 | ||||
-rw-r--r-- | archinstall/__main__.py | 57 |
diff --git a/PKGBUILD/archinstall/PKGBUILD b/PKGBUILD/archinstall/PKGBUILD index 40c80c3b..672b8329 100644 --- a/PKGBUILD/archinstall/PKGBUILD +++ b/PKGBUILD/archinstall/PKGBUILD @@ -1,5 +1,5 @@ -# Maintainer: Anton Hvornum anton@hvornum.se -# Contributor: Anton Hvornum anton@hvornum.se +# Maintainer: Anton Hvornum <anton@hvornum.se> +# Contributor: demostanis worlds <demostanis@protonmail.com> pkgname="archinstall" pkgver="2.0.5" pkgdesc="Installs launcher scripts for archinstall" @@ -7,27 +7,23 @@ pkgrel=1 url="https://github.com/Torxed/archinstall" license=('GPLv3') provides=("${pkgname}") -md5sums=('SKIP') arch=('x86_64') source=("${pkgname}-v${pkgver}-x86_64.tar.gz::https://github.com/Torxed/archinstall/archive/v$pkgver.tar.gz") depends=('python-archinstall') +sha256sums=('04176c096d13589b874083aecbb9b1d34e676d2b784f55e5368f4ab83ff38c2e') package() { mkdir -p "${pkgdir}/usr/bin" # Install a guided profile - echo '#!/bin/bash' > "${pkgdir}/usr/bin/archinstall-guided" - echo 'python -m archinstall guided' >> "${pkgdir}/usr/bin/archinstall-guided" + cat - > "${pkgdir}/usr/bin/archinstall" <<EOF +#!/bin/sh - # Install a minimal profile - echo '#!/bin/bash' > "${pkgdir}/usr/bin/archinstall-minimal" - echo 'python -m archinstall minimal' >> "${pkgdir}/usr/bin/archinstall-minimal" +python -m archinstall $@ +EOF - # Install a unattended profile (safely aborts if no machine specific instructions are found) - #echo '#!/bin/bash' > "${pkgdir}/usr/bin/archinstall-unattended" - #echo 'python -m archinstall unattended' >> "${pkgdir}/usr/bin/archinstall-unattended" - - chmod +x "${pkgdir}/usr/bin/archinstall-guided" - chmod +x "${pkgdir}/usr/bin/archinstall-minimal" - #chmod +x "${pkgdir}/usr/bin/archinstall-unattended" + chmod +x "${pkgdir}/usr/bin/archinstall" } + +# vim:ft=sh + diff --git a/PKGBUILD/python-archinstall/PKGBUILD b/PKGBUILD/python-archinstall/PKGBUILD index 6fa0f044..5aa0b721 100644 --- a/PKGBUILD/python-archinstall/PKGBUILD +++ b/PKGBUILD/python-archinstall/PKGBUILD @@ -1,26 +1,34 @@ -# Maintainer: Anton Hvornum anton@hvornum.se -# Contributor: Anton Hvornum anton@hvornum.se +# Maintainer: Anton Hvornum <anton@hvornum.se> +# Contributor: demostanis worlds <demostanis@protonmail.com> + pkgname="python-archinstall" pkgver="2.0.5" pkgdesc="Installs ${pkgname} as a python library." pkgrel=1 url="https://github.com/Torxed/archinstall" +source=("${pkgname}-v${pkgver}-x86_64.tar.gz::https://github.com/Torxed/archinstall/archive/v$pkgver.tar.gz") license=('GPLv3') provides=("${pkgname}") -md5sums=('SKIP') arch=('x86_64') -source=("${pkgname}-v${pkgver}-x86_64.tar.gz::https://github.com/Torxed/archinstall/archive/v$pkgver.tar.gz") depends=('python>=3.8') -optdepends=('pyttsx3: Adds text-to-speach support for log/screen output.') +makedepends=('python-setuptools') +optdepends=('pyttsx3: Adds text-to-speech support for log/screen output.') +sha256sums=('04176c096d13589b874083aecbb9b1d34e676d2b784f55e5368f4ab83ff38c2e') build() { cd "archinstall-${pkgver}" - python3 setup.py build + python setup.py build } package() { cd "archinstall-${pkgver}" - python setup.py install --prefix=/usr --root="${pkgdir}" --optimize=1 + python setup.py install \ + --prefix=/usr \ + --root="${pkgdir}" \ + --optimize=1 } + +# vim:ft=sh + diff --git a/archinstall/__main__.py b/archinstall/__main__.py index fe4a3732..63f87d24 100644 --- a/archinstall/__main__.py +++ b/archinstall/__main__.py @@ -1,12 +1,18 @@ -import archinstall, sys, os, glob -import importlib.util +from urllib.parse import urlparse +import archinstall +import sys +import os +import glob +import urllib.request # TODO: Learn the dark arts of argparse... -# (I summon thee dark spawn of cPython) +# (I summon thee dark spawn of cPython) + class ProfileNotFound(BaseException): pass + def find_examples(): """ Used to locate the examples, bundled with the module or executable. @@ -19,28 +25,47 @@ def find_examples(): return {os.path.basename(path): path for path in glob.glob(f'{examples}/*.py')} + +def find(url): + parsed_url = urlparse(url) + if not parsed_url.scheme: + examples = find_examples() + if f"{url}.py" in examples: + return open(examples[f"{url}.py"]).read() + try: + return open(url, 'r').read() + except FileNotFoundError: + return ProfileNotFound(f"File {url} does not exist") + elif parsed_url.scheme in ('https', 'http'): + return urllib.request.urlopen(url).read().decode('utf-8') + else: + return ProfileNotFound(f"Cannot handle scheme {parsed_url.scheme}") + + def run_as_a_module(): """ Since we're running this as a 'python -m archinstall' module OR a nuitka3 compiled version of the project. This function and the file __main__ acts as a entry point. """ - if len(sys.argv) == 1: sys.argv.append('guided') - profile = sys.argv[1] - library = find_examples() + if len(sys.argv) == 1: + sys.argv.append('guided') + + try: + profile = find(sys.argv[1]) + except ProfileNotFound as err: + print(f"Couldn't find file: {err}") + sys.exit(1) - if f'{profile}.py' not in library: - raise ProfileNotFound(f'Could not locate {profile}.py among the example files.') + os.chdir(os.path.abspath(os.path.dirname(__file__))) - # Import and execute the chosen `<profile>.py`: - spec = importlib.util.spec_from_file_location( - library[f"{profile}.py"], - library[f"{profile}.py"] - ) - imported_path = importlib.util.module_from_spec(spec) - spec.loader.exec_module(imported_path) - sys.modules[library[f'{profile}.py']] = imported_path + try: + exec(profile) # Is this is very safe? + except Exception as err: + print(f"Failed to run profile... {err}") + sys.exit(1) # Should prompt for another profile path instead + if __name__ == '__main__': run_as_a_module() |