From 9cf4310d39c12eb5c0f58d40b28f2cce72e2df6a Mon Sep 17 00:00:00 2001 From: DecDuck Date: Sun, 26 Jan 2025 23:55:09 +1100 Subject: [PATCH] feat: add instructions on building for other platforms --- docs/.vitepress/config.mts | 9 ++++- docs/advanced/building.md | 79 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 docs/advanced/building.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index bc619b9..81464be 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -9,7 +9,8 @@ export default defineConfig({ themeConfig: { logo: "/drop.svg", footer: { - message: "If you have any suggestions to update this wiki, please submit them on our GitHub", + message: + "If you have any suggestions to update this wiki, please submit them on our GitHub", }, // https://vitepress.dev/reference/default-theme-config @@ -45,6 +46,12 @@ export default defineConfig({ text: "Metadata", items: [{ text: "GiantBomb", link: "/metadata/giantbomb" }], }, + { + text: "Advanced", + items: [ + { text: "Building for other platforms", link: "/advanced/building" }, + ], + }, { text: "Documentation", items: [{ text: "Library", link: "/docs/library" }], diff --git a/docs/advanced/building.md b/docs/advanced/building.md new file mode 100644 index 0000000..0145f5c --- /dev/null +++ b/docs/advanced/building.md @@ -0,0 +1,79 @@ +# Building Drop server for other platforms + +Unfortunately, we don't have the time or resources to build and debug our software for platforms other than x86-64. However, we offer this guide as a way to get it running, at your own risk. + +## Prerequisites + +To compile: + +- Rust (stable) +- Node.js v20 +- `yarn` (v1/legacy) package manager +- `git` VCS +- Docker + +To run: + +- Docker + +## Building `droplet` + +`droplet` is a high-performance utility package for the Drop server. It's a `napi.rs` module, meaning it's written in Rust and then compiled to an NPM module. + +Get started by cloning the `droplet` source code, and then enter the directory: + +```shell +git clone https://github.com/Drop-OSS/droplet.git +``` + +Install the dependencies with `yarn`: + +```shell +yarn +``` + +And then compile the package with the build script: + +```shell +yarn build +``` + +Because we're building this locally, setup the yarn link so we can use this package while building the server: + +```shell +yarn link +``` + +## Building `drop` + +`drop` is the self hosted server. It's a Nuxt 3 project, but depends on the `droplet` package so isn't easily transportable. + +Get started by cloning the `drop` source code, and then enter the directory: + +```shell +git clone https://github.com/Drop-OSS/drop.git +``` + +Then, link your build `droplet` package: + +```shell +yarn link "@drop/droplet" +``` + +Then, install dependencies: + +```shell +yarn +``` + +Then, build the application: + +``` +yarn build +``` + +To package it into a Docker container, remove the build commands in the provided `Dockerfile`'s build-system (`yarn install` and `yarn build`), and then build the Docker image: + +```shell +docker build . -t drop +```