Skip to content

Update VirtualBox build + extend to ARM64#233

Merged
mbercx merged 22 commits intomainfrom
fix/update
Feb 26, 2026
Merged

Update VirtualBox build + extend to ARM64#233
mbercx merged 22 commits intomainfrom
fix/update

Conversation

@mbercx
Copy link
Copy Markdown
Collaborator

@mbercx mbercx commented Feb 26, 2026

Fixes #194

@mbercx mbercx force-pushed the fix/update branch 18 times, most recently from c0ed8e8 to 06afb50 Compare February 26, 2026 12:50
@mbercx mbercx marked this pull request as draft February 26, 2026 12:50
@mbercx mbercx force-pushed the fix/update branch 2 times, most recently from 0f224ba to d6dc28a Compare February 26, 2026 12:55
@mbercx mbercx marked this pull request as ready for review February 26, 2026 12:57
@mbercx mbercx marked this pull request as draft February 26, 2026 12:59
@mbercx mbercx marked this pull request as ready for review February 26, 2026 13:01
@mbercx mbercx force-pushed the fix/update branch 5 times, most recently from 80a511c to f1b34ee Compare February 26, 2026 13:53
mbercx and others added 11 commits February 26, 2026 17:05
Install JupyterLab shortcut to `/usr/share/applications/` instead of directly
to the Desktop. This should still be relatively easy to find for users that want to
use JupyterLab.

Remove the Quantum Mobile homepage desktop shortcut entirely. Anyone who is using
Quantum Mobile most likely downloaded it from this website anyways, no need for this
extra advertisement.

This removes the need for manual post-installation steps where desktop shortcuts
had to be manually enabled via `desktop-file-install` and "Allow Launching".
The JupyterLab shortcut is now properly installed as a system application and
can still be added to the Desktop by users if desired.
Fix two bugs in SSSP and DOJO pseudopotential installation tasks:

1. Update `creates` parameter to check for actual output file
   (e.g., SSSP_1.1_PBE_efficiency.aiida_pseudo) instead of generic
   archive.tar.gz, ensuring correct idempotency per variant

2. Check `stdout` instead of `stderr` for "already installed" message,
   fixing both error detection and change reporting
Reorder PostgreSQL setup tasks to create user before database, and explicitly set
database owner during creation. This follows PostgreSQL best practices and removes
unnecessary db parameter from user creation task.

Co-authored-by: mankoNm <64478264+mankoNm@users.noreply.github.com>
Remove pip upgrade task that fails on Ubuntu 24.04 due to PEP 668 "externally managed"
environment protection:

https://peps.python.org/pep-0668/

System pip from apt is sufficient; user packages are installed in conda environments.

Co-authored-by: mankoNm <64478264+mankoNm@users.noreply.github.com>
Remove vagrant-provision host and Vagrant-triggered Ansible provisioning due to
recurring SSH connection issues. The automatic provisioning often failed mid-run,
requiring fallback to manual SSH config method anyway. New workflow clearly
separates VM creation (`tox -e vagrant`) from provisioning (`tox -e ansible` using
SSH config), improving reliability without much added complexity. Rename vagrant-ssh
host to vagrant for simplicity. Update the tox.ini syntax to replace the removed
`whitelist_externals` by `allowlist_externals`.
Replace `linux-headers-generic` with `linux-headers-{{ ansible_kernel }}` to avoid
dependency issues on ARM64 where the generic metapackage can temporarily reference
newer kernel versions before corresponding header packages are available. Using
kernel-specific headers ensures we install for the currently running kernel. Enable
fact gathering to access `ansible_kernel` variable.
Replace the `chrisjsewell.conda.install_pkgs` module with direct mamba commands to work
around an issue when handling architecture-specific packages. The module fails to parse
mamba's plain-text error output, raising generic errors instead of
`PackagesNotFoundError`.

Understanding this module and fixing the issue is probably preferable, but the same
logic can be implemented with direct mamba calls. The new approach explicitly checks
environment existence, uses mamba create/install accordingly, and adds environment bins
to PATH for direct code execution.
Update base image from Ubuntu 20.04 to 24.04 LTS for current package versions
and better ARM64 support. Increase default memory from 1536 MB to 2048 MB to
accommodate modern desktop environments. Add explicit vm_wm_package configuration
for ubuntu-desktop-minimal.

Co-authored-by: mankoNm <64478264+mankoNm@users.noreply.github.com>
Update Ansible from 2.10.0 to 13.4 (`ansible-core` 2.20) and resolve breaking changes:
replace removed `community.general.yaml` callback with `ansible.builtin.default` and
`result_format=yaml`, update deprecated `callback_whitelist` to `callbacks_enabled`, use
`ansible_facts` dictionary instead of auto-injected fact variables, rename reserved
'name' variable to 'profile_name' in aiida-profile tasks, and enable
`allow_broken_conditionals` to work around stricter conditional checking that breaks
third-party collections.

Co-authored-by: mankoNm <64478264+mankoNm@users.noreply.github.com>
Add `netplan` configuration to lock network renderer to `networkd` before installing
`ubuntu-desktop`. Installing `ubuntu-desktop` pulls in NetworkManager which can take
over network management mid-install, causing the interface to lose its IP and
breaking the Ansible connection. Also add `ubuntu_desktop_wm_package` variable to
role configuration.
Update from Mambaforge 22.11.1-4 to Miniforge3 25.11.0-1 (Mambaforge is
deprecated) and add support for both x86_64 and aarch64 architectures. Installer
URL and checksum now dynamically selected based on ansible_facts['architecture'],
enabling builds on ARM64 Linux and Apple Silicon systems.
@mbercx mbercx changed the title [WIP] Update VBox build + extend to ARM64 Update VirtualBox build + extend to ARM64 Feb 26, 2026
@mbercx mbercx force-pushed the fix/update branch 2 times, most recently from 99f5545 to 3c83e52 Compare February 26, 2026 20:13
mbercx and others added 8 commits February 26, 2026 21:27
Add comprehensive architecture support (`x86_64` for AMD64 and `aarch64` for ARM64) for
simulation codes, AiiDA plugins, and AiiDA codes. Categorize packages by architecture
availability:

* `x86_64` only: ABINIT, BigDFT, CP2K, Fleur, Wannier90 and Siesta
* `x86_64` and `aarch64`: NwChem, Quantum ESPRESSO and Yambo

Build AiiDA plugin list dynamically based on architecture. Update to Python 3.10,
and `aiida-core` 2.7. Enable ARM64 Linux builds by skipping x86_64-only packages.

For now, we remove `aiida-cp2k` support due to a dependency conflict with
aiida-core v2.7.

Co-authored-by: mankoNm <64478264+mankoNm@users.noreply.github.com>
Update `marvel-nccr.ubuntu_desktop` role from v1.1.0 to v2.0.0 for Ubuntu 24.04
support and improved desktop environment configuration. Update `marvel-nccr.slurm`
from v2.0.2 to v3.0.0 for modern SLURM compatibility.

Co-authored-by: mankoNm <64478264+mankoNm@users.noreply.github.com>
Co-authored-by: mankoNm <64478264+mankoNm@users.noreply.github.com>
Remove (almost) duplicate `aiida-conda-env.yml` task file and use the unified
`conda-env-install.yml` for both simulation code environments and AiiDA
environment. Rename `code_packages` variable to packages for generality. Move
verdi TAB completion setup directly into playbook. Reduces code duplication and
simplifies maintenance.
Comment out `--accelerate3d` setting which is incompatible with the vmsvga
graphics controller in VirtualBox 7.2.6, causing "The graphics controller does
not support the given feature" error.

Also add 'never' tag to `aiida-examples` to prevent running this task unless explicitly
requested. This seems to get stuck and will need more careful debugging.
Replace Vagrant-based CI with Docker-based testing due to nested virtualization
not being supported on GitHub-hosted runners. Vagrant/VirtualBox requires nested
virtualization which fails on both macOS and Ubuntu cloud VMs, making VM-based CI
impossible. Docker containers provide a viable alternative that works on GitHub's
infrastructure.

Switch from macOS to Ubuntu runners (`ubuntu-latest` and `ubuntu-24.04-arm`) to enable
multi-architecture testing on both `x86_64` and ARM64. Add docker-ci inventory host
and `ci_skip` tags for Docker-incompatible tasks (GUI) or roles that are already tested
elsewhere. Make the AiiDA daemon service conditional on platform to avoid `systemd`
failures in containers.

This enables CI that actually tests Ansible provisioning instead of just
initialization, while validating architecture-specific package filtering works
correctly on both platforms. Vagrant-based issues should be easily detected building
locally.
Add retry logic to pseudopotential downloads to handle transient network failures. Both
SSSP and PseudoDojo downloads will now retry up to 3 times if the download fails due to
connection timeouts or temporary network issues.
Update the `build-vagrant.md` documentation to reflect the current build system and fix
outdated or incorrect information. Split VM creation and Ansible provisioning into two
explicit steps, clarify that `vagrant-vbguest` is optional troubleshooting tool, remove
redundant commands now handled automatically by `tox`, and add a simply not on the
time required.
@mbercx mbercx merged commit 8d1fd2d into main Feb 26, 2026
4 checks passed
@mbercx mbercx deleted the fix/update branch February 26, 2026 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

what about Apple M1 ?

1 participant