Jump to: navigation, search

PTP/photran/rsync remote projects

Overview

One item that has been discussed several times at NCSA/Blue Waters meetings is the desire to have Eclipse support for a new type of C/C++/Fortran project, which we're calling a "rsync-style remote project." In this type of project, the code is stored and edited locally, e.g., on a user's laptop. When it is time to build, however, the code is copied (rsync'd) to a remote machine (e.g., a cluster) and compiled there. The user then runs and debugs the executable on the remote machine.

Matt Fotzler (UIUC) will be prototyping support for rsync-style remote projects in Photran. The final code will be contributed as Bug 313194; this wiki page has been set up to track requirements/issues in the interim.

Implementation

Strawman Prototype

This is an extremely primitive proof-of-concept, intended mainly to facilitate requirements gathering.

Components

  • New project wizard: Essentially the same as a C Makefile project, except the builder is changed from make to a custom script, build.sh, which is stored in the project root.  This script rsyncs the project to the remote machine and runs make there.
  • Remote include path support: (Bug 305525) Changes Photran to use URIs, rather than local paths, to specify INCLUDE paths, and allows the user to set such paths by changing the project properties dialog to allow the selection of folders on any filesystem (including RSE).

Technical Issues

  • Remote include path support only affects Photran, not CDT.
  • The C build console will not allow SSH to ask for a password (gives an error); the user must have password-less SSH set up.
  • Make may give a "clock skew detected" error if the local and remote machine do not have their clocks synchronized.
  • The prototype builder establishes multiple connections per build, which slows it down noticeably.
  • Include files are not cached locally.  Repeatedly loading them from the server is slow; also, one advantage of rsync-style remote projects is supposed to be that the code can be edited locally, without a persistent connection to the server. So a full implementation must perform local include caching.
  • It may be useful for a full implementation to include an "SSH error parser" so that connection timeouts, etc. can be displayed in the Problems view.
  • The prototype only supports remote paths for Fortran INCLUDE lines.  A full implementation must also allow remote module paths and remote C preprocessor include paths.
  • Attempting to set a remote breakpoint in PTP is giving the error "Error completing debug job launch: Cannot create routing file: unable to determine process location" (???)

Usability Issues

  • Windows users do not have make and rsync available by default
  • The user may want to exclude some folders (e.g., documentation) from the rsync (for efficiency)
  • There should probably be a nicer user interface than forcing the user to manually edit the build script :)