<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\documentclass[12pt]{article}

\usepackage{hyperref}

\oddsidemargin 0mm
\evensidemargin 0mm
\textwidth 160mm
\textheight 200mm
%\renewcommand\baselinestretch{0.85}

\pagestyle {plain}
\pagenumbering {arabic}

\title{Virtual Machine for CAS 741 and Drasil}
\author{Spencer Smith}

\begin{document}

\maketitle

This document summarizes the steps for setting up a software development
environment for use in CAS 741.  Instructions are also give for forking Drasil.
A virtual machine is used so that the set-up will not interfere with your native
machine.  Besides the benefit of not creating problems on the native machine,
starting from a clean slate means that the steps presented do not have to worry
about headaches caused by existing software and libraries.  The steps are given
rather than simply creating a full image for your use (such as with Docker),
since reproducing the installation provides a greater opportunity for learning.

The steps emphasize command line (terminal) interaction, rather than using a
GUI.  The advantage of using the command line is that it can provide a deeper
understanding of what is actually happening on your machine.

Working at the command line requires understanding directories (folders), files,
commands, permissions, etc.  If you need to improve your background in these
topics, you may find the following links useful:

\begin{itemize}
\item \url{https://ubuntu.com/tutorials/command-line-for-beginners#1-overview}
\item \url{https://maker.pro/linux/tutorial/basic-linux-commands-for-beginners}
\item \url{https://ryanstutorials.net/linuxtutorial/}
\item \url{http://swcarpentry.github.io/shell-novice/}
\end{itemize}

To create a virtual machine, install typical software development tools, and
fork Drasil, follow these steps:

\begin{enumerate}

\item Install a virtualization environment to create an environment that exists
  as software emulation, but appears as bare metal hardware to other
  applications.
\begin{itemize}
\item VirtualBox is recommended: \href{https://www.virtualbox.org/}
  {https://www.virtualbox.org/}
\end{itemize}
\item Install the Linux guest operating system inside the VirtualBox virtual
  environment using Machine/New, as described in the
  \href{https://www.virtualbox.org/manual/UserManual.html#gui-createvm}
  {manual}.  The following options are recommended:
\begin{itemize}
\item Name: whatever you prefer (cas741?)
\item Machine Folder: where you prefer (default is probably fine)
\item Type: Linux
\item Version: Ubuntu (64-bit)
\item Memory size: 2 Gig (2048 MB)
\item Hard disk file type: VDI (VirtualBox Disk Image)
\item Storage on physical hard disk: dynamically allocated
\item Hard drive size: 30 GBytes
\end{itemize}
\item Download the iso image for your Linux distribution.  Recommend Bodhi Linux
  (\url{https://www.bodhilinux.com/download/}).  The Standard release is fine.
\item Start the VM (The Green arrow in the top bar of VirtualBox)
\item Select the iso image for your Linux distribution, click start
\item Select ``Install Bodhi Linux''
\item Follow installation steps.  You can generally go with the suggested
  defaults.  One potential addition is under ``Updates and other software'',
  where you may want to select ``Install third-party software for graphics and
  wi-fi hardware''.
\item Update the OS by typing the following in a terminal \texttt{sudo apt
    update \&amp;\&amp; sudo apt dist-upgrade} (When prompted, select Y for updating the
  files (instead of the default N))
\item To enable copying between your virtual machine and your native machine,
  install Guest Additions:
  (\href{https://linuxize.com/post/how-to-install-virtualbox-guest-additions-in-ubuntu/}
  {How to Install VirtualBox Guest Additions})
\item Follow the instructions from the web-page above to enable copy and paste
  through VirtualBox
  \href{https://www.geeksforgeeks.org/how-to-enable-copy-and-paste-in-oracle-virtualbox/}
  {How to Enable Copy and Paste in Oracle VirtulaBox}
\item At this point you may want to change the screen resolution on your virtual
  linux box.  You can do this with the
  \href{https://www.youtube.com/watch?v=jGGdDDv_XJo} {xrandr}

\item Install git: \texttt{sudo apt install git}
\item Install \LaTeX: \texttt{sudo apt install texlive-latex-extra}
\item Install doxygen: \texttt{sudo apt-get install doxygen}
\item Install dot (for doxygen): \texttt{sudo apt-get install graphviz}

\item Install Java Runtime Environment (JRE): \texttt{sudo apt install
    default-jre}
\item Install Java Development Kit (JDL): \texttt{sudo apt install default-jdk}

\item You will need a text editor for \LaTeX{} and for source code.  A popular
  option is Sublime text, which can be installed following these
  \href{https://www.sublimetext.com/docs/3/linux_repositories.html}{instructions}.

\item Instructions for setting up Sublime for \LaTeX{} are
  \href{https://latextools.readthedocs.io/en/latest/install/}{here}.  Part of
  the instructions request installation of Evince for a document viewer.  You
  can use the Bodhi AppCentre to install Evince.

\item Decide on a home for your repos.  For instance, you could create a folder
  name \texttt{Repos}.  You can create a folder using \texttt{mkdir}.

\item In your Repos folder, clone the course repo: \newline \texttt{git clone
    https://gitlab.cas.mcmaster.ca/smiths/cas741.git}

\item For those doing the Drasil version, fork the
  \href{https://github.com/JacquesCarette/Drasil} {Drasil repo}, by clicking on
  the fork option in the upper right hand  corner.

\item In your Repos folder, clone your forked version of Drasil: \newline \texttt{ git clone
    https://github.com/[your account here]/Drasil.git}

\item Install Stack following these
  \href{https://docs.haskellstack.org/en/stable/install_and_upgrade/}{Installation
    Instructions}.  This will likely involve installing \texttt{curl} via
  \texttt{sudo apt install curl}

\item Run Drasil by following the quick start instructions at
  \href{https://github.com/JacquesCarette/Drasil}
  {https://github.com/JacquesCarette/Drasil} (It will take a long time the first
  time.)  

\item The Drasil repo has Continuous Integration (CI) set-up through Travis.  To
  enable CI on your forked repo, follow the
  \href{https://docs.travis-ci.com/user/tutorial/} {Travis CI Tutorial} 
\end{enumerate}
\end{document}</pre></body></html>