On Mon Aug 17, 2020 at 06:51:41PM -0700, Nam Nguyen wrote: > Nam Nguyen writes: > > > This is a diff for an update to net/libtorrent-rasterbar 1.2.8, released > > on August 4, 2020. > > This new diff applies cleanly now that rsadsowski@ updated devel/boost > to 1.67.0. It also uses -mt variants of boost_system-mt and > boost_python38-mt. > > Reasons: > - cmake build uses -mt variants for both > - I was getting undefined symbols with 1.2.8 + system-mt + python38 > (non-mt). 1.2.3 + system-mt + python38 (non-mt), as it is currently in > the ports tree, works, however. > > $ python3 > Python 3.8.5 (default, Aug 13 2020, 13:09:39) > [Clang 10.0.1 ] on openbsd6 > Type "help", "copyright", "credits" or "license" for more information. > >>> import libtorrent > python3:/usr/local/lib/python3.8/site-packages/libtorrent.so: undefined > symbol '_ZTIN10libtorrent12socks5_alertE' > python3:/usr/local/lib/python3.8/site-packages/libtorrent.so: undefined > symbol '_ZN10libtorrent9peer_infoC1ERKS0_' > python3:/usr/local/lib/python3.8/site-packages/libtorrent.so: undefined > symbol '_ZN10libtorrent9peer_infoD1Ev' > python3:/usr/local/lib/python3.8/site-packages/libtorrent.so: undefined > symbol '_ZN10libtorrent9peer_infoC1Ev' > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > ImportError: Cannot load specified object
OK rsadowski@ python3 Python 3.8.5 (default, Aug 16 2020, 10:13:08) [Clang 10.0.1 ] on openbsd6 Type "help", "copyright", "credits" or "license" for more information. >>> import libtorrent >>> ... without noise > > > > > changelog: > > https://github.com/arvidn/libtorrent/blob/libtorrent-1.2.8/ChangeLog > > > > base-clang 10.0.1 unbreaks libtorrent-rasterbar. This diff is based on > > rsadowski@'s devel/boost 1.67.0 update. > > > > https://marc.info/?l=openbsd-ports&m=159566156026888&w=2 > > > > This diff: > > - is based on rsadowski@'s devel/boost 1.67.0 update, which moves from > > boost_python3 to boost_python38. rsadowski@ uses MODPY_VERSION here in > > naming WANTLIB and CONFIGURE_ARGS > > - updates to 1.2.8 > > - bumps library major due to symbol deletion > > - adds a license marker for ConvertUTF.cpp, slated to be removed in > > upcoming 1.2.9 > > - changes MASTER_SITES to properly download the new release > > - specifies devel/boost>=1.67.0 > > - uses non-mt variants of both boost_system and boost_python38 > uses mt variants of libboost_system-mt and libboost_python38-mt > > > - links to -liconv (libiconv.so.7.0) instead of libiconv.a > > - regens WANTLIB with boost_python38, boost_system (non-mt) and iconv > > > > python bindings > > =============== > > > > lboost_python38 and lboost_system = works > > lboost_python38-mt and lboost_system-mt = works > > nonmatching -mt = broken > > > > When they were nonmatching -mt as in rsadowski@'s boost update, I had two > > outcomes: > > - more recently, SIGILL on deluge startup > > - update-plist in deluge: > > Warning: libtorrent (libtorrent-rasterbar) not found: Cannot load > > specified object > > ===> Faking installation for deluge-2.0.3p1 > > > > I can no longer reproduce the latter since moving from ports-clang back to > > base-clang. I now always get the SIGILL with nonmatching -mt. > > > > To resolve make sure that _system and _python are matching -mt or > > non-mt. > > > > I have an experimental cmake build where cmake uses -lboost_python38-mt > > and -lboost_system-mt in building python bindings > > (bindings/python/libtorrent.so). See the first half of the log file. It > > works. > > > > The second half of the log file shows the autohell Makefile using > > -lboost_system-mt and -lboost_python38, which was broken. > > > > log file: https://www.namtsui.com/public/pythonbindings.txt > > > > upstream states that boost build (b2) > cmake > autohell for reliably > > building libtorrent python bindings (libtorrent.so). autohell is removed > > altogether in the libtorrent 2 branch, unrelated to 1.2.8. Moving to > > cmake is an option but not necessary. > > > > iconv > > ===== > > > > libiconv.a is always preferred by autohell over libiconv.so.7.0. I > > replace all generated Makefiles using iconv.a (second half of log file) > > with -liconv (first half of log file). > > > > Specifically, I deleted /usr/local/lib/libiconv.a so that it could only > > find libiconv.so.7.0. The result is printed in the first half of log > > file. > > > > log file: https://www.namtsui.com/public/iconv.txt > > > > make port-lib-depends-check is happy and iconv is now added to > > WANTLIB. This is hacky. Other options: > > - move to cmake, which finds -liconv > > - use libiconv.a and remove this > > > > Licensing > > ========= > > > > debian removed libtorrent-rasterbar because ConvertUTF8.cpp has a > > special Unicode, Inc., license. > > > > Is it fine to leave PERMIT_PACKAGE as is, since upstream will remove it > > in the upcoming 1.2.9? > > > > https://github.com/arvidn/libtorrent/pull/4966 > > https://github.com/arvidn/libtorrent/issues/4951 > > > > Major bump > > ========== > > > > 1. I referenced "CMakeLists.txt: set (SOVERSION "10")" to keep # 10.0.0 as > > kn@ had done with a previous update. > > > > 2. has_udp_outgoing-sockets() (see 1.2.3's > > include/libtorrent/aux_/session_impl.hpp:731) has been removed in > > 1.2.8. This symbol deletion is enough for bumping major. > > > > 3. Changelog also says, "deprecate broadcast_lsd setting. Just use > > multicast" > > > > - include/libtorrent/settings_pack.hpp > > settings_pack struct in 1.2.3 used to have broadcast_lsd: > > > > // if ``broadcast_lsd`` is set to true, the local peer discovery (or > > // Local Service Discovery) will not only use IP multicast, but also > > // broadcast its messages. This can be useful when running on networks > > // that don't support multicast. Since broadcast messages might be > > // expensive and disruptive on networks, only every 8th announce uses > > // broadcast. > > broadcast_lsd, > > > > - in 1.2.8: > > > > #if TORRENT_ABI_VERSION == 1 > > // if ``broadcast_lsd`` is set to true, the local peer discovery (or > > // Local Service Discovery) will not only use IP multicast, but also > > // broadcast its messages. This can be useful when running on networks > > // that don't support multicast. Since broadcast messages might be > > // expensive and disruptive on networks, only every 8th announce uses > > // broadcast. > > broadcast_lsd TORRENT_DEPRECATED_ENUM, > > #else > > deprecated_broadcast_lsd, > > #endif > > > > - TORRENT_DEPRECATED_ENUM is defined as: > > > > include/libtorrent/aux_/deprecated.hpp:43: > > # define TORRENT_DEPRECATED_ENUM __attribute__ ((deprecated)) > > > > The deprecated attribute means that its use is discourged with a warning > > if used but still supported. This could also arguably warrant a major > > bump, but the removal in #2 is enough. > > > > Testing > > ======= > > > > To test: > > 1. update to boost 1.67 > > https://marc.info/?l=openbsd-ports&m=159566156026888&w=2 > > 2. use this diff instead for net/libtorrent-rasterbar > > > > I tested torrenting a linux ISO with net/deluge and > > net/qbitorrent. Tests are in the same state as before: 47/50 pass. > > > > Feedback and tests are welcome. > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/net/libtorrent-rasterbar/Makefile,v > retrieving revision 1.11 > diff -u -p -r1.11 Makefile > --- Makefile 15 Aug 2020 20:31:06 -0000 1.11 > +++ Makefile 18 Aug 2020 01:34:52 -0000 > @@ -2,23 +2,24 @@ > > COMMENT = C++ library implementing a BitTorrent client > > -MODPY_EGG_VERSION = 1.2.3 > +MODPY_EGG_VERSION = 1.2.8 > DISTNAME = libtorrent-rasterbar-${MODPY_EGG_VERSION} > -REVISION = 1 > > -SHARED_LIBS += torrent-rasterbar 2.0 # 10.0.0 > +SHARED_LIBS += torrent-rasterbar 3.0 # 10.0.0 > > CATEGORIES = net devel > > HOMEPAGE = https://libtorrent.org/ > > # BSD3 > +# ConvertUTF.cpp (Unicode, Inc., license) will be removed in 1.2.9. see: > +# https://github.com/arvidn/libtorrent/pull/4966 > PERMIT_PACKAGE = Yes > > -WANTLIB += boost_python${MODPY_VERSION:C/\.//g} boost_system-mt crypto m ssl > -WANTLIB += ${COMPILER_LIBCXX} > +WANTLIB += ${COMPILER_LIBCXX} boost_python${MODPY_VERSION:C/\.//g}-mt > +WANTLIB += boost_system-mt crypto iconv m ssl > > -MASTER_SITES = > https://github.com/arvidn/libtorrent/releases/download/libtorrent-${MODPY_EGG_VERSION:S/./_/g}/ > +MASTER_SITES = > https://github.com/arvidn/libtorrent/releases/download/libtorrent-${MODPY_EGG_VERSION}/ > > MODULES = lang/python > MODPY_VERSION = ${MODPY_DEFAULT_VERSION_3} > @@ -35,7 +36,7 @@ CONFIGURE_STYLE = gnu > CONFIGURE_ARGS = --enable-python-binding \ > --enable-tests \ > --with-boost-system=boost_system-mt \ > - > --with-boost-python=boost_python${MODPY_VERSION:C/\.//g} \ > + > --with-boost-python=boost_python${MODPY_VERSION:C/\.//g}-mt \ > --with-libiconv > CONFIGURE_ENV += CPPFLAGS="-Wno-deprecated-declarations \ > -Wno-macro-redefined \ > @@ -51,6 +52,11 @@ CONFIGURE_ARGS += --enable-debug > > pre-configure: > sed -i 's,-Os,,g' ${WRKSRC}/configure > + > +# link to -liconv. autotools incorrectly prefers libiconv.a over -liconv. > +post-configure: > + find ${WRKSRC} -type f \( -name "Makefile" -o -name "link_flags" \) \ > + -exec sed -ie "s;${LOCALBASE}/lib/libiconv\.a;-liconv;g" {} + > > pre-test: > ln -sf ${MODPY_BIN} ${WRKDIR}/bin/python > Index: distinfo > =================================================================== > RCS file: /cvs/ports/net/libtorrent-rasterbar/distinfo,v > retrieving revision 1.6 > diff -u -p -r1.6 distinfo > --- distinfo 6 Feb 2020 20:00:16 -0000 1.6 > +++ distinfo 18 Aug 2020 01:34:52 -0000 > @@ -1,2 +1,2 @@ > -SHA256 (libtorrent-rasterbar-1.2.3.tar.gz) = > FYL9u9BEm8/k/64sy55b8Fd0WaMrslYE4BrMuEfaGi0= > -SIZE (libtorrent-rasterbar-1.2.3.tar.gz) = 4145859 > +SHA256 (libtorrent-rasterbar-1.2.8.tar.gz) = > BgDWsf28kHZCJtr4u+MDFMmes73GlFd2i/u7/ekkFt4= > +SIZE (libtorrent-rasterbar-1.2.8.tar.gz) = 4121254 > Index: patches/patch-include_libtorrent_config_hpp > =================================================================== > RCS file: > /cvs/ports/net/libtorrent-rasterbar/patches/patch-include_libtorrent_config_hpp,v > retrieving revision 1.3 > diff -u -p -r1.3 patch-include_libtorrent_config_hpp > --- patches/patch-include_libtorrent_config_hpp 6 Feb 2020 20:00:16 > -0000 1.3 > +++ patches/patch-include_libtorrent_config_hpp 18 Aug 2020 01:34:52 > -0000 > @@ -2,7 +2,7 @@ $OpenBSD: patch-include_libtorrent_confi > Index: include/libtorrent/config.hpp > --- include/libtorrent/config.hpp.orig > +++ include/libtorrent/config.hpp > -@@ -411,6 +411,10 @@ POSSIBILITY OF SUCH DAMAGE. > +@@ -414,6 +414,10 @@ POSSIBILITY OF SUCH DAMAGE. > #define TORRENT_USE_UNC_PATHS 0 > #endif > > Index: pkg/PLIST > =================================================================== > RCS file: /cvs/ports/net/libtorrent-rasterbar/pkg/PLIST,v > retrieving revision 1.4 > diff -u -p -r1.4 PLIST > --- pkg/PLIST 6 Feb 2020 20:00:16 -0000 1.4 > +++ pkg/PLIST 18 Aug 2020 01:34:52 -0000 > @@ -36,6 +36,7 @@ include/libtorrent/aux_/has_block.hpp > include/libtorrent/aux_/instantiate_connection.hpp > include/libtorrent/aux_/io.hpp > include/libtorrent/aux_/ip_notifier.hpp > +include/libtorrent/aux_/keepalive.hpp > include/libtorrent/aux_/listen_socket_handle.hpp > include/libtorrent/aux_/lsd.hpp > include/libtorrent/aux_/merkle.hpp > @@ -254,3 +255,6 @@ lib/libtorrent-rasterbar.la > lib/pkgconfig/libtorrent-rasterbar.pc > @so lib/python${MODPY_VERSION}/site-packages/libtorrent.so > > lib/python${MODPY_VERSION}/site-packages/python_libtorrent-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info > +share/cmake/ > +share/cmake/Modules/ > +share/cmake/Modules/FindLibtorrentRasterbar.cmake >