Ice: update to 3.7.5

Continuation of my work at #28422

Upstream mcpp is abandonware and is missing features newer versions of Ice
need to build. There are supposedly patches applicable to the official mcpp
that allows it to work but I couldn't see links to any (I'm guessing they live
in distros). Instead I tried packaging ZeroC's officially maintained stripped
down library only version (see previous commit e617a384).

Tests have been disabled because they take a disgustingly long time to build
and have to be hand blacklisted to the ones that don't fail on each platform.
I tested this package by building and running Murmur from the `mumble` package.

Almost all of the patches had completely bit-rotted, I salvaged a few that was
still relevant but the rest had to be thrown away. I made the changes
necessary to cross-compile to aarch64-musl but the result untested as I don't
have any exotic systems to test with (`mumble` was built for aarch64-musl
as well).
This commit is contained in:
a dinosaur 2021-02-21 11:17:00 +11:00 committed by John Zimmermann
parent 71594b3d79
commit 25bc7512a1
5 changed files with 58 additions and 184 deletions

View File

@ -961,19 +961,22 @@ libmcpp.so.0 libmcpp-2.7.2_1
libjitterentropy.so.3 jitterentropy-3.0.0_1
libkdecorations2.so.5 kdecoration-5.8.4_1
libkdecorations2private.so.7 kdecoration-5.18.0_1
libGlacier2.so.35 libIce-3.5.0_1
libIce.so.35 libIce-3.5.0_1
libIceSSL.so.35 libIce-3.5.0_1
libIceUtil.so.35 libIce-3.5.0_1
libIceStormService.so.35 libIce-3.5.0_1
libIceStorm.so.35 libIce-3.5.0_1
libFreeze.so.35 libIce-3.5.0_1
libSlice.so.35 libIce-3.5.0_1
libIceBox.so.35 libIce-3.5.0_1
libIceGrid.so.35 libIce-3.5.0_1
libIcePatch2.so.35 libIce-3.5.0_1
libIceDB.so.35 libIce-3.5.0_1
libIceXML.so.35 libIce-3.5.0_1
libGlacier2.so.37 libIce-3.7.5_1
libGlacier2CryptPermissionsVerifier.so.37 libIce-3.7.5_1
libIce.so.37 libIce-3.7.5_1
libIceSSL.so.37 libIce-3.7.5_1
libIceUtil.so.37 libIce-3.7.5_1
libIceStormService.so.37 libIce-3.7.5_1
libIceStorm.so.37 libIce-3.7.5_1
libFreeze.so.37 libIce-3.7.5_1
libSlice.so.37 libIce-3.7.5_1
libIceBox.so.37 libIce-3.7.5_1
libIceGrid.so.37 libIce-3.7.5_1
libIcePatch2.so.37 libIce-3.7.5_1
libIceDB.so.37 libIce-3.7.5_1
libIceXML.so.37 libIce-3.7.5_1
libIceDiscovery.so.37 libIce-3.7.5_1
libIceLocatorDiscovery.so.37 libIce-3.7.5_1
libvdpau.so.1 libvdpau-0.4.1_1
libgsm.so.1 libgsm-1.0.13_13
libcgroup.so.1 libcgroup-0.37.1_1

View File

@ -1,62 +0,0 @@
--- cpp/include/IceUtil/Config.h
+++ cpp/include/IceUtil/Config.h
@@ -20,31 +20,28 @@
# include <endian.h>
#endif
-#if defined(__i386) || defined(_M_IX86) || defined(__x86_64) || \
- defined(_M_X64) || defined(_M_IA64) || defined(__alpha__) || \
- defined(__ARMEL__) || defined(_M_ARM_FP) || \
- defined(__MIPSEL__) || (defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN))
-# define ICE_LITTLE_ENDIAN
-#elif defined(__sparc) || defined(__sparc__) || defined(__hppa) || \
- defined(__ppc__) || defined(__powerpc) || defined(_ARCH_COM) || \
- defined(__MIPSEB__) || (defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN))
-# define ICE_BIG_ENDIAN
-#else
-# error "Unknown architecture"
+#if defined(HAVE_ENDIAN_H)
+# include <endian.h>
+# if __BYTE_ORDER==__LITTLE_ENDIAN
+# define ICE_LITTLE_ENDIAN
+# elif __BYTE_ORDER==__BIG_ENDIAN
+# define ICE_BIG_ENDIAN
+# else
+# error "Unknown endian type"
+# endif
#endif
//
// 32 or 64 bit mode?
//
-#if defined(__sun) && (defined(__sparcv9) || defined(__x86_64)) || \
- defined(__linux) && defined(__x86_64) || \
- defined(__hppa) && defined(__LP64__) || \
- defined(_ARCH_COM) && defined(__64BIT__) || \
- defined(__alpha__) || \
- defined(_WIN64)
-# define ICE_64
-#else
-# define ICE_32
+#if defined(HAVE_LIMITS_H)
+# include <stdint.h>
+# include <limits.h>
+# if __WORDSIZE == 64
+# define ICE_64
+# else
+# define ICE_32
+# endif
#endif
//
--- cpp/src/IceUtil/Makefile
+++ cpp/src/IceUtil/Makefile
@@ -41,7 +41,7 @@
include $(top_srcdir)/config/Make.rules
CPPFLAGS := $(CPPFLAGS) $(ICEUTIL_FLAGS) -DICE_UTIL_API_EXPORTS -I..
-LINKWITH := $(ICEUTIL_OS_LIBS)
+LINKWITH := $(ICEUTIL_OS_LIBS) -lrt
ifeq ($(STATICLIBS),yes)
$(libdir)/$(LIBNAME): $(OBJS)

View File

@ -1,11 +1,13 @@
--- cpp/include/IceUtil/Mutex.h.orig 2016-03-27 17:49:17.579001730 +0200
+++ cpp/include/IceUtil/Mutex.h 2016-03-27 17:51:56.591989829 +0200
@@ -231,7 +231,7 @@ Mutex::init(MutexProtocol
// Enable mutex error checking in debug builds
//
#ifndef NDEBUG
-#if defined(__linux) && !defined(__USE_UNIX98)
+#if defined(__linux) && !defined(__USE_UNIX98) && defined(PTHREAD_MUTEX_ERRORCHECK_NP)
rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK_NP);
#else
rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
diff --git a/cpp/src/IceUtil/UtilException.cpp b/cpp/src/IceUtil/UtilException.cpp
index 266942bb3d..3ef50c30b0 100644
--- a/cpp/src/IceUtil/UtilException.cpp
+++ b/cpp/src/IceUtil/UtilException.cpp
@@ -43,7 +43,7 @@
# endif
# endif
-# if !defined(_AIX) && !defined(__sun) && !defined(__FreeBSD__) && !defined(__MINGW32__) && !defined(ICE_STATIC_LIBS)
+# if !defined(_AIX) && !defined(__sun) && !defined(__FreeBSD__) && !defined(__MINGW32__) && !defined(ICE_STATIC_LIBS) && defined(__GLIBC__)
# include <execinfo.h>
# include <cxxabi.h>
# include <stdint.h>

View File

@ -1,37 +0,0 @@
--- cpp/src/Glacier2/CryptPermissionsVerifierI.cpp.orig 2014-07-15 16:06:05.470463382 +0200
+++ cpp/src/Glacier2/CryptPermissionsVerifierI.cpp 2014-07-15 16:09:18.591065235 +0200
@@ -8,6 +8,7 @@
// **********************************************************************
#include <Glacier2/CryptPermissionsVerifierI.h>
+#include <openssl/opensslv.h>
#include <openssl/des.h>
using namespace std;
--- cpp/src/IceGrid/RegistryI.cpp.orig 2014-07-15 16:10:22.943599009 +0200
+++ cpp/src/IceGrid/RegistryI.cpp 2014-07-15 16:10:40.950748368 +0200
@@ -40,6 +40,7 @@
#include <fstream>
+#include <openssl/opensslv.h>
#include <openssl/des.h> // For crypt() passwords
#include <sys/types.h>
--- cpp/src/IceSSL/Instance.cpp.orig 2014-07-15 15:59:44.430302828 +0200
+++ cpp/src/IceSSL/Instance.cpp 2014-07-15 16:02:59.590921603 +0200
@@ -274,12 +274,14 @@ IceSSL::Instance::Instance(const Communi
string entropyDaemon = properties->getProperty("IceSSL.EntropyDaemon");
if(!entropyDaemon.empty())
{
+#ifdef HAVE_SSL_RAND_EGD
if(RAND_egd(entropyDaemon.c_str()) <= 0)
{
PluginInitializationException ex(__FILE__, __LINE__);
ex.reason = "IceSSL: EGD failure using file " + entropyDaemon;
throw ex;
}
+#endif
}
#endif
if(!RAND_status())

View File

@ -1,86 +1,54 @@
# Template file for 'Ice'
pkgname=Ice
version=3.5.1
revision=22
build_wrksrc=cpp
makedepends="zlib-devel bzip2-devel mcpp-devel db-devel expat-devel libressl-devel"
version=3.7.5
revision=1
wrksrc="ice-${version}"
build_style=gnu-makefile
make_build_args="LANGUAGES=cpp prefix=/usr OPTIMIZE=yes
USR_DIR_INSTALL=yes CONFIGS=shared CONFIGS+=cpp11-shared"
make_install_args="LANGUAGES=cpp prefix=/usr lib-suffix="
makedepends="zlib-devel bzip2-devel zeroc-mcpp db-devel expat-devel
libressl-devel lmdb-devel editline-devel"
short_desc="Internet Communications Engine (Ice)"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-only, ICE"
homepage="http://www.zeroc.com"
distfiles="${homepage}/download/Ice/${version%.*}/${pkgname}-${version}.tar.gz"
checksum=989e51194c6adadbd156da3288e37bad847b93b3b876502e83033b70493af392
python_version=2 #unverified
maintainer="a dinosaur <nick@a-dinosaur.com>"
license="GPL-2.0-only, custom:ICE"
homepage="https://www.zeroc.com"
distfiles="https://github.com/zeroc-ice/ice/archive/v${version}.tar.gz"
checksum=36bf45591a95e6ee7216153d45d8eca05ff00c1da35608f0c400e6ddc8049da9
patch_args="-Np1"
if [ "$CROSS_BUILD" ]; then
# Cross build requires the host's slice2cpp and slice2freeze
# Cross build requires the host's slice2cpp
hostmakedepends+=" Ice"
fi
do_configure() {
sed -i -e "s|^#OPTIMIZE|OPTIMIZE|" config/Make.rules
sed -i -e "s|x)/config|x)/lib/Ice/config|" config/Make.rules
sed -i '/^embedded_runpath_prefix*/d' config/Make.rules
sed -i -e 's|x)/man/man1|x)/share/man/man1|' config/Make.rules
sed -i -e "s|test demo||" Makefile
# Disable building tests
vsed 's|include \$(top_srcdir)/config/Make.tests.rules||' -i config/Make.rules
# Simple fixes for musl libc instead of a proper patch
sed -i -e 's|__GNUC__|__GLIBC__|' src/IceUtil/Exception.cpp
sed -i -e 's|PTHREAD_MUTEX_RECURSIVE_NP|PTHREAD_MUTEX_RECURSIVE|' src/IceUtil/RecMutex.cpp
sed -i -e 's|sys/poll\.h|poll.h|' src/Ice/*.h
# Disable errors on warnings
vsed 's|-Werror|-Wno-error|' -i config/Make.rules.Linux
# Patch to fix finding editline
vsed 's|-ledit|-leditline|' -i config/Make.rules.Linux
vsed 's|editline/readline.h|editline.h|' -i cpp/src/IceStorm/Parser.cpp cpp/src/IceGrid/Parser.cpp
# Patch to find our $CXX and always use our $CXXFLAGS
sed -i config/Make.rules.Linux \
-e "s|= g++|= ${CXX}|" \
-e "s|ifeq (\$(CXX),g++)|ifeq (\$(CXX),${CXX})|" \
-e "/CXXARCHFLAGS\s+=/ s| -m.*|${CXXFLAGS}|" \
-e "s|\$(CXX) -shared|${CXX} -shared|" \
-e "s|-rdynamic|-rdynamic -Wl,-rpath,\$(libdir) ${LDFLAGS}|" \
-e "s|-Werror|-Wno-error|"
# Fix cross building
if [ "$CROSS_BUILD" ]; then
# Use host's slice2cpp and slice2freeze
sed -i config/Make.rules \
-e 's|$(SLICE2CPP) $(SLICE2CPPFLAGS)|LD_LIBRARY_PATH=/usr/lib /usr/bin/slice2cpp $(SLICE2CPPFLAGS)|'
find . -name Makefile -exec sed -i "{}" \
-e 's|^\(\s\)$(SLICE2FREEZE)|\1LD_LIBRARY_PATH=/usr/lib /usr/bin/slice2freeze|' \
-e '/SLICE2FREEZECMD\s=/ s|$(SLICE2FREEZE)|LD_LIBRARY_PATH=/usr/lib /usr/bin/slice2freeze|' \
\;
# Use host's slice2cpp
vsed -i config/Make.project.rules \
-e 's/$($6_path) |/|/' \
-e 's|$(Q)$($6_path)|$(Q)/usr/bin/slice2cpp|'
fi
}
do_build() {
export CXXFLAGS+=" -fPIC -DPIC"
make prefix=/usr ${makejobs}
}
do_install() {
case "$XBPS_MACHINE" in
x86_64*)
vmkdir usr/lib
ln -s lib ${DESTDIR}/usr/lib64
;;
esac
make prefix=${DESTDIR}/usr install
[ -h ${DESTDIR}/usr/lib64 ] && rm -f ${DESTDIR}/usr/lib64
mv ${DESTDIR}/usr/slice ${DESTDIR}/usr/share
rm ${DESTDIR}/usr/LICENSE ${DESTDIR}/usr/ICE_LICENSE
rm ${DESTDIR}/usr/CHANGES ${DESTDIR}/usr/RELEASE_NOTES
cd ${wrksrc}
post_install() {
vlicense ICE_LICENSE
vdoc CHANGES
vdoc RELEASE_NOTES
# remove unused cruft
rm -f ${DESTDIR}/usr/lib/*.class
}
libIce_package() {
short_desc+=" - runtime libraries"
pkg_install() {
vmove "usr/lib/*.so.*"
vmove usr/lib/Ice
}
}