github.com/jurelou/go-magic@v0.0.0-20230518182705-f2995a311800/Vagrantfile (about)

     1  # Provisioning script which installs development dependencies.
     2  script = %{
     3  #!/bin/bash
     4  
     5  set -e
     6  
     7  export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
     8  
     9  echo 'Starting provisioning ...'
    10  
    11  # Avoid the configuration file questions ...
    12  cat <<'EOF' | sudo tee /etc/apt/apt.conf.d/99vagrant &>/dev/null
    13  DPkg::options { "--force-confdef"; "--force-confnew"; }
    14  EOF
    15  
    16  # Disable need for user interaction ...
    17  export DEBIAN_FRONTEND=noninteractive
    18  
    19  # Update package repositories ...
    20  sudo apt-get update &> /dev/null
    21  
    22  # Install needed build time dependencies ...
    23  sudo apt-get install --force-yes -y \
    24    curl             \
    25    git              \
    26    mercurial        \
    27    make             \
    28    patch            \
    29    bison            \
    30    flex             \
    31    build-essential  \
    32    autoconf         \
    33    automake         \
    34    autotools-dev    \
    35    libltdl-dev      \
    36    libtool          \
    37    libtool-doc &> /dev/null
    38  
    39  # Remove existing "libmagic-dev" package.
    40  sudo apt-get remove --purge --force-yes -y libmagic-dev &> /dev/null
    41  
    42  # Clean up unneeded packages ...
    43  {
    44    sudo apt-get autoremove --force-yes -y
    45    sudo apt-get autoclean --force-yes -y
    46    sudo apt-get clean --force-yes -y
    47  } &> /dev/null
    48  
    49  # Select appropriate "godeb" package.
    50  # XXX(kwilczynski): Should "gvm" be used instead?
    51  case $(uname -m) in
    52    i?86) godeb_package="godeb-386.tar.gz" ;;
    53    x86_64) godeb_package="godeb-amd64.tar.gz" ;;
    54  esac
    55  
    56  # Download and unpack "godeb" package.
    57  {
    58    curl -s https://godeb.s3.amazonaws.com/${godeb_package} | tar zxvf - -C .
    59  } &> /dev/null
    60  
    61  # Run "godeb" and install Go Language interpreter.
    62  {
    63    sudo ./godeb install
    64  } &> /dev/null
    65  
    66  echo 'All done!'
    67  }
    68  
    69  # Select appropriate Vagrant box per underlying architecture.
    70  box = "precise#{lambda { ['x'].pack('P').size * 8 }.()}"
    71  
    72  # Virtual Machine name et al.
    73  name = "go-magic-#{box}"
    74  
    75  Vagrant.configure("2") do |config|
    76    config.ssh.forward_agent = true
    77  
    78    if config.vm.respond_to? :box_check_update
    79      config.vm.box_check_update = true
    80    end
    81  
    82    if config.vm.respond_to? :use_linked_clone
    83      config.use_linked_clone = true
    84    end
    85  
    86    config.vm.define name.to_sym do |machine|
    87      machine.vm.box = "hashicorp/#{box}"
    88      machine.vm.hostname = name
    89  
    90      machine.vm.provider :virtualbox do |vb|
    91        vb.linked_clone = true if Vagrant::VERSION =~ /^1.8/
    92        vb.name = name
    93        vb.gui = false
    94        vb.customize ['modifyvm', :id,
    95          '--memory', '512',
    96          '--cpus', '1',
    97          '--rtcuseutc', 'on',
    98          '--natdnshostresolver1', 'on',
    99          '--natdnsproxy1', 'on',
   100          '--nictype1', 'virtio'
   101        ]
   102      end
   103  
   104      machine.vm.provision :shell, privileged: false, inline: script
   105    end
   106  end