Kirill, ports, While searching for where getexecpath can/should be used, I found this here in libggml. This diff should replicate what is done on other platforms by their idiosyncratic methods (_NSGetExecutablePath, procfs). It builds, but I don't really know how to use this library. Could maybe use a test run. Index: Makefile =================================================================== RCS file: /cvs/ports/devel/libggml/Makefile,v diff -u -p -r1.27 Makefile --- Makefile 15 Sep 2026 19:31:59 -0000 1.27 +++ Makefile 18 Sep 2026 20:21:58 -0000 @@ -4,6 +4,7 @@ GH_ACCOUNT= ggml-org GH_PROJECT= ggml GH_TAGNAME = v0.24.0 PKGNAME= lib${DISTNAME} +REVISION = 0 SHARED_LIBS += ggml 5.1 SHARED_LIBS += ggml-base 5.1 Index: patches/patch-src_ggml-backend-reg_cpp =================================================================== RCS file: /cvs/ports/devel/libggml/patches/patch-src_ggml-backend-reg_cpp,v diff -u -p -r1.8 patch-src_ggml-backend-reg_cpp --- patches/patch-src_ggml-backend-reg_cpp 4 Sep 2026 22:27:19 -0000 1.8 +++ patches/patch-src_ggml-backend-reg_cpp 18 Sep 2026 20:21:58 -0000 @@ -1,13 +1,23 @@ +getexecpath + Index: src/ggml-backend-reg.cpp --- src/ggml-backend-reg.cpp.orig +++ src/ggml-backend-reg.cpp -@@ -489,7 +489,9 @@ static ggml_backend_reg_t ggml_backend_load_best(const - search_paths.push_back(fs::u8path(GGML_BACKEND_DIR)); +@@ -456,6 +456,17 @@ static fs::path get_executable_path() { + base_path = base_path.substr(0, last_slash); + } + return base_path + L"\\"; ++#elif defined(__OpenBSD__) ++ std::vector<char> path(PATH_MAX); ++ if (getexecpath(path.data(), path.size()) != 0) ++ return {}; ++ std::string base_path(path.data(), path.size()); ++ // remove executable name ++ auto last_slash = base_path.find_last_of('/'); ++ if (last_slash != std::string::npos) { ++ base_path = base_path.substr(0, last_slash); ++ } ++ return base_path + "/"; + #else + return {};
No comments:
Post a Comment