Skip to content

Commit

Permalink
Update "Building Cinnamon" from Sara/Xenial to Wilma/Noble, add secti…
Browse files Browse the repository at this point in the history
…on for other systems
  • Loading branch information
EarldridgeJazzedPineda committed Oct 7, 2024
1 parent fa022cf commit 6b7e1da
Showing 1 changed file with 175 additions and 12 deletions.
187 changes: 175 additions & 12 deletions reference/git/cinnamon-tutorials/building.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,32 @@

[Home](/) /
[Reference](/reference/git/) /
[Cinnamon Tutorials](/reference/git/cinnamon-tutorials)

# Part II. Building Cinnamon
# Part II. Building Cinnamon

## Debian-based systems

### Add APT sources repositories

Open `/etc/apt/sources.list`. For each deb line, add the same line with deb replaced with deb-src. For instance, here's how it should look like in Linux Mint 18:
Open `/etc/apt/sources.list`. For each deb line, add the same line with deb replaced with deb-src. For instance, here's how it should look like in Linux Mint 22:

```bash
deb http://packages.linuxmint.com sara main upstream import
deb-src http://packages.linuxmint.com sara main upstream import
deb http://packages.linuxmint.com wilma main upstream import
deb-src http://packages.linuxmint.com wilma main upstream import

deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ noble main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ noble main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ noble-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ noble-updates main restricted universe multiverse

deb http://extras.ubuntu.com/ubuntu xenial main
deb-src http://extras.ubuntu.com/ubuntu xenial main
deb http://extras.ubuntu.com/ubuntu noble main
deb-src http://extras.ubuntu.com/ubuntu noble main
```

### Get build dependencies
Then we install the packages needed to compile the cinnamon stack. Run the following in a terminal (as root):
Then we install the packages needed to compile the Cinnamon stack. Run the following in a terminal (as root):
```bash
apt-get update
apt-get install dpkg-dev
Expand Down Expand Up @@ -86,11 +87,173 @@ sudo dpkg -i *packages produced*

### Optional: Compiling from stable branch

The instructions above compile the Cinnamon stack from their "master" branch, which isn't always stable. To compile from the stable branch, instead of the usual building procedure, you need to to the following (for all packages):
The instructions above compile the Cinnamon stack from their "master" branch, which isn't always stable. To compile from the stable branch, instead of the usual building procedure, you need to do the following (for all packages):

```bash
cd *package-name*
git checkout stable
dpkg-buildpackage
cd ..
```

## Other systems

### Get build dependencies
Install the following dependencies using your system's package manager. For build-time dependencies, you may need the development headers (usually found in packages suffixed `-dev` or `-devel`). If a dependency is not available for your system, you can build and install it.
* Build-time dependencies:
* C/C++ compiler
* `at-spi2-core`, or `at-spi2-atk` and `atk >= 2.5.3`
* `cairo >= 1.10.0`
* `dbus`
* `fontconfig`
* `fribidi >= 1.0.0`
* `gdk-pixbuf >= 2.22.0`
* `gettext`
* `glib >= 2.66.0`
* `gobject-introspection >= 1.66.0`
* `graphene >= 1.9.3`
* `gtk3 >= 3.19.8`
* `intltool`
* `iso-codes`
* `json-glib >= 1.6`
* `libcanberra >= 0.26`
* `libffi`
* `libgnomekbd >= 3.6.0`
* `libgudev >= 232`
* `libice`
* `libnotify >= 0.7.3`
* `libsm`
* `libx11`
* `libxau`
* `libxcb`
* `libxcomposite >= 0.4`
* `libxcursor`
* `libxdamage`
* `libxext >= 1.1`
* `libxfixes >= 3`
* `libxi >= 1.7.4`
* `libxinerama`
* `libxkbcommon >= 0.4.3`
* `libxkbfile`
* `libxklavier >= 5.1`
* `libxml2`
* `libxrandr >= 1.5.0`
* `libxrender`
* `libxtst`
* `linux-pam` or `openpam`
* `make`
* `mesa` or `libglvnd`
* `meson >= 0.56.0`
* `pango >= 1.40.0`
* `pkg-config` or `pkgconf`
* `polkit >= 0.103`
* `pulseaudio >= 12.99.3`
* `spidermonkey = 115`
* `upower >= 0.99.8`
* `xapp >= 2.6.0`
* `xdotool`
* `xkeyboard-config`
* `xorgproto`
* Run-time dependencies (these can be installed before or after compiling Cinnamon):
* NTPD implementation, `systemd`, or `openrc-settingsd`
* X11 server
* `accountsservice`
* `adwaita-icon-theme`
* `bash`
* `caribou`
* `evolution-data-server`
* `gnome-icon-theme` or `adwaita-icon-theme-legacy`
* `gsound`
* `libical`
* `libtimezonemap`
* `touchegg`

Python has to be installed, along with some Python modules. Install the following modules by using your system's package manager, from PyPI by using `pip`, or by building and installing them:
* `dbus-python`
* `pexpect`
* `pillow`
* `psutil`
* `py-setproctitle` (`setproctitle` on PyPI)
* `pycairo`
* `pygobject`
* `python-pam`
* `python3-xapp` (not on PyPI)
* `pytz`
* `requests`
* `tinycss2`

Now get the latest git code for everything. Run (not as root):

```bash
git clone git://github.com/linuxmint/cinnamon.git
git clone git://github.com/linuxmint/cinnamon-control-center.git
git clone git://github.com/linuxmint/cinnamon-desktop.git
git clone git://github.com/linuxmint/cinnamon-menus.git
git clone git://github.com/linuxmint/cinnamon-screensaver.git
git clone git://github.com/linuxmint/cinnamon-session.git
git clone git://github.com/linuxmint/cinnamon-settings-daemon.git
git clone git://github.com/linuxmint/cinnamon-translations.git
git clone git://github.com/linuxmint/cjs.git
git clone git://github.com/linuxmint/muffin.git
git clone git://github.com/linuxmint/nemo.git
```

### Compile and install the stack

Build and install in the following order. See below for how to build and install.

```
cinnamon-translations
cinnamon-desktop
cinnamon-menus
cinnamon-session
cinnamon-settings-daemon
cinnamon-screensaver
cjs
cinnamon-control-center
muffin
cinnamon
nemo
```

To build and install a package:

```bash
cd *package-name*
meson setup builddir
meson compile -C builddir
meson install -C builddir
cd ..
```

The procedure for building and installing `cinnamon-translations` is different:

```bash
cd cinnamon-translations
make
sudo cp -r usr /
cd ..
```

### Optional: Compiling from stable branch

The instructions above compile the Cinnamon stack from their "master" branch, which isn't always stable. To compile from the stable branch, instead of the usual building procedure, you need to do the following (for all packages except `cinnamon-translations`):

```bash
cd *package-name*
git checkout stable
meson setup builddir
meson compile -C builddir
meson install -C builddir
cd ..
```

For `cinnamon-translations`:

```bash
cd cinnamon-translations
git checkout stable
make
sudo cp -r usr /
cd ..
```

0 comments on commit 6b7e1da

Please sign in to comment.