diff options
author | Craig Andrews <candrews@gentoo.org> | 2019-01-09 11:08:31 -0500 |
---|---|---|
committer | Craig Andrews <candrews@gentoo.org> | 2019-01-11 16:30:51 -0500 |
commit | 74eced9102a1189d33f113ac5b0ad3149930b048 (patch) | |
tree | 1abdfa915e9351fa0f021ef1d052b973812a676e /x11-misc | |
parent | app-text/bibutils: Version bump (diff) | |
download | gentoo-74eced9102a1189d33f113ac5b0ad3149930b048.tar.gz gentoo-74eced9102a1189d33f113ac5b0ad3149930b048.tar.bz2 gentoo-74eced9102a1189d33f113ac5b0ad3149930b048.zip |
x11-misc/virtualgl: OpenSSL 1.1 compatibility
Closes: https://bugs.gentoo.org/673988
Package-Manager: Portage-2.3.54, Repoman-2.3.12
Signed-off-by: Craig Andrews <candrews@gentoo.org>
Diffstat (limited to 'x11-misc')
-rw-r--r-- | x11-misc/virtualgl/files/virtualgl-2.5.2-openssl-1.1-compat-a974c22141d0ded9ff60a0b903f81e6b484d6ba4.patch | 168 | ||||
-rw-r--r-- | x11-misc/virtualgl/virtualgl-2.5.2-r1.ebuild | 91 |
2 files changed, 259 insertions, 0 deletions
diff --git a/x11-misc/virtualgl/files/virtualgl-2.5.2-openssl-1.1-compat-a974c22141d0ded9ff60a0b903f81e6b484d6ba4.patch b/x11-misc/virtualgl/files/virtualgl-2.5.2-openssl-1.1-compat-a974c22141d0ded9ff60a0b903f81e6b484d6ba4.patch new file mode 100644 index 000000000000..d5d923f89d1b --- /dev/null +++ b/x11-misc/virtualgl/files/virtualgl-2.5.2-openssl-1.1-compat-a974c22141d0ded9ff60a0b903f81e6b484d6ba4.patch @@ -0,0 +1,168 @@ +Patch modified to apply to VirtualGL 2.5.2, before +1b82bceb3723b24ea5dc32edffbe019a8a37ab39 reformatted whitespace + + +From a974c22141d0ded9ff60a0b903f81e6b484d6ba4 Mon Sep 17 00:00:00 2001 +From: DRC <information@virtualgl.org> +Date: Mon, 16 Apr 2018 15:06:07 -0500 +Subject: [PATCH] OpenSSL improvements + +- Fix build issues with OpenSSL 1.1 (OpenSSL 1.1 and later no longer + provides CRYPTO_set_locking_callback(), since locking is now performed + internally.) +- Detect whether the platform has /dev/urandom at compile time, rather + than assuming that all Sun and SGI machines don't have it (Solaris 10 + and later supports /dev/urandom.) +--- + ChangeLog.md | 2 ++ + include/Socket.h | 8 ++++++-- + util/CMakeLists.txt | 5 +++++ + util/Socket.cpp | 25 ++++++++++++++++--------- + 4 files changed, 29 insertions(+), 11 deletions(-) + +diff --git a/ChangeLog.md b/ChangeLog.md +index 3632c1d8..5c9bff84 100644 +--- a/ChangeLog.md ++++ b/ChangeLog.md +@@ -52,6 +52,8 @@ a subsequent segfault when VTK tried to call `glBlendFuncSeparate()`. + VirtualGL's implementation of `glXGetVisualFromFBConfig()` now returns NULL + unless the FB config has a corresponding visual on the 3D X server. + ++6. VirtualGL can now be built and run with OpenSSL 1.1. ++ + + 2.5.2 + ===== +diff --git a/include/Socket.h b/include/Socket.h +index dfe45e3a..f7409956 100644 +--- a/include/Socket.h ++++ b/include/Socket.h +@@ -1,6 +1,6 @@ + /* Copyright (C)2004 Landmark Graphics Corporation + * Copyright (C)2005 Sun Microsystems, Inc. +- * Copyright (C)2014, 2016 D. R. Commander ++ * Copyright (C)2014, 2016, 2018 D. R. Commander + * + * This library is free software and may be redistributed and/or modified under + * the terms of the wxWindows Library License, Version 3.1 or (at your option) +@@ -23,7 +23,7 @@ + #endif + #include <openssl/ssl.h> + #include <openssl/err.h> +-#if defined(sun) || defined(sgi) ++#if !defined(HAVE_DEVURANDOM) && !defined(_WIN32) + #include <openssl/rand.h> + #endif + #endif +@@ -161,15 +161,19 @@ namespace vglutil + + #ifdef USESSL + ++ #if OPENSSL_VERSION_NUMBER < 0x10100000L + static void lockingCallback(int mode, int type, const char *file, + int line) + { + if(mode&CRYPTO_LOCK) cryptoLock[type].lock(); + else cryptoLock[type].unlock(); + } ++ #endif + + static bool sslInit; ++ #if OPENSSL_VERSION_NUMBER < 0x10100000L + static CriticalSection cryptoLock[CRYPTO_NUM_LOCKS]; ++ #endif + bool doSSL; SSL_CTX *sslctx; SSL *ssl; + + #endif +diff --git a/util/CMakeLists.txt b/util/CMakeLists.txt +index 65ef59e7..ed1dfb39 100644 +--- a/util/CMakeLists.txt ++++ b/util/CMakeLists.txt +@@ -13,6 +13,11 @@ target_link_libraries(bmptest vglutil) + add_executable(pftest pftest.c) + target_link_libraries(pftest vglutil) + ++if(EXISTS /dev/urandom) ++ message(STATUS "Using /dev/urandom for random number generation") ++ add_definitions(-DHAVE_DEVURANDOM) ++endif() ++ + add_library(vglsocket STATIC Socket.cpp) + target_link_libraries(vglsocket vglutil) + if(WIN32) +diff --git a/util/Socket.cpp b/util/Socket.cpp +index 0d230841..b41c25e9 100644 +--- a/util/Socket.cpp ++++ b/util/Socket.cpp +@@ -1,6 +1,6 @@ + /* Copyright (C)2004 Landmark Graphics Corporation + * Copyright (C)2005 Sun Microsystems, Inc. +- * Copyright (C)2014, 2016 D. R. Commander ++ * Copyright (C)2014, 2016, 2018 D. R. Commander + * + * This library is free software and may be redistributed and/or modified under + * the terms of the wxWindows Library License, Version 3.1 or (at your option) +@@ -43,32 +43,37 @@ typedef socklen_t SOCKLEN_T; + + #ifdef USESSL + bool Socket::sslInit=false; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + CriticalSection Socket::cryptoLock[CRYPTO_NUM_LOCKS]; + #endif ++#endif + CriticalSection Socket::mutex; + int Socket::instanceCount=0; + + + #ifdef USESSL + +-static void progressCallback(int p, int n, void *arg) +-{ +-} +- +- + static EVP_PKEY *newPrivateKey(int bits) + { ++ BIGNUM *bn = NULL; ++ RSA *rsa = NULL; + EVP_PKEY *pk=NULL; + + try + { ++ if(!(bn = BN_new())) _throwssl(); ++ if(!BN_set_word(bn, RSA_F4)) _throwssl(); ++ if(!(rsa = RSA_new())) _throwssl(); ++ if(!RSA_generate_key_ex(rsa, bits, bn, NULL)) _throwssl(); + if(!(pk=EVP_PKEY_new())) _throwssl(); +- if(!EVP_PKEY_assign_RSA(pk, RSA_generate_key(bits, 0x10001, +- progressCallback, NULL))) _throwssl(); ++ if(!EVP_PKEY_assign_RSA(pk, rsa)) _throwssl(); ++ BN_free(bn); + return pk; + } + catch (...) + { ++ if(bn) BN_free(bn); ++ if(rsa) RSA_free(rsa); + if(pk) EVP_PKEY_free(pk); + throw; + } +@@ -147,7 +152,7 @@ Socket::Socket(bool doSSL_) + #ifdef USESSL + if(!sslInit && doSSL) + { +- #if defined(sun) || defined(sgi) ++ #if !defined(HAVE_DEVURANDOM) && !defined(_WIN32) + char buf[128]; int i; + srandom(getpid()); + for(i = 0; i < 128; i++) +@@ -158,7 +163,9 @@ Socket::Socket(bool doSSL_) + SSL_load_error_strings(); + ERR_load_crypto_strings(); + CRYPTO_set_id_callback(Thread::threadID); ++ #if OPENSSL_VERSION_NUMBER < 0x10100000L + CRYPTO_set_locking_callback(lockingCallback); ++ #endif + SSL_library_init(); + sslInit = true; + char *env = NULL; diff --git a/x11-misc/virtualgl/virtualgl-2.5.2-r1.ebuild b/x11-misc/virtualgl/virtualgl-2.5.2-r1.ebuild new file mode 100644 index 000000000000..aa35612ba1ba --- /dev/null +++ b/x11-misc/virtualgl/virtualgl-2.5.2-r1.ebuild @@ -0,0 +1,91 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +inherit cmake-multilib flag-o-matic multilib systemd + +DESCRIPTION="Run OpenGL applications remotely with full 3D hardware acceleration" +HOMEPAGE="https://www.virtualgl.org/" + +MY_PN="VirtualGL" +MY_P="${MY_PN}-${PV}" +S="${WORKDIR}/${MY_P}" +SRC_URI="mirror://sourceforge/${PN}/files/${PV}/${MY_P}.tar.gz" + +SLOT="0" +LICENSE="LGPL-2.1 wxWinLL-3.1 FLTK" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="libressl ssl" + +RDEPEND=" + ssl? ( + !libressl? ( dev-libs/openssl:0=[${MULTILIB_USEDEP}] ) + libressl? ( dev-libs/libressl:0=[${MULTILIB_USEDEP}] ) + ) + media-libs/libjpeg-turbo[${MULTILIB_USEDEP}] + x11-libs/libX11[${MULTILIB_USEDEP}] + x11-libs/libXext[${MULTILIB_USEDEP}] + x11-libs/libXv[${MULTILIB_USEDEP}] + virtual/glu[${MULTILIB_USEDEP}] + virtual/opengl[${MULTILIB_USEDEP}] + amd64? ( abi_x86_32? ( + >=media-libs/libjpeg-turbo-1.3.0-r3[abi_x86_32] + >=x11-libs/libX11-1.6.2[abi_x86_32] + >=x11-libs/libXext-1.3.2[abi_x86_32] + >=x11-libs/libXv-1.0.10[abi_x86_32] + >=virtual/glu-9.0-r1[abi_x86_32] + >=virtual/opengl-7.0-r1[abi_x86_32] + ) ) +" +DEPEND="${RDEPEND}" +PATCHES=( + "${FILESDIR}/virtualgl-2.5.2-openssl-1.1-compat-a974c22141d0ded9ff60a0b903f81e6b484d6ba4.patch" +) + +src_prepare() { + # Use /var/lib, bug #428122 + sed -e "s#/etc/opt#/var/lib#g" -i doc/unixconfig.txt doc/index.html doc/advancedopengl.txt \ + server/vglrun.in server/vglgenkey server/vglserver_config || die + + cmake-utils_src_prepare +} + +src_configure() { + # Completely breaks steam/wine for discrete graphics otherwise + # see https://github.com/VirtualGL/virtualgl/issues/16 + append-ldflags "-Wl,--no-as-needed" + + abi_configure() { + local mycmakeargs=( + -DVGL_USESSL="$(usex ssl)" + -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/"${PF}" + -DTJPEG_INCLUDE_DIR=/usr/include + -DCMAKE_INSTALL_LIBDIR=/usr/$(get_libdir) + -DTJPEG_LIBRARY=/usr/$(get_libdir)/libturbojpeg.so + -DCMAKE_LIBRARY_PATH=/usr/$(get_libdir) + ) + cmake-utils_src_configure + } + multilib_parallel_foreach_abi abi_configure +} + +src_install() { + cmake-multilib_src_install + + # Make config dir + dodir /var/lib/VirtualGL + fowners root:video /var/lib/VirtualGL + fperms 0750 /var/lib/VirtualGL + newinitd "${FILESDIR}/vgl.initd-r3" vgl + newconfd "${FILESDIR}/vgl.confd-r2" vgl + + exeinto /usr/libexec + doexe "${FILESDIR}/vgl-helper.sh" + systemd_dounit "${FILESDIR}/vgl.service" + + # Rename glxinfo to vglxinfo to avoid conflict with x11-apps/mesa-progs + mv "${D}"/usr/bin/{,v}glxinfo || die + + # Remove license files, bug 536284 + rm "${D}"/usr/share/doc/${PF}/{LGPL.txt*,LICENSE*} || die +} |