Index: Mk/Scripts/do-depends.sh =================================================================== --- Mk/Scripts/do-depends.sh +++ Mk/Scripts/do-depends.sh @@ -141,6 +141,11 @@ export FLAVOR="${origin##*@}" origin=${origin%@*} ;; + *~*/*) ;; # Ignore ~ in the path which would not be a subpackage + *~*) + subpkg=${origin##*~} + origin=${origin%~*} + ;; esac depends_args="${dp_DEPENDS_ARGS}" Index: Mk/Scripts/functions.sh =================================================================== --- Mk/Scripts/functions.sh +++ Mk/Scripts/functions.sh @@ -7,7 +7,8 @@ # Strip (owner,group,perm) from keywords _strip_perms() { sed -Ee 's/^@\([^)]*\)[[:space:]]+//' \ - -e 's/^(@[[:alpha:]]+)\([^)]*\)[[:space:]]+/\1 /' + -e 's/^(@[[:alpha:]]+)\([^)]*\)[[:space:]]+/\1 /' \ + -e 's/^@@[[:alnum:]]+@@//' } # Expand TMPPLIST to absolute paths, splitting files and dirs into separate Index: Mk/Uses/python.mk =================================================================== --- Mk/Uses/python.mk +++ Mk/Uses/python.mk @@ -94,6 +94,11 @@ # noflavors - Disable automatic creation of flavors if they would # otherwise be created and they are not wanted. # +# nometapkg - Disable automatic generic meta package generation. +# This is used when flavors are enabled to generate a +# py-foo meta package that always installs the default +# version. +# # 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 @@ -257,8 +262,8 @@ # List all valid USE_PYTHON features here _VALID_PYTHON_FEATURES= allflavors autoplist concurrent cython cython_run \ - distutils flavors noegginfo noflavors optsuffix \ - py3kplist pythonprefix + distutils flavors noegginfo noflavors nometapkg \ + optsuffix py3kplist pythonprefix _INVALID_PYTHON_FEATURES= .for var in ${USE_PYTHON} . if empty(_VALID_PYTHON_FEATURES:M${var}) @@ -509,6 +514,22 @@ RUN_DEPENDS+= cython-${PYTHON_VER}:lang/cython@${PY_FLAVOR} .endif +# So: +# - we are doing flavors +# - we want the metapkg +# - we are doing the default flavor +# - our PKGNAMEPREFIX matches PYTHON_PKGNAMEPREFIX +.if defined(_PYTHON_FEATURE_FLAVORS) && \ + !defined(_PYTHON_FEATURE_NOMETAPKG) && \ + ${FLAVOR} == ${FLAVORS:[1]} && \ + !empty(PKGNAMEPREFIX:M${PYTHON_PKGNAMEPREFIX}*) +SUBPACKAGES+= py_meta +_PKGS.py_meta= ${PKGBASE:S/${PYTHON_PKGNAMEPREFIX}/py-/} +DESCR.py_meta= ${DESCR} +SELF_DEPENDS.py_meta= main +COMMENT.py_meta= ${COMMENT} (default version) +.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" Index: Mk/bsd.options.mk =================================================================== --- Mk/bsd.options.mk +++ Mk/bsd.options.mk @@ -457,6 +457,20 @@ _OPTIONS_${target}?= .endfor +# Handle subpackages before the rest to be able to handle options helpers with +# subpackages. +.for opt in ${_REALLY_ALL_POSSIBLE_OPTIONS} +. if ${PORT_OPTIONS:M${opt}} +. if defined(${opt}_SUBPACKAGES) +SUBPACKAGES+= ${${opt}_SUBPACKAGES} +. endif +. else +. if defined(${opt}_SUBPACKAGES_OFF) +SUBPACKAGES+= ${${opt}_SUBPACKAGES_OFF} +. endif +. endif +.endfor + .for opt in ${_REALLY_ALL_POSSIBLE_OPTIONS} # PLIST_SUB PLIST_SUB?= @@ -542,6 +556,11 @@ . if defined(${opt}_${deptype}_DEPENDS) ${deptype}_DEPENDS+= ${${opt}_${deptype}_DEPENDS} . endif +. for p in ${SUBPACKAGES} +. if defined(${opt}_${deptype}_DEPENDS.${p}) +${deptype}_DEPENDS.${p}+= ${${opt}_${deptype}_DEPENDS.${p}} +. endif +. endfor . endfor . for target in ${_OPTIONS_TARGETS} _target= ${target:C/:.*//} @@ -613,6 +632,11 @@ . if defined(${opt}_${deptype}_DEPENDS_OFF) ${deptype}_DEPENDS+= ${${opt}_${deptype}_DEPENDS_OFF} . endif +. for p in ${SUBPACKAGES} +. if defined(${opt}_${deptype}_DEPENDS_OFF.${p}) +${deptype}_DEPENDS.${p}+= ${${opt}_${deptype}_DEPENDS_OFF.${p}} +. endif +. endfor . endfor . for target in ${_OPTIONS_TARGETS} _target= ${target:C/:.*//} Index: Mk/bsd.port.mk =================================================================== --- Mk/bsd.port.mk +++ Mk/bsd.port.mk @@ -2215,6 +2215,7 @@ _PKGMESSAGES+= ${PKGMESSAGE} TMPPLIST?= ${WRKDIR}/.PLIST.mktmp +_PLIST?= ${WRKDIR}/.PLIST .if defined(PKG_NOCOMPRESS) PKG_SUFX?= .tar @@ -2602,20 +2603,76 @@ PKGREPOSITORYSUBDIR?= All PKGREPOSITORY?= ${PACKAGES}/${PKGREPOSITORYSUBDIR} -.if exists(${PACKAGES}) -PACKAGES:= ${PACKAGES:S/:/\:/g} -_HAVE_PACKAGES= yes -PKGFILE?= ${PKGREPOSITORY}/${PKGNAME}${PKG_SUFX} -.else -PKGFILE?= ${.CURDIR}/${PKGNAME}${PKG_SUFX} -.endif -WRKDIR_PKGFILE= ${WRKDIR}/pkg/${PKGNAME}${PKG_SUFX} # The "latest version" link -- ${PKGNAME} minus everthing after the last '-' PKGLATESTREPOSITORY?= ${PACKAGES}/Latest PKGBASE?= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX} PKGLATESTFILE= ${PKGLATESTREPOSITORY}/${PKGBASE}${PKG_SUFX} +_PKGS= ${PKGBASE} +PORTS_FEATURES+= SUBPACKAGES +.if defined(SUBPACKAGES) +. if ${SUBPACKAGES:Mmain} +DEV_ERROR+= "SUBPACKAGES cannot contain 'main', it is a reserved value" +. endif +. for f in ${SUBPACKAGES} +. if ${f:C/[[:lower:][:digit:]_]//g} +_BAD_SUBPACKAGE_NAMES+= ${f} +. endif +. endfor +. if !empty(_BAD_SUBPACKAGE_NAMES) +DEV_ERROR+= "SUBPACKAGES contains subpackages that are not all [a-z0-9_]: ${_BAD_SUBPACKAGE_NAMES}" +. endif +.endif +.for p in ${SUBPACKAGES} +# If a FRAMEWORK generated package needs to override its subpackage package +# name, it can do so with this mechanism. +.if !defined(_PKGS.${p}) +_PKGS.${p}= ${PKGBASE}-${p} +.endif +_PKGS+= ${_PKGS.${p}} +_P.${_PKGS.${p}}= .${p} +.endfor + +.if !defined(_DID_SUBPACKAGES_HELPERS) +_DID_SUBPACKAGES_HELPERS= yes +_SUBPACKAGE_HELPERS_FILE= DESCR PKGINSTALL PKGDEINSTALL PKGMESSAGE \ + PKGPREINSTALL PKGPOSTINSTALL PKGPREDEINSTALL PKGPOSTDEINSTALL \ + PKGPREUPGRADE PKGPOSTUPGRADE PKGUPGRADE + +. for p in ${SUBPACKAGES} +# These overwrite the current value +. for v in ${_SUBPACKAGE_HELPERS_FILE} +${v}.${p}?= ${$v}.$p +. endfor +_PKGMESSAGES.${p}= ${PKGMESSAGE}.${p} +# XXX: for testing, and maybe kept afterwards +. if !exists(${DESCR.${p}}) +DESCR.${p}= ${DESCR} +DEV_WARNING+= "DESCR.${p} needs to point to an existing file." +. endif +# XXX: Thoughts? +COMMENT.${p}?= ${COMMENT} (subpkg: ${p}) +. endfor +.endif + + +.if exists(${PACKAGES}) +-PACKAGES:= ${PACKAGES:S/:/\:/g} +_HAVE_PACKAGES= yes +_PKGDIR= ${PKGREPOSITORY} +.else +_PKGDIR= ${.CURDIR} +.endif +. for p in ${_PKGS} +PKGNAME${_P.${p}}= ${p}-${PKGVERSION} +PKGFILE${_P.${p}}= ${_PKGDIR}/${PKGNAME${_P.${p}}}${PKG_SUFX} +. endfor +_EXTRA_PACKAGE_TARGET_DEP+= ${_PKGDIR} +.for p in ${_PKGS} +WRKDIR_PKGFILE${_P.${p}}= ${WRKDIR}/pkg/${p}-${PKGVERSION}${PKG_SUFX} +.endfor + CONFIGURE_SCRIPT?= configure CONFIGURE_CMD?= ./${CONFIGURE_SCRIPT} CONFIGURE_TARGET?= ${HOSTARCH}-portbld-${OPSYS:tl}${OSREL} @@ -3391,10 +3448,6 @@ _EXTRA_PACKAGE_TARGET_DEP+= ${PKGFILE} _PORTS_DIRECTORIES+= ${PKGREPOSITORY} -${PKGFILE}: ${WRKDIR_PKGFILE} ${PKGREPOSITORY} - @${LN} -f ${WRKDIR_PKGFILE} ${PKGFILE} 2>/dev/null \ - || ${CP} -f ${WRKDIR_PKGFILE} ${PKGFILE} - . if ${PKGORIGIN} == "ports-mgmt/pkg" || ${PKGORIGIN} == "ports-mgmt/pkg-devel" _EXTRA_PACKAGE_TARGET_DEP+= ${PKGLATESTREPOSITORY} _PORTS_DIRECTORIES+= ${PKGLATESTREPOSITORY} @@ -3406,16 +3459,29 @@ .endif -# from here this will become a loop for subpackages -${WRKDIR_PKGFILE}: ${TMPPLIST} create-manifest ${WRKDIR}/pkg - @if ! ${SETENV} ${PKG_ENV} FORCE_POST="${_FORCE_POST_PATTERNS}" ${PKG_CREATE} ${PKG_CREATE_ARGS} -m ${METADIR} -p ${TMPPLIST} -f ${PKG_SUFX:S/.//} -o ${WRKDIR}/pkg ${PKGNAME}; then \ +.for p in ${_PKGS} +${_PLIST}.${p}: ${TMPPLIST} + @if [ "${PKGBASE}" = "${p}" ]; then \ + ${SED} "/^@comment /d; /@@/d" ${TMPPLIST} > ${.TARGET} ; \ + else \ + ${SED} -n "s/@@${p:S/${PKGBASE}-//}@@//p" ${TMPPLIST} > ${.TARGET} ; \ + fi + +${WRKDIR_PKGFILE${_P.${p}}}: ${_PLIST}.${p} create-manifest.${p} ${WRKDIR}/pkg + @echo "===> Building ${p}-${PKGVERSION}" + @if ! ${SETENV} ${PKG_ENV} FORCE_POST="${_FORCE_POST_PATTERNS}" ${PKG_CREATE} ${PKG_CREATE_ARGS} -m ${METADIR}.${p} -p ${_PLIST}.${p} -f ${PKG_SUFX:S/.//} -o ${WRKDIR}/pkg ${PKGNAME}; then \ cd ${.CURDIR} && eval ${MAKE} delete-package >/dev/null; \ exit 1; \ fi - # -# Temporary will be later dynamically added per subpackages -_EXTRA_PACKAGE_TARGET_DEP+= ${WRKDIR_PKGFILE} -# This will be the end of the loop + +_EXTRA_PACKAGE_TARGET_DEP+= ${WRKDIR_PKGFILE${_P.${p}}} + +${PKGFILE${_P.${p}}}: ${WRKDIR_PKGFILE${_P.${p}}} + @${LN} -f ${WRKDIR_PKGFILE${_P.${p}}} ${PKGFILE${_P.${p}}} 2>/dev/null \ + || ${CP} -f ${WRKDIR_PKGFILE${_P.${p}}} ${PKGFILE${_P.${p}}} + +_EXTRA_PACKAGE_TARGET_DEP+= ${PKGFILE${_P.${p}}} +.endfor .if !target(do-package) PKG_CREATE_ARGS= -r ${STAGEDIR} @@ -3427,14 +3493,18 @@ .if !target(delete-package) delete-package: - @${ECHO_MSG} "===> Deleting package for ${PKGNAME}" +. for p in ${_PKGS} + @${ECHO_MSG} "===> Deleting package for ${p}" # When staging, the package may only be in the workdir if not root - @${RM} ${PKGFILE} ${WRKDIR_PKGFILE} 2>/dev/null || : + @${RM} ${PKGFILE${_P.${p}}} ${WRKDIR_PKGFILE${_P.${p}}} 2>/dev/null || : +. endfor .endif .if !target(delete-package-list) delete-package-list: - @${ECHO_CMD} "[ -f ${PKGFILE} ] && (${ECHO_CMD} deleting ${PKGFILE}; ${RM} ${PKGFILE})" +. for p in ${_PKGS} + @${ECHO_CMD} "[ -f ${PKGFILE${_P.${p}}} ] && (${ECHO_CMD} deleting ${PKGFILE${_P.${p}}}; ${RM} ${PKGFILE${_P.${p}}})" +. endfor .endif # Used by scripts and users to install a package from local repository. @@ -3446,13 +3516,16 @@ .if defined(INSTALLS_DEPENDS) _INSTALL_PKG_ARGS+= -A .endif -install-package: - @if [ -f "${WRKDIR}/pkg/${PKGNAME}${PKG_SUFX}" ]; then \ - _pkgfile="${WRKDIR_PKGFILE}"; \ +.for p in ${_PKGS} +install-package: install-package.${p} +install-package.${p}: + @if [ -f "${WRKDIR_PKGFILE${_P.${p}}}" ]; then \ + _pkgfile="${WRKDIR_PKGFILE${_P.${p}}}"; \ else \ - _pkgfile="${PKGFILE}"; \ + _pkgfile="${PKGFILE${_P.${p}}}"; \ fi; \ ${PKG_ADD} ${_INSTALL_PKG_ARGS} $${_pkgfile} +.endfor .endif @@ -3641,7 +3714,7 @@ test-message: @${ECHO_MSG} "===> Testing for ${PKGNAME}" package-message: - @${ECHO_MSG} "===> Building package for ${PKGNAME}" + @${ECHO_MSG} "===> Building packages for ${PKGNAME}" # Empty pre-* and post-* targets @@ -3712,14 +3785,16 @@ ${SU_CMD} "${MAKE} ${.TARGET}" @${ECHO_MSG} "===> Returning to user credentials" .else - @${ECHO_MSG} "===> Deinstalling for ${PKGBASE}" - @if ${PKG_INFO} -e ${PKGBASE}; then \ - p=`${PKG_INFO} -q -O ${PKGBASE}`; \ +.for _p in ${_PKGS} + @${ECHO_MSG} "===> Deinstalling for ${_p}" + @if ${PKG_INFO} -e ${_p}; then \ + p=`${PKG_INFO} -q -O ${_p}`; \ ${ECHO_MSG} "===> Deinstalling $${p}"; \ - ${PKG_DELETE} -f ${PKGBASE} ; \ + ${PKG_DELETE} -f ${_p} ; \ else \ - ${ECHO_MSG} "===> ${PKGBASE} not installed, skipping"; \ + ${ECHO_MSG} "===> ${_p} not installed, skipping"; \ fi +.endfor @${RM} ${INSTALL_COOKIE} ${PACKAGE_COOKIE} .endif .endif @@ -3955,7 +4030,7 @@ repackage: pre-repackage package pre-repackage: - @${RM} ${PACKAGE_COOKIE} + @${RM} ${PACKAGE_COOKIE} ${TMPPLIST}* .endif # Build a package but don't check the cookie for installation, also don't @@ -3973,10 +4048,13 @@ depends: pkg-depends extract-depends patch-depends lib-depends fetch-depends build-depends run-depends .for deptype in PKG EXTRACT PATCH FETCH BUILD LIB RUN TEST +.for p in ${_PKGS} +${deptype}_DEPENDS_ALL+= ${${deptype}_DEPENDS${_P.${p}}} +.endfor ${deptype:tl}-depends: -.if defined(${deptype}_DEPENDS) && !defined(NO_DEPENDS) +.if !empty(${deptype}_DEPENDS_ALL) && !defined(NO_DEPENDS) @${SETENV} \ - dp_RAWDEPENDS="${${deptype}_DEPENDS}" \ + dp_RAWDEPENDS="${${deptype}_DEPENDS_ALL}" \ dp_DEPTYPE="${deptype}_DEPENDS" \ dp_DEPENDS_TARGET="${DEPENDS_TARGET}" \ dp_DEPENDS_PRECLEAN="${DEPENDS_PRECLEAN}" \ @@ -4005,7 +4083,7 @@ # Dependency lists: both build and runtime, recursive. Print out directory names. -_UNIFIED_DEPENDS=${PKG_DEPENDS} ${EXTRACT_DEPENDS} ${PATCH_DEPENDS} ${FETCH_DEPENDS} ${BUILD_DEPENDS} ${LIB_DEPENDS} ${RUN_DEPENDS} ${TEST_DEPENDS} +_UNIFIED_DEPENDS=${PKG_DEPENDS_ALL} ${EXTRACT_DEPENDS_ALL} ${PATCH_DEPENDS_ALL} ${FETCH_DEPENDS_ALL} ${BUILD_DEPENDS_ALL} ${LIB_DEPENDS_ALL} ${RUN_DEPENDS_ALL} ${TEST_DEPENDS_ALL} _DEPEND_SPECIALS= ${_UNIFIED_DEPENDS:M*\:*\:*:C,^[^:]*:([^:]*):.*$,\1,} .for d in ${_UNIFIED_DEPENDS:M*\:/*} @@ -4057,10 +4135,10 @@ ALL-DEPENDS-FLAVORS-LIST= ${DEPENDS-LIST} -f -r ${_UNIFIED_DEPENDS:Q} DEINSTALL-DEPENDS-FLAVORS-LIST= ${DEPENDS-LIST} -f -r ${_UNIFIED_DEPENDS:N${PKG_DEPENDS}:Q} MISSING-DEPENDS-LIST= ${DEPENDS-LIST} -m ${_UNIFIED_DEPENDS:Q} -BUILD-DEPENDS-LIST= ${DEPENDS-LIST} "${PKG_DEPENDS} ${EXTRACT_DEPENDS} ${PATCH_DEPENDS} ${FETCH_DEPENDS} ${BUILD_DEPENDS} ${LIB_DEPENDS}" -RUN-DEPENDS-LIST= ${DEPENDS-LIST} "${LIB_DEPENDS} ${RUN_DEPENDS}" -TEST-DEPENDS-LIST= ${DEPENDS-LIST} ${TEST_DEPENDS:Q} -CLEAN-DEPENDS-LIST= ${DEPENDS-LIST} -wr ${_UNIFIED_DEPENDS:Q} +BUILD-DEPENDS-LIST= ${DEPENDS-LIST_ALL} "${PKG_DEPENDS_ALL} ${EXTRACT_DEPENDS_ALL} ${PATCH_DEPENDS_ALL} ${FETCH_DEPENDS_ALL} ${BUILD_DEPENDS_ALL} ${LIB_DEPENDS_ALL}" +RUN-DEPENDS-LIST= ${DEPENDS-LIST_ALL} "${LIB_DEPENDS_ALL} ${RUN_DEPENDS_ALL}" +TEST-DEPENDS-LIST= ${DEPENDS-LIST} ${TEST_DEPENDS_ALL:Q} +CLEAN-DEPENDS-LIST= ${DEPENDS-LIST} -wr ${_UNIFIED_DEPENDS:Q} CLEAN-DEPENDS-LIMITED-LIST= ${DEPENDS-LIST} -w ${_UNIFIED_DEPENDS:Q} .if !target(clean-depends) @@ -4148,7 +4226,7 @@ @${ECHO_MSG} "===> Fetching all required distfiles for ${PKGNAME} and dependencies" .for deptype in PKG EXTRACT PATCH FETCH BUILD RUN .if defined(${deptype}_DEPENDS) - @targ=fetch; deps="${${deptype}_DEPENDS}"; ${FETCH_LIST} + @targ=fetch; deps="${${deptype}_DEPENDS_ALL}"; ${FETCH_LIST} .endif .endfor .endif @@ -4160,7 +4238,7 @@ .if !defined(NO_DEPENDS) .for deptype in PKG EXTRACT PATCH FETCH BUILD RUN .if defined(${deptype}_DEPENDS) - @targ=fetch-list; deps="${${deptype}_DEPENDS}"; ${FETCH_LIST} + @targ=fetch-list; deps="${${deptype}_DEPENDS_ALL}"; ${FETCH_LIST} .endif .endfor .endif @@ -4199,7 +4277,7 @@ @${PACKAGE-DEPENDS-LIST} .endif -_LIB_RUN_DEPENDS= ${LIB_DEPENDS} ${RUN_DEPENDS} +_LIB_RUN_DEPENDS= ${LIB_DEPENDS_ALL} ${RUN_DEPENDS_ALL} PACKAGE-DEPENDS-LIST?= \ if [ "${CHILD_DEPENDS}" ]; then \ installed=$$(${PKG_INFO} -qO ${PKGORIGIN} 2>/dev/null || \ @@ -4246,56 +4324,71 @@ fi; \ done -ACTUAL-PACKAGE-DEPENDS?= \ +# FIXME: SELF_DEPENDS can only be used to depend on sub packages whose package +# name has not been overrided by the framework, otherwise the assumption made +# bellow that the package name is "PKGBASE-$$self" is broken. +.for p in ${_PKGS} +ACTUAL-PACKAGE-DEPENDS${_P.${p}}?= \ depfiles="" ; \ - for lib in ${LIB_DEPENDS:C/\:.*//}; do \ + for lib in ${LIB_DEPENDS${_P.${p}}:C/\:.*//}; do \ depfiles="$$depfiles `${SETENV} LIB_DIRS="${LIB_DIRS}" LOCALBASE="${LOCALBASE}" ${SH} ${SCRIPTSDIR}/find-lib.sh $${lib}`" ; \ done ; \ - ${SETENV} PKG_BIN="${PKG_BIN}" ${SH} ${SCRIPTSDIR}/actual-package-depends.sh $${depfiles} ${RUN_DEPENDS:C/(.*)\:.*/"\1"/} + for self in ${SELF_DEPENDS${_P.${p}}}; do \ + if [ "$$self" = "main" ]; then \ + printf "\"%s\": {origin: \"%s\", version: \"%s\"}\n" ${PKGBASE} ${PKGORIGIN} ${PKGVERSION}; \ + else \ + printf "\"%s-%s\": {origin: \"%s\", version: \"%s\"}\n" ${PKGBASE} $$self ${PKGORIGIN} ${PKGVERSION}; \ + fi ; \ + done ; \ + ${SETENV} PKG_BIN="${PKG_BIN}" ${SH} ${SCRIPTSDIR}/actual-package-depends.sh $${depfiles} ${RUN_DEPENDS${_P.${p}}:C/(.*)\:.*/"\1"/} +.endfor PKG_NOTES_ENV?= .for note in ${PKG_NOTES} PKG_NOTES_ENV+= dp_PKG_NOTE_${note}=${PKG_NOTE_${note}:Q} .endfor -create-manifest: +.for p in ${_PKGS} +create-manifest: create-manifest.${p} +create-manifest.${p}: @${SETENV} \ - dp_SCRIPTSDIR='${SCRIPTSDIR}' \ - dp_ACTUAL_PACKAGE_DEPENDS='${ACTUAL-PACKAGE-DEPENDS}' \ - dp_CATEGORIES='${CATEGORIES:u:S/$/,/}' \ - dp_COMMENT=${COMMENT:Q} \ - dp_COMPLETE_OPTIONS_LIST='${COMPLETE_OPTIONS_LIST}' \ - dp_DEPRECATED=${DEPRECATED:Q} \ - dp_DESCR='${DESCR}' \ - dp_EXPIRATION_DATE='${EXPIRATION_DATE}' \ - dp_GROUPS='${GROUPS:u:S/$/,/}' \ - dp_LICENSE='${LICENSE:u:S/$/,/}' \ - dp_LICENSE_COMB='${LICENSE_COMB}' \ - dp_MAINTAINER='${MAINTAINER}' \ - dp_METADIR='${METADIR}' \ - dp_NO_ARCH='${NO_ARCH}' \ - dp_PKGBASE='${PKGBASE}' \ - dp_PKGDEINSTALL='${PKGDEINSTALL}' \ - dp_PKGINSTALL='${PKGINSTALL}' \ - dp_PKGMESSAGES='${_PKGMESSAGES}' \ - dp_PKGORIGIN='${PKGORIGIN}' \ - dp_PKGPOSTDEINSTALL='${PKGPOSTDEINSTALL}' \ - dp_PKGPOSTINSTALL='${PKGPOSTINSTALL}' \ - dp_PKGPOSTUPGRADE='${PKGPOSTUPGRADE}' \ - dp_PKGPREDEINSTALL='${PKGPREDEINSTALL}' \ - dp_PKGPREINSTALL='${PKGPREINSTALL}' \ - dp_PKGPREUPGRADE='${PKGPREUPGRADE}' \ - dp_PKGUPGRADE='${PKGUPGRADE}' \ - dp_PKGVERSION='${PKGVERSION}' \ - dp_PKG_BIN='${PKG_BIN}' \ - dp_PKG_IGNORE_DEPENDS='${PKG_IGNORE_DEPENDS}' \ - dp_PKG_NOTES='${PKG_NOTES}' \ - dp_PORT_OPTIONS='${PORT_OPTIONS}' \ - dp_PREFIX='${PREFIX}' \ - dp_USERS='${USERS:u:S/$/,/}' \ - dp_WWW='${WWW}' \ - ${PKG_NOTES_ENV} \ + dp_SCRIPTSDIR='${SCRIPTSDIR}' \ + dp_ACTUAL_PACKAGE_DEPENDS='${ACTUAL-PACKAGE-DEPENDS${_P.${p}}}' \ + dp_CATEGORIES='${CATEGORIES:u:S/$/,/}' \ + dp_COMMENT=${COMMENT${_P.${p}}:Q} \ + dp_COMPLETE_OPTIONS_LIST='${COMPLETE_OPTIONS_LIST}' \ + dp_DEPRECATED=${DEPRECATED:Q} \ + dp_DESCR='${DESCR${_P.${p}}}' \ + dp_EXPIRATION_DATE='${EXPIRATION_DATE}' \ + dp_GROUPS='${GROUPS:u:S/$/,/}' \ + dp_LICENSE='${LICENSE:u:S/$/,/}' \ + dp_LICENSE_COMB='${LICENSE_COMB}' \ + dp_MAINTAINER='${MAINTAINER}' \ + dp_METADIR='${METADIR}.${p}' \ + dp_NO_ARCH='${NO_ARCH}' \ + dp_PKGBASE='${p}' \ + dp_PKGDEINSTALL='${PKGDEINSTALL${_P.${p}}}' \ + dp_PKGINSTALL='${PKGINSTALL${_P.${p}}}' \ + dp_PKGMESSAGES='${_PKGMESSAGES${_P.${p}}}' \ + dp_PKGORIGIN='${PKGORIGIN}' \ + dp_PKGPOSTDEINSTALL='${PKGPOSTDEINSTALL${_P.${p}}}' \ + dp_PKGPOSTINSTALL='${PKGPOSTINSTALL${_P.${p}}}' \ + dp_PKGPOSTUPGRADE='${PKGPOSTUPGRADE${_P.${p}}}' \ + dp_PKGPREDEINSTALL='${PKGPREDEINSTALL${_P.${p}}}' \ + dp_PKGPREINSTALL='${PKGPREINSTALL${_P.${p}}}' \ + dp_PKGPREUPGRADE='${PKGPREUPGRADE${_P.${p}}}' \ + dp_PKGUPGRADE='${PKGUPGRADE${_P.${p}}}' \ + dp_PKGVERSION='${PKGVERSION}' \ + dp_PKG_BIN='${PKG_BIN}' \ + dp_PKG_IGNORE_DEPENDS='${PKG_IGNORE_DEPENDS}' \ + dp_PKG_NOTES='${PKG_NOTES}' \ + dp_PORT_OPTIONS='${PORT_OPTIONS}' \ + dp_PREFIX='${PREFIX}' \ + dp_USERS='${USERS:u:S/$/,/}' \ + dp_WWW='${WWW}' \ + ${PKG_NOTES_ENV} \ ${SH} ${SCRIPTSDIR}/create-manifest.sh +.endfor # Print out package names. @@ -4303,8 +4396,11 @@ package-depends: @${PACKAGE-DEPENDS-LIST} | ${AWK} '{print $$1":"$$3}' -actual-package-depends: - @${ACTUAL-PACKAGE-DEPENDS} +.for p in ${_PKGS} +actual-package-depends${_P.${p}}: + @${ACTUAL-PACKAGE-DEPENDS${_P.${p}}} +.endfor + # Build packages for port and dependencies @@ -4350,12 +4446,12 @@ # first to avoid gratuitous breakage. . if !target(describe) -_EXTRACT_DEPENDS=${EXTRACT_DEPENDS:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} -_PATCH_DEPENDS=${PATCH_DEPENDS:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} -_FETCH_DEPENDS=${FETCH_DEPENDS:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} -_LIB_DEPENDS=${LIB_DEPENDS:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} -_BUILD_DEPENDS=${BUILD_DEPENDS:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} ${_LIB_DEPENDS} -_RUN_DEPENDS=${RUN_DEPENDS:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} ${_LIB_DEPENDS} +_EXTRACT_DEPENDS=${EXTRACT_DEPENDS_ALL:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} +_PATCH_DEPENDS=${PATCH_DEPENDS_ALL:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} +_FETCH_DEPENDS=${FETCH_DEPENDS_ALL:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} +_LIB_DEPENDS=${LIB_DEPENDS_ALL:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} +_BUILD_DEPENDS=${BUILD_DEPENDS_ALL:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} ${_LIB_DEPENDS} +_RUN_DEPENDS=${RUN_DEPENDS_ALL:C/^[^ :]+:([^ :@]+)(@[^ :]+)?(:[^ :]+)?/\1/:O:u:C,(^[^/]),${PORTSDIR}/\1,} ${_LIB_DEPENDS} . if exists(${DESCR}) _DESCR=${DESCR} . else @@ -4488,6 +4584,11 @@ @for file in ${PLIST_FILES}; do \ ${ECHO_CMD} $${file} | ${SED} ${PLIST_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} >> ${TMPPLIST}; \ done +.for p in ${_PKGS:[2..-1]} + @for file in ${PLIST_FILES${_P.${p}}}; do \ + ${ECHO_CMD} $${file} | ${SED} ${PLIST_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} -e 's/^/@@${_P.${p}:S/^.//}@@/' >> ${TMPPLIST}; \ + done +.endfor .if !empty(PLIST) .for f in ${PLIST} @if [ -f "${f}" ]; then \ @@ -4500,6 +4601,11 @@ @${ECHO_CMD} ${dir} | ${SED} ${PLIST_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} -e 's,^,@dir ,' >> ${TMPPLIST} .endfor +.for p in ${_PKGS:[2..-1]} +.for dir in ${PLIST_DIRS${_P.${p}}} + @${ECHO_CMD} ${dir} | ${SED} ${PLIST_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} -e 's,^,@@${_P.${p}:S/^.//}@@@dir ,' >> ${TMPPLIST} +.endfor +.endfor .endif ${TMPPLIST}: @@ -4653,20 +4759,20 @@ pretty-flavors-package-names: .PHONY .if empty(FLAVORS) - @${ECHO_CMD} "no flavor: ${PKGNAME}" + @${ECHO_CMD} "no flavor: ${_PKGS}" .else .for f in ${FLAVORS} @${ECHO_CMD} -n "${f}: " - @cd ${.CURDIR} && ${SETENV} FLAVOR=${f} ${MAKE} -B -V PKGNAME + @cd ${.CURDIR} && ${SETENV} -i FLAVOR=${f} ${MAKE} -B -V _PKGS .endfor .endif flavors-package-names: .PHONY .if empty(FLAVORS) - @${ECHO_CMD} "${PKGNAME}" + @${ECHO_CMD} "${_PKGS}" .else .for f in ${FLAVORS} - @cd ${.CURDIR} && ${SETENV} FLAVOR=${f} ${MAKE} -B -V PKGNAME + @cd ${.CURDIR} && ${SETENV} -i FLAVOR=${f} ${MAKE} -B -V _PKGS | ${XARGS} -n 1 .endfor .endif @@ -4675,17 +4781,20 @@ STAGE_ARGS= -i ${STAGEDIR} .if !defined(NO_PKG_REGISTER) -fake-pkg: +. for p in ${_PKGS} +fake-pkg: fake-pkg.${p} +fake-pkg.${p}: ${_PLIST}.${p} ${METADIR}.${p} .if defined(INSTALLS_DEPENDS) @${ECHO_MSG} "===> Registering installation for ${PKGNAME} as automatic" - @${SETENV} ${PKG_ENV} FORCE_POST="${_FORCE_POST_PATTERNS}" ${PKG_REGISTER} -d ${STAGE_ARGS} -m ${METADIR} -f ${TMPPLIST} + @${SETENV} ${PKG_ENV} FORCE_POST="${_FORCE_POST_PATTERNS}" ${PKG_REGISTER} -d ${STAGE_ARGS} -m ${METADIR}.${p} -f ${_PLIST}.${p} .else @${ECHO_MSG} "===> Registering installation for ${PKGNAME}" - @${SETENV} ${PKG_ENV} FORCE_POST="${_FORCE_POST_PATTERNS}" ${PKG_REGISTER} ${STAGE_ARGS} -m ${METADIR} -f ${TMPPLIST} -.endif - @${RM} -r ${METADIR} + @${SETENV} ${PKG_ENV} FORCE_POST="${_FORCE_POST_PATTERNS}" ${PKG_REGISTER} ${STAGE_ARGS} -m ${METADIR}.${p} -f ${_PLIST}.${p} .endif + @${RM} -r ${METADIR.${p}} +.endfor .endif +.endif # !target(fake-pkg) # Depend is generally meaningless for arbitrary ports, but if someone wants # one they can override this. This is just to catch people who've gotten into Index: devel/git/Makefile =================================================================== --- devel/git/Makefile +++ devel/git/Makefile @@ -17,6 +17,11 @@ LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/COPYING +SELF_DEPENDS.perl= main +SELF_DEPENDS.gitweb= perl +SELF_DEPENDS.send-email= perl +SELF_DEPENDS.subversion= perl + CONFLICTS_INSTALL?= git-gui-[0-9]* git-lite-[0-9]* USERS= git_daemon @@ -58,6 +63,10 @@ SUBTREE SVN OPTIONS_SUB= yes +.if defined(PACKAGE_BUILDING) +OPTIONS_DEFAULT+= SVN +.endif + CONTRIB_DESC= Install contributed scripts CURL_DESC= Install curl support (provides HTTPS transport) CVS_DESC= Enable CVS support @@ -73,12 +82,14 @@ PERL_USES= perl5 PERL_CONFIGURE_WITH= perl=${PERL} -PERL_BUILD_DEPENDS= p5-Error>=0:lang/p5-Error -PERL_RUN_DEPENDS= p5-Error>=0:lang/p5-Error +PERL_BUILD_DEPENDS.perl= p5-Error>=0:lang/p5-Error +PERL_RUN_DEPENDS.perl= p5-Error>=0:lang/p5-Error PERL_MAKE_ARGS_OFF= NO_PERL=1 +PERL_SUBPACKAGES= perl GITWEB_IMPLIES= PERL -GITWEB_RUN_DEPENDS= p5-CGI>=0:www/p5-CGI +GITWEB_RUN_DEPENDS.gitweb= p5-CGI>=0:www/p5-CGI +GITWEB_SUBPACKAGES= gitweb PCRE_LIB_DEPENDS= libpcre.so:devel/pcre PCRE_CONFIGURE_WITH= libpcre1 @@ -87,8 +98,9 @@ PCRE2_CONFIGURE_WITH= libpcre SEND_EMAIL_IMPLIES= PERL -SEND_EMAIL_RUN_DEPENDS= p5-Authen-SASL>=0:security/p5-Authen-SASL \ +SEND_EMAIL_RUN_DEPENDS.send-email= p5-Authen-SASL>=0:security/p5-Authen-SASL \ p5-IO-Socket-SSL>=0:security/p5-IO-Socket-SSL +SEND_EMAIL_SUBPACKAGES= send_email ICONV_USES= iconv ICONV_MAKE_ARGS_OFF= NO_ICONV=1 @@ -110,8 +122,10 @@ # to have git use devel/subversion18 it will be brought in through # devel/p5-subversion if you set WITH_SUBVERSION_VER=18. Otherwise # devel/subversion will be brought in. -SVN_RUN_DEPENDS= p5-Term-ReadKey>=0:devel/p5-Term-ReadKey \ +SVN_IMPLIES= PERL +SVN_RUN_DEPENDS.subversion= p5-Term-ReadKey>=0:devel/p5-Term-ReadKey \ p5-subversion>=0:devel/p5-subversion +SVN_SUBPACKAGES= subversion SUBTREE_BUILD_DEPENDS= xmlto:textproc/xmlto \ asciidoc:textproc/asciidoc \ Index: devel/git/pkg-descr.subversion =================================================================== --- /dev/null +++ devel/git/pkg-descr.subversion @@ -0,0 +1,3 @@ +Git bindings to interact with a subversion repository. + +WWW: http://git-scm.org/ Index: devel/git/pkg-plist =================================================================== --- devel/git/pkg-plist +++ devel/git/pkg-plist @@ -16,16 +16,16 @@ %%PERL%%%%SITE_PERL%%/Git/LoadCPAN/Error.pm %%PERL%%%%SITE_PERL%%/Git/LoadCPAN/Mail/Address.pm %%PERL%%%%SITE_PERL%%/Git/Packet.pm -%%PERL%%%%SITE_PERL%%/Git/SVN.pm -%%PERL%%%%SITE_PERL%%/Git/SVN/Editor.pm -%%PERL%%%%SITE_PERL%%/Git/SVN/Fetcher.pm -%%PERL%%%%SITE_PERL%%/Git/SVN/GlobSpec.pm -%%PERL%%%%SITE_PERL%%/Git/SVN/Log.pm -%%PERL%%%%SITE_PERL%%/Git/SVN/Memoize/YAML.pm -%%PERL%%%%SITE_PERL%%/Git/SVN/Migration.pm -%%PERL%%%%SITE_PERL%%/Git/SVN/Prompt.pm -%%PERL%%%%SITE_PERL%%/Git/SVN/Ra.pm -%%PERL%%%%SITE_PERL%%/Git/SVN/Utils.pm +%%SVN%%@@subversion@@%%SITE_PERL%%/Git/SVN.pm +%%SVN%%@@subversion@@%%SITE_PERL%%/Git/SVN/Editor.pm +%%SVN%%@@subversion@@%%SITE_PERL%%/Git/SVN/Fetcher.pm +%%SVN%%@@subversion@@%%SITE_PERL%%/Git/SVN/GlobSpec.pm +%%SVN%%@@subversion@@%%SITE_PERL%%/Git/SVN/Log.pm +%%SVN%%@@subversion@@%%SITE_PERL%%/Git/SVN/Memoize/YAML.pm +%%SVN%%@@subversion@@%%SITE_PERL%%/Git/SVN/Migration.pm +%%SVN%%@@subversion@@%%SITE_PERL%%/Git/SVN/Prompt.pm +%%SVN%%@@subversion@@%%SITE_PERL%%/Git/SVN/Ra.pm +%%SVN%%@@subversion@@%%SITE_PERL%%/Git/SVN/Utils.pm libexec/git-core/git libexec/git-core/git-add libexec/git-core/git-add--interactive @@ -160,7 +160,7 @@ libexec/git-core/git-rev-parse libexec/git-core/git-revert libexec/git-core/git-rm -%%SEND_EMAIL%%libexec/git-core/git-send-email +%%SEND_EMAIL%%@@send_email@@libexec/git-core/git-send-email libexec/git-core/git-send-pack libexec/git-core/git-sh-i18n libexec/git-core/git-sh-i18n--envsubst @@ -179,7 +179,7 @@ libexec/git-core/git-submodule libexec/git-core/git-submodule--helper %%SUBTREE%%libexec/git-core/git-subtree -%%SVN%%libexec/git-core/git-svn +%%SVN%%@@subversion@@libexec/git-core/git-svn libexec/git-core/git-switch libexec/git-core/git-symbolic-ref libexec/git-core/git-tag @@ -341,7 +341,7 @@ man/man1/git-rev-parse.1.gz man/man1/git-revert.1.gz man/man1/git-rm.1.gz -%%SEND_EMAIL%%man/man1/git-send-email.1.gz +%%SEND_EMAIL%%@@send_email@@man/man1/git-send-email.1.gz man/man1/git-send-pack.1.gz man/man1/git-sh-i18n--envsubst.1.gz man/man1/git-sh-i18n.1.gz @@ -359,7 +359,7 @@ man/man1/git-stripspace.1.gz man/man1/git-submodule.1.gz %%SUBTREE%%man/man1/git-subtree.1.gz -%%SVN%%man/man1/git-svn.1.gz +%%SVN%%@@subversion@@man/man1/git-svn.1.gz man/man1/git-switch.1.gz man/man1/git-symbolic-ref.1.gz man/man1/git-tag.1.gz @@ -1012,8 +1012,8 @@ %%HTMLDOCS%%%%DOCSDIR%%/git-revert.txt %%HTMLDOCS%%%%DOCSDIR%%/git-rm.html %%HTMLDOCS%%%%DOCSDIR%%/git-rm.txt -%%SEND_EMAIL%%%%HTMLDOCS%%%%DOCSDIR%%/git-send-email.html -%%SEND_EMAIL%%%%HTMLDOCS%%%%DOCSDIR%%/git-send-email.txt +%%SEND_EMAIL%%@@send_email@@%%HTMLDOCS%%%%DOCSDIR%%/git-send-email.html +%%SEND_EMAIL%%@@send_email@@%%HTMLDOCS%%%%DOCSDIR%%/git-send-email.txt %%HTMLDOCS%%%%DOCSDIR%%/git-send-pack.html %%HTMLDOCS%%%%DOCSDIR%%/git-send-pack.txt %%HTMLDOCS%%%%DOCSDIR%%/git-sh-i18n--envsubst.html @@ -1183,12 +1183,12 @@ %%HTMLDOCS%%%%DOCSDIR%%/user-manual.txt share/emacs/site-lisp/git/git-blame.el share/emacs/site-lisp/git/git.el -%%GITWEB%%@sample %%ETCDIR%%/gitweb.conf.sample -%%GITWEB%%%%EXAMPLESDIR%%/gitweb/gitweb.cgi -%%GITWEB%%%%EXAMPLESDIR%%/gitweb/static/git-favicon.png -%%GITWEB%%%%EXAMPLESDIR%%/gitweb/static/git-logo.png -%%GITWEB%%%%EXAMPLESDIR%%/gitweb/static/gitweb.css -%%GITWEB%%%%EXAMPLESDIR%%/gitweb/static/gitweb.js +%%GITWEB%%@@gitweb@@@sample %%ETCDIR%%/gitweb.conf.sample +%%GITWEB%%@@gitweb@@%%EXAMPLESDIR%%/gitweb/gitweb.cgi +%%GITWEB%%@@gitweb@@%%EXAMPLESDIR%%/gitweb/static/git-favicon.png +%%GITWEB%%@@gitweb@@%%EXAMPLESDIR%%/gitweb/static/git-logo.png +%%GITWEB%%@@gitweb@@%%EXAMPLESDIR%%/gitweb/static/gitweb.css +%%GITWEB%%@@gitweb@@%%EXAMPLESDIR%%/gitweb/static/gitweb.js %%CONTRIB%%share/git-core/contrib/README %%CONTRIB%%share/git-core/contrib/buildsystems/Generators.pm %%CONTRIB%%share/git-core/contrib/buildsystems/Generators/QMake.pm Index: lang/perl5-devel/Makefile =================================================================== --- lang/perl5-devel/Makefile +++ lang/perl5-devel/Makefile @@ -15,6 +15,7 @@ MAINTAINER= mat@FreeBSD.org COMMENT= Practical Extraction and Report Language +COMMENT.gdbm= GNU Data Base Manager (gdbm) interface LICENSE= ART10 GPLv1+ LICENSE_COMB= dual @@ -25,6 +26,8 @@ #DEPRECATED= Support end three years after .0 release, please upgrade to a more recent version of Perl #EXPIRATION_DATE= +SELF_DEPENDS.gdbm= main + # XXX releases are .tar.xz, add: tar:xz USES= cpe @@ -68,6 +71,9 @@ -Alddlflags='-L${WRKSRC} -L${PREFIX}/${_ARCH_LIB}/CORE -lperl' \ -Dshrpldflags='$$(LDDLFLAGS:N-L${WRKSRC}:N-L${PREFIX}/${_ARCH_LIB}/CORE:N-lperl) -Wl,-soname,$$(LIBPERL)' +# Give a hint of where libperl.so can be found. +USE_LDCONFIG= ${PREFIX}/${_ARCH_LIB}/CORE + # XXX Remove CONFIGURE_ARGS+= -Dusedevel -Uversiononly @@ -173,7 +179,8 @@ DTRACE_CONFIGURE_OFF= -Uusedtrace GDBM_CONFIGURE_ON= -Di_gdbm GDBM_CONFIGURE_OFF= -Ui_gdbm -GDBM_LIB_DEPENDS= libgdbm.so:databases/gdbm +GDBM_LIB_DEPENDS.gdbm= libgdbm.so:databases/gdbm +GDBM_SUBPACKAGES= gdbm PERL_64BITINT_CONFIGURE_ON= -Duse64bitint MULTIPLICITY_CONFIGURE_ON= -Dusemultiplicity=y MULTIPLICITY_CONFIGURE_OFF= -Dusemultiplicity=n Index: lang/perl5-devel/pkg-descr.gdbm =================================================================== --- /dev/null +++ lang/perl5-devel/pkg-descr.gdbm @@ -0,0 +1,6 @@ +GDBM_File is a perl module which allows Perl programs to make use of the +facilities provided by the GNU gdbm library. If you intend to use this +module you should really have a copy of the gdbm manualpage at hand. + +Most of the libgdbm.a functions are available through the GDBM_File +interface. Index: lang/perl5-devel/pkg-plist =================================================================== --- lang/perl5-devel/pkg-plist +++ lang/perl5-devel/pkg-plist @@ -786,7 +786,7 @@ %%ARCH_LIB%%/File/Spec/VMS.pm %%ARCH_LIB%%/File/Spec/Win32.pm %%ARCH_LIB%%/Filter/Util/Call.pm -%%GDBM%%%%ARCH_LIB%%/GDBM_File.pm +%%GDBM%%@@gdbm@@%%ARCH_LIB%%/GDBM_File.pm %%ARCH_LIB%%/Hash/Util.pm %%ARCH_LIB%%/Hash/Util/FieldHash.pm %%ARCH_LIB%%/I18N/Langinfo.pm @@ -855,7 +855,7 @@ %%ARCH_LIB%%/auto/File/DosGlob/DosGlob.so %%ARCH_LIB%%/auto/File/Glob/Glob.so %%ARCH_LIB%%/auto/Filter/Util/Call/Call.so -%%GDBM%%%%ARCH_LIB%%/auto/GDBM_File/GDBM_File.so +%%GDBM%%@@gdbm@@%%ARCH_LIB%%/auto/GDBM_File/GDBM_File.so %%ARCH_LIB%%/auto/Hash/Util/FieldHash/FieldHash.so %%ARCH_LIB%%/auto/Hash/Util/Util.so %%ARCH_LIB%%/auto/I18N/Langinfo/Langinfo.so @@ -1324,7 +1324,7 @@ %%MAN3%%/Filter::Simple.3.gz %%MAN3%%/Filter::Util::Call.3.gz %%MAN3%%/FindBin.3.gz -%%GDBM%%%%MAN3%%/GDBM_File.3.gz +%%GDBM%%@@gdbm@@%%MAN3%%/GDBM_File.3.gz %%MAN3%%/Getopt::Long.3.gz %%MAN3%%/Getopt::Std.3.gz %%MAN3%%/HTTP::Tiny.3.gz