mirror of
https://github.com/nomic-ai/gpt4all.git
synced 2025-06-27 15:58:25 +00:00
Make installers work with mac/windows for big backend change.
This commit is contained in:
parent
6c4e1f4a2a
commit
3cd7d2f3c7
@ -8,6 +8,7 @@
|
|||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
std::string LLModel::m_implementations_search_path = ".";
|
std::string LLModel::m_implementations_search_path = ".";
|
||||||
|
|
||||||
@ -75,26 +76,30 @@ const std::vector<LLModel::Implementation> &LLModel::implementationList() {
|
|||||||
static auto* libs = new std::vector<LLModel::Implementation>([] () {
|
static auto* libs = new std::vector<LLModel::Implementation>([] () {
|
||||||
std::vector<LLModel::Implementation> fres;
|
std::vector<LLModel::Implementation> fres;
|
||||||
|
|
||||||
auto search_in_directory = [&](const std::filesystem::path& path) {
|
auto search_in_directory = [&](const std::string& paths) {
|
||||||
// Iterate over all libraries
|
std::stringstream ss(paths);
|
||||||
for (const auto& f : std::filesystem::directory_iterator(path)) {
|
std::string path;
|
||||||
const std::filesystem::path& p = f.path();
|
// Split the paths string by the delimiter and process each path.
|
||||||
if (p.extension() != LIB_FILE_EXT) continue;
|
while (std::getline(ss, path, ';')) {
|
||||||
// Add to list if model implementation
|
std::filesystem::path fs_path(path);
|
||||||
try {
|
// Iterate over all libraries
|
||||||
Dlhandle dl(p.string());
|
for (const auto& f : std::filesystem::directory_iterator(fs_path)) {
|
||||||
if (!Implementation::isImplementation(dl)) {
|
const std::filesystem::path& p = f.path();
|
||||||
continue;
|
if (p.extension() != LIB_FILE_EXT) continue;
|
||||||
}
|
// Add to list if model implementation
|
||||||
fres.emplace_back(Implementation(std::move(dl)));
|
try {
|
||||||
} catch (...) {}
|
Dlhandle dl(p.string());
|
||||||
|
if (!Implementation::isImplementation(dl)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
fres.emplace_back(Implementation(std::move(dl)));
|
||||||
|
} catch (...) {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
search_in_directory(m_implementations_search_path);
|
search_in_directory(m_implementations_search_path);
|
||||||
#if defined(__APPLE__)
|
|
||||||
search_in_directory("../../../");
|
|
||||||
#endif
|
|
||||||
return fres;
|
return fres;
|
||||||
}());
|
}());
|
||||||
// Return static result
|
// Return static result
|
||||||
|
@ -180,7 +180,8 @@ int32_t llmodel_threadCount(llmodel_model model);
|
|||||||
/**
|
/**
|
||||||
* Set llmodel implementation search path.
|
* Set llmodel implementation search path.
|
||||||
* Default is "."
|
* Default is "."
|
||||||
* @param path The path to the llmodel implementation shared objects.
|
* @param path The path to the llmodel implementation shared objects. This can be a single path or
|
||||||
|
* a list of paths separated by ';' delimiter.
|
||||||
*/
|
*/
|
||||||
void llmodel_set_implementation_search_path(const char *path);
|
void llmodel_set_implementation_search_path(const char *path);
|
||||||
|
|
||||||
|
@ -2,9 +2,15 @@ set(MACDEPLOYQT "@MACDEPLOYQT@")
|
|||||||
set(COMPONENT_NAME_MAIN "@COMPONENT_NAME_MAIN@")
|
set(COMPONENT_NAME_MAIN "@COMPONENT_NAME_MAIN@")
|
||||||
set(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
set(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
||||||
execute_process(COMMAND ${MACDEPLOYQT} ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app -qmldir=${CMAKE_CURRENT_SOURCE_DIR} -verbose=2)
|
execute_process(COMMAND ${MACDEPLOYQT} ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app -qmldir=${CMAKE_CURRENT_SOURCE_DIR} -verbose=2)
|
||||||
file(GLOB MYLAMALIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/libllama.*)
|
file(GLOB MYGPTJLIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/libgptj*)
|
||||||
|
file(GLOB MYMPTLIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/libmpt*)
|
||||||
|
file(GLOB MYLLAMALIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/libllama*)
|
||||||
file(GLOB MYLLMODELLIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/libllmodel.*)
|
file(GLOB MYLLMODELLIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/libllmodel.*)
|
||||||
file(COPY ${MYLAMALIBS}
|
file(COPY ${MYGPTJLIBS}
|
||||||
|
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app/Contents/Frameworks)
|
||||||
|
file(COPY ${MYMPTLIBS}
|
||||||
|
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app/Contents/Frameworks)
|
||||||
|
file(COPY ${MYLLAMALIBS}
|
||||||
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app/Contents/Frameworks)
|
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app/Contents/Frameworks)
|
||||||
file(COPY ${MYLLMODELLIBS}
|
file(COPY ${MYLLMODELLIBS}
|
||||||
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app/Contents/Frameworks)
|
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app/Contents/Frameworks)
|
||||||
|
@ -2,9 +2,15 @@ set(WINDEPLOYQT "@WINDEPLOYQT@")
|
|||||||
set(COMPONENT_NAME_MAIN "@COMPONENT_NAME_MAIN@")
|
set(COMPONENT_NAME_MAIN "@COMPONENT_NAME_MAIN@")
|
||||||
set(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
set(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
||||||
execute_process(COMMAND ${WINDEPLOYQT} --qmldir ${CMAKE_CURRENT_SOURCE_DIR} ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin)
|
execute_process(COMMAND ${WINDEPLOYQT} --qmldir ${CMAKE_CURRENT_SOURCE_DIR} ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin)
|
||||||
file(GLOB MYLAMALIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/*llama.*)
|
file(GLOB MYGPTJLIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/*gptj.*)
|
||||||
|
file(GLOB MYMPTLIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/*mpt.*)
|
||||||
|
file(GLOB MYLLAMALIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/*llama.*)
|
||||||
file(GLOB MYLLMODELLIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/*llmodel.*)
|
file(GLOB MYLLMODELLIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/*llmodel.*)
|
||||||
file(COPY ${MYLAMALIBS}
|
file(COPY ${MYGPTJLIBS}
|
||||||
|
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin)
|
||||||
|
file(COPY ${MYMPTLIBS}
|
||||||
|
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin)
|
||||||
|
file(COPY ${MYLLAMALIBS}
|
||||||
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin)
|
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin)
|
||||||
file(COPY ${MYLLMODELLIBS}
|
file(COPY ${MYLLMODELLIBS}
|
||||||
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin)
|
DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin)
|
||||||
|
@ -25,6 +25,13 @@ LLM::LLM()
|
|||||||
, m_serverEnabled(false)
|
, m_serverEnabled(false)
|
||||||
, m_compatHardware(true)
|
, m_compatHardware(true)
|
||||||
{
|
{
|
||||||
|
QString llmodelSearchPaths = QCoreApplication::applicationDirPath();
|
||||||
|
#if defined(Q_OS_MAC)
|
||||||
|
llmodelSearchPaths += ";" + QCoreApplication::applicationDirPath() + "../../../";
|
||||||
|
llmodelSearchPaths += ";" + QCoreApplication::applicationDirPath() + "../Frameworks/";
|
||||||
|
#endif
|
||||||
|
LLModel::setImplementationsSearchPath(llmodelSearchPaths.toStdString());
|
||||||
|
|
||||||
connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit,
|
connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit,
|
||||||
this, &LLM::aboutToQuit);
|
this, &LLM::aboutToQuit);
|
||||||
connect(this, &LLM::serverEnabledChanged,
|
connect(this, &LLM::serverEnabledChanged,
|
||||||
|
Loading…
Reference in New Issue
Block a user