Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Dec 2019 19:01:45 +0100
From:      Andrea Venturoli <ml@netfence.it>
To:        python <python@FreeBSD.org>
Cc:        koobs@FreeBSD.org, ports@freebsd.org
Subject:   Re: Help with porting Python libraries
Message-ID:  <7e268a15-280b-ab38-e90e-bab23702684c@netfence.it>
In-Reply-To: <850bbe75-06a2-0af6-fec8-8f6d3bd7c260@FreeBSD.org>
References:  <e8f3c34d-8f2a-6044-2b48-1df5227bc732@netfence.it> <850bbe75-06a2-0af6-fec8-8f6d3bd7c260@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2019-12-30 03:26, Kubilay Kocak wrote:

Thanks to all that replied.
Especially the link to Python Ports Policy & Guidelines/Tips was very 
useful, as I hadn't found this myself :(

I tried to follow all your suggestions, but I'm having some problems 
with it...





Using CHEESESHOP

I removed USE_GITHUB, GH_ACCOUNT and GH_PROJECT, and added 
"MASTER_SITES=	CHEESESHOP".
However, running make makesum I get:
> # make makesum
> ===>  License BSD3CLAUSE accepted by the user
> ===>  License BSD3CLAUSE accepted by the user
> ===>   py36-imapclient-2.1.0 depends on file: /usr/local/sbin/pkg - found
> => imapclient-2.1.0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
> => Attempting to fetch https://files.pythonhosted.org/packages/source/i/imapclient/imapclient-2.1.0.tar.gz
> fetch: https://files.pythonhosted.org/packages/source/i/imapclient/imapclient-2.1.0.tar.gz: Not Found
> => Attempting to fetch https://pypi.org/packages/source/i/imapclient/imapclient-2.1.0.tar.gz
> fetch: https://pypi.org/packages/source/i/imapclient/imapclient-2.1.0.tar.gz: Not Found
> => Attempting to fetch http://distcache.FreeBSD.org/ports-distfiles/imapclient-2.1.0.tar.gz
> fetch: http://distcache.FreeBSD.org/ports-distfiles/imapclient-2.1.0.tar.gz: Not Found
> => Couldn't fetch it - please try to retrieve this
> => port manually into /usr/ports/distfiles/ and try again.
> *** Error code 1

I'm not just into it enought to understand what I have to do to solve.




Tests

In setup.py, I see:
> test_deps = ['mock>=1.3.0; python_version < "3.4"']

I think I have to put in Makefile:
> TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}mock>1.3.0:devel/py-mock@${PY_FLAVOR}

However I don't know how to handle that <"3.4"...



Then I wrote:
> do-test:
> 	@cd ${WRKSRC} && ${PYTHON_CMD} ${PYDISTUTILS_SETUP} test

Is this correct?



Finally, tests fail:
> # make test
> ===>  Patching for py36-imapclient-2.1.0
> ===>   py36-imapclient-2.1.0 depends on package: py36-setuptools>0 - found
> ===>   py36-imapclient-2.1.0 depends on file: /usr/local/bin/python3.6 - found
> ...
> test_invalid (tests.test_datetime_util.TestParsing) ... ok
> test_rfc822_style (tests.test_datetime_util.TestParsing) ... ok
> 
> ======================================================================
> FAIL: test_redacted_password (tests.test_imapclient.TestDebugLogging)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "/usr/ports/mail/py-IMAPClient/work-py36/imapclient-2.1.0/tests/test_imapclient.py", line 521, in test_redacted_password
>     extra={}
>   File "/usr/local/lib/python3.6/unittest/mock.py", line 824, in assert_called_once_with
>     raise AssertionError(msg)
> AssertionError: Expected '_log' to be called once. Called 0 times.
> 
> ----------------------------------------------------------------------
> Ran 254 tests in 0.115s
> 
> FAILED (failures=1)
> Test failed: <unittest.runner.TextTestResult run=254 errors=0 failures=1>
> error: Test failed: <unittest.runner.TextTestResult run=254 errors=0 failures=1>
> *** Error code 1
> 
> Stop.
> make: stopped in /usr/ports/mail/py-IMAPClient

Is this my fault, a problem upstream, a problem in some dependency?





Docs

I'm trying to learn by example, here, so I looked at a couple of ports 
and came up with the Makefile I'll post at the end.

Troubles:
_ this way, documentation files are not in the plist, and "port test" 
obviously complains.
_ Documentation files are not versioned: do I need to use "concurrent" then?
_ If I run "port test" without py36-sphinx installed, it doesn't work; 
shouldn't it install this as a dependency (and remove it afterwards)?



  bye & Thanks
	av.





> # $FreeBSD$
> 
> PORTNAME=	imapclient
> PORTVERSION=	2.1.0
> CATEGORIES=	mail python
> #MASTER_SITES=	CHEESESHOP
> PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
> 
> MAINTAINER=	ml@netfence.it
> COMMENT=	Easy-to-use, Pythonic and complete IMAP client library
> 
> LICENSE=	BSD3CLAUSE
> LICENSE_FILE=	${WRKSRC}/COPYING
> 
> RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}
> TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}mock>1.3.0:devel/py-mock@${PY_FLAVOR}
> 
> USES=		python:2.7-3.7
> USE_GITHUB=	yes
> USE_PYTHON=	autoplist distutils
> GH_ACCOUNT=	mjs
> GH_PROJECT=	imapclient
> NO_ARCH=	yes
> 
> OPTIONS_DEFINE=	DOCS
> 
> DOCS_BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}sphinx>=0:textproc/py-sphinx@${PY_FLAVOR}
> DOCS_VARS=		PYDISTUTILS_BUILD_TARGET+="build_sphinx -a -E"
> 
> post-install-DOCS-on:
> 	@${MKDIR} ${STAGEDIR}${DOCSDIR}
> 	(cd ${WRKSRC}/doc/html && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR} "! -name .buildinfo -and ! -name objects.inv")
> 
> do-test:
> 	@cd ${WRKSRC} && ${PYTHON_CMD} ${PYDISTUTILS_SETUP} test
> 
> .include <bsd.port.mk>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7e268a15-280b-ab38-e90e-bab23702684c>