Index: head/Mk/Uses/perl5.mk =================================================================== --- head/Mk/Uses/perl5.mk (revision 471347) +++ head/Mk/Uses/perl5.mk (revision 471348) @@ -1,323 +1,319 @@ # $FreeBSD$ # # Provide support to use perl5 # # PERL5 - Set to full path of perl5, either in the system or # installed from a port. # PERL - Set to full path of perl5, either in the system or # installed from a port, but without the version number. # Use this if you need to replace "#!" lines in scripts. # PERL_VERSION - Full version of perl5 (see below for current value). # # PERL_VER - Short version of perl5 (major.minor without patchlevel) # # PERL_LEVEL - Perl version as an integer of the form MNNNPP, where # M is major version, N is minor version, and P is # the patch level. E.g., PERL_VERSION=5.14.4 would give # a PERL_LEVEL of 501404. This can be used in comparisons # to determine if the version of perl is high enough, # whether a particular dependency is needed, etc. # PERL_ARCH - Directory name of architecture dependent libraries # (value: mach). # PERL_PORT - Name of the perl port that is installed # (for example: perl5.24) # SITE_PERL - Directory name where site specific perl packages go. # This value is added to PLIST_SUB. # SITE_ARCH - Directory name where arch site specific perl packages go. # This value is added to PLIST_SUB. # USE_PERL5 - If set, this port uses perl5 in one or more of the extract, # patch, build, run or test phases. # It can also have configure, modbuild and modbuildtiny when # the port needs to run Makefile.PL, Build.PL and a # Module::Build::Tiny flavor of Build.PL. # # MAINTAINER: perl@FreeBSD.org .if !defined(_INCLUDE_USES_PERL5_MK) _INCLUDE_USES_PERL5_MK= yes . if !empty(perl5_ARGS) IGNORE= Incorrect 'USES+=perl5:${perl5_ARGS}' perl5 takes no arguments . endif USE_PERL5?= run build # When adding a version, please keep the comment in # Mk/bsd.default-versions.mk in sync. -. if ${PERL5_DEFAULT} == 5.22 -.include "${PORTSDIR}/lang/perl5.22/version.mk" -. elif ${PERL5_DEFAULT} == 5.24 +. if ${PERL5_DEFAULT} == 5.24 .include "${PORTSDIR}/lang/perl5.24/version.mk" . elif ${PERL5_DEFAULT} == 5.26 .include "${PORTSDIR}/lang/perl5.26/version.mk" . elif ${PERL5_DEFAULT} == 5.28 .include "${PORTSDIR}/lang/perl5.28/version.mk" . elif ${PERL5_DEFAULT} == devel .include "${PORTSDIR}/lang/perl5-devel/version.mk" # Force PERL_PORT here in case two identical PERL_VERSION. PERL_PORT?= perl5-devel . else IGNORE= Invalid perl5 version ${PERL5_DEFAULT} . endif PERL_VER?= ${PERL_VERSION:C/\.[0-9]+$//} . if !defined(PERL_LEVEL) && defined(PERL_VERSION) perl_major= ${PERL_VERSION:C|^([1-9]+).*|\1|} _perl_minor= 00${PERL_VERSION:C|^([1-9]+)\.([0-9]+).*|\2|} perl_minor= ${_perl_minor:C|^.*(...)|\1|} . if ${perl_minor} >= 100 perl_minor= ${PERL_VERSION:C|^([1-9]+)\.([0-9][0-9][0-9]).*|\2|} perl_patch= ${PERL_VERSION:C|^.*(..)|\1|} . else # ${perl_minor} < 100 _perl_patch= 0${PERL_VERSION:C|^([1-9]+)\.([0-9]+)\.*|0|} perl_patch= ${_perl_patch:C|^.*(..)|\1|} . endif # ${perl_minor} < 100 PERL_LEVEL= ${perl_major}${perl_minor}${perl_patch} . else PERL_LEVEL=0 . endif # !defined(PERL_LEVEL) && defined(PERL_VERSION) PERL_ARCH?= mach # there must always be a default to prevent dependency failures such # as "ports/lang: not found". Also, perl5-devel is taken care in the # perl5_default file, or up there in the default versions selection. # When adding a version, please keep the comment in # Mk/bsd.default-versions.mk in sync. . if ${PERL_LEVEL} >= 502800 PERL_PORT?= perl5.28 . elif ${PERL_LEVEL} >= 502600 PERL_PORT?= perl5.26 -. elif ${PERL_LEVEL} >= 502400 +. else # ${PERL_LEVEL} < 502600 PERL_PORT?= perl5.24 -. else # ${PERL_LEVEL} < 502400 -PERL_PORT?= perl5.22 . endif SITE_PERL_REL?= lib/perl5/site_perl SITE_PERL?= ${LOCALBASE}/${SITE_PERL_REL} SITE_ARCH_REL?= ${SITE_PERL_REL}/${PERL_ARCH}/${PERL_VER} SITE_ARCH?= ${LOCALBASE}/${SITE_ARCH_REL} SITE_MAN3_REL?= ${SITE_PERL_REL}/man/man3 SITE_MAN3?= ${PREFIX}/${SITE_MAN3_REL} SITE_MAN1_REL?= ${SITE_PERL_REL}/man/man1 SITE_MAN1?= ${PREFIX}/${SITE_MAN1_REL} PERL5?= ${LOCALBASE}/bin/perl${PERL_VERSION} PERL?= ${LOCALBASE}/bin/perl CONFIGURE_ENV+= ac_cv_path_PERL=${PERL} ac_cv_path_PERL_PATH=${PERL} \ PERL_USE_UNSAFE_INC=1 MAKE_ENV+= PERL_USE_UNSAFE_INC=1 QA_ENV+= SITE_ARCH_REL=${SITE_ARCH_REL} LIBPERL=libperl.so.${PERL_VER} # Define the want perl first if defined . if ${USE_PERL5:M5*} want_perl_sign= ${USE_PERL5:M5*:C|^[0-9.]+||} want_perl_ver= ${USE_PERL5:M5*:S|${want_perl_sign}$||} want_perl_major= ${want_perl_ver:C|\..*||} _want_perl_minor= ${want_perl_ver:S|^${want_perl_major}||:S|^.||:C|\..*||} _want_perl_patch= ${want_perl_ver:S|^${want_perl_major}||:S|^.${_want_perl_minor}||:S|^.||:C|\..*||} want_perl_minor= ${_want_perl_minor:S|^|000|:C|.*(...)|\1|} want_perl_patch= ${_want_perl_patch:S|^|00|:C|.*(..)|\1|} USE_PERL5_LEVEL= ${want_perl_major}${want_perl_minor}${want_perl_patch} . endif # All but version _USE_PERL5= ${USE_PERL5:N5*} # Mask unspecified components. E.g. this way "5" will match any "5.x.x". . if empty(_want_perl_minor) masked_PERL_LEVEL= ${PERL_LEVEL:C|(.....)$|00000|} . elif empty(_want_perl_patch) masked_PERL_LEVEL= ${PERL_LEVEL:C|(..)$|00|} . else masked_PERL_LEVEL= ${PERL_LEVEL} . endif . if defined(want_perl_sign) . if ${want_perl_sign} == "+" . if ${USE_PERL5_LEVEL} > ${masked_PERL_LEVEL} USE_PERL5_REASON?= requires Perl ${want_perl_ver} or later, install lang/perl${want_perl_major}.${want_perl_minor:C|^0||} and try again IGNORE= ${USE_PERL5_REASON} . endif # ${USE_PERL5_LEVEL} > ${masked_PERL_LEVEL} . elif ${want_perl_sign} == "" . if ${USE_PERL5_LEVEL} != ${masked_PERL_LEVEL} USE_PERL5_REASON?= requires Perl ${want_perl_ver} exactly IGNORE= ${USE_PERL5_REASON} . endif # ${USE_PERL5_LEVEL} != ${masked_PERL_LEVEL} . elif ${want_perl_sign} == "-" . if ${USE_PERL5_LEVEL} <= ${masked_PERL_LEVEL} USE_PERL5_REASON?= requires a Perl version earlier than ${want_perl_ver} IGNORE= ${USE_PERL5_REASON} . endif # ${USE_PERL5_LEVEL} <= ${masked_PERL_LEVEL} . else # wrong suffix IGNORE= improper use of USE_PERL5 . endif . endif _USES_POST+= perl5 .endif .if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_PERL5_POST_MK) _INCLUDE_USES_PERL5_POST_MK= yes PLIST_SUB+= PERL_VERSION=${PERL_VERSION} \ PERL_VER=${PERL_VER} \ PERL5_MAN1=${SITE_MAN1_REL} \ PERL5_MAN3=${SITE_MAN3_REL} \ SITE_PERL=${SITE_PERL_REL} \ SITE_ARCH=${SITE_ARCH_REL} # handle perl5 specific manpages . for sect in 3 . if defined(P5MAN${sect}) _MANPAGES+= ${P5MAN${sect}:S%^%${PREFIX}/lib/perl5/${PERL_VER}/man/man${sect}/%} . endif . endfor MANDIRS+= ${PREFIX}/${SITE_PERL_REL}/man . if ${_USE_PERL5:Mmodbuild} || ${_USE_PERL5:Mmodbuildtiny} _USE_PERL5+= configure ALL_TARGET?= # empty CONFIGURE_ARGS+=--install_path lib="${PREFIX}/${SITE_PERL_REL}" \ --install_path arch="${PREFIX}/${SITE_ARCH_REL}" \ --install_path script="${PREFIX}/bin" \ --install_path bin="${PREFIX}/bin" \ --install_path libdoc="${MAN3PREFIX}/man/man3" \ --install_path bindoc="${MAN1PREFIX}/man/man1" CONFIGURE_SCRIPT?= Build.PL PL_BUILD?= Build CONFIGURE_ARGS+=--destdir ${STAGEDIR} DESTDIRNAME= --destdir . if ${_USE_PERL5:Mmodbuild} CONFIGURE_ARGS+=--perl="${PERL}" . if ${PORTNAME} != Module-Build BUILD_DEPENDS+= p5-Module-Build>=0.4206:devel/p5-Module-Build . endif CONFIGURE_ARGS+=--create_packlist 1 . endif . if ${_USE_PERL5:Mmodbuildtiny} . if ${PORTNAME} != Module-Build-Tiny BUILD_DEPENDS+= p5-Module-Build-Tiny>=0.039:devel/p5-Module-Build-Tiny . endif CONFIGURE_ARGS+=--create_packlist 1 . endif . elif ${_USE_PERL5:Mconfigure} CONFIGURE_ARGS+=INSTALLDIRS="site" . endif # modbuild . if ${_USE_PERL5:Mconfigure} _USE_PERL5+= build run # Disable AutoInstall from attempting to install from CPAN directly in # the case of missing dependencies. This causes the build to loop on # the build cluster asking for interactive input. CONFIGURE_ENV+= PERL_EXTUTILS_AUTOINSTALL="--skipdeps" . if defined(BATCH) && !defined(IS_INTERACTIVE) CONFIGURE_ENV+= PERL_MM_USE_DEFAULT="YES" . endif # defined(BATCH) && !defined(IS_INTERACTIVE) . endif # configure . if ${_USE_PERL5:Mextract} EXTRACT_DEPENDS+= ${PERL5_DEPEND}:lang/${PERL_PORT} . endif . if ${_USE_PERL5:Mpatch} PATCH_DEPENDS+= ${PERL5_DEPEND}:lang/${PERL_PORT} . endif . if ${_USE_PERL5:Mbuild} BUILD_DEPENDS+= ${PERL5_DEPEND}:lang/${PERL_PORT} . endif . if ${_USE_PERL5:Mrun} RUN_DEPENDS+= ${PERL5_DEPEND}:lang/${PERL_PORT} . endif . if ${_USE_PERL5:Mtest} TEST_DEPENDS+= ${PERL5_DEPEND}:lang/${PERL_PORT} . endif . if ${_USE_PERL5:Mconfigure} CONFIGURE_ARGS+= CC="${CC}" CCFLAGS="${CFLAGS}" LD="${CC}" PREFIX="${PREFIX}" \ INSTALLPRIVLIB="${PREFIX}/lib" INSTALLARCHLIB="${PREFIX}/lib" CONFIGURE_SCRIPT?= Makefile.PL MAN3PREFIX?= ${PREFIX}/${SITE_PERL_REL} MAN1PREFIX?= ${PREFIX}/${SITE_PERL_REL} .undef HAS_CONFIGURE . if !target(do-configure) do-configure: @if [ -f ${SCRIPTDIR}/configure ]; then \ cd ${.CURDIR} && ${SETENV} ${SCRIPTS_ENV} ${SH} \ ${SCRIPTDIR}/configure; \ fi @cd ${CONFIGURE_WRKSRC} && \ ${SETENV} ${CONFIGURE_ENV} \ ${PERL5} ${CONFIGURE_CMD} ${CONFIGURE_ARGS} . if !${_USE_PERL5:Mmodbuild*} @cd ${CONFIGURE_WRKSRC} && \ ${PERL5} -pi -e 's/ doc_(perl|site|\$$\(INSTALLDIRS\))_install$$//' Makefile . endif # ! modbuild . endif # !target(do-configure) . endif # configure . if ${_USE_PERL5:Mmodbuild*} . if !target(do-build) do-build: @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PERL5} ${PL_BUILD} ${ALL_TARGET} ${MAKE_ARGS}) . endif # !target(do-build) . if !${USES:Mgmake} . if !target(do-install) do-install: @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PERL5} ${PL_BUILD} ${INSTALL_TARGET} ${MAKE_ARGS}) . endif # !target(do-install) . endif # ! USES=gmake . endif # modbuild PACKLIST_DIR?= ${PREFIX}/${SITE_ARCH_REL}/auto # In all those, don't use - before the command so that the user does # not wonder what has been ignored by this message "*** Error code 1 (ignored)" _USES_install+= 560:fix-perl-things fix-perl-things: # Remove STAGEDIR from .packlist and add the file to the plist. @(if [ -d ${STAGEDIR}${PACKLIST_DIR} ] ; then \ ${FIND} ${STAGEDIR}${PACKLIST_DIR} -name .packlist | while read f ; do \ ${SED} -i '' 's|^${STAGEDIR}||' "$$f"; \ ${ECHO} $$f | ${SED} -e 's|^${STAGEDIR}||' >> ${TMPPLIST}; \ done \ fi) || : # Starting with perl 5.20, the empty bootstrap files are not installed any more # by ExtUtils::MakeMaker. As we don't need them anyway, remove them. # Module::Build continues to install them, so remove the files unconditionally. @${FIND} ${STAGEDIR} -name '*.bs' -size 0 -delete || : # Some ports use their own way of building perl modules and generate # perllocal.pod, remove it here so that those ports don't include it # by mistake in their plists. It is sometime compressed, so use a # shell glob for the removal. Also, remove the directories that # contain it to not leave orphans directories around. @${RM} ${STAGEDIR}${PREFIX}/lib/perl5/${PERL_VER}/${PERL_ARCH}/perllocal.pod* || : @${RMDIR} -p ${STAGEDIR}${PREFIX}/lib/perl5/${PERL_VER}/${PERL_ARCH} 2>/dev/null || : # Starting at ExtUtils::MakeMaker 7.06 and Perl 5.25.1, the base README.pod is # no longer manified into a README.3, as the README.pod is installed and can be # read with perldoc, remove the README.3 files that may be generated. @[ -d "${STAGEDIR}${SITE_MAN3}" ] && \ ${FIND} ${STAGEDIR}${SITE_MAN3} -name '*::README.3' -delete || : . if !target(do-test) && (!empty(USE_PERL5:Mmodbuild*) || !empty(USE_PERL5:Mconfigure)) TEST_TARGET?= test TEST_WRKSRC?= ${BUILD_WRKSRC} do-test: . if ${USE_PERL5:Mmodbuild*} @cd ${TEST_WRKSRC}/ && ${SETENV} ${TEST_ENV} ${PERL5} ${PL_BUILD} ${TEST_TARGET} ${TEST_ARGS} . elif ${USE_PERL5:Mconfigure} @cd ${TEST_WRKSRC}/ && ${SETENV} ${TEST_ENV} ${MAKE_CMD} ${TEST_ARGS} ${TEST_TARGET} . endif # USE_PERL5:Mmodbuild* . endif # do-test .endif # defined(_POSTMKINCLUDED) Index: head/Mk/bsd.default-versions.mk =================================================================== --- head/Mk/bsd.default-versions.mk (revision 471347) +++ head/Mk/bsd.default-versions.mk (revision 471348) @@ -1,133 +1,133 @@ # $FreeBSD$ # # MAINTAINER: ports@FreeBSD.org # # Provide default versions for ports with multiple versions selectable # by the user. # # Users who want to override these defaults can easily do so by defining # DEFAULT_VERSIONS in their make.conf as follows: # # DEFAULT_VERSIONS= perl5=5.20 ruby=2.0 .if !defined(_INCLUDE_BSD_DEFAULT_VERSIONS_MK) _INCLUDE_BSD_DEFAULT_VERSIONS_MK= yes LOCALBASE?= /usr/local .for lang in APACHE BDB COROSYNC EMACS FIREBIRD FORTRAN FPC GCC GHOSTSCRIPT \ LINUX LUA MYSQL PERL5 PGSQL PHP PYTHON PYTHON2 PYTHON3 RUBY SSL TCLTK .if defined(${lang}_DEFAULT) ERROR+= "The variable ${lang}_DEFAULT is set and it should only be defined through DEFAULT_VERSIONS+=${lang:tl}=${${lang}_DEFAULT} in /etc/make.conf" .endif #.undef ${lang}_DEFAULT .endfor .for lang in ${DEFAULT_VERSIONS} _l= ${lang:C/=.*//g} ${_l:tu}_DEFAULT= ${lang:C/.*=//g} .endfor # Possible values: 2.2, 2.4 APACHE_DEFAULT?= 2.4 # Possible values: 48, 5, 6 BDB_DEFAULT?= 5 # Possible values: 2, 3 COROSYNC_DEFAULT?= 2 # Possible_values: full canna nox devel_full devel_nox #EMACS_DEFAULT?= let the flavor be the default if not explicitly set # Possible values: 2.5 FIREBIRD_DEFAULT?= 2.5 # Possible values: flang (experimental), gfortran FORTRAN_DEFAULT?= gfortran # Possible values: 3.0.4 FPC_DEFAULT?= 3.0.4 # Possible values: 4.9, 5, 6, 7 GCC_DEFAULT?= 6 # Possible values: 7, 8, 9, agpl GHOSTSCRIPT_DEFAULT?= agpl # Possible values: 1.8.2 LAZARUS_DEFAULT?= 1.8.2 .if ${ARCH} == amd64 # Possible values: c6, c6_64, c7 LINUX_DEFAULT?= c6_64 .else # Possible values: c6 LINUX_DEFAULT?= c6 .endif # Possible values: 5.1, 5.2, 5.3 LUA_DEFAULT?= 5.2 # Possible values: 5.5, 5.6, 5.7, 8.0, 5.5m, 10.0m, 10.1m, 10.2m, 5.5p, 5.6p, 5.7p, 5.6w MYSQL_DEFAULT?= 5.6 -# Possible values: 5.22, 5.24, 5.26, 5.28, devel +# Possible values: 5.24, 5.26, 5.28, devel .if !exists(${LOCALBASE}/bin/perl) || (!defined(_PORTS_ENV_CHECK) && \ defined(PACKAGE_BUILDING)) PERL5_DEFAULT?= 5.26 .elif !defined(PERL5_DEFAULT) # There's no need to replace development versions, like "5.23" with "devel" # because 1) nobody is supposed to use it outside of poudriere, and 2) it must # be set manually in /etc/make.conf in the first place, and we're never getting # in here. .if !defined(_PERL5_FROM_BIN) _PERL5_FROM_BIN!= perl -e 'printf "%vd\n", $$^V;' .endif _EXPORTED_VARS+= _PERL5_FROM_BIN PERL5_DEFAULT:= ${_PERL5_FROM_BIN:R} .endif # Possible values: 9.3, 9.4, 9.5, 9.6, 10 PGSQL_DEFAULT?= 9.5 # Possible values: 5.6, 7.0, 7.1, 7.2 PHP_DEFAULT?= 5.6 # Possible values: 2.7, 3.4, 3.5, 3.6 PYTHON_DEFAULT?= 2.7 # Possible values: 2.7 PYTHON2_DEFAULT?= 2.7 # Possible values: 3.4, 3.5, 3.6 PYTHON3_DEFAULT?= 3.6 # Possible values: 2.3, 2.4, 2.5 RUBY_DEFAULT?= 2.4 # Possible values: 4.5, 4.6, 4.7, 4.8 SAMBA_DEFAULT?= 4.6 # Possible values: base, openssl, openssl-devel, libressl, libressl-devel .if !defined(SSL_DEFAULT) # If no preference was set, check for an installed base version # but give an installed port preference over it. . if !defined(SSL_DEFAULT) && \ !exists(${DESTDIR}/${LOCALBASE}/lib/libcrypto.so) && \ exists(${DESTDIR}/usr/include/openssl/opensslv.h) SSL_DEFAULT= base . else . if exists(${DESTDIR}/${LOCALBASE}/lib/libcrypto.so) . if defined(PKG_BIN) # find installed port and use it for dependency . if !defined(OPENSSL_INSTALLED) . if defined(DESTDIR) PKGARGS= -c ${DESTDIR} . else PKGARGS= . endif OPENSSL_INSTALLED!= ${PKG_BIN} ${PKGARGS} which -qo ${LOCALBASE}/lib/libcrypto.so || : . endif . if defined(OPENSSL_INSTALLED) && !empty(OPENSSL_INSTALLED) SSL_DEFAULT:= ${OPENSSL_INSTALLED:T} WARNING+= "You have ${OPENSSL_INSTALLED} installed but do not have DEFAULT_VERSIONS+=ssl=${SSL_DEFAULT} set in your make.conf" . endif . else check-makevars:: @${ECHO_MSG} "You have a ${LOCALBASE}/lib/libcrypto.so file installed, but the framework is unable" @${ECHO_MSG} "to determine what port it comes from." @${ECHO_MSG} "Add DEFAULT_VERSIONS+=ssl= to your /etc/make.conf and try again." @${FALSE} . endif . endif . endif # Make sure we have a default in the end SSL_DEFAULT?= base .endif # Possible values: 8.5, 8.6, 8.7 TCLTK_DEFAULT?= 8.6 # Possible values: 4, 5 VARNISH_DEFAULT?= 4 .endif