[email protected] (Jérémie Courrèges-Anglas) writes:
> Daniel Jakots <[email protected]> writes:
>
>> Hi,
>>
>> I wanted to add a py3 flavor to net/py-ripe.atlas.tools which depends
>> on net/py-ripe.atlas.sagan wich itself depends on py-IP, hence this
>> diff.
>>
>> I only tried py-ripe.atlas.tools so please test it, thanks.
>
> As I said the tests fail with python3.4 on i386:
>
> https://pbot.rmdir.de/3I3_OxgyBOqIqgR3KtBWLw
>
> The reason is that IPy.IP() defines a __nonzero__() method, but python
> 3 tries to use __bool__() instead, falling back to __len__(). Adding
> a __bool__ method fixes the regress tests, but the len() method
> remains broken on 32 bits, using python2.7 or python3.4.
So here's a diff including the mentioned fix. It should be reported
upstream, mentioning the len() problem would be worth it too.
Benoit, ok?
Index: Makefile
===================================================================
RCS file: /cvs/ports/net/py-IP/Makefile,v
retrieving revision 1.30
diff -u -p -r1.30 Makefile
--- Makefile 11 Apr 2015 11:54:05 -0000 1.30
+++ Makefile 14 Dec 2015 19:18:31 -0000
@@ -6,6 +6,7 @@ MODPY_EGG_VERSION = 0.83
DISTNAME = IPy-${MODPY_EGG_VERSION}
PKGNAME = py-IP-${MODPY_EGG_VERSION}
CATEGORIES = net
+REVISION = 0
HOMEPAGE = https://github.com/haypo/python-ipy/wiki
@@ -17,6 +18,9 @@ PERMIT_PACKAGE_CDROM = Yes
MODPY_PI = Yes
MODULES = lang/python
+
+FLAVORS = python3
+FLAVOR ?=
MODPY_DISTUTILS_INSTALLARGS = -O2
Index: patches/patch-IPy_py
===================================================================
RCS file: patches/patch-IPy_py
diff -N patches/patch-IPy_py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-IPy_py 14 Dec 2015 19:18:31 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+--- IPy.py.orig Mon Dec 14 13:28:56 2015
++++ IPy.py Mon Dec 14 13:44:43 2015
+@@ -558,6 +558,13 @@ class IPint(object):
+ """
+ return True
+
++ def __bool__(self):
++ """All IPy objects should evaluate to true in boolean context.
++ Ordinarily they do, but if handling a default route expressed as
++ 0.0.0.0/0, the __len__() of the object becomes 0, which is used
++ as the boolean value of the object.
++ """
++ return True
+
+ def __len__(self):
+ """
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/net/py-IP/pkg/PLIST,v
retrieving revision 1.4
diff -u -p -r1.4 PLIST
--- pkg/PLIST 1 Oct 2009 20:13:11 -0000 1.4
+++ pkg/PLIST 14 Dec 2015 19:18:31 -0000
@@ -1,5 +1,6 @@
@comment $OpenBSD: PLIST,v 1.4 2009/10/01 20:13:11 benoit Exp $
lib/python${MODPY_VERSION}/site-packages/IPy-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info
lib/python${MODPY_VERSION}/site-packages/IPy.py
-lib/python${MODPY_VERSION}/site-packages/IPy.pyc
-lib/python${MODPY_VERSION}/site-packages/IPy.pyo
+${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}IPy.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}IPy.${MODPY_PYC_MAGIC_TAG}pyo
--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE