aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-08-28 12:55:33 +0200
committerDan Engelbrecht <[email protected]>2024-09-18 10:43:36 +0200
commitf8398bea9f3b5e7ccd1ba4134fa75976da8b7545 (patch)
tree10a79211117a6ff416b4e6867af73ace9a7a6656 /src
parentmore WIP (diff)
downloadzen-f8398bea9f3b5e7ccd1ba4134fa75976da8b7545.tar.xz
zen-f8398bea9f3b5e7ccd1ba4134fa75976da8b7545.zip
launchd plist install
Diffstat (limited to 'src')
-rw-r--r--src/zen/cmds/service_cmd.h2
-rw-r--r--src/zenstore/cache/cachedisklayer.cpp4
-rw-r--r--src/zenutil/service.cpp19
3 files changed, 18 insertions, 7 deletions
diff --git a/src/zen/cmds/service_cmd.h b/src/zen/cmds/service_cmd.h
index d61748421..15273e952 100644
--- a/src/zen/cmds/service_cmd.h
+++ b/src/zen/cmds/service_cmd.h
@@ -25,7 +25,7 @@ private:
std::string m_Verb; // create, info, remove
- std::string m_ServiceName = "Unreal Zen Storage";
+ std::string m_ServiceName = "ZenServer";
cxxopts::Options m_StatusOptions{"status", "Show information about an installed zenserver service"};
diff --git a/src/zenstore/cache/cachedisklayer.cpp b/src/zenstore/cache/cachedisklayer.cpp
index 110acba9e..21ccf2ec8 100644
--- a/src/zenstore/cache/cachedisklayer.cpp
+++ b/src/zenstore/cache/cachedisklayer.cpp
@@ -532,8 +532,8 @@ BucketManifestSerializer::ReadSidecarFile(RwLock::ExclusiveLockScope& B
auto InvalidGuard = MakeGuard([&] { ZEN_WARN("skipping invalid sidecar file '{}'", SidecarPath); });
if (FileSize < sizeof(BucketMetaHeader))
- {
- ZEN_WARN("Failed to read sidecar file '{}'. Minimum size {} expected, actual size: ",
+ {
+ ZEN_WARN("Failed to read sidecar file '{}'. Minimum size {} expected, actual size: ",
SidecarPath,
sizeof(BucketMetaHeader),
FileSize);
diff --git a/src/zenutil/service.cpp b/src/zenutil/service.cpp
index cce154988..8ac35d969 100644
--- a/src/zenutil/service.cpp
+++ b/src/zenutil/service.cpp
@@ -11,6 +11,9 @@
#endif
#if ZEN_PLATFORM_MAC
# include <zencore/filesystem.h>
+
+# include <unistd.h>
+# include <sys/stat.h>
#endif
namespace zen {
@@ -137,9 +140,9 @@ namespace {
ExtendableStringBuilder<256> ProgramArguments;
for (const std::string_view Argument : Arguments)
{
- ProgramArguments.Append("<string>\n");
+ ProgramArguments.Append(" <string>");
AppendEscaped(Argument, ProgramArguments);
- ProgramArguments.Append("\n</string>\n");
+ ProgramArguments.Append("</string>\n");
}
return fmt::format(
@@ -152,7 +155,7 @@ namespace {
" <key>ProgramArguments</key>\n"
" <array>\n"
" <string>{}</string>\n" // Program name
- " {}" // "<string>arg</string>\n" * number of arguments
+ "{}" // "<string>arg</string>\n" * number of arguments
" </array>\n"
" <key>KeepAlive</key>\n"
" <true/>\n"
@@ -526,13 +529,21 @@ InstallService(const std::filesystem::path& ExecutablePath,
std::string_view ServiceDescription)
{
std::filesystem::path SymLink = std::filesystem::path("/usr/local/libexec") / ExecutablePath.filename();
+ ZEN_INFO("Attempting synlink from {} to {}", ExecutablePath.string(), SymLink.string());
if (symlink(ExecutablePath.c_str(), SymLink.c_str()) == -1)
{
return MakeErrorCodeFromLastError();
}
std::string DaemonName = fmt::format("com.epicgames.unreal.{}", ServiceName);
std::string PList = BuildPlist(ExecutablePath, CommandLineOptions, DaemonName, ServiceDisplayName, ServiceDescription, true);
- zen::WriteFile(std::filesystem::path("/Library/LaunchDaemons") / (DaemonName + ".plist"), IoBuffer(PList.data(), PList.size()));
+ std::filesystem::path PListPath = std::filesystem::path("/Library/LaunchDaemons") / (DaemonName + ".plist");
+ ZEN_INFO("Writing launchd plist to {}", PListPath.string());
+ zen::WriteFile(PListPath, IoBuffer(IoBuffer::Wrap, PList.data(), PList.size()));
+ ZEN_INFO("Changing permissions to 0555 for {}", PListPath.string());
+ if (chmod(PListPath.c_str(), 0555) == -1)
+ {
+ return MakeErrorCodeFromLastError();
+ }
return {};
}