mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
b00218715a
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.
91 lines
3.4 KiB
Markdown
91 lines
3.4 KiB
Markdown
# SerenityOS build instructions
|
|
|
|
## Prerequisites
|
|
|
|
Make sure you have all the dependencies installed:
|
|
|
|
### Debian / Ubuntu
|
|
|
|
```console
|
|
sudo apt install build-essential cmake curl libmpfr-dev libmpc-dev libgmp-dev e2fsprogs ninja-build qemu-system-i386 qemu-utils ccache rsync genext2fs unzip texinfo
|
|
```
|
|
|
|
#### GCC 10
|
|
|
|
On Ubuntu gcc-10 is available in the repositories of 20.04 (Focal) and later - add the `ubuntu-toolchain-r/test` PPA if you're running an older version:
|
|
|
|
```console
|
|
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
|
```
|
|
|
|
On Debian your system must be on the _testing_ or _unstable_ branch as gcc 10 is not available on _stable_ or in the backports. If you want to switch from _stable_ to _testing_, see the instructions on the Debian website on [switching to testing](https://wiki.debian.org/DebianTesting). Alternatively, if you want to stay on _stable_, you can build SerenityOS in a Debian testing or Ubuntu [Docker](https://www.docker.com/) container.
|
|
|
|
Now on Ubuntu or Debian you can install gcc-10 with apt like this:
|
|
|
|
```console
|
|
sudo apt install gcc-10 g++-10
|
|
```
|
|
|
|
#### QEMU 5 or later
|
|
|
|
QEMU version 5 is available in Ubuntu 20.10. For earlier versions, you can build version 6 using the `Toolchain/BuildQemu.sh` script.
|
|
You may need the gtk+ 3.0 dev package:
|
|
|
|
```console
|
|
sudo apt install libpixman-1-dev libgtk-3-dev
|
|
```
|
|
|
|
### Windows
|
|
|
|
If you're on Windows you can use WSL2 to build SerenityOS. Please have a look at the [Windows guide](BuildInstructionsWindows.md)
|
|
for details.
|
|
|
|
### Arch Linux / Manjaro
|
|
|
|
```console
|
|
sudo pacman -S --needed base-devel cmake curl mpfr libmpc gmp e2fsprogs ninja qemu qemu-arch-extra ccache rsync unzip
|
|
```
|
|
|
|
### Other systems
|
|
|
|
There is also documentation for installing the build prerequisites for some less commonly used systems:
|
|
|
|
* [Other Linux distributions and \*NIX systems](BuildInstructionsOther.md)
|
|
* [macOS](BuildInstructionsMacOS.md)
|
|
|
|
## Build
|
|
|
|
In order to build SerenityOS you will first need to build the toolchain by running the following command:
|
|
|
|
```console
|
|
Meta/serenity.sh rebuild-toolchain
|
|
```
|
|
|
|
Later on, when you use `git pull` to get the latest changes, there's (usually) no need to rebuild the toolchain.
|
|
|
|
Run the following command to build and run SerenityOS:
|
|
|
|
```console
|
|
Meta/serenity.sh run
|
|
```
|
|
|
|
This will compile all of SerenityOS and install the built files into the `Build/i686/Root` directory inside your Git
|
|
repository. It will also build a disk image and start SerenityOS using QEMU.
|
|
|
|
Note that the `anon` user is able to become `root` without a password by default, as a development convenience.
|
|
To prevent this, remove `anon` from the `wheel` group and he will no longer be able to run `/bin/su`.
|
|
|
|
If you want to test whether your code changes compile without running the VM you can use
|
|
`Meta/serenity.sh build`. The `serenity.sh` script also provides a number of other commands. Run the script without
|
|
arguments for a list.
|
|
|
|
## Ports
|
|
|
|
To add a package from the ports collection to Serenity, for example curl, change into the `Ports/curl` directory and
|
|
run `./package.sh`. The source code for the package will be downloaded and the package will be built. The next time you
|
|
start Serenity, `curl` will be available.
|
|
|
|
## More information
|
|
|
|
At this point you should have a fully functioning VM for SerenityOS. The [advanced build instructions guide](AdvancedBuildInstructions.md)
|
|
has more information for some less commonly used features of the build system.
|