aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-connectivity
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-connectivity')
-rw-r--r--meta-oe/recipes-connectivity/ace/ace_6.5.19.bb41
-rw-r--r--meta-oe/recipes-connectivity/ace/files/ace_config.patch13
-rw-r--r--meta-oe/recipes-connectivity/ace/files/no_sysctl.patch22
-rw-r--r--meta-oe/recipes-connectivity/gammu/gammu_1.42.0.bb (renamed from meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb)48
-rw-r--r--meta-oe/recipes-connectivity/gammu/python3-gammu/0001-setup.py-StrictVersion-packaging.version.patch49
-rw-r--r--meta-oe/recipes-connectivity/gammu/python3-gammu_3.2.4.bb21
-rw-r--r--meta-oe/recipes-connectivity/gattlib/files/dbus-avoid-strange-chars-from-the-build-dir.patch72
-rw-r--r--meta-oe/recipes-connectivity/gattlib/gattlib_git.bb38
-rw-r--r--meta-oe/recipes-connectivity/gensio/gensio_2.8.4.bb26
-rw-r--r--meta-oe/recipes-connectivity/hostapd/hostapd/defconfig3
-rw-r--r--meta-oe/recipes-connectivity/hostapd/hostapd/key-replay-cve-multiple.patch984
-rw-r--r--meta-oe/recipes-connectivity/hostapd/hostapd_2.10.bb48
-rw-r--r--meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb52
-rw-r--r--meta-oe/recipes-connectivity/ifplugd/ifplugd/0001-src-interface.h-Make-declarations-as-extern.patch31
-rw-r--r--meta-oe/recipes-connectivity/ifplugd/ifplugd/Fix-build-with-musl.patch31
-rw-r--r--meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb27
-rw-r--r--meta-oe/recipes-connectivity/irssi/irssi_1.4.5.bb (renamed from meta-oe/recipes-connectivity/irssi/irssi_1.0.4.bb)9
-rw-r--r--meta-oe/recipes-connectivity/iwd/iwd/0001-build-Use-abs_top_srcdir-instead-of-abs_srcdir-for-e.patch37
-rw-r--r--meta-oe/recipes-connectivity/iwd/iwd_2.16.bb55
-rw-r--r--meta-oe/recipes-connectivity/krb5/krb5/0001-aclocal-Add-parameter-to-disable-keyutils-detection.patch32
-rw-r--r--meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-admin-server4
-rw-r--r--meta-oe/recipes-connectivity/krb5/krb5/krb5-admin-server.service1
-rw-r--r--meta-oe/recipes-connectivity/krb5/krb5/krb5-kdc.service1
-rw-r--r--meta-oe/recipes-connectivity/krb5/krb5_1.21.2.bb (renamed from meta-oe/recipes-connectivity/krb5/krb5_1.16.bb)154
-rw-r--r--meta-oe/recipes-connectivity/libev/libev_4.33.bb (renamed from meta-oe/recipes-connectivity/libev/libev_4.24.bb)13
-rw-r--r--meta-oe/recipes-connectivity/libimobiledevice-glue/libimobiledevice-glue_git.bb17
-rw-r--r--meta-oe/recipes-connectivity/libimobiledevice/files/configure-fix-largefile.patch38
-rw-r--r--meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch31
-rw-r--r--meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice/0001-include-unistd.h-for-usleep.patch31
-rw-r--r--meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb23
-rw-r--r--meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_git.bb22
-rw-r--r--meta-oe/recipes-connectivity/libirecovery/libirecovery_git.bb17
-rw-r--r--meta-oe/recipes-connectivity/libmbim/libmbim/clang.patch73
-rw-r--r--meta-oe/recipes-connectivity/libmbim/libmbim_1.14.0.bb18
-rw-r--r--meta-oe/recipes-connectivity/libmbim/libmbim_1.30.0.bb22
-rw-r--r--meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/69-libmtp.rules999
-rw-r--r--meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/glibc-2.20.patch36
-rw-r--r--meta-oe/recipes-connectivity/libmtp/libmtp/0001-Use-native-mtp-hotplug.patch43
-rw-r--r--meta-oe/recipes-connectivity/libmtp/libmtp_1.1.21.bb47
-rw-r--r--meta-oe/recipes-connectivity/libmtp/libmtp_1.1.5.bb58
-rw-r--r--meta-oe/recipes-connectivity/libndp/libndp/0001-include-sys-select.h-for-fd_-definitions.patch25
-rw-r--r--meta-oe/recipes-connectivity/libndp/libndp/0001-libndp-Fix-signature-of-sendto-API.patch40
-rw-r--r--meta-oe/recipes-connectivity/libndp/libndp_1.6.bb13
-rw-r--r--meta-oe/recipes-connectivity/libndp/libndp_1.8.bb13
-rw-r--r--meta-oe/recipes-connectivity/libnet/libnet/0001-Support-musl-libc-remove-support-for-glibc-2.1.patch58
-rw-r--r--meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb21
-rw-r--r--meta-oe/recipes-connectivity/libnet/libnet_1.3.bb20
-rw-r--r--meta-oe/recipes-connectivity/libnfs/libnfs/0001-CMakeLists.txt-respect-CMAKE_INSTALL_LIBDIR-for-mult.patch61
-rw-r--r--meta-oe/recipes-connectivity/libnfs/libnfs/0001-cmake-Test-for-sys-uio.h.patch44
-rw-r--r--meta-oe/recipes-connectivity/libnfs/libnfs_5.0.3.bb18
-rw-r--r--meta-oe/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch85
-rw-r--r--meta-oe/recipes-connectivity/libqmi/libqmi_1.20.0.bb18
-rw-r--r--meta-oe/recipes-connectivity/libqmi/libqmi_1.34.0.bb28
-rw-r--r--meta-oe/recipes-connectivity/libqrtr-glib/libqrtr-glib_git.bb21
-rw-r--r--meta-oe/recipes-connectivity/libtorrent-rasterbar/libtorrent-rasterbar_2.0.10.bb33
-rw-r--r--meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch30
-rw-r--r--meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-implement-64bit-atomic-for-mips.patch263
-rw-r--r--meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch94
-rw-r--r--meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb31
-rw-r--r--meta-oe/recipes-connectivity/libuv/libuv_1.11.0.bb19
-rw-r--r--meta-oe/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb28
-rw-r--r--meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.3.3.bb67
-rw-r--r--meta-oe/recipes-connectivity/linuxptp/linuxptp/0001-include-string.h-for-strncpy.patch26
-rw-r--r--meta-oe/recipes-connectivity/linuxptp/linuxptp/0002-linuxptp-Use-CC-in-incdefs.sh.patch48
-rw-r--r--meta-oe/recipes-connectivity/linuxptp/linuxptp/0003-include-missing-time.h-for-time_t.patch26
-rw-r--r--meta-oe/recipes-connectivity/linuxptp/linuxptp/0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch36
-rw-r--r--meta-oe/recipes-connectivity/linuxptp/linuxptp/build-Allow-CC-and-prefix-to-be-overriden.patch37
-rw-r--r--meta-oe/recipes-connectivity/linuxptp/linuxptp/no-incdefs-using-host-headers.patch29
-rw-r--r--meta-oe/recipes-connectivity/linuxptp/linuxptp/systemd/phc2sys@.service.in13
-rw-r--r--meta-oe/recipes-connectivity/linuxptp/linuxptp/systemd/ptp4l@.service.in11
-rw-r--r--meta-oe/recipes-connectivity/linuxptp/linuxptp_1.8.bb24
-rw-r--r--meta-oe/recipes-connectivity/linuxptp/linuxptp_4.1.bb62
-rw-r--r--meta-oe/recipes-connectivity/lirc/lirc/lirc.tmpfiles1
-rw-r--r--meta-oe/recipes-connectivity/lirc/lirc/lirc_options.conf24
-rw-r--r--meta-oe/recipes-connectivity/lirc/lirc/lircd.conf315
-rw-r--r--meta-oe/recipes-connectivity/lirc/lirc/lircd.init40
-rw-r--r--meta-oe/recipes-connectivity/lirc/lirc/lircd.service20
-rw-r--r--meta-oe/recipes-connectivity/lirc/lirc/lircexec.init37
-rw-r--r--meta-oe/recipes-connectivity/lirc/lirc/pollfd.patch101
-rw-r--r--meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb87
-rw-r--r--meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/04-use-pkg-config-for-gnutls.patch23
-rw-r--r--meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/glib-2.32.patch10
-rw-r--r--meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb21
-rw-r--r--meta-oe/recipes-connectivity/loudmouth/loudmouth_1.5.4.bb16
-rw-r--r--meta-oe/recipes-connectivity/modemmanager/modemmanager/enum-conversion.patch21
-rw-r--r--meta-oe/recipes-connectivity/modemmanager/modemmanager_1.22.0.bb55
-rw-r--r--meta-oe/recipes-connectivity/modemmanager/modemmanager_1.6.4.bb51
-rw-r--r--meta-oe/recipes-connectivity/mosh/mosh/0001-configure.ac-add-support-of-protobuf-4.22.x.patch63
-rw-r--r--meta-oe/recipes-connectivity/mosh/mosh_1.4.0.bb (renamed from meta-oe/recipes-connectivity/mosh/mosh_1.3.0.bb)20
-rw-r--r--meta-oe/recipes-connectivity/mosquitto/files/0001-config.mk-allow-prefix-mandir-localedir-from-environ.patch35
-rw-r--r--meta-oe/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch975
-rw-r--r--meta-oe/recipes-connectivity/mosquitto/files/mosquitto.init89
-rw-r--r--meta-oe/recipes-connectivity/mosquitto/files/mosquitto.service15
-rw-r--r--meta-oe/recipes-connectivity/mosquitto/mosquitto_1.4.14.bb83
-rw-r--r--meta-oe/recipes-connectivity/obex/obex-data-server/obex-data-server-0.4.6-build-fixes-1.patch3
-rw-r--r--meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb12
-rw-r--r--meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb25
-rw-r--r--meta-oe/recipes-connectivity/obexftp/obexftp/0001-apps-CMakeLists.txt-Explicitly-link-libbfb-and-libmu.patch2
-rw-r--r--meta-oe/recipes-connectivity/obexftp/obexftp/Remove_some_printf_in_obexftpd.patch2
-rw-r--r--meta-oe/recipes-connectivity/obexftp/obexftp/make_fuse_swig_optional.patch2
-rw-r--r--meta-oe/recipes-connectivity/obexftp/obexftp_0.24.2.bb8
-rw-r--r--meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb17
-rw-r--r--meta-oe/recipes-connectivity/paho-mqtt-c/files/makefile.patch25
-rw-r--r--meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.0.bb35
-rw-r--r--meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.13.bb33
-rw-r--r--meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp/0001-cmake-Use-CMAKE_INSTALL_LIBDIR-and-CMAKE_INSTALL_BIN.patch59
-rw-r--r--meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.3.2.bb24
-rw-r--r--meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus/0001-initialize-timespec-variable.patch35
-rw-r--r--meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus/0001-packet-Initialize-m_ExternalRawData-in-IDnsResource-.patch34
-rw-r--r--meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus_23.09.bb24
-rw-r--r--meta-oe/recipes-connectivity/phonet-utils/phonet-utils/0001-Include-limits.h-for-PATH_MAX.patch25
-rw-r--r--meta-oe/recipes-connectivity/phonet-utils/phonet-utils_git.bb15
-rw-r--r--meta-oe/recipes-connectivity/rabbitmq-c/files/CVE-2023-35789.patch131
-rw-r--r--meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.13.0.bb21
-rw-r--r--meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.7.0.bb18
-rw-r--r--meta-oe/recipes-connectivity/rfkill/rfkill/0001-rfkill-makefile-don-t-use-t-the-OE-install-wrapper-d.patch2
-rw-r--r--meta-oe/recipes-connectivity/rfkill/rfkill/dont.call.git.rev-parse.on.parent.dir.patch2
-rw-r--r--meta-oe/recipes-connectivity/rfkill/rfkill_1.0.bb (renamed from meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb)10
-rw-r--r--meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch94
-rw-r--r--meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb18
-rw-r--r--meta-oe/recipes-connectivity/ser2net/files/ser2net.service13
-rw-r--r--meta-oe/recipes-connectivity/ser2net/ser2net_3.4.bb15
-rw-r--r--meta-oe/recipes-connectivity/ser2net/ser2net_4.6.2.bb30
-rw-r--r--meta-oe/recipes-connectivity/smstools3/smstools3/0001-Make-extern-declarations-to-avoid-duplicate-var-defi.patch606
-rw-r--r--meta-oe/recipes-connectivity/smstools3/smstools3/scripts_no_bash.patch2
-rw-r--r--meta-oe/recipes-connectivity/smstools3/smstools3/sms_binpath.patch2
-rw-r--r--meta-oe/recipes-connectivity/smstools3/smstools3_3.1.21.bb6
-rw-r--r--meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.0.bb16
-rw-r--r--meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb20
-rw-r--r--meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb11
-rw-r--r--meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch27
-rw-r--r--meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch110
-rw-r--r--meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch40
-rw-r--r--meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch42
-rw-r--r--meta-oe/recipes-connectivity/thrift/thrift_0.20.0.bb71
-rw-r--r--meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb64
-rw-r--r--meta-oe/recipes-connectivity/transmission/files/transmission-daemon163
-rw-r--r--meta-oe/recipes-connectivity/transmission/transmission_4.0.5.bb61
-rw-r--r--meta-oe/recipes-connectivity/umip/files/0001-Add-format-string-to-fprintf-call.patch26
-rw-r--r--meta-oe/recipes-connectivity/umip/files/0001-replace-SIGCLD-with-SIGCHLD-and-include-sys-types.h.patch49
-rw-r--r--meta-oe/recipes-connectivity/umip/files/0002-replace-PTHREAD_MUTEX_FAST_NP-with-PTHREAD_MUTEX_NOR.patch143
-rw-r--r--meta-oe/recipes-connectivity/umip/files/add-dependency-to-support-parallel-compilation.patch23
-rwxr-xr-xmeta-oe/recipes-connectivity/umip/files/mip6d112
-rw-r--r--meta-oe/recipes-connectivity/umip/files/mip6d.service10
-rw-r--r--meta-oe/recipes-connectivity/umip/umip_1.0.bb42
-rw-r--r--meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb23
-rw-r--r--meta-oe/recipes-connectivity/wifi-test-suite/files/0001-Use-toolchain-from-environment-variables.patch92
-rw-r--r--meta-oe/recipes-connectivity/wifi-test-suite/files/0001-wfa_cmdproc-Store-return-value-into-location.patch32
-rw-r--r--meta-oe/recipes-connectivity/wifi-test-suite/files/0002-Add-missing-include-removes-unnedded-stuff-and-add-n.patch45
-rw-r--r--meta-oe/recipes-connectivity/wifi-test-suite/files/0003-fix-path-to-usr-sbin-for-script-and-make-script-for-.patch60
-rw-r--r--meta-oe/recipes-connectivity/wifi-test-suite/files/0004-run-ranlib-per-library-and-use-AR.patch38
-rw-r--r--meta-oe/recipes-connectivity/wifi-test-suite/files/fno-common.patch29
-rw-r--r--meta-oe/recipes-connectivity/wifi-test-suite/wifi-test-suite_10.10.1.bb40
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvdial/musl-support.patch25
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvdial/typo_pon.wvdial.1.patch2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb11
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Check-for-limits.h-during-configure.patch2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch29
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Forward-port-to-OpenSSL-1.1.x.patch557
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/0001-build-fix-parallel-make.patch2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvrules.mk-Use-_DEFAULT_SOURCE.patch2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvtask-Dont-use-ucontext-on-non-glibc-systems.patch135
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/0003-wvtask-Check-for-HAVE_LIBC_STACK_END-only-on-glibc-s.patch2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/0004-wvcrash-Replace-use-of-basename-API.patch2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/0005-check-for-libexecinfo-during-configure.patch2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/04_signed_request.diff2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff15
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/06_gcc-4.7.diff2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/07_buildflags.diff2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/argp.patch2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/gcc-6.patch2
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch18
-rw-r--r--meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb46
-rw-r--r--meta-oe/recipes-connectivity/zabbix/zabbix/0001-Fix-configure.ac.patch2
-rw-r--r--meta-oe/recipes-connectivity/zabbix/zabbix/0001-initialize-msghdr-portably.patch52
-rw-r--r--meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service5
-rw-r--r--meta-oe/recipes-connectivity/zabbix/zabbix_6.2.7.bb (renamed from meta-oe/recipes-connectivity/zabbix/zabbix_3.0.9.bb)35
-rw-r--r--meta-oe/recipes-connectivity/zeromq/cppzmq_4.10.0.bb20
-rw-r--r--meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb21
-rw-r--r--meta-oe/recipes-connectivity/zeromq/czmq_4.2.1.bb41
-rw-r--r--meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch46
-rw-r--r--meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb32
-rw-r--r--meta-oe/recipes-connectivity/zeromq/zeromq_4.3.5.bb28
183 files changed, 4179 insertions, 6433 deletions
diff --git a/meta-oe/recipes-connectivity/ace/ace_6.5.19.bb b/meta-oe/recipes-connectivity/ace/ace_6.5.19.bb
new file mode 100644
index 0000000000..af4f2c54bb
--- /dev/null
+++ b/meta-oe/recipes-connectivity/ace/ace_6.5.19.bb
@@ -0,0 +1,41 @@
+SUMMARY = "C++ framework for implementing distributed and networked applications"
+DESCRIPTION = "C++ network programming framework that implements many core \
+patterns for concurrent communication software"
+LICENSE = "ACE-TAO-CIAO"
+HOMEPAGE = "http://www.dre.vanderbilt.edu/~schmidt/ACE.html"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d2c090e9c730fd91677782d8e2091d77"
+
+DEPENDS += "openssl gperf-native"
+
+SRC_URI = "https://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_19/ACE-${PV}.tar.bz2 \
+ file://ace_config.patch \
+ file://no_sysctl.patch \
+ "
+SRC_URI[sha256sum] = "739be290a38229aaa5b5150e6ea55ce427e80970f0ace4c5040ac46644526f41"
+
+COMPATIBLE_HOST:libc-musl = "null"
+
+S = "${WORKDIR}/ACE_wrappers"
+B = "${WORKDIR}/ACE_wrappers/ace"
+export ACE_ROOT="${WORKDIR}/ACE_wrappers"
+
+inherit pkgconfig
+
+CXXFLAGS:append = " -fpermissive -Wnodeprecated-declarations"
+CXX:append = " -std=gnu++14 -ffile-prefix-map=${WORKDIR}= -fdebug-prefix-map=${WORKDIR}= "
+EXTRA_OEMAKE += "INSTALL_LIB=${baselib}"
+
+do_install() {
+ export D="${D}"
+ oe_runmake install
+
+ for i in $(find ${D} -name "*.pc") ; do
+ sed -i -e s:${D}::g \
+ -e s:/${TARGET_SYS}::g \
+ $i
+ done
+
+ rm -r ${D}/usr/share
+}
+
+UPSTREAM_CHECK_URI = "https://github.com/DOCGroup/ACE_TAO/releases"
diff --git a/meta-oe/recipes-connectivity/ace/files/ace_config.patch b/meta-oe/recipes-connectivity/ace/files/ace_config.patch
new file mode 100644
index 0000000000..c820e46522
--- /dev/null
+++ b/meta-oe/recipes-connectivity/ace/files/ace_config.patch
@@ -0,0 +1,13 @@
+Upstream-Status: Pending
+
+diff -ruN ACE_wrappers1/ace/config.h ACE_wrappers/ace/config.h
+--- ACE_wrappers1/ace/config.h 1970-01-01 02:00:00.000000000 +0200
++++ ACE_wrappers/ace/config.h 2019-01-10 13:36:52.698012477 +0200
+@@ -0,0 +1,1 @@
++#include "ace/config-linux.h"
+diff -ruN ACE_wrappers1/include/makeinclude/platform_macros.GNU ACE_wrappers/include/makeinclude/platform_macros.GNU
+--- ACE_wrappers1/include/makeinclude/platform_macros.GNU 1970-01-01 02:00:00.000000000 +0200
++++ ACE_wrappers/include/makeinclude/platform_macros.GNU 2018-10-31 15:11:18.265392460 +0200
+@@ -0,0 +1,2 @@
++INSTALL_PREFIX = $(D)$(exec_prefix)
++include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
diff --git a/meta-oe/recipes-connectivity/ace/files/no_sysctl.patch b/meta-oe/recipes-connectivity/ace/files/no_sysctl.patch
new file mode 100644
index 0000000000..278893114c
--- /dev/null
+++ b/meta-oe/recipes-connectivity/ace/files/no_sysctl.patch
@@ -0,0 +1,22 @@
+glibc >= 2.32 has removed sys/sysctl.h see
+
+https://sourceware.org/git/?p=glibc.git;a=commit;h=076f09afbac1aa57756faa7a8feadb7936a724e4
+
+This check therefore ensures that its only used on linux when glibc has support for it
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/ace/config-linux.h
++++ b/ace/config-linux.h
+@@ -20,6 +20,10 @@
+
+ #include "ace/config-linux-common.h"
+
++#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 32)
++# define ACE_LACKS_SYS_SYSCTL_H
++#endif
++
+ #define ACE_HAS_BYTESEX_H
+
+ #if (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500)
diff --git a/meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb b/meta-oe/recipes-connectivity/gammu/gammu_1.42.0.bb
index 44411751e0..e6ec9c3573 100644
--- a/meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb
+++ b/meta-oe/recipes-connectivity/gammu/gammu_1.42.0.bb
@@ -1,27 +1,29 @@
SUMMARY = "GNU All Mobile Managment Utilities"
SECTION = "console/network"
-DEPENDS = "cmake-native virtual/libiconv libdbi mysql5 glib-2.0 udev libgudev unixodbc"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a17cb0a873d252440acfdf9b3d0e7fbf"
-HOMEPAGE = "http://www.gammu.org/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+HOMEPAGE = "https://wammu.eu/"
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}/${PV}/${BP}.tar.bz2 \
+SRC_URI = "https://dl.cihar.com/${BPN}/releases/${BP}.tar.xz \
file://gammurc \
file://gammu-smsdrc \
"
-SRC_URI[md5sum] = "8ea16c6b3cc48097a8e62311fe0e25b9"
-SRC_URI[sha256sum] = "de67caa102aa4c8fbed5300e5a0262e40411c4cc79f4379a8d34eed797968fc3"
+SRC_URI[sha256sum] = "d8f152314d7e4d3d643610d742845e0a016ce97c234ad4b1151574e1b09651ee"
+
+UPSTREAM_CHECK_URI = "https://dl.cihar.com/${BPN}/releases"
+
+DEPENDS = "cmake-native virtual/libiconv libdbi mysql5 glib-2.0 udev libgudev unixodbc"
-inherit distutils cmake gettext
+inherit cmake gettext
-do_install_append() {
+do_install:append() {
# these files seem to only be used by symbian and trigger QA warnings
rm -rf ${D}/usr/share/gammu
#install default configuration files
install -d ${D}${sysconfdir}
- install -m 0644 ${WORKDIR}/gammurc ${D}${sysconfdir}/gammurc
- install -m 0644 ${WORKDIR}/gammu-smsdrc ${D}${sysconfdir}/gammu-smsdrc
+ install -m 0644 ${UNPACKDIR}/gammurc ${D}${sysconfdir}/gammurc
+ install -m 0644 ${UNPACKDIR}/gammu-smsdrc ${D}${sysconfdir}/gammu-smsdrc
}
EXTRA_OECONF = " \
@@ -35,26 +37,24 @@ EXTRA_OECMAKE = " \
-DWITH_BLUETOOTH=OFF \
-DWITH_NOKIA_SUPPORT=OFF \
-DWITH_IRDA=OFF \
- -DWITH_PYTHON=OFF \
-DWITH_MySQL=ON \
-DWITH_Postgres=OFF \
"
-PACKAGES =+ "${PN}-smsd libgammu libgsmsd python-${PN}"
+PACKAGES =+ "${PN}-smsd libgammu libgsmsd"
-FILES_${PN} = "${bindir}/gammu ${bindir}/jadmaker ${sysconfdir}/bash_completion.d/gammu \
+FILES:${PN} = "${bindir}/gammu ${bindir}/jadmaker ${sysconfdir}/bash_completion.d/gammu \
${bindir}/gammu-detect ${sysconfdir}/gammurc"
-CONFFILES_${PN} = "${sysconfdir}/gammurc"
-FILES_${PN}-smsd = "${bindir}/gammu-smsd* ${sysconfdir}/gammu-smsdrc"
-CONFFILES_${PN}-smsd = "${sysconfdir}/gammu-smsdrc"
-FILES_${PN}-dev += "${bindir}/gammu-config ${libdir}/*.so"
-FILES_${PN}-dbg += "${bindir}/.debug ${libdir}/.debug ${PYTHON_SITEPACKAGES_DIR}/gammu/.debug"
-FILES_libgammu = "${libdir}/libGammu.so.*"
-FILES_libgsmsd = "${libdir}/libgsmsd.so.*"
-FILES_python-${PN} = "${PYTHON_SITEPACKAGES_DIR}/gammu/*.??"
+CONFFILES:${PN} = "${sysconfdir}/gammurc"
+FILES:${PN}-smsd = "${bindir}/gammu-smsd* ${sysconfdir}/gammu-smsdrc"
+CONFFILES:${PN}-smsd = "${sysconfdir}/gammu-smsdrc"
+FILES:${PN}-dev += "${bindir}/gammu-config ${libdir}/*.so"
+FILES:${PN}-dbg += "${bindir}/.debug ${libdir}/.debug"
+FILES:libgammu = "${libdir}/libGammu.so.*"
+FILES:libgsmsd = "${libdir}/libgsmsd.so.*"
-RDEPENDS_${PN} += "bash"
-RDEPENDS_${PN}-dev += "bash"
+RDEPENDS:${PN} += "bash"
+RDEPENDS:${PN}-dev += "bash"
# Fails to build with thumb-1 (qemuarm)
# gammu-1.32.0/libgammu/service/sms/gsmems.c:542:1: internal compiler error: in patch_jump_insn, at cfgrtl.c:1275
diff --git a/meta-oe/recipes-connectivity/gammu/python3-gammu/0001-setup.py-StrictVersion-packaging.version.patch b/meta-oe/recipes-connectivity/gammu/python3-gammu/0001-setup.py-StrictVersion-packaging.version.patch
new file mode 100644
index 0000000000..23fe4441dc
--- /dev/null
+++ b/meta-oe/recipes-connectivity/gammu/python3-gammu/0001-setup.py-StrictVersion-packaging.version.patch
@@ -0,0 +1,49 @@
+From 96e8f0b2d13e890d9ffff8673f18dcc94290efb2 Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Thu, 13 Jan 2022 20:06:33 -0600
+Subject: [PATCH] setup.py: StrictVersion -> packaging.version.*
+
+distutils is deprecated in Python 3.10 and will be removed in Python
+3.12 [1]
+
+The recommended replacement for distutils.version is to use
+packaging.version
+
+StrictVersion can be replaced by packaging.version.Version and helpers
+like packaging.version.parse()
+
+[1] https://www.python.org/dev/peps/pep-0632/
+[2] https://packaging.pypa.io/en/latest/version.html
+
+Upstream-Status: Submitted [https://github.com/gammu/python-gammu/pull/67]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ setup.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index a458181..bffb09d 100755
+--- a/setup.py
++++ b/setup.py
+@@ -30,7 +30,7 @@ import os
+ import platform
+ import subprocess
+ import sys
+-from distutils.version import StrictVersion
++from packaging.version import parse, Version
+
+ from setuptools import Extension, setup
+
+@@ -112,9 +112,9 @@ class GammuConfig:
+ with open(self.config_path(self.path)) as handle:
+ for line in handle:
+ if line.startswith("#define GAMMU_VERSION "):
+- version = line.split('"')[1]
++ version = parse(line.split('"')[1])
+
+- if version is None or StrictVersion(version) < StrictVersion(GAMMU_REQUIRED):
++ if version is None or version < parse(GAMMU_REQUIRED):
+ print("Too old Gammu version, please upgrade!")
+ sys.exit(100)
+
diff --git a/meta-oe/recipes-connectivity/gammu/python3-gammu_3.2.4.bb b/meta-oe/recipes-connectivity/gammu/python3-gammu_3.2.4.bb
new file mode 100644
index 0000000000..1fdb76eeb4
--- /dev/null
+++ b/meta-oe/recipes-connectivity/gammu/python3-gammu_3.2.4.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Gammu bindings for Python"
+DESCRIPTION ="Python bindings for the Gammu library."
+HOMEPAGE = "https://wammu.eu/python-gammu/"
+BUGRACKER = "https://github.com/gammu/python-gammu/issues"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+PYPI_PACKAGE = "python-gammu"
+
+inherit pypi setuptools3 pkgconfig
+
+SRC_URI += "file://0001-setup.py-StrictVersion-packaging.version.patch"
+SRC_URI[sha256sum] = "49fc70f01bc192c43ff3ec815e082df5261ea4c8d36a695e977734c4eb4df868"
+
+S = "${WORKDIR}/python-gammu-${PV}"
+
+DEPENDS += "gammu python3-packaging-native"
+
+RDEPENDS:${PN} += "python3-asyncio python3-core python3-threading"
+
+RRECOMMENDS:${PN} += "gammu"
diff --git a/meta-oe/recipes-connectivity/gattlib/files/dbus-avoid-strange-chars-from-the-build-dir.patch b/meta-oe/recipes-connectivity/gattlib/files/dbus-avoid-strange-chars-from-the-build-dir.patch
new file mode 100644
index 0000000000..7319280ca4
--- /dev/null
+++ b/meta-oe/recipes-connectivity/gattlib/files/dbus-avoid-strange-chars-from-the-build-dir.patch
@@ -0,0 +1,72 @@
+From 87df05c3f83c563af76ab00567e7a1ab7a6ebc88 Mon Sep 17 00:00:00 2001
+From: Peter Rosin <peda@axentia.se>
+Date: Sat, 9 Nov 2019 15:42:03 +0100
+Subject: [PATCH] dbus: avoid 'strange' chars from the build dir in #defines
+
+gdbus-codegen uses include guards with the full path dir, and if there
+are "bad" characters, such as '+', this fails miserably. E.g. Yocto has a
+tendency to build in directories named from the Yocto package version and
+that package version containing a '+' are not uncommon, and even the
+standard in certain scenarios such as when using ${SRCPV}.
+
+Avoid the problem of the full path "leaking" into the source by avoiding
+the normal include guards and request "#pragma once" instead.
+
+Signed-off-by: Peter Rosin <peda@axentia.se>
+---
+Upstream-Status: Pending
+
+ dbus/CMakeLists.txt | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/dbus/CMakeLists.txt b/dbus/CMakeLists.txt
+index f5096ce10ecd..013c32239e12 100644
+--- a/dbus/CMakeLists.txt
++++ b/dbus/CMakeLists.txt
+@@ -43,37 +43,37 @@ else()
+ endif()
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-adaptater1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.Adapter1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-adaptater1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Adapter1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.Adapter1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-adaptater1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Adapter1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Adapter1.xml
+ COMMENT "Generate D-Bus 'org.bluez.Adapter1.xml'"
+ )
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-device1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.Device1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-device1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Device1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.Device1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-device1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Device1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Device1.xml
+ COMMENT "Generate D-Bus 'org.bluez.Device1.xml'"
+ )
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattservice1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.GattService1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattservice1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattService1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.GattService1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattservice1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattService1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattService1.xml
+ COMMENT "Generate D-Bus 'org.bluez.GattService1.xml'"
+ )
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattcharacteristic1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.Characteristic1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattcharacteristic1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattCharacteristic1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.Characteristic1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattcharacteristic1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattCharacteristic1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattCharacteristic1.xml
+ COMMENT "Generate D-Bus 'org.bluez.GattCharacteristic1.xml'"
+ )
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattdescriptor1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.Descriptor1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattdescriptor1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattDescriptor1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.Descriptor1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattdescriptor1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattDescriptor1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattDescriptor1.xml
+ COMMENT "Generate D-Bus 'org.bluez.GattDescriptor1.xml'"
+ )
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-battery1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.Battery1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-battery1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Battery1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.Battery1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-battery1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Battery1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Battery1.xml
+ COMMENT "Generate D-Bus 'org.bluez.Battery1.xml'"
+ )
+--
+2.11.0
+
diff --git a/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb b/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb
new file mode 100644
index 0000000000..7ad28d594d
--- /dev/null
+++ b/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb
@@ -0,0 +1,38 @@
+DESCRIPTION = "Bluetooth library with attribute support"
+SECTION = "libs/network"
+
+LICENSE = "GPL-2.0-or-later | BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://CMakeLists.txt;beginline=1;endline=6;md5=a87ee154f005a6f035b8b34ac2191f3b"
+
+DEPENDS = "bluez5 glib-2.0 glib-2.0-native python3-packaging-native"
+
+PV = "0.2+git"
+
+SRC_URI = "git://github.com/labapart/gattlib.git;branch=master;protocol=https \
+ file://dbus-avoid-strange-chars-from-the-build-dir.patch \
+ "
+
+SRCBRANCH = "master"
+SRCREV = "33a8a275928b186381bb0aea0f9778e330e57ec3"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG[examples] = "-DGATTLIB_BUILD_EXAMPLES=ON,-DGATTLIB_BUILD_EXAMPLES=OFF"
+
+# Set this to force use of DBus API if Bluez version is older than 5.42
+PACKAGECONFIG[force-dbus] = "-DGATTLIB_FORCE_DBUS=TRUE,-DGATTLIB_FORCE_DBUS=FALSE"
+
+EXTRA_OECMAKE += "-DGATTLIB_PYTHON_INTERFACE=OFF"
+EXTRA_OECMAKE += "-DGATTLIB_BUILD_DOCS=OFF"
+
+inherit pkgconfig cmake python3native
+
+do_compile:append() {
+ for f in org-bluez-gattdescriptor1.c org-bluez-battery1.c org-bluez-adaptater1.c \
+ org-bluez-device1.c org-bluez-gattservice1.c org-bluez-gattcharacteristic1.c; do
+ sed -i -e 's|${B}/dbus/||g' ${B}/dbus/$f
+ done
+}
+
+FILES:${PN} = "${libdir}/*"
+FILES:${PN}-dev = "${includedir}/* ${libdir}/pkgconfig"
diff --git a/meta-oe/recipes-connectivity/gensio/gensio_2.8.4.bb b/meta-oe/recipes-connectivity/gensio/gensio_2.8.4.bb
new file mode 100644
index 0000000000..1f85c46e2f
--- /dev/null
+++ b/meta-oe/recipes-connectivity/gensio/gensio_2.8.4.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A library to abstract stream I/O like serial port, TCP, telnet, etc"
+HOMEPAGE = "https://github.com/cminyard/gensio"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+ file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ "
+
+SRCREV = "300644fc02b7099ca27ca5bac88c47e159ba8a6b"
+
+SRC_URI = "git://github.com/cminyard/gensio;protocol=https;branch=master"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+PACKAGECONFIG ??= "openssl tcp-wrappers"
+
+PACKAGECONFIG[openssl] = "--with-openssl=${STAGING_DIR_HOST}${prefix},--without-openssl, openssl"
+PACKAGECONFIG[tcp-wrappers] = "--with-tcp-wrappers,--without-tcp-wrappers, tcp-wrappers"
+PACKAGECONFIG[swig] = "--with-swig,--without-swig, swig"
+
+EXTRA_OECONF = "--without-python"
+
+RDEPENDS:${PN} += "bash"
+
+FILES:${PN}-staticdev += "${libexecdir}/gensio/${PV}/libgensio_*.a"
diff --git a/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig b/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig
index 2789640170..a62bec4034 100644
--- a/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig
+++ b/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig
@@ -139,6 +139,9 @@ CONFIG_DRIVER_RADIUS_ACL=y
# IEEE 802.11n (High Throughput) support
CONFIG_IEEE80211N=y
+# IEEE 802.11ac (Very High Throughput) support
+CONFIG_IEEE80211AC=y
+
# Remove debugging code that is printing out debug messages to stdout.
# This can be used to reduce the size of the hostapd considerably if debugging
# code is not needed.
diff --git a/meta-oe/recipes-connectivity/hostapd/hostapd/key-replay-cve-multiple.patch b/meta-oe/recipes-connectivity/hostapd/hostapd/key-replay-cve-multiple.patch
deleted file mode 100644
index 694da8fb6d..0000000000
--- a/meta-oe/recipes-connectivity/hostapd/hostapd/key-replay-cve-multiple.patch
+++ /dev/null
@@ -1,984 +0,0 @@
-The WPA2 four-way handshake protocol is vulnerable to replay attacks which can
-result in unauthenticated clients gaining access to the network.
-
-Backport a number of patches from upstream to fix this.
-
-CVE: CVE-2017-13077
-CVE: CVE-2017-13078
-CVE: CVE-2017-13079
-CVE: CVE-2017-13080
-CVE: CVE-2017-13081
-CVE: CVE-2017-13082
-CVE: CVE-2017-13086
-CVE: CVE-2017-13087
-CVE: CVE-2017-13088
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From cf4cab804c7afd5c45505528a8d16e46163243a2 Mon Sep 17 00:00:00 2001
-From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-Date: Fri, 14 Jul 2017 15:15:35 +0200
-Subject: [PATCH 1/8] hostapd: Avoid key reinstallation in FT handshake
-
-Do not reinstall TK to the driver during Reassociation Response frame
-processing if the first attempt of setting the TK succeeded. This avoids
-issues related to clearing the TX/RX PN that could result in reusing
-same PN values for transmitted frames (e.g., due to CCM nonce reuse and
-also hitting replay protection on the receiver) and accepting replayed
-frames on RX side.
-
-This issue was introduced by the commit
-0e84c25434e6a1f283c7b4e62e483729085b78d2 ('FT: Fix PTK configuration in
-authenticator') which allowed wpa_ft_install_ptk() to be called multiple
-times with the same PTK. While the second configuration attempt is
-needed with some drivers, it must be done only if the first attempt
-failed.
-
-Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
----
- src/ap/ieee802_11.c | 16 +++++++++++++---
- src/ap/wpa_auth.c | 11 +++++++++++
- src/ap/wpa_auth.h | 3 ++-
- src/ap/wpa_auth_ft.c | 10 ++++++++++
- src/ap/wpa_auth_i.h | 1 +
- 5 files changed, 37 insertions(+), 4 deletions(-)
-
-diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
-index 4e04169..333035f 100644
---- a/src/ap/ieee802_11.c
-+++ b/src/ap/ieee802_11.c
-@@ -1841,6 +1841,7 @@ static int add_associated_sta(struct hostapd_data *hapd,
- {
- struct ieee80211_ht_capabilities ht_cap;
- struct ieee80211_vht_capabilities vht_cap;
-+ int set = 1;
-
- /*
- * Remove the STA entry to ensure the STA PS state gets cleared and
-@@ -1848,9 +1849,18 @@ static int add_associated_sta(struct hostapd_data *hapd,
- * FT-over-the-DS, where a station re-associates back to the same AP but
- * skips the authentication flow, or if working with a driver that
- * does not support full AP client state.
-+ *
-+ * Skip this if the STA has already completed FT reassociation and the
-+ * TK has been configured since the TX/RX PN must not be reset to 0 for
-+ * the same key.
- */
-- if (!sta->added_unassoc)
-+ if (!sta->added_unassoc &&
-+ (!(sta->flags & WLAN_STA_AUTHORIZED) ||
-+ !wpa_auth_sta_ft_tk_already_set(sta->wpa_sm))) {
- hostapd_drv_sta_remove(hapd, sta->addr);
-+ wpa_auth_sm_event(sta->wpa_sm, WPA_DRV_STA_REMOVED);
-+ set = 0;
-+ }
-
- #ifdef CONFIG_IEEE80211N
- if (sta->flags & WLAN_STA_HT)
-@@ -1873,11 +1883,11 @@ static int add_associated_sta(struct hostapd_data *hapd,
- sta->flags & WLAN_STA_VHT ? &vht_cap : NULL,
- sta->flags | WLAN_STA_ASSOC, sta->qosinfo,
- sta->vht_opmode, sta->p2p_ie ? 1 : 0,
-- sta->added_unassoc)) {
-+ set)) {
- hostapd_logger(hapd, sta->addr,
- HOSTAPD_MODULE_IEEE80211, HOSTAPD_LEVEL_NOTICE,
- "Could not %s STA to kernel driver",
-- sta->added_unassoc ? "set" : "add");
-+ set ? "set" : "add");
-
- if (sta->added_unassoc) {
- hostapd_drv_sta_remove(hapd, sta->addr);
-diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
-index 3587086..707971d 100644
---- a/src/ap/wpa_auth.c
-+++ b/src/ap/wpa_auth.c
-@@ -1745,6 +1745,9 @@ int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event)
- #else /* CONFIG_IEEE80211R */
- break;
- #endif /* CONFIG_IEEE80211R */
-+ case WPA_DRV_STA_REMOVED:
-+ sm->tk_already_set = FALSE;
-+ return 0;
- }
-
- #ifdef CONFIG_IEEE80211R
-@@ -3250,6 +3253,14 @@ int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm)
- }
-
-
-+int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm)
-+{
-+ if (!sm || !wpa_key_mgmt_ft(sm->wpa_key_mgmt))
-+ return 0;
-+ return sm->tk_already_set;
-+}
-+
-+
- int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm,
- struct rsn_pmksa_cache_entry *entry)
- {
-diff --git a/src/ap/wpa_auth.h b/src/ap/wpa_auth.h
-index 0de8d97..97461b0 100644
---- a/src/ap/wpa_auth.h
-+++ b/src/ap/wpa_auth.h
-@@ -267,7 +267,7 @@ void wpa_receive(struct wpa_authenticator *wpa_auth,
- u8 *data, size_t data_len);
- enum wpa_event {
- WPA_AUTH, WPA_ASSOC, WPA_DISASSOC, WPA_DEAUTH, WPA_REAUTH,
-- WPA_REAUTH_EAPOL, WPA_ASSOC_FT
-+ WPA_REAUTH_EAPOL, WPA_ASSOC_FT, WPA_DRV_STA_REMOVED
- };
- void wpa_remove_ptk(struct wpa_state_machine *sm);
- int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event);
-@@ -280,6 +280,7 @@ int wpa_auth_pairwise_set(struct wpa_state_machine *sm);
- int wpa_auth_get_pairwise(struct wpa_state_machine *sm);
- int wpa_auth_sta_key_mgmt(struct wpa_state_machine *sm);
- int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm);
-+int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm);
- int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm,
- struct rsn_pmksa_cache_entry *entry);
- struct rsn_pmksa_cache_entry *
-diff --git a/src/ap/wpa_auth_ft.c b/src/ap/wpa_auth_ft.c
-index 42242a5..e63b99a 100644
---- a/src/ap/wpa_auth_ft.c
-+++ b/src/ap/wpa_auth_ft.c
-@@ -780,6 +780,14 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm)
- return;
- }
-
-+ if (sm->tk_already_set) {
-+ /* Must avoid TK reconfiguration to prevent clearing of TX/RX
-+ * PN in the driver */
-+ wpa_printf(MSG_DEBUG,
-+ "FT: Do not re-install same PTK to the driver");
-+ return;
-+ }
-+
- /* FIX: add STA entry to kernel/driver here? The set_key will fail
- * most likely without this.. At the moment, STA entry is added only
- * after association has been completed. This function will be called
-@@ -792,6 +800,7 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm)
-
- /* FIX: MLME-SetProtection.Request(TA, Tx_Rx) */
- sm->pairwise_set = TRUE;
-+ sm->tk_already_set = TRUE;
- }
-
-
-@@ -898,6 +907,7 @@ static int wpa_ft_process_auth_req(struct wpa_state_machine *sm,
-
- sm->pairwise = pairwise;
- sm->PTK_valid = TRUE;
-+ sm->tk_already_set = FALSE;
- wpa_ft_install_ptk(sm);
-
- buflen = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) +
-diff --git a/src/ap/wpa_auth_i.h b/src/ap/wpa_auth_i.h
-index 72b7eb3..7fd8f05 100644
---- a/src/ap/wpa_auth_i.h
-+++ b/src/ap/wpa_auth_i.h
-@@ -65,6 +65,7 @@ struct wpa_state_machine {
- struct wpa_ptk PTK;
- Boolean PTK_valid;
- Boolean pairwise_set;
-+ Boolean tk_already_set;
- int keycount;
- Boolean Pair;
- struct wpa_key_replay_counter {
---
-2.7.4
-
-From 927f891007c402fefd1ff384645b3f07597c3ede Mon Sep 17 00:00:00 2001
-From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-Date: Wed, 12 Jul 2017 16:03:24 +0200
-Subject: [PATCH 2/8] Prevent reinstallation of an already in-use group key
-
-Track the current GTK and IGTK that is in use and when receiving a
-(possibly retransmitted) Group Message 1 or WNM-Sleep Mode Response, do
-not install the given key if it is already in use. This prevents an
-attacker from trying to trick the client into resetting or lowering the
-sequence counter associated to the group key.
-
-Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
----
- src/common/wpa_common.h | 11 +++++
- src/rsn_supp/wpa.c | 116 ++++++++++++++++++++++++++++++------------------
- src/rsn_supp/wpa_i.h | 4 ++
- 3 files changed, 87 insertions(+), 44 deletions(-)
-
-diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
-index af1d0f0..d200285 100644
---- a/src/common/wpa_common.h
-+++ b/src/common/wpa_common.h
-@@ -217,6 +217,17 @@ struct wpa_ptk {
- size_t tk_len;
- };
-
-+struct wpa_gtk {
-+ u8 gtk[WPA_GTK_MAX_LEN];
-+ size_t gtk_len;
-+};
-+
-+#ifdef CONFIG_IEEE80211W
-+struct wpa_igtk {
-+ u8 igtk[WPA_IGTK_MAX_LEN];
-+ size_t igtk_len;
-+};
-+#endif /* CONFIG_IEEE80211W */
-
- /* WPA IE version 1
- * 00-50-f2:1 (OUI:OUI type)
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 3c47879..95bd7be 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -714,6 +714,15 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- const u8 *_gtk = gd->gtk;
- u8 gtk_buf[32];
-
-+ /* Detect possible key reinstallation */
-+ if (sm->gtk.gtk_len == (size_t) gd->gtk_len &&
-+ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) {
-+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
-+ "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)",
-+ gd->keyidx, gd->tx, gd->gtk_len);
-+ return 0;
-+ }
-+
- wpa_hexdump_key(MSG_DEBUG, "WPA: Group Key", gd->gtk, gd->gtk_len);
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Installing GTK to the driver (keyidx=%d tx=%d len=%d)",
-@@ -748,6 +757,9 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- }
- os_memset(gtk_buf, 0, sizeof(gtk_buf));
-
-+ sm->gtk.gtk_len = gd->gtk_len;
-+ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
-+
- return 0;
- }
-
-@@ -854,6 +866,48 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
- }
-
-
-+#ifdef CONFIG_IEEE80211W
-+static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
-+ const struct wpa_igtk_kde *igtk)
-+{
-+ size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
-+ u16 keyidx = WPA_GET_LE16(igtk->keyid);
-+
-+ /* Detect possible key reinstallation */
-+ if (sm->igtk.igtk_len == len &&
-+ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
-+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
-+ "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
-+ keyidx);
-+ return 0;
-+ }
-+
-+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
-+ "WPA: IGTK keyid %d pn %02x%02x%02x%02x%02x%02x",
-+ keyidx, MAC2STR(igtk->pn));
-+ wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", igtk->igtk, len);
-+ if (keyidx > 4095) {
-+ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-+ "WPA: Invalid IGTK KeyID %d", keyidx);
-+ return -1;
-+ }
-+ if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
-+ broadcast_ether_addr,
-+ keyidx, 0, igtk->pn, sizeof(igtk->pn),
-+ igtk->igtk, len) < 0) {
-+ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-+ "WPA: Failed to configure IGTK to the driver");
-+ return -1;
-+ }
-+
-+ sm->igtk.igtk_len = len;
-+ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
-+
-+ return 0;
-+}
-+#endif /* CONFIG_IEEE80211W */
-+
-+
- static int ieee80211w_set_keys(struct wpa_sm *sm,
- struct wpa_eapol_ie_parse *ie)
- {
-@@ -864,30 +918,14 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
- if (ie->igtk) {
- size_t len;
- const struct wpa_igtk_kde *igtk;
-- u16 keyidx;
-+
- len = wpa_cipher_key_len(sm->mgmt_group_cipher);
- if (ie->igtk_len != WPA_IGTK_KDE_PREFIX_LEN + len)
- return -1;
-+
- igtk = (const struct wpa_igtk_kde *) ie->igtk;
-- keyidx = WPA_GET_LE16(igtk->keyid);
-- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, "WPA: IGTK keyid %d "
-- "pn %02x%02x%02x%02x%02x%02x",
-- keyidx, MAC2STR(igtk->pn));
-- wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK",
-- igtk->igtk, len);
-- if (keyidx > 4095) {
-- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-- "WPA: Invalid IGTK KeyID %d", keyidx);
-- return -1;
-- }
-- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
-- broadcast_ether_addr,
-- keyidx, 0, igtk->pn, sizeof(igtk->pn),
-- igtk->igtk, len) < 0) {
-- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-- "WPA: Failed to configure IGTK to the driver");
-+ if (wpa_supplicant_install_igtk(sm, igtk) < 0)
- return -1;
-- }
- }
-
- return 0;
-@@ -2307,7 +2345,7 @@ void wpa_sm_deinit(struct wpa_sm *sm)
- */
- void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- {
-- int clear_ptk = 1;
-+ int clear_keys = 1;
-
- if (sm == NULL)
- return;
-@@ -2333,11 +2371,11 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- /* Prepare for the next transition */
- wpa_ft_prepare_auth_request(sm, NULL);
-
-- clear_ptk = 0;
-+ clear_keys = 0;
- }
- #endif /* CONFIG_IEEE80211R */
-
-- if (clear_ptk) {
-+ if (clear_keys) {
- /*
- * IEEE 802.11, 8.4.10: Delete PTK SA on (re)association if
- * this is not part of a Fast BSS Transition.
-@@ -2347,6 +2385,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- os_memset(&sm->ptk, 0, sizeof(sm->ptk));
- sm->tptk_set = 0;
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
-+ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+#ifdef CONFIG_IEEE80211W
-+ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+#endif /* CONFIG_IEEE80211W */
- }
-
- #ifdef CONFIG_TDLS
-@@ -2877,6 +2919,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm)
- os_memset(sm->pmk, 0, sizeof(sm->pmk));
- os_memset(&sm->ptk, 0, sizeof(sm->ptk));
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
-+ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+#ifdef CONFIG_IEEE80211W
-+ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+#endif /* CONFIG_IEEE80211W */
- #ifdef CONFIG_IEEE80211R
- os_memset(sm->xxkey, 0, sizeof(sm->xxkey));
- os_memset(sm->pmk_r0, 0, sizeof(sm->pmk_r0));
-@@ -2949,29 +2995,11 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
- os_memset(&gd, 0, sizeof(gd));
- #ifdef CONFIG_IEEE80211W
- } else if (subelem_id == WNM_SLEEP_SUBELEM_IGTK) {
-- struct wpa_igtk_kde igd;
-- u16 keyidx;
--
-- os_memset(&igd, 0, sizeof(igd));
-- keylen = wpa_cipher_key_len(sm->mgmt_group_cipher);
-- os_memcpy(igd.keyid, buf + 2, 2);
-- os_memcpy(igd.pn, buf + 4, 6);
--
-- keyidx = WPA_GET_LE16(igd.keyid);
-- os_memcpy(igd.igtk, buf + 10, keylen);
--
-- wpa_hexdump_key(MSG_DEBUG, "Install IGTK (WNM SLEEP)",
-- igd.igtk, keylen);
-- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
-- broadcast_ether_addr,
-- keyidx, 0, igd.pn, sizeof(igd.pn),
-- igd.igtk, keylen) < 0) {
-- wpa_printf(MSG_DEBUG, "Failed to install the IGTK in "
-- "WNM mode");
-- os_memset(&igd, 0, sizeof(igd));
-+ const struct wpa_igtk_kde *igtk;
-+
-+ igtk = (const struct wpa_igtk_kde *) (buf + 2);
-+ if (wpa_supplicant_install_igtk(sm, igtk) < 0)
- return -1;
-- }
-- os_memset(&igd, 0, sizeof(igd));
- #endif /* CONFIG_IEEE80211W */
- } else {
- wpa_printf(MSG_DEBUG, "Unknown element id");
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index f653ba6..afc9e37 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -31,6 +31,10 @@ struct wpa_sm {
- u8 rx_replay_counter[WPA_REPLAY_COUNTER_LEN];
- int rx_replay_counter_set;
- u8 request_counter[WPA_REPLAY_COUNTER_LEN];
-+ struct wpa_gtk gtk;
-+#ifdef CONFIG_IEEE80211W
-+ struct wpa_igtk igtk;
-+#endif /* CONFIG_IEEE80211W */
-
- struct eapol_sm *eapol; /* EAPOL state machine from upper level code */
-
---
-2.7.4
-
-From 8280294e74846ea342389a0cd17215050fa5afe8 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Sun, 1 Oct 2017 12:12:24 +0300
-Subject: [PATCH 3/8] Extend protection of GTK/IGTK reinstallation of WNM-Sleep
- Mode cases
-
-This extends the protection to track last configured GTK/IGTK value
-separately from EAPOL-Key frames and WNM-Sleep Mode frames to cover a
-corner case where these two different mechanisms may get used when the
-GTK/IGTK has changed and tracking a single value is not sufficient to
-detect a possible key reconfiguration.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/rsn_supp/wpa.c | 53 +++++++++++++++++++++++++++++++++++++---------------
- src/rsn_supp/wpa_i.h | 2 ++
- 2 files changed, 40 insertions(+), 15 deletions(-)
-
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 95bd7be..7a2c68d 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -709,14 +709,17 @@ struct wpa_gtk_data {
-
- static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- const struct wpa_gtk_data *gd,
-- const u8 *key_rsc)
-+ const u8 *key_rsc, int wnm_sleep)
- {
- const u8 *_gtk = gd->gtk;
- u8 gtk_buf[32];
-
- /* Detect possible key reinstallation */
-- if (sm->gtk.gtk_len == (size_t) gd->gtk_len &&
-- os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) {
-+ if ((sm->gtk.gtk_len == (size_t) gd->gtk_len &&
-+ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) ||
-+ (sm->gtk_wnm_sleep.gtk_len == (size_t) gd->gtk_len &&
-+ os_memcmp(sm->gtk_wnm_sleep.gtk, gd->gtk,
-+ sm->gtk_wnm_sleep.gtk_len) == 0)) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)",
- gd->keyidx, gd->tx, gd->gtk_len);
-@@ -757,8 +760,14 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- }
- os_memset(gtk_buf, 0, sizeof(gtk_buf));
-
-- sm->gtk.gtk_len = gd->gtk_len;
-- os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
-+ if (wnm_sleep) {
-+ sm->gtk_wnm_sleep.gtk_len = gd->gtk_len;
-+ os_memcpy(sm->gtk_wnm_sleep.gtk, gd->gtk,
-+ sm->gtk_wnm_sleep.gtk_len);
-+ } else {
-+ sm->gtk.gtk_len = gd->gtk_len;
-+ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
-+ }
-
- return 0;
- }
-@@ -852,7 +861,7 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
- (wpa_supplicant_check_group_cipher(sm, sm->group_cipher,
- gtk_len, gtk_len,
- &gd.key_rsc_len, &gd.alg) ||
-- wpa_supplicant_install_gtk(sm, &gd, key_rsc))) {
-+ wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0))) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "RSN: Failed to install GTK");
- os_memset(&gd, 0, sizeof(gd));
-@@ -868,14 +877,18 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
-
- #ifdef CONFIG_IEEE80211W
- static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
-- const struct wpa_igtk_kde *igtk)
-+ const struct wpa_igtk_kde *igtk,
-+ int wnm_sleep)
- {
- size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
- u16 keyidx = WPA_GET_LE16(igtk->keyid);
-
- /* Detect possible key reinstallation */
-- if (sm->igtk.igtk_len == len &&
-- os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
-+ if ((sm->igtk.igtk_len == len &&
-+ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) ||
-+ (sm->igtk_wnm_sleep.igtk_len == len &&
-+ os_memcmp(sm->igtk_wnm_sleep.igtk, igtk->igtk,
-+ sm->igtk_wnm_sleep.igtk_len) == 0)) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
- keyidx);
-@@ -900,8 +913,14 @@ static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
- return -1;
- }
-
-- sm->igtk.igtk_len = len;
-- os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
-+ if (wnm_sleep) {
-+ sm->igtk_wnm_sleep.igtk_len = len;
-+ os_memcpy(sm->igtk_wnm_sleep.igtk, igtk->igtk,
-+ sm->igtk_wnm_sleep.igtk_len);
-+ } else {
-+ sm->igtk.igtk_len = len;
-+ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
-+ }
-
- return 0;
- }
-@@ -924,7 +943,7 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
- return -1;
-
- igtk = (const struct wpa_igtk_kde *) ie->igtk;
-- if (wpa_supplicant_install_igtk(sm, igtk) < 0)
-+ if (wpa_supplicant_install_igtk(sm, igtk, 0) < 0)
- return -1;
- }
-
-@@ -1574,7 +1593,7 @@ static void wpa_supplicant_process_1_of_2(struct wpa_sm *sm,
- if (wpa_supplicant_rsc_relaxation(sm, key->key_rsc))
- key_rsc = null_rsc;
-
-- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc) ||
-+ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0) ||
- wpa_supplicant_send_2_of_2(sm, key, ver, key_info) < 0)
- goto failed;
- os_memset(&gd, 0, sizeof(gd));
-@@ -2386,8 +2405,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- sm->tptk_set = 0;
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
- os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
- #ifdef CONFIG_IEEE80211W
- os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
- #endif /* CONFIG_IEEE80211W */
- }
-
-@@ -2920,8 +2941,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm)
- os_memset(&sm->ptk, 0, sizeof(sm->ptk));
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
- os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
- #ifdef CONFIG_IEEE80211W
- os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
- #endif /* CONFIG_IEEE80211W */
- #ifdef CONFIG_IEEE80211R
- os_memset(sm->xxkey, 0, sizeof(sm->xxkey));
-@@ -2986,7 +3009,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
-
- wpa_hexdump_key(MSG_DEBUG, "Install GTK (WNM SLEEP)",
- gd.gtk, gd.gtk_len);
-- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc)) {
-+ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 1)) {
- os_memset(&gd, 0, sizeof(gd));
- wpa_printf(MSG_DEBUG, "Failed to install the GTK in "
- "WNM mode");
-@@ -2998,7 +3021,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
- const struct wpa_igtk_kde *igtk;
-
- igtk = (const struct wpa_igtk_kde *) (buf + 2);
-- if (wpa_supplicant_install_igtk(sm, igtk) < 0)
-+ if (wpa_supplicant_install_igtk(sm, igtk, 1) < 0)
- return -1;
- #endif /* CONFIG_IEEE80211W */
- } else {
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index afc9e37..9a54631 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -32,8 +32,10 @@ struct wpa_sm {
- int rx_replay_counter_set;
- u8 request_counter[WPA_REPLAY_COUNTER_LEN];
- struct wpa_gtk gtk;
-+ struct wpa_gtk gtk_wnm_sleep;
- #ifdef CONFIG_IEEE80211W
- struct wpa_igtk igtk;
-+ struct wpa_igtk igtk_wnm_sleep;
- #endif /* CONFIG_IEEE80211W */
-
- struct eapol_sm *eapol; /* EAPOL state machine from upper level code */
---
-2.7.4
-
-From 8f82bc94e8697a9d47fa8774dfdaaede1084912c Mon Sep 17 00:00:00 2001
-From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-Date: Fri, 29 Sep 2017 04:22:51 +0200
-Subject: [PATCH 4/8] Prevent installation of an all-zero TK
-
-Properly track whether a PTK has already been installed to the driver
-and the TK part cleared from memory. This prevents an attacker from
-trying to trick the client into installing an all-zero TK.
-
-This fixes the earlier fix in commit
-ad00d64e7d8827b3cebd665a0ceb08adabf15e1e ('Fix TK configuration to the
-driver in EAPOL-Key 3/4 retry case') which did not take into account
-possibility of an extra message 1/4 showing up between retries of
-message 3/4.
-
-Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
----
- src/common/wpa_common.h | 1 +
- src/rsn_supp/wpa.c | 5 ++---
- src/rsn_supp/wpa_i.h | 1 -
- 3 files changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
-index d200285..1021ccb 100644
---- a/src/common/wpa_common.h
-+++ b/src/common/wpa_common.h
-@@ -215,6 +215,7 @@ struct wpa_ptk {
- size_t kck_len;
- size_t kek_len;
- size_t tk_len;
-+ int installed; /* 1 if key has already been installed to driver */
- };
-
- struct wpa_gtk {
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 7a2c68d..0550a41 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -510,7 +510,6 @@ static void wpa_supplicant_process_1_of_4(struct wpa_sm *sm,
- os_memset(buf, 0, sizeof(buf));
- }
- sm->tptk_set = 1;
-- sm->tk_to_set = 1;
-
- kde = sm->assoc_wpa_ie;
- kde_len = sm->assoc_wpa_ie_len;
-@@ -615,7 +614,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm,
- enum wpa_alg alg;
- const u8 *key_rsc;
-
-- if (!sm->tk_to_set) {
-+ if (sm->ptk.installed) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Do not re-install same PTK to the driver");
- return 0;
-@@ -659,7 +658,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm,
-
- /* TK is not needed anymore in supplicant */
- os_memset(sm->ptk.tk, 0, WPA_TK_MAX_LEN);
-- sm->tk_to_set = 0;
-+ sm->ptk.installed = 1;
-
- if (sm->wpa_ptk_rekey) {
- eloop_cancel_timeout(wpa_sm_rekey_ptk, sm, NULL);
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index 9a54631..41f371f 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -24,7 +24,6 @@ struct wpa_sm {
- struct wpa_ptk ptk, tptk;
- int ptk_set, tptk_set;
- unsigned int msg_3_of_4_ok:1;
-- unsigned int tk_to_set:1;
- u8 snonce[WPA_NONCE_LEN];
- u8 anonce[WPA_NONCE_LEN]; /* ANonce from the last 1/4 msg */
- int renew_snonce;
---
-2.7.4
-
-From 12fac09b437a1dc8a0f253e265934a8aaf4d2f8b Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Sun, 1 Oct 2017 12:32:57 +0300
-Subject: [PATCH 5/8] Fix PTK rekeying to generate a new ANonce
-
-The Authenticator state machine path for PTK rekeying ended up bypassing
-the AUTHENTICATION2 state where a new ANonce is generated when going
-directly to the PTKSTART state since there is no need to try to
-determine the PMK again in such a case. This is far from ideal since the
-new PTK would depend on a new nonce only from the supplicant.
-
-Fix this by generating a new ANonce when moving to the PTKSTART state
-for the purpose of starting new 4-way handshake to rekey PTK.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/ap/wpa_auth.c | 24 +++++++++++++++++++++---
- 1 file changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
-index 707971d..bf10cc1 100644
---- a/src/ap/wpa_auth.c
-+++ b/src/ap/wpa_auth.c
-@@ -1901,6 +1901,21 @@ SM_STATE(WPA_PTK, AUTHENTICATION2)
- }
-
-
-+static int wpa_auth_sm_ptk_update(struct wpa_state_machine *sm)
-+{
-+ if (random_get_bytes(sm->ANonce, WPA_NONCE_LEN)) {
-+ wpa_printf(MSG_ERROR,
-+ "WPA: Failed to get random data for ANonce");
-+ sm->Disconnect = TRUE;
-+ return -1;
-+ }
-+ wpa_hexdump(MSG_DEBUG, "WPA: Assign new ANonce", sm->ANonce,
-+ WPA_NONCE_LEN);
-+ sm->TimeoutCtr = 0;
-+ return 0;
-+}
-+
-+
- SM_STATE(WPA_PTK, INITPMK)
- {
- u8 msk[2 * PMK_LEN];
-@@ -2458,9 +2473,12 @@ SM_STEP(WPA_PTK)
- SM_ENTER(WPA_PTK, AUTHENTICATION);
- else if (sm->ReAuthenticationRequest)
- SM_ENTER(WPA_PTK, AUTHENTICATION2);
-- else if (sm->PTKRequest)
-- SM_ENTER(WPA_PTK, PTKSTART);
-- else switch (sm->wpa_ptk_state) {
-+ else if (sm->PTKRequest) {
-+ if (wpa_auth_sm_ptk_update(sm) < 0)
-+ SM_ENTER(WPA_PTK, DISCONNECTED);
-+ else
-+ SM_ENTER(WPA_PTK, PTKSTART);
-+ } else switch (sm->wpa_ptk_state) {
- case WPA_PTK_INITIALIZE:
- break;
- case WPA_PTK_DISCONNECT:
---
-2.7.4
-
-From 6c4bed4f47d1960ec04981a9d50e5076aea5223d Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Fri, 22 Sep 2017 11:03:15 +0300
-Subject: [PATCH 6/8] TDLS: Reject TPK-TK reconfiguration
-
-Do not try to reconfigure the same TPK-TK to the driver after it has
-been successfully configured. This is an explicit check to avoid issues
-related to resetting the TX/RX packet number. There was already a check
-for this for TPK M2 (retries of that message are ignored completely), so
-that behavior does not get modified.
-
-For TPK M3, the TPK-TK could have been reconfigured, but that was
-followed by immediate teardown of the link due to an issue in updating
-the STA entry. Furthermore, for TDLS with any real security (i.e.,
-ignoring open/WEP), the TPK message exchange is protected on the AP path
-and simple replay attacks are not feasible.
-
-As an additional corner case, make sure the local nonce gets updated if
-the peer uses a very unlikely "random nonce" of all zeros.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/rsn_supp/tdls.c | 38 ++++++++++++++++++++++++++++++++++++--
- 1 file changed, 36 insertions(+), 2 deletions(-)
-
-diff --git a/src/rsn_supp/tdls.c b/src/rsn_supp/tdls.c
-index e424168..9eb9738 100644
---- a/src/rsn_supp/tdls.c
-+++ b/src/rsn_supp/tdls.c
-@@ -112,6 +112,7 @@ struct wpa_tdls_peer {
- u8 tk[16]; /* TPK-TK; assuming only CCMP will be used */
- } tpk;
- int tpk_set;
-+ int tk_set; /* TPK-TK configured to the driver */
- int tpk_success;
- int tpk_in_progress;
-
-@@ -192,6 +193,20 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
- u8 rsc[6];
- enum wpa_alg alg;
-
-+ if (peer->tk_set) {
-+ /*
-+ * This same TPK-TK has already been configured to the driver
-+ * and this new configuration attempt (likely due to an
-+ * unexpected retransmitted frame) would result in clearing
-+ * the TX/RX sequence number which can break security, so must
-+ * not allow that to happen.
-+ */
-+ wpa_printf(MSG_INFO, "TDLS: TPK-TK for the peer " MACSTR
-+ " has already been configured to the driver - do not reconfigure",
-+ MAC2STR(peer->addr));
-+ return -1;
-+ }
-+
- os_memset(rsc, 0, 6);
-
- switch (peer->cipher) {
-@@ -209,12 +224,15 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
- return -1;
- }
-
-+ wpa_printf(MSG_DEBUG, "TDLS: Configure pairwise key for peer " MACSTR,
-+ MAC2STR(peer->addr));
- if (wpa_sm_set_key(sm, alg, peer->addr, -1, 1,
- rsc, sizeof(rsc), peer->tpk.tk, key_len) < 0) {
- wpa_printf(MSG_WARNING, "TDLS: Failed to set TPK to the "
- "driver");
- return -1;
- }
-+ peer->tk_set = 1;
- return 0;
- }
-
-@@ -696,7 +714,7 @@ static void wpa_tdls_peer_clear(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
- peer->cipher = 0;
- peer->qos_info = 0;
- peer->wmm_capable = 0;
-- peer->tpk_set = peer->tpk_success = 0;
-+ peer->tk_set = peer->tpk_set = peer->tpk_success = 0;
- peer->chan_switch_enabled = 0;
- os_memset(&peer->tpk, 0, sizeof(peer->tpk));
- os_memset(peer->inonce, 0, WPA_NONCE_LEN);
-@@ -1159,6 +1177,7 @@ skip_rsnie:
- wpa_tdls_peer_free(sm, peer);
- return -1;
- }
-+ peer->tk_set = 0; /* A new nonce results in a new TK */
- wpa_hexdump(MSG_DEBUG, "TDLS: Initiator Nonce for TPK handshake",
- peer->inonce, WPA_NONCE_LEN);
- os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN);
-@@ -1751,6 +1770,19 @@ static int wpa_tdls_addset_peer(struct wpa_sm *sm, struct wpa_tdls_peer *peer,
- }
-
-
-+static int tdls_nonce_set(const u8 *nonce)
-+{
-+ int i;
-+
-+ for (i = 0; i < WPA_NONCE_LEN; i++) {
-+ if (nonce[i])
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+
- static int wpa_tdls_process_tpk_m1(struct wpa_sm *sm, const u8 *src_addr,
- const u8 *buf, size_t len)
- {
-@@ -2004,7 +2036,8 @@ skip_rsn:
- peer->rsnie_i_len = kde.rsn_ie_len;
- peer->cipher = cipher;
-
-- if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0) {
-+ if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0 ||
-+ !tdls_nonce_set(peer->inonce)) {
- /*
- * There is no point in updating the RNonce for every obtained
- * TPK M1 frame (e.g., retransmission due to timeout) with the
-@@ -2020,6 +2053,7 @@ skip_rsn:
- "TDLS: Failed to get random data for responder nonce");
- goto error;
- }
-+ peer->tk_set = 0; /* A new nonce results in a new TK */
- }
-
- #if 0
---
-2.7.4
-
-Note: [PATCH 7/8] only applies to wpa_supplicant
-
-From b372ab0b7daea719749194dc554b26e6367603f2 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Fri, 22 Sep 2017 12:06:37 +0300
-Subject: [PATCH 8/8] FT: Do not allow multiple Reassociation Response frames
-
-The driver is expected to not report a second association event without
-the station having explicitly request a new association. As such, this
-case should not be reachable. However, since reconfiguring the same
-pairwise or group keys to the driver could result in nonce reuse issues,
-be extra careful here and do an additional state check to avoid this
-even if the local driver ends up somehow accepting an unexpected
-Reassociation Response frame.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/rsn_supp/wpa.c | 3 +++
- src/rsn_supp/wpa_ft.c | 8 ++++++++
- src/rsn_supp/wpa_i.h | 1 +
- 3 files changed, 12 insertions(+)
-
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 0550a41..2a53c6f 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -2440,6 +2440,9 @@ void wpa_sm_notify_disassoc(struct wpa_sm *sm)
- #ifdef CONFIG_TDLS
- wpa_tdls_disassoc(sm);
- #endif /* CONFIG_TDLS */
-+#ifdef CONFIG_IEEE80211R
-+ sm->ft_reassoc_completed = 0;
-+#endif /* CONFIG_IEEE80211R */
-
- /* Keys are not needed in the WPA state machine anymore */
- wpa_sm_drop_sa(sm);
-diff --git a/src/rsn_supp/wpa_ft.c b/src/rsn_supp/wpa_ft.c
-index 205793e..d45bb45 100644
---- a/src/rsn_supp/wpa_ft.c
-+++ b/src/rsn_supp/wpa_ft.c
-@@ -153,6 +153,7 @@ static u8 * wpa_ft_gen_req_ies(struct wpa_sm *sm, size_t *len,
- u16 capab;
-
- sm->ft_completed = 0;
-+ sm->ft_reassoc_completed = 0;
-
- buf_len = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) +
- 2 + sm->r0kh_id_len + ric_ies_len + 100;
-@@ -681,6 +682,11 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies,
- return -1;
- }
-
-+ if (sm->ft_reassoc_completed) {
-+ wpa_printf(MSG_DEBUG, "FT: Reassociation has already been completed for this FT protocol instance - ignore unexpected retransmission");
-+ return 0;
-+ }
-+
- if (wpa_ft_parse_ies(ies, ies_len, &parse) < 0) {
- wpa_printf(MSG_DEBUG, "FT: Failed to parse IEs");
- return -1;
-@@ -781,6 +787,8 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies,
- return -1;
- }
-
-+ sm->ft_reassoc_completed = 1;
-+
- if (wpa_ft_process_gtk_subelem(sm, parse.gtk, parse.gtk_len) < 0)
- return -1;
-
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index 41f371f..56f88dc 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -128,6 +128,7 @@ struct wpa_sm {
- size_t r0kh_id_len;
- u8 r1kh_id[FT_R1KH_ID_LEN];
- int ft_completed;
-+ int ft_reassoc_completed;
- int over_the_ds_in_progress;
- u8 target_ap[ETH_ALEN]; /* over-the-DS target AP */
- int set_ptk_after_assoc;
---
-2.7.4
diff --git a/meta-oe/recipes-connectivity/hostapd/hostapd_2.10.bb b/meta-oe/recipes-connectivity/hostapd/hostapd_2.10.bb
new file mode 100644
index 0000000000..44683bf735
--- /dev/null
+++ b/meta-oe/recipes-connectivity/hostapd/hostapd_2.10.bb
@@ -0,0 +1,48 @@
+SUMMARY = "User space daemon for extended IEEE 802.11 management"
+HOMEPAGE = "http://w1.fi/hostapd/"
+SECTION = "kernel/userland"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://hostapd/README;beginline=5;endline=47;md5=aa03b8bd6216d1a7ca01fd4b89863073"
+
+DEPENDS = "libnl openssl"
+
+SRC_URI = " \
+ http://w1.fi/releases/hostapd-${PV}.tar.gz \
+ file://defconfig \
+ file://init \
+ file://hostapd.service \
+"
+
+
+SRC_URI[sha256sum] = "206e7c799b678572c2e3d12030238784bc4a9f82323b0156b4c9466f1498915d"
+
+inherit update-rc.d systemd pkgconfig features_check
+
+CONFLICT_DISTRO_FEATURES = "openssl-no-weak-ciphers"
+
+INITSCRIPT_NAME = "hostapd"
+
+SYSTEMD_SERVICE:${PN} = "hostapd.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "disable"
+
+do_configure:append() {
+ install -m 0644 ${UNPACKDIR}/defconfig ${B}/hostapd/.config
+}
+
+do_compile() {
+ export CFLAGS="-MMD -O2 -Wall -g"
+ export EXTRA_CFLAGS="${CFLAGS}"
+ make -C hostapd V=1
+}
+
+do_install() {
+ install -d ${D}${sbindir} ${D}${sysconfdir}/init.d ${D}${systemd_unitdir}/system/
+ install -m 0644 ${B}/hostapd/hostapd.conf ${D}${sysconfdir}
+ install -m 0755 ${B}/hostapd/hostapd ${D}${sbindir}
+ install -m 0755 ${B}/hostapd/hostapd_cli ${D}${sbindir}
+ install -m 755 ${UNPACKDIR}/init ${D}${sysconfdir}/init.d/hostapd
+ install -m 0644 ${UNPACKDIR}/hostapd.service ${D}${systemd_unitdir}/system/
+ sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/hostapd.service
+}
+
+CONFFILES:${PN} += "${sysconfdir}/hostapd.conf"
diff --git a/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb b/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb
deleted file mode 100644
index 4f81d222ee..0000000000
--- a/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "User space daemon for extended IEEE 802.11 management"
-HOMEPAGE = "http://w1.fi/hostapd/"
-SECTION = "kernel/userland"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://hostapd/README;md5=8aa4e8c78b59b12016c4cb2d0a8db350"
-
-DEPENDS = "libnl openssl"
-
-SRC_URI = " \
- http://w1.fi/releases/hostapd-${PV}.tar.gz \
- file://defconfig \
- file://init \
- file://hostapd.service \
- file://key-replay-cve-multiple.patch \
-"
-
-SRC_URI[md5sum] = "eaa56dce9bd8f1d195eb62596eab34c7"
-SRC_URI[sha256sum] = "01526b90c1d23bec4b0f052039cc4456c2fd19347b4d830d1d58a0a6aea7117d"
-
-S = "${WORKDIR}/hostapd-${PV}"
-B = "${WORKDIR}/hostapd-${PV}/hostapd"
-
-inherit update-rc.d systemd pkgconfig distro_features_check
-
-CONFLICT_DISTRO_FEATURES = "openssl-no-weak-ciphers"
-
-INITSCRIPT_NAME = "hostapd"
-
-SYSTEMD_SERVICE_${PN} = "hostapd.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "disable"
-
-do_configure_append() {
- install -m 0644 ${WORKDIR}/defconfig ${B}/.config
-}
-
-do_compile() {
- export CFLAGS="-MMD -O2 -Wall -g"
- export EXTRA_CFLAGS="${CFLAGS}"
- make V=1
-}
-
-do_install() {
- install -d ${D}${sbindir} ${D}${sysconfdir}/init.d ${D}${systemd_unitdir}/system/
- install -m 0644 ${B}/hostapd.conf ${D}${sysconfdir}
- install -m 0755 ${B}/hostapd ${D}${sbindir}
- install -m 0755 ${B}/hostapd_cli ${D}${sbindir}
- install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/hostapd
- install -m 0644 ${WORKDIR}/hostapd.service ${D}${systemd_unitdir}/system/
- sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/hostapd.service
-}
-
-CONFFILES_${PN} += "${sysconfdir}/hostapd.conf"
diff --git a/meta-oe/recipes-connectivity/ifplugd/ifplugd/0001-src-interface.h-Make-declarations-as-extern.patch b/meta-oe/recipes-connectivity/ifplugd/ifplugd/0001-src-interface.h-Make-declarations-as-extern.patch
new file mode 100644
index 0000000000..77de9e6c52
--- /dev/null
+++ b/meta-oe/recipes-connectivity/ifplugd/ifplugd/0001-src-interface.h-Make-declarations-as-extern.patch
@@ -0,0 +1,31 @@
+From b990146a149e1729c12e4541a67e32ed1dd6e578 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 13 Aug 2020 19:41:08 -0700
+Subject: [PATCH] src/interface.h: Make declarations as extern
+
+Fixed build with -fno-common
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/interface.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/interface.h b/src/interface.h
+index d223b1f..fd4a5f4 100644
+--- a/src/interface.h
++++ b/src/interface.h
+@@ -21,8 +21,8 @@
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+-int interface_auto_up;
+-int interface_do_message;
++extern int interface_auto_up;
++extern int interface_do_message;
+
+ typedef enum { IFSTATUS_UP, IFSTATUS_DOWN, IFSTATUS_ERR } interface_status_t;
+
+--
+2.28.0
+
diff --git a/meta-oe/recipes-connectivity/ifplugd/ifplugd/Fix-build-with-musl.patch b/meta-oe/recipes-connectivity/ifplugd/ifplugd/Fix-build-with-musl.patch
new file mode 100644
index 0000000000..7dc0067304
--- /dev/null
+++ b/meta-oe/recipes-connectivity/ifplugd/ifplugd/Fix-build-with-musl.patch
@@ -0,0 +1,31 @@
+From 3f2fc79385398f213a9bd3c99616d749d699f2bb Mon Sep 17 00:00:00 2001
+From: Fabio Berton <fabio.berton@ossystems.com.br>
+Date: Thu, 14 Mar 2019 19:26:14 -0300
+Subject: [PATCH] Fix build with musl
+Organization: O.S. Systems Software LTDA.
+
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+Upstream-Status: Pending
+
+ src/ethtool-local.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/src/ethtool-local.h
++++ b/src/ethtool-local.h
+@@ -20,11 +20,11 @@
+ * along with ifplugd; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+-
++#include <stdint.h>
+ typedef unsigned long long u64;
+-typedef __uint32_t u32;
+-typedef __uint16_t u16;
+-typedef __uint8_t u8;
++typedef uint32_t u32;
++typedef uint16_t u16;
++typedef uint8_t u8;
+
+ #include "ethtool-kernel.h"
+
diff --git a/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb b/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb
new file mode 100644
index 0000000000..62651bc308
--- /dev/null
+++ b/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "ifplugd is a Linux daemon which will automatically configure your ethernet device \
+when a cable is plugged in and automatically unconfigure it if the cable is pulled."
+HOMEPAGE = "http://0pointer.de/lennart/projects/ifplugd/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "libdaemon"
+
+SRC_URI = "http://0pointer.de/lennart/projects/ifplugd/ifplugd-${PV}.tar.gz \
+ file://0001-src-interface.h-Make-declarations-as-extern.patch \
+ "
+
+SRC_URI:append:libc-musl = " file://Fix-build-with-musl.patch"
+
+SRC_URI[md5sum] = "df6f4bab52f46ffd6eb1f5912d4ccee3"
+SRC_URI[sha256sum] = "474754ac4ab32d738cbf2a4a3e87ee0a2c71b9048a38bdcd7df1e4f9fd6541f0"
+
+inherit autotools update-rc.d pkgconfig
+
+EXTRA_OECONF = "--disable-lynx --with-initdir=${sysconfdir}/init.d"
+
+INITSCRIPT_NAME = "ifplugd"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES:${PN} = "${sysconfdir}/ifplugd/ifplugd.conf"
+
+RDEPENDS:${PN} += "bash"
diff --git a/meta-oe/recipes-connectivity/irssi/irssi_1.0.4.bb b/meta-oe/recipes-connectivity/irssi/irssi_1.4.5.bb
index 10b04bb524..5b5af30607 100644
--- a/meta-oe/recipes-connectivity/irssi/irssi_1.0.4.bb
+++ b/meta-oe/recipes-connectivity/irssi/irssi_1.4.5.bb
@@ -1,13 +1,14 @@
SUMMARY = "ncurses IRC client"
DESCRIPTION = "Irssi is an ncurses IRC client"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=55fdc1113306167d6ea2561404ce02f8"
DEPENDS = "glib-2.0 ncurses openssl"
SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz"
-SRC_URI[md5sum] = "46d4ac2a7ab472e5dc800e5d7bd9a879"
-SRC_URI[sha256sum] = "b85c07dbafe178213eccdc69f5f8f0ac024dea01c67244668f91ec1c06b986ca"
+SRC_URI[sha256sum] = "72a951cb0ad622785a8962801f005a3a412736c7e7e3ce152f176287c52fe062"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
inherit autotools pkgconfig
@@ -16,3 +17,5 @@ EXTRA_OECONF += "--with-textui \
--with-bot \
--with-perl=no \
--enable-true-color"
+
+FILES:${PN}-staticdev += "${libdir}/${BPN}/modules/*.a"
diff --git a/meta-oe/recipes-connectivity/iwd/iwd/0001-build-Use-abs_top_srcdir-instead-of-abs_srcdir-for-e.patch b/meta-oe/recipes-connectivity/iwd/iwd/0001-build-Use-abs_top_srcdir-instead-of-abs_srcdir-for-e.patch
new file mode 100644
index 0000000000..9ed73104ee
--- /dev/null
+++ b/meta-oe/recipes-connectivity/iwd/iwd/0001-build-Use-abs_top_srcdir-instead-of-abs_srcdir-for-e.patch
@@ -0,0 +1,37 @@
+From b0b51d762f45ff9d320b96bd0acb89313148a446 Mon Sep 17 00:00:00 2001
+From: Zang Ruochen <zangrc.fnst@fujitsu.com>
+Date: Wed, 12 May 2021 14:28:24 +0900
+Subject: [PATCH] build: Use abs_top_srcdir instead of abs_srcdir for ell sources
+
+this makes it build when build dir is outside of sources dir
+
+Upstream-Status: Submitted [https://lists.01.org/hyperkitty/list/iwd@lists.01.org/message/SYX6Z7SUQHU7UWM6ECZTTJ6SPODIS6KB/]
+---
+ Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 68035e4..e3f7990 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -628,7 +628,7 @@ ell/shared: Makefile
+ $(AM_V_at)$(MKDIR_P) ell
+ $(AM_V_GEN)for f in $(ell_shared) ; do \
+ if [ ! -f $$f ] ; then \
+- $(LN_S) -t ell -f $(abs_srcdir)/../ell/$$f ; \
++ $(LN_S) -t ell -f $(abs_top_srcdir)/ell/$$f ; \
+ fi \
+ done > $@
+
+@@ -636,7 +636,7 @@ ell/internal: Makefile
+ $(AM_V_at)$(MKDIR_P) ell
+ $(AM_V_GEN)for f in $(ell_headers) $(ell_sources) ; do \
+ if [ ! -f $$f ] ; then \
+- $(LN_S) -t ell -f $(abs_srcdir)/../ell/$$f ; \
++ $(LN_S) -t ell -f $(abs_top_srcdir)/ell/$$f ; \
+ fi \
+ done > $@
+
+--
+2.25.1
+
diff --git a/meta-oe/recipes-connectivity/iwd/iwd_2.16.bb b/meta-oe/recipes-connectivity/iwd/iwd_2.16.bb
new file mode 100644
index 0000000000..a6bb7085ea
--- /dev/null
+++ b/meta-oe/recipes-connectivity/iwd/iwd_2.16.bb
@@ -0,0 +1,55 @@
+SUMMARY = "Wireless daemon for Linux"
+HOMEPAGE = "https://iwd.wiki.kernel.org/"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09"
+
+DEPENDS = "ell"
+
+SRC_URI = "https://www.kernel.org/pub/linux/network/wireless/${BP}.tar.xz \
+ file://0001-build-Use-abs_top_srcdir-instead-of-abs_srcdir-for-e.patch \
+ "
+SRC_URI[sha256sum] = "c1a82032e994861e794cf3b5a16d07ae1aa03a6674f716c73408ffeae2a233ba"
+
+inherit autotools manpages pkgconfig python3native systemd
+
+PACKAGECONFIG ??= " \
+ client \
+ monitor \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+"
+PACKAGECONFIG[client] = "--enable-client,--disable-client,readline"
+PACKAGECONFIG[monitor] = "--enable-monitor,--disable-monitor"
+PACKAGECONFIG[manpages] = "--enable-manual-pages,--disable-manual-pages,python3-docutils-native"
+PACKAGECONFIG[wired] = "--enable-wired,--disable-wired"
+PACKAGECONFIG[ofono] = "--enable-ofono,--disable-ofono"
+PACKAGECONFIG[systemd] = "--with-systemd-unitdir=${systemd_system_unitdir},--disable-systemd-service,systemd"
+
+EXTRA_OECONF = "--enable-external-ell"
+
+SYSTEMD_SERVICE:${PN} = " \
+ iwd.service \
+ ${@bb.utils.contains('PACKAGECONFIG', 'wired', 'ead.service', '', d)} \
+"
+
+do_configure:prepend() {
+ install -d ${S}/build-aux
+}
+
+do_install:append() {
+ # If client and monitor are disabled, bindir is empty, causing a QA error
+ rmdir --ignore-fail-on-non-empty ${D}/${bindir}
+}
+
+FILES:${PN} += " \
+ ${datadir}/dbus-1 \
+ ${nonarch_libdir}/modules-load.d \
+ ${systemd_unitdir}/network \
+"
+
+RDEPENDS:${PN} = "dbus"
+
+RRECOMMENDS:${PN} = "\
+ kernel-module-pkcs7-message \
+ kernel-module-pkcs8-key-parser \
+ kernel-module-x509-key-parser \
+"
diff --git a/meta-oe/recipes-connectivity/krb5/krb5/0001-aclocal-Add-parameter-to-disable-keyutils-detection.patch b/meta-oe/recipes-connectivity/krb5/krb5/0001-aclocal-Add-parameter-to-disable-keyutils-detection.patch
deleted file mode 100644
index cbd5d71fdf..0000000000
--- a/meta-oe/recipes-connectivity/krb5/krb5/0001-aclocal-Add-parameter-to-disable-keyutils-detection.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From a9e4057bfda190ad365b503af058b460ab8c7616 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Tue, 1 Oct 2013 22:22:57 +0200
-Subject: [PATCH] aclocal: Add parameter to disable keyutils detection
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-
----
- aclocal.m4 | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/aclocal.m4 b/aclocal.m4
-index d6d1279..80ce604 100644
---- a/aclocal.m4
-+++ b/aclocal.m4
-@@ -1679,12 +1679,16 @@ fi
- dnl
- dnl If libkeyutils exists (on Linux) include it and use keyring ccache
- AC_DEFUN(KRB5_AC_KEYRING_CCACHE,[
-+AC_ARG_ENABLE([keyutils],
-+AC_HELP_STRING([--disable-keyutils],don't enable using keyutils for keyring ccache @<:@enabled@:>@), , enable_keyutils=yes)
-+if test "$enable_keyutils" = yes; then
- AC_CHECK_HEADERS([keyutils.h],
- AC_CHECK_LIB(keyutils, add_key,
- [dnl Pre-reqs were found
- AC_DEFINE(USE_KEYRING_CCACHE, 1, [Define if the keyring ccache should be enabled])
- LIBS="-lkeyutils $LIBS"
- ]))
-+fi
- ])dnl
- dnl
- dnl If libkeyutils supports persistent keyrings, use them
diff --git a/meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-admin-server b/meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-admin-server
index 2835929139..e097353c2b 100644
--- a/meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-admin-server
+++ b/meta-oe/recipes-connectivity/krb5/krb5/etc/default/krb5-admin-server
@@ -1,6 +1,4 @@
# Automatically generated. If you change anything in this file other than the
-# values of RUN_KADMIND or DAEMON_ARGS, first run dpkg-reconfigure
+# values of DAEMON_ARGS, first run dpkg-reconfigure
# krb5-admin-server and disable managing the kadmin configuration with
# debconf. Otherwise, changes will be overwritten.
-
-RUN_KADMIND=true
diff --git a/meta-oe/recipes-connectivity/krb5/krb5/krb5-admin-server.service b/meta-oe/recipes-connectivity/krb5/krb5/krb5-admin-server.service
index 1b4271643e..21939a1f05 100644
--- a/meta-oe/recipes-connectivity/krb5/krb5/krb5-admin-server.service
+++ b/meta-oe/recipes-connectivity/krb5/krb5/krb5-admin-server.service
@@ -7,6 +7,7 @@ ConditionPathExists=/etc/krb5.conf
Type=forking
ExecStartPre=/bin/sh -c "test ! -f /var/log/kadmind.log || test ! -x /sbin/restorecon || /sbin/restorecon -F /var/log/kadmind.log"
ExecStart=/usr/sbin/kadmind
+EnvironmentFile=-/etc/default/krb5-admin-server
SuccessExitStatus=1 2 SIGKILL
TimeoutStopSec=30
diff --git a/meta-oe/recipes-connectivity/krb5/krb5/krb5-kdc.service b/meta-oe/recipes-connectivity/krb5/krb5/krb5-kdc.service
index d5e5a95794..bf37c45ba4 100644
--- a/meta-oe/recipes-connectivity/krb5/krb5/krb5-kdc.service
+++ b/meta-oe/recipes-connectivity/krb5/krb5/krb5-kdc.service
@@ -6,6 +6,7 @@ ConditionPathExists=/etc/krb5.conf
[Service]
Type=forking
ExecStart=/usr/sbin/krb5kdc
+EnvironmentFile=-/etc/default/krb5-kdc
SuccessExitStatus=1 2 SIGKILL
TimeoutStopSec=30
diff --git a/meta-oe/recipes-connectivity/krb5/krb5_1.16.bb b/meta-oe/recipes-connectivity/krb5/krb5_1.21.2.bb
index ce2134513e..ed12fee94c 100644
--- a/meta-oe/recipes-connectivity/krb5/krb5_1.16.bb
+++ b/meta-oe/recipes-connectivity/krb5/krb5_1.21.2.bb
@@ -14,14 +14,12 @@ DESCRIPTION = "Kerberos is a system for authenticating users and services on a n
HOMEPAGE = "http://web.mit.edu/Kerberos/"
SECTION = "console/network"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${S}/../NOTICE;md5=59b8da652f07186b44782a8454574f30"
-DEPENDS = "ncurses util-linux e2fsprogs e2fsprogs-native openssl"
+LIC_FILES_CHKSUM = "file://${S}/../NOTICE;md5=32cb3a99207053d9f5c1ef177c4d6e34"
-inherit autotools-brokensep binconfig perlnative systemd update-rc.d
+inherit autotools-brokensep binconfig perlnative systemd update-rc.d pkgconfig
SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
SRC_URI = "http://web.mit.edu/kerberos/dist/${BPN}/${SHRT_VER}/${BP}.tar.gz \
- file://0001-aclocal-Add-parameter-to-disable-keyutils-detection.patch \
file://debian-suppress-usr-lib-in-krb5-config.patch;striplevel=2 \
file://crosscompile_nm.patch \
file://etc/init.d/krb5-kdc \
@@ -31,28 +29,32 @@ SRC_URI = "http://web.mit.edu/kerberos/dist/${BPN}/${SHRT_VER}/${BP}.tar.gz \
file://krb5-kdc.service \
file://krb5-admin-server.service \
"
-SRC_URI[md5sum] = "23c5e9f07642db4a67f7a5b6168b1319"
-SRC_URI[sha256sum] = "faeb125f83b0fb4cdb2f99f088140631bb47d975982de0956d18c85842969e08"
+
+SRC_URI[sha256sum] = "9560941a9d843c0243a71b17a7ac6fe31c7cebb5bce3983db79e52ae7e850491"
CVE_PRODUCT = "kerberos"
+CVE_VERSION = "5-${PV}"
S = "${WORKDIR}/${BP}/src"
-PACKAGECONFIG ??= ""
+DEPENDS = "bison-native ncurses util-linux e2fsprogs e2fsprogs-native openssl"
+
+PACKAGECONFIG ??= "pkinit"
PACKAGECONFIG[libedit] = "--with-libedit,--without-libedit,libedit"
PACKAGECONFIG[openssl] = "--with-crypto-impl=openssl,,openssl"
-PACKAGECONFIG[keyutils] = "--enable-keyutils,--disable-keyutils,keyutils"
+PACKAGECONFIG[keyutils] = "--with-keyutils,--without-keyutils,keyutils"
PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap"
PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
+PACKAGECONFIG[pkinit] = "--enable-pkinit, --disable-pkinit"
-EXTRA_OECONF += " --without-tcl --with-system-et --disable-rpath"
+EXTRA_OECONF += "--with-system-et --disable-rpath"
CACHED_CONFIGUREVARS += "krb5_cv_attr_constructor_destructor=yes ac_cv_func_regcomp=yes \
ac_cv_printf_positional=yes ac_cv_file__etc_environment=yes \
ac_cv_file__etc_TIMEZONE=no"
-CFLAGS_append = " -fPIC -DDESTRUCTOR_ATTR_WORKS=1 -I${STAGING_INCDIR}/et"
-CFLAGS_append_riscv64 = " -D_REENTRANT -pthread"
-LDFLAGS_append = " -pthread"
+CFLAGS:append = " -fPIC -DDESTRUCTOR_ATTR_WORKS=1 -I${STAGING_INCDIR}/et"
+CFLAGS:append:riscv64 = " -D_REENTRANT -pthread"
+LDFLAGS:append = " -pthread"
do_configure() {
gnu-configize --force
@@ -60,7 +62,7 @@ do_configure() {
oe_runconf
}
-do_install_append() {
+do_install:append() {
rm -rf ${D}/${localstatedir}/run
rm -f ${D}${bindir}/sclient
rm -f ${D}${bindir}/sim_client
@@ -72,61 +74,73 @@ do_install_append() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
mkdir -p ${D}/${sysconfdir}/init.d ${D}/${sysconfdir}/default
- install -m 0755 ${WORKDIR}/etc/init.d/* ${D}/${sysconfdir}/init.d
- install -m 0644 ${WORKDIR}/etc/default/* ${D}/${sysconfdir}/default
+ install -m 0755 ${UNPACKDIR}/etc/init.d/* ${D}/${sysconfdir}/init.d
+ install -m 0644 ${UNPACKDIR}/etc/default/* ${D}/${sysconfdir}/default
mkdir -p ${D}/${sysconfdir}/default/volatiles
echo "d root root 0755 ${localstatedir}/run/krb5kdc none" \
> ${D}${sysconfdir}/default/volatiles/87_krb5
+
+ echo "RUN_KADMIND=true" >> ${D}/${sysconfdir}/default/krb5-admin-server
fi
+
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}${sysconfdir}/tmpfiles.d
echo "d /run/krb5kdc - - - -" \
> ${D}${sysconfdir}/tmpfiles.d/krb5.conf
+ mkdir -p ${D}/${sysconfdir}/default
+ install -m 0644 ${UNPACKDIR}/etc/default/* ${D}/${sysconfdir}/default
+
install -d ${D}${systemd_system_unitdir}
- install -m 0644 ${WORKDIR}/krb5-admin-server.service ${D}${systemd_system_unitdir}
- install -m 0644 ${WORKDIR}/krb5-kdc.service ${D}${systemd_system_unitdir}
+ install -m 0644 ${UNPACKDIR}/krb5-admin-server.service ${D}${systemd_system_unitdir}
+ install -m 0644 ${UNPACKDIR}/krb5-kdc.service ${D}${systemd_system_unitdir}
fi
+
+ sed -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
+ -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
+ -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
+ -i ${D}${bindir}/krb5-config
}
-PACKAGES =+ "${PN}-admin-server \
- ${PN}-gss-samples \
- ${PN}-k5tls \
- ${PN}-kdc \
- ${PN}-kdc-ldap \
- ${PN}-kpropd \
- ${PN}-otp \
- ${PN}-pkinit \
- ${PN}-user \
- libgssapi-krb5 \
- libgssrpc \
- libk5crypto \
- libkadm5clnt-mit \
- libkadm5srv-mit \
- libkdb5 \
- libkrad \
- libkrb5 \
- libkrb5support \
- libverto"
-
-FILES_${PN} = "${libdir}/krb5/plugins/preauth/test.so"
-FILES_${PN}-doc += "${datadir}/examples"
-FILES_${PN}-dbg += "${libdir}/krb5/plugins/*/.debug"
-
-FILES_${PN}-admin-server = "${sbindir}/kadmin.local \
+PACKAGE_BEFORE_PN =+ "${PN}-admin-server \
+ ${PN}-gss-samples \
+ ${PN}-k5tls \
+ ${PN}-kdc \
+ ${PN}-kdc-ldap \
+ ${PN}-kpropd \
+ ${PN}-otp \
+ ${PN}-pkinit \
+ ${PN}-spake \
+ ${PN}-user \
+ libgssapi-krb5 \
+ libgssrpc \
+ libk5crypto \
+ libkadm5clnt-mit \
+ libkadm5srv-mit \
+ libkdb5 \
+ libkrad \
+ libkrb5 \
+ libkrb5support \
+ libverto"
+
+FILES:${PN} = "${libdir}/krb5/plugins/preauth/test.so"
+FILES:${PN}-doc += "${datadir}/examples"
+FILES:${PN}-dbg += "${libdir}/krb5/plugins/*/.debug"
+
+FILES:${PN}-admin-server = "${sbindir}/kadmin.local \
${sbindir}/kadmind \
${sbindir}/kprop \
${sysconfdir}/default/krb5-admin-server \
${sysconfdir}/init.d/krb5-admin-server \
${systemd_system_unitdir}/krb5-admin-server.service"
-FILES_${PN}-gss-samples = "${bindir}/gss-client \
+FILES:${PN}-gss-samples = "${bindir}/gss-client \
${sbindir}/gss-server"
-FILES_${PN}-k5tls = "${libdir}/krb5/plugins/tls/k5tls.so"
+FILES:${PN}-k5tls = "${libdir}/krb5/plugins/tls/k5tls.so"
-FILES_${PN}-kdc = "${libdir}/krb5/plugins/kdb/db2.so \
+FILES:${PN}-kdc = "${libdir}/krb5/plugins/kdb/db2.so \
${localstatedir}/krb5kdc \
${sbindir}/kdb5_util \
${sbindir}/kproplog \
@@ -137,40 +151,41 @@ FILES_${PN}-kdc = "${libdir}/krb5/plugins/kdb/db2.so \
${sysconfdir}/tmpfiles.d/krb5.conf \
${systemd_system_unitdir}/krb5-kdc.service"
-FILES_${PN}-kdc-ldap = "${libdir}/krb5/libkdb_ldap${SOLIBS} \
+FILES:${PN}-kdc-ldap = "${libdir}/krb5/libkdb_ldap${SOLIBS} \
${libdir}/krb5/plugins/kdb/kldap.so \
${sbindir}/kdb5_ldap_util"
-FILES_${PN}-kpropd = "${sbindir}/kpropd"
-FILES_${PN}-otp = "${libdir}/krb5/plugins/preauth/otp.so"
-FILES_${PN}-pkinit = "${libdir}/krb5/plugins/preauth/pkinit.so"
-FILES_${PN}-user = "${bindir}/k*"
-
-FILES_libgssapi-krb5 = "${libdir}/libgssapi_krb5${SOLIBS}"
-FILES_libgssrpc = "${libdir}/libgssrpc${SOLIBS}"
-FILES_libk5crypto = "${libdir}/libk5crypto${SOLIBS}"
-FILES_libkadm5clnt-mit = "${libdir}/libkadm5clnt_mit${SOLIBS}"
-FILES_libkadm5srv-mit = "${libdir}/libkadm5srv_mit${SOLIBS}"
-FILES_libkdb5 = "${libdir}/libkdb5${SOLIBS}"
-FILES_libkrad = "${libdir}/libkrad${SOLIBS}"
-FILES_libkrb5 = "${libdir}/libkrb5${SOLIBS} \
+FILES:${PN}-kpropd = "${sbindir}/kpropd"
+FILES:${PN}-otp = "${libdir}/krb5/plugins/preauth/otp.so"
+FILES:${PN}-pkinit = "${libdir}/krb5/plugins/preauth/pkinit.so"
+FILES:${PN}-spake = "${libdir}/krb5/plugins/preauth/spake.so"
+FILES:${PN}-user = "${bindir}/k*"
+
+FILES:libgssapi-krb5 = "${libdir}/libgssapi_krb5${SOLIBS}"
+FILES:libgssrpc = "${libdir}/libgssrpc${SOLIBS}"
+FILES:libk5crypto = "${libdir}/libk5crypto${SOLIBS}"
+FILES:libkadm5clnt-mit = "${libdir}/libkadm5clnt_mit${SOLIBS}"
+FILES:libkadm5srv-mit = "${libdir}/libkadm5srv_mit${SOLIBS}"
+FILES:libkdb5 = "${libdir}/libkdb5${SOLIBS}"
+FILES:libkrad = "${libdir}/libkrad${SOLIBS}"
+FILES:libkrb5 = "${libdir}/libkrb5${SOLIBS} \
${libdir}/krb5/plugins/authdata \
${libdir}/krb5/plugins/libkrb5"
-FILES_libkrb5support = "${libdir}/libkrb5support${SOLIBS}"
-FILES_libverto = "${libdir}/libverto${SOLIBS}"
+FILES:libkrb5support = "${libdir}/libkrb5support${SOLIBS}"
+FILES:libverto = "${libdir}/libverto${SOLIBS}"
-RDEPENDS_${PN}-kadmin-server = "${PN}-kdc"
-RDEPENDS_${PN}-kpropd = "${PN}-kdc"
+RDEPENDS:${PN}-kadmin-server = "${PN}-kdc"
+RDEPENDS:${PN}-kpropd = "${PN}-kdc"
INITSCRIPT_PACKAGES = "${PN}-admin-server ${PN}-kdc"
-INITSCRIPT_NAME_${PN}-admin-server = "krb5-admin-server"
-INITSCRIPT_NAME_${PN}-kdc = "krb5-kdc"
+INITSCRIPT_NAME:${PN}-admin-server = "krb5-admin-server"
+INITSCRIPT_NAME:${PN}-kdc = "krb5-kdc"
SYSTEMD_PACKAGES = "${PN}-admin-server ${PN}-kdc"
-SYSTEMD_SERVICE_${PN}-admin-server = "krb5-admin-server.service"
-SYSTEMD_SERVICE_${PN}-kdc = "krb5-kdc.service"
+SYSTEMD_SERVICE:${PN}-admin-server = "krb5-admin-server.service"
+SYSTEMD_SERVICE:${PN}-kdc = "krb5-kdc.service"
-pkg_postinst_${PN}-kdc () {
+pkg_postinst:${PN}-kdc () {
if [ -z "$D" ]; then
if command -v systemd-tmpfiles >/dev/null; then
systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/krb5.conf
@@ -181,3 +196,6 @@ pkg_postinst_${PN}-kdc () {
}
BBCLASSEXTEND = "native nativesdk"
+
+inherit multilib_script
+MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/krb5-config"
diff --git a/meta-oe/recipes-connectivity/libev/libev_4.24.bb b/meta-oe/recipes-connectivity/libev/libev_4.33.bb
index 5e0f3a5ed9..346e78b1de 100644
--- a/meta-oe/recipes-connectivity/libev/libev_4.24.bb
+++ b/meta-oe/recipes-connectivity/libev/libev_4.33.bb
@@ -1,22 +1,21 @@
SUMMARY = "A full-featured and high-performance event loop that is loosely \
modelled after libevent."
HOMEPAGE = "http://software.schmorp.de/pkg/libev.html"
-LICENSE = "BSD-2-Clause | GPL-2.0+"
+LICENSE = "BSD-2-Clause | GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d6ad416afd040c90698edcdf1cbee347"
SRC_URI = "http://dist.schmorp.de/libev/Attic/${BP}.tar.gz"
-
-SRC_URI[md5sum] = "94459a5a22db041dec6f98424d6efe54"
-SRC_URI[sha256sum] = "973593d3479abdf657674a55afe5f78624b0e440614e2b8cb3a07f16d4d7f821"
-
-S = "${WORKDIR}/${PN}-${PV}"
+SRC_URI[md5sum] = "a3433f23583167081bf4acdd5b01b34f"
+SRC_URI[sha256sum] = "507eb7b8d1015fbec5b935f34ebed15bf346bed04a11ab82b8eee848c4205aea"
inherit autotools
EXTRA_OECONF += "--with-pic"
-do_install_append() {
+do_install:append() {
# Avoid conflicting with libevent. The provided compatibility layer is
# still basic so drop it for now.
rm ${D}${includedir}/event.h
}
+
+BBCLASSEXTEND = "native"
diff --git a/meta-oe/recipes-connectivity/libimobiledevice-glue/libimobiledevice-glue_git.bb b/meta-oe/recipes-connectivity/libimobiledevice-glue/libimobiledevice-glue_git.bb
new file mode 100644
index 0000000000..d37c547c98
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libimobiledevice-glue/libimobiledevice-glue_git.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Library with common code used by the libraries and tools around the libimobiledevice project"
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "\
+ file://COPYING;md5=6ab17b41640564434dda85c06b7124f7 \
+"
+
+HOMEPAGE = "http://www.libimobiledevice.org/"
+
+DEPENDS = "libplist"
+
+PV = "1.0.0+git"
+
+SRCREV = "114098d30e783fbb3def5c9b49427a86621cfcb1"
+SRC_URI = "git://github.com/libimobiledevice/libimobiledevice-glue;protocol=https;branch=master"
+
+S = "${WORKDIR}/git"
+inherit autotools pkgconfig
diff --git a/meta-oe/recipes-connectivity/libimobiledevice/files/configure-fix-largefile.patch b/meta-oe/recipes-connectivity/libimobiledevice/files/configure-fix-largefile.patch
deleted file mode 100644
index 679a8b597a..0000000000
--- a/meta-oe/recipes-connectivity/libimobiledevice/files/configure-fix-largefile.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Fix configure error in large file checks on 64-bit architectures
-
- configure:17888: checking for native large file support
- configure:17891: error: in `/home/jenkins/oe/shr-core-branches/shr-core/tmp-eglibc/work/core2-64-oe-linux/libimobiledevice/1.1.4-r0/libimobiledevice-1.1.4':
- configure:17893: error: cannot run test program while cross compiling
-
-configure.ac was using AC_SYS_LARGEFILE macro as is typical, but then
-there was an extra runtime check added beyond that:
-check if off_t is 8 bytes (64 bits) long.
-If that runtime check passed, _FILE_OFFSET_BITS was defined as 64.
-
-Runtime checks need to go away for cross compiling, and luckily this extra
-check was not serving any useful purpose. Note that off_t was *already*
-64 bits, *without* setting _FILE_OFFSET_BITS, which makes _FILE_OFFSET_BITS
-unneeded for large file support.
-
-If AC_SYS_LARGEFILE macro sets ac_cv_sys_file_offset_bits=no,
-just leave _FILE_OFFSET_BITS undefined!
-
---- libimobiledevice-1.1.4/configure.ac.old 2015-07-15 01:38:50.900143927 -0700
-+++ libimobiledevice-1.1.4/configure.ac 2015-07-15 01:39:13.300144430 -0700
-@@ -174,16 +174,6 @@
- if test "$enable_largefile" != no; then
- if test "$ac_cv_sys_file_offset_bits" != 'no'; then
- LFS_CFLAGS="$LFS_CFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
-- else
-- AC_MSG_CHECKING(for native large file support)
-- AC_RUN_IFELSE([AC_LANG_SOURCE([#include <unistd.h>
-- int main (int argc, char **argv)
-- {
-- exit(!(sizeof(off_t) == 8));
-- }])],
-- [ac_cv_sys_file_offset_bits=64; AC_DEFINE(_FILE_OFFSET_BITS,64)
-- AC_MSG_RESULT(yes)],
-- [AC_MSG_RESULT(no)])
- fi
- if test "$ac_cv_sys_large_files" != 'no'; then
- LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES=1"
diff --git a/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch b/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch
deleted file mode 100644
index 9a7895fd41..0000000000
--- a/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Fix link error with gcc 5 toolchains
-
- afc.c:258: error: undefined reference to 'debug_buffer'
- collect2: error: ld returned 1 exit status
-
-debug.h header was declaring things inline without providing a definition.
-Files that included this header then failed to link against the corresponding
-external symbol in debug.c, because the linker took the 'inline' keyword
-seriously rather than ignoring it.
-
---- libimobiledevice-1.1.4/src/debug.h.orig 2015-10-03 16:24:08.758740386 -0700
-+++ libimobiledevice-1.1.4/src/debug.h 2015-10-03 16:24:22.706740355 -0700
-@@ -44,14 +44,14 @@
- #define debug_plist(a)
- #endif
-
--LIBIMOBILEDEVICE_INTERNAL inline void debug_info_real(const char *func,
-+LIBIMOBILEDEVICE_INTERNAL void debug_info_real(const char *func,
- const char *file,
- int line,
- const char *format, ...);
-
--LIBIMOBILEDEVICE_INTERNAL inline void debug_buffer(const char *data, const int length);
--LIBIMOBILEDEVICE_INTERNAL inline void debug_buffer_to_file(const char *file, const char *data, const int length);
--LIBIMOBILEDEVICE_INTERNAL inline void debug_plist_real(const char *func,
-+LIBIMOBILEDEVICE_INTERNAL void debug_buffer(const char *data, const int length);
-+LIBIMOBILEDEVICE_INTERNAL void debug_buffer_to_file(const char *file, const char *data, const int length);
-+LIBIMOBILEDEVICE_INTERNAL void debug_plist_real(const char *func,
- const char *file,
- int line,
- plist_t plist);
diff --git a/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice/0001-include-unistd.h-for-usleep.patch b/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice/0001-include-unistd.h-for-usleep.patch
new file mode 100644
index 0000000000..424a203e56
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice/0001-include-unistd.h-for-usleep.patch
@@ -0,0 +1,31 @@
+From 6cb8069cfe08114f1dc7b50a7fcd4dc040cd1bbb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 9 May 2023 20:19:23 -0700
+Subject: [PATCH] include unistd.h for usleep()
+
+clang16 flags the missing header
+
+Fixes
+../../git/tools/idevicedevmodectl.c:363:2: error: call to undeclared function 'usleep'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
+
+Upstream-Status: Submitted [https://github.com/libimobiledevice/libimobiledevice/pull/1444]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ tools/idevicedevmodectl.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tools/idevicedevmodectl.c b/tools/idevicedevmodectl.c
+index 739bc13..9fe8d6a 100644
+--- a/tools/idevicedevmodectl.c
++++ b/tools/idevicedevmodectl.c
+@@ -34,6 +34,7 @@
+ #ifndef WIN32
+ #include <signal.h>
+ #endif
++#include <unistd.h>
+
+ #ifdef WIN32
+ #include <windows.h>
+--
+2.40.1
+
diff --git a/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb b/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb
deleted file mode 100644
index 32aca96fd0..0000000000
--- a/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "A protocol library to access an iPhone or iPod Touch in Linux"
-LICENSE = "GPLv2 & LGPLv2.1"
-LIC_FILES_CHKSUM = "\
- file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07 \
- file://COPYING.LESSER;md5=6ab17b41640564434dda85c06b7124f7 \
-"
-
-HOMEPAGE ="http://www.libimobiledevice.org/"
-
-DEPENDS = "libplist usbmuxd libtasn1 gnutls libgcrypt"
-
-SRC_URI = " \
- http://www.libimobiledevice.org/downloads/libimobiledevice-${PV}.tar.bz2 \
- file://configure-fix-largefile.patch \
- file://inline-without-definition.patch \
-"
-
-SRC_URI[md5sum] = "3f28cbc6a2e30d34685049c0abde5183"
-SRC_URI[sha256sum] = "67499cfaa6172f566ee6b0783605acffe484fb7ddc3b09881ab7ac58667ee5b8"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = " --without-cython "
diff --git a/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_git.bb b/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_git.bb
new file mode 100644
index 0000000000..b8d7e8872b
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_git.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A protocol library to access an iPhone or iPod Touch in Linux"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
+LIC_FILES_CHKSUM = "\
+ file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07 \
+ file://COPYING.LESSER;md5=6ab17b41640564434dda85c06b7124f7 \
+"
+HOMEPAGE = "http://www.libimobiledevice.org/"
+
+DEPENDS = "libplist usbmuxd libusbmuxd libtasn1 gnutls libgcrypt libimobiledevice-glue openssl"
+
+PV = "1.3.0+git"
+
+SRCREV = "860ffb707af3af94467d2ece4ad258dda957c6cd"
+SRC_URI = "git://github.com/libimobiledevice/libimobiledevice;protocol=https;branch=master \
+ file://0001-include-unistd.h-for-usleep.patch"
+
+S = "${WORKDIR}/git"
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --without-cython "
+
+CFLAGS += "-D_GNU_SOURCE"
diff --git a/meta-oe/recipes-connectivity/libirecovery/libirecovery_git.bb b/meta-oe/recipes-connectivity/libirecovery/libirecovery_git.bb
new file mode 100644
index 0000000000..2400195975
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libirecovery/libirecovery_git.bb
@@ -0,0 +1,17 @@
+SUMMARY = "The libirecovery library allows communication with iBoot/iBSS of iOS devices via USB"
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "\
+ file://COPYING;md5=23c2a5e0106b99d75238986559bb5fc6 \
+"
+
+HOMEPAGE = "http://www.libimobiledevice.org/"
+
+DEPENDS = "libimobiledevice-glue libusb1 readline"
+
+PV = "1.1.0"
+
+SRCREV = "98c9f7055ec1f2e09fac69ef1413a8757113b838"
+SRC_URI = "git://github.com/libimobiledevice/libirecovery;protocol=https;branch=master"
+
+S = "${WORKDIR}/git"
+inherit autotools pkgconfig
diff --git a/meta-oe/recipes-connectivity/libmbim/libmbim/clang.patch b/meta-oe/recipes-connectivity/libmbim/libmbim/clang.patch
deleted file mode 100644
index 92e657c00a..0000000000
--- a/meta-oe/recipes-connectivity/libmbim/libmbim/clang.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-Check for clang compiler since we need to disable
-unused-function warning for clang, at same time
-pass werror when checking for compiler options if
-werror is enabled so spurious options do not get
-enabled. Only the ones that are supported by given
-compiler are accepted.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Index: libmbim-1.14.0/m4/compiler-warnings.m4
-===================================================================
---- libmbim-1.14.0.orig/m4/compiler-warnings.m4
-+++ libmbim-1.14.0/m4/compiler-warnings.m4
-@@ -2,10 +2,30 @@ AC_DEFUN([LIBMBIM_COMPILER_WARNINGS],
- [AC_ARG_ENABLE(more-warnings,
- AS_HELP_STRING([--enable-more-warnings], [Possible values: no/yes/error]),
- set_more_warnings="$enableval",set_more_warnings=error)
-+
-+# Clang throws a lot of warnings when it does not understand a flag. Disable
-+# this warning for now so other warnings are visible.
-+AC_MSG_CHECKING([if compiling with clang])
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
-+#ifndef __clang__
-+ not clang
-+#endif
-+ ]])],
-+ [CLANG=yes],
-+ [CLANG=no]
-+)
-+AC_MSG_RESULT([$CLANG])
-+AS_IF([test "x$CLANG" = "xyes"], [CLANG_FLAGS=-Wno-error=unused-function])
-+CFLAGS="$CFLAGS $CLANG_FLAGS"
-+LDFLAGS="$LDFLAGS $CLANG_FLAGS"
-+
- AC_MSG_CHECKING(for more warnings)
- if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
- AC_MSG_RESULT(yes)
- CFLAGS="-Wall -std=gnu89 $CFLAGS"
-+ if test "x$set_more_warnings" = xerror; then
-+ WERROR="-Werror"
-+ fi
-
- for option in -Wmissing-declarations -Wmissing-prototypes \
- -Wdeclaration-after-statement -Wstrict-prototypes \
-@@ -17,22 +37,23 @@ if test "$GCC" = "yes" -a "$set_more_war
- -Wmissing-include-dirs -Waggregate-return \
- -Wformat-security; do
- SAVE_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS $option"
-+ CFLAGS="$CFLAGS $option $WERROR"
- AC_MSG_CHECKING([whether gcc understands $option])
- AC_TRY_COMPILE([], [],
- has_option=yes,
- has_option=no,)
- if test $has_option = no; then
- CFLAGS="$SAVE_CFLAGS"
-+ else
-+ CFLAGS="$SAVE_CFLAGS $option"
- fi
- AC_MSG_RESULT($has_option)
- unset has_option
- unset SAVE_CFLAGS
- done
-+ CFLAGS="$CFLAGS $WERROR"
- unset option
-- if test "x$set_more_warnings" = xerror; then
-- CFLAGS="$CFLAGS -Werror"
-- fi
-+ unset WERROR
- else
- AC_MSG_RESULT(no)
- fi
diff --git a/meta-oe/recipes-connectivity/libmbim/libmbim_1.14.0.bb b/meta-oe/recipes-connectivity/libmbim/libmbim_1.14.0.bb
deleted file mode 100644
index f89ef9d570..0000000000
--- a/meta-oe/recipes-connectivity/libmbim/libmbim_1.14.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "libmbim is library for talking to WWAN devices by MBIM protocol"
-DESCRIPTION = "libmbim is a glib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libmbim/"
-LICENSE = "GPLv2 & LGPLv2.1"
-LIC_FILES_CHKSUM = " \
- file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
-"
-
-DEPENDS = "glib-2.0 glib-2.0-native libgudev"
-
-inherit autotools pkgconfig bash-completion
-
-SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
- file://clang.patch \
-"
-SRC_URI[md5sum] = "2ed809e65c85353d3ab59e372890e549"
-SRC_URI[sha256sum] = "ca8d52a95a18cbabae8f15f83f1572316e888b6504f946e6645d24405127ab5b"
diff --git a/meta-oe/recipes-connectivity/libmbim/libmbim_1.30.0.bb b/meta-oe/recipes-connectivity/libmbim/libmbim_1.30.0.bb
new file mode 100644
index 0000000000..a227124498
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libmbim/libmbim_1.30.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "libmbim is library for talking to WWAN devices by MBIM protocol"
+DESCRIPTION = "libmbim is a glib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libmbim/"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = " \
+ file://LICENSES/GPL-2.0-or-later.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://LICENSES/LGPL-2.1-or-later.txt;md5=4fbd65380cdd255951079008b364516c \
+"
+
+DEPENDS = "glib-2.0 glib-2.0-native libgudev"
+
+inherit meson pkgconfig bash-completion gobject-introspection upstream-version-is-even
+
+SRCREV = "8415687e4f30ae5e36f407f179c8147f1529725c"
+SRC_URI = "git://gitlab.freedesktop.org/mobile-broadband/libmbim.git;protocol=https;branch=mbim-1-30"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMESON = " \
+ -Dgtk_doc=false \
+ -Dman=false \
+"
diff --git a/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/69-libmtp.rules b/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/69-libmtp.rules
deleted file mode 100644
index 4cd27c762c..0000000000
--- a/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/69-libmtp.rules
+++ /dev/null
@@ -1,999 +0,0 @@
-# UDEV-style hotplug map for libmtp
-# Put this file in /etc/udev/rules.d
-
-ACTION!="add", GOTO="libmtp_rules_end"
-ENV{MAJOR}!="?*", GOTO="libmtp_rules_end"
-SUBSYSTEM=="usb", GOTO="libmtp_usb_rules"
-GOTO="libmtp_rules_end"
-
-LABEL="libmtp_usb_rules"
-
-# Some sensitive devices we surely don't wanna probe
-# Color instruments
-ATTR{idVendor}=="0670", GOTO="libmtp_rules_end"
-ATTR{idVendor}=="0765", GOTO="libmtp_rules_end"
-ATTR{idVendor}=="085c", GOTO="libmtp_rules_end"
-ATTR{idVendor}=="0971", GOTO="libmtp_rules_end"
-# Canon scanners that look like MTP devices (PID 0x22nn)
-ATTR{idVendor}=="04a9", ATTR{idProduct}=="22*", GOTO="libmtp_rules_end"
-# Canon digital camera (EOS 3D) that looks like MTP device (PID 0x3113)
-ATTR{idVendor}=="04a9", ATTR{idProduct}=="3113", GOTO="libmtp_rules_end"
-# Sensitive Atheros devices that look like MTP devices
-ATTR{idVendor}=="0cf3", GOTO="libmtp_rules_end"
-# Sensitive Atmel JTAG programmers
-ATTR{idVendor}=="03eb", GOTO="libmtp_rules_end"
-# Creative ZEN Vision
-ATTR{idVendor}=="041e", ATTR{idProduct}=="411f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative Portable Media Center
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4123", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN Xtra (MTP mode)
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4128", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Dell DJ (2nd generation)
-ATTR{idVendor}=="041e", ATTR{idProduct}=="412f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN Micro (MTP mode)
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4130", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN Touch (MTP mode)
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4131", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Dell Dell Pocket DJ (MTP mode)
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4132", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN MicroPhoto (alternate version)
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4133", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN Sleek (MTP mode)
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4137", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN MicroPhoto
-ATTR{idVendor}=="041e", ATTR{idProduct}=="413c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN Sleek Photo
-ATTR{idVendor}=="041e", ATTR{idProduct}=="413d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN Vision:M
-ATTR{idVendor}=="041e", ATTR{idProduct}=="413e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN V
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4150", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN Vision:M (DVP-HD0004)
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4151", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN V Plus
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4152", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN Vision W
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4153", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4157", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN V 2GB
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4158", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN Mozaic
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4161", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN X-Fi
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4162", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Creative ZEN X-Fi 3
-ATTR{idVendor}=="041e", ATTR{idProduct}=="4169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# ZiiLABS Zii EGG
-ATTR{idVendor}=="041e", ATTR{idProduct}=="6000", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-900
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="0409", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung I550W Phone
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="04a4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung Jet S8000
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="4f1f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YH-920 (501d)
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="501d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YH-920 (5022)
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5022", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YH-925GS
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5024", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YH-820
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="502e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YH-925(-GS)
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="502f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YH-J70J
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5033", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-Z5
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="503c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-T7J
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5047", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-U2J (YP-U2JXB/XAA)
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5054", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-F2J
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5057", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-K5
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="505a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-U3
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="507d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-T9
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="507f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-K3
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5081", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-P2
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5083", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-T10
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="508a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-S5
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="508b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-S3
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5091", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-U4
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5093", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-R1
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="510f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-Q1
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5115", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-M1
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5118", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-P3
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="511a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-Q2
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="511d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-U5
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5121", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-R0
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5125", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-Q3
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5130", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YP-Z3
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5137", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung YH-999 Portable Media Center/SGH-A707/SGH-L760V/SGH-U900/Verizon Intensity/Fascinate
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="5a0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung M7600 Beat/GT-S8300T/SGH-F490/S8300
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="6642", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung X830 Mobile Phone
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="6702", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung U600 Mobile Phone
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="6709", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung F250 Mobile Phone
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="6727", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung Juke (SCH-U470)
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="6734", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung GT-B2700
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="6752", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung SAMSUNG Trance
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="6763", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung GT-S8500
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="6819", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung Galaxy models (MTP+ADB)
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="685c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung Galaxy Y
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="685e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung Galaxy models (MTP)
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung Galaxy models Kies mode
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="6877", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung Vibrant SGH-T959/Captivate/Media player mode
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="68a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung GT-B2710/Xcover 271
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="68af", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Samsung GT-S5230
-ATTR{idVendor}=="04e8", ATTR{idProduct}=="e20c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Microsoft/Intel Bandon Portable Media Center
-ATTR{idVendor}=="045e", ATTR{idProduct}=="00c9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Microsoft Windows Phone
-ATTR{idVendor}=="045e", ATTR{idProduct}=="04ec", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Microsoft Windows MTP Simulator
-ATTR{idVendor}=="045e", ATTR{idProduct}=="0622", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Microsoft Zune HD
-ATTR{idVendor}=="045e", ATTR{idProduct}=="063e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Microsoft Kin 1
-ATTR{idVendor}=="045e", ATTR{idProduct}=="0640", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Microsoft/Sharp/nVidia Kin TwoM
-ATTR{idVendor}=="045e", ATTR{idProduct}=="0641", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Microsoft Zune
-ATTR{idVendor}=="045e", ATTR{idProduct}=="0710", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# JVC Alneo XA-HD500
-ATTR{idVendor}=="04f1", ATTR{idProduct}=="6105", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips HDD6320/00 or HDD6330/17
-ATTR{idVendor}=="0471", ATTR{idProduct}=="014b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips HDD14XX,HDD1620 or HDD1630/17
-ATTR{idVendor}=="0471", ATTR{idProduct}=="014c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips HDD085/00 or HDD082/17
-ATTR{idVendor}=="0471", ATTR{idProduct}=="014d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear SA9200
-ATTR{idVendor}=="0471", ATTR{idProduct}=="014f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips SA1115/55
-ATTR{idVendor}=="0471", ATTR{idProduct}=="0164", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear Audio
-ATTR{idVendor}=="0471", ATTR{idProduct}=="0165", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips Shoqbox
-ATTR{idVendor}=="0471", ATTR{idProduct}=="0172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips PSA610
-ATTR{idVendor}=="0471", ATTR{idProduct}=="0181", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips HDD6320
-ATTR{idVendor}=="0471", ATTR{idProduct}=="01eb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear SA6014/SA6015/SA6024/SA6025/SA6044/SA6045
-ATTR{idVendor}=="0471", ATTR{idProduct}=="084e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear SA5145
-ATTR{idVendor}=="0471", ATTR{idProduct}=="0857", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear SA6125/SA6145/SA6185
-ATTR{idVendor}=="0471", ATTR{idProduct}=="2002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear SA3345
-ATTR{idVendor}=="0471", ATTR{idProduct}=="2004", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips SA5285
-ATTR{idVendor}=="0471", ATTR{idProduct}=="2022", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear ViBE SA1VBE04
-ATTR{idVendor}=="0471", ATTR{idProduct}=="2075", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear Muse
-ATTR{idVendor}=="0471", ATTR{idProduct}=="2077", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear ViBE SA1VBE04/08
-ATTR{idVendor}=="0471", ATTR{idProduct}=="207b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear Aria
-ATTR{idVendor}=="0471", ATTR{idProduct}=="207c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear SA1VBE08KX/78
-ATTR{idVendor}=="0471", ATTR{idProduct}=="208e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear VIBE SA2VBE[08|16]K/02
-ATTR{idVendor}=="0471", ATTR{idProduct}=="20b7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear Ariaz
-ATTR{idVendor}=="0471", ATTR{idProduct}=="20b9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips GoGear Vibe/02
-ATTR{idVendor}=="0471", ATTR{idProduct}=="20e5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Philips PSA235
-ATTR{idVendor}=="0471", ATTR{idProduct}=="7e01", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Acer Iconia TAB A500 (ID1)
-ATTR{idVendor}=="0502", ATTR{idProduct}=="3325", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Acer Iconia TAB A500 (ID2)
-ATTR{idVendor}=="0502", ATTR{idProduct}=="3341", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Acer Iconia TAB A501
-ATTR{idVendor}=="0502", ATTR{idProduct}=="3344", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Acer Iconia TAB A100 (ID1)
-ATTR{idVendor}=="0502", ATTR{idProduct}=="3348", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Acer Iconia TAB A100 (ID2)
-ATTR{idVendor}=="0502", ATTR{idProduct}=="3349", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Acer Iconia TAB A700
-ATTR{idVendor}=="0502", ATTR{idProduct}=="3378", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Acer Iconia TAB A200 (ID1)
-ATTR{idVendor}=="0502", ATTR{idProduct}=="337c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Acer Iconia TAB A200 (ID2)
-ATTR{idVendor}=="0502", ATTR{idProduct}=="337d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Acer Iconia TAB A510
-ATTR{idVendor}=="0502", ATTR{idProduct}=="338a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Acer E350 Liquid Gallant Duo
-ATTR{idVendor}=="0502", ATTR{idProduct}=="33c3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa m230/m240
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7400", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa m200-tcc (MTP mode)
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7401", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa c150
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7410", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa e200/e250/e260/e270/e280
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7420", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa e260/e280 v2
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7422", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa m240/m250
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7430", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa Clip
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7432", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa Clip v2
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7434", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa c240/c250
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7450", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa c250 v2
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7452", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa Express
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7460", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa Connect
-ATTR{idVendor}=="0781", ATTR{idProduct}=="7480", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa View
-ATTR{idVendor}=="0781", ATTR{idProduct}=="74b0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa Fuze
-ATTR{idVendor}=="0781", ATTR{idProduct}=="74c0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa Fuze v2
-ATTR{idVendor}=="0781", ATTR{idProduct}=="74c2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa Clip+
-ATTR{idVendor}=="0781", ATTR{idProduct}=="74d0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa Fuze+
-ATTR{idVendor}=="0781", ATTR{idProduct}=="74e0", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SanDisk Sansa Clip Zip
-ATTR{idVendor}=="0781", ATTR{idProduct}=="74e4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver H300 Series MTP
-ATTR{idVendor}=="1006", ATTR{idProduct}=="3004", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver Portable Media Center
-ATTR{idVendor}=="1006", ATTR{idProduct}=="4002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver Portable Media Center
-ATTR{idVendor}=="1006", ATTR{idProduct}=="4003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver T7 Volcano
-ATTR{idVendor}=="1042", ATTR{idProduct}=="1143", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver iFP-880
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver T10
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1113", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver T20 FM
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1114", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver T20
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1115", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver U10
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1116", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver T10a
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1117", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver T20
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1118", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver T30
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1119", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver T10 2GB
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1120", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver N12
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1122", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver Clix2
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1126", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver Clix
-ATTR{idVendor}=="4102", ATTR{idProduct}=="112a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver X20
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1132", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver T60
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1134", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver E100
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1141", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver E100 v2/Lplayer
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1142", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver Spinn
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1147", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver E50
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1151", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver T5
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1153", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver E30
-ATTR{idVendor}=="4102", ATTR{idProduct}=="1167", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver H10 20GB
-ATTR{idVendor}=="4102", ATTR{idProduct}=="2101", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver H10 5GB
-ATTR{idVendor}=="4102", ATTR{idProduct}=="2102", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# iRiver H10 5.6GB
-ATTR{idVendor}=="4102", ATTR{idProduct}=="2105", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Dell, Inc DJ Itty
-ATTR{idVendor}=="413c", ATTR{idProduct}=="4500", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Dell, Inc Dell Streak 7
-ATTR{idVendor}=="413c", ATTR{idProduct}=="b10b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat MEGF-40
-ATTR{idVendor}=="0930", ATTR{idProduct}=="0009", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat
-ATTR{idVendor}=="0930", ATTR{idProduct}=="000c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat P20
-ATTR{idVendor}=="0930", ATTR{idProduct}=="000f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat S
-ATTR{idVendor}=="0930", ATTR{idProduct}=="0010", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat P10
-ATTR{idVendor}=="0930", ATTR{idProduct}=="0011", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat V30
-ATTR{idVendor}=="0930", ATTR{idProduct}=="0014", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat U
-ATTR{idVendor}=="0930", ATTR{idProduct}=="0016", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat MEU202
-ATTR{idVendor}=="0930", ATTR{idProduct}=="0018", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat T
-ATTR{idVendor}=="0930", ATTR{idProduct}=="0019", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat MEU201
-ATTR{idVendor}=="0930", ATTR{idProduct}=="001a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Gigabeat MET401
-ATTR{idVendor}=="0930", ATTR{idProduct}=="001d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Excite AT300
-ATTR{idVendor}=="0930", ATTR{idProduct}=="0963", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Toshiba Thrive AT100/AT105
-ATTR{idVendor}=="0930", ATTR{idProduct}=="7100", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos Gmini XS100
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1207", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos XS202 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1208", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 104 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="120a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 204 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="120c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 404 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1301", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 404CAM (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1303", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 504 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1307", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 604 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1309", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 604WIFI (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="130b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 704 mobile dvr
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="130d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 704TV (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="130f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 405 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1311", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 605 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1313", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 605F (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1315", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 705 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1319", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos TV+ (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="131b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 105 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="131d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 405HDD (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1321", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 5 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1331", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 5 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1333", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 7 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1335", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos SPOD (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1341", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 5S IT (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1351", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 5H IT (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1357", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos Arnova Childpad
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1458", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 8o G9 (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1508", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 8o G9 Turbo (MTP mode)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1509", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 80G9
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1518", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 101 G9
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1528", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 101 G9 (v2)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1529", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 101 G9 Turbo 250 HD
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1538", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 101 G9 Turbo
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1539", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 70it2 (mode 1)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1568", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Archos 70it2 (mode 2)
-ATTR{idVendor}=="0e79", ATTR{idProduct}=="1569", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Dunlop MP3 player 1GB / EGOMAN MD223AFD
-ATTR{idVendor}=="10d6", ATTR{idProduct}=="2200", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Memorex or iRiver MMP 8585/8586 or iRiver E200
-ATTR{idVendor}=="10d6", ATTR{idProduct}=="2300", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sirius Stiletto
-ATTR{idVendor}=="18f6", ATTR{idProduct}=="0102", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sirius Stiletto 2
-ATTR{idVendor}=="18f6", ATTR{idProduct}=="0110", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Canon Ixus Digital 700 (PTP/MTP mode)
-ATTR{idVendor}=="04a9", ATTR{idProduct}=="30f2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Canon PowerShot A640 (PTP/MTP mode)
-ATTR{idVendor}=="04a9", ATTR{idProduct}=="3139", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Canon PowerShot SX20IS (PTP/MTP mode)
-ATTR{idVendor}=="04a9", ATTR{idProduct}=="31e4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N81 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="000a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 6120c Classic Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="002e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N96 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0039", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 6500c Classic Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="003c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 3110c Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="005f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 3109c Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0065", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5310 XpressMusic
-ATTR{idVendor}=="0421", ATTR{idProduct}=="006c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N95 Mobile Phone 8GB
-ATTR{idVendor}=="0421", ATTR{idProduct}=="006e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N82 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0074", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N78 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0079", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 6220 Classic
-ATTR{idVendor}=="0421", ATTR{idProduct}=="008d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N85 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0092", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 6210 Navigator
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0098", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia E71
-ATTR{idVendor}=="0421", ATTR{idProduct}=="00e4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia E66
-ATTR{idVendor}=="0421", ATTR{idProduct}=="00e5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5320 XpressMusic
-ATTR{idVendor}=="0421", ATTR{idProduct}=="00ea", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5800 XpressMusic
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0154", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5800 XpressMusic v2
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0155", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5800 XpressMusic v3
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0159", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia E63
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0179", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N79
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0186", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia E71x
-ATTR{idVendor}=="0421", ATTR{idProduct}=="01a1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia E52
-ATTR{idVendor}=="0421", ATTR{idProduct}=="01cf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 3710
-ATTR{idVendor}=="0421", ATTR{idProduct}=="01ee", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N97-1
-ATTR{idVendor}=="0421", ATTR{idProduct}=="01f4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N97
-ATTR{idVendor}=="0421", ATTR{idProduct}=="01f5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5130 XpressMusic
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0209", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia E72
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0221", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5530
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0229", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N97 mini
-ATTR{idVendor}=="0421", ATTR{idProduct}=="026b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia X6
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0274", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 6600i
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0297", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 2710
-ATTR{idVendor}=="0421", ATTR{idProduct}=="02c1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5230
-ATTR{idVendor}=="0421", ATTR{idProduct}=="02e2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N8
-ATTR{idVendor}=="0421", ATTR{idProduct}=="02fe", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N8 (Ovi mode)
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0302", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia E7
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0334", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia E7 (Ovi mode)
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0335", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia C7
-ATTR{idVendor}=="0421", ATTR{idProduct}=="03c1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia C7 (ID2)
-ATTR{idVendor}=="0421", ATTR{idProduct}=="03cd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N950
-ATTR{idVendor}=="0421", ATTR{idProduct}=="03d2", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 3250 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0462", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N93 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0478", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5500 Sport Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="047e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N91 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="0485", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5700 XpressMusic Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="04b4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5300 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="04ba", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5200 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="04be", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N73 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="04d1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N75 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="04e1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N93i Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="04e5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N95 Mobile Phone
-ATTR{idVendor}=="0421", ATTR{idProduct}=="04ef", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N80 Internet Edition (Media Player)
-ATTR{idVendor}=="0421", ATTR{idProduct}=="04f1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia N9
-ATTR{idVendor}=="0421", ATTR{idProduct}=="051a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia 5530 Xpressmusic
-ATTR{idVendor}=="05c6", ATTR{idProduct}=="0229", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nokia/Verizon 6205 Balboa/Verizon Music Phone
-ATTR{idVendor}=="05c6", ATTR{idProduct}=="3196", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Logik LOG DAX MP3 and DAB Player
-ATTR{idVendor}=="13d1", ATTR{idProduct}=="7002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Technika MP-709
-ATTR{idVendor}=="13d1", ATTR{idProduct}=="7017", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Thomson EM28 Series
-ATTR{idVendor}=="069b", ATTR{idProduct}=="0774", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Thomson / RCA Opal / Lyra MC4002
-ATTR{idVendor}=="069b", ATTR{idProduct}=="0777", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Thomson Lyra MC5104B (M51 Series)
-ATTR{idVendor}=="069b", ATTR{idProduct}=="077c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Thomson RCA H106
-ATTR{idVendor}=="069b", ATTR{idProduct}=="301a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Thomson scenium E308
-ATTR{idVendor}=="069b", ATTR{idProduct}=="3028", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Thomson / RCA Lyra HC308A
-ATTR{idVendor}=="069b", ATTR{idProduct}=="3035", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# FOMA F903iX HIGH-SPEED
-ATTR{idVendor}=="04c5", ATTR{idProduct}=="1140", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# NormSoft, Inc. Pocket Tunes
-ATTR{idVendor}=="1703", ATTR{idProduct}=="0001", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# NormSoft, Inc. Pocket Tunes 4
-ATTR{idVendor}=="1703", ATTR{idProduct}=="0002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# TrekStor Vibez 8/12GB
-ATTR{idVendor}=="066f", ATTR{idProduct}=="842a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Medion MD8333
-ATTR{idVendor}=="066f", ATTR{idProduct}=="8550", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Medion MD8333
-ATTR{idVendor}=="066f", ATTR{idProduct}=="8588", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Medion MD99000 (P9514)/Olivetti Olipad 110
-ATTR{idVendor}=="0408", ATTR{idProduct}=="b009", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Medion Lifetab P9514
-ATTR{idVendor}=="0408", ATTR{idProduct}=="b00a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Maxfield G-Flash NG 1GB
-ATTR{idVendor}=="066f", ATTR{idProduct}=="846c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SigmaTel Inc. MTPMSCN Audio Player
-ATTR{idVendor}=="066f", ATTR{idProduct}=="a010", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# TrekStor i.Beat Sweez FM
-ATTR{idVendor}=="0402", ATTR{idProduct}=="0611", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# TrekStor i.Beat Organix 2.0
-ATTR{idVendor}=="1e68", ATTR{idProduct}=="0002", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Disney MixMax
-ATTR{idVendor}=="0aa6", ATTR{idProduct}=="6021", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Tevion MD 81488
-ATTR{idVendor}=="0aa6", ATTR{idProduct}=="3011", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# MyMusix PD-6070
-ATTR{idVendor}=="0aa6", ATTR{idProduct}=="9601", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio U3 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0701", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio 6 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0711", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio 7 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0751", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio U5 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0761", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio D2 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0801", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio D2+ FW 2.x (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0861", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio D2+ DAB FW 4.x (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0871", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio D2+ FW 3.x (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0881", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio D2+ DMB FW 1.x (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0891", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio S9 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0901", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio 9 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0911", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio J3 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0921", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio X7 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0931", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio C2 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0941", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Cowon iAudio 10 (MTP mode)
-ATTR{idVendor}=="0e21", ATTR{idProduct}=="0952", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Insignia NS-DV45
-ATTR{idVendor}=="19ff", ATTR{idProduct}=="0303", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Insignia Sport Player
-ATTR{idVendor}=="19ff", ATTR{idProduct}=="0307", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Insignia Pilot 4GB
-ATTR{idVendor}=="19ff", ATTR{idProduct}=="0309", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# LG Electronics Inc. T54
-ATTR{idVendor}=="043e", ATTR{idProduct}=="7040", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# LG Electronics Inc. UP3
-ATTR{idVendor}=="043e", ATTR{idProduct}=="70b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# LG Electronics Inc. VX8550 V CAST Mobile Phone
-ATTR{idVendor}=="1004", ATTR{idProduct}=="6010", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# LG Electronics Inc. KC910 Renoir Mobile Phone
-ATTR{idVendor}=="1004", ATTR{idProduct}=="608f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# LG Electronics Inc. GR-500 Music Player
-ATTR{idVendor}=="1004", ATTR{idProduct}=="611b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# LG Electronics Inc. KM900
-ATTR{idVendor}=="1004", ATTR{idProduct}=="6132", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# LG Electronics Inc. LG8575
-ATTR{idVendor}=="1004", ATTR{idProduct}=="619a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# LG Electronics Inc. V909 G-Slate
-ATTR{idVendor}=="1004", ATTR{idProduct}=="61f9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# LG Electronics Inc. LG-E617G/P700
-ATTR{idVendor}=="1004", ATTR{idProduct}=="631c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-A815/NWZ-A818
-ATTR{idVendor}=="054c", ATTR{idProduct}=="0325", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-S516
-ATTR{idVendor}=="054c", ATTR{idProduct}=="0326", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-S615F/NWZ-S616F/NWZ-S618F
-ATTR{idVendor}=="054c", ATTR{idProduct}=="0327", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-S716F
-ATTR{idVendor}=="054c", ATTR{idProduct}=="035a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-A826/NWZ-A828/NWZ-A829
-ATTR{idVendor}=="054c", ATTR{idProduct}=="035b", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-A726/NWZ-A728/NWZ-A768
-ATTR{idVendor}=="054c", ATTR{idProduct}=="035c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-B135
-ATTR{idVendor}=="054c", ATTR{idProduct}=="036e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-E436F
-ATTR{idVendor}=="054c", ATTR{idProduct}=="0385", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-W202
-ATTR{idVendor}=="054c", ATTR{idProduct}=="0388", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-S739F
-ATTR{idVendor}=="054c", ATTR{idProduct}=="038c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-S638F
-ATTR{idVendor}=="054c", ATTR{idProduct}=="038e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-X1050B/NWZ-X1060B
-ATTR{idVendor}=="054c", ATTR{idProduct}=="0397", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-X1051/NWZ-X1061
-ATTR{idVendor}=="054c", ATTR{idProduct}=="0398", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-B142F
-ATTR{idVendor}=="054c", ATTR{idProduct}=="03d8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-E344
-ATTR{idVendor}=="054c", ATTR{idProduct}=="03fc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-E445
-ATTR{idVendor}=="054c", ATTR{idProduct}=="03fd", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-S545
-ATTR{idVendor}=="054c", ATTR{idProduct}=="03fe", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-A845
-ATTR{idVendor}=="054c", ATTR{idProduct}=="0404", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-W252B
-ATTR{idVendor}=="054c", ATTR{idProduct}=="04bb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-B153F
-ATTR{idVendor}=="054c", ATTR{idProduct}=="04be", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-E354
-ATTR{idVendor}=="054c", ATTR{idProduct}=="04cb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-S754
-ATTR{idVendor}=="054c", ATTR{idProduct}=="04cc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony NWZ-B163F
-ATTR{idVendor}=="054c", ATTR{idProduct}=="059a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Walkman NWZ-E464
-ATTR{idVendor}=="054c", ATTR{idProduct}=="05a6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony NWZ-S765
-ATTR{idVendor}=="054c", ATTR{idProduct}=="05a8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Sony Tablet S
-ATTR{idVendor}=="054c", ATTR{idProduct}=="05b3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony Sony Tablet S1
-ATTR{idVendor}=="054c", ATTR{idProduct}=="05b4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Sony DCR-SR75
-ATTR{idVendor}=="054c", ATTR{idProduct}=="1294", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson K850i
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0075", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson W910
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0076", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson W890i
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="00b3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson W760i
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="00c6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson C902
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="00d4", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson C702
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="00d9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson W980
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="00da", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson C905
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="00ef", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson W595
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="00f3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson W902
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="00f5", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson T700
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="00fb", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson W705/W715
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0105", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson W995
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0112", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson U5
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0133", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson U8i
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="013a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson j10i2 (Elm)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0144", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson j108i (Cedar)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="014e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson W302
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="10c8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson j10i (Elm)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="d144", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson K550i
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="e000", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson LT15i (Xperia arc S)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="014f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson MT11i Xperia Neo
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0156", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson MK16i Xperia
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="015a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson ST18a Xperia Ray
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0161", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson SK17i Xperia Mini Pro
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0166", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson ST15i Xperia Mini
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0167", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson ST17i Xperia Active
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0168", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY LT26i Xperia S
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY WT19i Live Walkman
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="016d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY ST21i Xperia Tipo
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0170", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY ST15i Xperia U
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0171", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY LT22i Xperia P
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY LT26w Xperia Acro S
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="0176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson ST17i Xperia Active (MTP+UMS mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="4168", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY LT26i Xperia S (MTP+UMS mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="4169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY ST21i Xperia Tipo (MTP+UMS mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="4170", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY ST25i Xperia U (MTP+UMS mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="4171", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY LT22i Xperia P (MTP+UMS mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="4172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY LT26w Xperia Acro S (MTP+UMS mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="4176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson LT15i Xperia Arc (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="514f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson MT11i Xperia Neo (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="5156", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson ST17i Xperia Active (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="5168", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY LT26i Xperia S (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="5169", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson MK16i Xperia (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="515a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson ST18i Xperia Ray (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="5161", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson SK17i Xperia Mini Pro (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="5166", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson ST15i Xperia Mini (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="5167", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SonyEricsson SK17i Xperia Mini Pro (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="516d", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY ST21i Xperia Tipo (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="5170", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY ST25i Xperia U (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="5171", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY LT22i Xperia P (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="5172", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY LT26w Xperia Acro S (MTP+ADB mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="5176", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY MT27i Xperia Sola (MTP+UMS+? mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="a173", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# SONY ST27i Xperia Go (MTP+UMS+? mode)
-ATTR{idVendor}=="0fce", ATTR{idProduct}=="a17e", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola V3m/V750 verizon
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="2a65", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola Xoom 2 Media Edition (ID2)
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="41cf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola Droid X/MB525 (Defy)
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="41d6", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola Milestone / Verizon Droid
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="41dc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola DROID2
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="42a7", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola Xoom 2 Media Edition
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="4311", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola XT912/XT928
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="4362", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola DROID4
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="437f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola IdeaPad K1
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="4811", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola A1200
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="60ca", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola MTP Test Command Interface
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="6413", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola RAZR2 V8/U9/Z6
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="6415", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola Xoom (Factory test)
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola Xoom (MTP)
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola Xoom (MTP+ADB)
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Motorola Milestone X2
-ATTR{idVendor}=="22b8", ATTR{idProduct}=="70ca", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for Sony) S1
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="05b3", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for Barnes & Noble) Nook Color
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="2d02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for Asus) TF101 Transformer
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for Samsung) Nexus S
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e21", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for Asus) Nexus 7 (MTP)
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e41", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for Asus) Nexus 7 (MTP+ADB)
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for Motorola) Xoom (MZ604)
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="70a8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for Toshiba) Thrive 7/AT105
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="7102", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for Lenovo) Ideapad K1
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="740a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for Medion) MD99000 (P9514)
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="b00a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for LG Electronics) P990/Optimus (Cyanogen)
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="d109", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Google Inc (for LG Electronics) P990/Optimus
-ATTR{idVendor}=="18d1", ATTR{idProduct}=="d10a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Kenwood Media Keg HD10GB7 Sport Player
-ATTR{idVendor}=="0b28", ATTR{idProduct}=="100c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Micro-Star International P610/Model MS-5557
-ATTR{idVendor}=="0db0", ATTR{idProduct}=="5572", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# FOMA D905i
-ATTR{idVendor}=="06d3", ATTR{idProduct}=="21ba", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Haier Ibiza Rhapsody
-ATTR{idVendor}=="1302", ATTR{idProduct}=="1016", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Haier Ibiza Rhapsody
-ATTR{idVendor}=="1302", ATTR{idProduct}=="1017", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Panasonic P905i
-ATTR{idVendor}=="04da", ATTR{idProduct}=="2145", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Panasonic P906i
-ATTR{idVendor}=="04da", ATTR{idProduct}=="2158", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Polaroid Freescape/MPU-433158
-ATTR{idVendor}=="0546", ATTR{idProduct}=="2035", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Pioneer XMP3
-ATTR{idVendor}=="08e4", ATTR{idProduct}=="0148", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Slacker Inc. Slacker Portable Media Player
-ATTR{idVendor}=="1bdc", ATTR{idProduct}=="fabf", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Conceptronic CMTD2
-ATTR{idVendor}=="1e53", ATTR{idProduct}=="0005", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# O2 Sistemas ZoltarTV
-ATTR{idVendor}=="1e53", ATTR{idProduct}=="0006", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Wyplay Wyplayer
-ATTR{idVendor}=="1e53", ATTR{idProduct}=="0007", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Perception Digital, Ltd Gigaware GX400
-ATTR{idVendor}=="0aa6", ATTR{idProduct}=="9702", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# RIM BlackBerry Storm/9650
-ATTR{idVendor}=="0fca", ATTR{idProduct}=="8007", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Nextar MA715A-8R
-ATTR{idVendor}=="0402", ATTR{idProduct}=="5668", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Coby COBY MP705
-ATTR{idVendor}=="1e74", ATTR{idProduct}=="6512", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Apple iPhone
-ATTR{idVendor}=="05ac", ATTR{idProduct}=="1290", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Apple iPod Touch 1st Gen
-ATTR{idVendor}=="05ac", ATTR{idProduct}=="1291", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Apple iPhone 3G
-ATTR{idVendor}=="05ac", ATTR{idProduct}=="1292", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Apple iPod Touch 2nd Gen
-ATTR{idVendor}=="05ac", ATTR{idProduct}=="1293", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Apple iPhone 3GS
-ATTR{idVendor}=="05ac", ATTR{idProduct}=="1294", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Apple 0x1296
-ATTR{idVendor}=="05ac", ATTR{idProduct}=="1296", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Apple 0x1297
-ATTR{idVendor}=="05ac", ATTR{idProduct}=="1297", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Apple 0x1298
-ATTR{idVendor}=="05ac", ATTR{idProduct}=="1298", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Apple iPod Touch 3rd Gen
-ATTR{idVendor}=="05ac", ATTR{idProduct}=="1299", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Apple iPad
-ATTR{idVendor}=="05ac", ATTR{idProduct}=="129a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Curitel Communications, Inc. Verizon Wireless Device
-ATTR{idVendor}=="106c", ATTR{idProduct}=="3215", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Pantech Crux
-ATTR{idVendor}=="106c", ATTR{idProduct}=="f003", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Asus TF300 Transformer
-ATTR{idVendor}=="0b05", ATTR{idProduct}=="4c80", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Asus TF300 Transformer (USB debug mode)
-ATTR{idVendor}=="0b05", ATTR{idProduct}=="4c81", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Asus TF700 Transformer
-ATTR{idVendor}=="0b05", ATTR{idProduct}=="4c90", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Asus TF201 Transformer Prime (keyboard dock)
-ATTR{idVendor}=="0b05", ATTR{idProduct}=="4d00", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Asus TF201 Transformer Prime (tablet only)
-ATTR{idVendor}=="0b05", ATTR{idProduct}=="4d01", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Asus TFXXX Transformer Prime (unknown version)
-ATTR{idVendor}=="0b05", ATTR{idProduct}=="4d04", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Asus TF101 Eeepad Slider
-ATTR{idVendor}=="0b05", ATTR{idProduct}=="4e01", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Asus TF101 Eeepad Transformer
-ATTR{idVendor}=="0b05", ATTR{idProduct}=="4e0f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Asus TF101 Eeepad Transformer (debug mode)
-ATTR{idVendor}=="0b05", ATTR{idProduct}=="4e1f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Lenovo K1
-ATTR{idVendor}=="17ef", ATTR{idProduct}=="740a", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Lenovo ThinkPad Tablet
-ATTR{idVendor}=="17ef", ATTR{idProduct}=="741c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Lenovo P700
-ATTR{idVendor}=="17ef", ATTR{idProduct}=="7497", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Lenovo Lifetab S9512
-ATTR{idVendor}=="17ef", ATTR{idProduct}=="74cc", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Huawei Honor U8860
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1051", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Huawei Mediapad (mode 0)
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="360f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Huawei Mediapad (mode 1)
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="361f", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# ZTE V55 ID 1
-ATTR{idVendor}=="19d2", ATTR{idProduct}=="0244", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# ZTE V55 ID 2
-ATTR{idVendor}=="19d2", ATTR{idProduct}=="0245", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# HTC Zopo ZP100 (ID1)
-ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c02", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# HTC EVO 4G LTE
-ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c93", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# HTC EVO 4G LTE (second ID)
-ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0ca8", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Hewlett-Packard HP Touchpad
-ATTR{idVendor}=="0bb4", ATTR{idProduct}=="685c", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Hewlett-Packard HP Touchpad (debug mode)
-ATTR{idVendor}=="0bb4", ATTR{idProduct}=="6860", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# HTC Zopo ZP100 (ID2)
-ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# NEC FOMA N01A
-ATTR{idVendor}=="0409", ATTR{idProduct}=="0242", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# nVidia CM9-Adam
-ATTR{idVendor}=="0955", ATTR{idProduct}=="70a9", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Vizio VTAB1008
-ATTR{idVendor}=="0489", ATTR{idProduct}=="e040", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Various Viewpia DR/bq Kepler
-ATTR{idVendor}=="2207", ATTR{idProduct}=="0001", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-# Isabella Her Prototype
-ATTR{idVendor}=="0b20", ATTR{idProduct}=="ddee", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-
-# Autoprobe vendor-specific, communication and PTP devices
-ENV{ID_MTP_DEVICE}!="1", ENV{MTP_NO_PROBE}!="1", ENV{COLOR_MEASUREMENT_DEVICE}!="1", ENV{libsane_matched}!="yes", ATTR{bDeviceClass}=="00|02|06|ef|ff", PROGRAM="mtp-probe /sys$env{DEVPATH} $attr{busnum} $attr{devnum}", RESULT=="1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
-
-LABEL="libmtp_rules_end"
diff --git a/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/glibc-2.20.patch b/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/glibc-2.20.patch
deleted file mode 100644
index 38b45c2a93..0000000000
--- a/meta-oe/recipes-connectivity/libmtp/libmtp-1.1.5/glibc-2.20.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-
-Include config.h so we get the defines available for subsequent
-include files
-
-Fixes errors like
-
-| In file included from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/beaglebone/usr/include/string.h:634:0,
-| from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/cortexa8t2hf-vfp-neon-oe-linux-gnueabi/libmtp/1.1.5-r0/libmtp-1.1.5/src/util.c:36:
-| /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/cortexa8t2hf-vfp-neon-oe-linux-gnueabi/libmtp/1.1.5-r0/libmtp-1.1.5/src/util.h:29:7: error: expected identifier or '(' before '__extension
-__'
-| char *strndup (const char *s, size_t n);
-| ^
-| /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/cortexa8t2hf-vfp-neon-oe-linux-gnueabi/libmtp/1.1.5-r0/libmtp-1.1.5/src/util.c:111:7: error: expected identifier or '(' before '__extensio
-n__'
-| char *strndup (const char *s, size_t n)
-| ^
-| make[2]: *** [libmtp_la-util.lo] Error 1
-
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
-
-Index: libmtp-1.1.5/src/util.c
-===================================================================
---- libmtp-1.1.5.orig/src/util.c 2011-01-10 05:37:21.000000000 -0800
-+++ libmtp-1.1.5/src/util.c 2014-09-03 23:50:44.703563888 -0700
-@@ -22,6 +22,8 @@
- * Boston, MA 02111-1307, USA.
- */
-
-+#include "config.h"
-+
- /* MSVC does not have these */
- #ifndef _MSC_VER
- #include <sys/time.h>
diff --git a/meta-oe/recipes-connectivity/libmtp/libmtp/0001-Use-native-mtp-hotplug.patch b/meta-oe/recipes-connectivity/libmtp/libmtp/0001-Use-native-mtp-hotplug.patch
new file mode 100644
index 0000000000..83c58061f7
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libmtp/libmtp/0001-Use-native-mtp-hotplug.patch
@@ -0,0 +1,43 @@
+From 4e8eab047a43e48bd541f2887104299fcfb99b0d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Tue, 27 Nov 2018 12:03:20 +0100
+Subject: [PATCH] Use native mtp-hotplug
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ Makefile.am | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 7b7e06b..083e1c6 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -16,16 +16,16 @@ hwdb_DATA=69-libmtp.hwdb
+ noinst_DATA=libmtp.usermap libmtp.fdi
+
+ libmtp.usermap: util/mtp-hotplug
+- util/mtp-hotplug > libmtp.usermap
++ mtp-hotplug > libmtp.usermap
+
+ @UDEV_RULES@: util/mtp-hotplug
+- util/mtp-hotplug -u -p"@UDEV@" @UDEV_GROUP@ @UDEV_MODE@ > @UDEV_RULES@
++ mtp-hotplug -u -p"@UDEV@" @UDEV_GROUP@ @UDEV_MODE@ > @UDEV_RULES@
+
+ libmtp.fdi: util/mtp-hotplug
+- util/mtp-hotplug -H > libmtp.fdi
++ mtp-hotplug -H > libmtp.fdi
+
+ $(hwdb_DATA): util/mtp-hotplug
+- util/mtp-hotplug -w > $(hwdb_DATA)
++ mtp-hotplug -w > $(hwdb_DATA)
+
+ CLEANFILES = libmtp.usermap @UDEV_RULES@ libmtp.fdi libmtp.hwdb
+ endif
+--
+2.14.5
+
diff --git a/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.21.bb b/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.21.bb
new file mode 100644
index 0000000000..94cbef8fc1
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.21.bb
@@ -0,0 +1,47 @@
+# TODO: include debian's mtp-tools man page (needs xsltproc-native and
+# docbook-xsl-native, or we pregenerate it), add support for doxygen
+# generation fully with -natives
+DESCRIPTION = "libmtp is an Initiator implementation of the Media Transfer \
+Protocol (MTP) in the form of a library suitable primarily for POSIX \
+compliant operating systems"
+SUMMARY = "libmtp is an Initiator implementation of the Media Transfer Protocol (MTP)"
+HOMEPAGE = "http://libmtp.sourceforge.net/"
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0448d3676bc0de00406af227d341a4d1 \
+ file://src/ptp.c;beginline=3;endline=22;md5=80fd2d5904c4c1f5455d8f4bf515292f \
+ file://examples/albums.c;beginline=5;endline=21;md5=84f4e55dfec49e898b7f68a828c15620 \
+ "
+
+BBCLASSEXTEND = "native"
+
+DEPENDS = "libusb1 gettext-native"
+DEPENDS:append:class-target = " ${BPN}-native"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz"
+SRC_URI:append:class-target = " file://0001-Use-native-mtp-hotplug.patch"
+SRC_URI[sha256sum] = "f4c1ceb3df020a6cb851110f620c14fe399518c494ed252039cbfb4e34335135"
+
+inherit autotools pkgconfig lib_package
+
+EXTRA_OECONF += " \
+ --disable-rpath \
+ --enable-largefile \
+ --with-udev=${nonarch_base_libdir}/udev \
+"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[doxygen] = "--enable-doxygen,--disable-doxygen,doxygen-native"
+PACKAGECONFIG[mtpz] = "--enable-mtpz,--disable-mtpz,libgcrypt"
+
+PACKAGES =+ "${BPN}-common ${BPN}-runtime"
+
+RDEPENDS:${BPN} += "libmtp-common"
+RRECOMMENDS:${BPN} += "libmtp-runtime ${PN}-bin"
+
+FILES:${BPN}-common = "${nonarch_base_libdir}/udev/rules.d/*"
+SUMMARY:${BPN}-common = "The udev rules file for MTP devices"
+
+FILES:${BPN}-runtime = "${nonarch_base_libdir}/udev/mtp-probe"
+RDEPENDS:${BPN}-runtime = "libmtp-common"
+SUMMARY:${BPN}-runtime = "mtp-probe, used for the MTP udev rules"
+DESCRIPTION:${BPN}-runtime = "This package provides mtp-probe, a program to probe newly connected device interfaces from userspace to determine if they are MTP devices, used for udev rules."
diff --git a/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.5.bb b/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.5.bb
deleted file mode 100644
index 798b1707d7..0000000000
--- a/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.5.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-# TODO: include debian's mtp-tools man page (needs xsltproc-native and
-# docbook-xsl-native, or we pregenerate it), add support for doxygen
-# generation fully with -natives
-DESCRIPTION = "libmtp is an Initiator implementation of the Media Transfer \
-Protocol (MTP) in the form of a library suitable primarily for POSIX \
-compliant operating systems"
-SUMMARY = "libmtp is an Initiator implementation of the Media Transfer Protocol (MTP)"
-HOMEPAGE = "http://libmtp.sourceforge.net/"
-LICENSE = "LGPL-2.1+"
-LIC_FILES_CHKSUM = "\
- file://COPYING;md5=0448d3676bc0de00406af227d341a4d1 \
- file://src/ptp.c;beginline=3;endline=22;md5=dafe6cfd1782f56471bb94ab06624c1f \
- file://examples/albums.c;beginline=5;endline=21;md5=84f4e55dfec49e898b7f68a828c15620 \
-"
-
-DEPENDS += "libusb1 gettext-native"
-
-SCM_URI = "git://git.code.sf.net/p/libmtp/code"
-SRC_URI = "\
- ${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
- file://69-libmtp.rules \
- file://glibc-2.20.patch \
-"
-SRC_URI[md5sum] = "f80e45c0e6e5798c434bb1c26a7b602d"
-SRC_URI[sha256sum] = "787679171baf8b3cf2fcc03196c705ab4d7cbc969bd71f9d3696be1ce7f1c63a"
-
-# Currently we use a pregenerated rules file produced by mtp-hotplug, rather
-# than having to depend upon libmtp-native or run mtp-hotplug in a postinst.
-do_unpack[vardeps] += "skip_udev_rules_generation"
-do_unpack[postfuncs] += "skip_udev_rules_generation"
-
-skip_udev_rules_generation () {
- sed -i -e '/^noinst_DATA=/,/util\/mtp-hotplug -H/d' ${S}/Makefile.am
- cp ${WORKDIR}/69-libmtp.rules ${S}/
-}
-
-inherit autotools pkgconfig lib_package
-
-EXTRA_OECONF += "--disable-rpath"
-
-PACKAGECONFIG ?= "\
- ${@bb.utils.contains('DISTRO_FEATURES', 'largefile$', 'largefile', '', d)} \
-"
-PACKAGECONFIG[doxygen] = "--enable-doxygen,--disable-doxygen"
-PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile"
-PACKAGECONFIG[mtpz] = "--enable-mtpz,--disable-mtpz,libgcrypt"
-
-PACKAGES =+ "libmtp-common libmtp-runtime"
-
-RDEPENDS_${PN} += "libmtp-common"
-RRECOMMENDS_${PN} += "libmtp-runtime ${PN}-bin"
-FILES_${PN}-dbg += "${nonarch_base_libdir}/udev/.debug/*"
-FILES_libmtp-common = "${nonarch_base_libdir}/udev/rules.d/*"
-SUMMARY_libmtp-common = "The udev rules file for MTP devices"
-FILES_libmtp-runtime = "${nonarch_base_libdir}/udev/mtp-probe"
-DEPENDS_libmtp-runtime = "libmtp-common"
-SUMMARY_libmtp-runtime = "mtp-probe, used for the MTP udev rules"
-DESCRIPTION_libmtp-runtime = "This package provides mtp-probe, a program to probe newly connected device interfaces from userspace to determine if they are MTP devices, used for udev rules."
diff --git a/meta-oe/recipes-connectivity/libndp/libndp/0001-include-sys-select.h-for-fd_-definitions.patch b/meta-oe/recipes-connectivity/libndp/libndp/0001-include-sys-select.h-for-fd_-definitions.patch
deleted file mode 100644
index 15aa94e2cc..0000000000
--- a/meta-oe/recipes-connectivity/libndp/libndp/0001-include-sys-select.h-for-fd_-definitions.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 94e9a082d76414f82794b0c9817d0c24e3868275 Mon Sep 17 00:00:00 2001
-From: Kylie McClain <somasis@exherbo.org>
-Date: Sat, 21 May 2016 21:24:36 -0400
-Subject: [PATCH] ndptool: Fix compilation on musl libc
-
-FD_ZERO, fd_set, etc are defined within sys/select.h on musl.
-
-Signed-off-by: Kylie McClain <somasis@exherbo.org>
-Signed-off-by: Jiri Pirko <jiri@mellanox.com>
----
- utils/ndptool.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/utils/ndptool.c b/utils/ndptool.c
-index 1d96f4c..96479fa 100644
---- a/utils/ndptool.c
-+++ b/utils/ndptool.c
-@@ -28,6 +28,7 @@
- #include <arpa/inet.h>
- #include <errno.h>
- #include <ndp.h>
-+#include <sys/select.h>
-
- enum verbosity_level {
- VERB1,
diff --git a/meta-oe/recipes-connectivity/libndp/libndp/0001-libndp-Fix-signature-of-sendto-API.patch b/meta-oe/recipes-connectivity/libndp/libndp/0001-libndp-Fix-signature-of-sendto-API.patch
new file mode 100644
index 0000000000..f625416acf
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libndp/libndp/0001-libndp-Fix-signature-of-sendto-API.patch
@@ -0,0 +1,40 @@
+From 14e036b5daf6b72483a1a21054b5133acabceabe Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 17 May 2024 18:14:04 -0700
+Subject: [PATCH] libndp: Fix signature of sendto API
+
+This fixes build with musl/gcc-14
+
+| ../../git/libndp/libndp.c: In function 'mysendto6':
+| ../../git/libndp/libndp.c:212:50: error: passing argument 5 of 'sendto' from incompatible pointer type [-Wincompatible-pointer-types]
+| 212 | ret = sendto(sockfd, buf, buflen, flags, &sin6, sizeof(sin6));
+| | ^~~~~
+| | |
+| | struct sockaddr_in6 *
+| In file included from ../../git/libndp/libndp.c:27:
+| /mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/libndp/1.8/recipe-sysroot/usr/include/sys/socket.h:396:49: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_in6 *'
+| 396 | ssize_t sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
+| | ^~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Submitted [Sent to maintainer]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libndp/libndp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libndp/libndp.c b/libndp/libndp.c
+index 6314717..056df0f 100644
+--- a/libndp/libndp.c
++++ b/libndp/libndp.c
+@@ -209,7 +209,7 @@ static int mysendto6(int sockfd, void *buf, size_t buflen, int flags,
+ memcpy(&sin6.sin6_addr, addr, sizeof(sin6.sin6_addr));
+ sin6.sin6_scope_id = ifindex;
+ resend:
+- ret = sendto(sockfd, buf, buflen, flags, &sin6, sizeof(sin6));
++ ret = sendto(sockfd, buf, buflen, flags, (struct sockaddr*)&sin6, sizeof(sin6));
+ if (ret == -1) {
+ switch(errno) {
+ case EINTR:
+--
+2.45.1
+
diff --git a/meta-oe/recipes-connectivity/libndp/libndp_1.6.bb b/meta-oe/recipes-connectivity/libndp/libndp_1.6.bb
deleted file mode 100644
index 5148798abe..0000000000
--- a/meta-oe/recipes-connectivity/libndp/libndp_1.6.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY = "Library for IPv6 Neighbor Discovery Protocol"
-HOMEPAGE = "http://libndp.org/"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "git://github.com/jpirko/libndp \
- file://0001-include-sys-select.h-for-fd_-definitions.patch \
- "
-# tag for v1.6
-SRCREV = "2f721c4ff519f38f46695a60d9f9d88f35bf3c1d"
-S = "${WORKDIR}/git"
-
-inherit autotools
diff --git a/meta-oe/recipes-connectivity/libndp/libndp_1.8.bb b/meta-oe/recipes-connectivity/libndp/libndp_1.8.bb
new file mode 100644
index 0000000000..80946317e4
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libndp/libndp_1.8.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Library for IPv6 Neighbor Discovery Protocol"
+HOMEPAGE = "http://libndp.org/"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://github.com/jpirko/libndp;branch=master;protocol=https \
+ file://0001-libndp-Fix-signature-of-sendto-API.patch \
+ "
+# tag for v1.8
+SRCREV = "009ce9cd9b950ffa1f4f94c9436027b936850d0c"
+S = "${WORKDIR}/git"
+
+inherit autotools
diff --git a/meta-oe/recipes-connectivity/libnet/libnet/0001-Support-musl-libc-remove-support-for-glibc-2.1.patch b/meta-oe/recipes-connectivity/libnet/libnet/0001-Support-musl-libc-remove-support-for-glibc-2.1.patch
deleted file mode 100644
index 98008dba94..0000000000
--- a/meta-oe/recipes-connectivity/libnet/libnet/0001-Support-musl-libc-remove-support-for-glibc-2.1.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From ffd7fab744a9ad2893169a8fb6244074604d5d0d Mon Sep 17 00:00:00 2001
-From: rofl0r <retnyg@gmx.net>
-Date: Tue, 12 Aug 2014 21:51:39 +0200
-Subject: [PATCH] Support musl libc, remove support for glibc < 2.1
-
-Upstream-Status: Backport
-
-The workarounds for glibc < 2.1 (was released february 1999) break the
-build with musl libc.
-
-It is very unlikely that 2.0 or earlier is still in use, and if so,
-1) that's a big security hole
-2) code wouldnt compile anyway since noone tested build in the last decade
-3) user of it wouldn't expect anyway to get bleeding edge sw built on it,
- so he would just use the latest version that works for him.
-
-Closes #52
-
-Signed-off-by: rofl0r <retnyg@gmx.net>
-Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com>
----
- libnet/src/libnet_link_linux.c | 11 -----------
- 1 file changed, 11 deletions(-)
-
-diff --git a/src/libnet_link_linux.c b/src/libnet_link_linux.c
-index 054458d..3c6df3c 100644
---- a/src/libnet_link_linux.c
-+++ b/src/libnet_link_linux.c
-@@ -30,26 +30,15 @@
- #include <sys/time.h>
-
- #include <net/if.h>
--#if (__GLIBC__)
- #include <netinet/if_ether.h>
- #include <net/if_arp.h>
--#else
--#include <linux/if_arp.h>
--#include <linux/if_ether.h>
--#endif
-
- #if (HAVE_PACKET_SOCKET)
- #ifndef SOL_PACKET
- #define SOL_PACKET 263
- #endif /* SOL_PACKET */
--#if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1
- #include <netpacket/packet.h>
- #include <net/ethernet.h> /* the L2 protocols */
--#else
--#include <asm/types.h>
--#include <linux/if_packet.h>
--#include <linux/if_ether.h> /* The L2 protocols */
--#endif
- #endif /* HAVE_PACKET_SOCKET */
-
- #include "../include/libnet.h"
---
-1.9.1
-
diff --git a/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb b/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
deleted file mode 100644
index dfc2049604..0000000000
--- a/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "A packet dissection and creation library"
-# libnet at packetfactory.net is dead
-HOMEPAGE = "https://github.com/sam-github/libnet"
-SECTION = "libs"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://doc/COPYING;md5=3ec839e00408b484d33b472a86b7c266"
-DEPENDS = "libpcap"
-# There are major API changes beween libnet v1.0 and libnet v1.1
-PROVIDES = "libnet-1.2rc2"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/libnet-dev/${BPN}-${PV}.tar.gz \
- file://0001-Support-musl-libc-remove-support-for-glibc-2.1.patch \
- "
-
-SRC_URI[md5sum] = "f051e6e5bdecddb90f77c701c2ca1804"
-SRC_URI[sha256sum] = "72c380785ad44183005e654b47cc12485ee0228d7fa6b0a87109ff7614be4a63"
-
-S = "${WORKDIR}/${BPN}-${PV}"
-
-inherit autotools binconfig
-
diff --git a/meta-oe/recipes-connectivity/libnet/libnet_1.3.bb b/meta-oe/recipes-connectivity/libnet/libnet_1.3.bb
new file mode 100644
index 0000000000..b4648832f1
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libnet/libnet_1.3.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A packet dissection and creation library"
+HOMEPAGE = "https://github.com/libnet/libnet"
+
+SECTION = "libs"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=07f291bf6e78efa05cec668cf6a09acc"
+
+DEPENDS = "libpcap"
+
+SRC_URI = "git://github.com/libnet/libnet.git;protocol=https;branch=master"
+
+SRC_URI[sha256sum] = "1e9e9054d688b059bcbaf878d8c4fbf69bfc0c9386cd4e7779fbb53339050d2e"
+SRCREV = "deaebdfe2743e8a6f04d3c307d9272afeeecfade"
+
+S = "${WORKDIR}/git"
+
+inherit autotools binconfig multilib_script
+MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/libnet-config"
+
diff --git a/meta-oe/recipes-connectivity/libnfs/libnfs/0001-CMakeLists.txt-respect-CMAKE_INSTALL_LIBDIR-for-mult.patch b/meta-oe/recipes-connectivity/libnfs/libnfs/0001-CMakeLists.txt-respect-CMAKE_INSTALL_LIBDIR-for-mult.patch
new file mode 100644
index 0000000000..978f38d019
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libnfs/libnfs/0001-CMakeLists.txt-respect-CMAKE_INSTALL_LIBDIR-for-mult.patch
@@ -0,0 +1,61 @@
+From 95708ff427c12b58e53fab225a08c811ca358394 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 3 May 2023 22:27:10 +0200
+Subject: [PATCH] CMakeLists.txt: respect ${CMAKE_INSTALL_LIBDIR} for multilib
+
+* fixes:
+ ERROR: libnfs-5.0.2-r0 do_package: QA Issue: libnfs: Files/directories were installed but not shipped in any package:
+ /usr/lib/libnfs.so
+ /usr/lib/libnfs.so.11.1.0
+ /usr/lib/libnfs.so.5.0.2
+ /usr/lib/pkgconfig
+ /usr/lib/cmake
+ /usr/lib/pkgconfig/libnfs.pc
+ /usr/lib/cmake/libnfs
+ /usr/lib/cmake/libnfs/libnfs-config-version.cmake
+ /usr/lib/cmake/libnfs/libnfs-config.cmake
+ /usr/lib/cmake/libnfs/libnfs-config-noconfig.cmake
+ /usr/lib/cmake/libnfs/FindNFS.cmake
+ Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
+ libnfs: 11 installed and not shipped files. [installed-vs-shipped]
+
+ when libdir is /usr/lib64 with multilib
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Upstream-Status: Pending
+---
+ CMakeLists.txt | 6 +++---
+ lib/CMakeLists.txt | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5be774d..6b4fd25 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -7,11 +7,11 @@ project(libnfs
+ set(SOVERSION 11.2.0 CACHE STRING "" FORCE)
+
+ set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for binaries")
+-set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
++set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation directory for libraries")
+ set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
+ set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages")
+-set(INSTALL_PKGCONFIG_DIR "${INSTALL_LIB_DIR}/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
+-set(INSTALL_CMAKE_DIR "${INSTALL_LIB_DIR}/cmake/libnfs" CACHE PATH "Installation directory for cmake (.cmake) files")
++set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
++set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/cmake/libnfs" CACHE PATH "Installation directory for cmake (.cmake) files")
+
+ option(BUILD_SHARED_LIBS "Build shared libraries" ON)
+ option(ENABLE_TESTS "Build and run test programs" OFF)
+diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
+index 88ba7b8..5ff89dc 100644
+--- a/lib/CMakeLists.txt
++++ b/lib/CMakeLists.txt
+@@ -23,5 +23,5 @@ set_target_properties(nfs PROPERTIES
+
+ install(TARGETS nfs EXPORT libnfs
+ RUNTIME DESTINATION bin
+- ARCHIVE DESTINATION lib
+- LIBRARY DESTINATION lib)
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
diff --git a/meta-oe/recipes-connectivity/libnfs/libnfs/0001-cmake-Test-for-sys-uio.h.patch b/meta-oe/recipes-connectivity/libnfs/libnfs/0001-cmake-Test-for-sys-uio.h.patch
new file mode 100644
index 0000000000..de3ab82292
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libnfs/libnfs/0001-cmake-Test-for-sys-uio.h.patch
@@ -0,0 +1,44 @@
+From d0fa719d49f38777911a8e99717f2d4b30811080 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 12 Feb 2024 19:24:54 -0800
+Subject: [PATCH] cmake: Test for sys/uio.h
+
+writev() API is used in few places and it will need including sys/uio.h
+for getting the funciton signature
+
+Upstream-Status: Submitted [https://github.com/sahlberg/libnfs/pull/440]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ cmake/ConfigureChecks.cmake | 1 +
+ cmake/config.h.cmake | 3 +++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/cmake/ConfigureChecks.cmake b/cmake/ConfigureChecks.cmake
+index 0258fc8..c26a02d 100644
+--- a/cmake/ConfigureChecks.cmake
++++ b/cmake/ConfigureChecks.cmake
+@@ -22,6 +22,7 @@ check_include_file("sys/stat.h" HAVE_SYS_STAT_H)
+ check_include_file("sys/sysmacros.h" HAVE_SYS_SYSMACROS_H)
+ check_include_file("sys/time.h" HAVE_SYS_TIME_H)
+ check_include_file("sys/types.h" HAVE_SYS_TYPES_H)
++check_include_file("sys/uio.h" HAVE_SYS_UIO_H)
+ check_include_file("sys/vfs.h" HAVE_SYS_VFS_H)
+ check_include_file("unistd.h" HAVE_UNISTD_H)
+ check_include_file("utime.h" HAVE_UTIME_H)
+diff --git a/cmake/config.h.cmake b/cmake/config.h.cmake
+index 4016c6c..6263896 100644
+--- a/cmake/config.h.cmake
++++ b/cmake/config.h.cmake
+@@ -90,6 +90,9 @@
+ /* Define to 1 if you have the <sys/types.h> header file. */
+ #cmakedefine HAVE_SYS_TYPES_H
+
++/* Define to 1 if you have the <sys/uio.h> header file. */
++#cmakedefine HAVE_SYS_UIO_H
++
+ /* Define to 1 if you have the <sys/vfs.h> header file. */
+ #cmakedefine HAVE_SYS_VFS_H
+
+--
+2.43.1
+
diff --git a/meta-oe/recipes-connectivity/libnfs/libnfs_5.0.3.bb b/meta-oe/recipes-connectivity/libnfs/libnfs_5.0.3.bb
new file mode 100644
index 0000000000..a6eabc6095
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libnfs/libnfs_5.0.3.bb
@@ -0,0 +1,18 @@
+SUMMARY = "NFS client library"
+HOMEPAGE = "https://github.com/sahlberg/libnfs"
+LICENSE = "LGPL-2.1-only & BSD-2-Clause & GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=825301ba17efc9d188ee0abd4b924ada"
+
+SRC_URI = " \
+ git://github.com/sahlberg/libnfs.git;protocol=https;branch=master \
+ file://0001-CMakeLists.txt-respect-CMAKE_INSTALL_LIBDIR-for-mult.patch \
+ file://0001-cmake-Test-for-sys-uio.h.patch \
+"
+SRCREV = "4379837536d9eac537810dc7b13071136049b22a"
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+do_install:append() {
+ rm -f ${D}${libdir}/cmake/libnfs/libnfs-config.cmake
+}
diff --git a/meta-oe/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch b/meta-oe/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch
deleted file mode 100644
index 7a3429b9d0..0000000000
--- a/meta-oe/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 4cfb728804157e8f3c69e11ba4df449d8f76388f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 20 Oct 2016 04:42:26 +0000
-Subject: [PATCH] Detect clang
-
-Check for clang compiler since we need to disable
-unused-function warning for clang, at same time
-pass werror when checking for compiler options if
-werror is enabled so spurious options do not get
-enabled. Only the ones that are supported by given
-compiler are accepted.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
----
- m4/compiler-warnings.m4 | 29 +++++++++++++++++++++++++----
- 1 file changed, 25 insertions(+), 4 deletions(-)
-
-diff --git a/m4/compiler-warnings.m4 b/m4/compiler-warnings.m4
-index de4a8b0..e4ba718 100644
---- a/m4/compiler-warnings.m4
-+++ b/m4/compiler-warnings.m4
-@@ -2,10 +2,30 @@ AC_DEFUN([LIBQMI_COMPILER_WARNINGS],
- [AC_ARG_ENABLE(more-warnings,
- AS_HELP_STRING([--enable-more-warnings], [Possible values: no/yes/error]),
- set_more_warnings="$enableval",set_more_warnings=error)
-+
-+# Clang throws a lot of warnings when it does not understand a flag. Disable
-+# this warning for now so other warnings are visible.
-+AC_MSG_CHECKING([if compiling with clang])
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
-+#ifndef __clang__
-+ not clang
-+#endif
-+ ]])],
-+ [CLANG=yes],
-+ [CLANG=no]
-+)
-+AC_MSG_RESULT([$CLANG])
-+AS_IF([test "x$CLANG" = "xyes"], [CLANG_FLAGS=-Wno-error=unused-function])
-+CFLAGS="$CFLAGS $CLANG_FLAGS"
-+LDFLAGS="$LDFLAGS $CLANG_FLAGS"
-+
- AC_MSG_CHECKING(for more warnings)
- if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
- AC_MSG_RESULT(yes)
- CFLAGS="-Wall -std=gnu89 $CFLAGS"
-+ if test "x$set_more_warnings" = xerror; then
-+ WERROR="-Werror"
-+ fi
-
- for option in -Wmissing-declarations -Wmissing-prototypes \
- -Wdeclaration-after-statement -Wstrict-prototypes \
-@@ -17,22 +37,23 @@ if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
- -Wmissing-include-dirs -Waggregate-return \
- -Wformat-security -Wtype-limits; do
- SAVE_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS $option"
-+ CFLAGS="$CFLAGS $option $WERROR"
- AC_MSG_CHECKING([whether gcc understands $option])
- AC_TRY_COMPILE([], [],
- has_option=yes,
- has_option=no,)
- if test $has_option = no; then
- CFLAGS="$SAVE_CFLAGS"
-+ else
-+ CFLAGS="$SAVE_CFLAGS $option"
- fi
- AC_MSG_RESULT($has_option)
- unset has_option
- unset SAVE_CFLAGS
- done
-+ CFLAGS="$CFLAGS $WERROR"
- unset option
-- if test "x$set_more_warnings" = xerror; then
-- CFLAGS="$CFLAGS -Werror"
-- fi
-+ unset WERROR
- else
- AC_MSG_RESULT(no)
- fi
---
-1.9.1
-
diff --git a/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.0.bb b/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.0.bb
deleted file mode 100644
index 9301cbd5ee..0000000000
--- a/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "libqmi is a library for talking to WWAN devices by QMI protocol"
-DESCRIPTION = "libqmi is a glib-based library for talking to WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libqmi"
-LICENSE = "GPLv2 & LGPLv2.1"
-LIC_FILES_CHKSUM = " \
- file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
-"
-
-DEPENDS = "glib-2.0 libgudev libmbim glib-2.0-native"
-
-inherit autotools pkgconfig bash-completion
-
-SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
- file://0001-Detect-clang.patch \
- "
-SRC_URI[md5sum] = "797e365521df76b77b067e6317618b41"
-SRC_URI[sha256sum] = "21428cd3749c56246565123f707fee51238651a22c60bdc85ebce97388626eb4"
diff --git a/meta-oe/recipes-connectivity/libqmi/libqmi_1.34.0.bb b/meta-oe/recipes-connectivity/libqmi/libqmi_1.34.0.bb
new file mode 100644
index 0000000000..94164a0b5a
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libqmi/libqmi_1.34.0.bb
@@ -0,0 +1,28 @@
+SUMMARY = "libqmi is a library for talking to WWAN devices by QMI protocol"
+DESCRIPTION = "libqmi is a glib-based library for talking to WWAN modems and \
+ devices which speak the Qualcomm MSM Interface (QMI) protocol"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libqmi"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = " \
+ file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+"
+
+DEPENDS = "glib-2.0 glib-2.0-native"
+
+inherit meson pkgconfig bash-completion gobject-introspection upstream-version-is-even
+
+SRCREV = "3f07d6e5b4677558543b3b4484ea88ad92257e92"
+SRC_URI = "git://gitlab.freedesktop.org/mobile-broadband/libqmi.git;protocol=https;branch=qmi-1-34"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= "udev mbim"
+PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,libgudev"
+PACKAGECONFIG[mbim] = "-Dmbim_qmux=true,-Dmbim_qmux=false,libmbim"
+PACKAGECONFIG[qrtr] = "-Dqrtr=true,-Dqrtr=false,libqrtr-glib"
+
+EXTRA_OEMESON = " \
+ -Dgtk_doc=false \
+ -Dman=false \
+"
diff --git a/meta-oe/recipes-connectivity/libqrtr-glib/libqrtr-glib_git.bb b/meta-oe/recipes-connectivity/libqrtr-glib/libqrtr-glib_git.bb
new file mode 100644
index 0000000000..3549cac568
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libqrtr-glib/libqrtr-glib_git.bb
@@ -0,0 +1,21 @@
+SUMMARY = "library to use and manage the QRTR bus"
+DESCRIPTION = "libqrtr-glib is a glib-based library to use and manage the QRTR (Qualcomm IPC Router) bus"
+HOMEPAGE = "https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib"
+
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://LICENSES/LGPL-2.1-or-later.txt;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib.git;protocol=https;branch=qrtr-1-2"
+
+PV = "1.2.2+git"
+SRCREV = "8991f0e93713ebf4da48ae4f23940ead42f64c8c"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig gobject-introspection
+
+DEPENDS = "glib-2.0"
+
+EXTRA_OEMESON = " \
+ -Dgtk_doc=false \
+"
diff --git a/meta-oe/recipes-connectivity/libtorrent-rasterbar/libtorrent-rasterbar_2.0.10.bb b/meta-oe/recipes-connectivity/libtorrent-rasterbar/libtorrent-rasterbar_2.0.10.bb
new file mode 100644
index 0000000000..f2de1f468d
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libtorrent-rasterbar/libtorrent-rasterbar_2.0.10.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "libtorrent is a feature complete C++ bittorrent implementation \
+ focusing on efficiency and scalability."
+HOMEPAGE = "https://libtorrent.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8b6cb42d66e6b3c47a909c3ce678a7b"
+
+DEPENDS = "boost openssl"
+
+SRC_URI = "git://github.com/arvidn/libtorrent.git;branch=master;protocol=https \
+ git://github.com/arvidn/try_signal.git;branch=master;protocol=https;destsuffix=git/deps/try_signal;name=try_signal"
+
+SRCREV = "74bc93a37a5e31c78f0aa02037a68fb9ac5deb41"
+SRCREV_try_signal = "105cce59972f925a33aa6b1c3109e4cd3caf583d"
+SRCREV_FORMAT .= "_try_signal"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig python3targetconfig
+
+CVE_PRODUCT = "libtorrent"
+
+EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release"
+
+PACKAGECONFIG ??= "python3"
+PACKAGECONFIG[python3] = "-Dpython-bindings=ON,-Dpython-bindings=OFF,python3-distutils-extra-native"
+
+# Strip host paths from autogenerated files
+do_install:append() {
+ sed -i 's+${STAGING_LIBDIR}+${libdir}+g' ${D}${libdir}/pkgconfig/${BPN}.pc
+}
+
+PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-${BPN}', '', d)}"
+FILES:python3-${BPN} = "${PYTHON_SITEPACKAGES_DIR}/*"
diff --git a/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch b/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch
deleted file mode 100644
index 4d0979710c..0000000000
--- a/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From c9859a38a58996b8767a30e14febc03845f66f95 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 1 Jul 2017 13:10:53 -0700
-Subject: [PATCH] Define 64bit atomic helpers for ppc 32-bit
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/atomic64.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/atomic64.c b/src/atomic64.c
-index f841b39b..35c7c9d8 100644
---- a/src/atomic64.c
-+++ b/src/atomic64.c
-@@ -18,10 +18,10 @@
- #include <stdbool.h>
-
- /*
-- * only need these on MIPS, since it lacks hardware 64-bit atomics,
-+ * only need these on MIPS & PPC32, since it lacks hardware 64-bit atomics,
- * unlike x86 and ARM.
- */
--#if defined(__mips__) || defined(__mipsel__)
-+#if defined(__mips__) || defined(__mipsel__) || defined(__powerpc__)
-
- static void __spin_lock(volatile int *lock) {
- while (__sync_lock_test_and_set(lock, 1))
---
-2.13.2
-
diff --git a/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-implement-64bit-atomic-for-mips.patch b/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-implement-64bit-atomic-for-mips.patch
deleted file mode 100644
index 84e0772a79..0000000000
--- a/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-implement-64bit-atomic-for-mips.patch
+++ /dev/null
@@ -1,263 +0,0 @@
-From d7b6df5808e7bef5930b61a82e880699a9f9e208 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 29 Jun 2017 15:39:19 -0700
-Subject: [PATCH] implement 64bit atomic for mips
-
-GCC does not provide 64bit atomics for mips32
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/Makefile.am | 1 +
- src/atomic64.c | 228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 229 insertions(+)
- create mode 100644 src/atomic64.c
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 99aaace0..cbbbbee9 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -27,6 +27,7 @@ libtorrent_la_LIBADD = \
- utils/libsub_utils.la
-
- libtorrent_la_SOURCES = \
-+ atomic64.c \
- globals.cc \
- globals.h \
- manager.cc \
-diff --git a/src/atomic64.c b/src/atomic64.c
-new file mode 100644
-index 00000000..f841b39b
---- /dev/null
-+++ b/src/atomic64.c
-@@ -0,0 +1,228 @@
-+/*===----- atomic64.c - Support functions for 64-bit atomic operations.-----===
-+ *
-+ * The LLVM Compiler Infrastructure
-+ *
-+ * This file is dual licensed under the MIT and the University of Illinois Open
-+ * Source Licenses. See LICENSE.TXT for details.
-+ *
-+ *===-----------------------------------------------------------------------===
-+ *
-+ * atomic64.c defines a set of functions for performing atomic accesses on
-+ * 64-bit memory locations. It also implements spinlock synchronization
-+ * operations.
-+ *
-+ *===-----------------------------------------------------------------------===
-+ */
-+
-+#include <stdint.h>
-+#include <stdbool.h>
-+
-+/*
-+ * only need these on MIPS, since it lacks hardware 64-bit atomics,
-+ * unlike x86 and ARM.
-+ */
-+#if defined(__mips__) || defined(__mipsel__)
-+
-+static void __spin_lock(volatile int *lock) {
-+ while (__sync_lock_test_and_set(lock, 1))
-+ while (*lock) {}
-+}
-+
-+static void __spin_unlock(volatile int *lock) {
-+ __sync_lock_release(lock);
-+}
-+
-+/*
-+ * Make sure the lock is on its own cache line to prevent false sharing.
-+ * Put it inside a struct that is aligned and padded to the typical MIPS
-+ * cacheline which is 32 bytes.
-+ */
-+static struct {
-+ int lock;
-+ char pad[32 - sizeof(int)];
-+} __attribute__((aligned (32))) lock = { 0 };
-+
-+
-+uint64_t __sync_fetch_and_add_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = ret + val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_fetch_and_sub_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = ret - val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_fetch_and_and_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = ret & val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_fetch_and_or_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = ret | val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_fetch_and_xor_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = ret ^ val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_add_and_fetch_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr + val;
-+ *ptr = ret;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_sub_and_fetch_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr - val;
-+ *ptr = ret;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_and_and_fetch_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr & val;
-+ *ptr = ret;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_or_and_fetch_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr | val;
-+ *ptr = ret;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_xor_and_fetch_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr ^ val;
-+ *ptr = ret;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+bool __sync_bool_compare_and_swap_8(volatile uint64_t *ptr,
-+ uint64_t oldval, uint64_t newval) {
-+ bool ret = false;
-+
-+ __spin_lock(&lock.lock);
-+
-+ if (*ptr == oldval) {
-+ *ptr = newval;
-+ ret = true;
-+ }
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_val_compare_and_swap_8(volatile uint64_t *ptr,
-+ uint64_t oldval, uint64_t newval) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ if (ret == oldval)
-+ *ptr = newval;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_lock_test_and_set_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+void __sync_lock_release_8(volatile uint64_t *ptr) {
-+ __spin_lock(&lock.lock);
-+
-+ *ptr = 0;
-+
-+ __spin_unlock(&lock.lock);
-+}
-+
-+#endif
---
-2.13.2
-
diff --git a/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch b/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch
deleted file mode 100644
index 79d4f29fab..0000000000
--- a/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-Using AC_RUN_IFELSE prevent people from configuring package for
-cross-compiling. Don't run code while configuring package.
-
-Upstream-Status: Pending
-Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
-
-Index: libtorrent-0.13.3/scripts/checks.m4
-===================================================================
---- libtorrent-0.13.3.orig/scripts/checks.m4 2012-05-14 14:17:04.000000000 +0300
-+++ libtorrent-0.13.3/scripts/checks.m4 2013-02-10 15:28:37.414445524 +0200
-@@ -95,40 +95,6 @@
-
- AC_DEFUN([TORRENT_CHECK_KQUEUE_SOCKET_ONLY], [
- AC_MSG_CHECKING(whether kqueue supports pipes and ptys)
--
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
-- #include <fcntl.h>
-- #include <stdlib.h>
-- #include <unistd.h>
-- #include <sys/event.h>
-- #include <sys/time.h>
-- int main() {
-- struct kevent ev@<:@2@:>@, ev_out@<:@2@:>@;
-- struct timespec ts = { 0, 0 };
-- int pfd@<:@2@:>@, pty@<:@2@:>@, kfd, n;
-- char buffer@<:@9001@:>@;
-- if (pipe(pfd) == -1) return 1;
-- if (fcntl(pfd@<:@1@:>@, F_SETFL, O_NONBLOCK) == -1) return 2;
-- while ((n = write(pfd@<:@1@:>@, buffer, sizeof(buffer))) == sizeof(buffer));
-- if ((pty@<:@0@:>@=posix_openpt(O_RDWR | O_NOCTTY)) == -1) return 3;
-- if ((pty@<:@1@:>@=grantpt(pty@<:@0@:>@)) == -1) return 4;
-- EV_SET(ev+0, pfd@<:@1@:>@, EVFILT_WRITE, EV_ADD | EV_ENABLE, 0, 0, NULL);
-- EV_SET(ev+1, pty@<:@1@:>@, EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, NULL);
-- if ((kfd = kqueue()) == -1) return 5;
-- if ((n = kevent(kfd, ev, 2, NULL, 0, NULL)) == -1) return 6;
-- if (ev_out@<:@0@:>@.flags & EV_ERROR) return 7;
-- if (ev_out@<:@1@:>@.flags & EV_ERROR) return 8;
-- read(pfd@<:@0@:>@, buffer, sizeof(buffer));
-- if ((n = kevent(kfd, NULL, 0, ev_out, 2, &ts)) < 1) return 9;
-- return 0;
-- }
-- ])],
-- [
-- AC_MSG_RESULT(yes)
-- ], [
-- AC_DEFINE(KQUEUE_SOCKET_ONLY, 1, kqueue only supports sockets.)
-- AC_MSG_RESULT(no)
-- ])
- ])
-
- AC_DEFUN([TORRENT_WITH_KQUEUE], [
-Index: libtorrent-0.13.3/scripts/common.m4
-===================================================================
---- libtorrent-0.13.3.orig/scripts/common.m4 2012-05-14 14:17:04.000000000 +0300
-+++ libtorrent-0.13.3/scripts/common.m4 2013-02-10 15:27:55.874446741 +0200
-@@ -222,38 +222,10 @@
-
- AC_DEFUN([TORRENT_CHECK_EXECINFO], [
- AC_MSG_CHECKING(for execinfo.h)
--
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
-- #include <execinfo.h>
-- int main() { backtrace((void**)0, 0); backtrace_symbols((char**)0, 0); return 0;}
-- ])],
-- [
-- AC_MSG_RESULT(yes)
-- AC_DEFINE(USE_EXECINFO, 1, Use execinfo.h)
-- ], [
-- AC_MSG_RESULT(no)
-- ])
- ])
-
- AC_DEFUN([TORRENT_CHECK_ALIGNED], [
- AC_MSG_CHECKING(the byte alignment)
--
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
-- #include <inttypes.h>
-- int main() {
-- char buf@<:@8@:>@ = { 0, 0, 0, 0, 1, 0, 0, 0 };
-- int i;
-- for (i = 1; i < 4; ++i)
-- if (*(uint32_t*)(buf + i) == 0) return -1;
-- return 0;
-- }
-- ])],
-- [
-- AC_MSG_RESULT(none needed)
-- ], [
-- AC_DEFINE(USE_ALIGNED, 1, Require byte alignment)
-- AC_MSG_RESULT(required)
-- ])
- ])
-
-
diff --git a/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb b/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
index 92e65289a9..c7a0562db4 100644
--- a/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
+++ b/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
@@ -1,26 +1,33 @@
DESCRIPTION = "libTorrent is a BitTorrent library written in C++ for *nix, \
with a focus on high performance and good code."
HOMEPAGE = "http://libtorrent.rakshasa.no/"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
DEPENDS = "zlib libsigc++-2.0 openssl cppunit"
-SRC_URI = "git://github.com/rakshasa/libtorrent \
- file://don-t-run-code-while-configuring-package.patch \
- file://0001-implement-64bit-atomic-for-mips.patch \
- file://0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch \
- "
-SRCREV = "c167c5a9e0bcf0df23ae5efd91396aae0e37eb87"
+PV = "0.13.8+git"
-PV = "0.13.6+git${SRCPV}"
+SRC_URI = "git://github.com/rakshasa/libtorrent;branch=master;protocol=https"
+SRCREV = "e60f222241319aaae482789517ad00ae9344bd13"
+
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+CVE_STATUS[CVE-2009-1760] = "backported-patch: patched in our product"
S = "${WORKDIR}/git"
+CVE_PRODUCT = ""
+
+PACKAGECONFIG ??= "instrumentation aligned"
+
+PACKAGECONFIG:remove:mipsarch = "instrumentation"
+PACKAGECONFIG:remove:powerpc = "instrumentation"
+PACKAGECONFIG:remove:riscv32 = "instrumentation"
+
+PACKAGECONFIG[instrumentation] = "--enable-instrumentation,--disable-instrumentation,"
+PACKAGECONFIG[aligned] = "--enable-aligned,--disable-aligned,"
+
inherit autotools pkgconfig
EXTRA_OECONF = "--with-zlib=${STAGING_EXECPREFIXDIR}"
-
-do_configure_prepend() {
- (cd ${S}; ./autogen.sh; cd -)
-}
diff --git a/meta-oe/recipes-connectivity/libuv/libuv_1.11.0.bb b/meta-oe/recipes-connectivity/libuv/libuv_1.11.0.bb
deleted file mode 100644
index 0a5846bb8b..0000000000
--- a/meta-oe/recipes-connectivity/libuv/libuv_1.11.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "A multi-platform support library with a focus on asynchronous I/O"
-HOMEPAGE = "https://github.com/libuv/libuv"
-BUGTRACKER = "https://github.com/libuv/libuv/issues"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=bb5ea0d651f4c3519327171906045775"
-
-SRC_URI = "https://github.com/libuv/${BPN}/archive/v${PV}.tar.gz;downloadfilename=${BP}.tar.gz"
-
-SRC_URI[md5sum] = "15550a9f5f45f7f32ae2d9bb0a21a2a7"
-SRC_URI[sha256sum] = "6ec7eec6ecc24b1a8ffedebedb2fe9313fffb5410de89aaf784dd01080411c7a"
-
-inherit autotools
-
-do_configure() {
- ${S}/autogen.sh || bbnote "${PN} failed to autogen.sh"
- oe_runconf
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb b/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb
deleted file mode 100644
index 9354799871..0000000000
--- a/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Canonical libwebsockets.org websocket library"
-HOMEPAGE = "https://libwebsockets.org/"
-LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e3393a657830d4a118c5a6ed35ba53d0"
-
-DEPENDS = "zlib"
-
-SRC_URI = "https://github.com/warmcat/libwebsockets/archive/v${PV}.tar.gz"
-
-SRC_URI[md5sum] = "4df3be57dee43aeebd54a3ed56568f50"
-SRC_URI[sha256sum] = "bcc96aaa609daae4d3f7ab1ee480126709ef4f6a8bf9c85de40aae48e38cce66"
-
-inherit cmake pkgconfig
-
-PACKAGECONFIG ?= "libuv client server http2 ssl"
-PACKAGECONFIG[client] = "-DLWS_WITHOUT_CLIENT=OFF,-DLWS_WITHOUT_CLIENT=ON,"
-PACKAGECONFIG[http2] = "-DLWS_WITH_HTTP2=ON,-DLWS_WITH_HTTP2=OFF,"
-PACKAGECONFIG[ipv6] = "-DLWS_IPV6=ON,-DLWS_IPV6=OFF,"
-PACKAGECONFIG[libev] = "-DLWS_WITH_LIBEV=ON,-DLWS_WITH_LIBEV=OFF,libev"
-PACKAGECONFIG[libuv] = "-DLWS_WITH_LIBUV=ON,-DLWS_WITH_LIBUV=OFF,libuv"
-PACKAGECONFIG[server] = "-DLWS_WITHOUT_SERVER=OFF,-DLWS_WITHOUT_SERVER=ON,"
-PACKAGECONFIG[ssl] = "-DLWS_WITH_SSL=ON,-DLWS_WITH_SSL=OFF,openssl"
-PACKAGECONFIG[testapps] = "-DLWS_WITHOUT_TESTAPPS=OFF,-DLWS_WITHOUT_TESTAPPS=ON,"
-
-PACKAGES =+ "${PN}-testapps"
-
-FILES_${PN}-dev += "${libdir}/cmake"
-FILES_${PN}-testapps += "${datadir}/libwebsockets-test-server/*"
diff --git a/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.3.3.bb b/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.3.3.bb
new file mode 100644
index 0000000000..3170d37f5b
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.3.3.bb
@@ -0,0 +1,67 @@
+SUMMARY = "Canonical libwebsockets.org websocket library"
+HOMEPAGE = "https://libwebsockets.org/"
+LICENSE = "MIT & Zlib & BSD-3-Clause & Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=382bfdf329e774859fd401eaf850d29b"
+
+DEPENDS = "zlib"
+DEPENDS:append:class-native = " libcap-native"
+
+S = "${WORKDIR}/git"
+SRCREV = "4415e84c095857629863804e941b9e1c2e9347ef"
+SRC_URI = "git://github.com/warmcat/libwebsockets.git;protocol=https;branch=v4.3-stable"
+
+UPSTREAM_CHECK_URI = "https://github.com/warmcat/${BPN}/releases"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+inherit cmake pkgconfig
+
+PACKAGECONFIG ?= "libuv client server http2 ssl ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
+PACKAGECONFIG[client] = "-DLWS_WITHOUT_CLIENT=OFF,-DLWS_WITHOUT_CLIENT=ON,"
+PACKAGECONFIG[http2] = "-DLWS_WITH_HTTP2=ON,-DLWS_WITH_HTTP2=OFF,"
+PACKAGECONFIG[ipv6] = "-DLWS_IPV6=ON,-DLWS_IPV6=OFF,"
+PACKAGECONFIG[libevent] = "-DLWS_WITH_LIBEVENT=ON,-DLWS_WITH_LIBEVENT=OFF,libevent"
+PACKAGECONFIG[libev] = "-DLWS_WITH_LIBEV=ON,-DLWS_WITH_LIBEV=OFF,libev"
+PACKAGECONFIG[libuv] = "-DLWS_WITH_LIBUV=ON,-DLWS_WITH_LIBUV=OFF,libuv"
+PACKAGECONFIG[server] = "-DLWS_WITHOUT_SERVER=OFF,-DLWS_WITHOUT_SERVER=ON,"
+PACKAGECONFIG[ssl] = "-DLWS_WITH_SSL=ON,-DLWS_WITH_SSL=OFF,openssl"
+PACKAGECONFIG[static] = "-DLWS_WITH_STATIC=ON,-DLWS_WITH_STATIC=OFF -DLWS_LINK_TESTAPPS_DYNAMIC=ON,"
+PACKAGECONFIG[systemd] = "-DLWS_WITH_SDEVENT=ON,-DLWS_WITH_SDEVENT=OFF,systemd"
+
+python __anonymous() {
+ if bb.utils.contains('PACKAGECONFIG', 'systemd', True, False, d) and not bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d):
+ bb.fatal("PACKAGECONFIG contains systemd but DISTRO_FEATURES doesn't")
+}
+
+EXTRA_OECMAKE += " \
+ -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
+"
+
+do_install:append() {
+ sed -i -e 's|${STAGING_LIBDIR}/libcrypto.so|crypto|g' ${D}${libdir}/cmake/libwebsockets/LibwebsocketsTargets.cmake
+ sed -i -e 's|${STAGING_LIBDIR}/libssl.so|ssl|g' ${D}${libdir}/cmake/libwebsockets/LibwebsocketsTargets.cmake
+ sed -i -e 's|${STAGING_LIBDIR}/libuv.so|uv|g' ${D}${libdir}/cmake/libwebsockets/LibwebsocketsTargets.cmake
+ sed -i -e 's|${STAGING_INCDIR}||g' ${D}${libdir}/cmake/libwebsockets/LibwebsocketsTargets.cmake \
+ ${D}${libdir}/cmake/libwebsockets/libwebsockets-config.cmake
+ sed -i -e 's|${STAGING_LIBDIR}/||g' ${D}${libdir}/cmake/libwebsockets/LibwebsocketsTargets.cmake \
+ ${D}${libdir}/cmake/libwebsockets/libwebsockets-config.cmake
+}
+
+PACKAGES =+ "${PN}-testapps ${PN}-evlib-event ${PN}-evlib-uv ${PN}-evlib-ev ${PN}-evlib-sd"
+
+FILES:${PN}-testapps += "${datadir}/libwebsockets-test-server/* ${bindir}/libwebsockets-test-*"
+FILES:${PN}-evlib-event += "${libdir}/libwebsockets-evlib_event.so"
+FILES:${PN}-evlib-uv += "${libdir}/libwebsockets-evlib_uv.so"
+FILES:${PN}-evlib-ev += "${libdir}/libwebsockets-evlib_ev.so"
+FILES:${PN}-evlib-sd += "${libdir}/libwebsockets-evlib_sd.so"
+
+RDEPENDS:${PN} += " ${@bb.utils.contains('PACKAGECONFIG', 'libevent', '${PN}-evlib-event', '', d)}"
+RDEPENDS:${PN} += " ${@bb.utils.contains('PACKAGECONFIG', 'libuv', '${PN}-evlib-uv', '', d)}"
+RDEPENDS:${PN} += " ${@bb.utils.contains('PACKAGECONFIG', 'libev', '${PN}-evlib-ev', '', d)}"
+RDEPENDS:${PN} += " ${@bb.utils.contains('PACKAGECONFIG', 'systemd', '${PN}-evlib-sd', '', d)}"
+
+RDEPENDS:${PN}-dev += " ${@bb.utils.contains('PACKAGECONFIG', 'static', '${PN}-staticdev', '', d)}"
+
+# Avoid absolute paths to end up in the sysroot.
+SSTATE_SCAN_FILES += "*.cmake"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp/0001-include-string.h-for-strncpy.patch b/meta-oe/recipes-connectivity/linuxptp/linuxptp/0001-include-string.h-for-strncpy.patch
new file mode 100644
index 0000000000..b117dcf670
--- /dev/null
+++ b/meta-oe/recipes-connectivity/linuxptp/linuxptp/0001-include-string.h-for-strncpy.patch
@@ -0,0 +1,26 @@
+From 6120cee594c543d17ae015bc601012debcf57177 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Oct 2023 10:43:42 +0100
+Subject: [PATCH] include string.h for strncpy()
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport [master: 6120cee594c543d17ae015bc601012debcf57177]
+---
+ interface.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/interface.c b/interface.c
+index 29229ad6f53d..9a83c36933e7 100644
+--- a/interface.c
++++ b/interface.c
+@@ -5,6 +5,7 @@
+ * @note SPDX-License-Identifier: GPL-2.0+
+ */
+ #include <stdlib.h>
++#include <string.h>
+ #include "interface.h"
+
+ struct interface {
+--
+2.34.1
+
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp/0002-linuxptp-Use-CC-in-incdefs.sh.patch b/meta-oe/recipes-connectivity/linuxptp/linuxptp/0002-linuxptp-Use-CC-in-incdefs.sh.patch
new file mode 100644
index 0000000000..3cf3a63b94
--- /dev/null
+++ b/meta-oe/recipes-connectivity/linuxptp/linuxptp/0002-linuxptp-Use-CC-in-incdefs.sh.patch
@@ -0,0 +1,48 @@
+From cffb4807ac0b9ff7aea2aa4f3842985b5363d184 Mon Sep 17 00:00:00 2001
+From: Luca Fancellu <luca.fancellu@arm.com>
+Date: Mon, 23 Oct 2023 10:43:43 +0100
+Subject: [PATCH] linuxptp: Use ${CC} in incdefs.sh
+
+The Makefile is defining CC and incdefs.sh is using
+${CROSS_COMPILE}cpp inside it, allowing both to use different
+compilers depending on what the user pass during make invocation
+as CC.
+
+Align them using ${CC} also inside incdefs.sh.
+
+Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
+Upstream-Status: Backport [master: cffb4807ac0b9ff7aea2aa4f3842985b5363d184]
+---
+ incdefs.sh | 2 +-
+ makefile | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/incdefs.sh b/incdefs.sh
+index a9e94f777f6b..391e63c7fac6 100755
+--- a/incdefs.sh
++++ b/incdefs.sh
+@@ -27,7 +27,7 @@ user_flags()
+ printf " -D_GNU_SOURCE"
+
+ # Get list of directories searched for header files.
+- dirs=$(echo "" | ${CROSS_COMPILE}cpp -Wp,-v 2>&1 >/dev/null | grep ^" /")
++ dirs=$(${CC} -E -Wp,-v -xc /dev/null 2>&1 >/dev/null | grep ^" /")
+
+ # Look for clock_adjtime().
+ for d in $dirs; do
+diff --git a/makefile b/makefile
+index 3e3b8b35fc96..7fc5f6fb8fa8 100644
+--- a/makefile
++++ b/makefile
+@@ -39,7 +39,7 @@ OBJECTS = $(OBJ) hwstamp_ctl.o nsm.o phc2sys.o phc_ctl.o pmc.o pmc_agent.o \
+ SRC = $(OBJECTS:.o=.c)
+ DEPEND = $(OBJECTS:.o=.d)
+ srcdir := $(dir $(lastword $(MAKEFILE_LIST)))
+-incdefs := $(shell $(srcdir)/incdefs.sh)
++incdefs := $(shell CC="$(CC)" $(srcdir)/incdefs.sh)
+ version := $(shell $(srcdir)/version.sh $(srcdir))
+ VPATH = $(srcdir)
+
+--
+2.34.1
+
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp/0003-include-missing-time.h-for-time_t.patch b/meta-oe/recipes-connectivity/linuxptp/linuxptp/0003-include-missing-time.h-for-time_t.patch
deleted file mode 100644
index 96163f6542..0000000000
--- a/meta-oe/recipes-connectivity/linuxptp/linuxptp/0003-include-missing-time.h-for-time_t.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From b36cafdbcbe2193f5b669e703c608e19e23f80a3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 15 Jul 2017 11:16:42 -0700
-Subject: [PATCH 3/4] include missing time.h for time_t
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- util.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/util.h b/util.h
-index e912f19..3c634c1 100644
---- a/util.h
-+++ b/util.h
-@@ -22,7 +22,7 @@
-
- #include "ddt.h"
- #include "ether.h"
--
-+#include <time.h>
- /**
- * Table of human readable strings, one for each port state.
- */
---
-2.13.3
-
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp/0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch b/meta-oe/recipes-connectivity/linuxptp/linuxptp/0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch
deleted file mode 100644
index e699275148..0000000000
--- a/meta-oe/recipes-connectivity/linuxptp/linuxptp/0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3cd28aa771934d9165ff0d7e19932cde65de3e52 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 15 Jul 2017 11:16:57 -0700
-Subject: [PATCH 4/4] Adjust include header sequence to avoid duplicate
- definitions on musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- raw.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/raw.c b/raw.c
-index f51c829..494ea7f 100644
---- a/raw.c
-+++ b/raw.c
-@@ -18,8 +18,6 @@
- */
- #include <errno.h>
- #include <fcntl.h>
--#include <linux/filter.h>
--#include <linux/if_ether.h>
- #include <net/ethernet.h>
- #include <net/if.h>
- #include <netinet/in.h>
-@@ -32,6 +30,8 @@
- #include <sys/types.h>
- #include <unistd.h>
-
-+#include <linux/filter.h>
-+#include <linux/if_ether.h>
- #include <linux/errqueue.h>
- #include <linux/net_tstamp.h>
- #include <linux/sockios.h>
---
-2.13.3
-
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp/build-Allow-CC-and-prefix-to-be-overriden.patch b/meta-oe/recipes-connectivity/linuxptp/linuxptp/build-Allow-CC-and-prefix-to-be-overriden.patch
deleted file mode 100644
index b1d96ae5a7..0000000000
--- a/meta-oe/recipes-connectivity/linuxptp/linuxptp/build-Allow-CC-and-prefix-to-be-overriden.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From af485c638c61fa883212ea424e676fbf90bee594 Mon Sep 17 00:00:00 2001
-From: Otavio Salvador <otavio@ossystems.com.br>
-Date: Tue, 1 Jul 2014 17:37:31 -0300
-Subject: [PATCH] build: Allow CC and prefix to be overriden
-
-Upstream-Status: Pending
-
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
----
- makefile | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/makefile b/makefile
-index 22e7d0d..809cc8f 100644
---- a/makefile
-+++ b/makefile
-@@ -18,7 +18,7 @@
- KBUILD_OUTPUT =
-
- DEBUG =
--CC = $(CROSS_COMPILE)gcc
-+CC ?= $(CROSS_COMPILE)gcc
- VER = -DVER=$(version)
- CFLAGS = -Wall $(VER) $(incdefs) $(DEBUG) $(EXTRA_CFLAGS)
- LDLIBS = -lm -lrt $(EXTRA_LDFLAGS)
-@@ -35,7 +35,7 @@ incdefs := $(shell $(srcdir)/incdefs.sh)
- version := $(shell $(srcdir)/version.sh $(srcdir))
- VPATH = $(srcdir)
-
--prefix = /usr/local
-+prefix ?= /usr/local
- sbindir = $(prefix)/sbin
- mandir = $(prefix)/man
- man8dir = $(mandir)/man8
---
-1.7.10.4
-
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp/no-incdefs-using-host-headers.patch b/meta-oe/recipes-connectivity/linuxptp/linuxptp/no-incdefs-using-host-headers.patch
deleted file mode 100644
index 02dbb23465..0000000000
--- a/meta-oe/recipes-connectivity/linuxptp/linuxptp/no-incdefs-using-host-headers.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 8a4cad5e2f2cbb6a34bdc6e877fe499502b8c4c8 Mon Sep 17 00:00:00 2001
-From: Marcel Ziswiler <marcel.ziswiler@toradex.com>
-Date: Fri, 23 Dec 2016 18:12:29 +0100
-Subject: [PATCH] linuxptp: no incdefs using host headers
-
-Avoid using host headers via incdefs.sh shell script.
-
-Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
----
-
- makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/makefile b/makefile
-index 8cdbd15..85174b8 100644
---- a/makefile
-+++ b/makefile
-@@ -33,7 +33,7 @@ OBJECTS = $(OBJ) hwstamp_ctl.o phc2sys.o phc_ctl.o pmc.o pmc_common.o \
- SRC = $(OBJECTS:.o=.c)
- DEPEND = $(OBJECTS:.o=.d)
- srcdir := $(dir $(lastword $(MAKEFILE_LIST)))
--incdefs := $(shell $(srcdir)/incdefs.sh)
-+#incdefs := $(shell $(srcdir)/incdefs.sh)
- version := $(shell $(srcdir)/version.sh $(srcdir))
- VPATH = $(srcdir)
-
---
-2.9.3
-
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp/systemd/phc2sys@.service.in b/meta-oe/recipes-connectivity/linuxptp/linuxptp/systemd/phc2sys@.service.in
new file mode 100644
index 0000000000..f66dd2d010
--- /dev/null
+++ b/meta-oe/recipes-connectivity/linuxptp/linuxptp/systemd/phc2sys@.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Synchronize system clock or PTP hardware clock (PHC)
+Documentation=man:phc2sys
+Requires=ptp4l.service
+After=ptp4l.service
+Before=time-sync.target
+
+[Service]
+Type=simple
+ExecStart=@SBINDIR@/phc2sys -w -s %I
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp/systemd/ptp4l@.service.in b/meta-oe/recipes-connectivity/linuxptp/linuxptp/systemd/ptp4l@.service.in
new file mode 100644
index 0000000000..2502181412
--- /dev/null
+++ b/meta-oe/recipes-connectivity/linuxptp/linuxptp/systemd/ptp4l@.service.in
@@ -0,0 +1,11 @@
+[Unit]
+Description=Precision Time Protocol (PTP) service for %I
+Documentation=man:ptp4l
+After=sys-subsystem-net-devices-%i.device
+
+[Service]
+Type=simple
+ExecStart=@SBINDIR@/ptp4l -f @SYSCONFDIR@/linuxptp/ptp4l.conf -i %I
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.8.bb b/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.8.bb
deleted file mode 100644
index c7b8b2933c..0000000000
--- a/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.8.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-DESCRIPTION = "Precision Time Protocol (PTP) according to IEEE standard 1588 for Linux"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "http://sourceforge.net/projects/linuxptp/files/v${PV}/linuxptp-${PV}.tgz \
- file://build-Allow-CC-and-prefix-to-be-overriden.patch \
- file://no-incdefs-using-host-headers.patch \
- file://0003-include-missing-time.h-for-time_t.patch \
- file://0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch \
- "
-
-SRC_URI[md5sum] = "5688cdfe57932273e1dbf35b3b97b9a0"
-SRC_URI[sha256sum] = "fa8e00f6ec73cefa7bb313dce7f60dfe5eb9e2bde3353594e9ac18edc93e5165"
-
-EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} \
- EXTRA_CFLAGS='-D_GNU_SOURCE -DHAVE_CLOCK_ADJTIME -DHAVE_POSIX_SPAWN -DHAVE_ONESTEP_SYNC ${CFLAGS}'"
-
-do_install () {
- install -d ${D}/${bindir}
- install -p ${S}/ptp4l ${D}/${bindir}
- install -p ${S}/pmc ${D}/${bindir}
- install -p ${S}/phc2sys ${D}/${bindir}
- install -p ${S}/hwstamp_ctl ${D}/${bindir}
-}
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp_4.1.bb b/meta-oe/recipes-connectivity/linuxptp/linuxptp_4.1.bb
new file mode 100644
index 0000000000..d1a73841a1
--- /dev/null
+++ b/meta-oe/recipes-connectivity/linuxptp/linuxptp_4.1.bb
@@ -0,0 +1,62 @@
+SUMMARY = "linuxptp package for linux"
+DESCRIPTION = "Precision Time Protocol (PTP) according to IEEE standard 1588 \
+for Linux"
+HOMEPAGE = "http://linuxptp.sourceforge.net/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+LINUXPTP_SRC_URI = "http://sourceforge.net/projects/linuxptp"
+
+SRC_URI = "${LINUXPTP_SRC_URI}/files/v4.1/linuxptp-${PV}.tgz \
+ file://0001-include-string.h-for-strncpy.patch \
+ file://0002-linuxptp-Use-CC-in-incdefs.sh.patch \
+ file://systemd/phc2sys@.service.in \
+ file://systemd/ptp4l@.service.in \
+ "
+
+SRC_URI[md5sum] = "1db8699fc155965341759be5e5aad938"
+SRC_URI[sha256sum] = "e1743d44f8208897e30895da3579e670ff919b914feb4b5a949f3e421ddde535"
+
+inherit systemd
+
+UPSTREAM_CHECK_URI = "${LINUXPTP_SRC_URI}/files/"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
+
+EXTRA_OEMAKE = "CC='${CC}' EXTRA_CFLAGS='${CFLAGS}' mandir='${mandir}' \
+ sbindir='${sbindir}'"
+
+export KBUILD_OUTPUT="${RECIPE_SYSROOT}"
+
+LINUXPTP_SYSTEMD_SERVICES = "phc2sys@.service ptp4l@.service"
+
+do_install() {
+ oe_runmake install DESTDIR=${D}
+
+ # Install example configs from source tree
+ install -d ${D}${docdir}/${PN}
+ cp -R --no-dereference --preserve=mode,links ${S}/configs \
+ ${D}${docdir}/${PN}
+
+ # Install default configuration files
+ install -d ${D}/${sysconfdir}/linuxptp/
+ install -m 644 ${S}/configs/default.cfg \
+ ${D}${sysconfdir}/linuxptp/ptp4l.conf
+
+ # Install systemd services
+ install -d ${D}/${systemd_unitdir}/system/
+ for service in ${LINUXPTP_SYSTEMD_SERVICES}; do
+ sed -i -e 's,@SBINDIR@,${sbindir},g' \
+ ${UNPACKDIR}/systemd/$service.in
+ sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+ ${UNPACKDIR}/systemd/$service.in
+ install -m 644 ${UNPACKDIR}/systemd/$service.in \
+ ${D}/${systemd_unitdir}/system/$service
+ done
+}
+
+SYSTEMD_SERVICE:${PN} = "${LINUXPTP_SYSTEMD_SERVICES}"
+SYSTEMD_AUTO_ENABLE:${PN} = "disable"
+
+PACKAGES =+ "${PN}-configs"
+
+FILES:${PN}-configs += "${docdir}"
diff --git a/meta-oe/recipes-connectivity/lirc/lirc/lirc.tmpfiles b/meta-oe/recipes-connectivity/lirc/lirc/lirc.tmpfiles
deleted file mode 100644
index 0b80e2e479..0000000000
--- a/meta-oe/recipes-connectivity/lirc/lirc/lirc.tmpfiles
+++ /dev/null
@@ -1 +0,0 @@
-d /run/lirc 0755 root root -
diff --git a/meta-oe/recipes-connectivity/lirc/lirc/lirc_options.conf b/meta-oe/recipes-connectivity/lirc/lirc/lirc_options.conf
deleted file mode 100644
index d8ddedd8fa..0000000000
--- a/meta-oe/recipes-connectivity/lirc/lirc/lirc_options.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-# These are the default options to lircd, if installed as
-# /etc/lirc/lirc_options.conf. See the lircd(8) and lircmd(8)
-# manpages for info on the different options.
-
-[lircd]
-nodaemon = False
-permission = 666
-driver = default
-device = /dev/lirc0
-output = /var/run/lirc/lircd
-pidfile = /var/run/lirc/lircd.pid
-plugindir = /usr/lib/lirc/plugins
-allow-simulate = No
-repeat-max = 600
-#listen = [address:]port
-#connect = host[:port]
-#debug = 5
-#uinput = ...
-#release = ...
-#logfile = ...
-
-[lircmd]
-uinput = False
-nodeamon = False
diff --git a/meta-oe/recipes-connectivity/lirc/lirc/lircd.conf b/meta-oe/recipes-connectivity/lirc/lirc/lircd.conf
deleted file mode 100644
index 29b03c72a0..0000000000
--- a/meta-oe/recipes-connectivity/lirc/lirc/lircd.conf
+++ /dev/null
@@ -1,315 +0,0 @@
-# contributed by angelo castello
-#
-# note: this config file has been deduced starting from the
-# raw codes provided to run mode2 utility.
-#
-# brand: futarque
-
-begin remote
- name futarque
- bits 8
- flags SPACE_ENC|CONST_LENGTH
- eps 30
- aeps 100
-
- header 8048 3898
- one 555 1436
- zero 555 439
- gap 113123
- ptrail 555
- pre_data_bits 8
- pre_data 0x54
- pre 570 3890
-
- begin codes
- MUTE 0x70
- EXIT 0xA8
- POWER 0xF0
- CHANNEL_UP 0x50
- CHANNEL_DOWN 0xD0
- VOLUME_UP 0x30
- VOLUME_DOWN 0xB0
- OK 0x98
- FAVORITES 0x04
- TEXT 0x68
- EPG 0xC8
- BACK 0x48
- MENU 0x88
- 1 0x00
- 2 0x80
- 3 0x40
- 4 0xC0
- 5 0x20
- 6 0xA0
- 7 0x60
- 8 0xE0
- 9 0x10
- 0 0x90
- PAUSE 0x84
- INFO 0x38
- RED 0xE8
- GREEN 0x08
- YELLOW 0x28
- BLUE 0x78
- UP 0xD8
- DOWN 0xB8
- REWIND 0x44
- FASTFORWARD 0x24
- PLAYPAUSE 0xC4
- STOP 0x64
- RECORD 0xA4
- AUDIO 0xE4
- TAPE 0x14
- DVD 0x94
- CAPITAL_A 0xF8
- CAPITAL_B 0x54
- end codes
-
-end remote
-
-# brand: STM PVR-1
-
-begin remote
- name stm_pvr_1
- bits 16
- flags SPACE_ENC|CONST_LENGTH
- eps 30
- aeps 150
-
- header 9000 4500
- one 572 1700
- zero 572 572
- ptrail 572
- repeat 9000 2200
- pre_data_bits 16
- pre_data 0xFE
- gap 100000
-
- begin codes
- POWER 0x00ff
- FAVORITES 0x7887
- MUTE 0x28d7
- 0 0x708F
- 1 0xc03f
- 2 0x40bf
- 3 0x807f
- 4 0xe01f
- 5 0x609f
- 6 0xa05f
- 7 0xd02f
- 8 0x50af
- 9 0x906f
- INFO 0x38c7
- SUBTITLE 0xe817
- MENU 0x9867
- EXIT 0x20df
- EPG 0xa857
- BACK 0x48b7
- CURSOR_UP 0x58a7
- CURSOR_DOWN 0xd827
- CURSOR_LEFT 0x8877
- CURSOR_RIGHT 0xb04f
- OK 0x10ef
- VOLUME_UP 0x22dd
- VOLUME_DOWN 0x8a75
- CHANNEL_UP 0x12ed
- CHANNEL_DOWN 0x4ab5
- TEXT 0xf00f
- RADIO 0x926d
- ZOOM 0x6897
- AUDIO 0x08f7
- RED 0x42bd
- GREEN 0xa25d
- YELLOW 0x827d
- BLUE 0x02fd
- CUSTOM0 0x52ad
- CUSTOM1 0x30cf
- PLAY 0x629d
- PAUSE 0xb24d
- PREVIOUS 0xc837
- NEXT 0xf807
- REWIND 0x32cd
- FASTFORWARD 0x0af5
- AUX 0x7a85
- CUSTOM3 0xb847
- PIP 0x3ac5
- SWAP 0xba45
- end codes
-
-end remote
-
-# brand: STM DTV-2
-
-begin remote
-
- name stm_dtv_2
- flags SHIFT_ENC|CONST_LENGTH
- bits 13
- aeps 150
-
- one 850 850
- zero 850 850
- plead 850
- gap 67800
- toggle_bit 2
-
- begin codes
- POWER 0x100C
- FAVORITES 0x1015
- AUX 0x1038
- 1 0x1001
- 2 0x1002
- 3 0x1003
- 4 0x1004
- 5 0x1005
- 6 0x1006
- 7 0x1007
- 8 0x1008
- 9 0x1009
- PERIOD 0x1024
- 0 0x103E
- BACK 0x1023
- MENU 0x1016
- INFO 0x100F
- EPG 0x101E
- EXIT 0x1018
- CURSOR_UP 0x1017
- CURSOR_DOWN 0x101D
- CURSOR_LEFT 0x1019
- CURSOR_RIGHT 0x101B
- OK 0x101A
- VOLUME_UP 0x1010
- VOLUME_DOWN 0x1011
- CHANNEL_UP 0x1020
- CHANNEL_DOWN 0x1021
- TEXT 0x102E
- SUBTITLE 0x103C
- FREEZE 0x1014
- ZOOM 0x102B
- RED 0x1028
- GREEN 0x102A
- YELLOW 0x102F
- BLUE 0x1030
- CUSTOM10 0x1022
- INTERNET 0x1027
- CUSTOM11 0x102C
- AUDIO 0x1025
- RECORD 0x102D
- PLAYPAUSE 0x1029
- STOP 0x1026
- CUSTOM1 0x101C
- MUTE 0x100d
- CUSTOM12 0x101F
- PIP 0x100B
- SWAP 0x100E
- end codes
-
-end remote
-
-# brand: Comcast
-# model no. of remote control: XR2
-# 32 bits for the pre-date (should be value 0x170F443E)
-# width between pre_bits and data: 12900 microseconds
-#
-# 24 bits for the data (key code)
-# To get key REPEAT, XOR 0x088 with KEY value
-# There are 8 post bits (both should be zero)
-#
-# Gap between keys: 8100 microseconds
-begin remote
-
- name Xfinity-XR2
- bits 24
- flags XMP
- eps 20
- aeps 300
-
- one 0 137
- zero 250 710
- ptrail 250
- pre_data_bits 32
- pre_data 0x170F443E
- post_data_bits 8
- post_data 0x0
- pre 250 12921
- gap 81698
- toggle_bit_mask 0x0
-
- begin codes
- 1 0x1E0001
- 1_repeat 0x168001
- 2 0x1D0002
- 2_repeat 0x158002
- 3 0x1C0003
- 3_repeat 0x148003
- 4 0x1B0004
- 4_repeat 0x138004
- 5 0x1A0005
- 5_repeat 0x128005
- 6 0x190006
- 6_repeat 0x118006
- 7 0x180007
- 7_repeat 0x108007
- 8 0x170008
- 8_repeat 0x1F8008
- 9 0x160009
- 9_repeat 0x1E8009
- 0 0x1F0000
- 0_repeat 0x178000
- OK 0x180025
- OK_repeat 0x108025
- POWER 0x10000F
- POWER_repeat 0x18800F
- UP 0x1C0021
- UP_repeat 0x148021
- DOWN 0x1B0022
- DOWN_repeat 0x138022
- LEFT 0x1A0023
- LEFT_repeat 0x128023
- RIGHT 0x190024
- RIGHT_repeat 0x118024
- REWIND 0x190033
- REWIND_repeat 0x118033
- PLAY 0x1C0030
- PLAY_repeat 0x148030
- FASTFORWARD 0x180034
- FASTFORWARD_repeat 0x108034
- RECORD 0x170035
- RECORD_repeat 0x1F8035
- REPLAY 0x170053
- REPLAY_repeat 0x1F8053
- A 0x190060
- A_repeat 0x118060
- B 0x180061
- B_repeat 0x108061
- C 0x170062
- C_repeat 0x1F8062
- D 0x160063
- D_repeat 0x1E8063
- PAGE_UP 0x150028
- PAGE_UP_repeat 0x1D8028
- PAGE_DOWN 0x140029
- PAGE_DOWN_repeat 0x1C8029
- GUIDE 0x160027
- GUIDE_repeat 0x1E8027
- MENU 0x1D0020
- MENU_repeat 0x158020
- EXIT 0x13002A
- EXIT_repeat 0x1B802A
- INFO 0x170026
- INFO_repeat 0x1F8026
- LAST 0x190051
- LAST_repeat 0x118051
- VOLUME_UP 0x15000A
- VOLUME_UP_repeat 0x1D800A
- CHANNEL_UP 0x12000D
- CHANNEL_UP_repeat 0x1A800D
- VOLUME_DOWN 0x14000B
- VOLUME_DOWN_repeat 0x1C800B
- CHANNEL_DOWN 0x11000E
- CHANNEL_DOWN_repeat 0x19800E
- MUTE 0x13000C
- MUTE_repeat 0x1B800D
- end codes
-
-end remote
diff --git a/meta-oe/recipes-connectivity/lirc/lirc/lircd.init b/meta-oe/recipes-connectivity/lirc/lirc/lircd.init
deleted file mode 100644
index 8b124af6f2..0000000000
--- a/meta-oe/recipes-connectivity/lirc/lirc/lircd.init
+++ /dev/null
@@ -1,40 +0,0 @@
-#! /bin/sh
-#
-# This is an init script for Familiar
-# Copy it to /etc/init.d/lircd and type
-# > update-rc.d lircd defaults 20
-#
-
-
-test -f /usr/sbin/lircd || exit 0
-test -f /etc/lircd.conf || exit 0
-
-case "$1" in
- start)
- echo -n "Starting lirc daemon: lircd"
- start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- --device=/dev/lirc0
- echo "."
- ;;
- stop)
- echo -n "Stopping lirc daemon: lircd"
- start-stop-daemon --stop --quiet --exec /usr/sbin/lircd
- echo "."
- ;;
- reload|force-reload)
- start-stop-daemon --stop --quiet --signal 1 --exec /usr/sbin/lircd
- ;;
- restart)
- echo -n "Stopping lirc daemon: lircd"
- start-stop-daemon --stop --quiet --exec /usr/sbin/lircd
- sleep 1
- echo -n "Starting lirc daemon: lircd"
- start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- --device=/dev/lirc0
- echo "."
- ;;
- *)
- echo "Usage: /etc/init.d/lircd {start|stop|reload|restart|force-reload}"
- exit 1
-esac
-
-exit 0
-
diff --git a/meta-oe/recipes-connectivity/lirc/lirc/lircd.service b/meta-oe/recipes-connectivity/lirc/lirc/lircd.service
deleted file mode 100644
index c8661368bb..0000000000
--- a/meta-oe/recipes-connectivity/lirc/lirc/lircd.service
+++ /dev/null
@@ -1,20 +0,0 @@
-[Unit]
-Description=LIRC Infrared Signal Decoder
-After=network.target
-
-[Service]
-Type=forking
-EnvironmentFile=/etc/lirc/lircd.conf
-PIDFile=/run/lirc/lircd.pid
-ExecStartPre=/bin/mkdir -p /run/lirc
-ExecStartPre=/bin/rm -f /dev/lircd
-ExecStartPre=/bin/rm -f /run/lirc/lircd
-ExecStartPre=/bin/ln -s /run/lirc/lircd /dev/lircd
-
-ExecStart=/usr/sbin/lircd --pidfile=/run/lirc/lircd.pid --device=/dev/lirc0
-
-ExecStopPost=/bin/rm -f /dev/lircd
-ExecStopPost=/bin/rm -fR /run/lirc
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-oe/recipes-connectivity/lirc/lirc/lircexec.init b/meta-oe/recipes-connectivity/lirc/lirc/lircexec.init
deleted file mode 100644
index 3a8c1a306e..0000000000
--- a/meta-oe/recipes-connectivity/lirc/lirc/lircexec.init
+++ /dev/null
@@ -1,37 +0,0 @@
-#! /bin/sh
-#
-# This is an init script for Familiar
-# Copy it to /etc/init.d/lircexecd and type
-# > update-rc.d lircexecd defaults 20
-# It must be started after lircd (and it does alphabetically :-)
-# irexec reads /etc/lircrc by default
-
-
-test -f /usr/bin/irexec || exit 0
-test -f /etc/lircrc || exit 0
-
-case "$1" in
- start)
- echo -n "Starting lircexec daemon: irexec"
- start-stop-daemon --start --quiet --exec /usr/bin/irexec -- --daemon
- echo "."
- ;;
- stop)
- echo -n "Stopping lircexec daemon: irexec"
- start-stop-daemon --stop --quiet --exec /usr/bin/irexec
- echo "."
- ;;
- restart|force-restart)
- echo -n "Stopping lircexec daemon: irexec"
- start-stop-daemon --stop --quiet --exec /usr/bin/irexec
- sleep 1
- echo -n "Starting lircexec daemon: irexec"
- start-stop-daemon --start --quiet --exec /usr/bin/irexec -- --daemon
- echo "."
- ;;
- *)
- echo "Usage: /etc/init.d/lircexec {start|stop|reload|restart|force-restart}"
- exit 1
-esac
-
-exit 0
diff --git a/meta-oe/recipes-connectivity/lirc/lirc/pollfd.patch b/meta-oe/recipes-connectivity/lirc/lirc/pollfd.patch
deleted file mode 100644
index 4feea80346..0000000000
--- a/meta-oe/recipes-connectivity/lirc/lirc/pollfd.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-Index: lirc-0.9.4d/daemons/lircrcd.cpp
-===================================================================
---- lirc-0.9.4d.orig/daemons/lircrcd.cpp
-+++ lirc-0.9.4d/daemons/lircrcd.cpp
-@@ -29,10 +29,12 @@
- #include <sys/un.h>
- #include <sys/stat.h>
- #include <sys/types.h>
-+#include <poll.h>
- #include <syslog.h>
-
- #include "lirc_client.h"
- #include "lirc/lirc_log.h"
-+#include "lirc/curl_poll.h"
-
- #define MAX_CLIENTS 100
- #define WHITE_SPACE " \t"
-Index: lirc-0.9.4d/lib/curl_poll.c
-===================================================================
---- lirc-0.9.4d.orig/lib/curl_poll.c
-+++ lirc-0.9.4d/lib/curl_poll.c
-@@ -36,6 +36,7 @@
- #include <stdlib.h>
- #include <sys/time.h>
- #include <sys/types.h>
-+#include <sys/poll.h>
-
- #include "lirc_log.h"
- #include "curl_poll.h"
-@@ -67,7 +68,7 @@ static const logchannel_t logchannel = L
-
- #ifdef HAVE_POLL_FINE
-
--int curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
-+int curl_poll(struct pollfd *ufds, unsigned int nfds, int timeout_ms)
- {
- return poll(ufds, nfds, timeout_ms);
- }
-@@ -112,7 +113,7 @@ static int verify_sock(int s)
- }
-
-
--int curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms)
-+int curl_poll(struct pollfd *ufds, unsigned int nfds, int timeout_ms)
- {
- struct timeval pending_tv;
- struct timeval* ptimeout;
-Index: lirc-0.9.4d/lib/curl_poll.h
-===================================================================
---- lirc-0.9.4d.orig/lib/curl_poll.h
-+++ lirc-0.9.4d/lib/curl_poll.h
-@@ -1,5 +1,5 @@
--#ifndef _POLL_H
--#define _POLL_H
-+#ifndef _LIB_CURL_POLL_H
-+#define _LIB_CURL_POLL_H
- /***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
-@@ -29,13 +29,9 @@
- extern "C" {
- #endif
-
--#ifdef HAVE_SYS_POLL_H
--#include <sys/poll.h>
--#else
- #include <poll.h>
--#endif
-
--int curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms);
-+int curl_poll(struct pollfd *ufds, unsigned int nfds, int timeout_ms);
-
- #ifdef __cplusplus
- }
-Index: lirc-0.9.4d/lib/lirc/curl_poll.h
-===================================================================
---- lirc-0.9.4d.orig/lib/lirc/curl_poll.h
-+++ lirc-0.9.4d/lib/lirc/curl_poll.h
-@@ -1,5 +1,5 @@
--#ifndef _POLL_H
--#define _POLL_H
-+#ifndef _LIRC_CURL_POLL_H
-+#define _LIRC_CURL_POLL_H
- /***************************************************************************
- * _ _ ____ _
- * Project ___| | | | _ \| |
-@@ -29,13 +29,9 @@
- extern "C" {
- #endif
-
--#ifdef HAVE_SYS_POLL_H
--#include <sys/poll.h>
--#else
- #include <poll.h>
--#endif
-
--int curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms);
-+int curl_poll(struct pollfd *ufds, unsigned int nfds, int timeout_ms);
-
- #ifdef __cplusplus
- }
diff --git a/meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb b/meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb
deleted file mode 100644
index b13163debb..0000000000
--- a/meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb
+++ /dev/null
@@ -1,87 +0,0 @@
-DESCRIPTION = "LIRC is a package that allows you to decode and send infra-red signals of many commonly used remote controls."
-DESCRIPTION_append_lirc = " This package contains the lirc daemon, libraries and tools."
-DESCRIPTION_append_lirc-exec = " This package contains a daemon that runs programs on IR signals."
-DESCRIPTION_append_lirc-remotes = " This package contains some config files for remotes."
-DESCRIPTION_append_lirc-nslu2example = " This package contains a working config for RC5 remotes and a modified NSLU2."
-HOMEPAGE = "http://www.lirc.org"
-SECTION = "console/network"
-LICENSE = "GPLv2"
-DEPENDS = "libxslt-native alsa-lib libftdi libusb1 libusb-compat jack portaudio-v19"
-
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "http://prdownloads.sourceforge.net/lirc/lirc-${PV}.tar.bz2 \
- file://pollfd.patch \
- file://lircd.service \
- file://lircd.init \
- file://lircexec.init \
- file://lircd.conf \
- file://lirc_options.conf \
- file://lirc.tmpfiles \
-"
-SRC_URI[md5sum] = "0d11679cbdd94a5a6da00a8e7231b4bf"
-SRC_URI[sha256sum] = "c68f18c35b489b865c0a741d119b136e8702191538cd3551b977a7af6c4e41ab"
-
-SYSTEMD_PACKAGES = "lirc lirc-exec"
-SYSTEMD_SERVICE_${PN} = "lircd.service lircmd.service lircd-setup.service lircd-uinput.service"
-SYSTEMD_SERVICE_${PN}-exec = "irexec.service"
-SYSTEMD_AUTO_ENABLE_lirc = "enable"
-SYSTEMD_AUTO_ENABLE_lirc-exec = "enable"
-
-inherit autotools pkgconfig systemd python3native
-
-PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd"
-PACKAGECONFIG[x11] = "--with-x,--with-x=no,libx11,"
-
-PACKAGECONFIG ?= " \
- ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' systemd', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11', ' x11', '', d)} \
-"
-CACHED_CONFIGUREVARS = "HAVE_WORKING_POLL=yes"
-
-#EXTRA_OEMAKE = 'SUBDIRS="lib daemons tools"'
-do_install_append() {
- install -m 0755 -d ${D}${sysconfdir}
- install -m 0755 -d ${D}${sysconfdir}/lirc
- install -m 0755 -d ${D}${systemd_unitdir}/system
- install -m 0755 -d ${D}${libdir}/tmpfiles.d
- install -m 0644 ${WORKDIR}/lircd.conf ${D}${sysconfdir}/lirc/
- install -m 0644 ${WORKDIR}/lirc_options.conf ${D}${sysconfdir}/lirc/
- install -m 0644 ${WORKDIR}/lircd.service ${D}${systemd_unitdir}/system/
- install -m 0755 ${WORKDIR}/lircexec.init ${D}${systemd_unitdir}/system/
- install -m 0644 ${WORKDIR}/lirc.tmpfiles ${D}${libdir}/tmpfiles.d/lirc.conf
- rm -rf ${D}${libdir}/lirc/plugins/*.la
- rmdir ${D}/var/run/lirc ${D}/var/run
- chown -R root:root ${D}${datadir}/lirc/contrib
-}
-
-PACKAGES =+ "${PN}-contrib ${PN}-exec ${PN}-plugins ${PN}-python"
-
-RDEPENDS_${PN} = "bash"
-RDEPENDS_${PN}-exec = "${PN}"
-RDEPENDS_${PN}-python = "python"
-
-RRECOMMENDS_lirc = "${PN}-exec ${PN}-plugins"
-
-FILES_${PN}-plugins = "${libdir}/lirc/plugins/*.so ${datadir}/lirc/configs"
-FILES_${PN}-contrib = "${datadir}/lirc/contrib"
-FILES_${PN}-exec = "${bindir}/irexec ${sysconfdir}/lircexec ${systemd_unitdir}/system/irexec.service"
-FILES_${PN} += "${systemd_unitdir}/system/lircexec.init"
-FILES_${PN} += "${systemd_unitdir}/system/lircd.service"
-FILES_${PN} += "${systemd_unitdir}/system/lircd.socket"
-FILES_${PN} += "${libdir}/tmpfiles.d/lirc.conf"
-FILES_${PN}-dbg += "${libdir}/lirc/plugins/.debug"
-FILES_${PN}-python += "${libdir}/python*/site-packages"
-
-
-INITSCRIPT_PACKAGES = "lirc lirc-exec"
-INITSCRIPT_NAME_lirc-exec = "lircexec"
-INITSCRIPT_PARAMS_lirc-exec = "defaults 21"
-
-# this is for distributions that don't use udev
-pkg_postinst_${PN}_append() {
- if [ ! -c $D/dev/lirc -a ! -f /sbin/udevd ]; then mknod $D/dev/lirc c 61 0; fi
-}
-
-SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
diff --git a/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/04-use-pkg-config-for-gnutls.patch b/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/04-use-pkg-config-for-gnutls.patch
deleted file mode 100644
index 20f388e890..0000000000
--- a/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/04-use-pkg-config-for-gnutls.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Description: use pkg-config to detect gnutls
-Debian: http://bugs.debian.org/529835
-Origin: http://groups.google.com/group/loudmouth-dev/browse_thread/thread/3f78255837048daf#
-
---- a/configure.ac.orig 2009-08-16 20:29:36.000000000 +0200
-+++ b/configure.ac 2009-08-16 20:30:43.000000000 +0200
-@@ -146,10 +146,12 @@ AC_ARG_WITH(openssl-libs,
- enable_ssl=no
- if test "x$ac_ssl" = "xgnutls"; then
- dnl Look for GnuTLS
-- AM_PATH_LM_LIBGNUTLS($GNUTLS_REQUIRED, have_libgnutls=yes, have_libgnutls=no)
-- if test "x$have_libgnutls" = "xyes"; then
-- CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
-- LIBS="$LIBS $LIBGNUTLS_LIBS"
-+ PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_REQUIRED, have_gnutls=yes, have_gnutls=no)
-+ if test "x$have_gnutls" = "xyes"; then
-+ AC_SUBST(ASYNCNS_CFLAGS)
-+ AC_SUBST(ASYNCNS_LIBS)
-+ CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
-+ LIBS="$LIBS $GNUTLS_LIBS"
- AC_DEFINE(HAVE_GNUTLS, 1, [whether to use GnuTSL support.])
- enable_ssl=GnuTLS
- else
diff --git a/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/glib-2.32.patch b/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/glib-2.32.patch
deleted file mode 100644
index b6c9422e8c..0000000000
--- a/meta-oe/recipes-connectivity/loudmouth/loudmouth-1.4.3/glib-2.32.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- loudmouth-1.4.3.orig/loudmouth/lm-error.c 2008-10-29 21:48:15.000000000 +0100
-+++ loudmouth-1.4.3/loudmouth/lm-error.c 2012-05-06 08:27:07.455739440 +0200
-@@ -19,7 +19,6 @@
- */
-
- #include <config.h>
--#include <glib/gerror.h>
- #include "lm-error.h"
-
- /**
diff --git a/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb b/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb
deleted file mode 100644
index 4f1430b9ec..0000000000
--- a/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.4.3.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "Loudmouth is a lightweight and easy-to-use C library for programming with the Jabber protocol."
-HOMEPAGE = "http://www.loudmouth-project.org/"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c4f38aef94828f6b280e00d1173be689"
-
-DEPENDS = "glib-2.0 libcheck openssl libidn"
-
-inherit gnomebase gtk-doc
-
-PR = "r2"
-
-SRC_URI += "file://04-use-pkg-config-for-gnutls.patch \
- file://glib-2.32.patch"
-
-SRC_URI[archive.md5sum] = "55339ca42494690c3942ee1465a96937"
-SRC_URI[archive.sha256sum] = "95a93f5d009b71ea8193d994aa11f311bc330a3efe1b7cd74dc48f11c7f929e3"
-GNOME_COMPRESS_TYPE="bz2"
-
-EXTRA_OECONF = "--with-ssl=openssl"
-
diff --git a/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.5.4.bb b/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.5.4.bb
new file mode 100644
index 0000000000..f67c46b428
--- /dev/null
+++ b/meta-oe/recipes-connectivity/loudmouth/loudmouth_1.5.4.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Loudmouth is a lightweight and easy-to-use C library for programming with the Jabber protocol."
+HOMEPAGE = "http://www.loudmouth-project.org/"
+
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "glib-2.0 libcheck openssl libidn"
+
+GNOMEBASEBUILDCLASS = "autotools"
+
+inherit gnomebase gtk-doc
+
+SRC_URI = "https://github.com/mcabber/${BPN}/releases/download/${PV}/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "31cbc91c1fddcc5346b3373b8fb45594e9ea9cc7fe36d0595e8912c47ad94d0d"
+
+EXTRA_OECONF = "--with-ssl=openssl --with-compile-warnings=no"
diff --git a/meta-oe/recipes-connectivity/modemmanager/modemmanager/enum-conversion.patch b/meta-oe/recipes-connectivity/modemmanager/modemmanager/enum-conversion.patch
deleted file mode 100644
index a3fb0f3eb8..0000000000
--- a/meta-oe/recipes-connectivity/modemmanager/modemmanager/enum-conversion.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Fixes errors found bt Clang
-
-| ../../ModemManager-1.6.4/src/mm-bearer-qmi.c:774:50: error: implicit conversion from enumeration type 'MMBearerStatus' to different enumeration type 'MMBearerConnectionStatus' [-Werror,-Wenum-conversion]
-| MMBearerConnectionStatus bearer_status = mm_base_bearer_get_status (MM_BASE_BEARER (self));
-| ~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-| 1 error generated.
-
-
-Index: ModemManager-1.6.4/src/mm-bearer-qmi.c
-===================================================================
---- ModemManager-1.6.4.orig/src/mm-bearer-qmi.c
-+++ ModemManager-1.6.4/src/mm-bearer-qmi.c
-@@ -771,7 +771,7 @@ packet_service_status_indication_cb (Qmi
- &connection_status,
- NULL,
- NULL)) {
-- MMBearerConnectionStatus bearer_status = mm_base_bearer_get_status (MM_BASE_BEARER (self));
-+ MMBearerConnectionStatus bearer_status = (MMBearerConnectionStatus)mm_base_bearer_get_status (MM_BASE_BEARER (self));
-
- if (connection_status == QMI_WDS_CONNECTION_STATUS_DISCONNECTED &&
- bearer_status != MM_BEARER_CONNECTION_STATUS_DISCONNECTED &&
diff --git a/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.22.0.bb b/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.22.0.bb
new file mode 100644
index 0000000000..6b4336eb80
--- /dev/null
+++ b/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.22.0.bb
@@ -0,0 +1,55 @@
+SUMMARY = "ModemManager is a daemon controlling broadband devices/connections"
+DESCRIPTION = "ModemManager is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ModemManager/"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = " \
+ file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+"
+
+inherit gnomebase gettext systemd gobject-introspection bash-completion
+
+DEPENDS = "glib-2.0 libgudev libxslt-native dbus"
+
+SRCREV = "03f786ce66360d67c669f4f122f8aa458e6f01ea"
+SRC_URI = "git://gitlab.freedesktop.org/mobile-broadband/ModemManager.git;protocol=https;branch=mm-1-22"
+
+S = "${WORKDIR}/git"
+
+# strict, permissive
+MODEMMANAGER_POLKIT_TYPE ??= "permissive"
+
+PACKAGECONFIG ??= "vala mbim qmi \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd polkit', d)} \
+"
+
+PACKAGECONFIG[at] = "-Dat_command_via_dbus=true"
+PACKAGECONFIG[systemd] = " \
+ -Dsystemdsystemunitdir=${systemd_unitdir}/system/, \
+ -Dsystemdsystemunitdir=no -Dsystemd_journal=false -Dsystemd_suspend_resume=false \
+"
+PACKAGECONFIG[polkit] = "-Dpolkit=${MODEMMANAGER_POLKIT_TYPE},-Dpolkit=no,polkit"
+# Support WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol.
+PACKAGECONFIG[mbim] = "-Dmbim=true,-Dmbim=false -Dplugin_dell=disabled -Dplugin_foxconn=disabled,libmbim"
+# Support WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol.
+PACKAGECONFIG[qmi] = "-Dqmi=true,-Dqmi=false,libqmi"
+PACKAGECONFIG[qrtr] = "-Dqrtr=true,-Dqrtr=false,libqrtr-glib"
+PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false"
+
+inherit upstream-version-is-even ${@bb.utils.contains('PACKAGECONFIG', 'vala', 'vala', '', d)}
+
+EXTRA_OEMESON = " \
+ -Dudevdir=${nonarch_base_libdir}/udev \
+ -Dqrtr=false \
+"
+
+FILES:${PN} += " \
+ ${datadir}/icons \
+ ${datadir}/polkit-1 \
+ ${datadir}/dbus-1 \
+ ${datadir}/ModemManager \
+ ${libdir}/ModemManager \
+ ${systemd_unitdir}/system \
+"
+
+SYSTEMD_SERVICE:${PN} = "ModemManager.service"
diff --git a/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.6.4.bb b/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.6.4.bb
deleted file mode 100644
index e60cd4b741..0000000000
--- a/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.6.4.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "ModemManager is a daemon controlling broadband devices/connections"
-DESCRIPTION = "ModemManager is a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ModemManager/"
-LICENSE = "GPL-2.0 & LGPL-2.1"
-LIC_FILES_CHKSUM = " \
- file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
-"
-
-inherit gnomebase gettext systemd vala gobject-introspection bash-completion
-
-DEPENDS = "glib-2.0 libgudev dbus-glib intltool-native"
-
-SRC_URI = "http://www.freedesktop.org/software/ModemManager/ModemManager-${PV}.tar.xz \
- file://enum-conversion.patch \
-"
-SRC_URI[md5sum] = "06488186c7dd53f8104183b86f7a1568"
-SRC_URI[sha256sum] = "cdd5b4cb1e4d7643643a28ccbfc4bb354bfa9cb89a77ea160ebdf7926171c668"
-
-S = "${WORKDIR}/ModemManager-${PV}"
-
-PACKAGECONFIG ??= "mbim qmi polkit \
- ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
-"
-
-PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,,"
-PACKAGECONFIG[polkit] = "--with-polkit=yes,--with-polkit=no,polkit"
-# Support WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol.
-PACKAGECONFIG[mbim] = "--with-mbim,--enable-mbim=no,libmbim"
-# Support WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol.
-PACKAGECONFIG[qmi] = "--with-qmi,--without-qmi,libqmi"
-
-FILES_${PN} += " \
- ${datadir}/icons \
- ${datadir}/polkit-1 \
- ${datadir}/dbus-1 \
- ${libdir}/ModemManager \
- ${systemd_unitdir}/system \
-"
-
-FILES_${PN}-dev += " \
- ${libdir}/ModemManager/*.la \
-"
-
-FILES_${PN}-staticdev += " \
- ${libdir}/ModemManager/*.a \
-"
-
-FILES_${PN}-dbg += "${libdir}/ModemManager/.debug"
-
-SYSTEMD_SERVICE_${PN} = "ModemManager.service"
diff --git a/meta-oe/recipes-connectivity/mosh/mosh/0001-configure.ac-add-support-of-protobuf-4.22.x.patch b/meta-oe/recipes-connectivity/mosh/mosh/0001-configure.ac-add-support-of-protobuf-4.22.x.patch
new file mode 100644
index 0000000000..088124391c
--- /dev/null
+++ b/meta-oe/recipes-connectivity/mosh/mosh/0001-configure.ac-add-support-of-protobuf-4.22.x.patch
@@ -0,0 +1,63 @@
+From d9a1a6aac5a3b270449d09ec0d2a556807ab9287 Mon Sep 17 00:00:00 2001
+From: Xiangyu Chen <xiangyu.chen@windriver.com>
+Date: Wed, 29 Mar 2023 13:53:44 +0800
+Subject: [PATCH] configure.ac: add support of protobuf 4.22.x
+
+the protobuf 4.22x is using c++14 as default, this caused the mosh cannot compile anymore and report following error:
+
+....
+/usr/include/google/protobuf/port_def.inc:200:15: error: static assertion failed: Protobuf only supports C++14 and newer.
+| 200 | static_assert(PROTOBUF_CPLUSPLUS_MIN(201402L), "Protobuf only supports C++14 and newer.");
+| | ^~~~~~~~~~~~~~~~~~~~~~
+....
+
+Upstream-Status: Pending [https://github.com/mobile-shell/mosh/pull/1266]
+
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ configure.ac | 8 ++++++++
+ src/frontend/Makefile.am | 2 +-
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index ee70c7b..5457009 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -26,6 +26,10 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AS_IF([pkg-config --atleast-version 3.6.0 protobuf],
+ [AX_CXX_COMPILE_STDCXX([11])])
+
++# If current protobuf 4.22+ update the requires to C++14.
++AS_IF([pkg-config --atleast-version 4.22.0 protobuf],
++ [AX_CXX_COMPILE_STDCXX([14])])
++
+ WARNING_CXXFLAGS=""
+ PICKY_CXXFLAGS=""
+ DISTCHECK_CXXFLAGS=""
+@@ -311,6 +315,10 @@ AC_CHECK_FUNCS(m4_normalize([
+ pledge
+ ]))
+
++AS_IF([pkg-config --atleast-version 4.22.0 protobuf],
++ [PKG_CHECK_MODULES([ABSL_LOG_INTERNAL_CHECK_OP], [absl_log_internal_check_op],[],
++ [AC_MSG_ERROR([Missing abseil-cpp library.])])])
++
+ # Start by trying to find the needed tinfo parts by pkg-config
+ PKG_CHECK_MODULES([TINFO], [tinfo],
+ [AC_DEFINE([HAVE_CURSES_H], [1], [Define to 1 if <curses.h> is present])],
+diff --git a/src/frontend/Makefile.am b/src/frontend/Makefile.am
+index 1aa83fd..399ecd6 100644
+--- a/src/frontend/Makefile.am
++++ b/src/frontend/Makefile.am
+@@ -1,7 +1,7 @@
+ AM_CPPFLAGS = -I$(srcdir)/../statesync -I$(srcdir)/../terminal -I$(srcdir)/../network -I$(srcdir)/../crypto -I../protobufs -I$(srcdir)/../util $(TINFO_CFLAGS) $(protobuf_CFLAGS) $(CRYPTO_CFLAGS)
+ AM_CXXFLAGS = $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CFLAGS) $(MISC_CXXFLAGS) $(CODE_COVERAGE_CXXFLAGS)
+ AM_LDFLAGS = $(HARDEN_LDFLAGS) $(CODE_COVERAGE_LIBS)
+-LDADD = ../crypto/libmoshcrypto.a ../network/libmoshnetwork.a ../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a ../util/libmoshutil.a ../protobufs/libmoshprotos.a -lm $(TINFO_LIBS) $(protobuf_LIBS) $(CRYPTO_LIBS)
++LDADD = ../crypto/libmoshcrypto.a ../network/libmoshnetwork.a ../statesync/libmoshstatesync.a ../terminal/libmoshterminal.a ../util/libmoshutil.a ../protobufs/libmoshprotos.a -lm $(TINFO_LIBS) $(protobuf_LIBS) $(CRYPTO_LIBS) $(ABSL_LOG_INTERNAL_CHECK_OP_LIBS)
+
+ mosh_server_LDADD = $(LDADD)
+
+--
+2.34.1
+
diff --git a/meta-oe/recipes-connectivity/mosh/mosh_1.3.0.bb b/meta-oe/recipes-connectivity/mosh/mosh_1.4.0.bb
index 9fc8435ee6..693ec12d3c 100644
--- a/meta-oe/recipes-connectivity/mosh/mosh_1.3.0.bb
+++ b/meta-oe/recipes-connectivity/mosh/mosh_1.4.0.bb
@@ -9,19 +9,21 @@ editing of user keystrokes. Mosh is a replacement for SSH. It's more \
robust and responsive, especially over Wi-Fi, cellular, and \
long-distance links."
HOMEPAGE = "http://mosh.mit.edu"
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-DEPENDS = "protobuf-native protobuf ncurses zlib libio-pty-perl openssl libutempter"
+DEPENDS = "protobuf-native protobuf ncurses zlib libio-pty-perl openssl libutempter abseil-cpp"
-SRC_URI = "http://mosh.mit.edu/mosh-${PV}.tar.gz"
-SRC_URI[md5sum] = "d961276995936953bf2d5a794068b076"
-SRC_URI[sha256sum] = "320e12f461e55d71566597976bd9440ba6c5265fa68fbf614c6f1c8401f93376"
+SRC_URI = "https://mosh.org/${BP}.tar.gz \
+ file://0001-configure.ac-add-support-of-protobuf-4.22.x.patch \
+ "
+
+SRC_URI[sha256sum] = "872e4b134e5df29c8933dff12350785054d2fd2839b5ae6b5587b14db1465ddd"
inherit autotools pkgconfig
PACKAGE_BEFORE_PN += "${PN}-server"
-FILES_${PN}-server = "${bindir}/mosh-server"
+FILES:${PN}-server = "${bindir}/mosh-server"
NEEDED_PERL_MODULES = "\
perl-module-socket \
@@ -32,9 +34,9 @@ NEEDED_PERL_MODULES = "\
"
# mosh uses SSH to authenticate and the client uses OpenSSH-specific features
-RDEPENDS_${PN} += "openssh-ssh ${NEEDED_PERL_MODULES}"
+RDEPENDS:${PN} += "openssh-ssh ${NEEDED_PERL_MODULES}"
# The server seemed not to work with dropbear either
-RDEPENDS_${PN}-server += "openssh-sshd ${NEEDED_PERL_MODULES}"
+RDEPENDS:${PN}-server += "openssh-sshd"
# Fails to build with thumb-1 (qemuarm)
#| {standard input}: Assembler messages:
@@ -44,3 +46,5 @@ RDEPENDS_${PN}-server += "openssh-sshd ${NEEDED_PERL_MODULES}"
#| {standard input}:2103: Error: instruction not supported in Thumb16 mode -- `adcs r7,r7,r7'
#| {standard input}:2104: Error: selected processor does not support Thumb mode `it cs'
ARM_INSTRUCTION_SET = "arm"
+
+CXXFLAGS:append = " -std=c++17"
diff --git a/meta-oe/recipes-connectivity/mosquitto/files/0001-config.mk-allow-prefix-mandir-localedir-from-environ.patch b/meta-oe/recipes-connectivity/mosquitto/files/0001-config.mk-allow-prefix-mandir-localedir-from-environ.patch
deleted file mode 100644
index a5aa277a08..0000000000
--- a/meta-oe/recipes-connectivity/mosquitto/files/0001-config.mk-allow-prefix-mandir-localedir-from-environ.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 0be38301249d797ec1f59071cc868ceda6d4720a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@jci.com>
-Date: Tue, 12 Apr 2016 12:50:32 +0100
-Subject: [PATCH 1/2] config.mk: allow prefix / mandir / localedir from
- environment
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We want to control them using OE environment variables.
-
-Upstream-Status: Inappropriate [embedded-specific]
-Signed-off-by: André Draszik <andre.draszik@jci.com>
----
- config.mk | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/config.mk b/config.mk
-index 71f17e5..81d9702 100644
---- a/config.mk
-+++ b/config.mk
-@@ -249,7 +249,7 @@ ifeq ($(WITH_DOCS),yes)
- endif
-
- INSTALL?=install
--prefix=/usr/local
--mandir=${prefix}/share/man
--localedir=${prefix}/share/locale
-+prefix?=/usr/local
-+mandir?=${prefix}/share/man
-+localedir?=${prefix}/share/locale
- STRIP?=strip
---
-2.15.1
-
diff --git a/meta-oe/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch b/meta-oe/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch
deleted file mode 100644
index c89dfe6bef..0000000000
--- a/meta-oe/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch
+++ /dev/null
@@ -1,975 +0,0 @@
-From d9aeef8d95a325942cc92f4d72415771d75d904c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@jci.com>
-Date: Tue, 12 Apr 2016 13:05:10 +0100
-Subject: [PATCH 2/2] uthash: remove in-tree version
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We don't need it as we want to use the version provided by
-meta-oe instead.
-
-Upstream-Status: Inappropriate [embedded-specific]
-Signed-off-by: André Draszik <andre.draszik@jci.com>
----
- src/uthash.h | 948 -----------------------------------------------------------
- 1 file changed, 948 deletions(-)
- delete mode 100644 src/uthash.h
-
-diff --git a/src/uthash.h b/src/uthash.h
-deleted file mode 100644
-index 915a825..0000000
---- a/src/uthash.h
-+++ /dev/null
-@@ -1,948 +0,0 @@
--/*
--Copyright (c) 2003-2013, Troy D. Hanson http://troydhanson.github.com/uthash/
--All rights reserved.
--
--Redistribution and use in source and binary forms, with or without
--modification, are permitted provided that the following conditions are met:
--
-- * Redistributions of source code must retain the above copyright
-- notice, this list of conditions and the following disclaimer.
--
--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
--IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
--TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
--PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
--OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
--EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
--PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
--LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
--NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--*/
--
--#ifndef UTHASH_H
--#define UTHASH_H
--
--#include <string.h> /* memcmp,strlen */
--#include <stddef.h> /* ptrdiff_t */
--#include <stdlib.h> /* exit() */
--
--/* These macros use decltype or the earlier __typeof GNU extension.
-- As decltype is only available in newer compilers (VS2010 or gcc 4.3+
-- when compiling c++ source) this code uses whatever method is needed
-- or, for VS2008 where neither is available, uses casting workarounds. */
--#ifdef _MSC_VER /* MS compiler */
--#if _MSC_VER >= 1600 && defined(__cplusplus) /* VS2010 or newer in C++ mode */
--#define DECLTYPE(x) (decltype(x))
--#else /* VS2008 or older (or VS2010 in C mode) */
--#define NO_DECLTYPE
--#define DECLTYPE(x)
--#endif
--#else /* GNU, Sun and other compilers */
--#define DECLTYPE(x) (__typeof(x))
--#endif
--
--#ifdef NO_DECLTYPE
--#define DECLTYPE_ASSIGN(dst,src) \
--do { \
-- char **_da_dst = (char**)(&(dst)); \
-- *_da_dst = (char*)(src); \
--} while(0)
--#else
--#define DECLTYPE_ASSIGN(dst,src) \
--do { \
-- (dst) = DECLTYPE(dst)(src); \
--} while(0)
--#endif
--
--/* a number of the hash function use uint32_t which isn't defined on win32 */
--#ifdef _MSC_VER
--typedef unsigned int uint32_t;
--typedef unsigned char uint8_t;
--#else
--#include <inttypes.h> /* uint32_t */
--#endif
--
--#define UTHASH_VERSION 1.9.8
--
--#ifndef uthash_fatal
--#define uthash_fatal(msg) exit(-1) /* fatal error (out of memory,etc) */
--#endif
--#ifndef uthash_malloc
--#define uthash_malloc(sz) malloc(sz) /* malloc fcn */
--#endif
--#ifndef uthash_free
--#define uthash_free(ptr,sz) free(ptr) /* free fcn */
--#endif
--
--#ifndef uthash_noexpand_fyi
--#define uthash_noexpand_fyi(tbl) /* can be defined to log noexpand */
--#endif
--#ifndef uthash_expand_fyi
--#define uthash_expand_fyi(tbl) /* can be defined to log expands */
--#endif
--
--/* initial number of buckets */
--#define HASH_INITIAL_NUM_BUCKETS 32 /* initial number of buckets */
--#define HASH_INITIAL_NUM_BUCKETS_LOG2 5 /* lg2 of initial number of buckets */
--#define HASH_BKT_CAPACITY_THRESH 10 /* expand when bucket count reaches */
--
--/* calculate the element whose hash handle address is hhe */
--#define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho)))
--
--#define HASH_FIND(hh,head,keyptr,keylen,out) \
--do { \
-- unsigned _hf_bkt,_hf_hashv; \
-- out=NULL; \
-- if (head) { \
-- HASH_FCN(keyptr,keylen, (head)->hh.tbl->num_buckets, _hf_hashv, _hf_bkt); \
-- if (HASH_BLOOM_TEST((head)->hh.tbl, _hf_hashv)) { \
-- HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ], \
-- keyptr,keylen,out); \
-- } \
-- } \
--} while (0)
--
--#ifdef HASH_BLOOM
--#define HASH_BLOOM_BITLEN (1ULL << HASH_BLOOM)
--#define HASH_BLOOM_BYTELEN (HASH_BLOOM_BITLEN/8) + ((HASH_BLOOM_BITLEN%8) ? 1:0)
--#define HASH_BLOOM_MAKE(tbl) \
--do { \
-- (tbl)->bloom_nbits = HASH_BLOOM; \
-- (tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN); \
-- if (!((tbl)->bloom_bv)) { uthash_fatal( "out of memory"); } \
-- memset((tbl)->bloom_bv, 0, HASH_BLOOM_BYTELEN); \
-- (tbl)->bloom_sig = HASH_BLOOM_SIGNATURE; \
--} while (0)
--
--#define HASH_BLOOM_FREE(tbl) \
--do { \
-- uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \
--} while (0)
--
--#define HASH_BLOOM_BITSET(bv,idx) (bv[(idx)/8] |= (1U << ((idx)%8)))
--#define HASH_BLOOM_BITTEST(bv,idx) (bv[(idx)/8] & (1U << ((idx)%8)))
--
--#define HASH_BLOOM_ADD(tbl,hashv) \
-- HASH_BLOOM_BITSET((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
--
--#define HASH_BLOOM_TEST(tbl,hashv) \
-- HASH_BLOOM_BITTEST((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
--
--#else
--#define HASH_BLOOM_MAKE(tbl)
--#define HASH_BLOOM_FREE(tbl)
--#define HASH_BLOOM_ADD(tbl,hashv)
--#define HASH_BLOOM_TEST(tbl,hashv) (1)
--#define HASH_BLOOM_BYTELEN 0
--#endif
--
--#define HASH_MAKE_TABLE(hh,head) \
--do { \
-- (head)->hh.tbl = (UT_hash_table*)uthash_malloc( \
-- sizeof(UT_hash_table)); \
-- if (!((head)->hh.tbl)) { uthash_fatal( "out of memory"); } \
-- memset((head)->hh.tbl, 0, sizeof(UT_hash_table)); \
-- (head)->hh.tbl->tail = &((head)->hh); \
-- (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS; \
-- (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2; \
-- (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head); \
-- (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc( \
-- HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \
-- if (! (head)->hh.tbl->buckets) { uthash_fatal( "out of memory"); } \
-- memset((head)->hh.tbl->buckets, 0, \
-- HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \
-- HASH_BLOOM_MAKE((head)->hh.tbl); \
-- (head)->hh.tbl->signature = HASH_SIGNATURE; \
--} while(0)
--
--#define HASH_ADD(hh,head,fieldname,keylen_in,add) \
-- HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add)
--
--#define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced) \
--do { \
-- replaced=NULL; \
-- HASH_FIND(hh,head,&((add)->fieldname),keylen_in,replaced); \
-- if (replaced!=NULL) { \
-- HASH_DELETE(hh,head,replaced); \
-- }; \
-- HASH_ADD(hh,head,fieldname,keylen_in,add); \
--} while(0)
--
--#define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \
--do { \
-- unsigned _ha_bkt; \
-- (add)->hh.next = NULL; \
-- (add)->hh.key = (char*)keyptr; \
-- (add)->hh.keylen = (unsigned)keylen_in; \
-- if (!(head)) { \
-- head = (add); \
-- (head)->hh.prev = NULL; \
-- HASH_MAKE_TABLE(hh,head); \
-- } else { \
-- (head)->hh.tbl->tail->next = (add); \
-- (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \
-- (head)->hh.tbl->tail = &((add)->hh); \
-- } \
-- (head)->hh.tbl->num_items++; \
-- (add)->hh.tbl = (head)->hh.tbl; \
-- HASH_FCN(keyptr,keylen_in, (head)->hh.tbl->num_buckets, \
-- (add)->hh.hashv, _ha_bkt); \
-- HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt],&(add)->hh); \
-- HASH_BLOOM_ADD((head)->hh.tbl,(add)->hh.hashv); \
-- HASH_EMIT_KEY(hh,head,keyptr,keylen_in); \
-- HASH_FSCK(hh,head); \
--} while(0)
--
--#define HASH_TO_BKT( hashv, num_bkts, bkt ) \
--do { \
-- bkt = ((hashv) & ((num_bkts) - 1)); \
--} while(0)
--
--/* delete "delptr" from the hash table.
-- * "the usual" patch-up process for the app-order doubly-linked-list.
-- * The use of _hd_hh_del below deserves special explanation.
-- * These used to be expressed using (delptr) but that led to a bug
-- * if someone used the same symbol for the head and deletee, like
-- * HASH_DELETE(hh,users,users);
-- * We want that to work, but by changing the head (users) below
-- * we were forfeiting our ability to further refer to the deletee (users)
-- * in the patch-up process. Solution: use scratch space to
-- * copy the deletee pointer, then the latter references are via that
-- * scratch pointer rather than through the repointed (users) symbol.
-- */
--#define HASH_DELETE(hh,head,delptr) \
--do { \
-- unsigned _hd_bkt; \
-- struct UT_hash_handle *_hd_hh_del; \
-- if ( ((delptr)->hh.prev == NULL) && ((delptr)->hh.next == NULL) ) { \
-- uthash_free((head)->hh.tbl->buckets, \
-- (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
-- HASH_BLOOM_FREE((head)->hh.tbl); \
-- uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
-- head = NULL; \
-- } else { \
-- _hd_hh_del = &((delptr)->hh); \
-- if ((delptr) == ELMT_FROM_HH((head)->hh.tbl,(head)->hh.tbl->tail)) { \
-- (head)->hh.tbl->tail = \
-- (UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) + \
-- (head)->hh.tbl->hho); \
-- } \
-- if ((delptr)->hh.prev) { \
-- ((UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) + \
-- (head)->hh.tbl->hho))->next = (delptr)->hh.next; \
-- } else { \
-- DECLTYPE_ASSIGN(head,(delptr)->hh.next); \
-- } \
-- if (_hd_hh_del->next) { \
-- ((UT_hash_handle*)((ptrdiff_t)_hd_hh_del->next + \
-- (head)->hh.tbl->hho))->prev = \
-- _hd_hh_del->prev; \
-- } \
-- HASH_TO_BKT( _hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \
-- HASH_DEL_IN_BKT(hh,(head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del); \
-- (head)->hh.tbl->num_items--; \
-- } \
-- HASH_FSCK(hh,head); \
--} while (0)
--
--
--/* convenience forms of HASH_FIND/HASH_ADD/HASH_DEL */
--#define HASH_FIND_STR(head,findstr,out) \
-- HASH_FIND(hh,head,findstr,strlen(findstr),out)
--#define HASH_ADD_STR(head,strfield,add) \
-- HASH_ADD(hh,head,strfield,strlen(add->strfield),add)
--#define HASH_REPLACE_STR(head,strfield,add,replaced) \
-- HASH_REPLACE(hh,head,strfield,strlen(add->strfield),add,replaced)
--#define HASH_FIND_INT(head,findint,out) \
-- HASH_FIND(hh,head,findint,sizeof(int),out)
--#define HASH_ADD_INT(head,intfield,add) \
-- HASH_ADD(hh,head,intfield,sizeof(int),add)
--#define HASH_REPLACE_INT(head,intfield,add,replaced) \
-- HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)
--#define HASH_FIND_PTR(head,findptr,out) \
-- HASH_FIND(hh,head,findptr,sizeof(void *),out)
--#define HASH_ADD_PTR(head,ptrfield,add) \
-- HASH_ADD(hh,head,ptrfield,sizeof(void *),add)
--#define HASH_REPLACE_PTR(head,ptrfield,add) \
-- HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)
--#define HASH_DEL(head,delptr) \
-- HASH_DELETE(hh,head,delptr)
--
--/* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined.
-- * This is for uthash developer only; it compiles away if HASH_DEBUG isn't defined.
-- */
--#ifdef HASH_DEBUG
--#define HASH_OOPS(...) do { fprintf(stderr,__VA_ARGS__); exit(-1); } while (0)
--#define HASH_FSCK(hh,head) \
--do { \
-- unsigned _bkt_i; \
-- unsigned _count, _bkt_count; \
-- char *_prev; \
-- struct UT_hash_handle *_thh; \
-- if (head) { \
-- _count = 0; \
-- for( _bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; _bkt_i++) { \
-- _bkt_count = 0; \
-- _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head; \
-- _prev = NULL; \
-- while (_thh) { \
-- if (_prev != (char*)(_thh->hh_prev)) { \
-- HASH_OOPS("invalid hh_prev %p, actual %p\n", \
-- _thh->hh_prev, _prev ); \
-- } \
-- _bkt_count++; \
-- _prev = (char*)(_thh); \
-- _thh = _thh->hh_next; \
-- } \
-- _count += _bkt_count; \
-- if ((head)->hh.tbl->buckets[_bkt_i].count != _bkt_count) { \
-- HASH_OOPS("invalid bucket count %d, actual %d\n", \
-- (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count); \
-- } \
-- } \
-- if (_count != (head)->hh.tbl->num_items) { \
-- HASH_OOPS("invalid hh item count %d, actual %d\n", \
-- (head)->hh.tbl->num_items, _count ); \
-- } \
-- /* traverse hh in app order; check next/prev integrity, count */ \
-- _count = 0; \
-- _prev = NULL; \
-- _thh = &(head)->hh; \
-- while (_thh) { \
-- _count++; \
-- if (_prev !=(char*)(_thh->prev)) { \
-- HASH_OOPS("invalid prev %p, actual %p\n", \
-- _thh->prev, _prev ); \
-- } \
-- _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh); \
-- _thh = ( _thh->next ? (UT_hash_handle*)((char*)(_thh->next) + \
-- (head)->hh.tbl->hho) : NULL ); \
-- } \
-- if (_count != (head)->hh.tbl->num_items) { \
-- HASH_OOPS("invalid app item count %d, actual %d\n", \
-- (head)->hh.tbl->num_items, _count ); \
-- } \
-- } \
--} while (0)
--#else
--#define HASH_FSCK(hh,head)
--#endif
--
--/* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to
-- * the descriptor to which this macro is defined for tuning the hash function.
-- * The app can #include <unistd.h> to get the prototype for write(2). */
--#ifdef HASH_EMIT_KEYS
--#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) \
--do { \
-- unsigned _klen = fieldlen; \
-- write(HASH_EMIT_KEYS, &_klen, sizeof(_klen)); \
-- write(HASH_EMIT_KEYS, keyptr, fieldlen); \
--} while (0)
--#else
--#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen)
--#endif
--
--/* default to Jenkin's hash unless overridden e.g. DHASH_FUNCTION=HASH_SAX */
--#ifdef HASH_FUNCTION
--#define HASH_FCN HASH_FUNCTION
--#else
--#define HASH_FCN HASH_JEN
--#endif
--
--/* The Bernstein hash function, used in Perl prior to v5.6 */
--#define HASH_BER(key,keylen,num_bkts,hashv,bkt) \
--do { \
-- unsigned _hb_keylen=keylen; \
-- char *_hb_key=(char*)(key); \
-- (hashv) = 0; \
-- while (_hb_keylen--) { (hashv) = ((hashv) * 33) + *_hb_key++; } \
-- bkt = (hashv) & (num_bkts-1); \
--} while (0)
--
--
--/* SAX/FNV/OAT/JEN hash functions are macro variants of those listed at
-- * http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx */
--#define HASH_SAX(key,keylen,num_bkts,hashv,bkt) \
--do { \
-- unsigned _sx_i; \
-- char *_hs_key=(char*)(key); \
-- hashv = 0; \
-- for(_sx_i=0; _sx_i < keylen; _sx_i++) \
-- hashv ^= (hashv << 5) + (hashv >> 2) + _hs_key[_sx_i]; \
-- bkt = hashv & (num_bkts-1); \
--} while (0)
--
--#define HASH_FNV(key,keylen,num_bkts,hashv,bkt) \
--do { \
-- unsigned _fn_i; \
-- char *_hf_key=(char*)(key); \
-- hashv = 2166136261UL; \
-- for(_fn_i=0; _fn_i < keylen; _fn_i++) \
-- hashv = (hashv * 16777619) ^ _hf_key[_fn_i]; \
-- bkt = hashv & (num_bkts-1); \
--} while(0)
--
--#define HASH_OAT(key,keylen,num_bkts,hashv,bkt) \
--do { \
-- unsigned _ho_i; \
-- char *_ho_key=(char*)(key); \
-- hashv = 0; \
-- for(_ho_i=0; _ho_i < keylen; _ho_i++) { \
-- hashv += _ho_key[_ho_i]; \
-- hashv += (hashv << 10); \
-- hashv ^= (hashv >> 6); \
-- } \
-- hashv += (hashv << 3); \
-- hashv ^= (hashv >> 11); \
-- hashv += (hashv << 15); \
-- bkt = hashv & (num_bkts-1); \
--} while(0)
--
--#define HASH_JEN_MIX(a,b,c) \
--do { \
-- a -= b; a -= c; a ^= ( c >> 13 ); \
-- b -= c; b -= a; b ^= ( a << 8 ); \
-- c -= a; c -= b; c ^= ( b >> 13 ); \
-- a -= b; a -= c; a ^= ( c >> 12 ); \
-- b -= c; b -= a; b ^= ( a << 16 ); \
-- c -= a; c -= b; c ^= ( b >> 5 ); \
-- a -= b; a -= c; a ^= ( c >> 3 ); \
-- b -= c; b -= a; b ^= ( a << 10 ); \
-- c -= a; c -= b; c ^= ( b >> 15 ); \
--} while (0)
--
--#define HASH_JEN(key,keylen,num_bkts,hashv,bkt) \
--do { \
-- unsigned _hj_i,_hj_j,_hj_k; \
-- unsigned char *_hj_key=(unsigned char*)(key); \
-- hashv = 0xfeedbeef; \
-- _hj_i = _hj_j = 0x9e3779b9; \
-- _hj_k = (unsigned)keylen; \
-- while (_hj_k >= 12) { \
-- _hj_i += (_hj_key[0] + ( (unsigned)_hj_key[1] << 8 ) \
-- + ( (unsigned)_hj_key[2] << 16 ) \
-- + ( (unsigned)_hj_key[3] << 24 ) ); \
-- _hj_j += (_hj_key[4] + ( (unsigned)_hj_key[5] << 8 ) \
-- + ( (unsigned)_hj_key[6] << 16 ) \
-- + ( (unsigned)_hj_key[7] << 24 ) ); \
-- hashv += (_hj_key[8] + ( (unsigned)_hj_key[9] << 8 ) \
-- + ( (unsigned)_hj_key[10] << 16 ) \
-- + ( (unsigned)_hj_key[11] << 24 ) ); \
-- \
-- HASH_JEN_MIX(_hj_i, _hj_j, hashv); \
-- \
-- _hj_key += 12; \
-- _hj_k -= 12; \
-- } \
-- hashv += keylen; \
-- switch ( _hj_k ) { \
-- case 11: hashv += ( (unsigned)_hj_key[10] << 24 ); \
-- case 10: hashv += ( (unsigned)_hj_key[9] << 16 ); \
-- case 9: hashv += ( (unsigned)_hj_key[8] << 8 ); \
-- case 8: _hj_j += ( (unsigned)_hj_key[7] << 24 ); \
-- case 7: _hj_j += ( (unsigned)_hj_key[6] << 16 ); \
-- case 6: _hj_j += ( (unsigned)_hj_key[5] << 8 ); \
-- case 5: _hj_j += _hj_key[4]; \
-- case 4: _hj_i += ( (unsigned)_hj_key[3] << 24 ); \
-- case 3: _hj_i += ( (unsigned)_hj_key[2] << 16 ); \
-- case 2: _hj_i += ( (unsigned)_hj_key[1] << 8 ); \
-- case 1: _hj_i += _hj_key[0]; \
-- } \
-- HASH_JEN_MIX(_hj_i, _hj_j, hashv); \
-- bkt = hashv & (num_bkts-1); \
--} while(0)
--
--/* The Paul Hsieh hash function */
--#undef get16bits
--#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \
-- || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
--#define get16bits(d) (*((const uint16_t *) (d)))
--#endif
--
--#if !defined (get16bits)
--#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8) \
-- +(uint32_t)(((const uint8_t *)(d))[0]) )
--#endif
--#define HASH_SFH(key,keylen,num_bkts,hashv,bkt) \
--do { \
-- unsigned char *_sfh_key=(unsigned char*)(key); \
-- uint32_t _sfh_tmp, _sfh_len = keylen; \
-- \
-- int _sfh_rem = _sfh_len & 3; \
-- _sfh_len >>= 2; \
-- hashv = 0xcafebabe; \
-- \
-- /* Main loop */ \
-- for (;_sfh_len > 0; _sfh_len--) { \
-- hashv += get16bits (_sfh_key); \
-- _sfh_tmp = (uint32_t)(get16bits (_sfh_key+2)) << 11 ^ hashv; \
-- hashv = (hashv << 16) ^ _sfh_tmp; \
-- _sfh_key += 2*sizeof (uint16_t); \
-- hashv += hashv >> 11; \
-- } \
-- \
-- /* Handle end cases */ \
-- switch (_sfh_rem) { \
-- case 3: hashv += get16bits (_sfh_key); \
-- hashv ^= hashv << 16; \
-- hashv ^= (uint32_t)(_sfh_key[sizeof (uint16_t)] << 18); \
-- hashv += hashv >> 11; \
-- break; \
-- case 2: hashv += get16bits (_sfh_key); \
-- hashv ^= hashv << 11; \
-- hashv += hashv >> 17; \
-- break; \
-- case 1: hashv += *_sfh_key; \
-- hashv ^= hashv << 10; \
-- hashv += hashv >> 1; \
-- } \
-- \
-- /* Force "avalanching" of final 127 bits */ \
-- hashv ^= hashv << 3; \
-- hashv += hashv >> 5; \
-- hashv ^= hashv << 4; \
-- hashv += hashv >> 17; \
-- hashv ^= hashv << 25; \
-- hashv += hashv >> 6; \
-- bkt = hashv & (num_bkts-1); \
--} while(0)
--
--#ifdef HASH_USING_NO_STRICT_ALIASING
--/* The MurmurHash exploits some CPU's (x86,x86_64) tolerance for unaligned reads.
-- * For other types of CPU's (e.g. Sparc) an unaligned read causes a bus error.
-- * MurmurHash uses the faster approach only on CPU's where we know it's safe.
-- *
-- * Note the preprocessor built-in defines can be emitted using:
-- *
-- * gcc -m64 -dM -E - < /dev/null (on gcc)
-- * cc -## a.c (where a.c is a simple test file) (Sun Studio)
-- */
--#if (defined(__i386__) || defined(__x86_64__) || defined(_M_IX86))
--#define MUR_GETBLOCK(p,i) p[i]
--#else /* non intel */
--#define MUR_PLUS0_ALIGNED(p) (((unsigned long)p & 0x3) == 0)
--#define MUR_PLUS1_ALIGNED(p) (((unsigned long)p & 0x3) == 1)
--#define MUR_PLUS2_ALIGNED(p) (((unsigned long)p & 0x3) == 2)
--#define MUR_PLUS3_ALIGNED(p) (((unsigned long)p & 0x3) == 3)
--#define WP(p) ((uint32_t*)((unsigned long)(p) & ~3UL))
--#if (defined(__BIG_ENDIAN__) || defined(SPARC) || defined(__ppc__) || defined(__ppc64__))
--#define MUR_THREE_ONE(p) ((((*WP(p))&0x00ffffff) << 8) | (((*(WP(p)+1))&0xff000000) >> 24))
--#define MUR_TWO_TWO(p) ((((*WP(p))&0x0000ffff) <<16) | (((*(WP(p)+1))&0xffff0000) >> 16))
--#define MUR_ONE_THREE(p) ((((*WP(p))&0x000000ff) <<24) | (((*(WP(p)+1))&0xffffff00) >> 8))
--#else /* assume little endian non-intel */
--#define MUR_THREE_ONE(p) ((((*WP(p))&0xffffff00) >> 8) | (((*(WP(p)+1))&0x000000ff) << 24))
--#define MUR_TWO_TWO(p) ((((*WP(p))&0xffff0000) >>16) | (((*(WP(p)+1))&0x0000ffff) << 16))
--#define MUR_ONE_THREE(p) ((((*WP(p))&0xff000000) >>24) | (((*(WP(p)+1))&0x00ffffff) << 8))
--#endif
--#define MUR_GETBLOCK(p,i) (MUR_PLUS0_ALIGNED(p) ? ((p)[i]) : \
-- (MUR_PLUS1_ALIGNED(p) ? MUR_THREE_ONE(p) : \
-- (MUR_PLUS2_ALIGNED(p) ? MUR_TWO_TWO(p) : \
-- MUR_ONE_THREE(p))))
--#endif
--#define MUR_ROTL32(x,r) (((x) << (r)) | ((x) >> (32 - (r))))
--#define MUR_FMIX(_h) \
--do { \
-- _h ^= _h >> 16; \
-- _h *= 0x85ebca6b; \
-- _h ^= _h >> 13; \
-- _h *= 0xc2b2ae35l; \
-- _h ^= _h >> 16; \
--} while(0)
--
--#define HASH_MUR(key,keylen,num_bkts,hashv,bkt) \
--do { \
-- const uint8_t *_mur_data = (const uint8_t*)(key); \
-- const int _mur_nblocks = (keylen) / 4; \
-- uint32_t _mur_h1 = 0xf88D5353; \
-- uint32_t _mur_c1 = 0xcc9e2d51; \
-- uint32_t _mur_c2 = 0x1b873593; \
-- uint32_t _mur_k1 = 0; \
-- const uint8_t *_mur_tail; \
-- const uint32_t *_mur_blocks = (const uint32_t*)(_mur_data+_mur_nblocks*4); \
-- int _mur_i; \
-- for(_mur_i = -_mur_nblocks; _mur_i; _mur_i++) { \
-- _mur_k1 = MUR_GETBLOCK(_mur_blocks,_mur_i); \
-- _mur_k1 *= _mur_c1; \
-- _mur_k1 = MUR_ROTL32(_mur_k1,15); \
-- _mur_k1 *= _mur_c2; \
-- \
-- _mur_h1 ^= _mur_k1; \
-- _mur_h1 = MUR_ROTL32(_mur_h1,13); \
-- _mur_h1 = _mur_h1*5+0xe6546b64; \
-- } \
-- _mur_tail = (const uint8_t*)(_mur_data + _mur_nblocks*4); \
-- _mur_k1=0; \
-- switch((keylen) & 3) { \
-- case 3: _mur_k1 ^= _mur_tail[2] << 16; \
-- case 2: _mur_k1 ^= _mur_tail[1] << 8; \
-- case 1: _mur_k1 ^= _mur_tail[0]; \
-- _mur_k1 *= _mur_c1; \
-- _mur_k1 = MUR_ROTL32(_mur_k1,15); \
-- _mur_k1 *= _mur_c2; \
-- _mur_h1 ^= _mur_k1; \
-- } \
-- _mur_h1 ^= (keylen); \
-- MUR_FMIX(_mur_h1); \
-- hashv = _mur_h1; \
-- bkt = hashv & (num_bkts-1); \
--} while(0)
--#endif /* HASH_USING_NO_STRICT_ALIASING */
--
--/* key comparison function; return 0 if keys equal */
--#define HASH_KEYCMP(a,b,len) memcmp(a,b,len)
--
--/* iterate over items in a known bucket to find desired item */
--#define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,out) \
--do { \
-- if (head.hh_head) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,head.hh_head)); \
-- else out=NULL; \
-- while (out) { \
-- if ((out)->hh.keylen == keylen_in) { \
-- if ((HASH_KEYCMP((out)->hh.key,keyptr,keylen_in)) == 0) break; \
-- } \
-- if ((out)->hh.hh_next) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,(out)->hh.hh_next)); \
-- else out = NULL; \
-- } \
--} while(0)
--
--/* add an item to a bucket */
--#define HASH_ADD_TO_BKT(head,addhh) \
--do { \
-- head.count++; \
-- (addhh)->hh_next = head.hh_head; \
-- (addhh)->hh_prev = NULL; \
-- if (head.hh_head) { (head).hh_head->hh_prev = (addhh); } \
-- (head).hh_head=addhh; \
-- if (head.count >= ((head.expand_mult+1) * HASH_BKT_CAPACITY_THRESH) \
-- && (addhh)->tbl->noexpand != 1) { \
-- HASH_EXPAND_BUCKETS((addhh)->tbl); \
-- } \
--} while(0)
--
--/* remove an item from a given bucket */
--#define HASH_DEL_IN_BKT(hh,head,hh_del) \
-- (head).count--; \
-- if ((head).hh_head == hh_del) { \
-- (head).hh_head = hh_del->hh_next; \
-- } \
-- if (hh_del->hh_prev) { \
-- hh_del->hh_prev->hh_next = hh_del->hh_next; \
-- } \
-- if (hh_del->hh_next) { \
-- hh_del->hh_next->hh_prev = hh_del->hh_prev; \
-- }
--
--/* Bucket expansion has the effect of doubling the number of buckets
-- * and redistributing the items into the new buckets. Ideally the
-- * items will distribute more or less evenly into the new buckets
-- * (the extent to which this is true is a measure of the quality of
-- * the hash function as it applies to the key domain).
-- *
-- * With the items distributed into more buckets, the chain length
-- * (item count) in each bucket is reduced. Thus by expanding buckets
-- * the hash keeps a bound on the chain length. This bounded chain
-- * length is the essence of how a hash provides constant time lookup.
-- *
-- * The calculation of tbl->ideal_chain_maxlen below deserves some
-- * explanation. First, keep in mind that we're calculating the ideal
-- * maximum chain length based on the *new* (doubled) bucket count.
-- * In fractions this is just n/b (n=number of items,b=new num buckets).
-- * Since the ideal chain length is an integer, we want to calculate
-- * ceil(n/b). We don't depend on floating point arithmetic in this
-- * hash, so to calculate ceil(n/b) with integers we could write
-- *
-- * ceil(n/b) = (n/b) + ((n%b)?1:0)
-- *
-- * and in fact a previous version of this hash did just that.
-- * But now we have improved things a bit by recognizing that b is
-- * always a power of two. We keep its base 2 log handy (call it lb),
-- * so now we can write this with a bit shift and logical AND:
-- *
-- * ceil(n/b) = (n>>lb) + ( (n & (b-1)) ? 1:0)
-- *
-- */
--#define HASH_EXPAND_BUCKETS(tbl) \
--do { \
-- unsigned _he_bkt; \
-- unsigned _he_bkt_i; \
-- struct UT_hash_handle *_he_thh, *_he_hh_nxt; \
-- UT_hash_bucket *_he_new_buckets, *_he_newbkt; \
-- _he_new_buckets = (UT_hash_bucket*)uthash_malloc( \
-- 2 * tbl->num_buckets * sizeof(struct UT_hash_bucket)); \
-- if (!_he_new_buckets) { uthash_fatal( "out of memory"); } \
-- memset(_he_new_buckets, 0, \
-- 2 * tbl->num_buckets * sizeof(struct UT_hash_bucket)); \
-- tbl->ideal_chain_maxlen = \
-- (tbl->num_items >> (tbl->log2_num_buckets+1)) + \
-- ((tbl->num_items & ((tbl->num_buckets*2)-1)) ? 1 : 0); \
-- tbl->nonideal_items = 0; \
-- for(_he_bkt_i = 0; _he_bkt_i < tbl->num_buckets; _he_bkt_i++) \
-- { \
-- _he_thh = tbl->buckets[ _he_bkt_i ].hh_head; \
-- while (_he_thh) { \
-- _he_hh_nxt = _he_thh->hh_next; \
-- HASH_TO_BKT( _he_thh->hashv, tbl->num_buckets*2, _he_bkt); \
-- _he_newbkt = &(_he_new_buckets[ _he_bkt ]); \
-- if (++(_he_newbkt->count) > tbl->ideal_chain_maxlen) { \
-- tbl->nonideal_items++; \
-- _he_newbkt->expand_mult = _he_newbkt->count / \
-- tbl->ideal_chain_maxlen; \
-- } \
-- _he_thh->hh_prev = NULL; \
-- _he_thh->hh_next = _he_newbkt->hh_head; \
-- if (_he_newbkt->hh_head) _he_newbkt->hh_head->hh_prev = \
-- _he_thh; \
-- _he_newbkt->hh_head = _he_thh; \
-- _he_thh = _he_hh_nxt; \
-- } \
-- } \
-- uthash_free( tbl->buckets, tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
-- tbl->num_buckets *= 2; \
-- tbl->log2_num_buckets++; \
-- tbl->buckets = _he_new_buckets; \
-- tbl->ineff_expands = (tbl->nonideal_items > (tbl->num_items >> 1)) ? \
-- (tbl->ineff_expands+1) : 0; \
-- if (tbl->ineff_expands > 1) { \
-- tbl->noexpand=1; \
-- uthash_noexpand_fyi(tbl); \
-- } \
-- uthash_expand_fyi(tbl); \
--} while(0)
--
--
--/* This is an adaptation of Simon Tatham's O(n log(n)) mergesort */
--/* Note that HASH_SORT assumes the hash handle name to be hh.
-- * HASH_SRT was added to allow the hash handle name to be passed in. */
--#define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn)
--#define HASH_SRT(hh,head,cmpfcn) \
--do { \
-- unsigned _hs_i; \
-- unsigned _hs_looping,_hs_nmerges,_hs_insize,_hs_psize,_hs_qsize; \
-- struct UT_hash_handle *_hs_p, *_hs_q, *_hs_e, *_hs_list, *_hs_tail; \
-- if (head) { \
-- _hs_insize = 1; \
-- _hs_looping = 1; \
-- _hs_list = &((head)->hh); \
-- while (_hs_looping) { \
-- _hs_p = _hs_list; \
-- _hs_list = NULL; \
-- _hs_tail = NULL; \
-- _hs_nmerges = 0; \
-- while (_hs_p) { \
-- _hs_nmerges++; \
-- _hs_q = _hs_p; \
-- _hs_psize = 0; \
-- for ( _hs_i = 0; _hs_i < _hs_insize; _hs_i++ ) { \
-- _hs_psize++; \
-- _hs_q = (UT_hash_handle*)((_hs_q->next) ? \
-- ((void*)((char*)(_hs_q->next) + \
-- (head)->hh.tbl->hho)) : NULL); \
-- if (! (_hs_q) ) break; \
-- } \
-- _hs_qsize = _hs_insize; \
-- while ((_hs_psize > 0) || ((_hs_qsize > 0) && _hs_q )) { \
-- if (_hs_psize == 0) { \
-- _hs_e = _hs_q; \
-- _hs_q = (UT_hash_handle*)((_hs_q->next) ? \
-- ((void*)((char*)(_hs_q->next) + \
-- (head)->hh.tbl->hho)) : NULL); \
-- _hs_qsize--; \
-- } else if ( (_hs_qsize == 0) || !(_hs_q) ) { \
-- _hs_e = _hs_p; \
-- if (_hs_p){ \
-- _hs_p = (UT_hash_handle*)((_hs_p->next) ? \
-- ((void*)((char*)(_hs_p->next) + \
-- (head)->hh.tbl->hho)) : NULL); \
-- } \
-- _hs_psize--; \
-- } else if (( \
-- cmpfcn(DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_p)), \
-- DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_q))) \
-- ) <= 0) { \
-- _hs_e = _hs_p; \
-- if (_hs_p){ \
-- _hs_p = (UT_hash_handle*)((_hs_p->next) ? \
-- ((void*)((char*)(_hs_p->next) + \
-- (head)->hh.tbl->hho)) : NULL); \
-- } \
-- _hs_psize--; \
-- } else { \
-- _hs_e = _hs_q; \
-- _hs_q = (UT_hash_handle*)((_hs_q->next) ? \
-- ((void*)((char*)(_hs_q->next) + \
-- (head)->hh.tbl->hho)) : NULL); \
-- _hs_qsize--; \
-- } \
-- if ( _hs_tail ) { \
-- _hs_tail->next = ((_hs_e) ? \
-- ELMT_FROM_HH((head)->hh.tbl,_hs_e) : NULL); \
-- } else { \
-- _hs_list = _hs_e; \
-- } \
-- if (_hs_e) { \
-- _hs_e->prev = ((_hs_tail) ? \
-- ELMT_FROM_HH((head)->hh.tbl,_hs_tail) : NULL); \
-- } \
-- _hs_tail = _hs_e; \
-- } \
-- _hs_p = _hs_q; \
-- } \
-- if (_hs_tail){ \
-- _hs_tail->next = NULL; \
-- } \
-- if ( _hs_nmerges <= 1 ) { \
-- _hs_looping=0; \
-- (head)->hh.tbl->tail = _hs_tail; \
-- DECLTYPE_ASSIGN(head,ELMT_FROM_HH((head)->hh.tbl, _hs_list)); \
-- } \
-- _hs_insize *= 2; \
-- } \
-- HASH_FSCK(hh,head); \
-- } \
--} while (0)
--
--/* This function selects items from one hash into another hash.
-- * The end result is that the selected items have dual presence
-- * in both hashes. There is no copy of the items made; rather
-- * they are added into the new hash through a secondary hash
-- * hash handle that must be present in the structure. */
--#define HASH_SELECT(hh_dst, dst, hh_src, src, cond) \
--do { \
-- unsigned _src_bkt, _dst_bkt; \
-- void *_last_elt=NULL, *_elt; \
-- UT_hash_handle *_src_hh, *_dst_hh, *_last_elt_hh=NULL; \
-- ptrdiff_t _dst_hho = ((char*)(&(dst)->hh_dst) - (char*)(dst)); \
-- if (src) { \
-- for(_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) { \
-- for(_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head; \
-- _src_hh; \
-- _src_hh = _src_hh->hh_next) { \
-- _elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh); \
-- if (cond(_elt)) { \
-- _dst_hh = (UT_hash_handle*)(((char*)_elt) + _dst_hho); \
-- _dst_hh->key = _src_hh->key; \
-- _dst_hh->keylen = _src_hh->keylen; \
-- _dst_hh->hashv = _src_hh->hashv; \
-- _dst_hh->prev = _last_elt; \
-- _dst_hh->next = NULL; \
-- if (_last_elt_hh) { _last_elt_hh->next = _elt; } \
-- if (!dst) { \
-- DECLTYPE_ASSIGN(dst,_elt); \
-- HASH_MAKE_TABLE(hh_dst,dst); \
-- } else { \
-- _dst_hh->tbl = (dst)->hh_dst.tbl; \
-- } \
-- HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt); \
-- HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt],_dst_hh); \
-- (dst)->hh_dst.tbl->num_items++; \
-- _last_elt = _elt; \
-- _last_elt_hh = _dst_hh; \
-- } \
-- } \
-- } \
-- } \
-- HASH_FSCK(hh_dst,dst); \
--} while (0)
--
--#define HASH_CLEAR(hh,head) \
--do { \
-- if (head) { \
-- uthash_free((head)->hh.tbl->buckets, \
-- (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \
-- HASH_BLOOM_FREE((head)->hh.tbl); \
-- uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
-- (head)=NULL; \
-- } \
--} while(0)
--
--#define HASH_OVERHEAD(hh,head) \
-- (size_t)((((head)->hh.tbl->num_items * sizeof(UT_hash_handle)) + \
-- ((head)->hh.tbl->num_buckets * sizeof(UT_hash_bucket)) + \
-- (sizeof(UT_hash_table)) + \
-- (HASH_BLOOM_BYTELEN)))
--
--#ifdef NO_DECLTYPE
--#define HASH_ITER(hh,head,el,tmp) \
--for((el)=(head), (*(char**)(&(tmp)))=(char*)((head)?(head)->hh.next:NULL); \
-- el; (el)=(tmp),(*(char**)(&(tmp)))=(char*)((tmp)?(tmp)->hh.next:NULL))
--#else
--#define HASH_ITER(hh,head,el,tmp) \
--for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL); \
-- el; (el)=(tmp),(tmp)=DECLTYPE(el)((tmp)?(tmp)->hh.next:NULL))
--#endif
--
--/* obtain a count of items in the hash */
--#define HASH_COUNT(head) HASH_CNT(hh,head)
--#define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0)
--
--typedef struct UT_hash_bucket {
-- struct UT_hash_handle *hh_head;
-- unsigned count;
--
-- /* expand_mult is normally set to 0. In this situation, the max chain length
-- * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If
-- * the bucket's chain exceeds this length, bucket expansion is triggered).
-- * However, setting expand_mult to a non-zero value delays bucket expansion
-- * (that would be triggered by additions to this particular bucket)
-- * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH.
-- * (The multiplier is simply expand_mult+1). The whole idea of this
-- * multiplier is to reduce bucket expansions, since they are expensive, in
-- * situations where we know that a particular bucket tends to be overused.
-- * It is better to let its chain length grow to a longer yet-still-bounded
-- * value, than to do an O(n) bucket expansion too often.
-- */
-- unsigned expand_mult;
--
--} UT_hash_bucket;
--
--/* random signature used only to find hash tables in external analysis */
--#define HASH_SIGNATURE 0xa0111fe1
--#define HASH_BLOOM_SIGNATURE 0xb12220f2
--
--typedef struct UT_hash_table {
-- UT_hash_bucket *buckets;
-- unsigned num_buckets, log2_num_buckets;
-- unsigned num_items;
-- struct UT_hash_handle *tail; /* tail hh in app order, for fast append */
-- ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */
--
-- /* in an ideal situation (all buckets used equally), no bucket would have
-- * more than ceil(#items/#buckets) items. that's the ideal chain length. */
-- unsigned ideal_chain_maxlen;
--
-- /* nonideal_items is the number of items in the hash whose chain position
-- * exceeds the ideal chain maxlen. these items pay the penalty for an uneven
-- * hash distribution; reaching them in a chain traversal takes >ideal steps */
-- unsigned nonideal_items;
--
-- /* ineffective expands occur when a bucket doubling was performed, but
-- * afterward, more than half the items in the hash had nonideal chain
-- * positions. If this happens on two consecutive expansions we inhibit any
-- * further expansion, as it's not helping; this happens when the hash
-- * function isn't a good fit for the key domain. When expansion is inhibited
-- * the hash will still work, albeit no longer in constant time. */
-- unsigned ineff_expands, noexpand;
--
-- uint32_t signature; /* used only to find hash tables in external analysis */
--#ifdef HASH_BLOOM
-- uint32_t bloom_sig; /* used only to test bloom exists in external analysis */
-- uint8_t *bloom_bv;
-- char bloom_nbits;
--#endif
--
--} UT_hash_table;
--
--typedef struct UT_hash_handle {
-- struct UT_hash_table *tbl;
-- void *prev; /* prev element in app order */
-- void *next; /* next element in app order */
-- struct UT_hash_handle *hh_prev; /* previous hh in bucket order */
-- struct UT_hash_handle *hh_next; /* next hh in bucket order */
-- void *key; /* ptr to enclosing struct's key */
-- unsigned keylen; /* enclosing struct's key len */
-- unsigned hashv; /* result of hash-fcn(key) */
--} UT_hash_handle;
--
--#endif /* UTHASH_H */
---
-2.15.1
-
diff --git a/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.init b/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.init
deleted file mode 100644
index d2a27b2732..0000000000
--- a/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.init
+++ /dev/null
@@ -1,89 +0,0 @@
-#! /bin/sh
-
-# Based on the Debian initscript for mosquitto
-
-### BEGIN INIT INFO
-# Provides: mosquitto
-# Required-Start: $remote_fs $syslog
-# Required-Stop: $remote_fs $syslog
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: mosquitto MQTT v3.1 message broker
-# Description:
-# This is a message broker that supports version 3.1 of the MQ Telemetry
-# Transport (MQTT) protocol.
-#
-# MQTT provides a method of carrying out messaging using a publish/subscribe
-# model. It is lightweight, both in terms of bandwidth usage and ease of
-# implementation. This makes it particularly useful at the edge of the network
-# where a sensor or other simple device may be implemented using an arduino for
-# example.
-### END INIT INFO
-
-set -e
-
-PIDFILE=@LOCALSTATEDIR@/run/mosquitto.pid
-DAEMON=@SBINDIR@/mosquitto
-
-# start and stop the mosquitto MQTT message broker
-
-test -x ${DAEMON} || exit 0
-
-umask 022
-
-. @SYSCONFDIR@/init.d/functions
-
-export PATH="${PATH:+$PATH:}@SBINDIR@:@BASE_SBINDIR@"
-
-case "$1" in
- start)
- echo "Starting Mosquitto message broker" "mosquitto"
- if start-stop-daemon --start --quiet --oknodo --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} ; then
- exit 0
- else
- exit 1
- fi
- ;;
- stop)
- echo "Stopping Mosquitto message broker" "mosquitto"
- if start-stop-daemon --stop --quiet --oknodo --pidfile ${PIDFILE}; then
- rm -f ${PIDFILE}
- exit 0
- else
- exit 1
- fi
- ;;
-
-
- reload|force-reload)
- if [ -f ${PIDFILE} ] ; then
- echo "Reloading configuration for mosquitto"
- pid=`cat ${PIDFILE}`
- kill -HUP $pid
- else
- echo "mosquitto does not seem to be running"
- fi
- ;;
-
- restart)
- echo "Restarting Mosquitto message broker" "mosquitto"
- if start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile ${PIDFILE}; then
- rm -f ${PIDFILE}
- fi
- if start-stop-daemon --start --quiet --oknodo --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} -- -c @SYSCONFDIR@/mosquitto/mosquitto.conf ; then
- exit 0
- else
- exit 1
- fi
- ;;
-
- status)
- status ${DAEMON} && exit 0 || exit $?
- ;;
-
- *)
- echo "Usage: $0 {start|stop|reload|force-reload|restart|status}"
- exit 1
-esac
-
-exit 0
diff --git a/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.service b/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.service
deleted file mode 100644
index 25f68fae05..0000000000
--- a/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.service
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=Mosquitto - lightweight server implementation of the MQTT and MQTT-SN protocols
-ConditionPathExists=/etc/mosquitto/mosquitto.conf
-After=network.target
-
-[Service]
-Type=simple
-ExecStartPre=/bin/rm -f /var/run/mosquitto.pid
-ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
-ExecReload=/bin/kill -HUP $MAINPID
-PIDFile=/var/run/mosquitto.pid
-Restart=on-failure
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-oe/recipes-connectivity/mosquitto/mosquitto_1.4.14.bb b/meta-oe/recipes-connectivity/mosquitto/mosquitto_1.4.14.bb
deleted file mode 100644
index 13ce3811d4..0000000000
--- a/meta-oe/recipes-connectivity/mosquitto/mosquitto_1.4.14.bb
+++ /dev/null
@@ -1,83 +0,0 @@
-SUMMARY = "Open source MQTT v3.1/3.1.1 implemention"
-DESCRIPTION = "Mosquitto is an open source (Eclipse licensed) message broker that implements the MQ Telemetry Transport protocol version 3.1 and 3.1.1. MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. "
-HOMEPAGE = "http://mosquitto.org/"
-SECTION = "console/network"
-LICENSE = "EPL-1.0 | EDL-1.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=62ddc846179e908dc0c8efec4a42ef20 \
- file://edl-v10;md5=c09f121939f063aeb5235972be8c722c \
- file://epl-v10;md5=8d383c379e91d20ba18a52c3e7d3a979 \
- file://notice.html;md5=a00d6f9ab542be7babc2d8b80d5d2a4c \
-"
-DEPENDS = "uthash"
-
-SRC_URI = "http://mosquitto.org/files/source/mosquitto-${PV}.tar.gz \
- file://0001-config.mk-allow-prefix-mandir-localedir-from-environ.patch \
- file://0002-uthash-remove-in-tree-version.patch \
- file://mosquitto.service \
- file://mosquitto.init \
-"
-
-SRC_URI[md5sum] = "6b0966e93f118bc71ad7b61600a6c2d3"
-SRC_URI[sha256sum] = "156b1fa731d12baad4b8b22f7b6a8af50ba881fc711b81e9919ec103cf2942d1"
-
-inherit systemd update-rc.d useradd
-
-PACKAGECONFIG ??= "ssl uuid"
-
-PACKAGECONFIG[dns-srv] = ",,c-ares"
-PACKAGECONFIG[ssl] = ",,openssl"
-PACKAGECONFIG[uuid] = ",,util-linux"
-EXTRA_OEMAKE = "${@bb.utils.contains('PACKAGECONFIG', 'dns-srv', 'WITH_SRV=yes', 'WITH_SRV=no', d)} \
- STRIP=/bin/true \
- WITH_DOCS=no \
- ${@bb.utils.contains('PACKAGECONFIG', 'ssl', 'WITH_TLS=yes WITH_TLS_PSK=yes', 'WITH_TLS=no WITH_TLS_PSK=no', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'uuid', 'WITH_UUID=yes', 'WITH_UUID=no', d)}"
-
-export LIB_SUFFIX="${@d.getVar('baselib', True).replace('lib', '')}"
-
-do_compile() {
- oe_runmake PREFIX=${prefix}
-}
-
-do_install() {
- oe_runmake install DESTDIR=${D}
- install -d ${D}${libdir}
- install -m 0644 lib/libmosquitto.a ${D}${libdir}/
-
- install -d ${D}${systemd_unitdir}/system/
- install -m 0644 ${WORKDIR}/mosquitto.service ${D}${systemd_unitdir}/system/
-
- install -d ${D}${sysconfdir}/init.d/
- install -m 0755 ${WORKDIR}/mosquitto.init ${D}${sysconfdir}/init.d/mosquitto
- sed -i -e 's,@SBINDIR@,${sbindir},g' \
- -e 's,@BASE_SBINDIR@,${base_sbindir},g' \
- -e 's,@LOCALSTATEDIR@,${localstatedir},g' \
- -e 's,@SYSCONFDIR@,${sysconfdir},g' \
- ${D}${sysconfdir}/init.d/mosquitto
-}
-
-PACKAGES += "libmosquitto1 libmosquittopp1 ${PN}-clients"
-
-FILES_${PN} = "${sbindir}/mosquitto \
- ${bindir}/mosquitto_passwd \
- ${sysconfdir}/mosquitto \
- ${sysconfdir}/init.d \
- ${systemd_unitdir}/system/mosquitto.service \
-"
-
-FILES_libmosquitto1 = "${libdir}/libmosquitto.so.1"
-
-FILES_libmosquittopp1 = "${libdir}/libmosquittopp.so.1"
-
-FILES_${PN}-clients = "${bindir}/mosquitto_pub \
- ${bindir}/mosquitto_sub \
-"
-
-SYSTEMD_SERVICE_${PN} = "mosquitto.service"
-
-INITSCRIPT_NAME = "mosquitto"
-INITSCRIPT_PARAMS = "defaults 30"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--system --no-create-home --shell /bin/false \
- --user-group mosquitto"
diff --git a/meta-oe/recipes-connectivity/obex/obex-data-server/obex-data-server-0.4.6-build-fixes-1.patch b/meta-oe/recipes-connectivity/obex/obex-data-server/obex-data-server-0.4.6-build-fixes-1.patch
index e2c4e9ff6c..c18627b2fa 100644
--- a/meta-oe/recipes-connectivity/obex/obex-data-server/obex-data-server-0.4.6-build-fixes-1.patch
+++ b/meta-oe/recipes-connectivity/obex/obex-data-server/obex-data-server-0.4.6-build-fixes-1.patch
@@ -1,10 +1,11 @@
Submitted By: Armin K. <krejzi at email dot com>
Date: 2012-07-06
Initial Package Version: 0.4.6
-Upstream Status: Unknown
Origin: Self
Description: Some build fixes.
+Upstream-Status: Pending
+
Index: obex-data-server-0.4.6/src/ods-obex.c
===================================================================
--- obex-data-server-0.4.6.orig/src/ods-obex.c
diff --git a/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb b/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
index 715b02352e..3e59af8e2e 100644
--- a/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
+++ b/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
@@ -1,18 +1,16 @@
DESCRIPTION = "obex-data-server is a D-Bus service providing high-level OBEX client and server side functionality"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-DEPENDS = "gtk+ dbus-glib dbus-glib-native imagemagick openobex"
-DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','bluez5','bluez5','bluez4',d)}"
+DEPENDS = "gtk+ dbus-glib dbus-glib-native imagemagick openobex bluez5"
-SRC_URI = "http://tadas.dailyda.com/software/obex-data-server-${PV}.tar.gz \
+SRC_URI = "https://ftp.osuosl.org/pub/blfs/conglomeration/${BPN}/obex-data-server-${PV}.tar.gz \
file://obex-data-server-0.4.6-build-fixes-1.patch \
"
-SRC_URI[md5sum] = "961ca5db6fe9c97024e133cc6203cc4d"
SRC_URI[sha256sum] = "b399465ddbd6d0217abedd9411d9d74a820effa0a6a142adc448268d3920094f"
-inherit distro_features_check autotools-brokensep pkgconfig
+inherit features_check autotools-brokensep pkgconfig
REQUIRED_DISTRO_FEATURES = "x11"
-FILES_${PN} += "${datadir}/dbus-1/"
+FILES:${PN} += "${datadir}/dbus-1/"
diff --git a/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb b/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
index 2db48f3418..7348274948 100644
--- a/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
+++ b/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
@@ -2,37 +2,36 @@ DESCRIPTION = "The Openobex project is an open source implementation of the \
Object Exchange (OBEX) protocol."
HOMEPAGE = "http://openobex.triq.net"
SECTION = "libs"
-DEPENDS = "virtual/libusb0"
-DEPENDS_append_class-target = " ${@bb.utils.contains('DISTRO_FEATURES','bluez5','bluez5','bluez4',d)}"
-
-LICENSE = "GPLv2 & LGPLv2.1"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
"
+DEPENDS = "virtual/libusb0"
+DEPENDS:append:class-target = " bluez5"
+
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}/${PV}/${BP}-Source.tar.gz \
"
-
SRC_URI[md5sum] = "f6e0b6cb7dcfd731460a7e9a91429a3a"
SRC_URI[sha256sum] = "158860aaea52f0fce0c8e4b64550daaae06df2689e05834697b7e8c7d73dd4fc"
-inherit cmake pkgconfig
-
S = "${WORKDIR}/${BP}-Source"
+inherit cmake pkgconfig
+
EXTRA_OECONF = " -DCMAKE_SKIP_RPATH=ON "
EXTRA_OECMAKE += "-DBUILD_DOCUMENTATION=OFF"
-#--enable-apps --enable-syslog
+ASNEEDED = ""
-do_install_append () {
+do_install:append () {
rmdir ${D}${bindir}
}
PACKAGES =+ "openobex-apps"
-FILES_${PN}-apps = "${bindir}/*"
-FILES_${PN} += "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${bindir}/openobex-config ${libdir}/cmake"
-DEBIAN_NOAUTONAME_${PN}-apps = "1"
+FILES:${PN}-apps = "${bindir}/*"
+FILES:${PN} += "${libdir}/lib*.so.*"
+FILES:${PN}-dev += "${bindir}/openobex-config"
+DEBIAN_NOAUTONAME:${PN}-apps = "1"
BBCLASSEXTEND = "native"
diff --git a/meta-oe/recipes-connectivity/obexftp/obexftp/0001-apps-CMakeLists.txt-Explicitly-link-libbfb-and-libmu.patch b/meta-oe/recipes-connectivity/obexftp/obexftp/0001-apps-CMakeLists.txt-Explicitly-link-libbfb-and-libmu.patch
index 1f6de87c8d..7a19b6172f 100644
--- a/meta-oe/recipes-connectivity/obexftp/obexftp/0001-apps-CMakeLists.txt-Explicitly-link-libbfb-and-libmu.patch
+++ b/meta-oe/recipes-connectivity/obexftp/obexftp/0001-apps-CMakeLists.txt-Explicitly-link-libbfb-and-libmu.patch
@@ -9,6 +9,8 @@ they are required to be added to link line explicitly.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
+Upstream-Status: Pending
+
apps/CMakeLists.txt | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/meta-oe/recipes-connectivity/obexftp/obexftp/Remove_some_printf_in_obexftpd.patch b/meta-oe/recipes-connectivity/obexftp/obexftp/Remove_some_printf_in_obexftpd.patch
index 8b73af32e8..23e92885e8 100644
--- a/meta-oe/recipes-connectivity/obexftp/obexftp/Remove_some_printf_in_obexftpd.patch
+++ b/meta-oe/recipes-connectivity/obexftp/obexftp/Remove_some_printf_in_obexftpd.patch
@@ -1,6 +1,6 @@
Signed-off-by: Jun Zhu <R01007@freescale.com>
-Upstream-Status: Not applicable
+Upstream-Status: Inappropriate [embedded specific]
diff -Nru obexftp-0.23/apps.orig/obexftpd.c obexftp-0.23/apps/obexftpd.c
--- obexftp-0.23/apps.orig/obexftpd.c 2013-11-08 10:42:20.816631583 +0800
diff --git a/meta-oe/recipes-connectivity/obexftp/obexftp/make_fuse_swig_optional.patch b/meta-oe/recipes-connectivity/obexftp/obexftp/make_fuse_swig_optional.patch
index 84b143bf51..25f2a7d9e7 100644
--- a/meta-oe/recipes-connectivity/obexftp/obexftp/make_fuse_swig_optional.patch
+++ b/meta-oe/recipes-connectivity/obexftp/obexftp/make_fuse_swig_optional.patch
@@ -1,3 +1,5 @@
+Upstream-Status: Pending
+
Index: obexftp-0.24.2-Source/CMakeLists.txt
===================================================================
--- obexftp-0.24.2-Source.orig/CMakeLists.txt
diff --git a/meta-oe/recipes-connectivity/obexftp/obexftp_0.24.2.bb b/meta-oe/recipes-connectivity/obexftp/obexftp_0.24.2.bb
index b4a914d929..f7a98fb61e 100644
--- a/meta-oe/recipes-connectivity/obexftp/obexftp_0.24.2.bb
+++ b/meta-oe/recipes-connectivity/obexftp/obexftp_0.24.2.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "A tool for transfer files to/from any OBEX enabled device"
-LICENSE = "GPLv2 & PD & LGPLv2.1"
+LICENSE = "GPL-2.0-only & PD & LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://LGPL-2.1.txt;md5=4fbd65380cdd255951079008b364516c \
file://GPL-2.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://License.txt;md5=fcbddc3c1debed80dd80da2d3e5f0dc1 \
@@ -23,7 +23,7 @@ PACKAGECONFIG ?= ""
PACKAGECONFIG[fuse] = "-DENABLE_FUSE=ON,-DENABLE_FUSE=OFF,fuse"
PACKAGECONFIG[swig] = "-DENABLE_SWIG=ON,-DENABLE_SWIG=OFF,swig"
-DEPENDS_remove_class-native = "fuse-native"
+DEPENDS:remove:class-native = "fuse-native"
S = "${WORKDIR}/${BP}-Source"
@@ -32,11 +32,11 @@ EXTRA_OECMAKE += "-DCMAKE_SKIP_RPATH=ON \
-DENABLE_RUBY=OFF -DENABLE_TCL=OFF \
"
-do_compile_class-native () {
+do_compile:class-native () {
oe_runmake crctable
}
-do_install_class-native () {
+do_install:class-native () {
install -D -m 0755 ${B}/bfb/crctable ${D}${bindir}/crctable
}
diff --git a/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb b/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb
index f2a16dcf71..f976ca109c 100644
--- a/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb
+++ b/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb
@@ -6,19 +6,12 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda
file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SUMMARY = "Set of Bluetooth related tools for inclusion in images"
-DESCRIPTION = "Includes bluetooth specific tools for this version of BlueZ.\
-These tools are used at runtime. \
-Supports BlueZ4 and BlueZ5."
+DESCRIPTION = "Includes bluetooth specific tools for BlueZ.\
+These tools are used at runtime."
inherit packagegroup
-inherit bluetooth
-RDEPENDS_bluez4 = " \
- obexftp \
- ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'libasound-module-bluez', '', d)} \
-"
-
-RDEPENDS_bluez5 = " \
+RDEPENDS:${PN} = " \
bluez5-noinst-tools \
bluez5-obex \
bluez5-testtools \
@@ -31,7 +24,3 @@ RDEPENDS_bluez5 = " \
pulseaudio-module-loopback', \
'', d)} \
"
-
-# Install bluez4 tools or bluez5 tools depending on what is specified in the distro.
-# Otherwise install nothing.
-RDEPENDS_${PN} = "${RDEPENDS_${BLUEZ}}"
diff --git a/meta-oe/recipes-connectivity/paho-mqtt-c/files/makefile.patch b/meta-oe/recipes-connectivity/paho-mqtt-c/files/makefile.patch
deleted file mode 100644
index a31bfaa749..0000000000
--- a/meta-oe/recipes-connectivity/paho-mqtt-c/files/makefile.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Disable building some things we don't need
-
-Upstream-Status: Inappropriate [config]
-
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-
----
- Makefile | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 33bd2d0..84262bd 100644
---- a/Makefile
-+++ b/Makefile
-@@ -115,7 +115,8 @@ LDFLAGS_AS = -shared -Wl,-soname,lib${MQTTLIB_AS}.so.${MAJOR_VERSION} -lpthread
-
- all: build
-
--build: | mkdir ${MQTTLIB_C_TARGET} ${MQTTLIB_CS_TARGET} ${MQTTLIB_A_TARGET} ${MQTTLIB_AS_TARGET} ${MQTTVERSION_TARGET} ${SYNC_SAMPLES} ${ASYNC_SAMPLES} ${SYNC_TESTS} ${SYNC_SSL_TESTS} ${ASYNC_TESTS} ${ASYNC_SSL_TESTS}
-+build: | mkdir ${MQTTLIB_C_TARGET} ${MQTTLIB_CS_TARGET} ${MQTTLIB_A_TARGET} ${MQTTLIB_AS_TARGET}
-+#${MQTTVERSION_TARGET} ${SYNC_SAMPLES} ${ASYNC_SAMPLES} ${SYNC_TESTS} ${SYNC_SSL_TESTS} ${ASYNC_TESTS} ${ASYNC_SSL_TESTS}
-
- clean:
- rm -rf ${blddir}/*
---
diff --git a/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.0.bb b/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.0.bb
deleted file mode 100644
index fec380ce6f..0000000000
--- a/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.0.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Paho MQTT - C libraries for the MQTT and MQTT-SN protocols"
-DESCRIPTION = "Client implementation of open and standard messaging protocols for Machine-to-Machine (M2M) and Internet of Things (IoT)."
-HOMEPAGE = "http://www.eclipse.org/paho/"
-SECTION = "console/network"
-LICENSE = "EPL-1.0 | EDL-1.0"
-
-LIC_FILES_CHKSUM = " \
- file://edl-v10;md5=3adfcc70f5aeb7a44f3f9b495aa1fbf3 \
- file://epl-v10;md5=659c8e92a40b6df1d9e3dccf5ae45a08 \
- file://notice.html;md5=a00d6f9ab542be7babc2d8b80d5d2a4c \
- file://about.html;md5=dcde438d73cf42393da9d40fabc0c9bc \
-"
-
-SRC_URI = "git://github.com/eclipse/paho.mqtt.c;protocol=http"
-
-SRCREV = "e8d34da24ad807f5e698b327d67591fd4b4bfa7e"
-
-DEPENDS = "openssl"
-
-S = "${WORKDIR}/git"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-do_install() {
- install -d ${D}${libdir}
- oe_libinstall -C build/output -so libpaho-mqtt3a ${D}${libdir}
- oe_libinstall -C build/output -so libpaho-mqtt3as ${D}${libdir}
- oe_libinstall -C build/output -so libpaho-mqtt3c ${D}${libdir}
- oe_libinstall -C build/output -so libpaho-mqtt3cs ${D}${libdir}
- install -d ${D}${includedir}
- install -m 644 src/MQTTAsync.h ${D}${includedir}
- install -m 644 src/MQTTClient.h ${D}${includedir}
- install -m 644 src/MQTTClientPersistence.h ${D}${includedir}
-}
-
diff --git a/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.13.bb b/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.13.bb
new file mode 100644
index 0000000000..6f229001f6
--- /dev/null
+++ b/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.13.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Paho MQTT - C libraries for the MQTT and MQTT-SN protocols"
+DESCRIPTION = "Client implementation of open and standard messaging protocols for Machine-to-Machine (M2M) and Internet of Things (IoT)."
+HOMEPAGE = "http://www.eclipse.org/paho/"
+SECTION = "console/network"
+LICENSE = "EPL-2.0 | EDL-1.0"
+
+LIC_FILES_CHKSUM = " \
+ file://LICENSE;md5=fd3b896dadaeec3410d753ffaeadcfac \
+ file://edl-v10;md5=3adfcc70f5aeb7a44f3f9b495aa1fbf3 \
+ file://epl-v20;md5=d9fc0efef5228704e7f5b37f27192723 \
+"
+
+SRC_URI = "git://github.com/eclipse/paho.mqtt.c;protocol=https;branch=master"
+
+SRCREV = "07a875788d8cc6f5833b12581d6e3e349b34d719"
+
+DEPENDS = "openssl"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+do_configure:prepend() {
+ sed -i s:\ lib/cmake:\ ${baselib}/cmake:g ${S}/src/CMakeLists.txt
+}
+
+do_install:append() {
+ # paho-mqtt installes some thing that we don't want.
+ rm -rf ${D}${prefix}/samples
+ find ${D}${prefix} -maxdepth 1 -type f -delete
+}
+
+EXTRA_OECMAKE = "-DPAHO_WITH_SSL=ON -DPAHO_ENABLE_TESTING=OFF -DPAHO_HIGH_PERFORMANCE=ON"
diff --git a/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp/0001-cmake-Use-CMAKE_INSTALL_LIBDIR-and-CMAKE_INSTALL_BIN.patch b/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp/0001-cmake-Use-CMAKE_INSTALL_LIBDIR-and-CMAKE_INSTALL_BIN.patch
new file mode 100644
index 0000000000..fba9a8767f
--- /dev/null
+++ b/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp/0001-cmake-Use-CMAKE_INSTALL_LIBDIR-and-CMAKE_INSTALL_BIN.patch
@@ -0,0 +1,59 @@
+From 2a0dd2b300242230faa92cf8e26ccd70231bc9ef Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 19 Mar 2022 23:37:58 -0700
+Subject: [PATCH] cmake: Use CMAKE_INSTALL_LIBDIR and CMAKE_INSTALL_BINDIR
+
+This ensures the install paths are not hardcoded.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+---
+ cmake/CMakeLists.txt | 4 ++--
+ src/samples/CMakeLists.txt | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
+index a9f8908..7eadc60 100644
+--- a/cmake/CMakeLists.txt
++++ b/cmake/CMakeLists.txt
+@@ -11,7 +11,7 @@ export(EXPORT ${package_name}
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/${package_name}Targets.cmake"
+ NAMESPACE ${package_name}::)
+
+-install(EXPORT ${package_name} DESTINATION lib/cmake/${package_name}
++install(EXPORT ${package_name} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${package_name}
+ FILE ${package_name}Targets.cmake
+ NAMESPACE ${package_name}::)
+
+@@ -19,4 +19,4 @@ install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/${package_name}Config.cmake"
+ FindPahoMqttC.cmake
+ "${CMAKE_CURRENT_BINARY_DIR}/${package_name}ConfigVersion.cmake"
+- DESTINATION lib/cmake/${package_name})
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${package_name})
+diff --git a/src/samples/CMakeLists.txt b/src/samples/CMakeLists.txt
+index 3ca0a75..c915cd5 100644
+--- a/src/samples/CMakeLists.txt
++++ b/src/samples/CMakeLists.txt
+@@ -71,7 +71,7 @@ endforeach()
+
+ ## install binaries
+ install(TARGETS ${EXECUTABLES} EXPORT PahoMqttCppSamples
+- RUNTIME DESTINATION bin
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ )
+
+ ## Build the SSL/TLS samples, if selected
+@@ -89,7 +89,7 @@ if(PAHO_WITH_SSL)
+ endforeach()
+
+ install(TARGETS ${SSL_EXECUTABLES} EXPORT PahoMqttCppSamples
+- RUNTIME DESTINATION bin
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ )
+ endif()
+
+--
+2.34.1
+
diff --git a/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.3.2.bb b/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.3.2.bb
new file mode 100644
index 0000000000..1b2e51c3ac
--- /dev/null
+++ b/meta-oe/recipes-connectivity/paho-mqtt-cpp/paho-mqtt-cpp_1.3.2.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Paho MQTT - C++ libraries for the MQTT and MQTT-SN protocols"
+DESCRIPTION = "Client implementation of open and standard messaging protocols for Machine-to-Machine (M2M) and Internet of Things (IoT)."
+HOMEPAGE = "http://www.eclipse.org/paho/"
+SECTION = "console/network"
+LICENSE = "EPL-2.0 | EDL-1.0"
+
+LIC_FILES_CHKSUM = " \
+ file://src/mqtt/message.h;beginline=9;endline=18;md5=c5ceecf5ab99d44dcfaaabdce289071b \
+ file://edl-v10;md5=3adfcc70f5aeb7a44f3f9b495aa1fbf3 \
+ file://epl-v20;md5=d9fc0efef5228704e7f5b37f27192723 \
+"
+
+SRC_URI = "git://github.com/eclipse/paho.mqtt.cpp;protocol=https;branch=v1.3.x \
+ file://0001-cmake-Use-CMAKE_INSTALL_LIBDIR-and-CMAKE_INSTALL_BIN.patch \
+ "
+SRCREV = "5e0d1bf37b4826d680ec066ec42afd133851a681"
+
+DEPENDS = "openssl paho-mqtt-c"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+EXTRA_OECMAKE += "-DPAHO_WITH_SSL=ON"
diff --git a/meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus/0001-initialize-timespec-variable.patch b/meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus/0001-initialize-timespec-variable.patch
new file mode 100644
index 0000000000..f2e210fc67
--- /dev/null
+++ b/meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus/0001-initialize-timespec-variable.patch
@@ -0,0 +1,35 @@
+From 298dec6f87061914c85049faca3d0ff3310d1794 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 6 May 2024 12:15:30 -0700
+Subject: [PATCH] initialize timespec variable
+
+Fixes build warnings with GCC14
+
+/mnt/b/yoe/master/build/tmp/work/core2-32-yoe-linux/pcapplusplus/23.09/git/Packet++/src/RawPacket.cpp: In constructor 'pcpp::RawPacket::RawPacket(const uint8_t*, int, timeval, bool, pcpp::LinkLayerType)':
+/mnt/b/yoe/master/build/tmp/work/core2-32-yoe-linux/pcapplusplus/23.09/git/Packet++/src/RawPacket.cpp:23:18: error: 'nsec_time.timespec::<anonymous>' is used uninitialized [-Werror=uninitialized]
+ 23 | timespec nsec_time;
+ | ^~~~~~~~~
+cc1plus: all warnings being treated as errors
+
+Upstream-Status: Submitted [https://github.com/seladb/PcapPlusPlus/pull/1389]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Packet++/src/RawPacket.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Packet++/src/RawPacket.cpp b/Packet++/src/RawPacket.cpp
+index 8ad52d52..07dbbbe2 100644
+--- a/Packet++/src/RawPacket.cpp
++++ b/Packet++/src/RawPacket.cpp
+@@ -20,7 +20,7 @@ void RawPacket::init(bool deleteRawDataAtDestructor)
+
+ RawPacket::RawPacket(const uint8_t* pRawData, int rawDataLen, timeval timestamp, bool deleteRawDataAtDestructor, LinkLayerType layerType)
+ {
+- timespec nsec_time;
++ timespec nsec_time = {};
+ TIMEVAL_TO_TIMESPEC(&timestamp, &nsec_time);
+ init(deleteRawDataAtDestructor);
+ setRawData(pRawData, rawDataLen, nsec_time, layerType);
+--
+2.45.0
+
diff --git a/meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus/0001-packet-Initialize-m_ExternalRawData-in-IDnsResource-.patch b/meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus/0001-packet-Initialize-m_ExternalRawData-in-IDnsResource-.patch
new file mode 100644
index 0000000000..b6389e0e3f
--- /dev/null
+++ b/meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus/0001-packet-Initialize-m_ExternalRawData-in-IDnsResource-.patch
@@ -0,0 +1,34 @@
+From 742f564ee80749e9f1f3363092775545e37c0f87 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 9 May 2024 17:02:09 -0700
+Subject: [PATCH] packet++: Initialize m_ExternalRawData in IDnsResource
+ constructor
+
+Fixes following warning with GCC-14
+
+Packet++/src/DnsResource.cpp:29:24: error: '*this.pcpp::IDnsResource::m_ExternalRawData' may be used uninitialized [-Werror=maybe-uninitialized]
+ 29 | return m_ExternalRawData;
+ | ^~~~~~~~~~~~~~~~~
+
+Upstream-Status: Submitted [https://github.com/seladb/PcapPlusPlus/pull/1391]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Packet++/src/DnsResource.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Packet++/src/DnsResource.cpp b/Packet++/src/DnsResource.cpp
+index fec1bf05..c1f97041 100644
+--- a/Packet++/src/DnsResource.cpp
++++ b/Packet++/src/DnsResource.cpp
+@@ -10,7 +10,7 @@ namespace pcpp
+ {
+
+ IDnsResource::IDnsResource(DnsLayer* dnsLayer, size_t offsetInLayer)
+- : m_DnsLayer(dnsLayer), m_OffsetInLayer(offsetInLayer), m_NextResource(nullptr)
++ : m_DnsLayer(dnsLayer), m_OffsetInLayer(offsetInLayer), m_NextResource(nullptr), m_ExternalRawData(nullptr)
+ {
+ char decodedName[4096];
+ m_NameLength = decodeName((const char*)getRawData(), decodedName);
+--
+2.45.0
+
diff --git a/meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus_23.09.bb b/meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus_23.09.bb
new file mode 100644
index 0000000000..9db0222172
--- /dev/null
+++ b/meta-oe/recipes-connectivity/pcapplusplus/pcapplusplus_23.09.bb
@@ -0,0 +1,24 @@
+SUMMARY = "A multiplatform C++ library for capturing, parsing and crafting of network packets"
+HOMEPAGE = "https://pcapplusplus.github.io/"
+BUGTRACKER = "https://github.com/seladb/PcapPlusPlus/issues"
+SECTION = "libs/network"
+LICENSE = "Unlicense"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=911690f51af322440237a253d695d19f"
+
+DEPENDS = "libpcap"
+
+SRC_URI = "git://github.com/seladb/PcapPlusPlus.git;protocol=https;branch=master \
+ file://0001-packet-Initialize-m_ExternalRawData-in-IDnsResource-.patch \
+ file://0001-initialize-timespec-variable.patch"
+
+SRCREV = "4cf8ed44f9dd145f874dc1dd747dfefcfcab75be"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[examples] = "-DPCAPPP_BUILD_EXAMPLES=ON,-DPCAPPP_BUILD_EXAMPLES=OFF"
+PACKAGECONFIG[shared] = "-DBUILD_SHARED_LIBS=ON,-DBUILD_SHARED_LIBS=OFF"
+PACKAGECONFIG[tests] = "-DPCAPPP_BUILD_TESTS=ON,-DPCAPPP_BUILD_TESTS=OFF"
+PACKAGECONFIG[zstd] = "-DLIGHT_PCAPNG_ZSTD=ON,-DLIGHT_PCAPNG_ZSTD=OFF,zstd"
diff --git a/meta-oe/recipes-connectivity/phonet-utils/phonet-utils/0001-Include-limits.h-for-PATH_MAX.patch b/meta-oe/recipes-connectivity/phonet-utils/phonet-utils/0001-Include-limits.h-for-PATH_MAX.patch
deleted file mode 100644
index 8bb7e5a188..0000000000
--- a/meta-oe/recipes-connectivity/phonet-utils/phonet-utils/0001-Include-limits.h-for-PATH_MAX.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From f7ad9a4471cee2324f216a0d82ba8097ec746c56 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 15 Jul 2017 11:48:12 -0700
-Subject: [PATCH] Include limits.h for PATH_MAX
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/pnstat.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/pnstat.c b/src/pnstat.c
-index 661a5bc..76068e6 100644
---- a/src/pnstat.c
-+++ b/src/pnstat.c
-@@ -35,6 +35,7 @@
- #include <dirent.h>
- #include <unistd.h>
- #include <netinet/tcp.h>
-+#include <limits.h>
-
- struct fd
- {
---
-2.13.3
-
diff --git a/meta-oe/recipes-connectivity/phonet-utils/phonet-utils_git.bb b/meta-oe/recipes-connectivity/phonet-utils/phonet-utils_git.bb
deleted file mode 100644
index 3c599950fe..0000000000
--- a/meta-oe/recipes-connectivity/phonet-utils/phonet-utils_git.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "This small package provides a few command line tools for Linux Phonet"
-HOMEPAGE = ""
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-SRC_URI = "git://gitorious.org/meego-cellular/phonet-utils.git;branch=master \
- file://0001-Include-limits.h-for-PATH_MAX.patch \
- "
-PR = "r2"
-S = "${WORKDIR}/git"
-SRCREV = "4acfa720fd37d178a048fc2be17180137d4a70ea"
-PV = "0.0.0+gitr${SRCPV}"
-
-inherit autotools-brokensep
-
-FILES_${PN} += "${base_libdir}/udev/rules.d/85-phonet-utils.rules"
diff --git a/meta-oe/recipes-connectivity/rabbitmq-c/files/CVE-2023-35789.patch b/meta-oe/recipes-connectivity/rabbitmq-c/files/CVE-2023-35789.patch
new file mode 100644
index 0000000000..dfd1f98759
--- /dev/null
+++ b/meta-oe/recipes-connectivity/rabbitmq-c/files/CVE-2023-35789.patch
@@ -0,0 +1,131 @@
+CVE: CVE-2023-35789
+Upstream-Status: Backport [ https://github.com/alanxz/rabbitmq-c/commit/463054383fbeef889b409a7f843df5365288e2a0 ]
+Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
+
+From 463054383fbeef889b409a7f843df5365288e2a0 Mon Sep 17 00:00:00 2001
+From: Christian Kastner <ckk@kvr.at>
+Date: Tue, 13 Jun 2023 14:21:52 +0200
+Subject: [PATCH] Add option to read username/password from file (#781)
+
+* Add option to read username/password from file
+---
+ tools/common.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 66 insertions(+)
+
+diff --git a/tools/common.c b/tools/common.c
+index 73b47e25..7efe557b 100644
+--- a/tools/common.c
++++ b/tools/common.c
+@@ -18,6 +18,11 @@
+ #include "compat.h"
+ #endif
+
++/* For when reading auth data from a file */
++#define MAXAUTHTOKENLEN 128
++#define USERNAMEPREFIX "username:"
++#define PASSWORDPREFIX "password:"
++
+ void die(const char *fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+@@ -125,6 +130,7 @@ static char *amqp_vhost;
+ static char *amqp_username;
+ static char *amqp_password;
+ static int amqp_heartbeat = 0;
++static char *amqp_authfile;
+ #ifdef WITH_SSL
+ static int amqp_ssl = 0;
+ static char *amqp_cacert = "/etc/ssl/certs/cacert.pem";
+@@ -147,6 +153,8 @@ struct poptOption connect_options[] = {
+ "the password to login with", "password"},
+ {"heartbeat", 0, POPT_ARG_INT, &amqp_heartbeat, 0,
+ "heartbeat interval, set to 0 to disable", "heartbeat"},
++ {"authfile", 0, POPT_ARG_STRING, &amqp_authfile, 0,
++ "path to file containing username/password for authentication", "file"},
+ #ifdef WITH_SSL
+ {"ssl", 0, POPT_ARG_NONE, &amqp_ssl, 0, "connect over SSL/TLS", NULL},
+ {"cacert", 0, POPT_ARG_STRING, &amqp_cacert, 0,
+@@ -158,6 +166,50 @@ struct poptOption connect_options[] = {
+ #endif /* WITH_SSL */
+ {NULL, '\0', 0, NULL, 0, NULL, NULL}};
+
++void read_authfile(const char *path) {
++ size_t n;
++ FILE *fp = NULL;
++ char token[MAXAUTHTOKENLEN];
++
++ if ((amqp_username = malloc(MAXAUTHTOKENLEN)) == NULL ||
++ (amqp_password = malloc(MAXAUTHTOKENLEN)) == NULL) {
++ die("Out of memory");
++ } else if ((fp = fopen(path, "r")) == NULL) {
++ die("Could not read auth data file %s", path);
++ }
++
++ if (fgets(token, MAXAUTHTOKENLEN, fp) == NULL ||
++ strncmp(token, USERNAMEPREFIX, strlen(USERNAMEPREFIX))) {
++ die("Malformed auth file (missing username)");
++ }
++ strncpy(amqp_username, &token[strlen(USERNAMEPREFIX)], MAXAUTHTOKENLEN);
++ /* Missing newline means token was cut off */
++ n = strlen(amqp_username);
++ if (amqp_username[n - 1] != '\n') {
++ die("Username too long");
++ } else {
++ amqp_username[n - 1] = '\0';
++ }
++
++ if (fgets(token, MAXAUTHTOKENLEN, fp) == NULL ||
++ strncmp(token, PASSWORDPREFIX, strlen(PASSWORDPREFIX))) {
++ die("Malformed auth file (missing password)");
++ }
++ strncpy(amqp_password, &token[strlen(PASSWORDPREFIX)], MAXAUTHTOKENLEN);
++ /* Missing newline means token was cut off */
++ n = strlen(amqp_password);
++ if (amqp_password[n - 1] != '\n') {
++ die("Password too long");
++ } else {
++ amqp_password[n - 1] = '\0';
++ }
++
++ (void)fgetc(fp);
++ if (!feof(fp)) {
++ die("Malformed auth file (trailing data)");
++ }
++}
++
+ static void init_connection_info(struct amqp_connection_info *ci) {
+ ci->user = NULL;
+ ci->password = NULL;
+@@ -237,6 +289,8 @@ static void init_connection_info(struct amqp_connection_info *ci) {
+ if (amqp_username) {
+ if (amqp_url) {
+ die("--username and --url options cannot be used at the same time");
++ } else if (amqp_authfile) {
++ die("--username and --authfile options cannot be used at the same time");
+ }
+
+ ci->user = amqp_username;
+@@ -245,11 +299,23 @@ static void init_connection_info(struct amqp_connection_info *ci) {
+ if (amqp_password) {
+ if (amqp_url) {
+ die("--password and --url options cannot be used at the same time");
++ } else if (amqp_authfile) {
++ die("--password and --authfile options cannot be used at the same time");
+ }
+
+ ci->password = amqp_password;
+ }
+
++ if (amqp_authfile) {
++ if (amqp_url) {
++ die("--authfile and --url options cannot be used at the same time");
++ }
++
++ read_authfile(amqp_authfile);
++ ci->user = amqp_username;
++ ci->password = amqp_password;
++ }
++
+ if (amqp_vhost) {
+ if (amqp_url) {
+ die("--vhost and --url options cannot be used at the same time");
diff --git a/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.13.0.bb b/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.13.0.bb
new file mode 100644
index 0000000000..ea80ec3344
--- /dev/null
+++ b/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.13.0.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "A C-language AMQP client library for use with v2.0+ of the RabbitMQ broker"
+HOMEPAGE = "https://github.com/alanxz/rabbitmq-c"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7e12f6e40e662e039e2f02b4893011ec"
+LICENSE = "MIT"
+
+SRC_URI = "git://github.com/alanxz/rabbitmq-c.git;branch=master;protocol=https \
+ file://CVE-2023-35789.patch \
+"
+# v0.13.0-master
+SRCREV = "974d71adceae6d742ae20a4c880d99c131f1460a"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "popt openssl"
+
+EXTRA_OECMAKE = "-DBUILD_EXAMPLES=OFF -DBUILD_TOOLS=ON -DBUILD_TOOLS_DOCS=OFF -DBUILD_API_DOCS=OFF"
+
+inherit cmake pkgconfig
+
+PACKAGE_BEFORE_PN += "${PN}-tools"
+FILES:${PN}-tools = "${bindir}"
diff --git a/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.7.0.bb b/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.7.0.bb
deleted file mode 100644
index e9846fdea5..0000000000
--- a/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.7.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "A C-language AMQP client library for use with v2.0+ of the RabbitMQ broker"
-HOMEPAGE = "https://github.com/alanxz/rabbitmq-c"
-LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=6b7424f9db80cfb11fdd5c980b583f53"
-LICENSE = "MIT"
-
-SRC_URI = "git://github.com/alanxz/rabbitmq-c.git"
-SRCREV = "4dde30ce8d984edda540349f57eb7995a87ba9de"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "popt openssl"
-
-EXTRA_OECONF = "--disable-examples --enable-tools --disable-docs"
-
-inherit autotools pkgconfig
-
-PACKAGE_BEFORE_PN += "${PN}-tools"
-FILES_${PN}-tools = "${bindir}"
diff --git a/meta-oe/recipes-connectivity/rfkill/rfkill/0001-rfkill-makefile-don-t-use-t-the-OE-install-wrapper-d.patch b/meta-oe/recipes-connectivity/rfkill/rfkill/0001-rfkill-makefile-don-t-use-t-the-OE-install-wrapper-d.patch
index c6f60d0ede..89a7d6f34a 100644
--- a/meta-oe/recipes-connectivity/rfkill/rfkill/0001-rfkill-makefile-don-t-use-t-the-OE-install-wrapper-d.patch
+++ b/meta-oe/recipes-connectivity/rfkill/rfkill/0001-rfkill-makefile-don-t-use-t-the-OE-install-wrapper-d.patch
@@ -5,6 +5,8 @@ Subject: [PATCH] rfkill makefile: don't use -t, the OE install wrapper dislikes
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
---
+Upstream-Status: Pending
+
Makefile | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta-oe/recipes-connectivity/rfkill/rfkill/dont.call.git.rev-parse.on.parent.dir.patch b/meta-oe/recipes-connectivity/rfkill/rfkill/dont.call.git.rev-parse.on.parent.dir.patch
index 2b83689127..020419ea8a 100644
--- a/meta-oe/recipes-connectivity/rfkill/rfkill/dont.call.git.rev-parse.on.parent.dir.patch
+++ b/meta-oe/recipes-connectivity/rfkill/rfkill/dont.call.git.rev-parse.on.parent.dir.patch
@@ -1,3 +1,5 @@
+Upstream-Status: Pending
+
When WORKDIR is included in some other git checkout, version.sh calls git rev-parse
and it returns some description from that upper git checkout even when rfkill is
being built from release tarball.
diff --git a/meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb b/meta-oe/recipes-connectivity/rfkill/rfkill_1.0.bb
index 3e644760ce..c9c0738abe 100644
--- a/meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb
+++ b/meta-oe/recipes-connectivity/rfkill/rfkill_1.0.bb
@@ -1,15 +1,14 @@
SUMMARY = "Radio enable/disable command line utility"
HOMEPAGE = "http://linuxwireless.org/en/users/Documentation/rfkill"
SECTION = "base"
-LICENSE = "BSD"
+LICENSE = "0BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=c6036d0eb7edbfced28c4160e5d3fa94"
-SRC_URI = "http://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.bz2 \
+SRC_URI = "http://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz \
file://0001-rfkill-makefile-don-t-use-t-the-OE-install-wrapper-d.patch \
file://dont.call.git.rev-parse.on.parent.dir.patch"
-SRC_URI[md5sum] = "b957713a6cfbcd8ac0e94420aeddcf1a"
-SRC_URI[sha256sum] = "3e160cca504a53679f2b3254f31c53a4fb38a021bc50fed8eb57a436d33dfa07"
+SRC_URI[sha256sum] = "dffc631c611520478b8a286f57c67a35e8cb5802d376c6ca13b057365432389c"
do_compile() {
oe_runmake
@@ -21,7 +20,6 @@ do_install() {
inherit update-alternatives
-ALTERNATIVE_${PN} = "rfkill"
+ALTERNATIVE:${PN} = "rfkill"
ALTERNATIVE_PRIORITY = "60"
ALTERNATIVE_LINK_NAME[rfkill] = "${sbindir}/rfkill"
-
diff --git a/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch b/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch
deleted file mode 100644
index 79d4f29fab..0000000000
--- a/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-Using AC_RUN_IFELSE prevent people from configuring package for
-cross-compiling. Don't run code while configuring package.
-
-Upstream-Status: Pending
-Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
-
-Index: libtorrent-0.13.3/scripts/checks.m4
-===================================================================
---- libtorrent-0.13.3.orig/scripts/checks.m4 2012-05-14 14:17:04.000000000 +0300
-+++ libtorrent-0.13.3/scripts/checks.m4 2013-02-10 15:28:37.414445524 +0200
-@@ -95,40 +95,6 @@
-
- AC_DEFUN([TORRENT_CHECK_KQUEUE_SOCKET_ONLY], [
- AC_MSG_CHECKING(whether kqueue supports pipes and ptys)
--
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
-- #include <fcntl.h>
-- #include <stdlib.h>
-- #include <unistd.h>
-- #include <sys/event.h>
-- #include <sys/time.h>
-- int main() {
-- struct kevent ev@<:@2@:>@, ev_out@<:@2@:>@;
-- struct timespec ts = { 0, 0 };
-- int pfd@<:@2@:>@, pty@<:@2@:>@, kfd, n;
-- char buffer@<:@9001@:>@;
-- if (pipe(pfd) == -1) return 1;
-- if (fcntl(pfd@<:@1@:>@, F_SETFL, O_NONBLOCK) == -1) return 2;
-- while ((n = write(pfd@<:@1@:>@, buffer, sizeof(buffer))) == sizeof(buffer));
-- if ((pty@<:@0@:>@=posix_openpt(O_RDWR | O_NOCTTY)) == -1) return 3;
-- if ((pty@<:@1@:>@=grantpt(pty@<:@0@:>@)) == -1) return 4;
-- EV_SET(ev+0, pfd@<:@1@:>@, EVFILT_WRITE, EV_ADD | EV_ENABLE, 0, 0, NULL);
-- EV_SET(ev+1, pty@<:@1@:>@, EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, NULL);
-- if ((kfd = kqueue()) == -1) return 5;
-- if ((n = kevent(kfd, ev, 2, NULL, 0, NULL)) == -1) return 6;
-- if (ev_out@<:@0@:>@.flags & EV_ERROR) return 7;
-- if (ev_out@<:@1@:>@.flags & EV_ERROR) return 8;
-- read(pfd@<:@0@:>@, buffer, sizeof(buffer));
-- if ((n = kevent(kfd, NULL, 0, ev_out, 2, &ts)) < 1) return 9;
-- return 0;
-- }
-- ])],
-- [
-- AC_MSG_RESULT(yes)
-- ], [
-- AC_DEFINE(KQUEUE_SOCKET_ONLY, 1, kqueue only supports sockets.)
-- AC_MSG_RESULT(no)
-- ])
- ])
-
- AC_DEFUN([TORRENT_WITH_KQUEUE], [
-Index: libtorrent-0.13.3/scripts/common.m4
-===================================================================
---- libtorrent-0.13.3.orig/scripts/common.m4 2012-05-14 14:17:04.000000000 +0300
-+++ libtorrent-0.13.3/scripts/common.m4 2013-02-10 15:27:55.874446741 +0200
-@@ -222,38 +222,10 @@
-
- AC_DEFUN([TORRENT_CHECK_EXECINFO], [
- AC_MSG_CHECKING(for execinfo.h)
--
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
-- #include <execinfo.h>
-- int main() { backtrace((void**)0, 0); backtrace_symbols((char**)0, 0); return 0;}
-- ])],
-- [
-- AC_MSG_RESULT(yes)
-- AC_DEFINE(USE_EXECINFO, 1, Use execinfo.h)
-- ], [
-- AC_MSG_RESULT(no)
-- ])
- ])
-
- AC_DEFUN([TORRENT_CHECK_ALIGNED], [
- AC_MSG_CHECKING(the byte alignment)
--
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
-- #include <inttypes.h>
-- int main() {
-- char buf@<:@8@:>@ = { 0, 0, 0, 0, 1, 0, 0, 0 };
-- int i;
-- for (i = 1; i < 4; ++i)
-- if (*(uint32_t*)(buf + i) == 0) return -1;
-- return 0;
-- }
-- ])],
-- [
-- AC_MSG_RESULT(none needed)
-- ], [
-- AC_DEFINE(USE_ALIGNED, 1, Require byte alignment)
-- AC_MSG_RESULT(required)
-- ])
- ])
-
-
diff --git a/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb b/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
index c731cf7079..d9cca404d7 100644
--- a/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
+++ b/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
@@ -1,16 +1,14 @@
SUMMARY = "Torrent client"
HOMEPAGE = "http://libtorrent.rakshasa.no/"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-DEPENDS = "libsigc++-2.0 curl cppunit libtorrent ncurses"
+DEPENDS = "autoconf-archive libsigc++-2.0 curl cppunit libtool libtorrent ncurses"
-SRC_URI = "git://github.com/rakshasa/rtorrent \
- file://don-t-run-code-while-configuring-package.patch \
-"
-SRCREV = "226e670decf92e7adaa845a6982aca4f164ea740"
+SRC_URI = "git://github.com/rakshasa/rtorrent;branch=master;protocol=https"
+SRCREV = "d067bd802e44f0e6a747aabcc311ada2175fd550"
-PV = "0.9.6+git${SRCPV}"
+PV = "0.9.8+git"
S = "${WORKDIR}/git"
@@ -20,6 +18,6 @@ PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
inherit autotools pkgconfig
-do_configure_prepend() {
- (cd ${S}; ./autogen.sh; cd -)
-}
+EXTRA_AUTORECONF += "--exclude=aclocal"
+
+CXXFLAGS += "-std=gnu++14"
diff --git a/meta-oe/recipes-connectivity/ser2net/files/ser2net.service b/meta-oe/recipes-connectivity/ser2net/files/ser2net.service
new file mode 100644
index 0000000000..13d8ee4ff3
--- /dev/null
+++ b/meta-oe/recipes-connectivity/ser2net/files/ser2net.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Serial port to network proxy
+Documentation=man:ser2net(8)
+After=network.target
+Wants=network.target
+ConditionFileNotEmpty=@SYSCONFDIR@/ser2net/ser2net.yaml
+
+[Service]
+Type=exec
+ExecStart=@SBINDIR@/ser2net -n
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-oe/recipes-connectivity/ser2net/ser2net_3.4.bb b/meta-oe/recipes-connectivity/ser2net/ser2net_3.4.bb
deleted file mode 100644
index 708650fb9b..0000000000
--- a/meta-oe/recipes-connectivity/ser2net/ser2net_3.4.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "A serial to network proxy"
-SECTION = "console/network"
-HOMEPAGE = "http://sourceforge.net/projects/ser2net/"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/ser2net/ser2net/ser2net-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "562274d783534276a9feac913b7d8c4e"
-SRC_URI[sha256sum] = "d846066e27c3072565990745d030357aa0c278f96b7d1d4f59023347c1db8824"
-
-inherit autotools pkgconfig
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-oe/recipes-connectivity/ser2net/ser2net_4.6.2.bb b/meta-oe/recipes-connectivity/ser2net/ser2net_4.6.2.bb
new file mode 100644
index 0000000000..f23692816c
--- /dev/null
+++ b/meta-oe/recipes-connectivity/ser2net/ser2net_4.6.2.bb
@@ -0,0 +1,30 @@
+SUMMARY = "A serial to network proxy"
+SECTION = "console/network"
+HOMEPAGE = "http://sourceforge.net/projects/ser2net/"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "gensio libyaml"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/ser2net/ser2net/ser2net-${PV}.tar.gz \
+ file://ser2net.service \
+"
+
+SRC_URI[sha256sum] = "63bafcd65bb9270a93b7d5cdde58ccf4d279603ff6d044ac4b484a257cda82ce"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/ser2net/files/ser2net"
+
+inherit autotools pkgconfig systemd
+
+SYSTEMD_SERVICE:${PN} = "ser2net.service"
+
+CONFFILES:${PN} += "${sysconfdir}/ser2net/ser2net.yaml"
+
+do_install:append() {
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -d ${D}${systemd_unitdir}/system
+ install -m 0644 ${UNPACKDIR}/ser2net.service ${D}${systemd_unitdir}/system/
+ sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/ser2net.service
+ fi
+}
diff --git a/meta-oe/recipes-connectivity/smstools3/smstools3/0001-Make-extern-declarations-to-avoid-duplicate-var-defi.patch b/meta-oe/recipes-connectivity/smstools3/smstools3/0001-Make-extern-declarations-to-avoid-duplicate-var-defi.patch
new file mode 100644
index 0000000000..c714f74916
--- /dev/null
+++ b/meta-oe/recipes-connectivity/smstools3/smstools3/0001-Make-extern-declarations-to-avoid-duplicate-var-defi.patch
@@ -0,0 +1,606 @@
+From 77532d2e99252e3e07afa0f918bb8c9d73798f39 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 13 Aug 2020 16:56:22 -0700
+Subject: [PATCH] Make extern declarations to avoid duplicate var definitions
+
+gcc-10+ defaults to -fno-common which flags these errors about mulitple
+definitions since the variables are defined in header files which are
+included from multiple sources, this patch ensures that extern
+declaration is added appropriately
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/blacklist.c | 2 +-
+ src/blacklist.h | 2 +-
+ src/charset.c | 2 +-
+ src/charshift.c | 2 +-
+ src/logging.c | 2 +-
+ src/logging.h | 4 +-
+ src/modeminit.c | 6 +-
+ src/smsd_cfg.c | 2 +
+ src/smsd_cfg.h | 274 ++++++++++++++++++++++++------------------------
+ src/stats.h | 22 ++--
+ src/whitelist.c | 2 +-
+ src/whitelist.h | 2 +-
+ 12 files changed, 164 insertions(+), 158 deletions(-)
+
+diff --git a/src/blacklist.c b/src/blacklist.c
+index 7440cca..0c00dd9 100755
+--- a/src/blacklist.c
++++ b/src/blacklist.c
+@@ -17,11 +17,11 @@ Either version 2 of the License, or (at your option) any later version.
+ #include <stdlib.h>
+ #include <string.h>
+ #include <signal.h>
++#include "smsd_cfg.h"
+ #include "blacklist.h"
+ #include "extras.h"
+ #include "logging.h"
+ #include "alarm.h"
+-#include "smsd_cfg.h"
+
+ int inblacklist(char* msisdn)
+ {
+diff --git a/src/blacklist.h b/src/blacklist.h
+index 4f99050..61fd294 100755
+--- a/src/blacklist.h
++++ b/src/blacklist.h
+@@ -15,7 +15,7 @@ Either version 2 of the License, or (at your option) any later version.
+ #ifndef BLACK_H
+ #define BLACK_H
+
+-char blacklist[256]; // Filename of the black-list
++EXTERN char blacklist[256]; // Filename of the black-list
+
+ int inblacklist(char* msisdn);
+
+diff --git a/src/charset.c b/src/charset.c
+index cd7c997..1716d70 100755
+--- a/src/charset.c
++++ b/src/charset.c
+@@ -19,9 +19,9 @@ Either version 2 of the License, or (at your option) any later version.
+ #include <syslog.h>
+ #include <ctype.h>
+
++#include "smsd_cfg.h"
+ #include "charset.h"
+ #include "logging.h"
+-#include "smsd_cfg.h"
+ #include "pdu.h"
+ #include "extras.h"
+ #include "charshift.h"
+diff --git a/src/charshift.c b/src/charshift.c
+index 48ba340..2d7b26c 100755
+--- a/src/charshift.c
++++ b/src/charshift.c
+@@ -25,8 +25,8 @@ Either version 2 of the License, or (at your option) any later version.
+ #include <stdio.h>
+ #include <stdarg.h>
+
+-#include "logging.h"
+ #include "smsd_cfg.h"
++#include "logging.h"
+ #include "pdu.h"
+ #include "charset.h"
+ #include "extras.h"
+diff --git a/src/logging.c b/src/logging.c
+index 6ee2c4e..4af341f 100755
+--- a/src/logging.c
++++ b/src/logging.c
+@@ -12,6 +12,7 @@ the GNU General Public License as published by the Free Software Foundation.
+ Either version 2 of the License, or (at your option) any later version.
+ */
+
++#include "smsd_cfg.h"
+ #include "logging.h"
+ #include "extras.h"
+ #include <stdio.h>
+@@ -22,7 +23,6 @@ Either version 2 of the License, or (at your option) any later version.
+ #include <time.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+-#include "smsd_cfg.h"
+ #include "stats.h"
+
+ int Filehandle = -1;
+diff --git a/src/logging.h b/src/logging.h
+index 4f27906..4550234 100755
+--- a/src/logging.h
++++ b/src/logging.h
+@@ -18,7 +18,7 @@ Either version 2 of the License, or (at your option) any later version.
+ #include <time.h>
+
+ // 3.1.16beta2: Moved logch() and prch() from charset.c to logging.c:
+-char logch_buffer[8192];
++EXTERN char logch_buffer[8192];
+
+ #ifdef __GNUC__
+ void logch(char* format, ...) __attribute__ ((format(printf, 1, 2)));
+@@ -30,7 +30,7 @@ char prch(char ch);
+
+ // 3.1.16beta: changed type:
+ //int trouble_logging_started;
+-time_t trouble_logging_started;
++EXTERN time_t trouble_logging_started;
+
+ int change_loglevel(int new_level);
+ void restore_loglevel();
+diff --git a/src/modeminit.c b/src/modeminit.c
+index 42ff6b4..0d05fe9 100755
+--- a/src/modeminit.c
++++ b/src/modeminit.c
+@@ -19,8 +19,6 @@ Either version 2 of the License, or (at your option) any later version.
+ #include <regex.h>
+ #include <ctype.h>
+ #include <time.h>
+-#include "logging.h"
+-#include "alarm.h"
+
+ #ifdef SOLARIS
+ #include <sys/filio.h>
+@@ -42,9 +40,11 @@ Either version 2 of the License, or (at your option) any later version.
+ #include <netdb.h>
+ #endif
+
++#include "smsd_cfg.h"
++#include "logging.h"
++#include "alarm.h"
+ #include "extras.h"
+ #include "modeminit.h"
+-#include "smsd_cfg.h"
+ #include "version.h"
+ #include "pdu.h"
+ #include "stats.h"
+diff --git a/src/smsd_cfg.c b/src/smsd_cfg.c
+index 35c1198..32472b4 100755
+--- a/src/smsd_cfg.c
++++ b/src/smsd_cfg.c
+@@ -26,6 +26,8 @@ Either version 2 of the License, or (at your option) any later version.
+ #include <ctype.h>
+ #include <grp.h>
+
++#define EXTERN
++
+ #include "extras.h"
+ #include "cfgfile.h"
+ #include "smsd_cfg.h"
+diff --git a/src/smsd_cfg.h b/src/smsd_cfg.h
+index 8ae208d..d6ece37 100755
+--- a/src/smsd_cfg.h
++++ b/src/smsd_cfg.h
+@@ -15,6 +15,10 @@ Either version 2 of the License, or (at your option) any later version.
+ #ifndef SMSD_CFG_H
+ #define SMSD_CFG_H
+
++#ifndef EXTERN
++#define EXTERN extern
++#endif
++
+ #include <limits.h>
+ #include <sys/types.h>
+ #include <time.h>
+@@ -126,17 +130,17 @@ Either version 2 of the License, or (at your option) any later version.
+ #define ALPHABET_UNKNOWN 4
+ #define ALPHABET_DEFAULT 0
+
+-char process_title[32]; // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks.
+-int process_id; // -1 for main task, all modems have numbers starting with 0.
++EXTERN char process_title[32]; // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks.
++EXTERN int process_id; // -1 for main task, all modems have numbers starting with 0.
+ // This is the same as device, can be used like devices[process_id] if IS_MODEM_PROCESS.
+
+-time_t process_start_time;
++EXTERN time_t process_start_time;
+
+-int modem_handle; // Handle for modem.
++EXTERN int modem_handle; // Handle for modem.
+
+-int put_command_timeouts;
+-unsigned long long put_command_sent; // 3.1.16beta.
+-char tmpdir[PATH_MAX]; // 3.1.16beta.
++EXTERN int put_command_timeouts;
++EXTERN unsigned long long put_command_sent; // 3.1.16beta.
++EXTERN char tmpdir[PATH_MAX]; // 3.1.16beta.
+
+ typedef struct
+ {
+@@ -284,204 +288,204 @@ typedef struct
+
+ // NOTE for regular run intervals: effective value is at least delaytime.
+
+-char configfile[PATH_MAX]; // Path to config file
+-char d_spool[PATH_MAX]; // Spool directory
+-char d_failed[PATH_MAX]; // Failed spool directory
+-char d_failed_copy[PATH_MAX]; // 3.1.17.
+-char d_incoming[PATH_MAX]; // Incoming spool directory
+-char d_incoming_copy[PATH_MAX]; // 3.1.16beta2.
+-char d_report[PATH_MAX]; // Incoming report spool directory
+-char d_report_copy[PATH_MAX]; // 3.1.17.
+-char d_phonecalls[PATH_MAX]; // Incoming phonecalls data directory
+-char d_saved[PATH_MAX]; // Directory for smsd's internal use, concatenation storage files etc.
+-char d_sent[PATH_MAX]; // Sent spool directory
+-char d_sent_copy[PATH_MAX]; // 3.1.17.
+-char d_checked[PATH_MAX]; // Spool directory for checked messages (only used when no provider queues used)
+-char eventhandler[PATH_MAX]; // Global event handler program or script
+-char alarmhandler[PATH_MAX]; // Global alarm handler program or script
+-char checkhandler[PATH_MAX]; // Handler that checks if the sms file is valid.
+-int alarmlevel; // Alarm Level (9=highest). Verbosity of alarm handler.
+-char logfile[PATH_MAX]; // Name or Handle of Log File
+-int loglevel; // Log Level (9=highest). Verbosity of log file.
+-_queue queues[NUMBER_OF_MODEMS]; // Queues
+-_device devices[NUMBER_OF_MODEMS]; // Modem devices
+-int delaytime; // sleep-time after workless
+-int delaytime_mainprocess; // sleep-time after workless, main process. If -1, delaytime is used.
+-int blocktime; // sleep-time after multiple errors
+-int blockafter; // Block modem after n errors
+-int errorsleeptime; // sleep-time after each error
+-int autosplit; // Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH
+-int receive_before_send; // if 1 smsd tries to receive one message before sending
+-int store_received_pdu; // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all
+-int store_sent_pdu; // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all
+-int validity_period; // Validity period for messages.
+-int decode_unicode_text; // 1 if unicode text is decoded internally.
+-int internal_combine; // 1 if multipart message is combined internally.
+-int internal_combine_binary; // 1 if multipart binary message is combined internally. Defaults to internal_combine.
+-int keep_filename; // 0 if unique filename is created to each directory when a message file is moved.
+-int store_original_filename; // 1 if an original filename is saved to message file when it's moved from
++EXTERN char configfile[PATH_MAX]; // Path to config file
++EXTERN char d_spool[PATH_MAX]; // Spool directory
++EXTERN char d_failed[PATH_MAX]; // Failed spool directory
++EXTERN char d_failed_copy[PATH_MAX]; // 3.1.17.
++EXTERN char d_incoming[PATH_MAX]; // Incoming spool directory
++EXTERN char d_incoming_copy[PATH_MAX]; // 3.1.16beta2.
++EXTERN char d_report[PATH_MAX]; // Incoming report spool directory
++EXTERN char d_report_copy[PATH_MAX]; // 3.1.17.
++EXTERN char d_phonecalls[PATH_MAX]; // Incoming phonecalls data directory
++EXTERN char d_saved[PATH_MAX]; // Directory for smsd's internal use, concatenation storage files etc.
++EXTERN char d_sent[PATH_MAX]; // Sent spool directory
++EXTERN char d_sent_copy[PATH_MAX]; // 3.1.17.
++EXTERN char d_checked[PATH_MAX]; // Spool directory for checked messages (only used when no provider queues used)
++EXTERN char eventhandler[PATH_MAX]; // Global event handler program or script
++EXTERN char alarmhandler[PATH_MAX]; // Global alarm handler program or script
++EXTERN char checkhandler[PATH_MAX]; // Handler that checks if the sms file is valid.
++EXTERN int alarmlevel; // Alarm Level (9=highest). Verbosity of alarm handler.
++EXTERN char logfile[PATH_MAX]; // Name or Handle of Log File
++EXTERN int loglevel; // Log Level (9=highest). Verbosity of log file.
++EXTERN _queue queues[NUMBER_OF_MODEMS]; // Queues
++EXTERN _device devices[NUMBER_OF_MODEMS]; // Modem devices
++EXTERN int delaytime; // sleep-time after workless
++EXTERN int delaytime_mainprocess; // sleep-time after workless, main process. If -1, delaytime is used.
++EXTERN int blocktime; // sleep-time after multiple errors
++EXTERN int blockafter; // Block modem after n errors
++EXTERN int errorsleeptime; // sleep-time after each error
++EXTERN int autosplit; // Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH
++EXTERN int receive_before_send; // if 1 smsd tries to receive one message before sending
++EXTERN int store_received_pdu; // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all
++EXTERN int store_sent_pdu; // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all
++EXTERN int validity_period; // Validity period for messages.
++EXTERN int decode_unicode_text; // 1 if unicode text is decoded internally.
++EXTERN int internal_combine; // 1 if multipart message is combined internally.
++EXTERN int internal_combine_binary; // 1 if multipart binary message is combined internally. Defaults to internal_combine.
++EXTERN int keep_filename; // 0 if unique filename is created to each directory when a message file is moved.
++EXTERN int store_original_filename; // 1 if an original filename is saved to message file when it's moved from
+ // outgoing directory to spooler. Works together with keep_filename.
+-int date_filename; // 1 or 2 if YYYYMMDD is included to the filename of incoming message.
+-char regular_run[PATH_MAX]; // Script/program which is run regularly.
+-int regular_run_interval; // Number of seconds between running a regular_run script/progdam.
+-char admin_to[SIZE_TO]; // Destination number for administrative messages.
+-int filename_preview; // Number of chars of message text to concatenate to filename.
+-int incoming_utf8; // 1 if incoming files are saved using UTF-8 character set.
+-int outgoing_utf8; // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM.
+-int log_charconv; // 1 if character set conversion is logged.
+-int log_single_lines; // 1 if linefeeds are removed from the modem response to be logged.
+-int executable_check; // 0 if eventhandler and other executables are NOT checked during the startup checking.
+-int keep_messages; // For testing purposes: messages are not deleted and smsd stops after first run.
+-char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages.
+-int ic_purge_hours; // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes
+-int ic_purge_minutes; // and if there is message parts older than defined, they are handled or deleted.
+-int ic_purge_read; // 1 = message parts are stored as single messages. 0 = parts are just deleted.
+-int ic_purge_interval; //
+-char shell[PATH_MAX]; // Shell used to run eventhandler, defaults to /bin/sh
+-char adminmessage_device[32]; // Name of device used to send administrative messages of mainspooler.
+-int smart_logging; // 1 = if loglevel is less than 7, degug log is written is there has been any errors.
+-int status_signal_quality; // 1 = signal quality is written to status file.
+-int status_include_counters; // 1 = succeeded, failed and received counters are included in the status line.
+-int status_include_uptime; // 3.1.16beta: 1 = include started & uptime line in the status file.
+-int hangup_incoming_call; // 1 = if detected unexpected input contains RING and we want to end call.
+-int max_continuous_sending; // Defines when sending is breaked to do check/do other tasks. Time in minutes.
+-int voicecall_hangup_ath; // If ATH is used instead of AT+CHUP.
++EXTERN int date_filename; // 1 or 2 if YYYYMMDD is included to the filename of incoming message.
++EXTERN char regular_run[PATH_MAX]; // Script/program which is run regularly.
++EXTERN int regular_run_interval; // Number of seconds between running a regular_run script/progdam.
++EXTERN char admin_to[SIZE_TO]; // Destination number for administrative messages.
++EXTERN int filename_preview; // Number of chars of message text to concatenate to filename.
++EXTERN int incoming_utf8; // 1 if incoming files are saved using UTF-8 character set.
++EXTERN int outgoing_utf8; // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM.
++EXTERN int log_charconv; // 1 if character set conversion is logged.
++EXTERN int log_single_lines; // 1 if linefeeds are removed from the modem response to be logged.
++EXTERN int executable_check; // 0 if eventhandler and other executables are NOT checked during the startup checking.
++EXTERN int keep_messages; // For testing purposes: messages are not deleted and smsd stops after first run.
++EXTERN char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages.
++EXTERN int ic_purge_hours; // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes
++EXTERN int ic_purge_minutes; // and if there is message parts older than defined, they are handled or deleted.
++EXTERN int ic_purge_read; // 1 = message parts are stored as single messages. 0 = parts are just deleted.
++EXTERN int ic_purge_interval; //
++EXTERN char shell[PATH_MAX]; // Shell used to run eventhandler, defaults to /bin/sh
++EXTERN char adminmessage_device[32]; // Name of device used to send administrative messages of mainspooler.
++EXTERN int smart_logging; // 1 = if loglevel is less than 7, degug log is written is there has been any errors.
++EXTERN int status_signal_quality; // 1 = signal quality is written to status file.
++EXTERN int status_include_counters; // 1 = succeeded, failed and received counters are included in the status line.
++EXTERN int status_include_uptime; // 3.1.16beta: 1 = include started & uptime line in the status file.
++EXTERN int hangup_incoming_call; // 1 = if detected unexpected input contains RING and we want to end call.
++EXTERN int max_continuous_sending; // Defines when sending is breaked to do check/do other tasks. Time in minutes.
++EXTERN int voicecall_hangup_ath; // If ATH is used instead of AT+CHUP.
+
+ // 3.1.5:
+-int trust_outgoing; // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling.
++EXTERN int trust_outgoing; // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling.
+
+ // 3.1.5:
+-int ignore_outgoing_priority; // 1 = Priority: high header is not checked. Speeds up spooling.
++EXTERN int ignore_outgoing_priority; // 1 = Priority: high header is not checked. Speeds up spooling.
+
+ // 3.1.7:
+-int ignore_exec_output; // 1 = stdout and stderr of eventhandlers is _not_ checked.
++EXTERN int ignore_exec_output; // 1 = stdout and stderr of eventhandlers is _not_ checked.
+
+ // 3.1.7:
+-mode_t conf_umask; // File mode creation mask for smsd and modem processes.
++EXTERN mode_t conf_umask; // File mode creation mask for smsd and modem processes.
+
+ // 3.1.7:
+-int trim_text; // 1 = trailing whitespaces are removed from text:
++EXTERN int trim_text; // 1 = trailing whitespaces are removed from text:
+
+ // 3.1.7:
+-int use_linux_ps_trick; // 1 = change argv[0] to "smsd: MAINPROCESS", "smsd: GSM1" etc.
++EXTERN int use_linux_ps_trick; // 1 = change argv[0] to "smsd: MAINPROCESS", "smsd: GSM1" etc.
+
+ // 3.1.7:
+-int log_unmodified;
++EXTERN int log_unmodified;
+
+ // 3.1.7:
+-char suspend_filename[PATH_MAX];
++EXTERN char suspend_filename[PATH_MAX];
+
+ // 3.1.9:
+-int spool_directory_order;
++EXTERN int spool_directory_order;
+
+ // 3.1.9: 1 if read_from_modem is logged.
+-int log_read_from_modem;
++EXTERN int log_read_from_modem;
+
+ // 3.1.16beta2: log_read_timing for performance tuning.
+-int log_read_timing;
++EXTERN int log_read_timing;
+
+ // 3.1.16beta:
+-int log_response_time;
++EXTERN int log_response_time;
+
+ // 3.1.16beta2:
+-int default_alphabet;
++EXTERN int default_alphabet;
+
+ // 3.1.17: Child process for the mainprocess:
+-char mainprocess_child[PATH_MAX];
+-char mainprocess_child_args[PATH_MAX];
++EXTERN char mainprocess_child[PATH_MAX];
++EXTERN char mainprocess_child_args[PATH_MAX];
+
+ // 3.1.17: Notifier for the mainprocess:
+-int mainprocess_notifier;
++EXTERN int mainprocess_notifier;
+
+ // 3.1.17: If *_copy was made, evenhandler can use it instead of original file:
+-int eventhandler_use_copy;
++EXTERN int eventhandler_use_copy;
+
+ // 3.1.17: This defines how long to sleep while looping:
+-int sleeptime_mainprocess;
++EXTERN int sleeptime_mainprocess;
+
+ // 3.1.17: Defines how often PID is checked to detect if another smsd is running:
+-int check_pid_interval;
++EXTERN int check_pid_interval;
+
+ // 3.1.18: start script/program for mainprocess:
+-char mainprocess_start[PATH_MAX];
+-char mainprocess_start_args[PATH_MAX];
++EXTERN char mainprocess_start[PATH_MAX];
++EXTERN char mainprocess_start_args[PATH_MAX];
+
+-int message_count; // Counter for sent messages. Multipart message is one message.
++EXTERN int message_count; // Counter for sent messages. Multipart message is one message.
+
+-volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received.
+-volatile sig_atomic_t terminate; // To terminate when SIGTERM is received.
++EXTERN volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received.
++EXTERN volatile sig_atomic_t terminate; // To terminate when SIGTERM is received.
+
+-char username[65]; // user and group name which are used to run.
+-char groupname[65]; // (max length is just a guess)
++EXTERN char username[65]; // user and group name which are used to run.
++EXTERN char groupname[65]; // (max length is just a guess)
+
+-char infofile[PATH_MAX]; // Hepler file for stopping the smsd smoothly.
+-char pidfile[PATH_MAX]; // File where a process id is stored.
++EXTERN char infofile[PATH_MAX]; // Hepler file for stopping the smsd smoothly.
++EXTERN char pidfile[PATH_MAX]; // File where a process id is stored.
+
+ // Command line arguments:
+-char arg_username[65];
+-char arg_groupname[65];
+-char arg_infofile[PATH_MAX];
+-char arg_pidfile[PATH_MAX];
+-char arg_logfile[PATH_MAX];
+-int arg_terminal;
++EXTERN char arg_username[65];
++EXTERN char arg_groupname[65];
++EXTERN char arg_infofile[PATH_MAX];
++EXTERN char arg_pidfile[PATH_MAX];
++EXTERN char arg_logfile[PATH_MAX];
++EXTERN int arg_terminal;
+ // 3.1.7:
+-char arg_7bit_packed[512];
+-int do_encode_decode_arg_7bit_packed;
++EXTERN char arg_7bit_packed[512];
++EXTERN int do_encode_decode_arg_7bit_packed;
+
+-int terminal; // 1 if smsd is communicating with terminal.
+-pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes.
+-char run_info[PATH_MAX]; // Information about external script/program execution.
++EXTERN int terminal; // 1 if smsd is communicating with terminal.
++EXTERN pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes.
++EXTERN char run_info[PATH_MAX]; // Information about external script/program execution.
+
+-char communicate[32]; // Device name for terminal communication mode.
++EXTERN char communicate[32]; // Device name for terminal communication mode.
+
+-char international_prefixes[PATH_MAX +1];
+-char national_prefixes[PATH_MAX +1];
++EXTERN char international_prefixes[PATH_MAX +1];
++EXTERN char national_prefixes[PATH_MAX +1];
+
+ // Storage for startup errors:
+-char *startup_err_str;
+-int startup_err_count;
++EXTERN char *startup_err_str;
++EXTERN int startup_err_count;
+
+ // Storage for PDU's:
+-char *incoming_pdu_store;
+-char *outgoing_pdu_store;
+-char *routed_pdu_store;
++EXTERN char *incoming_pdu_store;
++EXTERN char *outgoing_pdu_store;
++EXTERN char *routed_pdu_store;
+
+ // Storage for getfile errors:
+-char *getfile_err_store;
++EXTERN char *getfile_err_store;
+
+ // Text buffer for error messages:
+-char tb[SIZE_TB];
++EXTERN char tb[SIZE_TB];
+
+ // Buffer for SIM memory checking:
+-char *check_memory_buffer;
+-size_t check_memory_buffer_size;
++EXTERN char *check_memory_buffer;
++EXTERN size_t check_memory_buffer_size;
+
+-int os_cygwin; // 1 if we are on Cygwin.
++EXTERN int os_cygwin; // 1 if we are on Cygwin.
+
+-char language_file[PATH_MAX]; // File name of translated headers.
+-char yes_chars[SIZE_HEADER]; // Characters which mean "yes" in the yesno() question.
+-char no_chars[SIZE_HEADER]; // See details inside read_translation() function.
+-char yes_word[SIZE_HEADER]; // "yes" printed as an output.
+-char no_word[SIZE_HEADER]; // "no"
+-char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports).
+-char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps
+-char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename
+-int translate_incoming; // 0 if incoming message headers are NOT transtaled.
++EXTERN char language_file[PATH_MAX]; // File name of translated headers.
++EXTERN char yes_chars[SIZE_HEADER]; // Characters which mean "yes" in the yesno() question.
++EXTERN char no_chars[SIZE_HEADER]; // See details inside read_translation() function.
++EXTERN char yes_word[SIZE_HEADER]; // "yes" printed as an output.
++EXTERN char no_word[SIZE_HEADER]; // "no"
++EXTERN char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports).
++EXTERN char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps
++EXTERN char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename
++EXTERN int translate_incoming; // 0 if incoming message headers are NOT transtaled.
+
+ // 3.1.14:
+-int logtime_us;
+-int logtime_ms;
++EXTERN int logtime_us;
++EXTERN int logtime_ms;
+
+ // 3.1.14:
+-int shell_test;
++EXTERN int shell_test;
+
+ // Next two are for debugging purposes:
+-int enable_smsd_debug;
+-char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file.
++EXTERN int enable_smsd_debug;
++EXTERN char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file.
+
+ // 3.1.20: Alt keys in communication mode:
+ #define COMMUNICATE_A_KEY_COUNT 10
+-char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256];
++EXTERN char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256];
+
+ /* initialize all variable with default values */
+
+diff --git a/src/stats.h b/src/stats.h
+index bd5cdc9..a614af1 100755
+--- a/src/stats.h
++++ b/src/stats.h
+@@ -33,17 +33,17 @@ typedef struct
+ int ber;
+ } _stats;
+
+-_stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!)
+-int rejected_counter; // Statistic counter, rejected SM, number does not fit into any queue
+-time_t start_time; // Start time of smsd, allows statistic functions
+-int printstatus; // if 1 smsd outputs status on stdout
+-time_t last_stats; // time when the last stats file was created
+-char d_stats[PATH_MAX]; // path to statistic files
+-int stats_interval; // time between statistic files in seconds.
+-int stats_no_zeroes; // Suppress files that contain only zeroes
+-int status_interval; // time between updating status file in seconds
+-
+-char *shared_buffer;
++EXTERN _stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!)
++EXTERN int rejected_counter; // Statistic counter, rejected SM, number does not fit into any queue
++EXTERN time_t start_time; // Start time of smsd, allows statistic functions
++EXTERN int printstatus; // if 1 smsd outputs status on stdout
++EXTERN time_t last_stats; // time when the last stats file was created
++EXTERN char d_stats[PATH_MAX]; // path to statistic files
++EXTERN int stats_interval; // time between statistic files in seconds.
++EXTERN int stats_no_zeroes; // Suppress files that contain only zeroes
++EXTERN int status_interval; // time between updating status file in seconds
++
++EXTERN char *shared_buffer;
+
+ /* Creates shared memory variables for statistic data */
+
+diff --git a/src/whitelist.c b/src/whitelist.c
+index 4ee7a69..3d90bf4 100755
+--- a/src/whitelist.c
++++ b/src/whitelist.c
+@@ -17,11 +17,11 @@ Either version 2 of the License, or (at your option) any later version.
+ #include <stdlib.h>
+ #include <string.h>
+ #include <signal.h>
++#include "smsd_cfg.h"
+ #include "whitelist.h"
+ #include "extras.h"
+ #include "logging.h"
+ #include "alarm.h"
+-#include "smsd_cfg.h"
+
+ /* Used with >= 3.1x */
+ int inwhitelist_q(char* msisdn, char *queuename)
+diff --git a/src/whitelist.h b/src/whitelist.h
+index 88aea86..3f904f4 100755
+--- a/src/whitelist.h
++++ b/src/whitelist.h
+@@ -15,7 +15,7 @@ Either version 2 of the License, or (at your option) any later version.
+ #ifndef WHITE_H
+ #define WHITE_H
+
+-char whitelist[256]; // Filename of the white-list
++EXTERN char whitelist[256]; // Filename of the white-list
+
+ /* Used with >= 3.1x */
+ int inwhitelist_q(char* msisdn, char *queuename);
+--
+2.28.0
+
diff --git a/meta-oe/recipes-connectivity/smstools3/smstools3/scripts_no_bash.patch b/meta-oe/recipes-connectivity/smstools3/smstools3/scripts_no_bash.patch
index 49b4d1ddac..e287ae5e73 100644
--- a/meta-oe/recipes-connectivity/smstools3/smstools3/scripts_no_bash.patch
+++ b/meta-oe/recipes-connectivity/smstools3/smstools3/scripts_no_bash.patch
@@ -3,6 +3,8 @@ From: Bill Randle <bill.randle@gmail.com>
Date: Sun, 31 Dec 2017 09:08:23 -0800
---
+Upstream-Status: Pending
+
scripts/sendsms | 2 +-
scripts/sms2html | 2 +-
scripts/sms2unicode | 2 +-
diff --git a/meta-oe/recipes-connectivity/smstools3/smstools3/sms_binpath.patch b/meta-oe/recipes-connectivity/smstools3/smstools3/sms_binpath.patch
index e1d79d3327..db829744d3 100644
--- a/meta-oe/recipes-connectivity/smstools3/smstools3/sms_binpath.patch
+++ b/meta-oe/recipes-connectivity/smstools3/smstools3/sms_binpath.patch
@@ -3,6 +3,8 @@ From: Kai Ulrich <kaiu@gmx.de>
Date: Wed, 18 Mar 2015 11:20:53 +0100
---
+Upstream-Status: Pending
+
scripts/sms3 | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.21.bb b/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.21.bb
index 6e6413b4bc..9e54968633 100644
--- a/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.21.bb
+++ b/meta-oe/recipes-connectivity/smstools3/smstools3_3.1.21.bb
@@ -1,13 +1,15 @@
SUMMARY = "SMS Gateway software"
DESCRIPTION = "The SMS Server Tools 3 is a SMS Gateway software which can send and receive short messages through GSM modems and mobile phones."
SECTION = "console/network"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://LICENSE;md5=4d21efa1bb2a186360dde4035f860682"
HOMEPAGE = "http://smstools3.kekekasvi.com"
SRC_URI = "http://smstools3.kekekasvi.com/packages/${BP}.tar.gz \
file://sms_binpath.patch \
- file://scripts_no_bash.patch"
+ file://scripts_no_bash.patch \
+ file://0001-Make-extern-declarations-to-avoid-duplicate-var-defi.patch \
+ "
SRC_URI[md5sum] = "6a9f038fb38a49cc3a4f8f14a88fb8af"
SRC_URI[sha256sum] = "a26ba4c02b16f6cf13177bffca6c9230dc5fefaeba8e3030cd4e4905f6a92084"
diff --git a/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.0.bb b/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.0.bb
deleted file mode 100644
index 01c6e3781e..0000000000
--- a/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.0.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "Telepathy Framework glib-base helper library"
-DESCRIPTION = "Telepathy Framework: GLib-based helper library for connection managers"
-HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
-DEPENDS = "glib-2.0 dbus hostpython-runtime-native dbus-native dbus-glib libxslt-native"
-LICENSE = "LGPLv2.1+"
-
-SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-glib/${BP}.tar.gz"
-SRC_URI[md5sum] = "93c429e37750b25dcf8de86bb514664f"
-SRC_URI[sha256sum] = "ae0002134991217f42e503c43dea7817853afc18863b913744d51ffa029818cf"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=e413d83db6ee8f2c8e6055719096a48e"
-
-inherit autotools pkgconfig gettext gobject-introspection
-
-FILES_${PN} += "${datadir}/telepathy \
- ${datadir}/dbus-1"
diff --git a/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb b/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb
new file mode 100644
index 0000000000..e083039232
--- /dev/null
+++ b/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Telepathy Framework glib-base helper library"
+DESCRIPTION = "Telepathy Framework: GLib-based helper library for connection managers"
+HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
+DEPENDS = "glib-2.0 dbus hostpython-runtime-native dbus-native dbus-glib libxslt-native"
+LICENSE = "LGPL-2.1-or-later"
+
+SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-glib/${BP}.tar.gz"
+SRC_URI[md5sum] = "cbeb0a24acc26e7f095be281c324da69"
+SRC_URI[sha256sum] = "9e0df1d8f857e0270cf0b32e2d1ca5a24aa7282873361785d573f72ad7f7d5eb"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e413d83db6ee8f2c8e6055719096a48e"
+
+inherit autotools pkgconfig gettext gobject-introspection vala gtk-doc
+
+# Respect GI_DATA_ENABLED value when enabling vala-bindings:
+# configure: error: GObject-Introspection must be enabled for Vala bindings
+EXTRA_OECONF = "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-vala-bindings', '--disable-vala-bindings', d)}"
+
+FILES:${PN} += "${datadir}/telepathy \
+ ${datadir}/dbus-1"
diff --git a/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb b/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
index ca09f6daf3..039cfc3a89 100644
--- a/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
+++ b/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
@@ -2,7 +2,7 @@ SUMMARY = "Telepathy IRC connection manager"
DESCRIPTION = "Telepathy implementation of the Internet Relay Chat protocols."
HOMEPAGE = "http://telepathy.freedesktop.org/wiki/"
DEPENDS = "glib-2.0 dbus telepathy-glib openssl libxslt-native"
-LICENSE = "LGPLv2.1"
+LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
file://src/idle.c;beginline=1;endline=19;md5=b06b1e2594423111a1a7910b0eefc7f9"
@@ -11,7 +11,12 @@ SRC_URI = "http://telepathy.freedesktop.org/releases/${BPN}/${BPN}-${PV}.tar.gz
SRC_URI[md5sum] = "92a2de5198284cbd3c430b0d1a971a86"
SRC_URI[sha256sum] = "3013ad4b38d14ee630b8cc8ada5e95ccaa849b9a6fe15d2eaf6d0717d76f2fab"
-inherit autotools pkgconfig pythonnative
+inherit autotools pkgconfig ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "pythonnative", "", d)}
-FILES_${PN} += "${datadir}/telepathy \
+FILES:${PN} += "${datadir}/telepathy \
${datadir}/dbus-1"
+
+python() {
+ if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split():
+ raise bb.parse.SkipRecipe('Requires meta-python2 to be present.')
+}
diff --git a/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch b/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch
deleted file mode 100644
index fcc2f08214..0000000000
--- a/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From b3da0d8677b7e8467367a303c18551c56ed20e15 Mon Sep 17 00:00:00 2001
-From: Philip Balister <philip@balister.org>
-Date: Tue, 12 Apr 2016 17:30:15 -0400
-Subject: [PATCH] Forcibly disable check for Qt5.
-
-Signed-off-by: Philip Balister <philip@balister.org>
----
- build/cmake/DefineOptions.cmake | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/build/cmake/DefineOptions.cmake b/build/cmake/DefineOptions.cmake
-index 62e240f..f8b4493 100644
---- a/build/cmake/DefineOptions.cmake
-+++ b/build/cmake/DefineOptions.cmake
-@@ -52,9 +52,6 @@ CMAKE_DEPENDENT_OPTION(WITH_LIBEVENT "Build with libevent support" ON
- find_package(Qt4 QUIET COMPONENTS QtCore QtNetwork)
- CMAKE_DEPENDENT_OPTION(WITH_QT4 "Build with Qt4 support" ON
- "QT4_FOUND" OFF)
--find_package(Qt5 QUIET COMPONENTS Core Network)
--CMAKE_DEPENDENT_OPTION(WITH_QT5 "Build with Qt5 support" ON
-- "Qt5_FOUND" OFF)
- if(${WITH_QT4} AND ${WITH_QT5} AND ${CMAKE_MAJOR_VERSION} LESS 3)
- # cmake < 3.0.0 causes conflict when building both Qt4 and Qt5
- set(WITH_QT4 OFF)
---
-2.5.5
-
diff --git a/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch b/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch
deleted file mode 100644
index 7cc8d17393..0000000000
--- a/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From bc577820ad25795543b31f123e309cdaebc7d6c6 Mon Sep 17 00:00:00 2001
-From: Cody P Schafer <dev@codyps.com>
-Date: Mon, 16 May 2016 15:21:10 -0400
-Subject: [PATCH 1/2] THRIFT-3828 In cmake avoid use of both quoted paths and
- SYSTEM with include_directories()
-
-This allows us to avoid issues where there are no paths to be added to
-the include path (include_directories() errors when given an empty
-string).
-
-Specifically, gcc-6 requires that libraries stop passing paths like
-'/usr/include' (or they will get libstdc++ build errors), so these paths
-will be empty more often in the future.
----
- lib/cpp/CMakeLists.txt | 8 ++++----
- lib/cpp/test/CMakeLists.txt | 2 +-
- test/cpp/CMakeLists.txt | 6 +++---
- tutorial/cpp/CMakeLists.txt | 2 +-
- 4 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/lib/cpp/CMakeLists.txt b/lib/cpp/CMakeLists.txt
-index 4c7caeb..a716ac3 100755
---- a/lib/cpp/CMakeLists.txt
-+++ b/lib/cpp/CMakeLists.txt
-@@ -24,7 +24,7 @@ else()
- find_package(Boost 1.53.0 REQUIRED)
- endif()
-
--include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
-+include_directories(${Boost_INCLUDE_DIRS})
- include_directories(src)
-
- # SYSLIBS contains libraries that need to be linked to all lib targets
-@@ -104,7 +104,7 @@ if(OPENSSL_FOUND AND WITH_OPENSSL)
- src/thrift/transport/TSSLSocket.cpp
- src/thrift/transport/TSSLServerSocket.cpp
- )
-- include_directories(SYSTEM "${OPENSSL_INCLUDE_DIR}")
-+ include_directories(${OPENSSL_INCLUDE_DIR})
- list(APPEND SYSLIBS "${OPENSSL_LIBRARIES}")
- endif()
-
-@@ -162,7 +162,7 @@ TARGET_LINK_LIBRARIES_THRIFT(thrift ${SYSLIBS})
-
- if(WITH_LIBEVENT)
- find_package(Libevent REQUIRED) # Libevent comes with CMake support form upstream
-- include_directories(SYSTEM ${LIBEVENT_INCLUDE_DIRS})
-+ include_directories(${LIBEVENT_INCLUDE_DIRS})
-
- ADD_LIBRARY_THRIFT(thriftnb ${thriftcppnb_SOURCES})
- TARGET_LINK_LIBRARIES_THRIFT(thriftnb ${SYSLIBS} ${LIBEVENT_LIBRARIES})
-@@ -171,7 +171,7 @@ endif()
-
- if(WITH_ZLIB)
- find_package(ZLIB REQUIRED)
-- include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS})
-+ include_directories(${ZLIB_INCLUDE_DIRS})
-
- ADD_LIBRARY_THRIFT(thriftz ${thriftcppz_SOURCES})
- TARGET_LINK_LIBRARIES_THRIFT(thriftz ${SYSLIBS} ${ZLIB_LIBRARIES})
-diff --git a/lib/cpp/test/CMakeLists.txt b/lib/cpp/test/CMakeLists.txt
-index 5de9fc4..c956c38 100644
---- a/lib/cpp/test/CMakeLists.txt
-+++ b/lib/cpp/test/CMakeLists.txt
-@@ -20,7 +20,7 @@
- # Find required packages
- set(Boost_USE_STATIC_LIBS ON) # Force the use of static boost test framework
- find_package(Boost 1.53.0 REQUIRED COMPONENTS chrono filesystem system thread unit_test_framework)
--include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
-+include_directories(${Boost_INCLUDE_DIRS})
-
- #Make sure gen-cpp files can be included
- include_directories("${CMAKE_CURRENT_BINARY_DIR}")
-diff --git a/test/cpp/CMakeLists.txt b/test/cpp/CMakeLists.txt
-index 2d75f2e..b1409de 100755
---- a/test/cpp/CMakeLists.txt
-+++ b/test/cpp/CMakeLists.txt
-@@ -22,13 +22,13 @@ include(ThriftMacros)
-
- set(Boost_USE_STATIC_LIBS ON)
- find_package(Boost 1.53.0 REQUIRED COMPONENTS program_options system filesystem)
--include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
-+include_directories(${Boost_INCLUDE_DIRS})
-
- find_package(OpenSSL REQUIRED)
--include_directories(SYSTEM "${OPENSSL_INCLUDE_DIR}")
-+include_directories(${OPENSSL_INCLUDE_DIR})
-
- find_package(Libevent REQUIRED) # Libevent comes with CMake support from upstream
--include_directories(SYSTEM ${LIBEVENT_INCLUDE_DIRS})
-+include_directories(${LIBEVENT_INCLUDE_DIRS})
-
- #Make sure gen-cpp files can be included
- include_directories("${CMAKE_CURRENT_BINARY_DIR}")
-diff --git a/tutorial/cpp/CMakeLists.txt b/tutorial/cpp/CMakeLists.txt
-index 2b0c143..5ecae17 100644
---- a/tutorial/cpp/CMakeLists.txt
-+++ b/tutorial/cpp/CMakeLists.txt
-@@ -18,7 +18,7 @@
- #
-
- find_package(Boost 1.53.0 REQUIRED)
--include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
-+include_directories(${Boost_INCLUDE_DIRS})
-
- #Make sure gen-cpp files can be included
- include_directories("${CMAKE_CURRENT_BINARY_DIR}")
---
-2.9.3
-
diff --git a/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch b/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch
deleted file mode 100644
index f13adbb6bc..0000000000
--- a/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From f6cad0580e5391c37af7f60adddb71bf1a403dc4 Mon Sep 17 00:00:00 2001
-From: Cody P Schafer <dev@codyps.com>
-Date: Fri, 9 Sep 2016 15:50:26 -0400
-Subject: [PATCH 2/2] THRIFT-3831 in test/cpp explicitly use `signed char`
-
-`char`'s signed-ness is implimentation dependent, and in the case where
-`char` was not signed, we previously recieved errors like
-
- thrift/0.9.3-r0/git/test/cpp/src/TestClient.cpp:404:15: error: narrowing conversion of '-127' from 'int' to 'char' inside { } [-Wnarrowing]
-
-(This example from gcc-6 on arm)
----
- test/cpp/src/TestClient.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/test/cpp/src/TestClient.cpp b/test/cpp/src/TestClient.cpp
-index e709899..4a961f8 100644
---- a/test/cpp/src/TestClient.cpp
-+++ b/test/cpp/src/TestClient.cpp
-@@ -383,7 +383,7 @@ int main(int argc, char** argv) {
- * BINARY TEST
- */
- printf("testBinary([-128..127]) = {");
-- const char bin_data[256]
-+ const signed char bin_data[256]
- = {-128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114,
- -113, -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, -100, -99,
- -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84,
-@@ -404,7 +404,7 @@ int main(int argc, char** argv) {
- 127};
- try {
- string bin_result;
-- testClient.testBinary(bin_result, string(bin_data, 256));
-+ testClient.testBinary(bin_result, string(reinterpret_cast<const char *>(bin_data), 256));
- if (bin_result.size() != 256) {
- printf("}\n*** FAILED ***\n");
- printf("invalid length: %lu\n", bin_result.size());
---
-2.9.3
-
diff --git a/meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch b/meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch
new file mode 100644
index 0000000000..bbfc6c8069
--- /dev/null
+++ b/meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch
@@ -0,0 +1,42 @@
+From a07e56e1a2e70a9b81eb0a65f345cf45a7a93a81 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 21:56:23 -0800
+Subject: [PATCH] DefineInstallationPaths.cmake: Define libdir in terms of
+ LIB_SUFFIX
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ build/cmake/DefineInstallationPaths.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/build/cmake/DefineInstallationPaths.cmake
++++ b/build/cmake/DefineInstallationPaths.cmake
+@@ -26,11 +26,11 @@ else()
+ set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The library install dir (default: lib${LIB_SUFFIX})")
+ endif()
+ set(INCLUDE_INSTALL_DIR "include" CACHE PATH "The library install dir (default: include)")
+-set(CMAKE_INSTALL_DIR "lib/cmake" CACHE PATH "The subdirectory to install cmake config files (default: cmake)")
+-set(PKGCONFIG_INSTALL_DIR "lib/pkgconfig" CACHE PATH "The subdirectory to install pkgconfig config files (default: lib/pkgconfig)")
++set(CMAKE_INSTALL_DIR "lib${LIB_SUFFIX}/cmake" CACHE PATH "The subdirectory to install cmake config files (default: cmake)")
++set(PKGCONFIG_INSTALL_DIR "lib${LIB_SUFFIX}/pkgconfig" CACHE PATH "The subdirectory to install pkgconfig config files (default: lib/pkgconfig)")
+ set(DOC_INSTALL_DIR "share/doc" CACHE PATH "The subdirectory to install documentation files (default: share/doc)")
+ set(prefix "${CMAKE_INSTALL_PREFIX}")
+ set(exec_prefix "${CMAKE_INSTALL_PREFIX}/bin")
+-set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
++set(libdir "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
+ set(includedir "${CMAKE_INSTALL_PREFIX}/include")
+ set(cmakedir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DIR}")
+--- a/build/cmake/DefineCMakeDefaults.cmake
++++ b/build/cmake/DefineCMakeDefaults.cmake
+@@ -44,8 +44,8 @@ include(BuildType)
+ # top of the build tree rather than in hard-to-find leaf
+ # directories. This simplifies manual testing and the use of the build
+ # tree rather than installed thrift libraries.
+-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
++set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LIB_SUFFIX})
++set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LIB_SUFFIX})
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+
+ #
diff --git a/meta-oe/recipes-connectivity/thrift/thrift_0.20.0.bb b/meta-oe/recipes-connectivity/thrift/thrift_0.20.0.bb
new file mode 100644
index 0000000000..23db052b9e
--- /dev/null
+++ b/meta-oe/recipes-connectivity/thrift/thrift_0.20.0.bb
@@ -0,0 +1,71 @@
+SUMMARY = "Apache Thrift"
+DESCRIPTION = "A software framework, for scalable cross-language services development"
+HOMEPAGE = "https://thrift.apache.org/"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c40a383cb3f747e0c7abbf1482f194f0 \
+ file://NOTICE;md5=2659b43daca219f99a2f2626ea128f73"
+
+DEPENDS = "thrift-native boost flex-native bison-native openssl zlib"
+
+SRC_URI = "https://downloads.apache.org/${BPN}/${PV}/${BP}.tar.gz \
+ file://0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch"
+SRC_URI[sha256sum] = "b5d8311a779470e1502c027f428a1db542f5c051c8e1280ccd2163fa935ff2d6"
+
+BBCLASSEXTEND = "native nativesdk"
+
+CVE_PRODUCT = "apache:thrift"
+
+inherit pkgconfig cmake python3native
+
+export STAGING_INCDIR
+export STAGING_LIBDIR
+export BUILD_SYS
+export HOST_SYS
+
+EXTRA_OECMAKE = " \
+ -DBUILD_LIBRARIES=ON \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_COMPILER=ON \
+ -DBUILD_TESTING=OFF \
+ -DBUILD_TUTORIALS=OFF \
+ -DWITH_AS3=OFF \
+ -DWITH_CPP=ON \
+ -DWITH_JAVA=OFF \
+ -DWITH_OPENSSL=ON \
+ -DWITH_QT5=OFF \
+ -DWITH_ZLIB=ON \
+ -DFLEX_TARGET_ARG_COMPILE_FLAGS='--noline' \
+ -DBISON_TARGET_ARG_COMPILE_FLAGS='--no-lines' \
+"
+
+PACKAGECONFIG ??= "glib libevent"
+PACKAGECONFIG[glib] = "-DWITH_C_GLIB=ON,-DWITH_C_GLIB=OFF,glib-2.0"
+PACKAGECONFIG[libevent] = "-DWITH_LIBEVENT=ON,-DWITH_LIBEVENT=OFF,libevent"
+PACKAGECONFIG[javascript] = "-DWITH_JAVASCRIPT=ON,-DWITH_JAVASCRIPT=OFF,nodejs"
+PACKAGECONFIG[nodejs] = "-DWITH_NODEJS=ON,-DWITH_NODEJS=OFF,nodejs"
+PACKAGECONFIG[python] = "-DWITH_PYTHON=ON,-DWITH_PYTHON=OFF,python"
+
+do_install:append () {
+ ln -sf thrift ${D}/${bindir}/thrift-compiler
+ # remove absolute paths
+ sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/thrift/thriftnbTargets.cmake
+ sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/thrift/thrift_c_glibTargets.cmake
+ sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/thrift/thrift_c_glib_zlibTargets.cmake
+}
+
+LEAD_SONAME = "libthrift.so.${PV}"
+
+# thrift packages
+PACKAGE_BEFORE_PN = "${PN}-compiler lib${BPN} lib${BPN}z lib${BPN}nb lib${BPN}-c-glib"
+FILES:lib${BPN} = "${libdir}/libthrift.so.*"
+FILES:lib${BPN}z = "${libdir}/libthriftz.so.*"
+FILES:lib${BPN}nb = "${libdir}/libthriftnb.so.*"
+FILES:lib${BPN}-c-glib = "${libdir}/libthrift_c_glib.so.*"
+FILES:${PN}-compiler = "${bindir}/*"
+
+# The thrift packages just pulls in some default dependencies but is otherwise empty
+RRECOMMENDS:${PN} = "${PN}-compiler lib${BPN}"
+ALLOW_EMPTY:${PN} = "1"
+RRECOMMENDS:${PN}:class-native = ""
+RRECOMMENDS:${PN}:class-nativesdk = ""
diff --git a/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb b/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb
deleted file mode 100644
index aa93283712..0000000000
--- a/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb
+++ /dev/null
@@ -1,64 +0,0 @@
-SUMMARY = "Apache Thrift"
-DESCRIPTION = "A software framework, for scalable cross-language services development"
-HOMEPAGE = "https://thrift.apache.org/"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e4ed21f679b2aafef26eac82ab0c2cbf \
- file://NOTICE;md5=115f49498b66b494b0472658f2bfe80b"
-
-DEPENDS = "thrift-native boost flex-native bison-native openssl"
-
-SRC_URI = "http://mirror.switch.ch/mirror/apache/dist/thrift/${PV}/${BPN}-${PV}.tar.gz \
- file://0001-Forcibly-disable-check-for-Qt5.patch \
- file://0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch \
- file://0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch \
-"
-
-SRC_URI[md5sum] = "88d667a8ae870d5adeca8cb7d6795442"
-SRC_URI[sha256sum] = "b0740a070ac09adde04d43e852ce4c320564a292f26521c46b78e0641564969e"
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit pkgconfig cmake pythonnative
-
-export STAGING_INCDIR
-export STAGING_LIBDIR
-export BUILD_SYS
-export HOST_SYS
-
-EXTRA_OECMAKE = " \
- -DBUILD_LIBRARIES=ON \
- -DBUILD_COMPILER=ON \
- -DBUILD_TESTING=OFF \
- -DBUILD_EXAMPLES=OFF \
- -DBUILD_TUTORIALS=OFF \
- -DWITH_CPP=ON \
- -DWITH_JAVA=OFF \
- -DWITH_STATIC_LIB=ON \
- -DWITH_SHARED_LIB=ON \
- -DWITH_OPENSSL=ON \
- -DWITH_QT4=OFF \
- -DWITH_QT5=OFF \
-"
-
-PACKAGECONFIG ??= "libevent glib python"
-PACKAGECONFIG[libevent] = "-DWITH_LIBEVENT=ON,-DWITH_LIBEVENT=OFF,libevent,"
-PACKAGECONFIG[python] = "-DWITH_PYTHON=ON,-DWITH_PYTHON=OFF,python,"
-PACKAGECONFIG[glib] = "-DWITH_C_GLIB=ON,-DWITH_C_GLIB=OFF,glib-2.0 ,"
-
-do_install_append () {
- ln -sf thrift ${D}/${bindir}/thrift-compiler
-}
-
-LEAD_SONAME = "libthrift.so.${PV}"
-
-# thrift packages
-PACKAGE_BEFORE_PN = "${PN}-compiler lib${BPN}"
-FILES_lib${BPN} = "${libdir}/*.so.*"
-FILES_${PN}-compiler = "${bindir}/*"
-
-# The thrift packages just pulls in some default dependencies but is otherwise empty
-RRECOMMENDS_${PN} = "${PN}-compiler lib${BPN}"
-ALLOW_EMPTY_${PN} = "1"
-RRECOMMENDS_${PN}_class-native = ""
-RRECOMMENDS_${PN}_class-nativesdk = ""
diff --git a/meta-oe/recipes-connectivity/transmission/files/transmission-daemon b/meta-oe/recipes-connectivity/transmission/files/transmission-daemon
new file mode 100644
index 0000000000..d1ffff58b0
--- /dev/null
+++ b/meta-oe/recipes-connectivity/transmission/files/transmission-daemon
@@ -0,0 +1,163 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: transmission-daemon
+# Required-Start: networking
+# Required-Stop: networking
+# Default-Start: 2 3 5
+# Default-Stop: 0 1 6
+# Short-Description: Start the transmission BitTorrent daemon client.
+### END INIT INFO
+
+# Original Author: Lennart A. JÃŒtte, based on Rob Howell's script
+# Modified by Maarten Van Coile & others (on IRC)
+
+# Do NOT "set -e"
+
+#
+# ----- CONFIGURATION -----
+#
+# For the default location Transmission uses, visit:
+# http://trac.transmissionbt.com/wiki/ConfigFiles
+# For a guide on how set the preferences, visit:
+# http://trac.transmissionbt.com/wiki/EditConfigFiles
+# For the available environement variables, visit:
+# http://trac.transmissionbt.com/wiki/EnvironmentVariables
+#
+# The name of the user that should run Transmission.
+# It's RECOMENDED to run Transmission in it's own user,
+# by default, this is set to 'transmission'.
+# For the sake of security you shouldn't set a password
+# on this user
+USERNAME=transmission
+
+
+# ----- *ADVANCED* CONFIGURATION -----
+# Only change these options if you know what you are doing!
+#
+# The folder where Transmission stores the config & web files.
+# ONLY change this you have it at a non-default location
+#TRANSMISSION_HOME="/var/config/transmission-daemon"
+#TRANSMISSION_WEB_HOME="/usr/share/transmission/web"
+#
+# The arguments passed on to transmission-daemon.
+# ONLY change this you need to, otherwise use the
+# settings file as per above.
+#TRANSMISSION_ARGS=""
+
+
+# ----- END OF CONFIGURATION -----
+#
+# PATH should only include /usr/* if it runs after the mountnfs.sh script.
+PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+DESC="bittorrent client"
+NAME=transmission-daemon
+DAEMON=$(which $NAME)
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+#
+# Function that starts the daemon/service
+#
+
+do_start()
+{
+ # Export the configuration/web directory, if set
+ if [ -n "$TRANSMISSION_HOME" ]; then
+ export TRANSMISSION_HOME
+ fi
+ if [ -n "$TRANSMISSION_WEB_HOME" ]; then
+ export TRANSMISSION_WEB_HOME
+ fi
+
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \
+ --exec $DAEMON --background --test -- -f $TRANSMISSION_ARGS > /dev/null \
+ || return 1
+ start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \
+ --exec $DAEMON --background -- -f $TRANSMISSION_ARGS \
+ || return 2
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/10/KILL/5 --pidfile $PIDFILE --exec $DAEMON
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+
+ # Wait for children to finish too if this is a daemon that forks
+ # and if the daemon is only ever run from this initscript.
+ # If the above conditions are not satisfied then add some other code
+ # that waits for the process to drop all resources that could be
+ # needed by services started subsequently. A last resort is to
+ # sleep for some time.
+
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+
+ # Many daemons don't delete their pidfiles when they exit.
+ rm -f $PIDFILE
+
+ return "$RETVAL"
+}
+
+case "$1" in
+ start)
+ echo "Starting $DESC" "$NAME..."
+ do_start
+ case "$?" in
+ 0|1) echo " Starting $DESC $NAME succeeded" ;;
+ *) echo " Starting $DESC $NAME failed" ;;
+ esac
+ ;;
+ stop)
+ echo "Stopping $DESC $NAME..."
+ do_stop
+ case "$?" in
+ 0|1) echo " Stopping $DESC $NAME succeeded" ;;
+ *) echo " Stopping $DESC $NAME failed" ;;
+ esac
+ ;;
+ restart|force-reload)
+ #
+ # If the "reload" option is implemented then remove the
+ # 'force-reload' alias
+ #
+ echo "Restarting $DESC $NAME..."
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0|1) echo " Restarting $DESC $NAME succeeded" ;;
+ *) echo " Restarting $DESC $NAME failed: couldn't start $NAME" ;;
+ esac
+ ;;
+ *)
+ echo " Restarting $DESC $NAME failed: couldn't stop $NAME" ;;
+ esac
+ ;;
+ *)
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
diff --git a/meta-oe/recipes-connectivity/transmission/transmission_4.0.5.bb b/meta-oe/recipes-connectivity/transmission/transmission_4.0.5.bb
new file mode 100644
index 0000000000..b9ed3d925d
--- /dev/null
+++ b/meta-oe/recipes-connectivity/transmission/transmission_4.0.5.bb
@@ -0,0 +1,61 @@
+DESCRIPTION = "Transmission is a fast, easy, and free BitTorrent client"
+SECTION = "network"
+HOMEPAGE = "https://transmissionbt.com/"
+LICENSE = "MIT & GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ba8199e739948e198310093de27175fa"
+
+DEPENDS = "curl libevent gnutls openssl libtool intltool-native glib-2.0-native"
+RDEPENDS:${PN}-web = "${PN}"
+
+SRC_URI = " \
+ gitsm://github.com/transmission/transmission;branch=4.0.x;protocol=https \
+ file://transmission-daemon \
+"
+
+# Transmission release 4.0.5
+SRCREV = "a6fe2a64aa7eca089f96006cf082a12f0cde937f"
+
+S = "${WORKDIR}/git"
+
+inherit cmake gettext update-rc.d pkgconfig systemd mime-xdg
+
+PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)}"
+
+PACKAGECONFIG[gtk] = "-DENABLE_GTK=ON,-DENABLE_GTK=OFF,gtk4 gtkmm4,"
+PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF,systemd,"
+
+# Weak default values for transmission user and group
+# Change them in bbappend if needed
+TRANSMISSION_USER ??= "root"
+TRANSMISSION_GROUP ??= "root"
+
+do_install:append() {
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+ sed -i '/USERNAME=/c\USERNAME=${TRANSMISSION_USER}' ${UNPACKDIR}/transmission-daemon
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0744 ${UNPACKDIR}/transmission-daemon ${D}${sysconfdir}/init.d/
+ chown ${TRANSMISSION_USER}:${TRANSMISSION_GROUP} ${D}${sysconfdir}/init.d/transmission-daemon
+ fi
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ sed -i '/User=/c\User=${TRANSMISSION_USER}' ${S}/daemon/transmission-daemon.service
+ install -d ${D}${systemd_unitdir}/system
+ install -m 0644 ${S}/daemon/transmission-daemon.service ${D}${systemd_unitdir}/system
+ fi
+}
+
+PACKAGES += "${PN}-gtk ${PN}-client ${PN}-web"
+
+FILES:${PN}-client = "${bindir}/transmission-remote ${bindir}/transmission-cli ${bindir}/transmission-create ${bindir}/transmission-show ${bindir}/transmission-edit"
+FILES:${PN}-gtk += "${bindir}/transmission-gtk ${datadir}/icons ${datadir}/applications ${datadir}/pixmaps ${datadir}/metainfo"
+FILES:${PN}-web = "${datadir}/transmission/web ${datadir}/transmission/public_html"
+FILES:${PN} = "${bindir}/transmission-daemon ${sysconfdir}/init.d/transmission-daemon ${datadir}/appdata"
+
+SYSTEMD_SERVICE:${PN} = "transmission-daemon.service"
+
+# Script transmission-daemon following the guidelines in:
+# https://trac.transmissionbt.com/wiki/Scripts/initd
+INITSCRIPT_PACKAGES = "transmission-daemon"
+INITSCRIPT_NAME = "transmission-daemon"
+INITSCRIPT_PARAMS = "start 99 5 3 2 . stop 10 0 1 6 ."
diff --git a/meta-oe/recipes-connectivity/umip/files/0001-Add-format-string-to-fprintf-call.patch b/meta-oe/recipes-connectivity/umip/files/0001-Add-format-string-to-fprintf-call.patch
deleted file mode 100644
index 8e5f4da362..0000000000
--- a/meta-oe/recipes-connectivity/umip/files/0001-Add-format-string-to-fprintf-call.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a0ad5128d14b022239445e251cf4a9826e86aa96 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 27 Jun 2017 07:48:31 -0700
-Subject: [PATCH] Add format string to fprintf() call
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/vt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/vt.c b/src/vt.c
-index 795d393..a533d3d 100644
---- a/src/vt.c
-+++ b/src/vt.c
-@@ -499,7 +499,7 @@ static int vt_cmd_dump_candidates(const struct vt_handle *vh,
- }
- llen += cmdlen;
-
-- ret = fprintf(vh->vh_stream, e->cmd);
-+ ret = fprintf(vh->vh_stream, "%s", e->cmd);
- if (ret < 0)
- return ret;
-
---
-2.13.2
-
diff --git a/meta-oe/recipes-connectivity/umip/files/0001-replace-SIGCLD-with-SIGCHLD-and-include-sys-types.h.patch b/meta-oe/recipes-connectivity/umip/files/0001-replace-SIGCLD-with-SIGCHLD-and-include-sys-types.h.patch
deleted file mode 100644
index 8192056d13..0000000000
--- a/meta-oe/recipes-connectivity/umip/files/0001-replace-SIGCLD-with-SIGCHLD-and-include-sys-types.h.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From f567740cf64978ac9db014c786b6d0267b244f33 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 4 Mar 2018 22:30:30 -0800
-Subject: [PATCH 1/2] replace SIGCLD with SIGCHLD and include sys/types.h
-
-Fixes
-main.c:129:10: error: 'SIGCLD' undeclared (first use in this function); did you mean 'SIGCHLD'?
- signal(SIGCLD, sig_child);
- ^~~~~~
- SIGCHLD
-
-main.c:125:2: warning: implicit declaration of function 'umask' [-Wimplicit-function-declaration]
- umask(0);
- ^~~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/main.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/main.c b/src/main.c
-index 3cf4072..cd34196 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -31,6 +31,7 @@
- #include <sys/ioctl.h>
- #include <sys/wait.h>
- #include <sys/param.h>
-+#include <sys/types.h>
- #include <pthread.h>
- #include <fcntl.h>
- #include <unistd.h>
-@@ -126,9 +127,9 @@ static void daemon_start(int ignsigcld)
-
- if (ignsigcld) {
- #ifdef SIGTSTP
-- signal(SIGCLD, sig_child);
-+ signal(SIGCHLD, sig_child);
- #else
-- signal(SIGCLD, SIG_IGN);
-+ signal(SIGCHLD, SIG_IGN);
- #endif
- }
- }
---
-2.16.2
-
diff --git a/meta-oe/recipes-connectivity/umip/files/0002-replace-PTHREAD_MUTEX_FAST_NP-with-PTHREAD_MUTEX_NOR.patch b/meta-oe/recipes-connectivity/umip/files/0002-replace-PTHREAD_MUTEX_FAST_NP-with-PTHREAD_MUTEX_NOR.patch
deleted file mode 100644
index 90d12da149..0000000000
--- a/meta-oe/recipes-connectivity/umip/files/0002-replace-PTHREAD_MUTEX_FAST_NP-with-PTHREAD_MUTEX_NOR.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 19b6cf8099e1974b5fc39086fc54103b0cbc2658 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 4 Mar 2018 23:01:25 -0800
-Subject: [PATCH 2/2] replace PTHREAD_MUTEX_FAST_NP with PTHREAD_MUTEX_NORMAL
-
-PTHREAD_MUTEX_FAST_NP is not available on non-posix systems
-e.g. musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/ha.c | 2 +-
- src/icmp6.c | 2 +-
- src/mh.c | 2 +-
- src/mn.c | 2 +-
- src/movement.c | 2 +-
- src/mpdisc_ha.c | 2 +-
- src/mpdisc_mn.c | 2 +-
- src/tqueue.c | 2 +-
- src/tunnelctl.c | 2 +-
- 9 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/src/ha.c b/src/ha.c
-index fbdcff0..b2f811e 100644
---- a/src/ha.c
-+++ b/src/ha.c
-@@ -1246,7 +1246,7 @@ int ha_init(void)
- {
- pthread_mutexattr_t mattrs;
- pthread_mutexattr_init(&mattrs);
-- pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+ pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- if (pthread_mutex_init(&bu_worker_mutex, &mattrs) ||
- pthread_cond_init(&cond, NULL))
- return -1;
-diff --git a/src/icmp6.c b/src/icmp6.c
-index 3695135..6460634 100644
---- a/src/icmp6.c
-+++ b/src/icmp6.c
-@@ -243,7 +243,7 @@ int icmp6_init(void)
- return -1;
- /* create ICMP listener thread */
- pthread_mutexattr_init(&mattrs);
-- pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+ pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- if (pthread_mutex_init(&icmp6_sock.send_mutex, &mattrs) ||
- pthread_rwlock_init(&handler_lock, NULL) ||
- pthread_create(&icmp6_listener, NULL, icmp6_listen, NULL))
-diff --git a/src/mh.c b/src/mh.c
-index 60e345e..7928f4c 100644
---- a/src/mh.c
-+++ b/src/mh.c
-@@ -204,7 +204,7 @@ int mh_init(void)
- return -1;
-
- pthread_mutexattr_init(&mattrs);
-- pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+ pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- if (pthread_mutex_init(&mh_sock.send_mutex, &mattrs) ||
- pthread_rwlock_init(&handler_lock, NULL) ||
- pthread_create(&mh_listener, NULL, mh_listen, NULL))
-diff --git a/src/mn.c b/src/mn.c
-index 092cfcb..8f7f448 100644
---- a/src/mn.c
-+++ b/src/mn.c
-@@ -1478,7 +1478,7 @@ static struct home_addr_info *hai_copy(struct home_addr_info *conf_hai)
- if (hai != NULL) {
- pthread_mutexattr_t mattrs;
- pthread_mutexattr_init(&mattrs);
-- pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+ pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
-
- memcpy(hai, conf_hai, sizeof(struct home_addr_info));
-
-diff --git a/src/movement.c b/src/movement.c
-index d985937..6400448 100644
---- a/src/movement.c
-+++ b/src/movement.c
-@@ -2013,7 +2013,7 @@ int md_init(void)
- int val;
-
- pthread_mutexattr_init(&mattrs);
-- pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+ pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- if (pthread_mutex_init(&iface_lock, &mattrs))
- return -1;
-
-diff --git a/src/mpdisc_ha.c b/src/mpdisc_ha.c
-index 40ba05f..fd7a90d 100644
---- a/src/mpdisc_ha.c
-+++ b/src/mpdisc_ha.c
-@@ -559,7 +559,7 @@ int mpd_ha_init(void)
- {
- pthread_mutexattr_t mattrs;
- pthread_mutexattr_init(&mattrs);
-- pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+ pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- if (pthread_mutex_init(&mpa_lock, &mattrs) ||
- pthread_rwlock_init(&prefix_lock, NULL) ||
- hash_init(&mpa_hash, DOUBLE_ADDR, MPA_BUCKETS) < 0)
-diff --git a/src/mpdisc_mn.c b/src/mpdisc_mn.c
-index 4873bd6..ada02bd 100644
---- a/src/mpdisc_mn.c
-+++ b/src/mpdisc_mn.c
-@@ -267,7 +267,7 @@ int mpd_mn_init(void)
- {
- pthread_mutexattr_t mattrs;
- pthread_mutexattr_init(&mattrs);
-- pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+ pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- if (pthread_mutex_init(&mps_lock, &mattrs))
- return -1;
- if (hash_init(&mps_hash, DOUBLE_ADDR, MPS_BUCKETS) < 0)
-diff --git a/src/tqueue.c b/src/tqueue.c
-index 2f7aa0b..9c185b8 100644
---- a/src/tqueue.c
-+++ b/src/tqueue.c
-@@ -65,7 +65,7 @@ int taskqueue_init(void)
- {
- pthread_mutexattr_t mattrs;
- pthread_mutexattr_init(&mattrs);
-- pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+ pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- if (pthread_mutex_init(&mutex, &mattrs) ||
- pthread_cond_init(&cond, NULL) ||
- pthread_create(&tq_runner, NULL, runner, NULL))
-diff --git a/src/tunnelctl.c b/src/tunnelctl.c
-index 23fc20b..813b8ec 100644
---- a/src/tunnelctl.c
-+++ b/src/tunnelctl.c
-@@ -433,7 +433,7 @@ int tunnelctl_init(void)
- return -1;
-
- pthread_mutexattr_init(&mattrs);
-- pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+ pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- if (pthread_mutex_init(&tnl_lock, &mattrs))
- return -1;
-
---
-2.16.2
-
diff --git a/meta-oe/recipes-connectivity/umip/files/add-dependency-to-support-parallel-compilation.patch b/meta-oe/recipes-connectivity/umip/files/add-dependency-to-support-parallel-compilation.patch
deleted file mode 100644
index dbf0082640..0000000000
--- a/meta-oe/recipes-connectivity/umip/files/add-dependency-to-support-parallel-compilation.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-When "make -j10", the compilation will fail,
-because scan.c has included gram.h, but gram.h was produced
-after scan.c was compiled
-
-So add this dependency to ensure that gram.h is produced
-before scan.c is produced.
-
-Upstream-Status: Inappropriate [upstream is not active]
-
-Signed-off-by: Roy.Li <RongQing.Li@windriver.com>
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- src/Makefile.am | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -81,3 +81,5 @@ CLEANFILES = gram.c gram.h \
-
- DISTCLEANFILES = $(BUILT_SOURCES)
- MAINTAINERCLEANFILES = Makefile.in
-+
-+scan.c: gram.h
diff --git a/meta-oe/recipes-connectivity/umip/files/mip6d b/meta-oe/recipes-connectivity/umip/files/mip6d
deleted file mode 100755
index ebd70a6cca..0000000000
--- a/meta-oe/recipes-connectivity/umip/files/mip6d
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/bin/sh
-#
-# mip6d Start script for the Mobile IPv6 daemon
-#
-# chkconfig: - 55 25
-# description: The mobile IPv6 daemon allows nodes to remain \
-# reachable while moving around in the IPv6 Internet.
-# processname: mip6d
-# config: /etc/mip6d.conf
-# config: /etc/sysconfig/mip6d
-#
-### BEGIN INIT INFO
-# Provides: mipv6-daemon
-# Required-Start: $local_fs $remote_fs $network $named
-# Required-Stop: $local_fs $remote_fs $network
-# Should-Start: $syslog
-# Should-Stop: $network $syslog
-# Default-Start:
-# Default-Stop: 0 1 6
-# Short-Description: Start and stop Mobile IPV6 daemon
-# Description: The mobile IPv6 daemon allows nodes to remain
-# reachable while moving around in the IPv6 Internet.
-### END INIT INFO
-
-# Source function library.
-. /etc/init.d/functions
-
-if [ -f /etc/sysconfig/mip6d ]; then
- . /etc/sysconfig/mip6d
-fi
-
-mip6d=/usr/sbin/mip6d
-prog="mip6d"
-lockfile=/var/lock/subsys/$prog
-
-start() {
- [ -x $mip6d ] || exit 5
- echo -n $"Starting $prog: "
- start-stop-daemon -S -x ${mip6d} && success || failure
- retval=$?
- echo
- [ $retval -eq 0 ] && touch ${lockfile}
- return $retval
-}
-
-stop() {
- echo -n $"Stopping $prog: "
- start-stop-daemon -K -x $mip6d
- retval=$?
- echo
- [ $retval -eq 0 ] && rm -f ${lockfile}
- return $retval
-}
-
-restart() {
- stop
- start
-}
-
-reload()
-{
- echo -n $"Reloading $prog configuration: "
- killproc $mip6d -HUP
- retval=$?
- echo
- return $retval
-}
-
-force_reload() {
- restart
-}
-
-rh_status() {
- status $prog
-}
-
-rh_status_q() {
- rh_status > /dev/null 2>&1
-}
-
-case "$1" in
- start)
- rh_status_q && exit 0
- $1
- ;;
- stop)
- rh_status_q || exit 0
- $1
- ;;
- restart)
- $1
- ;;
- reload)
- rh_status_q || exit 7
- $1
- ;;
- force-reload)
- force_reload
- ;;
- status)
- rh_status
- ;;
- condrestart|try-restart)
- rh_status_q || exit 0
- restart
- ;;
- *)
- echo $"Usage: $prog {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
- exit 2
-esac
-
-exit $?
diff --git a/meta-oe/recipes-connectivity/umip/files/mip6d.service b/meta-oe/recipes-connectivity/umip/files/mip6d.service
deleted file mode 100644
index 2b5a5b9f1d..0000000000
--- a/meta-oe/recipes-connectivity/umip/files/mip6d.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=MIPL Mobile IPv6
-After=network.target
-
-[Service]
-EnvironmentFile=-@SYSCONFDIR@/sysconfig/mip6d
-ExecStart=@SBINDIR@/mip6d $ARGS
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-oe/recipes-connectivity/umip/umip_1.0.bb b/meta-oe/recipes-connectivity/umip/umip_1.0.bb
deleted file mode 100644
index 0c120bfd84..0000000000
--- a/meta-oe/recipes-connectivity/umip/umip_1.0.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "Mobile IPv6 and NEMO for Linux"
-DESCRIPTION = "UMIP is an open source implementation of Mobile IPv6 and NEMO \
-Basic Support for Linux. It is released under the GPLv2 license. It supports \
-the following IETF RFC: RFC6275 (Mobile IPv6), RFC3963 (NEMO), RFC3776 and \
-RFC4877 (IPsec and IKEv2)."
-HOMEPAGE = "http://umip.org/"
-SECTION = "System Environment/Base"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=073dc31ccb2ebed70db54f1e8aeb4c33"
-DEPENDS = "rpm indent-native"
-
-SRC_URI = "git://github.com/jlanza/umip \
- file://add-dependency-to-support-parallel-compilation.patch \
- file://mip6d \
- file://mip6d.service \
- file://0001-Add-format-string-to-fprintf-call.patch \
- file://0001-replace-SIGCLD-with-SIGCHLD-and-include-sys-types.h.patch \
- file://0002-replace-PTHREAD_MUTEX_FAST_NP-with-PTHREAD_MUTEX_NOR.patch \
- "
-SRCREV = "7d67209cd1bba2dd0e183a0fa07eeef07964dd14"
-
-S = "${WORKDIR}/git"
-
-EXTRA_OECONF = "--enable-vt"
-
-inherit autotools-brokensep systemd update-rc.d
-
-INITSCRIPT_NAME = "mip6d"
-INITSCRIPT_PARAMS = "start 64 . stop 36 0 1 2 3 4 5 6 ."
-
-SYSTEMD_SERVICE_${PN} = "mip6d.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-do_install_append() {
- install -D -m 0755 ${WORKDIR}/mip6d ${D}${sysconfdir}/init.d/mip6d
- install -D -m 0644 ${WORKDIR}/mip6d.service ${D}${systemd_system_unitdir}/mip6d.service
- sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' \
- -e 's,@SBINDIR@,${sbindir},g' \
- ${D}${systemd_system_unitdir}/mip6d.service
-}
-
-RRECOMMENDS_${PN} = "kernel-module-mip6 kernel-module-ipv6"
diff --git a/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb b/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
index 4365aa4bc6..569d6a41cf 100644
--- a/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
+++ b/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
@@ -1,24 +1,23 @@
DESCRIPTION = "This daemon is in charge of multiplexing connections over USB to an iPhone or iPod touch."
-LICENSE = "GPLv3 & GPLv2 & LGPLv2.1"
+HOMEPAGE = "https://github.com/libimobiledevice/usbmuxd"
+LICENSE = "GPL-3.0-only & GPL-2.0-only & LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=ebb5c50ab7cab4baeffba14977030c07 \
- file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING.LGPLv2.1;md5=6ab17b41640564434dda85c06b7124f7"
+ file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504"
-DEPENDS = "udev libusb1"
+DEPENDS = "udev libusb1 libplist libimobiledevice-glue"
-inherit cmake pkgconfig gitpkgv
+inherit autotools pkgconfig gitpkgv systemd
PKGV = "${GITPKGVTAG}"
+PV = "1.1.2+git"
-SRCREV = "919587580c5e77f3936f3432115d2e10c7bac7c5"
-SRC_URI = "git://git.sukimashita.com/usbmuxd.git;protocol=http"
+SRCREV = "01c94c77f59404924f1c46d99c4e5e0c7817281b"
+SRC_URI = "git://github.com/libimobiledevice/usbmuxd;protocol=https;branch=master"
S = "${WORKDIR}/git"
-FILES_${PN} += "${base_libdir}/udev/rules.d/"
+EXTRA_OECONF += "--without-preflight"
-# fix usbmuxd installing files to /usr/lib64 on 64bit hosts:
-EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')}"
+FILES:${PN} += "${base_libdir}/udev/rules.d/"
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[plist] = "-DWANT_PLIST=1,-DWANT_PLIST=0,libplist"
+SYSTEMD_SERVICE:${PN} = "usbmuxd.service"
diff --git a/meta-oe/recipes-connectivity/wifi-test-suite/files/0001-Use-toolchain-from-environment-variables.patch b/meta-oe/recipes-connectivity/wifi-test-suite/files/0001-Use-toolchain-from-environment-variables.patch
new file mode 100644
index 0000000000..9ee4a51f99
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wifi-test-suite/files/0001-Use-toolchain-from-environment-variables.patch
@@ -0,0 +1,92 @@
+From 6b822b36739222d0c864249992b5d28e3ff4d948 Mon Sep 17 00:00:00 2001
+From: Adrian Friedli <adrian.friedli@husqvarnagroup.com>
+Date: Mon, 3 Sep 2018 17:58:27 +0200
+Subject: [PATCH] Use toolchain from environment variables
+
+Upstream-Status: Submitted [https://github.com/Wi-FiTestSuite/Wi-FiTestSuite-Linux-DUT/pull/42]
+Signed-off-by: Adrian Friedli <adrian.friedli@husqvarnagroup.com>
+Signed-off-by: Ankit Navik <ankit.tarot@gmail.com>
+---
+ Makefile.inc | 7 ++++---
+ WTGService/Makefile | 2 +-
+ console_src/Makefile | 2 +-
+ lib/Makefile | 6 +++---
+ 4 files changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/Makefile.inc b/Makefile.inc
+index b0edf5a..0094bdf 100644
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -13,14 +13,15 @@
+ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+ # USE OR PERFORMANCE OF THIS SOFTWARE.
+ #
+-CC = gcc
++CC ?= gcc
++AR ?= ar
+ LIB=lib
+ DUT=dut
+ CA=ca
+ UCC=ucc
+ CON=console_src
+ WTG=WTGService
+-MAKE=make
++MAKE?=make
+
+ # This is for WMM-PS
+ #for Ext TG
+@@ -46,7 +47,7 @@ CFLAGS = -g -O2 -D_REENTRANT -Wall -I../inc
+
+ DUTLIBS = ../lib/libwfa_dut.a -lpthread
+ CALIBS = ../lib/libwfa_ca.a -lpthread
+-RANLIB = ranlib
++RANLIB ?= ranlib
+
+ LIBWFA_NAME_DUT = libwfa_dut.a
+ LIBWFA_NAME_CA = libwfa_ca.a
+diff --git a/WTGService/Makefile b/WTGService/Makefile
+index 5312eb6..4855771 100644
+--- a/WTGService/Makefile
++++ b/WTGService/Makefile
+@@ -13,7 +13,7 @@
+ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+ # USE OR PERFORMANCE OF THIS SOFTWARE.
+ #
+-CC=gcc
++CC?=gcc
+ CFLAGS= -Wall
+ LIB=-lpthread
+
+diff --git a/console_src/Makefile b/console_src/Makefile
+index 8282283..d1098eb 100644
+--- a/console_src/Makefile
++++ b/console_src/Makefile
+@@ -14,7 +14,7 @@
+ # USE OR PERFORMANCE OF THIS SOFTWARE.
+ #
+
+-CC = gcc
++CC ?= gcc
+ CFLAGS = -g -DWFA_DEBUG -pthread
+
+ TARGETS = wfa_con
+diff --git a/lib/Makefile b/lib/Makefile
+index ffcef94..299b8d6 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -17,9 +17,9 @@
+ include ../Makefile.inc
+
+ all: ${LIB_OBJS}
+- ar crv ${LIBWFA_NAME} $?
+- ar crv ${LIBWFA_NAME_DUT} ${LIB_OBJS_DUT}
+- ar crv ${LIBWFA_NAME_CA} ${LIB_OBJS_CA}
++ $(AR) crv ${LIBWFA_NAME} $?
++ $(AR) crv ${LIBWFA_NAME_DUT} ${LIB_OBJS_DUT}
++ $(AR) crv ${LIBWFA_NAME_CA} ${LIB_OBJS_CA}
+ ${RANLIB} ${LIBWFA_NAME} ${LIBWFA_NAME_DUT} ${LIBWFA_NAME_CA}
+
+ wfa_tg.o: wfa_tg.c ../inc/wfa_agt.h ../inc/wfa_types.h ../inc/wfa_rsp.h ../inc/wfa_tlv.h ../inc/wfa_tg.h
+--
+2.7.4
+
diff --git a/meta-oe/recipes-connectivity/wifi-test-suite/files/0001-wfa_cmdproc-Store-return-value-into-location.patch b/meta-oe/recipes-connectivity/wifi-test-suite/files/0001-wfa_cmdproc-Store-return-value-into-location.patch
new file mode 100644
index 0000000000..074f0fe7bb
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wifi-test-suite/files/0001-wfa_cmdproc-Store-return-value-into-location.patch
@@ -0,0 +1,32 @@
+From 2b7d6cf62296ff4e25e5ad909aa39a257bf9ff78 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 31 Aug 2022 19:37:35 -0700
+Subject: [PATCH] wfa_cmdproc: Store return value into location
+
+Fixes
+| wfa_cmdproc.c:100:20: error: incompatible integer to pointer conversion assigning to 'int *' from 'int' [-Wint-conversion]
+| paramValue = atoi(str);
+| ^ ~~~~~~~~~
+
+Upstream-Status: Submitted [https://github.com/Wi-FiTestSuite/Wi-FiTestSuite-Linux-DUT/pull/57]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/wfa_cmdproc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/wfa_cmdproc.c b/lib/wfa_cmdproc.c
+index 9f5fd16..49a3f16 100644
+--- a/lib/wfa_cmdproc.c
++++ b/lib/wfa_cmdproc.c
+@@ -97,7 +97,7 @@ int getParamValueInt(char *pcmdStr, char *pParam, int *paramValue)
+ if(strcasecmp(pcmdStr, pParam) == 0)
+ {
+ str = strtok_r(NULL, ",", &pcmdStr);
+- paramValue = atoi(str);
++ *paramValue = atoi(str);
+ return 0;
+ }
+ return -1;
+--
+2.37.3
+
diff --git a/meta-oe/recipes-connectivity/wifi-test-suite/files/0002-Add-missing-include-removes-unnedded-stuff-and-add-n.patch b/meta-oe/recipes-connectivity/wifi-test-suite/files/0002-Add-missing-include-removes-unnedded-stuff-and-add-n.patch
new file mode 100644
index 0000000000..20fb6473f8
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wifi-test-suite/files/0002-Add-missing-include-removes-unnedded-stuff-and-add-n.patch
@@ -0,0 +1,45 @@
+From 451b162c903a1ef070a75dc18171620f3beef7b3 Mon Sep 17 00:00:00 2001
+From: Ankit Navik <ankit.tarot@gmail.com>
+Date: Tue, 25 Dec 2018 00:36:59 +0530
+Subject: [PATCH 2/3] Add missing include, removes unnedded stuff and add non
+ glibc rpc
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Reto Schneider <code@reto-schneider.ch>
+Signed-off-by: Ankit Navik <ankit.tarot@gmail.com>
+---
+ Makefile | 2 +-
+ inc/wfa_tg.h | 3 +++
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 2c41a17..5c4ad8c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -15,7 +15,7 @@
+ #
+ include Makefile.inc
+
+-DIRS= ${LIB} ${DUT} ${CA} ${TC} ${WTG} ${CON}
++DIRS= ${LIB} ${DUT} ${CA} ${TC}
+
+ all:
+ for i in ${DIRS}; do \
+diff --git a/inc/wfa_tg.h b/inc/wfa_tg.h
+index 799bf9f..a1804dd 100644
+--- a/inc/wfa_tg.h
++++ b/inc/wfa_tg.h
+@@ -24,6 +24,9 @@
+ #ifndef _WFA_TG_H
+ #define _WFA_TG_H
+
++#ifndef _WINDOWS
++#include <pthread.h>
++#endif
+ #include <sys/time.h>
+
+ /* maximum number of streams to support */
+--
+2.7.4
+
diff --git a/meta-oe/recipes-connectivity/wifi-test-suite/files/0003-fix-path-to-usr-sbin-for-script-and-make-script-for-.patch b/meta-oe/recipes-connectivity/wifi-test-suite/files/0003-fix-path-to-usr-sbin-for-script-and-make-script-for-.patch
new file mode 100644
index 0000000000..cfa46ff496
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wifi-test-suite/files/0003-fix-path-to-usr-sbin-for-script-and-make-script-for-.patch
@@ -0,0 +1,60 @@
+From fc7b7106dd0d8d123f20cbd8d408637fbc315e17 Mon Sep 17 00:00:00 2001
+From: Ankit Navik <ankit.tarot@gmail.com>
+Date: Tue, 25 Dec 2018 01:12:32 +0530
+Subject: [PATCH 3/3] fix path to /usr/sbin for script and make script for
+ generic shell
+
+Signed-off-by: Ankit Navik <ankit.tarot@gmail.com>
+---
+Upstream-Status: Pending
+
+ lib/wfa_cs.c | 4 ++--
+ scripts/dev_send_frame | 2 +-
+ scripts/sta_reset_parm | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/lib/wfa_cs.c b/lib/wfa_cs.c
+index 6b1f5a2..2a18533 100644
+--- a/lib/wfa_cs.c
++++ b/lib/wfa_cs.c
+@@ -319,7 +319,7 @@ int wfaStaGetIpConfig(int len, BYTE *caCmdBuf, int *respLen, BYTE *respBuf)
+ /*
+ * check a script file (the current implementation specific)
+ */
+- ret = access("/usr/local/sbin/getipconfig.sh", F_OK);
++ ret = access("/usr/sbin/getipconfig.sh", F_OK);
+ if(ret == -1)
+ {
+ ipconfigResp->status = STATUS_ERROR;
+@@ -2115,7 +2115,7 @@ int wfaStaPresetParams(int len, BYTE *caCmdBuf, int *respLen, BYTE *respBuf)
+ st = remove("/tmp/processid.txt");
+ }
+
+- sprintf(cmdStr, "/usr/local/sbin/findprocess.sh %s /tmp/processid.txt\n", "wpa_supplicant");
++ sprintf(cmdStr, "/usr/sbin/findprocess.sh %s /tmp/processid.txt\n", "wpa_supplicant");
+ st = system(cmdStr);
+
+ tmpfd = fopen("/tmp/processid.txt", "r+");
+diff --git a/scripts/dev_send_frame b/scripts/dev_send_frame
+index 9e6afd3..3c37d61 100644
+--- a/scripts/dev_send_frame
++++ b/scripts/dev_send_frame
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env sh
+
+ #
+ # Copyright (c) 2016 Wi-Fi Alliance
+diff --git a/scripts/sta_reset_parm b/scripts/sta_reset_parm
+index 2aff1f1..2c1c31e 100644
+--- a/scripts/sta_reset_parm
++++ b/scripts/sta_reset_parm
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env sh
+
+ #
+ # Copyright (c) 2016 Wi-Fi Alliance
+--
+2.7.4
+
diff --git a/meta-oe/recipes-connectivity/wifi-test-suite/files/0004-run-ranlib-per-library-and-use-AR.patch b/meta-oe/recipes-connectivity/wifi-test-suite/files/0004-run-ranlib-per-library-and-use-AR.patch
new file mode 100644
index 0000000000..40af48970f
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wifi-test-suite/files/0004-run-ranlib-per-library-and-use-AR.patch
@@ -0,0 +1,38 @@
+From cca2f9901fb4fdcdd49066fe434eae512964143f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 9 Feb 2019 07:59:47 -0800
+Subject: [PATCH 4/4] run ranlib per library and use AR
+
+Use AR variable to invoke archiver instead of hardcoding, helps cross
+compile
+
+compiler ranlib e.g. llvm-ranlib fails to operate on multiple archives
+on single invocation
+
+fixes errors like
+arm-yoe-linux-musleabi-llvm-ranlib: error: Exactly one archive should be specified.
+
+Upstream-Status: Submitted [https://github.com/Wi-FiTestSuite/Wi-FiTestSuite-Linux-DUT/pull/47]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/Makefile | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/lib/Makefile b/lib/Makefile
+index 299b8d6..5fca322 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -20,7 +20,9 @@ all: ${LIB_OBJS}
+ $(AR) crv ${LIBWFA_NAME} $?
+ $(AR) crv ${LIBWFA_NAME_DUT} ${LIB_OBJS_DUT}
+ $(AR) crv ${LIBWFA_NAME_CA} ${LIB_OBJS_CA}
+- ${RANLIB} ${LIBWFA_NAME} ${LIBWFA_NAME_DUT} ${LIBWFA_NAME_CA}
++ ${RANLIB} ${LIBWFA_NAME}
++ ${RANLIB} ${LIBWFA_NAME_DUT}
++ ${RANLIB} ${LIBWFA_NAME_CA}
+
+ wfa_tg.o: wfa_tg.c ../inc/wfa_agt.h ../inc/wfa_types.h ../inc/wfa_rsp.h ../inc/wfa_tlv.h ../inc/wfa_tg.h
+
+--
+2.20.1
+
diff --git a/meta-oe/recipes-connectivity/wifi-test-suite/files/fno-common.patch b/meta-oe/recipes-connectivity/wifi-test-suite/files/fno-common.patch
new file mode 100644
index 0000000000..fc5e2e99c5
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wifi-test-suite/files/fno-common.patch
@@ -0,0 +1,29 @@
+Mark extern variables with 'extern' keyword
+
+This ensures that compilers with -fno-common does not generate multiple definitions
+
+Upstream-Status: Pending
+Signedd-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/lib/wfa_cs.c
++++ b/lib/wfa_cs.c
+@@ -71,7 +71,7 @@ int wfaExecuteCLI(char *CLI);
+
+ /* Since the two definitions are used all over the CA function */
+ char gCmdStr[WFA_CMD_STR_SZ];
+-dutCmdResponse_t gGenericResp;
++extern dutCmdResponse_t gGenericResp;
+ int wfaTGSetPrio(int sockfd, int tgClass);
+ void create_apts_msg(int msg, unsigned int txbuf[],int id);
+
+--- a/lib/wfa_thr.c
++++ b/lib/wfa_thr.c
+@@ -41,7 +41,7 @@
+ /*
+ * external global thread sync variables
+ */
+-tgWMM_t wmm_thr[WFA_THREADS_NUM];
++extern tgWMM_t wmm_thr[WFA_THREADS_NUM];
+ extern int resetsnd;
+ extern int resetrcv;
+ extern int newCmdOn;
diff --git a/meta-oe/recipes-connectivity/wifi-test-suite/wifi-test-suite_10.10.1.bb b/meta-oe/recipes-connectivity/wifi-test-suite/wifi-test-suite_10.10.1.bb
new file mode 100644
index 0000000000..eda01ca388
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wifi-test-suite/wifi-test-suite_10.10.1.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Wi-Fi Test Suite Linux Control Agent"
+DESCRIPTION = "Wi-Fi Test Suite is a software platform originally developed \
+by Wi-Fi Alliance, the global non-profit industry association that brings you \
+Wi-Fi, to support certification program development and device certification."
+HOMEPAGE = "https://www.wi-fi.org/certification/wi-fi-test-suite"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=0542427ed5c315ca34aa09ae7a85ed32"
+SECTION = "test"
+
+S = "${WORKDIR}/git"
+SRCREV = "12e85fbeca8ca21a632d18e55089a8a7606d64aa"
+SRC_URI = "git://github.com/Wi-FiTestSuite/Wi-FiTestSuite-Linux-DUT.git;branch=master;protocol=https \
+ file://0001-Use-toolchain-from-environment-variables.patch \
+ file://0002-Add-missing-include-removes-unnedded-stuff-and-add-n.patch \
+ file://0003-fix-path-to-usr-sbin-for-script-and-make-script-for-.patch \
+ file://0004-run-ranlib-per-library-and-use-AR.patch \
+ file://fno-common.patch \
+ file://0001-wfa_cmdproc-Store-return-value-into-location.patch \
+"
+
+# to avoid host path QA error
+CFLAGS += "-I${STAGING_INCDIR}/tirpc"
+# Fix GNU HASH error
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_install () {
+ install -d ${D}${libdir}
+ install -m 0644 ${S}/lib/libwfa.a ${D}${libdir}
+ install -m 0644 ${S}/lib/libwfa_ca.a ${D}${libdir}
+ install -m 0644 ${S}/lib/libwfa_dut.a ${D}${libdir}
+ install -d ${D}${sbindir}
+ install -m 0755 ${S}/dut/wfa_dut ${D}${sbindir}
+ install -m 0755 ${S}/ca/wfa_ca ${D}${sbindir}
+ install -m 0755 ${S}/scripts/*.sh ${D}${sbindir}
+ install -m 0755 ${S}/scripts/arp_neigh_loop ${D}${sbindir}
+ install -m 0755 ${S}/scripts/dev_send_frame ${D}${sbindir}
+ install -m 0755 ${S}/scripts/sta_reset_parm ${D}${sbindir}
+}
+
+RDEPENDS:${PN} = "wpa-supplicant"
diff --git a/meta-oe/recipes-connectivity/wvdial/wvdial/musl-support.patch b/meta-oe/recipes-connectivity/wvdial/wvdial/musl-support.patch
new file mode 100644
index 0000000000..b5ad4823a0
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wvdial/wvdial/musl-support.patch
@@ -0,0 +1,25 @@
+Drop support for glibc < 2.10, in master we are at 2.28
+in process get it working with musl as well.
+
+Upstream-Status: Inappropriate [No upstream]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/wvmodemscan.cc
++++ b/wvmodemscan.cc
+@@ -495,16 +495,8 @@ static int fileselect(const struct diren
+ // (no internal ISDN support) || !strncmp(e->d_name, "ttyI", 4);
+ }
+
+-#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 10)
+ static int filesort(const dirent **e1, const dirent **e2)
+-#else
+-static int filesort(const void *_e1, const void *_e2)
+-#endif
+ {
+-#if !(defined(__GLIBC__) && __GLIBC_PREREQ(2, 10))
+- dirent const * const *e1 = (dirent const * const *)_e1;
+- dirent const * const *e2 = (dirent const * const *)_e2;
+-#endif
+ const char *p1, *p2;
+ int diff;
+
diff --git a/meta-oe/recipes-connectivity/wvdial/wvdial/typo_pon.wvdial.1.patch b/meta-oe/recipes-connectivity/wvdial/wvdial/typo_pon.wvdial.1.patch
index eec5a5d646..5f9cf8a31f 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvdial/typo_pon.wvdial.1.patch
+++ b/meta-oe/recipes-connectivity/wvdial/wvdial/typo_pon.wvdial.1.patch
@@ -1,3 +1,5 @@
+Upstream-Status: Pending
+
Remove warnings found by lintian
Last-Update: 2011-01-09
Index: wvdial-1.61/pon.wvdial.1
diff --git a/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb b/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
index 3a71fb9790..99e3ccacac 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
+++ b/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
@@ -1,28 +1,27 @@
HOMEPAGE = "http://www.alumnit.ca/wiki/?WvDial"
DESCRIPTION = "WvDial is a program that makes it easy to connect your Linux workstation to the Internet."
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
inherit pkgconfig
DEPENDS = "wvstreams"
-RDEPENDS_${PN} = "ppp"
+RDEPENDS:${PN} = "ppp"
-SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.bz2 \
+SRC_URI = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/${BPN}/${BP}.tar.bz2 \
file://typo_pon.wvdial.1.patch \
+ file://musl-support.patch \
"
-
SRC_URI[md5sum] = "37e9a2d664effe4efd44c0e1a20136de"
SRC_URI[sha256sum] = "99906d9560cbdbc97e1855e7b0a7169f1e11983be3ac539140423f09debced82"
+COMPATIBLE_HOST:libc-musl = "null"
EXTRA_OEMAKE = ""
export WVLINK="${LD}"
PARALLEL_MAKE = ""
-BUILD_CPPFLAGS += "-I${STAGING_INCDIR}/wvstreams"
-
do_configure() {
sed -i 's/LDFLAGS+=-luniconf/LIBS+=-luniconf/' ${S}/Makefile
}
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Check-for-limits.h-during-configure.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Check-for-limits.h-during-configure.patch
index b092ba2fce..42f3e42757 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Check-for-limits.h-during-configure.patch
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Check-for-limits.h-during-configure.patch
@@ -5,6 +5,8 @@ Subject: [PATCH 1/5] Check for limits.h during configure
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
+Upstream-Status: Pending
+
configure.ac | 2 ++
1 file changed, 2 insertions(+)
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch
new file mode 100644
index 0000000000..fc9abd8e63
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch
@@ -0,0 +1,29 @@
+From c86c524f951f6e973473bfee76fd5366368b2cbc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 25 Dec 2019 09:32:41 -0800
+Subject: [PATCH] Fix narrowing conversion error
+
+xplc/moduleloader.cc: In static member function 'static Module* Module::loadModule(const char*)': xplc/moduleloader.cc:67:14: error: narrowing conversion of '-1' from 'int' to 'unsigned int' [-Wnarrowing] 67 | case (int)-1: | ^
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ xplc/moduleloader.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/xplc/moduleloader.cc b/xplc/moduleloader.cc
+index 02dd9a4..c53f5d2 100644
+--- a/xplc/moduleloader.cc
++++ b/xplc/moduleloader.cc
+@@ -62,7 +62,7 @@ Module* Module::loadModule(const char* modulename) {
+ return NULL;
+ }
+
+- switch(moduleinfo->version_major) {
++ switch((int)moduleinfo->version_major) {
+ #ifdef UNSTABLE
+ case -1:
+ /* nothing to do */
+--
+2.24.1
+
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Forward-port-to-OpenSSL-1.1.x.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Forward-port-to-OpenSSL-1.1.x.patch
new file mode 100644
index 0000000000..19a2e26f2a
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Forward-port-to-OpenSSL-1.1.x.patch
@@ -0,0 +1,557 @@
+From 0c35749891bf834c1f3c1c4c330266bd2f4733cc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 9 Sep 2018 10:40:09 -0700
+Subject: [PATCH] Forward port to OpenSSL 1.1.x
+
+* import patch from debian
+https://sources.debian.org/src/wvstreams/4.6.1-14/debian/patches/wvstreams_openssl1.1.patch
+Author: Reiner Herrmann <reiner@reiner-h.de>
+
+Upstream-Status: Submitted [https://github.com/apenwarr/wvstreams/pull/2]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ crypto/wvcrl.cc | 38 +++++++++++++-------------------------
+ crypto/wvdiffiehellman.cc | 30 +++++++++++++++++++-----------
+ crypto/wvdigest.cc | 16 ++++++++--------
+ crypto/wvocsp.cc | 35 +++++++++--------------------------
+ crypto/wvx509.cc | 31 ++++++++++++++++---------------
+ crypto/wvx509mgr.cc | 27 ++++++++++++++++-----------
+ include/wvdiffiehellman.h | 2 +-
+ include/wvdigest.h | 14 ++++++--------
+ include/wvtripledes.h | 10 +++++-----
+ 9 files changed, 93 insertions(+), 110 deletions(-)
+
+diff --git a/crypto/wvcrl.cc b/crypto/wvcrl.cc
+index fa00c76..880ad85 100644
+--- a/crypto/wvcrl.cc
++++ b/crypto/wvcrl.cc
+@@ -357,31 +357,19 @@ bool WvCRL::isrevoked(WvStringParm serial_number) const
+ ASN1_INTEGER *serial = serial_to_int(serial_number);
+ if (serial)
+ {
+- X509_REVOKED mayberevoked;
+- mayberevoked.serialNumber = serial;
+- if (crl->crl->revoked)
+- {
+- int idx = sk_X509_REVOKED_find(crl->crl->revoked,
+- &mayberevoked);
+- ASN1_INTEGER_free(serial);
+- if (idx >= 0)
+- {
+- debug("Certificate is revoked.\n");
+- return true;
+- }
+- else
+- {
+- debug("Certificate is not revoked.\n");
+- return false;
+- }
+- }
+- else
+- {
+- ASN1_INTEGER_free(serial);
+- debug("CRL does not have revoked list.\n");
+- return false;
+- }
+-
++ X509_REVOKED *revoked_entry = NULL;
++ int idx = X509_CRL_get0_by_serial(crl, &revoked_entry, serial);
++ ASN1_INTEGER_free(serial);
++ if (idx >= 1 || revoked_entry)
++ {
++ debug("Certificate is revoked.\n");
++ return true;
++ }
++ else
++ {
++ debug("Certificate is not revoked.\n");
++ return false;
++ }
+ }
+ else
+ debug(WvLog::Warning, "Can't convert serial number to ASN1 format. "
+diff --git a/crypto/wvdiffiehellman.cc b/crypto/wvdiffiehellman.cc
+index 7c0bf32..15cd104 100644
+--- a/crypto/wvdiffiehellman.cc
++++ b/crypto/wvdiffiehellman.cc
+@@ -39,24 +39,25 @@ WvDiffieHellman::WvDiffieHellman(const unsigned char *_key, int _keylen,
+ {
+ int problems;
+ int check;
+- {
++
+ info = DH_new();
+- info->p = BN_bin2bn(_key, _keylen, NULL);
++ BIGNUM *p = BN_bin2bn(_key, _keylen, NULL);
+ // info->p->top = 0;
+ // info->p->dmax = _keylen * 8 / BN_BITS2;
+ // info->p->neg = 0;
+ // info->p->flags = 0;
+
+- info->g = BN_new();
+- BN_set_word(info->g, generator);
++ BIGNUM *g = BN_new();
++ BN_set_word(g, generator);
+ // info->g->d = &generator;
+ // info->g->top = 0;
+ // info->g->dmax = 1;
+ // info->g->neg = 0;
+ // info->g->flags = 0;
+- }
+
+- check = BN_mod_word(info->p, 24);
++ DH_set0_pqg(info, p, NULL, g);
++
++ check = BN_mod_word(p, 24);
+ DH_check(info, &problems);
+ if (problems & DH_CHECK_P_NOT_PRIME)
+ log(WvLog::Error, "Using a composite number for authentication.\n");
+@@ -64,7 +65,7 @@ WvDiffieHellman::WvDiffieHellman(const unsigned char *_key, int _keylen,
+ log(WvLog::Error,"Using an unsafe prime number for authentication.\n");
+ if (problems & DH_NOT_SUITABLE_GENERATOR)
+ log(WvLog::Error, "Can you just use 2 instead of %s (%s)!!\n",
+- BN_bn2hex(info->g), check);
++ BN_bn2hex(g), check);
+ if (problems & DH_UNABLE_TO_CHECK_GENERATOR)
+ log(WvLog::Notice, "Using a strange argument for diffie-hellman.\n");
+ DH_generate_key(info);
+@@ -72,18 +73,23 @@ WvDiffieHellman::WvDiffieHellman(const unsigned char *_key, int _keylen,
+
+ int WvDiffieHellman::pub_key_len()
+ {
+- return BN_num_bytes(info->pub_key);
++ const BIGNUM *pub_key = NULL;
++ DH_get0_key(info, &pub_key, NULL);
++ return BN_num_bytes(pub_key);
+ }
+
+ int WvDiffieHellman::get_public_value(WvBuf &outbuf, int len)
+ {
+- int key_len = BN_num_bytes(info->pub_key);
++ const BIGNUM *pub_key = NULL;
++ DH_get0_key(info, &pub_key, NULL);
++
++ int key_len = BN_num_bytes(pub_key);
+ if (key_len < len)
+ len = key_len;
+
+ // alloca is stack allocated, don't free it.
+ unsigned char *foo = (unsigned char*)alloca(key_len);
+- BN_bn2bin(info->pub_key, foo);
++ BN_bn2bin(pub_key, foo);
+ outbuf.put(foo, len);
+
+ return len;
+@@ -91,8 +97,10 @@ int WvDiffieHellman::get_public_value(WvBuf &outbuf, int len)
+
+ bool WvDiffieHellman::create_secret(WvBuf &inbuf, size_t in_len, WvBuf& outbuf)
+ {
++ const BIGNUM *pub_key = NULL;
++ DH_get0_key(info, &pub_key, NULL);
+ unsigned char *foo = (unsigned char *)alloca(DH_size(info));
+- log("My public value\n%s\nYour public value\n%s\n",BN_bn2hex(info->pub_key),
++ log("My public value\n%s\nYour public value\n%s\n",BN_bn2hex(pub_key),
+ hexdump_buffer(inbuf.peek(0, in_len), in_len, false));
+ int len = DH_compute_key (foo, BN_bin2bn(inbuf.get(in_len), in_len, NULL),
+ info);
+diff --git a/crypto/wvdigest.cc b/crypto/wvdigest.cc
+index 150edee..73ebb5d 100644
+--- a/crypto/wvdigest.cc
++++ b/crypto/wvdigest.cc
+@@ -13,10 +13,10 @@
+
+ /***** WvEVPMDDigest *****/
+
+-WvEVPMDDigest::WvEVPMDDigest(const env_md_st *_evpmd) :
++WvEVPMDDigest::WvEVPMDDigest(const EVP_MD*_evpmd) :
+ evpmd(_evpmd), active(false)
+ {
+- evpctx = new EVP_MD_CTX;
++ evpctx = EVP_MD_CTX_new();
+ _reset();
+ }
+
+@@ -24,7 +24,7 @@ WvEVPMDDigest::WvEVPMDDigest(const env_md_st *_evpmd) :
+ WvEVPMDDigest::~WvEVPMDDigest()
+ {
+ cleanup();
+- delete evpctx;
++ EVP_MD_CTX_free(evpctx);
+ }
+
+
+@@ -60,7 +60,7 @@ bool WvEVPMDDigest::_reset()
+ // the typecast is necessary for API compatibility with different
+ // versions of openssl. None of them *actually* change the contents of
+ // the pointer.
+- EVP_DigestInit(evpctx, (env_md_st *)evpmd);
++ EVP_DigestInit(evpctx, evpmd);
+ active = true;
+ return true;
+ }
+@@ -79,7 +79,7 @@ void WvEVPMDDigest::cleanup()
+
+ size_t WvEVPMDDigest::digestsize() const
+ {
+- return EVP_MD_size((env_md_st *)evpmd);
++ return EVP_MD_size(evpmd);
+ }
+
+
+@@ -104,14 +104,14 @@ WvHMACDigest::WvHMACDigest(WvEVPMDDigest *_digest,
+ {
+ key = new unsigned char[keysize];
+ memcpy(key, _key, keysize);
+- hmacctx = new HMAC_CTX;
++ hmacctx = HMAC_CTX_new();
+ _reset();
+ }
+
+ WvHMACDigest::~WvHMACDigest()
+ {
+ cleanup();
+- delete hmacctx;
++ HMAC_CTX_free(hmacctx);
+ deletev key;
+ delete digest;
+ }
+@@ -145,7 +145,7 @@ bool WvHMACDigest::_finish(WvBuf &outbuf)
+ bool WvHMACDigest::_reset()
+ {
+ cleanup();
+- HMAC_Init(hmacctx, key, keysize, (env_md_st *)digest->getevpmd());
++ HMAC_Init(hmacctx, key, keysize, digest->getevpmd());
+ active = true;
+ return true;
+ }
+diff --git a/crypto/wvocsp.cc b/crypto/wvocsp.cc
+index ddb2de4..7d5da07 100644
+--- a/crypto/wvocsp.cc
++++ b/crypto/wvocsp.cc
+@@ -118,9 +118,10 @@ bool WvOCSPResp::check_nonce(const WvOCSPReq &req) const
+
+ bool WvOCSPResp::signedbycert(const WvX509 &cert) const
+ {
+- EVP_PKEY *skey = X509_get_pubkey(cert.cert);
+- int i = OCSP_BASICRESP_verify(bs, skey, 0);
+- EVP_PKEY_free(skey);
++ STACK_OF(X509) *sk = sk_X509_new_null();
++ sk_X509_push(sk, cert.cert);
++ int i = OCSP_basic_verify(bs, sk, NULL, OCSP_NOVERIFY);
++ sk_X509_free(sk);
+
+ if(i > 0)
+ return true;
+@@ -131,33 +132,15 @@ bool WvOCSPResp::signedbycert(const WvX509 &cert) const
+
+ WvX509 WvOCSPResp::get_signing_cert() const
+ {
+- if (!bs || !sk_X509_num(bs->certs))
++ const STACK_OF(X509) *certs = OCSP_resp_get0_certs(bs);
++ if (!bs || !sk_X509_num(certs))
+ return WvX509();
+
+- // note: the following bit of code is taken almost verbatim from
+- // ocsp_vfy.c in OpenSSL 0.9.8. Copyright and attribution should
+- // properly belong to them
+-
+- OCSP_RESPID *id = bs->tbsResponseData->responderId;
+-
+- if (id->type == V_OCSP_RESPID_NAME)
+- {
+- X509 *x = X509_find_by_subject(bs->certs, id->value.byName);
+- if (x)
+- return WvX509(X509_dup(x));
++ X509 *signer = NULL;
++ if (OCSP_resp_get0_signer(bs, &signer, NULL) == 1) {
++ return WvX509(X509_dup(signer));
+ }
+
+- if (id->value.byKey->length != SHA_DIGEST_LENGTH) return NULL;
+- unsigned char tmphash[SHA_DIGEST_LENGTH];
+- unsigned char *keyhash = id->value.byKey->data;
+- for (int i = 0; i < sk_X509_num(bs->certs); i++)
+- {
+- X509 *x = sk_X509_value(bs->certs, i);
+- X509_pubkey_digest(x, EVP_sha1(), tmphash, NULL);
+- if(!memcmp(keyhash, tmphash, SHA_DIGEST_LENGTH))
+- return WvX509(X509_dup(x));
+- }
+-
+ return WvX509();
+ }
+
+diff --git a/crypto/wvx509.cc b/crypto/wvx509.cc
+index e4925ce..984156c 100644
+--- a/crypto/wvx509.cc
++++ b/crypto/wvx509.cc
+@@ -974,7 +974,7 @@ static void add_aia(WvStringParm type, WvString identifier,
+ sk_ACCESS_DESCRIPTION_push(ainfo, acc);
+ acc->method = OBJ_txt2obj(type.cstr(), 0);
+ acc->location->type = GEN_URI;
+- acc->location->d.ia5 = M_ASN1_IA5STRING_new();
++ acc->location->d.ia5 = ASN1_IA5STRING_new();
+ unsigned char *cident
+ = reinterpret_cast<unsigned char *>(identifier.edit());
+ ASN1_STRING_set(acc->location->d.ia5, cident, identifier.len());
+@@ -1059,7 +1059,7 @@ void WvX509::set_crl_urls(WvStringList &urls)
+ GENERAL_NAMES *uris = GENERAL_NAMES_new();
+ GENERAL_NAME *uri = GENERAL_NAME_new();
+ uri->type = GEN_URI;
+- uri->d.ia5 = M_ASN1_IA5STRING_new();
++ uri->d.ia5 = ASN1_IA5STRING_new();
+ unsigned char *cident
+ = reinterpret_cast<unsigned char *>(i().edit());
+ ASN1_STRING_set(uri->d.ia5, cident, i().len());
+@@ -1162,10 +1162,11 @@ WvString WvX509::get_extension(int nid) const
+ #else
+ X509V3_EXT_METHOD *method = X509V3_EXT_get(ext);
+ #endif
++ ASN1_OCTET_STRING *ext_data_str = X509_EXTENSION_get_data(ext);
+ if (!method)
+ {
+ WvDynBuf buf;
+- buf.put(ext->value->data, ext->value->length);
++ buf.put(ext_data_str->data, ext_data_str->length);
+ retval = buf.getstr();
+ }
+ else
+@@ -1176,21 +1177,21 @@ WvString WvX509::get_extension(int nid) const
+ // even though it's const (at least as of version 0.9.8e).
+ // gah.
+ #if OPENSSL_VERSION_NUMBER >= 0x0090800fL
+- const unsigned char * ext_value_data = ext->value->data;
++ const unsigned char * ext_value_data = ext_data_str->data;
+ #else
+ unsigned char *ext_value_data = ext->value->data;
+ #endif
+ if (method->it)
+ {
+ ext_data = ASN1_item_d2i(NULL, &ext_value_data,
+- ext->value->length,
++ ext_data_str->length,
+ ASN1_ITEM_ptr(method->it));
+ TRACE("Applied generic conversion!\n");
+ }
+ else
+ {
+ ext_data = method->d2i(NULL, &ext_value_data,
+- ext->value->length);
++ ext_data_str->length);
+ TRACE("Applied method specific conversion!\n");
+ }
+
+@@ -1325,13 +1326,13 @@ bool WvX509::verify(WvBuf &original, WvStringParm signature) const
+ return false;
+
+ /* Verify the signature */
+- EVP_MD_CTX sig_ctx;
+- EVP_VerifyInit(&sig_ctx, EVP_sha1());
+- EVP_VerifyUpdate(&sig_ctx, original.peek(0, original.used()),
++ EVP_MD_CTX *sig_ctx = EVP_MD_CTX_new();
++ EVP_VerifyInit(sig_ctx, EVP_sha1());
++ EVP_VerifyUpdate(sig_ctx, original.peek(0, original.used()),
+ original.used());
+- int sig_err = EVP_VerifyFinal(&sig_ctx, sig_buf, sig_size, pk);
++ int sig_err = EVP_VerifyFinal(sig_ctx, sig_buf, sig_size, pk);
+ EVP_PKEY_free(pk);
+- EVP_MD_CTX_cleanup(&sig_ctx); // Again, not my fault...
++ EVP_MD_CTX_free(sig_ctx); // Again, not my fault...
+ if (sig_err != 1)
+ {
+ debug("Verify failed!\n");
+@@ -1450,19 +1451,19 @@ void WvX509::set_ski()
+ {
+ CHECK_CERT_EXISTS_SET("ski");
+
+- ASN1_OCTET_STRING *oct = M_ASN1_OCTET_STRING_new();
+- ASN1_BIT_STRING *pk = cert->cert_info->key->public_key;
++ ASN1_OCTET_STRING *oct = ASN1_OCTET_STRING_new();
++ ASN1_BIT_STRING *pk = X509_get0_pubkey_bitstr(cert);
+ unsigned char pkey_dig[EVP_MAX_MD_SIZE];
+ unsigned int diglen;
+
+ EVP_Digest(pk->data, pk->length, pkey_dig, &diglen, EVP_sha1(), NULL);
+
+- M_ASN1_OCTET_STRING_set(oct, pkey_dig, diglen);
++ ASN1_OCTET_STRING_set(oct, pkey_dig, diglen);
+ X509_EXTENSION *ext = X509V3_EXT_i2d(NID_subject_key_identifier, 0,
+ oct);
+ X509_add_ext(cert, ext, -1);
+ X509_EXTENSION_free(ext);
+- M_ASN1_OCTET_STRING_free(oct);
++ ASN1_OCTET_STRING_free(oct);
+ }
+
+
+diff --git a/crypto/wvx509mgr.cc b/crypto/wvx509mgr.cc
+index f249eec..156d3a4 100644
+--- a/crypto/wvx509mgr.cc
++++ b/crypto/wvx509mgr.cc
+@@ -350,6 +350,8 @@ bool WvX509Mgr::signcert(WvX509 &unsignedcert) const
+ return false;
+ }
+
++ uint32_t ex_flags = X509_get_extension_flags(cert);
++ uint32_t ex_kusage = X509_get_key_usage(cert);
+ if (cert == unsignedcert.cert)
+ {
+ debug("Self Signing!\n");
+@@ -362,8 +364,8 @@ bool WvX509Mgr::signcert(WvX509 &unsignedcert) const
+ return false;
+ }
+ #endif
+- else if (!((cert->ex_flags & EXFLAG_KUSAGE) &&
+- (cert->ex_kusage & KU_KEY_CERT_SIGN)))
++ else if (!((ex_flags & EXFLAG_KUSAGE) &&
++ (ex_kusage & KU_KEY_CERT_SIGN)))
+ {
+ debug("This Certificate is not allowed to sign certificates!\n");
+ return false;
+@@ -390,6 +392,8 @@ bool WvX509Mgr::signcert(WvX509 &unsignedcert) const
+
+ bool WvX509Mgr::signcrl(WvCRL &crl) const
+ {
++ uint32_t ex_flags = X509_get_extension_flags(cert);
++ uint32_t ex_kusage = X509_get_key_usage(cert);
+ if (!isok() || !crl.isok())
+ {
+ debug(WvLog::Warning, "Asked to sign CRL, but certificate or CRL (or "
+@@ -403,12 +407,12 @@ bool WvX509Mgr::signcrl(WvCRL &crl) const
+ "CRLs!\n");
+ return false;
+ }
+- else if (!((cert->ex_flags & EXFLAG_KUSAGE) &&
+- (cert->ex_kusage & KU_CRL_SIGN)))
++ else if (!((ex_flags & EXFLAG_KUSAGE) &&
++ (ex_kusage & KU_CRL_SIGN)))
+ {
+ debug("Certificate not allowed to sign CRLs! (%s %s)\n",
+- (cert->ex_flags & EXFLAG_KUSAGE),
+- (cert->ex_kusage & KU_CRL_SIGN));
++ (ex_flags & EXFLAG_KUSAGE),
++ (ex_kusage & KU_CRL_SIGN));
+ return false;
+ }
+ #endif
+@@ -454,7 +458,6 @@ WvString WvX509Mgr::sign(WvBuf &data) const
+ {
+ assert(rsa);
+
+- EVP_MD_CTX sig_ctx;
+ unsigned char sig_buf[4096];
+
+ EVP_PKEY *pk = EVP_PKEY_new();
+@@ -467,20 +470,22 @@ WvString WvX509Mgr::sign(WvBuf &data) const
+ return WvString::null;
+ }
+
+- EVP_SignInit(&sig_ctx, EVP_sha1());
+- EVP_SignUpdate(&sig_ctx, data.peek(0, data.used()), data.used());
++ EVP_MD_CTX *sig_ctx = EVP_MD_CTX_new();
++ EVP_SignInit(sig_ctx, EVP_sha1());
++ EVP_SignUpdate(sig_ctx, data.peek(0, data.used()), data.used());
+ unsigned int sig_len = sizeof(sig_buf);
+- int sig_err = EVP_SignFinal(&sig_ctx, sig_buf,
++ int sig_err = EVP_SignFinal(sig_ctx, sig_buf,
+ &sig_len, pk);
+ if (sig_err != 1)
+ {
+ debug("Error while signing.\n");
+ EVP_PKEY_free(pk);
++ EVP_MD_CTX_free(sig_ctx);
+ return WvString::null;
+ }
+
+ EVP_PKEY_free(pk);
+- EVP_MD_CTX_cleanup(&sig_ctx); // this isn't my fault ://
++ EVP_MD_CTX_free(sig_ctx); // this isn't my fault ://
+ WvDynBuf buf;
+ buf.put(sig_buf, sig_len);
+ debug("Signature size: %s\n", buf.used());
+diff --git a/include/wvdiffiehellman.h b/include/wvdiffiehellman.h
+index af75ffa..a2d001f 100644
+--- a/include/wvdiffiehellman.h
++++ b/include/wvdiffiehellman.h
+@@ -27,7 +27,7 @@ public:
+ bool create_secret(WvBuf &inbuf, size_t in_len, WvBuf& outbuf);
+
+ protected:
+- struct dh_st *info;
++ DH *info;
+ BN_ULONG generator;
+
+ private:
+diff --git a/include/wvdigest.h b/include/wvdigest.h
+index fdc39bd..f2eed40 100644
+--- a/include/wvdigest.h
++++ b/include/wvdigest.h
+@@ -9,10 +9,8 @@
+
+ #include "wvencoder.h"
+ #include <stdint.h>
++#include <openssl/evp.h>
+
+-struct env_md_st;
+-struct env_md_ctx_st;
+-struct hmac_ctx_st;
+
+ /**
+ * Superclass for all message digests.
+@@ -45,8 +43,8 @@ public:
+ class WvEVPMDDigest : public WvDigest
+ {
+ friend class WvHMACDigest;
+- const env_md_st *evpmd;
+- env_md_ctx_st *evpctx;
++ const EVP_MD *evpmd;
++ EVP_MD_CTX *evpctx;
+ bool active;
+
+ public:
+@@ -54,13 +52,13 @@ public:
+ virtual size_t digestsize() const;
+
+ protected:
+- WvEVPMDDigest(const env_md_st *_evpmd);
++ WvEVPMDDigest(const EVP_MD *_evpmd);
+ virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf,
+ bool flush); // consumes input
+ virtual bool _finish(WvBuf &outbuf); // outputs digest
+ virtual bool _reset(); // supported: resets digest value
+
+- const env_md_st *getevpmd()
++ const EVP_MD *getevpmd()
+ { return evpmd; }
+
+ private:
+@@ -104,7 +102,7 @@ class WvHMACDigest : public WvDigest
+ WvEVPMDDigest *digest;
+ unsigned char *key;
+ size_t keysize;
+- hmac_ctx_st *hmacctx;
++ HMAC_CTX *hmacctx;
+ bool active;
+
+ public:
+diff --git a/include/wvtripledes.h b/include/wvtripledes.h
+index 185fe8a..a442e7a 100644
+--- a/include/wvtripledes.h
++++ b/include/wvtripledes.h
+@@ -70,11 +70,11 @@ protected:
+
+ private:
+ Mode mode;
+- des_cblock key;
+- des_key_schedule deskey1;
+- des_key_schedule deskey2;
+- des_key_schedule deskey3;
+- des_cblock ivec; // initialization vector
++ DES_cblock key;
++ DES_key_schedule deskey1;
++ DES_key_schedule deskey2;
++ DES_key_schedule deskey3;
++ DES_cblock ivec; // initialization vector
+ int ivecoff; // current offset into initvec
+ };
+
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-build-fix-parallel-make.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-build-fix-parallel-make.patch
index 6bc34331d6..954c3d9fca 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-build-fix-parallel-make.patch
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-build-fix-parallel-make.patch
@@ -7,6 +7,8 @@ Imported from Gentoo
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
+Upstream-Status: Pending
+
Makefile | 15 +++++++++++++--
wvrules-posix.mk | 7 +++++--
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvrules.mk-Use-_DEFAULT_SOURCE.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvrules.mk-Use-_DEFAULT_SOURCE.patch
index 59f70e380d..5b7135c3f3 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvrules.mk-Use-_DEFAULT_SOURCE.patch
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvrules.mk-Use-_DEFAULT_SOURCE.patch
@@ -8,6 +8,8 @@ warning: "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
+Upstream-Status: Pending
+
wvrules.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvtask-Dont-use-ucontext-on-non-glibc-systems.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvtask-Dont-use-ucontext-on-non-glibc-systems.patch
deleted file mode 100644
index 232db9e63b..0000000000
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvtask-Dont-use-ucontext-on-non-glibc-systems.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 0e054339c1422168a7f4a9dcf090268053a33b1f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 20 Jul 2017 21:05:37 -0700
-Subject: [PATCH 2/5] wvtask: Dont use ucontext on non-glibc systems
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- utils/wvtask.cc | 24 ++++++++++++++++++++++++
- 1 file changed, 24 insertions(+)
-
-diff --git a/utils/wvtask.cc b/utils/wvtask.cc
-index cdcd544..c0bff7d 100644
---- a/utils/wvtask.cc
-+++ b/utils/wvtask.cc
-@@ -199,7 +199,9 @@ WvTaskMan::WvTaskMan()
- stacktop = (char *)alloca(0);
-
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&get_stack_return) == 0);
-+#endif
- if (context_return == 0)
- {
- // initial setup - start the stackmaster() task (never returns!)
-@@ -265,13 +267,17 @@ int WvTaskMan::run(WvTask &task, int val)
- state = &old_task->mystate;
-
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(state) == 0);
-+#endif
- int newval = context_return;
- if (newval == 0)
- {
- // saved the state, now run the task.
- context_return = val;
-+#ifdef __GLIBC__
- setcontext(&task.mystate);
-+#endif
- return -1;
- }
- else
-@@ -319,13 +325,17 @@ int WvTaskMan::yield(int val)
- #endif
-
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&current_task->mystate) == 0);
-+#endif
- int newval = context_return;
- if (newval == 0)
- {
- // saved the task state; now yield to the toplevel.
- context_return = val;
-+#ifdef __GLIBC__
- setcontext(&toplevel);
-+#endif
- return -1;
- }
- else
-@@ -341,7 +351,9 @@ int WvTaskMan::yield(int val)
- void WvTaskMan::get_stack(WvTask &task, size_t size)
- {
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&get_stack_return) == 0);
-+#endif
- if (context_return == 0)
- {
- assert(magic_number == -WVTASK_MAGIC);
-@@ -371,7 +383,9 @@ void WvTaskMan::get_stack(WvTask &task, size_t size)
- // initial setup
- stack_target = &task;
- context_return = size/1024 + (size%1024 > 0);
-+#ifdef __GLIBC__
- setcontext(&stackmaster_task);
-+#endif
- }
- else
- {
-@@ -409,7 +423,9 @@ void WvTaskMan::_stackmaster()
- assert(magic_number == -WVTASK_MAGIC);
-
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&stackmaster_task) == 0);
-+#endif
- val = context_return;
- if (val == 0)
- {
-@@ -419,7 +435,9 @@ void WvTaskMan::_stackmaster()
- // all current stack allocations) and go back to get_stack
- // (or the constructor, if that's what called us)
- context_return = 1;
-+#ifdef __GLIBC__
- setcontext(&get_stack_return);
-+#endif
- }
- else
- {
-@@ -474,7 +492,9 @@ void WvTaskMan::do_task()
-
- // back here from longjmp; someone wants stack space.
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&task->mystate) == 0);
-+#endif
- if (context_return == 0)
- {
- // done the setjmp; that means the target task now has
-@@ -510,7 +530,9 @@ void WvTaskMan::do_task()
- }
- else
- {
-+#ifdef __GLIBC__
- assert(getcontext(&task->func_call) == 0);
-+#endif
- task->func_call.uc_stack.ss_size = task->stacksize;
- task->func_call.uc_stack.ss_sp = task->stack;
- task->func_call.uc_stack.ss_flags = 0;
-@@ -521,9 +543,11 @@ void WvTaskMan::do_task()
- (void (*)(void))call_func, 1, task);
-
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&task->func_return) == 0);
- if (context_return == 0)
- setcontext(&task->func_call);
-+#endif
- }
-
- // the task's function terminated.
---
-2.13.3
-
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/0003-wvtask-Check-for-HAVE_LIBC_STACK_END-only-on-glibc-s.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/0003-wvtask-Check-for-HAVE_LIBC_STACK_END-only-on-glibc-s.patch
index f9304197ae..856c2460b4 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/0003-wvtask-Check-for-HAVE_LIBC_STACK_END-only-on-glibc-s.patch
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/0003-wvtask-Check-for-HAVE_LIBC_STACK_END-only-on-glibc-s.patch
@@ -6,6 +6,8 @@ Subject: [PATCH 3/5] wvtask: Check for HAVE_LIBC_STACK_END only on glibc
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
+Upstream-Status: Pending
+
utils/wvtask.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/0004-wvcrash-Replace-use-of-basename-API.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/0004-wvcrash-Replace-use-of-basename-API.patch
index 6f3fbffbdf..f960c98622 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/0004-wvcrash-Replace-use-of-basename-API.patch
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/0004-wvcrash-Replace-use-of-basename-API.patch
@@ -7,6 +7,8 @@ musl does not have this API
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
+Upstream-Status: Pending
+
utils/wvcrash.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/0005-check-for-libexecinfo-during-configure.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/0005-check-for-libexecinfo-during-configure.patch
index 25e9ee2369..508007c0ea 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/0005-check-for-libexecinfo-during-configure.patch
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/0005-check-for-libexecinfo-during-configure.patch
@@ -5,6 +5,8 @@ Subject: [PATCH 5/5] check for libexecinfo during configure
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
+Upstream-Status: Pending
+
configure.ac | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/04_signed_request.diff b/meta-oe/recipes-connectivity/wvdial/wvstreams/04_signed_request.diff
index 5ab633bc3d..50f3f72cd4 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/04_signed_request.diff
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/04_signed_request.diff
@@ -1,3 +1,5 @@
+Upstream-Status: Pending
+
Index: wvstreams-4.6/crypto/wvx509.cc
===================================================================
--- wvstreams-4.6.orig/crypto/wvx509.cc 2009-07-29 11:58:16.000000000 -0400
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff b/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff
index 8e4fd03298..6b31f2e10f 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff
@@ -1,16 +1,5 @@
-Index: wvstreams-4.6.1/crypto/wvx509.cc
-===================================================================
---- wvstreams-4.6.1.orig/crypto/wvx509.cc 2011-05-20 00:02:38.119136584 +0200
-+++ wvstreams-4.6.1/crypto/wvx509.cc 2011-05-20 00:02:26.035136589 +0200
-@@ -1157,7 +1157,7 @@
-
- if (ext)
- {
-- X509V3_EXT_METHOD *method = X509V3_EXT_get(ext);
-+ X509V3_EXT_METHOD *method = (X509V3_EXT_METHOD *)X509V3_EXT_get(ext);
- if (!method)
- {
- WvDynBuf buf;
+Upstream-Status: Pending
+
Index: wvstreams-4.6.1/ipstreams/wvunixdgsocket.cc
===================================================================
--- wvstreams-4.6.1.orig/ipstreams/wvunixdgsocket.cc 2011-05-20 00:02:38.391136584 +0200
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/06_gcc-4.7.diff b/meta-oe/recipes-connectivity/wvdial/wvstreams/06_gcc-4.7.diff
index a75067a108..7b05e468a9 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/06_gcc-4.7.diff
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/06_gcc-4.7.diff
@@ -1,3 +1,5 @@
+Upstream-Status: Pending
+
Description: Fix FTBFS with gcc-4.7
Small header include change. This is borderlinde cosmetic, but still needed
to prevent the FTBFS.
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/07_buildflags.diff b/meta-oe/recipes-connectivity/wvdial/wvstreams/07_buildflags.diff
index ec99dcd36a..bd08d81c37 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/07_buildflags.diff
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/07_buildflags.diff
@@ -1,3 +1,5 @@
+Upstream-Status: Pending
+
Index: b/gen-cc
===================================================================
--- a/gen-cc
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/argp.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/argp.patch
index e857213637..ed6e8599e1 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/argp.patch
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/argp.patch
@@ -1,3 +1,5 @@
+Upstream-Status: Pending
+
Check for argp_parse in libargp and then in libc before using internal version
Index: wvstreams-4.6.1/configure.ac
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/gcc-6.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/gcc-6.patch
index b084887ba7..899eeb9212 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams/gcc-6.patch
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/gcc-6.patch
@@ -1,3 +1,5 @@
+Upstream-Status: Pending
+
Description: Fix compilation with gcc-6
Author: Gert Wollny <gw.fossdev@gmail.com>
Last-Updated: 2016-07-26
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch b/meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch
new file mode 100644
index 0000000000..7e372d391d
--- /dev/null
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch
@@ -0,0 +1,18 @@
+Upstream-Status: Pending
+
+Index: wvstreams-4.6.1/crypto/wvx509.cc
+===================================================================
+--- wvstreams-4.6.1.orig/crypto/wvx509.cc
++++ wvstreams-4.6.1/crypto/wvx509.cc
+@@ -1157,7 +1157,11 @@ WvString WvX509::get_extension(int nid)
+
+ if (ext)
+ {
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ const X509V3_EXT_METHOD *method = X509V3_EXT_get(ext);
++#else
+ X509V3_EXT_METHOD *method = X509V3_EXT_get(ext);
++#endif
+ if (!method)
+ {
+ WvDynBuf buf;
diff --git a/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb b/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
index e3d5e7d20b..3453f3e964 100644
--- a/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
+++ b/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
@@ -1,13 +1,13 @@
HOMEPAGE = "http://alumnit.ca/wiki/index.php?page=WvStreams"
SUMMARY = "WvStreams is a network programming library in C++"
-LICENSE = "LGPLv2"
+LICENSE = "LGPL-2.0-only"
LIC_FILES_CHKSUM = "file://LICENSE;md5=55ca817ccb7d5b5b66355690e9abc605"
-DEPENDS = "zlib openssl (>= 0.9.8) dbus readline"
-DEPENDS_append_libc-musl = " argp-standalone libexecinfo"
+DEPENDS = "zlib openssl (>= 0.9.8) dbus readline boost"
+DEPENDS:append:libc-musl = " argp-standalone libexecinfo"
-SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.gz \
+SRC_URI = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/${BPN}/${BP}.tar.gz \
file://04_signed_request.diff \
file://05_gcc.diff \
file://06_gcc-4.7.diff \
@@ -15,42 +15,44 @@ SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.gz \
file://gcc-6.patch \
file://argp.patch \
file://0001-Check-for-limits.h-during-configure.patch \
- file://0002-wvtask-Dont-use-ucontext-on-non-glibc-systems.patch \
file://0003-wvtask-Check-for-HAVE_LIBC_STACK_END-only-on-glibc-s.patch \
file://0004-wvcrash-Replace-use-of-basename-API.patch \
file://0005-check-for-libexecinfo-during-configure.patch \
file://0001-build-fix-parallel-make.patch \
file://0002-wvrules.mk-Use-_DEFAULT_SOURCE.patch \
+ file://openssl-buildfix.patch \
+ file://0001-Forward-port-to-OpenSSL-1.1.x.patch \
+ file://0001-Fix-narrowing-conversion-error.patch \
"
SRC_URI[md5sum] = "2760dac31a43d452a19a3147bfde571c"
SRC_URI[sha256sum] = "8403f5fbf83aa9ac0c6ce15d97fd85607488152aa84e007b7d0621b8ebc07633"
+COMPATIBLE_HOST:libc-musl = "null"
+
inherit autotools-brokensep pkgconfig
-TARGET_CFLAGS_append = " -fno-tree-dce -fno-optimize-sibling-calls"
+TARGET_CFLAGS:append = " -fno-tree-dce -fno-optimize-sibling-calls"
-LDFLAGS_append = " -Wl,-rpath-link,${CROSS_DIR}/${TARGET_SYS}/lib"
+LDFLAGS:append = " -Wl,-rpath-link,${CROSS_DIR}/${TARGET_SYS}/lib"
EXTRA_OECONF = " --without-tcl --without-qt --without-pam --without-valgrind"
-PACKAGES_prepend = "libuniconf libuniconf-dbg "
-PACKAGES_prepend = "uniconfd uniconfd-dbg "
-PACKAGES_prepend = "libwvstreams-base libwvstreams-base-dbg "
-PACKAGES_prepend = "libwvstreams-extras libwvstreams-extras-dbg "
-PACKAGES_prepend = "${PN}-valgrind "
+PACKAGES:prepend = "libuniconf "
+PACKAGES:prepend = "uniconfd "
+PACKAGES:prepend = "libwvstreams-base "
+PACKAGES:prepend = "libwvstreams-extras "
+PACKAGES:prepend = "${PN}-valgrind "
+
+RPROVIDES:${PN}-dbg += "libuniconf-dbg uniconfd-dbg libwvstreams-base-dbg libwvstreams-extras-dbg"
-FILES_libuniconf = "${libdir}/libuniconf.so.*"
-FILES_libuniconf-dbg = "${libdir}/.debug/libuniconf.so.*"
+FILES:libuniconf = "${libdir}/libuniconf.so.*"
-FILES_uniconfd = "${sbindir}/uniconfd ${sysconfdir}/uniconf.conf ${localstatedir}/uniconf"
-FILES_uniconfd-dbg = "${sbindir}/.debug/uniconfd"
+FILES:uniconfd = "${sbindir}/uniconfd ${sysconfdir}/uniconf.conf ${localstatedir}/uniconf"
-FILES_libwvstreams-base = "${libdir}/libwvutils.so.*"
-FILES_libwvstreams-base-dbg = "${libdir}/.debug/libwvutils.so.*"
+FILES:libwvstreams-base = "${libdir}/libwvutils.so.*"
-FILES_libwvstreams-extras = "${libdir}/libwvbase.so.* ${libdir}/libwvstreams.so.*"
-FILES_libwvstreams-extras-dbg = "${libdir}/.debug/libwvbase.so.* ${libdir}/.debug/libwvstreams.so.*"
+FILES:libwvstreams-extras = "${libdir}/libwvbase.so.* ${libdir}/libwvstreams.so.*"
-FILES_${PN}-valgrind = "${libdir}/valgrind/wvstreams.supp"
-RDEPENDS_${PN} += "perl"
+FILES:${PN}-valgrind = "${libdir}/valgrind/wvstreams.supp"
+RDEPENDS:${PN} += "perl"
diff --git a/meta-oe/recipes-connectivity/zabbix/zabbix/0001-Fix-configure.ac.patch b/meta-oe/recipes-connectivity/zabbix/zabbix/0001-Fix-configure.ac.patch
index af14a1a56c..97339d3ff9 100644
--- a/meta-oe/recipes-connectivity/zabbix/zabbix/0001-Fix-configure.ac.patch
+++ b/meta-oe/recipes-connectivity/zabbix/zabbix/0001-Fix-configure.ac.patch
@@ -1,5 +1,7 @@
uname can not get version of kernel correctly while cross compile
+Upstream-Status: Inappropriate [configuration]
+
Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
---
configure.ac | 2 +-
diff --git a/meta-oe/recipes-connectivity/zabbix/zabbix/0001-initialize-msghdr-portably.patch b/meta-oe/recipes-connectivity/zabbix/zabbix/0001-initialize-msghdr-portably.patch
new file mode 100644
index 0000000000..a7a1dc1986
--- /dev/null
+++ b/meta-oe/recipes-connectivity/zabbix/zabbix/0001-initialize-msghdr-portably.patch
@@ -0,0 +1,52 @@
+From 37b662cf44e14b33e93759d4b129d23095b41372 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 31 Aug 2022 23:55:02 -0700
+Subject: [PATCH] initialize msghdr portably
+
+on linux we have musl as an option for system C library and current
+initialization assumes the structure to be same as glibc, therefore
+initialize the elements of structure instead, so it can work on both
+glibc and musl.
+
+Fixes
+net.c:115:79: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
+ struct msghdr s_msg = { (void *)&s_sa, sizeof(struct sockaddr_nl), s_io, 1, NULL, 0, 0};
+ ^~~~
+
+Upstream-Status: Submitted [https://github.com/zabbix/zabbix/pull/77]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libs/zbxsysinfo/linux/net.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/libs/zbxsysinfo/linux/net.c b/src/libs/zbxsysinfo/linux/net.c
+index 1425a3604d..98f03de0dd 100644
+--- a/src/libs/zbxsysinfo/linux/net.c
++++ b/src/libs/zbxsysinfo/linux/net.c
+@@ -114,13 +114,21 @@ static int find_tcp_port_by_state_nl(unsigned short port, int state, int *found)
+
+ struct sockaddr_nl s_sa = { AF_NETLINK, 0, 0, 0 };
+ struct iovec s_io[1] = { { &request, sizeof(request) } };
+- struct msghdr s_msg = { (void *)&s_sa, sizeof(struct sockaddr_nl), s_io, 1, NULL, 0, 0};
++ struct msghdr s_msg = { 0 };
++ s_msg.msg_name = (void *)&s_sa;
++ s_msg.msg_namelen = sizeof(struct sockaddr_nl);
++ s_msg.msg_iov = s_io;
++ s_msg.msg_iovlen = 1;
+
+ char buffer[BUFSIZ] = { 0 };
+
+ struct sockaddr_nl r_sa = { AF_NETLINK, 0, 0, 0 };
+ struct iovec r_io[1] = { { buffer, BUFSIZ } };
+- struct msghdr r_msg = { (void *)&r_sa, sizeof(struct sockaddr_nl), r_io, 1, NULL, 0, 0};
++ struct msghdr r_msg = { 0 };
++ r_msg.msg_name = (void *)&r_sa;
++ r_msg.msg_namelen = sizeof(struct sockaddr_nl);
++ r_msg.msg_iov = r_io;
++ r_msg.msg_iovlen = 1;
+
+ struct nlmsghdr *r_hdr;
+
+--
+2.37.3
+
diff --git a/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service b/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service
index b18a96f8b6..56e5064281 100644
--- a/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service
+++ b/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service
@@ -3,9 +3,8 @@ Description=Zabbix Monitor Agent
After=syslog.target network.target
[Service]
-Type=oneshot
-ExecStart=@SBINDIR@/zabbix_agentd
-RemainAfterExit=yes
+Type=simple
+ExecStart=@SBINDIR@/zabbix_agentd -f
User=zabbix
[Install]
diff --git a/meta-oe/recipes-connectivity/zabbix/zabbix_3.0.9.bb b/meta-oe/recipes-connectivity/zabbix/zabbix_6.2.7.bb
index bab5a6ae6b..46c09a02a5 100644
--- a/meta-oe/recipes-connectivity/zabbix/zabbix_3.0.9.bb
+++ b/meta-oe/recipes-connectivity/zabbix/zabbix_6.2.7.bb
@@ -17,29 +17,28 @@ organisations with a few servers and for large companies with a \
multitude of servers."
HOMEPAGE = "http://www.zabbix.com/"
SECTION = "Applications/Internet"
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=300e938ad303147fede2294ed78fe02e"
-DEPENDS = "openldap virtual/libiconv"
+DEPENDS = "libevent libpcre openldap virtual/libiconv zlib"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-SRC_URI = "http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/${PV}/${BPN}-${PV}.tar.gz \
+SRC_URI = "https://cdn.zabbix.com/zabbix/sources/stable/6.2/${BPN}-${PV}.tar.gz \
file://0001-Fix-configure.ac.patch \
+ file://0001-initialize-msghdr-portably.patch \
file://zabbix-agent.service \
"
-
-SRC_URI[md5sum] = "489d21b464277c0d412155c7e5611a8f"
-SRC_URI[sha256sum] = "4445f26c025009681c29c9b350aa6c4ee7b124ddcaf1609ae36c55997bcb8cf2"
+SRC_URI[sha256sum] = "6d423810667b948ed22052d9aa84a035e2d4b92cbe8efdb669cac529806b722d"
inherit autotools-brokensep linux-kernel-base pkgconfig systemd useradd
SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "zabbix-agent.service"
+SYSTEMD_SERVICE:${PN} = "zabbix-agent.service"
SYSTEMD_AUTO_ENABLE = "enable"
USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "-r zabbix"
-USERADD_PARAM_${PN} = "-r -g zabbix -d /var/lib/zabbix \
+GROUPADD_PARAM:${PN} = "-r zabbix"
+USERADD_PARAM:${PN} = "-r -g zabbix -d /var/lib/zabbix \
-s /sbin/nologin -c \"Zabbix Monitoring System\" zabbix \
"
@@ -51,25 +50,29 @@ EXTRA_OECONF = " \
--enable-ipv6 \
--with-net-snmp \
--with-ldap=${STAGING_EXECPREFIXDIR} \
- --with-jabber \
--with-unixodbc \
--with-ssh2 \
--with-sqlite3 \
+ --with-zlib \
+ --with-libpthread \
+ --with-libevent \
+ --with-libpcre=${STAGING_EXECPREFIXDIR} \
+ --with-iconv=${STAGING_EXECPREFIXDIR} \
"
-CFLAGS_append = " -lldap -llber"
+CFLAGS:append = " -lldap -llber -pthread"
-do_configure_prepend() {
+do_configure:prepend() {
export KERNEL_VERSION="${KERNEL_VERSION}"
}
-do_install_append() {
+do_install:append() {
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/zabbix-agent.service ${D}${systemd_unitdir}/system/
+ install -m 0644 ${UNPACKDIR}/zabbix-agent.service ${D}${systemd_unitdir}/system/
sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/zabbix-agent.service
fi
}
-FILES_${PN} += "${libdir}"
+FILES:${PN} += "${libdir}"
-RDEPENDS_${PN} = "logrotate"
+RDEPENDS:${PN} = "logrotate"
diff --git a/meta-oe/recipes-connectivity/zeromq/cppzmq_4.10.0.bb b/meta-oe/recipes-connectivity/zeromq/cppzmq_4.10.0.bb
new file mode 100644
index 0000000000..dcea339dfd
--- /dev/null
+++ b/meta-oe/recipes-connectivity/zeromq/cppzmq_4.10.0.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "C++ bindings for ZeroMQ"
+HOMEPAGE = "http://www.zeromq.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=db174eaf7b55a34a7c89551197f66e94"
+DEPENDS = "zeromq"
+
+SRCREV = "c94c20743ed7d4aa37835a5c46567ab0790d4acc"
+
+SRC_URI = "git://github.com/zeromq/cppzmq.git;branch=master;protocol=https"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+EXTRA_OECMAKE = "-DCPPZMQ_BUILD_TESTS=OFF"
+
+PACKAGES = "${PN}-dev"
+
+RDEPENDS:${PN}-dev = "zeromq-dev zeromq-staticdev"
+DEV_PKG_DEPENDENCY = ""
diff --git a/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb b/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
deleted file mode 100644
index 4920bce8c8..0000000000
--- a/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "C++ bindings for ZeroMQ"
-HOMEPAGE = "http://www.zeromq.org"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=db174eaf7b55a34a7c89551197f66e94"
-DEPENDS = "zeromq"
-
-SRCREV = "6aa3ab686e916cb0e62df7fa7d12e0b13ae9fae6"
-PV = "4.2.3+git${SRCPV}"
-
-SRC_URI = "git://github.com/zeromq/cppzmq.git"
-
-S = "${WORKDIR}/git"
-
-do_install () {
- install -d ${D}/usr/include
- install -m 0755 ${S}/zmq.hpp ${D}/usr/include/
-}
-
-PACKAGES = "${PN}-dev"
-
-RDEPENDS_${PN}-dev = "zeromq-dev"
diff --git a/meta-oe/recipes-connectivity/zeromq/czmq_4.2.1.bb b/meta-oe/recipes-connectivity/zeromq/czmq_4.2.1.bb
new file mode 100644
index 0000000000..5ae72df862
--- /dev/null
+++ b/meta-oe/recipes-connectivity/zeromq/czmq_4.2.1.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "High-level C binding for 0MQ"
+HOMEPAGE = "http://czmq.zeromq.org/"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9741c346eef56131163e13b9db1241b3"
+DEPENDS = "zeromq"
+
+SRC_URI = "https://github.com/zeromq/czmq/releases/download/v${PV}/czmq-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "471e9ec120fc66a2fe2aae14359e3cfa"
+SRC_URI[sha256sum] = "5d720a204c2a58645d6f7643af15d563a712dad98c9d32c1ed913377daa6ac39"
+
+UPSTREAM_CHECK_URI = "https://github.com/zeromq/${BPN}/releases"
+
+inherit cmake pkgconfig
+
+PACKAGES = "lib${BPN} lib${BPN}-dev lib${BPN}-staticdev ${PN} ${PN}-dbg"
+
+EXTRA_OECMAKE = " \
+ -DCMAKECONFIG_INSTALL_DIR:PATH=${@os.path.relpath(d.getVar('libdir'), d.getVar('prefix') + '/') + "/cmake/"} \
+"
+
+FILES:${PN} = "${bindir}/*"
+FILES:lib${BPN} = "${libdir}/*.so.*"
+FILES:lib${BPN}-dev = "${libdir}/*.so ${libdir}/pkgconfig ${includedir} ${libdir}/cmake"
+FILES:lib${BPN}-staticdev = "${libdir}/lib*.a"
+
+RDEPENDS:lib${BPN}-dev = "zeromq-dev"
+
+PACKAGECONFIG ??= "lz4 uuid curl ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[curl] = "-DCZMQ_WITH_LIBCURL=ON,-DCZMQ_WITH_LIBCURL=OFF,curl"
+PACKAGECONFIG[httpd] = "-DCZMQ_WITH_LIBMICROHTTPD=ON,-DCZMQ_WITH_LIBMICROHTTPD=OFF,libmicrohttpd"
+PACKAGECONFIG[lz4] = "-DCZMQ_WITH_LZ4=ON,-DCZMQ_WITH_LZ4=OFF,lz4"
+PACKAGECONFIG[nss] = "-DCZMQ_WITH_NSS=ON,-DCZMQ_WITH_NSS=OFF,nss"
+PACKAGECONFIG[systemd] = "-DCZMQ_WITH_SYSTEMD=ON,-DCZMQ_WITH_SYSTEMD=OFF,systemd"
+PACKAGECONFIG[uuid] = "-DCZMQ_WITH_UUID=ON,-DCZMQ_WITH_UUID=OFF,util-linux"
+
+do_install:append() {
+ mkdir -p ${D}/${includedir}/${BPN}
+ mv ${D}/${includedir}/sha1.h ${D}/${includedir}/${BPN}/.
+ sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/czmqTargets.cmake
+}
diff --git a/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch b/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch
new file mode 100644
index 0000000000..3b0300c8aa
--- /dev/null
+++ b/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch
@@ -0,0 +1,46 @@
+From 24ad50286a87833329213dc0b0e68c21aeeee95f Mon Sep 17 00:00:00 2001
+From: Niko Mauno <niko.mauno@vaisala.com>
+Date: Wed, 22 Apr 2020 09:00:00 +0300
+Subject: [PATCH] CMakeLists.txt: Avoid host-specific path to libsodium
+
+Avoid propagating full build host specific path to generated
+ZeroMQTargets.cmake when building with libsodium, which changes the
+content in generated ZeroMQTargets.cmake files followingly:
+
+ -INTERFACE_LINK_LIBRARIES "-lpthread;/build/host/specific/path/to/zeromq/4.3.2-r0/recipe-sysroot/usr/lib/libsodium.so;-lrt"
+ +INTERFACE_LINK_LIBRARIES "-lpthread;-lsodium;-lrt"
+
+This change mitigates an issue stemming from reuse of build artifacts
+where the path to libsodium.so does not match exactly between two
+different build hosts.
+
+Upstream-Status: Pending
+
+Signed-off-by: Niko Mauno <niko.mauno@vaisala.com>
+
+---
+ CMakeLists.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e92141d..d0775c1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1428,7 +1428,7 @@ if(BUILD_SHARED)
+ endif()
+
+ if(SODIUM_FOUND)
+- target_link_libraries(libzmq ${SODIUM_LIBRARIES})
++ target_link_libraries(libzmq -lsodium)
+ # On Solaris, libsodium depends on libssp
+ if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ target_link_libraries(libzmq ssp)
+@@ -1473,7 +1473,7 @@ if(BUILD_STATIC)
+ endif()
+
+ if(SODIUM_FOUND)
+- target_link_libraries(libzmq-static ${SODIUM_LIBRARIES})
++ target_link_libraries(libzmq-static -lsodium)
+ # On Solaris, libsodium depends on libssp
+ if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ target_link_libraries(libzmq-static ssp)
diff --git a/meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb b/meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb
deleted file mode 100644
index 356348b43f..0000000000
--- a/meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-DESCRIPTION = "ZeroMQ looks like an embeddable networking library but acts like a concurrency framework"
-HOMEPAGE = "http://www.zeromq.org"
-LICENSE = "LGPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=d5311495d952062e0e4fbba39cbf3de1"
-
-PACKAGECONFIG ??= "libsodium"
-PACKAGECONFIG[libsodium] = "--with-libsodium, --without-libsodium, libsodium"
-
-SRC_URI = "http://github.com/zeromq/libzmq/releases/download/v${PV}/zeromq-${PV}.tar.gz \
- file://run-ptest \
-"
-SRC_URI[md5sum] = "a1c95b34384257e986842f4d006957b8"
-SRC_URI[sha256sum] = "cc9090ba35713d59bb2f7d7965f877036c49c5558ea0c290b0dcc6f2a17e489f"
-
-S = "${WORKDIR}/zeromq-${PV}"
-
-#Uncomment to choose polling system manually. valid values are kqueue, epoll, devpoll, poll or select
-#EXTRA_OECONF += "--with-poller=kqueue"
-#CFLAGS_append = " -O0"
-#CXXFLAGS_append = " -O0"
-
-inherit autotools ptest pkgconfig
-
-do_compile_ptest () {
- echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${B}/Makefile
- oe_runmake buildtest-TESTS
-}
-
-do_install_ptest () {
- install -d ${D}${PTEST_PATH}/tests
- install -m 0755 ${B}/tests/.libs/test_* ${D}${PTEST_PATH}/tests
-}
diff --git a/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.5.bb b/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.5.bb
new file mode 100644
index 0000000000..555458217a
--- /dev/null
+++ b/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.5.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "ZeroMQ looks like an embeddable networking library but acts like a concurrency framework"
+HOMEPAGE = "http://www.zeromq.org"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9741c346eef56131163e13b9db1241b3"
+
+PACKAGECONFIG ??= "libsodium"
+PACKAGECONFIG[libsodium] = "-DWITH_LIBSODIUM=ON,-DWITH_LIBSODIUM=OFF, libsodium"
+
+SRC_URI = "http://github.com/zeromq/libzmq/releases/download/v${PV}/zeromq-${PV}.tar.gz \
+ file://0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch \
+ file://run-ptest \
+"
+SRC_URI[sha256sum] = "6653ef5910f17954861fe72332e68b03ca6e4d9c7160eb3a8de5a5a913bfab43"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/libzmq/releases"
+
+inherit cmake ptest pkgconfig
+
+EXTRA_OECMAKE = "${@bb.utils.contains('PTEST_ENABLED', '1', '-DBUILD_TESTS=ON', '-DBUILD_TESTS=OFF', d)} \
+ -DCMAKE_SKIP_RPATH=ON \
+"
+
+do_install_ptest () {
+ install -d ${D}${PTEST_PATH}/tests
+ install -m 0755 ${B}/bin/test_* ${D}${PTEST_PATH}/tests
+}
+
+FILES:${PN}-doc += "${datadir}/zmq/*.txt"