You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As I didn't find a way of relocating CHAP after compilation, I added a basic one that may prove useful for other people. It enables a user to compile CHAP and install it wherever he wants (that's he normal workflow) and then move the install directory to another place.
--- chap-version_0_9_1/include/config/config.hpp.orig 2018-05-02 13:22:36.000000000 +0200
+++ chap-version_0_9_1/include/config/config.hpp 2019-12-09 12:20:15.276330444 +0100
@@ -25,6 +25,7 @@
#ifndef CONFIG_HPP
#define CONFIG_HPP
+#include <cstdlib>
#include <string>
#include <gromacs/utility/programcontext.h>
@@ -38,7 +39,12 @@
extern "C" inline std::string
chapInstallBase()
{
- return std::string(g_CHAP_INSTALL_BASE);
+ const char* e_CHAP_INSTALL_BASE = std::getenv("CHAP_INSTALL_BASE");
+ if ( e_CHAP_INSTALL_BASE != NULL) {
+ return std::string(e_CHAP_INSTALL_BASE);
+ } else {
+ return std::string(g_CHAP_INSTALL_BASE);
+ }
}
--- chap-version_0_9_1/src/main.cpp.orig 2018-05-02 13:22:36.000000000 +0200
+++ chap-version_0_9_1/src/main.cpp 2019-12-11 20:41:44.217021435 +0100
@@ -21,6 +21,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
+#include <limits.h>
#include <vector>
@@ -33,6 +34,20 @@
int main(int argc, char **argv)
{
+ char buf[PATH_MAX];
+ readlink("/proc/self/exe", buf, PATH_MAX - 1);
+
+ // CHAP full binary path
+ std::string fbp(buf);
+ // CHAP install base path
+ std::string ibp = fbp.substr(0, fbp.rfind("/bin/"));
+ // GROMACS GMXLIB path
+ std::string ggp = ibp + "/share/gromacs/top";
+
+ // set environement variables
+ setenv("CHAP_INSTALL_BASE", ibp.c_str(), 0);
+ setenv("GMXLIB", ggp.c_str(), 0);
+
// print front matter:
FrontMatter::print();
Incidentally, I also removed the hardcoded '/chap/' sub-directory because it is more usefull to install a program directly in the prefix provided by the user instead of adding a sub-directory inside that prefix.
--- chap-version_0_9_1/CMakeLists.txt.orig 2018-05-02 13:22:36.000000000 +0200
+++ chap-version_0_9_1/CMakeLists.txt 2019-12-06 21:41:00.975176714 +0100
@@ -175,9 +175,9 @@
#------------------------------------------------------------------------------
# where to install executable on the system:
-install(TARGETS chap DESTINATION ${CMAKE_INSTALL_PREFIX}/chap/bin)
+install(TARGETS chap DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
# also install data and scripts:
-install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/share DESTINATION ${CMAKE_INSTALL_PREFIX}/chap)
-install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scripts DESTINATION ${CMAKE_INSTALL_PREFIX}/chap USE_SOURCE_PERMISSIONS)
+install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/share DESTINATION ${CMAKE_INSTALL_PREFIX})
+install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scripts DESTINATION ${CMAKE_INSTALL_PREFIX} USE_SOURCE_PERMISSIONS)
--- chap-version_0_9_1/src/trajectory-analysis/chap_trajectory_analysis.cpp.orig 2018-05-02 13:22:36.000000000 +0200
+++ chap-version_0_9_1/src/trajectory-analysis/chap_trajectory_analysis.cpp 2019-12-09 13:52:36.745685228 +0100
@@ -708,7 +708,7 @@
// base path to location of van-der-Waals radius databases:
std::string radiusFilePath = chapInstallBase() +
- std::string("/chap/share/data/vdwradii/");
+ std::string("/share/data/vdwradii/");
// select appropriate database file:
if( pfVdwRadiusDatabase_ == eVdwRadiusDatabaseHoleAmberuni )
@@ -779,7 +779,7 @@
// base path to location of hydrophobicity databases:
std::string hydrophobicityFilePath = chapInstallBase() +
- std::string("/chap/share/data/hydrophobicity/");
+ std::string("/share/data/hydrophobicity/");
// select appropriate database file:
if( hydrophobicityDatabase_ == eHydrophobicityDatabaseHessa2005 )
@@ -1921,7 +1921,7 @@
// load colour palettes from JSON file:
std::string paletteFilePath = chapInstallBase() +
- std::string("/chap/share/data/palettes/");
+ std::string("/share/data/palettes/");
std::string paletteFileName = paletteFilePath + "default.json";
auto palettes = ColourPaletteProvider::fromJsonFile(paletteFileName);
Hi Inniag,
As I didn't find a way of relocating CHAP after compilation, I added a basic one that may prove useful for other people. It enables a user to compile CHAP and install it wherever he wants (that's he normal workflow) and then move the install directory to another place.
Incidentally, I also removed the hardcoded '/chap/' sub-directory because it is more usefull to install a program directly in the prefix provided by the user instead of adding a sub-directory inside that prefix.
I hope that will prove usefull,
Cheers.
PS: Patch file with all the previous code :
version_0_9_1_relocation.patch.txt
The text was updated successfully, but these errors were encountered: