Tested build on amd64.
OK mariani@
Cheers.
On Mon, Apr 5, 2021 at 3:28 AM Nam Nguyen <namn@berkeley.edu> wrote:
>
> Elias M. Mariani writes:
>
> > Hi.
> > Just giving a bump and attaching a new diff for 1.2.13 based on the
> > previous one from Nam.
>
> Here is a fresh diff with some tweaks. Need some additional feedback on
> carrying the old 1.2.11 ${FILESDIR}/setup.py.
>
> Please find a fresh diff that additionally:
> - remove autotools and use CONFIGURE_STYLE = gnu now that my pull
> request was accepted for 1.2.13. configure now correctly detects the
> default C++ standard. see:
> https://github.com/arvidn/libtorrent/pull/5026
> - removes patches/patch-configure_ac
>
> as before:
> - major bump because check_sym reports removed symbols. one such removed
> symbol is parameter change for add_read_buffer:
> see: https://github.com/arvidn/libtorrent/commit/6522fc46f599c49f96d184498e2ce2e4d95ed0ea
> check_sym: https://namtsui.com/public/check_sym_libtorrent.txt
> - carry ${FILESDIR}/setup.py from 1.2.11 because 1.2.12 relies on
> boost-build (see justification inline).
>
> >
> > Tested with qbittorrent (v4.3.1 and v4.3.4.1) and deluge.
> >
> > I need this updated to push a new version of qbittorrent (4.3.4.1).
> >
> > OK?
>
> > On Sat, Feb 6, 2021 at 3:54 AM Elias M. Mariani <marianielias@gmail.com> wrote:
> >>
> >> 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.
>
> Carrying an old setup.py is relatively safe. I have a hacky WIP that
> actually successfully builds libtorrent-rasterbar using the new setup.py
> and boost-build (b2). There are unresolved issues:
> - I had to create /usr/local/lib/libtorrent-rasterbar.so because the new
> setup.py cannot cope with openbsd's versioning (e.g.,
> libtorrent-rasterbar.so.4.0)
> - I needed to specify BOOST_ROOT as boost's ${WRKSRC}. This means that
> the boost source, including jamfiles, must be provided.
> - boost must provide b2
>
> It is possible to use b2, but, for now, just carry the old
> setup.py. This can be fleshed out if setup.py ever stops working.
>
> I tested with deluge and qbittorrent. The test suite in a similar state
> with 2 skipped.
>
> >>
> >> Cheers.
> >> Elias.
>
> <snip>
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/net/libtorrent-rasterbar/Makefile,v
> retrieving revision 1.15
> diff -u -p -u -p -r1.15 Makefile
> --- Makefile 23 Feb 2021 19:39:32 -0000 1.15
> +++ Makefile 5 Apr 2021 05:36:16 -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.13
> 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
>
> @@ -30,10 +30,7 @@ LIB_DEPENDS = converters/libiconv \
> # boost
> COMPILER = base-clang ports-gcc
>
> -CONFIGURE_STYLE = autoreconf
> -
> -AUTOCONF_VERSION = 2.69
> -AUTOMAKE_VERSION = 1.16
> +CONFIGURE_STYLE = gnu
>
> CONFIGURE_ARGS = --enable-python-binding \
> --enable-tests \
> @@ -53,6 +50,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 5 Apr 2021 05:36:16 -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.13.tar.gz) = l20ncf/NVk8IpjNR6cIuhCqqjNKfb3/iXRacA4qEToU=
> +SIZE (libtorrent-rasterbar-1.2.13.tar.gz) = 4160116
> 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 5 Apr 2021 05:36:16 -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.13',
> + author='Arvid Norberg',
> + author_email='arvid@libtorrent.org',
> + 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-configure_ac
> ===================================================================
> RCS file: patches/patch-configure_ac
> diff -N patches/patch-configure_ac
> --- patches/patch-configure_ac 4 Sep 2020 04:24:28 -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,17 +0,0 @@
> -$OpenBSD: patch-configure_ac,v 1.1 2020/09/04 04:24:28 rsadowski Exp $
> -
> -use c++14 instead of c++11. see:
> -https://github.com/arvidn/libtorrent/pull/5026
> -
> -Index: configure.ac
> ---- configure.ac.orig
> -+++ configure.ac
> -@@ -144,7 +144,7 @@ AS_ECHO "Checking for boost libraries:"
> -
> - AX_BOOST_BASE([1.58])
> -
> --AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])
> -+AX_CXX_COMPILE_STDCXX(14, [noext], [mandatory])
> -
> - AX_BOOST_SYSTEM()
> - AS_IF([test -z "$BOOST_SYSTEM_LIB"],
> 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 5 Apr 2021 05:36:16 -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
>
No comments:
Post a Comment