Fix compilation of 17.09

pull/5/head
Christophe Romain 7 years ago
parent c4815f9398
commit 01d840bb6a

@ -1,7 +1,7 @@
FROM alpine:3.6
MAINTAINER ProcessOne <contact@process-one.net>
ENV REFRESHED_AT=2017-09-18 \
ENV REFRESHED_AT=2017-10-13 \
HOME=/home/p1 \
TERM=xterm \
LC_ALL=C.UTF-8 \
@ -20,9 +20,9 @@ ENV P1DATA=${HOME}/db \
COPY ejabberd.yml ${HOME}/cfg/
# TODO Make it possible to define which version of Alpine we would like to use.
RUN echo "http://nl.alpinelinux.org/alpine/v3.6/main" > /etc/apk/repositories && \
echo "http://nl.alpinelinux.org/alpine/v3.6/community" >> /etc/apk/repositories && \
apk upgrade --update musl && \
#RUN echo "http://nl.alpinelinux.org/alpine/v3.6/main" > /etc/apk/repositories && \
# echo "http://nl.alpinelinux.org/alpine/v3.6/community" >> /etc/apk/repositories && \
RUN apk upgrade --update musl && \
apk add bash su-exec libstdc++ ncurses-libs openssl expat yaml zlib sqlite && \
rm -rf /var/cache/apk/*

@ -1,6 +1,6 @@
#/bin/bash
VERSION=17.08
VERSION=17.09
GREEN='\033[0;32m'
NC='\033[0m' # No Color]]'
@ -15,6 +15,7 @@ if [ ! -d ejbuild ]; then
git clone https://github.com/processone/ejabberd.git ejbuild
fi
(cd ejbuild; git checkout master && git pull && git checkout $VERSION)
cp mix.exs ejbuild
cat > ejbuild/vars.config <<EOF
{mysql, true}.
{pgsql, true}.

@ -0,0 +1,154 @@
defmodule Ejabberd.Mixfile do
use Mix.Project
def project do
[app: :ejabberd,
version: "17.9.0",
description: description(),
elixir: "~> 1.4",
elixirc_paths: ["lib"],
compile_path: ".",
compilers: [:asn1] ++ Mix.compilers,
erlc_options: erlc_options(),
erlc_paths: ["asn1", "src"],
# Elixir tests are starting the part of ejabberd they need
aliases: [test: "test --no-start"],
package: package(),
deps: deps()]
end
def description do
"""
Robust, ubiquitous and massively scalable Jabber / XMPP Instant Messaging platform.
"""
end
def application do
[mod: {:ejabberd_app, []},
applications: [:ssl],
included_applications: [:lager, :mnesia, :inets, :p1_utils, :cache_tab,
:fast_tls, :stringprep, :fast_xml, :xmpp,
:stun, :fast_yaml, :esip, :jiffy, :p1_oauth2]
++ cond_apps()]
end
defp erlc_options do
# Use our own includes + includes from all dependencies
includes = ["include"] ++ deps_include(["fast_xml", "xmpp", "p1_utils"])
[:debug_info, {:d, :ELIXIR_ENABLED}] ++ Enum.map(includes, fn(path) -> {:i, path} end)
end
defp deps do
[{:lager, "~> 3.4.0"},
{:p1_utils, github: "processone/p1_utils", tag: "1.0.10", override: true, manager: :rebar},
{:cache_tab, github: "processone/cache_tab", tag: "1.0.11", override: true, manager: :rebar},
{:fast_tls, github: "processone/fast_tls", tag: "1.0.16", override: true, manager: :rebar},
{:fast_xml, github: "processone/fast_xml", tag: "1.1.24", override: true, manager: :rebar},
{:fast_yaml, github: "processone/fast_yaml", tag: "1.0.11", override: true, manager: :rebar},
{:stringprep, github: "processone/stringprep", tag: "1.0.10", override: true, manager: :rebar},
{:xmpp, github: "processone/xmpp", tag: "1.1.15", override: true, manager: :rebar},
{:stun, "~> 1.0"},
{:esip, "~> 1.0"},
{:jiffy, "~> 0.14.7"},
{:p1_oauth2, "~> 0.6.1"},
{:distillery, "~> 1.0"},
{:ex_doc, ">= 0.0.0", only: :dev}]
++ cond_deps()
end
defp deps_include(deps) do
base = case Mix.Project.deps_paths()[:ejabberd] do
nil -> "deps"
_ -> ".."
end
Enum.map(deps, fn dep -> base<>"/#{dep}/include" end)
end
defp cond_deps do
for {:true, dep} <- [{config(:mysql), {:p1_mysql, "~> 1.0"}},
{config(:pgsql), {:p1_pgsql, "~> 1.1"}},
{config(:sqlite), {:sqlite3, "~> 1.1"}},
{config(:riak), {:riakc, "~> 2.4"}},
{config(:redis), {:eredis, "~> 1.0"}},
{config(:zlib), {:ezlib, "~> 1.0"}},
{config(:iconv), {:iconv, "~> 1.0"}},
{config(:pam), {:epam, "~> 1.0"}},
{config(:tools), {:luerl, github: "rvirding/luerl", tag: "v0.2"}},
{config(:tools), {:meck, "~> 0.8.4"}},
{config(:tools), {:moka, github: "processone/moka", tag: "1.0.5c"}}], do:
dep
end
defp cond_apps do
for {:true, app} <- [{config(:redis), :eredis},
{config(:mysql), :p1_mysql},
{config(:pgsql), :p1_pgsql},
{config(:sqlite), :sqlite3},
{config(:zlib), :ezlib},
{config(:iconv), :iconv}], do:
app
end
defp package do
[# These are the default files included in the package
files: ["lib", "src", "priv", "mix.exs", "include", "README.md", "COPYING"],
maintainers: ["ProcessOne"],
licenses: ["GPLv2"],
links: %{"Site" => "https://www.ejabberd.im",
"Documentation" => "http://docs.ejabberd.im",
"Source" => "https://github.com/processone/ejabberd",
"ProcessOne" => "http://www.process-one.net/"}]
end
defp vars do
case :file.consult("vars.config") do
{:ok,config} -> config
_ -> [zlib: true, iconv: true]
end
end
defp config(key) do
case vars()[key] do
nil -> false
value -> value
end
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] || []
force = case opts[:force] do
:true -> [force: true]
_ -> [force: false]
end
Erlang.compile(manifest(), mappings, :asn1, :erl, 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

@ -1,17 +1,13 @@
FROM alpine:3.6
MAINTAINER ProcessOne <contact@process-one.net>
RUN echo "http://nl.alpinelinux.org/alpine/v3.6/main" > /etc/apk/repositories && \
echo "http://nl.alpinelinux.org/alpine/v3.6/community" >> /etc/apk/repositories && \
apk upgrade --update musl && \
RUN apk upgrade --update musl && \
apk add build-base git zlib-dev openssl-dev yaml-dev expat-dev sqlite-dev \
elixir erlang-crypto erlang-eunit erlang-mnesia erlang-xmerl erlang-erts \
erlang-tools erlang-os-mon erlang-syntax-tools erlang-parsetools \
erlang-runtime-tools erlang-reltool && \
rm -rf /var/cache/apk/*
# Install Hex+Rebar
RUN mix local.hex --force && \
mix local.rebar --force

Loading…
Cancel
Save