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

Reply via email to