2016-12-28 1 views
0

J'ai essayé d'intégrer Ejabberd dans une application Web Phoenix. Pour ce faire, j'ai essayé de suivre this tutorial. Les étapes sont les suivantes:Erreur lors de la compilation de la dépendance Ejabberd d'une application Phoenix avec Mix: impossible de compiler la dépendance: ejabberd, "mix compile" a échoué

  • a installé une boîte ubuntu/xenial64Vagrant.

  • Elixir installé selon le official guide.

  • Installé Phoenix selon le official guide.

  • installé certains paquets pour compiler avec succès les dépendances d'applications de semences du Phoenix: sudo apt install build-essential libssl-dev libyaml-cpp-dev libyaml-dev libpython2.7-dev

  • J'ai ajouté la dépendance ejabberd au fichier mix.exs:

    defmodule PhoenixEjabberd.Mixfile do 
        use Mix.Project 
    
        def project do 
        [app: :phoenix_ejabberd, 
        version: "0.0.1", 
        elixir: "~> 1.2", 
        elixirc_paths: elixirc_paths(Mix.env), 
        compilers: [:phoenix, :gettext] ++ Mix.compilers, 
        build_embedded: Mix.env == :prod, 
        start_permanent: Mix.env == :prod, 
        aliases: aliases(), 
        deps: deps()] 
        end 
    
        # Configuration for the OTP application. 
        # 
        # Type `mix help compile.app` for more information. 
        def application do 
        [mod: {PhoenixEjabberd, []}, 
        applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, 
            :logger, :ejabberd, :gettext, 
            :phoenix_ecto, :postgrex]] 
        end 
    
        # Specifies which paths to compile per environment. 
        defp elixirc_paths(:test), do: ["lib", "web", "test/support"] 
        defp elixirc_paths(_),  do: ["lib", "web"] 
    
        # Specifies your project dependencies. 
        # 
        # Type `mix help deps` for examples and options. 
        defp deps do 
        [{:phoenix, "~> 1.2.1"}, 
        {:phoenix_pubsub, "~> 1.0"}, 
        {:phoenix_ecto, "~> 3.0"}, 
        {:postgrex, ">= 0.0.0"}, 
        {:phoenix_html, "~> 2.6"}, 
        {:phoenix_live_reload, "~> 1.0", only: :dev}, 
        {:gettext, "~> 0.11"}, 
        {:cowboy, "~> 1.0"}, 
        {:ejabberd, "~> 16.12", github: "processone/ejabberd"} 
        ] 
        end 
    
        # Aliases are shortcuts or tasks specific to the current project. 
        # For example, to create, migrate and run the seeds file at once: 
        # 
        #  $ mix ecto.setup 
        # 
        # See the documentation for `Mix` for more info on aliases. 
        defp aliases do 
        ["ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], 
        "ecto.reset": ["ecto.drop", "ecto.setup"], 
        "test": ["ecto.create --quiet", "ecto.migrate", "test"]] 
        end 
    end 
    
  • Exécuté mix do deps.get, compile

  • Vous avez une très grande quantité d'erreurs, principalement de fonctions et de variables indéfinies. J'ai mis le journal complet sur this Gist.

Pourquoi ces erreurs se produisent-elles? Est-ce que quelqu'un a réussi à compiler la dépendance ejabberd? Comment? Merci pour votre temps :).

Répondre

1

Pour une raison inconnue, ejabberd ne peut pas être compilé à partir du dossier du projet racine. Pour le compiler, j'ai fait ce qui suit:

mix deps.get # to retrieve ejabberd 
cd deps/ejabberd 
mix do deps.get, compile 
cd - # to the project root 
mix compile # now the project would compile