This adds a simple test running GNU Hello cross-compiled for armv7l and aarch64 inside a x86_64 VM with configured binfmt. We already build the cross toolchains in other invocations, and building hello itself is small.
		
			
				
	
	
		
			25 lines
		
	
	
		
			635 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			635 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
# Teach the kernel how to run armv7l and aarch64-linux binaries,
 | 
						|
# and run GNU Hello for these architectures.
 | 
						|
import ./make-test-python.nix ({ pkgs, ... }: {
 | 
						|
  name = "systemd-binfmt";
 | 
						|
  machine = {
 | 
						|
    boot.binfmt.emulatedSystems = [
 | 
						|
      "armv7l-linux"
 | 
						|
      "aarch64-linux"
 | 
						|
    ];
 | 
						|
  };
 | 
						|
 | 
						|
  testScript = let
 | 
						|
    helloArmv7l = pkgs.pkgsCross.armv7l-hf-multiplatform.hello;
 | 
						|
    helloAarch64 = pkgs.pkgsCross.aarch64-multiplatform.hello;
 | 
						|
  in ''
 | 
						|
    machine.start()
 | 
						|
    assert "world" in machine.succeed(
 | 
						|
        "${helloArmv7l}/bin/hello"
 | 
						|
    )
 | 
						|
    assert "world" in machine.succeed(
 | 
						|
        "${helloAarch64}/bin/hello"
 | 
						|
    )
 | 
						|
  '';
 | 
						|
})
 |