Index: head/Mk/Uses/python.mk =================================================================== --- head/Mk/Uses/python.mk (revision 560424) +++ head/Mk/Uses/python.mk (revision 560425) @@ -1,747 +1,746 @@ # $FreeBSD$ # # Provide support for Python related ports. This includes detecting Python # interpreters, ports providing package and modules for python as well as # consumer ports requiring Python at build or run time. # # Feature: python # Usage: USES=python[:version-spec][,arg,...] # Valid ARGS: , patch, build, run, test, env # # version-spec Declarative specification for the Python version(s) the # port supports. Subsets and ranges can be specified: # # * # * - # * + # * - # # Examples: # # USES=python:2.7 # Supports Python 2.7 Only # USES=python:3.6+ # Supports Python 3.6 or later # USES=python:3.6-3.9 # Supports Python 3.6 to 3.9 # USES=python:-3.8 # Supports Python up to 3.8 # USES=python # Supports any/all Python versions # # NOTE: should be as specific as possible, matching the versions # upstream declares support for, without being incorrect. In particular, # USES=python *without* a means any and all past or future # versions, including unreleased versions, which is probably incorrect. # # Not specifying a should only be used when a more specific # cannot be specified due to syntax limitations, for # example: 2.7,3.4-3.6, but even in this case, X.Y+ (2.7+), or -X.Y (-3.6) # is preferred and likely more correct. # # patch Python is needed at patch time. Adds dependency to PATCH_DEPENDS. # build Python is needed at build time. Adds dependency to BUILD_DEPENDS. # run Python is needed at run time. Adds dependency to RUN_DEPENDS. # test Python is needed at test time. Adds dependency to TEST_DEPENDS. # env Does not depend on Python but needs the environment set up. This # is mainly used when depending on flavored python ports, or when a # correct PYTHON_CMD is required. It has the same effect as setting # PYTHON_NO_DEPENDS. # # If build, run and test are omitted, Python will be added as BUILD_DEPENDS, # RUN_DEPENDS and TEST_DEPENDS. # patch is independant, it does not prevent the default build/run/test # dependency. # env or PYTHON_NO_DEPENDS can be set to not add any dependencies. # # Exported variables: # # PYTHON_VERSION - The chosen Python interpreter including the version, # e.g. python2.7, python3.5, etc. # # Variables, which can be set by the port: # # USE_PYTHON - A list of additional features and functionality to # enable. Supported features are: # # concurrent - Indicates that the port can be installed for # different python versions at the same time. The port # is supposed to use a unique prefix for certain # directories using USES=uniquefiles:dirs (see the # uniquefiles.mk Uses for details about the # directories), if set to yes. Binaries receive an # additional suffix, based on ${PYTHON_VER}. # # The values for the uniquefiles USES are set as # follows: # # UNIQUE_PREFIX= ${PYTHON_PKGNAMEPREFIX} # UNIQUE_SUFFIX= -${PYTHON_VER} # # If the port is installed for the current default # python version, scripts and binaries in # # ${PREFIX}/bin # ${PREFIX}/sbin # ${PREFIX}/libexec # # are linked from the prefixed version to the # prefix-less original name, e.g. # bin/foo-2.7 --> bin/foo. # # cython - Depend on lang/cython at build-time. # # cython_run - Depend on lang/cython at run-time. # # flavors - Force creation of flavors for Python 2 and 3 default # versions, where applicable. # # noflavors - Disable automatic creation of flavors if they would # otherwise be created and they are not wanted. # # allflavors - Generate flavors for all possible versions and not # simply the default ones. Only to be used for py-* # ports that are part of the Python distribution, but # kept as separate ports. # # optsuffix - Set PKGNAMESUFFIX to PYTHON_PKGNAMESUFFIX if not the # default python version. # # distutils - Use distutils as do-configure, do-build and # do-install targets. implies flavors. # # autoplist - Automatically generates the packaging list for a # port that uses distutils when defined. # requires: distutils # # py3kplist - Automatically generates Python 3.x compatible # __pycache__ entries from a Python 2.x packaging list # when defined. Use this for ports that do *not* use # standard Python packaging mechanisms such as # distutils, and support *both* Python 2.x and 3.x. # Not needed, if USE_PYTHON=autoplist is set. # # pythonprefix - Says that the port installs in ${PYTHONBASE} instead # of ${PREFIX}. # # noegginfo - Skip an egg-info entry from plist, if defined. # # PYTHON_CMD - Python's command line file name, including the # version number (used for dependencies). # default: ${PYTHONBASE}/bin/${PYTHON_VERSION} # # PYSETUP - Name of the setup script used by the distutils # package. # default: setup.py # # PYDISTUTILS_PKGNAME # - Internal name in the distutils for egg-info. # default: ${PORTNAME} # # PYDISTUTILS_PKGVERSION # - Internal version in the distutils for egg-info. # default: ${PORTVERSION} # # PYDISTUTILS_CONFIGURE_TARGET # - Pass this command to distutils on configure stage. # default: config # # PYDISTUTILS_BUILD_TARGET # - Pass this command to distutils on build stage. # default: build # # PYDISTUTILS_INSTALL_TARGET # - Pass this command to distutils on install stage. # default: install # # PYDISTUTILS_CONFIGUREARGS # - Arguments to config with distutils. # default: # # PYDISTUTILS_BUILDARGS # - Arguments to build with distutils. # default: # # PYDISTUTILS_INSTALLARGS # - Arguments to install with distutils. # default: -c -O1 --prefix=${PREFIX} --single-version-externally-managed --root=${STAGEDIR} # # PYDISTUTILS_EGGINFO # - Canonical name for egg-info. # default: ${PYDISTUTILS_PKGNAME:C/[^A-Za-z0-9.]+/_/g}-${PYDISTUTILS_PKGVERSION:C/[^A-Za-z0-9.]+/_/g}-py${PYTHON_VER}.egg-info # # The following variables can be read by ports and must not be modified: # # PYTHONBASE - The installation prefix of the chosen Python # interpreter, e.g. /usr/local # # PYTHON_PORTVERSION # - Version number suitable for ${PORTVERSION}. # # PYTHON_PORTSDIR - The port directory of the chosen Python interpreter # # PYTHON_REL - The release number of the chosen Python interpreter # without dots, e.g. 2706, 3401, ... # # PYTHON_SUFFIX - The major-minor release number of the chosen Python # interpreter without dots, e.g. 27, 36, ... # Used for prefixes and suffixes. # # PYTHON_MAJOR_VER - The major release version of the chosen Python # interpreter, e.g. 2, 3, ... # # PYTHON_VER - The major-minor release version of the chosen Python # interpreter, e.g. 2.7, 3.6, ... # # PYTHON_ABIVER - Additional ABI flags set by the chosen Python # interpreter, e.g. md # # PYTHON_INCLUDEDIR - Location of the Python include files. # default: ${PYTHONBASE}/include/${PYTHON_VERSION} # # PYTHON_LIBDIR - Base of the python library tree # default: ${PYTHONBASE}/lib/${PYTHON_VERSION} # # PYTHON_SITELIBDIR - Location of the site-packages tree. Don't change, # unless you know what you do. # default: ${PYTHON_LIBDIR}/site-packages # # There are PREFIX-clean variants of the PYTHON_*DIR variables above. # They are meant to be used by ports instead of the above variables, so the # ports respect ${PREFIX} (unless USE_PYTHON=pythonprefix is specified). # # PYTHONPREFIX_INCLUDEDIR default: ${PREFIX}/include/${PYTHON_VERSION} # PYTHONPREFIX_LIBDIR default: ${PREFIX}/lib/${PYTHON_VERSION} # PYTHONPREFIX_SITELIBDIR default: ${PYTHONPREFIX_LIBDIR}/site-packages # # PYTHON_PLATFORM - Python's idea of the OS release. # This is faked with ${OPSYS} and ${OSREL} until we # find out how to delay defining a variable until # after a certain target has been built. # # PYTHON_PKGNAMEPREFIX # - Use this as a ${PKGNAMEPREFIX} to distinguish # packages for different Python versions. # default: py${PYTHON_SUFFIX}- # # PYTHON_PKGNAMESUFFIX # - Use this as a ${PKGNAMESUFFIX} to distinguish # packages for different Python versions. # default: -py${PYTHON_SUFFIX} # # Using USES=python.mk also will add some useful entries to PLIST_SUB: # # PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR:S;${PREFIX}/;;} # PYTHON_LIBDIR=${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;} # PYTHON_PLATFORM=${PYTHON_PLATFORM} # PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;} # PYTHON_SUFFIX=${PYTHON_SUFFIX} # PYTHON_VER=${PYTHON_VER} # PYTHON_VERSION=${PYTHON_VERSION} # # and PYTHON2 and PYTHON3 will be set according to the Python version: # # PYTHON2="" PYTHON3="@comment " for Python 2.x # PYTHON2="@comment " PYTHON3="" for Python 3.x # # PYDISTUTILS_INSTALLNOSINGLE # - Deprecated without replacement # # MAINTAINER: python@FreeBSD.org .if !defined(_INCLUDE_USES_PYTHON_MK) _INCLUDE_USES_PYTHON_MK= yes # What Python version and what Python interpreters are currently supported? # When adding a version, please keep the comment in # Mk/bsd.default-versions.mk in sync. _PYTHON_VERSIONS= 2.7 3.7 3.8 3.9 3.6 # preferred first _PYTHON_PORTBRANCH= 2.7 # ${_PYTHON_VERSIONS:[1]} _PYTHON_BASECMD= ${LOCALBASE}/bin/python _PYTHON_RELPORTDIR= lang/python # List all valid USE_PYTHON features here _VALID_PYTHON_FEATURES= allflavors autoplist concurrent cython cython_run \ distutils flavors noegginfo noflavors optsuffix \ py3kplist pythonprefix _INVALID_PYTHON_FEATURES= .for var in ${USE_PYTHON} . if empty(_VALID_PYTHON_FEATURES:M${var}) _INVALID_PYTHON_FEATURES+= ${var} . endif .endfor .if !empty(_INVALID_PYTHON_FEATURES) IGNORE= uses unknown USE_PYTHON features: ${_INVALID_PYTHON_FEATURES} .endif # Make each individual feature available as _PYTHON_FEATURE_ .for var in ${USE_PYTHON} _PYTHON_FEATURE_${var:C/=.*$//:tu}= ${var:C/.*=//:S/,/ /g} .endfor # distutils automatically generates flavors depending on the supported # versions. .if defined(_PYTHON_FEATURE_DISTUTILS) _PYTHON_FEATURE_FLAVORS= yes .endif .if defined(_PYTHON_FEATURE_NOFLAVORS) .undef _PYTHON_FEATURE_FLAVORS .endif # Make sure that no dependency or some other environment variable # pollutes the build/run dependency detection .undef _PYTHON_BUILD_DEP .undef _PYTHON_RUN_DEP .undef _PYTHON_TEST_DEP _PYTHON_ARGS= ${python_ARGS:S/,/ /g} .if ${_PYTHON_ARGS:Mpatch} _PYTHON_PATCH_DEP= yes _PYTHON_ARGS:= ${_PYTHON_ARGS:Npatch} .endif .if ${_PYTHON_ARGS:Mbuild} _PYTHON_BUILD_DEP= yes _PYTHON_ARGS:= ${_PYTHON_ARGS:Nbuild} .endif .if ${_PYTHON_ARGS:Mrun} _PYTHON_RUN_DEP= yes _PYTHON_ARGS:= ${_PYTHON_ARGS:Nrun} .endif .if ${_PYTHON_ARGS:Mtest} _PYTHON_TEST_DEP= yes _PYTHON_ARGS:= ${_PYTHON_ARGS:Ntest} .endif .if ${_PYTHON_ARGS:Menv} PYTHON_NO_DEPENDS= yes _PYTHON_ARGS:= ${_PYTHON_ARGS:Nenv} .endif # The port does not specify a build, run or test dependency, assume all are # required. .if !defined(_PYTHON_BUILD_DEP) && !defined(_PYTHON_RUN_DEP) && \ !defined(_PYTHON_TEST_DEP) && !defined(PYTHON_NO_DEPENDS) _PYTHON_BUILD_DEP= yes _PYTHON_RUN_DEP= yes _PYTHON_TEST_DEP= yes .endif .if ${PYTHON2_DEFAULT} != ${PYTHON_DEFAULT} && ${PYTHON3_DEFAULT} != ${PYTHON_DEFAULT} WARNING+= "PYTHON_DEFAULT must be a version present in PYTHON2_DEFAULT or PYTHON3_DEFAULT, if you want more Python flavors, set BUILD_ALL_PYTHON_FLAVORS in your make.conf" .endif .if ${_PYTHON_ARGS} == 2.7 DEV_WARNING+= "lang/python27 reached End of Life and will be removed on 2020-12-31, consider converting to a modern version of python" .elif ${_PYTHON_ARGS} == 2 DEV_ERROR+= "USES=python:2 is no longer supported, use USES=python:2.7" .elif ${_PYTHON_ARGS} == 3 DEV_ERROR+= "USES=python:3 is no longer supported, use USES=python:3.6+ or an appropriate version range" .endif # ${_PYTHON_ARGS} == 2.7 _PYTHON_VERSION:= ${PYTHON_DEFAULT} # Validate Python version whether it meets the version restriction. _PYTHON_VERSION_CHECK:= ${_PYTHON_ARGS:C/^([1-9]\.[0-9])$/\1-\1/} _PYTHON_VERSION_MINIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/([1-9]\.[0-9])[-+].*/\1/} _PYTHON_VERSION_MINIMUM:= ${_PYTHON_VERSION_MINIMUM_TMP:M[1-9].[0-9]} _PYTHON_VERSION_MAXIMUM_TMP:= ${_PYTHON_VERSION_CHECK:C/.*-([1-9]\.[0-9])/\1/} _PYTHON_VERSION_MAXIMUM:= ${_PYTHON_VERSION_MAXIMUM_TMP:M[1-9].[0-9]} # At this point we should have no argument left in ${_PYTHON_ARGS} # except a version spec _PYTHON_ARGS:= ${_PYTHON_ARGS:N[1-9].[0-9]-[1-9].[0-9]:N[1-9].[0-9]:N[1-9].[0-9]+:N-[1-9].[0-9]} .if !empty(_PYTHON_ARGS) IGNORE= uses unknown USES=python arguments: ${_PYTHON_ARGS} .endif .undef _PYTHON_VERSION_NONSUPPORTED .if !empty(_PYTHON_VERSION_MINIMUM) && (${_PYTHON_VERSION} < ${_PYTHON_VERSION_MINIMUM}) _PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MINIMUM} at least .elif !empty(_PYTHON_VERSION_MAXIMUM) && (${_PYTHON_VERSION} > ${_PYTHON_VERSION_MAXIMUM}) _PYTHON_VERSION_NONSUPPORTED= ${_PYTHON_VERSION_MAXIMUM} at most .endif # If we have an unsupported version of Python, try another. .if defined(_PYTHON_VERSION_NONSUPPORTED) .undef _PYTHON_VERSION .for ver in ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_VERSIONS} __VER= ${ver} .if !defined(_PYTHON_VERSION) && \ !(!empty(_PYTHON_VERSION_MINIMUM) && ( \ ${__VER} < ${_PYTHON_VERSION_MINIMUM})) && \ !(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ ${__VER} > ${_PYTHON_VERSION_MAXIMUM})) _PYTHON_VERSION= ${ver} .endif .endfor .if !defined(_PYTHON_VERSION) IGNORE= needs an unsupported version of Python .endif .endif # defined(_PYTHON_VERSION_NONSUPPORTED) # Automatically generates FLAVORS if empty .if empty(FLAVORS) && defined(_PYTHON_FEATURE_FLAVORS) . undef _VALID_PYTHON_VERSIONS . for ver in ${PYTHON_DEFAULT} ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} ${_PYTHON_VERSIONS} __VER= ${ver} . if !(!empty(_PYTHON_VERSION_MINIMUM) && ( \ ${__VER} < ${_PYTHON_VERSION_MINIMUM})) && \ !(!empty(_PYTHON_VERSION_MAXIMUM) && ( \ ${__VER} > ${_PYTHON_VERSION_MAXIMUM})) . if empty(_VALID_PYTHON_VERSIONS:M${ver}) _VALID_PYTHON_VERSIONS+= ${ver} . endif . endif . endfor # Get all possible flavors depending on version requirements . if defined(_VALID_PYTHON_VERSIONS) _ALL_PYTHON_FLAVORS= ${_VALID_PYTHON_VERSIONS:S/.//:S/^/py/} . else _ALL_PYTHON_FLAVORS= ${_PYTHON_VERSIONS:S/.//:S/^/py/} . endif # Decide how many flavors we want. By default, only generate the default # versions. . if defined(BUILD_ALL_PYTHON_FLAVORS) || defined(_PYTHON_FEATURE_ALLFLAVORS) FLAVORS= ${_ALL_PYTHON_FLAVORS} . else . for _v in ${PYTHON_DEFAULT} ${PYTHON2_DEFAULT} ${PYTHON3_DEFAULT} _f= py${_v:S/.//} . if ${_ALL_PYTHON_FLAVORS:M${_f}} && !${FLAVORS:M${_f}} .if !empty(FLAVORS) FLAVORS:= ${FLAVORS} ${_f} .else FLAVORS:= ${_f} .endif . endif . endfor . endif . if !empty(FLAVORS) && empty(FLAVOR) FLAVOR= ${FLAVORS:[1]} . endif .endif .if ${FLAVOR:Mpy[23][0-9]} _PYTHON_VERSION= ${FLAVOR:S/py//:C/(.)/\1./} .endif .if !empty(FLAVOR) && ${_PYTHON_VERSION} != ${PYTHON_DEFAULT} .if defined(_PYTHON_FEATURE_OPTSUFFIX) DEV_WARNING+= "USE_PYTHON=optsuffix is deprecated, consider migrating to using unconditional PKGNAMESUFFIX or PKGNAMEPREFIX" PKGNAMESUFFIX= ${PYTHON_PKGNAMESUFFIX} .endif .endif # To avoid having dependencies with @ and empty flavor: # _PYTHON_VERSION is either set by (first that matches): # - If using Python flavors, from the current Python flavor # - If using a version restriction (USES=python:3.6+), from the first # acceptable default Python version. # - From PYTHON_DEFAULT PY_FLAVOR= py${_PYTHON_VERSION:S/.//} PYTHON_VERSION= python${_PYTHON_VERSION} # Got the correct python version, set some publicly accessible variables PYTHON_VER= ${_PYTHON_VERSION} PYTHON_SUFFIX= ${_PYTHON_VERSION:S/.//g} PYTHON_MAJOR_VER= ${PYTHON_VER:R} PYTHON_REL= # empty PYTHON_ABIVER= # empty PYTHON_PORTSDIR= ${_PYTHON_RELPORTDIR}${PYTHON_SUFFIX} .if ${PYTHON_VER} == 3.8 PYTHON_EXT_SUFFIX= .cpython-${PYTHON_SUFFIX} .else PYTHON_EXT_SUFFIX= # empty .endif # Protect partial checkouts from Mk/Scripts/functions.sh:export_ports_env(). .if !defined(_PORTS_ENV_CHECK) || exists(${PORTSDIR}/${PYTHON_PORTSDIR}) .include "${PORTSDIR}/${PYTHON_PORTSDIR}/Makefile.version" .endif # Create a 4 integer version string, prefixing 0 to the last token if # it's a single character. Only use the the first 3 tokens of # PORTVERSION to support pre-release versions (rc3, alpha4, etc) of # any Python port (lang/pythonXY) PYTHON_REL= ${PYTHON_PORTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/:C/\.([0-9]+)$/.0\1/:C/\.0?([0-9][0-9])$/.\1/:S/.//g} # Might be overridden by calling ports PYTHON_CMD?= ${_PYTHON_BASECMD}${_PYTHON_VERSION} .if ${PYTHON_VER} != 2.7 .if exists(${PYTHON_CMD}-config) PYTHON_ABIVER!= ${PYTHON_CMD}-config --abiflags .elif ${PYTHON_REL} < 3800 # Default ABI flags for lang/python3[67] ports PYTHON_ABIVER= m .endif .endif .if ${PYTHON_MAJOR_VER} == 2 DEPRECATED?= Uses Python 2.7 which is EOLed upstream EXPIRATION_DATE?= 2020-12-31 .endif .if !defined(PYTHONBASE) PYTHONBASE!= (${PYTHON_CMD} -c 'import sys; print(sys.prefix)' \ 2> /dev/null || ${ECHO_CMD} ${LOCALBASE}) | ${TAIL} -1 .endif _EXPORTED_VARS+= PYTHONBASE PYTHON_INCLUDEDIR= ${PYTHONBASE}/include/python${_PYTHON_VERSION}${PYTHON_ABIVER} PYTHON_LIBDIR= ${PYTHONBASE}/lib/python${_PYTHON_VERSION} PYTHON_PLATFORM= ${OPSYS:tl}${OSREL:C/\.[0-9.]*//} PYTHON_SITELIBDIR= ${PYTHON_LIBDIR}/site-packages PYTHON_PKGNAMEPREFIX= py${PYTHON_SUFFIX}- PYTHON_PKGNAMESUFFIX= -py${PYTHON_SUFFIX} PYTHONPREFIX_INCLUDEDIR= ${PYTHON_INCLUDEDIR:S;${PYTHONBASE};${PREFIX};} PYTHONPREFIX_LIBDIR= ${PYTHON_LIBDIR:S;${PYTHONBASE};${PREFIX};} PYTHONPREFIX_SITELIBDIR= ${PYTHON_SITELIBDIR:S;${PYTHONBASE};${PREFIX};} # Used for recording the installed files. _PYTHONPKGLIST= ${WRKDIR}/.PLIST.pymodtmp # PEP 0488 (https://www.python.org/dev/peps/pep-0488/) .if ${PYTHON_REL} < 3500 PYTHON_PYOEXTENSION= pyo .else PYTHON_PYOEXTENSION= opt-1.pyc .endif # Ports bound to a certain python version SHOULD # - use the PYTHON_PKGNAMEPREFIX # - use directories using the PYTHON_PKGNAMEPREFIX # - install binaries using the required PYTHON_VER, with # the default python version creating a symlink to the original binary # name (for staging-aware ports). # # What makes a port 'bound' to a certain python version? # - it installs data into PYTHON_SITELIBDIR, PYTHON_INCLUDEDIR, ... # - it links against libpython*.so # - it uses USE_PYTHON=distutils # .if defined(_PYTHON_FEATURE_CYTHON) BUILD_DEPENDS+= cython-${PYTHON_VER}:lang/cython@${PY_FLAVOR} .endif .if defined(_PYTHON_FEATURE_CYTHON_RUN) RUN_DEPENDS+= cython-${PYTHON_VER}:lang/cython@${PY_FLAVOR} .endif .if defined(_PYTHON_FEATURE_CONCURRENT) .if !defined(_PYTHON_FEATURE_FLAVORS) && (${_PYTHON_VERSION_MINIMUM:M3*} || ${_PYTHON_VERSION_MAXIMUM:M2*}) DEV_WARNING+= "USE_PYTHON=concurrent when only one of Python 2 or 3 is supported AND not using flavors does not make any sense" .endif _USES_POST+= uniquefiles:dirs .if defined(_PYTHON_FEATURE_FLAVORS) && ${FLAVOR} == ${FLAVORS:[1]} UNIQUE_DEFAULT_LINKS= yes .elif !defined(_PYTHON_FEATURE_FLAVORS) && ${_PYTHON_VERSION} == ${PYTHON_DEFAULT} UNIQUE_DEFAULT_LINKS= yes .else UNIQUE_DEFAULT_LINKS= no .endif UNIQUE_PREFIX= ${PYTHON_PKGNAMEPREFIX} UNIQUE_SUFFIX= -${PYTHON_VER} UNIQUE_SUFFIX_TYPES+= SUFFIX_MAN UNIQUE_SUFFIX_MAN_WITH_EXT= .[1-9ln] UNIQUE_SUFFIX_MAN_EXTRA_EXT= .gz .if defined(_PYTHON_FEATURE_AUTOPLIST) _UNIQUE_FIND_SUFFIX_FILES= ${SED} -e 's|^${PREFIX}/||' ${_PYTHONPKGLIST} ${TMPPLIST} .else _UNIQUE_FIND_SUFFIX_FILES= ${SED} -e 's|^${PREFIX}/||' ${TMPPLIST} 2>/dev/null .endif UNIQUE_FIND_SUFFIX_FILES+= ${_UNIQUE_FIND_SUFFIX_FILES} | \ ${EGREP} -he '^bin/.*$$|^sbin/.*$$|^libexec/.*$$' UNIQUE_FIND_SUFFIX_MAN_FILES+= ${_UNIQUE_FIND_SUFFIX_FILES} | \ ${EGREP} -he '^man/man[1-9ln]/.*$$|^share/man/man[1-9ln]/.*$$' .endif # defined(_PYTHON_FEATURE_CONCURRENT) _CURRENTPORT:= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX} .if defined(_PYTHON_FEATURE_DISTUTILS) && \ ${_CURRENTPORT} != ${PYTHON_PKGNAMEPREFIX}setuptools BUILD_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}setuptools>0:devel/py-setuptools@${PY_FLAVOR} .endif # distutils support PYSETUP?= setup.py PYDISTUTILS_SETUP?= -c \ "import sys; import setuptools; \ __file__='${PYSETUP}'; sys.argv[0]='${PYSETUP}'; \ exec(compile(open(__file__, 'rb').read().replace(b'\\r\\n', b'\\n'), __file__, 'exec'))" PYDISTUTILS_CONFIGUREARGS?= # empty PYDISTUTILS_BUILDARGS?= # empty PYDISTUTILS_INSTALLARGS?= -c -O1 --prefix=${PREFIX} .if defined(_PYTHON_FEATURE_DISTUTILS) . if !defined(PYDISTUTILS_INSTALLNOSINGLE) PYDISTUTILS_INSTALLARGS+= --single-version-externally-managed . endif PYDISTUTILS_INSTALLARGS+= --root=${STAGEDIR} .endif PYDISTUTILS_INSTALLARGS:= --record ${_PYTHONPKGLIST} \ ${PYDISTUTILS_INSTALLARGS} PYDISTUTILS_PKGNAME?= ${PORTNAME} PYDISTUTILS_PKGVERSION?=${PORTVERSION} PYDISTUTILS_EGGINFO?= ${PYDISTUTILS_PKGNAME:C/[^A-Za-z0-9.]+/_/g}-${PYDISTUTILS_PKGVERSION:C/[^A-Za-z0-9.]+/_/g}-py${PYTHON_VER}.egg-info PYDISTUTILS_EGGINFODIR?=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} .if !defined(_PYTHON_FEATURE_NOEGGINFO) && \ !defined(_PYTHON_FEATURE_AUTOPLIST) && \ defined(_PYTHON_FEATURE_DISTUTILS) && \ defined(PYTHON_REL) _USES_stage+= 933:add-plist-egginfo add-plist-egginfo: . for egginfo in ${PYDISTUTILS_EGGINFO} if [ -d "${PYDISTUTILS_EGGINFODIR}/${egginfo}" ]; then \ ${LS} ${PYDISTUTILS_EGGINFODIR}/${egginfo} | while read f; do \ ${ECHO_CMD} ${PYDISTUTILS_EGGINFODIR:S;^${STAGEDIR}${PREFIX}/;;}/${egginfo}/$${f} >> ${TMPPLIST}; \ done; \ fi; . endfor .endif .if defined(_PYTHON_FEATURE_AUTOPLIST) && defined(_PYTHON_FEATURE_DISTUTILS) _RELSITELIBDIR= ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;} _RELLIBDIR= ${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;} _USES_stage+= 934:add-plist-pymod add-plist-pymod: @${SED} -e 's|^"\(.*\)"$$|\1|' \ -e 's|^${STAGEDIR}${PREFIX}/||' \ -e 's|^${PREFIX}/||' \ -e 's|^\(man/.*man[0-9]\)/\(.*\.[0-9]\)$$|\1/\2.gz|' \ -e 's|^\(share/man/.*man[0-9]\)/\(.*\.[0-9]\)$$|\1/\2.gz|' \ -e 's|[[:alnum:]|[:space:]]*/\.\./*||g; s|/\./|/|g' \ ${_PYTHONPKGLIST} | ${SORT} >> ${TMPPLIST} .else .if ${PYTHON_REL} >= 3200 && defined(_PYTHON_FEATURE_PY3KPLIST) # When Python version is 3.2+ we rewrite all the filenames # of TMPPLIST that end with .py[co], so that they conform # to PEP 3147 (see https://www.python.org/dev/peps/pep-3147/) PYMAGICTAG= ${PYTHON_CMD} -c 'import sys; print(sys.implementation.cache_tag)' _USES_stage+= 935:add-plist-python add-plist-python: @${AWK} '\ /\.py[co]$$/ && !($$0 ~ "/" pc "/") {id = match($$0, /\/[^\/]+\.py[co]$$/); if (id != 0) {d = substr($$0, 1, RSTART - 1); dirs[d] = 1}; sub(/\.pyc$$/, "." mt "&"); sub(/\.pyo$$/, "." mt "." pyo); sub(/[^\/]+\.py[co]$$/, pc "/&"); print; next} \ /^@dirrm / {d = substr($$0, 8); if (d in dirs) {print $$0 "/" pc}; print $$0; next} \ /^@dirrmtry / {d = substr($$0, 11); if (d in dirs) {print $$0 "/" pc}; print $$0; next} \ {print} \ ' \ pc="__pycache__" mt="$$(${PYMAGICTAG})" pyo="opt-1.pyc" \ ${TMPPLIST} > ${TMPPLIST}.pyc_tmp @${MV} ${TMPPLIST}.pyc_tmp ${TMPPLIST} .endif # ${PYTHON_REL} >= 3200 && defined(_PYTHON_FEATURE_PY3KPLIST) .endif # defined(_PYTHON_FEATURE_AUTOPLIST) && defined(_PYTHON_FEATURE_DISTUTILS) # Fix for programs that build python from a GNU auto* environment CONFIGURE_ENV+= PYTHON="${PYTHON_CMD}" # By default CMake picks up the highest available version of Python package. # Enforce the version required by the port or the default. CMAKE_ARGS+= -DPython_ADDITIONAL_VERSIONS=${PYTHON_VER} # Python 3rd-party modules PYGAME= ${PYTHON_PKGNAMEPREFIX}game>0:devel/py-game@${PY_FLAVOR} PYNUMPY= ${PYTHON_PKGNAMEPREFIX}numpy>=1.16,1<1.20,1:math/py-numpy@${PY_FLAVOR} # Common Python modules that can be needed but only for some versions of Python. .if ${PYTHON_REL} < 3500 -PY_PILLOW= ${PYTHON_PKGNAMEPREFIX}pillow6>=6.0.0:graphics/py-pillow6@${PY_FLAVOR} PY_PYGMENTS= ${PYTHON_PKGNAMEPREFIX}pygments-25>=2.5.1<3:textproc/py-pygments-25@${PY_FLAVOR} PY_SPHINX= ${PYTHON_PKGNAMEPREFIX}sphinx18>=0,1:textproc/py-sphinx18@${PY_FLAVOR} PY_TYPING= ${PYTHON_PKGNAMEPREFIX}typing>=3.7.4.1:devel/py-typing@${PY_FLAVOR} .else PY_PILLOW= ${PYTHON_PKGNAMEPREFIX}pillow>=7.0.0:graphics/py-pillow@${PY_FLAVOR} PY_PYGMENTS= ${PYTHON_PKGNAMEPREFIX}pygments>=2.5.1<3:textproc/py-pygments@${PY_FLAVOR} PY_SPHINX= ${PYTHON_PKGNAMEPREFIX}sphinx>=3.0,1:textproc/py-sphinx@${PY_FLAVOR} PY_TYPING= .endif .if ${PYTHON_REL} < 3400 PY_ENUM34= ${PYTHON_PKGNAMEPREFIX}enum34>=1.1<2.0:devel/py-enum34@${PY_FLAVOR} PY_PATHLIB= ${PYTHON_PKGNAMEPREFIX}pathlib>0:devel/py-pathlib@${PY_FLAVOR} .else PY_ENUM34= PY_PATHLIB= .endif .if ${PYTHON_REL} < 3300 PY_IPADDRESS= ${PYTHON_PKGNAMEPREFIX}ipaddress>=1.0.23:net/py-ipaddress@${PY_FLAVOR} .else PY_IPADDRESS= .endif .if ${PYTHON_REL} < 3200 PY_FUTURES= ${PYTHON_PKGNAMEPREFIX}futures>=3.2:devel/py-futures@${PY_FLAVOR} .else PY_FUTURES= .endif .if ${PYTHON_VER} != ${PYTHON_DEFAULT} PY_MERCURIAL= ${PYTHON_PKGNAMEPREFIX}mercurial>=5.5:devel/mercurial@${PY_FLAVOR} .else PY_MERCURIAL= mercurial>=5.5:devel/mercurial@${PY_FLAVOR} .endif CMAKE_ARGS+= -DBOOST_PYTHON_SUFFIX:STRING=${PYTHON_SUFFIX} PY_BOOST_LIB= boost_python${PYTHON_SUFFIX} PY_BOOST= lib${PY_BOOST_LIB}.so:devel/boost-python-libs@${PY_FLAVOR} # dependencies .for _stage in PATCH BUILD RUN TEST . if defined(_PYTHON_${_stage}_DEP) ${_stage}_DEPENDS+= ${PYTHON_CMD}:${PYTHON_PORTSDIR} . endif .endfor # set $PREFIX as Python's one .if defined(_PYTHON_FEATURE_PYTHONPREFIX) PREFIX= ${PYTHONBASE} .endif # Substitutions for pkg-plist # Use a short form of the PYTHONPREFIX_*DIR variables; we don't need the # base directory in the plist file. PLIST_SUB+= PYTHON_INCLUDEDIR=${PYTHONPREFIX_INCLUDEDIR:S;${PREFIX}/;;} \ PYTHON_LIBDIR=${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;} \ PYTHON_PLATFORM=${PYTHON_PLATFORM} \ PYTHON_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;} \ PYTHON_SUFFIX=${PYTHON_SUFFIX} \ PYTHON_EXT_SUFFIX=${PYTHON_EXT_SUFFIX} \ PYTHON_VER=${PYTHON_VER} \ PYTHON_VERSION=${PYTHON_VERSION} .if ${PYTHON_REL} < 3000 PLIST_SUB+= PYTHON2="" PYTHON3="@comment " .else PLIST_SUB+= PYTHON2="@comment " PYTHON3="" .endif _USES_POST+= python .endif # _INCLUDE_USES_PYTHON_MK .if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_PYTHON_POST_MK) _INCLUDE_USES_PYTHON_POST_MK= yes # py-distutils support PYDISTUTILS_CONFIGURE_TARGET?= config PYDISTUTILS_BUILD_TARGET?= build PYDISTUTILS_INSTALL_TARGET?= install .if defined(_PYTHON_FEATURE_DISTUTILS) LDSHARED?= ${CC} -shared MAKE_ENV+= LDSHARED="${LDSHARED}" PYTHONDONTWRITEBYTECODE= PYTHONOPTIMIZE= .if !target(do-configure) && !defined(HAS_CONFIGURE) && !defined(GNU_CONFIGURE) do-configure: @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYDISTUTILS_SETUP} ${PYDISTUTILS_CONFIGURE_TARGET} ${PYDISTUTILS_CONFIGUREARGS}) .endif .if !target(do-build) do-build: @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYDISTUTILS_SETUP} ${PYDISTUTILS_BUILD_TARGET} ${PYDISTUTILS_BUILDARGS}) .endif .if !target(do-install) do-install: @(cd ${INSTALL_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYDISTUTILS_SETUP} ${PYDISTUTILS_INSTALL_TARGET} ${PYDISTUTILS_INSTALLARGS}) .endif .endif # defined(_PYTHON_FEATURE_DISTUTILS) .endif # defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_PYTHON_POST_MK) Index: head/cad/k40-whisperer/Makefile =================================================================== --- head/cad/k40-whisperer/Makefile (revision 560424) +++ head/cad/k40-whisperer/Makefile (revision 560425) @@ -1,50 +1,50 @@ # $FreeBSD$ PORTNAME= k40-whisperer DISTVERSION= 0.55 CATEGORIES= cad python MASTER_SITES= http://www.scorchworks.com/K40whisperer/ DISTNAME= K40_Whisperer-${DISTVERSION}_src MAINTAINER= 0mp@FreeBSD.org COMMENT= GUI control software for the stock K40 laser cutter controller LICENSE= GPLv3+ LICENSE_FILE= ${WRKSRC}/gpl-3.0.txt RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}lxml>0:devel/py-lxml@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pyusb>0:devel/py-pyusb@${PY_FLAVOR} \ ${PY_PILLOW} -USES= python:run,-3.7 shebangfix zip +USES= python:run,3.6-3.7 shebangfix zip SHEBANG_FILES= *.py DESKTOP_ENTRIES= "K40 Whisperer" \ "${COMMENT}" \ "${DATADIR}/scorchworks.ico" \ "${_WHISPERER_COMMAND}" \ "Development;Art;Engineering;VectorGraphics;" \ false NO_ARCH= yes NO_BUILD= yes SUB_FILES= ${_WHISPERER_COMMAND} pkg-message SUB_LIST= PYTHON_CMD=${PYTHON_CMD} \ WHISPERER_COMMAND=${_WHISPERER_COMMAND} PLIST_SUB= WHISPERER_COMMAND=${_WHISPERER_COMMAND} OPTIONS_DEFINE= DOCS _DOCS= Change_Log.txt README_Linux.txt README_MacOS.md _NON_DATA_FILES= ${_DOCS} ${LICENSE_FILE:S,${WRKSRC}/,,} build_exe.bat \ py2exe_setup.py requirements.txt _WHISPERER_COMMAND= ${PORTNAME} do-install: ${INSTALL_SCRIPT} ${WRKDIR}/${_WHISPERER_COMMAND} ${STAGEDIR}${PREFIX}/bin @${MKDIR} ${STAGEDIR}${DATADIR} (cd ${WRKSRC} && ${COPYTREE_SHARE} . \ ${STAGEDIR}${DATADIR} "${_NON_DATA_FILES:S,^,! -name &,}") @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${_DOCS:S,^,${WRKSRC}/,} ${STAGEDIR}${DOCSDIR} .include Index: head/games/fretsonfire/Makefile =================================================================== --- head/games/fretsonfire/Makefile (revision 560424) +++ head/games/fretsonfire/Makefile (revision 560425) @@ -1,56 +1,56 @@ # Created by: Jose Alonso Cardenas Marquez # $FreeBSD$ PORTNAME= fretsonfire PORTVERSION= 1.3.110 PORTREVISION= 14 CATEGORIES= games python MASTER_SITES= SF DISTNAME= ${PORTNAME_UCASE}-${PORTVERSION} DIST_SUBDIR= ${PORTNAME} MAINTAINER= acm@FreeBSD.org COMMENT= Game of musical skill and fast fingers LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/copying.txt RUN_DEPENDS= ${PYNUMPY} \ ${PYGAME} \ ${PY_PILLOW} \ ${PYTHON_PKGNAMEPREFIX}PyOpenGL>=0:graphics/py-PyOpenGL@${PY_FLAVOR} \ ${LOCALBASE}/share/${PORTNAME}/default.ttf:games/fretsonfire-data -USES= dos2unix python +USES= dos2unix python:3.6+ DOS2UNIX_FILES= *.txt NO_BUILD= yes NO_ARCH= yes DATADIR= share/${PORTNAME} EXTRACT_AFTER_ARGS= --exclude 'data' SUB_FILES= pkg-message FretsOnFire SUB_LIST= PROGRAM_DIR="${FOF_DIR}/${PORTNAME_UCASE}" WRKSRC= "${WRKDIR}/Frets on Fire-${PORTVERSION}" FOF_DIR= ${PREFIX}/lib/${PORTNAME} OPTIONS_DEFINE= DOCS PORTNAME_UCASE= FretsOnFire do-install: @${MKDIR} ${STAGEDIR}${FOF_DIR}/${PORTNAME_UCASE} @cd ${WRKSRC}/src && \ ${FIND} * -type d -exec ${MKDIR} "${STAGEDIR}${FOF_DIR}/${PORTNAME_UCASE}/{}" \; && \ ${FIND} -E * -type f -iregex ".*\.(py)" -exec ${INSTALL_DATA} {} "${STAGEDIR}${FOF_DIR}/${PORTNAME_UCASE}/{}" \; @${MKDIR} ${STAGEDIR}${FOF_DIR}/data @${LN} -s ${LOCALBASE}/${DATADIR}/* ${STAGEDIR}${FOF_DIR}/data ${INSTALL_SCRIPT} ${WRKDIR}/${PORTNAME_UCASE} ${STAGEDIR}${PREFIX}/bin @${REINPLACE_CMD} -i '' -e 's|#!.*|#!${PYTHON_CMD}|' ${STAGEDIR}${PREFIX}/bin/${PORTNAME_UCASE} @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/readme.txt ${STAGEDIR}${DOCSDIR}/README ${INSTALL_DATA} ${WRKSRC}/install.txt ${STAGEDIR}${DOCSDIR}/INSTALL .include Index: head/games/pysolfc/Makefile =================================================================== --- head/games/pysolfc/Makefile (revision 560424) +++ head/games/pysolfc/Makefile (revision 560425) @@ -1,100 +1,100 @@ # $FreeBSD$ PORTNAME= pysolfc DISTVERSION= 2.6.4 PORTREVISION= 1 CATEGORIES= games python MASTER_SITES= SF/${PORTNAME}/PySolFC/${PYSOLFCDIR} \ SF/${PORTNAME}/PySolFC-Cardsets/${CARDSETDIR}:cardsets DISTFILES= ${PYSOLFCDIST} \ ${CARDSETDIST}:cardsets DIST_SUBDIR= ${PORTNAME} MAINTAINER= kai@FreeBSD.org COMMENT= Solitaire game, written in Python and the successor of PySol LICENSE= GPLv2+ GPLv3+ MIT PCW PD UCP UCJ ULG LICENSE_COMB= multi RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}random2>=0:math/py-random2@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}tkinter>0:x11-toolkits/py-tkinter@${PY_FLAVOR} \ ${PY_PILLOW} LICENSE_FILE_GPLv3+ = ${WRKSRC}/COPYING LICENSE_DISTFILES_GPLv3+ = ${PYSOLFCDIST} LICENSE_FILE_MIT= ${WRKDIR}/${CARDSETDIR}/cardset-spider/COPYRIGHT LICENSE_DISTFILES_MIT= ${CARDSETDIST} # This applies also to following cardsets: # - ${WRKDIR}/${CARDSETDIR}/cardset-rangoon-e/COPYRIGHT # - ${WRKDIR}/${CARDSETDIR}/cardset-rangoon-r/COPYRIGHT LICENSE_FILE_PCW= ${WRKDIR}/${CARDSETDIR}/cardset-rangoon-d/COPYRIGHT LICENSE_NAME_PCW= Postcardware LICENSE_PERMS_PCW= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept LICENSE_DISTFILES_PCW= ${CARDSETDIST} LICENSE_FILE_PD= ${WRKDIR}/${CARDSETDIR}/cardset-tksol/COPYRIGHT LICENSE_DISTFILES_PD= ${CARDSETDIST} LICENSE_FILE_UCP= ${WRKDIR}/${CARDSETDIR}/cardset-patience/COPYRIGHT LICENSE_NAME_UCP= Unknown Copyright / Cardset "Patience" LICENSE_PERMS_UCP= no-dist-mirror no-dist-sell no-pkg-mirror no-pkg-sell auto-accept LICENSE_DISTFILES_UCP= ${CARDSETDIST} LICENSE_FILE_UCJ= ${WRKDIR}/${CARDSETDIR}/cardset-jacoby/COPYRIGHT LICENSE_NAME_UCJ= Unknown Copyright / Cardset "Jacoby" LICENSE_PERMS_UCJ= no-dist-mirror no-dist-sell no-pkg-mirror no-pkg-sell auto-accept LICENSE_DISTFILES_UCJ= ${CARDSETDIST} LICENSE_FILE_ULG= ${WRKDIR}/${CARDSETDIR}/cardset-greywyvern/COPYRIGHT LICENSE_NAME_ULG= Unknown License / Cardset "Greywyvern" LICENSE_PERMS_ULG= no-dist-mirror no-dist-sell no-pkg-mirror no-pkg-sell auto-accept LICENSE_DISTFILES_ULG= ${CARDSETDIST} # The rest of the cardsets are licensed with the GPLv+2 LICENSE_FILE_GPLv2+ = ${WRKDIR}/${CARDSETDIR}/cardset-1567/COPYRIGHT LICENSE_DISTFILES_GPLv2+ = ${CARDSETDIST} -USES= python shebangfix tar:xz +USES= python:3.6+ shebangfix tar:xz USE_PYTHON= distutils noflavors autoplist SHEBANG_FILES= data/themes/clearlooks/convert_imgs.sh NO_ARCH= yes PLIST_FILES= share/pixmaps/pysolfc.png DATADIR= ${PREFIX}/share/PySolFC WRKSRC= ${WRKDIR}/${PYSOLFCDIR} OPTIONS_DEFINE= NLS OPTIONS_SUB= yes NLS_USES= gettext PYSOLFCDIR= PySolFC-${DISTVERSION} PYSOLFCDIST= ${PYSOLFCDIR}${EXTRACT_SUFX} CARDSETDIR= PySolFC-Cardsets-2.0 CARDSETDIST= ${CARDSETDIR}.tar.bz2 post-patch: @${MV} ${WRKSRC}/pysol.py ${WRKSRC}/pysolfc @${REINPLACE_CMD} -e 's|pysol.py|pysolfc|' ${WRKSRC}/setup.py @${REINPLACE_CMD} -e 's|^Icon.*|Icon=${PORTNAME}|' \ -e 's|^Exec.*|Exec=${PORTNAME}|' \ ${WRKSRC}/data/pysol.desktop @${FIND} ${WRKDIR} -name .thumbnails -or -name .xvpics | \ ${XARGS} ${RM} -r @${FIND} ${WRKSRC} -name "*.bak" -delete post-patch-NLS-off: @${REINPLACE_CMD} -e "s|for l in ('ru', 'ru_RU')|for l in ()|" \ ${WRKSRC}/setup.py post-install: ${RLN} ${STAGEDIR}${PREFIX}/share/icons/pysol01.png \ ${STAGEDIR}${PREFIX}/share/pixmaps/${PORTNAME}.png (cd ${WRKDIR}/${CARDSETDIR} && \ ${COPYTREE_SHARE} \* ${STAGEDIR}${DATADIR}) (cd ${WRKDIR}/${CARDSETDIR} && \ ${FIND} . -type f | ${SED} -e 's|^./|${DATADIR_REL}/|' >> ${TMPPLIST}) .include Index: head/lang/mono/Makefile =================================================================== --- head/lang/mono/Makefile (revision 560424) +++ head/lang/mono/Makefile (revision 560425) @@ -1,95 +1,95 @@ # Created by: Yukihiro Nakai # $FreeBSD$ PORTNAME= mono PORTVERSION= 5.10.1.57 PORTREVISION= 3 CATEGORIES= lang MASTER_SITES= https://download.mono-project.com/sources/mono/ DISTFILES= ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX} MAINTAINER= mono@FreeBSD.org COMMENT= Open source implementation of .NET Development Framework LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE ONLY_FOR_ARCHS= amd64 armv6 armv7 i386 powerpc BUILD_DEPENDS= p5-XML-Parser>=0:textproc/p5-XML-Parser \ bash:shells/bash \ cmake>0:devel/cmake LIB_DEPENDS= libinotify.so:devel/libinotify RUN_DEPENDS= ${PY_PILLOW} \ ca_root_nss>=0:security/ca_root_nss CONFLICTS_INSTALL= czmq-3* OPTIONS_DEFINE= MONOLITE NLS X11 OPTIONS_DEFAULT= MONOLITE X11 OPTIONS_SUB= yes MONOLITE_DESC= Use monolite to bootstrap mcs (otherwise use installed mcs) MONOLITE_DISTFILES= monolite-linux-${MONOLITE_VERSION}-latest.tar.gz:monolite MONOLITE_MASTER_SITES= http://download.mono-project.com/monolite/:monolite MONOLITE_VERSION= 1051000004 NLS_CONFIGURE_OFF= --disable-nls NLS_USES= gettext X11_USES= display:test USES= autoreconf bison compiler:c11 cpe gmake iconv libtool \ - pathfix perl5 python shebangfix tar:bzip2 + pathfix perl5 python:3.6+ shebangfix tar:bzip2 USE_PERL5= build GNU_CONFIGURE= yes USE_LDCONFIG= yes SHEBANG_FILES= scripts/mono-heapviz mono/mini/genmdesc.py mono/tests/test_lldb.py BINARY_ALIAS= python=${PYTHON_CMD} CONFIGURE_ARGS= --disable-dtrace --enable-btls CONFIGURE_ENV= ac_cv_header_sys_inotify_h=no MAKE_ENV= MONO_SHARED_DIR="${WRKDIR}" \ INSTALL_STRIP_FLAG="${STRIP}" \ TZ=UTC TEST_ARGS= -k TEST_TARGET= check PORTSCOUT= limit:^\d+\.\d+\.[1-9]\d* LOCALBASE?= /usr/local .if !exists(${LOCALBASE}/bin/mcs) OPTIONS_SLAVE= MONOLITE .endif post-extract-MONOLITE-on: ${MKDIR} ${WRKSRC}/mcs/class/lib/monolite-linux ${MV} ${WRKDIR}/monolite-linux-${MONOLITE_VERSION}-latest ${WRKSRC}/mcs/class/lib/monolite-linux/${MONOLITE_VERSION} post-patch: ${REINPLACE_CMD} -e 's|^#!/bin/bash|#!/usr/bin/env bash|g' \ ${WRKSRC}/scripts/mono-find-provides.in \ ${WRKSRC}/scripts/mono-find-requires.in \ ${WRKSRC}/scripts/mono-test-install ${FIND} ${WRKSRC} -name '*.sh' | ${XARGS} ${REINPLACE_CMD} \ -e 's|^#!/bin/bash|#!/bin/sh|g' ${SED} 's/tarball/${PORTVERSION}/' ${WRKSRC}/mono/mini/Makefile.am.in \ > ${WRKSRC}/mono/mini/Makefile.am ${REINPLACE_CMD} -e 's|/usr/share|${PREFIX}|g' \ ${WRKSRC}/mcs/class/corlib/System/Environment.cs \ ${WRKSRC}/external/corefx/src/System.Runtime.Extensions/src/System/Environment.Unix.cs ${REINPLACE_CMD} -e 's|/usr/share/.mono|${PREFIX}/share/mono|g' \ ${WRKSRC}/man/mono-configuration-crypto.1 \ ${WRKSRC}/man/mono.1 \ ${WRKSRC}/man/mozroots.1 post-configure: ${REINPLACE_CMD} -e 's|share\/man|man|g' \ ${WRKSRC}/mcs/jay/Makefile post-install: ${MKDIR} ${STAGEDIR}${PREFIX}/mono .include Index: head/lang/mono5.10/Makefile =================================================================== --- head/lang/mono5.10/Makefile (revision 560424) +++ head/lang/mono5.10/Makefile (revision 560425) @@ -1,96 +1,96 @@ # Created by: Yukihiro Nakai # $FreeBSD$ PORTNAME= mono PORTVERSION= 5.10.1.57 PORTREVISION= 3 CATEGORIES= lang MASTER_SITES= https://download.mono-project.com/sources/mono/ PKGNAMESUFFIX= 5.10 DISTFILES= ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX} MAINTAINER= mono@FreeBSD.org COMMENT= Open source implementation of .NET Development Framework LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE ONLY_FOR_ARCHS= amd64 armv6 armv7 i386 powerpc BUILD_DEPENDS= p5-XML-Parser>=0:textproc/p5-XML-Parser \ bash:shells/bash \ cmake>0:devel/cmake LIB_DEPENDS= libinotify.so:devel/libinotify RUN_DEPENDS= ${PY_PILLOW} \ ca_root_nss>=0:security/ca_root_nss CONFLICTS_INSTALL= czmq-3* mono5.20 mono6.8 OPTIONS_DEFINE= MONOLITE NLS X11 OPTIONS_DEFAULT= MONOLITE X11 OPTIONS_SUB= yes MONOLITE_DESC= Use monolite to bootstrap mcs (otherwise use installed mcs) MONOLITE_DISTFILES= monolite-linux-${MONOLITE_VERSION}-latest.tar.gz:monolite MONOLITE_MASTER_SITES= http://download.mono-project.com/monolite/:monolite MONOLITE_VERSION= 1051000004 NLS_CONFIGURE_OFF= --disable-nls NLS_USES= gettext X11_USES= display:test USES= autoreconf bison compiler:c11 cpe gmake iconv libtool \ - pathfix perl5 python shebangfix tar:bzip2 + pathfix perl5 python:3.6+ shebangfix tar:bzip2 USE_PERL5= build GNU_CONFIGURE= yes USE_LDCONFIG= yes SHEBANG_FILES= scripts/mono-heapviz mono/mini/genmdesc.py mono/tests/test_lldb.py BINARY_ALIAS= python=${PYTHON_CMD} CONFIGURE_ARGS= --disable-dtrace --enable-btls CONFIGURE_ENV= ac_cv_header_sys_inotify_h=no MAKE_ENV= MONO_SHARED_DIR="${WRKDIR}" \ INSTALL_STRIP_FLAG="${STRIP}" \ TZ=UTC TEST_ARGS= -k TEST_TARGET= check PORTSCOUT= limit:^\d+\.\d+\.[1-9]\d* LOCALBASE?= /usr/local .if !exists(${LOCALBASE}/bin/mcs) OPTIONS_SLAVE= MONOLITE .endif post-extract-MONOLITE-on: ${MKDIR} ${WRKSRC}/mcs/class/lib/monolite-linux ${MV} ${WRKDIR}/monolite-linux-${MONOLITE_VERSION}-latest ${WRKSRC}/mcs/class/lib/monolite-linux/${MONOLITE_VERSION} post-patch: ${REINPLACE_CMD} -e 's|^#!/bin/bash|#!/usr/bin/env bash|g' \ ${WRKSRC}/scripts/mono-find-provides.in \ ${WRKSRC}/scripts/mono-find-requires.in \ ${WRKSRC}/scripts/mono-test-install ${FIND} ${WRKSRC} -name '*.sh' | ${XARGS} ${REINPLACE_CMD} \ -e 's|^#!/bin/bash|#!/bin/sh|g' ${SED} 's/tarball/${PORTVERSION}/' ${WRKSRC}/mono/mini/Makefile.am.in \ > ${WRKSRC}/mono/mini/Makefile.am ${REINPLACE_CMD} -e 's|/usr/share|${PREFIX}|g' \ ${WRKSRC}/mcs/class/corlib/System/Environment.cs \ ${WRKSRC}/external/corefx/src/System.Runtime.Extensions/src/System/Environment.Unix.cs ${REINPLACE_CMD} -e 's|/usr/share/.mono|${PREFIX}/share/mono|g' \ ${WRKSRC}/man/mono-configuration-crypto.1 \ ${WRKSRC}/man/mono.1 \ ${WRKSRC}/man/mozroots.1 post-configure: ${REINPLACE_CMD} -e 's|share\/man|man|g' \ ${WRKSRC}/mcs/jay/Makefile post-install: ${MKDIR} ${STAGEDIR}${PREFIX}/mono .include Index: head/misc/cs/Makefile =================================================================== --- head/misc/cs/Makefile (revision 560424) +++ head/misc/cs/Makefile (revision 560425) @@ -1,27 +1,27 @@ # Created by: ijliao # $FreeBSD$ PORTNAME= cs PORTVERSION= 0.9.6 PORTREVISION= 2 CATEGORIES= misc MASTER_SITES= http://njhurst.com/programming/cross-stitch/ MAINTAINER= ports@FreeBSD.org COMMENT= Cross Stitch software LICENSE= GPLv2+ RUN_DEPENDS= ${PY_PILLOW} NO_BUILD= yes -USES= python:run shebangfix tar:tgz +USES= python:run,3.6+ shebangfix tar:tgz SHEBANG_FILES= xs.py PLIST_FILES= bin/xs do-install: (cd ${WRKSRC} && ${INSTALL_SCRIPT} xs.py ${STAGEDIR}${PREFIX}/bin/xs) .include Index: head/misc/mmdnn/Makefile =================================================================== --- head/misc/mmdnn/Makefile (revision 560424) +++ head/misc/mmdnn/Makefile (revision 560425) @@ -1,26 +1,26 @@ # $FreeBSD$ PORTNAME= mmdnn DISTVERSION= 0.3.1 CATEGORIES= misc python # machine-learning MAINTAINER= yuri@FreeBSD.org COMMENT= Tools to inter-operate among different deep learning frameworks LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE RUN_DEPENDS= ${PYNUMPY} \ ${PY_PILLOW} \ ${PYTHON_PKGNAMEPREFIX}protobuf>=3.6.0:devel/py-protobuf@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}six>=1.10.0:devel/py-six@${PY_FLAVOR} -USES= python +USES= python:3.6+ USE_GITHUB= yes GH_ACCOUNT= microsoft GH_PROJECT= MMdnn USE_PYTHON= distutils noflavors autoplist NO_ARCH= yes .include Index: head/print/hplip/Makefile =================================================================== --- head/print/hplip/Makefile (revision 560424) +++ head/print/hplip/Makefile (revision 560425) @@ -1,139 +1,139 @@ # Created by: amistry@am-productions.biz # $FreeBSD$ PORTNAME= hplip PORTVERSION= 3.20.6 CATEGORIES= print MASTER_SITES= SF MAINTAINER= tijl@FreeBSD.org COMMENT= Drivers and utilities for HP printers and All-in-One devices LICENSE= GPLv2+ MIT BSD3CLAUSE LICENSE_COMB= multi LICENSE_FILE= ${WRKSRC}/COPYING LIB_DEPENDS= libcupsimage.so:print/cups \ libdbus-1.so:devel/dbus RUN_DEPENDS= cups-filters>=0:print/cups-filters \ ${PYTHON_PKGNAMEPREFIX}dbus>=0:devel/py-dbus@${PY_FLAVOR} CONFLICTS_INSTALL= hpijs-[0-9]* INSTALL_TARGET= install-strip -USES= dos2unix jpeg libtool pkgconfig python shebangfix +USES= dos2unix jpeg libtool pkgconfig python:3.6+ shebangfix USE_LDCONFIG= yes SHEBANG_GLOB= *.py hpps pstotiff DOS2UNIX_FILES= scan/sane/orblite.c GNU_CONFIGURE= yes CONFIGURE_ARGS= --with-cupsbackenddir=${PREFIX}/libexec/cups/backend \ --with-cupsfilterdir=${PREFIX}/libexec/cups/filter \ --with-icondir=${DESKTOPDIR} \ --with-systraydir=${PREFIX}/etc/xdg/autostart \ --with-mimedir=${PREFIX}/share/cups/mime \ --with-docdir=${DOCSDIR} \ --with-htmldir=${DOCSDIR} \ --with-drvdir=${PREFIX}/share/cups/drv \ --disable-qt4 CONFIGURE_ENV+= PYTHONINCLUDEDIR=${PYTHON_INCLUDEDIR} CPPFLAGS+= -I${LOCALBASE}/include -I${PYTHON_INCLUDEDIR} LIBS+= -L${LOCALBASE}/lib OPTIONS_DEFINE= DOCS FAX SCAN SNMP X11 XSANE OPTIONS_DEFAULT= SCAN SNMP X11 OPTIONS_SUB= yes DOCS_CONFIGURE_ENABLE= doc-build FAX_DESC= PC Send Fax support FAX_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}reportlab>=0:print/py-reportlab@${PY_FLAVOR} FAX_CONFIGURE_ENABLE= fax-build SCAN_DESC= Scanning support SCAN_RUN_DEPENDS= ${PY_PILLOW} SCAN_LIB_DEPENDS= libsane.so:graphics/sane-backends SCAN_CONFIGURE_ENABLE= scan-build SNMP_DESC= Network/JetDirect support SNMP_USES= ssl SNMP_LIB_DEPENDS= libnetsnmp.so:net-mgmt/net-snmp SNMP_CONFIGURE_ENABLE= network-build X11_DESC= Graphical User Interface (Qt) X11_CONFIGURE_ENABLE= gui-build qt5 X11_USES= pyqt:5 X11_USE= PYQT=core_run,dbussupport_run,gui_run,widgets_run XSANE_DESC= Install XSane for scanning (implies SCAN) XSANE_IMPLIES= SCAN XSANE_RUN_DEPENDS= xsane:graphics/xsane .include .if ${PYTHON_MAJOR_VER} >= 3 RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}gobject3>=0:devel/py-gobject3@${PY_FLAVOR} .endif post-patch: @${REINPLACE_CMD} -e 's|-ldld||g;' \ -e 's|-ldl||g' \ -e 's,-lusb-1.0,-lusb,g' \ -e 's,libusb-1.0/libusb.h,libusb.h,g' \ ${WRKSRC}/configure \ ${WRKSRC}/Makefile.in @${REINPLACE_CMD} -e '/[[:space:]]install-dist_rulesDATA/ s,install-dist_rulesDATA,,' \ -e '/[[:space:]]install-dist_rulessystemDATA/ s,install-dist_rulessystemDATA,,' \ ${WRKSRC}/Makefile.in @${REINPLACE_CMD} -e 's,/etc/hp,${PREFIX}&,g' \ -e 's,/etc/cups,${LOCALBASE}&,g' \ -e 's,/etc/init.d,${LOCALBASE}/etc/rc.d,g' \ -e 's,/etc/sane.d,${LOCALBASE}&,g' \ -e 's,/usr/share,${LOCALBASE}/share,g' \ -e 's,/usr/include,${LOCALBASE}/include,g' \ ${WRKSRC}/Makefile.in \ ${WRKSRC}/base/codes.py \ ${WRKSRC}/base/g.py \ ${WRKSRC}/base/password.py \ ${WRKSRC}/base/pkit.py \ ${WRKSRC}/base/queues.py \ ${WRKSRC}/base/services.py \ ${WRKSRC}/base/utils.py \ ${WRKSRC}/check.py \ ${WRKSRC}/fax/backend/hpfax.py \ ${WRKSRC}/fax/coverpages.py \ ${WRKSRC}/fax/filters/pstotiff \ ${WRKSRC}/hplip.list.in \ ${WRKSRC}/installer/core_install.py \ ${WRKSRC}/installer/dcheck.py \ ${WRKSRC}/installer/pluginhandler.py \ ${WRKSRC}/logcapture.py \ ${WRKSRC}/prnt/cups.py \ ${WRKSRC}/prnt/filters/hpps \ ${WRKSRC}/prnt/hpcups/HPCupsFilter.cpp \ ${WRKSRC}/prnt/hpijs/globals.cpp \ ${WRKSRC}/prnt/hpijs/hpcupsfax.cpp \ ${WRKSRC}/prnt/hpijs/hpijs.cpp \ ${WRKSRC}/ui/devmgr4.py \ ${WRKSRC}/ui4/devmgr5.py \ ${WRKSRC}/ui5/devmgr5.py @${REINPLACE_CMD} -e 's/umask(0)/umask(0o022)/' \ -e 's/umask(0o111)/umask(0o133)/' \ ${WRKSRC}/base/os_utils.py \ ${WRKSRC}/base/validation.py \ ${WRKSRC}/fax/backend/hpfax.py \ ${WRKSRC}/hpdio.py \ ${WRKSRC}/installer/pluginhandler.py post-install: ${MV} ${STAGEDIR}${PREFIX}/etc/hp/hplip.conf \ ${STAGEDIR}${PREFIX}/etc/hp/hplip.conf.sample ${MKDIR} ${STAGEDIR}${DATADIR}/ui4/plugins ${MKDIR} ${STAGEDIR}/var/lib/hp post-install-SCAN-on: ${MKDIR} ${STAGEDIR}${PREFIX}/etc/sane.d/dll.d ${MV} ${STAGEDIR}${PREFIX}/etc/sane.d/dll.conf \ ${STAGEDIR}${PREFIX}/etc/sane.d/dll.d/hpaio .include Index: head/science/rdkit/Makefile =================================================================== --- head/science/rdkit/Makefile (revision 560424) +++ head/science/rdkit/Makefile (revision 560425) @@ -1,68 +1,68 @@ # $FreeBSD$ PORTNAME= rdkit DISTVERSIONPREFIX= Release_ DISTVERSION= 2020_09_3 CATEGORIES= science MAINTAINER= yuri@FreeBSD.org COMMENT= Collection of cheminformatics and machine-learning software LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/license.txt BUILD_DEPENDS= catch>0:devel/catch \ flex:textproc/flex \ rapidjson>=0:devel/rapidjson LIB_DEPENDS= libboost_system.so:devel/boost-libs \ libcoordgen.so:science/coordgenlibs \ libfreetype.so:print/freetype2 \ libmaeparser.so:science/maeparser -USES= bison:build cmake compiler:c++11-lang eigen:3 python +USES= bison:build cmake compiler:c++11-lang eigen:3 python:3.6+ USE_GITHUB= yes GH_TUPLE= rareylab:RingDecomposerLib:v1.1.3_rdkit:RingDecomposerLib/External/RingFamilies/RingDecomposerLib USE_LDCONFIG= yes CMAKE_OFF= RDK_INSTALL_INTREE RDK_USE_FLEXBISON \ RDK_INSTALL_STATIC_LIBS RDK_SWIG_STATIC RDK_PGSQL_STATIC \ RDK_OPTIMIZE_NATIVE \ RDK_BUILD_CPP_TESTS CMAKE_ARGS= -DFREEBSD_DOCSDIR:PATH=${DOCSDIR} -DCATCH_DIR=${LOCALBASE}/include/catch2 DATADIR= ${PREFIX}/share/RDKit DOCSDIR= ${PREFIX}/share/doc/RDKit PLIST_SUB= SHLIB_VER=${PORTVERSION} OPTIONS_DEFINE= PYTHON DOCS OPTIONS_DEFAULT= PYTHON OPTIONS_SUB= yes PYTHON_CMAKE_BOOL= RDK_BUILD_PYTHON_WRAPPERS PYTHON_BUILD_DEPENDS= ${PYNUMPY} PYTHON_LIB_DEPENDS= ${PY_BOOST} PYTHON_RUN_DEPENDS= ${PYNUMPY} \ ${PY_PILLOW} \ ${PYTHON_PKGNAMEPREFIX}matplotlib>0:math/py-matplotlib@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}reportlab>0:print/py-reportlab@${PY_FLAVOR} PORTDOCS= * .include .if ${ARCH} == aarch64 || ${ARCH} == amd64 || ${ARCH:Marm*} || ${ARCH} == i386 || ${ARCH:Mmips*el*} || ${ARCH} == riscv PLIST_SUB+= LITTLE_ENDIAN="" .else PLIST_SUB+= LITTLE_ENDIAN="@comment " .endif post-extract: @${MKDIR} ${WRKSRC}/External/rapidjson-1.1.0 @cd ${WRKSRC}/External/rapidjson-1.1.0 && ${LN} -s ${LOCALBASE}/include/rapidjson include post-stage: # https://github.com/rdkit/rdkit/issues/2094 #@${MKDIR} ${STAGEDIR}${PREFIX}/lib/cmake #@${MV} ${STAGEDIR}${PREFIX}/lib/*.cmake ${STAGEDIR}${PREFIX}/lib/cmake .include