Obsolete. Python 3 port for cRIO for use in the FIRST Robotics Competition (FRC)
C Python C++ Objective-C Shell Ruby

README.txt

*************************************************
  RobotPy: Python for FRC cRIO Robot Controller
*************************************************

:Author: Peter Johnson, FRC Team 294
:Author: Dustin Spicuzza, FRC Team 2423/1418
:Copyright: Copyright © 2010, Peter Johnson, Ross Light, Dustin Spicuzza

About RobotPy
===============

`RobotPy`_ is a distribution of `Python`_ intended to be used for the `FIRST
Robotics Competition`_.  Teams can use this to write their robot code in
Python, a powerful dynamic programming language.

.. _RobotPy: http://firstforge.wpi.edu/sf/projects/robotpy
.. _Python: http://www.python.org/
.. _FIRST Robotics Competition: http://www.usfirst.org/

Features
==========

*  `Python`_ is simple to learn and easy to maintain.
*  RobotPy lets you reload code without restarting.
*  RobotPy provides access to the WPILib class library.
*  You don't need to use WindRiver (unless you're rebuilding RobotPy itself).

Installation for most people
============================

Download the binary releases from our FIRSTForge site, unpack them, and run
install.py. Download from: http://firstforge.wpi.edu/sf/projects/robotpy


Installation from Source using our build VM 
===========================================

Using the provided build virtual machine is the easiest way to build RobotPy
from source. See build-vm/README.txt for instructions.


Installation from Source (Advanced Users Only)
==============================================

Step 1: Install Python 

    Python 2.7.5 is known to work. Ensure that you add your python installation
    directory to your PATH variable.
    
    Note: This step is required for SIP installation

Step 2: Install SIP v4.15.3:

	The cmake build process currently checks for exact versions of SIP, as
	the generated code changes from release to release.

    http://www.riverbankcomputing.com/static/Docs/sip4/installation.html

    Note: Installation of SIP on Windows requires Visual Studio or MinGW
    installed, see the SIP build instructions for more details.
    
Step 3: Build the source tree

	TODO: Update these instructions for Windows too?
	

	The RobotPy build process uses cmake to build the RobotPy distribution.
	frcmake is a wrapper around cmake that sets the build environment up to
	build for the cRio.
	
	RobotPy currently uses the GCC 4.8 compiler distributed at the following
	URL to build the binary distribution. Wind River may be used, but we haven't
	built it with Wind River, so you may run into trouble using it with frcmake.
	
		http://firstforge.wpi.edu/sf/projects/c--11_toochain
		
	Create a directory (the 'binary directory') outside of the RobotPy source 
	tree, and run this:
	
		$ frcmake /path/to/robotpy
		
	Once you've done this, you can build the code:
	
		$ make
		
	To copy the build output to the 'dist' directory, run this command from
	your binary directory:
	
		$ make install
	
	To build a binary release, just run the following command and a zip file
	will be created in your build directory.
	
		$ make package
    
Step 4: Robot Installation
    
    From the 'dist' directory inside of your binary directory, run install.py
    
    Alternatively, you can FTP the contents of the 'robot' directory to your
    cRio directly. However, install.py is easier.
    
Development tools
=================

See the utilities directory for useful development tools that may make
your RobotPy development experience easier. 

The pyfrc python package is a recommended development package that provides
unit testing and other capabilities for your robot code. 

	https://github.com/robotpy/pyfrc

Technical Overview
====================

RobotPy is a packaging of a patched `Python`_ 3.2 interpreter (found in the
``RobotPy/Python`` subdirectory of the source code).  All access to the WPILib
is generated by a `SIP`_ interface, which is found in ``Packages/wpilib/sip/``.
When the robot is started, it initializes the Python interpreter and runs the
file ``py/boot.py``.  From there, all responsibility is given to the
``boot.py`` script, which is referred to as the bootloader.

If ``boot.py`` ever exits (due to an exception, for example), the C++ code
exits.  The default ``boot.py`` simply exits on any user exception.  If this
happens, you can reboot easily via NetConsole by simply typing "reboot"
followed by hitting the enter key.  This is how code reloads are performed.
As boot.py is written in Python, this behavior can be customized as desired.

.. _SIP: http://www.riverbankcomputing.com/software/sip/intro

Major Differences from standard Python
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*  Several Python modules with large and/or incompatible dependencies removed,
   namely: curses, dbm, gdbm, tkinter, nis, ossaudiodev, resource, spwd,
   syslog, termios, audioop, bz2, crypt, grp, ssl, pwd, and mmap.

Licensing
===========

A brief overview of licensing terms:

*  `Python`_: `PSF License`_
*  RobotPy (all other support code): `MIT License`_

.. _PSF License: http://docs.python.org/license.html
.. _MIT License: http://www.opensource.org/licenses/mit-license.php

If you redistribute RobotPy and add other libraries, please include their
licensing information here.

RobotPy
~~~~~~~~~

Copyright © 2010 Peter Johnson

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

.. vim: tw=80 et ts=3 sw=3 ft=rst fenc=utf-8