Saturday, May 30, 2020

python3 flavour for devel/subversion

Wih the diff below devel/subversion can be built with FLAVOR=python3.

My goal is to create a py3-subversion subpackage which contains the
Python3 bindings for Subversion, but I'm probably doing something wrong
or I am making wrong assumptions.

I end up with a flavoured -main package that's not actually needed:

/usr/ports/packages/amd64/all/subversion-1.14.0-python3.tgz
/usr/ports/packages/amd64/all/subversion-1.14.0.tgz

All the other subpackages which are built by this port overlap between
the python3 flavour and the default build: p5-SVN, ruby27-subversion,
gnome-keyring-subversion, and ap2-subversion

Using the python3 flavour only makes sense with MULTI_PACKAGES=-python.
Conceptually I need a subpackage-specific flavour and it looks like
this concept doesn't exist in the ports framework as such.

This command attempts to install subversion-1.14.0-python3 instead
of py3-subversion-1.14.0:

$ env FLAVOR=python3 MULTI_PACKAGES=-python SUDO=doas make install
===> Installing subversion-1.14.0-python3 from /usr/ports/packages/amd64/all/
Can't install subversion-1.14.0-python3 because of conflicts (.libs-subversion-1
.13.0p1,subversion-1.14.0,.libs-subversion-1.11.1)
--- subversion-1.14.0-python3 -------------------
Can't install subversion-1.14.0-python3: conflicts
Couldn't install subversion-1.14.0-python3

After 'pkg_delete subversion' I can install the python3 bindings with:
$ env FLAVOR=python3 SUDO=doas make install-all
And the python3 bindings themselves are working:
$ python3
Python 3.7.7 (default, May 28 2020, 14:54:22)
[Clang 8.0.1 (tags/RELEASE_801/final)] on openbsd6
Type "help", "copyright", "credits" or "license" for more information.
>>> import svn.fs
>>>

Ideally, only py-subversion and py3-subversion would conflict.

Is there a better way to do this? Can someone show me the way?


diff 354ab5270a9c1ea5e8e801a5aee04aca63f0be5e /usr/ports
blob - 8994a43fea1367f40b5eb8b0c9d3a91cb48c72f3
file + devel/subversion/Makefile
--- devel/subversion/Makefile
+++ devel/subversion/Makefile
@@ -12,7 +12,7 @@ DISTNAME= subversion-${VERSION:S/rc/-rc/}
PKGNAME-main= subversion-${VERSION}
FULLPKGNAME-perl= p5-SVN-${VERSION}
FULLPKGPATH-perl= devel/subversion,-perl
-FULLPKGNAME-python= py-subversion-${VERSION}
+FULLPKGNAME-python= ${MODPY_PY_PREFIX}subversion-${VERSION}
FULLPKGPATH-python= devel/subversion,-python
FULLPKGNAME-ruby= ruby${MODRUBY_BINREV}-subversion-${VERSION}
FULLPKGPATH-ruby= devel/subversion,-ruby
@@ -25,10 +25,6 @@ MODRUBY_REV ?= 2.7
# Work around for SHARED_LIBS not picking up MODRUBY_BINREV from ruby module
MODRUBY_BINREV= ${MODRUBY_REV:S/.//}

-# Subversion supports either python2 or python3 bindings. Consumers in the
-# ports tree are not yet ready for python3. So keep using python 2.7 for now.
-MODPY_VERSION ?= 2.7
-
SO_VERSION= 6.0
SVN_LIBS= svn_client-1 svn_delta-1 svn_diff-1 svn_fs-1 \
svn_fs_base-1 svn_fs_fs-1 svn_fs_util-1 svn_fs_x-1 \
@@ -57,7 +53,7 @@ MASTER_SITES= ${MASTER_SITE_APACHE:=subversion/}
EXTRACT_SUFX= .tar.bz2

PSEUDO_FLAVORS= no_bindings no_ap2 no_perl no_python no_ruby no_gnome-keyring
-FLAVORS= maintainer_mode
+FLAVORS= maintainer_mode python3
FLAVOR?=
.if ${FLAVOR:Mno_bindings}
FLAVOR += no_perl no_python no_ruby
blob - 10f71448f892f604a77d21e8a59dc1e1d0840cc2
file + devel/subversion/pkg/PLIST-python
--- devel/subversion/pkg/PLIST-python
+++ devel/subversion/pkg/PLIST-python
@@ -1,11 +1,20 @@
@comment $OpenBSD: PLIST-python,v 1.11 2020/05/15 14:47:40 ajacoutot Exp $
@pkgpath devel/subversion,-python,gnome_keyring
-@static-lib lib/libsvn_swig_${MODPY_PY_PREFIX}1.a
-lib/libsvn_swig_${MODPY_PY_PREFIX}1.la
-@lib lib/libsvn_swig_${MODPY_PY_PREFIX}1.so.${LIBsvn_swig_${MODPY_PY_PREFIX}1_VERSION}
+@static-lib lib/libsvn_swig_py-1.a
+lib/libsvn_swig_py-1.la
+@lib lib/libsvn_swig_py-1.so.${LIBsvn_swig_py-1_VERSION}
lib/python${MODPY_VERSION}/site-packages/libsvn/
lib/python${MODPY_VERSION}/site-packages/libsvn/__init__.py
-lib/python${MODPY_VERSION}/site-packages/libsvn/__init__.pyc
+${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/libsvn/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/libsvn/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/libsvn/${MODPY_PYCACHE}client.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/libsvn/${MODPY_PYCACHE}core.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/libsvn/${MODPY_PYCACHE}delta.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/libsvn/${MODPY_PYCACHE}diff.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/libsvn/${MODPY_PYCACHE}fs.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/libsvn/${MODPY_PYCACHE}ra.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/libsvn/${MODPY_PYCACHE}repos.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/libsvn/${MODPY_PYCACHE}wc.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/libsvn/_client.a
lib/python${MODPY_VERSION}/site-packages/libsvn/_client.la
@so lib/python${MODPY_VERSION}/site-packages/libsvn/_client.so
@@ -31,37 +40,30 @@ lib/python${MODPY_VERSION}/site-packages/libsvn/_wc.a
lib/python${MODPY_VERSION}/site-packages/libsvn/_wc.la
@so lib/python${MODPY_VERSION}/site-packages/libsvn/_wc.so
lib/python${MODPY_VERSION}/site-packages/libsvn/client.py
-lib/python${MODPY_VERSION}/site-packages/libsvn/client.pyc
lib/python${MODPY_VERSION}/site-packages/libsvn/core.py
-lib/python${MODPY_VERSION}/site-packages/libsvn/core.pyc
lib/python${MODPY_VERSION}/site-packages/libsvn/delta.py
-lib/python${MODPY_VERSION}/site-packages/libsvn/delta.pyc
lib/python${MODPY_VERSION}/site-packages/libsvn/diff.py
-lib/python${MODPY_VERSION}/site-packages/libsvn/diff.pyc
lib/python${MODPY_VERSION}/site-packages/libsvn/fs.py
-lib/python${MODPY_VERSION}/site-packages/libsvn/fs.pyc
lib/python${MODPY_VERSION}/site-packages/libsvn/ra.py
-lib/python${MODPY_VERSION}/site-packages/libsvn/ra.pyc
lib/python${MODPY_VERSION}/site-packages/libsvn/repos.py
-lib/python${MODPY_VERSION}/site-packages/libsvn/repos.pyc
lib/python${MODPY_VERSION}/site-packages/libsvn/wc.py
-lib/python${MODPY_VERSION}/site-packages/libsvn/wc.pyc
lib/python${MODPY_VERSION}/site-packages/svn/
lib/python${MODPY_VERSION}/site-packages/svn/__init__.py
-lib/python${MODPY_VERSION}/site-packages/svn/__init__.pyc
+${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/svn/${MODPY_PYCACHE}/
+lib/python${MODPY_VERSION}/site-packages/svn/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/svn/${MODPY_PYCACHE}client.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/svn/${MODPY_PYCACHE}core.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/svn/${MODPY_PYCACHE}delta.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/svn/${MODPY_PYCACHE}diff.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/svn/${MODPY_PYCACHE}fs.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/svn/${MODPY_PYCACHE}ra.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/svn/${MODPY_PYCACHE}repos.${MODPY_PYC_MAGIC_TAG}pyc
+lib/python${MODPY_VERSION}/site-packages/svn/${MODPY_PYCACHE}wc.${MODPY_PYC_MAGIC_TAG}pyc
lib/python${MODPY_VERSION}/site-packages/svn/client.py
-lib/python${MODPY_VERSION}/site-packages/svn/client.pyc
lib/python${MODPY_VERSION}/site-packages/svn/core.py
-lib/python${MODPY_VERSION}/site-packages/svn/core.pyc
lib/python${MODPY_VERSION}/site-packages/svn/delta.py
-lib/python${MODPY_VERSION}/site-packages/svn/delta.pyc
lib/python${MODPY_VERSION}/site-packages/svn/diff.py
-lib/python${MODPY_VERSION}/site-packages/svn/diff.pyc
lib/python${MODPY_VERSION}/site-packages/svn/fs.py
-lib/python${MODPY_VERSION}/site-packages/svn/fs.pyc
lib/python${MODPY_VERSION}/site-packages/svn/ra.py
-lib/python${MODPY_VERSION}/site-packages/svn/ra.pyc
lib/python${MODPY_VERSION}/site-packages/svn/repos.py
-lib/python${MODPY_VERSION}/site-packages/svn/repos.pyc
lib/python${MODPY_VERSION}/site-packages/svn/wc.py
-lib/python${MODPY_VERSION}/site-packages/svn/wc.pyc

No comments:

Post a Comment