You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 90 Next »

Status

Latest release version available for download is 1.2.0 (Linux, Windows), or 0.9.6 (Mac). 

Display and navigation

All primary components of main window are in place and active as of GoGui release 0.9.0:

  • Central area for display of output and per-package files of interest, such as release.notes
  • Menu bar with working menus
  • Tool bar with working tools
  • Status area
  • Package hierarchy for base release
  • Packages in supersede (aka override) directory
  • File hierarchy within selected package [added hierarchy display refresh 10/3]

Configure options

  • Select base root directory
  • Select override supersede directory
  • CVS-related set-up:
    • path to cvs command
    • value for CVSROOT
    • value for CVS_RSH
  • SCons-related set-up:
    • path to SCons command
    • select external libraries root directory [Added warning in case selected path != GLAST_EXT environment variable 10/16]

    • build options: compiler, debug or not, optimized or not
    • extra SCons options:  menu item under Options brings up dialog allowing user to add arbitrary SCons options to the command (not yet in tagged GoGui release)

Functions

  • Select a package
  • Display per-package information
    • Release notes
    • SConscript
    • <package>Lib.py
    • ChangeLog
    • version information
    • command output
  • Search displayed information for string
  • Repository functions
    • cvs update (3 flavors)
    • cvs commit [but cannot handle containers like celestialSources properly yet]

    • check out "regular" package
    • check out container
    • cvs rtag Now that tag strings include the package name it is no longer necessary to support tag as well as rtag. See also the SCons-aware command-line tagger, which uses the same underlying utilities as the GoGui tag function.
  • Build functions
  • Remove package
  • Exclude a package (SCons will use next version in line if there is one)
  • Run a program (as of Sept 29 using setup file generated by SCons)
  • Open terminal window (Linux only so far). GoGui will look for a file called  _setup.sh  and will run it first.  On Windows there is an extra step.  SCons makes a file _setup.vbs.  That file must then be run at the site where GoGui is to be used to produce the file _setup.bat.
  • file-specific functions selected by right-click in package hierarchy
    • run a program
    • debug a program (on Linux with gdb only)
    • cvs diff of file
    • browse a file
  • GoGui debug output goes to msg tab by default. To get old behavior (debug messages go to console or debugger) invoke as GoGui --ggDebug.

Performance

Execution of the first command SCons is given is especially slow. Subsequent commands for a code base as large as ScienceTools (to say nothing of GlastRelease) are still intolerably slow with default behavior (reread everything to regenerate all dependencies), especially on Windows. GoGui now makes use of the SCons facility to run subsequent commands without re-checking the dependency tree. SCons must be re-initialized if the base directory (the one containing the SConstruct file) or external library have changed; GoGui handles this automatically. It is also possible for the user to explicitly ask for SCons to re-init if s/he knows the dependency tree has changed. As of Sept. 10 SCons commands run asynchronously. They can be aborted.

As of GoGui release 1.2.0, the explicit init step has been abolished.  Newer versions of SCons as well as the hardware platforms now at most people's disposal are quite a bit faster.  The init step (now done implicitly is no longer "intolerably slow", and there is something to be gained in simplicity and robustness by always including it.

A welcome bonus of using a supersede directory is that SCons init (implicit for GoGui 1.2.0 and beyond; explicit for older versions) is typically much faster.  It only checks the packages in the supersede directory; the base installation acts like an external library.

To do

Display and navigation

  • (tick) Visual representation of variants is misleading. Should disable builds of variants that our implementation of SCons will not in fact build and indicate visually which variant is the buildable one.  FIXED as of Nov.6.
  • Several operations (e.g. checking out a package, excluding a package..) invalidate the set-up of the currently-running SCons process (if there is one). This needs to be clearer. [Show state in SCons icon as of 0.9.2]

  • Window does not always update spontaneously after a package is excluded (or un-excluded) to display the new state properly. [Fixed as of 0.9.3]

  • Fix scrolling behavior. Minor unpleasantness in base browser display: if keys are used to scroll a page at a time the highlighted package can change if the actual selected package scrolls out of view.
  • Add visual indication of whether SCons process is running or not. [Done as of 0.9.2]

  • Indicate initialization errors better. When the SCons initialization process skips a package (usually because of an error in its SConscript file) indicate graphically somehow in the file hierarchy.  Messages in the global output tab can be difficult to spot.

Configure options

  • select preferred debugging environment
  • (maybe) <span style="color: #ff6600">select preferred cvs diff format</span> [No ability to configure yet, but added -u option to improve output in 0.9.2]

  • select preferred editor [Done as of release 0.8.8]

More functions or enhancements

  • full support of override directory. [Most of the work remaining is in SCons infrastructure, not GoGui]  [Done as of release 0.9.0]

  • Additional file-specific functions selected by right-click in package hierarchy
    • bring up file in Qt editor [read-only browse available as of 16 Oct.]

    • (better) bring up file in user-selected editor [Done as of version 0.8.8 ]

    • <span style="color: #000000">run Doxygen</span>[Done as of version 0.9.6]

    • Do a better job of determining which files are executable, which are editable, and which are both (e.g. scripts)
  • capture qDebug() output in another panel of central tabbed widget. [\ Done as of 0.8.8]

  • implement dry-run builds and cleans (print what they would do without actually doing it)
  • <span style="color: #000000">special handling for container packages</span> (celestialSources, irfs) for various cvs operations: checkout, update, commit, tag [tag is done as of Nov. 3].

  • allow cvs checkout with offset (e.g. from users/myArea) [Done as of 14 Nov. ]

  • Enable "clean" for a container, but with an "are you sure?" warning dialog. [done in 0.9.2]

Bugs

  • (tick) After adding a new package, SCons init crashes. (Fixed 9/26)
  • (tick) Unpleasant scrolling behavior in 'pkg out' panel   (Fixed 10/1)
  • (tick) SCons operations counter does not get cleared when init operation fails. (Fixed 11/18, version 0.8.5)
  • If the specification of scons command doesn't resolve to an actual file (e.g., if the default setting of scons is not in the user's path) GoGui crashes. At the very least should get rid of default and force user to supply something since this default often causes the crash. [Done in 0.9.2]

  • Specifying a path starting with /afs to Qt file browser typically causes GoGui to hang because it's trying to do completion. Should either disable completion or allow user to enable/disable. [As of 0.9.3 start in user's home directory; helps to avoid hangs if user navigates carefully] Something having to do with afs has been fixed so that this is no longer a problem.

  • When toggling exclude on a package via exclude icon or via Build menu item, display does not update; user needs to click on a package (same or different) to see the red X appear or be cleared.  It does work properly when the operation is done from the context menu. [Fixed as of 0.9.4]

Windows-specific

  • (tick) Container checkout from GoGui (this might work already for most Windows users; need a guinea pig). (Verified as ok 11/13 '08)
  • Make Project and Solution files as part of build [requires changes to SCons infrastructure] (More or less done as of 5/8)

  • Bring up terminal window in context of current installation [In place as of 0.9.5 but requires SCons underpinnings which are not in production yet]

  • Bring up Visual Studio from GoGui [In place as of 0.9.5 but requires SCons underpinnings which are not in production yet]

SCons customization

  • Full support for Override directory. This requires a different organization-for/handling-of the per-package file pkgNameLib.py. [Done by Dec.10 '08]

  • Creation of per-package (maybe per-package, per-variant) setup file to define all environment variables needed to run a program built in that package.  Done as of Sept. 29 '08 at least for Linux, maybe also Windows.  [Thanks, Navid!] Only one file per variant is needed (not one per package per variant). [As of June 2009 2-step scheme for Windows setup file is working. _setup.vbs gets created as part of standard (e.g., RM) build.  End user then runs it locally or builds "setup" target with SCons to produce _setup.bat, the real -- but non-portable -- set-up file.] [As of Sept. '09, newer, better scheme on Windows creates just _setup.js; no need for two-stage handling.]

  • Enable generation of Windows project and solution files during build [Done but not yet useful]

  • Improve natively-generated SCons solution files which are not convenient for our use. [Done to a degree, but only for VS 2008, requires SCons 1.2.0.d20090919 and development versions of SConsFiles tools which only exist in CVS within users/jrb. ]

External libraries

Our SCons implementation requires a different directory structure in extlibs than we're currently using with CMT. (This is not intrinsic to SCons; the decision to change was independent but, given that it was made, it was preferable to start off SCons with the new arrangement.) The new arrangement has been implemented for RM, but does pose an additional barrier to using SCons for anyone not doing their development against the SLAC central installation.

Installation

GoGui is nearly fully functional on Linux RHEL3, RHEL4 and Windows; the more adventurous might want to get some experience. There is a Mac build from the same source but it hasn't had much exercise. If there are any such, their feedback would be very useful. However, there are several jobs to do before GoGui can be installed and used at SLAC:

  1. Build it.  [RHEL5, RHEL6 and Windows builds are available via ftp. A Mac build is also available for some GoGui versions. RHEL5 executables are installed at SLAC.

  2. Some work remaining on user documentation
    • how a user on SLAC Linux can get access to GoGui and everything it needs (i.e. Python, SCons)
    • how to use GoGui.  Reasonably complete, but does not mention a few of the latest features

* *Early Windows users should be not only hardy but also public-spirited. The WIndows release can do almost everything the Linux version can, but there is currently a flaw in SCons itself so that interactive mode doesn't work properly on Windows. Windows users have to re-initialize SCons with every build or clean operation, thus forgoing the intended benefits of scons --interactive.

The GoGui executables for most Windows releases there are dynamically linked, hence users will need a few extra libraries. For these, download the file QtForGoGui.zip.

  • No labels