[SERVER-17329] Improve management of server version in build system Created: 19/Feb/15 Updated: 04/Nov/15 Resolved: 21/May/15 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Build |
| Affects Version/s: | None |
| Fix Version/s: | 3.0.5, 3.1.4 |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Andrew Morrow (Inactive) | Assignee: | Jonathan Reams |
| Resolution: | Done | Votes: | 2 |
| Labels: | build-planning | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||
| Backwards Compatibility: | Minor Change | ||||||||||||||||||||||||||||||||
| Backport Completed: | |||||||||||||||||||||||||||||||||
| Sprint: | BUILD 0 3/13/15, BUILD 2 04/24/15, BUILD 4 06/05/15 | ||||||||||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||||||||||
| Description |
|
The mechanism by which the logical version number and git hash propagates into build artifacts has several deficiencies and adverse consequences. By improving this system, we can simplify the build process, and lead to simpler to issue releases. The following pieces of information are automatically determined inputs into the versioning subsystem:
Additionally, the actual version string (like 3.1.0-pre) is hard coded into the following files:
At build time, all of these pieces of information are fed to custom SCons command in SConscript.buildinfo, which generates a buildinfo.cpp file into the current SCons variant dir, containing interpolated values. This buildinfo.cpp file is then compiled, along with util/version.cpp into a low level library called $BUILD_DIR/mongo/version.a. The information available from the synthesis of these files is made available via the util/version.h file, as well as by the util/version_reporting.h header, which provides an overlapping set of versioning functions. The implementation of the logical versioning functionality is itself split across the buildinfo.cpp file, the version.cpp file, and the version_reporting.cpp file. This organization has the following consequences:
To address these issues, we should overhaul this entire system. Roughly:
Overall, making changes along the lines outlined above would simplify the BUMP and post process, clean up the relationship between the various versioning artifacts, speed up developer builds, improve the automation of packaging, and reduce our use of custom code generation that duplicates existing SCons features. |
| Comments |
| Comment by Githook User [ 15/Jul/15 ] | ||||||||||
|
Author: {u'username': u'ehershey', u'name': u'Ernie Hershey', u'email': u'ernie.hershey@10gen.com'}Message: Use version.json to verify 3.0 versions now that | ||||||||||
| Comment by Daniel Pasette (Inactive) [ 14/Jul/15 ] | ||||||||||
|
This was committed to v3.0 here:
and here:
| ||||||||||
| Comment by Ernie Hershey [ 16/Jun/15 ] | ||||||||||
|
Jonathan and I just talked about backporting this - 3.0 for sure and Jonathan will figure out how hard/sensible backporting to 2.6 would be. | ||||||||||
| Comment by Githook User [ 21/May/15 ] | ||||||||||
|
Author: {u'username': u'jbreams', u'name': u'Jonathan Reams', u'email': u'jbreams@mongodb.com'}Message: | ||||||||||
| Comment by Githook User [ 10/Mar/15 ] | ||||||||||
|
Author: {u'username': u'acmorrow', u'name': u'Andrew Morrow', u'email': u'acm@mongodb.com'}Message: | ||||||||||
| Comment by Githook User [ 09/Mar/15 ] | ||||||||||
|
Author: {u'username': u'acmorrow', u'name': u'Andrew Morrow', u'email': u'acm@mongodb.com'}Message: |