text Crystal Vagrantfile

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text Crystal Vagrantfile相关的知识,希望对你有一定的参考价值。

# -*- mode: ruby -*-
# vi: set ft=ruby :

clone_crystal_from_vagrant = lambda do |config|
  config.vm.provision :shell, privileged: false, inline: %(
    # Checkout crystal repository
    git clone /vagrant crystal
  )
end

install_apt_repository = lambda do |config|
  config.vm.provision :shell, inline: <<-SHELL
    curl -sL "https://keybase.io/crystal/pgp_keys.asc" | apt-key add -
    echo "deb https://dist.crystal-lang.org/apt crystal main" > /etc/apt/sources.list.d/crystal.list
    apt-get update
    SHELL
end

Vagrant.configure("2") do |config|
  [["precise", '3.5'], ['trusty', '3.5'], ['xenial', '3.8'], ['bionic', '6.0']].product([32, 64]).each do |(dist, llvm_version), bits|
    box_name = "#{dist}#{bits}"
    # the currently supported 64-bit LTS versions are handled differently
    next if box_name == "xenial64" || box_name == "bionic64"

    config.vm.define(box_name) do |config|
      config.vm.box = "ubuntu/#{box_name}"

      install_apt_repository.call(config)

      if llvm_version == '3.5'
        config.vm.provision :shell, inline: <<-SHELL
          curl -s https://crystal-lang.s3.amazonaws.com/llvm/llvm-3.5.0-1-linux-`uname -m`.tar.gz | tar xz -C /opt
          echo 'export LIBRARY_PATH="/opt/crystal/embedded/lib"' > /etc/profile.d/crystal.sh
          echo 'export PATH="$PATH:/opt/llvm-3.5.0-1/bin"' >> /etc/profile.d/crystal.sh
          SHELL
      else
        config.vm.provision :shell, inline: <<-SHELL
          apt-get install llvm-#{llvm_version}-dev
          SHELL
      end

      config.vm.provision :shell, inline: <<-SHELL
        # install Crystal build requrirements
        apt-get install -y make git libedit-dev g++
        # install libraries used in stdlib
        apt-get install -y libssl-dev libyaml-dev llibxml2-dev libgmp3-dev zlib1g-dev libreadline-dev
        # install Crystal
        apt-get install -y crystal
        SHELL

      clone_crystal_from_vagrant.call(config)

      config.vm.provision :shell, privileged: false, inline: <<-SHELL
        cd crystal
        # Build libcrystal.a and ext.o
        make deps
        SHELL
    end
  end

  [['xenial', '1604', '3.8'], ['bionic', '1804', '6.0']].each do |dist, version, bits|
    box_name = "#{dist}64"

    config.vm.define(box_name) do |config|
      config.vm.box = "generic/ubuntu#{version}"

      install_apt_repository.call(config)

      config.vm.provision :shell, inline: <<-SHELL
        # install Crystal build requrirements
        apt-get install -y make git libedit-dev g++ llvm-#{llvm_version}-dev
        # install libraries used in stdlib
        apt-get install -y libssl-dev libyaml-dev llibxml2-dev libgmp3-dev zlib1g-dev libreadline-dev
        # install Crystal
        apt-get install -y crystal
        SHELL

      clone_crystal_from_vagrant.call(config)

      config.vm.provision :shell, privileged: false, inline: <<-SHELL
        cd crystal
        # Build libcrystal.a and ext.o
        make deps
        SHELL
    end
  end

  [[:jessie, '3.5'], [:stretch, '3.9']].product([32, 64]).each do |(dist, llvm_version), bits|
    box_name = "#{dist}#{bits}"

    config.vm.define(box_name) do |config|
      config.vm.box = "generic/#{box_name}"

      config.vm.provision :shell, inline: <<-SHELL
        apt-get install -y apt-transport-https curl dirmngr
        SHELL

      install_apt_repository.call(config)

      config.vm.provision :shell, inline: <<-SHELL
        # install Crystal build requrirements
        apt-get install -y make git libedit-dev g++ llvm-#{llvm_version} llvm-#{llvm_version}-dev
        # install libraries used in stdlib
        apt-get install -y libssl-dev libyaml-dev llibxml2-dev libgmp3-dev zlib1g-dev libreadline-dev
        # install Crystal
        apt-get install -y crystal
        SHELL

      clone_crystal_from_vagrant.call(config)

      config.vm.provision :shell, privileged: false, inline: <<-SHELL
        cd crystal
        # Build libcrystal.a and ext.o
        make deps
        SHELL
    end
  end

  config.vm.define "freebsd11" do |config|
    config.vm.guest = :freebsd
    config.vm.box = "generic/freebsd11"

    config.vm.provision :shell, inline: <<-SHELL
      pkg update
      # install Crystal build requrirements
      pkg install -y gmake git
      # install libraries used in stdlib
      pkg install -y openssl-devel libyaml libxml2 gmp
      # install Crystal
      pkg install -y crystal shards
      SHELL

    config.vm.provision :shell, privileged: false, inline: <<-SHELL
      # Checkout crystal repository
      git clone https://github.com/crystal-lang/crystal.git
      cd crystal
      echo "LLVM_CONFIG=llvm-config50" > Makefile.local
      # Build libcrystal.a and ext.o
      gmake deps
      SHELL
  end

  config.vm.define "openbsd" do |config|
    config.vm.guest = :openbsd
    config.vm.box = "generic/openbsd6"

    config.vm.provision :shell, inline: <<-SHELL
      # install Crystal build requrirements
      pkg_add git gmake pkgconf pcre libunwind libevent
      # install libraries used in stdlib
      pkg_add libyaml gmp
      SHELL

    config.vm.provision :shell, privileged: false, inline: <<-SHELL
      # Checkout crystal repository
      git clone https://github.com/crystal-lang/crystal.git
      cd crystal
      # Build libcrystal.a and ext.o
      gmake deps
      SHELL
  end

  config.vm.define "alpine" do |config|
    config.vm.guest = :linux
    config.vm.box = "generic/alpine38"

    config.vm.provision :shell, inline: <<-SHELL
      apk update
      # install Crystal requrirements
      apk add make llvm5-dev llvm5-static g++
      # install libraries used in stdlib
      apk add libressl-dev yaml-dev libxml2-dev readline-dev zlib-dev tzdata
      # install Crystal
      apk add crystal@community shards@community
      SHELL

    config.vm.provision :shell, privileged: false, inline: <<-SHELL
      # Checkout crystal repository
      git clone https://github.com/crystal-lang/crystal.git
      cd crystal
      # Build libcrystal.a and ext.o
      make deps
      SHELL
  end

  config.vm.provider "virtualbox" do |vb|
    vb.memory = 4096
    vb.cpus = 2
  end
end

以上是关于text Crystal Vagrantfile的主要内容,如果未能解决你的问题,请参考以下文章

text Vagrantfile

text 使用Ansible置备的示例Vagrantfile

text Vagrantfile

text vagrantfile

text 用于Ubuntu 16.04 LTS(Xenial64)Box的Vagrantfile

text 设置VALUE-DOMAIN DDNS,ConoHa用Vagrantfile(vagrant-conoha)