[BACK]Return to bsd.pkg.mk CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / pkgsrc / mk

Annotation of pkgsrc/mk/bsd.pkg.mk, Revision 1.1540.2.3

1.1540.2.3! tv          1: #      $NetBSD: bsd.pkg.mk,v 1.1540.2.2 2004/11/23 15:35:20 tv Exp $
1.1       agc         2: #
1.95      mrg         3: # This file is in the public domain.
1.1       agc         4: #
1.95      mrg         5: # This file is derived from bsd.port.mk - 940820 Jordan K. Hubbard.
1.1       agc         6: #
1.95      mrg         7: # Please see the NetBSD packages(7) manual page for details on the
1.1540.2.1  tv          8: # variables used in this make file template.
1.1       agc         9: #
1.1540.2.1  tv         10: # Some interesting targets:
1.1       agc        11: #
1.1540.2.1  tv         12: # all:                 Recurses to "make test".
                     13: # show-var:            Show the value of the variable named by VARNAME.
                     14: # show-var-noeval:     Same as show-var, but skips phase-specific evaluations.
                     15: # show-vars:           Show the value of the variables named by VARNAMES.
                     16: # show-vars-noeval:    Same as show-vars, but skips phase-specific evaluations.
                     17:
                     18: ############################################################################
                     19: # Include any preferences, if not already included, and common definitions
                     20: ############################################################################
1.197     hubertf    21:
1.272     tv         22: .include "../../mk/bsd.prefs.mk"
1.1537    jlam       23: .include "../../mk/bsd.hacks.mk"
                     24:
1.1540.2.1  tv         25: # _PKG_PHASES_WRKDIR is an ordered list of phases which require ${WRKDIR}
                     26: # to exist.  _PKG_PHASES_ALL also includes the phases from before ${WRKDIR}
                     27: # is created.  These macros are used below mainly in .for loops.
                     28:
                     29: _PKG_PHASES_ALL=       fetch checksum ${_PKG_PHASES_WRKDIR}
                     30: _PKG_PHASES_WRKDIR=    depends extract patch tools wrapper \
                     31:                        configure build test install package
                     32:
                     33: # PATH is recalculated below, so save its original incarnation here.
                     34: .if !defined(_PATH_ORIG)
                     35: _PATH_ORIG:=           ${PATH}
                     36: MAKEFLAGS+=            _PATH_ORIG=${_PATH_ORIG:Q}
                     37: .endif
                     38:
                     39: ############################################################################
                     40: # Transform package Makefile variables and set defaults
                     41: ############################################################################
1.567     fredb      42:
1.1540.2.1  tv         43: CHECK_SHLIBS?=         YES     # run check-shlibs after install
1.272     tv         44: CLEANDEPENDS?=         NO
1.317     hubertf    45: DEINSTALLDEPENDS?=     NO      # add -R to pkg_delete
1.1540.2.1  tv         46: MKCRYPTO?=             YES     # build crypto packages by default
                     47: NOCLEAN?=              NO      # don't clean up after update
1.327     rh         48: REINSTALL?=            NO      # reinstall upon update
1.636     jlam       49: SHLIB_HANDLING?=       YES     # do automatic shared lib handling
1.1540.2.1  tv         50:
                     51: ### Variant spellings
                     52:
                     53: .if defined(LICENCE) && !defined(LICENSE)
                     54: LICENSE=               ${LICENCE}
                     55: .endif
                     56: .if defined(ACCEPTABLE_LICENCES) && !defined(ACCEPTABLE_LICENSES)
                     57: ACCEPTABLE_LICENSES=   ${ACCEPTABLE_LICENCES}
                     58: .endif
                     59:
                     60: ### PKGBASE, PKGNAME[_NOREV], PKGVERSION
1.5       hubertf    61:
1.460     mycroft    62: PKGBASE?=              ${PKGNAME:C/-[^-]*$//}
                     63: PKGVERSION?=           ${PKGNAME:C/^.*-//}
1.1498    jlam       64: .if defined(PKGREVISION) && !empty(PKGREVISION) && (${PKGREVISION} != "0")
                     65: .  if defined(PKGNAME)
                     66: PKGNAME_NOREV:=                ${PKGNAME}
                     67: PKGNAME:=              ${PKGNAME}nb${PKGREVISION}
                     68: .  else
                     69: PKGNAME?=              ${DISTNAME}nb${PKGREVISION}
                     70: PKGNAME_NOREV=         ${DISTNAME}
                     71: .  endif
                     72: .else
                     73: PKGNAME?=              ${DISTNAME}
                     74: PKGNAME_NOREV=         ${PKGNAME}
                     75: .endif
1.459     mycroft    76:
1.1540.2.1  tv         77: ### PLIST
                     78:
                     79: .if ${PKG_INSTALLATION_TYPE} == "pkgviews"
                     80: PLIST_TYPE?=           dynamic
                     81: .endif
                     82: PLIST_TYPE?=           static
                     83:
                     84: .if !defined(PLIST_SRC)
                     85: .  if exists(${PKGDIR}/PLIST.common)
                     86: PLIST_SRC+=            ${PKGDIR}/PLIST.common
                     87: .  endif
                     88: .  if exists(${PKGDIR}/PLIST.${OPSYS})
                     89: PLIST_SRC+=            ${PKGDIR}/PLIST.${OPSYS}
                     90: .  elif exists(${PKGDIR}/PLIST)
                     91: PLIST_SRC+=            ${PKGDIR}/PLIST
                     92: .  endif
                     93: .  if exists(${PKGDIR}/PLIST.common_end)
                     94: PLIST_SRC+=            ${PKGDIR}/PLIST.common_end
                     95: .  endif
                     96: .endif # !PLIST_SRC
1.851     jlam       97:
1.1540.2.1  tv         98: ### Others
                     99:
                    100: _DISTDIR?=             ${DISTDIR}/${DIST_SUBDIR}
                    101: ALL_TARGET?=           all
                    102: BUILD_DEFS?=           # empty
                    103: BUILD_DEPENDS?=                # empty
                    104: DEPENDS?=              # empty
                    105: DESCR_SRC?=            ${PKGDIR}/DESCR
                    106: DIGEST_ALGORITHM?=     SHA1
                    107: DISTFILES?=            ${DISTNAME}${EXTRACT_SUFX}
                    108: DISTINFO_FILE?=                ${PKGDIR}/distinfo
                    109: COMMENT?=              (no description)
                    110: CONFIGURE_DIRS?=       ${WRKSRC}
                    111: CONFIGURE_SCRIPT?=     ./configure
                    112: EXTRACT_ONLY?=         ${DISTFILES}
                    113: EXTRACT_SUFX?=         .tar.gz
                    114: INSTALL_TARGET?=       install
1.999     agc       115: INTERACTIVE_STAGE?=    none
1.1540.2.1  tv        116: MAINTAINER?=           tech-pkg@NetBSD.org
                    117: MAKE_FLAGS?=           # empty
                    118: MAKEFILE?=             Makefile
                    119: PKG_SUFX?=             .tgz
                    120: PKGFILE?=              ${PKGREPOSITORY}/${PKGNAME}${PKG_SUFX}
                    121: PKGREPOSITORY?=                ${PACKAGES}/${PKGREPOSITORYSUBDIR}
                    122: PKGREPOSITORYSUBDIR?=  All
                    123: PKGWILDCARD?=          ${PKGBASE}-[0-9]*
                    124: SVR4_PKGNAME?=         ${PKGNAME}
                    125: USE_DIGEST?=           YES
                    126: USE_GNU_TOOLS?=                # empty
                    127: WRKSRC?=               ${WRKDIR}/${DISTNAME}
                    128:
                    129: BUILD_DEFS_FIXED+=     PKGPATH
                    130: BUILD_DEFS_FIXED+=     OPSYS OS_VERSION MACHINE_ARCH MACHINE_GNU_ARCH
                    131: BUILD_DEFS_FIXED+=     CPPFLAGS CFLAGS FFLAGS LDFLAGS
                    132: BUILD_DEFS_FIXED+=     CONFIGURE_ENV CONFIGURE_ARGS
                    133: BUILD_DEFS_FIXED+=     OBJECT_FMT LICENSE RESTRICTED
                    134: BUILD_DEFS_FIXED+=     NO_SRC_ON_FTP NO_SRC_ON_CDROM
                    135: BUILD_DEFS_FIXED+=     NO_BIN_ON_FTP NO_BIN_ON_CDROM
                    136: BUILD_DEFS_FIXED+=     ${OSVERSION_SPECIFIC:DOSVERSION_SPECIFIC}
                    137:
                    138: ### Non-overridable constants
                    139:
                    140: # Latest versions of tools required for correct pkgsrc operation.
                    141: DIGEST_REQD=           20010302
                    142: PKGTOOLS_REQD=         ${_OPSYS_PKGTOOLS_REQD:U20030918}
                    143:
                    144: DDIR=                  ${WRKDIR}/.DDIR
                    145: DESCR=                 ${WRKDIR}/.DESCR
                    146: DLIST=                 ${WRKDIR}/.DLIST
                    147: PLIST=                 ${WRKDIR}/.PLIST
                    148:
                    149: # Files to create for versioning and build information
                    150: BUILD_VERSION_FILE=    ${WRKDIR}/.build_version
                    151: BUILD_INFO_FILE=       ${WRKDIR}/.build_info
                    152:
                    153: # Files containing size of pkg w/o and w/ all required pkgs
                    154: SIZE_PKG_FILE=         ${WRKDIR}/.SizePkg
                    155: SIZE_ALL_FILE=         ${WRKDIR}/.SizeAll
                    156:
                    157: # File to denote "no deletion of a package"
                    158: PRESERVE_FILE=         ${WRKDIR}/.PRESERVE
                    159:
                    160: .for targ in ${_PKG_PHASES_WRKDIR}
                    161: ${targ}_COOKIE=                ${WRKDIR}/.${targ}_done
                    162: .endfor
                    163:
                    164: ### Transform USE_* into dependencies
                    165:
                    166: .include "../../mk/bsd.pkg.use.mk"
                    167:
                    168: ############################################################################
                    169: # Sanity checks
                    170: ############################################################################
                    171:
                    172: # Fail-safe in the case of circular dependencies
                    173: .if defined(_PKGSRC_DEPS) && defined(PKGNAME) && !empty(_PKGSRC_DEPS:M${PKGNAME})
                    174: PKG_FAIL_REASON+=      "Circular dependency detected"
                    175: .endif
1.800     jlam      176:
1.1252    jlam      177: # PKG_INSTALLATION_TYPE can only be one of two values: "pkgviews" or
                    178: # "overwrite".
                    179: .if (${PKG_INSTALLATION_TYPE} != "pkgviews") && \
                    180:     (${PKG_INSTALLATION_TYPE} != "overwrite")
                    181: PKG_FAIL_REASON+=      "PKG_INSTALLATION_TYPE must be \`\`pkgviews'' or \`\`overwrite''."
                    182: .endif
                    183:
                    184: .if empty(PKG_INSTALLATION_TYPES:M${PKG_INSTALLATION_TYPE})
                    185: PKG_FAIL_REASON+=      "This package doesn't support PKG_INSTALLATION_TYPE=${PKG_INSTALLATION_TYPE}."
                    186: .endif
                    187:
                    188: .if (${PLIST_TYPE} != "dynamic") && (${PLIST_TYPE} != "static")
                    189: PKG_FAIL_REASON+=      "PLIST_TYPE must be \`\`dynamic'' or \`\`static''."
                    190: .endif
                    191:
                    192: .if (${PKG_INSTALLATION_TYPE} == "overwrite") && (${PLIST_TYPE} != "static")
                    193: PKG_FAIL_REASON+=      "PLIST_TYPE must be \`\`static'' for \`\`overwrite'' packages."
                    194: .endif
                    195:
1.1540.2.1  tv        196: # Check that we are using up-to-date pkg_* tools with this file.
                    197: .if !defined(NO_PKGTOOLS_REQD_CHECK)
                    198: .  if ${PKGTOOLS_VERSION} < ${PKGTOOLS_REQD}
                    199: PKG_FAIL_REASON+='Error: The package tools installed on this system are out of date.'
                    200: PKG_FAIL_REASON+='The installed package tools are dated ${PKGTOOLS_VERSION:C|(....)(..)(..)|\1/\2/\3|} and you must update'
                    201: PKG_FAIL_REASON+='them to at least ${PKGTOOLS_REQD:C|(....)(..)(..)|\1/\2/\3|} using the following command:'
                    202: PKG_FAIL_REASON+=''
                    203: PKG_FAIL_REASON+='     cd ${PKGSRCDIR}/pkgtools/pkg_install && ${MAKE} clean && ${MAKE} install'
1.1339    jlam      204: .  endif
1.1540.2.1  tv        205: .endif # NO_PKGTOOLS_REQD_CHECK
1.1252    jlam      206:
1.1540.2.1  tv        207: .if defined(NO_WRKSUBDIR)
                    208: PKG_FAIL_REASON+='NO_WRKSUBDIR has been deprecated - please replace it with an explicit'
                    209: PKG_FAIL_REASON+='assignment of WRKSRC= $${WRKDIR}'
                    210: .endif # NO_WRKSUBDIR
1.1252    jlam      211:
1.820     jlam      212: # We need to make sure the buildlink-x11 package is not installed since it
1.1027    jlam      213: # breaks builds that use imake.
                    214: .if defined(USE_IMAKE)
1.820     jlam      215: .  if exists(${LOCALBASE}/lib/X11/config/buildlinkX11.def) || \
                    216:       exists(${X11BASE}/lib/X11/config/buildlinkX11.def)
1.1102    schmonz   217: PKG_FAIL_REASON+= "${PKGNAME} uses imake, but the buildlink-x11 package was found." \
1.820     jlam      218:         "    Please deinstall it (pkg_delete buildlink-x11)."
                    219: .  endif
1.1027    jlam      220: .endif # USE_IMAKE
1.131     tv        221:
1.1540.2.1  tv        222: .if !defined(CATEGORIES) || !defined(DISTNAME)
                    223: PKG_FAIL_REASON+='CATEGORIES and DISTNAME are mandatory.'
1.1246    jlam      224: .endif
                    225:
1.1540.2.1  tv        226: .if defined(LIB_DEPENDS)
                    227: PKG_FAIL_REASON+='LIB_DEPENDS is deprecated and must be replaced with DEPENDS.'
1.338     kim       228: .endif
1.1015    jlam      229:
1.1540.2.1  tv        230: .if defined(PKG_PATH)
                    231: PKG_FAIL_REASON+='Please unset PKG_PATH before doing pkgsrc work!'
1.1015    jlam      232: .endif
                    233:
1.1540.2.1  tv        234: .if defined(MASTER_SITE_SUBDIR)
                    235: PKG_FAIL_REASON+='MASTER_SITE_SUBDIR is deprecated and must be replaced with MASTER_SITES.'
1.522     wiz       236: .endif
                    237:
1.1540.2.1  tv        238: .if defined(PATCH_SITE_SUBDIR)
                    239: PKG_FAIL_REASON+='PATCH_SITE_SUBDIR is deprecated and must be replaced with PATCH_SITES.'
1.758     jlam      240: .endif
1.986     schmonz   241:
1.1540.2.1  tv        242: .if defined(ONLY_FOR_ARCHS) || defined(NOT_FOR_ARCHS) \
                    243:        || defined(ONLY_FOR_OPSYS) || defined(NOT_FOR_OPSYS)
                    244: PKG_FAIL_REASON+='ONLY/NOT_FOR_ARCHS/OPSYS are deprecated and must be replaced with ONLY/NOT_FOR_PLATFORM.'
                    245: .endif
1.1539    tv        246:
1.1540.2.1  tv        247: .if (${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once")
                    248: . if !defined(OBJHOSTNAME)
                    249: PKG_FAIL_REASON+='PKGSRC_LOCKTYPE needs OBJHOSTNAME defined.'
                    250: . elif !exists(${SHLOCK})
                    251: PKG_FAIL_REASON+='The ${SHLOCK} utility does not exist, and is necessary for locking.'
                    252: PKG_FAIL_REASON+='Please "${MAKE} install" in ../../pkgtools/shlock.'
                    253: . endif
1.94      agc       254: .endif
1.272     tv        255:
1.1381    jlam      256: #
1.1540.2.1  tv        257: # Many ways to disable a package.
                    258: #
                    259: # Ignore packages that can't be resold if building for a CDROM.
                    260: #
                    261: # Don't build a package if it's restricted and we don't want to
                    262: # get into that.
                    263: #
                    264: # Don't build any package that utilizes strong cryptography, for
                    265: # when the law of the land forbids it.
                    266: #
                    267: # Don't attempt to build packages against X if we don't have X.
                    268: #
                    269: # Don't build a package if it's broken.
                    270: #
1.1536    sketch    271:
1.1540.2.1  tv        272: .if (defined(NO_BIN_ON_CDROM) && defined(FOR_CDROM))
                    273: PKG_FAIL_REASON+= "${PKGNAME} may not be placed in binary form on a CDROM:" \
                    274:          "    "${NO_BIN_ON_CDROM:Q}
1.1252    jlam      275: .endif
1.1540.2.1  tv        276: .if (defined(NO_SRC_ON_CDROM) && defined(FOR_CDROM))
                    277: PKG_FAIL_REASON+= "${PKGNAME} may not be placed in source form on a CDROM:" \
                    278:          "    "${NO_SRC_ON_CDROM:Q}
                    279: .endif
                    280: .if (defined(RESTRICTED) && defined(NO_RESTRICTED))
                    281: PKG_FAIL_REASON+= "${PKGNAME} is restricted:" \
                    282:         "    "${RESTRICTED:Q}
1.1199    grant     283: .endif
1.1540.2.1  tv        284: .if !(${MKCRYPTO} == "YES" || ${MKCRYPTO} == yes)
                    285: .  if defined(CRYPTO)
                    286: PKG_FAIL_REASON+= "${PKGNAME} may not be built, because it utilizes strong cryptography"
                    287: .  endif
1.1199    grant     288: .endif
1.1540.2.1  tv        289: .if defined(USE_X11) && !exists(${X11BASE})
                    290: PKG_FAIL_REASON+= "${PKGNAME} uses X11, but ${X11BASE} not found"
1.1217    grant     291: .endif
1.1540.2.1  tv        292: .if defined(BROKEN)
                    293: PKG_FAIL_REASON+= "${PKGNAME} is marked as broken:" ${BROKEN:Q}
1.1528    recht     294: .endif
1.1209    grant     295:
1.1540.2.1  tv        296: .if defined(LICENSE)
                    297: .  ifdef ACCEPTABLE_LICENSES
                    298: .    for _lic in ${ACCEPTABLE_LICENSES}
                    299: .      if ${LICENSE} == "${_lic}"
                    300: _ACCEPTABLE=   yes
                    301: .      endif   # LICENSE == _lic
                    302: .    endfor    # _lic
                    303: .  endif       # ACCEPTABLE_LICENSES
                    304: .  ifndef _ACCEPTABLE
                    305: PKG_FAIL_REASON+= "${PKGNAME} has an unacceptable license: ${LICENSE}." \
                    306:         "    To view the license, enter \"${MAKE} show-license\"." \
                    307:         "    To indicate acceptance, add this line to your /etc/mk.conf:" \
                    308:         "    ACCEPTABLE_LICENSES+=${LICENSE}"
                    309: .  endif       # _ACCEPTABLE
                    310: .endif         # LICENSE
1.1462    jschauma  311:
1.1540.2.1  tv        312: # Define __PLATFORM_OK only if the OS matches the pkg's allowed list.
                    313: .if defined(ONLY_FOR_PLATFORM) && !empty(ONLY_FOR_PLATFORM)
                    314: .  for __tmp__ in ${ONLY_FOR_PLATFORM}
                    315: .    if ${MACHINE_PLATFORM:M${__tmp__}} != ""
                    316: __PLATFORM_OK?=        yes
                    317: .    endif     # MACHINE_PLATFORM
                    318: .  endfor      # __tmp__
                    319: .else          # !ONLY_FOR_PLATFORM
                    320: __PLATFORM_OK?=        yes
                    321: .endif         # ONLY_FOR_PLATFORM
                    322: .for __tmp__ in ${NOT_FOR_PLATFORM}
                    323: .  if ${MACHINE_PLATFORM:M${__tmp__}} != ""
                    324: .    undef __PLATFORM_OK
                    325: .  endif       # MACHINE_PLATFORM
                    326: .endfor                # __tmp__
                    327: .if !defined(__PLATFORM_OK)
                    328: PKG_SKIP_REASON+= "${PKGNAME} is not available for ${MACHINE_PLATFORM}"
                    329: .endif         # !__PLATFORM_OK
1.1295    grant     330:
1.1540.2.1  tv        331: .if !defined(NO_SKIP)
                    332: .  if defined(PKG_FAIL_REASON) || defined(PKG_SKIP_REASON)
                    333: _PKG_SKIPPED=  # defined
                    334: .  endif
1.1295    grant     335: .endif
1.1       agc       336:
1.1540.2.1  tv        337: ############################################################################
                    338: # Set up build environment
                    339: ############################################################################
1.1488    jlam      340:
1.1540.2.1  tv        341: .if !defined(_PKG_SKIPPED)
1.1488    jlam      342:
1.1540.2.1  tv        343: # Allow variables to be set on a per-OS basis
                    344: OPSYSVARS+=    CFLAGS CPPFLAGS CXXFLAGS FFLAGS LDFLAGS LIBS
                    345: .  for var in ${OPSYSVARS:O}
                    346: .    if defined(${var}.${OPSYS})
                    347: ${var}+=       ${${var}.${OPSYS}}
                    348: .    elif defined(${var}.*)
                    349: ${var}+=       ${${var}.*}
                    350: .    endif
1.1488    jlam      351: .  endfor
1.1       agc       352:
1.1540.2.1  tv        353: CPPFLAGS+=     ${CPP_PRECOMP_FLAGS}
                    354: DEPENDS+=      ${USE_USERADD:D${_USER_DEPENDS}}
                    355: DEPENDS+=      ${USE_GROUPADD:D${_USER_DEPENDS}}
                    356:
                    357: .if !empty(USE_BUILDLINK3:M[nN][oO])
                    358: LDFLAGS+=      ${COMPILER_RPATH_FLAG}${LOCALBASE}/lib
                    359: LDFLAGS+=      -L${LOCALBASE}/lib
1.1493    schmonz   360: .endif
1.1489    schmonz   361:
1.1540.2.1  tv        362: ALL_ENV+=      CC=${CC:Q}
                    363: ALL_ENV+=      CFLAGS=${CFLAGS:Q}
                    364: ALL_ENV+=      CPPFLAGS=${CPPFLAGS:Q}
                    365: ALL_ENV+=      CXX=${CXX:Q}
                    366: ALL_ENV+=      CXXFLAGS=${CXXFLAGS:Q}
                    367: ALL_ENV+=      COMPILER_RPATH_FLAG=${COMPILER_RPATH_FLAG:Q}
                    368: ALL_ENV+=      FFLAGS=${FFLAGS:Q}
                    369: ALL_ENV+=      LDFLAGS=${LDFLAGS:Q}
                    370: ALL_ENV+=      LINKER_RPATH_FLAG=${LINKER_RPATH_FLAG:Q}
                    371: ALL_ENV+=      PATH=${PATH:Q}:${LOCALBASE}/bin:${X11BASE}/bin
                    372: ALL_ENV+=      PREFIX=${PREFIX}
                    373:
                    374: MAKE_ENV+=     ${ALL_ENV}
                    375: MAKE_ENV+=     ${NO_EXPORT_CPP:D:UCPP=${CPP:Q}}
                    376: MAKE_ENV+=     LINK_ALL_LIBGCC_HACK=${LINK_ALL_LIBGCC_HACK:Q}
                    377: MAKE_ENV+=     LOCALBASE=${LOCALBASE}
                    378: MAKE_ENV+=     NO_WHOLE_ARCHIVE_FLAG=${NO_WHOLE_ARCHIVE_FLAG:Q}
                    379: MAKE_ENV+=     WHOLE_ARCHIVE_FLAG=${WHOLE_ARCHIVE_FLAG:Q}
                    380: MAKE_ENV+=     X11BASE=${X11BASE}
                    381: MAKE_ENV+=     X11PREFIX=${X11PREFIX}
                    382:
                    383: # Constants to provide a consistent environment for packages using
                    384: # BSD-style Makefiles.
                    385: MAKE_ENV+=     MAKECONF=${PKGMAKECONF:U/dev/null}
                    386: MAKE_ENV+=     OBJECT_FMT=${OBJECT_FMT:Q}
                    387: MAKE_ENV+=     ${USETOOLS:DUSETOOLS=${USETOOLS:Q}}
                    388:
                    389: SCRIPTS_ENV+=  ${ALL_ENV}
                    390: SCRIPTS_ENV+=  _PKGSRCDIR=${_PKGSRCDIR}
                    391: SCRIPTS_ENV+=  ${BATCH:DBATCH=yes}
                    392: SCRIPTS_ENV+=  CURDIR=${.CURDIR}
                    393: SCRIPTS_ENV+=  DEPENDS=${DEPENDS:Q}
                    394: SCRIPTS_ENV+=  DISTDIR=${DISTDIR}
                    395: SCRIPTS_ENV+=  FILESDIR=${FILESDIR}
                    396: SCRIPTS_ENV+=  LOCALBASE=${LOCALBASE}
                    397: SCRIPTS_ENV+=  PATCHDIR=${PATCHDIR}
                    398: SCRIPTS_ENV+=  PKGSRCDIR=${PKGSRCDIR}
                    399: SCRIPTS_ENV+=  SCRIPTDIR=${SCRIPTDIR}
                    400: SCRIPTS_ENV+=  VIEWBASE=${VIEWBASE}
                    401: SCRIPTS_ENV+=  WRKDIR=${WRKDIR}
                    402: SCRIPTS_ENV+=  WRKSRC=${WRKSRC}
                    403: SCRIPTS_ENV+=  X11BASE=${X11BASE}
1.240     agc       404:
1.1540.2.1  tv        405: # Set PLIST_SUBST to substitute "${variable}" to "value" in PLIST
                    406: PLIST_SUBST+=  CHGRP=${CHGRP:Q}
                    407: PLIST_SUBST+=  CHMOD=${CHMOD:Q}
                    408: PLIST_SUBST+=  CHOWN=${CHOWN:Q}
                    409: PLIST_SUBST+=  LN=${LN:Q}
                    410: PLIST_SUBST+=  LOCALBASE=${LOCALBASE}
                    411: PLIST_SUBST+=  LOWER_VENDOR=${LOWER_VENDOR}
                    412: PLIST_SUBST+=  LOWER_OPSYS=${LOWER_OPSYS}
                    413: PLIST_SUBST+=  LOWER_OS_VERSION=${LOWER_OS_VERSION}
                    414: PLIST_SUBST+=  MACHINE_ARCH=${MACHINE_ARCH}
                    415: PLIST_SUBST+=  MACHINE_GNU_ARCH=${MACHINE_GNU_ARCH}
                    416: PLIST_SUBST+=  MACHINE_GNU_PLATFORM=${MACHINE_GNU_PLATFORM}
                    417: PLIST_SUBST+=  MKDIR=${MKDIR:Q}
                    418: PLIST_SUBST+=  OPSYS=${OPSYS}
                    419: PLIST_SUBST+=  OS_VERSION=${OS_VERSION}
                    420: PLIST_SUBST+=  PKGBASE=${PKGBASE}
                    421: PLIST_SUBST+=  PKGNAME=${PKGNAME_NOREV}
                    422: PLIST_SUBST+=  PKGLOCALEDIR=${PKGLOCALEDIR}
                    423: PLIST_SUBST+=  PKGVERSION=${PKGVERSION:C/nb[0-9]*$//}
                    424: PLIST_SUBST+=  QMAILDIR=${QMAILDIR} # XXXTV is this used?
                    425: PLIST_SUBST+=  RM=${RM:Q}
                    426: PLIST_SUBST+=  RMDIR=${RMDIR:Q}
                    427: PLIST_SUBST+=  SVR4_PKGNAME=${SVR4_PKGNAME}
                    428: PLIST_SUBST+=  TRUE=${TRUE:Q}
                    429: PLIST_SUBST+=  VIEWBASE=${VIEWBASE}
                    430: PLIST_SUBST+=  X11BASE=${X11BASE}
                    431: PLIST_SUBST+=  X11PREFIX=${X11PREFIX}
                    432:
                    433: # Automatically increase process limit where necessary for building.
                    434: .  if defined(UNLIMIT_RESOURCES)
                    435: .    for res in ${UNLIMIT_RESOURCES}
                    436: _ULIMIT_CMD+=  ${ULIMIT_CMD_${res}:D${ULIMIT_CMD_${res}} ; }
                    437: .    endfor
1.789     hubertf   438: .  endif
1.436     fredb     439:
1.1540.2.1  tv        440: .endif # !_PKG_SKIPPED
1.221     agc       441:
1.1540.2.1  tv        442: ############################################################################
                    443: # Debug support
                    444: ############################################################################
1.221     agc       445:
                    446: # Debugging levels for this file, dependent on PKG_DEBUG_LEVEL definition
                    447: # 0 == normal, default, quiet operation
                    448: # 1 == all shell commands echoed before invocation
                    449: # 2 == shell "set -x" operation
                    450: PKG_DEBUG_LEVEL?=      0
                    451: _PKG_SILENT=           @
1.1058    jlam      452: _PKG_DEBUG=            # empty
                    453: _PKG_DEBUG_SCRIPT=     # empty
1.221     agc       454:
                    455: .if ${PKG_DEBUG_LEVEL} > 0
1.1058    jlam      456: _PKG_SILENT=           # empty
1.221     agc       457: .endif
                    458:
                    459: .if ${PKG_DEBUG_LEVEL} > 1
                    460: _PKG_DEBUG=            set -x;
1.1058    jlam      461: _PKG_DEBUG_SCRIPT=     ${SH} -x
1.57      hubertf   462: .endif
                    463:
1.1540.2.1  tv        464: ############################################################################
                    465: # External tools
                    466: ############################################################################
1.161     agc       467:
1.1540.2.1  tv        468: # top part not skipped by _PKG_SKIPPED
1.57      hubertf   469:
1.1540.2.1  tv        470: # Used to print all the '===>' style prompts - override this to turn them off.
                    471: ECHO_MSG?=             ${ECHO}
1.1       agc       472:
1.1540.2.1  tv        473: # Define SMART_MESSAGES in /etc/mk.conf for messages giving the tree
                    474: # of dependencies for building, and the current target.
                    475: .ifdef SMART_MESSAGES
                    476: _PKGSRC_IN?=           ===> ${.TARGET} [${PKGNAME}${_PKGSRC_DEPS}] ===
1.663     wiz       477: .endif
1.1540.2.1  tv        478: _PKGSRC_IN?=           ===
1.663     wiz       479:
1.1540.2.1  tv        480: DO_NADA?=              ${TRUE} # deprecated; for compatibility only
                    481: SHCOMMENT?=            ${ECHO_MSG} >/dev/null '***'
                    482: TOUCH_FLAGS?=          -f
1.1114    grant     483:
1.1540.2.1  tv        484: FETCH_BEFORE_ARGS+=    ${PASSIVE_FETCH:D-p}
                    485:
                    486: .if !defined(_PKG_SKIPPED)
                    487:
                    488: INSTALL_DATA?=                 ${INSTALL} ${COPY} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE}
                    489: INSTALL_DATA_DIR?=     ${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} -m ${PKGDIRMODE}
                    490: INSTALL_GAME?=         ${INSTALL} ${COPY} ${_STRIPFLAG_INSTALL} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEMODE}
                    491: INSTALL_GAME_DATA?=    ${INSTALL} ${COPY} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEDATAMODE}
                    492: INSTALL_LIB?=          ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
                    493: INSTALL_LIB_DIR?=      ${INSTALL_PROGRAM_DIR}
                    494: INSTALL_MAN?=          ${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
                    495: INSTALL_MAN_DIR?=      ${INSTALL} -d -o ${MANOWN} -g ${MANGRP} -m ${PKGDIRMODE}
                    496: INSTALL_PROGRAM?=      ${INSTALL} ${COPY} ${_STRIPFLAG_INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
                    497: INSTALL_PROGRAM_DIR?=  ${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m ${PKGDIRMODE}
                    498: INSTALL_SCRIPT?=       ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
                    499: INSTALL_SCRIPT_DIR?=   ${INSTALL_PROGRAM_DIR}
                    500:
                    501: _INSTALL_MACROS=       BSD_INSTALL=${INSTALL:Q}
                    502: .  for mac in DATA GAME LIB MAN PROGRAM SCRIPT
                    503: _INSTALL_MACROS+=      BSD_INSTALL_${mac}=${INSTALL_${mac}:Q}
                    504: _INSTALL_MACROS+=      BSD_INSTALL_${mac}_DIR=${INSTALL_${mac}_DIR:Q}
                    505: CONFIGURE_ENV+=                INSTALL_${mac}=${INSTALL_${mac}:Q}
                    506: CONFIGURE_ENV+=                INSTALL_${mac}_DIR=${INSTALL_${mac}_DIR:Q}
                    507: .  endfor
                    508: MAKE_ENV+=             ${_INSTALL_MACROS}
                    509: SCRIPTS_ENV+=          ${_INSTALL_MACROS}
                    510:
                    511: .  if defined(USE_GNU_TOOLS) && !empty(USE_GNU_TOOLS:Mmake)
                    512: MAKE_PROGRAM=          ${GMAKE}
                    513: .  elif defined(USE_IMAKE)
                    514: MAKE_PROGRAM=          ${_IMAKE_MAKE}
1.1114    grant     515: .  endif
1.1540.2.1  tv        516: MAKE_PROGRAM?=         ${MAKE}
1.1114    grant     517:
1.1540.2.1  tv        518: MTREE_ARGS?=           -U -f ${MTREE_FILE} -d -e -p
                    519: MTREE_FILE?=           ${PKGSRCDIR}/mk/${OPSYS}.pkg.dist
                    520:
                    521: PKG_ARGS_COMMON=       -v -c -${COMMENT:Q}" " -d ${DESCR} -f ${PLIST}
                    522: PKG_ARGS_COMMON+=      -l -b ${BUILD_VERSION_FILE} -B ${BUILD_INFO_FILE}
                    523: PKG_ARGS_COMMON+=      -s ${SIZE_PKG_FILE} -S ${SIZE_ALL_FILE}
                    524: PKG_ARGS_COMMON+=      -P "`${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`"
                    525: PKG_ARGS_COMMON+=      ${INSTALL_FILE:D-i ${INSTALL_FILE}}
                    526: PKG_ARGS_COMMON+=      ${DEINSTALL_FILE:D-k ${DEINSTALL_FILE}}
                    527: PKG_ARGS_COMMON+=      ${MESSAGE:D-D ${MESSAGE}}
                    528: PKG_ARGS_COMMON+=      ${NO_MTREE:D:U-m ${MTREE_FILE}}
                    529: PKG_ARGS_COMMON+=      ${PKG_PRESERVE:D-n ${PRESERVE_FILE}}
                    530: .  if ${PKG_INSTALLATION_TYPE} == "overwrite"
                    531: PKG_ARGS_COMMON+=      ${CONFLICTS:D-C "${CONFLICTS}"}
                    532: .  endif
1.164     agc       533:
1.1540.2.1  tv        534: PKG_ARGS_INSTALL=      -p ${PREFIX} ${PKG_ARGS_COMMON}
                    535: PKG_ARGS_BINPKG=       -p ${PREFIX:S/^${DESTDIR}//} -L ${PREFIX} ${PKG_ARGS_COMMON}
1.631     hubertf   536:
1.1540.2.1  tv        537: .endif # !_PKG_SKIPPED
                    538:
                    539: ############################################################################
                    540: # External bsd.pkg.mk fragments
                    541: ############################################################################
                    542:
                    543: .if !defined(_PKG_SKIPPED)
1.1250    jlam      544:
1.1288    jlam      545: # CONF_DEPENDS notes a dependency where the config directory for the
                    546: # package matches the dependency's config directory.  CONF_DEPENDS is
                    547: # only meaningful if ${PKG_INSTALLATION_TYPE} == "pkgviews".
                    548: #
                    549: CONF_DEPENDS?=         # empty
1.1540.2.1  tv        550: .  if !empty(CONF_DEPENDS)
                    551: USE_PKGINSTALL=                YES
                    552: .  endif
1.1288    jlam      553:
1.1540.2.1  tv        554: USE_PKGINSTALL?=       NO
                    555: .  if !empty(USE_PKGINSTALL:M[yY][eE][sS])
                    556: .    include "../../mk/bsd.pkg.install.mk"
                    557: .  endif
                    558:
                    559: .endif # !_PKG_SKIPPED
                    560:
                    561: ############################################################################
                    562: # Transform package Makefile variables (overridable by external fragments)
                    563: ############################################################################
                    564:
                    565: .if !defined(_PKG_SKIPPED)
1.1136    jlam      566:
1.164     agc       567: # Set INSTALL_FILE to be the name of any INSTALL file
1.1540.2.1  tv        568: .  if !defined(INSTALL_FILE) && exists(${PKGDIR}/INSTALL)
1.164     agc       569: INSTALL_FILE=          ${PKGDIR}/INSTALL
1.1540.2.1  tv        570: .  endif
1.164     agc       571:
                    572: # Set DEINSTALL_FILE to be the name of any DEINSTALL file
1.1540.2.1  tv        573: .  if !defined(DEINSTALL_FILE) && exists(${PKGDIR}/DEINSTALL)
1.164     agc       574: DEINSTALL_FILE=                ${PKGDIR}/DEINSTALL
1.1540.2.1  tv        575: .  endif
1.1       agc       576:
1.848     jlam      577: # If MESSAGE hasn't been defined, then set MESSAGE_SRC to be a space-separated
                    578: # list of files to be concatenated together to generate the MESSAGE file.
                    579: #
1.1540.2.1  tv        580: .  if !defined(MESSAGE_SRC) && !defined(MESSAGE)
                    581: .    if exists(${PKGDIR}/MESSAGE)
1.1103    seb       582: MESSAGE_SRC=           ${PKGDIR}/MESSAGE
1.1540.2.1  tv        583: .    else
                    584: .      if exists(${PKGDIR}/MESSAGE.common)
1.1101    grant     585: MESSAGE_SRC=           ${PKGDIR}/MESSAGE.common
1.1540.2.1  tv        586: .      endif
                    587: .      if exists(${PKGDIR}/MESSAGE.${OPSYS})
1.1101    grant     588: MESSAGE_SRC+=          ${PKGDIR}/MESSAGE.${OPSYS}
1.1540.2.1  tv        589: .      endif
                    590: .      if exists(${PKGDIR}/MESSAGE.${MACHINE_ARCH:C/i[3-6]86/i386/g})
1.1160    salo      591: MESSAGE_SRC+=  ${PKGDIR}/MESSAGE.${MACHINE_ARCH:C/i[3-6]86/i386/g}
1.1540.2.1  tv        592: .      endif
                    593: .      if exists(${PKGDIR}/MESSAGE.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g})
1.1104    grant     594: MESSAGE_SRC+=  ${PKGDIR}/MESSAGE.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g}
1.1540.2.1  tv        595: .      endif
1.1103    seb       596: .    endif
1.1101    grant     597: .  endif
1.654     wiz       598:
1.1540.2.1  tv        599: .  if defined(MESSAGE_SRC)
1.654     wiz       600: MESSAGE=               ${WRKDIR}/.MESSAGE
                    601:
                    602: # Set MESSAGE_SUBST to substitute "${variable}" to "value" in MESSAGE
1.1540.2.1  tv        603: MESSAGE_SUBST+=        LOCALBASE=${LOCALBASE}
                    604: MESSAGE_SUBST+=        PKG_SYSCONFDIR=${PKG_SYSCONFDIR}
                    605: MESSAGE_SUBST+=        PKGNAME=${PKGNAME}
                    606: MESSAGE_SUBST+=        PREFIX=${PREFIX}
                    607: MESSAGE_SUBST+=        QMAILDIR=${QMAILDIR} # XXXTV is this used?
                    608: MESSAGE_SUBST+=        ROOT_GROUP=${ROOT_GROUP}
                    609: MESSAGE_SUBST+=        ROOT_USER=${ROOT_USER}
                    610: MESSAGE_SUBST+=        VIEWBASE=${VIEWBASE}
                    611: MESSAGE_SUBST+=        X11BASE=${X11BASE}
                    612: MESSAGE_SUBST+=        X11PREFIX=${X11PREFIX}
1.848     jlam      613:
                    614: MESSAGE_SUBST_SED=     ${MESSAGE_SUBST:S/=/}!/:S/$/!g/:S/^/ -e s!\\\${/}
1.1540.2.1  tv        615: .  endif
1.1422    jlam      616:
1.1540.2.1  tv        617: ### Config file related settings - see Packages.txt
1.676     agc       618:
1.1540.2.1  tv        619: PKG_SYSCONFVAR?=       ${PKGBASE}
                    620: PKG_SYSCONFSUBDIR?=    # empty
                    621: .  if ${PKG_INSTALLATION_TYPE} == "overwrite"
                    622: PKG_SYSCONFDEPOTBASE=  # empty
                    623: PKG_SYSCONFBASEDIR=    ${PKG_SYSCONFBASE}
                    624: .  else
                    625: .    if !empty(PKG_SYSCONFBASE:M${PREFIX}) || \
                    626:         !empty(PKG_SYSCONFBASE:M${PREFIX}/*)
                    627: PKG_SYSCONFDEPOTBASE=  # empty
                    628: PKG_SYSCONFBASEDIR=    ${PKG_SYSCONFBASE}
                    629: .      if !empty(CONF_DEPENDS)
                    630: _PLIST_IGNORE_FILES+=  ${PKG_SYSCONFDIR:S,^${PREFIX}/,,}
                    631: .      endif
                    632: .    else
                    633: PKG_SYSCONFDEPOTBASE=  ${PKG_SYSCONFBASE}/${DEPOT_SUBDIR}
                    634: PKG_SYSCONFBASEDIR=    ${PKG_SYSCONFDEPOTBASE}/${PKGNAME}
                    635: .    endif
                    636: .  endif
                    637: .  if empty(PKG_SYSCONFSUBDIR)
                    638: DFLT_PKG_SYSCONFDIR:=  ${PKG_SYSCONFBASEDIR}
                    639: .  else
                    640: DFLT_PKG_SYSCONFDIR:=  ${PKG_SYSCONFBASEDIR}/${PKG_SYSCONFSUBDIR}
                    641: .  endif
                    642: PKG_SYSCONFDIR=                ${DFLT_PKG_SYSCONFDIR}
                    643: .  if defined(PKG_SYSCONFDIR.${PKG_SYSCONFVAR})
                    644: PKG_SYSCONFDIR=                ${PKG_SYSCONFDIR.${PKG_SYSCONFVAR}}
                    645: PKG_SYSCONFBASEDIR=    ${PKG_SYSCONFDIR.${PKG_SYSCONFVAR}}
                    646: PKG_SYSCONFDEPOTBASE=  # empty
                    647: .  endif
1.383     hubertf   648:
1.1540.2.1  tv        649: ALL_ENV+=              PKG_SYSCONFDIR=${PKG_SYSCONFDIR:Q}
                    650: BUILD_DEFS_FIXED+=     PKG_SYSCONFBASEDIR PKG_SYSCONFDIR
1.695     tron      651:
1.1540.2.1  tv        652: .endif # !_PKG_SKIPPED
1.383     hubertf   653:
1.1540.2.1  tv        654: ### Checksum and other file handling support
                    655: # not skipped by _PKG_SKIPPED
1.383     hubertf   656:
1.1540.2.1  tv        657: ALLFILES?=     ${DISTFILES} ${PATCHFILES}
                    658: CKSUMFILES?=   ${ALLFILES}
                    659: .for __tmp__ in ${IGNOREFILES}
                    660: CKSUMFILES:=   ${CKSUMFILES:N${__tmp__}}
                    661: .endfor
1.1127    agc       662:
1.1540.2.1  tv        663: # List of all files, with ${DIST_SUBDIR} in front.  Used for fetch and checksum.
                    664: .if defined(DIST_SUBDIR)
                    665: .  if ${CKSUMFILES} != ""
                    666: _CKSUMFILES?=  ${CKSUMFILES:S/^/${DIST_SUBDIR}\//}
1.789     hubertf   667: .  endif
1.1540.2.1  tv        668: .  if !empty(DISTFILES)
                    669: _DISTFILES?=   ${DISTFILES:S/^/${DIST_SUBDIR}\//}
                    670: .  else
                    671: _DISTFILES?=   # empty
1.789     hubertf   672: .  endif
1.1540.2.1  tv        673: .  if defined(IGNOREFILES) && !empty(IGNOREFILES)
                    674: _IGNOREFILES?= ${IGNOREFILES:S/^/${DIST_SUBDIR}\//}
1.789     hubertf   675: .  endif
1.1540.2.1  tv        676: .  if defined(PATCHFILES) && !empty(PATCHFILES)
                    677: _PATCHFILES?=  ${PATCHFILES:S/^/${DIST_SUBDIR}\//}
                    678: .  else
                    679: _PATCHFILES?=  # empty
1.789     hubertf   680: .  endif
1.1540.2.1  tv        681: .else
                    682: _CKSUMFILES?=  ${CKSUMFILES}
                    683: _DISTFILES?=   ${DISTFILES}
                    684: _IGNOREFILES?= ${IGNOREFILES}
                    685: _PATCHFILES?=  ${PATCHFILES}
                    686: .endif
                    687: _ALLFILES?=    ${_DISTFILES} ${_PATCHFILES}
                    688:
                    689: ############################################################################
                    690: # Phase `fetch'
                    691: ############################################################################
                    692:
                    693: .if !empty(PKG_PHASES:Mfetch) && !defined(_PKG_SKIPPED)
                    694:
                    695: ##### Master site selection
                    696:
                    697: .  include "../../mk/bsd.sites.mk"
                    698:
                    699: .  if defined(DIST_SUBDIR)
                    700: _MASTER_SITE_BACKUP:=  ${MASTER_SITE_BACKUP:=${DIST_SUBDIR}/}
                    701: .    if defined(MASTER_SITE_OVERRIDE)
                    702: _MASTER_SITE_OVERRIDE:=        ${MASTER_SITE_OVERRIDE:=${DIST_SUBDIR}/}
                    703: .    endif # MASTER_SITE_OVERRIDE
                    704: .  else  # !DIST_SUBDIR
                    705: _MASTER_SITE_BACKUP:=  ${MASTER_SITE_BACKUP}
                    706: .    if defined(MASTER_SITE_OVERRIDE)
                    707: _MASTER_SITE_OVERRIDE:= ${MASTER_SITE_OVERRIDE}
                    708: .    endif # MASTER_SITE_OVERRIDE
                    709: .  endif # DIST_SUBDIR
                    710:
                    711: # Where to put distfiles that don't have any other master site
                    712: MASTER_SITE_LOCAL?=    ${MASTER_SITE_BACKUP:=LOCAL_PORTS/}
                    713:
                    714: ##### Make subtargets for "fetch".
                    715:
                    716: #===> check-vulnerable:  Check for any vulnerabilities in the package
                    717: _CHECK_VULNERABLE=                                                     \
                    718:        ${SETENV} PKGNAME="${PKGNAME}"                                  \
                    719:                  PKGBASE="${PKGBASE}"                                  \
                    720:                ${AWK} '/^$$/ { next }                                  \
                    721:                        /^\#.*/ { next }                                \
                    722:                        $$1 !~ ENVIRON["PKGBASE"] { next }              \
                    723:                        { s = sprintf("${PKG_ADMIN} pmatch \"%s\" %s && ${ECHO} \"*** WARNING - %s vulnerability in %s - see %s for more information ***\"", $$1, ENVIRON["PKGNAME"], $$2, ENVIRON["PKGNAME"], $$3); system(s); } \
                    724:                ' < ${PKGVULNDIR}/pkg-vulnerabilities || ${ECHO} 'could not check pkg-vulnerabilities file'
                    725:
                    726: _REAL_TARGETS.fetch+=          check-vulnerable
                    727: .PHONY: check-vulnerable
                    728: check-vulnerable:
                    729: .  if !defined(ALLOW_VULNERABLE_PACKAGES) && !exists(${extract_COOKIE})
                    730: .    if exists(${PKGVULNDIR}/pkg-vulnerabilities)
                    731:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                    732:        ${ECHO_MSG} "${_PKGSRC_IN}> Checking for vulnerabilities in ${PKGNAME}"; \
                    733:        vul=`${_CHECK_VULNERABLE}`;                                     \
                    734:        case "$$vul" in                                                 \
                    735:        "")     ;;                                                      \
                    736:        *)      ${ECHO} "$$vul";                                        \
                    737:                ${ECHO} "or define ALLOW_VULNERABLE_PACKAGES if this package is absolutely essential"; \
                    738:                ${FALSE} ;;                                             \
                    739:        esac
                    740: .    else
                    741:        @${ECHO_MSG} "${_PKGSRC_IN}> *** No ${PKGVULNDIR}/pkg-vulnerabilities file found,"
                    742:        @${ECHO_MSG} "${_PKGSRC_IN}> *** skipping vulnerability checks. To fix, install"
                    743:        @${ECHO_MSG} "${_PKGSRC_IN}> *** the pkgsrc/security/audit-packages package and run"
                    744:        @${ECHO_MSG} "${_PKGSRC_IN}> *** '${LOCALBASE}/sbin/download-vulnerability-list'."
                    745: .    endif
1.1127    agc       746: .  endif
1.653     jwise     747:
1.1540.2.1  tv        748: #===> "pre-fetch"
1.653     jwise     749:
1.1540.2.1  tv        750: _REAL_TARGETS.fetch+=          pre-fetch
                    751: .PHONY: pre-fetch
                    752: pre-fetch: .OPTIONAL
1.1252    jlam      753:
1.1540.2.1  tv        754: #===> "do-fetch"
1.383     hubertf   755:
1.1540.2.1  tv        756: _REAL_TARGETS.fetch+=          do-fetch
                    757: .PHONY: do-fetch
                    758: #do-fetch:
1.416     agc       759:
1.1540.2.1  tv        760: #===> "post-fetch"
1.1       agc       761:
1.1540.2.1  tv        762: _REAL_TARGETS.fetch+=          post-fetch
                    763: .PHONY: post-fetch
                    764: post-fetch: .OPTIONAL
1.43      hubertf   765:
1.1540.2.1  tv        766: .endif # !empty(PKG_PHASES:Mfetch) && !defined(_PKG_SKIPPED)
1.1       agc       767:
1.1540.2.1  tv        768: ############################################################################
                    769: # Phase `checksum'
                    770: ############################################################################
1.87      agc       771:
1.1540.2.1  tv        772: # not skipped by _PKG_SKIPPED
1.691     fredb     773:
1.1540.2.1  tv        774: #===> uptodate-digest:  Install "digest" if needed.
                    775: # this is also used by `patch' and `make*sum'
                    776: .PHONY: uptodate-digest
                    777: uptodate-digest:
                    778: .if !empty(USE_DIGEST:M[yY][eE][sS])
                    779:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                    780:        if [ -f ${DISTINFO_FILE} -a \( ! -f ${DIGEST} -o ${DIGEST_VERSION} -lt ${DIGEST_REQD} \) ]; then \
                    781:                { cd ${PKGSRCDIR}/pkgtools/digest;                      \
                    782:                ${MAKE} clean;                                          \
                    783:                if [ -f ${DIGEST} ]; then                               \
                    784:                        ${MAKE} ${MAKEFLAGS} deinstall;                 \
                    785:                fi;                                                     \
                    786:                ${MAKE} ${MAKEFLAGS} test;                              \
                    787:                if [ -f ${DIGEST} ]; then                               \
                    788:                        ${MAKE} ${MAKEFLAGS} deinstall;                 \
                    789:                fi;                                                     \
                    790:                ${MAKE} ${MAKEFLAGS} ${DEPENDS_TARGET};                 \
                    791:                ${MAKE} ${MAKEFLAGS} clean; }                           \
                    792:        fi
1.691     fredb     793: .endif
1.15      agc       794:
1.1540.2.1  tv        795: .if !empty(PKG_PHASES:Mchecksum) && !defined(_PKG_SKIPPED)
1.1067    jlam      796:
1.1540.2.1  tv        797: #===> do-checksum
                    798:
                    799: _REAL_TARGETS.checksum+=       do-checksum
                    800: .PHONY: do-checksum
                    801: do-checksum: .OPTIONAL
                    802: .  if !defined(NO_CHECKSUM) && !exists(${extract_COOKIE})
                    803: do-checksum: uptodate-digest
                    804:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                    805:        if [ ! -f ${DISTINFO_FILE} ]; then                              \
                    806:                ${ECHO_MSG} "=> No checksum file.";                     \
                    807:        else                                                            \
                    808:                (cd ${DISTDIR}; OK="true";                              \
                    809:                  for file in "" ${_CKSUMFILES}; do                     \
                    810:                        if [ "X$$file" = X"" ]; then continue; fi;      \
                    811:                        alg=`${AWK} 'NF == 4 && $$2 == "('$$file')" && $$3 == "=" {print $$1;}' ${DISTINFO_FILE}`; \
                    812:                        if [ "X$$alg" = "X" ]; then                     \
                    813:                                ${ECHO_MSG} "=> No checksum recorded for $$file."; \
                    814:                                OK="false";                             \
                    815:                        else                                            \
                    816:                                CKSUM=`${DIGEST} $$alg < $$file`;       \
                    817:                                CKSUM2=`${AWK} '$$1 == "'$$alg'" && $$2 == "('$$file')"{print $$4;}' ${DISTINFO_FILE}`; \
                    818:                                if [ "$$CKSUM2" = "IGNORE" ]; then      \
                    819:                                        ${ECHO_MSG} "=> Checksum for $$file is set to IGNORE in checksum file even though"; \
                    820:                                        ${ECHO_MSG} "   the file is not in the "'$$'"{IGNOREFILES} list."; \
                    821:                                        OK="false";                     \
                    822:                                elif [ "$$CKSUM" = "$$CKSUM2" ]; then   \
                    823:                                        ${ECHO_MSG} "=> Checksum OK for $$file."; \
                    824:                                else                                    \
                    825:                                        ${ECHO_MSG} "=> Checksum mismatch for $$file."; \
                    826:                                        OK="false";                     \
                    827:                                fi;                                     \
                    828:                        fi;                                             \
                    829:                  done;                                                 \
                    830:                  for file in "" ${_IGNOREFILES}; do                    \
                    831:                        if [ "X$$file" = X"" ]; then continue; fi;      \
                    832:                        CKSUM2=`${AWK} 'NF == 4 && $$3 == "=" && $$2 == "('$$file')"{print $$4;}' ${DISTINFO_FILE}`; \
                    833:                        if [ "$$CKSUM2" = "" ]; then                    \
                    834:                                ${ECHO_MSG} "=> No checksum recorded for $$file, file is in "'$$'"{IGNOREFILES} list."; \
                    835:                                OK="false";                             \
                    836:                        elif [ "$$CKSUM2" != "IGNORE" ]; then           \
                    837:                                ${ECHO_MSG} "=> Checksum for $$file is not set to IGNORE in checksum file even though"; \
                    838:                                ${ECHO_MSG} "   the file is in the "'$$'"{IGNOREFILES} list."; \
                    839:                                OK="false";                             \
                    840:                        fi;                                             \
                    841:                  done;                                                 \
                    842:                  if [ "$$OK" != "true" ]; then                         \
                    843:                        ${ECHO_MSG} "Make sure the Makefile and checksum file (${DISTINFO_FILE})"; \
                    844:                        ${ECHO_MSG} "are up to date.  If you want to override this check, type"; \
                    845:                        ${ECHO_MSG} "\"${MAKE} NO_CHECKSUM=yes [other args]\"."; \
                    846:                        exit 1;                                         \
                    847:                  fi) ;                                                 \
                    848:        fi
1.1067    jlam      849: .  endif
1.1540.2.1  tv        850:
                    851: .endif # !empty(PKG_PHASES:Mchecksum) && !defined(_PKG_SKIPPED)
                    852:
                    853: ############################################################################
                    854: # Phase `depends'
                    855: ############################################################################
                    856:
                    857: .if !empty(PKG_PHASES:Mdepends) && !defined(_PKG_SKIPPED)
                    858:
                    859: .  if defined(RECOMMENDED)
                    860: .    if !empty(IGNORE_RECOMMENDED:M[nN][oO])
                    861: DEPENDS+=              ${RECOMMENDED}
                    862: .    else
                    863: BUILD_DEFS_FIXED+=     IGNORE_RECOMMENDED
                    864: .    endif
1.1067    jlam      865: .  endif
                    866:
1.1540.2.1  tv        867: # Remove some redundant dependencies from the DEPENDS list.
                    868: .  include "../../mk/reduce-depends.mk"
1.1067    jlam      869:
1.1540.2.1  tv        870: _REAL_TARGETS.depends+=                depends-message
1.1466    xtraeme   871:
1.1540.2.1  tv        872: #===> "install-depends"
1.1       agc       873:
1.1540.2.1  tv        874: _REAL_TARGETS.depends+=                install-depends
                    875: .PHONY: install-depends
                    876: #install-depends:
1.1       agc       877:
1.1540.2.1  tv        878: .endif # !empty(PKG_PHASES:Mdepends) && !defined(_PKG_SKIPPED)
1.177     agc       879:
1.1540.2.1  tv        880: ############################################################################
                    881: # Phase `extract'
                    882: ############################################################################
1.135     agc       883:
1.1540.2.1  tv        884: .if !empty(PKG_PHASES:Mextract) && !defined(_PKG_SKIPPED)
1.1       agc       885:
1.1540.2.1  tv        886: _REAL_TARGETS.extract+=                extract-message
                    887:
                    888: #===> "build-defs-message"
                    889: # if BUILD_DEFS is non-empty, show a notice the the builder
                    890:
                    891: .  if !empty(PKGSRC_SHOW_BUILD_DEFS:M[yY][eE][sS])
                    892: _REAL_TARGETS.extract+=                build-defs-message
                    893: .PHONY: build-defs-message
                    894: build-defs-message:
                    895: .    if !empty(BUILD_DEFS)
                    896:        @${ECHO} "=========================================================================="
                    897:        @${ECHO} "The following variables will affect the build process of this package,"
                    898:        @${ECHO} "${PKGNAME}.  Their current value is shown below:"
                    899:        @${ECHO} ""
                    900: .      for var in ${BUILD_DEFS}
                    901: .        if !defined(${var})
                    902:        @${ECHO} "        * ${var} (not defined)"
                    903: .        elif defined(${var}) && empty(${var})
                    904:        @${ECHO} "        * ${var} (defined)"
                    905: .        else
                    906:        @${ECHO} "        * ${var} = ${${var}}"
                    907: .        endif
                    908: .      endfor
                    909:        @${ECHO} ""
                    910:        @${ECHO} "You may want to abort the process now with CTRL-C and change their value"
                    911:        @${ECHO} "before continuing.  Be sure to run \`${MAKE} clean' after"
                    912:        @${ECHO} "the changes."
                    913:        @${ECHO} "=========================================================================="
                    914: .    endif
1.789     hubertf   915: .  endif
1.1540.2.1  tv        916:
                    917: #===> "pre-extract"
                    918:
                    919: _REAL_TARGETS.extract+=                pre-extract
                    920: .PHONY: pre-extract
                    921: pre-extract: .OPTIONAL
                    922:
                    923: #===> "do-extract"
                    924:
                    925: _REAL_TARGETS.extract+=                do-extract
                    926: .PHONY: do-extract
                    927: #do-extract:
                    928:
                    929: #===> "post-extract"
                    930:
                    931: _REAL_TARGETS.extract+=                post-extract
                    932: .PHONY: post-extract
                    933: post-extract: .OPTIONAL
                    934:
                    935: .endif # !empty(PKG_PHASES:Mextract) && !defined(_PKG_SKIPPED)
                    936:
                    937: ############################################################################
                    938: # Phase `patch'
                    939: ############################################################################
                    940:
                    941: .if !empty(PKG_PHASES:Mpatch) && !defined(_PKG_SKIPPED)
                    942:
                    943: # determine if we need a working patch(1).
                    944: .  if defined(PATCHFILES)
                    945: _NEED_PATCH=           YES
                    946: .  elif defined(_OPSYS_GPATCH_REQD) && !empty(_OPSYS_GPATCH_REQD:M[yY][eE][sS])
                    947: _NEED_PATCH=           YES
1.1315    cube      948: .  else
1.1540.2.1  tv        949: _NEED_PATCH!=          if [ -d ${PATCHDIR} ]; then \
                    950:                                if [ "`${ECHO} ${PATCHDIR}/patch-*`" != "${PATCHDIR}/patch-*" ]; then \
                    951:                                        ${ECHO} YES; \
                    952:                                else \
                    953:                                        ${ECHO} NO; \
                    954:                                fi \
                    955:                        else \
                    956:                                ${ECHO} NO; \
                    957:                        fi
1.1315    cube      958: .  endif
1.1540.2.1  tv        959:
                    960: .  if ${_NEED_PATCH} == "YES"
                    961: USE_GNU_TOOLS+=                patch
1.1315    cube      962: .  endif
1.1540.2.1  tv        963:
                    964: .  if defined(PATCH_DEBUG) || defined(PKG_VERBOSE)
                    965: PATCH_DEBUG_TMP=       yes
1.1315    cube      966: .  endif
1.1540.2.1  tv        967: PATCH_DEBUG_TMP?=      no
                    968:
                    969: PATCH_STRIP?=          -p0
                    970: .  if ${PATCH_DEBUG_TMP} == "yes"
                    971: PATCH_ARGS?=           -d ${WRKSRC} -E ${PATCH_STRIP}
                    972: .  endif
                    973: PATCH_ARGS?=           -d ${WRKSRC} --forward --quiet -E ${PATCH_STRIP}
1.1       agc       974:
1.1540.2.1  tv        975: PATCH_ARGS+=           ${BATCH:D--batch}
                    976: .  if defined(_PATCH_CAN_BACKUP) && (${_PATCH_CAN_BACKUP} == "yes")
                    977: PATCH_ARGS+=           ${_PATCH_BACKUP_ARG} .orig
                    978: .  endif
                    979: PATCH_FUZZ_FACTOR?=    -F0     # Default to zero fuzz
1.1       agc       980:
1.1540.2.1  tv        981: # The following variables control how "distribution" patches are extracted
                    982: # and applied to the package sources.
                    983: #
                    984: # PATCH_DIST_STRIP is a patch option that sets the pathname strip count.
                    985: # PATCH_DIST_ARGS is the list of arguments to pass to the patch command.
                    986: # PATCH_DIST_CAT is the command that outputs the patch to stdout.
                    987: #
                    988: # For each of these variables, there is a patch-specific variant that
                    989: # may be set, i.e. PATCH_DIST_STRIP.<patch>, PATCH_DIST_ARGS.<patch>,
                    990: # PATCH_DIST_CAT.<patch>.
                    991: #
                    992: PATCH_DIST_STRIP?=             -p0
                    993: .  for i in ${PATCHFILES}
                    994: PATCH_DIST_STRIP.${i:S/=/--/}?=        ${PATCH_DIST_STRIP}
                    995: .    if defined(PATCH_DIST_ARGS)
                    996: PATCH_DIST_ARGS.${i:S/=/--/}?= ${PATCH_DIST_ARGS}
                    997: .    elif ${PATCH_DEBUG_TMP} == "yes"
                    998: PATCH_DIST_ARGS.${i:S/=/--/}?= -d ${WRKSRC} -E ${PATCH_DIST_STRIP.${i:S/=/--/}}
                    999: .    else
                   1000: PATCH_DIST_ARGS.${i:S/=/--/}?= -d ${WRKSRC} --forward --quiet -E ${PATCH_DIST_STRIP.${i:S/=/--/}}
                   1001: .    endif
                   1002: .  endfor
                   1003: .  if defined(BATCH)
                   1004: PATCH_DIST_ARGS+=              --batch
                   1005: .    for i in ${PATCHFILES}
                   1006: PATCH_DIST_ARGS.${i:S/=/--/}+= --batch
                   1007: .    endfor
                   1008: .  endif
                   1009: .  if defined(_PATCH_CAN_BACKUP) && (${_PATCH_CAN_BACKUP} == "yes")
                   1010: PATCH_DIST_ARGS+=              ${_PATCH_BACKUP_ARG} .orig_dist
                   1011: .    for i in ${PATCHFILES}
                   1012: PATCH_DIST_ARGS.${i:S/=/--/}+= ${_PATCH_BACKUP_ARG} .orig_dist
                   1013: .    endfor
                   1014: .  endif
                   1015: PATCH_DIST_CAT?=       { case $$patchfile in                           \
                   1016:                          *.Z|*.gz) ${GZCAT} $$patchfile ;;             \
                   1017:                          *.bz2)    ${BZCAT} $$patchfile ;;             \
                   1018:                          *)        ${CAT} $$patchfile ;;               \
                   1019:                          esac; }
                   1020: .  for i in ${PATCHFILES}
                   1021: PATCH_DIST_CAT.${i:S/=/--/}?=  { patchfile=${i}; ${PATCH_DIST_CAT}; }
                   1022: .  endfor
1.1       agc      1023:
1.1540.2.1  tv       1024: .  if !empty(PKGSRC_SHOW_PATCH_ERRORMSG:M[yY][eE][sS])
                   1025: PKGSRC_PATCH_FAIL=                                                     \
                   1026: if [ -n "${PKG_OPTIONS}" ] || [ -n "${_LOCALPATCHFILES}" ]; then       \
                   1027:        ${ECHO} "==========================================================================";                                                           \
                   1028:        ${ECHO};                                                        \
                   1029:        ${ECHO} "Some of the selected build options and/or local patches may be incompatible.";                                                         \
                   1030:        ${ECHO} "Please try building with fewer options or patches.";   \
                   1031:        ${ECHO};                                                        \
                   1032:        ${ECHO} "==========================================================================";                                                           \
                   1033: fi; exit 1
                   1034: .  endif
                   1035: PKGSRC_PATCH_FAIL?=    exit 1
1.602     hubertf  1036:
1.1540.2.3! tv       1037: _REAL_TARGETS.patch+=  patch-message pre-patch do-patch post-patch
        !          1038:
1.1540.2.1  tv       1039: .endif # !empty(PKG_PHASES:Mpatch) && !defined(_PKG_SKIPPED)
1.254     tron     1040:
1.1540.2.1  tv       1041: ############################################################################
                   1042: # Phase `tools'
                   1043: ############################################################################
1.254     tron     1044:
1.1540.2.1  tv       1045: do-tools: .OPTIONAL
                   1046: .if !empty(PKG_PHASES:Mtools) && !defined(_PKG_SKIPPED)
1.273     tv       1047:
1.1540.2.1  tv       1048: .  include "../../mk/tools.mk"
                   1049:
1.1540.2.3! tv       1050: _REAL_TARGETS.tools+=  tools-message pre-tools do-tools post-tools
        !          1051:
1.1540.2.1  tv       1052: .endif # !empty(PKG_PHASES:Mtools) && !defined(_PKG_SKIPPED)
                   1053:
                   1054: ############################################################################
                   1055: # Phase `wrapper'
                   1056: ############################################################################
1.1       agc      1057:
1.1540.2.1  tv       1058: do-wrapper: .OPTIONAL
                   1059: .if !empty(PKG_PHASES:Mwrapper) && !defined(_PKG_SKIPPED)
1.907     agc      1060:
1.1540.2.1  tv       1061: # If NO_BUILD is defined, default to not needing a compiler.
                   1062: .  if defined(NO_BUILD)
                   1063: USE_LANGUAGES?=                # empty
                   1064: .  endif
                   1065: .  include "../../mk/compiler.mk"
                   1066: .  include "../../mk/wrapper/bsd.wrapper.mk"
1.1       agc      1067:
1.1540.2.3! tv       1068: _REAL_TARGETS.wrapper+=        wrapper-message pre-wrapper do-wrapper post-wrapper
        !          1069:
1.1540.2.1  tv       1070: .endif # !empty(PKG_PHASES:Mwrapper) && !defined(_PKG_SKIPPED)
                   1071:
                   1072: ############################################################################
                   1073: # Phase `configure'
                   1074: ############################################################################
                   1075:
                   1076: .if !empty(PKG_PHASES:Mconfigure) && !defined(_PKG_SKIPPED)
                   1077:
                   1078: CONFIGURE_ENV+=                ${ALL_ENV}
                   1079: CONFIGURE_ENV+=                ac_given_INSTALL="`${TYPE} ${INSTALL} | ${AWK} '{ print $$NF }'` -c -o ${BINOWN} -g ${BINGRP}"
                   1080: CONFIGURE_ENV+=                AWK=${AWK:Q}
                   1081: CONFIGURE_ENV+=                F77=${FC:Q}
                   1082: CONFIGURE_ENV+=                FC=${FC:Q}
                   1083: CONFIGURE_ENV+=                INSTALL="`${TYPE} ${INSTALL} | ${AWK} '{ print $$NF }'` -c -o ${BINOWN} -g ${BINGRP}"
                   1084: CONFIGURE_ENV+=                MAKE=${MAKE_PROGRAM:T:Q}
                   1085: CONFIGURE_ENV+=                M4=${M4:Q}
                   1086: CONFIGURE_ENV+=                YACC=${YACC:Q}
1.262     tv       1087:
1.1540.2.1  tv       1088: .  if defined(GNU_CONFIGURE)
                   1089: #
                   1090: # If GNU_CONFIGURE is defined, then pass LIBS to the GNU configure script.
                   1091: # also pass in a CONFIG_SHELL to avoid picking up bash
                   1092: #
                   1093: CONFIG_SHELL?=         ${SH}
                   1094: CONFIGURE_ENV+=                CONFIG_SHELL=${CONFIG_SHELL}
                   1095: CONFIGURE_ENV+=                install_sh=${INSTALL:Q}
                   1096: CONFIGURE_ENV+=                LIBS=${LIBS:Q}
                   1097: CONFIGURE_ENV+=                ${USE_LIBTOOL:Dlt_cv_sys_max_cmd_len=${_OPSYS_MAX_CMDLEN}}
1.996     jlam     1098: #
1.1366    jlam     1099: # GNU_CONFIGURE_PREFIX is the argument to the --prefix option passed to the
1.996     jlam     1100: # GNU configure script.
                   1101: #
                   1102: GNU_CONFIGURE_PREFIX?= ${PREFIX}
                   1103: CONFIGURE_ARGS+=       --host=${MACHINE_GNU_PLATFORM}
                   1104: CONFIGURE_ARGS+=       --prefix=${GNU_CONFIGURE_PREFIX}
1.1       agc      1105: HAS_CONFIGURE=         yes
1.1540.2.1  tv       1106: .    if defined(USE_X11)
1.1076    jlam     1107: CONFIGURE_ARGS+=       --x-includes=${X11BASE}/include
1.1536    sketch   1108: CONFIGURE_ARGS+=        --x-libraries=${X11BASE}/lib${LIBABISUFFIX}
1.1540.2.1  tv       1109: .    endif
1.1456    reed     1110: CONFIGURE_HAS_INFODIR?=        yes
1.1540.2.1  tv       1111: .    if !empty(INFO_FILES) && !empty(CONFIGURE_HAS_INFODIR:M[yY][eE][sS])
1.1455    reed     1112: CONFIGURE_ARGS+=       --infodir=${PREFIX}/${INFO_DIR}
1.1540.2.1  tv       1113: .    endif
1.1397    grant    1114: #
                   1115: # By default, override config.guess and config.sub for GNU configure
                   1116: # packages. pkgsrc's updated versions of these scripts allows GNU
                   1117: # configure to recognise NetBSD ports such as shark.
                   1118: #
1.1403    jlam     1119: CONFIG_GUESS_OVERRIDE?=                \
                   1120:        config.guess */config.guess */*/config.guess
                   1121: CONFIG_SUB_OVERRIDE?=          \
                   1122:        config.sub */config.sub */*/config.sub
1.1400    jlam     1123: #
                   1124: # By default, override config.status for GNU configure packages.  We
                   1125: # never want it to execute after the configure phase has ended as it
                   1126: # might overwrite any post-configure changes we might have made to the
                   1127: # generated files.
                   1128: #
                   1129: CONFIG_STATUS_OVERRIDE?=       \
                   1130:        config.status */config.status */*/config.status
1.1540.2.1  tv       1131: .  endif
1.865     jlam     1132:
1.1540.2.3! tv       1133: _REAL_TARGETS.configure+=configure-message pre-configure pre-configure-override do-configure post-configure
        !          1134:
1.1540.2.1  tv       1135: .endif # !empty(PKG_PHASES:Mconfigure) && !defined(_PKG_SKIPPED)
                   1136:
                   1137: ############################################################################
                   1138: # Phase `build'
                   1139: ############################################################################
                   1140:
                   1141: .if !empty(PKG_PHASES:Mbuild) && !defined(_PKG_SKIPPED)
                   1142:
1.1540.2.3! tv       1143: _REAL_TARGETS.build+=  build-message pre-build do-build post-build
        !          1144:
1.1540.2.1  tv       1145: .endif # !empty(PKG_PHASES:Mbuild) && !defined(_PKG_SKIPPED)
                   1146:
                   1147: ############################################################################
                   1148: # Phase `test'
                   1149: ############################################################################
                   1150:
                   1151: .if !empty(PKG_PHASES:Mtest)
1.1540.2.3! tv       1152:
        !          1153: _REAL_TARGETS.test+=   test-message pre-test do-test post-test
        !          1154:
1.1540.2.1  tv       1155: .endif # !empty(PKG_PHASES:Mtest)
                   1156:
                   1157: ############################################################################
                   1158: # Phase `install'
                   1159: ############################################################################
                   1160:
                   1161: .if !empty(PKG_PHASES:Minstall)
                   1162:
                   1163: ##### PLIST manipulation
                   1164:
                   1165: .  if ${PKG_INSTALLATION_TYPE} == "pkgviews"
1.865     jlam     1166: #
1.1540.2.1  tv       1167: # _PLIST_IGNORE_FILES basically mirrors the list of ignored files found
                   1168: # in pkg_views(1).  It's used by the dynamic PLIST generator to skip
                   1169: # adding the named files to the PLIST.
1.923     jlam     1170: #
1.1540.2.1  tv       1171: _PLIST_IGNORE_FILES=   +*                      # package metadata files
                   1172: _PLIST_IGNORE_FILES+=  info/dir
                   1173: .    if defined(INFO_DIR) && empty(INFO_DIR:Minfo)
                   1174: _PLIST_IGNORE_FILES+=  ${INFO_DIR}/dir
1.1428    jlam     1175: .    endif
1.1540.2.1  tv       1176: _PLIST_IGNORE_FILES+=  *[~\#] *.OLD *.orig *,v # scratch config files
                   1177: _PLIST_IGNORE_FILES+=  ${PLIST_IGNORE_FILES}
                   1178:
                   1179: PKG_ARGS_INSTALL+=     -U      # don't update the pkgdb.byfile.db
                   1180: PKG_ARGS_BINPKG+=      -E      # create an empty views file in the binpkg
                   1181: .  endif # PKG_INSTALLATION_TYPE
                   1182:
                   1183: BUILD_DEFS_FIXED+=     _PLIST_IGNORE_FILES
                   1184:
                   1185: ##### Make subtargets for non-su portion of "install".
                   1186:
                   1187: #===> "install-check-pkgname"
                   1188:
                   1189: _REAL_TARGETS.install+=                install-check-pkgname
                   1190: .PHONY: install-check-pkgname
                   1191: install-check-pkgname:
                   1192:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1193:        extractname=`${CAT} ${extract_COOKIE}`;                         \
                   1194:        case "$$extractname" in                                         \
                   1195:        "")     ${ECHO_MSG} "*** Warning: ${WRKDIR} may contain an older version of ${PKGBASE}" ;; \
                   1196:        "${PKGNAME}")   ;;                                              \
                   1197:        *)      ${ECHO_MSG} "*** Warning: Package version $$extractname in ${WRKDIR}"; \
                   1198:                ${ECHO_MSG} "*** Current version ${PKGNAME} in pkgsrc directory"; \
                   1199:                ${ECHO_MSG} "*** Cleaning and rebuilding the newer version of the package..."; \
                   1200:                ${MAKE} clean && ${MAKE} build ;;                       \
                   1201:        esac
                   1202:
                   1203: #===> "do-su-install"
                   1204: # su to root, then run real-su-install
                   1205:
                   1206: _REAL_TARGETS.install+=                do-su-install
                   1207:
                   1208: ##### Make subtargets for su portion of "install".
                   1209:
                   1210: #===> "message"
                   1211: # generate ${MESSAGE} from ${MESSAGE_SRC} by substituting
                   1212: # for MESSAGE_SUBST entries
                   1213:
                   1214: _REAL_TARGETS.su-install+=     message
                   1215: .PHONY: message
                   1216: message: ${MESSAGE}
                   1217: .  if defined(MESSAGE)
                   1218: ${MESSAGE}: ${MESSAGE_SRC}
                   1219:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1220:        if [ -z "${MESSAGE_SRC}" ]; then                                \
                   1221:                ${ECHO} "${MESSAGE_SRC} not found.";                    \
                   1222:                ${ECHO} "Please set MESSAGE_SRC correctly.";            \
                   1223:        else                                                            \
                   1224:                ${CAT} ${MESSAGE_SRC} |                                 \
                   1225:                        ${SED} ${MESSAGE_SUBST_SED}                     \
                   1226:                        > ${MESSAGE};                                   \
                   1227:        fi
1.865     jlam     1228: .  endif
                   1229:
1.1540.2.1  tv       1230: #===> "init-install"
                   1231: # check for conflicts and create install directories
1.1       agc      1232:
1.1540.2.1  tv       1233: _REAL_TARGETS.su-install+=     init-install
                   1234: .PHONY: init-install
                   1235: init-install:
                   1236: .  if !defined(NO_PKG_REGISTER) && !defined(FORCE_PKG_REGISTER) &&     \
                   1237:     (${PKG_INSTALLATION_TYPE} == "overwrite")
                   1238: .    if defined(CONFLICTS)
                   1239:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1240:        ${RM} -f ${WRKDIR}/.CONFLICTS
                   1241: .      for conflict in ${CONFLICTS}
                   1242:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1243:        found="`${PKG_BEST_EXISTS} \"${conflict}\" || ${TRUE}`";        \
                   1244:        if [ X"$$found" != X"" ]; then                                  \
                   1245:                ${ECHO} "$$found" >> ${WRKDIR}/.CONFLICTS;              \
                   1246:        fi
                   1247: .      endfor
                   1248:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1249:        if [ -s ${WRKDIR}/.CONFLICTS ]; then                            \
                   1250:                found=`${SED} -e s'|${_PKG_DBDIR}/||g' ${WRKDIR}/.CONFLICTS | tr '\012' ' '`; \
                   1251:                ${ECHO_MSG} "${_PKGSRC_IN}> ${PKGNAME} conflicts with installed package(s): $$found found."; \
                   1252:                ${ECHO_MSG} "*** They install the same files into the same place."; \
                   1253:                ${ECHO_MSG} "*** Please remove $$found first with pkg_delete(1)."; \
                   1254:                ${RM} -f ${WRKDIR}/.CONFLICTS;                          \
                   1255:                exit 1;                                                 \
                   1256:        fi
                   1257: .    endif     # CONFLICTS
                   1258:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1259:        found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`";     \
                   1260:        if [ "$$found" != "" ]; then                                    \
                   1261:                ${ECHO_MSG} "${_PKGSRC_IN}> $$found is already installed - perhaps an older version?"; \
                   1262:                ${ECHO_MSG} "*** If so, you may use either of:"; \
                   1263:                ${ECHO_MSG} "***  - \"pkg_delete $$found\" and \"${MAKE} reinstall\" to upgrade properly"; \
                   1264:                ${ECHO_MSG} "***  - \"${MAKE} update\" to rebuild the package and all of its dependencies"; \
                   1265:                ${ECHO_MSG} "***  - \"${MAKE} replace\" to replace only the package without re-linking"; \
                   1266:                ${ECHO_MSG} "***    dependencies, risking various problems."; \
                   1267:                exit 1;                                                 \
                   1268:        fi
                   1269: .  endif # !NO_PKG_REGISTER && !NO_FORCE_REGISTER && overwrite
                   1270: .  if ${PKG_INSTALLATION_TYPE} == "pkgviews"
                   1271:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1272:        found="`${PKG_INFO} -e ${PKGNAME} || ${TRUE}`";                 \
                   1273:        if [ "$$found" != "" ]; then                                    \
                   1274:                ${ECHO_MSG} "${_PKGSRC_IN}>  $$found is already installed."; \
                   1275:                exit 1;                                                 \
                   1276:        fi
                   1277: .  endif
                   1278:        ${_PKG_SILENT}${_PKG_DEBUG}if [ `${SH} -c umask` -ne ${DEF_UMASK} ]; then \
                   1279:                ${ECHO_MSG} "${_PKGSRC_IN}>  Warning: your umask is \"`${SH} -c umask`"\".; \
                   1280:                ${ECHO_MSG} "If this is not desired, set it to an appropriate value (${DEF_UMASK})"; \
                   1281:                ${ECHO_MSG} "and install this package again by \`\`${MAKE} deinstall reinstall''."; \
                   1282:        fi
                   1283: .  if defined(INSTALLATION_DIRS) && !empty(INSTALLATION_DIRS)
                   1284:        ${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG} "${_PKGSRC_IN}> Creating installation directories"
                   1285:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1286:        for dir in ${INSTALLATION_DIRS}; do                             \
                   1287:                case $$dir in                                           \
                   1288:                /*)     ;;                                              \
                   1289:                *bin|*bin/*|*libexec|*libexec/*)                        \
                   1290:                        ${INSTALL_PROGRAM_DIR} ${PREFIX}/$$dir ;;       \
                   1291:                *man/*)                                                 \
                   1292:                        ${INSTALL_MAN_DIR} ${PREFIX}/$$dir ;;           \
                   1293:                *)                                                      \
                   1294:                        ${INSTALL_DATA_DIR} ${PREFIX}/$$dir ;;          \
                   1295:                esac;                                                   \
                   1296:        done
                   1297: .  endif       # INSTALLATION_DIRS
                   1298: .  if !defined(NO_MTREE)
                   1299:        ${_PKG_SILENT}${_PKG_DEBUG}if [ `${ID} -u` = `${ID} -u ${ROOT_USER}` ]; then            \
                   1300:                if [ ! -f ${MTREE_FILE} ]; then                         \
                   1301:                        ${ECHO_MSG} "Error: mtree file \"${MTREE_FILE}\" is missing."; \
                   1302:                        exit 1;                                         \
                   1303:                else                                                    \
                   1304:                        if [ ! -d ${PREFIX} ]; then                     \
                   1305:                                ${MKDIR} ${PREFIX};                     \
                   1306:                        fi;                                             \
                   1307:                        ${MTREE} ${MTREE_ARGS} ${PREFIX}/;              \
                   1308:                fi;                                                     \
                   1309:        else                                                            \
                   1310:                ${ECHO_MSG} "Warning: not superuser, can't run mtree."; \
                   1311:                ${ECHO_MSG} "Become ${ROOT_USER} and try again to ensure correct permissions."; \
                   1312:        fi
                   1313: .  else
                   1314:        ${_PKG_SILENT}${_PKG_DEBUG}[ -d ${PREFIX} ] || ${MKDIR} ${PREFIX}
                   1315: .  endif # !NO_MTREE
1.1       agc      1316:
1.1540.2.1  tv       1317: #===> "pre-install-script"
                   1318:
                   1319: _REAL_TARGETS.su-install+=     pre-install-script
                   1320: .PHONY: pre-install-script
                   1321: pre-install-script: .OPTIONAL
                   1322:
                   1323: #===> "pre-install"
                   1324:
                   1325: _REAL_TARGETS.su-install+=     pre-install
                   1326: .PHONY: pre-install
                   1327: pre-install: .OPTIONAL
                   1328:
                   1329: #===> "do-install"
                   1330:
                   1331: _REAL_TARGETS.su-install+=     do-install
                   1332:
                   1333: #===> "post-install"
                   1334:
                   1335: _REAL_TARGETS.su-install+=     post-install
                   1336: .PHONY: post-install
                   1337: post-install: .OPTIONAL
                   1338:
                   1339: #===> "plist"
                   1340: #
                   1341: # PLIST must be generated at this late point (instead of
                   1342: # depending on it somewhere earlier), because it needs
                   1343: # to be created _after_ the {pre,do,post}-install
                   1344: # targets are run.
                   1345: #
                   1346: # We generate _before_ post-install-script is run so
                   1347: # that the real config files and rc.d scripts aren't
                   1348: # listed in the PLIST.
                   1349: #
                   1350: _REAL_TARGETS.su-install+=     plist
                   1351: .PHONY: plist
                   1352: plist: ${PLIST}
                   1353:
                   1354: #===> "post-install-script"
                   1355:
                   1356: _REAL_TARGETS.su-install+=     post-install-script
                   1357: .PHONY: post-install-script
                   1358: post-install-script: .OPTIONAL
                   1359:
                   1360: #===> "post-install-man"
                   1361: # fixup manpages to match actual installed files
                   1362:
                   1363: _REAL_TARGETS.su-install+=     post-install-man
                   1364: .PHONY: post-install-man
                   1365: post-install-man:
                   1366:        ${_PKG_SILENT}${_PKG_DEBUG}newmanpages=`${EGREP} -h             \
                   1367:                '^([^@/]*/)*man/([^/]*/)?(man[1-9ln]/.*\.[1-9ln]|cat[1-9ln]/.*\.0)(\.gz)?$$' \
                   1368:                ${PLIST} 2>/dev/null || ${TRUE}`;                       \
                   1369:        if [ X"${MANCOMPRESSED}" != X"" -a X"${MANZ}" = X"" ]; then     \
                   1370:                ${ECHO_MSG} "${_PKGSRC_IN}> [Automatic manual page handling]";  \
                   1371:                ${ECHO_MSG} "${_PKGSRC_IN}> Decompressing manual pages for ${PKGNAME}"; \
                   1372:                for manpage in $$newmanpages; do                        \
                   1373:                        manpage=`${ECHO} $$manpage | ${SED} -e 's|\.gz$$||'`; \
                   1374:                        if [ -h ${PREFIX}/$$manpage.gz ]; then          \
                   1375:                                set - `${LS} -l ${PREFIX}/$$manpage.gz | ${SED} -e 's|\.gz$$||'`; \
                   1376:                                shift `expr $$# - 1`;                   \
                   1377:                                ${RM} -f ${PREFIX}/$$manpage;           \
                   1378:                                ${LN} -s $${1} ${PREFIX}/$$manpage;     \
                   1379:                                ${RM} ${PREFIX}/$$manpage.gz;           \
                   1380:                        else                                            \
                   1381:                                ${GUNZIP_CMD} ${PREFIX}/$$manpage.gz;   \
                   1382:                        fi;                                             \
                   1383:                        if [ X"${PKG_VERBOSE}" != X"" ]; then           \
                   1384:                                ${ECHO_MSG} "$$manpage";                \
                   1385:                        fi;                                             \
                   1386:                done;                                                   \
                   1387:        fi;                                                             \
                   1388:        if [ X"${MANCOMPRESSED}" = X"" -a X"${MANZ}" != X"" ]; then     \
                   1389:                ${ECHO_MSG} "${_PKGSRC_IN}> [Automatic manual page handling]";  \
                   1390:                ${ECHO_MSG} "${_PKGSRC_IN}> Compressing manual pages for ${PKGNAME}"; \
                   1391:                for manpage in $$newmanpages; do                        \
                   1392:                        manpage=`${ECHO} $$manpage | ${SED} -e 's|\.gz$$||'`; \
                   1393:                        if [ -h ${PREFIX}/$$manpage ]; then             \
                   1394:                                set - `${LS} -l ${PREFIX}/$$manpage`; \
                   1395:                                shift `expr $$# - 1`;                   \
                   1396:                                ${RM} -f ${PREFIX}/$$manpage.gz;        \
                   1397:                                ${LN} -s $${1}.gz ${PREFIX}/$$manpage.gz; \
                   1398:                                ${RM} ${PREFIX}/$$manpage;              \
                   1399:                        else                                            \
                   1400:                                ${GZIP_CMD} ${PREFIX}/$$manpage;        \
                   1401:                        fi;                                             \
                   1402:                        if [ X"${PKG_VERBOSE}" != X"" ]; then           \
                   1403:                                ${ECHO_MSG} "$$manpage";                \
                   1404:                        fi;                                             \
                   1405:                done;                                                   \
                   1406:        fi
                   1407:
                   1408: #===> "post-install-shlib"
                   1409:
                   1410: .  if ${_DO_SHLIB_CHECKS} == "yes"
                   1411: .    if ${PKG_INSTALLATION_TYPE} == "overwrite"
                   1412: _REAL_TARGETS.su-install+=     post-install-shlib
                   1413: .PHONY: post-install-shlib
                   1414: post-install-shlib:
                   1415:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1416:        ${MAKE} ${MAKEFLAGS} do-shlib-handling SHLIB_PLIST_MODE=0
                   1417: .    endif
                   1418: .  endif
                   1419:
                   1420: #===> "post-install-message"
                   1421: # display MESSAGE, if specified
                   1422:
                   1423: .  ifdef MESSAGE
                   1424: _REAL_TARGETS.su-install+=     post-install-message
                   1425: .PHONY: post-install-message
                   1426: post-install-message:
                   1427:        @${ECHO_MSG} "${_PKGSRC_IN}> Please note the following:"
                   1428:        @${ECHO_MSG} ""
                   1429:        @${CAT} ${MESSAGE}
                   1430:        @${ECHO_MSG} ""
                   1431: .    if !empty(PKGSRC_MESSAGE_RECIPIENTS)
                   1432:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1433:        (${ECHO} "The ${PKGNAME} package was installed on `${HOSTNAME_CMD}` at `date`"; \
                   1434:        ${ECHO} "";                                                     \
                   1435:        ${ECHO} "Please note the following:";                           \
                   1436:        ${ECHO} "";                                                     \
                   1437:        ${CAT} ${MESSAGE};                                              \
                   1438:        ${ECHO} "") |                                                   \
                   1439:        ${MAIL_CMD} -s"Package ${PKGNAME} installed on `${HOSTNAME_CMD}`" ${PKGSRC_MESSAGE_RECIPIENTS}
                   1440: .    endif
                   1441: .  endif
1.1433    grant    1442:
1.1540.2.1  tv       1443: #===> "fake-pkg"
1.1370    jlam     1444:
1.1540.2.1  tv       1445: _REAL_TARGETS.su-install+=     fake-pkg
1.1453    jlam     1446:
1.1540.2.1  tv       1447: #===> "check-shlibs"
1.1032    jlam     1448:
1.1540.2.1  tv       1449: .  if defined(PKG_DEVELOPER) && (${CHECK_SHLIBS} == "YES")
                   1450: _REAL_TARGETS.su-install+=     check-shlibs
1.1492    tv       1451: .  endif
                   1452:
1.1540.2.1  tv       1453: .endif # !empty(PKG_PHASES:Minstall)
1.1441    jmmv     1454:
1.1540.2.1  tv       1455: ############################################################################
1.1540.2.3! tv       1456: # Special install phase `replace'
        !          1457: ############################################################################
        !          1458:
        !          1459: _REAL_TARGETS.replace+=        do-su-replace
        !          1460:
        !          1461: _REAL_TARGETS.su-replace+=
        !          1462:
        !          1463: _REAL_TARGETS.undo-replace+= do-su-undo-replace
        !          1464:
        !          1465: ############################################################################
1.1540.2.1  tv       1466: # Phase `package'
                   1467: ############################################################################
1.1410    jlam     1468:
1.1540.2.3! tv       1469: _REAL_TARGETS.package+=        do-su-package
        !          1470:
        !          1471: _REAL_TARGETS.su-package+=
        !          1472:
1.1540.2.1  tv       1473: ############################################################################
1.1540.2.3! tv       1474: # Variables calculated after all the above, and recursion support
1.1540.2.1  tv       1475: ############################################################################
1.1374    jlam     1476:
1.1540.2.2  tv       1477: # explicit "-f Makefile" here to work around problems with the MAKEFILE var
                   1478: # and case-insensitive filesystems (see PR pkg/28392)
                   1479: #
1.1540.2.1  tv       1480: .for targ in ${_PKG_PHASES_ALL}
                   1481: .PHONY: recurse-${targ}
                   1482: recurse-${targ}:
1.1540.2.2  tv       1483:        ${_PKG_SILENT}${_PKG_DEBUG}cd ${PKGDIR} && ${MAKE} -f Makefile ${targ}
1.1540.2.1  tv       1484: .endfor
1.1       agc      1485:
1.1540.2.1  tv       1486: # convenience target, to display make variables from command line
                   1487: # i.e. "make show-var VARNAME=var", will print var's value
                   1488: .PHONY: show-var show-var-noeval
                   1489: show-var show-var-noeval:
                   1490:        @${ECHO} ${${VARNAME}:Q}
1.117     agc      1491:
1.1540.2.1  tv       1492: # enhanced version of target above, to display multiple variables
                   1493: .PHONY: show-vars show-vars-noeval
                   1494: show-vars show-vars-noeval:
                   1495: .for VARNAME in ${VARNAMES}
                   1496:        @${ECHO} ${${VARNAME}:Q}
                   1497: .endfor
1.1       agc      1498:
1.1540.2.3! tv       1499: # Find out the PREFIX of dependencies where the PREFIX is needed at build time.
        !          1500: .if defined(EVAL_PREFIX)
        !          1501: .  for def in ${EVAL_PREFIX}
        !          1502: .    if !defined(${def:C/=.*$//})
        !          1503: ${def:C/=.*$//}_DEFAULT?=${LOCALBASE}
        !          1504: _${def:C/=.*$//}_CMD=  ${PKG_INFO} -qp ${def:C/^.*=//} 2>/dev/null | ${AWK} '{ print $$2; exit }' | grep '' || ${ECHO} ${${def:C/=.*$//}_DEFAULT}
        !          1505: ${def:C/=.*$//}=       ${_${def:C/=.*$//}_CMD:sh}
        !          1506: .    endif
        !          1507: .  endfor
        !          1508: .endif
        !          1509:
1.1540.2.1  tv       1510: PREPEND_PATH?=         # empty
                   1511: .if !empty(PREPEND_PATH)
                   1512: # This is very Special.  Because PREPEND_PATH is set with += in reverse order,
                   1513: # the awk expression reverses the order again (since bootstrap bmake doesn't
                   1514: # yet support the :[-1..1] construct).
                   1515: _PATH_CMD=             ${ECHO} `${ECHO} ${PREPEND_PATH:Q} | ${AWK} '{for (i=NF;i>0;i--) print $$i}'`:${_PATH_ORIG} | ${TR} ' ' :
                   1516: PATH=                  ${_PATH_CMD:sh} # DOES NOT use :=, to defer evaluation
                   1517: .endif
                   1518:
                   1519: ############################################################################
                   1520: # User-visible make targets
                   1521: ############################################################################
                   1522:
                   1523: # Catch-all targets.
                   1524: # Without anything specified, assume "all".  Also allow "dependall" to be
                   1525: # specified for those in the habit of using that in NetBSD main source.
                   1526: # Recurses to ensure that .if make() conditionals work as expected.
1.547     hubertf  1527:
1.1540.2.1  tv       1528: .if !empty(PKGSRC_RUN_TEST:M[yY][eE][sS])
                   1529: # only invoke "test" if requested; makes SMART_MESSAGES look nicer
                   1530: _PKG_ALL_TARGET=       test
                   1531: .endif
1.547     hubertf  1532:
1.1540.2.1  tv       1533: .PHONY: all dependall
                   1534: .MAIN: all
                   1535: all dependall: recurse-${_PKG_ALL_TARGET:Ubuild}
1.1       agc      1536:
1.1540.2.3! tv       1537: ##### If this package will be skipped, use placebo targets.
1.1540.2.1  tv       1538:
                   1539: .if defined(_PKG_SKIPPED)
1.1540.2.3! tv       1540:
        !          1541: .  for targ in ${_PKG_PHASES_ALL} \
        !          1542:                replace undo-replace \
        !          1543:                update
1.1540.2.1  tv       1544: ${targ}:
                   1545: .    if !defined(SKIP_SILENT)
1.1102    schmonz  1546:        @for str in ${PKG_FAIL_REASON} ${PKG_SKIP_REASON} ; \
1.547     hubertf  1547:        do \
                   1548:                ${ECHO} "${_PKGSRC_IN}> $$str" ; \
                   1549:        done
1.789     hubertf  1550: .    endif
1.1102    schmonz  1551: .    if defined(PKG_FAIL_REASON)
                   1552:        @${FALSE}
1.789     hubertf  1553: .    endif
1.1540.2.1  tv       1554: .  endfor
1.38      hubertf  1555:
1.1540.2.3! tv       1556: .else  # !defined(_PKG_SKIPPED)
1.1       agc      1557:
1.1540.2.3! tv       1558: ##### Real targets.  These don't have any commands attached; they simply defer
        !          1559: ##### to other implementation targets below.
1.1       agc      1560:
1.1540.2.1  tv       1561: .PHONY: ${_PKG_PHASES_ALL} replace undo-replace
                   1562: fetch: real-fetch
                   1563: checksum: fetch real-checksum
                   1564: depends: checksum ${WRKDIR} acquire-depends-lock ${depends_COOKIE} release-depends-lock
                   1565: extract: depends acquire-extract-lock ${extract_COOKIE} release-extract-lock
                   1566: patch: extract acquire-patch-lock ${patch_COOKIE} release-patch-lock
                   1567: tools: patch acquire-tools-lock ${tools_COOKIE} release-tools-lock
                   1568: wrapper: tools acquire-wrapper-lock ${wrapper_COOKIE} release-wrapper-lock
                   1569: configure: wrapper acquire-configure-lock ${configure_COOKIE} release-configure-lock
                   1570: build: configure acquire-build-lock ${build_COOKIE} release-build-lock
                   1571: test: build acquire-test-lock ${test_COOKIE} release-test-lock
                   1572: install: test acquire-install-lock ${install_COOKIE} release-install-lock
                   1573: package: install acquire-package-lock ${package_COOKIE} release-package-lock
                   1574: replace: build real-replace
                   1575: undo-replace: real-undo-replace
                   1576:
1.1540.2.3! tv       1577: ##### *_COOKIE to real-* layer for targets which use cookies.
        !          1578:
        !          1579: .  for targ in ${_PKG_PHASES_WRKDIR}
        !          1580: ${${targ}_COOKIE}: real-${targ}
        !          1581:        ${_PKG_SILENT}${_PKG_DEBUG}${ECHO} ${PKGNAME} >${${targ}_COOKIE}
        !          1582: .  endfor
        !          1583:
        !          1584: # mark a stage as complete if its cookie (and all parent cookies) exist
        !          1585: .  if exists(${depends_COOKIE})
        !          1586: ${depends_COOKIE}: .MADE
        !          1587: .    if exists(${extract_COOKIE})
        !          1588: ${extract_COOKIE}: .MADE
        !          1589: .      if exists(${patch_COOKIE})
        !          1590: ${patch_COOKIE}: .MADE
        !          1591: .        if exists(${tools_COOKIE})
        !          1592: ${tools_COOKIE}: .MADE
        !          1593: .          if exists(${wrapper_COOKIE})
        !          1594: ${wrapper_COOKIE}: .MADE
        !          1595: .            if exists(${configure_COOKIE})
        !          1596: ${configure_COOKIE}: .MADE
        !          1597: .              if exists(${build_COOKIE})
        !          1598: ${build_COOKIE}: .MADE
        !          1599: .                if exists(${test_COOKIE})
        !          1600: ${test_COOKIE}: .MADE
        !          1601: .                  if exists(${install_COOKIE})
        !          1602: ${install_COOKIE}: .MADE
        !          1603: .                    if exists(${package_COOKIE})
        !          1604: ${package_COOKIE}: .MADE
        !          1605: .                    endif
        !          1606: .                  endif
        !          1607: .                endif
        !          1608: .              endif
        !          1609: .            endif
        !          1610: .          endif
        !          1611: .        endif
        !          1612: .      endif
        !          1613: .    endif
        !          1614: .  endif
        !          1615:
        !          1616: ##### NO_* for skipping phases
        !          1617:
        !          1618: .  if defined(NO_DEPENDS) || (empty(DEPENDS) && empty(BUILD_DEPENDS))
        !          1619: ${depends_COOKIE}: .MADE
        !          1620: .  endif
        !          1621: .  if defined(NO_TOOLS)
        !          1622: ${tools_COOKIE}: .MADE
        !          1623: .  endif
        !          1624: .  if defined(NO_WRAPPER)
        !          1625: ${wrapper_COOKIE}: .MADE
        !          1626: .  endif
        !          1627: .  if defined(NO_CONFIGURE)
        !          1628: ${configure_COOKIE}: .MADE
        !          1629: .  endif
        !          1630: .  if defined(NO_BUILD)
        !          1631: ${build_COOKIE}: .MADE
        !          1632: .  endif
        !          1633: .  if empty(PKGSRC_RUN_TEST:M[yY][eE][sS])
        !          1634: real-test: .MADE
        !          1635: .  endif
        !          1636: .  if defined(NO_INSTALL)
        !          1637: ${install_COOKIE}: .MADE
        !          1638: .  endif
        !          1639:
        !          1640: .  if defined(NO_PACKAGE) && !defined(FORCE_PACKAGE)
        !          1641: _REAL_TARGETS.package:=        no-package
        !          1642: no-package:
        !          1643: .    if !defined(SKIP_SILENT)
        !          1644:        @${ECHO_MSG} "${_PKGSRC_IN}> ${PKGNAME} may not be packaged: ${NO_PACKAGE}."
        !          1645: .    endif
        !          1646: .  endif
        !          1647:
        !          1648: .  for targ in extract configure build install
        !          1649: .    if !empty(INTERACTIVE_STAGE:M${targ}) && defined(BATCH)
        !          1650: _REAL_TARGETS.${targ}:=        ${targ}-is-interactive
        !          1651: ${targ}-is-interactive:
        !          1652:        @${ECHO} "*** The ${targ} stage of this package requires user interaction"
        !          1653:        @${ECHO} "*** Please ${targ} manually with \"cd ${PKGDIR} && ${MAKE} ${targ}\""
        !          1654:        @${FALSE}
        !          1655: .    endif
        !          1656: .  endfor
        !          1657:
        !          1658: ##### User-visible messages for most targets
        !          1659:
        !          1660: _PHASE_MSG.depends=    Verifying dependencies
        !          1661: _PHASE_MSG.extract=    Extracting
        !          1662: _PHASE_MSG.patch=      Patching
        !          1663: _PHASE_MSG.tools=      Overriding tools
        !          1664: _PHASE_MSG.wrapper=    Creating toolchain wrappers
        !          1665: _PHASE_MSG.configure=  Configuring
        !          1666: _PHASE_MSG.build=      Building
        !          1667: _PHASE_MSG.test=       Testing
        !          1668: _PHASE_MSG.install=    Installing
        !          1669: _PHASE_MSG.package=    Packaging
        !          1670:
        !          1671: .  for targ in ${_PKG_PHASES_WRKDIR}
        !          1672: .PHONY: ${targ}-message
        !          1673: ${targ}-message:
        !          1674:        @${ECHO_MSG} "${_PKGSRC_IN}> ${_PHASE_MSG.${targ}} for ${PKGNAME}"
        !          1675: .  endfor
        !          1676:
        !          1677: ##### real-* to actual component target layer
        !          1678:
        !          1679: # Simple dependencies are not used, deliberately, so that it is possible
        !          1680: # to invoke a single subtarget by hand while working on a new package.
        !          1681: #
        !          1682: # Please note that the order of the targets in _REAL_TARGETS.<phase> is
        !          1683: # important, and should not be modified (.ORDER is not recognized by
        !          1684: # make(1) in a serial make; i.e., without "-j n").
        !          1685:
        !          1686: .  for targ in ${_PKG_PHASES_ALL} replace undo-replace su-install
        !          1687: .PHONY: real-${targ}
        !          1688: .ORDER: ${_REAL_TARGETS.${targ}}
        !          1689: real-${targ}: ${_REAL_TARGETS.${targ}}
        !          1690: .  endfor
        !          1691:
1.1540.2.1  tv       1692: .endif # !defined(_PKG_SKIPPED)
                   1693:
1.1540.2.3! tv       1694: ##### su target support
        !          1695:
        !          1696: .for targ in install package replace undo-replace deinstall
        !          1697: .PHONY: do-su-${targ}
        !          1698: do-su-${targ}:
        !          1699:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
        !          1700:        if [ `${ID} -u` = `${ID} -u ${ROOT_USER}` ]; then               \
        !          1701:                ${MAKE} ${MAKEFLAGS} $$realtarget;                      \
        !          1702:        elif [ "X${BATCH}" != X"" ]; then                               \
        !          1703:                ${ECHO_MSG} "Warning: Batch mode, not superuser, can't run $$action for ${PKGNAME}."; \
        !          1704:                ${ECHO_MSG} "Become ${ROOT_USER} and try again to ensure correct permissions."; \
        !          1705:        else                                                            \
        !          1706:                args="DEINSTALLDEPENDS=${DEINSTALLDEPENDS}";            \
        !          1707:                if [ "X${FORCE_PKG_REGISTER}" != X"" ]; then            \
        !          1708:                        args="$$args FORCE_PKG_REGISTER=1";             \
        !          1709:                fi;                                                     \
        !          1710:                if [ "X${PKG_DEBUG_LEVEL}" != X"" ]; then               \
        !          1711:                        args="$$args PKG_DEBUG_LEVEL=${PKG_DEBUG_LEVEL}"; \
        !          1712:                fi;                                                     \
        !          1713:                if [ "X${PRE_ROOT_CMD}" != "X${TRUE}" ]; then           \
        !          1714:                        ${ECHO} "*** WARNING *** Running: ${PRE_ROOT_CMD}"; \
        !          1715:                        ${PRE_ROOT_CMD};                                \
        !          1716:                fi;                                                     \
        !          1717:                ${ECHO_MSG} "${_PKGSRC_IN}> Becoming ${ROOT_USER}@`${HOSTNAME_CMD}` to ${targ} ${PKGBASE}."; \
        !          1718:                ${ECHO_N} "`${ECHO} ${SU_CMD} | ${AWK} '{ print $$1 }'` ";\
        !          1719:                ${SU_CMD} "cd ${.CURDIR}; ${SETENV} PATH=$${PATH}:${SU_CMD_PATH_APPEND} ${MAKE} $$args ${MAKEFLAGS} real-su-${targ} $$realflags"; \
        !          1720:        fi
        !          1721: .endfor
        !          1722:
1.1540.2.1  tv       1723: ############################################################################
                   1724: # Package maintenance targets
                   1725: ############################################################################
1.1       agc      1726:
1.1540.2.1  tv       1727: # Checksumming utilities
1.1       agc      1728:
1.1540.2.1  tv       1729: .PHONY: makesum
                   1730: makesum: recurse-fetch uptodate-digest
                   1731:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1732:        newfile=${DISTINFO_FILE}.$$$$;                                  \
                   1733:        if [ -f ${DISTINFO_FILE} ]; then                                \
                   1734:                ${GREP} '^.NetBSD' ${DISTINFO_FILE} > $$newfile ||      \
                   1735:                        (${ECHO_N} "$$" > $$newfile &&                  \
                   1736:                         ${ECHO_N} "NetBSD" >> $$newfile &&             \
                   1737:                         ${ECHO} "$$" >> $$newfile)                     \
                   1738:        else                                                            \
                   1739:                ${ECHO_N} "$$" > $$newfile;                             \
                   1740:                ${ECHO_N} "NetBSD" >> $$newfile;                        \
                   1741:                ${ECHO} "$$" >> $$newfile;                              \
                   1742:        fi;                                                             \
                   1743:        ${ECHO} "" >> $$newfile;                                        \
                   1744:        cd ${DISTDIR};                                                  \
                   1745:        for sumfile in "" ${_CKSUMFILES}; do                            \
                   1746:                if [ "X$$sumfile" = "X" ]; then continue; fi;           \
                   1747:                ${DIGEST} ${DIGEST_ALGORITHM} $$sumfile >> $$newfile;   \
                   1748:                ${WC} -c $$sumfile | ${AWK} '{ print "Size (" $$2 ") = " $$1 " bytes" }' >> $$newfile; \
                   1749:        done;                                                           \
                   1750:        for ignore in "" ${_IGNOREFILES}; do                            \
                   1751:                if [ "X$$ignore" = "X" ]; then continue; fi;            \
                   1752:                ${ECHO} "${DIGEST_ALGORITHM} ($$ignore) = IGNORE" >> $$newfile; \
                   1753:        done;                                                           \
                   1754:        if [ -f ${DISTINFO_FILE} ]; then                                \
                   1755:                ${AWK} '$$2 ~ /\(patch-[a-z0-9]+\)/ { print $$0 }' < ${DISTINFO_FILE} >> $$newfile; \
                   1756:        fi;                                                             \
                   1757:        if ${CMP} -s $$newfile ${DISTINFO_FILE}; then                   \
                   1758:                ${RM} -f $$newfile;                                     \
                   1759:                ${ECHO_MSG} "=> distinfo: distfiles part unchanged.";   \
                   1760:        else                                                            \
                   1761:                ${MV} $$newfile ${DISTINFO_FILE};                       \
                   1762:        fi
                   1763:
                   1764: .PHONY: makepatchsum mps
                   1765: makepatchsum mps: uptodate-digest
                   1766:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   1767:        newfile=${DISTINFO_FILE}.$$$$;                                  \
                   1768:        if [ -f ${DISTINFO_FILE} ]; then                                \
                   1769:                ${AWK} '$$2 !~ /\(patch-[a-z0-9]+\)/ { print $$0 }' < ${DISTINFO_FILE} >> $$newfile; \
                   1770:        else \
                   1771:                ${ECHO_N} "$$" > $$newfile;                             \
                   1772:                ${ECHO_N} "NetBSD" >> $$newfile;                        \
                   1773:                ${ECHO} "$$" >> $$newfile;                              \
                   1774:                ${ECHO} "" >> $$newfile;                                \
                   1775:        fi;                                                             \
                   1776:        if [ -d ${PATCHDIR} ]; then                                     \
                   1777:                (cd ${PATCHDIR};                                        \
                   1778:                for sumfile in "" patch-*; do                           \
                   1779:                        if [ "X$$sumfile" = "X" ]; then continue; fi;   \
                   1780:                        if [ "X$$sumfile" = "Xpatch-*" ]; then break; fi; \
                   1781:                        case $$sumfile in                               \
                   1782:                                patch-local-*) ;;                       \
                   1783:                                *.orig|*.rej|*~) continue ;;            \
                   1784:                                *)      ${ECHO} "${DIGEST_ALGORITHM} ($$sumfile) = `${SED} -e '/\$$NetBSD.*/d' $$sumfile | ${DIGEST} ${DIGEST_ALGORITHM}`" >> $$newfile;; \
                   1785:                        esac;                                           \
                   1786:                done);                                                  \
                   1787:        fi;                                                             \
                   1788:        if ${CMP} -s $$newfile ${DISTINFO_FILE}; then                   \
                   1789:                ${RM} -f $$newfile;                                     \
                   1790:                ${ECHO_MSG} "=> distinfo: patches part unchanged.";     \
                   1791:        else                                                            \
                   1792:                ${MV} $$newfile ${DISTINFO_FILE};                       \
                   1793:        fi
                   1794:
                   1795: makedistinfo mdi distinfo: makesum makepatchsum
                   1796:
                   1797: ############################################################################
                   1798: # XXXTV CUT
                   1799: ############################################################################
                   1800:
                   1801: UPDATE_RUNNING?=       NO
                   1802:
                   1803: #
                   1804: # _RESUME_TRANSFER:
                   1805: #
                   1806: # Macro to resume a previous transfer, needs to have defined
                   1807: # the following options in mk.conf:
                   1808: #
                   1809: # PKG_RESUME_TRANSFERS
                   1810: # FETCH_RESUME_ARGS (if FETCH_CMD != default)
                   1811: # FETCH_OUTPUT_ARGS (if FETCH_CMD != default)
                   1812: #
                   1813: # For example if you want to use wget (pkgsrc/net/wget):
                   1814: #
                   1815: # FETCH_CMD=wget
                   1816: # FETCH_RESUME_ARGS=-c
                   1817: # FETCH_OUTPUT_ARGS=-O
                   1818: #
                   1819: # How does it work?
                   1820: #
                   1821: # FETCH_CMD downloads the file and saves it temporally into $$bfile.temp
                   1822: # if the checksum match the correct one, $$bfile.temp is renamed to
                   1823: # the original name.
                   1824: #
1.1525    xtraeme  1825:
1.1477    xtraeme  1826: _RESUME_TRANSFER=                                                      \
1.1479    xtraeme  1827:        tsize=`${AWK} '/^Size/ && $$2 == '"\"($$file)\""' { print $$4 }' ${DISTINFO_FILE}` || ${TRUE}; \
1.1525    xtraeme  1828:        if [ ! -f "${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp" ]; then      \
                   1829:                ${CP} ${DISTDIR}/${DIST_SUBDIR}/$$bfile ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp; \
                   1830:        fi;     \
                   1831:        dsize=`${WC} -c < ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp`;      \
                   1832:        if [ "$$dsize" -eq "$$tsize" -a -f "${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp" ]; then     \
                   1833:                ${MV} ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp ${DISTDIR}/${DIST_SUBDIR}/$$bfile; \
                   1834:        fi;     \
1.1478    agc      1835:        case "$$tsize" in                                               \
                   1836:        "")     ${ECHO_MSG} "No size in distinfo file (${DISTINFO_FILE})"; \
                   1837:                break ;;                                                \
                   1838:        esac;                                                           \
1.1525    xtraeme  1839:        if [ -n "$$ftp_proxy" -o -n "$$http_proxy" ]; then              \
1.1477    xtraeme  1840:                ${ECHO_MSG} "===> Resume is not supported by ftp(1) using http/ftp proxies.";   \
                   1841:                break;                                                  \
                   1842:        else                                                            \
1.1525    xtraeme  1843:                if [ "$$dsize" -lt "$$tsize" ]; then            \
                   1844:                        if [ "${FETCH_CMD:T}" != "ftp" -a -z "${FETCH_RESUME_ARGS}" ]; then \
1.1479    xtraeme  1845:                                ${ECHO_MSG} "=> Resume transfers are not supported, FETCH_RESUME_ARGS is empty."; \
                   1846:                                break;                                  \
                   1847:                        else                                            \
                   1848:                                for res_site in $$sites; do                     \
1.1525    xtraeme  1849:                                        if [ -z "${FETCH_OUTPUT_ARGS}" ]; then  \
                   1850:                                                ${ECHO_MSG} "=> FETCH_OUTPUT_ARGS has to be defined.";  \
                   1851:                                                break;                  \
                   1852:                                        fi;                             \
                   1853:                                        ${ECHO_MSG} "=> $$bfile not completed, resuming:";      \
                   1854:                                        ${ECHO_MSG} "=> Downloaded: $$dsize Total: $$tsize.";   \
                   1855:                                        ${ECHO_MSG};                    \
                   1856:                                        cd ${_DISTDIR};                 \
                   1857:                                        ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${FETCH_RESUME_ARGS}  \
                   1858:                                                ${FETCH_OUTPUT_ARGS} $${bfile}.temp $${res_site}$${bfile}; \
                   1859:                                        if [ $$? -eq 0 ]; then          \
                   1860:                                                ndsize=`${WC} -c < ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp`;     \
                   1861:                                                if [ "$$tsize" -eq "$$ndsize" ]; then   \
                   1862:                                                        ${MV} ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp ${DISTDIR}/${DIST_SUBDIR}/$$bfile;                                         \
                   1863:                                                fi;                     \
1.1479    xtraeme  1864:                                                break;                  \
                   1865:                                        fi;                             \
                   1866:                                done;                                   \
                   1867:                        fi;                                             \
1.1525    xtraeme  1868:                elif [ "$$dsize" -gt "$$tsize" ]; then                  \
1.1479    xtraeme  1869:                        ${ECHO_MSG} "==> Downloaded file larger than the recorded size.";       \
                   1870:                        break;                                          \
1.1525    xtraeme  1871:                fi;                                                     \
1.1477    xtraeme  1872:        fi
1.1478    agc      1873:
1.895     fredb    1874: #
                   1875: # Define the elementary fetch macros.
                   1876: #
1.158     tron     1877: _FETCH_FILE=                                                           \
1.307     agc      1878:        if [ ! -f $$file -a ! -f $$bfile -a ! -h $$bfile ]; then        \
1.415     agc      1879:                ${ECHO_MSG} "=> $$bfile doesn't seem to exist on this system."; \
1.444     hubertf  1880:                if [ ! -w ${_DISTDIR}/. ]; then                         \
                   1881:                        ${ECHO_MSG} "=> Can't download to ${_DISTDIR} (permission denied?)."; \
                   1882:                        exit 1;                                         \
                   1883:                fi;                                                     \
1.175     agc      1884:                for site in $$sites; do                                 \
1.415     agc      1885:                        ${ECHO_MSG} "=> Attempting to fetch $$bfile from $${site}."; \
1.935     agc      1886:                        if [ -f ${DISTINFO_FILE} ]; then                \
                   1887:                                ${AWK} 'NF == 5 && $$1 == "Size" && $$2 == "('$$bfile')" { printf("=> [%s %s]\n", $$4, $$5) }' ${DISTINFO_FILE}; \
                   1888:                        fi;                                             \
1.175     agc      1889:                        if ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${site}$${bfile} ${FETCH_AFTER_ARGS}; then \
1.753     wiz      1890:                                if [ -n "${FAILOVER_FETCH}" -a -f ${DISTINFO_FILE} -a -f ${_DISTDIR}/$$bfile ]; then \
                   1891:                                        alg=`${AWK} 'NF == 4 && $$2 == "('$$file')" && $$3 == "=" {print $$1;}' ${DISTINFO_FILE}`; \
1.699     agc      1892:                                        if [ -z "$$alg" ]; then         \
                   1893:                                                alg=${DIGEST_ALGORITHM};\
                   1894:                                        fi;                             \
1.676     agc      1895:                                        CKSUM=`${DIGEST} $$alg < ${_DISTDIR}/$$bfile`; \
1.753     wiz      1896:                                        CKSUM2=`${AWK} '$$1 == "'$$alg'" && $$2 == "('$$file')" {print $$4;}' <${DISTINFO_FILE}`; \
1.175     agc      1897:                                        if [ "$$CKSUM" = "$$CKSUM2" -o "$$CKSUM2" = "IGNORE" ]; then \
1.873     wiz      1898:                                                break;                  \
1.154     agc      1899:                                        else                            \
1.415     agc      1900:                                                ${ECHO_MSG} "=> Checksum failure - trying next site."; \
1.154     agc      1901:                                        fi;                             \
1.300     hubertf  1902:                                elif [ ! -f ${_DISTDIR}/$$bfile ]; then \
1.415     agc      1903:                                        ${ECHO_MSG} "=> FTP didn't fetch expected file, trying next site." ; \
1.175     agc      1904:                                else                                    \
1.873     wiz      1905:                                        break;                          \
1.175     agc      1906:                                fi;                                     \
                   1907:                        fi                                              \
                   1908:                done;                                                   \
1.873     wiz      1909:                if [ ! -f ${_DISTDIR}/$$bfile ]; then \
                   1910:                        ${ECHO_MSG} "=> Couldn't fetch $$bfile - please try to retrieve this";\
                   1911:                        ${ECHO_MSG} "=> file manually into ${_DISTDIR} and try again."; \
                   1912:                        exit 1;                                         \
                   1913:                fi;                                                     \
1.175     agc      1914:        fi
1.158     tron     1915:
1.305     agc      1916: _CHECK_DIST_PATH=                                                      \
                   1917:        if [ "X${DIST_PATH}" != "X" ]; then                             \
1.452     hubertf  1918:                for d in "" ${DIST_PATH:S/:/ /g}; do    \
1.305     agc      1919:                        if [ "X$$d" = "X" -o "X$$d" = "X${DISTDIR}" ]; then continue; fi; \
                   1920:                        if [ -f $$d/${DIST_SUBDIR}/$$bfile ]; then      \
                   1921:                                ${ECHO} "Using $$d/${DIST_SUBDIR}/$$bfile"; \
                   1922:                                ${RM} -f $$bfile;                       \
                   1923:                                ${LN} -s $$d/${DIST_SUBDIR}/$$bfile $$bfile; \
                   1924:                                break;                                  \
                   1925:                        fi;                                             \
                   1926:                done;                                                   \
                   1927:        fi
                   1928:
1.297     mjl      1929: #
1.941     fredb    1930: # Set up ORDERED_SITES to work out the exact list of sites for every file,
                   1931: # using the dynamic sites script, or sorting according to the master site
                   1932: # list or the patterns in MASTER_SORT or MASTER_SORT_REGEX as appropriate.
                   1933: # No actual sorting is done until ORDERED_SITES is expanded.
                   1934: #
1.944     fredb    1935: .if defined(MASTER_SORT) || defined(MASTER_SORT_REGEX)
1.297     mjl      1936: MASTER_SORT?=
                   1937: MASTER_SORT_REGEX?=
                   1938: MASTER_SORT_REGEX+= ${MASTER_SORT:S/./\\./g:C/.*/:\/\/[^\/]*&\//}
                   1939:
1.1338    wiz      1940: MASTER_SORT_AWK= BEGIN { RS = " "; ORS = " "; IGNORECASE = 1 ; gl = "${MASTER_SORT_REGEX:S/\\/\\\\/g}"; }
1.941     fredb    1941: .  for srt in ${MASTER_SORT_REGEX}
1.1338    wiz      1942: MASTER_SORT_AWK+= /${srt:C/\//\\\//g}/ { good["${srt:S/\\/\\\\/g}"] = good["${srt:S/\\/\\\\/g}"] " " $$0 ; next; }
1.941     fredb    1943: .  endfor
1.452     hubertf  1944: MASTER_SORT_AWK+= { rest = rest " " $$0; } END { n=split(gl, gla); for(i=1;i<=n;i++) { print good[gla[i]]; } print rest; }
                   1945:
1.895     fredb    1946: SORT_SITES_CMD= ${ECHO} $$unsorted_sites | ${AWK} '${MASTER_SORT_AWK}'
1.1338    wiz      1947: ORDERED_SITES= ${_MASTER_SITE_OVERRIDE} `${SORT_SITES_CMD:S/\\/\\\\/g:C/"/\"/g}`
1.895     fredb    1948: .else
1.896     fredb    1949: ORDERED_SITES= ${_MASTER_SITE_OVERRIDE} $$unsorted_sites
1.895     fredb    1950: .endif
1.297     mjl      1951:
1.895     fredb    1952: #
1.941     fredb    1953: # Associate each file to fetch with the correct site(s).
1.895     fredb    1954: #
1.944     fredb    1955: .if defined(DYNAMIC_MASTER_SITES)
                   1956: .  for fetchfile in ${_ALLFILES}
1.1060    rh       1957: SITES_${fetchfile:T:S/=/--/}?= `${SH} ${FILESDIR}/getsite.sh ${fetchfile:T}`
1.944     fredb    1958: .  endfor
                   1959: .endif
1.941     fredb    1960: .if !empty(_DISTFILES)
                   1961: .  for fetchfile in ${_DISTFILES}
1.1060    rh       1962: SITES_${fetchfile:T:S/=/--/}?= ${MASTER_SITES}
1.941     fredb    1963: .  endfor
                   1964: .endif
                   1965: .if !empty(_PATCHFILES)
                   1966: .  for fetchfile in ${_PATCHFILES}
1.1060    rh       1967: SITES_${fetchfile:T:S/=/--/}?= ${PATCH_SITES}
1.941     fredb    1968: .  endfor
                   1969: .endif
                   1970:
1.1003    agc      1971: # This code is only called in a batch case, to check for the presence of
                   1972: # the distfiles
1.1222    jmmv     1973: .PHONY: batch-check-distfiles
1.1003    agc      1974: batch-check-distfiles:
1.941     fredb    1975:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1003    agc      1976:        gotfiles=yes;                                                   \
                   1977:        for file in "" ${_ALLFILES}; do                                 \
                   1978:                case "$$file" in                                        \
                   1979:                "")     continue ;;                                     \
                   1980:                *)      if [ ! -f ${DISTDIR}/$$file ]; then             \
                   1981:                                gotfiles=no;                            \
                   1982:                        fi ;;                                           \
                   1983:                esac;                                                   \
                   1984:        done;                                                           \
                   1985:        case "$$gotfiles" in                                            \
                   1986:        no)     ${ECHO} "*** This package requires user intervention to download the distfiles"; \
1.999     agc      1987:                ${ECHO} "*** Please fetch the distfiles manually and place them in"; \
                   1988:                ${ECHO} "*** ${DISTDIR}";                               \
                   1989:                [ ! -z "${MASTER_SITES}" ] &&                           \
                   1990:                        ${ECHO} "*** The distfiles are available from ${MASTER_SITES}"; \
                   1991:                [ ! -z "${HOMEPAGE}" ] &&                               \
                   1992:                        ${ECHO} "*** See ${HOMEPAGE} for more details"; \
                   1993:                ${ECHO};                                                \
1.1003    agc      1994:                ${FALSE} ;;                                             \
                   1995:        esac
                   1996:
1.1222    jmmv     1997: .PHONY: do-fetch
1.1003    agc      1998: .if !target(do-fetch)
                   1999: do-fetch:
                   2000: .  if !empty(_ALLFILES)
                   2001:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2002:        ${TEST} -d ${_DISTDIR} || ${MKDIR} ${_DISTDIR}
                   2003: .    if ${INTERACTIVE_STAGE:Mfetch} == "fetch" && defined(BATCH)
                   2004:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2005:        ${MAKE} ${MAKEFLAGS} batch-check-distfiles
1.999     agc      2006: .    else
                   2007: .      for fetchfile in ${_ALLFILES}
1.1159    grant    2008: .        if defined(_FETCH_MESSAGE)
1.941     fredb    2009:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2010:        file="${fetchfile}";                                            \
                   2011:        if [ ! -f ${DISTDIR}/$$file ]; then                             \
                   2012:                ${_FETCH_MESSAGE};                                      \
                   2013:        fi
1.999     agc      2014: .        else
1.941     fredb    2015:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2016:        cd ${_DISTDIR};                                                 \
1.924     abs      2017:        file="${fetchfile}";                                            \
                   2018:        bfile="${fetchfile:T}";                                         \
1.1060    rh       2019:        unsorted_sites="${SITES_${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"; \
1.895     fredb    2020:        sites="${ORDERED_SITES}";                                       \
1.873     wiz      2021:        ${_CHECK_DIST_PATH};                                            \
1.1480    xtraeme  2022:         if ${TEST} "${PKG_RESUME_TRANSFERS:M[Yy][Ee][Ss]}" ; then      \
                   2023:                ${_FETCH_FILE}; ${_RESUME_TRANSFER};                    \
                   2024:         else                                                           \
                   2025:                ${_FETCH_FILE};                                         \
                   2026:         fi
1.999     agc      2027: .        endif # defined(_FETCH_MESSAGE)
                   2028: .      endfor
                   2029: .    endif # INTERACTIVE_STAGE == fetch
1.941     fredb    2030: .  endif # !empty(_ALLFILES)
1.646     dmcmahil 2031: .endif
                   2032:
                   2033: # show both build and run depends directories (non-recursively)
1.1222    jmmv     2034: .PHONY: show-depends-dirs
1.646     dmcmahil 2035: show-depends-dirs:
1.1506    hira     2036:        @dlist="";                                                      \
1.1129    jlam     2037:        thisdir=`${PWD_CMD}`;                                           \
1.812     jlam     2038:        for reldir in "" ${DEPENDS:C/^[^:]*://:C/:.*$//} ${BUILD_DEPENDS:C/^[^:]*://:C/:.*$//} ;\
1.972     agc      2039:        do                                                              \
                   2040:                if [ "X$$reldir" = "X" ]; then continue; fi;            \
                   2041:                cd $$thisdir/$$reldir;                                  \
1.1129    jlam     2042:                WD=`${PWD_CMD}`;                                        \
1.972     agc      2043:                d=`dirname $$WD`;                                       \
                   2044:                absdir=`basename $$d`/`basename $$WD`;                  \
                   2045:                dlist="$$dlist $$absdir";                               \
                   2046:        done;                                                           \
                   2047:        cd $$thisdir;                                                   \
1.646     dmcmahil 2048:        ${ECHO} "$$dlist"
1.32      agc      2049:
1.933     fredb    2050: # Show all build and run depends, reverse-breadth first, with options.
                   2051:
                   2052: # "awk" macro to recurse over the dependencies efficiently, never running in
                   2053: # the same same directory twice. You may set the following options via "-v":
                   2054: #
                   2055: #      NonSelf = 1     to not print own directory;
                   2056: #      RootsOnly = 1   to print only root directories (i.e. directories
                   2057: #                      of packages with no dependencies), including possibly
                   2058: #                      own directory
                   2059: #
                   2060: _RECURSE_DEPENDS_DIRS=                                                 \
                   2061:        function append_dirs(dir) {                                     \
1.972     agc      2062:                command = "cd ../../" dir " && ${MAKE} show-depends-dirs"; \
1.933     fredb    2063:                command | getline tmp_dirs;                             \
                   2064:                close(command);                                         \
                   2065:                if (tmp_dirs ~ /^$$/)                                   \
                   2066:                        root_dirs[p++] = dir;                           \
                   2067:                for (i = 1; i <= split(tmp_dirs, tmp_r); i++)           \
                   2068:                        if (!(tmp_r[i] in hash_all_dirs)) {             \
                   2069:                                all_dirs[n++] = tmp_r[i];               \
                   2070:                                hash_all_dirs[tmp_r[i]] = 1             \
                   2071:                        }                                               \
                   2072:        }                                                               \
                   2073:        BEGIN {                                                         \
1.1129    jlam     2074:                command = "${PWD_CMD}";                                 \
1.933     fredb    2075:                command | getline start_dir;                            \
                   2076:                close(command);                                         \
                   2077:                i = split(start_dir, tmp_r, /\//);                      \
                   2078:                all_dirs[n++] = tmp_r[i-1] "/" tmp_r[i];                \
                   2079:                for (; m < n; )                                         \
                   2080:                        append_dirs(all_dirs[m++]);                     \
                   2081:                if (RootsOnly) {                                        \
                   2082:                        printf("%s", root_dirs[--p]);                   \
                   2083:                        for (; p > 0; )                                 \
                   2084:                                printf(" %s", root_dirs[--p])           \
                   2085:                }                                                       \
                   2086:                else {                                                  \
                   2087:                        if (m > NonSelf)                                \
                   2088:                                printf("%s", all_dirs[--m]);            \
                   2089:                        for (; m > NonSelf; )                           \
                   2090:                                printf(" %s", all_dirs[--m])            \
                   2091:                }                                                       \
                   2092:                print                                                   \
                   2093:        }
                   2094:
1.1540.2.1  tv       2095: _SHOW_ALL_DEPENDS_DIRS_EXCL=   ${AWK} -v NonSelf=1 '${_RECURSE_DEPENDS_DIRS}'
                   2096:
1.1222    jmmv     2097: .PHONY: show-all-depends-dirs
1.933     fredb    2098: show-all-depends-dirs:
1.1506    hira     2099:        @${AWK} '${_RECURSE_DEPENDS_DIRS}'
1.933     fredb    2100:
1.1222    jmmv     2101: .PHONY: show-root-dirs
1.933     fredb    2102: show-root-dirs:
1.972     agc      2103:        ${_PKG_SILENT}${_PKG_DEBUG}${AWK} -v RootsOnly=1 '${_RECURSE_DEPENDS_DIRS}'
1.933     fredb    2104:
1.1222    jmmv     2105: .PHONY: show-distfiles
1.286     agc      2106: show-distfiles:
1.1540.2.1  tv       2107: .if !defined(PKG_FAIL_REASON)
1.286     agc      2108:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2109:        for file in "" ${_CKSUMFILES}; do                               \
                   2110:                if [ "X$$file" = "X" ]; then continue; fi;              \
                   2111:                ${ECHO} $$file;                                         \
                   2112:        done
1.290     agc      2113: .endif
                   2114:
1.1222    jmmv     2115: .PHONY: show-downlevel
1.290     agc      2116: show-downlevel:
1.1540.2.1  tv       2117: .if !defined(PKG_FAIL_REASON)
1.290     agc      2118:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1281    jlam     2119:        found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`";     \
1.290     agc      2120:        if [ "X$$found" != "X" -a "X$$found" != "X${PKGNAME}" ]; then   \
1.459     mycroft  2121:                ${ECHO} "${PKGBASE} package: $$found installed, pkgsrc version ${PKGNAME}"; \
1.808     martin   2122:                if [ "X$$STOP_DOWNLEVEL_AFTER_FIRST" != "X" ]; then     \
1.1010    jschauma 2123:                        ${ECHO} "stopping after first downlevel pkg found"; \
1.808     martin   2124:                        exit 1;                                         \
                   2125:                fi;                                                     \
1.435     agc      2126:        fi
                   2127: .endif
1.501     agc      2128:
1.1222    jmmv     2129: .PHONY: show-installed-depends
1.816     abs      2130: show-installed-depends:
1.1540.2.1  tv       2131: .if !empty(DEPENDS)
1.822     agc      2132:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2133:        for i in ${DEPENDS:C/:.*$//:Q:S/\ / /g} ; do                    \
1.1275    jlam     2134:                echo "$$i =>" `${PKG_BEST_EXISTS} "$$i"` ;              \
1.1198    atatat   2135:        done
                   2136: .endif
                   2137:
1.1222    jmmv     2138: .PHONY: show-needs-update
1.1198    atatat   2139: show-needs-update:
1.1540.2.1  tv       2140: .if !empty(DEPENDS)
1.1198    atatat   2141:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2142:        for i in `${MAKE} show-all-depends-dirs`; do                    \
1.1510    jlam     2143:                cd ${PKGSRCDIR}/$$i;                                    \
1.1540.2.1  tv       2144:                want=`${MAKE} show-var-noeval VARNAME=PKGNAME`;         \
                   2145:                wild=`${MAKE} show-var-noeval VARNAME=PKGWILDCARD`;     \
1.1281    jlam     2146:                have=`${PKG_BEST_EXISTS} "$$wild" || ${TRUE}`;          \
1.1198    atatat   2147:                if [ -z "$$have" ]; then                                \
1.1281    jlam     2148:                        ${ECHO} "$$i => (none) => needs install of $$want"; \
1.1198    atatat   2149:                elif [ "$$have" != "$$want" ]; then                     \
1.1281    jlam     2150:                        ${ECHO} "$$i => $$have => needs update to $$want"; \
1.1198    atatat   2151:                fi;                                                     \
1.816     abs      2152:        done
1.506     agc      2153: .endif
1.435     agc      2154:
1.1222    jmmv     2155: .PHONY: show-pkgsrc-dir
1.435     agc      2156: show-pkgsrc-dir:
1.1540.2.1  tv       2157: .if !defined(PKG_FAIL_REASON)
1.435     agc      2158:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1275    jlam     2159:        found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`";     \
1.435     agc      2160:        if [ "X$$found" != "X" ]; then                                  \
1.459     mycroft  2161:                ${ECHO} ${PKGPATH};                                     \
1.290     agc      2162:        fi
1.286     agc      2163: .endif
                   2164:
1.929     jlam     2165: # Extract
                   2166:
                   2167: ${WRKDIR}:
                   2168: .if !defined(KEEP_WRKDIR)
                   2169: .  if ${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once"
                   2170: .    if !exists(${LOCKFILE})
                   2171:        ${_PKG_SILENT}${_PKG_DEBUG}${RM} -rf ${WRKDIR}
                   2172: .    endif
                   2173: .  endif
                   2174: .endif
                   2175:        ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${WRKDIR}
                   2176: .ifdef WRKOBJDIR
                   2177: .  if ${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once"
                   2178: .    if !exists(${LOCKFILE})
                   2179:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2180:        ${RM} -f ${WRKDIR_BASENAME} || ${TRUE}
                   2181: .    endif
                   2182: .  endif
                   2183:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2184:        if ${LN} -s ${WRKDIR} ${WRKDIR_BASENAME} 2>/dev/null; then      \
                   2185:                ${ECHO} "${WRKDIR_BASENAME} -> ${WRKDIR}";              \
                   2186:        fi
                   2187: .endif # WRKOBJDIR
1.1       agc      2188:
1.1396    wiz      2189: _EXTRACT_SUFFIXES=     .tar.gz .tgz .tar.bz2 .tbz .tar.Z .tar _tar.gz
                   2190: _EXTRACT_SUFFIXES+=    .shar.gz .shar.bz2 .shar.Z .shar
                   2191: _EXTRACT_SUFFIXES+=    .zip
                   2192: _EXTRACT_SUFFIXES+=    .lha .lzh
                   2193: _EXTRACT_SUFFIXES+=    .Z .bz2 .gz
                   2194: _EXTRACT_SUFFIXES+=    .zoo
1.1474    abs      2195: _EXTRACT_SUFFIXES+=    .bin
1.1396    wiz      2196: _EXTRACT_SUFFIXES+=    .rar
1.884     jlam     2197:
1.1540.2.1  tv       2198: .if (defined(PATCHFILES) && !empty(PATCHFILES:M*.bz2)) || \
                   2199:     !empty(EXTRACT_ONLY:M*.bz2) || !empty(EXTRACT_ONLY:M*.tbz) || \
1.918     jlam     2200:     !empty(EXTRACT_SUFX:M*.bz2) || !empty(EXTRACT_SUFX:M*.tbz)
1.884     jlam     2201: .  if exists(/usr/bin/bzcat)
                   2202: BZCAT=                 /usr/bin/bzcat <
                   2203: .  else
                   2204: BUILD_DEPENDS+=                bzip2>=0.9.0b:../../archivers/bzip2
                   2205: BZCAT=                 ${LOCALBASE}/bin/bzcat
                   2206: .  endif
                   2207: .endif
1.918     jlam     2208: .if !empty(EXTRACT_ONLY:M*.zip) || !empty(EXTRACT_SUFX:M*.zip)
1.917     jlam     2209: BUILD_DEPENDS+=                unzip-[0-9]*:../../archivers/unzip
1.884     jlam     2210: .endif
1.918     jlam     2211: .if !empty(EXTRACT_ONLY:M*.lzh) || !empty(EXTRACT_ONLY:M*.lha) || \
                   2212:     !empty(EXTRACT_SUFX:M*.lzh) || !empty(EXTRACT_SUFX:M*.lha)
1.1159    grant    2213: BUILD_DEPENDS+=                lha>=114.9:../../archivers/lha
1.1004    grant    2214: .endif
                   2215: .if !defined(GZCAT)
1.1540.2.1  tv       2216: .  if (defined(PATCHFILES) && !empty(PATCHFILES:M*.gz)) || \
                   2217: .     !empty(EXTRACT_ONLY:M*.gz) || !empty(EXTRACT_ONLY:M*.tgz) || \
1.1004    grant    2218:       !empty(EXTRACT_SUFX:M*.gz) || !empty(EXTRACT_SUFX:M*.tgz)
1.1516    tv       2219: BUILD_DEPENDS+=         gzip-base>=1.2.4b:../../archivers/gzip-base
1.1004    grant    2220: GZCAT=                  ${LOCALBASE}/bin/zcat
                   2221: .  endif
1.884     jlam     2222: .endif
1.1110    cjep     2223: .if !empty(EXTRACT_ONLY:M*.zoo) || !empty(EXTRACT_SUFX:M*.zoo)
                   2224: BUILD_DEPENDS+=                unzoo-[0-9]*:../../archivers/unzoo
                   2225: .endif
1.1393    xtraeme  2226: .if !empty(EXTRACT_ONLY:M*.rar) || !empty(EXTRACT_SUFX:M*.rar)
                   2227: BUILD_DEPENDS+=                unrar>=3.3.4:../../archivers/unrar
                   2228: .endif
1.884     jlam     2229:
                   2230: DECOMPRESS_CMD.tar.gz?=                ${GZCAT}
                   2231: DECOMPRESS_CMD.tgz?=           ${DECOMPRESS_CMD.tar.gz}
                   2232: DECOMPRESS_CMD.tar.bz2?=       ${BZCAT}
                   2233: DECOMPRESS_CMD.tbz?=           ${DECOMPRESS_CMD.tar.bz2}
1.930     jlam     2234: DECOMPRESS_CMD.tar.Z?=         ${GZCAT}
1.884     jlam     2235: DECOMPRESS_CMD.tar?=           ${CAT}
                   2236:
1.914     jlam     2237: DECOMPRESS_CMD.shar.gz?=       ${GZCAT}
                   2238: DECOMPRESS_CMD.shar.bz2?=      ${BZCAT}
                   2239: DECOMPRESS_CMD.shar.Z?=                ${GZCAT}
                   2240: DECOMPRESS_CMD.shar?=          ${CAT}
                   2241:
1.929     jlam     2242: DECOMPRESS_CMD.Z?=             ${GZCAT}
                   2243: DECOMPRESS_CMD.bz2?=           ${BZCAT}
                   2244: DECOMPRESS_CMD.gz?=            ${GZCAT}
                   2245:
1.884     jlam     2246: DECOMPRESS_CMD?=               ${GZCAT}
1.1396    wiz      2247: .for __suffix__ in ${_EXTRACT_SUFFIXES}
1.884     jlam     2248: .  if !defined(DECOMPRESS_CMD${__suffix__})
                   2249: DECOMPRESS_CMD${__suffix__}?=  ${DECOMPRESS_CMD}
                   2250: .  endif
                   2251: .endfor
                   2252:
                   2253: # If this is empty, then everything gets extracted.
                   2254: EXTRACT_ELEMENTS?=     # empty
                   2255:
1.929     jlam     2256: DOWNLOADED_DISTFILE=   $${extract_file}
1.240     agc      2257:
1.1304    jlam     2258: EXTRACT_CMD.zip?=      ${LOCALBASE}/bin/unzip ${EXTRACT_CMD_OPTS.zip} $${extract_file}
                   2259: EXTRACT_CMD_OPTS.zip?= -Laqo
                   2260: EXTRACT_CMD.lha?=      ${LOCALBASE}/bin/lha ${EXTRACT_CMD_OPTS.lha} $${extract_file}
                   2261: EXTRACT_CMD_OPTS.lha?= xq
1.929     jlam     2262: EXTRACT_CMD.lzh?=      ${EXTRACT_CMD.lha}
1.1304    jlam     2263: EXTRACT_CMD_OPTS.lzh?= ${EXTRACT_CMD_OPTS.lha}
                   2264: EXTRACT_CMD.zoo?=      ${LOCALBASE}/bin/unzoo ${EXTRACT_CMD_OPTS.zoo} $${extract_file}
                   2265: EXTRACT_CMD_OPTS.zoo?= -x
1.1393    xtraeme  2266: EXTRACT_CMD.rar?=      ${LOCALBASE}/bin/unrar ${EXTRACT_CMD_OPTS.rar} $${extract_file}
                   2267: EXTRACT_CMD_OPTS.rar?= x -inul
1.1511    tv       2268: EXTRACT_ENV.bin?=      # empty
                   2269: EXTRACT_CMD.bin?=      ${ECHO} yes | ${SETENV} ${EXTRACT_ENV.bin} $${extract_file} ${EXTRACT_CMD_OPTS.bin} >/dev/null
1.929     jlam     2270:
                   2271: .for __suffix__ in .gz .bz2 .Z
                   2272: EXTRACT_CMD${__suffix__}?=     ${DECOMPRESS_CMD${__suffix__}} $${extract_file} > `${BASENAME} $${extract_file} ${__suffix__}`
                   2273: .endfor
1.914     jlam     2274:
                   2275: .for __suffix__ in .shar.gz .shar.bz2 .shar.Z .shar
1.929     jlam     2276: EXTRACT_CMD${__suffix__}?=     ${DECOMPRESS_CMD${__suffix__}} $${extract_file} | ${SH}
1.914     jlam     2277: .endfor
1.884     jlam     2278:
1.1434    wiz      2279: # If EXTRACT_USING_PAX is defined, use pax in preference to (GNU) tar.
1.884     jlam     2280: #
                   2281: .if defined(EXTRACT_USING_PAX)
1.1434    wiz      2282: _DFLT_EXTRACT_CMD?=    ${DECOMPRESS_CMD} $${extract_file} | ${PAX} -O -r ${EXTRACT_ELEMENTS}
1.884     jlam     2283: .else
1.929     jlam     2284: _DFLT_EXTRACT_CMD?=    ${DECOMPRESS_CMD} $${extract_file} | ${GTAR} -xf - ${EXTRACT_ELEMENTS}
1.884     jlam     2285: .endif
                   2286:
1.1396    wiz      2287: .for __suffix__ in ${_EXTRACT_SUFFIXES}
1.884     jlam     2288: .  if !defined(EXTRACT_CMD${__suffix__})
                   2289: .    if defined(EXTRACT_USING_PAX)
1.1434    wiz      2290: EXTRACT_CMD${__suffix__}?=     ${DECOMPRESS_CMD${__suffix__}} $${extract_file} | ${PAX} -O -r ${EXTRACT_ELEMENTS}
1.884     jlam     2291: .  else
1.929     jlam     2292: EXTRACT_CMD${__suffix__}?=     ${DECOMPRESS_CMD${__suffix__}} $${extract_file} | ${GTAR} -xf - ${EXTRACT_ELEMENTS}
1.884     jlam     2293: .    endif
                   2294: .  endif
                   2295: .endfor
                   2296:
1.929     jlam     2297: # _SHELL_EXTRACT is a "subroutine" for extracting an archive.  It extracts
                   2298: # the contents of archive named by the shell variable "extract_file" based
                   2299: # on the file extension of the archive.
1.913     jlam     2300: #
1.929     jlam     2301: _SHELL_EXTRACT=                case $${extract_file} in
1.1396    wiz      2302: .for __suffix__ in ${_EXTRACT_SUFFIXES}
1.929     jlam     2303: _SHELL_EXTRACT+=       *${__suffix__}) ${EXTRACT_CMD${__suffix__}} ;;
1.913     jlam     2304: .endfor
1.929     jlam     2305: _SHELL_EXTRACT+=       *)              ${_DFLT_EXTRACT_CMD} ;;
                   2306: _SHELL_EXTRACT+=       esac
1.913     jlam     2307:
1.929     jlam     2308: EXTRACT_CMD?=          ${_SHELL_EXTRACT}
1.907     agc      2309:
1.1222    jmmv     2310: .PHONY: do-extract
1.907     agc      2311: .if !target(do-extract)
                   2312: do-extract: ${WRKDIR}
1.929     jlam     2313: .  for __file__ in ${EXTRACT_ONLY}
1.902     jlam     2314:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.929     jlam     2315:        extract_file="${_DISTDIR}/${__file__}"; export extract_file;    \
                   2316:        cd ${WRKDIR}; ${EXTRACT_CMD}
                   2317: .  endfor
1.1       agc      2318: .endif
                   2319:
                   2320: # Patch
                   2321:
1.968     jlam     2322: # LOCALPATCHES contains the location of local patches to packages
                   2323: #      that are maintained in a directory tree reflecting the same
                   2324: #      hierarchy as the pkgsrc tree, i.e. local patches for www/apache
                   2325: #      would be found as ${LOCALPATCHES}/www/apache/*.
                   2326: #
1.1168    grant    2327: .if defined(LOCALPATCHES)
1.968     jlam     2328: _DFLT_LOCALPATCHFILES= ${LOCALPATCHES}/${PKGPATH}/*
                   2329: _LOCALPATCHFILES=      ${_DFLT_LOCALPATCHFILES}
1.1168    grant    2330: .endif
1.968     jlam     2331:
1.1222    jmmv     2332: .PHONY: do-patch
1.1       agc      2333: .if !target(do-patch)
1.676     agc      2334: do-patch: uptodate-digest
1.789     hubertf  2335: .  if defined(PATCHFILES)
1.416     agc      2336:        @${ECHO_MSG} "${_PKGSRC_IN}> Applying distribution patches for ${PKGNAME}"
1.1488    jlam     2337: .    for i in ${PATCHFILES}
1.976     agc      2338:        ${_PKG_SILENT}${_PKG_DEBUG}cd ${_DISTDIR};                      \
1.1488    jlam     2339:        if [ ${PATCH_DEBUG_TMP} = yes ]; then                           \
                   2340:                ${ECHO_MSG} "${_PKGSRC_IN}> Applying distribution patch ${i}"; \
                   2341:        fi;                                                             \
                   2342:        ${PATCH_DIST_CAT.${i:S/=/--/}} |                                \
                   2343:        ${PATCH} ${PATCH_DIST_ARGS.${i:S/=/--/}}                        \
1.1493    schmonz  2344:                || { ${ECHO} "Patch ${i} failed"; ${PKGSRC_PATCH_FAIL}; }
1.1488    jlam     2345: .    endfor
1.789     hubertf  2346: .  endif
1.968     jlam     2347:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2348:        patchlist="";                                                   \
                   2349:        if [ -d ${PATCHDIR} ]; then                                     \
1.167     agc      2350:                if [ "`${ECHO} ${PATCHDIR}/patch-*`" = "${PATCHDIR}/patch-*" ]; then \
1.416     agc      2351:                        ${ECHO_MSG} "${_PKGSRC_IN}> Ignoring empty patch directory"; \
1.293     agc      2352:                        if [ -d ${PATCHDIR}/CVS ]; then                 \
1.910     zuntum   2353:                                ${ECHO_MSG} "${_PKGSRC_IN}> Perhaps you forgot the -P flag to 'cvs checkout' or 'cvs update'?"; \
1.293     agc      2354:                        fi;                                             \
                   2355:                else                                                    \
1.968     jlam     2356:                        patchlist=`${ECHO} ${PATCHDIR}/patch-*`;        \
                   2357:                fi;                                                     \
                   2358:        fi;                                                             \
                   2359:        if [ "X${_LOCALPATCHFILES}" = "X${_DFLT_LOCALPATCHFILES}" ]; then \
                   2360:                localpatchfiles="`${ECHO} ${_LOCALPATCHFILES}`";        \
                   2361:                if [ "$${localpatchfiles}" != "${_LOCALPATCHFILES}" ]; then \
                   2362:                        patchlist="$${patchlist} $${localpatchfiles}";  \
                   2363:                fi;                                                     \
                   2364:        else                                                            \
                   2365:                patchlist=`${ECHO} $${patchlist} ${_LOCALPATCHFILES}`;  \
                   2366:        fi;                                                             \
                   2367:        if [ -n "$${patchlist}" ]; then                                 \
1.1092    jschauma 2368:                ${ECHO_MSG} "${_PKGSRC_IN}> Applying pkgsrc patches for ${PKGNAME}" ; \
1.968     jlam     2369:                fail="";                                                \
                   2370:                for i in $${patchlist}; do                              \
                   2371:                        if [ ! -f "$$i" ]; then                         \
                   2372:                                ${ECHO_MSG} "${_PKGSRC_IN}> $$i is not a valid patch file - skipping"; \
                   2373:                                continue;                               \
                   2374:                        fi;                                             \
                   2375:                        case $$i in                                     \
                   2376:                        *.orig|*.rej|*~)                                \
                   2377:                                ${ECHO_MSG} "${_PKGSRC_IN}> Ignoring patchfile $$i"; \
                   2378:                                continue;                               \
                   2379:                                ;;                                      \
                   2380:                        ${PATCHDIR}/patch-local-*)                      \
                   2381:                                ;;                                      \
                   2382:                        ${PATCHDIR}/patch-*)                            \
                   2383:                                if [ -f ${DISTINFO_FILE} ]; then        \
                   2384:                                        filename=`expr $$i : '.*/\(.*\)'`; \
                   2385:                                        algsum=`${AWK} 'NF == 4 && $$2 == "('$$filename')" && $$3 == "=" {print $$1 " " $$4}' ${DISTINFO_FILE} || ${TRUE}`; \
                   2386:                                        if [ "X$$algsum" != "X" ]; then \
                   2387:                                                alg=`${ECHO} $$algsum | ${AWK} '{ print $$1 }'`; \
                   2388:                                                recorded=`${ECHO} $$algsum | ${AWK} '{ print $$2 }'`; \
                   2389:                                                calcsum=`${SED} -e '/\$$NetBSD.*/d' $$i | ${DIGEST} $$alg`; \
                   2390:                                                if [ ${PATCH_DEBUG_TMP} = yes ]; then \
                   2391:                                                        ${ECHO_MSG} "=> Verifying $$filename (using digest algorithm $$alg)"; \
1.293     agc      2392:                                                fi;                     \
                   2393:                                        fi;                             \
1.968     jlam     2394:                                        if [ "X$$algsum" = "X" -o "X$$recorded" = "X" ]; then \
                   2395:                                                ${ECHO_MSG} "**************************************"; \
                   2396:                                                ${ECHO_MSG} "Ignoring unknown patch file: $$i"; \
                   2397:                                                ${ECHO_MSG} "**************************************"; \
                   2398:                                                continue;               \
                   2399:                                        fi;                             \
                   2400:                                        if [ "X$$calcsum" != "X$$recorded" ]; then \
                   2401:                                                ${ECHO_MSG} "**************************************"; \
                   2402:                                                ${ECHO_MSG} "Patch file $$i has been modified"; \
                   2403:                                                ${ECHO_MSG} "**************************************"; \
                   2404:                                                fail="$$fail $$filename"; \
                   2405:                                                continue;               \
                   2406:                                        fi;                             \
1.1302    cube     2407:                                else                                    \
                   2408:                                        ${ECHO_MSG} "**************************************"; \
                   2409:                                        ${ECHO_MSG} "Ignoring unknown patch file: $$i"; \
                   2410:                                        ${ECHO_MSG} "**************************************"; \
1.1303    cube     2411:                                        continue;                       \
1.305     agc      2412:                                fi;                                     \
1.968     jlam     2413:                                ;;                                      \
                   2414:                        esac;                                           \
                   2415:                        if [ ${PATCH_DEBUG_TMP} = yes ]; then           \
1.1092    jschauma 2416:                                ${ECHO_MSG} "${_PKGSRC_IN}> Applying pkgsrc patch $$i" ; \
1.303     agc      2417:                        fi;                                             \
1.968     jlam     2418:                        fuzz="";                                        \
                   2419:                        ${PATCH} -v > /dev/null 2>&1 && fuzz="${PATCH_FUZZ_FACTOR}"; \
                   2420:                        ${PATCH} $$fuzz ${PATCH_ARGS} < $$i ||          \
1.1493    schmonz  2421:                                { ${ECHO} Patch $$i failed ; ${PKGSRC_PATCH_FAIL}; }; \
1.968     jlam     2422:                done;                                                   \
                   2423:                if [ "X$$fail" != "X" ]; then                           \
                   2424:                        ${ECHO_MSG} "Patching failed due to modified patch file(s): $$fail"; \
1.1493    schmonz  2425:                        ${PKGSRC_PATCH_FAIL};                           \
1.293     agc      2426:                fi;                                                     \
1.1       agc      2427:        fi
1.870     jlam     2428: .endif
                   2429:
                   2430: # Configure
1.1       agc      2431:
1.871     jlam     2432: # _CONFIGURE_PREREQ is a list of targets to run after pre-configure but before
                   2433: #      do-configure.  These targets typically edit the files used by the
1.1205    agc      2434: #      do-configure target.  The targets are run as dependencies of
1.1204    chris    2435: #      pre-configure-override.
1.871     jlam     2436: #
                   2437: # _CONFIGURE_POSTREQ is a list of targets to run after do-configure but before
                   2438: #      post-configure.  These targets typically edit the files generated by
                   2439: #      the do-configure target that are used during the build phase.
                   2440:
1.1248    jlam     2441: .if defined(USE_PKGLOCALEDIR)
                   2442: _PKGLOCALEDIR=                 ${PREFIX}/${PKGLOCALEDIR}/locale
                   2443: REPLACE_LOCALEDIR_PATTERNS?=   # empty
                   2444: _REPLACE_LOCALEDIR_PATTERNS=   ${REPLACE_LOCALEDIR_PATTERNS}
                   2445: .  if defined(HAS_CONFIGURE) || defined(GNU_CONFIGURE)
1.1395    sketch   2446: _REPLACE_LOCALEDIR_PATTERNS+=  [Mm]akefile.in*
1.1248    jlam     2447: .  else
1.1395    sketch   2448: _REPLACE_LOCALEDIR_PATTERNS+=  [Mm]akefile*
1.1248    jlam     2449: .  endif
                   2450: _REPLACE_LOCALEDIR_PATTERNS_FIND= \
                   2451:        \( ${_REPLACE_LOCALEDIR_PATTERNS:S/$/!/:S/^/-o -name !/:S/!/"/g:S/-o//1} \)
                   2452: REPLACE_LOCALEDIR?=            # empty
                   2453: _REPLACE_LOCALEDIR=            \
                   2454:        ${REPLACE_LOCALEDIR}    \
                   2455:        `${FIND} . ${_REPLACE_LOCALEDIR_PATTERNS_FIND} -print | ${SED} -e 's|^\./||' | ${GREP} -v '\.orig' | ${SORT} -u`
                   2456:
                   2457: _CONFIGURE_PREREQ+=            subst-pkglocaledir
                   2458: .  if empty(USE_PKGLOCALEDIR:M[nN][oO])
                   2459: SUBST_CLASSES+=                        pkglocaledir
                   2460: .  endif
                   2461: SUBST_MESSAGE.pkglocaledir=    "Fixing locale directory references."
                   2462: SUBST_FILES.pkglocaledir=      ${_REPLACE_LOCALEDIR}
                   2463: SUBST_SED.pkglocaledir=                \
                   2464:        -e 's|^\(localedir[     :]*=\).*|\1 ${_PKGLOCALEDIR}|'          \
                   2465:        -e 's|^\(gnulocaledir[  :]*=\).*|\1 ${_PKGLOCALEDIR}|'          \
1.1470    salo     2466:        -e 's|\(-DLOCALEDIR[    ]*=\)[^         ]*\(\.\*\)|\1"\\"${_PKGLOCALEDIR}\\""\2|'
1.1248    jlam     2467: .endif
                   2468:
1.870     jlam     2469: .if defined(REPLACE_PERL)
1.1208    agc      2470: REPLACE_INTERPRETER+=  perl
1.1207    agc      2471: _REPLACE.perl.old=     .*/bin/perl
                   2472: _REPLACE.perl.new=     ${PERL5}
                   2473: _REPLACE_FILES.perl=   ${REPLACE_PERL}
                   2474: .endif
                   2475:
1.1347    jlam     2476: .if defined(REPLACE_INTERPRETER)
1.1207    agc      2477: _CONFIGURE_PREREQ+=    replace-interpreter
1.1222    jmmv     2478: .PHONY: replace-interpreter
1.1207    agc      2479: replace-interpreter:
                   2480: .  for lang in ${REPLACE_INTERPRETER}
1.1415    drochner 2481: .    for pattern in ${_REPLACE_FILES.${lang}}
1.870     jlam     2482:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2483:        cd ${WRKSRC};                                                   \
1.1415    drochner 2484:        for f in ${pattern}; do                                         \
1.953     hubertf  2485:            if [ -f $${f} ]; then                                       \
1.1415    drochner 2486:                    ${SED} -e '1s|^#!${_REPLACE.${lang}.old}|#!${_REPLACE.${lang}.new}|' \
1.953     hubertf  2487:                            $${f} > $${f}.new;                          \
                   2488:                    if [ -x $${f} ]; then                               \
                   2489:                            ${CHMOD} a+x $${f}.new;                     \
                   2490:                    fi;                                                 \
                   2491:                    ${MV} -f $${f}.new $${f};                           \
                   2492:            fi;                                                         \
                   2493:        done
1.1415    drochner 2494: .    endfor
1.1207    agc      2495: .  endfor
1.770     zuntum   2496: .endif
1.522     wiz      2497:
1.1347    jlam     2498: .if defined(USE_LIBTOOL) && defined(LTCONFIG_OVERRIDE)
1.869     jlam     2499: _CONFIGURE_PREREQ+=    do-ltconfig-override
1.1222    jmmv     2500: .PHONY: do-ltconfig-override
1.869     jlam     2501: do-ltconfig-override:
1.828     jlam     2502: .  for ltconfig in ${LTCONFIG_OVERRIDE}
                   2503:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   2504:        if [ -f ${ltconfig} ]; then                                     \
                   2505:                ${RM} -f ${ltconfig};                                   \
1.1381    jlam     2506:                ${ECHO} "${RM} -f libtool; ${LN} -s ${_LIBTOOL} libtool" \
1.828     jlam     2507:                        > ${ltconfig};                                  \
                   2508:                ${CHMOD} +x ${ltconfig};                                \
1.375     sakamoto 2509:        fi
1.828     jlam     2510: .  endfor
1.1006    schmonz  2511: .endif
                   2512:
                   2513: .if defined(CONFIG_GUESS_OVERRIDE) || defined(CONFIG_SUB_OVERRIDE)
                   2514: _CONFIGURE_PREREQ+=    do-config-star-override
1.1222    jmmv     2515: .PHONY: do-config-star-override
1.1006    schmonz  2516: do-config-star-override:
1.1401    jlam     2517: .  if defined(CONFIG_GUESS_OVERRIDE) && !empty(CONFIG_GUESS_OVERRIDE)
1.1403    jlam     2518: .    for _pattern_ in ${CONFIG_GUESS_OVERRIDE}
                   2519:        ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC};                        \
                   2520:        for file in ${_pattern_}; do                                    \
                   2521:                if [ -f "$$file" ]; then                                \
                   2522:                        ${RM} -f $$file;                                \
1.1510    jlam     2523:                        ${LN} -s ${PKGSRCDIR}/mk/gnu-config/config.guess \
1.1403    jlam     2524:                                $$file;                                 \
                   2525:                fi;                                                     \
1.1006    schmonz  2526:        done
1.1403    jlam     2527: .    endfor
1.1007    agc      2528: .  endif
1.1401    jlam     2529: .  if defined(CONFIG_SUB_OVERRIDE) && !empty(CONFIG_SUB_OVERRIDE)
1.1403    jlam     2530: .    for _pattern_ in ${CONFIG_SUB_OVERRIDE}
                   2531:        ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC};                        \
                   2532:        for file in ${_pattern_}; do                                    \
                   2533:                if [ -f "$$file" ]; then                                \
                   2534:                        ${RM} -f $$file;                                \
1.1510    jlam     2535:                        ${LN} -s ${PKGSRCDIR}/mk/gnu-config/config.sub  \
1.1403    jlam     2536:                                $$file;                                 \
                   2537:                fi;                                                     \
1.1006    schmonz  2538:        done
1.1403    jlam     2539: .    endfor
1.1007    agc      2540: .  endif
1.1080    rh       2541: .endif
                   2542:
1.1248    jlam     2543: PKGCONFIG_OVERRIDE_SED= \
1.1523    jmmv     2544:        '/^Libs:.*[     ]/s|-L\([       ]*[^    ]*\)|${COMPILER_RPATH_FLAG}\1 -L\1|g'
                   2545: PKGCONFIG_OVERRIDE_STAGE?=     pre-configure
1.1248    jlam     2546:
                   2547: .if defined(PKGCONFIG_OVERRIDE) && !empty(PKGCONFIG_OVERRIDE)
1.1523    jmmv     2548: .  if ${PKGCONFIG_OVERRIDE_STAGE} == "pre-configure"
1.1248    jlam     2549: _CONFIGURE_PREREQ+=            subst-pkgconfig
1.1523    jmmv     2550: .  elif ${PKGCONFIG_OVERRIDE_STAGE} == "post-configure"
                   2551: _CONFIGURE_POSTREQ+=           subst-pkgconfig
                   2552: .  else
                   2553: SUBST_STAGE.pkgconfig=         ${PKGCONFIG_OVERRIDE_STAGE}
                   2554: .  endif
1.1248    jlam     2555: SUBST_CLASSES+=                        pkgconfig
                   2556: SUBST_MESSAGE.pkgconfig=       "Adding rpaths to pkgconfig files."
                   2557: SUBST_FILES.pkgconfig=         ${PKGCONFIG_OVERRIDE:S/^${WRKSRC}\///}
                   2558: SUBST_SED.pkgconfig=           ${PKGCONFIG_OVERRIDE_SED}
1.828     jlam     2559: .endif
                   2560:
1.1204    chris    2561: # By adding this target, it makes sure the the above PREREQ's work.
1.1222    jmmv     2562: .PHONY: pre-configure-override
1.1204    chris    2563: pre-configure-override: ${_CONFIGURE_PREREQ}
                   2564:
1.1222    jmmv     2565: .PHONY: do-configure
1.828     jlam     2566: .if !target(do-configure)
1.1389    jlam     2567: do-configure:
1.789     hubertf  2568: .  if defined(HAS_CONFIGURE)
1.1032    jlam     2569: .    for DIR in ${CONFIGURE_DIRS}
1.1042    abs      2570:        ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} \
1.1358    grant    2571:            ${CONFIGURE_ENV} ${CONFIG_SHELL} \
                   2572:            ${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS}
1.1032    jlam     2573: .    endfor
1.789     hubertf  2574: .  endif
                   2575: .  if defined(USE_IMAKE)
1.1119    jlam     2576: .    for DIR in ${CONFIGURE_DIRS}
                   2577:        ${_PKG_SILENT}${_PKG_DEBUG}cd ${DIR} && ${SETENV} ${SCRIPTS_ENV} XPROJECTROOT=${X11BASE} ${XMKMF}
                   2578: .    endfor
1.789     hubertf  2579: .  endif
1.871     jlam     2580: .endif
                   2581:
1.1347    jlam     2582: .if defined(USE_LIBTOOL) && \
                   2583:     (defined(LIBTOOL_OVERRIDE) || defined(SHLIBTOOL_OVERRIDE))
1.871     jlam     2584: _CONFIGURE_POSTREQ+=   do-libtool-override
1.1222    jmmv     2585: .PHONY: do-libtool-override
1.871     jlam     2586: do-libtool-override:
1.1126    jlam     2587: .  if defined(LIBTOOL_OVERRIDE)
1.1404    jlam     2588: .    for _pattern_ in ${LIBTOOL_OVERRIDE}
                   2589:        ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC};                        \
                   2590:        for file in ${_pattern_}; do                                    \
                   2591:                if [ -f "$$file" ]; then                                \
                   2592:                        ${RM} -f $$file;                                \
                   2593:                        (${ECHO} '#!${CONFIG_SHELL}';                   \
                   2594:                         ${ECHO} 'exec ${_LIBTOOL} "$$@"';              \
                   2595:                        ) > $$file;                                     \
                   2596:                        ${CHMOD} +x $$file;                             \
1.1368    jlam     2597:                fi;                                                     \
1.1404    jlam     2598:        done
1.1126    jlam     2599: .    endfor
                   2600: .  endif
                   2601: .  if defined(SHLIBTOOL_OVERRIDE)
1.1404    jlam     2602: .    for _pattern_ in ${SHLIBTOOL_OVERRIDE}
                   2603:        ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC};                        \
                   2604:        for file in ${_pattern_}; do                                    \
                   2605:                if [ -f "$$file" ]; then                                \
                   2606:                        ${RM} -f $$file;                                \
                   2607:                        (${ECHO} '#!${CONFIG_SHELL}';                   \
                   2608:                         ${ECHO} 'exec ${_SHLIBTOOL} "$$@"';            \
                   2609:                        ) > $$file;                                     \
                   2610:                        ${CHMOD} +x $$file;                             \
1.1382    jlam     2611:                fi;                                                     \
1.1404    jlam     2612:        done
1.1126    jlam     2613: .    endfor
                   2614: .  endif
1.1       agc      2615: .endif
1.871     jlam     2616:
1.1348    jlam     2617: .if defined(CONFIG_STATUS_OVERRIDE)
                   2618: _CONFIGURE_POSTREQ+=   do-config-status-override
                   2619: .PHONY: do-config-status-override
1.1389    jlam     2620: do-config-status-override:
1.1400    jlam     2621: .  for _pattern_ in ${CONFIG_STATUS_OVERRIDE}
1.1402    jlam     2622:        ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC};                        \
1.1400    jlam     2623:        for file in ${_pattern_}; do                                    \
1.1402    jlam     2624:                if [ -f "$$file" ]; then                                \
1.1408    jlam     2625:                        ${MV} -f $$file $$file.overridden;              \
1.1414    jdolecek 2626:                        ${AWK} '/ *-recheck *\| *--recheck.*\)/ {       \
1.1413    jlam     2627:                                        print;                          \
                   2628:                                        print "    exit 0";             \
                   2629:                                        next;                           \
                   2630:                                }                                       \
                   2631:                                { print }                               \
                   2632:                               ' $$file.overridden > $$file;            \
1.1402    jlam     2633:                        ${CHMOD} +x $$file;                             \
1.1400    jlam     2634:                fi;                                                     \
                   2635:        done
1.1389    jlam     2636: .  endfor
                   2637: .endif
1.1348    jlam     2638:
1.1222    jmmv     2639: .PHONY: post-configure
1.871     jlam     2640: post-configure: ${_CONFIGURE_POSTREQ}
1.1       agc      2641:
                   2642: # Build
                   2643:
1.1344    jlam     2644: BUILD_DIRS?=           ${WRKSRC}
                   2645: BUILD_MAKE_FLAGS?=     ${MAKE_FLAGS}
1.1045    jlam     2646:
1.1222    jmmv     2647: .PHONY: do-build
1.1       agc      2648: .if !target(do-build)
                   2649: do-build:
1.1045    jlam     2650: .  for DIR in ${BUILD_DIRS}
1.1344    jlam     2651:        ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${BUILD_MAKE_FLAGS} -f ${MAKEFILE} ${ALL_TARGET}
1.1045    jlam     2652: .  endfor
1.1       agc      2653: .endif
                   2654:
1.1081    dillo    2655: #Test
                   2656:
1.1344    jlam     2657: TEST_DIRS?=            ${BUILD_DIRS}
                   2658: TEST_ENV+=             ${MAKE_ENV}
                   2659: TEST_MAKE_FLAGS?=      ${MAKE_FLAGS}
1.1081    dillo    2660:
1.1222    jmmv     2661: .PHONY: do-test
1.1081    dillo    2662: .if !target(do-test)
                   2663: do-test:
1.1276    jlam     2664: .  if defined(TEST_TARGET) && !empty(TEST_TARGET)
1.1081    dillo    2665: .    for DIR in ${TEST_DIRS}
1.1344    jlam     2666:        ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${TEST_ENV} ${MAKE_PROGRAM} ${TEST_MAKE_FLAGS} -f ${MAKEFILE} ${TEST_TARGET}
1.1081    dillo    2667: .    endfor
                   2668: .  endif
                   2669: .endif
                   2670:
1.1       agc      2671: # Install
                   2672:
1.1344    jlam     2673: INSTALL_DIRS?=         ${BUILD_DIRS}
                   2674: INSTALL_MAKE_FLAGS?=   ${MAKE_FLAGS}
1.1045    jlam     2675:
1.1222    jmmv     2676: .PHONY: do-install
1.1       agc      2677: .if !target(do-install)
                   2678: do-install:
1.1045    jlam     2679: .  for DIR in ${INSTALL_DIRS}
1.1344    jlam     2680:        ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} -f ${MAKEFILE} ${INSTALL_TARGET}
1.1045    jlam     2681: .  endfor
1.1       agc      2682: .endif
                   2683:
                   2684: # Package
                   2685:
1.1222    jmmv     2686: .PHONY: real-su-package
1.810     agc      2687: real-su-package: ${PLIST} ${DESCR}
1.972     agc      2688:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.624     hubertf  2689:        ${ECHO_MSG} "${_PKGSRC_IN}> Building binary package for ${PKGNAME}"; \
1.1245    jlam     2690:        if ${PKG_INFO} -qe ${PKGNAME}; then                             \
                   2691:                : The package is installed. ;                           \
                   2692:        else                                                            \
                   2693:                ${ECHO_MSG} "=> ${PKGNAME} is not installed.";          \
                   2694:                exit 1;                                                 \
                   2695:        fi;                                                             \
1.972     agc      2696:        if [ ! -d ${PKGREPOSITORY} ]; then                              \
                   2697:                ${MKDIR} ${PKGREPOSITORY};                              \
                   2698:                if [ $$? -ne 0 ]; then                                  \
1.624     hubertf  2699:                        ${ECHO_MSG} "=> Can't create directory ${PKGREPOSITORY}."; \
1.972     agc      2700:                        exit 1;                                         \
                   2701:                fi;                                                     \
                   2702:        fi;                                                             \
                   2703:        if ${PKG_CREATE} ${PKG_ARGS_BINPKG} ${PKGFILE}; then            \
                   2704:                ${MAKE} ${MAKEFLAGS} package-links;                     \
                   2705:        else                                                            \
                   2706:                ${MAKE} ${MAKEFLAGS} delete-package;                    \
                   2707:                exit 1;                                                 \
1.1       agc      2708:        fi
1.1540.2.1  tv       2709: .if defined(NO_BIN_ON_CDROM)
1.512     rh       2710:        @${ECHO_MSG} "${_PKGSRC_IN}> Warning: ${PKGNAME} may not be put on a CD-ROM:"
1.547     hubertf  2711:        @${ECHO_MSG} "${_PKGSRC_IN}>         " ${NO_BIN_ON_CDROM:Q}
1.1540.2.1  tv       2712: .endif
                   2713: .if defined(NO_BIN_ON_FTP)
1.512     rh       2714:        @${ECHO_MSG} "${_PKGSRC_IN}> Warning: ${PKGNAME} may not be made available through FTP:"
1.547     hubertf  2715:        @${ECHO_MSG} "${_PKGSRC_IN}>         " ${NO_BIN_ON_FTP:Q}
1.1540.2.1  tv       2716: .endif
                   2717: .if defined(RECOMMENDED) && !empty(IGNORE_RECOMMENDED:M[yY][eE][sS])
1.1345    rh       2718:        @${ECHO_MSG} "${_PKGSRC_IN}> Warning: dependency recommendations are being ignored!"
                   2719:        @${ECHO_MSG} "${_PKGSRC_IN}>          ${PKGNAME} should not be uploaded nor"
                   2720:        @${ECHO_MSG} "${_PKGSRC_IN}>          otherwise be used as a binary package!"
1.1       agc      2721: .endif
                   2722:
1.810     agc      2723: # Some support rules for real-su-package
1.1       agc      2724:
1.1222    jmmv     2725: .PHONY: package-links
1.1540.2.1  tv       2726: package-links: delete-package-links
1.221     agc      2727:        ${_PKG_SILENT}${_PKG_DEBUG}for cat in ${CATEGORIES}; do         \
                   2728:                if [ ! -d ${PACKAGES}/$$cat ]; then                     \
1.222     agc      2729:                        ${MKDIR} ${PACKAGES}/$$cat;                     \
                   2730:                        if [ $$? -ne 0 ]; then                          \
1.415     agc      2731:                                ${ECHO_MSG} "=> Can't create directory ${PACKAGES}/$$cat."; \
1.221     agc      2732:                                exit 1;                                 \
                   2733:                        fi;                                             \
                   2734:                fi;                                                     \
1.468     tron     2735:                ${RM} -f ${PACKAGES}/$$cat/${PKGNAME}${PKG_SUFX};       \
1.221     agc      2736:                ${LN} -s ../${PKGREPOSITORYSUBDIR}/${PKGNAME}${PKG_SUFX} ${PACKAGES}/$$cat; \
1.1       agc      2737:        done;
                   2738:
1.1222    jmmv     2739: .PHONY: delete-package-links
1.1       agc      2740: delete-package-links:
1.440     hubertf  2741:        ${_PKG_SILENT}${_PKG_DEBUG}\
1.1360    heinz    2742:        ${FIND} ${PACKAGES} -type l -name ${PKGNAME}${PKG_SUFX} -print | ${XARGS} ${RM} -f
1.1       agc      2743:
1.1222    jmmv     2744: .PHONY: delete-package
1.1540.2.1  tv       2745: delete-package: delete-package-links
1.221     agc      2746:        ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PKGFILE}
1.624     hubertf  2747:
                   2748:
                   2749:
                   2750: # Do handling of shared libs for two cases:
                   2751: #
                   2752: # SHLIB_PLIST_MODE=1: when first called via the ${PLIST} target,
                   2753: #                     update the PLIST to contain ELF symlink, run
                   2754: #                     ldconfig on a.out,  etc. (used when called via
                   2755: #                     the ${PLIST} target). Will update ${PLIST}.
                   2756: # SHLIB_PLIST_MODE=0: when called via the real-su-install target,
                   2757: #                     actually generate symlinks for ELF, run ldconfig
                   2758: #                     for a.out, etc. Will not modify ${PLIST}.
                   2759: #
                   2760: # XXX This target could need some cleanup after it was ripped out of
                   2761: #     real-su-install
                   2762: #
1.1311    erh      2763: _AOUT_AWK = \
                   2764:        BEGIN { linkc = 1 }                     \
                   2765:        /^@/ { lines[NR] = $$0; next }          \
                   2766:        function libtool_release(lib) {         \
1.1319    seb      2767:                if (gsub("-[^-]+\\.so\\.", ".so.", lib)) { \
1.1311    erh      2768:                        if (system("${TEST} -h ${PREFIX}/" lib) == 0) { \
                   2769:                                rels[NR] = lib; \
                   2770:                        }                       \
                   2771:                }                               \
                   2772:        }                                       \
                   2773:        /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+\.[0-9]+$$/ { \
                   2774:                libtool_release($$0);           \
                   2775:                lines[NR] = $$0;                \
1.1319    seb      2776:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2777:                links[linkc++] = $$0;           \
1.1319    seb      2778:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2779:                links[linkc++] = $$0;           \
1.1319    seb      2780:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2781:                links[linkc++] = $$0;           \
1.1319    seb      2782:                if (sub("-[^-]+\\.so$$", ".so")) { \
1.1311    erh      2783:                        links[linkc++] = $$0;   \
                   2784:                }                               \
                   2785:                next                            \
                   2786:        }                                       \
                   2787:        /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+$$/ { \
                   2788:                libtool_release($$0);           \
                   2789:                lines[NR] = $$0;                \
1.1319    seb      2790:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2791:                links[linkc++] = $$0;           \
1.1319    seb      2792:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2793:                links[linkc++] = $$0;           \
1.1319    seb      2794:                if (sub("-[^-]+\\.so$$", ".so")) { \
1.1311    erh      2795:                        links[linkc++] = $$0;   \
                   2796:                }                               \
                   2797:                next                            \
                   2798:        }                                       \
                   2799:        { lines[NR] = $$0 }                     \
                   2800:        END {                                   \
                   2801:                for (i = 0 ; i <= linkc ; i++)  \
                   2802:                        for (j = 1 ; j < NR ; j++) \
                   2803:                                if (lines[j] == links[i]) \
                   2804:                                        lines[j] = "@comment " lines[j]; \
                   2805:                if (${SHLIB_PLIST_MODE})        \
                   2806:                        for (i = 1 ; i <= NR ; i++) { \
                   2807:                                print lines[i]; \
                   2808:                                if (rels[i] != "") \
                   2809:                                        print rels[i]; \
                   2810:                        }                       \
                   2811:        }
                   2812:
                   2813: _DYLIB_AWK= \
                   2814:        /^@/ { lines[NR] = $$0; next }          \
                   2815:                function libtool_release(lib) {         \
1.1319    seb      2816:                if (gsub("\\.so\\.", ".", lib) || gsub("\\.so$$", "", lib)) { \
1.1311    erh      2817:                        lib = lib ".dylib"; \
                   2818:                        if (system("${TEST} -h ${PREFIX}/" lib) == 0) { \
                   2819:                                rels[NR] = lib; \
                   2820:                        }                       \
                   2821:                }                               \
                   2822:        }                                       \
                   2823:        /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+\.[0-9]+$$/ { \
                   2824:                libtool_release($$0);           \
                   2825:                lines[NR] = $$0;                \
                   2826:                links[linkc++] = $$0;           \
1.1319    seb      2827:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2828:                links[linkc++] = $$0;           \
1.1319    seb      2829:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2830:                links[linkc++] = $$0;           \
1.1319    seb      2831:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2832:                links[linkc++] = $$0;           \
1.1319    seb      2833:                if (sub("-[^-]+\\.so$$", ".so")) { \
1.1311    erh      2834:                        links[linkc++] = $$0;   \
                   2835:                }                               \
                   2836:                next                            \
                   2837:        }                                       \
                   2838:        /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+$$/ { \
                   2839:                libtool_release($$0);           \
                   2840:                lines[NR] = $$0;                \
                   2841:                links[linkc++] = $$0;           \
1.1319    seb      2842:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2843:                links[linkc++] = $$0;           \
1.1319    seb      2844:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2845:                links[linkc++] = $$0;           \
1.1319    seb      2846:                if (sub("-[^-]+\\.so$$", ".so")) { \
1.1311    erh      2847:                        links[linkc++] = $$0;   \
                   2848:                }                               \
                   2849:                next                            \
                   2850:        }                                       \
                   2851:        /.*\/lib[^\/]+\.so\.[0-9]+$$/ {         \
                   2852:                libtool_release($$0);           \
                   2853:                lines[NR] = $$0;                \
                   2854:                links[linkc++] = $$0;           \
1.1319    seb      2855:                sub("\\.[0-9]+$$", "");         \
1.1311    erh      2856:                links[linkc++] = $$0;           \
1.1319    seb      2857:                if (sub("-[^-]+\\.so$$", ".so")) { \
1.1311    erh      2858:                        links[linkc++] = $$0;   \
                   2859:                }                               \
                   2860:                next                            \
                   2861:        }                                       \
                   2862:        /.*\/lib[^\/]+\.so$$/ {                 \
                   2863:                lines[NR] = $$0;                \
1.1471    grant    2864:                if (system("${TEST} -f ${PREFIX}/" $$0) == 0) { \
1.1311    erh      2865:                        next;                   \
                   2866:                }                               \
                   2867:                libtool_release($$0);           \
                   2868:                links[linkc++] = $$0;           \
1.1319    seb      2869:                if (sub("-[^-]+\\.so$$", ".so")) { \
1.1311    erh      2870:                        links[linkc++] = $$0;   \
                   2871:                }                               \
                   2872:                next                            \
                   2873:        }                                       \
                   2874:        { lines[NR] = $$0 }                     \
                   2875:        END {                                   \
                   2876:                for (i = 0 ; i <= linkc ; i++)  \
                   2877:                        for (j = 1 ; j <= NR ; j++) \
                   2878:                                if (lines[j] == links[i]) \
                   2879:                                        lines[j] = "@comment " lines[j]; \
                   2880:                if (${SHLIB_PLIST_MODE})        \
                   2881:                        for (i = 1 ; i <= NR ; i++) { \
                   2882:                                print lines[i]; \
                   2883:                                if (rels[i] != "") { \
                   2884:                                        print rels[i]; \
1.1424    danw     2885:                                        cmd = "${LS} -l ${PREFIX}/" rels[i]; \
                   2886:                                        cmd | getline tgt; \
                   2887:                                        close(cmd); \
1.1311    erh      2888:                                        gsub(".* ", "", tgt); \
                   2889:                                        if (tgts[tgt] == "") { \
                   2890:                                                tgts[tgt] = tgt; \
1.1313    agc      2891:                                                if (index(tgt, "/") == 1) \
                   2892:                                                        print tgt; \
                   2893:                                                else { \
                   2894:                                                        prefix=""; \
                   2895:                                                        if (match(rels[i], ".*/") != 0) \
                   2896:                                                                prefix=substr(rels[i],1,RLENGTH); \
                   2897:                                                        print prefix tgt; \
                   2898:                                                } \
1.1311    erh      2899:                                        }       \
                   2900:                                }               \
                   2901:                        }                       \
                   2902:        }
                   2903:
                   2904: # Turn lib*.so.*, lib*.so into lib*.a.  Drop duplicates.
                   2905: _AIXLIB_AWK= \
                   2906:        /^@/ { lines[NR] = $$0; next }          \
1.1313    agc      2907:        /.*\/lib[^\/]+\.so(\.[0-9]+)*$$/ {      \
1.1319    seb      2908:                sub("(\\.[0-9]+)*$$", "");      \
                   2909:                sub("\\.so$$", ".a");           \
1.1313    agc      2910:                lines[NR] = $$0;                \
1.1311    erh      2911:                next                            \
                   2912:        }                                       \
                   2913:        { lines[NR] = $$0 }                     \
                   2914:        END {                                   \
1.1313    agc      2915:                nlibs = 0;                      \
                   2916:                for (i = 1; i <= NR; i++) {     \
                   2917:                        for (j = 0; j < nlibs; j++) { \
1.1311    erh      2918:                                if (libs[j] == lines[i]) \
1.1313    agc      2919:                                        break;  \
                   2920:                        }                       \
                   2921:                        if (j >= nlibs)         \
                   2922:                                print lines[i]; \
1.1319    seb      2923:                        if (match(lines[i], ".*/lib[^/]+\\.a$$")) { \
1.1311    erh      2924:                                libs[nlibs] = lines[i]; \
1.1313    agc      2925:                                nlibs++;        \
                   2926:                        }                       \
                   2927:                }                               \
1.1311    erh      2928:        }
                   2929:
1.1222    jmmv     2930: .PHONY: do-shlib-handling
1.624     hubertf  2931: do-shlib-handling:
1.632     skrll    2932: .if ${SHLIB_HANDLING} == "YES"
1.451     hubertf  2933:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1439    jschauma 2934:        sos=`${EGREP} -h '^.*/lib[^/]+\.so$$' ${PLIST} || ${TRUE}`;     \
1.624     hubertf  2935:        if [ "$$sos" != "" ]; then                                      \
1.1540.2.1  tv       2936:                shlib_type=`${_GET_SHLIB_TYPE}`;                        \
1.634     agc      2937:                if [ "${SHLIB_PLIST_MODE}" = "0" ]; then                \
1.1342    grant    2938:                        ${ECHO_MSG} "${_PKGSRC_IN}> [Automatic $$shlib_type shared object handling]"; \
1.634     agc      2939:                fi;                                                     \
1.1342    grant    2940:                case "$$shlib_type" in                                  \
1.634     agc      2941:                ELF)    ;;                                              \
                   2942:                "a.out")                                                \
1.1313    agc      2943:                        ${AWK} '${_AOUT_AWK}' <${PLIST} >${PLIST}.tmp ; \
1.634     agc      2944:                        if [ "${SHLIB_PLIST_MODE}" = "1" ]; then        \
                   2945:                                ${MV} ${PLIST}.tmp ${PLIST};            \
                   2946:                        else                                            \
                   2947:                                ${RM} ${PLIST}.tmp ;                    \
1.624     hubertf  2948:                        fi ;                                            \
1.1439    jschauma 2949:                        cnt=`${EGREP} -c '^@exec[       ]*${LDCONFIG}$$' ${PLIST} || ${TRUE}`; \
1.624     hubertf  2950:                        if [ "${SHLIB_PLIST_MODE}" = "1" ]; then        \
                   2951:                                if [ $$cnt -eq 0 ]; then                \
                   2952:                                        ${ECHO} "@exec ${LDCONFIG}" >> ${PLIST}; \
                   2953:                                        ${ECHO} "@unexec ${LDCONFIG}" >> ${PLIST}; \
                   2954:                                fi                                      \
                   2955:                        fi;                                             \
                   2956:                        if [ "${SHLIB_PLIST_MODE}" = "0" ]; then        \
                   2957:                                if [ "${PKG_VERBOSE}" != "" ]; then     \
                   2958:                                        ${ECHO_MSG} "$$sos";            \
                   2959:                                        ${ECHO_MSG} "Running ${LDCONFIG}"; \
                   2960:                                fi;                                     \
                   2961:                                ${LDCONFIG} || ${TRUE};                 \
                   2962:                        fi                                              \
1.118     agc      2963:                        ;;                                              \
1.875     agc      2964:                "dylib")                                                \
1.1313    agc      2965:                        ${AWK} '${_DYLIB_AWK}' <${PLIST} >${PLIST}.tmp && \
1.875     agc      2966:                        if [ "${SHLIB_PLIST_MODE}" = "1" ]; then        \
                   2967:                                ${MV} ${PLIST}.tmp ${PLIST};            \
1.1311    erh      2968:                        else                                            \
1.875     agc      2969:                                ${RM} ${PLIST}.tmp ;                    \
1.1311    erh      2970:                        fi ;                                            \
1.875     agc      2971:                        ;;                                              \
1.1311    erh      2972:                "aixlib")                                               \
1.1313    agc      2973:                        ${AWK} '${_AIXLIB_AWK}' <${PLIST} >${PLIST}.tmp && \
                   2974:                        ${MV} ${PLIST}.tmp ${PLIST};                    \
                   2975:                        ;;                                              \
1.221     agc      2976:                "*")                                                    \
1.624     hubertf  2977:                        if [ "${SHLIB_PLIST_MODE}" = "0" ]; then        \
                   2978:                                ${ECHO_MSG} "No shared libraries for ${MACHINE_ARCH}"; \
                   2979:                        fi ;                                            \
                   2980:                        if [ "${SHLIB_PLIST_MODE}" = "1" ]; then        \
                   2981:                                for so in $$sos; do                     \
                   2982:                                        if [ X"${PKG_VERBOSE}" != X"" ]; then \
                   2983:                                                ${ECHO_MSG} >&2 "Ignoring $$so"; \
                   2984:                                        fi;                             \
                   2985:                                        ${SED} -e "s;^$$so$$;@comment No shared objects - &;" \
1.655     wiz      2986:                                                ${PLIST} >${PLIST}.tmp && ${MV} ${PLIST}.tmp ${PLIST};  \
1.624     hubertf  2987:                                done;                                   \
                   2988:                        fi ;                                            \
1.118     agc      2989:                        ;;                                              \
                   2990:                esac;                                                   \
1.451     hubertf  2991:        fi
1.632     skrll    2992: .endif # SHLIB_HANDLING == "YES"
1.236     agc      2993:
1.488     hubertf  2994:
                   2995: # Check if all binaries and shlibs find their needed libs
                   2996: # Must be run after "make install", so that files are installed, and
                   2997: # ${PLIST} exists.
                   2998: #
1.1222    jmmv     2999: .PHONY: check-shlibs
1.488     hubertf  3000: check-shlibs:
1.678     hubertf  3001: .if !defined(NO_PKG_REGISTER)
1.972     agc      3002:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.706     hubertf  3003:        bins=`${PKG_INFO} -qL ${PKGNAME} | { ${EGREP} -h '/(bin|sbin|libexec)/' || ${TRUE}; }`; \
1.972     agc      3004:        if [ "${OBJECT_FMT}" = "ELF" ]; then                            \
1.706     hubertf  3005:                shlibs=`${PKG_INFO} -qL ${PKGNAME} | { ${EGREP} -h '/lib/lib.*.so' || ${TRUE}; }`; \
1.1244    grant    3006:        elif [ "${OBJECT_FMT}" = "Mach-O" ]; then                       \
                   3007:                shlibs=`${PKG_INFO} -qL ${PKGNAME} | { ${EGREP} -h '/lib/lib.*.dylib' || ${TRUE}; }`; \
1.972     agc      3008:        else                                                            \
                   3009:                shlibs="";                                              \
                   3010:        fi;                                                             \
1.1244    grant    3011:        if [ "X${LDD}" = X ]; then                                      \
1.1240    grant    3012:                ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'`;\
1.972     agc      3013:        else                                                            \
                   3014:                ldd="${LDD}";                                           \
                   3015:        fi;                                                             \
1.1240    grant    3016:        if [ -x "$$ldd" ]; then                                         \
                   3017:                for i in $${bins} $${shlibs}; do                        \
                   3018:                        err=`{ $$ldd $$i 2>&1 || ${TRUE}; } | { ${GREP} "not found" || ${TRUE}; }`; \
                   3019:                        if [ "${PKG_VERBOSE}" != "" ]; then             \
                   3020:                                ${ECHO} "$$ldd $$i";                    \
                   3021:                        fi;                                             \
                   3022:                        if [ "$$err" != "" ]; then                      \
                   3023:                                ${ECHO} "$$i: $$err";                   \
                   3024:                                error=1;                                \
                   3025:                        fi;                                             \
                   3026:                done;                                                   \
                   3027:        fi;                                                             \
1.972     agc      3028:        if [ "$$error" = 1 ]; then                                      \
1.488     hubertf  3029:                ${ECHO} "*** The above programs/libs will not find the listed shared libraries"; \
1.972     agc      3030:                ${ECHO} "    at runtime. Please fix the package (add -Wl,-R.../lib in the right places)!"; \
1.488     hubertf  3031:                ${SHCOMMENT} Might not error-out for non-pkg-developers; \
1.972     agc      3032:                exit 1;                                                 \
1.488     hubertf  3033:        fi
1.678     hubertf  3034: .endif # NO_PKG_REGISTER
1.488     hubertf  3035:
1.1342    grant    3036:
1.1540.2.1  tv       3037: # Macro to print out the actual shared library type.
                   3038: .if defined(USE_LANGUAGES) && !empty(USE_LANGUAGES)
                   3039: .  if ${_OPSYS_SHLIB_TYPE} == "ELF/a.out"
                   3040: .    if (${OBJECT_FMT} == "ELF" || ${OBJECT_FMT} == "a.out")
                   3041: _GET_SHLIB_TYPE=       ${ECHO} '${OBJECT_FMT}' # speedup if already known
                   3042: .    else
                   3043: _GET_SHLIB_TYPE=\
1.1506    hira     3044:        @cd ${WRKDIR} &&                                                \
1.1342    grant    3045:        sotype=none;                                                    \
                   3046:        if [ "X${MKPIC}" != "Xno" -a "X${NOPIC}" = "X" ]; then          \
1.1343    grant    3047:                ${ECHO} "int main() { return(0); }" > a.$$$$.c;         \
1.1372    jlam     3048:                ${SETENV} PATH=${PATH}                                  \
1.1342    grant    3049:                ${CC} ${CFLAGS} a.$$$$.c -o a.$$$$.out;                 \
                   3050:                case `${FILE_CMD} a.$$$$.out` in                        \
                   3051:                *ELF*dynamically*)                                      \
                   3052:                        sotype=ELF ;;                                   \
1.1540.2.1  tv       3053:                *shared*library*|*dynamically*)                         \
1.1342    grant    3054:                        sotype="a.out" ;;                               \
                   3055:                esac;                                                   \
                   3056:        fi;                                                             \
                   3057:        ${ECHO} "$$sotype";                                             \
                   3058:        ${RM} -f a.$$$$.c a.$$$$.out
1.1540.2.1  tv       3059: .    endif
1.1420    agc      3060: .  else
1.1540.2.1  tv       3061: _GET_SHLIB_TYPE=       ${ECHO} '${_OPSYS_SHLIB_TYPE}'
                   3062: .  endif
1.1342    grant    3063: .endif
1.1540.2.1  tv       3064: _GET_SHLIB_TYPE?=      ${ECHO} none
                   3065:
                   3066: # Not to be used by pkgsrc; available for human inspection only.
                   3067: show-shlib-type:
                   3068:        @${_GET_SHLIB_TYPE}
                   3069:
                   3070: LOCKFILE=      ${WRKDIR}/.lockfile
                   3071: .for targ in ${_PKG_PHASES_WRKDIR}
                   3072: .PHONY: acquire-${targ}-lock release-${targ}-lock
                   3073: acquire-${targ}-lock: .OPTIONAL
                   3074: release-${targ}-lock: .OPTIONAL
                   3075:
                   3076: .  if ${PKGSRC_LOCKTYPE} != "none"
                   3077: acquire-${targ}-lock:
                   3078:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   3079:        ppid=`${PS} -p $$$$ -o ppid | ${AWK} 'NR == 2 { print $$1 }'`;  \
                   3080:        if ${TEST} "$$ppid" = ""; then                                  \
                   3081:                ${ECHO} "No parent process ID found.";                  \
                   3082:                ${FALSE};                                               \
                   3083:        fi;                                                             \
                   3084:        while true; do                                                  \
                   3085:                if ${TEST} -f /var/run/dmesg.boot -a -f ${LOCKFILE} -a  \
                   3086:                     /var/run/dmesg.boot -nt ${LOCKFILE}; then          \
                   3087:                        ${ECHO} "=> Removing stale ${LOCKFILE}";        \
                   3088:                        ${RM} ${LOCKFILE};                              \
                   3089:                fi;                                                     \
                   3090:                ${SHLOCK} -f ${LOCKFILE} -p $$ppid && break;            \
                   3091:                ${ECHO} "=> Lock is held by pid `cat ${LOCKFILE}`";     \
                   3092:                case "${PKGSRC_LOCKTYPE}" in                            \
                   3093:                once)   exit 1 ;;                                       \
                   3094:                sleep)  sleep ${PKGSRC_SLEEPSECS} ;;                    \
                   3095:                esac                                                    \
                   3096:        done;                                                           \
                   3097:        if [ "${PKG_VERBOSE}" != "" ]; then                             \
                   3098:                ${ECHO_MSG} "=> Lock acquired on behalf of process $$ppid"; \
                   3099:        fi
1.1342    grant    3100:
1.1540.2.1  tv       3101: release-${targ}-lock:
                   3102:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   3103:        if [ "${PKG_VERBOSE}" != "" ]; then                             \
                   3104:                ${ECHO_MSG} "=> Lock released on behalf of process `${CAT} ${LOCKFILE}`"; \
                   3105:        fi;                                                             \
                   3106:        ${RM} ${LOCKFILE}
                   3107: .  endif # PKGSRC_LOCKTYPE
                   3108: .endfor
1.1       agc      3109:
                   3110:
1.1540.2.1  tv       3111: # Empty pre-* and post-* targets
1.1       agc      3112:
1.1540.2.1  tv       3113: .for targ in fetch ${_PKG_PHASES_WRKDIR} install-script clean distclean
                   3114: .PHONY: pre-${targ} post-${targ}
                   3115: pre-${targ}: .OPTIONAL
                   3116: post-${targ}: .OPTIONAL
1.1       agc      3117: .endfor
                   3118:
                   3119: # Reinstall
                   3120: #
                   3121: # Special target to re-run install
                   3122:
1.1222    jmmv     3123: .PHONY: reinstall
1.560     hubertf  3124: reinstall:
1.1540.2.1  tv       3125:        ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${install_COOKIE} ${package_COOKIE} ${PLIST}
1.1437    xtraeme  3126:        ${_PKG_SILENT}${_PKG_DEBUG}DEPENDS_TARGET=${DEPENDS_TARGET:Q} ${MAKE} ${MAKEFLAGS} install
1.46      agc      3127:
                   3128: # Deinstall
                   3129: #
                   3130: # Special target to remove installation
1.221     agc      3131:
1.1540.2.1  tv       3132: .PHONY: deinstall
1.624     hubertf  3133: deinstall: do-su-deinstall
1.243     tron     3134:
1.1540.2.1  tv       3135: .if (${DEINSTALLDEPENDS} != "NO")
                   3136: .  if (${DEINSTALLDEPENDS} != "ALL")
1.336     hubertf  3137: # used for removing stuff in bulk builds
1.624     hubertf  3138: real-su-deinstall-flags+=      -r -R
1.336     hubertf  3139: # used for "update" target
1.1540.2.1  tv       3140: .  else
1.624     hubertf  3141: real-su-deinstall-flags+=      -r
1.789     hubertf  3142: .  endif
1.1540.2.1  tv       3143: .endif
                   3144: .ifdef PKG_VERBOSE
1.624     hubertf  3145: real-su-deinstall-flags+=      -v
1.1540.2.1  tv       3146: .endif
                   3147: .ifdef PKG_PRESERVE
                   3148: .  if (${UPDATE_RUNNING} == "YES")
1.1530    erh      3149: # used to update w/o removing any files
                   3150: real-su-deinstall-flags+=      -N -f
                   3151: .  endif
1.1540.2.1  tv       3152: .endif
1.317     hubertf  3153:
1.1222    jmmv     3154: .PHONY: real-su-deinstall
1.624     hubertf  3155: real-su-deinstall:
1.972     agc      3156:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1261    jlam     3157:        found="`${PKG_INFO} -e \"${PKGNAME}\" || ${TRUE}`";             \
                   3158:        case "$$found" in                                               \
1.1275    jlam     3159:        "") found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`" ;; \
1.1261    jlam     3160:        esac;                                                           \
1.972     agc      3161:        if [ "$$found" != "" ]; then                                    \
1.624     hubertf  3162:                ${ECHO} Running ${PKG_DELETE} ${real-su-deinstall-flags} $$found ; \
                   3163:                ${PKG_DELETE} ${real-su-deinstall-flags} $$found || ${TRUE} ; \
1.317     hubertf  3164:        fi
1.1540.2.1  tv       3165: .if (${DEINSTALLDEPENDS} != "NO") && (${DEINSTALLDEPENDS} != "ALL")
1.408     hubertf  3166:        @${SHCOMMENT} Also remove BUILD_DEPENDS:
1.1540.2.1  tv       3167: .  for pkg in ${BUILD_DEPENDS:C/:.*$//}
1.972     agc      3168:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1275    jlam     3169:        found="`${PKG_BEST_EXISTS} \"${pkg}\" || ${TRUE}`";             \
1.972     agc      3170:        if [ "$$found" != "" ]; then                                    \
                   3171:                ${ECHO} Running ${PKG_DELETE} $$found;                  \
                   3172:                ${PKG_DELETE} ${real-su-deinstall-flags} $$found || ${TRUE}; \
1.408     hubertf  3173:        fi
1.1540.2.1  tv       3174: .  endfor
                   3175: .endif # DEINSTALLDEPENDS
                   3176:        @${RM} -f ${install_COOKIE} ${package_COOKIE}
1.220     hubertf  3177:
1.362     rh       3178:
1.1       agc      3179: ################################################################
                   3180: # Some more targets supplied for users' convenience
                   3181: ################################################################
1.327     rh       3182:
                   3183: # The 'update' target can be used to update a package and all
                   3184: # currently installed packages that depend upon this package.
1.362     rh       3185:
1.1222    jmmv     3186: .PHONY: update
1.958     rh       3187: .if !target(update)
1.362     rh       3188: .if exists(${DDIR})
                   3189: RESUMEUPDATE?= YES
1.509     rh       3190: CLEAR_DIRLIST?=        NO
1.362     rh       3191:
                   3192: update:
                   3193:        ${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG}                          \
1.416     agc      3194:                "${_PKGSRC_IN}> Resuming update for ${PKGNAME}"
1.1178    rh       3195: .  if ${REINSTALL} != "NO" && ${UPDATE_TARGET} != "replace"
1.515     rh       3196:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1530    erh      3197:                ${MAKE} ${MAKEFLAGS} deinstall UPDATE_RUNNING=YES DEINSTALLDEPENDS=ALL
1.789     hubertf  3198: .  endif
1.362     rh       3199: .else
                   3200: RESUMEUPDATE?= NO
1.509     rh       3201: CLEAR_DIRLIST?=        YES
1.362     rh       3202:
1.327     rh       3203: update:
1.452     hubertf  3204:        ${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} ${DDIR}
1.1178    rh       3205: .  if ${UPDATE_TARGET} != "replace"
1.972     agc      3206:        ${_PKG_SILENT}${_PKG_DEBUG}if ${PKG_INFO} -qe ${PKGBASE}; then  \
1.1531    agc      3207:                ${MAKE} ${MAKEFLAGS} deinstall UPDATE_RUNNING=YES DEINSTALLDEPENDS=ALL \
1.972     agc      3208:                || (${RM} ${DDIR} && ${FALSE});                         \
1.952     tron     3209:        fi
1.1178    rh       3210: .  endif
1.362     rh       3211: .endif
1.327     rh       3212:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.590     rh       3213:                ${MAKE} ${MAKEFLAGS} ${UPDATE_TARGET} KEEP_WRKDIR=YES   \
1.1437    xtraeme  3214:                        DEPENDS_TARGET=${DEPENDS_TARGET:Q}
1.327     rh       3215:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.466     tron     3216:        [ ! -s ${DDIR} ] || for dep in `${CAT} ${DDIR}` ; do            \
1.972     agc      3217:                (if cd ../.. && cd "$${dep}" ; then                     \
1.976     agc      3218:                        ${ECHO_MSG} "${_PKGSRC_IN}> Installing in $${dep}" && \
1.1178    rh       3219:                        if [ "(" "${RESUMEUPDATE}" = "NO" -o            \
                   3220:                             "${REINSTALL}" != "NO" ")" -a              \
                   3221:                             "${UPDATE_TARGET}" != "replace" ] ; then   \
1.1531    agc      3222:                                ${MAKE} ${MAKEFLAGS} deinstall UPDATE_RUNNING=YES; \
1.362     rh       3223:                        fi &&                                           \
1.590     rh       3224:                        ${MAKE} ${MAKEFLAGS} ${UPDATE_TARGET}           \
1.1437    xtraeme  3225:                                DEPENDS_TARGET=${DEPENDS_TARGET:Q} ;    \
1.398     rh       3226:                else                                                    \
1.976     agc      3227:                        ${ECHO_MSG} "${_PKGSRC_IN}> Skipping removed directory $${dep}"; \
1.398     rh       3228:                fi) ;                                                   \
                   3229:        done
1.362     rh       3230: .if ${NOCLEAN} == "NO"
1.398     rh       3231:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.452     hubertf  3232:                ${MAKE} ${MAKEFLAGS} clean-update CLEAR_DIRLIST=YES
1.362     rh       3233: .endif
                   3234:
                   3235:
1.1222    jmmv     3236: .PHONY: clean-update
1.362     rh       3237: clean-update:
1.452     hubertf  3238:        ${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} ${DDIR}
1.362     rh       3239:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   3240:        if [ -s ${DDIR} ] ; then                                        \
                   3241:                for dep in `${CAT} ${DDIR}` ; do                        \
1.972     agc      3242:                        (if cd ../.. && cd "$${dep}" ; then             \
1.452     hubertf  3243:                                ${MAKE} ${MAKEFLAGS} clean ;            \
1.398     rh       3244:                        else                                            \
1.416     agc      3245:                                ${ECHO_MSG} "${_PKGSRC_IN}> Skipping removed directory $${dep}";\
1.398     rh       3246:                        fi) ;                                           \
1.362     rh       3247:                done ;                                                  \
                   3248:        fi
1.509     rh       3249: .if ${CLEAR_DIRLIST} != "NO"
1.452     hubertf  3250:        ${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} clean
1.362     rh       3251: .else
1.398     rh       3252:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.452     hubertf  3253:                ${MAKE} ${MAKEFLAGS} clean update-dirlist               \
1.362     rh       3254:                DIRLIST="`${CAT} ${DDIR}`" PKGLIST="`${CAT} ${DLIST}`"
1.515     rh       3255:        ${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG}                          \
                   3256:                "${_PKGSRC_IN}> Warning: preserved leftover directory list.  Your next";\
                   3257:                ${ECHO_MSG} "${_PKGSRC_IN}>          \`\`${MAKE} update'' may fail.  It is advised to use";\
                   3258:                ${ECHO_MSG} "${_PKGSRC_IN}>          \`\`${MAKE} update REINSTALL=YES'' instead!"
1.362     rh       3259: .endif
1.958     rh       3260:
                   3261: .endif # !target(update)
1.362     rh       3262:
                   3263:
1.1222    jmmv     3264: .PHONY: update-dirlist
1.362     rh       3265: update-dirlist:
                   3266:        ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} -p ${WRKDIR}
                   3267: .ifdef PKGLIST
1.789     hubertf  3268: .  for __tmp__ in ${PKGLIST}
1.362     rh       3269:        ${_PKG_SILENT}${_PKG_DEBUG}${ECHO} >>${DLIST} "${__tmp__}"
1.789     hubertf  3270: .  endfor
1.362     rh       3271: .endif
                   3272: .ifdef DIRLIST
1.789     hubertf  3273: .  for __tmp__ in ${DIRLIST}
1.362     rh       3274:        ${_PKG_SILENT}${_PKG_DEBUG}${ECHO} >>${DDIR} "${__tmp__}"
1.789     hubertf  3275: .  endfor
1.362     rh       3276: .endif
                   3277:
1.327     rh       3278:
                   3279: ${DDIR}: ${DLIST}
                   3280:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.655     wiz      3281:        ddir=`${SED} 's:-[^-]*$$::' ${DLIST}`;                          \
1.508     rh       3282:        ${ECHO} >${DDIR};                                               \
                   3283:        for pkg in $${ddir} ; do                                        \
1.1048    hubertf  3284:                if ${PKG_INFO} -b "$${pkg}" >/dev/null 2>&1 ; then      \
                   3285:                        ${PKG_INFO} -b "$${pkg}" | ${SED}       -ne     \
1.510     rh       3286:                            's,\([^/]*/[^/]*\)/Makefile:.*,\1,p' |      \
                   3287:                            ${HEAD} -1 >>${DDIR};                       \
1.508     rh       3288:                fi ;                                                    \
                   3289:        done
1.327     rh       3290:
1.965     agc      3291: ${DLIST}: ${WRKDIR}
1.327     rh       3292:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1444    tv       3293:        { ${PKG_DELETE} -n "${PKGWILDCARD}" 2>&1 |                      \
1.1520    tv       3294:                ${GREP} '^      ' |                                             \
1.1444    tv       3295:                ${AWK} '{ l[NR]=$$0 } END { for (i=NR;i>0;--i) print l[i] }' \
                   3296:        || ${TRUE}; } > ${DLIST}
1.524     tron     3297:
                   3298: # The 'info' target can be used to display information about a package.
1.1222    jmmv     3299: .PHONY: info
1.1540.2.1  tv       3300: info:
1.1048    hubertf  3301:        ${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} "${PKGWILDCARD}"
1.604     tron     3302:
                   3303: # The 'check' target can be used to check an installed package.
1.1222    jmmv     3304: .PHONY: check
1.1540.2.1  tv       3305: check:
1.1048    hubertf  3306:        ${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} check "${PKGWILDCARD}"
1.1044    tron     3307:
                   3308: # The 'list' target can be used to list the files installed by a package.
1.1222    jmmv     3309: .PHONY: list
1.1540.2.1  tv       3310: list:
1.1048    hubertf  3311:        ${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} -L "${PKGWILDCARD}"
1.251     hubertf  3312:
1.631     hubertf  3313: # Run pkglint:
1.1222    jmmv     3314: .PHONY: lint
1.631     hubertf  3315: lint:
1.1140    hubertf  3316:        ${_PKG_SILENT}${_PKG_DEBUG}${LOCALBASE}/bin/pkglint | ${GREP} -v ^OK
1.784     tron     3317:
                   3318: # Create a binary package from an install package using "pkg_tarup"
1.1222    jmmv     3319: .PHONY: tarup
1.784     tron     3320: tarup:
1.1252    jlam     3321: .if ${PKG_INSTALLATION_TYPE} == "overwrite"
1.972     agc      3322:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   3323:        ${RM} -f ${PACKAGES}/All/${PKGNAME}${PKG_SUFX};                 \
1.1252    jlam     3324:        ${SETENV} PKG_DBDIR=${_PKG_DBDIR} PKG_SUFX=${PKG_SUFX}  \
1.972     agc      3325:                PKGREPOSITORY=${PACKAGES}/All                           \
                   3326:                ${LOCALBASE}/bin/pkg_tarup ${PKGNAME};                  \
                   3327:        for CATEGORY in ${CATEGORIES}; do                               \
                   3328:                ${MKDIR} ${PACKAGES}/$$CATEGORY;                        \
                   3329:                cd ${PACKAGES}/$$CATEGORY;                              \
                   3330:                ${RM} -f ${PKGNAME}${PKG_SUFX};                         \
                   3331:                ${LN} -s ../All/${PKGNAME}${PKG_SUFX};                  \
1.784     tron     3332:        done
1.1252    jlam     3333: .endif
1.939     agc      3334:
                   3335: # shared code for replace and undo-replace
                   3336: _REPLACE=                                                              \
1.1531    agc      3337:        if [ -f ${_PKG_DBDIR}/$$oldpkgname/+REQUIRED_BY ]; then         \
1.1252    jlam     3338:                ${MV} ${_PKG_DBDIR}/$$oldpkgname/+REQUIRED_BY ${WRKDIR}/.req; \
1.939     agc      3339:        fi;                                                             \
1.1531    agc      3340:        ${MAKE} deinstall UPDATE_RUNNING=YES;                           \
1.939     agc      3341:        $$replace_action;                                               \
                   3342:        if [ -f ${WRKDIR}/.req ]; then                                  \
1.1252    jlam     3343:                ${MV} ${WRKDIR}/.req ${_PKG_DBDIR}/$$newpkgname/+REQUIRED_BY; \
                   3344:                for pkg in `${CAT} ${_PKG_DBDIR}/$$newpkgname/+REQUIRED_BY`; do \
1.939     agc      3345:                        ${SETENV} NEWPKGNAME=$$newpkgname               \
                   3346:                                ${AWK} '/^@pkgdep '$$oldpkgname'/ { print "@pkgdep " ENVIRON["NEWPKGNAME"]; next } { print }' \
1.1252    jlam     3347:                                < ${_PKG_DBDIR}/$$pkg/+CONTENTS > ${_PKG_DBDIR}/$$pkg/+CONTENTS.$$$$ && \
                   3348:                        ${MV} ${_PKG_DBDIR}/$$pkg/+CONTENTS.$$$$ ${_PKG_DBDIR}/$$pkg/+CONTENTS; \
1.939     agc      3349:                done;                                                   \
                   3350:        fi
                   3351:
                   3352: # replace a package in place - not for the faint-hearted
1.1222    jmmv     3353: .PHONY: real-su-replace
1.939     agc      3354: real-su-replace:
1.972     agc      3355:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.939     agc      3356:        ${ECHO_MSG} "*** WARNING - experimental target - data loss may be experienced ***"; \
1.955     agc      3357:        if [ -x ${LOCALBASE}/bin/pkg_tarup ]; then                      \
                   3358:                ${SETENV} PKGREPOSITORY=${WRKDIR} ${LOCALBASE}/bin/pkg_tarup ${PKGBASE}; \
                   3359:        else                                                            \
                   3360:                ${ECHO} "No ${LOCALBASE}/bin/pkg_tarup binary - can't pkg_tarup ${PKGBASE}"; \
                   3361:                exit 1;                                                 \
                   3362:        fi
1.972     agc      3363:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1281    jlam     3364:        oldpkgname=`${PKG_BEST_EXISTS} "${PKGWILDCARD}"`;               \
1.939     agc      3365:        newpkgname=${PKGNAME};                                          \
                   3366:        ${ECHO} "$$oldpkgname" > ${WRKDIR}/.replace;                    \
                   3367:        replace_action="${MAKE} install";                               \
                   3368:        ${_REPLACE}
                   3369:
                   3370: # undo the replacement of a package - not for the faint-hearted either
1.1222    jmmv     3371: .PHONY: real-su-undo-replace
1.939     agc      3372: real-su-undo-replace:
1.972     agc      3373:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.939     agc      3374:        if [ ! -f ${WRKDIR}/.replace ]; then                            \
                   3375:                ${ECHO_MSG} "No replacement to undo";                   \
                   3376:                exit 1;                                                 \
1.955     agc      3377:        fi
1.972     agc      3378:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.939     agc      3379:        ${ECHO_MSG} "*** WARNING - experimental target - data loss may be experienced ***"; \
                   3380:        oldpkgname=${PKGNAME};                                          \
                   3381:        newpkgname=`${CAT} ${WRKDIR}/.replace`;                         \
1.955     agc      3382:        replace_action="${SETENV} ${PKG_ADD} ${WRKDIR}/$$newpkgname${PKG_SUFX}"; \
1.939     agc      3383:        ${_REPLACE};                                                    \
                   3384:        ${RM} ${WRKDIR}/.replace
1.631     hubertf  3385:
1.251     hubertf  3386: # This is for the use of sites which store distfiles which others may
                   3387: # fetch - only fetch the distfile if it is allowed to be
                   3388: # re-distributed freely
1.1222    jmmv     3389: .PHONY: mirror-distfiles
1.251     hubertf  3390: mirror-distfiles:
1.547     hubertf  3391: .if !defined(NO_SRC_ON_FTP)
1.1481    seb      3392:        @${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} fetch NO_SKIP=yes
1.251     hubertf  3393: .endif
                   3394:
1.1       agc      3395:
                   3396: # Cleaning up
                   3397:
1.1222    jmmv     3398: .PHONY: clean
1.1       agc      3399: clean: pre-clean
1.1540.2.1  tv       3400: .if (${CLEANDEPENDS} != "NO") && (!empty(BUILD_DEPENDS) || !empty(DEPENDS))
1.452     hubertf  3401:        ${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} clean-depends
1.1540.2.1  tv       3402: .endif
1.416     agc      3403:        @${ECHO_MSG} "${_PKGSRC_IN}> Cleaning for ${PKGNAME}"
1.463     mycroft  3404:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   3405:        if [ -d ${WRKDIR} ]; then                                       \
1.221     agc      3406:                if [ -w ${WRKDIR} ]; then                               \
                   3407:                        ${RM} -rf ${WRKDIR};                            \
                   3408:                else                                                    \
1.416     agc      3409:                        ${ECHO_MSG} "${_PKGSRC_IN}> ${WRKDIR} not writable, skipping"; \
1.221     agc      3410:                fi;                                                     \
1.1       agc      3411:        fi
1.1540.2.1  tv       3412: .ifdef WRKOBJDIR
1.463     mycroft  3413:        -${_PKG_SILENT}${_PKG_DEBUG}                                    \
1.469     mycroft  3414:        ${RMDIR} ${BUILD_DIR} 2>/dev/null;                              \
1.463     mycroft  3415:        ${RM} -f ${WRKDIR_BASENAME}
1.1       agc      3416: .endif
                   3417:
1.446     hubertf  3418:
1.1222    jmmv     3419: .PHONY: clean-depends
1.446     hubertf  3420: clean-depends:
1.1540.2.1  tv       3421: .if !empty(BUILD_DEPENDS) || !empty(DEPENDS)
1.469     mycroft  3422:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1540.2.1  tv       3423:        for i in `${_SHOW_ALL_DEPENDS_DIRS_EXCL}`; do                   \
1.490     dmcmahil 3424:                cd ${.CURDIR}/../../$$i &&                              \
                   3425:                ${MAKE} ${MAKEFLAGS} CLEANDEPENDS=NO clean;             \
1.446     hubertf  3426:        done
1.172     tron     3427: .endif
                   3428:
1.446     hubertf  3429:
1.1222    jmmv     3430: .PHONY: cleandir
1.172     tron     3431: cleandir: clean
1.1       agc      3432:
1.446     hubertf  3433:
1.1222    jmmv     3434: .PHONY: distclean
1.1       agc      3435: distclean: pre-distclean clean
1.416     agc      3436:        ${_PKG_SILENT}${ECHO_MSG} "${_PKGSRC_IN}> Dist cleaning for ${PKGNAME}"
1.451     hubertf  3437:        ${_PKG_SILENT}${_PKG_DEBUG}if [ -d ${_DISTDIR} ]; then          \
1.221     agc      3438:                cd ${_DISTDIR} &&                                       \
                   3439:                ${TEST} -z "${DISTFILES}" || ${RM} -f ${DISTFILES};     \
                   3440:                ${TEST} -z "${PATCHFILES}" || ${RM} -f ${PATCHFILES};   \
1.451     hubertf  3441:        fi
1.1540.2.1  tv       3442: .if defined(DIST_SUBDIR) && exists(DIST_SUBDIR)
1.1159    grant    3443:        -${_PKG_SILENT}${_PKG_DEBUG}${RMDIR} ${_DISTDIR}
1.1       agc      3444: .endif
1.1540.2.1  tv       3445:        -${_PKG_SILENT}${_PKG_DEBUG}${RM} -f README.html
1.1       agc      3446:
1.933     fredb    3447: # Prints out a script to fetch all needed files (no checksumming).
1.1222    jmmv     3448: .PHONY: fetch-list
1.1       agc      3449: fetch-list:
1.933     fredb    3450:        @${ECHO} '#!/bin/sh'
                   3451:        @${ECHO} '#'
                   3452:        @${ECHO} '# This is an auto-generated script, the result of running'
1.1129    jlam     3453:        @${ECHO} '# `${MAKE} fetch-list'"'"' in directory "'"`${PWD_CMD}`"'"'
1.933     fredb    3454:        @${ECHO} '# on host "'"`${UNAME} -n`"'" on "'"`date`"'".'
                   3455:        @${ECHO} '#'
                   3456:        @${MAKE} ${MAKEFLAGS} fetch-list-recursive
1.48      hubertf  3457:
1.1222    jmmv     3458: .PHONY: fetch-list-recursive
1.48      hubertf  3459: fetch-list-recursive:
1.469     mycroft  3460:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.933     fredb    3461:        for dir in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs`; do     \
                   3462:                (cd ../../$$dir &&                                      \
                   3463:                ${MAKE} ${MAKEFLAGS} fetch-list-one-pkg                 \
                   3464:                | ${AWK} '                                              \
                   3465:                /^[^#]/ { FoundSomething = 1 }                          \
                   3466:                /^unsorted/ { gsub(/[[:space:]]+/, " \\\n\t") }         \
1.941     fredb    3467:                /^echo/ { gsub(/;[[:space:]]+/, "\n") }                 \
1.933     fredb    3468:                { block[line_c++] = $$0 }                               \
                   3469:                END { if (FoundSomething)                               \
                   3470:                        for (line = 0; line < line_c; line++)           \
                   3471:                                print block[line] }                     \
                   3472:                ')                                                      \
1.48      hubertf  3473:        done
                   3474:
1.1222    jmmv     3475: .PHONY: fetch-list-one-pkg
1.48      hubertf  3476: fetch-list-one-pkg:
1.1540.2.1  tv       3477: .if !empty(_ALLFILES)
1.933     fredb    3478:        @${ECHO}
                   3479:        @${ECHO} '#'
1.1129    jlam     3480:        @location=`${PWD_CMD} | ${AWK} -F / '{ print $$(NF-1) "/" $$NF }'`; \
1.933     fredb    3481:                ${ECHO} '# Need additional files for ${PKGNAME} ('$$location')...'
                   3482:        @${ECHO} '#'
                   3483:        @${MKDIR} ${_DISTDIR}
1.1540.2.1  tv       3484: .  for fetchfile in ${_ALLFILES}
                   3485: .    if defined(_FETCH_MESSAGE)
1.941     fredb    3486:        @(cd ${_DISTDIR};                                               \
                   3487:        if [ ! -f ${fetchfile:T} ]; then                                \
                   3488:                ${ECHO};                                                \
                   3489:                filesize=`${AWK} '                                      \
                   3490:                        /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
                   3491:                        ' ${DISTINFO_FILE}` || true;                    \
                   3492:                ${ECHO} '# Prompt user to get ${fetchfile} ('$${filesize-???}' bytes) manually:'; \
                   3493:                ${ECHO} '#';                                            \
                   3494:                ${ECHO} ${_FETCH_MESSAGE:Q};                            \
                   3495:        fi)
1.1540.2.1  tv       3496: .    elif defined(DYNAMIC_MASTER_SITES)
1.944     fredb    3497:        @(cd ${_DISTDIR};                                               \
                   3498:        if [ ! -f ${fetchfile:T} ]; then                                \
                   3499:                ${ECHO};                                                \
                   3500:                filesize=`${AWK} '                                      \
                   3501:                        /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
                   3502:                        ' ${DISTINFO_FILE}` || true;                    \
                   3503:                ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \
                   3504:                ${ECHO} '#';                                            \
                   3505:                ${ECHO} '${SH} -s ${fetchfile:T} <<"EOF" |(';           \
                   3506:                ${CAT} ${FILESDIR}/getsite.sh;                          \
                   3507:                ${ECHO} EOF;                                            \
                   3508:                ${ECHO} read unsorted_sites;                            \
                   3509:                ${ECHO} 'unsorted_sites="$${unsorted_sites} ${_MASTER_SITE_BACKUP}"'; \
                   3510:                ${ECHO} sites='"'${ORDERED_SITES:Q}'"';                 \
                   3511:                ${ECHO} "${MKDIR} ${_DISTDIR}";                         \
                   3512:                ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \
                   3513:                ${ECHO} 'for site in $$sites; do';                      \
                   3514:                ${ECHO} '       ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \
                   3515:                ${ECHO} '       ${ECHO} ${fetchfile} not fetched';      \
                   3516:                ${ECHO} done;                                           \
                   3517:                ${ECHO} ')';                                            \
                   3518:        fi)
1.1540.2.1  tv       3519: .    else
1.933     fredb    3520:        @(cd ${_DISTDIR};                                               \
1.941     fredb    3521:        if [ ! -f ${fetchfile:T} ]; then                                \
1.933     fredb    3522:                ${ECHO};                                                \
                   3523:                filesize=`${AWK} '                                      \
                   3524:                        /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
                   3525:                        ' ${DISTINFO_FILE}` || true;                    \
                   3526:                ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \
                   3527:                ${ECHO} '#';                                            \
1.1060    rh       3528:                ${ECHO} 'unsorted_sites="${SITES_${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"'; \
1.933     fredb    3529:                ${ECHO} sites='"'${ORDERED_SITES:Q}'"';                 \
                   3530:                ${ECHO} "${MKDIR} ${_DISTDIR}";                         \
                   3531:                ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \
                   3532:                ${ECHO} 'for site in $$sites; do';                      \
                   3533:                ${ECHO} '       ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \
                   3534:                ${ECHO} '       ${ECHO} ${fetchfile} not fetched';      \
                   3535:                ${ECHO} done;                                           \
                   3536:        fi)
1.1540.2.1  tv       3537: .    endif # defined(_FETCH_MESSAGE) || defined(DYNAMIC_MASTER_SITES)
                   3538: .  endfor
                   3539: .endif # !empty(_ALLFILES)
1.744     hubertf  3540:
                   3541: # List of sites carrying binary pkgs. Variables "rel" and "arch" are
                   3542: # replaced with OS release ("1.5", ...) and architecture ("mipsel", ...)
1.1082    hubertf  3543: BINPKG_SITES?= \
1.1412    grant    3544:        ftp://ftp.NetBSD.org/pub/NetBSD/packages/$${rel}/$${arch}
1.744     hubertf  3545:
1.1252    jlam     3546: # List of flags to pass to pkg_add(1) for bin-install:
                   3547:
1.744     hubertf  3548: BIN_INSTALL_FLAGS?=    # -v
1.1252    jlam     3549: .if ${PKG_INSTALLATION_TYPE} == "pkgviews"
1.1264    jlam     3550: PKG_ARGS_ADD=          -W ${LOCALBASE} -w ${DEFAULT_VIEW}
1.1252    jlam     3551: .endif
                   3552: _BIN_INSTALL_FLAGS=    ${BIN_INSTALL_FLAGS}
                   3553: _BIN_INSTALL_FLAGS+=   ${PKG_ARGS_ADD}
1.744     hubertf  3554:
1.499     hubertf  3555: # Install binary pkg, without strict uptodate-check first
1.1297    agc      3556: .PHONY: real-su-bin-install
                   3557: real-su-bin-install:
1.1275    jlam     3558:        @found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`";    \
1.744     hubertf  3559:        if [ "$$found" != "" ]; then                                    \
1.1331    grant    3560:                ${ECHO_MSG} "${_PKGSRC_IN}> $$found is already installed - perhaps an older version?"; \
1.744     hubertf  3561:                ${ECHO_MSG} "*** If so, you may wish to \`\`pkg_delete $$found'' and install"; \
                   3562:                ${ECHO_MSG} "*** this package again by \`\`${MAKE} bin-install'' to upgrade it properly."; \
                   3563:                ${SHCOMMENT} ${ECHO_MSG} "*** or use \`\`${MAKE} bin-update'' to upgrade it and all of its dependencies."; \
                   3564:                exit 1;                                                 \
                   3565:        fi
1.499     hubertf  3566:        @if [ -f ${PKGFILE} ] ; then                                    \
                   3567:                ${ECHO_MSG} "Installing from binary pkg ${PKGFILE}" ;   \
1.1252    jlam     3568:                ${PKG_ADD} ${_BIN_INSTALL_FLAGS} ${PKGFILE} ;           \
1.499     hubertf  3569:        else                                                            \
1.972     agc      3570:                rel=`${UNAME} -r | ${SED} 's@\.\([0-9]*\)[\._].*@\.\1@'`; \
1.926     hubertf  3571:                arch=${MACHINE_ARCH};                                   \
1.1082    hubertf  3572:                for site in ${BINPKG_SITES} ; do                        \
1.756     jlam     3573:                        ${ECHO} Trying `eval ${ECHO} $$site`/All ;      \
1.1252    jlam     3574:                        ${SHCOMMENT} ${ECHO} ${SETENV} PKG_PATH="`eval ${ECHO} $$site`/All" ${PKG_ADD} ${_BIN_INSTALL_FLAGS} ${PKGNAME}${PKG_SUFX} ; \
1.756     jlam     3575:                        if ${SETENV} PKG_PATH="`eval ${ECHO} $$site`/All" ${PKG_ADD} ${BIN_INSTALL_FLAGS} ${PKGNAME}${PKG_SUFX} ; then \
1.972     agc      3576:                                ${ECHO} "${PKGNAME} successfully installed."; \
1.744     hubertf  3577:                                break ;                                 \
                   3578:                        fi ;                                            \
                   3579:                done ;                                                  \
1.1048    hubertf  3580:                if ! ${PKG_INFO} -qe "${PKGNAME}" ; then                \
1.744     hubertf  3581:                        ${SHCOMMENT} Cycle through some FTP server here ;\
                   3582:                        ${ECHO_MSG} "Installing from source" ;          \
1.969     hubertf  3583:                        ${MAKE} ${MAKEFLAGS} package                    \
1.1437    xtraeme  3584:                                DEPENDS_TARGET=${DEPENDS_TARGET:Q} &&   \
1.744     hubertf  3585:                        ${MAKE} ${MAKEFLAGS} clean ;                    \
                   3586:                fi ; \
1.499     hubertf  3587:        fi
1.1297    agc      3588:
                   3589: .PHONY: bin-install
                   3590: bin-install:
                   3591:        @${ECHO_MSG} "${_PKGSRC_IN}> Binary install for ${PKGNAME}"
                   3592:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   3593:        realtarget="real-su-bin-install";                                       \
                   3594:        action="binary install";                                        \
                   3595:        ${_SU_TARGET}
                   3596:
1.499     hubertf  3597:
1.1       agc      3598:
                   3599: ################################################################
                   3600: # The special package-building targets
                   3601: # You probably won't need to touch these
                   3602: ################################################################
                   3603:
1.645     veego    3604: # Set to "html" by the README.html target to generate HTML code,
                   3605: # or to "svr4" to print SVR4 (Solaris, ...) short package names, from
                   3606: # SVR4_PKGNAME variable.
                   3607: # This variable is passed down via build-depends-list and run-depends-list
1.151     agc      3608: PACKAGE_NAME_TYPE?=    name
1.49      hubertf  3609:
1.1       agc      3610: # Nobody should want to override this unless PKGNAME is simply bogus.
1.1084    dmcmahil 3611: HTML_PKGNAME=<a href="../../${PKGPATH:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}/README.html">${PKGNAME:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}</A>
1.1       agc      3612:
1.1222    jmmv     3613: .PHONY: package-name
1.1       agc      3614: package-name:
1.1540.2.1  tv       3615: .if (${PACKAGE_NAME_TYPE} == "html")
1.470     mycroft  3616:        @${ECHO} '<a href="../../${PKGPATH:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}/README.html">${PKGNAME:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}</A>'
1.1540.2.1  tv       3617: .elif (${PACKAGE_NAME_TYPE} == "svr4")
1.645     veego    3618:        @${ECHO} ${SVR4_PKGNAME}
1.1540.2.1  tv       3619: .else
1.453     mycroft  3620:        @${ECHO} ${PKGNAME}
1.1540.2.1  tv       3621: .endif # PACKAGE_NAME_TYPE
1.49      hubertf  3622:
1.1222    jmmv     3623: .PHONY: make-readme-html-help
1.663     wiz      3624: make-readme-html-help:
1.669     wiz      3625:        @${ECHO} '${PKGNAME:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}</a>: <TD>'${COMMENT:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g:Q}
1.663     wiz      3626:
1.1       agc      3627: # Show (recursively) all the packages this package depends on.
1.414     hubertf  3628: # If PACKAGE_DEPENDS_WITH_PATTERNS is set, print as pattern (if possible)
1.399     hubertf  3629: PACKAGE_DEPENDS_WITH_PATTERNS?=true
1.1222    jmmv     3630: .PHONY: run-depends-list
1.532     hubertf  3631: run-depends-list:
1.1540.2.1  tv       3632: .for dep in ${DEPENDS}
1.747     agc      3633:        @pkg="${dep:C/:.*//}";                                          \
1.452     hubertf  3634:        dir="${dep:C/[^:]*://}";                                        \
1.472     hubertf  3635:        cd ${.CURDIR};                                                  \
1.482     hubertf  3636:        if ${PACKAGE_DEPENDS_WITH_PATTERNS}; then                       \
                   3637:                ${ECHO} "$$pkg";                                        \
                   3638:        else                                                            \
                   3639:                if cd $$dir 2>/dev/null; then                           \
1.458     hubertf  3640:                        ${MAKE} ${MAKEFLAGS} package-name PACKAGE_NAME_TYPE=${PACKAGE_NAME_TYPE}; \
1.482     hubertf  3641:                else                                                    \
                   3642:                        ${ECHO_MSG} "Warning: \"$$dir\" non-existent -- @pkgdep registration incomplete" >&2; \
1.221     agc      3643:                fi;                                                     \
1.458     hubertf  3644:        fi
1.1540.2.1  tv       3645: .endfor
1.1       agc      3646:
                   3647: # Build a package but don't check the package cookie
                   3648:
1.1222    jmmv     3649: .PHONY: repackage
1.1       agc      3650: repackage: pre-repackage package
                   3651:
1.1222    jmmv     3652: .PHONY: pre-repackage
1.1       agc      3653: pre-repackage:
1.1540.2.1  tv       3654:        ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${package_COOKIE}
1.1       agc      3655:
                   3656: # Build a package but don't check the cookie for installation, also don't
                   3657: # install package cookie
                   3658:
1.1222    jmmv     3659: .PHONY: package-noinstall
1.1       agc      3660: package-noinstall:
1.452     hubertf  3661:        ${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} PACKAGE_NOINSTALL=yes real-package
1.1       agc      3662:
                   3663: ################################################################
                   3664: # Dependency checking
                   3665: ################################################################
                   3666:
1.1540.2.1  tv       3667: .PHONY: install-depends
1.393     agc      3668: # Tells whether to halt execution if the object formats differ
                   3669: FATAL_OBJECT_FMT_SKEW?= yes
1.396     agc      3670: WARN_NO_OBJECT_FMT?= yes
1.393     agc      3671:
1.1540.2.1  tv       3672: install-depends:
                   3673: .for dep in ${DEPENDS} ${BUILD_DEPENDS}
1.701     hubertf  3674:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.454     mycroft  3675:        pkg="${dep:C/:.*//}";                                           \
                   3676:        dir="${dep:C/[^:]*://:C/:.*$//}";                               \
1.1275    jlam     3677:        found=`${PKG_BEST_EXISTS} "$$pkg" || ${TRUE}`;                  \
1.808     martin   3678:        if [ "X$$REBUILD_DOWNLEVEL_DEPENDS" != "X" ]; then              \
1.1540.2.1  tv       3679:                pkgname=`cd $$dir ; ${MAKE} ${MAKEFLAGS} show-var-noeval VARNAME=PKGNAME`; \
1.972     agc      3680:                if [ "X$$found" != "X" -a "X$$found" != "X$${pkgname}" ]; then \
                   3681:                        ${ECHO_MSG} "ignoring old installed package \"$$found\""; \
1.808     martin   3682:                        found="";                                       \
                   3683:                fi;                                                     \
                   3684:        fi;                                                             \
1.452     hubertf  3685:        if [ "$$found" != "" ]; then                                    \
1.1275    jlam     3686:                instobjfmt=`${PKG_INFO} -B "$$found" | ${AWK} -F'=[ \t]*' '/^OBJECT_FMT/ {print $$2; exit}'`; \
1.452     hubertf  3687:                if [ "$$instobjfmt" = "" ]; then                        \
1.396     agc      3688:                        if [ "X${WARN_NO_OBJECT_FMT}" != "Xno" ]; then  \
1.1275    jlam     3689:                                ${ECHO} "WARNING: Unknown object format for installed package $$found - continuing"; \
1.396     agc      3690:                        fi;                                             \
1.452     hubertf  3691:                elif [ "$$instobjfmt" != "${OBJECT_FMT}" ]; then        \
1.1275    jlam     3692:                        ${ECHO} "Installed package $$found is an $$instobjfmt package."; \
1.392     agc      3693:                        ${ECHO} "You are building an ${OBJECT_FMT} package, which will not inter-operate."; \
1.1275    jlam     3694:                        ${ECHO} "Please update the $$found package to ${OBJECT_FMT}"; \
1.537     fredb    3695:                        if [ "X${FATAL_OBJECT_FMT_SKEW}" != "Xno" ]; then \
1.393     agc      3696:                                exit 1;                                 \
                   3697:                        fi;                                             \
1.392     agc      3698:                fi;                                                     \
1.1279    jlam     3699:                ${ECHO_MSG} "${_PKGSRC_IN}> Required installed package $$pkg: $${found} found"; \
1.148     agc      3700:        else                                                            \
1.606     hubertf  3701:                ${ECHO_MSG} "${_PKGSRC_IN}> Required package $$pkg: NOT found"; \
1.1437    xtraeme  3702:                target=${DEPENDS_TARGET:Q};                             \
1.416     agc      3703:                ${ECHO_MSG} "${_PKGSRC_IN}> Verifying $$target for $$dir";      \
1.148     agc      3704:                if [ ! -d $$dir ]; then                                 \
1.415     agc      3705:                        ${ECHO_MSG} "=> No directory for $$dir.  Skipping.."; \
1.73      agc      3706:                else                                                    \
1.452     hubertf  3707:                        cd $$dir ;                                      \
1.1468    agc      3708:                        ${SETENV} _PKGSRC_DEPS=", ${PKGNAME}${_PKGSRC_DEPS}" ${MAKE} ${MAKEFLAGS} $$target PKGNAME_REQD=\'$$pkg\' || exit 1; \
1.416     agc      3709:                        ${ECHO_MSG} "${_PKGSRC_IN}> Returning to build of ${PKGNAME}"; \
1.275     tv       3710:                fi;                                                     \
                   3711:        fi
1.1540.2.1  tv       3712: .endfor        # DEPENDS
1.1       agc      3713:
1.1222    jmmv     3714: .PHONY: build-depends-list
1.532     hubertf  3715: build-depends-list:
1.1540.2.1  tv       3716:        @for dir in `${_SHOW_ALL_DEPENDS_DIRS_EXCL}`; do                \
1.937     wiz      3717:                (cd ../../$$dir &&                                      \
                   3718:                ${MAKE} ${MAKEFLAGS} package-name)                      \
                   3719:        done
1.1       agc      3720:
1.167     agc      3721: # If PACKAGES is set to the default (../../pkgsrc/packages), the current
                   3722: # ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory
                   3723: # structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed.
                   3724: # The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on
                   3725: # the target used to generate the README.html file.
1.1222    jmmv     3726: .PHONY: binpkg-list
1.86      hubertf  3727: binpkg-list:
1.1540.2.1  tv       3728:        @if ${TEST} -d ${PACKAGES}; then                                \
1.731     agc      3729:                cd ${PACKAGES};                                         \
                   3730:                case ${.CURDIR} in                                      \
                   3731:                */pkgsrc/packages)                                      \
                   3732:                        for pkg in ${PKGREPOSITORYSUBDIR}/${PKGWILDCARD}${PKG_SUFX} ; \
                   3733:                        do                                              \
                   3734:                                if [ -f "$$pkg" ] ; then                \
                   3735:                                        pkgname=`${ECHO} $$pkg | ${SED} 's@.*/@@'`; \
                   3736:                                        ${ECHO} "<TR><TD>${MACHINE_ARCH}:<TD><a href=\"${PKG_URL}/$$pkg\">$$pkgname</a><TD>(${OPSYS} ${OS_VERSION})"; \
                   3737:                                fi ;                                    \
                   3738:                        done ;                                          \
                   3739:                        ;;                                              \
                   3740:                *)                                                      \
                   3741:                        cd ${PACKAGES}/../..;                           \
                   3742:                        for i in [1-9].*/*; do                          \
                   3743:                                if cd ${PACKAGES}/../../$$i/${PKGREPOSITORYSUBDIR} 2>/dev/null; then \
                   3744:                                        for j in ${PKGWILDCARD}${PKG_SUFX}; \
                   3745:                                        do                              \
                   3746:                                                if [ -f "$$j" ]; then   \
                   3747:                                                        ${ECHO} $$i/$$j;\
                   3748:                                                fi;                     \
                   3749:                                        done;                           \
                   3750:                                fi;                                     \
                   3751:                        done | ${AWK} -F/ '                             \
                   3752:                                {                                       \
                   3753:                                        release = $$1;                  \
                   3754:                                        arch = $$2;                     \
                   3755:                                        pkg = $$3;                      \
1.1319    seb      3756:                                        gsub("\\.tgz","", pkg);         \
1.731     agc      3757:                                        if (arch != "m68k" && arch != "mipsel") { \
                   3758:                                                if (arch in urls)       \
                   3759:                                                        urls[arch "/" pkg "/" release] = "<a href=\"${PKG_URL}/" release "/" arch "/${PKGREPOSITORYSUBDIR}/" pkg "${PKG_SUFX}\">" pkg "</a>, " urls[arch]; \
                   3760:                                                else                    \
                   3761:                                                        urls[arch "/" pkg "/" release] = "<a href=\"${PKG_URL}/" release "/" arch "/${PKGREPOSITORYSUBDIR}/" pkg "${PKG_SUFX}\">" pkg "</a> "; \
                   3762:                                        }                               \
                   3763:                                }                                       \
                   3764:                                END {                                   \
                   3765:                                        for (av in urls) {              \
                   3766:                                                split(av, ava, "/");    \
                   3767:                                                arch=ava[1];            \
                   3768:                                                pkg=ava[2];             \
                   3769:                                                release=ava[3];         \
                   3770:                                                print "<TR><TD>" arch ":<TD>" urls[av] "<TD>(${OPSYS} " release ")"; \
                   3771:                                        }                               \
1.757     jlam     3772:                                }' | ${SORT}                            \
1.731     agc      3773:                        ;;                                              \
                   3774:                esac;                                                   \
                   3775:        fi
1.86      hubertf  3776:
1.1       agc      3777: ################################################################
                   3778: # Everything after here are internal targets and really
                   3779: # shouldn't be touched by anybody but the release engineers.
                   3780: ################################################################
                   3781:
                   3782: # This target generates an index entry suitable for aggregation into
                   3783: # a large index.  Format is:
                   3784: #
1.311     agc      3785: # distribution-name|package-path|installation-prefix|comment| \
1.1218    dmcmahil 3786: #  description-file|maintainer|categories|build deps|run deps|for arch| \
                   3787: #  not for opsys
1.1       agc      3788: #
1.1222    jmmv     3789: .PHONY: describe
1.1       agc      3790: describe:
1.1438    tv       3791:        @${ECHO_N} "${PKGNAME}|${.CURDIR}|";                            \
                   3792:        ${ECHO_N} "${PREFIX}|";                                         \
                   3793:        ${ECHO_N} ${COMMENT:Q};                                         \
1.221     agc      3794:        if [ -f ${DESCR_SRC} ]; then                                    \
1.1438    tv       3795:                ${ECHO_N} "|${DESCR_SRC}";                              \
1.221     agc      3796:        else                                                            \
1.1438    tv       3797:                ${ECHO_N} "|/dev/null";                                 \
1.221     agc      3798:        fi;                                                             \
1.1438    tv       3799:        ${ECHO_N} "|${MAINTAINER}|${CATEGORIES}|";                      \
1.275     tv       3800:        case "A${BUILD_DEPENDS}B${DEPENDS}C" in \
                   3801:                ABC) ;;                                                 \
1.1438    tv       3802:                *) cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u`;; \
1.221     agc      3803:        esac;                                                           \
1.1438    tv       3804:        ${ECHO_N} "|";                                                  \
                   3805:        if [ "${DEPENDS}" != "" ]; then                                 \
                   3806:                cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`; \
1.529     hubertf  3807:        fi;                                                             \
1.1438    tv       3808:        ${ECHO_N} "|";                                                  \
1.221     agc      3809:        if [ "${ONLY_FOR_ARCHS}" = "" ]; then                           \
1.1438    tv       3810:                ${ECHO_N} "any";                                        \
1.221     agc      3811:        else                                                            \
1.1438    tv       3812:                ${ECHO_N} "${ONLY_FOR_ARCHS}";                          \
1.221     agc      3813:        fi;                                                             \
1.1438    tv       3814:        ${ECHO_N} "|";                                                  \
1.221     agc      3815:        if [ "${NOT_FOR_OPSYS}" = "" ]; then                            \
1.1438    tv       3816:                ${ECHO_N} "any";                                        \
1.221     agc      3817:        else                                                            \
1.1438    tv       3818:                ${ECHO_N} "not ${NOT_FOR_OPSYS}";                       \
1.221     agc      3819:        fi;                                                             \
1.1       agc      3820:        ${ECHO} ""
                   3821:
1.167     agc      3822: # This target is used to generate README.html files
1.1412    grant    3823: FTP_PKG_URL_HOST?=     ftp://ftp.NetBSD.org
1.167     agc      3824: FTP_PKG_URL_DIR?=      /pub/NetBSD/packages
                   3825:
1.1540.2.1  tv       3826: .PHONY: readme readmes
                   3827: readme readmes:
1.452     hubertf  3828:        @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${FTP_PKG_URL_HOST}${FTP_PKG_URL_DIR}
1.167     agc      3829:
                   3830: # This target is used to generate README.html files, very like "readme"
                   3831: # However, a different target was used for ease of use.
                   3832: CDROM_PKG_URL_HOST?=   file://localhost
                   3833: CDROM_PKG_URL_DIR?=    /usr/pkgsrc/packages
                   3834:
1.1540.2.1  tv       3835: .PHONY: cdrom-readme
1.167     agc      3836: cdrom-readme:
1.452     hubertf  3837:        @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${CDROM_PKG_URL_HOST}${CDROM_PKG_URL_DIR}
1.1       agc      3838:
1.221     agc      3839: README_NAME=   ${TEMPLATES}/README.pkg
1.19      agc      3840:
1.124     agc      3841: # set up the correct license information as a sed expression
                   3842: .ifdef LICENSE
                   3843: SED_LICENSE_EXPR=       -e 's|%%LICENSE%%|<p>Please note that this package has a ${LICENSE} license.</p>|'
                   3844: .else
                   3845: SED_LICENSE_EXPR=       -e 's|%%LICENSE%%||'
                   3846: .endif
                   3847:
1.146     tsarna   3848: # set up the "more info URL" information as a sed expression
                   3849: .ifdef HOMEPAGE
1.150     frueauf  3850: SED_HOMEPAGE_EXPR=       -e 's|%%HOMEPAGE%%|<p>This package has a home page at <a HREF="${HOMEPAGE}">${HOMEPAGE}</a>.</p>|'
1.146     tsarna   3851: .else
                   3852: SED_HOMEPAGE_EXPR=       -e 's|%%HOMEPAGE%%||'
                   3853: .endif
                   3854:
1.1222    jmmv     3855: .PHONY: show-vulnerabilities-html
1.581     agc      3856: show-vulnerabilities-html:
1.919     agc      3857:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1257    tron     3858:        if [ -f ${PKGVULNDIR}/pkg-vulnerabilities ]; then                       \
1.920     agc      3859:                ${AWK} '/^${PKGBASE}[-<>=]+[0-9]/ { gsub("\<", "\\&lt;", $$1);  \
1.581     agc      3860:                         gsub("\>", "\\&gt;", $$1);                     \
1.1138    wiz      3861:                         printf("<LI><STRONG>%s has a %s exploit (see <a href=\"%s\">%s</a> for more details)</STRONG></LI>\n", $$1, $$2, $$3, $$3) }' \
1.1257    tron     3862:                        ${PKGVULNDIR}/pkg-vulnerabilities;                      \
1.581     agc      3863:        fi
1.577     agc      3864:
                   3865:
1.1123    dmcmahil 3866: # If PACKAGES is set to the default (../../packages), the current
                   3867: # ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory
                   3868: # structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed.
                   3869: # The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on
                   3870: # the target used to generate the README.html file.
1.298     hubertf  3871: .PHONY: README.html
                   3872: README.html: .PRECIOUS
1.1137    wiz      3873:        @${SETENV} AWK=${AWK} BMAKE=${MAKE} ../../mk/scripts/mkdatabase -f $@.tmp1
1.1471    grant    3874:        @if ${TEST} -d ${PACKAGES}; then                                        \
1.1123    dmcmahil 3875:                cd ${PACKAGES};                                         \
1.1129    jlam     3876:                case `${PWD_CMD}` in                                    \
1.1510    jlam     3877:                        ${PKGSRCDIR}/packages)                          \
1.1123    dmcmahil 3878:                                MULTIARCH=no;                           \
                   3879:                                ;;                                      \
                   3880:                        *)                                              \
                   3881:                                MULTIARCH=yes;                          \
                   3882:                                ;;                                      \
                   3883:                esac;                                                   \
                   3884:                cd ${.CURDIR} ;                                         \
                   3885:        fi;                                                             \
                   3886:        ${AWK} -f ../../mk/scripts/genreadme.awk \
                   3887:                builddependsfile=/dev/null \
                   3888:                dependsfile=/dev/null \
                   3889:                DISTDIR=${DISTDIR} \
                   3890:                MACHINE_ARCH=${MACHINE_ARCH} \
                   3891:                MULTIARCH=$$MULTIARCH \
                   3892:                OPSYS=${OPSYS} \
                   3893:                OS_VERSION=${OS_VERSION} \
                   3894:                PACKAGES=${PACKAGES} \
                   3895:                PKG_SUFX=${PKG_SUFX} \
                   3896:                PKG_URL=${PKG_URL} \
                   3897:                PKGREPOSITORYSUBDIR=${PKGREPOSITORYSUBDIR} \
                   3898:                PKGSRCDIR=${.CURDIR:C|/[^/]*/[^/]*$||} \
1.1124    lukem    3899:                TMPDIR=${TMPDIR:U/tmp} \
1.1123    dmcmahil 3900:                SINGLEPKG=${PKGPATH} \
1.1159    grant    3901:                $@.tmp1
1.1123    dmcmahil 3902:        @${RM} $@.tmp1
1.192     hubertf  3903:
1.1222    jmmv     3904: .PHONY: show-pkgtools-version
1.221     agc      3905: show-pkgtools-version:
1.382     abs      3906:        @${ECHO} ${PKGTOOLS_VERSION}
1.1       agc      3907:
1.1222    jmmv     3908: .PHONY: print-build-depends-list
1.532     hubertf  3909: print-build-depends-list:
1.1540.2.1  tv       3910: .if !empty(BUILD_DEPENDS) || !empty(DEPENDS)
1.1438    tv       3911:        @${ECHO_N} 'This package requires package(s) "'
                   3912:        @${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u`
1.1       agc      3913:        @${ECHO} '" to build.'
                   3914: .endif
                   3915:
1.1222    jmmv     3916: .PHONY: print-run-depends-list
1.532     hubertf  3917: print-run-depends-list:
1.1540.2.1  tv       3918: .if !empty(DEPENDS)
1.1438    tv       3919:        @${ECHO_N} 'This package requires package(s) "'
                   3920:        @${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`
1.1       agc      3921:        @${ECHO} '" to run.'
1.1083    dmcmahil 3922: .endif
                   3923:
1.1122    dmcmahil 3924: # This target is used by the mk/scripts/mkreadme script to generate
1.1083    dmcmahil 3925: # README.html files
1.1222    jmmv     3926: .PHONY: print-summary-data
1.1083    dmcmahil 3927: print-summary-data:
1.1159    grant    3928:        @${ECHO} "depends ${PKGPATH} ${DEPENDS}"
                   3929:        @${ECHO} "build_depends ${PKGPATH} ${BUILD_DEPENDS}"
                   3930:        @${ECHO} "conflicts ${PKGPATH} ${CONFLICTS}"
1.1083    dmcmahil 3931:        @${ECHO} "index ${PKGPATH} ${PKGNAME}"
                   3932:        @${ECHO} htmlname ${PKGPATH} ${HTML_PKGNAME:Q}
                   3933:        @${ECHO} homepage ${PKGPATH} ${HOMEPAGE:Q}
                   3934:        @${ECHO} wildcard ${PKGPATH} ${PKGWILDCARD:Q}
                   3935:        @${ECHO} comment ${PKGPATH} ${COMMENT:Q}
                   3936:        @${ECHO} license ${PKGPATH} ${LICENSE:Q}
1.1221    dmcmahil 3937:        @if [ "${ONLY_FOR_ARCHS}" = "" ]; then                          \
                   3938:                ${ECHO} "onlyfor ${PKGPATH} any";                       \
                   3939:        else                                                            \
                   3940:                ${ECHO} "onlyfor ${PKGPATH} ${ONLY_FOR_ARCHS}";         \
                   3941:        fi;
1.1285    dmcmahil 3942:        @if [ "${NOT_FOR_OPSYS}" = "" ]; then                           \
1.1221    dmcmahil 3943:                ${ECHO} "notfor ${PKGPATH} any";                        \
                   3944:        else                                                            \
                   3945:                ${ECHO} "notfor ${PKGPATH} not ${NOT_FOR_OPSYS}";       \
                   3946:        fi;
                   3947:        @${ECHO} "maintainer ${PKGPATH} ${MAINTAINER}"
                   3948:        @${ECHO} "categories ${PKGPATH} ${CATEGORIES}"
1.1223    dmcmahil 3949:        @if [ -f ${DESCR_SRC} ]; then                                           \
1.1510    jlam     3950:                ${ECHO}  "descr ${PKGPATH} ${DESCR_SRC:S;${PKGSRCDIR}/;;g}";    \
1.1223    dmcmahil 3951:        else                                                                    \
                   3952:                ${ECHO}  "descr ${PKGPATH} /dev/null";                          \
1.1221    dmcmahil 3953:        fi
                   3954:        @${ECHO} "prefix ${PKGPATH} ${PREFIX}"
1.1       agc      3955:
1.1540.2.1  tv       3956: .PHONY: show-license show-licence
1.635     agc      3957: show-license show-licence:
                   3958:        @if [ "${LICENSE}" != "" ]; then                                \
1.1510    jlam     3959:                if ${TEST} -f ${PKGSRCDIR}/licenses/${LICENSE}; then    \
1.1363    jschauma 3960:                        if [ "${PAGER}" != "" ]; then                   \
1.1510    jlam     3961:                                ${PAGER} ${PKGSRCDIR}/licenses/${LICENSE};\
1.1363    jschauma 3962:                        else                                            \
1.1510    jlam     3963:                                ${CAT} ${PKGSRCDIR}/licenses/${LICENSE};\
1.1363    jschauma 3964:                        fi                                              \
1.692     agc      3965:                else                                                    \
                   3966:                        ${ECHO} "Generic ${LICENSE} information not available"; \
                   3967:                        ${ECHO} "See the package description (pkg_info -d ${PKGNAME}) for more information."; \
                   3968:                fi                                                      \
1.635     agc      3969:        fi
1.373     hubertf  3970:
1.1159    grant    3971: # Stat all the files of one pkg and sum the sizes up.
                   3972: #
1.373     hubertf  3973: # XXX This is intended to be run before pkg_create is called, so the
1.577     agc      3974: # existence of ${PLIST} can be assumed.
1.1222    jmmv     3975: .PHONY: print-pkg-size-this
1.483     hubertf  3976: print-pkg-size-this:
1.485     hubertf  3977:        @${SHCOMMENT} "This pkg's files" ;                              \
1.424     hubertf  3978:        ${AWK} 'BEGIN { base = "${PREFIX}/" }                           \
                   3979:                /^@cwd/ { base = $$2 "/" }                              \
1.1328    seb      3980:                /^@/ { next }                                           \
                   3981:                { print base $$0 }'                                     \
1.488     hubertf  3982:                <${PLIST}                                               \
1.757     jlam     3983:        | ${SORT} -u                                                    \
1.1328    seb      3984:        | ${SED} -e "s/'/'\\\\''/g" -e "s/.*/'&'/"                      \
1.1383    jlam     3985:        | ${XARGS} -n 256 ${LS} -ld                                     \
1.577     agc      3986:        | ${AWK} 'BEGIN { print("0 "); }                                \
                   3987:                  { print($$5, " + "); }                                \
1.572     tron     3988:                  END { print("p"); }'                                  \
                   3989:        | ${DC}
1.386     hubertf  3990:
1.483     hubertf  3991: # Sizes of required pkgs (only)
1.1159    grant    3992: #
1.483     hubertf  3993: # XXX This is intended to be run before pkg_create is called, so the
1.1159    grant    3994: # dependencies are all installed.
1.1222    jmmv     3995: .PHONY: print-pkg-size-depends
1.483     hubertf  3996: print-pkg-size-depends:
1.1483    minskim  3997:        @pkglist=`${MAKE} ${MAKEFLAGS} run-depends-list`;               \
                   3998:        if [ "X$${pkglist}" != "X" ]; then                              \
                   3999:                ${ECHO} $${pkglist}                                     \
                   4000:                | ${XARGS} -n 1 ${SETENV} ${PKG_BEST_EXISTS}            \
                   4001:                | ${SORT} -u                                            \
                   4002:                | ${XARGS} -n 256 ${SETENV} ${PKG_INFO} -qs             \
                   4003:                | ${AWK} -- 'BEGIN { print("0 "); }                     \
                   4004:                        /^[0-9]+$$/ { print($$1, " + "); }              \
                   4005:                        END { print("p"); }'                            \
                   4006:                | ${DC};                                                \
                   4007:        else                                                            \
                   4008:                ${ECHO} "0";                                            \
                   4009:        fi
1.480     hubertf  4010:
                   4011:
                   4012: ###
                   4013: ### Automatic PLIST generation
                   4014: ###  - files & symlinks first
                   4015: ###  - @dirrm statements last
                   4016: ###  - empty directories are handled properly
                   4017: ###  - dirs from mtree files are excluded
1.1320    seb      4018: ###  - substitute for platform or package specifics substrings
1.480     hubertf  4019: ###
                   4020: ### Usage:
                   4021: ###  - make install
1.864     abs      4022: ###  - make print-PLIST | brain >PLIST
1.480     hubertf  4023: ###
                   4024:
1.1329    seb      4025: _PRINT_PLIST_AWK_SUBST={                                               \
                   4026:        gsub(/${OPSYS}/, "$${OPSYS}");                                  \
                   4027:        gsub(/${OS_VERSION:S/./\./g}/, "$${OS_VERSION}");               \
                   4028:        gsub(/${MACHINE_GNU_PLATFORM}/, "$${MACHINE_GNU_PLATFORM}");    \
                   4029:        gsub(/${MACHINE_ARCH}/, "$${MACHINE_ARCH}");                    \
                   4030:        gsub(/${MACHINE_GNU_ARCH}/, "$${MACHINE_GNU_ARCH}");
                   4031: .if !empty(LOWER_VENDOR)
                   4032: _PRINT_PLIST_AWK_SUBST+=       gsub(/${LOWER_VENDOR}/, "$${LOWER_VENDOR}");
                   4033: .endif
                   4034: _PRINT_PLIST_AWK_SUBST+=                                               \
                   4035:        gsub(/${LOWER_OS_VERSION:S/./\./g}/, "$${LOWER_OS_VERSION}");   \
                   4036:        gsub(/${LOWER_OPSYS}/, "$${LOWER_OPSYS}");                      \
                   4037:        gsub(/${PKGNAME_NOREV}/, "$${PKGNAME}");                        \
                   4038:        gsub(/${PKGVERSION:S/./\./g:C/nb[0-9]*$$//}/, "$${PKGVERSION}");\
                   4039:        gsub(/${PKGLOCALEDIR}\/locale/, "$${PKGLOCALEDIR}/locale");     \
                   4040: }
                   4041:
                   4042: _PRINT_PLIST_AWK_IGNORE=       ($$0 ~ /emul\/linux\/proc/)
                   4043: _PRINT_PLIST_AWK_IGNORE+=      || ($$0 ~ /^info\/dir$$/)
                   4044: .if defined(INFO_DIR) && empty(INFO_DIR:Minfo)
                   4045: _PRINT_PLIST_AWK_IGNORE+=      || ($$0 ~ /^${INFO_DIR:S|/|\\/|g}\/dir$$/)
                   4046: .endif
1.1333    seb      4047: .if !empty(INFO_FILES)
                   4048: .  for _f_ in ${INFO_FILES}
1.1407    seb      4049: _PRINT_PLIST_AWK_IGNORE+=      || ($$0 ~ /^${INFO_DIR:S|/|\\/|g}\/${_f_:S|+|\+|g}(-[0-9]+)?(\.gz)?$$/)
1.1333    seb      4050: .  endfor
                   4051: .endif
1.1025    hubertf  4052:
1.1320    seb      4053: # Common (system) directories not to generate @dirrm statements for
1.1329    seb      4054: # Reads MTREE_FILE and generate awk statements that will
1.1320    seb      4055: # sort out which directories NOT to include into the PLIST @dirrm list
1.480     hubertf  4056: .if make(print-PLIST)
1.1329    seb      4057: _PRINT_PLIST_COMMON_DIRS!=     ${AWK} 'BEGIN  {                        \
1.972     agc      4058:                        i=0;                                            \
                   4059:                        stack[i]="${PREFIX}" ;                          \
                   4060:                        cwd="";                                         \
                   4061:                }                                                       \
                   4062:                ! ( /^\// || /^\#/ || /^$$/ ) {                         \
                   4063:                        if ( $$1 == ".." ){                             \
                   4064:                                i=i-1;                                  \
                   4065:                                cwd = stack[i];                         \
                   4066:                        } else if ( $$1 == "." ){                       \
                   4067:                        } else {                                        \
                   4068:                                stack[i] = cwd ;                        \
                   4069:                                if ( i == 0 ){                          \
                   4070:                                        cwd = $$1 ;                     \
                   4071:                                } else {                                \
1.1237    seb      4072:                                        cwd = cwd "\\/" $$1 ;   \
1.972     agc      4073:                                }                                       \
1.1237    seb      4074:                                print "/^" cwd "$$$$/ { next; }";       \
1.972     agc      4075:                                i=i+1 ;                                 \
                   4076:                        }                                               \
                   4077:                }                                                       \
1.1237    seb      4078:                END { print "{ print $$$$0; }"; }                       \
1.480     hubertf  4079:        ' <${MTREE_FILE}
                   4080: .endif
                   4081:
                   4082:
                   4083: # scan $PREFIX for any files/dirs modified since the package was extracted
                   4084: # will emit "@exec mkdir"-statements for empty directories
                   4085: # XXX will fail for data files that were copied using tar (e.g. emacs)!
                   4086: # XXX should check $LOCALBASE and $X11BASE, and add @cwd statements
                   4087:
1.1496    jlam     4088: _PRINT_PLIST_FILES_CMD=        \
1.1540.2.1  tv       4089:        ${FIND} ${PREFIX}/. -xdev -newer ${extract_COOKIE} \! -type d -print
1.1496    jlam     4090: _PRINT_PLIST_DIRS_CMD= \
1.1540.2.1  tv       4091:        ${FIND} ${PREFIX}/. -xdev -newer ${extract_COOKIE} -type d -print
1.1520    tv       4092: _PRINT_LA_LIBNAMES=    ${SETENV} ECHO=${ECHO:Q} GREP=${GREP:Q} SORT=${SORT:Q} \
                   4093:                        ${SH} ${.CURDIR}/../../mk/scripts/print-la-libnames
1.1496    jlam     4094:
1.1521    tv       4095: .if !empty(LIBTOOLIZE_PLIST:M[yY][eE][sS])
1.1496    jlam     4096: _PRINT_PLIST_LIBTOOLIZE_FILTER?=                                       \
                   4097:        (                                                               \
                   4098:          if ${TEST} -d ${WRKDIR}; then                                 \
                   4099:                tmpdir="${WRKDIR}";                                     \
                   4100:          else                                                          \
                   4101:                tmpdir="$${TMPDIR-/tmp}";                               \
                   4102:          fi;                                                           \
                   4103:          fileslist="$$tmpdir/print.plist.files.$$$$";                  \
                   4104:          libslist="$$tmpdir/print.plist.libs.$$$$";                    \
                   4105:          while read file; do                                           \
                   4106:                case $$file in                                          \
                   4107:                *.la)                                                   \
1.1520    tv       4108:                        ${_PRINT_LA_LIBNAMES} $$file >> $$libslist;     \
1.1496    jlam     4109:                        ;;                                              \
                   4110:                esac;                                                   \
                   4111:                ${ECHO} "$$file";                                       \
                   4112:          done > $$fileslist;                                           \
1.1500    jlam     4113:          if ${TEST} -f "$$libslist"; then                              \
                   4114:                ${GREP} -hvxF "`${SORT} -u $$libslist`" "$$fileslist";  \
                   4115:          else                                                          \
                   4116:                ${CAT} "$$fileslist";                                   \
                   4117:          fi;                                                           \
1.1496    jlam     4118:          ${RM} -f "$$fileslist" "$$libslist";                          \
                   4119:        )
1.1521    tv       4120: .else
                   4121: _PRINT_PLIST_LIBTOOLIZE_FILTER?=       ${CAT}
                   4122: .endif
1.1496    jlam     4123:
1.1222    jmmv     4124: .PHONY: print-PLIST
1.480     hubertf  4125: print-PLIST:
1.809     wiz      4126:        ${_PKG_SILENT}${_PKG_DEBUG}\
                   4127:        ${ECHO} '@comment $$'NetBSD'$$'
                   4128:        ${_PKG_SILENT}${_PKG_DEBUG}\
1.1540.2.1  tv       4129:        shlib_type=`${_GET_SHLIB_TYPE}`;                                \
1.1342    grant    4130:        case $$shlib_type in                                            \
1.634     agc      4131:        "a.out")        genlinks=1 ;;                                   \
                   4132:        *)              genlinks=0 ;;                                   \
                   4133:        esac;                                                           \
1.1496    jlam     4134:        ${_PRINT_PLIST_FILES_CMD}                                       \
                   4135:         | ${_PRINT_PLIST_LIBTOOLIZE_FILTER}                            \
1.961     seb      4136:         | ${SORT}                                                      \
1.496     hubertf  4137:         | ${AWK} '                                                     \
1.1329    seb      4138:                { sub("${PREFIX}/\\./", ""); }                          \
                   4139:                ${_PRINT_PLIST_AWK_IGNORE} { next; }                    \
                   4140:                ${_PRINT_PLIST_AWK_SUBST}                               \
1.634     agc      4141:                /^@/ { print $$0; next }                                \
                   4142:                /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+\.[0-9]+$$/ {         \
                   4143:                        print $$0;                                      \
1.1319    seb      4144:                        sub("\\.[0-9]+$$", "");                         \
1.634     agc      4145:                        if ('$$genlinks') print $$0;                    \
1.1319    seb      4146:                        sub("\\.[0-9]+$$", "");                         \
1.634     agc      4147:                        if ('$$genlinks') print $$0;                    \
1.1319    seb      4148:                        sub("\\.[0-9]+$$", "");                         \
1.634     agc      4149:                        if ('$$genlinks') print $$0;                    \
                   4150:                        next;                                           \
                   4151:                }                                                       \
                   4152:                /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+$$/ {                 \
                   4153:                        print $$0;                                      \
1.1319    seb      4154:                        sub("\\.[0-9]+$$", "");                         \
1.634     agc      4155:                        if ('$$genlinks') print $$0;                    \
1.1319    seb      4156:                        sub("\\.[0-9]+$$", "");                         \
1.634     agc      4157:                        if ('$$genlinks') print $$0;                    \
                   4158:                        next;                                           \
                   4159:                }                                                       \
1.1440    jmmv     4160:                ${PRINT_PLIST_AWK}                                      \
1.1329    seb      4161:                { print $$0; }'
1.809     wiz      4162:        ${_PKG_SILENT}${_PKG_DEBUG}\
1.1496    jlam     4163:        for i in `${_PRINT_PLIST_DIRS_CMD}                              \
1.1329    seb      4164:                        | ${SORT} -r                                    \
                   4165:                        | ${AWK} '                                      \
                   4166:                                /emul\/linux\/proc/ { next; }           \
                   4167:                                /${PREFIX:S|/|\\/|g}\/\.$$/ { next; }   \
                   4168:                                { sub("${PREFIX}/\\\\./", ""); }        \
                   4169:                                ${_PRINT_PLIST_COMMON_DIRS}'` ;         \
1.496     hubertf  4170:        do                                                              \
1.757     jlam     4171:                if [ `${LS} -la ${PREFIX}/$$i | ${WC} -l` = 3 ]; then   \
1.1501    rh       4172:                        ${ECHO} @exec \$${MKDIR} %D/$$i | ${AWK} '      \
                   4173:                        ${PRINT_PLIST_AWK}                              \
                   4174:                        { print $$0; }' ;                               \
1.496     hubertf  4175:                fi ;                                                    \
1.1440    jmmv     4176:                ${ECHO} @dirrm $$i | ${AWK} '                           \
                   4177:                        ${PRINT_PLIST_AWK}                              \
                   4178:                        { print $$0; }' ;                               \
1.496     hubertf  4179:        done                                                            \
1.1329    seb      4180:        | ${AWK} '${_PRINT_PLIST_AWK_SUBST} { print $$0; }'
1.373     hubertf  4181:
1.1252    jlam     4182: # By default, all packages attempt to link into the views.
                   4183: .if ${PKG_INSTALLATION_TYPE} == "pkgviews"
                   4184: BUILD_VIEWS?=  yes
                   4185: .endif
                   4186:
1.1272    jlam     4187: # DEFAULT_VIEW.${PKGBASE}      default view for ${PKGBASE}
                   4188: # VIEWBASE                     base location of files at run-time
                   4189: #
                   4190: DEFAULT_VIEW.${PKGBASE}?=      ${DEFAULT_VIEW}
                   4191: .if ${PKG_INSTALLATION_TYPE} == "pkgviews"
                   4192: .  if empty(DEFAULT_VIEW.${PKGBASE}:M"")
                   4193: VIEWBASE=      ${LOCALBASE}/${DEFAULT_VIEW.${PKGBASE}}
                   4194: .  else
                   4195: VIEWBASE=      ${LOCALBASE}
                   4196: .  endif
                   4197: .elif ${PKG_INSTALLATION_TYPE} == "overwrite"
                   4198: VIEWBASE=      ${PREFIX}
                   4199: .endif
1.1305    jlam     4200: MAKE_ENV+=     VIEWBASE=${VIEWBASE}
1.1272    jlam     4201:
                   4202: PKGVIEWS+=     ${DEFAULT_VIEW.${PKGBASE}}
1.373     hubertf  4203:
1.1       agc      4204: # Fake installation of package so that user can pkg_delete it later.
1.311     agc      4205: # Also, make sure that an installed package is recognized correctly in
1.1252    jlam     4206: # accordance to the @pkgdep directive in the packing lists.
1.1       agc      4207:
1.1222    jmmv     4208: .PHONY: fake-pkg
1.654     wiz      4209: fake-pkg: ${PLIST} ${DESCR} ${MESSAGE}
1.972     agc      4210:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   4211:        if [ ! -f ${PLIST} -o ! -f ${DESCR} ]; then                     \
1.186     agc      4212:                ${ECHO} "** Missing package files for ${PKGNAME} - installation not recorded."; \
                   4213:                exit 1;                                                 \
                   4214:        fi
1.972     agc      4215:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1252    jlam     4216:        if [ ! -d ${_PKG_DBDIR} ]; then                                 \
                   4217:                ${RM} -f ${_PKG_DBDIR};                                 \
                   4218:                ${MKDIR} ${_PKG_DBDIR};                                 \
1.186     agc      4219:        fi
1.1540.2.1  tv       4220: .if defined(FORCE_PKG_REGISTER)
1.1287    jlam     4221:        ${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} delete ${PKGNAME}
1.1540.2.1  tv       4222: .  if ${PKG_INSTALLATION_TYPE} == "overwrite"
1.1252    jlam     4223:        ${_PKG_SILENT}${_PKG_DEBUG}${RM} -rf ${_PKG_DBDIR}/${PKGNAME}
1.789     hubertf  4224: .  endif
1.1540.2.1  tv       4225: .endif
1.221     agc      4226:        ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${BUILD_VERSION_FILE} ${BUILD_INFO_FILE}
1.373     hubertf  4227:        ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${SIZE_PKG_FILE} ${SIZE_ALL_FILE}
1.1127    agc      4228:        ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PRESERVE_FILE}
1.1540.2.1  tv       4229: .if defined(PKG_PRESERVE)
1.1127    agc      4230:        ${_PKG_SILENT}${_PKG_DEBUG}${DATE} > ${PRESERVE_FILE}
1.1540.2.1  tv       4231: .endif
1.932     agc      4232:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   4233:        files="";                                                       \
1.948     tron     4234:        for f in ${.CURDIR}/Makefile ${FILESDIR}/* ${PKGDIR}/*; do      \
1.945     agc      4235:                if [ -f "$$f" ]; then                                   \
                   4236:                        files="$$files \"$$f\"";                        \
                   4237:                fi;                                                     \
                   4238:        done;                                                           \
1.753     wiz      4239:        if [ -f ${DISTINFO_FILE} ]; then                                \
                   4240:                for f in `${AWK} 'NF == 4 && $$3 == "=" { gsub("[()]", "", $$2); print $$2 }' < ${DISTINFO_FILE}`; do \
1.662     agc      4241:                        if [ -f ${PATCHDIR}/$$f ]; then                 \
1.945     agc      4242:                                files="$$files \"${PATCHDIR}/$$f\"";    \
1.334     tron     4243:                        fi;                                             \
1.315     agc      4244:                done;                                                   \
                   4245:        fi;                                                             \
1.186     agc      4246:        if [ -d ${PATCHDIR} ]; then                                     \
                   4247:                for f in ${PATCHDIR}/patch-*; do                        \
                   4248:                        case $$f in                                     \
                   4249:                        *.orig|*.rej|*~) ;;                             \
1.315     agc      4250:                        ${PATCHDIR}/patch-local-*)                      \
1.945     agc      4251:                                files="$$files \"$$f\"" ;;              \
1.186     agc      4252:                        esac;                                           \
                   4253:                done;                                                   \
                   4254:        fi;                                                             \
1.1510    jlam     4255:        eval ${GREP} '\$$NetBSD' $$files | ${SED} -e 's|^${PKGSRCDIR}/||' > ${BUILD_VERSION_FILE}
1.1540.2.1  tv       4256: .for def in ${BUILD_DEFS} ${BUILD_DEFS_FIXED}
1.1193    grant    4257:        @${ECHO} ${def}=${${def}:Q} | ${SED} -e 's|^PATH=[^     ]*|PATH=...|' >> ${BUILD_INFO_FILE}
1.1540.2.1  tv       4258: .endfor
                   4259: .if defined(USE_LANGUAGES) && !empty(USE_LANGUAGES)
1.1294    grant    4260:        @${ECHO} "CC_VERSION=${CC_VERSION}" >> ${BUILD_INFO_FILE}
1.1540.2.1  tv       4261: .endif
                   4262: .if defined(USE_PERL5) && (${USE_PERL5} == "run")
1.1193    grant    4263:        @${ECHO} "PERL=`${PERL5} --version 2>/dev/null | ${GREP} 'This is perl'`" >> ${BUILD_INFO_FILE}
1.1540.2.1  tv       4264: .endif
                   4265: .if !empty(USE_GNU_TOOLS:Mmake)
1.1193    grant    4266:        @${ECHO} "GMAKE=`${GMAKE} --version | ${GREP} Make`" >> ${BUILD_INFO_FILE}
1.1540.2.1  tv       4267: .endif
                   4268: .if ${SHLIB_HANDLING} == "YES" && ${CHECK_SHLIBS} == "YES"
1.1219    agc      4269:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1244    grant    4270:        case "${LDD}" in                                                \
                   4271:        "")     ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'`;; \
                   4272:        *)      ldd="${LDD}";                                           \
                   4273:        esac;                                                           \
1.1219    agc      4274:        case "${OBJECT_FMT}" in                                         \
                   4275:        ELF)    bins=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^(bin|sbin|libexec)\// { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
                   4276:                libs=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^lib\/lib.*\.so\.[0-9]+$$/ { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
                   4277:                if ${TEST} "$$bins" != "" -o "$$libs" != ""; then       \
1.1220    agc      4278:                        requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} 'NF == 3 { print $$3 }' | ${SORT} -u`; \
1.1219    agc      4279:                fi;                                                     \
1.1529    tv       4280:                linklibs=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^[^@].*\.so\.[0-9\.]+$$/ { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
1.1518    tv       4281:                for i in $${linklibs}; do                               \
1.1527    tv       4282:                        if ${TEST} -r $$i -a ! -x $$i -a ! -h $$i; then \
1.1529    tv       4283:                                ${TEST} "${PKG_DEVELOPER:Uno}" = "no" || \
                   4284:                                        ${ECHO} "$$i: installed without execute permission; fixing (should use [BSD_]INSTALL_LIB)"; \
1.1518    tv       4285:                                ${CHMOD} +x $$i;                        \
                   4286:                        fi;                                             \
                   4287:                done;                                                   \
1.1244    grant    4288:                ;;                                                      \
                   4289:        Mach-O) bins=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^(bin|sbin|libexec)\// { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
                   4290:                libs=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^lib\/lib.*\.dylib/ { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
                   4291:                if ${TEST} "$$bins" != "" -o "$$libs" != ""; then       \
1.1334    grant    4292:                        requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} '/compatibility version/ { print $$1 }' | ${SORT} -u`; \
1.1244    grant    4293:                fi;                                                     \
                   4294:                ;;                                                      \
                   4295:        esac;                                                           \
                   4296:        for i in "" $$libs; do                                          \
                   4297:                ${TEST} "$$i" = "" && continue;                         \
                   4298:                ${ECHO} "PROVIDES=$$i" >> ${BUILD_INFO_FILE};           \
                   4299:        done;                                                           \
                   4300:        for req in "" $$requires; do                                    \
                   4301:                ${TEST} "$$req" = "" && continue;                       \
                   4302:                ${ECHO} "REQUIRES=$$req" >> ${BUILD_INFO_FILE};         \
                   4303:        done
1.1540.2.1  tv       4304: .endif
1.615     hubertf  4305:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.529     hubertf  4306:        ${ECHO} "_PKGTOOLS_VER=${PKGTOOLS_VERSION}" >> ${BUILD_INFO_FILE}
1.615     hubertf  4307:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.483     hubertf  4308:        size_this=`${MAKE} ${MAKEFLAGS} print-pkg-size-this`;           \
                   4309:        size_depends=`${MAKE} ${MAKEFLAGS} print-pkg-size-depends`;     \
1.488     hubertf  4310:        ${ECHO} $$size_this >${SIZE_PKG_FILE};                          \
1.575     tron     4311:        ${ECHO} $$size_this $$size_depends + p | ${DC} >${SIZE_ALL_FILE}
1.452     hubertf  4312:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1252    jlam     4313:        doit=yes;                                                       \
                   4314:        case ${PKG_INSTALLATION_TYPE} in                                \
                   4315:        overwrite)      if [ -d ${_PKG_DBDIR}/${PKGNAME} ]; then        \
                   4316:                                doit=no;                                \
                   4317:                        fi ;;                                           \
                   4318:        esac;                                                           \
                   4319:        case $$doit in                                                  \
                   4320:        yes)                                                            \
1.416     agc      4321:                ${ECHO_MSG} "${_PKGSRC_IN}> Registering installation for ${PKGNAME}"; \
1.1252    jlam     4322:                ${MKDIR} ${_PKG_DBDIR}/${PKGNAME};                      \
                   4323:                ${PKG_CREATE} ${PKG_ARGS_INSTALL} -O ${PKGFILE} > ${_PKG_DBDIR}/${PKGNAME}/+CONTENTS; \
                   4324:                ${CP} ${DESCR} ${_PKG_DBDIR}/${PKGNAME}/+DESC;  \
                   4325:                ${ECHO} ${COMMENT:Q} > ${_PKG_DBDIR}/${PKGNAME}/+COMMENT; \
                   4326:                ${CP} ${BUILD_VERSION_FILE} ${_PKG_DBDIR}/${PKGNAME}/+BUILD_VERSION; \
                   4327:                ${CP} ${BUILD_INFO_FILE} ${_PKG_DBDIR}/${PKGNAME}/+BUILD_INFO; \
1.1471    grant    4328:                if ${TEST} -f ${SIZE_PKG_FILE}; then                    \
1.1252    jlam     4329:                        ${CP} ${SIZE_PKG_FILE} ${_PKG_DBDIR}/${PKGNAME}/+SIZE_PKG; \
1.452     hubertf  4330:                fi ;                                                    \
1.1471    grant    4331:                if ${TEST} -f ${SIZE_ALL_FILE}; then                    \
1.1252    jlam     4332:                        ${CP} ${SIZE_ALL_FILE} ${_PKG_DBDIR}/${PKGNAME}/+SIZE_ALL; \
1.1127    agc      4333:                fi ;                                                    \
1.1471    grant    4334:                if ${TEST} -f ${PRESERVE_FILE}; then                    \
1.1252    jlam     4335:                        ${CP} ${PRESERVE_FILE} ${_PKG_DBDIR}/${PKGNAME}/+PRESERVE; \
1.452     hubertf  4336:                fi ;                                                    \
1.1252    jlam     4337:                if [ "${PKG_INSTALLATION_TYPE}" = "pkgviews" ]; then    \
                   4338:                        ${TOUCH} ${_PKG_DBDIR}/${PKGNAME}/+VIEWS;       \
                   4339:                fi ;                                                    \
1.166     agc      4340:                if [ -n "${INSTALL_FILE}" ]; then                       \
1.1471    grant    4341:                        if ${TEST} -f ${INSTALL_FILE}; then             \
1.1252    jlam     4342:                                ${CP} ${INSTALL_FILE} ${_PKG_DBDIR}/${PKGNAME}/+INSTALL; \
1.166     agc      4343:                        fi;                                             \
                   4344:                fi;                                                     \
                   4345:                if [ -n "${DEINSTALL_FILE}" ]; then                     \
1.1471    grant    4346:                        if ${TEST} -f ${DEINSTALL_FILE}; then           \
1.1252    jlam     4347:                                ${CP} ${DEINSTALL_FILE} ${_PKG_DBDIR}/${PKGNAME}/+DEINSTALL; \
1.166     agc      4348:                        fi;                                             \
                   4349:                fi;                                                     \
1.757     jlam     4350:                if [ -n "${MESSAGE}" ]; then                            \
1.1471    grant    4351:                        if ${TEST} -f ${MESSAGE}; then                  \
1.1252    jlam     4352:                                ${CP} ${MESSAGE} ${_PKG_DBDIR}/${PKGNAME}/+DISPLAY; \
1.166     agc      4353:                        fi;                                             \
                   4354:                fi;                                                     \
1.1435    tv       4355:                list="`${MAKE} ${MAKEFLAGS} run-depends-list ECHO_MSG=${TRUE} | ${SORT} -u`" ; \
1.1278    jlam     4356:                for realdep in `${ECHO} $$list | ${XARGS} -n 1 ${SETENV} ${PKG_BEST_EXISTS} | ${SORT} -u`; do \
1.380     hubertf  4357:                        if ${TEST} -z "$$realdep"; then                 \
1.568     wiz      4358:                                ${ECHO} "$$dep not installed - dependency NOT registered" ; \
1.1252    jlam     4359:                        elif [ -d ${_PKG_DBDIR}/$$realdep ]; then       \
1.1471    grant    4360:                                if ${TEST} ! -f ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY; then \
1.1252    jlam     4361:                                        ${TOUCH} ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY; \
1.221     agc      4362:                                fi;                                     \
                   4363:                                ${AWK} 'BEGIN { found = 0; }            \
                   4364:                                        $$0 == "${PKGNAME}" { found = 1; } \
                   4365:                                        { print $$0; }                  \
                   4366:                                        END { if (!found) { printf("%s\n", "${PKGNAME}"); }}' \
1.1252    jlam     4367:                                        < ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY > ${_PKG_DBDIR}/$$realdep/reqby.$$$$; \
                   4368:                                ${MV} ${_PKG_DBDIR}/$$realdep/reqby.$$$$ ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY; \
1.221     agc      4369:                                ${ECHO} "${PKGNAME} requires installed package $$realdep"; \
1.175     agc      4370:                        fi;                                             \
1.1252    jlam     4371:                done ;;                                                 \
                   4372:        esac
1.1540.2.1  tv       4373: .if (${PKG_INSTALLATION_TYPE} == "pkgviews") && \
1.1265    jlam     4374:       !empty(BUILD_VIEWS:M[yY][eE][sS])
1.1252    jlam     4375:        ${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} build-views
1.1540.2.1  tv       4376: .endif # pkgviews
1.1252    jlam     4377:
                   4378: .PHONY: build-views
                   4379: build-views: do-su-build-views
                   4380:
                   4381: .PHONY: do-su-build-views
                   4382: do-su-build-views:
                   4383:        @${ECHO_MSG} "${_PKGSRC_IN}> Building views for ${PKGNAME}"
                   4384:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   4385:        realtarget="real-su-build-views";                               \
                   4386:        action="build-views";                                           \
                   4387:        ${_SU_TARGET}
                   4388:
                   4389: .PHONY: real-su-build-views
                   4390: real-su-build-views:
1.1540.2.1  tv       4391: .if (${PKG_INSTALLATION_TYPE} == "pkgviews") && defined(PKGVIEWS)
1.1252    jlam     4392:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   4393:        ${MKDIR} ${LOCALBASE};                                          \
                   4394:        for v in ${PKGVIEWS}; do                                        \
                   4395:                case "$$v" in                                           \
                   4396:                "")     dbdir=${PKG_DBDIR}; viewname=standard ;;        \
                   4397:                *)      dbdir=${LOCALBASE}/$$v/.dbdir; viewname=$$v ;;  \
                   4398:                esac;                                                   \
                   4399:                ${ECHO} "=> Performing package view clash check for ${PKGNAME} in $$viewname view"; \
                   4400:                pkg=`${PKG_INFO_CMD} -K $$dbdir -e ${PKGBASE} || ${TRUE}`; \
                   4401:                case "$$pkg" in                                         \
                   4402:                "")     ;;                                              \
                   4403:                *)      ${ECHO} "*** ${PKGBASE} exists in $$viewname view - package $$pkg ***"; \
                   4404:                        ${ECHO} "*** Not hoisting ${PKGNAME} into $$viewname view"; \
                   4405:                        continue ;;                                     \
                   4406:                esac;                                                   \
                   4407:                ${ECHO} "=> Performing package view overwrite check for ${PKGNAME} in $$viewname view"; \
                   4408:                dups=`${SETENV} PLIST_IGNORE_FILES="${_PLIST_IGNORE_FILES}" ${PKG_VIEW} --view=$$v check ${PKGNAME} || ${TRUE}`; \
                   4409:                case "$$dups" in                                        \
                   4410:                "")     ;;                                              \
                   4411:                *)      ${ECHO} "***********************************************************"; \
                   4412:                        ${ECHO} "**** The following symbolic links will be overwritten *****"; \
                   4413:                        for f in $$dups; do                             \
                   4414:                                ${LS} -l ${LOCALBASE}/$$v/$$f;          \
                   4415:                        done;                                           \
                   4416:                        ${ECHO} "***********************************************************"; \
                   4417:                        ;;                                              \
                   4418:                esac;                                                   \
                   4419:                ${ECHO} "=> Linking package into $$viewname view";      \
                   4420:                ${SETENV} PLIST_IGNORE_FILES="${_PLIST_IGNORE_FILES}" ${PKG_VIEW} --view=$$v add ${PKGNAME}; \
                   4421:        done
                   4422: .endif
                   4423:
                   4424: .PHONY: remove-views
                   4425: remove-views: do-su-remove-views
                   4426:
                   4427: .PHONY: do-su-remove-views
                   4428: do-su-remove-views:
                   4429:        @${ECHO_MSG} "${_PKGSRC_IN}> Removing ${PKGNAME} from views"
                   4430:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   4431:        realtarget="real-su-remove-views";                              \
                   4432:        action="remove-views";                                          \
                   4433:        ${_SU_TARGET}
                   4434:
                   4435: .PHONY: real-su-remove-views
                   4436: real-su-remove-views:
1.1540.2.1  tv       4437: .if (${PKG_INSTALLATION_TYPE} == "pkgviews") && defined(PKGVIEWS)
1.1252    jlam     4438:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
                   4439:        for v in ${PKGVIEWS}; do                                        \
                   4440:                case "$$v" in                                           \
                   4441:                "")     dbdir=${PKG_DBDIR}; viewname=standard ;;        \
                   4442:                *)      dbdir=${LOCALBASE}/$$v/.dbdir; viewname=$$v ;;  \
                   4443:                esac;                                                   \
                   4444:                ${ECHO} "=> Removing package from $$viewname view";     \
                   4445:                ${SETENV} PLIST_IGNORE_FILES="${_PLIST_IGNORE_FILES}" ${PKG_VIEW} --view=$$v delete ${PKGNAME}; \
                   4446:        done
1.1       agc      4447: .endif
                   4448:
1.311     agc      4449: # Depend is generally meaningless for arbitrary packages, but if someone wants
1.1       agc      4450: # one they can override this.  This is just to catch people who've gotten into
1.66      hubertf  4451: # the habit of typing `${MAKE} depend all install' as a matter of course.
1.1       agc      4452: #
1.1222    jmmv     4453: .PHONY: depend
1.1540.2.1  tv       4454: depend: .OPTIONAL
1.1       agc      4455:
                   4456: # Same goes for tags
1.1222    jmmv     4457: .PHONY: tags
1.1540.2.1  tv       4458: tags: .OPTIONAL
1.286     agc      4459:
1.289     agc      4460: # if automatic manual page compression is done by the package according
                   4461: # to MANZ's value, set MANCOMPRESSED if MANZ is set
1.286     agc      4462: .if defined(MANCOMPRESSED_IF_MANZ) && defined(MANZ)
                   4463: MANCOMPRESSED= yes
1.698     fredb    4464: MAKE_ENV+=     MANZ="${MANZ}"
1.5       hubertf  4465: .endif
                   4466:
1.1540.2.1  tv       4467: # generate ${PLIST} from ${PLIST_SRC} by:
1.1321    seb      4468: # - substituting for PLIST_SUBST entries
                   4469: # - fixing list of man-pages according to MANZ, MANINSTALL.
1.624     hubertf  4470: # - adding symlinks for shared libs (ELF) or ldconfig calls (a.out).
1.10      hubertf  4471:
1.1321    seb      4472: # plist awk pattern-action statement to handle MANINSTALL
                   4473: _PLIST_AWK_MANINSTALL=                                                 \
                   4474: {                                                                      \
                   4475:        if (!"${MANINSTALL:Mmaninstall}" &&                             \
                   4476:                match($$0, "^([^/]*/)*man/([^/]*/)?man[1-9ln]") ) {     \
                   4477:                        next;                                           \
1.226     agc      4478:        }                                                               \
1.1321    seb      4479:        if (!"${MANINSTALL:Mcatinstall}" &&                             \
                   4480:                match($$0, "^([^/]*/)*man/([^/]*/)?cat[1-9ln]") ) {     \
                   4481:                        next;                                           \
1.226     agc      4482:        }                                                               \
1.1321    seb      4483: }
1.938     seb      4484:
1.1321    seb      4485: # plist awk pattern-action statement to strip '.gz' from man
                   4486: # entries
                   4487: _PLIST_AWK_STRIP_MANZ=                                                       \
                   4488: /^([^\/]*\/)*man\/([^\/]*\/)?(man[1-9ln]\/.*[1-9ln]|cat[1-9ln]\/.*0)\.gz$$/ { \
                   4489:        $$0 = substr($$0, 1, length($$0) - 3);                                \
                   4490: }
                   4491:
                   4492: # plist awk pattern-action statement to add '.gz' to man entries
                   4493: _PLIST_AWK_ADD_MANZ=                                                     \
                   4494: /^([^\/]*\/)*man\/([^\/]*\/)?(man[1-9ln]\/.*[1-9ln]|cat[1-9ln]\/.*0)$$/ { \
                   4495:        $$0 = $$0 ".gz";                                                  \
                   4496: }
1.1424    danw     4497:
1.1321    seb      4498: # plist awk pattern-action statement to handle PLIST_SUBST substitutions
                   4499: # BEWARE: the awk script quote is closed and reopened around the
                   4500: # string argument of gsub() calls so historic quoting semantic of
                   4501: # PLIST_SUBST is preserved.
                   4502: # XXX `_str_quote_{start,end}_' is a gross hack to work around weird word
                   4503: # splitting.
                   4504: _PLIST_AWK_SUBST= { ${PLIST_SUBST:S|=|\\}/,_str_quote_start_|:S|$|_str_quote_end_);|:S|^|gsub(/\\\$\\{|:S|_str_quote_start_|"'|g:S|_str_quote_end_|'"|g} }
                   4505:
                   4506: # plist awk pattern-action statement to rewrite "imake installed" catman pages
                   4507: # as plain manpages.
                   4508: _PLIST_AWK_IMAKE_MAN=                                                  \
                   4509: /^([^\/]*\/)*man\/([^\/]*\/)?cat[1-9ln]\/.*0$$/ {                      \
                   4510:        n = match($$0, "/cat[1-9ln]");                                  \
                   4511:        sect = sprintf(".%s", substr($$0, n + 4, 1));                   \
                   4512:        sub("/cat", "/man");                                            \
                   4513:        sub("\\.0$$", sect);                                            \
                   4514: }
                   4515:
1.1333    seb      4516: # plist awk pattern-action statement to handle info files:
1.1407    seb      4517: # generate list of files matching
                   4518: # ${PREFIX}/${INFO_DIR}/filename(-[0-9]+)?(.gz)?
1.1333    seb      4519: # for `filename' being each word of INFO_FILES in turn.
                   4520: # Notes:
                   4521: # - first the filenames matching ${PREFIX}/${INFO_DIR}/filename*
                   4522: # are generated with ls then they are filtered by the exact pattern.
                   4523: # - ${PREFIX}/${INFO_DIR}/filename is single quoted and single quote
                   4524: # escaped
                   4525: # XXX When all info file entries will be removed from PLIST files
                   4526: # the non-BEGIN pattern-action statements generated below will be retired.
                   4527: _PLIST_AWK_INFO=
1.1346    jlam     4528: .if ${PLIST_TYPE} == "static"
                   4529: .  if !empty(INFO_FILES)
                   4530: .    for _f_ in ${INFO_FILES}
1.1333    seb      4531: _PLIST_AWK_INFO+=                                                      \
                   4532: BEGIN {                                                                        \
                   4533:        cmd="${_f_}"; gsub("'\''", "\\'\''", cmd);                      \
                   4534:        sub("^", "${LS} '\''${PREFIX}/${INFO_DIR}/", cmd);              \
                   4535:        sub("$$", "'\''*", cmd);                                        \
                   4536:        while ((cmd | getline l) > 0) {                                 \
1.1407    seb      4537:                if (match(l, ".*/${_f_:S|+|\\\+|g}(-[0-9]+)?(\\.gz)?$$")) { \
1.1333    seb      4538:                        sub("^${PREFIX}/", "", l);                      \
                   4539:                        print l;                                        \
                   4540:                }                                                       \
                   4541:        }                                                               \
                   4542:        close(cmd);                                                     \
                   4543: }                                                                      \
                   4544: /^${INFO_DIR:S|/|\\/|g}\/${_f_}(-[0-9]+)?$$/ { next; }
1.1346    jlam     4545: .    endfor
                   4546: .  endif
1.1333    seb      4547: .endif
                   4548:
1.1496    jlam     4549: # plist awk pattern-action statement to expand libtool archives into
                   4550: # shared and/or static libraries.
                   4551: #
                   4552: .if ${PLIST_TYPE} == "dynamic"
                   4553: _PLIST_AWK_LIBTOOL?=   # empty
1.1522    tv       4554: .elif empty(LIBTOOLIZE_PLIST:M[yY][eE][sS])
                   4555: BROKEN+=               "USE_LIBTOOL requires LIBTOOLIZE_PLIST=yes for proper PLIST generation"
1.1496    jlam     4556: .else
                   4557: _PLIST_AWK_LIBTOOL?=                                                   \
1.1514    tv       4558: /^[^@].*\.la$$/ {                                                      \
1.1520    tv       4559:        system("cd ${PREFIX} && ${_PRINT_LA_LIBNAMES} " $$0)            \
1.1496    jlam     4560: }
                   4561: .endif
                   4562:
1.1321    seb      4563: # _PLIST_AWK_SCRIPT hold the complete awk script for plist target.
                   4564: #
                   4565: _PLIST_AWK_SCRIPT=     '
                   4566: # Do the substitutions
                   4567: # See comments above about _PLIST_AWK_SUBST: it contains single quotes!
                   4568: # So _PLIST_AWK_SCRIPT is intended to be single quoted.
                   4569: _PLIST_AWK_SCRIPT+=    ${_PLIST_AWK_SUBST}
1.1389    jlam     4570: # Generated entries for info files
                   4571: .if !empty(INFO_FILES)
1.1496    jlam     4572: _PLIST_AWK_SCRIPT+=    ${_PLIST_AWK_INFO}
1.1389    jlam     4573: .endif
1.1496    jlam     4574: # Expand libtool archives
                   4575: _PLIST_AWK_SCRIPT+=    ${_PLIST_AWK_LIBTOOL}
1.1321    seb      4576: # Strip the '.gz' suffixes on man entries
                   4577: _PLIST_AWK_SCRIPT+=    ${_PLIST_AWK_STRIP_MANZ}
                   4578: # Deal with MANINSTALL and man entries
                   4579: _PLIST_AWK_SCRIPT+=    ${_PLIST_AWK_MANINSTALL}
                   4580: # Deal with "imake installed" catman pages
1.858     agc      4581: .if defined(USE_IMAKE) && ${_PREFORMATTED_MAN_DIR} == "man"
1.1321    seb      4582: _PLIST_AWK_SCRIPT+=    ${_PLIST_AWK_IMAKE_MAN}
                   4583: .endif
                   4584: # Add '.gz' suffixes on man entries if needed
                   4585: .if defined(MANZ)
                   4586: _PLIST_AWK_SCRIPT+=    ${_PLIST_AWK_ADD_MANZ}
                   4587: .endif
                   4588: # Print the entry
                   4589: _PLIST_AWK_SCRIPT+=    { print $$0; }
                   4590: #
                   4591: _PLIST_AWK_SCRIPT+=    '
1.226     agc      4592:
1.962     jlam     4593: # GENERATE_PLIST is a sequence of commands, terminating in a semicolon,
                   4594: #      that outputs contents for a PLIST to stdout and is appended to
1.1540.2.1  tv       4595: #      the contents of ${PLIST_SRC}.
1.962     jlam     4596: #
                   4597: GENERATE_PLIST?=       ${TRUE};
1.1252    jlam     4598: .if ${PLIST_TYPE} == "dynamic"
                   4599: _PLIST_IGNORE_CMD=                                                     \
                   4600:        ( while read i; do                                              \
                   4601:                ignore=no;                                              \
                   4602:                for p in ${_PLIST_IGNORE_FILES}; do                     \
                   4603:                        case "$$i" in                                   \
                   4604:                        $$p)    ignore=yes; break ;;                    \
                   4605:                        esac;                                           \
                   4606:                done;                                                   \
                   4607:                [ "$$ignore" = "yes" ] || ${ECHO} "$$i";                \
                   4608:          done )
                   4609: _GENERATE_PLIST=                                                       \
                   4610:        ${FIND} ${PREFIX} \! -type d -print | ${SORT} |                 \
                   4611:                ${SED} -e "s|^${PREFIX}/||" |                           \
                   4612:                ${_PLIST_IGNORE_CMD};                                   \
                   4613:        ${FIND} ${PREFIX} -type d -print | ${SORT} -r |                 \
                   4614:                ${GREP} -v "^${PREFIX}$$" |                             \
                   4615:                ${_PLIST_IGNORE_CMD} |                                  \
                   4616:                ${SED} -e "s|^${PREFIX}/|@unexec ${RMDIR} -p %D/|"      \
                   4617:                       -e "s,$$, 2>/dev/null || ${TRUE},";
                   4618: .else
1.1540.2.1  tv       4619: _GENERATE_PLIST=       ${CAT} ${PLIST_SRC}; ${GENERATE_PLIST}
1.1252    jlam     4620: .endif
1.962     jlam     4621:
1.1540.2.1  tv       4622: .if ${PLIST_TYPE} == "static"
                   4623: ${PLIST}: ${PLIST_SRC}
                   4624: .endif
                   4625: ${PLIST}:
1.226     agc      4626:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
1.1321    seb      4627:        { ${_GENERATE_PLIST} } | ${AWK} ${_PLIST_AWK_SCRIPT}            \
1.631     hubertf  4628:                > ${PLIST};                                             \
                   4629:          ${MAKE} ${MAKEFLAGS} do-shlib-handling                        \
1.1252    jlam     4630:                SHLIB_PLIST_MODE=1
1.149     tsarna   4631:
                   4632: # generate ${DESCR} from ${DESCR_SRC} by:
                   4633: # - Appending the homepage URL, if any
                   4634:
1.1222    jmmv     4635: .PHONY: descr
1.452     hubertf  4636: descr: ${DESCR}
1.149     tsarna   4637: ${DESCR}: ${DESCR_SRC}
1.452     hubertf  4638:        @${CAT} ${DESCR_SRC}     >${DESCR}
1.149     tsarna   4639: .if defined(HOMEPAGE)
1.452     hubertf  4640:        @\
                   4641:        ${ECHO}                 >>${DESCR} ; \
                   4642:        ${ECHO} "Homepage:"     >>${DESCR} ; \
                   4643:        ${ECHO} '${HOMEPAGE}'   >>${DESCR}
1.521     hubertf  4644: .endif
1.1248    jlam     4645:
                   4646: .include "../../mk/subst.mk"
1.521     hubertf  4647:
                   4648: #
                   4649: # For bulk build targets (bulk-install, bulk-package), the
1.529     hubertf  4650: # BATCH variable must be set in /etc/mk.conf:
1.521     hubertf  4651: #
                   4652: .if defined(BATCH)
1.789     hubertf  4653: .  include "../../mk/bulk/bsd.bulk-pkg.mk"
1.149     tsarna   4654: .endif

CVSweb <webmaster@jp.NetBSD.org>