summaryrefslogtreecommitdiff
path: root/Documentation/BuildInstructions.md
AgeCommit message (Collapse)Author
2023-05-24Meta+Documentation: Require Xcode 14.3 or Clang 14 for the host compilerDaniel Bertalan
There have been multiple reports of Xcode 14.0 (based on upstream LLVM 14) segfaulting when compiling `LibCore/Process.cpp`. Let's require Xcode 14.3, which is a known good version based on LLVM 15. Note that Xcode 14.3 requires macOS Ventura, so users of Monterey or older are expected to get Homebrew Clang instead. Homebrew Clang 13 also suffers from the same crash. Although I have not tested on Linux, the backtrace points to the middle-end, so x86_64 is also likely to be affected. LLVM 14 was released 14 months ago, so it's not an unreasonable requirement.
2023-05-08Documentation: Add libslirp-dev as a required dependency for QEMUKenneth Myhra
After the update to QEMU 8.0 libslirp-dev is a required dependency.
2023-04-25Documentation: Fix markdown syntaxEmanuele Torre
Use regular ascii backticks instead of U+00B4 (acute accent).
2023-04-14Documentation: Add build dependencies for SerenityOS :^)Tim Schumacher
2023-04-08Documentation+Ports: Be upfront about dependenciesBen Wiederhake
Yes, these can be 'discovered' incrementally, but it's usually nicer to be upfront instead of making the user play trial-and-error.
2023-01-04Documentation: Add how to update build to use SerenityOS-provided CMakeTaj Morton
2023-01-03Documentation: Document fix for missing /etc/mtabkleines Filmröllchen
/etc/mtab is identical to /proc/self/mounts, but it does not exist under many circumstances, e.g. chroot'ed or in WSL. The fact that many userspace programs rely on this file existing and the user needing to create symlinks manually has been a long-standing issue (there's pretty old forum posts on Debian and Arch Linux forums about it), but it's not fixed upstream. This short mention should save people some time.
2022-12-27Documentation: Fix a few typosNico Weber
2022-12-19Documentation: Adjust default TARGET to x86_64 in the documentation0xxFF
2022-12-17Documentation: Explain CMake 3.25.x requirementAndrew Kaster
2022-12-17Documentation: Clarify that clang can be used as a host compilerAndrew Kaster
2022-12-16Documentation: Add libssl-dev in the debian / ubuntu requirementsGurkirat Singh
In the fresh and minimal installations dev package are often stripped. This commit will install the libssl dev packages required in `Utilities/cmcurl/CMakeLists.txt:608`.
2022-10-25Everywhere: Require version >= 12 for GCC host compilerLinus Groh
So far we've gotten away with using GCC 11 for Lagom and to compile the toolchain, but via #15795 we discovered a compiler bug that has been fixed in the latest version but would error the build with CI's GCC 11. Time for an upgrade :^) We already use ubuntu-22.04 images in most places, so this is pretty straightforward. The only exception is Idan's self-hosted runner, which uses Ubuntu Focal. LibJS should build fine with GCC 11, still.
2022-05-24Meta+Documentation: Bump required QEMU versionNathan Wallace
This commit bumps the required QEMU version to 6.2 and updates the version checking logic in Meta/run.sh to support checking against major and minor version numbers instead of checking against the major version only
2022-05-20Documentation: Only install the x86 and AArch64 qemu backends on ArchDaniel Bertalan
The qemu-emulators-full package installs qemu backends for *all* supported architectures, but we only need x86 and AArch64. This decreases the installed size of dependencies by 800 MiB.
2022-05-09Documentation: Update the required packages for arch based systemsnetworkException
Since qemu 7 the Arch Linux repository is using a different naming system for the various required packages. This patch updates the required dependencies for running serenity. See https://archlinux.org/news/qemu-700-changes-split-package-setup/
2022-04-04Documentation: Add instructions for building images without rootBrandon Doornbos
I could not find the fuse2fs or equivalent packages for the other distros, so it is represented separately for each distro that does have it.
2022-02-22Documentation: Add `sudo apt update` step to build instructionsJT
This adds the necessary `sudo apt update` to the build instructions after adding the GCC 11 respository.
2022-01-07Meta+CI+Documentation: Bump host gcc requirement up to gcc 11Andrew Kaster
Bump macOS CI version to macOS 11 while we're here.
2021-11-20Toolchain: Add Qemu build dependencies to DockerfileJelle Raaijmakers
Also add `libsdl2-dev` as a required dependency and reorder the list of packages passed to `apt-get`.
2021-11-11Documentation: Update Debian dependency listBen Wiederhake
Apparently, qemu-system-* changed its name. On Debian/Ubuntu, genext2fs does not make a difference: The only user of this command, Meta/build-image-qemu.sh, runs as root anyway, and tries to do 'mount _disk_image mnt/' first. Debian/Ubuntu always have drivers for ext2 available, so this command has no good reason to fail, and trying to use genext2fs might only obscure any problems that mount encountered. Finally, Debian Bullseye (released 2021-08-14) contains gcc-10, so the instructions on how to upgrade are now obsolete.
2021-11-02Documentation: Update required Qemu dev packagesJelle Raaijmakers
Without `libspice-server-dev`, Qemu will build without SPICE support.
2021-10-20Meta: Document anon user's passwordTom
2021-10-04Documentation: Added unzip to arch install listPatrick Wilmes
After setting up the toochain on manjaro linux (new install) the build of the toolchain failed as unzip was not found. The unzip package is listed in the documentation for debian (apt) but is was missing for arch linux.
2021-09-30Documentation: Add texinfo to build instructionsNico Weber
`Meta/serenity.sh rebuild-toolchain aarch64` failed with the gdb build complaining about missing `makeinfo` without this.
2021-08-30Documentation: Add unzip package to BuildInstructionsLepkoQQ
2021-08-29Documentation: Escape asterisk ("*NIX") in BuildInstructions.mdLinus Groh
Even though Markdown renderers should handle this fine as-is, not escaping the asterisk makes vim render a lot of text in italics, for example.
2021-08-15Documentation: Add genext2fs package for BuildInstructionsvdjagilev
2021-07-30Documentation: Remove more potentially harmful Debian adviceThomas Wagenveld
Serenity build tooling autodetects gcc 10 so update-alternatives is not necessary. Also, switching apt repositories on the fly can cause issues with dependencies, package downgrades and leave the system in a broken state.
2021-07-30Documentation: Update instructions for DebianThomas Wagenveld
Simply adding a 'testing' repo on a Debian stable system is destructive to the system. Add better hints on building Serenity on Debian.
2021-07-14Documentation: Remove '$' character from build instruction commandsKenneth Myhra
This removes the '$' character so that it is easier to copy commands directly from the build instructions and then executing them without first having to remove the '$' character.
2021-07-12Documentation: Shuffle around systems in the build instruction docsGunnar Beutner
The crowd has spoken and it's clear they want... Windows and Arch Linux.
2021-07-10Documentation: Reorganize the build documentationGunnar Beutner
2021-07-09Documentation: Added build instructions for Void LinuxYori
2021-07-06Documentation: Document the ConfigureComponents utilityMax Wipfli
This adds documentation for the ConfigureComponents utility to the build instructions.
2021-06-17Meta: Add support for declaring componentsGunnar Beutner
Components are a group of build targets that can be built and installed separately. Whether a component should be built can be configured with CMake arguments: -DBUILD_<NAME>=ON|OFF, where <NAME> is the name of the component (in all caps). Components can be marked as REQUIRED if they're necessary for a minimally functional base system or they can be marked as RECOMMENDED if they're not strictly necessary but are useful for most users. A component can have an optional description which isn't used by the build system but may be useful for a configuration UI. Components specify the TARGETS which should be built when the component is enabled. They can also specify other components which they depend on (with DEPENDS). This also adds the BUILD_EVERYTHING CMake variable which lets the user build all optional components. For now this defaults to ON to make the transition to the components-based build system easier. The list of components is exported as an INI file in the build directory (e.g. Build/i686/components.ini). Fixes #8048.
2021-06-13Documentation: Move Ubuntu/Debian specific build instructionsAdam Hodgen
Ubuntu/Debian specific instructions should live under the Ubuntu/Debian header
2021-06-13Documentation: Fix QEMU 5 Ubuntu version confusionAdam Hodgen
PR #7970 added a line clarifying the requirement for QEMU 5. Unfortunately, this location this line was added changed the meaning of the following line, referencing the availability of GCC in Ubuntu 20.04. QEMU 5 is not available in Ubuntu 20.04, so this change is incorrect, as well as misleading.
2021-06-10Documentation: Specify minimum required QEMU versionApoorv Mishra
2021-06-07Documentation: Add ccache and rsync to the packages to installGunnar Beutner
These aren't hard dependencies but make building and working with SerenityOS significantly faster.
2021-05-31Documentation: Remove outdated info about `pls` from build instructionsAndreas Kling
2021-05-29Userland: Check sudoers file perms and owner in plsJesse Buhagiar
As per comment found in #6319 by @bcoles, `pls` should check the permissions and owner of the sudoers file to ensure that it hasn't been compromised.
2021-05-29Userland: Implement `pls`, a sudo cloneJesse Buhagiar
2021-05-29Meta: Add `binutils-devel` to fedora build docsJacob Lindgren
2021-05-27Meta/CI: Add ENABLE_ALL_DEBUG_FACILITIES CMake optionAndrew Kaster
This option replaces the use of ENABLE_ALL_THE_DEBUG_MACROS in CI runs, and enables all debug options that might be broken by developers unintentionally that are only used in specific debugging situations.
2021-05-27Kernel: Add ENABLE_EXTRA_KERNEL_DEBUG_SYMBOLS option to set Og and ggdb3Andrew Kaster
When debugging kernel code, it's necessary to set extra flags. Normal advice is to set -ggdb3. Sometimes that still doesn't provide enough debugging information for complex functions that still get optimized. Compiling with -Og gives the best optimizations for debugging, but can sometimes be broken by changes that are innocuous when the compiler gets more of a chance to look at them. The new CMake option enables both compile options for kernel code.
2021-05-21LibWasm+Meta: Add test-wasm and optionally test the conformance testsAli Mohammad Pur
This only tests "can it be parsed", but the goal of this commit is to provide a test framework that can be built upon :) The conformance tests are downloaded, compiled* and installed only if the INCLUDE_WASM_SPEC_TESTS cmake option is enabled. (*) Since we do not yet have a wast parser, the compilation is delegated to an external tool from binaryen, `wasm-as`, which is required for the test suite download/install to succeed. This *does* run the tests in CI, but it currently does not include the spec conformance tests.
2021-05-16Documentation: Add Sanitizer section to RunningTestsAndrew Kaster
Also, add link to RunningTests BuildInstructions, and clean up stale commands in RunningTests to align to current build strategies.
2021-05-15Documentation: Document CMake build optionsDaniel Bertalan
Closes #7107.
2021-05-12Documentation: Add Alpine Linux build instructionsJagger De Leo