From 4e9cd134e83e7a78290a11aad2d3f9dd44644616 Mon Sep 17 00:00:00 2001 From: Nikhil Sonti Date: Tue, 30 Sep 2025 12:54:03 -0700 Subject: [PATCH] update build docs and flags --- CONTRIBUTING.md | 15 ++- docs/BUILD.md | 109 ++++++++++++------ .../build/config/gn/flags.linux.debug.gn | 11 ++ .../build/config/gn/flags.windows.debug.gn | 6 + .../build/config/gn/flags.windows.release.gn | 15 --- 5 files changed, 104 insertions(+), 52 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 94751c2b3..b7afa5e91 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -116,17 +116,24 @@ Once you have Chromium checked out, navigate to our build system: cd packages/browseros # Debug build (for development) -python build/build.py --chromium-src /path/to/chromium/src --build --build-type debug +# macOS +python build/build.py --config build/config/debug.macos.yaml --chromium-src /path/to/chromium/src --build + +# Linux +python build/build.py --config build/config/debug.linux.yaml --chromium-src /path/to/chromium/src --build + +# Windows +python build/build.py --config build/config/debug.windows.yaml --chromium-src /path/to/chromium/src --build # Release build (for production) # macOS -python build/build.py --chromium-src /path/to/chromium/src --build --build-type release +python build/build.py --config build/config/release.macos.yaml --chromium-src /path/to/chromium/src --build # Linux -python build/build.py --chromium-src /path/to/chromium/src --build --build-type release +python build/build.py --config build/config/release.linux.yaml --chromium-src /path/to/chromium/src --build # Windows -python build/build.py --chromium-src /path/to/chromium/src --build --build-type release +python build/build.py --config build/config/release.windows.yaml --chromium-src /path/to/chromium/src --build ``` The build typically takes 1-3 hours on modern hardware (M4 Max, Ryzen 9, etc.). diff --git a/docs/BUILD.md b/docs/BUILD.md index 264702a99..0ef2a6527 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -1,9 +1,10 @@ -# Building Nxtscape +# Building BrowserOS -This guide will walk you through building Nxtscape from source on macOS. +This guide will walk you through building BrowserOS from source. ## Prerequisites +### macOS - macOS (tested on M4 Max) - Xcode and Command Line Tools - Python 3 @@ -11,6 +12,22 @@ This guide will walk you through building Nxtscape from source on macOS. - ~100GB of free disk space (for Chromium source) - ~8GB RAM minimum (16GB+ recommended) +### Linux +- Ubuntu 20.04+ or similar +- build-essential package +- Python 3 +- Git +- ~100GB of free disk space +- ~8GB RAM minimum (16GB+ recommended) + +### Windows +- Windows 10/11 +- Visual Studio 2022 with C++ workload +- Python 3 +- Git +- ~100GB of free disk space +- ~16GB RAM minimum + ## Build Instructions ### Step 1: Checkout Chromium @@ -18,45 +35,71 @@ This guide will walk you through building Nxtscape from source on macOS. First, you need to get the Chromium source code. Follow the official Chromium instructions: 1. Visit the [Chromium Get the Code guide](https://www.chromium.org/developers/how-tos/get-the-code/) -2. Follow the macOS-specific instructions to set up depot_tools and fetch Chromium -3. Clone the Chromium repository into a `build` directory inside your nxtscape repository: +2. Follow the platform-specific instructions to set up depot_tools and fetch Chromium +3. Note the path to your chromium/src directory (you'll need it for building) + +### Step 2: Build BrowserOS + +Navigate to the BrowserOS build system: ```bash -cd /path/to/nxtscape -mkdir build -cd build -# Follow Chromium checkout instructions here +cd packages/browseros ``` -### Step 2: Apply Nxtscape Patches - -Once you have Chromium checked out, the Nxtscape patches need to be applied to customize the browser with AI features. - -### Step 3: Build Nxtscape - -Nxtscape provides a Python build script that handles the compilation process. - -#### For Debug Build: -```bash -python build/build.py --build --build-type debug -``` - -#### For Release Build: -```bash -python build/build.py --build --build-type release -``` - -**Note:** The build process typically takes around 3 hours on an M4 Max laptop. Build times may vary based on your hardware specifications. - -### Step 4: Run Nxtscape - -After the build completes successfully, you can run Nxtscape using: +#### Debug Build (for development): ```bash -out/Default/Nxtscape.app/Contents/MacOS/Nxtscape --use-mock-keychain +# macOS +python build/build.py --config build/config/debug.macos.yaml --chromium-src /path/to/chromium/src --build + +# Linux +python build/build.py --config build/config/debug.linux.yaml --chromium-src /path/to/chromium/src --build + +# Windows +python build/build.py --config build/config/debug.windows.yaml --chromium-src /path/to/chromium/src --build ``` -The `--use-mock-keychain` flag is used to avoid keychain permission prompts during development. +#### Release Build (for production): + +```bash +# macOS +python build/build.py --config build/config/release.macos.yaml --chromium-src /path/to/chromium/src --build + +# Linux +python build/build.py --config build/config/release.linux.yaml --chromium-src /path/to/chromium/src --build + +# Windows +python build/build.py --config build/config/release.windows.yaml --chromium-src /path/to/chromium/src --build +``` + +**Note:** The build process typically takes 1-3 hours on modern hardware. Build times may vary based on your hardware specifications. + +### Step 3: Run BrowserOS + +After the build completes successfully, you can run BrowserOS: + +#### macOS Debug Build: +```bash +# ARM64 (Apple Silicon) +out/Default_arm64/BrowserOS\ Dev.app/Contents/MacOS/BrowserOS\ Dev --user-data-dir=/tmp/test-profile + +# x64 (Intel) +out/Default_x64/BrowserOS\ Dev.app/Contents/MacOS/BrowserOS\ Dev --user-data-dir=/tmp/test-profile +``` + +#### macOS Release Build: +```bash +# ARM64 (Apple Silicon) +out/Default_arm64/BrowserOS.app/Contents/MacOS/BrowserOS --user-data-dir=/tmp/test-profile + +# x64 (Intel) +out/Default_x64/BrowserOS.app/Contents/MacOS/BrowserOS --user-data-dir=/tmp/test-profile +``` + +#### Linux and Windows: +The built binary will be located in the `out/Default_x64/` directory. Run it with the `--user-data-dir` flag to create an isolated test profile. + +The `--user-data-dir` flag is useful for creating isolated test profiles during development. ## Troubleshooting diff --git a/packages/browseros/build/config/gn/flags.linux.debug.gn b/packages/browseros/build/config/gn/flags.linux.debug.gn index 8b8bffc87..41f87ed0d 100644 --- a/packages/browseros/build/config/gn/flags.linux.debug.gn +++ b/packages/browseros/build/config/gn/flags.linux.debug.gn @@ -10,12 +10,23 @@ use_siso=false # Compiler use_sysroot = true use_custom_libcxx = true +is_clang = true +clang_use_chrome_plugins = false +fatal_linker_warnings = false # Features enable_nacl = false enable_widevine = true enable_hangout_services_extension = false enable_js_type_check = false +disable_fieldtrial_testing_config = true +use_system_libffi = false +google_api_key = "" +google_default_client_id = "" +google_default_client_secret = "" +use_official_google_api_keys = false +enable_swiftshader = false +chrome_pgo_phase = 0 # Media proprietary_codecs = true diff --git a/packages/browseros/build/config/gn/flags.windows.debug.gn b/packages/browseros/build/config/gn/flags.windows.debug.gn index 63cb254a4..17b3271b1 100644 --- a/packages/browseros/build/config/gn/flags.windows.debug.gn +++ b/packages/browseros/build/config/gn/flags.windows.debug.gn @@ -5,6 +5,12 @@ is_component_build = true symbol_level = 0 chrome_pgo_phase = 0 is_official_build = false +use_siso = false +is_clang = true +exclude_unwind_tables = false +treat_warnings_as_errors = false +use_sysroot = false +v8_symbol_level = 0 # Windows-specific compiler/linker settings target_cpu = "x64" diff --git a/packages/browseros/build/config/gn/flags.windows.release.gn b/packages/browseros/build/config/gn/flags.windows.release.gn index 4af6ffb41..d918537ed 100644 --- a/packages/browseros/build/config/gn/flags.windows.release.gn +++ b/packages/browseros/build/config/gn/flags.windows.release.gn @@ -28,18 +28,3 @@ symbol_level=0 ffmpeg_branding="Chrome" -# OLD - -# use_siso=false -# is_debug = false -# is_component_build = false -# is_official_build = true -# symbol_level = 0 -# target_cpu = "x64" -# proprietary_codecs = true -# ffmpeg_branding = "Chrome" -# google_api_key="" -# google_default_client_id="" -# google_default_client_secret="" -# chrome_pgo_phase = 0 -