gentoo-ebuilds/net-irc/quassel/quassel-0.14.0-r6.ebuild
Johannes Huber d600744aaf
net-irc/quassel: drop dependency dev-libs/libdbusmenu-qt
The last upstream snapshot "release" of libdbusmenu-qt happened in 2016,
with no development since then. It depends on Qt 5, which is scheduled
for removal (bug #948836). Quassel and KNotifications are the last
 consumers of the library.

Libdbusmenu was introduced upstream as an optional dependency in commit
5d9af8ed007d38faf3995ea18174249121f246fe in 2010, to improve system
integration of the menu and its respective icons in the system tray.
(As a side note, even upstream could not test the feature themselves
when it was introduced.)

If upstream becomes active again and wants to resurrect the feature with
a migration to Qt 6, it would need to be re-implemented or dropped
anyway.

Bug: https://bugs.gentoo.org/938826
Signed-off-by: Johannes Huber <johu@gmx.de>
Part-of: https://github.com/gentoo/gentoo/pull/42323
Closes: https://github.com/gentoo/gentoo/pull/42323
Signed-off-by: Sam James <sam@gentoo.org>
2025-06-08 00:17:03 +01:00

207 lines
5 KiB
Bash

# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake optfeature pax-utils systemd xdg-utils
if [[ ${PV} != *9999* ]]; then
MY_P=${PN}-${PV/_/-}
if [[ ${PV} == *_rc* ]] ; then
SRC_URI="https://github.com/quassel/quassel/archive/refs/tags/${PV/_/-}.tar.gz -> ${P}.tar.gz"
else
SRC_URI="https://quassel-irc.org/pub/${MY_P}.tar.bz2"
KEYWORDS="amd64 ~arm arm64 ~ppc64 ~riscv ~x86 ~amd64-linux"
fi
S="${WORKDIR}/${MY_P}"
else
EGIT_REPO_URI=( "https://github.com/${PN}/${PN}" )
inherit git-r3
fi
DESCRIPTION="Qt/KDE IRC client supporting a remote daemon for 24/7 connectivity"
HOMEPAGE="https://quassel-irc.org/"
LICENSE="GPL-3"
SLOT="0"
IUSE="+dbus gui kde ldap monolithic oxygen postgres +server spell syslog +system-icons test"
REQUIRED_USE="
|| ( gui server monolithic )
kde? ( dbus spell )
ldap? ( || ( server monolithic ) )
postgres? ( || ( server monolithic ) )
spell? ( || ( gui monolithic ) )
syslog? ( || ( server monolithic ) )
"
RESTRICT="!test? ( test )"
SERVER_DEPEND="
acct-group/quassel
acct-user/quassel
ldap? ( net-nds/openldap:= )
postgres? ( dev-qt/qtsql:5[postgres] )
!postgres? (
dev-qt/qtsql:5[sqlite]
dev-db/sqlite:3[threadsafe(+),-secure-delete]
)
syslog? ( virtual/logger )
"
GUI_DEPEND="
dev-qt/qtgui:5
dev-qt/qtmultimedia:5
dev-qt/qtwidgets:5
dbus? ( dev-qt/qtdbus:5 )
kde? (
kde-frameworks/kconfigwidgets:5
kde-frameworks/kcoreaddons:5
kde-frameworks/knotifications:5
kde-frameworks/knotifyconfig:5
kde-frameworks/ktextwidgets:5
kde-frameworks/kwidgetsaddons:5
kde-frameworks/kxmlgui:5
)
spell? ( kde-frameworks/sonnet:5 )
system-icons? (
kde-frameworks/breeze-icons:*
oxygen? ( kde-frameworks/oxygen-icons:* )
)
"
RDEPEND="
dev-libs/boost:=
dev-qt/qtcore:5
dev-qt/qtnetwork:5[ssl]
sys-libs/zlib
monolithic? (
${SERVER_DEPEND}
${GUI_DEPEND}
)
!monolithic? (
server? ( ${SERVER_DEPEND} )
gui? ( ${GUI_DEPEND} )
)
"
DEPEND="
${RDEPEND}
test? (
dev-cpp/gtest
dev-qt/qttest:5
)
"
BDEPEND="
dev-qt/linguist-tools:5
kde-frameworks/extra-cmake-modules:0
"
DOCS=( AUTHORS ChangeLog README.md )
PATCHES=(
"${FILESDIR}/${P}-cxxflags.patch"
"${FILESDIR}/${P}-fix-desktop-application-name.patch"
"${FILESDIR}/${P}-fix-exec-script.patch"
"${FILESDIR}/${P}-fix-mpris-script.patch"
"${FILESDIR}/${P}-fix-notifyrc.patch"
)
src_configure() {
local mycmakeargs=(
-DUSE_CCACHE=OFF
-DCMAKE_SKIP_RPATH=ON
-DEMBED_DATA=OFF
-DWITH_WEBKIT=OFF
-DWITH_BUNDLED_ICONS=$(usex !system-icons)
-DWANT_QTCLIENT=$(usex gui)
-DWITH_KDE=$(usex kde)
-DWITH_LDAP=$(usex ldap)
-DWANT_MONO=$(usex monolithic)
-DWITH_OXYGEN_ICONS=$(usex oxygen)
-DWANT_CORE=$(usex server)
-DBUILD_TESTING=$(usex test)
-DWITH_WEBENGINE=OFF # bug 925723
)
# bug #830708
if use gui || use monolithic ; then
mycmakeargs+=(
-DCMAKE_DISABLE_FIND_PACKAGE_LibsnoreQt5=ON
-DCMAKE_DISABLE_FIND_PACKAGE_dbusmenu-qt5=ON
$(cmake_use_find_package dbus Qt5DBus)
$(cmake_use_find_package spell KF5Sonnet)
)
fi
if use server || use monolithic ; then
mycmakeargs+=(
# only packaged for qt6 now. Prevent it from being autodetected.
-DCMAKE_DISABLE_FIND_PACKAGE_Qca-qt5=ON
)
fi
cmake_src_configure
}
src_install() {
cmake_src_install
if use server ; then
# Needs PaX marking, bug #346255
pax-mark m "${ED}"/usr/bin/quasselcore
# Init scripts & systemd unit
newinitd "${FILESDIR}"/quasselcore.init-r1 quasselcore
newconfd "${FILESDIR}"/quasselcore.conf-r1 quasselcore
systemd_dounit "${FILESDIR}"/quasselcore.service
# logrotate
insinto /etc/logrotate.d
newins "${FILESDIR}"/quassel.logrotate quassel
fi
}
src_test() {
LD_LIBRARY_PATH="${BUILD_DIR}/lib:${LD_LIBRARY_PATH}" cmake_src_test
}
pkg_postinst() {
if use monolithic ; then
elog "Information on how to enable SSL support for client/core connections"
elog "is available at: https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Client-Core_SSL_support"
fi
if use server ; then
einfo "If you want to generate SSL certificate, remember to run:"
einfo " emerge --config =${CATEGORY}/${PF}"
fi
if use server || use monolithic ; then
optfeature "running Quassel within an ident daemon" "net-misc/oidentd"
fi
xdg_icon_cache_update
}
pkg_postrm() {
xdg_icon_cache_update
}
pkg_config() {
if use server ; then
# Generate the pem file only when it does not already exist
QUASSEL_DIR="${EROOT}"/var/lib/${PN}
if [[ ! -f "${QUASSEL_DIR}/quasselCert.pem" ]] ; then
einfo "Generating Quassel SSL certificate to: \"${QUASSEL_DIR}/quasselCert.pem\""
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout "${QUASSEL_DIR}/quasselCert.pem" \
-out "${QUASSEL_DIR}/quasselCert.pem" || die
# Permissions for the key
chown ${PN}:${PN} "${QUASSEL_DIR}/quasselCert.pem" || die
chmod 400 "${QUASSEL_DIR}/quasselCert.pem" || die
else
einfo "Certificate \"${QUASSEL_DIR}/quasselCert.pem\" already exists."
einfo "Remove it if you want to create new one."
fi
fi
}