diff --git a/ALL_VERSIONS b/ALL_VERSIONS deleted file mode 100644 index b1b8812d34378cbf5905a0aadc8c1ed3459cedfe..0000000000000000000000000000000000000000 --- a/ALL_VERSIONS +++ /dev/null @@ -1,66 +0,0 @@ -Version number Date of release Notes -============== =============== ===== -29.0 (Copper) 2024, June 6 -28.1 (Nickel) 2024, March 24 Bugs fixed -28.0 (Nickel) 2023, November 29 -27.1 (Cobalt) 2023, July 18 -27.0 (Cobalt) 2023, June 15 -26.1 (Iron) 2023, February 15 -26.0 (Iron) 2022, November 23 -25.0 (Manganese) 2022, June 22 -24.0 (Chromium) 2021, November 30 -23.1 (Vanadium) 2021, July 20 -23.0 (Vanadium) 2021, July 7 -22.0 (Titanium) 2020, November 17 -21.1 (Scandium) 2020, June 25 Bugs fixed -21.0 (Scandium) 2020, June 11 -20.0 (Calcium) 2019, December 4 -19.1 (Potassium) 2019, September 18 OCaml 4.08 compatibility -19.0 (Potassium) 2019, June 21 -18.0 (Argon) 2018, November 29 -Chlorine-20180502 2018, July 06 Bug fixed -Chlorine-20180501 2018, June 01 -Sulfur-20171101 2017, November 28 -Phosphorus-20170501 2017, May 29 - -Silicon-20161101 2016, December 2 - -Aluminium-20160502 2016, May 31 -Aluminium-20160501 2016, May 30 Removed -Aluminium-rc1 2016, May 13 Not publicly released - -Magnesium-20151002 2016, January 15 -Magnesium-20151001 2015, October 27 Not publicly released - -Sodium-20150201 2015, March 9 - -Neon-20140301 2014, May 7 - -Fluorine-20130601 2013, June 11 Bug fixed -Fluorine-20130501 2013, May 23 Bug fixed -Fluorine-20130401 2013, April 17 - -Oxygen-20120901 2012, September 19 - -Nitrogen-20111001 2011, October 10 - -Carbon-20110201 2011, February 7 -Carbon-20101202-beta2 2010, December 17 Source only -Carbon-20101201-beta1 2010, December 14 Source only - -Boron-20100401 2010, April 12 - -Beryllium-20090902 2009, September 23 -Beryllium-20090901 2009, September 01 -Beryllium-20090601-beta1 2009, June 23 Source only - -Lithium-20081201 2008, Decembre 16 -Lithium-20081002+beta1 2008, October 28 -Lithium-20081001+alpha0 2008, October 03 Source only - -Helium-20080701 2008, July 11 - -Hydrogen-20080502 2008, May 26 No cvs tag -Hydrogen-20080501 2008, May 05 Source only, No cvs tag -Hydrogen-20080302 2008, March 27 Binary only -Hydrogen-20080301 (Hydrogen) 2008, March 03 Source only diff --git a/dev/set-version.sh b/dev/set-version.sh index e1c23b1f1488b08d1e5b266b07b03f0dca371746..9ac93e3b5833553cd6d48c5636bd12fa3d292581 100755 --- a/dev/set-version.sh +++ b/dev/set-version.sh @@ -87,6 +87,9 @@ else echo "$NEXT" >VERSION echo "$NEXT_CODENAME" >VERSION_CODENAME + # Ivette + $SED -i "s/^ \"version\": .*/ \"version\": \"$CURRENT_MAJOR.$CURRENT_MINOR.0\",/g" ivette/package.json + # Opam files $SED -i "s/^version: .*/version: \"$NEXT\"/g" opam $SED -i "s/\(.*\)$CURRENT_MAJOR.$CURRENT_MINOR-$CURRENT_CODENAME\(.*\)/\1$NEXT_MAJOR.$NEXT_MINOR-$NEXT_CODENAME\2/g" opam @@ -124,6 +127,8 @@ else doc/aorai/main.tex $SED -i "s/\(^\\\\section\*{E-ACSL \\\\eacslpluginversion \\\\eacslplugincodename}\)/%\1\n\n\\\\section\*{E-ACSL $NEXT_MAJOR.$NEXT_MINOR $NEXT_CODENAME}/g" \ src/plugins/e-acsl/doc/userman/changes.tex + $SED -i "s/\(^\\\\subsection\*{Version Frama-C+dev}\)/%\1\n\n\\\\subsection\*{Version $NEXT_CODENAME-$NEXT_MAJOR}/g" \ + src/plugins/e-acsl/doc/refman/changes_modern.tex # Reference configuration $SED -i "s/Frama-C [1-9][0-9]\.[0-9]/Frama-C $NEXT_MAJOR.$NEXT_MINOR/gI" \ diff --git a/doc/release/branch.tex b/doc/release/branch.tex index 8efc99d39565177b3258f8983c1433f46590bb83..e5fe3d875915652e7fde9806a7f7dc07ed758138 100644 --- a/doc/release/branch.tex +++ b/doc/release/branch.tex @@ -14,12 +14,11 @@ be integrated into the upcoming release. When the ``freeze'' period arrives (usually a few weeks before the beta release), the release manager may decide to prevent direct merges to the -\texttt{master} branch, until the \texttt{stable} branch is created. -If so, then the branch should be protected such that Developers can no -longer push and merge to it, without asking for a Master to do it. - -In Gitlab, this is done via: Frama-C project $\rightarrow$ Settings -$\rightarrow$ Repository $\rightarrow$ Protected Branches. +\texttt{master} branch, until the \texttt{stable} branch is created. If so, then +the branch should be protected such that Developers can no longer push and merge +to it, without asking for a Maintainer to do it. In Gitlab, this is done via: +Frama-C project $\rightarrow$ Settings $\rightarrow$ Repository $\rightarrow$ +Protected Branches.\\ \textbf{The \texttt{master} branch must be protected \emph{at all times}. Parameters @@ -29,7 +28,7 @@ $\rightarrow$ Repository $\rightarrow$ Protected Branches. \section{Creating the branch} -Note that you must be member of the GitLab groups "frama-c", "dev" and have +\textbf{Note:} You must be member of the GitLab groups "frama-c", "dev" and have access to each plugin of continuous integration. Create the branch \texttt{stable/release}, where \texttt{release} is the @@ -55,6 +54,9 @@ and go through Merge-requests. Everything else should go in \texttt{master}, which can then be reset to standard-level protection (Developers + Maintainers allowed to push/merge). +\textbf{Note:} If there are still merge requests tagged for this release, make +sure to set their targeted branch to \texttt{stable/release}. + \section{GitLab issues} {\em This is currently done periodically in specific Frama-C meetings, so only @@ -73,8 +75,11 @@ one. On the new \texttt{stable} branch, execute the script: \begin{verbatim} -./dev/set-version.sh NN.M # to be replaced with actual major/minor version +# to be replaced with actual major/minor version +# Add suffix ~beta for beta releases only +./dev/set-version.sh NN.M \end{verbatim} + This will: \begin{itemize} \item update the \texttt{Changelog}s @@ -86,6 +91,10 @@ This will: \item update the reference configuration \end{itemize} +For beta releases, update manually the doc link in opam file to add +\texttt{-beta} (not \texttt{\textasciitilde{}beta}) : +\texttt{http://frama-c.com/download/user-manual-<NN.M>-beta-<Codename>.pdf}\\ + Merge the \texttt{stable} branch in the \texttt{master} branch. On the \texttt{master} branch, execute the script: @@ -100,6 +109,28 @@ This will: Commit this change and push. +\section{External plugins} + +List of external plugins repo names: +\begin{itemize} + \item ACSL-importer + \item Caveat-importer + \item Cfp + \item frama-clang + \item GenAssigns + \item Meta + \item Minimal + \item Mthread + \item PathCrawler + \item Security + \item Volatile +\end{itemize} +For each one of them, check that versions in the \texttt{dune-project} files are +coherent with \FramaC's new release. If not, update them and run \verb+make+ to +generate the new opam file. Create a new branch, commit and push. Create a merge +request targetting \texttt{stable/copper} on each plugin and assign your co-rm. +This changes will need to be merged on master's branches later. + \section{Copyright} Check that the date in copyright headers is correct. If not then: @@ -108,8 +139,6 @@ Check that the date in copyright headers is correct. If not then: \begin{itemize} \item \texttt{headers/closed-source/*} \item \texttt{headers/open-source/*} - \item \texttt{ivette/headers/closed-source/*} - \item \texttt{ivette/headers/open-source/*} \item \texttt{src/plugins/e-acsl/headers/closed-source/*} \item \texttt{src/plugins/e-acsl/headers/open-source/*} \end{itemize} diff --git a/doc/release/deploy.tex b/doc/release/deploy.tex index 9509289dd29dd93c7004509b3d5003c2b7a2d465..e0592f1698d5e4003f9159a6fa9248c827753817 100644 --- a/doc/release/deploy.tex +++ b/doc/release/deploy.tex @@ -32,6 +32,13 @@ following: on \texttt{pub} (it must be started manually and requires the branch). \end{description} +After running \texttt{release-branch} and \texttt{release-create}, either the +tag indicates a beta release and then this tag is pushed on the public GitLab +repository (\url{https://git.frama-c.com/pub/frama-c/-/tags}), or it is a final +release and the release should be available in +\url{https://git.frama-c.com/pub/frama-c/-/releases}, as well as the tag of the +version in \url{https://git.frama-c.com/pub/frama-c/-/tags}. + \section{Check the website} Once the pipeline for the website has run, open \texttt{https://pub.frama-c.com}. @@ -48,41 +55,41 @@ Once the pipeline for the website has run, open \texttt{https://pub.frama-c.com} \item check manual links (reminder: the links are dead at this moment), it must contain \texttt{NN.N-Version} \item check ACSL version. \end{itemize} - \item \texttt{/html/changelog.html\#Codename-NN.N} + \item \texttt{/html/changelog.html\#<codename>-<NN.M>} \item \texttt{/html/acsl.html}: check ACSL versions list \item \texttt{rss.xml}: check last event \end{itemize} For a beta version, the installation pages for: \begin{itemize} -\item \texttt{/html/installations/beta\_codename.html} should indicate the beta status -\item \texttt{/html/installations/current\_codename.html} should not indicate anything -\item \texttt{/html/installations/previous\_codename.html} should indicate older version +\item \texttt{/html/installations/<beta\_codename>.html} should indicate the beta status +\item \texttt{/html/installations/<current\_codename>.html} should not indicate anything +\item \texttt{/html/installations/<previous\_codename>.html} should indicate older version \end{itemize} For a final version, the installation pages for: \begin{itemize} -\item \texttt{/html/installations/codename.html} should not indicate anything -\item \texttt{/html/installations/previous\_codename.html} should indicate older version +\item \texttt{/html/installations/<codename>.html} should not indicate anything +\item \texttt{/html/installations/<previous\_codename>.html} should indicate older version \end{itemize} On GitLab, in the website repository, in the merge request assigned to you, the following files must appear as \textbf{new} in \texttt{download}: \begin{itemize} - \item \texttt{acsl-X.XX.pdf} - \item \texttt{acsl-implementation-NN.N-CODENAME.pdf} - \item \texttt{plugin-development-guide-NN.N-CODENAME.pdf} - \item \texttt{user-manual-NN.N-CODENAME.pdf} - \item \texttt{<plugin>-manual-NN.N-CODENAME.pdf}\\ + \item \texttt{acsl-<X.YY>.pdf} + \item \texttt{acsl-implementation-<NN.M>-<Codename>.pdf} + \item \texttt{plugin-development-guide-<NN.M>-<Codename>.pdf} + \item \texttt{user-manual-<NN.M>-<Codename>.pdf} + \item \texttt{<plugin>-manual-<NN.M>-<Codename>.pdf}\\ for Aorai, EVA, Metrics, RTE and WP - \item \texttt{e-acsl/e-acsl-X.XX.pdf} - \item \texttt{e-acsl/e-acsl-implementation-NN.N-CODENAME.pdf} - \item \texttt{e-acsl/e-acsl-manual-NN.N-CODENAME.pdf} - \item \texttt{aorai-example-NN.N-CODENAME.tar.gz} - \item \texttt{frama-c-NN.N-CODENAME.tar.gz} - \item \texttt{frama-c-NN.N-CODENAME-api.tar.gz} - \item \texttt{frama-c-server-NN.N-CODENAME-api.tar.gz} - \item \texttt{hello-NN.N-CODENAME.tar.gz} + \item \texttt{e-acsl/e-acsl-<X.YY>.pdf} + \item \texttt{e-acsl/e-acsl-implementation-<NN.M>-<Codename>.pdf} + \item \texttt{e-acsl/e-acsl-manual-<NN.M>-<Codename>.pdf} + \item \texttt{aorai-example-<NN.M>-<Codename>.tar.gz} + \item \texttt{frama-c-<NN.M>-<Codename>.tar.gz} + \item \texttt{frama-c-<NN.M>-<Codename>-api.tar.gz} + \item \texttt{frama-c-server-<NN.M>-<Codename>-api.tar.gz} + \item \texttt{hello-<NN.M>-<Codename>.tar.gz} \end{itemize} For a final release \textbf{ONLY}, the following files must appear as \textbf{modified} in \texttt{download}: @@ -101,7 +108,7 @@ For a final release \textbf{ONLY}, the following files must appear as \textbf{mo \item \texttt{e-acsl/e-acsl-implementation.pdf} \item \texttt{e-acsl/e-acsl-manual.pdf} \item \texttt{frama-c-aorai-example.tar.gz} - \item \texttt{hello.tar.gz} + \item \texttt{frama-c-hello.tar.gz} \end{itemize} If everything is fine, merge the website and ask a website maintainer to put it @@ -114,16 +121,6 @@ links (files are available only once the website has been put online). If everything is fine, edit the main wiki page and the sidebar with a link to the page (\url{https://git.frama-c.com/pub/frama-c/-/wikis/home}). -In the release pipeline, run the job \texttt{release - release-branch}. It will -push the stable branch on the public repository. - -Then, run the job \texttt{release - release-create}. After this, either the -tag indicates a beta release and then this tag is pushed on the public GitLab -repository (\url{https://git.frama-c.com/pub/frama-c/-/tags}), or it is a final -release and the release should be available in -\url{https://git.frama-c.com/pub/frama-c/-/releases}, as well as the tag of the -version in \url{https://git.frama-c.com/pub/frama-c/-/tags}. - \section{Announcements} \begin{itemize} @@ -155,6 +152,8 @@ Check if other \FramaC (and related) repositories need to be updated: \section{Docker image preparation} +This section only applies to non-beta releases. + \textbf{Note:} you need access to the \texttt{framac} Docker Hub account to be able to upload the image. diff --git a/doc/release/validation.tex b/doc/release/validation.tex index b09995dbf48d1b4d68c13b988a927fa8af4fe4bb..758a75b3fc38f5e091d62b3a00251daadfbba299 100644 --- a/doc/release/validation.tex +++ b/doc/release/validation.tex @@ -28,21 +28,21 @@ If you don't know them, ask plug-in developers to verify them. \end{itemize} \section{Fix version} +\label{sec:validation:version} The tasks listed in this section are performed by the Release Manager. \subsection{Versions in documentation files} -Change version and codename in the following files: +For final release only, remove \texttt{\textasciitilde{}beta} and +\texttt{-beta} mentions in the following files : \begin{itemize} - \item \texttt{ALL\_VERSIONS} (non-beta only) - \item \texttt{VERSION} (for beta releases, add suffix \texttt{\textasciitilde{}beta}, not \texttt{-beta}) + \item \texttt{VERSION} \item \texttt{opam} - \begin{itemize} - \item change version (for beta releases, add suffix \texttt{\textasciitilde{}beta}, not \texttt{-beta}) - \item change doc link: \texttt{…/download/user-manual-<version>-<codename>.pdf} - (with \texttt{-beta} in version for beta releases, not \texttt{\textasciitilde{}beta}) - \end{itemize} + \begin{itemize} + \item in version field + \item in the doc link + \end{itemize} \end{itemize} \subsection{Versions in source: API documentation} @@ -99,7 +99,9 @@ git ls-files -z | \ parallel -0 -n1 git blame --line-porcelain | \ sed -n 's/^author //p' | sort -f | uniq -ic | sort -nr \end{verbatim} -(source for the command: \url{https://gist.github.com/amitchhajer/4461043}) + +\textbf{Note:} This requires to install the package \texttt{parallel}. Source +for the command: \url{https://gist.github.com/amitchhajer/4461043}. \subsection{Commit} @@ -110,7 +112,7 @@ Commit any change that you have done during these checks \textbf{and push}. In the last continuous integration pipeline of the release branch, force the run of the following targets: \begin{itemize} - \item manuals + \item manuals-artifacts \item opam-pin \item opam-pin-minimal \end{itemize} @@ -121,7 +123,7 @@ They shall succeed. Collect the artifacts of the following targets: \item manuals \end{itemize} -Check that these artifacts are as expected. In particular: +\noindent Check that these artifacts are as expected. In particular: \begin{itemize} \item API documentatation: \begin{itemize} @@ -132,7 +134,9 @@ Check that these artifacts are as expected. In particular: \item Check versions in manuals \item Tarball \begin{itemize} - \item Check that no non-free components are distributed + \item Check that no non-free components are distributed (note: unless + someone inadvertently added non-free code, \FramaC does not contain any, + this check is obsolete). \item Check that no \texttt{/home/user} path can be found in the distribution, \item Build and test \begin{itemize} @@ -147,7 +151,7 @@ Check that these artifacts are as expected. In particular: \end{itemize} \end{itemize} -Alternatively, you can use \texttt{docker} to compile the archive against a +\noindent Alternatively, you can use \texttt{docker} to compile the archive against a precise configuration: \begin{itemize} \item \verb+cp distributed/frama-c-<VERSION>.tar.gz developer_tools/docker+ @@ -156,11 +160,20 @@ precise configuration: \item \verb+docker build . -t framac/frama-c:dev --target frama-c-gui-slim \+\\ \verb+ -f Dockerfile.dev --build-arg=from_archive=frama-c-<VERSION>.tar.gz+ \end{itemize} -For the GUI: in order to be able to launch -\verb+x11docker framac/frama-c:dev frama-c-gui+, +For the GUI: in order to be able to launch \verb+x11docker framac/frama-c:dev frama-c-gui+, you might want to install the \href{https://github.com/mviereck/x11docker}{\texttt{x11docker}} script. +\noindent \FramaC's GUI can be tested with : +\begin{itemize} + \item \texttt{bin/frama-c-gui} for the old GUI. + \item \texttt{bin/ivette} for the new GUI. +\end{itemize} +\Eva can be tested with \texttt{<gui> -eva tests/idtc/*.c} and \Wp with +\texttt{<gui> -wp -wp-rte src/plugins/wp/tests/wp\_gallery/find.i}. Try to +navigate in the code, check some values with \Eva, check that \Wp prove some +annotations, this should be enough. + \section{Validate release} Create the main changes file in the directory \texttt{releases}. This file must @@ -182,8 +195,12 @@ expected format is: # ... \end{lstlisting} -It should only list main changes, that will be displayed on the event section -of the website and the wiki page. +It should only list main changes, that will be displayed on the event section of +the website and the wiki page. + +\textbf{Note:} Make sure to use markdown code formating \verb+``+ if the texte +contains things that could be affected by markdown formatting (for example +\verb+\word1_word2+ will be displayed as \verb+word2+ without code formatting. Create the version commit, tag it using \texttt{git tag \$(cat VERSION | sed -e "s/\textasciitilde /-/")} and push it (e.g. via \texttt{git push origin \$(cat VERSION | sed -e "s/\textasciitilde/-/")}).