defmodule LarsenSystemRpi3.Mixfile do use Mix.Project @app :larsen_system_rpi3 @version Path.join(__DIR__, "VERSION") |> File.read!() |> String.trim() def project do [ app: @app, version: @version, elixir: "~> 1.6", compilers: Mix.compilers() ++ [:nerves_package], nerves_package: nerves_package(), description: description(), package: package(), deps: deps(), aliases: [loadconfig: [&bootstrap/1], docs: ["docs", ©_images/1]], docs: [extras: ["README.md"], main: "readme"] ] end def application do [] end defp bootstrap(args) do set_target() Application.start(:nerves_bootstrap) Mix.Task.run("loadconfig", args) end defp nerves_package do [ type: :system, artifact_sites: [ # {:github_releases, "yiyun-labs/#{@app}"}, {:github_api, "zhangyt0906/larsen_system", username: System.get_env("GITHUB_USER"), token: System.get_env("GITHUB_TOKEN"), tag: @version} # {:prefix, "https://devrepo.devcloud.huaweicloud.com/DevRepoServer/v1/files/download?filename=afc71fe391ec4eefa9d1de09c9151818/larsen_systems/"}, ], build_runner_opts: build_runner_opts(), platform: Nerves.System.BR, platform_config: [ defconfig: "nerves_defconfig" ], checksum: package_files() ] end defp deps do [ {:nerves, "~> 1.4", runtime: false}, {:nerves_system_br, "1.8.2", runtime: false}, {:nerves_toolchain_arm_unknown_linux_gnueabihf, "1.2.0", runtime: false}, {:nerves_system_linter, "~> 0.3.0", runtime: false}, {:ex_doc, "~> 0.18", only: [:dev, :test], runtime: false} ] end defp description do """ Larsen System RPI3 """ end defp package do [ maintainers: ["yiyun"], files: package_files(), licenses: ["Apache 2.0"], links: %{"GitHub" => "https://github.com/nerves-project/nerves_system_rpi3"} ] end defp package_files do [ "fwup_include", "rootfs_overlay", "CHANGELOG.md", "cmdline.txt", "config.txt", "fwup-revert.conf", "fwup.conf", "LICENSE", "linux-4.19.defconfig", "mix.exs", "nerves_defconfig", "post-build.sh", "post-createfs.sh", "ramoops.dts", "README.md", "VERSION" ] end # 复制文档中使用的图片,因为ex_doc不支持 defp copy_images(_) do File.cp_r("assets", "doc/assets") end defp build_runner_opts() do if primary_site = System.get_env("BR2_PRIMARY_SITE") do [make_args: ["BR2_PRIMARY_SITE=#{primary_site}"]] else [make_args: ["PARALLEL_JOBS=8"]] end end defp set_target() do if function_exported?(Mix, :target, 1) do apply(Mix, :target, [:target]) else System.put_env("MIX_TARGET", "target") end end end