Index: Mk/Uses/perl5.mk =================================================================== --- Mk/Uses/perl5.mk +++ Mk/Uses/perl5.mk @@ -42,13 +42,13 @@ USE_PERL5?= run build +.include "${PORTSDIR}/Mk/bsd.default-versions.mk" .if exists(${LOCALBASE}/bin/perl5) .sinclude "${LOCALBASE}/etc/perl5_version" .if !defined(PERL_VERSION) PERL_VERSION!= perl -e 'printf "%vd\n", $$^V;' .endif .else -.include "${PORTSDIR}/Mk/bsd.default-versions.mk" .if ${PERL5_DEFAULT} == 5.16 PERL_VERSION= 5.16.3 .elif ${PERL5_DEFAULT} == 5.18 @@ -80,14 +80,23 @@ PERL_ARCH?= mach -# there must always be a default to prevent dependency failures such -# as "ports/lang: not found" .if ${PERL_LEVEL} >= 502000 PERL_PORT?= perl5.20 +_MIN_PERL_VERSION= 5.20.1_10 +_MAX_PERL_VERSION= 5.22 .elif ${PERL_LEVEL} >= 501800 PERL_PORT?= perl5.18 -.else # ${PERL_LEVEL} < 501800 +_MIN_PERL_VERSION= 5.18.1_11 +_MAX_PERL_VERSION= 5.20 +.elif ${PERL_LEVEL} >= 501600 PERL_PORT?= perl5.16 +_MIN_PERL_VERSION= 5.16.1_18 +_MAX_PERL_VERSION= 5.18 +.else +IGNORE= Unsupported perl5 version ${PERL_VERSION} +# there must always be a default to prevent dependency failures such +# as "ports/lang: not found" +PERL_PORT?= perl${PERL5_DEFAULT} .endif SITE_PERL_REL?= lib/perl5/site_perl @@ -208,20 +217,25 @@ .endif # defined(BATCH) && !defined(IS_INTERACTIVE) .endif # configure +# the package<=>version takes only one argument, check that we have at least +# the right version, but not another major Perl version. +_PERL_DEPENDS= perl5>=${_MIN_PERL_VERSION}:${PORTSDIR}/lang/${PERL_PORT} \ + perl5<${_MAX_PERL_VERSION}:${PORTSDIR}/lang/${PERL_PORT} + .if ${_USE_PERL5:Mextract} -EXTRACT_DEPENDS+= ${PERL5}:${PORTSDIR}/lang/${PERL_PORT} +EXTRACT_DEPENDS+= ${_PERL_DEPENDS} .endif .if ${_USE_PERL5:Mpatch} -PATCH_DEPENDS+= ${PERL5}:${PORTSDIR}/lang/${PERL_PORT} +PATCH_DEPENDS+= ${_PERL_DEPENDS} .endif .if ${_USE_PERL5:Mbuild} -BUILD_DEPENDS+= ${PERL5}:${PORTSDIR}/lang/${PERL_PORT} +BUILD_DEPENDS+= ${_PERL_DEPENDS} .endif .if ${_USE_PERL5:Mrun} -RUN_DEPENDS+= ${PERL5}:${PORTSDIR}/lang/${PERL_PORT} +RUN_DEPENDS+= ${_PERL_DEPENDS} .endif .if ${_USE_PERL5:Mconfigure} Index: lang/perl5.16/Makefile =================================================================== --- lang/perl5.16/Makefile +++ lang/perl5.16/Makefile @@ -101,11 +101,14 @@ # change PKGNAME to reflect this .if ${PERL_VER} == ${PERL5_DEFAULT} PKGNAMESUFFIX= ${PERL_VERSION:C/\.[0-9]+\.[0-9]+$//} +PLIST_SUB+= DEFAULT="" .else # make PKGNAME unique among other lang/perl5.x PKGNAMESUFFIX= ${PERL_VER} # always add default perl5 pkgname to conflicts CONFLICTS_INSTALL+= perl5-* +IS_NOT_DEFAULT= true +PLIST_SUB+= DEFAULT="@comment " .endif .if defined(PERL_VENDOR_PREFIX) @@ -201,6 +204,25 @@ .endif SUB_LIST+= LINK_USRBIN=${LINK_USRBIN} +.if defined(IS_NOT_DEFAULT) +pre-everything:: + @${ECHO_CMD} "**************************************************" + @${ECHO_CMD} "" + @${ECHO_CMD} " You are installing a non default version" + @${ECHO_CMD} " of Perl. It will not install the normal" + @${ECHO_CMD} " ${PREFIX}/bin/perl." + @${ECHO_CMD} "" + @${ECHO_CMD} " If you wish to install this as your" + @${ECHO_CMD} " default Perl, add this to your" + @${ECHO_CMD} " /etc/make.conf:" + @${ECHO_CMD} " DEFAULT_VERSIONS+= perl5=${PERL_VER}" + @${ECHO_CMD} "" + @${ECHO_CMD} "**************************************************" +.if !defined(PACKAGE_BUILDING) + @sleep 15 +.endif +.endif + # Put a symlink to the future libperl.so.x.yy so that -lperl works. post-extract: ${LN} -s libperl.so.${PERL_VERSION} ${WRKSRC}/libperl.so @@ -223,7 +245,11 @@ ${MKDIR} ${STAGEDIR}${SITE_MAN3} ${MKDIR} ${STAGEDIR}${SITE_ARCH}/auto ${MKDIR} ${STAGEDIR}${SITE_PERL}/auto +.if defined(IS_NOT_DEFAULT) + ${RM} ${STAGEDIR}${PREFIX}/bin/perl +.else ${LN} ${STAGEDIR}${PREFIX}/bin/perl${PERL_VERSION} ${STAGEDIR}${PREFIX}/bin/perl5 +.endif ${LN} -sf libperl.so.${PERL_VERSION} ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/CORE/libperl.so ${LN} -sf libperl.so.${PERL_VERSION} ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/CORE/libperl.so.${PERL_VER} ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/perl${PERL_VERSION} Index: lang/perl5.16/pkg-plist =================================================================== --- lang/perl5.16/pkg-plist +++ lang/perl5.16/pkg-plist @@ -13,8 +13,8 @@ bin/instmodsh bin/json_pp bin/libnetcfg -bin/perl -bin/perl5 +%%DEFAULT%%bin/perl +%%DEFAULT%%bin/perl5 bin/perl%%PERL_VERSION%% bin/perlbug bin/perldoc Index: lang/perl5.18/Makefile =================================================================== --- lang/perl5.18/Makefile +++ lang/perl5.18/Makefile @@ -118,11 +118,14 @@ # change PKGNAME to reflect this .if ${PERL_VER} == ${PERL5_DEFAULT} PKGNAMESUFFIX= ${PERL_VERSION:C/\.[0-9]+\.[0-9]+$//} +PLIST_SUB+= DEFAULT="" .else # make PKGNAME unique among other lang/perl5.x PKGNAMESUFFIX= ${PERL_VER} # always add default perl5 pkgname to conflicts CONFLICTS_INSTALL+= perl5-* +IS_NOT_DEFAULT= true +PLIST_SUB+= DEFAULT="@comment " .endif .if defined(PERL_VENDOR_PREFIX) @@ -179,6 +182,25 @@ .endif SUB_LIST+= LINK_USRBIN=${LINK_USRBIN} +.if defined(IS_NOT_DEFAULT) +pre-everything:: + @${ECHO_CMD} "**************************************************" + @${ECHO_CMD} "" + @${ECHO_CMD} " You are installing a non default version" + @${ECHO_CMD} " of Perl. It will not install the normal" + @${ECHO_CMD} " ${PREFIX}/bin/perl." + @${ECHO_CMD} "" + @${ECHO_CMD} " If you wish to install this as your" + @${ECHO_CMD} " default Perl, add this to your" + @${ECHO_CMD} " /etc/make.conf:" + @${ECHO_CMD} " DEFAULT_VERSIONS+= perl5=${PERL_VER}" + @${ECHO_CMD} "" + @${ECHO_CMD} "**************************************************" +.if !defined(PACKAGE_BUILDING) + @sleep 15 +.endif +.endif + # Put a symlink to the future libperl.so.x.yy so that -lperl works. post-extract: ${LN} -s libperl.so.${PERL_VERSION} ${WRKSRC}/libperl.so @@ -201,7 +223,11 @@ ${MKDIR} ${STAGEDIR}${SITE_MAN3} ${MKDIR} ${STAGEDIR}${SITE_ARCH}/auto ${MKDIR} ${STAGEDIR}${SITE_PERL}/auto +.if defined(IS_NOT_DEFAULT) + ${RM} ${STAGEDIR}${PREFIX}/bin/perl +.else ${LN} ${STAGEDIR}${PREFIX}/bin/perl${PERL_VERSION} ${STAGEDIR}${PREFIX}/bin/perl5 +.endif ${LN} -sf libperl.so.${PERL_VERSION} ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/CORE/libperl.so ${LN} -sf libperl.so.${PERL_VERSION} ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/CORE/libperl.so.${PERL_VER} ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/perl${PERL_VERSION} Index: lang/perl5.18/pkg-plist =================================================================== --- lang/perl5.18/pkg-plist +++ lang/perl5.18/pkg-plist @@ -13,8 +13,8 @@ bin/instmodsh bin/json_pp bin/libnetcfg -bin/perl -bin/perl5 +%%DEFAULT%%bin/perl +%%DEFAULT%%bin/perl5 bin/perl%%PERL_VERSION%% bin/perlbug bin/perldoc Index: lang/perl5.20/Makefile =================================================================== --- lang/perl5.20/Makefile +++ lang/perl5.20/Makefile @@ -122,11 +122,14 @@ # change PKGNAME to reflect this .if ${PERL_VER} == ${PERL5_DEFAULT} PKGNAMESUFFIX= ${PERL_VERSION:C/\.[0-9]+\.[0-9]+$//} +PLIST_SUB+= DEFAULT="" .else # make PKGNAME unique among other lang/perl5.x PKGNAMESUFFIX= ${PERL_VER} # always add default perl5 pkgname to conflicts CONFLICTS_INSTALL+= perl5-* +IS_NOT_DEFAULT= true +PLIST_SUB+= DEFAULT="@comment " .endif .if defined(PERL_VENDOR_PREFIX) @@ -176,6 +179,25 @@ WITH_PTHREAD= yes .endif +.if defined(IS_NOT_DEFAULT) +pre-everything:: + @${ECHO_CMD} "**************************************************" + @${ECHO_CMD} "" + @${ECHO_CMD} " You are installing a non default version" + @${ECHO_CMD} " of Perl. It will not install the normal" + @${ECHO_CMD} " ${PREFIX}/bin/perl." + @${ECHO_CMD} "" + @${ECHO_CMD} " If you wish to install this as your" + @${ECHO_CMD} " default Perl, add this to your" + @${ECHO_CMD} " /etc/make.conf:" + @${ECHO_CMD} " DEFAULT_VERSIONS+= perl5=${PERL_VER}" + @${ECHO_CMD} "" + @${ECHO_CMD} "**************************************************" +.if !defined(PACKAGE_BUILDING) + @sleep 15 +.endif +.endif + # Put a symlink to the future libperl.so.x.yy so that -lperl works. post-extract: ${LN} -s libperl.so.${PERL_VERSION} ${WRKSRC}/libperl.so @@ -198,7 +220,11 @@ ${MKDIR} ${STAGEDIR}${SITE_MAN3} ${MKDIR} ${STAGEDIR}${SITE_ARCH}/auto ${MKDIR} ${STAGEDIR}${SITE_PERL}/auto +.if defined(IS_NOT_DEFAULT) + ${RM} ${STAGEDIR}${PREFIX}/bin/perl +.else ${LN} ${STAGEDIR}${PREFIX}/bin/perl${PERL_VERSION} ${STAGEDIR}${PREFIX}/bin/perl5 +.endif ${LN} -sf libperl.so.${PERL_VERSION} ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/CORE/libperl.so ${LN} -sf libperl.so.${PERL_VERSION} ${STAGEDIR}${PREFIX}/${_ARCH_LIB}/CORE/libperl.so.${PERL_VER} ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/perl${PERL_VERSION} Index: lang/perl5.20/pkg-plist =================================================================== --- lang/perl5.20/pkg-plist +++ lang/perl5.20/pkg-plist @@ -10,8 +10,8 @@ bin/instmodsh bin/json_pp bin/libnetcfg -bin/perl -bin/perl5 +%%DEFAULT%%bin/perl +%%DEFAULT%%bin/perl5 bin/perl%%PERL_VERSION%% bin/perlbug bin/perldoc