|
| 1 | +# Building Cinnamon |
| 2 | + |
| 3 | +## General Build Instructions |
| 4 | + |
| 5 | +### Create a Sandbox |
| 6 | + |
| 7 | +When you build projects it produces `.deb` packages in their parent directory, so it's a good idea to create a directory for all your development needs, in which you'll have subdirectories for each project, or each group of projects. This keeps things tidy and well organized in your computer so it becomes easier to search for code across different projects. |
| 8 | + |
| 9 | +We commonly call our main development directory "Sandbox" and place it in our home folder. |
| 10 | + |
| 11 | +```bash |
| 12 | +mkdir ~/Sandbox |
| 13 | +``` |
| 14 | + |
| 15 | +Of course, you can call your "Sandbox" whatever you want and place it anywhere you want as well. |
| 16 | + |
| 17 | +### Install mint-dev-tools |
| 18 | + |
| 19 | +Install the `mint-dev-tools` package from the Linux Mint repositories. |
| 20 | + |
| 21 | +```bash |
| 22 | +apt update |
| 23 | +apt install mint-dev-tools --install-recommends |
| 24 | +``` |
| 25 | + |
| 26 | +It contains useful tools to help you compile and develop Linux Mint projects. |
| 27 | + |
| 28 | + |
| 29 | + |
| 30 | +### Installing Source |
| 31 | + |
| 32 | +```bash |
| 33 | +cd ~/Sandbox |
| 34 | +git clone https://github.com/linuxmint/mintinstall.git |
| 35 | +``` |
| 36 | + |
| 37 | +### First-Time Build |
| 38 | + |
| 39 | +```bash |
| 40 | +cd ~/Sandbox/mintinstall |
| 41 | +mint-build |
| 42 | +``` |
| 43 | + |
| 44 | +### Faster Rebuild |
| 45 | + |
| 46 | +```bash |
| 47 | +cd ~/Sandbox/mintinstall |
| 48 | +dpkg-buildpackage |
| 49 | +``` |
| 50 | + |
| 51 | +### Build Order |
| 52 | +Here is the build order for everything cinnamon |
| 53 | +- `cinnamon-translations` |
| 54 | +- `cinnamon-desktop` |
| 55 | +- `cinnamon-menus` |
| 56 | +- `cinnamon-session` |
| 57 | +- `cinnamon-settings-daemon` |
| 58 | +- `cinnamon-screensaver` |
| 59 | +- `cjs` |
| 60 | +- `cinnamon-control-center` |
| 61 | +- `muffin` |
| 62 | +- `cinnamon` |
| 63 | +- `nemo` |
| 64 | + |
| 65 | + |
| 66 | + |
| 67 | +## For Debian-based Systems |
| 68 | + |
| 69 | +### Add APT Source Repositories |
| 70 | + |
| 71 | +Edit `/etc/apt/sources.list`: |
| 72 | + |
| 73 | +```bash |
| 74 | +deb http://packages.linuxmint.com wilma main upstream import |
| 75 | +deb-src http://packages.linuxmint.com wilma main upstream import |
| 76 | +``` |
| 77 | + |
| 78 | +### Install Build Dependencies |
| 79 | + |
| 80 | +```bash |
| 81 | +sudo apt-get update |
| 82 | +sudo apt-get install dpkg-dev |
| 83 | +sudo apt-get build-dep cinnamon cinnamon-control-center cinnamon-desktop \ |
| 84 | + cinnamon-menus cinnamon-screensaver cinnamon-session \ |
| 85 | + cinnamon-settings-daemon cinnamon-translations cjs muffin nemo |
| 86 | +``` |
| 87 | + |
| 88 | +### Clone All Repositories |
| 89 | + |
| 90 | +```bash |
| 91 | +git clone git://github.com/linuxmint/cinnamon.git |
| 92 | +git clone git://github.com/linuxmint/cinnamon-control-center.git |
| 93 | +git clone git://github.com/linuxmint/cinnamon-desktop.git |
| 94 | +git clone git://github.com/linuxmint/cinnamon-menus.git |
| 95 | +git clone git://github.com/linuxmint/cinnamon-screensaver.git |
| 96 | +git clone git://github.com/linuxmint/cinnamon-session.git |
| 97 | +git clone git://github.com/linuxmint/cinnamon-settings-daemon.git |
| 98 | +git clone git://github.com/linuxmint/cinnamon-translations.git |
| 99 | +git clone git://github.com/linuxmint/cjs.git |
| 100 | +git clone git://github.com/linuxmint/muffin.git |
| 101 | +git clone git://github.com/linuxmint/nemo.git |
| 102 | +``` |
| 103 | + |
| 104 | +### Compile Order |
| 105 | + |
| 106 | +```text |
| 107 | +cinnamon-translations |
| 108 | +cinnamon-desktop |
| 109 | +cinnamon-menus |
| 110 | +**INSTALL** |
| 111 | +cinnamon-session |
| 112 | +cinnamon-settings-daemon |
| 113 | +cinnamon-screensaver |
| 114 | +cjs |
| 115 | +**INSTALL** |
| 116 | +cinnamon-control-center |
| 117 | +muffin |
| 118 | +**INSTALL** |
| 119 | +cinnamon |
| 120 | +nemo |
| 121 | +**INSTALL** |
| 122 | +``` |
| 123 | + |
| 124 | +### Build |
| 125 | + |
| 126 | +```bash |
| 127 | +cd package-name |
| 128 | +dpkg-buildpackage |
| 129 | +``` |
| 130 | + |
| 131 | +### Install |
| 132 | + |
| 133 | +```bash |
| 134 | +sudo dpkg -i ../*.deb |
| 135 | +``` |
| 136 | + |
| 137 | +### Stable Branch |
| 138 | + |
| 139 | +```bash |
| 140 | +cd package-name |
| 141 | +git checkout stable |
| 142 | +dpkg-buildpackage |
| 143 | +``` |
| 144 | + |
| 145 | + |
| 146 | + |
| 147 | +## Other Systems |
| 148 | + |
| 149 | +### Build Dependencies |
| 150 | + |
| 151 | +Install development packages (`*-dev`) for: |
| 152 | + |
| 153 | +**Core:** |
| 154 | + |
| 155 | +* `glib`, `gtk3`, `gobject-introspection`, `meson`, `pulseaudio`, `spidermonkey`, etc. |
| 156 | + |
| 157 | +**Optional:** |
| 158 | + |
| 159 | +* `cups`, `gstreamer`, `libwacom`, `wayland`, etc. |
| 160 | + |
| 161 | +**Python:** |
| 162 | + |
| 163 | +* `dbus-python`, `pexpect`, `pillow`, `pycairo`, `pygobject`, etc. |
| 164 | + |
| 165 | +### Clone All Repositories |
| 166 | + |
| 167 | +Same as in Debian section. |
| 168 | + |
| 169 | +### Compile Order |
| 170 | + |
| 171 | +Same as Debian. |
| 172 | + |
| 173 | +### Compile with Meson |
| 174 | + |
| 175 | +```bash |
| 176 | +cd package-name |
| 177 | +meson setup builddir |
| 178 | +meson compile -C builddir |
| 179 | +meson install -C builddir |
| 180 | +``` |
| 181 | + |
| 182 | +### cinnamon-translations |
| 183 | + |
| 184 | +```bash |
| 185 | +cd cinnamon-translations |
| 186 | +make |
| 187 | +sudo cp -r usr / |
| 188 | +``` |
| 189 | + |
| 190 | +### Stable Branch |
| 191 | + |
| 192 | +```bash |
| 193 | +cd package-name |
| 194 | +git checkout stable |
| 195 | +meson setup builddir |
| 196 | +meson compile -C builddir |
| 197 | +meson install -C builddir |
| 198 | +``` |
| 199 | + |
| 200 | +For `cinnamon-translations`: |
| 201 | + |
| 202 | +```bash |
| 203 | +cd cinnamon-translations |
| 204 | +git checkout stable |
| 205 | +make |
| 206 | +sudo cp -r usr / |
| 207 | +``` |
0 commit comments