Skip to content
This repository was archived by the owner on Aug 19, 2026. It is now read-only.

Latest commit

 

History

History
138 lines (103 loc) · 4.6 KB

File metadata and controls

138 lines (103 loc) · 4.6 KB

Development setup and migration

This guide recreates the public LunarView development tree on another computer. It never logs in to a BMC and does not transfer credentials, session material, private captures, proprietary JViewer files, or decompiler output.

What GitHub contains

The repository contains the C++ sources, tests, sanitized research scripts, protocol documentation, build configuration, and public resources. The following machine-local content is deliberately excluded:

  • build*, compiler output, test logs, and IDE caches;
  • .local/, including the bootstrap-managed vcpkg checkout and built packages;
  • docs/captures/private/ and packet/session captures;
  • research/decompiled/, research/third-party/, downloaded JDKs, and decompiler binaries;
  • .env*, profiles, credentials, private keys, JNLP files, and legacy proprietary JAR/JNI artifacts.

These exclusions are intentional. A Git clone must be sufficient to build and test LunarView itself, but it is not a backup mechanism for secrets or third-party/proprietary research inputs.

Clone and bootstrap

macOS or Linux

Install Git, CMake 3.20 or newer, a C++20 compiler, curl, tar, and unzip. Ninja and Python 3 are recommended. Examples:

# macOS with Homebrew
xcode-select --install
brew install cmake ninja git curl

# Debian or Ubuntu
sudo apt-get update
sudo apt-get install build-essential cmake ninja-build git curl zip unzip tar python3

Then clone and run the bootstrap:

git clone https://github.com/IlyaBOT/LunarView.git
cd LunarView
./scripts/bootstrap.sh

Windows

Install Git, CMake 3.20 or newer, PowerShell, and Visual Studio 2022 Build Tools with the Desktop development with C++ workload. Ninja and Python 3 are recommended. From PowerShell:

git clone https://github.com/IlyaBOT/LunarView.git
Set-Location LunarView
Set-ExecutionPolicy -Scope Process Bypass
.\scripts\bootstrap.ps1

The default bootstrap mode clones vcpkg at the commit pinned by vcpkg.json and stores it below .local/vcpkg. vcpkg then builds the pinned dependency set for the current platform. Both .local/ and the build tree are ignored by Git and can be recreated at any time.

The scripts configure, build, run all native CTest executables, and run the offline Python research unit tests when Python is available. They do not run live BMC tests.

Dependency modes

The default vcpkg mode is the simplest clean-machine path:

./scripts/bootstrap.sh --deps vcpkg

Alternative Unix modes are available when dependencies are managed externally:

# Installed curl, libpng, and tinyxml2 11.0.0
./scripts/bootstrap.sh --deps system

# Installed curl/libpng; explicitly download pinned tinyxml2
./scripts/bootstrap.sh --deps fetch

# Fully disconnected; tinyxml2-11.0.0 exists below /path/to/deps
./scripts/bootstrap.sh --deps offline --deps-dir /path/to/deps

PowerShell exposes the same choices through -Dependencies and -DependenciesDirectory. Use --no-tests on Unix or -NoTests on Windows only when a build-only check is intentional.

Moving ongoing work through GitHub

On the old computer, review exactly what will be published before committing:

git status --short
git check-ignore -v docs/captures/private research/decompiled .local build
git add .gitattributes .gitignore CMakeLists.txt LICENSE README.md \
    docs include res research/scripts research/tests research/tools \
    scripts src tests vcpkg.json
git diff --cached --check
git diff --cached --stat
git commit -m "Import LunarView development tree"
git push origin main

Never use git add -f for an ignored capture, JNLP, credential, JViewer archive, native library, decompiled tree, or downloaded tool. Confirm the staged list with git status before every push.

On the new computer, clone and bootstrap as shown above. For later updates:

git pull --ff-only
./scripts/bootstrap.sh

Uncommitted and ignored files do not travel through GitHub. Preserve any private research evidence separately in encrypted storage if it is still needed; do not add it to this repository.

Proprietary research inputs

The historical JViewer JARs and native libraries are intentionally outside the Git root. A developer reproducing the reverse-engineering work must obtain their own lawful copies and place them outside the LunarView checkout. The tracked protocol documentation and production build do not require those artifacts.

Downloaded decompilers can be recreated from the commands and hashes in research/tools/README.md. Private runtime captures cannot and must not be reconstructed from the public repository.