[PATCH cygport] python-wheel: Make a python3-name virtual package

Jon Turney jon.turney@dronecode.org.uk
Sun May 29 15:53:54 GMT 2022


When making python3x-name package (where 3.x is the current default
python version), also make a python3-name virtual package, which causes
python3x-name to be installed.
---
 cygclass/python-wheel.cygclass | 18 ++++++++++++++----
 lib/src_postinst.cygpart       | 11 +++++++++--
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/cygclass/python-wheel.cygclass b/cygclass/python-wheel.cygclass
index 90b0faa..b6ed68b 100644
--- a/cygclass/python-wheel.cygclass
+++ b/cygclass/python-wheel.cygclass
@@ -86,8 +86,8 @@ inherit python.org
 #    are already available.
 #****
 
-# when the default versions of Python change, this and the ENSUREPIP_OPTIONS
-# switches need to be updated accordingly
+# when the default versions of Python change, this, the python3 virtual package
+# target, and the ENSUREPIP_OPTIONS switches need to be updated accordingly
 _tmp_wheel_v=
 : ${PYTHON_WHEEL_VERSIONS:=default}
 for ver in ${PYTHON_WHEEL_VERSIONS//:/ }
@@ -124,11 +124,21 @@ then
 	for ver in ${PYTHON_WHEEL_VERSIONS//:/ }
 	do
 		PKG_NAMES+=" python${ver/.}-${PYTHON_WHEEL_NAME}"
-		# these were 2&3 at the time of the XY-version split,
+		# this was 2 at the time of the XY-version split,
 		# and MUST NOT be updated when defaults change
 		case ${ver} in
 		2.7)	declare -g python27_${PYTHON_WHEEL_NAME//[-\.]/_}_OBSOLETES="python-${PYTHON_WHEEL_NAME} python2-${PYTHON_WHEEL_NAME}" ;;
-		3.6)	declare -g python36_${PYTHON_WHEEL_NAME//[-\.]/_}_OBSOLETES="python3-${PYTHON_WHEEL_NAME}" ;;
+		# this is the default 3.x version
+		3.9)
+		    # If we are making a 3.x package (where x is the default),
+		    # also make a python3-wheelname virtual package, which just
+		    # requires python3x-wheelname
+		    PKG_NAMES+=" python3-${PYTHON_WHEEL_NAME}"
+		    declare -g python3_${PYTHON_WHEEL_NAME//[-\.]/_}_DESCRIPTION="The python3-${PYTHON_WHEEL_NAME} virtual package. Selecting this package for installation will cause the python${ver/.}-${PYTHON_WHEEL_NAME} package to be installed."
+		    declare -g python3_${PYTHON_WHEEL_NAME//[-\.]/_}_CATEGORY="Python Virtual"
+		    declare -g python3_${PYTHON_WHEEL_NAME//[-\.]/_}_REQUIRES="python${ver/.}-${PYTHON_WHEEL_NAME}"
+		    declare -g python3_${PYTHON_WHEEL_NAME//[-\.]/_}_CONTENTS=""
+		    ;;
 		esac
 		declare -g python${ver/.}_${PYTHON_WHEEL_NAME//[-\.]/_}_CONTENTS="usr/lib/python${ver}/site-packages/ usr/share/doc/python${ver/.}-${PYTHON_WHEEL_NAME}"
 	done
diff --git a/lib/src_postinst.cygpart b/lib/src_postinst.cygpart
index 4b51325..b0361b1 100644
--- a/lib/src_postinst.cygpart
+++ b/lib/src_postinst.cygpart
@@ -430,6 +430,7 @@ __prepdoc() {
 	local html;
 	local -i n=0;
 	local p;
+	local pkg_contents_var;
 	local pkg_docs_var;
 	local pkg_hint;
 	local default_docs="\
@@ -451,10 +452,16 @@ __prepdoc() {
 		inform "Skipping package doc installation per request";
 	elif defined _CYGPORT_INTERNAL_multi_doc_
 	then
+		# install docs in a package-specific path in every non-empty
+		# subpackage
 		for p in ${PKG_NAMES}
 		do
-			_docinto_dir=/$p
-			dodoc ${default_docs} ${DOCS};
+			pkg_contents_var=${p//[-\.]/_}_CONTENTS
+			if [ -n "${!pkg_contents_var}" ]
+			then
+				_docinto_dir=/$p
+				dodoc ${default_docs} ${DOCS};
+			fi
 		done
 		unset _docinto_dir;
 	else
-- 
2.36.1



More information about the Cygwin-apps mailing list