Hi,
Forgot to add that I've tested Stuart's diff with `pkg_add -u -n`
and it worked. I didn't do real update (without -n), but I think
it should work.
On Mon, Feb 03, 2020 at 10:13:25PM +0000, Stuart Henderson wrote:
> My attempt at a diff is below, it works for me in tests updating from
> a system with 3.6+subpackages.
>
> I use ${VERSION_SPEC} in the PLIST for the "same-version" conflicts
> needed to override "@option no-default-conflict", those should be in all
> PLISTs, and use a separate conflict entry for the ones there to handle
> the update from old MODPY_DEFAULT_VERSION_3. I've also added some
> commentary to the place in python.port.mk where people will look
> if switching the version to save people having to figure it out again
> when we move to 3.8-as-default.
...
> > I'll work up an alternative diff and send out after tests.
> >
>
>
> Index: Makefile.inc
> ===================================================================
> RCS file: /cvs/ports/lang/python/Makefile.inc,v
> retrieving revision 1.133
> diff -u -p -r1.133 Makefile.inc
> --- Makefile.inc 11 Nov 2019 17:47:41 -0000 1.133
> +++ Makefile.inc 3 Feb 2020 21:56:47 -0000
> @@ -130,6 +130,8 @@ MAKE_FLAGS += LD_LIBRARY_PATH=${WRKSRC}
> MAKE_FLAGS += LDFLAGS='-L${WRKSRC} -L${LOCALBASE}/lib/'
> FAKE_FLAGS += RANLIB=:
>
> +SUBST_VARS += VERSION_SPEC
> +
> # Python itself is clean, but some extensions e.g. py-cryptography
> # and QtWebKit require W|X mappings.
> USE_WXNEEDED = Yes
> Index: python.port.mk
> ===================================================================
> RCS file: /cvs/ports/lang/python/python.port.mk,v
> retrieving revision 1.119
> diff -u -p -r1.119 python.port.mk
> --- python.port.mk 19 Dec 2019 02:42:46 -0000 1.119
> +++ python.port.mk 3 Feb 2020 21:56:47 -0000
> @@ -9,6 +9,22 @@ CATEGORIES += lang/python
> MODPY_DEFAULT_VERSION_2 = 2.7
> MODPY_DEFAULT_VERSION_3 = 3.7
>
> +# If switching the default version:
> +# - In the old default version, @comment the non-suffixed bin/XXX files
> (python3,
> +# pydoc3, etc) and bump REVISION
> +# - In the new version, uncomment these same files
> +# - In the new version, add @conflict on the old REVISION of the old version
> +
> +# If later *removing* an old version:
> +# - *move* the numbered @conflict python-*->=3.2,<3.7 to the new version
> +# and update e.g. to @conflict python-*->=3.2,<3.8
> +# - *move* the @pkgpath markers to the new version and add a new one for
> +# the old version you have just retired.
> +
> +# In all cases:
> +# - keep the @conflict python-*-${VERSION_SPEC} PLIST lines as-is, they are
> +# there to override the "@option no-default-conflict".
> +
> .if !defined(MODPY_VERSION)
>
> FLAVOR ?=
> Index: 3.7/Makefile
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.7/Makefile,v
> retrieving revision 1.13
> diff -u -p -r1.13 Makefile
> --- 3.7/Makefile 28 Dec 2019 18:35:39 -0000 1.13
> +++ 3.7/Makefile 3 Feb 2020 21:56:47 -0000
> @@ -10,10 +10,12 @@ PATCHLEVEL = .6
> SHARED_LIBS = python3.7m 0.0
> VERSION_SPEC = >=3.7,<3.8
>
> +REVISION = 0
> +
> CONFIGURE_ARGS += --with-ensurepip=no
> CONFIGURE_ARGS += --enable-loadable-sqlite-extensions
>
> -CONFIGURE_STYLE = autoconf
> +CONFIGURE_STYLE = autoconf
>
> PORTROACH = limit:^3\.7
>
> Index: 3.7/pkg/PLIST-gdbm
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.7/pkg/PLIST-gdbm,v
> retrieving revision 1.4
> diff -u -p -r1.4 PLIST-gdbm
> --- 3.7/pkg/PLIST-gdbm 11 Dec 2019 19:55:40 -0000 1.4
> +++ 3.7/pkg/PLIST-gdbm 3 Feb 2020 21:56:47 -0000
> @@ -1,7 +1,11 @@
> @comment $OpenBSD: PLIST-gdbm,v 1.4 2019/12/11 19:55:40 sthen Exp $
> @option no-default-conflict
> @option is-branch
> -@conflict python-gdbm->=3.7,<3.8
> -@pkgpath lang/python3.5,-gdbm
> -@pkgpath lang/python3.6,-gdbm
> +@conflict python-gdbm-${VERSION_SPEC}
> +@conflict python-gdbm->=3.2,<3.7
> +@pkgpath lang/python/3.2,-gdbm
> +@pkgpath lang/python/3.3,-gdbm
> +@pkgpath lang/python/3.4,-gdbm
> +@pkgpath lang/python/3.5,-gdbm
> +@pkgpath lang/python/3.6,-gdbm
> @so lib/python3.7/lib-dynload/_gdbm.so
> Index: 3.7/pkg/PLIST-idle
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.7/pkg/PLIST-idle,v
> retrieving revision 1.5
> diff -u -p -r1.5 PLIST-idle
> --- 3.7/pkg/PLIST-idle 11 Dec 2019 19:55:40 -0000 1.5
> +++ 3.7/pkg/PLIST-idle 3 Feb 2020 21:56:47 -0000
> @@ -1,11 +1,14 @@
> @comment $OpenBSD: PLIST-idle,v 1.5 2019/12/11 19:55:40 sthen Exp $
> @option no-default-conflict
> @option is-branch
> -@conflict python-idle->=3.7,<3.8
> +@conflict python-idle-${VERSION_SPEC}
> +@conflict python-idle->=3.2,<3.7
> +@pkgpath lang/python/3.2,-idle
> +@pkgpath lang/python/3.3,-idle
> +@pkgpath lang/python/3.4,-idle
> +@pkgpath lang/python/3.5,-idle
> +@pkgpath lang/python/3.6,-idle
> @conflict python->=3.6,<3.6.8p0
> -@conflict python-idle->=3.6,<3.6.8p2
> -@pkgpath lang/python3.5,-idle
> -@pkgpath lang/python3.6,-idle
> bin/idle3
> bin/idle3.7
> lib/python3.7/idlelib/
> Index: 3.7/pkg/PLIST-main
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.7/pkg/PLIST-main,v
> retrieving revision 1.9
> diff -u -p -r1.9 PLIST-main
> --- 3.7/pkg/PLIST-main 28 Dec 2019 18:35:39 -0000 1.9
> +++ 3.7/pkg/PLIST-main 3 Feb 2020 21:56:47 -0000
> @@ -1,11 +1,14 @@
> @comment $OpenBSD: PLIST-main,v 1.9 2019/12/28 18:35:39 kmos Exp $
> @option no-default-conflict
> @option is-branch
> -@conflict python->=3.7,<3.8
> -@conflict python->=3,<3.6.8p2
> -@pkgpath lang/python3.5,-main
> -@pkgpath lang/python3.6,-main
> -@comment bin/2to3
> +@conflict python-${VERSION_SPEC}
> +@conflict python->=3.2,<3.7
> +@pkgpath lang/python/3.2,-main
> +@pkgpath lang/python/3.3,-main
> +@pkgpath lang/python/3.4,-main
> +@pkgpath lang/python/3.5,-main
> +@pkgpath lang/python/3.6,-main
> +bin/2to3
> bin/2to3-3.7
> bin/pydoc3
> bin/pydoc3.7
> Index: 3.7/pkg/PLIST-tests
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.7/pkg/PLIST-tests,v
> retrieving revision 1.5
> diff -u -p -r1.5 PLIST-tests
> --- 3.7/pkg/PLIST-tests 28 Dec 2019 18:35:39 -0000 1.5
> +++ 3.7/pkg/PLIST-tests 3 Feb 2020 21:56:47 -0000
> @@ -1,10 +1,14 @@
> @comment $OpenBSD: PLIST-tests,v 1.5 2019/12/28 18:35:39 kmos Exp $
> @option no-default-conflict
> @option is-branch
> -@conflict python-tests->=3.7,<3.8
> +@conflict python-tests-${VERSION_SPEC}
> @conflict python->=3.6,<3.6.8p0
> -@pkgpath lang/python3.5,-tests
> -@pkgpath lang/python3.6,-tests
> +@conflict python-tests->=3.2,<3.7
> +@pkgpath lang/python/3.2,-tests
> +@pkgpath lang/python/3.3,-tests
> +@pkgpath lang/python/3.4,-tests
> +@pkgpath lang/python/3.5,-tests
> +@pkgpath lang/python/3.6,-tests
> lib/python3.7/test/
> lib/python3.7/test/Sine-1000Hz-300ms.aif
> lib/python3.7/test/__init__.py
> Index: 3.7/pkg/PLIST-tkinter
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.7/pkg/PLIST-tkinter,v
> retrieving revision 1.4
> diff -u -p -r1.4 PLIST-tkinter
> --- 3.7/pkg/PLIST-tkinter 11 Dec 2019 19:55:40 -0000 1.4
> +++ 3.7/pkg/PLIST-tkinter 3 Feb 2020 21:56:47 -0000
> @@ -1,9 +1,13 @@
> @comment $OpenBSD: PLIST-tkinter,v 1.4 2019/12/11 19:55:40 sthen Exp $
> @option no-default-conflict
> @option is-branch
> -@conflict python-tkinter->=3.7,<3.8
> -@pkgpath lang/python3.5,-tkinter
> -@pkgpath lang/python3.6,-tkinter
> +@conflict python-tkinter-${VERSION_SPEC}
> +@conflict python-tkinter->=3.2,<3.7
> +@pkgpath lang/python/3.2,-tkinter
> +@pkgpath lang/python/3.3,-tkinter
> +@pkgpath lang/python/3.4,-tkinter
> +@pkgpath lang/python/3.5,-tkinter
> +@pkgpath lang/python/3.6,-tkinter
> @so lib/python3.7/lib-dynload/_tkinter.so
> lib/python3.7/tkinter/
> lib/python3.7/tkinter/__init__.py
> Index: 3.8/pkg/PLIST-gdbm
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.8/pkg/PLIST-gdbm,v
> retrieving revision 1.2
> diff -u -p -r1.2 PLIST-gdbm
> --- 3.8/pkg/PLIST-gdbm 11 Nov 2019 17:47:42 -0000 1.2
> +++ 3.8/pkg/PLIST-gdbm 3 Feb 2020 21:56:47 -0000
> @@ -1,5 +1,5 @@
> @comment $OpenBSD: PLIST-gdbm,v 1.2 2019/11/11 17:47:42 ajacoutot Exp $
> @option no-default-conflict
> @option is-branch
> -@conflict python-gdbm->=3.8,<3.9
> +@conflict python-gdbm-${VERSION_SPEC}
> @so lib/python3.8/lib-dynload/_gdbm.so
> Index: 3.8/pkg/PLIST-idle
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.8/pkg/PLIST-idle,v
> retrieving revision 1.1
> diff -u -p -r1.1 PLIST-idle
> --- 3.8/pkg/PLIST-idle 7 Nov 2019 16:14:09 -0000 1.1
> +++ 3.8/pkg/PLIST-idle 3 Feb 2020 21:56:47 -0000
> @@ -1,7 +1,7 @@
> @comment $OpenBSD: PLIST-idle,v 1.1 2019/11/07 16:14:09 kmos Exp $
> @option no-default-conflict
> @option is-branch
> -@conflict python-idle->=3.8,<3.9
> +@conflict python-idle-${VERSION_SPEC}
> @comment bin/idle3
> bin/idle3.8
> lib/python3.8/idlelib/
> Index: 3.8/pkg/PLIST-main
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.8/pkg/PLIST-main,v
> retrieving revision 1.3
> diff -u -p -r1.3 PLIST-main
> --- 3.8/pkg/PLIST-main 28 Dec 2019 18:34:39 -0000 1.3
> +++ 3.8/pkg/PLIST-main 3 Feb 2020 21:56:47 -0000
> @@ -1,7 +1,7 @@
> @comment $OpenBSD: PLIST-main,v 1.3 2019/12/28 18:34:39 kmos Exp $
> @option no-default-conflict
> @option is-branch
> -@conflict python->=3.8,<3.9
> +@conflict python-${VERSION_SPEC}
> @comment bin/2to3
> bin/2to3-3.8
> @comment bin/pydoc3
> Index: 3.8/pkg/PLIST-tests
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.8/pkg/PLIST-tests,v
> retrieving revision 1.2
> diff -u -p -r1.2 PLIST-tests
> --- 3.8/pkg/PLIST-tests 28 Dec 2019 18:34:39 -0000 1.2
> +++ 3.8/pkg/PLIST-tests 3 Feb 2020 21:56:47 -0000
> @@ -1,7 +1,7 @@
> @comment $OpenBSD: PLIST-tests,v 1.2 2019/12/28 18:34:39 kmos Exp $
> @option no-default-conflict
> @option is-branch
> -@conflict python-tests->=3.8,<3.9
> +@conflict python-tests-${VERSION_SPEC}
> lib/python3.8/ctypes/test/
> lib/python3.8/ctypes/test/__init__.py
> lib/python3.8/ctypes/test/__main__.py
> Index: 3.8/pkg/PLIST-tkinter
> ===================================================================
> RCS file: /cvs/ports/lang/python/3.8/pkg/PLIST-tkinter,v
> retrieving revision 1.2
> diff -u -p -r1.2 PLIST-tkinter
> --- 3.8/pkg/PLIST-tkinter 11 Nov 2019 17:47:42 -0000 1.2
> +++ 3.8/pkg/PLIST-tkinter 3 Feb 2020 21:56:47 -0000
> @@ -1,7 +1,7 @@
> @comment $OpenBSD: PLIST-tkinter,v 1.2 2019/11/11 17:47:42 ajacoutot Exp $
> @option no-default-conflict
> @option is-branch
> -@conflict python-tkinter->=3.8,<3.9
> +@conflict python-tkinter-${VERSION_SPEC}
> @so lib/python3.8/lib-dynload/_tkinter.so
> lib/python3.8/tkinter/
> lib/python3.8/tkinter/__init__.py
--
Regards,
Mikolaj