File: inside_release.doc

package info (click to toggle)
simgrid 3.21%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 21,972 kB
  • sloc: cpp: 88,193; ansic: 69,244; fortran: 6,089; f90: 5,162; xml: 4,861; java: 4,250; perl: 2,056; python: 1,193; sh: 1,159; makefile: 57; sed: 6
file content (140 lines) | stat: -rw-r--r-- 6,039 bytes parent folder | download
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*! 
@page inside_release Releasing SimGrid

@section inside_release_c Releasing the main library

@subsection inside_release_c_preconditions Before releasing

Please apply the following checklist before releasing.

- Sources
  - The external patches (Debian, etc) are integrated.
    The COPYING file is aligned with Debian's copyright file, and the
    dates of SimGrid chunks are accurate.
  - The version number is correctly marked in CMakeLists.txt (in macros
    SIMGRID_VERSION_*), and also in sonar-project.properties
  - The "make distcheck" target works (testing that every files needed
    to build and install are included in the archive)
- Tests
  - All tests pass on a reasonable amount of platforms (typically,
    everything on ci + travis/Mac + AppVeyor)
  - You also tested to build and install the content of the source
    archive on a reasonable amount of platforms (typically, 2 or 3).
- ChangeLog file
  - All changes are documented
  - The release date is indicated below the changes
  - The release is marked as stable above the changes (remove the UNRELEASED marker)
  - The release dub name matches the one given in NEWS file
- NEWS
  - The most notable changes of the version are documented
  - The release date is indicated right below the version name
  - The release dub name matches the one given in ChangeLog file

@subsection inside_release_c_source Building the source archive

This should be done from a clean git repository because some files are
included through globbing. The best is to use a clean checkout:
@verbatim
cd /tmp
git clone --depth=1 ~/Code/simgrid
cd simgrid
cmake . && make dist
@endverbatim

If you prefer, you can clean your repository the hard way:
@verbatim
git reset --hard master # remove all uncommited changes to the files tracked by git
git clean -dfx          # delete all files and directories that are not tracked by git
cmake . && make dist
@endverbatim

@subsection inside_release_c_jarfile Building the binary jarfile

Get the jarfiles for several OSes on the CI slaves. Use Save under to
give a separate name to each of them.

- Mac OSX, FreeBSD: on Jenkins
- Windows: on AppVeyor
- Linux: it is safer to rebuild them in a chroot (to avoid
  boost-context and all other optional dependencies):
  
@verbatim
mkdir /tmp/build-amd64
cp SimGrid-3.*.tar.gz /tmp/build-amd64
sudo debootstrap --arch amd64 --variant=buildd testing /tmp/build-amd64 http://deb.debian.org/debian/
sudo chroot /tmp/build-amd64
echo "proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0" >> /tmp/fstab
mount proc /proc -t proc
apt-get install -y cmake default-jdk libboost-dev python3 doxygen
cd tmp
tar xfz ../SimGrid*tar.gz && cd SimGrid-*
cmake . -Denable_documentation=ON -Denable_java=ON
make -j4 && LC_ALL=C ctest -R java
@endverbatim

Once all jarfiles are in a separate directory, run the following to
merge them:
@verbatim
mkdir content ; cd content

for j in  ../simgrid-linux64.jar ../simgrid*.jar ; do unzip -n $j ; done
# The content of all jar should be the same, but I prefer using the Linux64 version by default
#  => unpack it first, and unpack the others with -n (never overwrite)

test -e doc/javadoc || echo "YOU ARE MISSING THE DOC"

du -sh .                                  # 273M here. Let's strip (Darwin is already good)
strip NATIVE/*/*/*.so                     # Gets BSD and Linux versions, down to 116M
x86_64-linux-gnu-strip NATIVE/*/*/lib*dll # Gets Windows, down to 22M

rm ../simgrid-3_*.jar
zip -r ../simgrid-3_XX.jar *              # Produced ../simgrid-3_XX.jar is 7.7M
@endverbatim

To upload the file on gforge, you need to go to Files/Admin then clic
on the Settings icon near to the "Add a version" button, and then on
the settings icon of the release you want to change.

@subsection inside_release_c_postchecks Check list after releasing

- Tag the git repository (don't forget to push the tags to the main repo)
- Push the archive files (tar.gz and jar) on gforge
- Post a news on gforge (before updating the website)
- Update the link scm.gforge.inria.fr:/home/groups/simgrid/htdocs/simgrid/latest
  (and create the directory of the next version)
- Rebuild and resynchronize the website so that the file gets visible
  from our download page.@n
  - Edit org/org-templates/level-0.org to change the release version, the tgz link and the jar link.
  - emacs org/site/index.org and C-c C-c the first source block to refresh the news; fake the date in the result.
  - emacs org/site/download.org and C-c C-c the first source block to refresh the download.
  - emacs org/site/documentation.org and edit the version links.
  - make -C org all sync
  - git commit -a && git push
- Announce the release
 - Document the tag on https://github.com/simgrid/simgrid/releases
 - Mail the simgrid-user mailing list
    - the NEWS chunk in the mail;
    - Hall of Fame in the mail@n
      git shortlog -sne v3.18..
    - the ChangeLog chunk as attachment
 - Also mail some other lists (G5K users), with only the NEWS chunk
   and the link to the download section
- Release the debian package
  - make -f debian/rules get-orig-source
  - gbp import ../simgrid_XXX+dfsg.orig.tar.xz
  - dch -i "New upstream release" # + copy the NEWS into debian/changelog
  - git mv debian/libsimgrid3.XX.install debian/libsimgrid3.XY.install
  - edit debian/control
    - s/simgrid3.XX/simgrid3.XY/ 
    - libsimgrid3.XY conflicts with libsimgrid3.XX because of smpimain
- Update the simgrid/package.py for spack: https://gitlab.inria.fr/solverstack/spack-repo
- Create the template for the next release in ChangeLog and NEWS files
  Release Target date: https://en.wikipedia.org/wiki/Equinox
- Change the release number to 3.X.90 in CMakeLists.txt and sonar-project.properties
- Deal with deprecations:
  - Introduce the XBT_ATTRIB_DEPRECATED_v??? macro for the next release.
  - Kill the one for the current release and remove all code that were
    mandated by the deprecated functions (both in source and headers).
  - Do the possible cleanups now that these features are gone.

*/