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

Compare with Current View Page History

« Previous Version 63 Next »

Status

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

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.
  • 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.  (Navid has enhanced SCons to create this file and a comparable file on WIndows _setup.wsf).
  • 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.

 A welcome bonus of using a supersede directory is that SCons init 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

  • 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.
  • 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.

Configure options

  • select preferred debugging environment
  • (maybe) select preferred cvs diff format
  • 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]

  • 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
  • capture qDebug() output in another panel of central tabbed widget. (See grits-cpp/src/lsf/lsfDaemon.cxx for example and qt doc. for qInstallMsghandler.)
  • implement dry-run builds and cleans (print what they would do without actually doing it)
  • special handling for container packages (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. ]

Bugs

  • After adding a new package, SCons init crashes. (Fixed 9/26)
  • Unpleasant scrolling behavior in 'pkg out' panel   (Fixed 10/1)
  • SCons operations counter does not get cleared when init operation fails. (Fixed 11/18, version 0.8.5)

Windows-specific

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

  • Bring up Visual Studio from GoGui

SCons customization

  • Full support for Override directory. This requires a different organization-for/handling-of the per-package file pkgNameLib.py.
  • 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 at least for Linux, maybe also Windows.  [Thanks, Navid!] Only one file per variant is needed (not one per package per variant).

  • 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.

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 not yet (Nov. 13) fully functional, but it's close enough on Linux that the more adventurous might want to get some experience. 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. So far I have only built GoGui for Linux on my RHEL4 laptop. We also need a RHEL3 build [As of Nov 17 both RHEL3 and RHEL4 builds are available and (thanks to Heather) there is a suitable GLAST_EXT directory for RHEL3 as well as RHEL4]

  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

There is even an executable Windows developers can download (see ftp address above) if extremely hardy and public-spirited. It can do almost everything the Linux version can, but since it won't build developer-friendly project and solution files it's not of much practical use yet. 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