Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMickael Remond <mremond@process-one.net>2015-06-30 00:14:18 +0300
committerMickael Remond <mremond@process-one.net>2015-06-30 00:14:18 +0300
commitdf57a07dd5d760d7956500caa3262ff84538a560 (patch)
tree7a1b13361ba03e3c825bf2af83c3f9342c7f9e75 /mix.exs
parent3c12d1a9603af01e57ba45ecef498ec8f1e7a0c6 (diff)
Keep the version hardcoded in mix.exs file
Generated the mix.exs file through configure is not possible when using mix, as it does not run configure after having downloaded the dependencies. #621
Diffstat (limited to 'mix.exs')
-rw-r--r--mix.exs77
1 files changed, 77 insertions, 0 deletions
diff --git a/mix.exs b/mix.exs
new file mode 100644
index 000000000..c93a08811
--- /dev/null
+++ b/mix.exs
@@ -0,0 +1,77 @@
+defmodule Ejabberd.Mixfile do
+ use Mix.Project
+
+ def project do
+ [app: :ejabberd,
+ version: "15.06",
+ elixir: "~> 1.0",
+ elixirc_paths: ["lib"],
+ compile_path: ".",
+ compilers: [:asn1] ++ Mix.compilers,
+ erlc_options: erlc_options,
+ erlc_paths: ["asn1", "src"],
+ deps: deps]
+ end
+
+ def application do
+ [mod: {:ejabberd_app, []},
+ applications: [:kernel, :stdlib]]
+ end
+
+ defp erlc_options do
+ includes = Path.wildcard(Path.join("..", "/*/include"))
+ [:debug_info, {:d, :NO_EXT_LIB}] ++ Enum.map(includes, fn(path) -> {:i, path} end)
+ end
+
+ defp deps do
+ [
+ {:p1_xml, github: "processone/xml"},
+ {:p1_logger, github: "processone/p1_logger"},
+ {:p1_yaml, github: "processone/p1_yaml"},
+ {:p1_tls, github: "processone/tls"},
+ {:p1_stringprep, github: "processone/stringprep"},
+ {:p1_zlib, github: "processone/zlib"},
+ {:p1_cache_tab, github: "processone/cache_tab"},
+ {:p1_utils, github: "processone/p1_utils"},
+ {:p1_iconv, github: "processone/eiconv"},
+ {:esip, github: "processone/p1_sip"},
+ {:p1_stun, github: "processone/stun"},
+ {:ehyperloglog, github: "vaxelfel/eHyperLogLog"},
+ {:p1_mysql, github: "processone/mysql"},
+ {:p1_pgsql, github: "processone/pgsql"},
+ {:eredis, github: "wooga/eredis"}
+ ]
+ end
+end
+
+defmodule Mix.Tasks.Compile.Asn1 do
+ use Mix.Task
+ alias Mix.Compilers.Erlang
+
+ @recursive true
+ @manifest ".compile.asn1"
+
+ def run(args) do
+ {opts, _, _} = OptionParser.parse(args, switches: [force: :boolean])
+
+ project = Mix.Project.config
+ source_paths = project[:asn1_paths] || ["asn1"]
+ dest_paths = project[:asn1_target] || ["src"]
+ mappings = Enum.zip(source_paths, dest_paths)
+ options = project[:asn1_options] || []
+
+ Erlang.compile(manifest(), mappings, :asn1, :erl, opts[:force], fn
+ input, output ->
+ options = options ++ [:noobj, outdir: Erlang.to_erl_file(Path.dirname(output))]
+ case :asn1ct.compile(Erlang.to_erl_file(input), options) do
+ :ok -> {:ok, :done}
+ error -> error
+ end
+ end)
+ end
+
+ def manifests, do: [manifest]
+ defp manifest, do: Path.join(Mix.Project.manifest_path, @manifest)
+
+ def clean, do: Erlang.clean(manifest())
+end