Submitting Your Work, Checking Your Submission

CS350 assignments should be submitted using the cs350_submit command. This command takes one command line parameter, which indicates which assignment number you are submitting, e.g., use cs350_submit 0 to submit Assignment 0, use cs350_submit 1 to submit Assignment 1, and so on.

The cs350_submit command must be run from the correct directory, which is normally $HOME/cs350-os161. Each assignment includes information about where you should run the cs350_submit command, and about which special files (e.g., design documents), if any, you should be submitting.

What cs350_submit does is to package up your OS/161 kernel code, plus any special files required for the assignment, and then copy the entire package into the course account, where it can be retrieved by the TAs. Note that cs350_submit only submits your OS/161 kernel code, i.e., the code under os161-1.11/kern. User-level code, such as the applications in testbin and sbin, is not submitted. You are free to make changes in your copy of the user-level code, e.g., you can create new test programs. However, such changes will not be submitted.

You are free to submit an assignment multiple times (before the deadline). Each new assignment submission replaces any previous submission of the same assignment.

Building Your Submitted Code

Each time you submit your code using cs350_submit, the code that you submitted is automatically built in the CS350 course account, so that the markers will be able to run tests against your submission. cs350_submit does this by invoking a second script, called cs350_build, once it has finished retrieving your submission. cs350_submit runs cs350_build automatically - you do not need to take any special action to cause the build to occur.

When cs350_build runs, it takes the OS/161 code that you have submitted to the course account, unpacks it, configures it and builds it in the testing account that is used by the TAs. It places the resulting kernel, as well as the log files generated by the configuration and build, in a place where both you and the TAs can read them.

When cs350_build runs, you should see output that is similar to this:

Now compiling your submission in the course environment
Using: /u/cs350/bin/cs350_build 0
This is cs350_build for cs350 assignment 0.
Starting 05/04/14 20:45:33 @ubuntu1204-004
--->  Copying OS/161 source code for kmsalem
--->  Configuring OS/161
--->  Configuring kernel
--->  Running kernel make depend
--->  Running kernel make
--->  Installing OS/161 kernel
The logs are available for retrieval: /u/cs350/cs350_build_results/0/kmsalem/logs/
The compiled kernel can be retrieved from: /u/cs350/cs350_build_results/0/kmsalem/root/
Note that the output tells you where to find the log files and kernel that resulted from the build:
ubuntu1204-004[105]% ls /u/cs350/cs350_build_results/0/kmsalem/logs/
install.log  kernconfig.log  makedep.log  make.log  os161config.log
There is one log file for each step of the process of building OS/161: configuring OS/161, configuring the kernel, bmake depend, bmake, and bmake install. The file make_apps.log is from the build of the OS/161 application programs.

After cs350_build runs, you should check the log files to make sure that there were no problems with the build. Usually, just checking the end of the log file (try the tail command) will be enough to show you whether anything went wrong. If cs350_build fails to build your kernel when you submit it, the TAs will not be able to mark your submission! If there is a problem, you should fix the problem in your version of the code, and re-submit using cs350_submit.

Note that cs350_build will have no direct effect on your account and your copy of the OS/161 code. It is working with the copy of your OS/161 code that you submitted to the course account.