summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Sautier <sbraz@gentoo.org>2024-02-27 23:54:54 +0100
committerLouis Sautier <sbraz@gentoo.org>2024-02-28 01:20:23 +0100
commit1874462c4871f306a0b80e6b665b723e0b3bd329 (patch)
tree2487975dade9f0c38c0ab8c242d831917b0aa70b /net-irc
parentsys-devel/gcc: drop old 14 snapshots (diff)
downloadgentoo-1874462c4871f306a0b80e6b665b723e0b3bd329.tar.gz
gentoo-1874462c4871f306a0b80e6b665b723e0b3bd329.tar.bz2
gentoo-1874462c4871f306a0b80e6b665b723e0b3bd329.zip
net-irc/znc: add 1.9.0
* Introduces a new argon2 USE flag which causes passwords to be hashed with Argon2id instead of SHA-256, this requires app-crypt/argon2. * Requires dev-cpp/cctz, see #925664 for rekeywording. * Requires a newer GoogleTest version for testing. Bug: https://bugs.gentoo.org/925664 Signed-off-by: Louis Sautier <sbraz@gentoo.org>
Diffstat (limited to 'net-irc')
-rw-r--r--net-irc/znc/Manifest2
-rw-r--r--net-irc/znc/files/znc-1.9.0-skip-modperl-modpython-tests-cleaner.patch248
-rw-r--r--net-irc/znc/metadata.xml1
-rw-r--r--net-irc/znc/znc-1.9.0.ebuild199
-rw-r--r--net-irc/znc/znc-9999.ebuild2
5 files changed, 451 insertions, 1 deletions
diff --git a/net-irc/znc/Manifest b/net-irc/znc/Manifest
index 7216d3aa8148..51254b02c536 100644
--- a/net-irc/znc/Manifest
+++ b/net-irc/znc/Manifest
@@ -1,2 +1,4 @@
+DIST gtest-1.14.0.tar.gz 867764 BLAKE2B c457f55ac572b9fb1553eee3df7eeeaf1e7dd2c3d747dd5e90dd279038fa5c71bb7b7d9ba1cf7e6143898b2a1d24d100584bd2a48ded41a426870c4825eec1b2 SHA512 765c326ccc1b87a01027385e69238266e356361cd4ee3e18e3c9d137a5d11fa5d657c164d02dd1be8fe693c8e10f2b580588dbfa57d27f070e2750f50d3e662c
DIST gtest-1.8.1.tar.gz 992298 BLAKE2B 40ef3417fe424205c0617f07207347ce671ac87605f8ac9b8a333b0b06e3fbef9f556041ee324c18f957f3258ab9fe06704f31cdd038355fb7890180eb77ced1 SHA512 e6283c667558e1fd6e49fa96e52af0e415a3c8037afe1d28b7ff1ec4c2ef8f49beb70a9327b7fc77eb4052a58c4ccad8b5260ec90e4bceeac7a46ff59c4369d7
DIST znc-1.8.2.tar.gz 2101215 BLAKE2B 7f0e5840fe57cc6b6549115b0fcf02e6afd3be0bf52e79da0a39bcc1463d983cbeb504bad30f3d2f7582f0295c7210d3c1eec40ec87bcc3546ba2d21a67cca9e SHA512 e821647b50698c3a82fad039e69943e030bf644d8f8e82afa87c6c11da44761bceecddd510a7a956a1b487b1cca6ee46e8ac8818ea03127f0f1ff8f5d1a1a7f9
+DIST znc-1.9.0.tar.gz 2221116 BLAKE2B 00bf472f0c223684c52a8c1a1a4b699346e58718161e6c40e3423591ef49aa13b6a530eb705e6f9e9cd6ce8937b4ee4e89de62d15aca7f2b19e1e8b603351d6e SHA512 22b8bd6fd7332643860f7a99ceaa0f6d0c9dd8ba9edac14b3f3731c9301eeb58e03e3af8d09e939e453aa980ff9f24afbe79e66d1106993f81d8779c97731a17
diff --git a/net-irc/znc/files/znc-1.9.0-skip-modperl-modpython-tests-cleaner.patch b/net-irc/znc/files/znc-1.9.0-skip-modperl-modpython-tests-cleaner.patch
new file mode 100644
index 000000000000..fae99b5d6583
--- /dev/null
+++ b/net-irc/znc/files/znc-1.9.0-skip-modperl-modpython-tests-cleaner.patch
@@ -0,0 +1,248 @@
+https://github.com/znc/znc/commit/f8552fc814ebe662a9fc16d6cafa1c0314498971
+
+From f8552fc814ebe662a9fc16d6cafa1c0314498971 Mon Sep 17 00:00:00 2001
+From: Alexey Sokolov <alexey+znc@asokolov.org>
+Date: Sun, 25 Feb 2024 14:12:53 +0000
+Subject: [PATCH] Skip modperl/modpython tests cleaner
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -411,6 +411,8 @@ else()
+ endif()
+
+ configure_file("include/znc/zncconfig.h.cmake.in" "include/znc/zncconfig.h")
++configure_file("test/integration/znctestconfig.h.cmake.in"
++ "test/integration/znctestconfig.h")
+ add_subdirectory(include)
+ add_subdirectory(src)
+ add_subdirectory(modules)
+--- a/test/integration/CMakeLists.txt
++++ b/test/integration/CMakeLists.txt
+@@ -45,6 +45,7 @@ add_executable(inttest
+ target_link_libraries(inttest Qt5::Network Threads::Threads)
+ target_include_directories(inttest PUBLIC
+ "${PROJECT_SOURCE_DIR}/framework"
++ "${PROJECT_BINARY_DIR}"
+ "${GTEST_ROOT}" "${GTEST_ROOT}/include"
+ "${GMOCK_ROOT}" "${GMOCK_ROOT}/include")
+ target_compile_definitions(inttest PRIVATE
+--- a/test/integration/tests/core.cpp
++++ b/test/integration/tests/core.cpp
+@@ -14,9 +14,11 @@
+ * limitations under the License.
+ */
+
++#include <gtest/gtest.h>
+ #include <gmock/gmock.h>
+
+ #include "znctest.h"
++#include "znctestconfig.h"
+
+ using testing::HasSubstr;
+ using testing::ContainsRegex;
+@@ -584,10 +586,9 @@ TEST_P(AllLanguages, ServerDependentCapInModule) {
+ )");
+ break;
+ case 2:
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PYTHON
++ GTEST_SKIP() << "Modpython is disabled";
++#endif
+ znc->CanLeak();
+ InstallModule("testmod.py", R"(
+ import znc
+@@ -603,10 +604,9 @@ TEST_P(AllLanguages, ServerDependentCapInModule) {
+ client.Write("znc loadmod modpython");
+ break;
+ case 3:
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PERL
++ GTEST_SKIP() << "Modperl is disabled";
++#endif
+ znc->CanLeak();
+ InstallModule("testmod.pm", R"(
+ package testmod;
+--- a/test/integration/tests/scripting.cpp
++++ b/test/integration/tests/scripting.cpp
+@@ -15,15 +15,15 @@
+ */
+
+ #include "znctest.h"
++#include "znctestconfig.h"
+
+ namespace znc_inttest {
+ namespace {
+
+ TEST_F(ZNCTest, Modperl) {
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PERL
++ GTEST_SKIP() << "Modperl is disabled";
++#endif
+ auto znc = Run();
+ znc->CanLeak();
+ auto ircd = ConnectIRCd();
+@@ -37,10 +37,9 @@ TEST_F(ZNCTest, Modperl) {
+ }
+
+ TEST_F(ZNCTest, Modpython) {
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PYTHON
++ GTEST_SKIP() << "Modpython is disabled";
++#endif
+ auto znc = Run();
+ znc->CanLeak();
+ auto ircd = ConnectIRCd();
+@@ -65,10 +64,9 @@ TEST_F(ZNCTest, Modpython) {
+ }
+
+ TEST_F(ZNCTest, ModpythonSocket) {
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PYTHON
++ GTEST_SKIP() << "Modpython is disabled";
++#endif
+ auto znc = Run();
+ znc->CanLeak();
+
+@@ -107,10 +105,9 @@ TEST_F(ZNCTest, ModpythonSocket) {
+ }
+
+ TEST_F(ZNCTest, ModperlSocket) {
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PERL
++ GTEST_SKIP() << "Modperl is disabled";
++#endif
+ auto znc = Run();
+ znc->CanLeak();
+
+@@ -160,10 +157,9 @@ TEST_F(ZNCTest, ModperlSocket) {
+ }
+
+ TEST_F(ZNCTest, ModpythonVCString) {
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PYTHON
++ GTEST_SKIP() << "Modpython is disabled";
++#endif
+ auto znc = Run();
+ znc->CanLeak();
+
+@@ -185,10 +181,9 @@ TEST_F(ZNCTest, ModpythonVCString) {
+ }
+
+ TEST_F(ZNCTest, ModperlVCString) {
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PERL
++ GTEST_SKIP() << "Modperl is disabled";
++#endif
+ auto znc = Run();
+ znc->CanLeak();
+
+@@ -214,10 +209,9 @@ TEST_F(ZNCTest, ModperlVCString) {
+ }
+
+ TEST_F(ZNCTest, ModperlNV) {
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PERL
++ GTEST_SKIP() << "Modperl is disabled";
++#endif
+ auto znc = Run();
+ znc->CanLeak();
+
+@@ -244,10 +238,9 @@ TEST_F(ZNCTest, ModperlNV) {
+ }
+
+ TEST_F(ZNCTest, ModpythonPackage) {
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PYTHON
++ GTEST_SKIP() << "Modpython is disabled";
++#endif
+ auto znc = Run();
+ znc->CanLeak();
+
+@@ -285,10 +278,12 @@ TEST_F(ZNCTest, ModpythonPackage) {
+ }
+
+ TEST_F(ZNCTest, ModpythonModperl) {
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
++#ifndef WANT_PYTHON
++ GTEST_SKIP() << "Modpython is disabled";
++#endif
++#ifndef WANT_PERL
++ GTEST_SKIP() << "Modperl is disabled";
++#endif
+ auto znc = Run();
+ znc->CanLeak();
+
+@@ -302,11 +297,9 @@ TEST_F(ZNCTest, ModpythonModperl) {
+ }
+
+ TEST_F(ZNCTest, ModpythonCommand) {
+- if (QProcessEnvironment::systemEnvironment().value(
+- "DISABLED_ZNC_PERL_PYTHON_TEST") == "1") {
+- return;
+- }
+-
++#ifndef WANT_PYTHON
++ GTEST_SKIP() << "Modpython is disabled";
++#endif
+ auto znc = Run();
+ znc->CanLeak();
+
+--- /dev/null
++++ b/test/integration/znctestconfig.h.cmake.in
+@@ -0,0 +1,23 @@
++/*
++ * Copyright (C) 2004-2024 ZNC, see the NOTICE file for details.
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++
++#ifndef ZNCTESTCONFIG_H
++#define ZNCTESTCONFIG_H
++
++#cmakedefine WANT_PYTHON 1
++#cmakedefine WANT_PERL 1
++
++#endif /* ZNCTESTCONFIG_H */
diff --git a/net-irc/znc/metadata.xml b/net-irc/znc/metadata.xml
index 0f8b809bc2b3..3e24db470216 100644
--- a/net-irc/znc/metadata.xml
+++ b/net-irc/znc/metadata.xml
@@ -7,6 +7,7 @@
</maintainer>
<use>
<flag name="zlib">Enable mod_deflate-like gzip support for znc's web interface using <pkg>sys-libs/zlib</pkg>.</flag>
+ <flag name="argon2">Store password hashes using Argon2id instead of SHA-256</flag>
</use>
<upstream>
<remote-id type="github">znc/znc</remote-id>
diff --git a/net-irc/znc/znc-1.9.0.ebuild b/net-irc/znc/znc-1.9.0.ebuild
new file mode 100644
index 000000000000..3210a73582c6
--- /dev/null
+++ b/net-irc/znc/znc-1.9.0.ebuild
@@ -0,0 +1,199 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit cmake python-single-r1 readme.gentoo-r1 systemd
+
+GTEST_VER="1.14.0"
+GTEST_URL="https://github.com/google/googletest/archive/${GTEST_VER}.tar.gz -> gtest-${GTEST_VER}.tar.gz"
+DESCRIPTION="An advanced IRC Bouncer"
+
+if [[ ${PV} == *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/znc/znc.git"
+else
+ MY_PV=${PV/_/-}
+ MY_P=${PN}-${MY_PV}
+ SRC_URI="
+ https://znc.in/releases/archive/${MY_P}.tar.gz
+ test? ( ${GTEST_URL} )
+ "
+ KEYWORDS="~amd64"
+ S=${WORKDIR}/${MY_P}
+fi
+
+HOMEPAGE="https://znc.in"
+LICENSE="Apache-2.0"
+# "If you upgrade your ZNC version, you must recompile all your modules."
+# - https://wiki.znc.in/Compiling_modules
+SLOT="0/${PV}"
+IUSE="+argon2 +icu nls perl python +ssl sasl tcl test +zlib"
+RESTRICT="!test? ( test )"
+
+# tests run znc-buildmod which is a Python script
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} icu )
+ test? ( ${PYTHON_REQUIRED_USE} )
+"
+
+# perl is a build-time dependency of modpython
+BDEPEND="
+ virtual/pkgconfig
+ nls? ( sys-devel/gettext )
+ perl? (
+ >=dev-lang/swig-4.0.1
+ >=dev-lang/perl-5.10
+ )
+ python? (
+ >=dev-lang/swig-4.0.1
+ >=dev-lang/perl-5.10
+ )
+ test? (
+ ${PYTHON_DEPS}
+ dev-qt/qtnetwork:5
+ )
+"
+DEPEND="
+ dev-cpp/cctz:=
+ argon2? ( app-crypt/argon2:= )
+ icu? ( dev-libs/icu:= )
+ nls? ( dev-libs/boost:=[nls] )
+ perl? ( >=dev-lang/perl-5.10:= )
+ python? ( ${PYTHON_DEPS} )
+ sasl? ( >=dev-libs/cyrus-sasl-2 )
+ ssl? ( dev-libs/openssl:0= )
+ tcl? ( dev-lang/tcl:0= )
+ zlib? ( sys-libs/zlib:0= )
+"
+RDEPEND="
+ ${DEPEND}
+ acct-user/znc
+ acct-group/znc
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-1.7.1-inttest-dir.patch"
+ # The following patch is a backport, it can be removed during the next bump
+ "${FILESDIR}/${P}-skip-modperl-modpython-tests-cleaner.patch"
+)
+
+pkg_setup() {
+ if use python || use test; then
+ python-single-r1_pkg_setup
+ fi
+}
+
+src_prepare() {
+ # Let SWIG rebuild modperl/modpython to make user patching easier.
+ if [[ ${PV} != *9999* ]]; then
+ rm modules/modperl/generated.tar.gz || die
+ rm modules/modpython/generated.tar.gz || die
+ fi
+
+ sed -i -e "s|DZNC_BIN_DIR:path=|DZNC_BIN_DIR:path=${T}/inttest|" \
+ test/CMakeLists.txt || die
+
+ sed -i "s|--datadir=|&${EPREFIX}|" znc.service.in || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DWANT_SYSTEMD=yes # Causes -DSYSTEMD_DIR to be used.
+ -DSYSTEMD_DIR="$(systemd_get_systemunitdir)"
+ -DWANT_ICU="$(usex icu)"
+ -DWANT_ARGON="$(usex argon2)"
+ -DWANT_IPV6=yes
+ -DWANT_I18N="$(usex nls)"
+ -DWANT_PERL="$(usex perl)"
+ -DWANT_PYTHON="$(usex python)"
+ -DWANT_PYTHON_VERSION="${EPYTHON#python}"
+ -DWANT_CYRUS="$(usex sasl)"
+ -DWANT_OPENSSL="$(usex ssl)"
+ -DWANT_TCL="$(usex tcl)"
+ -DWANT_ZLIB="$(usex zlib)"
+ )
+
+ if [[ ${PV} != *9999* ]] && use test; then
+ export GTEST_ROOT="${WORKDIR}/googletest-${GTEST_VER}/googletest"
+ export GMOCK_ROOT="${WORKDIR}/googletest-${GTEST_VER}/googlemock"
+ fi
+
+ cmake_src_configure
+}
+
+src_test() {
+ cmake_build unittest
+ DESTDIR="${T}/inttest" cmake_build install
+ local filter='-'
+ if ! use perl; then
+ filter="${filter}:ZNCTest.Modperl*"
+ fi
+ if ! use python; then
+ filter="${filter}:ZNCTest.Modpython*"
+ fi
+ # CMAKE_PREFIX_PATH and CXXFLAGS are needed for znc-buildmod
+ # invocations from inside the test
+ GTEST_FILTER="${filter}" ZNC_UNUSUAL_ROOT="${T}/inttest" \
+ CMAKE_PREFIX_PATH="${T}/inttest/usr/share/znc/cmake" \
+ CXXFLAGS="${CXXFLAGS} -isystem ${T}/inttest/usr/include" \
+ cmake_build inttest
+}
+
+src_install() {
+ cmake_src_install
+
+ dodoc NOTICE
+ newinitd "${FILESDIR}"/znc.initd-r2 znc
+ newconfd "${FILESDIR}"/znc.confd-r1 znc
+
+ local DOC_CONTENTS
+ # "local" has its own return value which is not what we want to catch
+ DOC_CONTENTS=$(<"${FILESDIR}/README.gentoo-r1") || die
+ local DISABLE_AUTOFORMATTING=1
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ if [[ -d "${EROOT}/var/lib/znc/.znc/" ]]; then
+ eerror "${EROOT}/var/lib/znc/.znc/ exists, please move your data to ${EROOT}/var/lib/znc/"
+ eerror ""
+ eerror "The systemd unit has changed and now expects data to be located"
+ eerror "at the root of ${EROOT}/var/lib/znc instead of its '.znc' subfolder."
+ eerror "The recommended procedure to move the data is the following:"
+ eerror "1. stop the service: systemctl stop znc.service"
+ eerror "2. move the data: cp -a '${EROOT}/var/lib/znc/.znc/.' '${EROOT}/var/lib/znc/'"
+ eerror "3. fix the config file: sed -i 's|${EROOT}/var/lib/znc/.znc|${EROOT}/var/lib/znc|g' '${EROOT}/var/lib/znc/configs/znc.conf'"
+ eerror "4. restart znc: systemctl start znc.service"
+ eerror "5. once everything works, remove the old data directory: rm -r '${EROOT}/var/lib/znc/.znc/'"
+ eerror "See https://bugs.gentoo.org/743856 for details."
+ fi
+
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ # This is a new installation
+ readme.gentoo_print_elog
+ fi
+}
+
+pkg_config() {
+ if [[ -d "${EROOT}/var/lib/znc/configs" ]]; then
+ ewarn "${EROOT}/var/lib/znc/configs/ already exists,"
+ ewarn "aborting to avoid damaging any existing configuration."
+ ewarn "If you are sure you want to generate a new configuration,"
+ ewarn "remove the folder and try again."
+ else
+ einfo "Press enter to interactively create a new configuration file for znc."
+ einfo "To abort, press Control-C"
+ read
+ su ${PN} -p -s /bin/sh -c 'ZNC_NO_LAUNCH_AFTER_MAKECONF=1 \
+ "${EROOT}"/usr/bin/znc --makeconf \
+ --datadir "${EROOT}/var/lib/znc"' || die "Config failed"
+ einfo
+ einfo "You can now start the znc service using the init system of your choice."
+ einfo "Don't forget to enable it if you want to use znc at boot."
+ fi
+}
diff --git a/net-irc/znc/znc-9999.ebuild b/net-irc/znc/znc-9999.ebuild
index c40af00c86f0..34bfa81f2f20 100644
--- a/net-irc/znc/znc-9999.ebuild
+++ b/net-irc/znc/znc-9999.ebuild
@@ -21,7 +21,7 @@ else
https://znc.in/releases/archive/${MY_P}.tar.gz
test? ( ${GTEST_URL} )
"
- KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
S=${WORKDIR}/${MY_P}
fi