Replaced the magic __builtin__ global variable. This should fix mypy complaints while still retaining the same functionality, kinda. It's less automatic but it's also less of dark magic, which makes sense for anyone but me.

This commit is contained in:
Anton Hvornum 2021-05-12 13:55:41 +02:00
parent df6c4e77f7
commit 4ff35663b8
26 changed files with 73 additions and 92 deletions

View File

@ -452,14 +452,7 @@ class Installer():
return self.pacstrap(*packages) return self.pacstrap(*packages)
def install_profile(self, profile): def install_profile(self, profile):
# TODO: Replace this with a import archinstall.session instead in the profiles. storage['installation_session'] = self
# The tricky thing with doing the import archinstall.session instead is that
# profiles might be run from a different chroot, and there's no way we can
# guarantee file-path safety when accessing the installer object that way.
# Doing the __builtins__ replacement, ensures that the global variable "installation"
# is always kept up to date. It's considered a nasty hack - but it's a safe way
# of ensuring 100% accuracy of archinstall session variables.
__builtins__['installation'] = self
if type(profile) == str: if type(profile) == str:
profile = Profile(self, profile) profile = Profile(self, profile)

View File

@ -5,7 +5,7 @@ import urllib.request
__packages__ = ['nano', 'wget', 'git'] __packages__ = ['nano', 'wget', 'git']
if __name__ == '52-54-00-12-34-56': if __name__ == '52-54-00-12-34-56':
awesome = archinstall.Application(installation, 'postgresql') awesome = archinstall.Application(archinstall.storage['installation_session'], 'postgresql')
awesome.install() awesome.install()
""" """

View File

@ -2,11 +2,11 @@ import archinstall
__packages__ = ["awesome", "xorg-xrandr", "xterm", "feh", "slock", "terminus-font", "gnu-free-fonts", "ttf-liberation", "xsel"] __packages__ = ["awesome", "xorg-xrandr", "xterm", "feh", "slock", "terminus-font", "gnu-free-fonts", "ttf-liberation", "xsel"]
installation.install_profile('xorg') archinstall.storage['installation_session'].install_profile('xorg')
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
with open(f'{installation.target}/etc/X11/xinit/xinitrc', 'r') as xinitrc: with open(f"{archinstall.storage['installation_session'].target}/etc/X11/xinit/xinitrc", 'r') as xinitrc:
xinitrc_data = xinitrc.read() xinitrc_data = xinitrc.read()
for line in xinitrc_data.split('\n'): for line in xinitrc_data.split('\n'):
@ -20,5 +20,5 @@ for line in xinitrc_data.split('\n'):
xinitrc_data += '\n' xinitrc_data += '\n'
xinitrc_data += 'exec awesome\n' xinitrc_data += 'exec awesome\n'
with open(f'{installation.target}/etc/X11/xinit/xinitrc', 'w') as xinitrc: with open(f"{archinstall.storage['installation_session'].target}/etc/X11/xinit/xinitrc", 'w') as xinitrc:
xinitrc.write(xinitrc_data) xinitrc.write(xinitrc_data)

View File

@ -4,6 +4,6 @@ import archinstall
# which packages will be installed by this profile # which packages will be installed by this profile
__packages__ = ["cockpit", "udisks2", "packagekit"] __packages__ = ["cockpit", "udisks2", "packagekit"]
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('cockpit.socket') archinstall.storage['installation_session'].enable_service('cockpit.socket')

View File

@ -4,6 +4,6 @@ import archinstall
# which packages will be installed by this profile # which packages will be installed by this profile
__packages__ = ["docker"] __packages__ = ["docker"]
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('docker') archinstall.storage['installation_session'].enable_service('docker')

View File

@ -4,6 +4,6 @@ import archinstall
# which packages will be installed by this profile # which packages will be installed by this profile
__packages__ = ["apache"] __packages__ = ["apache"]
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('httpd') archinstall.storage['installation_session'].enable_service('httpd')

View File

@ -4,6 +4,6 @@ import archinstall
# which packages will be installed by this profile # which packages will be installed by this profile
__packages__ = ["lighttpd"] __packages__ = ["lighttpd"]
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('lighttpd') archinstall.storage['installation_session'].enable_service('lighttpd')

View File

@ -4,8 +4,8 @@ import archinstall
# which packages will be installed by this profile # which packages will be installed by this profile
__packages__ = ["mariadb"] __packages__ = ["mariadb"]
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.arch_chroot("mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql") archinstall.storage['installation_session'].arch_chroot("mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql")
installation.enable_service('mariadb') archinstall.storage['installation_session'].enable_service('mariadb')

View File

@ -4,6 +4,6 @@ import archinstall
# which packages will be installed by this profile # which packages will be installed by this profile
__packages__ = ["nginx"] __packages__ = ["nginx"]
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('nginx') archinstall.storage['installation_session'].enable_service('nginx')

View File

@ -4,8 +4,8 @@ import archinstall
# which packages will be installed by this profile # which packages will be installed by this profile
__packages__ = ["postgresql"] __packages__ = ["postgresql"]
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.arch_chroot("initdb -D /var/lib/postgres/data", runas='postgres') archinstall.storage['installation_session'].arch_chroot("initdb -D /var/lib/postgres/data", runas='postgres')
installation.enable_service('postgresql') archinstall.storage['installation_session'].enable_service('postgresql')

View File

@ -4,6 +4,6 @@ import archinstall
# which packages will be installed by this profile # which packages will be installed by this profile
__packages__ = ["openssh"] __packages__ = ["openssh"]
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('sshd') archinstall.storage['installation_session'].enable_service('sshd')

View File

@ -7,6 +7,6 @@ import archinstall
# which packages will be installed by this profile # which packages will be installed by this profile
__packages__ = ["tomcat10"] __packages__ = ["tomcat10"]
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('tomcat10') archinstall.storage['installation_session'].enable_service('tomcat10')

View File

@ -30,23 +30,23 @@ def _prep_function(*args, **kwargs):
# or through conventional import awesome # or through conventional import awesome
if __name__ == 'awesome': if __name__ == 'awesome':
# Install the application awesome from the template under /applications/ # Install the application awesome from the template under /applications/
awesome = archinstall.Application(installation, 'awesome') awesome = archinstall.Application(archinstall.storage['installation_session'], 'awesome')
awesome.install() awesome.install()
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
# TODO: Copy a full configuration to ~/.config/awesome/rc.lua instead. # TODO: Copy a full configuration to ~/.config/awesome/rc.lua instead.
with open(f'{installation.target}/etc/xdg/awesome/rc.lua', 'r') as fh: with open(f'{archinstall.storage['installation_session'].target}/etc/xdg/awesome/rc.lua', 'r') as fh:
awesome_lua = fh.read() awesome_lua = fh.read()
## Replace xterm with alacritty for a smoother experience. ## Replace xterm with alacritty for a smoother experience.
awesome_lua = awesome_lua.replace('"xterm"', '"alacritty"') awesome_lua = awesome_lua.replace('"xterm"', '"alacritty"')
with open(f'{installation.target}/etc/xdg/awesome/rc.lua', 'w') as fh: with open(f'{archinstall.storage['installation_session'].target}/etc/xdg/awesome/rc.lua', 'w') as fh:
fh.write(awesome_lua) fh.write(awesome_lua)
## TODO: Configure the right-click-menu to contain the above packages that were installed. (as a user config) ## TODO: Configure the right-click-menu to contain the above packages that were installed. (as a user config)
## Remove some interfering nemo settings ## Remove some interfering nemo settings
installation.arch_chroot("gsettings set org.nemo.desktop show-desktop-icons false") archinstall.storage['installation_session'].arch_chroot("gsettings set org.nemo.desktop show-desktop-icons false")
installation.arch_chroot("xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search") archinstall.storage['installation_session'].arch_chroot("xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search")

View File

@ -28,9 +28,9 @@ def _prep_function(*args, **kwargs):
# or through conventional import budgie # or through conventional import budgie
if __name__ == 'budgie': if __name__ == 'budgie':
# Install dependency profiles # Install dependency profiles
installation.install_profile('xorg') archinstall.storage['installation_session'].install_profile('xorg')
# Install the Budgie packages # Install the Budgie packages
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('lightdm') # Light Display Manager archinstall.storage['installation_session'].enable_service('lightdm') # Light Display Manager

View File

@ -27,9 +27,9 @@ def _prep_function(*args, **kwargs):
# or through conventional import cinnamon # or through conventional import cinnamon
if __name__ == 'cinnamon': if __name__ == 'cinnamon':
# Install dependency profiles # Install dependency profiles
installation.install_profile('xorg') archinstall.storage['installation_session'].install_profile('xorg')
# Install the Cinnamon packages # Install the Cinnamon packages
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('lightdm') # Light Display Manager archinstall.storage['installation_session'].enable_service('lightdm') # Light Display Manager

View File

@ -28,10 +28,10 @@ def _prep_function(*args, **kwargs):
# or through conventional import deepin # or through conventional import deepin
if __name__ == 'deepin': if __name__ == 'deepin':
# Install dependency profiles # Install dependency profiles
installation.install_profile('xorg') archinstall.storage['installation_session'].install_profile('xorg')
# Install the Deepin packages # Install the Deepin packages
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
# Enable autostart of Deepin for all users # Enable autostart of Deepin for all users
installation.enable_service('lightdm') archinstall.storage['installation_session'].enable_service('lightdm')

View File

@ -48,9 +48,7 @@ if __name__ == 'desktop':
""" """
# Install common packages for all desktop environments # Install common packages for all desktop environments
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
# TODO: Remove magic variable 'installation' and place it archinstall.storage['installation_session'].install_profile(archinstall.storage['_desktop_profile'])
# in archinstall.storage or archinstall.session/archinstall.installation
installation.install_profile(archinstall.storage['_desktop_profile'])

View File

@ -29,11 +29,11 @@ def _prep_function(*args, **kwargs):
# or through conventional import gnome # or through conventional import gnome
if __name__ == 'gnome': if __name__ == 'gnome':
# Install dependency profiles # Install dependency profiles
installation.install_profile('xorg') archinstall.storage['installation_session'].install_profile('xorg')
# Install the GNOME packages # Install the GNOME packages
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('gdm') # Gnome Display Manager archinstall.storage['installation_session'].enable_service('gdm') # Gnome Display Manager
# We could also start it via xinitrc since we do have Xorg, # We could also start it via xinitrc since we do have Xorg,
# but for gnome that's deprecated and wayland is preferred. # but for gnome that's deprecated and wayland is preferred.

View File

@ -48,16 +48,16 @@ if __name__ == 'i3':
""" """
# Install common packages for all i3 configurations # Install common packages for all i3 configurations
installation.add_additional_packages(__packages__[:4]) archinstall.storage['installation_session'].add_additional_packages(__packages__[:4])
# Install dependency profiles # Install dependency profiles
installation.install_profile('xorg') archinstall.storage['installation_session'].install_profile('xorg')
# gaps is installed by deafult so we are overriding it here with lightdm # gaps is installed by deafult so we are overriding it here with lightdm
installation.add_additional_packages(__packages__[4:]) archinstall.storage['installation_session'].add_additional_packages(__packages__[4:])
# Auto start lightdm for all users # Auto start lightdm for all users
installation.enable_service('lightdm') archinstall.storage['installation_session'].enable_service('lightdm')
# install the i3 group now # install the i3 group now
installation.add_additional_packages(archinstall.storage['_i3_configuration']) archinstall.storage['installation_session'].add_additional_packages(archinstall.storage['_i3_configuration'])

View File

@ -37,10 +37,10 @@ def _post_install(*args, **kwargs):
# or through conventional import kde # or through conventional import kde
if __name__ == 'kde': if __name__ == 'kde':
# Install dependency profiles # Install dependency profiles
installation.install_profile('xorg') archinstall.storage['installation_session'].install_profile('xorg')
# Install the KDE packages # Install the KDE packages
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
# Enable autostart of KDE for all users # Enable autostart of KDE for all users
installation.enable_service('sddm') archinstall.storage['installation_session'].enable_service('sddm')

View File

@ -28,9 +28,9 @@ def _prep_function(*args, **kwargs):
# or through conventional import lxqt # or through conventional import lxqt
if __name__ == 'lxqt': if __name__ == 'lxqt':
# Install dependency profiles # Install dependency profiles
installation.install_profile('xorg') archinstall.storage['installation_session'].install_profile('xorg')
# Install the LXQt packages # Install the LXQt packages
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('sddm') # SDDM Display Manager archinstall.storage['installation_session'].enable_service('sddm') # SDDM Display Manager

View File

@ -27,9 +27,9 @@ def _prep_function(*args, **kwargs):
# or through conventional import mate # or through conventional import mate
if __name__ == 'mate': if __name__ == 'mate':
# Install dependency profiles # Install dependency profiles
installation.install_profile('xorg') archinstall.storage['installation_session'].install_profile('xorg')
# Install the MATE packages # Install the MATE packages
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('lightdm') # Light Display Manager archinstall.storage['installation_session'].enable_service('lightdm') # Light Display Manager

View File

@ -24,7 +24,7 @@ if __name__ == 'server':
archinstall.log(archinstall.storage['_selected_servers'], level=logging.DEBUG) archinstall.log(archinstall.storage['_selected_servers'], level=logging.DEBUG)
for server in archinstall.storage['_selected_servers']: for server in archinstall.storage['_selected_servers']:
archinstall.log(f'Installing {server} ...', level=logging.INFO) archinstall.log(f'Installing {server} ...', level=logging.INFO)
app = archinstall.Application(installation, server) app = archinstall.Application(archinstall.storage['installation_session'], server)
app.install() app.install()
archinstall.log('If your selections included multiple servers with the same port, you may have to reconfigure them.', fg="yellow", level=logging.INFO) archinstall.log('If your selections included multiple servers with the same port, you may have to reconfigure them.', fg="yellow", level=logging.INFO)

View File

@ -44,7 +44,7 @@ if __name__ == "sway":
) )
# Install the Sway packages # Install the Sway packages
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
# Install the graphics driver packages # Install the graphics driver packages
installation.add_additional_packages(_gfx_driver_packages) archinstall.storage['installation_session'].add_additional_packages(_gfx_driver_packages)

View File

@ -28,9 +28,9 @@ def _prep_function(*args, **kwargs):
# or through conventional import xfce4 # or through conventional import xfce4
if __name__ == 'xfce4': if __name__ == 'xfce4':
# Install dependency profiles # Install dependency profiles
installation.install_profile('xorg') archinstall.storage['installation_session'].install_profile('xorg')
# Install the XFCE4 packages # Install the XFCE4 packages
installation.add_additional_packages(__packages__) archinstall.storage['installation_session'].add_additional_packages(__packages__)
installation.enable_service('lightdm') # Light Display Manager archinstall.storage['installation_session'].enable_service('lightdm') # Light Display Manager

View File

@ -28,22 +28,12 @@ def _prep_function(*args, **kwargs):
if __name__ == 'xorg': if __name__ == 'xorg':
try: try:
if "nvidia" in _gfx_driver_packages: if "nvidia" in _gfx_driver_packages:
if "linux-zen" in installation.base_packages or "linux-lts" in installation.base_packages: if "linux-zen" in archinstall.storage['installation_session'].base_packages or "linux-lts" in archinstall.storage['installation_session'].base_packages:
installation.add_additional_packages("dkms")#I've had kernel regen fail if it wasn't installed before nvidia-dkms archinstall.storage['installation_session'].add_additional_packages("dkms")#I've had kernel regen fail if it wasn't installed before nvidia-dkms
installation.add_additional_packages("xorg-server xorg-xinit nvidia-dkms") archinstall.storage['installation_session'].add_additional_packages("xorg-server xorg-xinit nvidia-dkms")
else: else:
installation.add_additional_packages(f"xorg-server xorg-xinit {' '.join(_gfx_driver_packages)}") archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(_gfx_driver_packages)}")
else: else:
installation.add_additional_packages(f"xorg-server xorg-xinit {' '.join(_gfx_driver_packages)}") archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit {' '.join(_gfx_driver_packages)}")
except: except:
installation.add_additional_packages(f"xorg-server xorg-xinit") # Prep didn't run, so there's no driver to install archinstall.storage['installation_session'].add_additional_packages(f"xorg-server xorg-xinit") # Prep didn't run, so there's no driver to install
# with open(f'{installation.mountpoint}/etc/X11/xinit/xinitrc', 'a') as X11:
# X11.write('setxkbmap se\n')
# with open(f'{installation.mountpoint}/etc/vconsole.conf', 'a') as vconsole:
# vconsole.write('KEYMAP={keyboard_layout}\n'.format(**arguments))
# vconsole.write('FONT=lat9w-16\n')
# awesome = archinstall.Application(installation, 'awesome')
# awesome.install()