From OpenSCADAWiki
КОНЦЕПТУАЛЬНЕ > Уніфікація складання із адаптацією до Debian 12, Qt6, QtWebEngine, QtMultimediaEngine, OpenSSL3, MIPS
- FIX: Завершено правильне складання із бібліотекою ядра лише статично:
- configure.ac: конфігураційний параметр --enable-CoreLibStatic розширено визначенням AM_CONDITIONAL(CoreLibStatic) і змінною оточення LIB_MOD;
- moduls/*/*/Makefile.am: доповнено параметром --tag=disable-shared і розширено використанням змінної оточення LIB_MOD;
- src_call/Makefile.am: розширено специфічною обробкою AM_CONDITIONAL(CoreLibStatic) для статичного зв'язування бібліотеки ядра із усіма включеними модулями.
- configure.ac,acinclude.m4: Очищено від застарілих макросів у AutoConf 2.70:
- AC_HELP_STRING перейменовано у AS_HELP_STRING;
- AM_CONFIG_HEADER перейменовано у AC_CONFIG_HEADER;
- AC_LIBTOOL_DLOPEN замінено на LT_INIT([dlopen]);
- AX_PTHREAD замінено на AC_SEARCH_LIBS(pthread, [pthread_create])
- закоментовано AC_PROG_LIBTOOL, AM_PROG_LIBTOOL, AC_HEADER_STDC, AC_HEADER_TIME, AC_TYPE_SIGNAL, AC_ISC_POSIX.
- acinclude.m4,DAQ.OPC_UA.libOPC_UA,Transport.SSL,Special.FLibSYS: Очищено від застарілих функцій у OpenSSL 1.1 (API 3.0):
- acinclude.m4: функції тестування макросу AX_LIB_OpenSSL() і AX_LIB_OpenSSL_opt() на libcrypto замінено із MD5_Init() у BIO_new(); функції тестування макросу AX_LIB_OpenSSL() на libssl замінено із SSL_free() у SSL_new();
- OPC_UA.libOPC_UA: UA::symmetricEncrypt() і UA::symmetricDecrypt() поєднано у UA::symmetricCrypt() і переключено на використання EVP_CipherInit() і EVP_CipherUpdate() замість AES_cbc_encrypt() для нових версій;
- використання RSA_public_encrypt() переведено на EVP_PKEY_encrypt() і RSA_private_decrypt() переведено на EVP_PKEY_decrypt() для нових версій.
- Transport.SSL,Special.FLibSYS: використання MD5() переведено на EVP_DigestInit_ex(), EVP_DigestUpdate(), EVP_DigestFinal_ex() для нових версій.
- configure.ac: При додані Qt6 його доповнено щодо Qt6Sensors, Qt6WebEngineWidgets, Qt6MultimediaWidgets.
- Доповнено перевіркою Qt5WebEngineWidgets і Qt5MultimediaWidgets для підтримки у UI.Vision.
- Доповнено перевіркою декларацій-функцій clock_nanosleep, pthread_rwlock_timedwrlock, newlocale для дуже простих оточень MIPS із UCLibC.
- Параметри --disable-WebKit і --disable-Phonon перейменовано у --disable-QtWebEngine і --disable-QtMultimediaEngine відповідно.
- Загальні зміни QtWebKit_{CFLAGS,LIBS} і phonon_{CFLAGS,LIBS} перейменовано у QtWebEngine_{CFLAGS,LIBS} і QtMultimediaEngine_{CFLAGS,LIBS} відповідно.
- Покращено більшість відповідних повідомлень.
- Доповнено перевіркою заголовку pthread.h.
- acinclude.m4: AutoConf макрос AX_LIB_Qt розширено підтримкою Qt6 та вдосконалено виявлення MOC і RCC для Qt5.
- Покращено деякі повідомлення.
- data/{debian,debian_mod}/compat: Рівень збільшено до 7 для складання на сучасний дистрибутивах Debian по замовченню.
- data/{debian,debian_mod}/control: Доповнено варіантами залежностей qt6-base-dev, qt6-webengine-dev, qt6-multimedia-dev і qtwebengine5-dev, qtmultimedia5-dev. Доповнено варіантом залежності libsensors-dev до libsensors4-dev.
- ResRW::{resRequestW,resRequestR}(): Доповнено використанням версії за часом із визначенням HAVE_DECL_PTHREAD_RWLOCK_TIMEDWRLOCK.
- TSYS::atime2str(),SYS.strftime(): Доповнено використанням локалізованої дати із визначенням HAVE_DECL_NEWLOCALE.
- TSYS::{sysSleep,taskSleep}(): Доповнено використанням сну за годинником при визначені HAVE_DECL_CLOCK_NANOSLEEP.
- Інтерфейс Контролю основної сторінки доповнено прихованням вкладки "Переклади" і полів мови за відсутності багатонаціональності взагалі.
- TMess,TModule: Перевірку HAVE_LIBINTL_H замінено на "#if HAVE_LIBINTL_H", тобто перевіркою на 1.
- Transports.SSL: Адаптовано до нових функцій OpenSSL 1.1 (API 3.0) з поводженням із застарілими.
- UI.{QTStarter,QTCfg,Vision}: Адаптація до складання із Qt6, включно із адаптацією до Qt6WebEngine і Qt6Multimedia:
- QLayout::{setMargin,margin}() замінено на QLayout::{setContentsMargins,getContentsMargins}();
- QVariant(char*) замінено на QVariant(QString);
- конструктор QMouseEvent замінено відповідною із глобальною позицією;
- QRegExp замінено на TRegExp варіантом OpenSCADA для функцій заміни і тестування або прямої перевірки;
- QComboBox сигнал activated(const QString&), currentIndexChanged(const QString&) замінено на activated(int), currentIndexChanged(int) відповідно;
- QSignalMapper сигнал mapped(QWidget*) замінено на mappedObject(QObject*);
- QPalette::Background замінено на QPalette::Window та Qt::MidButton на Qt::MiddleButton;
- QFileDialog::setReadOnly() замінено на setOption();
- QApplication::desktop() замінено на QScreen;
- QAction::parentWidget() замінено на parent();
- QVariant::type() перейменовано у typeId(), QMouseEvent::{pos,globalPos}() перейменовано у {position,globalPosition}(), QDateTime::{setTime_t,fromTime_t,toTime_t}() перейменовано у {setSecsSinceEpoch,fromSecsSinceEpoch,toSecsSinceEpoch}();
- доповнено перейменуванням функцій для різних версій Qt за допомогою макро-визначень у різних файлах щодо: typeId() у type(), position() у pos(), globalPosition() у globalPos(), setSecsSinceEpoch() у setTime_t(), fromSecsSinceEpoch() у fromTime_t(), toSecsSinceEpoch() у toTime_t(), mappedObject() у mapped(), setSource() у setMedia(), setVolume() у audioOutput()->setVolume(), setMedia() у setSource(), state() у playbackState();
- доповнено підтримкою QRegularExpression замість QRegExp у Qt6;
- QMouseEvent властивість mouseBtHold розділено на дві QPointF: mouseBtHoldPos, mouseBtHoldPosG;
- розділювач комбінацій клавіш "+" замінено "|", тобто "Qt::SHIFT|Qt::Key_F1";
- подія QEvent::KeyRelease у застосуванні LineEdit замінено на QEvent::KeyPress;
- QTStarter: загальну бібліотеку lib_qtgen доповнено функцією winFit() загального підлаштування специфічних вікон мобільних систем; доповнено атрибутом Qt::AA_ShareOpenGLContexts перед об'єктом додатку Qt для функціювання QtWebEngine на Qt6;
- Vision: адаптація до Qt WebEngineWidgets замість WebKit та до Qt MultimediaWidgets замість Phonon, і примітив Документ розділено задля примусового використання QTextBrowser у режимі розробки. Відновлено появу нових елементів дій віджетів бібліотек шляхом розташування нових дій у Меню перед Панеллю Інструментів.