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

>
> 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

Reply via email to