From OpenSCADAWiki
Jump to: navigation, search

КОНЦЕПТУАЛЬНЕ > Уніфікація складання із адаптацією до 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 у режимі розробки. Відновлено появу нових елементів дій віджетів бібліотек шляхом розташування нових дій у Меню перед Панеллю Інструментів.