Here is a diff to update libtorrent-rasterbar to 1.2.11, released on
Nov. 15, 2020. changelog: https://github.com/arvidn/libtorrent/releases/tag/v1.2.11 This diff: - bumps library major due to symbol deprecation - changes MASTER_SITES to properly download the new release I tested with qbittorrent and deluge. `make test' skips the same tests as the previous release (test_lsd and test_primitives). OK? Details ======= I highlight 3 changelog items to show why a major bump is needed. 1. deprecate torrent_status::allocating. This state is no longer used allocating is now marked as deprecated to throw a warning, so this is sufficient to justify a major bump. include/libtorrent/torrent_status.hpp:125: allocating TORRENT_DEPRECATED_ENUM, include/libtorrent/aux_/deprecated.hpp:43: # define TORRENT_DEPRECATED_ENUM __attribute__ ((deprecated)) 2. torrent.hpp allow saving resume data before metadata has been downloaded (for magnet links) https://github.com/arvidn/libtorrent/commit/45c1219c8433a4af5193377b4b07d6258faa3ad7 write_resume_data inside include/libtorrent/torrent.hpp changed its function signature so this can also justify a major bump. from 1.2.10: void write_resume_data(add_torrent_params& atp) const; from 1.2.11: write_resume_data(resume_data_flags_t const flags, add_torrent_params& ret) const; 3. add session::paused flag, and the ability to construct a session in paused mode https://github.com/arvidn/libtorrent/commit/9bfbee334e421e48a32d0a9780136cca36890a75 New exposed flag justifies a minor bump. Index: Makefile =================================================================== RCS file: /cvs/ports/net/libtorrent-rasterbar/Makefile,v retrieving revision 1.13 diff -u -p -r1.13 Makefile --- Makefile 7 Sep 2020 04:24:17 -0000 1.13 +++ Makefile 28 Dec 2020 11:42:07 -0000 @@ -2,10 +2,10 @@ COMMENT = C++ library implementing a BitTorrent client -MODPY_EGG_VERSION = 1.2.10 +MODPY_EGG_VERSION = 1.2.11 DISTNAME = libtorrent-rasterbar-${MODPY_EGG_VERSION} -SHARED_LIBS += torrent-rasterbar 3.0 # 10.0.0 +SHARED_LIBS += torrent-rasterbar 4.0 # 10.0.0 CATEGORIES = net devel @@ -17,7 +17,7 @@ PERMIT_PACKAGE = Yes 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}/ +MASTER_SITES = https://github.com/arvidn/libtorrent/releases/download/v${MODPY_EGG_VERSION}/ MODULES = lang/python MODPY_VERSION = ${MODPY_DEFAULT_VERSION_3} Index: distinfo =================================================================== RCS file: /cvs/ports/net/libtorrent-rasterbar/distinfo,v retrieving revision 1.8 diff -u -p -r1.8 distinfo --- distinfo 7 Sep 2020 04:24:17 -0000 1.8 +++ distinfo 28 Dec 2020 11:42:07 -0000 @@ -1,2 +1,2 @@ -SHA256 (libtorrent-rasterbar-1.2.10.tar.gz) = 0N0wvcOSZYfEJB9AaNjjliimwfn2z1MZXw6byQAXvvs= -SIZE (libtorrent-rasterbar-1.2.10.tar.gz) = 4128498 +SHA256 (libtorrent-rasterbar-1.2.11.tar.gz) = y2qcw8mp5IUXQ5S6qCdEzvhBXSOjV/VyHcye52IsTvs= +SIZE (libtorrent-rasterbar-1.2.11.tar.gz) = 4138173 |
On Mon Dec 28, 2020 at 04:04:42AM -0800, Nam Nguyen wrote:
> Here is a diff to update libtorrent-rasterbar to 1.2.11, released on > Nov. 15, 2020. > > changelog: https://github.com/arvidn/libtorrent/releases/tag/v1.2.11 > > This diff: > - bumps library major due to symbol deprecation > - changes MASTER_SITES to properly download the new release > > I tested with qbittorrent and deluge. `make test' skips the same tests > as the previous release (test_lsd and test_primitives). > > OK? It has built cleanly and port-wise it looks fine. OK rsadowski@ > > Details > ======= > I highlight 3 changelog items to show why a major bump is needed. > > 1. deprecate torrent_status::allocating. This state is no longer used > > allocating is now marked as deprecated to throw a warning, so this is > sufficient to justify a major bump. > > include/libtorrent/torrent_status.hpp:125: > allocating TORRENT_DEPRECATED_ENUM, > > include/libtorrent/aux_/deprecated.hpp:43: > # define TORRENT_DEPRECATED_ENUM __attribute__ ((deprecated)) > > 2. torrent.hpp allow saving resume data before metadata has been > downloaded (for magnet links) > > https://github.com/arvidn/libtorrent/commit/45c1219c8433a4af5193377b4b07d6258faa3ad7 > > write_resume_data inside include/libtorrent/torrent.hpp changed its > function signature so this can also justify a major bump. > > from 1.2.10: void write_resume_data(add_torrent_params& atp) const; > from 1.2.11: write_resume_data(resume_data_flags_t const flags, add_torrent_params& ret) const; > > 3. add session::paused flag, and the ability to construct a session in > paused mode > > https://github.com/arvidn/libtorrent/commit/9bfbee334e421e48a32d0a9780136cca36890a75 > > New exposed flag justifies a minor bump. > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/net/libtorrent-rasterbar/Makefile,v > retrieving revision 1.13 > diff -u -p -r1.13 Makefile > --- Makefile 7 Sep 2020 04:24:17 -0000 1.13 > +++ Makefile 28 Dec 2020 11:42:07 -0000 > @@ -2,10 +2,10 @@ > > COMMENT = C++ library implementing a BitTorrent client > > -MODPY_EGG_VERSION = 1.2.10 > +MODPY_EGG_VERSION = 1.2.11 > DISTNAME = libtorrent-rasterbar-${MODPY_EGG_VERSION} > > -SHARED_LIBS += torrent-rasterbar 3.0 # 10.0.0 > +SHARED_LIBS += torrent-rasterbar 4.0 # 10.0.0 > > CATEGORIES = net devel > > @@ -17,7 +17,7 @@ PERMIT_PACKAGE = Yes > 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}/ > +MASTER_SITES = https://github.com/arvidn/libtorrent/releases/download/v${MODPY_EGG_VERSION}/ > > MODULES = lang/python > MODPY_VERSION = ${MODPY_DEFAULT_VERSION_3} > Index: distinfo > =================================================================== > RCS file: /cvs/ports/net/libtorrent-rasterbar/distinfo,v > retrieving revision 1.8 > diff -u -p -r1.8 distinfo > --- distinfo 7 Sep 2020 04:24:17 -0000 1.8 > +++ distinfo 28 Dec 2020 11:42:07 -0000 > @@ -1,2 +1,2 @@ > -SHA256 (libtorrent-rasterbar-1.2.10.tar.gz) = 0N0wvcOSZYfEJB9AaNjjliimwfn2z1MZXw6byQAXvvs= > -SIZE (libtorrent-rasterbar-1.2.10.tar.gz) = 4128498 > +SHA256 (libtorrent-rasterbar-1.2.11.tar.gz) = y2qcw8mp5IUXQ5S6qCdEzvhBXSOjV/VyHcye52IsTvs= > +SIZE (libtorrent-rasterbar-1.2.11.tar.gz) = 4138173 > |
Rafael Sadowski writes:
> On Mon Dec 28, 2020 at 04:04:42AM -0800, Nam Nguyen wrote: >> Here is a diff to update libtorrent-rasterbar to 1.2.11, released on >> Nov. 15, 2020. Here is a diff for 1.2.12 which was released on Jan. 5, 2021. I have not yet committed 1.2.11 which was OK rsadowski@, so I'm proposing this newer update instead. changelog: https://github.com/arvidn/libtorrent/releases/tag/v1.2.12 This diff additionally: - uses a local copy of 1.2.11's ${WRKSRC}/bindings/setup.py because 1.2.12 relies on boost-build, which has been removed from devel/boost For now, I propose carrying a copy of 1.2.11's ${WRKSRC}/bindings/python/setup.py until boost-build is built again. ${FILESDIR}/setup.py needs to be updated manually with each update (e.g., 1.2.12). Questions: 1. Is carrying an old setup.py worth the maintenance burden? 2. Will boost-build return in the future once python 3 support becomes better? It may not be worth it just for this port. Testing ------- I tested consumers in net/deluge and net/qbittorrent. A new unit test is skipped for test_pex, which used to pass. It has been resolved upstream: https://github.com/arvidn/libtorrent/issues/5863 >> >> changelog: https://github.com/arvidn/libtorrent/releases/tag/v1.2.11 >> >> This diff: >> - bumps library major due to symbol deprecation >> - changes MASTER_SITES to properly download the new release >> >> I tested with qbittorrent and deluge. `make test' skips the same tests >> as the previous release (test_lsd and test_primitives). >> >> OK? > > It has built cleanly and port-wise it looks fine. OK rsadowski@ > Brad Smith writes: > Well the only question I have is if we remove this does anything in > the ports tree > depend it for building anything? If not, then I'd say go with removing > it all together > for the time being until it is updated to be compatible with Python > 3. If the answer > is yes then how many ports? I see from revision 1.103 of devel/boost/Makefile, "boost-build also leaves as collateral damage, its python files aren't ready for python3 and it's not clear how useful they are." FreeBSD also reports rare usage of boost-build: "Not one other port out of 30,000 uses boost-build, so it is likely untested." https://github.com/arvidn/libtorrent/issues/5797 Index: Makefile =================================================================== RCS file: /cvs/ports/net/libtorrent-rasterbar/Makefile,v retrieving revision 1.14 diff -u -p -u -p -r1.14 Makefile --- Makefile 4 Jan 2021 14:06:35 -0000 1.14 +++ Makefile 19 Jan 2021 03:36:35 -0000 @@ -2,11 +2,11 @@ COMMENT = C++ library implementing a BitTorrent client -MODPY_EGG_VERSION = 1.2.10 +# remember to update version number in ${FILESDIR}/setup.py +MODPY_EGG_VERSION = 1.2.12 DISTNAME = libtorrent-rasterbar-${MODPY_EGG_VERSION} -REVISION = 0 -SHARED_LIBS += torrent-rasterbar 3.0 # 10.0.0 +SHARED_LIBS += torrent-rasterbar 4.0 # 10.0.0 CATEGORIES = net devel @@ -18,7 +18,7 @@ PERMIT_PACKAGE = Yes 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}/ +MASTER_SITES = https://github.com/arvidn/libtorrent/releases/download/v${MODPY_EGG_VERSION}/ MODULES = lang/python MODPY_VERSION = ${MODPY_DEFAULT_VERSION_3} @@ -54,6 +54,8 @@ CONFIGURE_ARGS += --enable-debug pre-configure: sed -i 's,-Os,,g' ${WRKSRC}/configure +# use setup.py from 1.2.11 because >=1.2.12 introduced dependency on boost-build + @cp ${FILESDIR}/setup.py ${WRKSRC}/bindings/python pre-test: ln -sf ${MODPY_BIN} ${WRKDIR}/bin/python Index: distinfo =================================================================== RCS file: /cvs/ports/net/libtorrent-rasterbar/distinfo,v retrieving revision 1.8 diff -u -p -u -p -r1.8 distinfo --- distinfo 7 Sep 2020 04:24:17 -0000 1.8 +++ distinfo 19 Jan 2021 03:36:35 -0000 @@ -1,2 +1,2 @@ -SHA256 (libtorrent-rasterbar-1.2.10.tar.gz) = 0N0wvcOSZYfEJB9AaNjjliimwfn2z1MZXw6byQAXvvs= -SIZE (libtorrent-rasterbar-1.2.10.tar.gz) = 4128498 +SHA256 (libtorrent-rasterbar-1.2.12.tar.gz) = w3RKyfpB9ubr95U4oupnjfdqLLuvOsauLAVFUxTlzOg= +SIZE (libtorrent-rasterbar-1.2.12.tar.gz) = 4144099 Index: files/setup.py =================================================================== RCS file: files/setup.py diff -N files/setup.py --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/setup.py 19 Jan 2021 03:36:35 -0000 @@ -0,0 +1,195 @@ +#!/usr/bin/env python3 + + +from distutils.core import setup, Extension +from distutils.sysconfig import get_config_vars +import os +import platform +import sys +import shutil +import multiprocessing + + +class flags_parser: + def __init__(self): + self.include_dirs = [] + self.library_dirs = [] + self.libraries = [] + + def parse(self, args): + """Parse out the -I -L -l directives + + Returns: + list: All other arguments + """ + ret = [] + for token in args.split(): + prefix = token[:2] + if prefix == '-I': + self.include_dirs.append(token[2:]) + elif prefix == '-L': + self.library_dirs.append(token[2:]) + elif prefix == '-l': + self.libraries.append(token[2:]) + else: + ret.append(token) + return ret + + +def arch(): + if platform.system() == 'Darwin': + __, __, machine = platform.mac_ver() + if machine.startswith('ppc'): + return ['-arch', machine] + return [] + + +def target_specific(): + if platform.system() == 'Darwin': + # On mavericks, clang will fail when unknown arguments are passed in. + # python distutils will pass in arguments it doesn't know about. + return ['-Wno-error=unused-command-line-argument-hard-error-in-future'] + return [] + + +try: + with open('compile_flags') as _file: + extra_cmd = _file.read() +except Exception: + extra_cmd = None + +try: + with open('link_flags') as _file: + ldflags = _file.read() +except Exception: + ldflags = None + +# this is to pull out compiler arguments from the CXX flags set up by the +# configure script. Specifically, the -std=c++11 flag is added to CXX and here +# we pull out everything starting from the first flag (i.e. something starting +# with a '-'). The actual command to call the compiler may be more than one +# word, for instance "ccache g++". +try: + with open('compile_cmd') as _file: + cmd = _file.read().split(' ') + while len(cmd) > 0 and not cmd[0].startswith('-'): + cmd = cmd[1:] + extra_cmd += ' '.join(cmd) +except Exception: + pass + +ext = None +packages = None + +if '--bjam' in sys.argv: + del sys.argv[sys.argv.index('--bjam')] + + if '--help' not in sys.argv \ + and '--help-commands' not in sys.argv: + + toolset = '' + file_ext = '.so' + + if platform.system() == 'Windows': + file_ext = '.pyd' + # See https://wiki.python.org/moin/WindowsCompilers for a table of msvc versions + # used for each python version + # Specify the full version number for 9.0 and 10.0 because apparently + # older versions of boost don't support only specifying the major number and + # there was only one version of msvc with those majors. + # Only specify the major for msvc-14 so that 14.1, 14.11, etc can be used. + # Hopefully people building with msvc-14 are using a new enough version of boost + # for this to work. + if sys.version_info[0:2] in ((2, 6), (2, 7), (3, 0), (3, 1), (3, 2)): + toolset = ' toolset=msvc-9.0' + elif sys.version_info[0:2] in ((3, 3), (3, 4)): + toolset = ' toolset=msvc-10.0' + elif sys.version_info[0:2] in ((3, 5), (3, 6)): + toolset = ' toolset=msvc-14' + else: + # unknown python version, lets hope the user has the right version of msvc configured + toolset = ' toolset=msvc' + + parallel_builds = ' -j%d' % multiprocessing.cpu_count() + if sys.maxsize > 2**32: + address_model = ' address-model=64' + else: + address_model = ' address-model=32' + + # add extra quoting around the path to prevent bjam from parsing it as a list + # if the path has spaces + os.environ['LIBTORRENT_PYTHON_INTERPRETER'] = '"' + sys.executable + '"' + + # build libtorrent using bjam and build the installer with distutils + cmdline = ('b2 libtorrent-link=static boost-link=static release ' + 'optimization=space stage_module --abbreviate-paths' + + address_model + toolset + parallel_builds) + print(cmdline) + if os.system(cmdline) != 0: + print('build failed') + sys.exit(1) + + try: + os.mkdir('build') + except Exception: + pass + try: + shutil.rmtree('build/lib') + except Exception: + pass + try: + os.mkdir('build/lib') + except Exception: + pass + try: + os.mkdir('libtorrent') + except Exception: + pass + shutil.copyfile('libtorrent' + file_ext, + 'build/lib/libtorrent' + file_ext) + + packages = ['libtorrent'] + +else: + # Remove '-Wstrict-prototypes' compiler option, which isn't valid for C++. + cfg_vars = get_config_vars() + for key, value in list(cfg_vars.items()): + if isinstance(value, str): + cfg_vars[key] = value.replace('-Wstrict-prototypes', '') + + src_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "src")) + source_list = [os.path.join(src_dir, s) for s in os.listdir(src_dir) if s.endswith(".cpp")] + + flags = flags_parser() + ext_extra = {} + + if ldflags: + # ldflags parsed first to ensure the correct library search path order + ext_extra["extra_link_args"] = flags.parse(ldflags) + arch() + + if extra_cmd: + ext_extra["extra_compile_args"] = flags.parse(extra_cmd) + arch() + target_specific() + + ext = [Extension( + 'libtorrent', + sources=sorted(source_list), + language='c++', + include_dirs=flags.include_dirs, + library_dirs=flags.library_dirs, + libraries=['torrent-rasterbar'] + flags.libraries, + **ext_extra) + ] + +setup( + name='python-libtorrent', + version='1.2.12', + author='Arvid Norberg', + author_email='[hidden email]', + description='Python bindings for libtorrent-rasterbar', + long_description='Python bindings for libtorrent-rasterbar', + url='http://libtorrent.org', + platforms=[platform.system() + '-' + platform.machine()], + license='BSD', + packages=packages, + ext_modules=ext +) Index: patches/patch-include_libtorrent_config_hpp =================================================================== RCS file: /cvs/ports/net/libtorrent-rasterbar/patches/patch-include_libtorrent_config_hpp,v retrieving revision 1.4 diff -u -p -u -p -r1.4 patch-include_libtorrent_config_hpp --- patches/patch-include_libtorrent_config_hpp 4 Sep 2020 04:24:28 -0000 1.4 +++ patches/patch-include_libtorrent_config_hpp 19 Jan 2021 03:36:35 -0000 @@ -2,7 +2,7 @@ $OpenBSD: patch-include_libtorrent_confi Index: include/libtorrent/config.hpp --- include/libtorrent/config.hpp.orig +++ include/libtorrent/config.hpp -@@ -414,6 +414,10 @@ POSSIBILITY OF SUCH DAMAGE. +@@ -429,6 +429,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.6 diff -u -p -u -p -r1.6 PLIST --- pkg/PLIST 4 Jan 2021 14:06:35 -0000 1.6 +++ pkg/PLIST 19 Jan 2021 03:36:35 -0000 @@ -43,6 +43,7 @@ include/libtorrent/aux_/noexcept_movable include/libtorrent/aux_/numeric_cast.hpp include/libtorrent/aux_/openssl.hpp include/libtorrent/aux_/path.hpp +include/libtorrent/aux_/pool.hpp include/libtorrent/aux_/portmap.hpp include/libtorrent/aux_/proxy_settings.hpp include/libtorrent/aux_/range.hpp |
Tested the diff for 1.2.12 from Nam.
Working OK with qbittorrent 4.3.3. portcheck complains about a "1 line(s) longer than 80 chars in Makefile" but is just the MASTER_SITES one. make port-lib-depends-check is OK OK mariani@ No opinions about setup.py. I don't have the knowledge to take a stand. Cheers. Elias. On Tue, Jan 19, 2021 at 1:01 AM Nam Nguyen <[hidden email]> wrote: > > Rafael Sadowski writes: > > > On Mon Dec 28, 2020 at 04:04:42AM -0800, Nam Nguyen wrote: > >> Here is a diff to update libtorrent-rasterbar to 1.2.11, released on > >> Nov. 15, 2020. > > Here is a diff for 1.2.12 which was released on Jan. 5, 2021. I have not > yet committed 1.2.11 which was OK rsadowski@, so I'm proposing this > newer update instead. > > changelog: https://github.com/arvidn/libtorrent/releases/tag/v1.2.12 > > This diff additionally: > - uses a local copy of 1.2.11's ${WRKSRC}/bindings/setup.py because > 1.2.12 relies on boost-build, which has been removed from devel/boost > > For now, I propose carrying a copy of 1.2.11's > ${WRKSRC}/bindings/python/setup.py until boost-build is built > again. ${FILESDIR}/setup.py needs to be updated manually with each > update (e.g., 1.2.12). > > Questions: > 1. Is carrying an old setup.py worth the maintenance burden? > 2. Will boost-build return in the future once python 3 support becomes > better? It may not be worth it just for this port. > > Testing > ------- > I tested consumers in net/deluge and net/qbittorrent. A new unit test is > skipped for test_pex, which used to pass. It has been resolved upstream: > https://github.com/arvidn/libtorrent/issues/5863 > > >> > >> changelog: https://github.com/arvidn/libtorrent/releases/tag/v1.2.11 > >> > >> This diff: > >> - bumps library major due to symbol deprecation > >> - changes MASTER_SITES to properly download the new release > >> > >> I tested with qbittorrent and deluge. `make test' skips the same tests > >> as the previous release (test_lsd and test_primitives). > >> > >> OK? > > > > It has built cleanly and port-wise it looks fine. OK rsadowski@ > > > [snip] > > Brad Smith writes: > > > Well the only question I have is if we remove this does anything in > > the ports tree > > depend it for building anything? If not, then I'd say go with removing > > it all together > > for the time being until it is updated to be compatible with Python > > 3. If the answer > > is yes then how many ports? > > I see from revision 1.103 of devel/boost/Makefile, "boost-build also > leaves as collateral damage, its python files aren't ready for python3 > and it's not clear how useful they are." > > FreeBSD also reports rare usage of boost-build: "Not one other port out > of 30,000 uses boost-build, so it is likely untested." > > https://github.com/arvidn/libtorrent/issues/5797 > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/net/libtorrent-rasterbar/Makefile,v > retrieving revision 1.14 > diff -u -p -u -p -r1.14 Makefile > --- Makefile 4 Jan 2021 14:06:35 -0000 1.14 > +++ Makefile 19 Jan 2021 03:36:35 -0000 > @@ -2,11 +2,11 @@ > > COMMENT = C++ library implementing a BitTorrent client > > -MODPY_EGG_VERSION = 1.2.10 > +# remember to update version number in ${FILESDIR}/setup.py > +MODPY_EGG_VERSION = 1.2.12 > DISTNAME = libtorrent-rasterbar-${MODPY_EGG_VERSION} > -REVISION = 0 > > -SHARED_LIBS += torrent-rasterbar 3.0 # 10.0.0 > +SHARED_LIBS += torrent-rasterbar 4.0 # 10.0.0 > > CATEGORIES = net devel > > @@ -18,7 +18,7 @@ PERMIT_PACKAGE = Yes > 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}/ > +MASTER_SITES = https://github.com/arvidn/libtorrent/releases/download/v${MODPY_EGG_VERSION}/ > > MODULES = lang/python > MODPY_VERSION = ${MODPY_DEFAULT_VERSION_3} > @@ -54,6 +54,8 @@ CONFIGURE_ARGS += --enable-debug > > pre-configure: > sed -i 's,-Os,,g' ${WRKSRC}/configure > +# use setup.py from 1.2.11 because >=1.2.12 introduced dependency on boost-build > + @cp ${FILESDIR}/setup.py ${WRKSRC}/bindings/python > > pre-test: > ln -sf ${MODPY_BIN} ${WRKDIR}/bin/python > Index: distinfo > =================================================================== > RCS file: /cvs/ports/net/libtorrent-rasterbar/distinfo,v > retrieving revision 1.8 > diff -u -p -u -p -r1.8 distinfo > --- distinfo 7 Sep 2020 04:24:17 -0000 1.8 > +++ distinfo 19 Jan 2021 03:36:35 -0000 > @@ -1,2 +1,2 @@ > -SHA256 (libtorrent-rasterbar-1.2.10.tar.gz) = 0N0wvcOSZYfEJB9AaNjjliimwfn2z1MZXw6byQAXvvs= > -SIZE (libtorrent-rasterbar-1.2.10.tar.gz) = 4128498 > +SHA256 (libtorrent-rasterbar-1.2.12.tar.gz) = w3RKyfpB9ubr95U4oupnjfdqLLuvOsauLAVFUxTlzOg= > +SIZE (libtorrent-rasterbar-1.2.12.tar.gz) = 4144099 > Index: files/setup.py > =================================================================== > RCS file: files/setup.py > diff -N files/setup.py > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ files/setup.py 19 Jan 2021 03:36:35 -0000 > @@ -0,0 +1,195 @@ > +#!/usr/bin/env python3 > + > + > +from distutils.core import setup, Extension > +from distutils.sysconfig import get_config_vars > +import os > +import platform > +import sys > +import shutil > +import multiprocessing > + > + > +class flags_parser: > + def __init__(self): > + self.include_dirs = [] > + self.library_dirs = [] > + self.libraries = [] > + > + def parse(self, args): > + """Parse out the -I -L -l directives > + > + Returns: > + list: All other arguments > + """ > + ret = [] > + for token in args.split(): > + prefix = token[:2] > + if prefix == '-I': > + self.include_dirs.append(token[2:]) > + elif prefix == '-L': > + self.library_dirs.append(token[2:]) > + elif prefix == '-l': > + self.libraries.append(token[2:]) > + else: > + ret.append(token) > + return ret > + > + > +def arch(): > + if platform.system() == 'Darwin': > + __, __, machine = platform.mac_ver() > + if machine.startswith('ppc'): > + return ['-arch', machine] > + return [] > + > + > +def target_specific(): > + if platform.system() == 'Darwin': > + # On mavericks, clang will fail when unknown arguments are passed in. > + # python distutils will pass in arguments it doesn't know about. > + return ['-Wno-error=unused-command-line-argument-hard-error-in-future'] > + return [] > + > + > +try: > + with open('compile_flags') as _file: > + extra_cmd = _file.read() > +except Exception: > + extra_cmd = None > + > +try: > + with open('link_flags') as _file: > + ldflags = _file.read() > +except Exception: > + ldflags = None > + > +# this is to pull out compiler arguments from the CXX flags set up by the > +# configure script. Specifically, the -std=c++11 flag is added to CXX and here > +# we pull out everything starting from the first flag (i.e. something starting > +# with a '-'). The actual command to call the compiler may be more than one > +# word, for instance "ccache g++". > +try: > + with open('compile_cmd') as _file: > + cmd = _file.read().split(' ') > + while len(cmd) > 0 and not cmd[0].startswith('-'): > + cmd = cmd[1:] > + extra_cmd += ' '.join(cmd) > +except Exception: > + pass > + > +ext = None > +packages = None > + > +if '--bjam' in sys.argv: > + del sys.argv[sys.argv.index('--bjam')] > + > + if '--help' not in sys.argv \ > + and '--help-commands' not in sys.argv: > + > + toolset = '' > + file_ext = '.so' > + > + if platform.system() == 'Windows': > + file_ext = '.pyd' > + # See https://wiki.python.org/moin/WindowsCompilers for a table of msvc versions > + # used for each python version > + # Specify the full version number for 9.0 and 10.0 because apparently > + # older versions of boost don't support only specifying the major number and > + # there was only one version of msvc with those majors. > + # Only specify the major for msvc-14 so that 14.1, 14.11, etc can be used. > + # Hopefully people building with msvc-14 are using a new enough version of boost > + # for this to work. > + if sys.version_info[0:2] in ((2, 6), (2, 7), (3, 0), (3, 1), (3, 2)): > + toolset = ' toolset=msvc-9.0' > + elif sys.version_info[0:2] in ((3, 3), (3, 4)): > + toolset = ' toolset=msvc-10.0' > + elif sys.version_info[0:2] in ((3, 5), (3, 6)): > + toolset = ' toolset=msvc-14' > + else: > + # unknown python version, lets hope the user has the right version of msvc configured > + toolset = ' toolset=msvc' > + > + parallel_builds = ' -j%d' % multiprocessing.cpu_count() > + if sys.maxsize > 2**32: > + address_model = ' address-model=64' > + else: > + address_model = ' address-model=32' > + > + # add extra quoting around the path to prevent bjam from parsing it as a list > + # if the path has spaces > + os.environ['LIBTORRENT_PYTHON_INTERPRETER'] = '"' + sys.executable + '"' > + > + # build libtorrent using bjam and build the installer with distutils > + cmdline = ('b2 libtorrent-link=static boost-link=static release ' > + 'optimization=space stage_module --abbreviate-paths' + > + address_model + toolset + parallel_builds) > + print(cmdline) > + if os.system(cmdline) != 0: > + print('build failed') > + sys.exit(1) > + > + try: > + os.mkdir('build') > + except Exception: > + pass > + try: > + shutil.rmtree('build/lib') > + except Exception: > + pass > + try: > + os.mkdir('build/lib') > + except Exception: > + pass > + try: > + os.mkdir('libtorrent') > + except Exception: > + pass > + shutil.copyfile('libtorrent' + file_ext, > + 'build/lib/libtorrent' + file_ext) > + > + packages = ['libtorrent'] > + > +else: > + # Remove '-Wstrict-prototypes' compiler option, which isn't valid for C++. > + cfg_vars = get_config_vars() > + for key, value in list(cfg_vars.items()): > + if isinstance(value, str): > + cfg_vars[key] = value.replace('-Wstrict-prototypes', '') > + > + src_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "src")) > + source_list = [os.path.join(src_dir, s) for s in os.listdir(src_dir) if s.endswith(".cpp")] > + > + flags = flags_parser() > + ext_extra = {} > + > + if ldflags: > + # ldflags parsed first to ensure the correct library search path order > + ext_extra["extra_link_args"] = flags.parse(ldflags) + arch() > + > + if extra_cmd: > + ext_extra["extra_compile_args"] = flags.parse(extra_cmd) + arch() + target_specific() > + > + ext = [Extension( > + 'libtorrent', > + sources=sorted(source_list), > + language='c++', > + include_dirs=flags.include_dirs, > + library_dirs=flags.library_dirs, > + libraries=['torrent-rasterbar'] + flags.libraries, > + **ext_extra) > + ] > + > +setup( > + name='python-libtorrent', > + version='1.2.12', > + author='Arvid Norberg', > + author_email='[hidden email]', > + description='Python bindings for libtorrent-rasterbar', > + long_description='Python bindings for libtorrent-rasterbar', > + url='http://libtorrent.org', > + platforms=[platform.system() + '-' + platform.machine()], > + license='BSD', > + packages=packages, > + ext_modules=ext > +) > Index: patches/patch-include_libtorrent_config_hpp > =================================================================== > RCS file: /cvs/ports/net/libtorrent-rasterbar/patches/patch-include_libtorrent_config_hpp,v > retrieving revision 1.4 > diff -u -p -u -p -r1.4 patch-include_libtorrent_config_hpp > --- patches/patch-include_libtorrent_config_hpp 4 Sep 2020 04:24:28 -0000 1.4 > +++ patches/patch-include_libtorrent_config_hpp 19 Jan 2021 03:36:35 -0000 > @@ -2,7 +2,7 @@ $OpenBSD: patch-include_libtorrent_confi > Index: include/libtorrent/config.hpp > --- include/libtorrent/config.hpp.orig > +++ include/libtorrent/config.hpp > -@@ -414,6 +414,10 @@ POSSIBILITY OF SUCH DAMAGE. > +@@ -429,6 +429,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.6 > diff -u -p -u -p -r1.6 PLIST > --- pkg/PLIST 4 Jan 2021 14:06:35 -0000 1.6 > +++ pkg/PLIST 19 Jan 2021 03:36:35 -0000 > @@ -43,6 +43,7 @@ include/libtorrent/aux_/noexcept_movable > include/libtorrent/aux_/numeric_cast.hpp > include/libtorrent/aux_/openssl.hpp > include/libtorrent/aux_/path.hpp > +include/libtorrent/aux_/pool.hpp > include/libtorrent/aux_/portmap.hpp > include/libtorrent/aux_/proxy_settings.hpp > include/libtorrent/aux_/range.hpp > |
Free forum by Nabble | Edit this page |