9 class TestRustBase(infra.basetest.BRTest):
11 target = 'armv7-unknown-linux-gnueabihf'
15 img = os.path.join(self.builddir, "images", "rootfs.cpio")
16 self.emulator.boot(arch="armv7",
18 options=["-initrd", img])
21 def build_test_prog(self):
22 hostdir = os.path.join(self.builddir, 'host')
23 env = os.environ.copy()
24 env["PATH"] = "{}:".format(os.path.join(hostdir, 'bin')) + env["PATH"]
25 env["CARGO_HOME"] = os.path.join(hostdir, 'usr', 'share', 'cargo')
26 env["RUST_TARGET_PATH"] = os.path.join(hostdir, 'etc', 'rustc')
27 cargo = os.path.join(hostdir, 'bin', 'cargo')
28 workdir = os.path.join(tempfile.mkdtemp(suffix='-br2-testing-rust'),
30 manifest = os.path.join(workdir, 'Cargo.toml')
31 prog = os.path.join(workdir, 'target', self.target, 'debug', self.crate)
33 cmd = [cargo, 'init', '--bin', '--vcs', 'none', '-vv', workdir]
34 ret = subprocess.call(cmd,
35 stdout=self.b.logfile,
36 stderr=self.b.logfile,
39 raise SystemError("Cargo init failed")
42 cargo, 'build', '-vv', '--target', self.target,
43 '--manifest-path', manifest
45 ret = subprocess.call(cmd,
46 stdout=self.b.logfile,
47 stderr=self.b.logfile,
50 raise SystemError("Cargo build failed")
52 shutil.copy(prog, os.path.join(self.builddir, 'target', 'usr', 'bin'))
54 shutil.rmtree(workdir)
57 self.build_test_prog()
59 _, exit_code = self.emulator.run(self.crate)
60 self.assertEqual(exit_code, 0)
63 class TestRustBin(TestRustBase):
70 BR2_TOOLCHAIN_EXTERNAL=y
71 BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
72 BR2_SYSTEM_DHCP="eth0"
74 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
75 BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3"
76 BR2_LINUX_KERNEL_DEFCONFIG="vexpress"
77 BR2_LINUX_KERNEL_DTS_SUPPORT=y
78 BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9"
79 BR2_TARGET_ROOTFS_CPIO=y
80 # BR2_TARGET_ROOTFS_TAR is not set
81 BR2_PACKAGE_HOST_CARGO=y
82 BR2_PACKAGE_HOST_RUSTC=y
86 class TestRust(TestRustBase):
93 BR2_TOOLCHAIN_EXTERNAL=y
94 BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
95 BR2_SYSTEM_DHCP="eth0"
97 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
98 BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3"
99 BR2_LINUX_KERNEL_DEFCONFIG="vexpress"
100 BR2_LINUX_KERNEL_DTS_SUPPORT=y
101 BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9"
102 BR2_TARGET_ROOTFS_CPIO=y
103 # BR2_TARGET_ROOTFS_TAR is not set
104 BR2_PACKAGE_HOST_CARGO=y
105 BR2_PACKAGE_HOST_RUSTC=y
106 BR2_PACKAGE_HOST_RUST=y