Skip to content
This repository was archived by the owner on Mar 29, 2024. It is now read-only.

Commit 4b7383a

Browse files
committed
Add developer tools to vagrant box [skip ci]
1 parent 1dddbe3 commit 4b7383a

File tree

3 files changed

+170
-56
lines changed

3 files changed

+170
-56
lines changed

Vagrantfile

+1-56
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,18 @@
11
# -*- mode: ruby -*-
22
# vi: set ft=ruby :
33

4-
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
54
VAGRANTFILE_API_VERSION = "2"
65

76
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
87
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'" # Prevent TTY Errors
98

109
config.vm.box = "bento/ubuntu-16.04"
11-
1210
# config.vm.box_check_update = false
1311

1412
config.vm.network "private_network", ip: "192.168.33.44"
15-
# config.vm.network "public_network"
16-
17-
# If true, then any SSH connections made will enable agent forwarding.
18-
# Default value: false
19-
# config.ssh.forward_agent = true
2013

2114
config.vm.synced_folder ".", "/home/vagrant/php-v8"
2215

23-
# Provider-specific configuration so you can fine-tune various
24-
# backing providers for Vagrant. These expose provider-specific options.
25-
# Example for VirtualBox:
26-
#
2716
config.vm.provider "virtualbox" do |vb|
2817
# Don't boot with headless mode
2918
# vb.gui = true
@@ -32,50 +21,6 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
3221
vb.customize ["modifyvm", :id, "--memory", 2048]
3322
vb.customize ["modifyvm", :id, "--cpus", 2]
3423
end
35-
#
36-
# View the documentation for the provider you're using for more
37-
# information on available options.
38-
39-
# Enable provisioning with CFEngine. CFEngine Community packages are
40-
# automatically installed. For example, configure the host as a
41-
# policy server and optionally a policy file to run:
42-
#
43-
# config.vm.provision "cfengine" do |cf|
44-
# cf.am_policy_hub = true
45-
# # cf.run_file = "motd.cf"
46-
# end
47-
#
48-
# You can also configure and bootstrap a client to an existing
49-
# policy server:
50-
#
51-
# config.vm.provision "cfengine" do |cf|
52-
# cf.policy_server_address = "10.0.2.15"
53-
# end
54-
55-
# Enable provisioning with Puppet stand alone. Puppet manifests
56-
# are contained in a directory path relative to this Vagrantfile.
57-
# You will need to create the manifests directory and a manifest in
58-
# the file default.pp in the manifests_path directory.
59-
#
60-
# config.vm.provision "puppet" do |puppet|
61-
# puppet.manifests_path = "manifests"
62-
# puppet.manifest_file = "default.pp"
63-
# end
64-
65-
# Enable provisioning with chef solo, specifying a cookbooks path, roles
66-
# path, and data_bags path (all relative to this Vagrantfile), and adding
67-
# some recipes and/or roles.
68-
#
69-
# config.vm.provision "chef_solo" do |chef|
70-
# chef.cookbooks_path = "../my-recipes/cookbooks"
71-
# chef.roles_path = "../my-recipes/roles"
72-
# chef.data_bags_path = "../my-recipes/data_bags"
73-
# chef.add_recipe "mysql"
74-
# chef.add_role "web"
75-
#
76-
# # You may also specify custom JSON attributes:
77-
# chef.json = { mysql_password: "foo" }
78-
# end
7924

80-
#config.vm.provision "shell", path: './provision/provision.sh', privileged: false
25+
config.vm.provision "shell", path: './scripts/provision/provision.sh', privileged: false
8126
end

scripts/provision/.bashrc

+130
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
# ~/.bashrc: executed by bash(1) for non-login shells.
2+
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
3+
# for examples
4+
5+
# If not running interactively, don't do anything
6+
case $- in
7+
*i*) ;;
8+
*) return;;
9+
esac
10+
11+
# don't put duplicate lines or lines starting with space in the history.
12+
# See bash(1) for more options
13+
HISTCONTROL=ignoreboth
14+
15+
# append to the history file, don't overwrite it
16+
shopt -s histappend
17+
18+
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
19+
HISTSIZE=1000
20+
HISTFILESIZE=2000
21+
22+
# check the window size after each command and, if necessary,
23+
# update the values of LINES and COLUMNS.
24+
shopt -s checkwinsize
25+
26+
# If set, the pattern "**" used in a pathname expansion context will
27+
# match all files and zero or more directories and subdirectories.
28+
#shopt -s globstar
29+
30+
# make less more friendly for non-text input files, see lesspipe(1)
31+
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
32+
33+
# set variable identifying the chroot you work in (used in the prompt below)
34+
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
35+
debian_chroot=$(cat /etc/debian_chroot)
36+
fi
37+
38+
# set a fancy prompt (non-color, unless we know we "want" color)
39+
case "$TERM" in
40+
xterm-color|*-256color) color_prompt=yes;;
41+
esac
42+
43+
# uncomment for a colored prompt, if the terminal has the capability; turned
44+
# off by default to not distract the user: the focus in a terminal window
45+
# should be on the output of commands, not on the prompt
46+
#force_color_prompt=yes
47+
48+
if [ -n "$force_color_prompt" ]; then
49+
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
50+
# We have color support; assume it's compliant with Ecma-48
51+
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
52+
# a case would tend to support setf rather than setaf.)
53+
color_prompt=yes
54+
else
55+
color_prompt=
56+
fi
57+
fi
58+
59+
if [ "$color_prompt" = yes ]; then
60+
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
61+
else
62+
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
63+
fi
64+
unset color_prompt force_color_prompt
65+
66+
# If this is an xterm set the title to user@host:dir
67+
case "$TERM" in
68+
xterm*|rxvt*)
69+
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
70+
;;
71+
*)
72+
;;
73+
esac
74+
75+
# enable color support of ls and also add handy aliases
76+
if [ -x /usr/bin/dircolors ]; then
77+
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
78+
alias ls='ls --color=auto'
79+
#alias dir='dir --color=auto'
80+
#alias vdir='vdir --color=auto'
81+
82+
alias grep='grep --color=auto'
83+
alias fgrep='fgrep --color=auto'
84+
alias egrep='egrep --color=auto'
85+
fi
86+
87+
# colored GCC warnings and errors
88+
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
89+
90+
# some more ls aliases
91+
alias ll='ls -alF'
92+
alias la='ls -A'
93+
alias l='ls -CF'
94+
95+
# Add an "alert" alias for long running commands. Use like so:
96+
# sleep 10; alert
97+
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
98+
99+
# Alias definitions.
100+
# You may want to put all your additions into a separate file like
101+
# ~/.bash_aliases, instead of adding them here directly.
102+
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
103+
104+
if [ -f ~/.bash_aliases ]; then
105+
. ~/.bash_aliases
106+
fi
107+
108+
# enable programmable completion features (you don't need to enable
109+
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
110+
# sources /etc/bash.bashrc).
111+
if ! shopt -oq posix; then
112+
if [ -f /usr/share/bash-completion/bash_completion ]; then
113+
. /usr/share/bash-completion/bash_completion
114+
elif [ -f /etc/bash_completion ]; then
115+
. /etc/bash_completion
116+
fi
117+
fi
118+
119+
if [[ -e ~/.phpbrew/bashrc ]]; then
120+
source ~/.phpbrew/bashrc
121+
122+
if [ $(id -u) -eq 0 ];
123+
then
124+
PS1='${debian_chroot:+()}\[\e[01;31m\]\u\[\e[0m\]@\[\e[01;31m\]\h\[\e[0m\] (\[\e[0;36m\]$(phpbrew_current_php_version)\[\e[0m\]):\[\033[01;34m\]\w\[\033[00m\]# '
125+
else
126+
PS1='${debian_chroot:+()}\[\e[01;32m\]\u\[\e[0m\]@\[\e[01;32m\]\h\[\e[0m\] (\[\e[0;36m\]$(phpbrew_current_php_version)\[\e[0m\]):\[\033[01;34m\]\w\[\033[00m\]$ '
127+
fi
128+
fi
129+
130+
EDITOR=vim

scripts/provision/provision.sh

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
3+
echo Provisioning...
4+
5+
# Add Ondřej Surý's PPA with co-installable PHP versions:
6+
sudo add-apt-repository -y ppa:ondrej/php
7+
# Add libv8 PPA:
8+
sudo add-apt-repository ppa:pinepain/libv8-6.0
9+
10+
# Let's update packages list:
11+
sudo apt-get update
12+
13+
# Make sure this system tools installed:
14+
sudo apt-get install -y git htop curl pkgconf
15+
16+
17+
# Build and development requirements
18+
sudo apt-get install -y libv8-6.0 libv8-6.0-dev libv8-6.0-dbg
19+
sudo apt-get install -y dh-make valgrind
20+
sudo apt-get install -y libssl-dev openssl
21+
sudo apt-get install -y php7.0 php7.0-cli php7.0-dev php7.0-fpm
22+
sudo apt-get install -y php7.1 php7.1-cli php7.1-dev php7.1-fpm
23+
sudo apt-get install -y php-pear autoconf automake curl libcurl3-openssl-dev build-essential libxslt1-dev re2c libxml2 libxml2-dev bison libbz2-dev libreadline-dev
24+
sudo apt-get install -y libfreetype6 libfreetype6-dev libpng12-0 libpng12-dev libjpeg-dev libjpeg8-dev libjpeg8 libgd-dev libgd3 libxpm4 libltdl7 libltdl-dev
25+
sudo apt-get install -y libssl-dev openssl gettext libgettextpo-dev libgettextpo0 libicu-dev libmhash-dev libmhash2 libmcrypt-dev libmcrypt4
26+
27+
28+
# Install phpbrew to manage php versions
29+
curl -L -O -s https://github.com/phpbrew/phpbrew/raw/master/phpbrew
30+
chmod +x phpbrew
31+
sudo mv phpbrew /usr/local/bin/phpbrew
32+
phpbrew init
33+
34+
cp ~/php-v8/scripts/provision/.bashrc ~/.bashrc
35+
36+
# Cleanup unused stuff
37+
sudo apt-get autoremove -y
38+
39+
date > /home/vagrant/.vagrant_provisioned_at

0 commit comments

Comments
 (0)