Menu

Tutorial

codeaster

Table of contents:

Need help ? Please read the Getting support page.

Configuration of your development environment

You have to check this only once.

Configure your Mercurial options

If you already know Mercurial, your ~/.hgrc is probably already configured.

Here is an example of a ~/.hgrc file. You must at least edit the section [ui] section
to enter your real name and email address.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[ui]
# enter your real name and your email address
username = FirstName Lastname <myaddress@domain.org>
editor = gedit
merge = meld

[merge-tools]
meld.args = $local $base $other

[extensions]
color =
rebase =
purge =
mq =
extdiff =
graphlog =
histedit =
patchbomb =

[aster]
#translation = false
#test.nbmaxnook = 5

[alias]
lg = log -G --template="{rev}:{node|short} {branch}: {desc|firstline} <{author|email}> ({phase})\n"
ll = lg -l 10

You can check that your username and email are correctly set:

1
2
$ hg showconfig ui.username
FirstName Lastname <myaddress@domain.org>

Clone the source and devtools repositories

devtools will provide some tools to check our source coding conventions
(it is recommended if you plan to send pull-requests and contribute to the project).

Note: devtools is mainly designed for internal purpose. It may contain specific
configurations and some commands may be unusable. It is not clear, feedback is welcome.

Note: In this tutorial, you will clone the code_aster repositories.
See the SourceForge documentation if you created your own forks.

Make your clones using:

1
2
3
mkdir -p $HOME/dev/codeaster && cd $HOME/dev/codeaster
hg clone http://hg.code.sf.net/p/codeaster/devtools devtools
hg clone http://hg.code.sf.net/p/codeaster/src src

Please be patient, the size of src is about 350 MB...

If you don't want to use $HOME/dev/codeaster, you must change it in the following examples.

Configuration of the repository

You can skip this step if you will keep your changes private.

This step will fill the .hg/hgrc file in the src repository.

It will enable the aster extension.

1
$HOME/dev/codeaster/devtools/bin/install_env --internet

Update: the script has now a --internet option for use without EDF servers.
You can force reinitialization adding the --reset option.

You will probably have to source the environment of devtools to be able to load the extension.
Add this line into your ~.bashrc:

1
. $HOME/dev/codeaster/devtools/etc/env.sh

Configuration and first build of code_aster

For more details, see the Build code_aster page.

To build code_aster you need install its prerequisites (mumps, hdf5, med,
blas, compilers...).

In this tutorial we suppose that you have already install the last code_aster package
of the testing version (for example, ASTER_VERSION=13.4).
During the installation of this version, location of the prerequisites has been
automatically registered in $ASTER_ROOT/$ASTER_VERSION/share/aster/aster_full_config.py
as a configuration file for waf.

For the following command lines you will use $ASTER_ROOT variable (change it with
the value used during the installation of the aster-full-src package):

1
ASTER_ROOT=/opt/aster

Here, we are using the prerequisites built by the aster-full setup.
The command lines are:

1
2
3
4
cd $HOME/dev/codeaster/src
source $ASTER_ROOT/$ASTER_VERSION/share/aster/profile_mfront.sh
./waf configure --use-config-dir=$ASTER_ROOT/$ASTER_VERSION/share/aster --use-config=aster_full_config --prefix=../install/std
./waf install -p

If later you want to build a parallel version, you will use --prefix=../install/mpi.

Now we can check this installation by running a small testcase:

1
2
3
4
5
6
7
8
9
$ cd $HOME/dev/codeaster/src
$ ./waf test -n sslp114a
Waf: Entering directory `/home/courtois/dev/codeaster/src/build/release'
destination of output files: /tmp/runtest_jb04OK
running zzzz100b in 'release'
`- output in /tmp/runtest_jb04OK/zzzz100b.output
`- exit 0
Waf: Leaving directory `/home/courtois/dev/codeaster/src/build/release'
'test' finished successfully (2.307s)

Using this development version in salome_meca

In order to prepare commands files with the syntax of your development version,
all you need is to add it using the menu entry File/Preferences/AsterStudy/Catalogs.
Use dev as label and enter the path up to lib/aster,
for example: $HOME/dev/codeaster/install/std/lib/aster

This version should appeared with the label dev.
To be available for execution on localhost, apply the following point for as_run.

Add this development version in astk/as_run

Just add these lines in your ~/.astkrc/prefs file
(example with a sequential and a parallel versions):

vers : DEV:$HOME/dev/codeaster/install/std/share/aster
vers : DEV_MPI:$HOME/dev/codeaster/install/mpi/share/aster

Restart astk or refresh the configuration of the local server.
The added versions should appear in the versions scroll-list.

In salome_meca, just click on the refresh icon near the server name
to reload the server configuration.

Make your first development

Note: It is highly recommended to start every new development from the head
of the default branch, after pulling the newer changesets:

1
2
3
cd $HOME/dev/codeaster/src
hg pull
hg up reference

Change the source code. For example, add a print in bibfor/op/op0001.F90

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
diff --git a/bibfor/op/op0001.F90 b/bibfor/op/op0001.F90
--- a/bibfor/op/op0001.F90
+++ b/bibfor/op/op0001.F90
@@ -89,6 +89,7 @@
     call infniv(ifm, niv)
 !
     call getres(nomu, concep, cmd)
+    print *, "this print has been added in the LIRE_MAILLAGE operator"
 !
     call getvis(' ', 'UNITE', 0, iarg, 1,&
                 ifl, iaux)

Rebuild code_aster to see your changes

1
./waf install

Without the -p/--progress option, the output is verbosy. If you scroll back,
you can see the only the changed file has been recompiled:

[5052/7165] fc: bibfor/op/op0001.F90 -> build/release/bibfor/op/op0001.F90.1.o

Check and validate your changes on a relevant testcase

1
./waf test -n sslp114a

You can also run this testcase or a study of your choice in astk with your personal version.

Now use the power of Mercurial to commit your changes, share them by sending a pull-request...

If you enabled the aster extension the commit message must mention a bug id.
You can use a trivial id for your personal work
(for example [#0000] add a new feature).


Related

Wiki: BuildCodeAster
Wiki: Devel

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.