This wiki was updated to MediaWiki 1.37. If you notice any issues, please report them to admin[at]

openSUSE:Libzypp building

Jump to: navigation, search
This page explains the build process and procedures for libzypp.

Building libzypp

Version: 10.3+ ZYPP builds this way only for the 10.3 codebase and beyond

Since version 3.x, libzypp uses cmake to build.

If you are using factory, cmake is available already. For releases, look into this Build Service repository.

cmake builds by default in a separate directory. It is a good practice.

If you don't work with the subversion repository, get the source as a compressed tar file and untar zypp-3.x.x.tar.bz2 tarball in /somewhere

cd /somewhere; tar -jxpvf /downloads/zypp-3.x.x.tar.bz2

create a directory for building, like /zypp-build

mkdir /zypp-build

Go to the build directory

cd /zypp-build

run cmake /somewhere/libzypp-3.x.x, e.g.

cmake -DCMAKE_INSTALL_PREFIX=/opt/zypp3 /somewhere/libzypp-3.x.x

By default cmake builds with rpath on the build tree. That way the executables work inside the build tree. This causes re-linking at installation time. Use -DCMAKE_BUILD_WITH_INSTALL_RPATH=1 or -DCMAKE_SKIP_RPATH=1 to skip rpath at all.

(You might need a couple of packages, like popt-devel, rpm-devel, dbus-1-devel, dbus-1-glib-devel, hal-devel, doxygen, graphviz, libxml2-devel, boost, boost-devel, gettext-devel, dejagnu, zlib-devel, libicu, glib2-devel, readline-devel, curl-devel, e2fsprogs-devel, libidn-devel, openssl-devel, libsatsolver-devel.)

You will see cmake configuring the build

-- Libraries will be installed in /opt/zypp3/lib
-- rpm found: includes in /usr/include, library in /usr/lib/
-- boost found: includes in /usr/include, library in /usr/lib
-- Found Gettext:
-- hal found: includes in /usr/include, library in /usr/lib/
-- dbus found: includes in /usr/include/dbus-1.0, library in /usr/lib/
-- glib found: includes in /opt/gnome/include/glib-2.0, library in /opt/gnome/lib/
-- glib found: includes in /opt/gnome/include/glib-2.0, library in /opt/gnome/lib/
-- curl found: includes in /usr/include, library in /usr/lib/
-- libxml found: includes in /usr/include, library in /usr/lib/
-- sqlite found: includes in /usr/include, library in /usr/lib/
-- doxygen found: /usr/bin/doxygen
-- soname: 300.0.0
-- version: 3.0.0
-- Writing spec file...
-- Writing pkg-config file...
-- FindZypp.cmake will be installed in /opt/zypp3/share/cmake/Modules
-- Configuring done
-- Generating done
-- Build files have been written to: /build-zypp

run make


If you want full output, you can:

make VERBOSE=1


To run libzypp's testsuite, change into the zypp-build/tests directory and do

make test


Go to the zypp-build/po directory

make translations
make install

Creating a directory ready for mbuild, srcpackage or build service

Stand in the build directory

make srcpackage
make srcpackage will check that all your files are committed. If you want an rpm from your current local sources, use make srcpackage_local

Now you will find the tarball, spec and changes file in the build/package directory.

Developping a zypp based program using cmake

libzypp-devel includes a FindZypp.cmake



in your top-level CMakeLists.txt file and you will get the variables ZYPP_INCLUDE_DIR AND ZYPP_LIBRARY defined.

Developing with the zypp build system



ZYPP custom build system variables

The following additional variables are defined:


Tips and tricks

Compile flags and defines

To set special compile flags for certain files add this in CMakeLists.txt, where the ${files} variable contains one or more source files and the ${value} variable any value:


make uninstall?

See CMake FAQ.