devel/py-p4python: new port

Reviewed by:	brd
Approved by:	brd (ports)
Sponsored by:	Spectra Logic Corp
Differential Revision:	https://reviews.freebsd.org/D10825
This commit is contained in:
Alan Somers 2018-02-02 19:11:18 +00:00
parent f49163f747
commit 36ba102feb
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=460728
4 changed files with 104 additions and 0 deletions

View file

@ -0,0 +1,24 @@
# $FreeBSD$
PORTNAME= p4python
PORTVERSION= 2016.1.1447008
CATEGORIES= devel python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= asomers@FreeBSD.org
COMMENT= Python bindings for the Perforce API
LICENSE= BSD2CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE.txt
BUILD_DEPENDS+= ${LOCALBASE}/lib/perforce/libclient.a:devel/p4api
RUN_DEPENDS:= ${BUILD_DEPENDS}
USES= dos2unix python
USE_PYTHON= distutils autoplist
post-patch:
@${REINPLACE_CMD} -e 's:%%LOCALBASE%%:${LOCALBASE}:' ${WRKSRC}/setup.py
.include <bsd.port.mk>

View file

@ -0,0 +1,3 @@
TIMESTAMP = 1517419395
SHA256 (p4python-2016.1.1447008.tar.gz) = 1907f3c7ace54763651c1ccf20b92e6e9e72de58b240c591d6291ebb24ef0f1b
SIZE (p4python-2016.1.1447008.tar.gz) = 84231

View file

@ -0,0 +1,73 @@
--- setup.py.orig 2018-02-02 16:50:17 UTC
+++ setup.py
@@ -102,7 +102,12 @@ class P4APIFtp:
elif system == "FreeBSD":
platform_str += "freebsd"
- release = uname.release
+ if sys.version_info.major == 3:
+ release = uname.release
+ elif sys.version_info.major == 2:
+ release = uname[2]
+ else:
+ raise Exception("Unknown python version %s" % sys.version)
value = int(''.join(itertools.takewhile(lambda s: s.isdigit(), release)))
@@ -217,6 +222,8 @@ class VersionInfo:
verFile = os.path.join(p4ApiDir, "sample", "Version")
if not os.path.exists(verFile):
verFile = os.path.join(p4ApiDir, "Version")
+ if not os.path.exists(verFile):
+ verFile = os.path.join(p4ApiDir, "share", "examples", "p4api", "Version")
input = open(verFile)
for line in input:
for pattern, handler in self.patterns:
@@ -398,9 +405,16 @@ class PlatformInfo:
arch = self.architecture(unameOut[4])
elif unameOut[0] == 'FreeBSD':
unix = "FREEBSD"
- release = unameOut[2][0]
- if release == '5':
- release += unameOut[2][2]
+ if sys.version_info.major == 3:
+ release = unameOut.release.split(".")[0]
+ if release == '5':
+ release += unameOut.release.split(".")[1]
+ elif sys.version_info.major == 2:
+ release = unameOut[2].split(".")[0]
+ if release == '5':
+ release += unameOut[2].split(".")[1]
+ else:
+ raise Exception("Unknown python version %s" % sys.version)
arch = self.architecture(unameOut[4])
elif unameOut[0] == 'CYGWIN_NT-5.1':
@@ -475,8 +489,16 @@ def do_setup(p4_api_dir, ssl):
else:
print ("API Release %s.%s" % (ryear, rversion))
- inc_path = [p4_api_dir, os.path.join(p4_api_dir, "include", "p4")]
- lib_path = [p4_api_dir, os.path.join(p4_api_dir, "lib")]
+ inc_dir = os.path.join(p4_api_dir, "include", "p4")
+ if not os.path.exists(inc_dir):
+ inc_dir = os.path.join(p4_api_dir, "include", "perforce")
+
+ lib_dir = os.path.join(p4_api_dir, "lib", "perforce")
+ if not os.path.exists(lib_dir):
+ lib_dir = os.path.join(p4_api_dir, "lib")
+
+ inc_path = [p4_api_dir, inc_dir]
+ lib_path = [p4_api_dir, lib_dir]
if ssl:
lib_path.append( ssl )
@@ -608,7 +630,7 @@ if __name__ == "__main__":
if os.path.exists(distdir):
shutil.rmtree(distdir, False, force_remove_file)
- p4_api_dir = get_api_dir()
+ p4_api_dir = "%%LOCALBASE%%"
ssl = None
if '--ssl' in sys.argv:

View file

@ -0,0 +1,4 @@
The Python bindings for the Perforce Client API provide convenient classes
within Python for communicating with Perforce SCM servers.
WWW: https://www.perforce.com/perforce/doc.current/manuals/p4script/03_python.html