--- /dev/null
+#
+# This file is part of the GROMACS molecular simulation package.
+#
+# Copyright (c) 2016, by the GROMACS development team, led by
+# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
+# and including many others, as listed in the AUTHORS file in the
+# top-level source directory and at http://www.gromacs.org.
+#
+# GROMACS is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# as published by the Free Software Foundation; either version 2.1
+# of the License, or (at your option) any later version.
+#
+# GROMACS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GROMACS; if not, see
+# http://www.gnu.org/licenses, or write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# If you want to redistribute modifications to GROMACS, please
+# consider that scientific software is very special. Version
+# control is crucial - bugs must be traceable. We will be happy to
+# consider code for inclusion in the official distribution, but
+# derived work must not be called official GROMACS. Details are found
+# in the README & COPYING files - if they are missing, get the
+# official version at http://www.gromacs.org.
+#
+# To help us fund GROMACS development, we humbly ask that you cite
+# the research papers on the package. Check out http://www.gromacs.org.
+
+import json
+
+def do_build(context):
+ cmd = [context.env.cmake_command, '-P', 'cmake/gmxVersionInfo.cmake']
+ info_json = context.run_cmd(cmd, use_output=True)
+ values = json.loads(info_json)
+ context.set_version_info(values['version'], values['regressiontest-md5sum'])
regressiontests_path = context.workspace.get_project_dir(Project.REGRESSIONTESTS)
if context.job_type == JobType.RELEASE:
- # TODO: Consider using REGRESSIONTEST_DOWNLOAD here, after refactoring
- # it to make that possible. Or use some other mechanism to check the
- # MD5 of the regressiontests tarball (also taking into account the -dev
- # builds where the hardcoded value in gmxVersionInfo.cmake is not
- # accurate).
cmake_opts['REGRESSIONTEST_PATH'] = regressiontests_path
else:
if context.opts.mdrun_only:
--- /dev/null
+#
+# This file is part of the GROMACS molecular simulation package.
+#
+# Copyright (c) 2016, by the GROMACS development team, led by
+# Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
+# and including many others, as listed in the AUTHORS file in the
+# top-level source directory and at http://www.gromacs.org.
+#
+# GROMACS is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# as published by the Free Software Foundation; either version 2.1
+# of the License, or (at your option) any later version.
+#
+# GROMACS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GROMACS; if not, see
+# http://www.gnu.org/licenses, or write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# If you want to redistribute modifications to GROMACS, please
+# consider that scientific software is very special. Version
+# control is crucial - bugs must be traceable. We will be happy to
+# consider code for inclusion in the official distribution, but
+# derived work must not be called official GROMACS. Details are found
+# in the README & COPYING files - if they are missing, get the
+# official version at http://www.gromacs.org.
+#
+# To help us fund GROMACS development, we humbly ask that you cite
+# the research papers on the package. Check out http://www.gromacs.org.
+
+import json
+
+extra_options = {
+ 'md5sum': Option.string
+}
+
+def do_build(context):
+ info_path = 'cmake/gmxVersionInfo.cmake'
+ cmd = [context.env.cmake_command, '-P', info_path]
+ info_json = context.run_cmd(cmd, use_output=True)
+ values = json.loads(info_json)
+ old_md5sum = values['regressiontest-md5sum']
+ new_md5sum = context.opts.md5sum
+ if new_md5sum != old_md5sum:
+ context.replace_in_file(info_path, r'set\(REGRESSIONTEST_MD5SUM "(\w*)"',
+ lambda x: do_replacement(x, new_md5sum))
+ context.workspace.upload_revision(project=Project.GROMACS, file_glob=info_path)
+
+def do_replacement(match, new_md5sum):
+ result = match.group(0)
+ start = match.start(1) - match.start(0)
+ end = match.end(1) - match.end(0)
+ return result[:start] + new_md5sum + result[end:]
set(GMX_VERSION_STRING "${GMX_VERSION}${GMX_VERSION_SUFFIX}")
option(GMX_BUILD_TARBALL "Build tarball without -dev version suffix" OFF)
mark_as_advanced(GMX_BUILD_TARBALL)
-if (NOT SOURCE_IS_SOURCE_DISTRIBUTION AND NOT GMX_BUILD_TARBALL)
+# If run with cmake -P, the -dev suffix is managed elsewhere.
+if (NOT SOURCE_IS_SOURCE_DISTRIBUTION AND
+ NOT GMX_BUILD_TARBALL AND
+ NOT CMAKE_SCRIPT_MODE_FILE)
set(GMX_VERSION_STRING "${GMX_VERSION_STRING}-dev")
endif()
set(REGRESSIONTEST_VERSION "${GMX_VERSION_STRING}")
set(REGRESSIONTEST_BRANCH "refs/heads/release-2016")
-# TODO Find some way of ensuring that this is bumped appropriately for
-# each release. It's hard to test because it is only used for
-# REGRESSIONTEST_DOWNLOAD, which doesn't work until that tarball has
-# been placed on the server.
set(REGRESSIONTEST_MD5SUM "366438549270d005fa6def6e56ca0256" CACHE INTERNAL "MD5 sum of the regressiontests tarball")
math(EXPR GMX_VERSION_NUMERIC
"${GMX_VERSION_MAJOR}*10000 + ${GMX_VERSION_PATCH}")
set(GMX_API_VERSION ${GMX_VERSION_NUMERIC})
+# If run with cmake -P from releng scripts, print out necessary version info
+# as JSON.
+if (CMAKE_SCRIPT_MODE_FILE)
+ message("{ \"version\": \"${GMX_VERSION_STRING}\", \"regressiontest-md5sum\": \"${REGRESSIONTEST_MD5SUM}\" }")
+ return()
+endif()
+
#####################################################################
# git version info management
----------------
These builds can be triggered on request for certain changes in Gerrit, or
-manually from Jenkins.
+manually from Jenkins. See :ref:`releng-triggering-builds` for details on
+how to trigger these.
Coverage
^^^^^^^^
The build uses the source tarball build as a subbuild, and parts of the build
are executed using :file:`admin/builds/gromacs.py` and
:file:`admin/builds/documentation.py`.
+
+:file:`admin/builds/get-version-info.py` is used for getting the version
+information from the source tree as part of this workflow.
+
+:file:`admin/builds/update-regtest-hash.py` has logic to update the
+regressiontests tarball MD5 sum for the released tarball automatically.