Packages
nerves_system_x86_64
1.21.0
1.34.0
1.33.5
1.33.4
1.33.3
1.33.2
1.33.1
1.33.0
1.32.0
1.31.3
1.31.2
1.31.1
1.31.0
1.30.1
1.30.0
1.29.1
1.29.0
1.28.1
1.28.0
1.27.1
1.27.0
1.26.0
1.25.1
1.25.0
1.24.1
1.24.0
1.23.2
1.23.1
1.23.0
1.22.2
1.22.1
1.22.0
1.21.2
1.21.1
1.21.0
1.20.3
1.20.2
1.20.1
1.20.0
retired
1.19.0
1.18.4
1.18.3
1.18.2
1.18.1
1.18.0
1.17.3
1.17.2
1.17.1
1.17.0
1.16.2
1.16.1
1.16.0
1.15.1
1.15.0
1.14.0
1.13.4
1.13.3
1.13.2
1.13.1
1.13.0
1.12.2
1.12.1
1.12.0
1.11.2
1.11.1
1.11.0
1.10.2
1.10.1
1.10.0
1.9.2
1.9.1
1.9.0
1.8.2
1.8.1
1.8.0
1.7.2
1.7.1
1.7.0
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.0
1.3.0
1.2.1
1.2.0
1.1.1
1.0.0
1.0.0-rc.1
1.0.0-rc.0
0.5.0
0.4.1
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
Nerves System - x86_64
Current section
Files
Jump to
Current section
Files
lib/mix/nerves.gen.qemu_script.ex
defmodule Mix.Tasks.Nerves.Gen.QemuScript do
use Mix.Task
@shortdoc "Generate QEMU start script"
@moduledoc """
Generates a shell script for starting QEMU on a firmware image that
uses `nerves_system_x86_64`.
To use the generated script, first create the firmware image using:
`$ mix firmware.image [path/to/my_app.img]`
Place this image somewhere where it won't get overwritten. This image
has a similar purpose to the MicroSD card, Flash memory or hard drive
that a real target would use.
Next, run this command and specify the path to the image. This path
may be overridden when invoking the script.
Example usage:
`$ mix nerves.gen.qemu_script [path/to/my_app.img]`
If the `.img` file isn't specified, it will default to the OTP
application's name plus the `.img` extension.
## Options
None
"""
@script_name "run-qemu.sh"
def run(["--" <> _arg | _argv]) do
error_image()
end
def run([image_path | _argv]) do
if File.exists?(@script_name) do
Mix.shell().yes?("Overwrite #{@script_name}?") || Mix.raise("Aborted")
end
source =
:code.priv_dir(:nerves_system_x86_64)
|> to_string
|> Path.join(@script_name)
bindings = [image_path: image_path]
contents = EEx.eval_file(source, bindings, trim: true)
File.write!(@script_name, contents)
File.chmod!(@script_name, 0o755)
Mix.shell().info("Created #{@script_name}")
end
def run([]) do
otp_app = Mix.Project.config()[:app]
image_path = "#{otp_app}.img"
run([image_path])
end
def run(_), do: error_image()
defp error_image do
Mix.raise("""
Unexpected arguments. Expecting to be run as follows:
$ mix nerves.gen.qemu_script [path/to/app.img]
""")
end
end