mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Rework directory determination in CMake builds.
Sets paths for finding componenents depending on the state of ENABLE_BINRELOC, GNC_UNINSTALLED, GNC_BUILDDIR and whether any install paths have been set outside of CMAKE_INSTALL_PREFIX. GNUInstallDirs changes the name of CMAKE_INSTALL_LIBDIR depending on the operating system and distro. When CMAKE_INSTALL_PREFIX is /usr, /usr/local, or any subdirectory of /opt it also changes CMAKE_INSTALL_FULL_SYSCONFDIR to /etc. An earlier commit by Aaron Laws mirrors the name of CMAKE_INSTALL_LIBDIR to the build library directory. It's possible for builders to set any of the install directories anywhere they please. Setting any directory outside of CMAKE_INSTALL_PREFIX breaks Binreloc so the toplevel CMakeLists.txt now detects that and disables Binreloc. If Binreloc is enabled then all path queries use it to find paths. This works in the build directory because the gnucash executable and all of the test programs are in build_directory/bin and LIBDIR, DATADIR, and SYSCONFDIR can be found in the same root path. If Binreloc is disabled then in order to build or run programs from the build directory one must set GNC_UNINSTALLED and set GNC_BUILDDIR to the absolute path of the build directory. When those are set GNC_BUILDDIR replaces CMAKE_INSTALL_PREFIX in all paths that are subdirectories of CMAKE_INSTALL_PREFIX; paths that are not in CMAKE_INSTALL_PREFIX are appended whole to GNC_BUILDDIR. This process is constent between CMake and gnc_path_get_foo. GnuCash is unlikely to run from a DESTDIR without Binreloc.
This commit is contained in:
@@ -43,10 +43,19 @@ ADD_CUSTOM_TARGET(swig-runtime-h DEPENDS ${SWIG_RUNTIME_H})
|
||||
SET_SOURCE_FILES_PROPERTIES (gnc-guile-utils.c PROPERTIES OBJECT_DEPENDS ${SWIG_RUNTIME_H})
|
||||
|
||||
SET(prefix ${CMAKE_INSTALL_PREFIX})
|
||||
SET(datadir ${DATADIR})
|
||||
SET(bindir ${BINDIR})
|
||||
SET(libdir ${LIBDIR})
|
||||
SET(sysconfdir ${SYSCONFDIR})
|
||||
if(ENABLE_BINRELOC)
|
||||
SET(datadir ${DATADIR})
|
||||
SET(bindir ${BINDIR})
|
||||
SET(libdir ${LIBDIR})
|
||||
SET(sysconfdir ${SYSCONFDIR})
|
||||
SET(localedir ${LOCALEDIR})
|
||||
else()
|
||||
SET(datadir ${CMAKE_INSTALL_FULL_DATADIR})
|
||||
SET(bindir ${CMAKE_INSTALL_FULL_BINDIR})
|
||||
SET(libdir ${CMAKE_INSTALL_FULL_LIBDIR})
|
||||
SET(sysconfdir ${CMAKE_INSTALL_FULL_SYSCONFDIR})
|
||||
SET(localedir "${CMAKE_INSTALL_FULL_DATAROOTDIR}/locale")
|
||||
endif()
|
||||
GNC_CONFIGURE(gncla-dir.h.in gncla-dir.h)
|
||||
|
||||
### Create gnc-version.h ###
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
#ifndef __BINRELOC_C__
|
||||
#define __BINRELOC_C__
|
||||
#include <config.h>
|
||||
#include "gncla-dir.h"
|
||||
|
||||
#include <platform.h>
|
||||
#if PLATFORM(WINDOWS)
|
||||
@@ -53,7 +52,9 @@
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
#include "binreloc.h"
|
||||
#include "gnc-filepath-utils.h"
|
||||
#include <glib.h>
|
||||
#include "gncla-dir.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@@ -84,7 +85,7 @@ _br_find_exe (Gnc_GbrInitError *error)
|
||||
the current process */
|
||||
prefix = g_win32_get_package_installation_directory_of_module (NULL);
|
||||
result = g_build_filename (prefix,
|
||||
"bin", "gnucash.exe",
|
||||
BINDIR, "gnucash.exe",
|
||||
(char*)NULL);
|
||||
g_free (prefix);
|
||||
return result;
|
||||
@@ -385,13 +386,14 @@ gnc_gbr_find_exe_dir (const gchar *default_dir)
|
||||
* will be returned. If default_prefix is NULL, then NULL will be
|
||||
* returned.
|
||||
*/
|
||||
gchar *
|
||||
gnc_gbr_find_prefix (const gchar *default_prefix)
|
||||
|
||||
static inline gchar *
|
||||
get_mac_bundle_prefix()
|
||||
{
|
||||
#if defined ENABLE_BINRELOC && defined MAC_INTEGRATION
|
||||
gchar *id = gtkosx_application_get_bundle_id ();
|
||||
gchar *path = gtkosx_application_get_resource_path ();
|
||||
if (id == NULL)
|
||||
if (id == NULL)
|
||||
{
|
||||
gchar *dirname = g_path_get_dirname (path);
|
||||
g_free (path);
|
||||
@@ -400,9 +402,24 @@ gnc_gbr_find_prefix (const gchar *default_prefix)
|
||||
}
|
||||
g_free (id);
|
||||
return path;
|
||||
#else
|
||||
gchar *dir1, *dir2;
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline gchar*
|
||||
get_builddir_prefix()
|
||||
{
|
||||
if (g_getenv ("GNC_UNINSTALLED"))
|
||||
return g_strdup (g_getenv ("GNC_BUILDDIR"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gchar *
|
||||
gnc_gbr_find_prefix (const gchar *default_prefix)
|
||||
{
|
||||
gchar *dir1, *dir2;
|
||||
if ((dir2 = get_builddir_prefix()) || (dir2 = get_mac_bundle_prefix()))
|
||||
return dir2;
|
||||
if (exe == NULL)
|
||||
{
|
||||
/* BinReloc not initialized. */
|
||||
@@ -415,7 +432,6 @@ gnc_gbr_find_prefix (const gchar *default_prefix)
|
||||
dir2 = g_path_get_dirname (dir1);
|
||||
g_free (dir1);
|
||||
return dir2;
|
||||
#endif //ENABLE_BINRELOC && defined MAC_INTEGRATION
|
||||
}
|
||||
|
||||
|
||||
@@ -435,7 +451,7 @@ gnc_gbr_find_prefix (const gchar *default_prefix)
|
||||
gchar *
|
||||
gnc_gbr_find_bin_dir (const gchar *default_bin_dir)
|
||||
{
|
||||
gchar *prefix, *dir;
|
||||
gchar *prefix, *dir, *bindir;
|
||||
prefix = gnc_gbr_find_prefix (NULL);
|
||||
if (prefix == NULL)
|
||||
{
|
||||
@@ -445,47 +461,13 @@ gnc_gbr_find_bin_dir (const gchar *default_bin_dir)
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dir = g_build_filename (prefix, "bin", NULL);
|
||||
bindir = gnc_file_path_relative_part(PREFIX, BINDIR);
|
||||
dir = g_build_filename (prefix, bindir, NULL);
|
||||
g_free (bindir);
|
||||
g_free (prefix);
|
||||
return dir;
|
||||
}
|
||||
|
||||
|
||||
/** Locate the application's superuser binary folder.
|
||||
*
|
||||
* The path is generated by the following pseudo-code evaluation:
|
||||
* \code
|
||||
* prefix + "/sbin"
|
||||
* \endcode
|
||||
*
|
||||
* @param default_sbin_dir A default path which will used as fallback.
|
||||
* @return A string containing the sbin folder's path, which must be freed when
|
||||
* no longer necessary. If BinReloc is not initialized, or if the
|
||||
* initialization function failed, then a copy of default_sbin_dir will
|
||||
* be returned. If default_bin_dir is NULL, then NULL will be returned.
|
||||
*/
|
||||
gchar *
|
||||
gnc_gbr_find_sbin_dir (const gchar *default_sbin_dir)
|
||||
{
|
||||
gchar *prefix, *dir;
|
||||
|
||||
prefix = gnc_gbr_find_prefix (NULL);
|
||||
if (prefix == NULL)
|
||||
{
|
||||
/* BinReloc not initialized. */
|
||||
if (default_sbin_dir != NULL)
|
||||
return g_strdup (default_sbin_dir);
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dir = g_build_filename (prefix, "sbin", NULL);
|
||||
g_free (prefix);
|
||||
return dir;
|
||||
}
|
||||
|
||||
|
||||
/** Locate the application's data folder.
|
||||
*
|
||||
* The path is generated by the following pseudo-code evaluation:
|
||||
@@ -503,7 +485,7 @@ gnc_gbr_find_sbin_dir (const gchar *default_sbin_dir)
|
||||
gchar *
|
||||
gnc_gbr_find_data_dir (const gchar *default_data_dir)
|
||||
{
|
||||
gchar *prefix, *dir;
|
||||
gchar *prefix, *dir, *datadir;
|
||||
|
||||
prefix = gnc_gbr_find_prefix (NULL);
|
||||
if (prefix == NULL)
|
||||
@@ -515,12 +497,13 @@ gnc_gbr_find_data_dir (const gchar *default_data_dir)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dir = g_build_filename (prefix, "share", NULL);
|
||||
datadir = gnc_file_path_relative_part(PREFIX, DATADIR);
|
||||
dir = g_build_filename (prefix, datadir, NULL);
|
||||
g_free (datadir);
|
||||
g_free (prefix);
|
||||
return dir;
|
||||
}
|
||||
|
||||
|
||||
/** Locate the application's library folder.
|
||||
*
|
||||
* The path is generated by the following pseudo-code evaluation:
|
||||
@@ -537,7 +520,7 @@ gnc_gbr_find_data_dir (const gchar *default_data_dir)
|
||||
gchar *
|
||||
gnc_gbr_find_lib_dir (const gchar *default_lib_dir)
|
||||
{
|
||||
gchar *prefix, *dir;
|
||||
gchar *prefix, *dir, *libdir;
|
||||
|
||||
prefix = gnc_gbr_find_prefix (NULL);
|
||||
if (prefix == NULL)
|
||||
@@ -549,46 +532,13 @@ gnc_gbr_find_lib_dir (const gchar *default_lib_dir)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dir = g_build_filename (prefix, LIBDIR, NULL);
|
||||
libdir = gnc_file_path_relative_part(PREFIX, LIBDIR);
|
||||
dir = g_build_filename (prefix, libdir, NULL);
|
||||
g_free (libdir);
|
||||
g_free (prefix);
|
||||
return dir;
|
||||
}
|
||||
|
||||
|
||||
/** Locate the application's libexec folder.
|
||||
*
|
||||
* The path is generated by the following pseudo-code evaluation:
|
||||
* \code
|
||||
* prefix + "/libexec"
|
||||
* \endcode
|
||||
*
|
||||
* @param default_libexec_dir A default path which will used as fallback.
|
||||
* @return A string containing the libexec folder's path, which must be freed when
|
||||
* no longer necessary. If BinReloc is not initialized, or if the initialization
|
||||
* function failed, then a copy of default_libexec_dir will be returned.
|
||||
* If default_libexec_dir is NULL, then NULL will be returned.
|
||||
*/
|
||||
gchar *
|
||||
gnc_gbr_find_libexec_dir (const gchar *default_libexec_dir)
|
||||
{
|
||||
gchar *prefix, *dir;
|
||||
|
||||
prefix = gnc_gbr_find_prefix (NULL);
|
||||
if (prefix == NULL)
|
||||
{
|
||||
/* BinReloc not initialized. */
|
||||
if (default_libexec_dir != NULL)
|
||||
return g_strdup (default_libexec_dir);
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dir = g_build_filename (prefix, "libexec", NULL);
|
||||
g_free (prefix);
|
||||
return dir;
|
||||
}
|
||||
|
||||
|
||||
/** Locate the application's configuration files folder.
|
||||
*
|
||||
* The path is generated by the following pseudo-code evaluation:
|
||||
@@ -605,7 +555,7 @@ gnc_gbr_find_libexec_dir (const gchar *default_libexec_dir)
|
||||
gchar *
|
||||
gnc_gbr_find_etc_dir (const gchar *default_etc_dir)
|
||||
{
|
||||
gchar *prefix, *dir;
|
||||
gchar *prefix, *dir, *sysconfdir;
|
||||
|
||||
prefix = gnc_gbr_find_prefix (NULL);
|
||||
if (prefix == NULL)
|
||||
@@ -617,7 +567,9 @@ gnc_gbr_find_etc_dir (const gchar *default_etc_dir)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dir = g_build_filename (prefix, "etc", NULL);
|
||||
sysconfdir = gnc_file_path_relative_part(PREFIX, SYSCONFDIR);
|
||||
dir = g_build_filename (prefix, sysconfdir, NULL);
|
||||
g_free (sysconfdir);
|
||||
g_free (prefix);
|
||||
return dir;
|
||||
}
|
||||
|
||||
@@ -193,6 +193,14 @@ gnc_resolve_file_path (const gchar * filefrag)
|
||||
|
||||
}
|
||||
|
||||
gchar *gnc_file_path_relative_part (const gchar *prefix, const gchar *path)
|
||||
{
|
||||
std::string p{path};
|
||||
if (p.find(prefix) == 0)
|
||||
return g_strdup(p.substr(strlen(prefix)).c_str());
|
||||
return g_strdup(path);
|
||||
}
|
||||
|
||||
/* Searches for a file fragment paths set via GNC_DOC_PATH environment
|
||||
* variable. If this variable is not set, fall back to search in
|
||||
* - a html directory in the local user's gnucash settings directory
|
||||
|
||||
@@ -41,6 +41,14 @@
|
||||
*/
|
||||
gchar *gnc_resolve_file_path (const gchar *filefrag);
|
||||
|
||||
/** Given a prefix and a path return the relative portion of the path.
|
||||
* @param prefix The prefix that might be the first part of the path
|
||||
* @param path The path from which the prefix might be removed
|
||||
* @return a char* that must be g_freed containing the path without
|
||||
* the prefix if path begins with prefix, otherwise a copy of path.
|
||||
*/
|
||||
gchar *gnc_file_path_relative_part (const gchar *prefix, const gchar *path);
|
||||
|
||||
/** @brief Find an absolute path to a localized version of a given
|
||||
* relative path to a html or html related file.
|
||||
* If no localized version exists, an absolute path to the file
|
||||
|
||||
@@ -138,11 +138,16 @@ gchar *gnc_path_get_gtkbuilderdir()
|
||||
* @returns A newly allocated string. */
|
||||
gchar *gnc_path_get_localedir()
|
||||
{
|
||||
gchar *prefix = gnc_path_get_prefix();
|
||||
gchar *result = g_build_filename (prefix, LOCALE_DATADIRNAME, "locale", (char*)NULL);
|
||||
g_free (prefix);
|
||||
//printf("Returning localedir %s\n", result);
|
||||
return result;
|
||||
if (g_path_is_absolute (LOCALEDIR))
|
||||
return g_strdup(LOCALEDIR);
|
||||
else
|
||||
{
|
||||
gchar *prefix = gnc_path_get_prefix();
|
||||
gchar *result = g_build_filename (prefix, LOCALEDIR, (char*)NULL);
|
||||
g_free (prefix);
|
||||
//printf("Returning localedir %s\n", result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the accounts file path, usually
|
||||
|
||||
@@ -30,4 +30,4 @@
|
||||
#define BINDIR "@-bindir-@"
|
||||
#define LIBDIR "@-libdir-@"
|
||||
|
||||
#define LOCALE_DATADIRNAME "@-DATADIRNAME-@"
|
||||
#define LOCALEDIR "@-localedir-@"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
|
||||
set(MODULEPATH ${CMAKE_SOURCE_DIR}/libgnucash/core-utils)
|
||||
|
||||
SET(CORE_UTILS_TEST_INCLUDE_DIRS
|
||||
${CMAKE_BINARY_DIR}/common # for config.h
|
||||
${CMAKE_SOURCE_DIR}/libgnucash/core-utils
|
||||
${MODULEPATH}
|
||||
${CMAKE_SOURCE_DIR}/common/test-core
|
||||
${GLIB2_INCLUDE_DIRS}
|
||||
${GTK_MAC_INCLUDE_DIRS}
|
||||
@@ -27,5 +27,31 @@ IF (MAC_INTEGRATION)
|
||||
TARGET_COMPILE_DEFINITIONS(test-userdata-dir PRIVATE ${GTK_MAC_CFLAGS_OTHER})
|
||||
ENDIF(MAC_INTEGRATION)
|
||||
|
||||
SET_DIST_LIST(test_core_utils_DIST CMakeLists.txt Makefile.am test-gnc-glib-utils.c
|
||||
test-resolve-file-path.c test-userdata-dir.c test-userdata-dir-invalid-home.c)
|
||||
set(gtest_core_utils_INCLUDES
|
||||
${MODULEPATH}
|
||||
${CMAKE_BINARY_DIR}/common # for config.h
|
||||
${CMAKE_SOURCE_DIR}/common # for platform.h
|
||||
${CMAKE_BINARY_DIR}/libgnucash/core-utils # for gncla-dir.h
|
||||
${GLIB2_INCLUDE_DIRS}
|
||||
${GTEST_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
SET(gtest_core_utils_LIBS
|
||||
${GLIB2_LDFLAGS}
|
||||
${Boost_LIBRARIES}
|
||||
${GTHREAD_LDFLAGS}
|
||||
${GTEST_LIB})
|
||||
|
||||
set(test_gnc_path_util_SOURCES
|
||||
${MODULEPATH}/gnc-path.c
|
||||
${MODULEPATH}/binreloc.c
|
||||
${MODULEPATH}/gnc-filepath-utils.cpp
|
||||
gtest-path-utilities.cpp
|
||||
${GTEST_SRC})
|
||||
|
||||
gnc_add_test(test-gnc-path-util "${test_gnc_path_util_SOURCES}"
|
||||
gtest_core_utils_INCLUDES gtest_core_utils_LIBS "GNC_UNINSTALLED=yes")
|
||||
|
||||
SET_DIST_LIST(test_core_utils_DIST CMakeLists.txt Makefile.am
|
||||
test-gnc-glib-utils.c test-resolve-file-path.c test-userdata-dir.c
|
||||
test-userdata-dir-invalid-home.c gtest-path-utilities.cpp)
|
||||
|
||||
125
libgnucash/core-utils/test/gtest-path-utilities.cpp
Normal file
125
libgnucash/core-utils/test/gtest-path-utilities.cpp
Normal file
@@ -0,0 +1,125 @@
|
||||
extern "C"
|
||||
{
|
||||
#include <config.h>
|
||||
#include <glib.h>
|
||||
#include <gncla-dir.h>
|
||||
#include <gnc-path.h>
|
||||
#include <binreloc.h>
|
||||
#include <gnc-filepath-utils.h>
|
||||
}
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
struct PathTest : public testing::Test
|
||||
{
|
||||
PathTest() : m_prefix{nullptr} {}
|
||||
void SetUp()
|
||||
{
|
||||
#ifdef ENABLE_BINRELOC
|
||||
gnc_gbr_init(nullptr);
|
||||
#endif
|
||||
char *builddir = g_strdup(g_getenv("GNC_BUILDDIR"));
|
||||
if (builddir)
|
||||
m_prefix = builddir;
|
||||
else
|
||||
m_prefix = g_get_current_dir();
|
||||
}
|
||||
void TearDown()
|
||||
{
|
||||
if (m_prefix)
|
||||
g_free(m_prefix);
|
||||
}
|
||||
char *m_prefix;
|
||||
};
|
||||
|
||||
TEST_F(PathTest, gnc_path_get_prefix)
|
||||
{
|
||||
#ifdef ENABLE_BINRELOC
|
||||
EXPECT_STREQ(gnc_path_get_prefix(), m_prefix);
|
||||
#else
|
||||
g_setenv("GNC_UNINSTALLED", "1", TRUE);
|
||||
g_setenv("GNC_BUILDDIR", m_prefix, 1);
|
||||
EXPECT_STREQ(gnc_path_get_prefix(), m_prefix);
|
||||
g_unsetenv("GNC_UNINSTALLED");
|
||||
g_unsetenv("GNC_BUILDDIR");
|
||||
EXPECT_STREQ(gnc_path_get_prefix(), PREFIX);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST_F(PathTest, gnc_path_get_bindir)
|
||||
{
|
||||
gchar *dirname = gnc_file_path_relative_part(PREFIX, BINDIR);
|
||||
gchar *binpath = g_build_filename(m_prefix, dirname, NULL);
|
||||
g_free(dirname);
|
||||
#ifdef ENABLE_BINRELOC
|
||||
EXPECT_STREQ(gnc_path_get_bindir(), binpath);
|
||||
g_free(binpath);
|
||||
#else
|
||||
g_setenv("GNC_UNINSTALLED", "1", TRUE);
|
||||
g_setenv("GNC_BUILDDIR", m_prefix, 1);
|
||||
EXPECT_STREQ(gnc_path_get_bindir(), binpath);
|
||||
g_free(binpath);
|
||||
g_unsetenv("GNC_UNINSTALLED");
|
||||
g_unsetenv("GNC_BUILDDIR");
|
||||
EXPECT_STREQ(gnc_path_get_bindir(), BINDIR);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST_F(PathTest, gnc_path_get_libdir)
|
||||
{
|
||||
gchar *dirname = gnc_file_path_relative_part(PREFIX, LIBDIR);
|
||||
gchar *libpath = g_build_filename(m_prefix, dirname, NULL);
|
||||
g_free(dirname);
|
||||
#ifdef ENABLE_BINRELOC
|
||||
EXPECT_STREQ(gnc_path_get_libdir(), libpath);
|
||||
g_free(libpath);
|
||||
#else
|
||||
g_setenv("GNC_UNINSTALLED", "1", TRUE);
|
||||
g_setenv("GNC_BUILDDIR", m_prefix, 1);
|
||||
EXPECT_STREQ(gnc_path_get_libdir(), libpath);
|
||||
g_free(libpath);
|
||||
g_unsetenv("GNC_UNINSTALLED");
|
||||
g_unsetenv("GNC_BUILDDIR");
|
||||
EXPECT_STREQ(gnc_path_get_libdir(), LIBDIR);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST_F(PathTest, gnc_path_get_datadir)
|
||||
{
|
||||
gchar *dirname = gnc_file_path_relative_part(PREFIX, DATADIR);
|
||||
gchar *datapath = g_build_filename(m_prefix, dirname, NULL);
|
||||
g_free(dirname);
|
||||
#ifdef ENABLE_BINRELOC
|
||||
EXPECT_STREQ(gnc_path_get_datadir(), datapath);
|
||||
g_free(datapath);
|
||||
#else
|
||||
g_setenv("GNC_UNINSTALLED", "1", TRUE);
|
||||
g_setenv("GNC_BUILDDIR", m_prefix, 1);
|
||||
EXPECT_STREQ(gnc_path_get_datadir(), datapath);
|
||||
g_free(datapath);
|
||||
g_unsetenv("GNC_UNINSTALLED");
|
||||
g_unsetenv("GNC_BUILDDIR");
|
||||
EXPECT_STREQ(gnc_path_get_datadir(), DATADIR);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST_F(PathTest, gnc_path_get_sysconfdir)
|
||||
{
|
||||
gchar *dirname = gnc_file_path_relative_part(PREFIX, SYSCONFDIR);
|
||||
gchar *sysconfpath = g_build_filename(m_prefix, dirname, "gnucash", NULL);
|
||||
g_free(dirname);
|
||||
#ifdef ENABLE_BINRELOC
|
||||
EXPECT_STREQ(gnc_path_get_pkgsysconfdir(), sysconfpath);
|
||||
g_free(sysconfpath);
|
||||
#else
|
||||
g_setenv("GNC_UNINSTALLED", "1", TRUE);
|
||||
g_setenv("GNC_BUILDDIR", m_prefix, 1);
|
||||
EXPECT_STREQ(gnc_path_get_pkgsysconfdir(), sysconfpath);
|
||||
g_free(sysconfpath);
|
||||
g_unsetenv("GNC_UNINSTALLED");
|
||||
g_unsetenv("GNC_BUILDDIR");
|
||||
sysconfpath = g_build_filename(SYSCONFDIR, "gnucash", NULL);
|
||||
EXPECT_STREQ(gnc_path_get_pkgsysconfdir(), sysconfpath);
|
||||
g_free(sysconfpath);
|
||||
#endif
|
||||
}
|
||||
@@ -105,12 +105,7 @@ static char* get_default_module_dir(const char* rel_path)
|
||||
if (uninstalled)
|
||||
{
|
||||
#ifdef CMAKE_BUILD
|
||||
#ifdef WIN32
|
||||
#define MODULE_LIBDIR "bin"
|
||||
#else
|
||||
#define MODULE_LIBDIR LIBDIR "/gnucash"
|
||||
#endif
|
||||
pkglibdir = g_build_path (G_DIR_SEPARATOR_S, builddir, MODULE_LIBDIR, NULL);
|
||||
pkglibdir = gnc_path_get_pkglibdir ();
|
||||
#else
|
||||
if (rel_path)
|
||||
pkglibdir = g_build_path (G_DIR_SEPARATOR_S, builddir,
|
||||
|
||||
Reference in New Issue
Block a user