From 175bfc1909faaffa2d87c7d2ad4839074c379375 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 12 Mar 2023 13:37:31 -0700 Subject: gsoap: Upgrade to 2.8.126 Fix build with musl while here Enable IPv6 and C locales at least Signed-off-by: Khem Raj --- .../0001-Simplify-check-for-gethostbyname_r.patch | 94 ++++++++++++++++++++++ meta-oe/recipes-support/gsoap/gsoap_2.8.124.bb | 41 ---------- meta-oe/recipes-support/gsoap/gsoap_2.8.126.bb | 42 ++++++++++ 3 files changed, 136 insertions(+), 41 deletions(-) create mode 100644 meta-oe/recipes-support/gsoap/gsoap/0001-Simplify-check-for-gethostbyname_r.patch delete mode 100644 meta-oe/recipes-support/gsoap/gsoap_2.8.124.bb create mode 100644 meta-oe/recipes-support/gsoap/gsoap_2.8.126.bb diff --git a/meta-oe/recipes-support/gsoap/gsoap/0001-Simplify-check-for-gethostbyname_r.patch b/meta-oe/recipes-support/gsoap/gsoap/0001-Simplify-check-for-gethostbyname_r.patch new file mode 100644 index 0000000000..3d12f733f0 --- /dev/null +++ b/meta-oe/recipes-support/gsoap/gsoap/0001-Simplify-check-for-gethostbyname_r.patch @@ -0,0 +1,94 @@ +From fa923a50790c907725c822b2fc7d63b2da62b4ad Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 12 Mar 2023 13:34:55 -0700 +Subject: [PATCH] Simplify check for gethostbyname_r() + +This helps build fix with musl. + +Imported from Alpine: https://git.alpinelinux.org/aports/tree/community/gsoap/musl-fixes.patch + +Signed-off-by: Khem Raj +--- + gsoap/stdsoap2.c | 6 ++---- + gsoap/stdsoap2.cpp | 10 ++-------- + 2 files changed, 4 insertions(+), 12 deletions(-) + +diff --git a/gsoap/stdsoap2.c b/gsoap/stdsoap2.c +index 654a1e1..fa31d02 100644 +--- a/gsoap/stdsoap2.c ++++ b/gsoap/stdsoap2.c +@@ -5463,7 +5463,7 @@ tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent, + hostent = NULL; + soap->errnum = h_errno; + } +-#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && !defined(SUN_OS) && defined(HAVE_GETHOSTBYNAME_R) ++#elif defined(HAVE_GETHOSTBYNAME_R) + while ((r = gethostbyname_r(addr, hostent, tmpbuf, tmplen, &hostent, &soap->errnum)) < 0) + { + if (tmpbuf != soap->tmpbuf) +@@ -5478,8 +5478,6 @@ tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent, + if (!tmpbuf) + break; + } +-#elif defined(HAVE_GETHOSTBYNAME_R) +- hostent = gethostbyname_r(addr, hostent, tmpbuf, tmplen, &soap->errnum); + #elif defined(VXWORKS) + /* vxWorks compatible */ + /* If the DNS resolver library resolvLib has been configured in the vxWorks +@@ -23112,7 +23110,7 @@ soap_strerror(struct soap *soap) + { + #ifndef WIN32 + # ifdef HAVE_STRERROR_R +-# if !defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && ((!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600))) ++# if 1 + err = strerror_r(err, soap->msgbuf, sizeof(soap->msgbuf)); /* XSI-compliant */ + if (err != 0) + soap_strcpy(soap->msgbuf, sizeof(soap->msgbuf), "unknown error"); +diff --git a/gsoap/stdsoap2.cpp b/gsoap/stdsoap2.cpp +index 654a1e1..5fd5fd6 100644 +--- a/gsoap/stdsoap2.cpp ++++ b/gsoap/stdsoap2.cpp +@@ -5430,7 +5430,7 @@ tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent, + { + #if (defined(_AIX43) || defined(TRU64) || defined(HP_UX)) && defined(HAVE_GETHOSTBYNAME_R) + struct hostent_data ht_data; +-#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && defined(HAVE_GETHOSTBYNAME_R) ++#elif defined(HAVE_GETHOSTBYNAME_R) + int r; + char *tmpbuf = soap->tmpbuf; + size_t tmplen = sizeof(soap->tmpbuf); +@@ -5463,7 +5463,7 @@ tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent, + hostent = NULL; + soap->errnum = h_errno; + } +-#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && !defined(SUN_OS) && defined(HAVE_GETHOSTBYNAME_R) ++#elif defined(HAVE_GETHOSTBYNAME_R) + while ((r = gethostbyname_r(addr, hostent, tmpbuf, tmplen, &hostent, &soap->errnum)) < 0) + { + if (tmpbuf != soap->tmpbuf) +@@ -5478,8 +5478,6 @@ tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent, + if (!tmpbuf) + break; + } +-#elif defined(HAVE_GETHOSTBYNAME_R) +- hostent = gethostbyname_r(addr, hostent, tmpbuf, tmplen, &soap->errnum); + #elif defined(VXWORKS) + /* vxWorks compatible */ + /* If the DNS resolver library resolvLib has been configured in the vxWorks +@@ -23112,13 +23110,9 @@ soap_strerror(struct soap *soap) + { + #ifndef WIN32 + # ifdef HAVE_STRERROR_R +-# if !defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && ((!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600))) + err = strerror_r(err, soap->msgbuf, sizeof(soap->msgbuf)); /* XSI-compliant */ + if (err != 0) + soap_strcpy(soap->msgbuf, sizeof(soap->msgbuf), "unknown error"); +-# else +- return strerror_r(err, soap->msgbuf, sizeof(soap->msgbuf)); /* GNU-specific */ +-# endif + # else + return strerror(err); + # endif +-- +2.39.2 + diff --git a/meta-oe/recipes-support/gsoap/gsoap_2.8.124.bb b/meta-oe/recipes-support/gsoap/gsoap_2.8.124.bb deleted file mode 100644 index 22e0119798..0000000000 --- a/meta-oe/recipes-support/gsoap/gsoap_2.8.124.bb +++ /dev/null @@ -1,41 +0,0 @@ -DESCRIPTION = "The gSOAP toolkit provides a unique SOAP-to-C/C++ language binding \ -for the development of SOAP Web Services and clients." -SECTION = "devel" -LICENSE = "GPL-2.0-with-OpenSSL-exception" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4f40a941379143186f9602242c3fb729 \ - file://GPLv2_license.txt;md5=a33672dbe491b6517750a0389063508b" - -SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}2/${BPN}_${PV}.zip \ - " -SRC_URI[sha256sum] = "4b798780989338f665ef8e171bbcc422a271004d62d5852666d5eeca33a6a636" - -inherit autotools - -BBCLASSEXTEND = "native" - -S = "${WORKDIR}/${BPN}-2.8" - -PARALLEL_MAKE = "" - -EXTRA_OEMAKE:class-target = "SOAP=${STAGING_BINDIR_NATIVE}/soapcpp2" - -DEPENDS = "openssl zlib flex bison bison-native" -DEPENDS:append:class-target = " gsoap-native" - -do_install:append() { - install -d ${D}${libdir} - for lib in libgsoapssl libgsoapssl++ libgsoap libgsoapck++ libgsoap++ libgsoapck - do - oe_libinstall -C gsoap $lib ${D}${libdir} - done -} - -do_install:class-native() { - oe_runmake DESTDIR=${D} BINDIR=${D}${bindir} install -} - -FILES:${PN} = "${bindir}/wsdl2h ${bindir}/soapcpp2" -FILES:${PN} += "${datadir}" -FILES:${PN}-staticdev = "${libdir}" -FILES:${PN}-dev = "${includedir}" -RRECOMMENDS:${PN}-dev = "${PN}-staticdev" diff --git a/meta-oe/recipes-support/gsoap/gsoap_2.8.126.bb b/meta-oe/recipes-support/gsoap/gsoap_2.8.126.bb new file mode 100644 index 0000000000..6d8b53d308 --- /dev/null +++ b/meta-oe/recipes-support/gsoap/gsoap_2.8.126.bb @@ -0,0 +1,42 @@ +DESCRIPTION = "The gSOAP toolkit provides a unique SOAP-to-C/C++ language binding \ +for the development of SOAP Web Services and clients." +SECTION = "devel" +LICENSE = "GPL-2.0-with-OpenSSL-exception" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4f40a941379143186f9602242c3fb729 \ + file://GPLv2_license.txt;md5=a33672dbe491b6517750a0389063508b" + +SRC_URI = "https://prdownloads.sourceforge.net/${BPN}2/${BPN}_${PV}.zip" +SRC_URI:append:libc-musl = " file://0001-Simplify-check-for-gethostbyname_r.patch" +SRC_URI[sha256sum] = "b65190ebf8c2517d6fafbdc2000bc7bc650d921a02f4aa53eb1e3df267592c4a" + +inherit autotools + +BBCLASSEXTEND = "native" + +S = "${WORKDIR}/${BPN}-2.8" + +EXTRA_OECONF += "--enable-ipv6 --enable-c-locale" +PARALLEL_MAKE = "" + +EXTRA_OEMAKE:class-target = "SOAP=${STAGING_BINDIR_NATIVE}/soapcpp2" + +DEPENDS = "openssl zlib flex bison bison-native" +DEPENDS:append:class-target = " gsoap-native" + +do_install:append() { + install -d ${D}${libdir} + for lib in libgsoapssl libgsoapssl++ libgsoap libgsoapck++ libgsoap++ libgsoapck + do + oe_libinstall -C gsoap $lib ${D}${libdir} + done +} + +do_install:class-native() { + oe_runmake DESTDIR=${D} BINDIR=${D}${bindir} install +} + +FILES:${PN} = "${bindir}/wsdl2h ${bindir}/soapcpp2" +FILES:${PN} += "${datadir}" +FILES:${PN}-staticdev = "${libdir}" +FILES:${PN}-dev = "${includedir}" +RRECOMMENDS:${PN}-dev = "${PN}-staticdev" -- cgit v1.2.3-54-g00ecf