[FileItem] Fix mimetype content lookup
[xbmc.git] / docs / README.openSUSE.md
blob86d1ca62b658427c9248c502b000af7bfedd1552
1 ![Kodi Logo](resources/banner_slim.png)
3 # openSUSE build guide
4 This guide has been tested with openSUSE Tumbleweed x86_64. Please read it in full before you proceed to familiarize yourself with the build procedure.
6 Several other distributions have **[specific build guides](README.md)** and a general **[Linux build guide](README.Linux.md)** is also available.
8 **Do not use openSUSE Leap**. Wiser people than us decided that in 2018 `gcc v4.8.5` is the best **stable** release openSUSE Leap 42.3 can provide by default. Installing/using another release along side it is a real PITA.
10 ## Table of Contents
11 1. **[Document conventions](#1-document-conventions)**
12 2. **[Get the source code](#2-get-the-source-code)**
13 3. **[Install the required packages](#3-install-the-required-packages)**  
14   3.1. **[Build missing dependencies](#31-build-missing-dependencies)**
15 4. **[Build Kodi](#4-build-kodi)**
17 ## 1. Document conventions
18 This guide assumes you are using `terminal`, also known as `console`, `command-line` or simply `cli`. Commands need to be run at the terminal, one at a time and in the provided order.
20 This is a comment that provides context:
21 ```
22 this is a command
23 this is another command
24 and yet another one
25 ```
27 **Example:** Clone Kodi's current master branch:
28 ```
29 git clone https://github.com/xbmc/xbmc kodi
30 ```
32 Commands that contain strings enclosed in angle brackets denote something you need to change to suit your needs.
33 ```
34 git clone -b <branch-name> https://github.com/xbmc/xbmc kodi
35 ```
37 **Example:** Clone Kodi's current Krypton branch:
38 ```
39 git clone -b Krypton https://github.com/xbmc/xbmc kodi
40 ```
42 Several different strategies are used to draw your attention to certain pieces of information. In order of how critical the information is, these items are marked as a note, tip, or warning. For example:
44 > [!NOTE]  
45 > Linux is user friendly... It's just very particular about who its friends are.
47 > [!TIP]
48 > Algorithm is what developers call code they do not want to explain.
50 > [!WARNING]  
51 > Developers don't change light bulbs. It's a hardware problem.
53 **[back to top](#table-of-contents)** | **[back to section top](#1-document-conventions)**
55 ## 2. Get the source code
56 Make sure `git` is installed:
57 ```
58 sudo zypper install git
59 ```
61 Clone Kodi's current master branch:
62 ```
63 cd $HOME
64 git clone https://github.com/xbmc/xbmc kodi
65 ```
67 **[back to top](#table-of-contents)**
69 ## 3. Install the required packages
70 Add `opensuse-multimedia-libs` repository because some needed packages are non-OSS:
71 ```
72 sudo zypper ar -f http://ftp.gwdg.de/pub/opensuse/repositories/multimedia:/libs/openSUSE_Tumbleweed/ opensuse-multimedia-libs
73 sudo zypper ref
74 ```
76 > [!NOTE]  
77 > A message will ask you to accept the key. Enter `a`, the *trust always* option.
79 If you get a `package not found` type of message with the below command, remove the offending package(s) from the install list and reissue the command. Take a note of the missing dependencies and, after a successful step completion, **[build the missing dependencies manually](#31-build-missing-dependencies)**.
81 > [!NOTE]  
82 > Kodi requires a compiler with C++17 support, i.e. gcc >= 7 or clang >= 5
84 Install build dependencies:
85 ```
86 sudo zypper install alsa-devel autoconf automake bluez-devel boost-devel capi4linux-devel ccache cmake doxygen flac-devel fribidi-devel fstrcmp-devel gcc gcc-c++ gettext-devel giflib-devel glew-devel googletest gperf java-openjdk libass-devel libavahi-devel libbluray-devel libbz2-devel libcap-devel libcap-ng-devel libcdio-devel libcec-devel libcurl-devel libdvdread-devel libexiv2-devel libgudev-1_0-devel libidn2-devel libjasper-devel libjpeg-devel liblcms2-devel libmad-devel libmicrohttpd-devel libmodplug-devel libmpeg2-devel libmysqlclient-devel libnfs-devel libogg-devel libpcap-devel libplist-devel libpng12-devel libpulse-devel libsamplerate-devel libsmbclient-devel libtag-devel libtiff-devel libtool libudev-devel libuuid-devel libva-devel libvdpau-devel libvorbis-devel libXrandr-devel libXrender-devel libxslt-devel lirc-devel lzo-devel make Mesa-libEGL-devel Mesa-libGLESv2-devel Mesa-libGLESv3-devel nasm patch pcre2-devel python3-devel python3-Pillow randrproto-devel renderproto-devel shairplay-devel sqlite3-devel swig tinyxml-devel tinyxml2-devel
87 ```
89 > [!WARNING]  
90 > Make sure you copy paste the entire line or you might receive an error or miss a few dependencies.
92 Building for Wayland requires some extra packages:
93 ```
94 sudo zypper install wayland-devel libwayland-egl1 libwayland-egl-devel libxkbcommon-devel scons wayland-protocols-devel
95 ```
97 Similarly, building for GBM also requires some extra packages:
98 ```
99 sudo zypper install libgbm-devel libinput-devel libxkbcommon-devel
102 > [!WARNING]  
103 > Fedora repositories don't have install candidates for `libfmt`, `rapidjson` and `waylandpp`. See **[build missing dependencies manually](#31-build-missing-dependencies)** section before you proceed.
105 Optional packages that you might want to install for extra functionality (generating doxygen documentation, for instance):
107 sudo zypper install doxygen sndio-devel libmariadb-devel
110 > [!NOTE]  
111 > For developers and anyone else who builds frequently it is recommended to install `ccache` to expedite subsequent builds of Kodi.
113 You can install it with:
115 sudo zypper install ccache
118 > [!TIP]
119 > If you have multiple computers at home, `distcc` will distribute build workloads of C and C++ code across several machines on a network. Team Kodi may not be willing to give support if problems arise using such a build configuration.
121 You can install it with:
123 sudo zypper install distcc
126 ### 3.1. Build missing dependencies
127 See the general **[Linux build guide](README.Linux.md)** for reference.
129 Change to Kodi's source code directory:
131 cd $HOME/kodi
134 Build and install missing dependencies from repositories (*flatbuffers*, *libfmt*, *rapidjson* and *waylandpp*):
136 sudo make -C tools/depends/target/flatbuffers PREFIX=/usr/local
137 sudo make -C tools/depends/target/libfmt PREFIX=/usr/local
138 sudo make -C tools/depends/target/rapidjson PREFIX=/usr/local
139 sudo make -C tools/depends/target/waylandpp PREFIX=/usr/local
142 **[back to top](#table-of-contents)** | **[back to section top](#3-install-the-required-packages)**
144 ## 4. Build Kodi
145 See the general **[Linux build guide](README.Linux.md)** for reference.
147 **[back to top](#table-of-contents)**