Adding P4D2_2018_East Folder (#116)
* Copying P4D2 Fall 2017 into P4D2 2018 East. * Updated P4D2_2018_East VM. Added vagrant URL workaround, cdrom to VM. Updated to latest commits of BMV2, p4c, PI. Known issue with p4runtime exercise. * Applied patch from @antoninbas in and updated solution
This commit is contained in:
178
P4D2_2018_East/vm/user-bootstrap.sh
Normal file
178
P4D2_2018_East/vm/user-bootstrap.sh
Normal file
@@ -0,0 +1,178 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Print script commands.
|
||||
set -x
|
||||
# Exit on errors.
|
||||
set -e
|
||||
|
||||
BMV2_COMMIT="39abe290b4143e829b8f983965fcdc711e3c450c"
|
||||
PI_COMMIT="afd5831393824228246ea01b26da2f93d38fd20c"
|
||||
P4C_COMMIT="80f8970b5ec8e57c4a3611da343461b5b0a8dda3"
|
||||
PROTOBUF_COMMIT="v3.2.0"
|
||||
GRPC_COMMIT="v1.3.2"
|
||||
|
||||
NUM_CORES=`grep -c ^processor /proc/cpuinfo`
|
||||
|
||||
# Mininet
|
||||
git clone git://github.com/mininet/mininet mininet
|
||||
cd mininet
|
||||
sudo ./util/install.sh -nwv
|
||||
cd ..
|
||||
|
||||
# Protobuf
|
||||
git clone https://github.com/google/protobuf.git
|
||||
cd protobuf
|
||||
git checkout ${PROTOBUF_COMMIT}
|
||||
export CFLAGS="-Os"
|
||||
export CXXFLAGS="-Os"
|
||||
export LDFLAGS="-Wl,-s"
|
||||
./autogen.sh
|
||||
./configure --prefix=/usr
|
||||
make -j${NUM_CORES}
|
||||
sudo make install
|
||||
sudo ldconfig
|
||||
unset CFLAGS CXXFLAGS LDFLAGS
|
||||
cd ..
|
||||
|
||||
# gRPC
|
||||
git clone https://github.com/grpc/grpc.git
|
||||
cd grpc
|
||||
git checkout ${GRPC_COMMIT}
|
||||
git submodule update --init --recursive
|
||||
export LDFLAGS="-Wl,-s"
|
||||
make -j${NUM_CORES}
|
||||
sudo make install
|
||||
sudo ldconfig
|
||||
unset LDFLAGS
|
||||
cd ..
|
||||
# Install gRPC Python Package
|
||||
sudo pip install grpcio
|
||||
|
||||
# BMv2 deps (needed by PI)
|
||||
git clone https://github.com/p4lang/behavioral-model.git
|
||||
cd behavioral-model
|
||||
git checkout ${BMV2_COMMIT}
|
||||
# From bmv2's install_deps.sh, we can skip apt-get install.
|
||||
# Nanomsg is required by p4runtime, p4runtime is needed by BMv2...
|
||||
tmpdir=`mktemp -d -p .`
|
||||
cd ${tmpdir}
|
||||
bash ../travis/install-thrift.sh
|
||||
bash ../travis/install-nanomsg.sh
|
||||
sudo ldconfig
|
||||
bash ../travis/install-nnpy.sh
|
||||
cd ..
|
||||
sudo rm -rf $tmpdir
|
||||
cd ..
|
||||
|
||||
# PI/P4Runtime
|
||||
git clone https://github.com/p4lang/PI.git
|
||||
cd PI
|
||||
git checkout ${PI_COMMIT}
|
||||
git submodule update --init --recursive
|
||||
./autogen.sh
|
||||
./configure --with-proto
|
||||
make -j${NUM_CORES}
|
||||
sudo make install
|
||||
sudo ldconfig
|
||||
cd ..
|
||||
|
||||
# Bmv2
|
||||
cd behavioral-model
|
||||
./autogen.sh
|
||||
./configure --enable-debugger --with-pi
|
||||
make -j${NUM_CORES}
|
||||
sudo make install
|
||||
sudo ldconfig
|
||||
# Simple_switch_grpc target
|
||||
cd targets/simple_switch_grpc
|
||||
./autogen.sh
|
||||
./configure
|
||||
make -j${NUM_CORES}
|
||||
sudo make install
|
||||
sudo ldconfig
|
||||
cd ..
|
||||
cd ..
|
||||
cd ..
|
||||
|
||||
# P4C
|
||||
git clone https://github.com/p4lang/p4c
|
||||
cd p4c
|
||||
git checkout ${P4C_COMMIT}
|
||||
git submodule update --init --recursive
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake ..
|
||||
make -j${NUM_CORES}
|
||||
make -j${NUM_CORES} check
|
||||
sudo make install
|
||||
sudo ldconfig
|
||||
cd ..
|
||||
cd ..
|
||||
|
||||
# Tutorials
|
||||
sudo pip install crcmod
|
||||
git clone https://github.com/p4lang/tutorials
|
||||
sudo mv tutorials /home/p4
|
||||
sudo chown -R p4:p4 /home/p4/tutorials
|
||||
|
||||
# Emacs
|
||||
sudo cp p4_16-mode.el /usr/share/emacs/site-lisp/
|
||||
echo "(add-to-list 'auto-mode-alist '(\"\\.p4\\'\" . p4_16-mode))" | sudo tee /home/p4/.emacs
|
||||
sudo chown p4:p4 /home/p4/.emacs
|
||||
|
||||
# Vim
|
||||
cd /home/vagrant
|
||||
mkdir .vim
|
||||
cd .vim
|
||||
mkdir ftdetect
|
||||
mkdir syntax
|
||||
echo "au BufRead,BufNewFile *.p4 set filetype=p4" >> ftdetect/p4.vim
|
||||
echo "set bg=dark" >> /home/vagrant/.vimrc
|
||||
sudo mv /home/vagrant/.vimrc /home/p4/.vimrc
|
||||
cp /home/vagrant/p4.vim syntax/p4.vim
|
||||
cd /home/vagrant
|
||||
sudo mv .vim /home/p4/.vim
|
||||
sudo chown -R p4:p4 /home/p4/.vim
|
||||
sudo chown p4:p4 /home/p4/.vimrc
|
||||
|
||||
# Adding Desktop icons
|
||||
DESKTOP=/home/${USER}/Desktop
|
||||
mkdir -p ${DESKTOP}
|
||||
|
||||
cat > ${DESKTOP}/Terminal << EOF
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Name=Terminal
|
||||
Name[en_US]=Terminal
|
||||
Icon=konsole
|
||||
Exec=/usr/bin/x-terminal-emulator
|
||||
Comment[en_US]=
|
||||
EOF
|
||||
|
||||
cat > ${DESKTOP}/Wireshark << EOF
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Name=Wireshark
|
||||
Name[en_US]=Wireshark
|
||||
Icon=wireshark
|
||||
Exec=/usr/bin/wireshark
|
||||
Comment[en_US]=
|
||||
EOF
|
||||
|
||||
cat > ${DESKTOP}/Sublime\ Text << EOF
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Name=Sublime Text
|
||||
Name[en_US]=Sublime Text
|
||||
Icon=sublime-text
|
||||
Exec=/opt/sublime_text/sublime_text
|
||||
Comment[en_US]=
|
||||
EOF
|
||||
|
||||
sudo mkdir -p /home/p4/Desktop
|
||||
sudo mv /home/${USER}/Desktop/* /home/p4/Desktop
|
||||
sudo chown -R p4:p4 /home/p4/Desktop/
|
||||
sudo reboot
|
||||
Reference in New Issue
Block a user