Difference between revisions of "User:AndrewJohnson/Developing Future Releases"

From EPICSWIKI
(Finished all directories)
(Added src/dbHost)
Line 29: Line 29:
* Renamed top dir to template
* Renamed top dir to template
** ''This change unnecessary, don't make'' - ANJ
** ''This change unnecessary, don't make'' - ANJ
src/makeBaseExt:
* ''May be unnecessary if we keep the Up stuff'' - ANJ


src/libCom:
src/libCom:
Line 76: Line 79:
src/dbStatic:
src/dbStatic:
* Removed 3.13 compatibility from Makefile
* Removed 3.13 compatibility from Makefile
src/dbHost:
* New


src/registry:
src/registry:
Line 114: Line 120:
src/misc:
src/misc:
* Removed 3.13 compatibility from Makefile
* Removed 3.13 compatibility from Makefile
* id[] in epicsRelease.c (discard?)
* id[] in epicsRelease.c - ''discard (ANJ)''


src/dev:
src/dev:

Revision as of 20:28, 21 January 2010

This document proposes a method for managing development work intended for future releases of EPICS Base.

Background

Developing new features for EPICS Base has always been limited by the complexities of managing significant code changes in the CVS repository. Work on bug fixes and minor new features was developed on the current release branch, while more extensive developments that were intended for the next major release took place on the main trunk. This has made it essential to coordinate development projects so that everything committed on the relevant branch is finished and working in time for the release. For long-term development work, this results in an inability to release a version containing some new features because others are still not finished.

For minor changes that have been made on the current release branch, this has also required additional effort from the developers to ensure that their changes also get committed to the main trunk. Unfortunately the commit log messages for these secondary commits on the trunk have mostly become content-free, which makes them useless for future examination. The commit log messages on the branch however do contain useful information.

One of the advantages of using a Distributed Version Control System (DVCS) like Bazaar is the ability to use separate development branches. Each new feature is developed on its own private branch and the result only gets merged into the official repository once development is finished and the resulting code has been tested. The ability to review changes, ask questions and make comments on them before they get applied to the official repository should help improve the quality of future releases.


Proposal

The current R3.14 branch should form the basis for the R3.15 release branch. All features to be included in R3.15 should be published as separate feature branches and proposed for merger into the new release branch. By adopting this approach, changes that are made on the R3.14 branch after the R3.15 branch has been created can easily be merged into R3.15 as well with a simple 'bzr merge' from the R3.14 branch. This also means that bugs should first be fixed in the earliest branch series that is still being supported, and then these changes should be merged forward (adjusted as necessary) to later branch series.

Adopting this proposal requires that all desired features that have already been added to the CVS trunk be extracted into new feature branches and published separately. Where there are dependencies between features the more dependent ones will need to be derived from the earlier feature branches, but doing so is not complicated as long as the relationships are clear.

A look at the differences between the two branches reveals the following features are present on the cvs-trunk but not on the 3.14 branch. Note that this list does not mention features that have been added to the 3.14 branch but not to the cvs-trunk, the assumption is that those should stay:

configure:

  • Up files everywhere, and associated changes to Makefiles and RULES_ARCHS
  • Added os/CONFIG* files for the linux-ppc-bgl architecture

src/tools:

  • installEpics.pl Silence echo when -s in $ENV{MAKEFLAGS}
  • makeMakefile.pl updates

src/makeBaseApp:

  • Renamed top dir to template
    • This change unnecessary, don't make - ANJ

src/makeBaseExt:

  • May be unnecessary if we keep the Up stuff - ANJ

src/libCom:

  • New BaseString/
    • test/BaseStringTest.cpp, test/SegBufferTest.cpp, test/TestSegString.h
  • Many changes in cxxTemplates/
    • New epicsThrowTrace, autoDestroyPtr
    • epicsGuard.h and tsMinMax.h deleted
  • New yajl/
  • New EPICS_CA_NAME_SERVERS in env/envDefs.h
  • Updates in fdmgr/
  • New EPICS_UNUSED in misc/compilerDependencies.h
  • New misc/EnclLnk.h
  • New types in misc/epicsTypes.h
  • Updates to misc/ipAddrToAsciiAsynchronous
  • Deprecated EPICS_UPDATE_LEVEL removed from output of misc/makeEpicsVersion.pl
  • Win32 visibility attribute used in misc/shareLib.h
  • Major changes to osi/epicsMutex and osi/epicsThread
    • WIN32/osdMutex drop support for W95/W98/WME
    • WIN32/osdThread.c updates
    • test/epicsMutexTest.cpp
    • Makefile osdThread_CPPFLAGS setting
  • No-throw guarantees and support for addNanoSec(-ve args) in misc/epicsTime
    • Don't like those no-throw guarantees - ANJ
  • New osdAtomic API in osi and osi/os/*
    • test/osiAtomicTest.cpp
  • Updates to osi/os/*/osdNetIntf.c (probably 3.14 missing from 3.15 though)
    • Related changes in osi/osiSock.h
  • Updates in osi/osiWireFormat.h and osi/os/default/osdWireFormat.h
  • Removed all sigAlarm routines from osi/os/*/osdSignal.cpp
    • Also enum change in osi/osiSock.h, test/blockingSockTest.cpp
  • WIN32/epicsGetopt - mingwex library provides getopt(), don't build on mingw
  • WIN32/osdProcess.c cleanup
  • WIN32/osdTime.cpp updates
  • WIN32/setThreadName.cpp updates
  • test/cvtFastPerform.cpp using stmts.
  • Removed 3.13 compatibility from Makefile
  • Major updates in timer/
  • Deleted tsDefs/

src/toolsComm:

  • No changes.

src/ca:

  • Many updates, not examined.

src/dbStatic:

  • Removed 3.13 compatibility from Makefile

src/dbHost:

  • New

src/registry:

  • Removed 3.13 compatibility from Makefile

src/bpt:

  • Added convertCommon.dbd and menuConvertCommon.dbd

src/db:

  • Removed 3.13 compatibility from Makefile
  • Major updates to the CA Server interface
  • Renumber S_db_noMemory in dbAccessDefs.h

src/as:

  • Removed 3.13 compatibility from Makefile

src/util:

  • Build ca_test and iocLogServer on all host types

src/dbtools:

  • Removed 3.13 compatibility from Makefile

src/catools:

  • No changes.

src/rsrv:

  • Removed 3.13 compatibility from Makefile
  • Added support for name searches over TCP in camessage.c
  • Removed SigAlarm calls from caserverio.c and caservertask.c
  • Added rsrv_version_reply() call in caservertask.c
  • online_notify.c - some changes using osiIntfAddrNode may be backwards
    • There is also new code in this file though.
  • Increment CA_MINOR_PROTOCOL_REVISION in server.h

src/rec:

  • No changes.

src/misc:

  • Removed 3.13 compatibility from Makefile
  • id[] in epicsRelease.c - discard (ANJ)

src/dev:

  • Removed 3.13 compatibility from Makefiles

src/vxWorks:

  • Deleted.

src/RTEMS:

  • No changes.

src/softIoc:

  • No changes.

src/gdd, src/cas, src/excas:

  • Many updates, not examined.

src/cap5: No changes.