update qt to 5.15

This commit is contained in:
ziggi
2020-10-24 09:50:06 +00:00
parent cc9c57fae6
commit 2803c3baf0
31 changed files with 5145 additions and 0 deletions

134
xapp/libqt5-base/Makefile Normal file
View File

@@ -0,0 +1,134 @@
# $FreeBSD: head/devel/qt5-qmake/Makefile 492793 2019-02-12 17:43:00Z tcberner $
PORTNAME= qt5-base
DISTVERSION= ${QT5_VERSION}
CATEGORIES= devel
PKGNAMEPREFIX= lib
MASTER_SITES+= http://download.qt.io/official_releases/qt/${DISTVERSION:R}/${DISTVERSION}/submodules/
DISTNAME= qtbase-everywhere-src-${PORTVERSION}
MAINTAINER= kde@FreeBSD.org
COMMENT= Qt Makefile generator
LIB_DEPENDS+= libdbus.so:gnome/dbus
LIB_DEPENDS+= libqtfontconfig.so:xapp/libqtfontconfig
LIB_DEPENDS+= libqtfreetype.so:xapp/libqtfreetype2
LIB_DEPENDS+= libpcre2-16.so:text/libpcre2
LIB_DEPENDS+= libSM.so.6:x11/libSM
LIB_DEPENDS+= libX11-xcb.so:x11/libX11
LIB_DEPENDS+= libX11.so.6:x11/libX11
LIB_DEPENDS+= libXau.so.6:x11/libXau
LIB_DEPENDS+= libXdamage.so:x11/libXdamage
LIB_DEPENDS+= libXdmcp.so:x11/libXdmcp
LIB_DEPENDS+= libXext.so:x11/libXext
LIB_DEPENDS+= libXfixes.so:x11/libXfixes
LIB_DEPENDS+= libICE.so:x11/libICE
LIB_DEPENDS+= libxkbcommon.so:x11/libxkbcommon
LIB_DEPENDS+= libxcb-dri2.so:x11/libxcb
LIB_DEPENDS+= libxcb-icccm.so:x11/libxcb-util-wm
LIB_DEPENDS+= libxcb-image.so:x11/libxcb-util-image
LIB_DEPENDS+= libxcb-keysyms.so:x11/libxcb-util-keysyms
LIB_DEPENDS+= libxcb-render-util.so:x11/libxcb-util-renderutil
LIB_DEPENDS+= libxcb-util.so:x11/libxcb-util
USES= compiler:c++11-lib gmake pkgconfig python:build shebangfix tar:xz ssl
CONFIGURE_ARGS+= -c++std c++14
SHEBANG_FILES+= util/harfbuzz/update-harfbuzz
SHEBANG_FILES+= util/unicode/x11/makeencodings
SHEBANG_FILES+= src/3rdparty/freetype/src/tools/afblue.pl
SHEBANG_FILES+= mkspecs/features/data/mac/objc_namespace.sh
SHEBANG_FILES+= mkspecs/features/uikit/devices.py
SHEBANG_FILES+= mkspecs/features/uikit/device_destinations.sh
CFLAGS+= -I${LOCALBASE}/include
CPPFLAGS+= -I${LOCALBASE}/include
CXXFLAGS+= -I${LOCALBASE}/include
LDFLAGS+= -L${LOCALBASE}/lib
#-liconv -lssl -lcrypto
#LDFLAGS+= -licudata -licui18n -licuio -licutest -licutu -licuuc
#CONFIGURE_ENV+= ICU_INCDIR="${LOCALBASE}/include"
#CONFIGURE_ENV+= ICU_PREFIX="${LOCALBASE}"
#CONFIGURE_ENV+= ICU_LIBS="-licui18n -licuuc -licudata"
#OPENSSL_LIBS='-lssl -lcrypto'
CONFIGURE_ARGS+= -icu
CONFIGURE_ARGS+= -no-iconv
CONFIGURE_ARGS+= -L "${LOCALBASE}/lib"
CONFIGURE_ARGS+= -I "${LOCALBASE}/include"
REINPLACE_ARGS= -i ""
HAS_CONFIGURE= yes
CONFIGURE_ARGS+= -prefix ${PREFIX}
CONFIGURE_ARGS+= -opensource
CONFIGURE_ARGS+= -confirm-license
CONFIGURE_ARGS+= -no-pch
CONFIGURE_ARGS+= -prefix ${PREFIX}
CONFIGURE_ARGS+= -bindir ${PREFIX}/bin
CONFIGURE_ARGS+= -headerdir ${PREFIX}/include/Qt5
CONFIGURE_ARGS+= -libdir ${PREFIX}/lib
CONFIGURE_ARGS+= -plugindir ${PREFIX}/lib/Qt5/plugins
CONFIGURE_ARGS+= -importdir ${PREFIX}/lib/Qt5/imports
CONFIGURE_ARGS+= -datadir ${PREFIX}/share/Qt5
CONFIGURE_ARGS+= -docdir ${PREFIX}/share/Qt5/docs
CONFIGURE_ARGS+= -translationdir ${PREFIX}/share/Qt5/translations
CONFIGURE_ARGS+= -sysconfdir ${PREFIX}/etc/Qt5
CONFIGURE_ARGS+= -nomake examples
CONFIGURE_ARGS+= -nomake tests
CONFIGURE_ARGS+= -archdatadir ${PREFIX}/share/Qt5
CONFIGURE_ARGS+= -libexecdir ${PREFIX}/libexec/Qt5
CONFIGURE_ARGS+= -qmldir ${PREFIX}/share/Qt5/qml
CONFIGURE_ARGS+= -examplesdir ${PREFIX}/share/examples/Qt5
CONFIGURE_ARGS+= -testsdir ${PREFIX}/share/tests/Qt5
CONFIGURE_ARGS+= -system-harfbuzz
CONFIGURE_ARGS+= -no-use-gold-linker
CONFIGURE_ARGS+= -release -no-separate-debug-info
CONFIGURE_ARGS+= -no-eglfs
CONFIGURE_ARGS+= -no-evdev
CONFIGURE_ARGS+= -no-libudev
CONFIGURE_ARGS+= -cups
CONFIGURE_ARGS+= -dbus
CONFIGURE_ARGS+= -no-glib
CONFIGURE_ARGS+= -no-gtk
CONFIGURE_ARGS+= -no-evdev
CONFIGURE_ARGS+= -fontconfig
CONFIGURE_ARGS+= -system-freetype
CONFIGURE_ARGS+= -openssl-linked
#CONFIGURE_ARGS+= -opengl es2
#CONFIGURE_ARGS+= -qt-harfbuzz
#CONFIGURE_ARGS+= -no-xcb #-system-xcb
CONFIGURE_ARGS+= -system-pcre
CONFIGURE_ARGS+= -qt-libpng
CONFIGURE_ARGS+= -gui
#CONFIGURE_ARGS+= -qpa xcb
CONFIGURE_ARGS+= -sql-psql
CONFIGURE_ARGS+= -no-sql-mysql
CONFIGURE_ARGS+= -no-compile-examples
DESTDIRNAME= INSTALL_ROOT
post-install:
cd ${STAGEDIR}${PREFIX} && ${FIND} . -name '*.orig' -delete
cd ${STAGEDIR}${PREFIX}/bin && ${MV} fixqt4headers.pl fixqt4headers
cd ${STAGEDIR}${PREFIX}/bin && ${MV} syncqt.pl syncqt
.include <bsd.port.mk>

View File

@@ -0,0 +1,3 @@
TIMESTAMP = 1598599543
SHA256 (qtbase-everywhere-src-5.15.0.tar.xz) = 9e7af10aece15fa9500369efde69cb220eee8ec3a6818afe01ce1e7d484824c5
SIZE (qtbase-everywhere-src-5.15.0.tar.xz) = 49931940

View File

@@ -0,0 +1,30 @@
--- mkspecs/common/bsd/bsd.conf.orig 2017-07-23 16:27:40 UTC
+++ mkspecs/common/bsd/bsd.conf
@@ -21,6 +21,27 @@ QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
QMAKE_LIBS_THREAD =
+QMAKE_INCDIR_X11 = /usr/local/include
+QMAKE_LIBDIR_X11 = /usr/local/lib
+QMAKE_INCDIR_OPENGL = /usr/local/include
+QMAKE_LIBDIR_OPENGL = /usr/local/lib
+QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
+QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
+QMAKE_INCDIR_EGL = /usr/local/include
+QMAKE_LIBDIR_EGL = /usr/local/lib
+
+QMAKE_LIBS_EGL = -lEGL
+QMAKE_LIBS_OPENGL_ES2 = -lGLESv2
+QMAKE_LIBS_LIBUDEV = -ludev
+
+QMAKE_CFLAGS_WAYLAND =
+QMAKE_INCDIR_WAYLAND = /usr/local/include
+QMAKE_LIBS_WAYLAND_CLIENT = -lwayland-client
+QMAKE_LIBS_WAYLAND_SERVER = -lwayland-server
+QMAKE_LIBDIR_WAYLAND = /usr/local/lib
+QMAKE_DEFINES_WAYLAND =
+QMAKE_WAYLAND_SCANNER = wayland-scanner
+
QMAKE_AR = ar cqs
QMAKE_OBJCOPY = objcopy
QMAKE_NM = nm -P

View File

@@ -0,0 +1,71 @@
--- src/network/ssl/qsslsocket_openssl11_symbols_p.h.orig 2019-10-01 07:47:24 UTC
+++ src/network/ssl/qsslsocket_openssl11_symbols_p.h
@@ -77,20 +77,49 @@
const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x);
+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L
+// LibreSSL 2.7 has stack_st but not OPENSSL_STACK
+typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */
+// From the signature in LibreSSL
+#define OPENSSL_INIT_SETTINGS void
+// https://github.com/openssl/openssl/blob/master/include/openssl/x509_vfy.h#L63
+typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *);
+#endif
+
+
Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a);
Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem();
+#ifdef LIBRESSL_VERSION_NUMBER
+#define q_DSA_bits(dsa) q_BN_num_bits((dsa)->p)
+#else
int q_DSA_bits(DSA *a);
+#endif
int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
int q_EVP_PKEY_base_id(EVP_PKEY *a);
int q_RSA_bits(RSA *a);
+#ifdef LIBRESSL_VERSION_NUMBER
+int q_sk_num(OPENSSL_STACK *a);
+void q_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
+OPENSSL_STACK *q_sk_new_null();
+void q_sk_push(OPENSSL_STACK *st, void *data);
+void q_sk_free(OPENSSL_STACK *a);
+void * q_sk_value(OPENSSL_STACK *a, int b);
+#define q_OPENSSL_sk_num(a) q_sk_num(a)
+#define q_OPENSSL_sk_pop_free(a, b) q_sk_pop_free(a, b)
+#define q_OPENSSL_sk_new_null() q_sk_new_null()
+#define q_OPENSSL_sk_push(a, b) q_sk_push(a, b)
+#define q_OPENSSL_sk_free q_sk_free
+#define q_OPENSSL_sk_value(a, b) q_sk_value(a, b)
+#else
Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
Q_AUTOTEST_EXPORT OPENSSL_STACK *q_OPENSSL_sk_new_null();
Q_AUTOTEST_EXPORT void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
Q_AUTOTEST_EXPORT void q_OPENSSL_sk_free(OPENSSL_STACK *a);
Q_AUTOTEST_EXPORT void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
+#endif
int q_SSL_session_reused(SSL *a);
unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op);
int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
@@ -113,12 +142,15 @@
void q_DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
int q_DH_bits(DH *dh);
-# define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
+#define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
| OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
-
+#ifdef LIBRESSL_VERSION_NUMBER
+#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
+#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
+#else
#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st)
#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i)
-
+#endif
#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
| OPENSSL_INIT_ADD_ALL_DIGESTS \
| OPENSSL_INIT_LOAD_CONFIG, NULL)

View File

@@ -0,0 +1,33 @@
As we moved the libraries of Qt5 from /usr/local/lib to /usr/local/lib/qt5 the
cmake files would get installed into /usr/local/lib/qt5/cmake. This however is
not really convenient for use with other applications depending on Qt via cmake.
For ports we could modify cmake.mk to always append /usr/local/lib/qt5 to the
search path. This would however still break applications outside of the ports
tree that users want to compile via cmake. An other option would be to patch
devel/cmake to add /usr/local/lib/qt5/cmake to the default search paths.
We chose the third option. To patch qmake's internal cmake generation function
to fix up the paths so that cmake files still land in the the "correct" location
in /usr/local/lib/cmake -- as this seemed to be the least intrusive method.
--- src/corelib/corelib.pro.orig 2017-06-28 11:54:29.000000000 +0200
+++ src/corelib/corelib.pro 2017-07-20 23:06:37.223900000 +0200
@@ -130,7 +130,7 @@
$$cmake_umbrella_config_version_file.output \
$$cmake_umbrella_config_module_location_for_install.output
-cmake_qt5_umbrella_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5
+cmake_qt5_umbrella_module_files.path = $$[QT_INSTALL_PREFIX]/lib/cmake/Qt5
QMAKE_SUBSTITUTES += \
ctest_macros_file \
@@ -143,6 +143,6 @@
ctest_qt5_module_files.files += $$ctest_macros_file.output $$cmake_extras_mkspec_dir_for_install.output
-ctest_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5Core
+ctest_qt5_module_files.path = $$[QT_INSTALL_PREFIX]/lib/cmake/Qt5Core
INSTALLS += ctest_qt5_module_files cmake_qt5_umbrella_module_files

View File

@@ -0,0 +1,20 @@
--- src/corelib/time/qtimezoneprivate_tz.cpp.orig 2019-11-01 21:30:15 UTC
+++ src/corelib/time/qtimezoneprivate_tz.cpp
@@ -1126,6 +1126,17 @@ QByteArray QTzTimeZonePrivate::systemTimeZoneId() cons
}
}
+ // On many FreeBSD systems, /etc/localtime is a regular file while the actual name is in /var/db/zoneinfo
+ if (ianaId.isEmpty()) {
+ QFile tzif(QStringLiteral("/var/db/zoneinfo"));
+ if (tzif.open(QIODevice::ReadOnly)) {
+ // TODO QTextStream inefficient, replace later
+ QTextStream ts(&tzif);
+ if (!ts.atEnd())
+ ianaId = ts.readLine().toUtf8();
+ }
+ }
+
// On some Red Hat distros /etc/localtime is real file with name held in /etc/sysconfig/clock
// in a line like ZONE="Europe/Oslo" or TIMEZONE="Europe/Oslo"
if (ianaId.isEmpty()) {

View File

@@ -0,0 +1,97 @@
--- src/network/ssl/qsslsocket_openssl_symbols_p.h.orig 2020-05-05 11:59:27 UTC
+++ src/network/ssl/qsslsocket_openssl_symbols_p.h
@@ -72,6 +72,14 @@
#include "qsslsocket_openssl_p.h"
#include <QtCore/qglobal.h>
+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L
+# define TLS1_2_VERSION 0x0303
+# define TLS_MAX_VERSION TLS1_2_VERSION
+# define TLS_ANY_VERSION 0x10000
+# define DTLS1_2_VERSION 0xFEFD
+# define DTLS_MAX_VERSION DTLS1_2_VERSION
+#endif
+
#if QT_CONFIG(ocsp)
#include "qocsp_p.h"
#endif
@@ -225,22 +233,50 @@ QT_BEGIN_NAMESPACE
// content of the header here. Later, can be better sorted/split into groups,
// depending on the functionality.
+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L
+// LibreSSL 2.7 has stack_st but not OPENSSL_STACK
+typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */
+// From the signature in LibreSSL
+#define OPENSSL_INIT_SETTINGS void
+// https://github.com/openssl/openssl/blob/master/include/openssl/x509_vfy.h#L63
+typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *);
+#endif
+
const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x);
Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a);
Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem();
+#ifdef LIBRESSL_VERSION_NUMBER
+#define q_DSA_bits(dsa) q_BN_num_bits((dsa)->p)
+#else
int q_DSA_bits(DSA *a);
+#endif
int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
int q_EVP_PKEY_base_id(EVP_PKEY *a);
int q_RSA_bits(RSA *a);
+#ifdef LIBRESSL_VERSION_NUMBER
+int q_sk_num(OPENSSL_STACK *a);
+void q_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
+OPENSSL_STACK *q_sk_new_null();
+void q_sk_push(OPENSSL_STACK *st, void *data);
+void q_sk_free(OPENSSL_STACK *a);
+void * q_sk_value(OPENSSL_STACK *a, int b);
+#define q_OPENSSL_sk_num(a) q_sk_num(a)
+#define q_OPENSSL_sk_pop_free(a, b) q_sk_pop_free(a, b)
+#define q_OPENSSL_sk_new_null() q_sk_new_null()
+#define q_OPENSSL_sk_push(a, b) q_sk_push(a, b)
+#define q_OPENSSL_sk_free q_sk_free
+#define q_OPENSSL_sk_value(a, b) q_sk_value(a, b)
+#else
Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
Q_AUTOTEST_EXPORT OPENSSL_STACK *q_OPENSSL_sk_new_null();
Q_AUTOTEST_EXPORT void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
Q_AUTOTEST_EXPORT void q_OPENSSL_sk_free(OPENSSL_STACK *a);
Q_AUTOTEST_EXPORT void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
+#endif
int q_SSL_session_reused(SSL *a);
unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op);
int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
@@ -266,8 +302,13 @@ int q_DH_bits(DH *dh);
# define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
| OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
+#ifdef LIBRESSL_VERSION_NUMBER
+#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
+#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
+#else
#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st)
#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i)
+#endif
#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
| OPENSSL_INIT_ADD_ALL_DIGESTS \
@@ -494,12 +535,14 @@ int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b);
int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b);
int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c);
X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a);
+#if !defined(LIBRESSL_VERSION_NUMBER)
SSL_CONF_CTX *q_SSL_CONF_CTX_new();
void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
+#endif
void q_SSL_free(SSL *a);
STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a);
const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a);

View File

@@ -0,0 +1,62 @@
--- ./src/plugins/sqldrivers/mysql/qsql_mysql.cpp.orig 2019-01-28 19:11:52.000000000 +0200
+++ ./src/plugins/sqldrivers/mysql/qsql_mysql.cpp 2019-03-17 19:22:28.531459000 +0200
@@ -80,6 +80,14 @@
// by redefining it we can regain source compatibility.
using my_bool = decltype(mysql_stmt_bind_result(nullptr, nullptr));
+// MYSQL 8.0.1 no longer uses the my_bool type:
+// https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-1.html
+#if (MYSQL_VERSION_ID >= 80001) && !defined(MARIADB_BASE_VERSION)
+typedef bool mysql_bool;
+#else
+typedef my_bool mysql_bool;
+#endif
+
QT_BEGIN_NAMESPACE
class QMYSQLDriverPrivate : public QSqlDriverPrivate
@@ -238,7 +246,7 @@
myField(0), type(QVariant::Invalid)
{}
char *outField;
- my_bool nullIndicator;
+ mysql_bool nullIndicator;
ulong bufLength;
MYSQL_FIELD *myField;
QVariant::Type type;
@@ -992,7 +1000,7 @@
MYSQL_BIND* currBind;
QVector<MYSQL_TIME *> timeVector;
QVector<QByteArray> stringVector;
- QVector<my_bool> nullVector;
+ QVector<mysql_bool> nullVector;
const QVector<QVariant> values = boundValues();
@@ -1013,7 +1021,7 @@
currBind = &d->outBinds[i];
- nullVector[i] = static_cast<my_bool>(val.isNull());
+ nullVector[i] = static_cast<mysql_bool>(val.isNull());
currBind->is_null = &nullVector[i];
currBind->length = 0;
currBind->is_unsigned = 0;
@@ -1110,7 +1118,7 @@
d->rowsAffected = mysql_stmt_affected_rows(d->stmt);
if (isSelect()) {
- my_bool update_max_length = true;
+ mysql_bool update_max_length = true;
r = mysql_stmt_bind_result(d->stmt, d->inBinds);
if (r != 0) {
@@ -1321,7 +1329,7 @@
QString sslCAPath;
QString sslCipher;
#if MYSQL_VERSION_ID >= 50000
- my_bool reconnect=false;
+ mysql_bool reconnect=false;
uint connectTimeout = 0;
uint readTimeout = 0;
uint writeTimeout = 0;

View File

@@ -0,0 +1,74 @@
--- src/corelib/io/io.pri.orig 2018-02-08 18:24:48 UTC
+++ src/corelib/io/io.pri
@@ -178,6 +178,9 @@ win32 {
SOURCES += \
io/qstandardpaths_unix.cpp \
io/qstorageinfo_unix.cpp
+ freebsd {
+ LIBS += -lkvm -lprocstat
+ }
}
linux|if(qnx:qtConfig(inotify)) {
--- src/corelib/io/qlockfile_unix.cpp.orig 2018-02-08 18:24:48 UTC
+++ src/corelib/io/qlockfile_unix.cpp
@@ -75,6 +75,8 @@
# include <sys/sysctl.h>
# if !defined(Q_OS_NETBSD)
# include <sys/user.h>
+# include <kvm.h>
+# include <libprocstat.h>
# endif
#endif
@@ -246,23 +248,44 @@ QString QLockFilePrivate::processNameByPid(qint64 pid)
struct kinfo_proc kp;
int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, (int)pid, sizeof(struct kinfo_proc), 1 };
# else
+ QString nameFromProcstat;
+ kvm_t *kvm = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "");
+ if (kvm) {
+ int cnt;
+ struct kinfo_proc *kp = kvm_getprocs(kvm, KERN_PROC_PID, getpid(), &cnt);
+ if (kp) {
+ struct procstat *ps = procstat_open_sysctl();
+ char **argv = procstat_getargv(ps, kp, 0);
+ if (argv != nullptr && argv[0] != nullptr)
+ nameFromProcstat = QString::fromLocal8Bit(argv[0]);
+ procstat_close(ps);
+ }
+ kvm_close(kvm);
+ }
struct kinfo_proc kp;
int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, (int)pid };
# endif
- size_t len = sizeof(kp);
- u_int mib_len = sizeof(mib)/sizeof(u_int);
+ if (nameFromProcstat.isEmpty()) {
+ size_t len = sizeof(kp);
+ u_int mib_len = sizeof(mib)/sizeof(u_int);
- if (sysctl(mib, mib_len, &kp, &len, NULL, 0) < 0)
- return QString();
-
+ if (sysctl(mib, mib_len, &kp, &len, NULL, 0) < 0)
+ return QString();
+ }
# if defined(Q_OS_OPENBSD) || defined(Q_OS_NETBSD)
if (kp.p_pid != pid)
return QString();
QString name = QFile::decodeName(kp.p_comm);
# else
- if (kp.ki_pid != pid)
+ QString name;
+ if (!nameFromProcstat.isEmpty()) {
+ QFileInfo fi(nameFromProcstat);
+ name = fi.fileName();
+ }
+ else if (kp.ki_pid != pid)
return QString();
- QString name = QFile::decodeName(kp.ki_comm);
+ else
+ name = QFile::decodeName(kp.ki_comm);
# endif
return name;

View File

@@ -0,0 +1,28 @@
--- src/corelib/time/qtimezoneprivate_tz.cpp.orig 2020-05-11 08:15:08 UTC
+++ src/corelib/time/qtimezoneprivate_tz.cpp
@@ -1153,6 +1153,25 @@ QByteArray QTzTimeZonePrivate::systemTimeZoneId() cons
}
}
+ // On some FreeBSD systems, /etc/localtime is a regular file while
+ // the actual name is in /var/db/zoneinfo
+ if (ianaId.isEmpty()) {
+ QFile tzif(QStringLiteral("/var/db/zoneinfo"));
+ if (tzif.open(QIODevice::ReadOnly)) {
+ const int maximumTZNameLength = 256;
+ QByteArray tzcontents( tzif.read( maximumTZNameLength ) );
+ if (tzcontents.size() >= 2) {
+ // Shortest TZ would be UTC, or r/z, but there's special
+ // cases "GB" and "US"
+ const int newlineIndex = tzcontents.indexOf('\n');
+ if (newlineIndex < 0) // No newline in file
+ ianaId = tzcontents;
+ if (newlineIndex > 2) // Newline, chop it off
+ ianaId = tzcontents.left(newlineIndex);
+ }
+ }
+ }
+
// Some systems (e.g. uClibc) have a default value for $TZ in /etc/TZ:
if (ianaId.isEmpty()) {
QFile zone(QStringLiteral("/etc/TZ"));

View File

@@ -0,0 +1,99 @@
Clean up interface type and MTU detection.
- Introduce a class SockPuppet that handles closing the socket
automatically, and handles different address families as well.
- Finding MTU requires using AF_LOCAL, cribbed that detail from ifconfig.c
- Zero out structures more diligently, initialize pointers to nullptr.
- In particular, don't use a union of structs passed in to ioctl().
Make them separate structs (with block scope so the compiler might
place them on top of each other, that would be ok).
- IFM_FDDI (still) exists in 11.2, not in 12.0
--- src/network/kernel/qnetworkinterface_unix.cpp.orig 2019-10-25 07:16:48 UTC
+++ src/network/kernel/qnetworkinterface_unix.cpp
@@ -420,13 +420,24 @@ QT_BEGIN_INCLUDE_NAMESPACE
#endif // QT_PLATFORM_UIKIT
QT_END_INCLUDE_NAMESPACE
-static int openSocket(int &socket)
+template<int address_family> struct SockPuppet
{
- if (socket == -1)
- socket = qt_safe_socket(AF_INET, SOCK_DGRAM, 0);
- return socket;
-}
+ int socket{-1};
+ int open()
+ {
+ if (socket == -1)
+ socket = qt_safe_socket(address_family, SOCK_DGRAM, 0);
+ return socket;
+ }
+
+ ~SockPuppet()
+ {
+ if (socket != -1)
+ qt_safe_close(socket);
+ }
+};
+
static QNetworkInterface::InterfaceType probeIfType(int socket, int iftype, struct ifmediareq *req)
{
// Determine the interface type.
@@ -480,16 +491,9 @@ static QNetworkInterface::InterfaceType probeIfType(in
static QList<QNetworkInterfacePrivate *> createInterfaces(ifaddrs *rawList)
{
QList<QNetworkInterfacePrivate *> interfaces;
- union {
- struct ifmediareq mediareq;
- struct ifreq req;
- };
- int socket = -1;
- memset(&mediareq, 0, sizeof(mediareq));
- // ensure both structs start with the name field, of size IFNAMESIZ
- Q_STATIC_ASSERT(sizeof(mediareq.ifm_name) == sizeof(req.ifr_name));
- Q_ASSERT(&mediareq.ifm_name == &req.ifr_name);
+ SockPuppet<AF_INET> socket;
+ SockPuppet<AF_LOCAL> localSocket;
// on NetBSD we use AF_LINK and sockaddr_dl
// scan the list for that family
@@ -503,14 +507,22 @@ static QList<QNetworkInterfacePrivate *> createInterfa
iface->name = QString::fromLatin1(ptr->ifa_name);
iface->flags = convertFlags(ptr->ifa_flags);
iface->hardwareAddress = iface->makeHwAddress(sdl->sdl_alen, (uchar*)LLADDR(sdl));
+ {
+ ifmediareq req;
+ memset(&req, 0, sizeof(req));
+ strncpy(req.ifm_name, ptr->ifa_name, sizeof(req.ifm_name));
+ iface->type = probeIfType(socket.open(), sdl->sdl_type, &req);
+ }
+ {
+ ifreq req;
+ memset(&req, 0, sizeof(req));
+ strncpy(req.ifr_name, ptr->ifa_name, sizeof(req.ifr_name));
+ req.ifr_addr.sa_family = AF_LOCAL;
+ iface->mtu = getMtu(localSocket.open(), &req);
+ }
- qstrncpy(mediareq.ifm_name, ptr->ifa_name, sizeof(mediareq.ifm_name));
- iface->type = probeIfType(openSocket(socket), sdl->sdl_type, &mediareq);
- iface->mtu = getMtu(socket, &req);
}
- if (socket != -1)
- qt_safe_close(socket);
return interfaces;
}
@@ -609,7 +621,7 @@ static QList<QNetworkInterfacePrivate *> interfaceList
{
QList<QNetworkInterfacePrivate *> interfaces;
- ifaddrs *interfaceListing;
+ ifaddrs *interfaceListing = nullptr;
if (getifaddrs(&interfaceListing) == -1) {
// error
return interfaces;

View File

@@ -0,0 +1,17 @@
Some extra includes for us.
--- src/network/socket/qnet_unix_p.h.orig 2018-12-03 11:15:26 UTC
+++ src/network/socket/qnet_unix_p.h
@@ -71,6 +71,12 @@
# include <resolv.h>
#endif
+#if defined(Q_OS_FREEBSD)
+# include <net/if.h>
+# include <net/if_types.h>
+# include <net/if_var.h>
+#endif
+
QT_BEGIN_NAMESPACE
// Almost always the same. If not, specify in qplatformdefs.h.

View File

@@ -0,0 +1,18 @@
--- src/network/ssl/qsslcontext_openssl.cpp.orig 2020-05-17 21:00:32 UTC
+++ src/network/ssl/qsslcontext_openssl.cpp
@@ -696,6 +696,7 @@ void QSslContext::applyBackendConfig(QSslContext *sslC
}
#endif // ocsp
+#if !defined(LIBRESSL_VERSION_NUMBER)
QSharedPointer<SSL_CONF_CTX> cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free);
if (cctx) {
q_SSL_CONF_CTX_set_ssl_ctx(cctx.data(), sslContext->ctx);
@@ -746,6 +747,7 @@ void QSslContext::applyBackendConfig(QSslContext *sslC
sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_CTX_new() failed"));
sslContext->errorCode = QSslError::UnspecifiedError;
}
+#endif
}
QT_END_NAMESPACE

View File

@@ -0,0 +1,87 @@
--- src/network/ssl/qsslsocket_openssl_symbols.cpp.orig 2020-05-05 11:59:27 UTC
+++ src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -147,6 +147,14 @@ DEFINEFUNC(int, EVP_CIPHER_CTX_reset, EVP_CIPHER_CTX *
DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, return 0, return)
DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return)
DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return)
+#ifdef LIBRESSL_VERSION_NUMBER
+DEFINEFUNC(int, sk_num, OPENSSL_STACK *a, a, return -1, return)
+DEFINEFUNC2(void, sk_pop_free, OPENSSL_STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
+DEFINEFUNC(OPENSSL_STACK *, sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return)
+DEFINEFUNC2(void, sk_push, OPENSSL_STACK *a, a, void *b, b, return, DUMMYARG)
+DEFINEFUNC(void, sk_free, OPENSSL_STACK *a, a, return, DUMMYARG)
+DEFINEFUNC2(void *, sk_value, OPENSSL_STACK *a, a, int b, b, return nullptr, return)
+#else
DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return)
DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return)
DEFINEFUNC2(void, OPENSSL_sk_pop_free, OPENSSL_STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
@@ -154,6 +162,7 @@ DEFINEFUNC(OPENSSL_STACK *, OPENSSL_sk_new_null, DUMMY
DEFINEFUNC2(void, OPENSSL_sk_push, OPENSSL_STACK *a, a, void *b, b, return, DUMMYARG)
DEFINEFUNC(void, OPENSSL_sk_free, OPENSSL_STACK *a, a, return, DUMMYARG)
DEFINEFUNC2(void *, OPENSSL_sk_value, OPENSSL_STACK *a, a, int b, b, return nullptr, return)
+#endif
DEFINEFUNC(int, SSL_session_reused, SSL *a, a, return 0, return)
DEFINEFUNC2(unsigned long, SSL_CTX_set_options, SSL_CTX *ctx, ctx, unsigned long op, op, return 0, return)
#ifdef TLS1_3_VERSION
@@ -351,12 +360,14 @@ DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a
DEFINEFUNC2(int, SSL_CTX_use_RSAPrivateKey, SSL_CTX *a, a, RSA *b, b, return -1, return)
DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return)
DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return)
+#if !defined(LIBRESSL_VERSION_NUMBER)
DEFINEFUNC(SSL_CONF_CTX *, SSL_CONF_CTX_new, DUMMYARG, DUMMYARG, return nullptr, return);
DEFINEFUNC(void, SSL_CONF_CTX_free, SSL_CONF_CTX *a, a, return ,return);
DEFINEFUNC2(void, SSL_CONF_CTX_set_ssl_ctx, SSL_CONF_CTX *a, a, SSL_CTX *b, b, return, return);
DEFINEFUNC2(unsigned int, SSL_CONF_CTX_set_flags, SSL_CONF_CTX *a, a, unsigned int b, b, return 0, return);
DEFINEFUNC(int, SSL_CONF_CTX_finish, SSL_CONF_CTX *a, a, return 0, return);
DEFINEFUNC3(int, SSL_CONF_cmd, SSL_CONF_CTX *a, a, const char *b, b, const char *c, c, return 0, return);
+#endif
DEFINEFUNC(void, SSL_free, SSL *a, a, return, DUMMYARG)
DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_get_ciphers, const SSL *a, a, return nullptr, return)
DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr, return)
@@ -834,12 +845,21 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(EVP_PKEY_up_ref)
RESOLVEFUNC(EVP_PKEY_base_id)
RESOLVEFUNC(RSA_bits)
+#ifdef LIBRESSL_VERSION_NUMBER
+ RESOLVEFUNC(sk_new_null)
+ RESOLVEFUNC(sk_push)
+ RESOLVEFUNC(sk_free)
+ RESOLVEFUNC(sk_num)
+ RESOLVEFUNC(sk_pop_free)
+ RESOLVEFUNC(sk_value)
+#else
RESOLVEFUNC(OPENSSL_sk_new_null)
RESOLVEFUNC(OPENSSL_sk_push)
RESOLVEFUNC(OPENSSL_sk_free)
RESOLVEFUNC(OPENSSL_sk_num)
RESOLVEFUNC(OPENSSL_sk_pop_free)
RESOLVEFUNC(OPENSSL_sk_value)
+#endif
RESOLVEFUNC(DH_get0_pqg)
RESOLVEFUNC(SSL_CTX_set_options)
@@ -881,7 +901,9 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(SSL_SESSION_get_ticket_lifetime_hint)
RESOLVEFUNC(DH_bits)
+#ifndef LIBRESSL_VERSION_NUMBER
RESOLVEFUNC(DSA_bits)
+#endif
#if QT_CONFIG(dtls)
RESOLVEFUNC(DTLSv1_listen)
@@ -1041,12 +1063,14 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
RESOLVEFUNC(SSL_CTX_get_cert_store);
+#if !defined(LIBRESSL_VERSION_NUMBER)
RESOLVEFUNC(SSL_CONF_CTX_new);
RESOLVEFUNC(SSL_CONF_CTX_free);
RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx);
RESOLVEFUNC(SSL_CONF_CTX_set_flags);
RESOLVEFUNC(SSL_CONF_CTX_finish);
RESOLVEFUNC(SSL_CONF_cmd);
+#endif
RESOLVEFUNC(SSL_accept)
RESOLVEFUNC(SSL_clear)
RESOLVEFUNC(SSL_connect)

View File

@@ -0,0 +1,97 @@
--- src/network/ssl/qsslsocket_openssl_symbols_p.h.orig 2020-05-05 11:59:27 UTC
+++ src/network/ssl/qsslsocket_openssl_symbols_p.h
@@ -72,6 +72,14 @@
#include "qsslsocket_openssl_p.h"
#include <QtCore/qglobal.h>
+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L
+# define TLS1_2_VERSION 0x0303
+# define TLS_MAX_VERSION TLS1_2_VERSION
+# define TLS_ANY_VERSION 0x10000
+# define DTLS1_2_VERSION 0xFEFD
+# define DTLS_MAX_VERSION DTLS1_2_VERSION
+#endif
+
#if QT_CONFIG(ocsp)
#include "qocsp_p.h"
#endif
@@ -225,22 +233,50 @@ QT_BEGIN_NAMESPACE
// content of the header here. Later, can be better sorted/split into groups,
// depending on the functionality.
+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L
+// LibreSSL 2.7 has stack_st but not OPENSSL_STACK
+typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */
+// From the signature in LibreSSL
+#define OPENSSL_INIT_SETTINGS void
+// https://github.com/openssl/openssl/blob/master/include/openssl/x509_vfy.h#L63
+typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *);
+#endif
+
const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x);
Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a);
Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem();
+#ifdef LIBRESSL_VERSION_NUMBER
+#define q_DSA_bits(dsa) q_BN_num_bits((dsa)->p)
+#else
int q_DSA_bits(DSA *a);
+#endif
int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
int q_EVP_PKEY_base_id(EVP_PKEY *a);
int q_RSA_bits(RSA *a);
+#ifdef LIBRESSL_VERSION_NUMBER
+int q_sk_num(OPENSSL_STACK *a);
+void q_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
+OPENSSL_STACK *q_sk_new_null();
+void q_sk_push(OPENSSL_STACK *st, void *data);
+void q_sk_free(OPENSSL_STACK *a);
+void * q_sk_value(OPENSSL_STACK *a, int b);
+#define q_OPENSSL_sk_num(a) q_sk_num(a)
+#define q_OPENSSL_sk_pop_free(a, b) q_sk_pop_free(a, b)
+#define q_OPENSSL_sk_new_null() q_sk_new_null()
+#define q_OPENSSL_sk_push(a, b) q_sk_push(a, b)
+#define q_OPENSSL_sk_free q_sk_free
+#define q_OPENSSL_sk_value(a, b) q_sk_value(a, b)
+#else
Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
Q_AUTOTEST_EXPORT OPENSSL_STACK *q_OPENSSL_sk_new_null();
Q_AUTOTEST_EXPORT void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
Q_AUTOTEST_EXPORT void q_OPENSSL_sk_free(OPENSSL_STACK *a);
Q_AUTOTEST_EXPORT void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
+#endif
int q_SSL_session_reused(SSL *a);
unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op);
int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
@@ -266,8 +302,13 @@ int q_DH_bits(DH *dh);
# define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
| OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
+#ifdef LIBRESSL_VERSION_NUMBER
+#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
+#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
+#else
#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st)
#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i)
+#endif
#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
| OPENSSL_INIT_ADD_ALL_DIGESTS \
@@ -494,12 +535,14 @@ int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b);
int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b);
int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c);
X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a);
+#if !defined(LIBRESSL_VERSION_NUMBER)
SSL_CONF_CTX *q_SSL_CONF_CTX_new();
void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
+#endif
void q_SSL_free(SSL *a);
STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a);
const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a);

View File

@@ -0,0 +1,54 @@
Determine suitable bearer. This code is basically the same
as the Linux code, except out ioctl()s are named differently
and we need an AF_LOCAL socket (this detail cribbed from ifconfig.c).
If getting the HW address succeeds, assume it's Ethernet. Tested
with two Ethernet cards and a vlan (all of which have a MAC reported
by ifconfig).
--- src/plugins/bearer/generic/qgenericengine.cpp.orig 2018-12-03 11:15:26 UTC
+++ src/plugins/bearer/generic/qgenericengine.cpp
@@ -82,7 +82,7 @@ using namespace ABI::Windows::Networking::Connectivity
// needed as interface is used as parameter name in qGetInterfaceType
#undef interface
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <net/if.h>
@@ -139,6 +139,23 @@ static QNetworkConfiguration::BearerType qGetInterface
if (result >= 0 && request.ifr_hwaddr.sa_family == ARPHRD_ETHER)
return QNetworkConfiguration::BearerEthernet;
+
+#elif defined(Q_OS_FREEBSD)
+ int sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
+
+ ifreq request;
+ memset(&request, 0, sizeof(struct ifreq));
+ strncpy(request.ifr_name, interface.toLocal8Bit().data(), sizeof(request.ifr_name) - 1);
+ request.ifr_name[sizeof(request.ifr_name) - 1] = '\0';
+
+ if (sock >= 0) {
+ int result = ioctl(sock, SIOCGHWADDR, &request);
+ close(sock);
+
+ if (result >= 0)
+ return QNetworkConfiguration::BearerEthernet;
+ }
+
#elif defined(Q_OS_WINRT)
ComPtr<INetworkInformationStatics> networkInfoStatics;
HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics);
@@ -231,9 +248,11 @@ static QNetworkConfiguration::BearerType qGetInterface
QGenericEngine::QGenericEngine(QObject *parent)
: QBearerEngineImpl(parent)
{
+#ifndef QT_NO_NETWORKINTERFACE
//workaround for deadlock in __cxa_guard_acquire with webkit on macos x
//initialise the Q_GLOBAL_STATIC in same thread as the AtomicallyInitializedStatic
(void)QNetworkInterface::interfaceFromIndex(0);
+#endif
}
QGenericEngine::~QGenericEngine()

View File

@@ -0,0 +1,12 @@
--- ./configure.orig 2019-01-28 19:11:52.000000000 +0200
+++ ./configure 2019-03-17 13:46:10.483553000 +0200
@@ -855,7 +855,7 @@
fi
if [ -n "$CFG_HOST_QT_TOOLS_PATH" ]; then
- "$CFG_HOST_QT_TOOLS_PATH/qmake" -qtconf "$QTCONFFILE" "$relpathMangled" -- "$@"
+ "$CFG_HOST_QT_TOOLS_PATH/qmake" -qtconf "$QTCONFFILE" "$relpathMangled" -- "$@"
else
- "$outpath/bin/qmake" "$relpathMangled" -- "$@"
+ "$outpath/bin/qmake" "$relpathMangled" -- "$@"
fi

View File

@@ -0,0 +1,13 @@
--- ./mkspecs/features/create_cmake.prf.orig 2019-03-17 19:45:17.993885000 +0200
+++ ./mkspecs/features/create_cmake.prf 2019-03-17 19:45:03.170331000 +0200
@@ -268,8 +268,8 @@
CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.so
CMAKE_LIB_SONAME = lib$${CMAKE_QT_STEM}.so
} else {
- CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.so.$$eval(QT.$${MODULE}.VERSION)
- CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.so.$$eval(QT.$${MODULE}.VERSION)
+ CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.so.$$section(QT.$${MODULE}.VERSION, ., 0, 0)
+ CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.so.$$section(QT.$${MODULE}.VERSION, ., 0, 0)
CMAKE_LIB_SONAME = lib$${CMAKE_QT_STEM}.so.$$section(QT.$${MODULE}.VERSION, ., 0, 0)
}
}

View File

@@ -0,0 +1,10 @@
--- ./mkspecs/features/moc.prf.orig 2019-03-17 13:53:11.594774000 +0200
+++ ./mkspecs/features/moc.prf 2019-03-17 13:53:21.097822000 +0200
@@ -1,6 +1,6 @@
#global defaults
-qtPrepareTool(QMAKE_MOC, moc)
+qtPrepareTool(QMAKE_MOC, moc)
isEmpty(MOC_DIR):MOC_DIR = .
isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_
isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc

View File

@@ -0,0 +1,8 @@
--- ./mkspecs/features/uic.prf.orig 2019-03-17 13:52:21.138747000 +0200
+++ ./mkspecs/features/uic.prf 2019-03-17 13:52:45.947642000 +0200
@@ -1,4 +1,4 @@
-qtPrepareTool(QMAKE_UIC, uic, _DEP)
+qtPrepareTool(QMAKE_UIC, uic, _DEP)
isEmpty(UI_DIR):UI_DIR = .
isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_

View File

@@ -0,0 +1,33 @@
--- ./qmake/Makefile.unix.orig 2019-03-17 13:47:22.012382000 +0200
+++ ./qmake/Makefile.unix 2019-03-17 13:48:27.561198000 +0200
@@ -144,14 +144,14 @@
CXXFLAGS = $(EXTRA_CXXFLAGS) $(CONFIG_CXXFLAGS) $(CPPFLAGS)
LFLAGS = $(EXTRA_LFLAGS) $(CONFIG_LFLAGS)
-first all: $(BUILD_PATH)/bin/qmake$(EXEEXT)
-qmake: $(BUILD_PATH)/bin/qmake$(EXEEXT)
-binary: $(BUILD_PATH)/qmake/qmake$(EXEEXT)
+first all: $(BUILD_PATH)/bin/qmake$(EXEEXT)
+qmake: $(BUILD_PATH)/bin/qmake$(EXEEXT)
+binary: $(BUILD_PATH)/qmake/qmake$(EXEEXT)
-$(BUILD_PATH)/bin/qmake$(EXEEXT): $(OBJS) $(QOBJS) qlibraryinfo.o
+$(BUILD_PATH)/bin/qmake$(EXEEXT): $(OBJS) $(QOBJS) qlibraryinfo.o
$(CXX) -o "$@" $(OBJS) $(QOBJS) qlibraryinfo.o $(LFLAGS)
-$(BUILD_PATH)/qmake/qmake$(EXEEXT): $(OBJS) $(QOBJS) qlibraryinfo_final.o
+$(BUILD_PATH)/qmake/qmake$(EXEEXT): $(OBJS) $(QOBJS) qlibraryinfo_final.o
$(CXX) -o "$@" $(OBJS) $(QOBJS) qlibraryinfo_final.o $(LFLAGS)
Makefile: $(SOURCE_PATH)/qmake/Makefile.unix
@@ -162,8 +162,8 @@
distclean:: clean
$(RM_RF) .deps
- $(RM_F) $(BUILD_PATH)/bin/qmake$(EXEEXT)
- $(RM_F) $(BUILD_PATH)/qmake/qmake$(EXEEXT)
+ $(RM_F) $(BUILD_PATH)/bin/qmake$(EXEEXT)
+ $(RM_F) $(BUILD_PATH)/qmake/qmake$(EXEEXT)
$(RM_F) Makefile
depend:

View File

@@ -0,0 +1,11 @@
--- ./qmake/generators/unix/unixmake.cpp.orig 2019-01-28 19:11:52.000000000 +0200
+++ ./qmake/generators/unix/unixmake.cpp 2019-03-17 19:22:28.499343000 +0200
@@ -597,7 +597,7 @@
&& !project->isActiveConfig("plugin")
&& !project->isActiveConfig("unversioned_libname")) {
if(project->isEmpty("QMAKE_HPUX_SHLIB")) {
- links << "$(TARGET0)" << "$(TARGET1)" << "$(TARGET2)";
+ links << "$(TARGET0)";
} else {
links << "$(TARGET0)";
}

View File

@@ -0,0 +1,267 @@
--- ./qmake/generators/unix/unixmake2.cpp.orig 2020-03-27 11:49:31.000000000 +0200
+++ ./qmake/generators/unix/unixmake2.cpp 2020-05-15 18:12:54.807060000 +0200
@@ -260,14 +260,12 @@
} else if(!project->isActiveConfig("staticlib") && project->values("QMAKE_APP_FLAG").isEmpty()) {
t << "TARGETA = " << fileVar("TARGETA") << Qt::endl;
if(!project->isEmpty("QMAKE_BUNDLE")) {
- t << "TARGETD = " << fileVar("TARGET_x.y") << Qt::endl;
+ t << "TARGETD = " << fileVar("TARGET_x") << Qt::endl;
t << "TARGET0 = " << fileVar("TARGET_") << Qt::endl;
} else if (!project->isActiveConfig("unversioned_libname")) {
t << "TARGET0 = " << fileVar("TARGET_") << Qt::endl;
if (project->isEmpty("QMAKE_HPUX_SHLIB")) {
- t << "TARGETD = " << fileVar("TARGET_x.y.z") << Qt::endl;
- t << "TARGET1 = " << fileVar("TARGET_x") << Qt::endl;
- t << "TARGET2 = " << fileVar("TARGET_x.y") << Qt::endl;
+ t << "TARGETD = " << fileVar("TARGET_x") << Qt::endl;
} else {
t << "TARGETD = " << fileVar("TARGET_x") << Qt::endl;
}
@@ -598,7 +596,7 @@
t << "\n\t";
if (!project->isActiveConfig("unversioned_libname"))
- t << "-$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2)";
+ t << "-$(DEL_FILE) $(TARGET) $(TARGET0)";
else
t << "-$(DEL_FILE) $(TARGET)";
@@ -606,9 +604,7 @@
if (!project->isActiveConfig("unversioned_libname")) {
t << "\n\t"
- << varGlue("QMAKE_LN_SHLIB","-"," "," $(TARGET) $(TARGET0)") << "\n\t"
- << varGlue("QMAKE_LN_SHLIB","-"," "," $(TARGET) $(TARGET1)") << "\n\t"
- << varGlue("QMAKE_LN_SHLIB","-"," "," $(TARGET) $(TARGET2)");
+ << varGlue("QMAKE_LN_SHLIB","-"," "," $(TARGET) $(TARGET0)");
}
if (!destdir.isEmpty()) {
t << "\n\t"
@@ -618,11 +614,7 @@
if (!project->isActiveConfig("unversioned_libname")) {
t << "\n\t"
<< "-$(DEL_FILE) " << destdir << "$(TARGET0)\n\t"
- << "-$(DEL_FILE) " << destdir << "$(TARGET1)\n\t"
- << "-$(DEL_FILE) " << destdir << "$(TARGET2)\n\t"
- << "-$(MOVE) $(TARGET0) " << destdir << "$(TARGET0)\n\t"
- << "-$(MOVE) $(TARGET1) " << destdir << "$(TARGET1)\n\t"
- << "-$(MOVE) $(TARGET2) " << destdir << "$(TARGET2)";
+ << "-$(MOVE) $(TARGET0) " << destdir << "$(TARGET0)";
}
}
if(!project->isEmpty("QMAKE_POST_LINK"))
@@ -762,14 +754,11 @@
ProStringList commonSedArgs;
if (!project->values("VERSION").isEmpty()) {
const ProString shortVersion =
- project->first("VER_MAJ") + "." +
- project->first("VER_MIN");
+ project->first("VER_MAJ");
commonSedArgs << "-e \"s,@SHORT_VERSION@," << shortVersion << ",g\" ";
commonSedArgs << "-e \"s,\\$${QMAKE_SHORT_VERSION}," << shortVersion << ",g\" ";
const ProString fullVersion =
- project->first("VER_MAJ") + "." +
- project->first("VER_MIN") + "." +
- project->first("VER_PAT");
+ project->first("VER_MAJ");
commonSedArgs << "-e \"s,@FULL_VERSION@," << fullVersion << ",g\" ";
commonSedArgs << "-e \"s,\\$${QMAKE_FULL_VERSION}," << fullVersion << ",g\" ";
}
@@ -1188,6 +1177,7 @@
}
if(!project->isEmpty("TARGET"))
project->values("TARGET").first().prepend(project->first("DESTDIR"));
+
} else if (project->isActiveConfig("staticlib")) {
project->values("PRL_TARGET") =
project->values("TARGET").first().prepend(project->first("QMAKE_PREFIX_STATICLIB"));
@@ -1216,33 +1206,42 @@
bundle_loc + project->first("TARGET");
project->values("TARGET_").append(target);
if (!project->isActiveConfig("shallow_bundle")) {
- project->values("TARGET_x.y").append(project->first("QMAKE_BUNDLE") +
+ project->values("TARGET_x").append(project->first("QMAKE_BUNDLE") +
"/Versions/" +
project->first("QMAKE_FRAMEWORK_VERSION") +
bundle_loc + project->first("TARGET"));
} else {
- project->values("TARGET_x.y").append(target);
+ project->values("TARGET_x").append(target);
}
} else if(project->isActiveConfig("plugin")) {
+
QString prefix;
+
if(!project->isActiveConfig("no_plugin_name_prefix"))
prefix = "lib";
project->values("PRL_TARGET").prepend(prefix + project->first("TARGET"));
- project->values("TARGET_x.y.z").append(prefix +
+
+ project->values("TARGET_x").append(prefix +
project->first("TARGET") + "." +
project->first("QMAKE_EXTENSION_PLUGIN"));
- if(project->isActiveConfig("lib_version_first"))
- project->values("TARGET_x").append(prefix + project->first("TARGET") + "." +
- project->first("VER_MAJ") + "." +
- project->first("QMAKE_EXTENSION_PLUGIN"));
- else
- project->values("TARGET_x").append(prefix + project->first("TARGET") + "." +
- project->first("QMAKE_EXTENSION_PLUGIN") +
- "." + project->first("VER_MAJ"));
- project->values("TARGET") = project->values("TARGET_x.y.z");
+
+ //if(project->isActiveConfig("lib_version_first"))
+ // project->values("TARGET_x").append(prefix + project->first("TARGET") + "." +
+ // project->first("VER_MAJ") + "." +
+ // project->first("QMAKE_EXTENSION_PLUGIN"));
+ //else
+ // project->values("TARGET_x").append(prefix + project->first("TARGET") + "." +
+ // project->first("QMAKE_EXTENSION_PLUGIN") +
+ // "." + project->first("VER_MAJ"));
+
+ project->values("TARGET") = project->values("TARGET_x");
+
+
} else if (!project->isEmpty("QMAKE_HPUX_SHLIB")) {
+
project->values("PRL_TARGET").prepend("lib" + project->first("TARGET"));
project->values("TARGET_").append("lib" + project->first("TARGET") + ".sl");
+
if(project->isActiveConfig("lib_version_first"))
project->values("TARGET_x").append("lib" + project->first("VER_MAJ") + "." +
project->first("TARGET"));
@@ -1250,38 +1249,27 @@
project->values("TARGET_x").append("lib" + project->first("TARGET") + "." +
project->first("VER_MAJ"));
project->values("TARGET") = project->values("TARGET_x");
+
+
} else if (!project->isEmpty("QMAKE_AIX_SHLIB")) {
project->values("PRL_TARGET").prepend("lib" + project->first("TARGET"));
+
project->values("TARGET_").append(project->first("QMAKE_PREFIX_STATICLIB") + project->first("TARGET")
+ "." + project->first("QMAKE_EXTENSION_STATICLIB"));
if(project->isActiveConfig("lib_version_first")) {
+
project->values("TARGET_x").append("lib" + project->first("TARGET") + "." +
project->first("VER_MAJ") + "." +
project->first("QMAKE_EXTENSION_SHLIB"));
- project->values("TARGET_x.y").append("lib" + project->first("TARGET") + "." +
- project->first("VER_MAJ") +
- "." + project->first("VER_MIN") + "." +
- project->first("QMAKE_EXTENSION_SHLIB"));
- project->values("TARGET_x.y.z").append("lib" + project->first("TARGET") + "." +
- project->first("VER_MAJ") + "." +
- project->first("VER_MIN") + "." +
- project->first("VER_PAT") + "." +
- project->first("QMAKE_EXTENSION_SHLIB"));
+
+
} else {
project->values("TARGET_x").append("lib" + project->first("TARGET") + "." +
project->first("QMAKE_EXTENSION_SHLIB") +
"." + project->first("VER_MAJ"));
- project->values("TARGET_x.y").append("lib" + project->first("TARGET") + "." +
- project->first("QMAKE_EXTENSION_SHLIB") +
- "." + project->first("VER_MAJ") +
- "." + project->first("VER_MIN"));
- project->values("TARGET_x.y.z").append("lib" + project->first("TARGET") + "." +
- project->first("QMAKE_EXTENSION_SHLIB") + "." +
- project->first("VER_MAJ") + "." +
- project->first("VER_MIN") + "." +
- project->first("VER_PAT"));
}
- project->values("TARGET") = project->values("TARGET_x.y.z");
+ project->values("TARGET") = project->values("TARGET_x");
+
} else {
project->values("PRL_TARGET").prepend("lib" + project->first("TARGET"));
project->values("TARGET_").append("lib" + project->first("TARGET") + "." +
@@ -1290,49 +1278,36 @@
project->values("TARGET_x").append("lib" + project->first("TARGET") + "." +
project->first("VER_MAJ") + "." +
project->first("QMAKE_EXTENSION_SHLIB"));
- project->values("TARGET_x.y").append("lib" + project->first("TARGET") + "." +
- project->first("VER_MAJ") +
- "." + project->first("VER_MIN") + "." +
- project->first("QMAKE_EXTENSION_SHLIB"));
- project->values("TARGET_x.y.z").append("lib" + project->first("TARGET") + "." +
- project->first("VER_MAJ") + "." +
- project->first("VER_MIN") + "." +
- project->first("VER_PAT") + "." +
- project->first("QMAKE_EXTENSION_SHLIB"));
+
} else {
project->values("TARGET_x").append("lib" + project->first("TARGET") + "." +
project->first("QMAKE_EXTENSION_SHLIB") +
"." + project->first("VER_MAJ"));
- project->values("TARGET_x.y").append("lib" + project->first("TARGET") + "." +
- project->first("QMAKE_EXTENSION_SHLIB")
- + "." + project->first("VER_MAJ") +
- "." + project->first("VER_MIN"));
- project->values("TARGET_x.y.z").append("lib" + project->first("TARGET") +
- "." +
- project->first(
- "QMAKE_EXTENSION_SHLIB") + "." +
- project->first("VER_MAJ") + "." +
- project->first("VER_MIN") + "." +
- project->first("VER_PAT"));
}
if (project->isActiveConfig("unversioned_libname"))
project->values("TARGET") = project->values("TARGET_");
else
- project->values("TARGET") = project->values("TARGET_x.y.z");
+ project->values("TARGET") = project->values("TARGET_x");
}
+
if (!project->values("QMAKE_LFLAGS_SONAME").isEmpty()) {
ProString soname;
+
if(project->isActiveConfig("plugin")) {
+
if(!project->values("TARGET").isEmpty())
soname += project->first("TARGET");
+
+
} else if(!project->isEmpty("QMAKE_BUNDLE")) {
- soname += project->first("TARGET_x.y");
+ soname += project->first("TARGET_x");
} else if(project->isActiveConfig("unversioned_soname")) {
soname = "lib" + project->first("QMAKE_ORIG_TARGET")
+ "." + project->first("QMAKE_EXTENSION_SHLIB");
} else if(!project->values("TARGET_x").isEmpty()) {
soname += project->first("TARGET_x");
}
+
if(!soname.isEmpty()) {
if(project->isActiveConfig("absolute_library_soname") &&
project->values("INSTALLS").indexOf("target") != -1 &&
@@ -1376,17 +1351,14 @@
if(!project->isEmpty("QMAKE_LFLAGS_COMPAT_VERSION")) {
if(project->isEmpty("COMPAT_VERSION"))
project->values("QMAKE_LFLAGS") += QString(project->first("QMAKE_LFLAGS_COMPAT_VERSION") +
- project->first("VER_MAJ") + "." +
- project->first("VER_MIN"));
+ project->first("VER_MAJ"));
else
project->values("QMAKE_LFLAGS") += QString(project->first("QMAKE_LFLAGS_COMPAT_VERSION") +
project->first("COMPATIBILITY_VERSION"));
}
if(!project->isEmpty("QMAKE_LFLAGS_VERSION")) {
project->values("QMAKE_LFLAGS") += QString(project->first("QMAKE_LFLAGS_VERSION") +
- project->first("VER_MAJ") + "." +
- project->first("VER_MIN") + "." +
- project->first("VER_PAT"));
+ project->first("VER_MAJ"));
}
project->values("QMAKE_LFLAGS") += project->values("QMAKE_LFLAGS_SONAME");
}
@@ -1481,7 +1453,7 @@
t << fileVar("TARGET");
} else {
if (project->isEmpty("QMAKE_HPUX_SHLIB"))
- t << fileVar("TARGET_x.y.z") << ' ';
+ t << fileVar("TARGET_x") << ' ';
t << fileVar("TARGET_x") << ' ' << fileVar("TARGET_");
}
t << "'\n\n";

View File

@@ -0,0 +1,11 @@
--- ./src/corelib/configure.json.orig 2019-01-28 19:11:52.000000000 +0200
+++ ./src/corelib/configure.json 2019-03-17 19:22:28.506269000 +0200
@@ -44,7 +44,7 @@
},
"headers": "glib.h",
"sources": [
- { "type": "pkgConfig", "args": "glib-2.0 gthread-2.0" }
+ { "type": "pkgConfig", "args": "glib gthread" }
]
},
"posix_iconv": {

View File

@@ -0,0 +1,20 @@
--- ./src/corelib/corelib.pro.orig 2019-01-28 19:11:52.000000000 +0200
+++ ./src/corelib/corelib.pro 2019-03-17 19:22:28.508051000 +0200
@@ -133,7 +133,7 @@
$$cmake_umbrella_config_version_file.output \
$$cmake_umbrella_config_module_location_for_install.output
-cmake_qt5_umbrella_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5
+cmake_qt5_umbrella_module_files.path = $$[QT_INSTALL_PREFIX]/lib/cmake/Qt5
QMAKE_SUBSTITUTES += \
ctest_macros_file \
@@ -146,7 +146,7 @@
ctest_qt5_module_files.files += $$ctest_macros_file.output $$cmake_extras_mkspec_dir_for_install.output
-ctest_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5Core
+ctest_qt5_module_files.path = $$[QT_INSTALL_PREFIX]/lib/cmake/Qt5Core
INSTALLS += ctest_qt5_module_files cmake_qt5_umbrella_module_files

View File

@@ -0,0 +1,30 @@
--- ./src/gui/configure.json.orig 2019-03-06 09:59:50.000000000 +0200
+++ ./src/gui/configure.json 2019-08-07 06:31:35.107450000 +0200
@@ -238,10 +238,10 @@
},
"headers": "ft2build.h",
"sources": [
- { "type": "pkgConfig", "args": "freetype2" },
- { "type": "freetype", "libs": "-lfreetype", "condition": "!config.wasm" },
+ { "type": "pkgConfig", "args": "qtfreetype2" },
+ { "type": "freetype", "libs": "-lqtfreetype", "condition": "!config.wasm" },
{ "libs": "-s USE_FREETYPE=1", "condition": "config.wasm" },
- { "libs": "-lfreetype" }
+ { "libs": "-lqtfreetype" }
],
"use": [
{ "lib": "zlib", "condition": "features.system-zlib" }
@@ -259,10 +259,10 @@
"FcPattern *pattern = 0;"
]
},
- "headers": "fontconfig/fontconfig.h",
+ "headers": "qtfontconfig/fontconfig/fontconfig.h",
"sources": [
- { "type": "pkgConfig", "args": "fontconfig" },
- { "type": "freetype", "libs": "-lfontconfig" }
+ { "type": "pkgConfig", "args": "qtfontconfig" },
+ { "type": "freetype", "libs": "-lqtfontconfig" }
],
"use": "freetype"
},

View File

@@ -0,0 +1,13 @@
--- ./src/platformsupport/glxconvenience/qglxconvenience.cpp.orig 2019-01-28 19:11:52.000000000 +0200
+++ ./src/platformsupport/glxconvenience/qglxconvenience.cpp 2019-03-17 19:22:28.527486000 +0200
@@ -251,6 +251,10 @@
if (requestedAlpha && actualAlpha != requestedAlpha)
continue;
+ // avoid BGR visuals due to bugs elsewhere
+ if ((visual->red_mask & 0x1) == 0x1)
+ continue;
+
return candidate;
}
if (compatibleCandidate) {

View File

@@ -0,0 +1,11 @@
--- ./src/widgets/configure.json.orig 2019-01-28 19:11:52.000000000 +0200
+++ ./src/widgets/configure.json 2019-03-17 19:22:28.533401000 +0200
@@ -21,7 +21,7 @@
"gtk3": {
"label": "GTK+ >= 3.6",
"sources": [
- { "type": "pkgConfig", "args": "gtk+-3.0 >= 3.6" }
+ { "type": "pkgConfig", "args": "gtk+ >= 3.6" }
]
}
},

View File

@@ -0,0 +1,13 @@
--- ./tests/tests.pro.orig 2019-01-28 19:11:52.000000000 +0200
+++ ./tests/tests.pro 2019-03-17 19:22:28.535049000 +0200
@@ -2,8 +2,8 @@
CONFIG += no_docs_target
requires(qtHaveModule(testlib))
-SUBDIRS = auto
+#SUBDIRS = auto
# benchmarks in debug mode is rarely sensible
# benchmarks are not sensible for code coverage (here with tool testcocoon)
-!uikit:!testcocoon:contains(QT_CONFIG, release): SUBDIRS += benchmarks
+#!uikit:!testcocoon:contains(QT_CONFIG, release): SUBDIRS += benchmarks

View File

@@ -0,0 +1,9 @@
Qt is a cross-platform application and UI framework for developers
using C++ or QML, a CSS/JavaScript-like language.
With Qt, code can be reused efficiently to target multiple platforms
with one code base. The modular C++ class library and developer tools
easily enables developers to create applications for one platform and
easily build and run to deploy on another platform.
WWW: http://qt-project.org

3760
xapp/libqt5-base/pkg-plist Normal file

File diff suppressed because it is too large Load Diff