diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-12-17 04:11:34 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2019-01-09 02:21:44 +0300 |
commit | 1a4b7ee28bf7413af6513fb45ad0d0736048f866 (patch) | |
tree | 79f6d8ea698cab8f2eaf4f54b793d2ca7a1451ce /meta-openembedded/meta-oe/recipes-connectivity | |
parent | 5b9ede0403237c7dace972affa65cf64a1aadd0e (diff) | |
download | openbmc-1a4b7ee28bf7413af6513fb45ad0d0736048f866.tar.xz |
reset upstream subtrees to yocto 2.6
Reset the following subtrees on thud HEAD:
poky: 87e3a9739d
meta-openembedded: 6094ae18c8
meta-security: 31dc4e7532
meta-raspberrypi: a48743dc36
meta-xilinx: c42016e2e6
Also re-apply backports that didn't make it into thud:
poky:
17726d0 systemd-systemctl-native: handle Install wildcards
meta-openembedded:
4321a5d libtinyxml2: update to 7.0.1
042f0a3 libcereal: Add native and nativesdk classes
e23284f libcereal: Allow empty package
030e8d4 rsyslog: curl-less build with fmhttp PACKAGECONFIG
179a1b9 gtest: update to 1.8.1
Squashed OpenBMC subtree compatibility updates:
meta-aspeed:
Brad Bishop (1):
aspeed: add yocto 2.6 compatibility
meta-ibm:
Brad Bishop (1):
ibm: prepare for yocto 2.6
meta-ingrasys:
Brad Bishop (1):
ingrasys: set layer compatibility to yocto 2.6
meta-openpower:
Brad Bishop (1):
openpower: set layer compatibility to yocto 2.6
meta-phosphor:
Brad Bishop (3):
phosphor: set layer compatibility to thud
phosphor: libgpg-error: drop patches
phosphor: react to fitimage artifact rename
Ed Tanous (4):
Dropbear: upgrade options for latest upgrade
yocto2.6: update openssl options
busybox: remove upstream watchdog patch
systemd: Rebase CONFIG_CGROUP_BPF patch
Change-Id: I7b1fe71cca880d0372a82d94b5fd785323e3a9e7
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-connectivity')
48 files changed, 872 insertions, 1860 deletions
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd-CVE-2018-14526.patch b/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd-CVE-2018-14526.patch new file mode 100644 index 0000000000..522fc394b3 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd-CVE-2018-14526.patch @@ -0,0 +1,44 @@ +hostapd-2.6: Fix CVE-2018-14526 + +[No upstream tracking] -- https://w1.fi/security/2018-1/unauthenticated-eapol-key-decryption.txt + +wpa: Ignore unauthenticated encrypted EAPOL-Key data + +Ignore unauthenticated encrypted EAPOL-Key data in supplicant +processing. When using WPA2, these are frames that have the Encrypted +flag set, but not the MIC flag. + +When using WPA2, EAPOL-Key frames that had the Encrypted flag set but +not the MIC flag, had their data field decrypted without first verifying +the MIC. In case the data field was encrypted using RC4 (i.e., when +negotiating TKIP as the pairwise cipher), this meant that +unauthenticated but decrypted data would then be processed. An adversary +could abuse this as a decryption oracle to recover sensitive information +in the data field of EAPOL-Key messages (e.g., the group key). + +Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/src/rsn_supp/wpa.c?id=3e34cfdff6b192fe337c6fb3f487f73e96582961] +CVE: CVE-2018-14526 +Signed-off-by: Andrej Valek <andrej.valek@siemens.com> + +diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c +index 3c47879..6bdf923 100644 +--- a/src/rsn_supp/wpa.c ++++ b/src/rsn_supp/wpa.c +@@ -2016,6 +2016,17 @@ int wpa_sm_rx_eapol(struct wpa_sm *sm, const u8 *src_addr, + + if ((sm->proto == WPA_PROTO_RSN || sm->proto == WPA_PROTO_OSEN) && + (key_info & WPA_KEY_INFO_ENCR_KEY_DATA)) { ++ /* ++ * Only decrypt the Key Data field if the frame's authenticity ++ * was verified. When using AES-SIV (FILS), the MIC flag is not ++ * set, so this check should only be performed if mic_len != 0 ++ * which is the case in this code branch. ++ */ ++ if (!(key_info & WPA_KEY_INFO_MIC)) { ++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, ++ "WPA: Ignore EAPOL-Key with encrypted but unauthenticated data"); ++ goto out; ++ } + if (wpa_supplicant_decrypt_key_data(sm, key, ver, key_data, + &key_data_len)) + goto out; diff --git a/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb b/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb index 250add8753..42aae4279c 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb @@ -18,6 +18,7 @@ SRC_URI = " \ file://0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch \ file://0006-TDLS-Reject-TPK-TK-reconfiguration.patch \ file://0007-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch \ + file://hostapd-CVE-2018-14526.patch \ " SRC_URI[md5sum] = "eaa56dce9bd8f1d195eb62596eab34c7" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.bb b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.1.bb index f95240f545..11748cbd00 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.1.bb @@ -14,8 +14,8 @@ 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=7f95bc3d8d0351aa481d56d5e9de20c3" +DEPENDS = "bison-native ncurses util-linux e2fsprogs e2fsprogs-native openssl" inherit autotools-brokensep binconfig perlnative systemd update-rc.d @@ -31,8 +31,8 @@ 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[md5sum] = "848e9b80d6aaaa798e3f3df24b83c407" +SRC_URI[sha256sum] = "214ffe394e3ad0c730564074ec44f1da119159d94281bbec541dc29168d21117" CVE_PRODUCT = "kerberos" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb b/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb index 5e0f3a5ed9..a5838d3686 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb @@ -9,8 +9,6 @@ SRC_URI = "http://dist.schmorp.de/libev/Attic/${BP}.tar.gz" SRC_URI[md5sum] = "94459a5a22db041dec6f98424d6efe54" SRC_URI[sha256sum] = "973593d3479abdf657674a55afe5f78624b0e440614e2b8cb3a07f16d4d7f821" -S = "${WORKDIR}/${PN}-${PV}" - inherit autotools EXTRA_OECONF += "--with-pic" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch b/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch deleted file mode 100644 index 9a7895fd41..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_git.bb index 32aca96fd0..908b98d8c5 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_git.bb @@ -7,17 +7,16 @@ LIC_FILES_CHKSUM = "\ HOMEPAGE ="http://www.libimobiledevice.org/" -DEPENDS = "libplist usbmuxd libtasn1 gnutls libgcrypt" +DEPENDS = "libplist usbmuxd libusbmuxd libtasn1 gnutls libgcrypt" -SRC_URI = " \ - http://www.libimobiledevice.org/downloads/libimobiledevice-${PV}.tar.bz2 \ +SRCREV = "fb71aeef10488ed7b0e60a1c8a553193301428c0" +PV = "1.2.0+git${SRCPV}" +SRC_URI = "\ + git://github.com/libimobiledevice/libimobiledevice;protocol=https \ file://configure-fix-largefile.patch \ - file://inline-without-definition.patch \ " -SRC_URI[md5sum] = "3f28cbc6a2e30d34685049c0abde5183" -SRC_URI[sha256sum] = "67499cfaa6172f566ee6b0783605acffe484fb7ddc3b09881ab7ac58667ee5b8" - +S = "${WORKDIR}/git" inherit autotools pkgconfig EXTRA_OECONF = " --without-cython " diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.14.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.16.0.bb index f89ef9d570..5260c0f14e 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.14.0.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.16.0.bb @@ -14,5 +14,5 @@ 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" +SRC_URI[md5sum] = "76ea4d8381989919b1d9b91c818fed80" +SRC_URI[sha256sum] = "c8ca50beeddd4b43309df5b698917268303bf176cea58fe4fe53d5bf0e93fac2" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp/0001-include-sys-select.h-for-fd_-definitions.patch b/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp/0001-include-sys-select.h-for-fd_-definitions.patch deleted file mode 100644 index 15aa94e2cc..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.6.bb b/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.7.bb index 5148798abe..07a7a1d239 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.6.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.7.bb @@ -4,10 +4,9 @@ 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" +SRCREV = "96674e7d4f4d569c2c961e865cc16152dfab5f09" S = "${WORKDIR}/git" inherit autotools diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb b/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb index dfc2049604..c9913444d6 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb @@ -15,6 +15,9 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/libnet-dev/${BPN}-${PV}.tar.gz \ SRC_URI[md5sum] = "f051e6e5bdecddb90f77c701c2ca1804" SRC_URI[sha256sum] = "72c380785ad44183005e654b47cc12485ee0228d7fa6b0a87109ff7614be4a63" +UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/libnet-dev/files/" +UPSTREAM_CHECK_REGEX = "libnet-(?P<pver>\d+(\.\d+)+-*[a-z]*\d*)\.tar" + S = "${WORKDIR}/${BPN}-${PV}" inherit autotools binconfig diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch new file mode 100644 index 0000000000..d230d68030 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch @@ -0,0 +1,41 @@ +From 8269f4d86927fbe19e78776a12736680fe9169b6 Mon Sep 17 00:00:00 2001 +From: Adrian Bunk <bunk@stusta.de> +Date: Mon, 1 Oct 2018 16:53:31 +0300 +Subject: [PATCH] qmi-network: Don't create invalid --wds-start-network when + APN is not set + +In 1.20.2 the warning for this was turned into an error. + +(cherry picked from commit 289d8ad6419895e2e1fba3d78a54a0db65da521d) +--- +Upstream-Status: Backport + + utils/qmi-network.in | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/utils/qmi-network.in b/utils/qmi-network.in +index bf7bed9..a9e5299 100755 +--- a/utils/qmi-network.in ++++ b/utils/qmi-network.in +@@ -334,11 +334,13 @@ start_network () + + setup_data_format + +- START_NETWORK_ARGS="apn='$APN'" +- if [ -n "$APN_USER" ]; then +- START_NETWORK_ARGS="${START_NETWORK_ARGS},username='$APN_USER'" +- if [ -n "$APN_PASS" ]; then +- START_NETWORK_ARGS="${START_NETWORK_ARGS},password='$APN_PASS'" ++ if [ -n "$APN" ]; then ++ START_NETWORK_ARGS="apn='$APN'" ++ if [ -n "$APN_USER" ]; then ++ START_NETWORK_ARGS="${START_NETWORK_ARGS},username='$APN_USER'" ++ if [ -n "$APN_PASS" ]; then ++ START_NETWORK_ARGS="${START_NETWORK_ARGS},password='$APN_PASS'" ++ fi + fi + fi + +-- +2.7.4 + diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.2.bb index 9301cbd5ee..f0bc81cc9c 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.0.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.2.bb @@ -7,12 +7,17 @@ LIC_FILES_CHKSUM = " \ file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \ " -DEPENDS = "glib-2.0 libgudev libmbim glib-2.0-native" +DEPENDS = "glib-2.0 glib-2.0-native" inherit autotools pkgconfig bash-completion SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \ + file://0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch \ file://0001-Detect-clang.patch \ " -SRC_URI[md5sum] = "797e365521df76b77b067e6317618b41" -SRC_URI[sha256sum] = "21428cd3749c56246565123f707fee51238651a22c60bdc85ebce97388626eb4" +SRC_URI[md5sum] = "584214476ab75c394160cb85fbccaa1d" +SRC_URI[sha256sum] = "c73459ca8bfe1213f8047858d4946fc1f58e164d4f488a7a6904edee25e2ca44" + +PACKAGECONFIG ??= "udev mbim" +PACKAGECONFIG[udev] = ",--without-udev,libgudev" +PACKAGECONFIG[mbim] = "--enable-mbim-qmux,--disable-mbim-qmux,libmbim" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch b/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch index 79d4f29fab..8d8867aea7 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch +++ b/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch @@ -4,91 +4,25 @@ 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 +Index: git/scripts/common.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 @@ - +--- git.orig/scripts/common.m4 ++++ git/scripts/common.m4 +@@ -153,7 +153,7 @@ dnl Need to fix this so that it uses t 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_COMPILE_IFELSE([AC_LANG_SOURCE([ ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include <execinfo.h> + int main() { backtrace((void**)0, 0); backtrace_symbols((char**)0, 0); return 0;} + ])], +@@ -168,7 +168,7 @@ AC_DEFUN([TORRENT_CHECK_EXECINFO], [ 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) -- ]) - ]) - - ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include <inttypes.h> + int main() { + char buf@<:@8@:>@ = { 0, 0, 0, 0, 1, 0, 0, 0 }; diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb index 92e65289a9..b2dffcdb91 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb @@ -11,9 +11,9 @@ SRC_URI = "git://github.com/rakshasa/libtorrent \ file://0001-implement-64bit-atomic-for-mips.patch \ file://0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch \ " -SRCREV = "c167c5a9e0bcf0df23ae5efd91396aae0e37eb87" +SRCREV = "074f6ec51a2e4bc5c6140b4dad13c9bb56f3f0dc" -PV = "0.13.6+git${SRCPV}" +PV = "0.13.7+git${SRCPV}" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.11.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.20.3.bb index ca4685ab3e..a11ff9d2c4 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.11.0.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.20.3.bb @@ -2,10 +2,10 @@ 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" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a68902a430e32200263d182d44924d47" S = "${WORKDIR}/git" -SRCREV = "7452ef4e06a4f99ee26b694c65476401534f2725" +SRCREV = "8cfd67e59195251dff793ee47c185c9d6a8f3818" BRANCH = "v1.x" SRC_URI = "git://github.com/libuv/libuv.git;protocol=https;branch=${BRANCH};" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.0.0.bb index 100f3a3541..f38414862a 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.0.0.bb @@ -1,12 +1,12 @@ SUMMARY = "Canonical libwebsockets.org websocket library" HOMEPAGE = "https://libwebsockets.org/" LICENSE = "LGPL-2.1" -LIC_FILES_CHKSUM = "file://LICENSE;md5=e3393a657830d4a118c5a6ed35ba53d0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4ce87f3facb6f911c142c8bef9bfb380" DEPENDS = "zlib" S = "${WORKDIR}/git" -SRCREV = "73557509bd15f95a1ad081a6f4fab48ff7743215" +SRCREV = "eaa935a80adb38b5cc4d09ce06ec987b87dcddfa" SRC_URI = "git://github.com/warmcat/libwebsockets.git;protocol=https;" inherit cmake pkgconfig @@ -23,5 +23,4 @@ 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-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager/enum-conversion.patch b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager/enum-conversion.patch deleted file mode 100644 index a3fb0f3eb8..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.6.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.8.2.bb index e60cd4b741..dec4b67973 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.6.4.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.8.2.bb @@ -12,10 +12,10 @@ 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" + " + +SRC_URI[md5sum] = "a49c9f73e46c7b89e5efedda250d22c0" +SRC_URI[sha256sum] = "96f2a5f0ed15532b4c4c185b756fdc0326e7c2027cea26a1264f91e098260f80" S = "${WORKDIR}/ModemManager-${PV}" @@ -26,10 +26,14 @@ PACKAGECONFIG ??= "mbim qmi polkit \ 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" +PACKAGECONFIG[mbim] = "--with-mbim,--with-mbim=no,libmbim" # Support WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol. PACKAGECONFIG[qmi] = "--with-qmi,--without-qmi,libqmi" +EXTRA_OECONF = " \ + --with-udev-base-dir=${nonarch_base_libdir}/udev \ +" + FILES_${PN} += " \ ${datadir}/icons \ ${datadir}/polkit-1 \ diff --git a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/0001-config.mk-allow-prefix-mandir-localedir-from-environ.patch b/meta-openembedded/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-openembedded/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-openembedded/meta-oe/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch b/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch deleted file mode 100644 index c89dfe6bef..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.init b/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.init deleted file mode 100644 index d2a27b2732..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.service b/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.service deleted file mode 100644 index 25f68fae05..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/mosquitto/mosquitto_1.4.14.bb b/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/mosquitto_1.4.14.bb deleted file mode 100644 index 13ce3811d4..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb index 1b56685c57..3fb8cb1901 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb @@ -2,29 +2,26 @@ 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" LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \ file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \ " +DEPENDS = "virtual/libusb0" +DEPENDS_append_class-target = " ${@bb.utils.contains('DISTRO_FEATURES','bluez5','bluez5','bluez4',d)}" + 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 () { @@ -34,7 +31,7 @@ do_install_append () { PACKAGES =+ "openobex-apps" FILES_${PN}-apps = "${bindir}/*" FILES_${PN} += "${libdir}/lib*.so.*" -FILES_${PN}-dev += "${bindir}/openobex-config ${libdir}/cmake" +FILES_${PN}-dev += "${bindir}/openobex-config" DEBIAN_NOAUTONAME_${PN}-apps = "1" BBCLASSEXTEND = "native" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.1.bb index fec380ce6f..a7a9b5a6cd 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.0.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.1.bb @@ -13,7 +13,7 @@ LIC_FILES_CHKSUM = " \ SRC_URI = "git://github.com/eclipse/paho.mqtt.c;protocol=http" -SRCREV = "e8d34da24ad807f5e698b327d67591fd4b4bfa7e" +SRCREV = "09fe0744e02f317b907e96dd5afcc02224ddbb85" DEPENDS = "openssl" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb index c731cf7079..9bb81c4096 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb @@ -8,9 +8,10 @@ DEPENDS = "libsigc++-2.0 curl cppunit libtorrent ncurses" SRC_URI = "git://github.com/rakshasa/rtorrent \ file://don-t-run-code-while-configuring-package.patch \ " -SRCREV = "226e670decf92e7adaa845a6982aca4f164ea740" +# v0.9.7 +SRCREV = "327164f9d86aafcd2500a317d485374df32ea622" -PV = "0.9.6+git${SRCPV}" +PV = "0.9.7+git${SRCPV}" S = "${WORKDIR}/git" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.5.bb index 708650fb9b..f64776c565 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.4.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.5.bb @@ -7,8 +7,8 @@ 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" +SRC_URI[md5sum] = "e10e7c8c97e5bade5e85ce6e89bdf1f4" +SRC_URI[sha256sum] = "ba9e1d60a89fd7ed075553b4a2074352902203f7fbd9b65b15048c05f0e3f3be" inherit autotools pkgconfig diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch index fcc2f08214..a77cd284b4 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch +++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch @@ -1,9 +1,10 @@ -From b3da0d8677b7e8467367a303c18551c56ed20e15 Mon Sep 17 00:00:00 2001 +From a5544d8e543436e413379422b702f6f56ac7eb8e 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(-) @@ -22,6 +23,3 @@ index 62e240f..f8b4493 100644 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-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch index 7cc8d17393..182eacc0ef 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch +++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch @@ -1,7 +1,7 @@ -From bc577820ad25795543b31f123e309cdaebc7d6c6 Mon Sep 17 00:00:00 2001 +From b8e254a2f4ba49412e541598c72159869a7770f8 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 +Subject: [PATCH] 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 @@ -11,6 +11,7 @@ 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 +- @@ -105,6 +106,3 @@ index 2b0c143..5ecae17 100644 #Make sure gen-cpp files can be included include_directories("${CMAKE_CURRENT_BINARY_DIR}") --- -2.9.3 - diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch index f13adbb6bc..37715c281b 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch +++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch @@ -1,7 +1,7 @@ -From f6cad0580e5391c37af7f60adddb71bf1a403dc4 Mon Sep 17 00:00:00 2001 +From 7b05a74432f08ef34d0f8743dd6438ad012e3b5e 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` +Subject: [PATCH] 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 @@ -9,15 +9,16 @@ Subject: [PATCH 2/2] THRIFT-3831 in test/cpp explicitly use `signed char` 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 +index 7c425a9..7145ebb 100644 --- a/test/cpp/src/TestClient.cpp +++ b/test/cpp/src/TestClient.cpp -@@ -383,7 +383,7 @@ int main(int argc, char** argv) { +@@ -381,7 +381,7 @@ int main(int argc, char** argv) { * BINARY TEST */ printf("testBinary([-128..127]) = {"); @@ -26,7 +27,7 @@ index e709899..4a961f8 100644 = {-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) { +@@ -402,7 +402,7 @@ int main(int argc, char** argv) { 127}; try { string bin_result; @@ -35,6 +36,3 @@ index e709899..4a961f8 100644 if (bin_result.size() != 256) { printf("}\n*** FAILED ***\n"); printf("invalid length: %lu\n", bin_result.size()); --- -2.9.3 - diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch new file mode 100644 index 0000000000..500cfab622 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch @@ -0,0 +1,41 @@ +From 5f2c7e50b99d72177250c44236c41b99bfc161b5 Mon Sep 17 00:00:00 2001 +From: Andrej Valek <andrej.valek@siemens.com> +Date: Thu, 7 Jun 2018 15:21:06 +0200 +Subject: [PATCH 4/6] %% original patch: + 0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch + +--- + lib/cpp/src/thrift/transport/TSSLSocket.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp +index 98c5326..3da9e45 100644 +--- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp ++++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp +@@ -39,6 +39,7 @@ + #include <thrift/transport/PlatformSocket.h> + + #define OPENSSL_VERSION_NO_THREAD_ID 0x10000000L ++#define OPENSSL_VERSION_WITH_TLSv1_1_AND_TLSv1_2 0x10100000L + + using namespace std; + using namespace apache::thrift::concurrency; +@@ -143,10 +144,15 @@ SSLContext::SSLContext(const SSLProtocol& protocol) { + ctx_ = SSL_CTX_new(SSLv3_method()); + } else if (protocol == TLSv1_0) { + ctx_ = SSL_CTX_new(TLSv1_method()); ++#if (OPENSSL_VERSION_NUMBER >= OPENSSL_VERSION_WITH_TLSv1_1_AND_TLSv1_2) + } else if (protocol == TLSv1_1) { + ctx_ = SSL_CTX_new(TLSv1_1_method()); + } else if (protocol == TLSv1_2) { + ctx_ = SSL_CTX_new(TLSv1_2_method()); ++#else ++ //Support for this versions will end on 2016-12-31 ++ //https://www.openssl.org/about/releasestrat.html ++#endif + } else { + /// UNKNOWN PROTOCOL! + throw TSSLException("SSL_CTX_new: Unknown protocol"); +-- +2.19.0 + diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch new file mode 100644 index 0000000000..f4482b109b --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch @@ -0,0 +1,26 @@ +From 81f36e7174097a1f1f3e7f94a97574b2ec68577f Mon Sep 17 00:00:00 2001 +From: "James E. King, III" <jim.king@simplivity.com> +Date: Thu, 29 Sep 2016 15:04:09 -0400 +Subject: [PATCH] THRIFT-3878: fix interop with newer OpenSSL libraries + +--- + lib/cpp/src/thrift/transport/TSSLSocket.cpp | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp +index 3da9e45..0a3a124 100644 +--- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp ++++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp +@@ -97,7 +97,12 @@ void initializeOpenSSL() { + SSL_library_init(); + SSL_load_error_strings(); + // static locking ++ // newer versions of OpenSSL changed CRYPTO_num_locks - see THRIFT-3878 ++#ifdef CRYPTO_num_locks ++ mutexes = boost::shared_array<Mutex>(new Mutex[CRYPTO_num_locks()]); ++#else + mutexes = boost::shared_array<Mutex>(new Mutex[ ::CRYPTO_num_locks()]); ++#endif + if (mutexes == NULL) { + throw TTransportException(TTransportException::INTERNAL_ERROR, + "initializeOpenSSL() failed, " diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch new file mode 100644 index 0000000000..dfaa2fbda8 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch @@ -0,0 +1,46 @@ +From 4cd49f470ca983369451d1141acc80fe1115cab4 Mon Sep 17 00:00:00 2001 +From: Nobuaki Sukegawa <nsuke@apache.org> +Date: Sun, 13 Mar 2016 08:55:38 +0900 +Subject: [PATCH] THRIFT-3736 C++ library build fails if OpenSSL does not + + surrpot SSLv3 + +--- + lib/cpp/src/thrift/transport/TSSLSocket.cpp | 2 ++ + lib/cpp/test/SecurityTest.cpp | 8 ++++++++ + 2 files changed, 10 insertions(+) + +diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp +index 0a3a124..3e79354 100644 +--- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp ++++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp +@@ -145,8 +145,10 @@ static char uppercase(char c); + SSLContext::SSLContext(const SSLProtocol& protocol) { + if (protocol == SSLTLS) { + ctx_ = SSL_CTX_new(SSLv23_method()); ++#ifndef OPENSSL_NO_SSL3 + } else if (protocol == SSLv3) { + ctx_ = SSL_CTX_new(SSLv3_method()); ++#endif + } else if (protocol == TLSv1_0) { + ctx_ = SSL_CTX_new(TLSv1_method()); + #if (OPENSSL_VERSION_NUMBER >= OPENSSL_VERSION_WITH_TLSv1_1_AND_TLSv1_2) +diff --git a/lib/cpp/test/SecurityTest.cpp b/lib/cpp/test/SecurityTest.cpp +index 213efd4..08110e7 100644 +--- a/lib/cpp/test/SecurityTest.cpp ++++ b/lib/cpp/test/SecurityTest.cpp +@@ -239,6 +239,14 @@ BOOST_AUTO_TEST_CASE(ssl_security_matrix) + continue; + } + ++#ifdef OPENSSL_NO_SSL3 ++ if (si == 2 || ci == 2) ++ { ++ // Skip all SSLv3 cases - protocol not supported ++ continue; ++ } ++#endif ++ + boost::mutex::scoped_lock lock(mMutex); + + BOOST_TEST_MESSAGE(boost::format("TEST: Server = %1%, Client = %2%") diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb index aa93283712..7ab74026bb 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb @@ -12,6 +12,9 @@ SRC_URI = "http://mirror.switch.ch/mirror/apache/dist/thrift/${PV}/${BPN}-${PV}. 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 \ + file://0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch \ + file://0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch \ + file://0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch \ " SRC_URI[md5sum] = "88d667a8ae870d5adeca8cb7d6795442" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0001-Add-format-string-to-fprintf-call.patch b/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0001-Add-format-string-to-fprintf-call.patch deleted file mode 100644 index 8e5f4da362..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/umip/files/0001-replace-SIGCLD-with-SIGCHLD-and-include-sys-types.h.patch b/meta-openembedded/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-openembedded/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-openembedded/meta-oe/recipes-connectivity/umip/files/0002-replace-PTHREAD_MUTEX_FAST_NP-with-PTHREAD_MUTEX_NOR.patch b/meta-openembedded/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-openembedded/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-openembedded/meta-oe/recipes-connectivity/umip/files/add-dependency-to-support-parallel-compilation.patch b/meta-openembedded/meta-oe/recipes-connectivity/umip/files/add-dependency-to-support-parallel-compilation.patch deleted file mode 100644 index dbf0082640..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/umip/files/mip6d b/meta-openembedded/meta-oe/recipes-connectivity/umip/files/mip6d deleted file mode 100755 index ebd70a6cca..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/umip/files/mip6d.service b/meta-openembedded/meta-oe/recipes-connectivity/umip/files/mip6d.service deleted file mode 100644 index 2b5a5b9f1d..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/umip/umip_1.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/umip/umip_1.0.bb deleted file mode 100644 index 0c120bfd84..0000000000 --- a/meta-openembedded/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-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb index 4365aa4bc6..7284234326 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb @@ -1,24 +1,21 @@ DESCRIPTION = "This daemon is in charge of multiplexing connections over USB to an iPhone or iPod touch." LICENSE = "GPLv3 & GPLv2 & LGPLv2.1" 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" -inherit cmake pkgconfig gitpkgv +inherit autotools pkgconfig gitpkgv systemd PKGV = "${GITPKGVTAG}" -SRCREV = "919587580c5e77f3936f3432115d2e10c7bac7c5" -SRC_URI = "git://git.sukimashita.com/usbmuxd.git;protocol=http" +SRCREV = "ee85938c21043ef5f7cd4dfbc7677f385814d4d8" +SRC_URI = "git://github.com/libimobiledevice/usbmuxd;protocol=https" 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-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb index 3a71fb9790..5154208175 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb @@ -30,3 +30,5 @@ do_configure() { do_install() { oe_runmake prefix=${D}/usr PPPDIR=${D}/etc/ppp/peers install } +# http://errors.yoctoproject.org/Errors/Details/186959/ +EXCLUDE_FROM_WORLD_libc-musl = "1" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Forward-port-to-OpenSSL-1.1.x.patch b/meta-openembedded/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-openembedded/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-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff index 8e4fd03298..616843d4ae 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff +++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff @@ -1,16 +1,3 @@ -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; 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-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch new file mode 100644 index 0000000000..1c7005c2fe --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch @@ -0,0 +1,16 @@ +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-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb index e3d5e7d20b..b9f62da7b5 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb @@ -21,6 +21,8 @@ SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.gz \ 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 \ " SRC_URI[md5sum] = "2760dac31a43d452a19a3147bfde571c" @@ -34,23 +36,21 @@ 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 = "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_uniconfd = "${sbindir}/uniconfd ${sysconfdir}/uniconf.conf ${localstatedir}/uniconf" -FILES_uniconfd-dbg = "${sbindir}/.debug/uniconfd" FILES_libwvstreams-base = "${libdir}/libwvutils.so.*" -FILES_libwvstreams-base-dbg = "${libdir}/.debug/libwvutils.so.*" FILES_libwvstreams-extras = "${libdir}/libwvbase.so.* ${libdir}/libwvstreams.so.*" -FILES_libwvstreams-extras-dbg = "${libdir}/.debug/libwvbase.so.* ${libdir}/.debug/libwvstreams.so.*" FILES_${PN}-valgrind = "${libdir}/valgrind/wvstreams.supp" RDEPENDS_${PN} += "perl" diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb index 4920bce8c8..9aff59c6ce 100644 --- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb +++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb @@ -11,10 +11,7 @@ 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/ -} +inherit cmake PACKAGES = "${PN}-dev" |