Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Hvornum <anton.feeds+github@gmail.com>2020-11-04 22:57:48 +0000
committerAnton Hvornum <anton.feeds+github@gmail.com>2020-11-04 22:57:48 +0000
commitd899a1473f0894f8065ab51a3366347416bd77e0 (patch)
tree57c6deef037992652105a44083ef675291a29122
parentb98850819bdbdb23e354bb5bf5d5383cf807d22d (diff)
parent887d5ded07e4cac1f5ade27317feeeb85edd0a3e (diff)
Merge branch 'master' of github.com:Torxed/archinstall into 56-log-data
-rw-r--r--PKGBUILD/archinstall/PKGBUILD26
-rw-r--r--PKGBUILD/python-archinstall/PKGBUILD22
-rw-r--r--archinstall/__main__.py57
3 files changed, 67 insertions, 38 deletions
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()