diff --git a/.github/workflows/linux-precompile.yml b/.github/workflows/linux-precompile.yml deleted file mode 100644 index f3f4d7d..0000000 --- a/.github/workflows/linux-precompile.yml +++ /dev/null @@ -1,155 +0,0 @@ -name: linux-precompile - -on: - push: - tags: - - 'v*' - -permissions: - contents: write - -jobs: - armv7l-linux-gnueabihf: - runs-on: ubuntu-latest - container: ubuntu:20.04 - env: - ImageOS: ubuntu20 - LANG: en_US.UTF-8 - LANGUAGE: en_US:en - LC_ALL: en_US.UTF-8 - DEBIAN_FRONTEND: noninteractive - ARCH: armv7l - TARGET: armv7l-linux-gnueabihf - strategy: - matrix: - job: - - {otp: "27.1.1", elixir: "1.17"} - - {otp: "25.3.2.14", elixir: "1.16"} - - name: Linux armv7l - OTP ${{ matrix.job.otp }} - Elixir ${{ matrix.job.elixir }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install system dependecies - run: | - alias sudo=`which sudo` - $sudo apt-get update - $sudo apt-get install -y \ - build-essential automake autoconf pkg-config wget curl \ - bc m4 unzip zip gcc g++ ca-certificates libssl-dev - - - uses: erlef/setup-beam@v1 - with: - otp-version: ${{ matrix.job.otp }} - elixir-version: ${{ matrix.job.elixir }} - - - name: Install armv7l specific deps - run: | - alias sudo=`which sudo` - $sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf - - - name: Create precompiled ${{ env.ARCH }} library - run: | - ROOTDIR="$(pwd)" - OTP_ROOTDIR="${ROOTDIR}/.tools/otp" - mkdir -p "${OTP_ROOTDIR}" - cd "${OTP_ROOTDIR}" - curl -fSL "https://github.com/cocoa-xu/otp-build/releases/download/v${{ matrix.job.otp }}/otp-${{ env.TARGET }}.tar.gz" -o "otp-${{ env.TARGET }}.tar.gz" - tar -xzf "otp-${{ env.TARGET }}.tar.gz" - cd "${ROOTDIR}" - - export PRECOMPILE_ERL_EI_INCLUDE_DIR="${OTP_ROOTDIR}/usr/local/lib/erlang/usr/include" - export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache - mkdir -p "${ELIXIR_MAKE_CACHE_DIR}" - mix deps.get - mix elixir_make.precompile - - - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') - with: - files: | - cache/*${{ env.TARGET }}*.tar.gz - - precompile: - runs-on: ubuntu-latest - container: ubuntu:20.04 - env: - ImageOS: ubuntu20 - LANG: en_US.UTF-8 - LANGUAGE: en_US:en - LC_ALL: en_US.UTF-8 - DEBIAN_FRONTEND: noninteractive - MIX_ENV: prod - strategy: - matrix: - arch: - - x86_64 - - aarch64 - - riscv64 - job: - - {otp: "27", elixir: "1.17"} - - {otp: "25", elixir: "1.16"} - - name: Linux ${{ matrix.arch }} - OTP ${{ matrix.job.otp }} - Elixir ${{ matrix.job.elixir }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install system dependecies - run: | - alias sudo=`which sudo` - $sudo apt-get update - $sudo apt-get install -y \ - build-essential automake autoconf pkg-config wget curl \ - bc m4 unzip zip gcc g++ ca-certificates libssl-dev - - - uses: erlef/setup-beam@v1 - with: - otp-version: ${{ matrix.job.otp }} - elixir-version: ${{ matrix.job.elixir }} - - - name: Install x86_64 specific deps - if: matrix.arch == 'x86_64' - run: | - alias sudo=`which sudo` - $sudo apt-get install -y gcc-i686-linux-gnu g++-i686-linux-gnu \ - gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu \ - gcc-s390x-linux-gnu g++-s390x-linux-gnu - - - name: Install aarch64 specific deps - if: matrix.arch == 'aarch64' - run: | - alias sudo=`which sudo` - $sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - - - name: Install riscv64 specific deps - if: matrix.arch == 'riscv64' - run: | - alias sudo=`which sudo` - $sudo apt-get install -y gcc-riscv64-linux-gnu g++-riscv64-linux-gnu - - - name: Get musl ${{ matrix.arch }} cross-compilers - run: | - wget "https://musl.cc/${{matrix.arch}}-linux-musl-cross.tgz" -O "${{matrix.arch}}-linux-musl-cross.tgz" - tar -xf "${{matrix.arch}}-linux-musl-cross.tgz" - - - name: Create precompiled ${{ matrix.arch }} library - run: | - export PATH="$(pwd)/${{ matrix.arch }}-linux-musl-cross/bin:${PATH}" - export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache - mkdir -p "${ELIXIR_MAKE_CACHE_DIR}" - mix deps.get - mix elixir_make.precompile - - - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') && matrix.arch == 'x86_64' - with: - files: | - cache/*.tar.gz - - - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') && matrix.arch != 'x86_64' - with: - files: | - cache/*${{ matrix.arch }}*.tar.gz diff --git a/.github/workflows/macos-precompile.yml b/.github/workflows/macos-precompile.yml deleted file mode 100644 index 4780bf3..0000000 --- a/.github/workflows/macos-precompile.yml +++ /dev/null @@ -1,79 +0,0 @@ -name: macos-precompile - -on: - push: - tags: - - 'v*' - -permissions: - contents: write - -jobs: - precompile: - runs-on: macos-14 - env: - MIX_ENV: prod - CC_PRECOMPILER_PRECOMPILE_ONLY_LOCAL: "true" - strategy: - matrix: - arch: - - x86_64-apple-darwin - - arm64-apple-darwin - job: - - {otp: "27.0.1", elixir: "1.17.2"} - - {otp: "25.3.2.13", elixir: "1.16.3"} - - name: Mac ${{ matrix.arch }} - OTP ${{ matrix.job.otp }} - Elixir ${{ matrix.job.elixir }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install asdf - uses: asdf-vm/actions/setup@v2 - - - name: Cache asdf - id: asdf-cache - uses: actions/cache@v3 - with: - path: ~/.asdf - key: asdf-${{ runner.os }}-build-${{ matrix.job.otp }}-${{ matrix.job.elixir }} - - - if: ${{ steps.asdf-cache.outputs.cache-hit != 'true' }} - name: Install Erlang & Elixir - env: - ELIXIR_VERSION: ${{ matrix.job.elixir }} - OTP_VERSION: ${{ matrix.job.otp }} - run: | - asdf plugin-add erlang - asdf install erlang ${OTP_VERSION} - - ELIXIR_OTP_VERSION=$(echo $OTP_VERSION | cut -d. -f1) - asdf plugin-add elixir - asdf install elixir ${ELIXIR_VERSION}-otp-${ELIXIR_OTP_VERSION} - - - name: Setup Erlang & Elixir - env: - ELIXIR_VERSION: ${{ matrix.job.elixir }} - OTP_VERSION: ${{ matrix.job.otp }} - run: | - asdf global erlang ${OTP_VERSION} - ELIXIR_OTP_VERSION=$(echo $OTP_VERSION | cut -d. -f1) - asdf global elixir ${ELIXIR_VERSION}-otp-${ELIXIR_OTP_VERSION} - - - name: Install hex & rebar - run: | - mix local.hex --force - mix local.rebar --force - - - name: Pre-compile NIF library - run: | - export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache - mkdir -p "${ELIXIR_MAKE_CACHE_DIR}" - mix deps.get - mix elixir_make.precompile - - - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') - with: - files: | - cache/*.tar.gz diff --git a/.github/workflows/windows-precompile.yml b/.github/workflows/windows-precompile.yml deleted file mode 100644 index c1b0f04..0000000 --- a/.github/workflows/windows-precompile.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: windows-precompile - -on: - push: - tags: - - 'v*' - -permissions: - contents: write - -jobs: - precompile: - runs-on: windows-2022 - env: - MIX_ENV: prod - strategy: - matrix: - arch: - - x64 - job: - - {otp: "27", elixir: "1.17"} - - {otp: "25", elixir: "1.14"} - - name: Windows ${{ matrix.arch }} - OTP ${{ matrix.job.otp }} - Elixir ${{ matrix.job.elixir }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - uses: erlef/setup-beam@v1 - with: - otp-version: ${{ matrix.job.otp }} - elixir-version: ${{ matrix.job.elixir }} - - - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: ${{ matrix.arch }} - - - name: Pre-compile NIF library - shell: bash - run: | - export ELIXIR_MAKE_CACHE_DIR=$(pwd)/cache - mkdir -p "${ELIXIR_MAKE_CACHE_DIR}" - mix deps.get - mix elixir_make.precompile - - - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') - with: - files: | - cache/*.tar.gz diff --git a/CHANGELOG.md b/CHANGELOG.md index d9b7d60..3a67c4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ ## Unreleased +- changed: Recently https://musl.cc has blocked all traffic coming from Github + actions, so I can not precompile these binaries automatically anymore. I + empathize with the toolchain maintainer's plight. I can not get these + binaries to be mirrored in Github so that the bandwidth stays in house. + Nor do I want to be building on my home machines manually. Instead, this will + go back to being compiled from source for everyone. + ## v0.31.0 - changed: Update sqlite to `3.50.0`. diff --git a/README.md b/README.md index 5de68e5..65923d7 100644 --- a/README.md +++ b/README.md @@ -30,17 +30,20 @@ Package: https://hex.pm/packages/exqlite * When storing `BLOB` values, you have to use `{:blob, the_binary}`, otherwise it will be interpreted as a string. +## Requirements + +- A working compiler (`gcc` or `clang`) + ## Installation ```elixir defp deps do [ - {:exqlite, "~> 0.27"} + {:exqlite, "~> 0.31"} ] end ``` - ## Configuration ### Runtime Configuration @@ -51,18 +54,6 @@ config :exqlite, default_chunk_size: 100 * `default_chunk_size` - The chunk size that is used when multi-stepping when not specifying the chunk size explicitly. - -### Compile-time Configuration - -In `config/config.exs`, - -```elixir -config :exqlite, force_build: false -``` - -* `force_build` - Set `true` to opt out of using precompiled artefacts. - This option only affects the default configuration. For advanced configuation, - this library will always compile natively. ## Advanced Configuration @@ -78,7 +69,6 @@ Or you can pass extra environment variables using the Elixir config: ```elixir config :exqlite, - force_build: true, make_env: %{ "EXQLITE_SYSTEM_CFLAGS" => "-DSQLITE_ENABLE_DBSTAT_VTAB=1", "V" => "1" diff --git a/mix.exs b/mix.exs index 3137f57..453f5c5 100644 --- a/mix.exs +++ b/mix.exs @@ -11,14 +11,7 @@ defmodule Exqlite.MixProject do compilers: [:elixir_make] ++ Mix.compilers(), make_targets: ["all"], make_clean: ["clean"], - make_force_build: Application.get_env(:exqlite, :force_build, false), - make_precompiler: make_precompiler(), - make_precompiler_url: - "https://github.com/elixir-sqlite/exqlite/releases/download/v#{@version}/@{artefact_filename}", - make_precompiler_filename: "sqlite3_nif", - make_precompiler_nif_versions: make_precompiler_nif_versions(), make_env: Application.get_env(:exqlite, :make_env, %{}), - cc_precompiler: cc_precompiler(), start_permanent: Mix.env() == :prod, aliases: aliases(), deps: deps(), @@ -27,8 +20,6 @@ defmodule Exqlite.MixProject do test_paths: test_paths(System.get_env("EXQLITE_INTEGRATION")), elixirc_paths: elixirc_paths(Mix.env()), dialyzer: dialyzer(), - - # Docs name: "Exqlite", source_url: "https://github.com/elixir-sqlite/exqlite", homepage_url: "https://github.com/elixir-sqlite/exqlite", @@ -49,7 +40,6 @@ defmodule Exqlite.MixProject do {:db_connection, "~> 2.1"}, {:ex_sqlean, "~> 0.8.5", only: [:dev, :test]}, {:elixir_make, "~> 0.8", runtime: false}, - {:cc_precompiler, "~> 0.1", runtime: false}, {:ex_doc, "~> 0.27", only: :dev, runtime: false}, {:temp, "~> 0.4", only: [:dev, :test]}, {:credo, "~> 1.6", only: [:dev, :test], runtime: false}, @@ -68,14 +58,6 @@ defmodule Exqlite.MixProject do "An Elixir SQLite3 library" end - defp make_precompiler do - if System.get_env("EXQLITE_USE_SYSTEM") != nil do - nil - else - {:nif, CCPrecompiler} - end - end - defp package do [ files: ~w( @@ -87,7 +69,6 @@ defmodule Exqlite.MixProject do .clang-format c_src Makefile* - checksum.exs ), name: "exqlite", licenses: ["MIT"], @@ -127,30 +108,4 @@ defmodule Exqlite.MixProject do plt_add_apps: ~w(table)a ] end - - def make_precompiler_nif_versions do - [ - versions: ["2.16", "2.17"] - ] - end - - defp cc_precompiler do - [ - cleanup: "clean", - compilers: %{ - {:unix, :linux} => %{ - :include_default_ones => true, - "x86_64-linux-musl" => "x86_64-linux-musl-", - "aarch64-linux-musl" => "aarch64-linux-musl-", - "riscv64-linux-musl" => "riscv64-linux-musl-" - }, - {:unix, :darwin} => %{ - :include_default_ones => true - }, - {:win32, :nt} => %{ - :include_default_ones => true - } - } - ] - end end diff --git a/mix.lock b/mix.lock index e519b05..66871e4 100644 --- a/mix.lock +++ b/mix.lock @@ -1,20 +1,19 @@ %{ "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, - "cc_precompiler": {:hex, :cc_precompiler, "0.1.10", "47c9c08d8869cf09b41da36538f62bc1abd3e19e41701c2cea2675b53c704258", [:mix], [{:elixir_make, "~> 0.7", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "f6e046254e53cd6b41c6bacd70ae728011aa82b2742a80d6e2214855c6e06b22"}, - "credo": {:hex, :credo, "1.7.11", "d3e805f7ddf6c9c854fd36f089649d7cf6ba74c42bc3795d587814e3c9847102", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "56826b4306843253a66e47ae45e98e7d284ee1f95d53d1612bb483f88a8cf219"}, + "credo": {:hex, :credo, "1.7.12", "9e3c20463de4b5f3f23721527fcaf16722ec815e70ff6c60b86412c695d426c1", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8493d45c656c5427d9c729235b99d498bd133421f3e0a683e5c1b561471291e5"}, "db_connection": {:hex, :db_connection, "2.7.0", "b99faa9291bb09892c7da373bb82cba59aefa9b36300f6145c5f201c7adf48ec", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"}, "dialyxir": {:hex, :dialyxir, "1.3.0", "fd1672f0922b7648ff9ce7b1b26fcf0ef56dda964a459892ad15f6b4410b5284", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "00b2a4bcd6aa8db9dcb0b38c1225b7277dca9bc370b6438715667071a304696f"}, - "earmark_parser": {:hex, :earmark_parser, "1.4.42", "f23d856f41919f17cd06a493923a722d87a2d684f143a1e663c04a2b93100682", [:mix], [], "hexpm", "6915b6ca369b5f7346636a2f41c6a6d78b5af419d61a611079189233358b8b8b"}, + "earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"}, "elixir_make": {:hex, :elixir_make, "0.9.0", "6484b3cd8c0cee58f09f05ecaf1a140a8c97670671a6a0e7ab4dc326c3109726", [:mix], [], "hexpm", "db23d4fd8b757462ad02f8aa73431a426fe6671c80b200d9710caf3d1dd0ffdb"}, "erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"}, - "ex_doc": {:hex, :ex_doc, "0.36.1", "4197d034f93e0b89ec79fac56e226107824adcce8d2dd0a26f5ed3a95efc36b1", [:mix], [{:earmark_parser, "~> 1.4.42", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "d7d26a7cf965dacadcd48f9fa7b5953d7d0cfa3b44fa7a65514427da44eafd89"}, + "ex_doc": {:hex, :ex_doc, "0.38.2", "504d25eef296b4dec3b8e33e810bc8b5344d565998cd83914ffe1b8503737c02", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "732f2d972e42c116a70802f9898c51b54916e542cc50968ac6980512ec90f42b"}, "ex_sqlean": {:hex, :ex_sqlean, "0.8.8", "be03d0aa4ee2955b59b386743ccaccbf0cc56f9635f701f185fe2d962b2ab214", [:mix], [], "hexpm", "de3644787ee736880597886decdf86f104c1778398401615c37d1ec4563146fa"}, "file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, - "makeup_erlang": {:hex, :makeup_erlang, "1.0.1", "c7f58c120b2b5aa5fd80d540a89fdf866ed42f1f3994e4fe189abebeab610839", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "8a89a1eeccc2d798d6ea15496a6e4870b75e014d1af514b1b71fa33134f57814"}, - "nimble_parsec": {:hex, :nimble_parsec, "1.4.1", "f41275a0354c736db4b1d255b5d2a27c91028e55c21ea3145b938e22649ffa3f", [:mix], [], "hexpm", "605e44204998f138d6e13be366c8e81af860e726c8177caf50067e1b618fe522"}, + "makeup_erlang": {:hex, :makeup_erlang, "1.0.2", "03e1804074b3aa64d5fad7aa64601ed0fb395337b982d9bcf04029d68d51b6a7", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"}, + "nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"}, "table": {:hex, :table, "0.1.2", "87ad1125f5b70c5dea0307aa633194083eb5182ec537efc94e96af08937e14a8", [:mix], [], "hexpm", "7e99bc7efef806315c7e65640724bf165c3061cdc5d854060f74468367065029"}, "telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"}, "temp": {:hex, :temp, "0.4.9", "eb6355bfa7925a568b3d9eb3bb57e89aa6d2b78bfe8dfb6b698e090631b7f41f", [:mix], [], "hexpm", "bc8bf7b27d9105bef933ef4bf4ba37ac6b899dbeba329deaa88c60b62d6b4b6d"},