New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Developers – NEMO
wiki:Developers

Version 57 (modified by nicolasmartin, 4 years ago) (diff)

--

Welcome to the NEMO development area

You should find here everything regarding the development and the support of the NEMO reference.

Prerequisites

Become a NEMO developer

First and foremost, if you don't already have a user account then you have to create it.

For NEMO consortium members

If you have a user account or had a developer account before, see with your local NEMO Officer.

Error: Failed to load processor SQLTable
No macro or processor named 'SQLTable' found
Error: Failed to load processor SQLTable
No macro or processor named 'SQLTable' found

For external users

Submit your contribution to the NEMO System Team by creating a ticket where you will present your proposal.
If your changes are quite modest (one or few routines involved), you can simply attached in the ticket the output of any third-party diff tool for easy patching with svn patch.

Keep in mind that, despite the help we can offer, a certain amount of work from you will be need to implement your developments into the source code.

Recommended development installation

After the global reorganisation of the repository, it is now advisable to entirely download the new default development organisation in your local computing architecture:

  • NEMO/trunk: the main development branch
  • NEMO/branches
    • NEMO/branches/YYYY: yearly development branches intended to be merged into trunk by the end of the year
    • NEMO/branches/{NERC,UKMO}: restricted to British operational activities
  • NEMO/releases: all official NEMO releases, only the last one is maintained

The first checkout will be a bit longer than usual but the SVN commands will be much simpler: the branching operations will be done locally and pushed later to the repository instead of committing directly to the repository with former complex svn+ssh syntax and then downloading locally.
Follow the steps below to download the recommended development installation

#----------------------------------------------------------------------------------
## To do the first time
#----------------------------------------------------------------------------------
## Create a void NEMO development organisation (trunk + branches + releases)
svn co --depth immediates http://forge.ipsl.jussieu.fr/nemo/svn/NEMO/ NEMO_dev
cd NEMO_dev

## Switch from user to developer role if you have the rights by changing the URL scheme
svn sw --relocate    http://forge.ipsl.jussieu.fr                          \
                  svn+ssh://${ID}@forge.ipsl.jussieu.fr/ipsl/forge/projets
## Copy your SSH key to your account on the Forge server to avoid repeated password requests
ssh-copy-id -i ~/ssh/id_rsa.pub ${ID}@forge.ipsl.jussieu.fr

## Get the current directory tree under 'branches'
svn up --set-depth immediates branches
## Download the trunk, the same procedure can be used for any sub-content (release, dev branch)
svn up --set-depth infinity   trunk

#----------------------------------------------------------------------------------
## To repeat for each development branch
#----------------------------------------------------------------------------------
## Create your development branch locally
svn copy trunk[@${PEGREV}]    branches/$year/'dev_r'${PEGREV}_${NameOfNewBranch}
## If needed, edit the external references (${SVN_EDITOR} env. variable must be set)
svn pedit svn:externals       branches/$year/'dev_r'${PEGREV}_${NameOfNewBranch}
## Then push it to the repository
svn commit [-m 'log message'] branches/$year/'dev_r'${PEGREV}_${NameOfNewBranch}

cd branches/$year/'dev_r'${PEGREV}_${NameOfNewBranch}

## Download sette tool to validate your changes to the NEMO reference
svn co http://forge.ipsl.jussieu.fr/nemo/svn/utils/CI/sette
## Doc figures for building NEMO manual (not mandatory)
svn co http://forge.ipsl.jussieu.fr/nemo/svn/utils/figures  ./doc/figures

See SVN basics? for more.

New build of the working copy

To facilitate the development work by simplifying the management and the sharing of the code in the repository, while ensuring the consistency of the working copies, we have introduced the SVN externals definitions in the building of the working copies.
We have identified the core code and the complementary codes of NEMO, the latter which are developing less rapidly have been extracted from the default development organisation of the repository (branches / releases / trunk) to different locations of the repository.

From now on, a working copy of the NEMO reference (WC) is the summation of few checkouts from different sources defined by the svn:externals properties of the working copy. To be conservative, all externals definitions are fixed by default (@Color(${, #AA22FF)?Color(PEGREV, #B8860B)?Color(}, #AA22FF)?).
Here is an example which is not supposed to be up to date with the current external codes.

# Relative URL                     Path in WC   Content
^/utils/build/arch[@${PEGREV}]     arch         # FCM settings files for computing architectures
^/utils/build/makenemo[@${PEGREV}] makenemo     # Main script for building a NEMO configuration
^/utils/build/mk[@${PEGREV}]       mk           # Sub-scripts and FCM inputs for compiling
^/utils/tools[@${PEGREV}]          tools        # User tools
^/vendors/AGRIF/dev[@${PEGREV}]    ext/AGRIF    # Dependency for nesting
^/vendors/FCM[@${PEGREV}]          ext/FCM      #     ""     for source code compilation
^/vendors/IOIPSL[@${PEGREV}]       ext/IOIPSL   #     ""     for IO management
# '^' for repository root

If you have to modify these properties to get external modifications, you can learn how to update your working copy in Developers/SVNHowTo?.

Development activities

Document your developments before coding by following the procedure described at Developers/DevelopingCodeChanges

Support

Developers/WorkingOnTickets

Forums

Discussion

  • If you want to follow a particular resource, set your email in your preferences and follow the instructions:
    • Wiki: click on 'Watch page' in the contextual menu.
    • Forum: subscribe to a topic from the topic list or a subject from the messages list.
    • Ticket: add your ID in the 'Cc' field.
  • (|mail|) forge@nemo-ocean.eu: to be notified of each event on this platform (repository commits, ticket creation/update and forums messages).
    Very high traffic recommended for developers only.