diff options
| author | Dan Engelbrecht <[email protected]> | 2024-08-28 12:55:33 +0200 |
|---|---|---|
| committer | Dan Engelbrecht <[email protected]> | 2024-09-18 10:43:36 +0200 |
| commit | f8398bea9f3b5e7ccd1ba4134fa75976da8b7545 (patch) | |
| tree | 10a79211117a6ff416b4e6867af73ace9a7a6656 /src | |
| parent | more WIP (diff) | |
| download | zen-f8398bea9f3b5e7ccd1ba4134fa75976da8b7545.tar.xz zen-f8398bea9f3b5e7ccd1ba4134fa75976da8b7545.zip | |
launchd plist install
Diffstat (limited to 'src')
| -rw-r--r-- | src/zen/cmds/service_cmd.h | 2 | ||||
| -rw-r--r-- | src/zenstore/cache/cachedisklayer.cpp | 4 | ||||
| -rw-r--r-- | src/zenutil/service.cpp | 19 |
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 {}; } |