sm-commit AT lists.ibiblio.org
Subject: Source Mage code commit list
List archive
[SM-Commit] GIT changes to master grimoire by Florian Franzmann (b8a724018d57426cb6bc0bb9e6078a651d2095c2)
- From: Florian Franzmann <scm AT sourcemage.org>
- To: sm-commit AT lists.ibiblio.org
- Subject: [SM-Commit] GIT changes to master grimoire by Florian Franzmann (b8a724018d57426cb6bc0bb9e6078a651d2095c2)
- Date: Sun, 12 Jun 2022 11:29:05 +0000
GIT changes to master grimoire by Florian Franzmann <bwlf AT bandrate.org>:
ChangeLog | 3
audio-soft/mumble/BUILD | 19
audio-soft/mumble/CONFIGURE | 4
audio-soft/mumble/DEPENDS | 81 +
audio-soft/mumble/DETAILS | 18
audio-soft/mumble/HISTORY | 61 +
audio-soft/mumble/PRE_BUILD | 4
audio-soft/mumble/patches/mumble-1.4-openssl3.patch | 550
++++++++++
audio-soft/mumble/patches/mumble-1.4.230-missing-include.patch | 33
devel/llvm/DETAILS | 2
devel/llvm/HISTORY | 3
editors/vim/DETAILS | 4
editors/vim/HISTORY | 3
gnome2-libs/librsvg2/DETAILS | 4
gnome2-libs/librsvg2/HISTORY | 3
python-pypi/borgbackup/DETAILS | 2
python-pypi/borgbackup/HISTORY | 3
python-pypi/setuptools/DETAILS | 4
python-pypi/setuptools/HISTORY | 3
qt5/qtbase/BUILD | 2
qt5/qtbase/HISTORY | 3
utils/file/DETAILS | 2
utils/file/HISTORY | 3
utils/inxi/DETAILS | 4
utils/inxi/HISTORY | 3
25 files changed, 809 insertions(+), 12 deletions(-)
New commits:
commit b8a724018d57426cb6bc0bb9e6078a651d2095c2
Author: Florian Franzmann <bwlf AT bandrate.org>
Commit: Florian Franzmann <bwlf AT bandrate.org>
audio-soft/mumble: fix build, switch to cmake
commit ca7f3fd967bd3344351cf20a775848601efb3a17
Author: Florian Franzmann <bwlf AT bandrate.org>
Commit: Florian Franzmann <bwlf AT bandrate.org>
qt5/qtbase: use default_build_make
commit cb415db088a1c104c66ed6752f271db955805d6c
Author: Florian Franzmann <bwlf AT bandrate.org>
Commit: Florian Franzmann <bwlf AT bandrate.org>
audio-soft/mumble: Move here from games grimoire
commit be8d3a2cfa4c823226f6d6dc2f0484f69a43d008
Author: Florian Franzmann <bwlf AT bandrate.org>
Commit: Florian Franzmann <bwlf AT bandrate.org>
python-pypi/borgbackup: version 1.2.1
commit 7abbc46a5a2de453fcf48c880206fd88b48fc29a
Author: Florian Franzmann <bwlf AT bandrate.org>
Commit: Florian Franzmann <bwlf AT bandrate.org>
python-pypi/setuptools: version 62.3.3
commit b331896d2f2410ff5d08eee109100f75546b2d25
Author: Florian Franzmann <bwlf AT bandrate.org>
Commit: Florian Franzmann <bwlf AT bandrate.org>
editors/vim: version 8.2.5076
commit eec45361fc107bfef31ca021cfe4437fbdd170c8
Author: Florian Franzmann <bwlf AT bandrate.org>
Commit: Florian Franzmann <bwlf AT bandrate.org>
utils/inxi: version 3.3.17-1
commit d1007938e21fba5204610f9f4a31161936853134
Author: Florian Franzmann <bwlf AT bandrate.org>
Commit: Florian Franzmann <bwlf AT bandrate.org>
gnome2-libs/librsvg2: version 2.54.4
commit cf58948e8889e254c53859f3e29144238d2fb1a2
Author: Florian Franzmann <bwlf AT bandrate.org>
Commit: Florian Franzmann <bwlf AT bandrate.org>
devel/llvm: version 14.0.5
commit 97447e2b7de95d47e399b7c357185174aa3ea62f
Author: Florian Franzmann <bwlf AT bandrate.org>
Commit: Florian Franzmann <bwlf AT bandrate.org>
utils/file: version 5.42
diff --git a/ChangeLog b/ChangeLog
index eaa70b9..e360aa4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2022-06-11 Florian Franzmann <bwlf AT bandrate.org>
+ * audio-soft/mumble: move here from games grimoire
+
2022-06-10 Treeve Jelbert <treeve AT sourcemage.org>
* archive/7z: added, offical 7-Zip
* libs/dragonbox: added, float-to-string conversion algorithm
diff --git a/audio-soft/mumble/BUILD b/audio-soft/mumble/BUILD
new file mode 100755
index 0000000..ea3a892
--- /dev/null
+++ b/audio-soft/mumble/BUILD
@@ -0,0 +1,19 @@
+if [[ "$MUMBLE_SERVER" == 'n' ]]; then
+ OPTS+=" -Dserver=off"
+else
+ OPTS+=" -Dserver=on"
+fi
+
+if [[ "$MUMBLE_CLIENT" == 'n' ]]; then
+ OPTS+=" -Dclient=off"
+else
+ OPTS+=" -Dclient=on"
+fi
+
+OPTS+=" -Dbundle-qt-translations=off" &&
+OPTS+=" -Dupdate=off" &&
+OPTS+=" -Doverlay=off" &&
+OPTS+=" -Dbundled-celt=on" &&
+OPTS+=" -Dwarnings-as-errors=off" &&
+
+default_build
diff --git a/audio-soft/mumble/CONFIGURE b/audio-soft/mumble/CONFIGURE
new file mode 100755
index 0000000..05586e7
--- /dev/null
+++ b/audio-soft/mumble/CONFIGURE
@@ -0,0 +1,4 @@
+. "$GRIMOIRE"/CMAKE_CONFIGURE &&
+
+config_query MUMBLE_SERVER "Build server (murmur)?" y &&
+config_query MUMBLE_CLIENT "Build client (mumble)?" y
diff --git a/audio-soft/mumble/DEPENDS b/audio-soft/mumble/DEPENDS
new file mode 100755
index 0000000..baa7b73
--- /dev/null
+++ b/audio-soft/mumble/DEPENDS
@@ -0,0 +1,81 @@
+. "$GRIMOIRE"/CMAKE_DEPENDS &&
+
+depends hicolor-icon-theme &&
+
+depends -sub CXX gcc &&
+depends boost &&
+
+depends libx11 &&
+depends libxi &&
+depends xdg-utils &&
+
+depends poco &&
+
+# fixme: also supports libressl
+depends openssl &&
+
+# UI
+depends qtbase &&
+depends qttools &&
+depends qtsvg &&
+
+depends libxevie &&
+
+optional_depends dbus \
+ '-Ddbus=on' \
+ '-Ddbus=off' \
+ 'for dbus support' &&
+
+optional_depends speech-dispatcher \
+ "" \
+ "CONFIG+=no-speechd" \
+ "for Text-to-Speech support" &&
+
+# Network / Crypto
+depends protobuf &&
+depends SSL &&
+depends -sub COMPAT_LIBDNS_SD avahi &&
+
+# Audio I/O
+depends libsndfile &&
+optional_depends alsa-lib \
+ '-Dalsa=on' \
+ '-Dalsa=off' \
+ 'for ALSA support' &&
+
+optional_depends pulseaudio \
+ '-Dpulseaudio=on' \
+ '-Dpulseaudio=off' \
+ 'for PulseAudio support' &&
+
+optional_depends pipewire \
+ '-Dpipewire=on' \
+ '-Dpipewire=off' \
+ 'for pipewire support' &&
+
+optional_depends portaudio19 \
+ '-Dportaudio=on' \
+ '-Dportaudio=off' \
+ 'for PortAudio support' &&
+
+suggest_depends JACK-DRIVER \
+ "-Djackaudio=on" \
+ "-Djackaudio=off" \
+ "for jack support" &&
+
+
+optional_depends qtspeech \
+ '-Dqtspeech=on' \
+ '-Dqtspeech=off' \
+ "use qtspeech instead of mumble's builtin text-to-speech
implementation" &&
+
+optional_depends speech-dispatcher \
+ '-Dspeechd=on' \
+ '-Dspeechd=off' \
+ "for speech-dispatcher support" &&
+
+# Codecs
+depends speex "-Dbundled-speex=off" &&
+depends speexdsp &&
+
+depends opus "-Dbundled-opus=off"
diff --git a/audio-soft/mumble/DETAILS b/audio-soft/mumble/DETAILS
new file mode 100755
index 0000000..30579aa
--- /dev/null
+++ b/audio-soft/mumble/DETAILS
@@ -0,0 +1,18 @@
+. "$GRIMOIRE"/CMAKE_FUNCTIONS
+ SPELL=mumble
+ VERSION=1.4.230
+ SOURCE=$SPELL-$VERSION.tar.gz
+SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-$VERSION.src
+
SOURCE_URL[0]=https://github.com/mumble-voip/$SPELL/releases/download/v$VERSION/$SOURCE
+
SOURCE_HASH=sha512:6cffc7a95d88b33876f4093b99266468210f5c14f190fbd2fbe4991bef91a567e55296e7c8c6cc99e19c054853211085cc3cc08109e367e6776afb70766b3a53
+ WEB_SITE=http://mumble.sourceforge.net
+ ENTERED=20080626
+ LICENSE[0]=GPL
+ STAGED_INSTALL=off
+ SHORT="low-latency, high-quality voice communication for gamers"
+cat << EOF
+Low-latency, high-quality voice communication for gamers. Includes game
linking,
+so voice from other players comes from the direction of their characters, and
+has echo cancellation so the sound from your loudspeakers won't be audible to
+other players.
+EOF
diff --git a/audio-soft/mumble/HISTORY b/audio-soft/mumble/HISTORY
new file mode 100644
index 0000000..fb24b47
--- /dev/null
+++ b/audio-soft/mumble/HISTORY
@@ -0,0 +1,61 @@
+2022-06-12 Florian Franzmann <bwlf AT bandrate.org>
+ * PRE_BUILD: switch to cmake, apply patches
+ * patches/mumble-1.4.230-missing-include.patch: add patch from
+ archlinux to fix build error
+ * patches/mumble-1.4-openssl3.patch: add patch from Gentoo to fix
+ build with OpenSSL 3
+ * DETAILS, BUILD, DEPENDS, CONFIGURE: switch to cmake
+ * INSTALL: removed
+
+2022-01-29 Florian Franzmann <bwlf AT bandrate.org>
+ * DETAILS: version 1.4.230
+
+2021-02-13 Florian Franzmann <bwlf AT bandrate.org>
+ * DETAILS: version 1.3.4
+ * INSTALL: force creation of symlinks even if they exist
+
+2020-10-09 Florian Franzmann <bwlf AT bandrate.org>
+ * DETAILS: version 1.3.3
+
+2020-08-15 Florian Franzmann <bwlf AT bandrate.org>
+ * BUILD, DEPENDS, DETAILS, INSTALL, PRE_BUILD: version 1.3.2
+
+2017-07-13 Ismael Luceno <ismael AT sourcemage.org>
+ * DETAILS: updated spell to 1.2.19
+
+2016-11-22 Ismael Luceno <ismael AT sourcemage.org>
+ * DEPENDS: Switched to SSL, compiles against LibreSSL too
+ * BUILD: Fixed QT4 path
+
+2016-09-23 Ismael Luceno <ismael AT sourcemage.org>
+ * PRE_BUILD: Added code to remove any missing translations
+ * DETAILS: Fixed SOURCE_URL[0]
+ updated spell to 1.2.16
+ * DEPENDS: Updated dependencies
+ * BUILD: Fixed build configuration and flags
+
+2015-03-29 Ismael Luceno <ismael AT sourcemage.org>
+ * DEPENDS: Switch dependency on g++ to gcc
+
+2011-02-20 Bor Kraljič <pyrobor AT ver.si>
+ * DETAILS: updated spell to 1.2.3
+
+2010-12-04 Bor Kraljič <pyrobor AT ver.si>
+ * PRE_BUILD: remove qt_ja_JP.qm from build since qt4 doesn't install
it
+
+2010-04-05 Ismael Luceno <ismael AT sourcemage.org>
+ * DEPENDS: depends on qt4 sqlite support
+
+2010-04-04 Ismael Luceno <ismael AT sourcemage.org>
+ * BUILD: disable G15 keyboard support
+ * BUILD: convert dependencies on avahi and speech-dispatcher to
optional
+ * DEPENDS, BUILD: move OPTS to BUILD
+ * CONFIGURE, BUILD: make server, client and overlay optionals
+ * INSTALL: fix installation and permissions
+
+2010-04-03 Ismael Luceno <ismael AT sourcemage.org>
+ * DETAILS: updated spell to 1.2.2
+ * DEPENDS: depends on protobuf, avahi, libsndfile
+
+2008-06-26 Alexander Tsamutali <astsmtl AT gmail.com>
+ * DETAILS, DEPENDS, BUILD, INSTALL, HISTORY: Created
diff --git a/audio-soft/mumble/PRE_BUILD b/audio-soft/mumble/PRE_BUILD
new file mode 100755
index 0000000..3357329
--- /dev/null
+++ b/audio-soft/mumble/PRE_BUILD
@@ -0,0 +1,4 @@
+default_pre_build &&
+cd "$SOURCE_DIRECTORY" &&
+
+apply_patch_dir patches
diff --git a/audio-soft/mumble/patches/mumble-1.4-openssl3.patch
b/audio-soft/mumble/patches/mumble-1.4-openssl3.patch
new file mode 100644
index 0000000..c31b720
--- /dev/null
+++ b/audio-soft/mumble/patches/mumble-1.4-openssl3.patch
@@ -0,0 +1,550 @@
+From f4cea62ed95e4967d8591f25e903f5e8fc2e2a30 Mon Sep 17 00:00:00 2001
+From: Terry Geng <terry AT terriex.com>
+Date: Mon, 6 Dec 2021 10:45:11 -0500
+Subject: [PATCH] BUILD(crypto): Migrate to OpenSSL 3.0-compatible API
+
+OpenSSL 3.0 deprecated several low-level APIs and the usage of them
+caused errors/warnings that prevent the binary from being built against
+OpenSSL 3.0.
+Some primitive efforts have been made in #5317 but were incomplete.
+This commit follows
https://www.openssl.org/docs/man3.0/man7/migration_guide.html,
+https://code.woboq.org/qt6/qtopcua/src/opcua/x509/qopcuakeypair_openssl.cpp.html,
+and clears all errors/warnings related to the usage of deprecated APIs.
+
+Fixes #5277
+Fixes #4266
+---
+ src/SelfSignedCertificate.cpp | 235 +++++++++++-----------------------
+ src/SelfSignedCertificate.h | 5 +
+ src/crypto/CryptStateOCB2.cpp | 53 +++++---
+ src/crypto/CryptStateOCB2.h | 9 +-
+ 4 files changed, 121 insertions(+), 181 deletions(-)
+
+diff --git a/src/SelfSignedCertificate.cpp b/src/SelfSignedCertificate.cpp
+index a77e5fad91..ea0dec4cc7 100644
+--- a/src/SelfSignedCertificate.cpp
++++ b/src/SelfSignedCertificate.cpp
+@@ -5,8 +5,6 @@
+
+ #include "SelfSignedCertificate.h"
+
+-#include <openssl/x509v3.h>
+-
+ #define SSL_STRING(x) QString::fromLatin1(x).toUtf8().data()
+
+ static int add_ext(X509 *crt, int nid, char *value) {
+@@ -28,108 +26,86 @@ static int add_ext(X509 *crt, int nid, char *value) {
+ return 1;
+ }
+
+-bool SelfSignedCertificate::generate(CertificateType certificateType,
QString clientCertName, QString clientCertEmail,
+-
QSslCertificate &qscCert, QSslKey &qskKey) {
+- bool ok = true;
+- X509 *x509 = nullptr;
+- EVP_PKEY *pkey = nullptr;
+- RSA *rsa = nullptr;
+- BIGNUM *e = nullptr;
+- X509_NAME *name = nullptr;
+- ASN1_INTEGER *serialNumber = nullptr;
+- ASN1_TIME *notBefore = nullptr;
+- ASN1_TIME *notAfter = nullptr;
+- QString commonName;
+- bool isServerCert = certificateType ==
CertificateTypeServerCertificate;
+-
+- if (CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) == -1) {
+- ok = false;
+- goto out;
++EVP_PKEY *SelfSignedCertificate::generate_rsa_keypair() {
++ EVP_PKEY *pkey = EVP_PKEY_new();
++ if (!pkey) {
++ return nullptr;
+ }
+
+- x509 = X509_new();
+- if (!x509) {
+- ok = false;
+- goto out;
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++ EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, nullptr);
++ if (!ctx) {
++ return nullptr;
+ }
+-
+- pkey = EVP_PKEY_new();
+- if (!pkey) {
+- ok = false;
+- goto out;
++ if (EVP_PKEY_keygen_init(ctx) <= 0) {
++ return nullptr;
+ }
+-
+- rsa = RSA_new();
++ if (EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, 2048) <= 0) {
++ return nullptr;
++ }
++ if (EVP_PKEY_keygen(ctx, &pkey) <= 0) {
++ return nullptr;
++ }
++ EVP_PKEY_CTX_free(ctx);
++#else
++ RSA *rsa = RSA_new();
++ BIGNUM *e = BN_new();
+ if (!rsa) {
+- ok = false;
+- goto out;
++ return nullptr;
+ }
+-
+- e = BN_new();
+ if (!e) {
+- ok = false;
+- goto out;
++ return nullptr;
+ }
+ if (BN_set_word(e, 65537) == 0) {
+- ok = false;
+- goto out;
++ return nullptr;
+ }
+-
+ if (RSA_generate_key_ex(rsa, 2048, e, nullptr) == 0) {
+- ok = false;
+- goto out;
++ return nullptr;
+ }
+-
+ if (EVP_PKEY_assign_RSA(pkey, rsa) == 0) {
+- ok = false;
+- goto out;
++ return nullptr;
+ }
++ BN_free(e);
++ RSA_free(rsa);
++#endif
++ return pkey;
++}
+
+- if (X509_set_version(x509, 2) == 0) {
+- ok = false;
+- goto out;
++#define CHECK(statement) \
++ if (!(statement)) { \
++ ok = false; \
++ goto out; \
+ }
+
+- serialNumber = X509_get_serialNumber(x509);
+- if (!serialNumber) {
+- ok = false;
+- goto out;
+- }
+- if (ASN1_INTEGER_set(serialNumber, 1) == 0) {
+- ok = false;
+- goto out;
+- }
+
+- notBefore = X509_get_notBefore(x509);
+- if (!notBefore) {
+- ok = false;
+- goto out;
+- }
+- if (!X509_gmtime_adj(notBefore, 0)) {
+- ok = false;
+- goto out;
+- }
++bool SelfSignedCertificate::generate(CertificateType certificateType,
QString clientCertName, QString clientCertEmail,
++
QSslCertificate &qscCert, QSslKey &qskKey) {
++ bool ok = true;
++ EVP_PKEY *pkey = nullptr;
++ X509 *x509 = nullptr;
++ X509_NAME *name = nullptr;
++ ASN1_INTEGER *serialNumber = nullptr;
++ ASN1_TIME *notBefore = nullptr;
++ ASN1_TIME *notAfter = nullptr;
++ QString commonName;
++ bool isServerCert = certificateType ==
CertificateTypeServerCertificate;
+
+- notAfter = X509_get_notAfter(x509);
+- if (!notAfter) {
+- ok = false;
+- goto out;
+- }
+- if (!X509_gmtime_adj(notAfter, 60 * 60 * 24 * 365 * 20)) {
+- ok = false;
+- goto out;
+- }
++ // In Qt 5.15, a class was added to wrap up the procedures of
generating a self-signed certificate.
++ // See
https://doc.qt.io/qt-5/qopcuax509certificatesigningrequest.html.
++ // We should consider migrating to this class after switching to Qt
5.15.
+
+- if (X509_set_pubkey(x509, pkey) == 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(pkey = generate_rsa_keypair());
+
+- name = X509_get_subject_name(x509);
+- if (!name) {
+- ok = false;
+- goto out;
+- }
++ CHECK(x509 = X509_new());
++ CHECK(X509_set_version(x509, 2));
++ CHECK(serialNumber = X509_get_serialNumber(x509));
++ CHECK(ASN1_INTEGER_set(serialNumber, 1));
++ CHECK(notBefore = X509_get_notBefore(x509));
++ CHECK(X509_gmtime_adj(notBefore, 0));
++ CHECK(notAfter = X509_get_notAfter(x509));
++ CHECK(X509_gmtime_adj(notAfter, 60 * 60 * 24 * 365 * 20))
++ CHECK(X509_set_pubkey(x509, pkey));
++ CHECK(name = X509_get_subject_name(x509));
+
+ if (isServerCert) {
+ commonName = QLatin1String("Murmur Autogenerated Certificate
v2");
+@@ -141,120 +117,63 @@ bool SelfSignedCertificate::generate(CertificateType
certificateType, QString cl
+ }
+ }
+
+- if (X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_UTF8,
+-
reinterpret_cast< unsigned char * >(commonName.toUtf8().data()), -1, -1, 0)
+- == 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_UTF8,
++
reinterpret_cast< unsigned char * >(commonName.toUtf8().data()), -1, -1, 0));
+
+- if (X509_set_issuer_name(x509, name) == 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(X509_set_issuer_name(x509, name));
+
+- if (add_ext(x509, NID_basic_constraints,
SSL_STRING("critical,CA:FALSE")) == 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(add_ext(x509, NID_basic_constraints,
SSL_STRING("critical,CA:FALSE")));
+
+ if (isServerCert) {
+- if (add_ext(x509, NID_ext_key_usage,
SSL_STRING("serverAuth,clientAuth")) == 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(add_ext(x509, NID_ext_key_usage,
SSL_STRING("serverAuth,clientAuth")))
+ } else {
+- if (add_ext(x509, NID_ext_key_usage,
SSL_STRING("clientAuth")) == 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(add_ext(x509, NID_ext_key_usage,
SSL_STRING("clientAuth")));
+ }
+
+- if (add_ext(x509, NID_subject_key_identifier, SSL_STRING("hash")) ==
0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(add_ext(x509, NID_subject_key_identifier, SSL_STRING("hash")));
+
+ if (isServerCert) {
+- if (add_ext(x509, NID_netscape_comment, SSL_STRING("Generated
from murmur")) == 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(add_ext(x509, NID_netscape_comment,
SSL_STRING("Generated from murmur")));
+ } else {
+- if (add_ext(x509, NID_netscape_comment, SSL_STRING("Generated
by Mumble")) == 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(add_ext(x509, NID_netscape_comment,
SSL_STRING("Generated by Mumble")));
+ }
+
+ if (!isServerCert) {
+ if (!clientCertEmail.trimmed().isEmpty()) {
+- if (add_ext(x509, NID_subject_alt_name,
+-
QString::fromLatin1("email:%1").arg(clientCertEmail).toUtf8().data())
+- == 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(add_ext(x509, NID_subject_alt_name,
++
QString::fromLatin1("email:%1").arg(clientCertEmail).toUtf8().data()));
+ }
+ }
+
+- if (X509_sign(x509, pkey, EVP_sha1()) == 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(X509_sign(x509, pkey, EVP_sha1()));
+
+ {
+ QByteArray crt;
+ int len = i2d_X509(x509, nullptr);
+- if (len <= 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(len > 0);
+ crt.resize(len);
+
+ unsigned char *dptr = reinterpret_cast< unsigned char *
>(crt.data());
+- if (i2d_X509(x509, &dptr) != len) {
+- ok = false;
+- goto out;
+- }
++ CHECK(i2d_X509(x509, &dptr) == len);
+
+ qscCert = QSslCertificate(crt, QSsl::Der);
+- if (qscCert.isNull()) {
+- ok = false;
+- goto out;
+- }
++ CHECK(!qscCert.isNull());
+ }
+
+ {
+ QByteArray key;
+ int len = i2d_PrivateKey(pkey, nullptr);
+- if (len <= 0) {
+- ok = false;
+- goto out;
+- }
++ CHECK(len > 0);
+ key.resize(len);
+
+ unsigned char *dptr = reinterpret_cast< unsigned char *
>(key.data());
+- if (i2d_PrivateKey(pkey, &dptr) != len) {
+- ok = false;
+- goto out;
+- }
++ CHECK(i2d_PrivateKey(pkey, &dptr) == len);
+
+ qskKey = QSslKey(key, QSsl::Rsa, QSsl::Der);
+- if (qskKey.isNull()) {
+- ok = false;
+- goto out;
+- }
++ CHECK(!qskKey.isNull());
+ }
+
+ out:
+- if (e) {
+- BN_free(e);
+- }
+- // We only need to free the pkey pointer,
+- // not the RSA pointer. We have assigned
+- // our RSA key to pkey, and it will be freed
+- // once we free pkey.
+ if (pkey) {
+ EVP_PKEY_free(pkey);
+ }
+diff --git a/src/SelfSignedCertificate.h b/src/SelfSignedCertificate.h
+index b85a8752b8..7c5f59e9c5 100644
+--- a/src/SelfSignedCertificate.h
++++ b/src/SelfSignedCertificate.h
+@@ -6,6 +6,10 @@
+ #ifndef MUMBLE_SELFSIGNEDCERTIFICATE_H_
+ #define MUMBLE_SELFSIGNEDCERTIFICATE_H_
+
++#include <openssl/evp.h>
++#include <openssl/rsa.h>
++#include <openssl/x509v3.h>
++
+ #include <QtCore/QString>
+ #include <QtNetwork/QSslCertificate>
+ #include <QtNetwork/QSslKey>
+@@ -16,6 +20,7 @@ class SelfSignedCertificate {
+ private:
+ static bool generate(CertificateType certificateType, QString
clientCertName, QString clientCertEmail,
+ QSslCertificate &qscCert,
QSslKey &qskKey);
++ static EVP_PKEY *generate_rsa_keypair();
+
+ public:
+ static bool generateMumbleCertificate(QString name, QString email,
QSslCertificate &qscCert, QSslKey &qskKey);
+diff --git a/src/crypto/CryptStateOCB2.cpp b/src/crypto/CryptStateOCB2.cpp
+index 2176d64883..640fdedac8 100644
+--- a/src/crypto/CryptStateOCB2.cpp
++++ b/src/crypto/CryptStateOCB2.cpp
+@@ -30,7 +30,7 @@
+ #include <cstring>
+ #include <openssl/rand.h>
+
+-CryptStateOCB2::CryptStateOCB2() : CryptState() {
++CryptStateOCB2::CryptStateOCB2() : CryptState(),
enc_ctx(EVP_CIPHER_CTX_new()), dec_ctx(EVP_CIPHER_CTX_new()) {
+ for (int i = 0; i < 0x100; i++)
+ decrypt_history[i] = 0;
+ memset(raw_key, 0, AES_KEY_SIZE_BYTES);
+@@ -38,6 +38,11 @@ CryptStateOCB2::CryptStateOCB2() : CryptState() {
+ memset(decrypt_iv, 0, AES_BLOCK_SIZE);
+ }
+
++CryptStateOCB2::~CryptStateOCB2() noexcept {
++ EVP_CIPHER_CTX_free(enc_ctx);
++ EVP_CIPHER_CTX_free(dec_ctx);
++}
++
+ bool CryptStateOCB2::isValid() const {
+ return bInit;
+ }
+@@ -46,8 +51,6 @@ void CryptStateOCB2::genKey() {
+ CryptographicRandom::fillBuffer(raw_key, AES_KEY_SIZE_BYTES);
+ CryptographicRandom::fillBuffer(encrypt_iv, AES_BLOCK_SIZE);
+ CryptographicRandom::fillBuffer(decrypt_iv, AES_BLOCK_SIZE);
+- AES_set_encrypt_key(raw_key, AES_KEY_SIZE_BITS, &encrypt_key);
+- AES_set_decrypt_key(raw_key, AES_KEY_SIZE_BITS, &decrypt_key);
+ bInit = true;
+ }
+
+@@ -56,8 +59,6 @@ bool CryptStateOCB2::setKey(const std::string &rkey, const
std::string &eiv, con
+ memcpy(raw_key, rkey.data(), AES_KEY_SIZE_BYTES);
+ memcpy(encrypt_iv, eiv.data(), AES_BLOCK_SIZE);
+ memcpy(decrypt_iv, div.data(), AES_BLOCK_SIZE);
+- AES_set_encrypt_key(raw_key, AES_KEY_SIZE_BITS, &encrypt_key);
+- AES_set_decrypt_key(raw_key, AES_KEY_SIZE_BITS, &decrypt_key);
+ bInit = true;
+ return true;
+ }
+@@ -256,10 +257,24 @@ static void inline ZERO(keyblock &block) {
+ block[i] = 0;
+ }
+
+-#define AESencrypt(src, dst, key) \
+- AES_encrypt(reinterpret_cast< const unsigned char * >(src),
reinterpret_cast< unsigned char * >(dst), key);
+-#define AESdecrypt(src, dst, key) \
+- AES_decrypt(reinterpret_cast< const unsigned char * >(src),
reinterpret_cast< unsigned char * >(dst), key);
++#define AESencrypt(src, dst, key)
\
++ {
\
++ int outlen = 0;
\
++ EVP_EncryptInit_ex(enc_ctx, EVP_aes_128_ecb(), NULL, key,
NULL); \
++ EVP_CIPHER_CTX_set_padding(enc_ctx, 0);
\
++ EVP_EncryptUpdate(enc_ctx, reinterpret_cast< unsigned char *
>(dst), &outlen, \
++ reinterpret_cast< const
unsigned char * >(src), AES_BLOCK_SIZE); \
++ EVP_EncryptFinal_ex(enc_ctx, reinterpret_cast< unsigned char
* >(dst + outlen), &outlen); \
++ }
++#define AESdecrypt(src, dst, key)
\
++ {
\
++ int outlen = 0;
\
++ EVP_DecryptInit_ex(dec_ctx, EVP_aes_128_ecb(), NULL, key,
NULL); \
++ EVP_CIPHER_CTX_set_padding(dec_ctx, 0);
\
++ EVP_DecryptUpdate(dec_ctx, reinterpret_cast< unsigned char *
>(dst), &outlen, \
++ reinterpret_cast< const
unsigned char * >(src), AES_BLOCK_SIZE); \
++ EVP_DecryptFinal_ex(dec_ctx, reinterpret_cast< unsigned char
* >(dst + outlen), &outlen); \
++ }
+
+ bool CryptStateOCB2::ocb_encrypt(const unsigned char *plain, unsigned char
*encrypted, unsigned int len,
+ const
unsigned char *nonce, unsigned char *tag, bool modifyPlainOnXEXStarAttack) {
+@@ -267,7 +282,7 @@ bool CryptStateOCB2::ocb_encrypt(const unsigned char
*plain, unsigned char *encr
+ bool success = true;
+
+ // Initialize
+- AESencrypt(nonce, delta, &encrypt_key);
++ AESencrypt(nonce, delta, raw_key);
+ ZERO(checksum);
+
+ while (len > AES_BLOCK_SIZE) {
+@@ -299,7 +314,7 @@ bool CryptStateOCB2::ocb_encrypt(const unsigned char
*plain, unsigned char *encr
+ if (flipABit) {
+ *reinterpret_cast< unsigned char * >(tmp) ^= 1;
+ }
+- AESencrypt(tmp, tmp, &encrypt_key);
++ AESencrypt(tmp, tmp, raw_key);
+ XOR(reinterpret_cast< subblock * >(encrypted), delta, tmp);
+ XOR(checksum, checksum, reinterpret_cast< const subblock *
>(plain));
+ if (flipABit) {
+@@ -315,7 +330,7 @@ bool CryptStateOCB2::ocb_encrypt(const unsigned char
*plain, unsigned char *encr
+ ZERO(tmp);
+ tmp[BLOCKSIZE - 1] = SWAPPED(len * 8);
+ XOR(tmp, tmp, delta);
+- AESencrypt(tmp, pad, &encrypt_key);
++ AESencrypt(tmp, pad, raw_key);
+ memcpy(tmp, plain, len);
+ memcpy(reinterpret_cast< unsigned char * >(tmp) + len,
reinterpret_cast< const unsigned char * >(pad) + len,
+ AES_BLOCK_SIZE - len);
+@@ -325,7 +340,7 @@ bool CryptStateOCB2::ocb_encrypt(const unsigned char
*plain, unsigned char *encr
+
+ S3(delta);
+ XOR(tmp, delta, checksum);
+- AESencrypt(tmp, tag, &encrypt_key);
++ AESencrypt(tmp, tag, raw_key);
+
+ return success;
+ }
+@@ -336,13 +351,13 @@ bool CryptStateOCB2::ocb_decrypt(const unsigned char
*encrypted, unsigned char *
+ bool success = true;
+
+ // Initialize
+- AESencrypt(nonce, delta, &encrypt_key);
++ AESencrypt(nonce, delta, raw_key);
+ ZERO(checksum);
+
+ while (len > AES_BLOCK_SIZE) {
+ S2(delta);
+ XOR(tmp, delta, reinterpret_cast< const subblock *
>(encrypted));
+- AESdecrypt(tmp, tmp, &decrypt_key);
++ AESdecrypt(tmp, tmp, raw_key);
+ XOR(reinterpret_cast< subblock * >(plain), delta, tmp);
+ XOR(checksum, checksum, reinterpret_cast< const subblock *
>(plain));
+ len -= AES_BLOCK_SIZE;
+@@ -354,7 +369,7 @@ bool CryptStateOCB2::ocb_decrypt(const unsigned char
*encrypted, unsigned char *
+ ZERO(tmp);
+ tmp[BLOCKSIZE - 1] = SWAPPED(len * 8);
+ XOR(tmp, tmp, delta);
+- AESencrypt(tmp, pad, &encrypt_key);
++ AESencrypt(tmp, pad, raw_key);
+ memset(tmp, 0, AES_BLOCK_SIZE);
+ memcpy(tmp, encrypted, len);
+ XOR(tmp, tmp, pad);
+@@ -372,7 +387,7 @@ bool CryptStateOCB2::ocb_decrypt(const unsigned char
*encrypted, unsigned char *
+
+ S3(delta);
+ XOR(tmp, delta, checksum);
+- AESencrypt(tmp, tag, &encrypt_key);
++ AESencrypt(tmp, tag, raw_key);
+
+ return success;
+ }
+@@ -381,5 +396,5 @@ bool CryptStateOCB2::ocb_decrypt(const unsigned char
*encrypted, unsigned char *
+ #undef SHIFTBITS
+ #undef SWAPPED
+ #undef HIGHBIT
+-#undef AES_encrypt
+-#undef AES_decrypt
++#undef AESencrypt
++#undef AESdecrypt
+diff --git a/src/crypto/CryptStateOCB2.h b/src/crypto/CryptStateOCB2.h
+index 53d4b4b6aa..cc3f1c0bc3 100644
+--- a/src/crypto/CryptStateOCB2.h
++++ b/src/crypto/CryptStateOCB2.h
+@@ -8,8 +8,9 @@
+
+ #include "CryptState.h"
+
+-#include <openssl/aes.h>
++#include <openssl/evp.h>
+
++#define AES_BLOCK_SIZE 16
+ #define AES_KEY_SIZE_BITS 128
+ #define AES_KEY_SIZE_BYTES (AES_KEY_SIZE_BITS / 8)
+
+@@ -17,7 +18,7 @@
+ class CryptStateOCB2 : public CryptState {
+ public:
+ CryptStateOCB2();
+- ~CryptStateOCB2(){};
++ ~CryptStateOCB2() noexcept override;
+
+ virtual bool isValid() const Q_DECL_OVERRIDE;
+ virtual void genKey() Q_DECL_OVERRIDE;
+@@ -43,8 +44,8 @@ class CryptStateOCB2 : public CryptState {
+ unsigned char decrypt_iv[AES_BLOCK_SIZE];
+ unsigned char decrypt_history[0x100];
+
+- AES_KEY encrypt_key;
+- AES_KEY decrypt_key;
++ EVP_CIPHER_CTX *enc_ctx;
++ EVP_CIPHER_CTX *dec_ctx;
+ };
+
+
diff --git a/audio-soft/mumble/patches/mumble-1.4.230-missing-include.patch
b/audio-soft/mumble/patches/mumble-1.4.230-missing-include.patch
new file mode 100644
index 0000000..e9bdc54
--- /dev/null
+++ b/audio-soft/mumble/patches/mumble-1.4.230-missing-include.patch
@@ -0,0 +1,33 @@
+commit a2a2aabdf535cb7f09dfa1c2d4e10566246b06a9
+Author: Sergei Trofimovich <slyich AT gmail.com>
+Date: Sun Feb 27 10:59:57 2022 +0000
+
+ BUILD(positional-audio): Fix missing <memory> include
+
+ Without the change the build fails on upcoming gcc-12 as:
+
+ /build/mumble/plugins/gtav/gtav.cpp:13:13:
+ error: 'unique_ptr' in namespace 'std' does not name a template
type
+ 13 | static std::unique_ptr< Game > game;
+ | ^~~~~~~~~~
+ /build/mumble/plugins/gtav/gtav.cpp:12:1:
+ note: 'std::unique_ptr' is defined in header '<memory>';
+ did you forget to '#include <memory>'?
+ 11 | #include <cstring>
+ +++ |+#include <memory>
+ 12 |
+
+ (cherry picked from commit 36398fb3b293fc889bbc38df29665359f5c2a0ca)
+
+diff --git a/plugins/gtav/gtav.cpp b/plugins/gtav/gtav.cpp
+index 468ff8922..829b1f544 100644
+--- a/plugins/gtav/gtav.cpp
++++ b/plugins/gtav/gtav.cpp
+@@ -9,6 +9,7 @@
+ #include "mumble_positional_audio_utils.h"
+
+ #include <cstring>
++#include <memory>
+
+ static std::unique_ptr< Game > game;
+
diff --git a/devel/llvm/DETAILS b/devel/llvm/DETAILS
index 39b98b9..ca9d16e 100755
--- a/devel/llvm/DETAILS
+++ b/devel/llvm/DETAILS
@@ -1,5 +1,5 @@
SPELL=llvm
- VERSION=14.0.4
+ VERSION=14.0.5
SOURCE="${SPELL}-${VERSION}.src.tar.xz"
SOURCE2=$SOURCE.sig
GITHUB_URI="https://github.com/llvm/llvm-project/releases/download/llvmorg-$VERSION"
diff --git a/devel/llvm/HISTORY b/devel/llvm/HISTORY
index 6c1ecd3..311a0c4 100644
--- a/devel/llvm/HISTORY
+++ b/devel/llvm/HISTORY
@@ -1,3 +1,6 @@
+2022-06-11 Florian Franzmann <bwlf AT bandrate.org>
+ * DETAILS: version 14.0.5
+
2022-05-25 Pavel Vinogradov <public AT sourcemage.org>
* DETAILS: version 14.0.4
diff --git a/editors/vim/DETAILS b/editors/vim/DETAILS
index f800eec..77bbffa 100755
--- a/editors/vim/DETAILS
+++ b/editors/vim/DETAILS
@@ -9,8 +9,8 @@ SOURCE_DIRECTORY="${BUILD_DIRECTORY}/${SPELL}-scm"
SOURCE_IGNORE="volatile"
FORCE_DOWNLOAD="on"
else
- VERSION=8.2.5054
-
SOURCE_HASH=sha512:59f3583055637d248825dc15b2bef78e6444adedb8f6cd3fece3925a291cccd83d1326f11ea4ef3f02e3c769cc71bbbc4709508e803ced7db357911394955ce9
+ VERSION=8.2.5076
+
SOURCE_HASH=sha512:2c3a99272057001d492649377624f958569df4650c476660aeeffba06279f4ff434b5335e3f26917378ef70a9348cd72b3120a278c83d0f26eb2279d5bbcd437
SECURITY_PATCH=5
SOURCE=${SPELL}-${VERSION}.tar.gz
SOURCE_DIRECTORY=${BUILD_DIRECTORY}/${SPELL}-${VERSION}
diff --git a/editors/vim/HISTORY b/editors/vim/HISTORY
index ee3cdc6..3360436 100644
--- a/editors/vim/HISTORY
+++ b/editors/vim/HISTORY
@@ -1,3 +1,6 @@
+2022-06-11 Florian Franzmann <bwlf AT bandrate.org>
+ * DETAILS: version 8.2.5076
+
2022-06-04 Florian Franzmann <bwlf AT bandrate.org>
* DETAILS: version 8.2.5054
diff --git a/gnome2-libs/librsvg2/DETAILS b/gnome2-libs/librsvg2/DETAILS
index 3b669d0..71f2a41 100755
--- a/gnome2-libs/librsvg2/DETAILS
+++ b/gnome2-libs/librsvg2/DETAILS
@@ -3,8 +3,8 @@ if [[ "${LIBRSVG2_BRANCH}" == "devel" ]]; then
VERSION=2.49.3
SOURCE_HASH=sha512:161a98f70ce63e9db7b61ae51c8551db792ec5d2b68d04f9724f986060de244e74598326f69ea80376cd01a539c2a8ee02bdc94db1233880b9696655548a4b4e
else
- VERSION=2.54.3
-
SOURCE_HASH=sha512:153bb9d5b2e04ac87127663ab2cae1ae9e3c23666e54234efb3e247a6c3fdd67701f8baa31e06bba673c0cfc71202001c46fb8e0398770dfbc59e10f6de78077
+ VERSION=2.54.4
+
SOURCE_HASH=sha512:e3415044a4faa48ec83e25cbd86dfbe7bc997286269298fb913a61a13d55195f660bcef459950979c2b8d60b144b29e33b278b2c4da0c376de65c34f39687e9a
fi
SECURITY_PATCH=2
SOURCE=${SPELL%?}-$VERSION.tar.xz
diff --git a/gnome2-libs/librsvg2/HISTORY b/gnome2-libs/librsvg2/HISTORY
index b25b491..af11895 100644
--- a/gnome2-libs/librsvg2/HISTORY
+++ b/gnome2-libs/librsvg2/HISTORY
@@ -1,3 +1,6 @@
+2022-06-11 Florian Franzmann <bwlf AT bandrate.org>
+ * DETAILS: 2.54.4
+
2022-05-28 Florian Franzmann <bwlf AT bandrate.org>
* DETAILS: 2.54.3
diff --git a/python-pypi/borgbackup/DETAILS b/python-pypi/borgbackup/DETAILS
index 794e3a7..d5f0734 100755
--- a/python-pypi/borgbackup/DETAILS
+++ b/python-pypi/borgbackup/DETAILS
@@ -1,5 +1,5 @@
SPELL=borgbackup
- VERSION=1.2.0
+ VERSION=1.2.1
SECURITY_PATCH=1
SOURCE="$SPELL-$VERSION.tar.gz"
SOURCE_URL[0]=https://github.com/borgbackup/borg/releases/download/$VERSION/$SOURCE
diff --git a/python-pypi/borgbackup/HISTORY b/python-pypi/borgbackup/HISTORY
index f02879c..1838fbf 100644
--- a/python-pypi/borgbackup/HISTORY
+++ b/python-pypi/borgbackup/HISTORY
@@ -1,3 +1,6 @@
+2022-06-11 Florian Franzmann <bwlf AT bandrate.org>
+ * DETAILS: version 1.2.1
+
2022-02-22 Treeve Jelbert <treeve AT sourcemage.org>
* DETAILS: version 1.2.0
* FINAL: added
diff --git a/python-pypi/setuptools/DETAILS b/python-pypi/setuptools/DETAILS
index 5ae4bc2..55adfa6 100755
--- a/python-pypi/setuptools/DETAILS
+++ b/python-pypi/setuptools/DETAILS
@@ -1,6 +1,6 @@
SPELL=setuptools
- VERSION=62.3.2
-
SOURCE_HASH=sha512:8674ff31b04f9229b28247f6035aff3d6b3be6f0a197c7059bd55d9dd390d6cec067ac59def830c3f98dde7fefec72a65cbec34ae923b5088d4b491fea8828ac
+ VERSION=62.3.3
+
SOURCE_HASH=sha512:a7ca81b3f7adedb15a4ff3607654d1a4615de1b30a22aa5cbe4b0a8077db8bdd9348167cbb6deb97e1076d320c2a2a4b0d30acda389905d6503786902eeb66af
SOURCE=$SPELL-$VERSION.tar.gz
SOURCE_URL[0]=https://pypi.python.org/packages/source/s/${SPELL}/${SOURCE}
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELL-$VERSION"
diff --git a/python-pypi/setuptools/HISTORY b/python-pypi/setuptools/HISTORY
index b08ec02..641adca 100644
--- a/python-pypi/setuptools/HISTORY
+++ b/python-pypi/setuptools/HISTORY
@@ -1,3 +1,6 @@
+2022-06-11 Florian Franzmann <bwlf AT bandrate.org>
+ * DETAILS: version 62.3.3
+
2022-05-29 Florian Franzmann <bwlf AT bandrate.org>
* DETAILS: version 62.3.2
diff --git a/qt5/qtbase/BUILD b/qt5/qtbase/BUILD
index 9dc8cd9..af8f0b8 100755
--- a/qt5/qtbase/BUILD
+++ b/qt5/qtbase/BUILD
@@ -23,4 +23,4 @@ esac &&
-prefix $QT5DIR -platform $platform \
-reduce-relocations -reduce-exports $sizeopt \
$OPTS -v &&
-make
+default_build_make
diff --git a/qt5/qtbase/HISTORY b/qt5/qtbase/HISTORY
index cf9ecf0..87a6ece 100644
--- a/qt5/qtbase/HISTORY
+++ b/qt5/qtbase/HISTORY
@@ -1,3 +1,6 @@
+2022-06-11 Florian Franzmann <bwlf AT bandrate.org>
+ * BUILD: use default_build_make
+
2022-05-11 Treeve Jelbert <treeve AT sourcemage.org>
* DETAILS: version 5.15.4
diff --git a/utils/file/DETAILS b/utils/file/DETAILS
index 1db1539..8126987 100755
--- a/utils/file/DETAILS
+++ b/utils/file/DETAILS
@@ -1,5 +1,5 @@
SPELL=file
- VERSION=5.41
+ VERSION=5.42
SECURITY_PATCH=1
SOURCE=$SPELL-$VERSION.tar.gz
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELL-$VERSION"
diff --git a/utils/file/HISTORY b/utils/file/HISTORY
index 4da0472..db48a87 100644
--- a/utils/file/HISTORY
+++ b/utils/file/HISTORY
@@ -1,3 +1,6 @@
+2022-06-11 Florian Franzmann <bwlf AT bandrate.org>
+ * DETAILS: 5.42
+
2022-03-25 Pavel Vinogradov <public AT sourcemage.org>
* DETAILS: version 5.41
* PRE_BUILD,
patches/0001-Fix-mime-type-XZ-after-Add-checksum-for-XZ.patch:
diff --git a/utils/inxi/DETAILS b/utils/inxi/DETAILS
index c65fd45..1128f47 100755
--- a/utils/inxi/DETAILS
+++ b/utils/inxi/DETAILS
@@ -1,9 +1,9 @@
SPELL=inxi
- VERSION=3.3.16-1
+ VERSION=3.3.17-1
SOURCE=$SPELL-$VERSION.tar.gz
SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-$VERSION
SOURCE_URL[0]=https://github.com/smxi/inxi/archive/refs/tags/${VERSION}.tar.gz
-
SOURCE_HASH=sha512:9261a35cf0d834fabcf6a791f3faadbac6500a31dc3d0ade74991651dedc0dca20093aa050a3c51d24dd4bc765aa7f089b43be47b72aea550018fd1b7f1a2164
+
SOURCE_HASH=sha512:2bf28e8c4bc3d93e309639e04dfafd6e7b2c82b33178c11e138828c8378e1636b1fb16dbae88838e69953020789637745ffa54818ed954624995c1daaf2387cb
LICENSE[0]=GPL
WEB_SITE=https://smxi.org/docs/inxi.htm
ENTERED=20110620
diff --git a/utils/inxi/HISTORY b/utils/inxi/HISTORY
index aa8d649..1cd6ca9 100644
--- a/utils/inxi/HISTORY
+++ b/utils/inxi/HISTORY
@@ -1,3 +1,6 @@
+2022-06-11 Florian Franzmann <bwlf AT bandrate.org>
+ * DETAILS: version 3.3.17-1
+
2022-05-28 Florian Franzmann <bwlf AT bandrate.org>
* DETAILS: version 3.3.16-1
- [SM-Commit] GIT changes to master grimoire by Florian Franzmann (b8a724018d57426cb6bc0bb9e6078a651d2095c2), Florian Franzmann, 06/12/2022
Archive powered by MHonArc 2.6.24.