Merge pull request #1620 from RosettaCommons/roccomoretti/normalize_singletons
Normalize Singletons
Singletons in Rosetta should derive from utility::SingletonBase. This centralizes the singleton logic, so we can make sure it's threadsafe, etc. It also labels them clearly, so we can keep track of the classes with Global state, and make sure they're not doing anything they're not supposed to.
There were a number of singleton classes in Rosetta that hadn't yet been converted to the SingletonBase scheme which I noticed during the fixes for pull request #1604. (This is an offshoot of that branch.) This converts most of them to the new scheme.
notify author
notify list [rosetta-logs@googlegroups.com]
Merge pull request #1643 from RosettaCommons/roccomoretti/fix_option_space_parsing
Fix option space parsing regression
A feature used relatively frequently by the Meiler Lab in ligand docking is the ability to concatenate PDBs by quoting. e.g. -s "protein.pdb ligand.pdb" instead of manually concatenating the two PDBs into a single-file complex.
A recent change to the option system broke this functionality. (It would also break other situations where you'd have a space in a file name.) Surprisingly, the functionality appears not to have been tested.
This commit restores the previous behavior, as well as adding tests to confirm the functionality is preserved.
notify author
notify list [rosetta-logs@googlegroups.com]
Merge pull request #1640 from RosettaCommons/vmullig/cyclic_cart2
Splitting cyclic Cartesian pull request so that I can merge in the stuff that IS working now.
I'm still having trouble with symmetric glycine minimization, for reasons to be determined. This pull request will merge in fixes to the following:
- Using cart_bonded with cyclic geometry.
- Using cart_bonded with D-amino acids.
- Unit test coverage for cart_bonded with cyclic geometry and D-amino acids.
Tests of symmetric glycine minimization are temporarily commented out.
notify author
notify list [rosetta-logs@googlegroups.com]
Merge pull request #1633 from RosettaCommons/roccomoretti/sanitize
Add compiler "sanitizer" error-checking builds to Rosetta
Recent versions of Clang and GCC have "sanitizer" options which will compile with extra instrumentation to catch various dodgy dealings. I've added Scons modes (not extras) for three of the santizers.
* mode=addsan The AddresSanitizer which detects memory errors, such as trying to access memory you're not supposed to. This includes the LeakSanitizer, which catches memory leaks.
* mode=ubsan The UndefinedBehaviorSanitizer catches instances where you're doing certain things in the code which are "undefined behavior" according to the C++11 standard.
* mode=memsan The MemorySanitizer attempts to detect uninitialized reads. (Like Valgrind.) -- This is not (yet?) supported under GCC, and is only of minimal use with Clang, as you also need to have a special compilation of the C++ standard library. I include it for the intrepid.
Testing for addsan/memsan/ubsan errors is easy - simply run unit or integration tests with the build for the appropriate "mode" (using a recent compiler which supports them). If an error is encountered, a message will be printed to stdout, and the test will "crash" in a way that's recognizable to the testing system. (The leak detection of addsan, which prints but does not cause an error-code exit.) Debugging of ubsan errors is easier if you first set the UBSAN_OPTIONS=print_stacktrace=1 environment variable prior to running the tests.
This pull request also contains some "low hanging fruit" fixes for errors in addsan and ubsan builds.
continuous_sewing_hasher and discontinuous_sewing_hasher integration test changes expected, as they were over-writing log files
notify author
notify list [rosetta-logs@googlegroups.com]
Merge pull request #1638 from RosettaCommons/Cyrus/mergetarget
From Steven Lewis:
99% of this is a refactor of the coupled_moves application into a protocol-scale Mover (so it has both a protocol Mover and a small-scale Mover), so that the whole protocol can be called by other code. This will be of interest to @kylebarlow and @nollikai .
There are expected integration test changes to the coupled_moves test, as its tracer changes from apps to protocols. If you account for that (cat ref/coupled_moves/log_* | sed 's/^apps.c//' > tmp1; cat new/coupled_moves/log_* | sed 's/^protocols.c//' > tmp2; diff tmp1 tmp2 you will see that the only change is the addition of a "don*e" marker at the end of the application.
1% of this is a trivial typo fix in ExtendChainMover, which will probably disinterest @tlinsky .
notify author
notify list [rosetta-logs@googlegroups.com]