KDE 4 class for cdbs

Peter Eisentraut peter_e at gmx.net
Tue Feb 12 11:28:28 UTC 2008


I would like to put a generic kde4 class into cdbs, much like the existing kde
class.  I'd imagine that, as was done for KDE 3, the KDE packaging team would
then create its own wrapper around that.  I have taken
http://svn.debian.org/viewsvn/pkg-kde/branches/kde4/cdbs/kde.mk and attempted
to isolate the generic parts.  So here is some discussion about that.


| include /usr/share/cdbs/1/class/cmake.mk
| include /usr/share/cdbs/1/rules/debhelper.mk
| include /usr/share/cdbs/1/rules/patchsys-quilt.mk
| include /usr/share/cdbs/1/rules/utils.mk

In keeping with cdbs architecture, the kde4 class should include only cmake.mk.
You can add the others in the team-specific wrapper.

| DEB_COMPRESS_EXCLUDE = .dcl .docbook -license .tag .sty .el

This was also in the KDE 3 class, so I'll put it into the KDE 4 class as well.

| DEB_CMAKE_EXTRA_FLAGS += \
| 			-DCMAKE_BUILD_TYPE=Debian \

I don't see "Debian" documented as a valid value for this variable.  What is
this supposed to do?  Should this be in the cmake class?

| 			$(KDE4-ENABLE-FINAL) \
| 			-DKDE4_BUILD_TESTS=false \
| 			-DKDE_DISTRIBUTION_TEXT="Debian packages" \
| 			-DCMAKE_SKIP_RPATH=true \

This last line is already in the cmake class, so it can be removed.

| 			-DKDE4_USE_ALWAYS_FULL_RPATH=false \
| 			-DCONFIG_INSTALL_DIR=/etc/kde4 \
| 			-DDATA_INSTALL_DIR=/usr/share/kde4/apps \
| 			-DHTML_INSTALL_DIR=/usr/share/doc/kde4/HTML \
| 			-DKCFG_INSTALL_DIR=/usr/share/kde4/config.kcfg \
| 			-DLIB_INSTALL_DIR=/usr/lib \
| 			-DSYSCONF_INSTALL_DIR=/etc \
| 			-DCMAKE_SHARED_LINKER_FLAGS="-Wl,--no-undefined -Wl,--as-needed" \
| 			-DCMAKE_MODULE_LINKER_FLAGS="-Wl,--no-undefined -Wl,--as-needed" \
| 			-DCMAKE_EXE_LINKER_FLAGS="-Wl,--no-undefined -Wl,--as-needed"

These linker options are of course useful, but are we sure enough that they
work with all KDE-related software packages?

I'll put all the other options into the kde4 class.

| DEB_DH_INSTALL_ARGS = --sourcedir=debian/tmp

This fails if the source package only builds one binary package, so we I can't
put that into the public kde4 class.  You can keep it in the team-specific
wrapper if you know what you are doing.

| ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|     cdbs_treat_me_gently_arches := arm m68k alpha ppc64 armel armeb
|     ifeq (,$(filter $(DEB_HOST_ARCH_CPU),$(cdbs_treat_me_gently_arches)))
|         KDE4-ENABLE-FINAL = $(if $(DEB_KDE_ENABLE_FINAL),-DKDE4_ENABLE_FINAL=true,)
|     else
|         KDE4-ENABLE-FINAL =
|     endif
| endif

Ah yes, well, bug #379981 ...

I could be OK with this handling if we had a less ad-hoc way of defining the
"slow" architectures.  Who would have guessed that alpha and ppc64 are slow?
How is that decided?  Should this be in a configuration file perhaps?  Any
better ideas?

| common-build-arch:: debian/stamp-man-pages
| debian/stamp-man-pages:

This was in the old team file, so we'll keep it there.

| $(patsubst %,binary-install/%,$(DEB_PACKAGES)) :: binary-install/%:
| 	if test -x /usr/bin/dh_desktop; then dh_desktop -p$(cdbs_curpkg) $(DEB_DH_DESKTOP_ARGS); fi

So, does someone want to tell me about dh_desktop and KDE?  As some of you
have noticed, I have so far been fighting the GNOME people and their icon
caches and MIME databases. :-)  There is no dh_desktop call in the old KDE 3
class.  What is supposed to happen here?

| 	if test -e debian/$(cdbs_curpkg).lintian; then \
| 		install -p -D -m644 debian/$(cdbs_curpkg).lintian \
| 			debian/$(cdbs_curpkg)/usr/share/lintian/overrides/$(cdbs_curpkg); \
| 	fi
| 	if test -e debian/$(cdbs_curpkg).presubj; then \
| 		install -p -D -m644 debian/$(cdbs_curpkg).presubj \
| 			debian/$(cdbs_curpkg)/usr/share/bug/$(cdbs_curpkg)/presubj; \
| 	fi

We'll keep that in the team file for now, but I'd love to see that in
debhelper some day.

| binary-install/$(DEB_SOURCE_PACKAGE)-doc-html::

This also belongs in the team file.


Attached is the current minimalist proposal for a kde4 class in cdbs based on
the above observations.  Please comment.
-------------- next part --------------
# -*- mode: makefile; coding: utf-8 -*-
# Copyright © 2008 Peter Eisentraut <petere at debian.org>
# Description: A class for KDE 4 packages
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2, or (at
# your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA.

#PATH_RULES#

ifndef _cdbs_class_kde4
_cdbs_class_kde4 = 1

include $(_cdbs_class_path)/cmake.mk$(_cdbs_makefile_suffix)

DEB_CMAKE_EXTRA_FLAGS += \
			-DKDE4_BUILD_TESTS=false \
			-DKDE_DISTRIBUTION_TEXT="Debian packages" \
			-DKDE4_USE_ALWAYS_FULL_RPATH=false \
			-DCONFIG_INSTALL_DIR=/etc/kde4 \
			-DDATA_INSTALL_DIR=/usr/share/kde4/apps \
			-DHTML_INSTALL_DIR=/usr/share/doc/kde4/HTML \
			-DKCFG_INSTALL_DIR=/usr/share/kde4/config.kcfg \
			-DLIB_INSTALL_DIR=/usr/lib \
			-DSYSCONF_INSTALL_DIR=/etc \
			-DCMAKE_SHARED_LINKER_FLAGS="-Wl,--no-undefined -Wl,--as-needed" \
			-DCMAKE_MODULE_LINKER_FLAGS="-Wl,--no-undefined -Wl,--as-needed" \
			-DCMAKE_EXE_LINKER_FLAGS="-Wl,--no-undefined -Wl,--as-needed"

ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	DEB_CMAKE_EXTRA_FLAGS += $(if $(DEB_KDE_ENABLE_FINAL),-DKDE4_ENABLE_FINAL=true,)
endif

DEB_COMPRESS_EXCLUDE = .dcl .docbook -license .tag .sty .el

endif


More information about the pkg-kde-talk mailing list