Annotation of pkgsrc/mk/bsd.pkg.mk, Revision 1.1540.2.24
1.1540.2.17 tv 1: # $NetBSD$
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.1540.2.5 tv 7: # Please see the pkgsrc/doc/guide manual for details on the
1.1540.2.1 tv 8: # variables used in this make file template.
1.1 agc 9: #
1.1540.2.11 tv 10: # XXX tv: rev 1.1554 is not merged yet (phase "error handlers")
11: #
1.1540.2.1 tv 12:
13: ############################################################################
14: # Include any preferences, if not already included, and common definitions
15: ############################################################################
1.197 hubertf 16:
1.272 tv 17: .include "../../mk/bsd.prefs.mk"
1.1537 jlam 18: .include "../../mk/bsd.hacks.mk"
19:
1.1540.2.1 tv 20: # _PKG_PHASES_WRKDIR is an ordered list of phases which require ${WRKDIR}
21: # to exist. _PKG_PHASES_ALL also includes the phases from before ${WRKDIR}
22: # is created. These macros are used below mainly in .for loops.
23:
24: _PKG_PHASES_ALL= fetch checksum ${_PKG_PHASES_WRKDIR}
25: _PKG_PHASES_WRKDIR= depends extract patch tools wrapper \
26: configure build test install package
27:
28: ############################################################################
29: # Transform package Makefile variables and set defaults
30: ############################################################################
1.567 fredb 31:
1.1540.2.14 tv 32: CHECK_FILES?= NO # run check-files after install
1.1540.2.13 tv 33: CHECK_FILES_STRICT?= NO # make check-files very strict on errors
1.1540.2.1 tv 34: CHECK_SHLIBS?= YES # run check-shlibs after install
1.272 tv 35: CLEANDEPENDS?= NO
1.317 hubertf 36: DEINSTALLDEPENDS?= NO # add -R to pkg_delete
1.1540.2.1 tv 37: MKCRYPTO?= YES # build crypto packages by default
38: NOCLEAN?= NO # don't clean up after update
1.327 rh 39: REINSTALL?= NO # reinstall upon update
1.636 jlam 40: SHLIB_HANDLING?= YES # do automatic shared lib handling
1.1540.2.1 tv 41:
1.1540.2.5 tv 42: ##### Variant spellings
1.1540.2.1 tv 43:
44: .if defined(LICENCE) && !defined(LICENSE)
45: LICENSE= ${LICENCE}
46: .endif
47: .if defined(ACCEPTABLE_LICENCES) && !defined(ACCEPTABLE_LICENSES)
48: ACCEPTABLE_LICENSES= ${ACCEPTABLE_LICENCES}
49: .endif
50:
1.1540.2.5 tv 51: ##### PKGBASE, PKGNAME[_NOREV], PKGVERSION
1.5 hubertf 52:
1.460 mycroft 53: PKGBASE?= ${PKGNAME:C/-[^-]*$//}
54: PKGVERSION?= ${PKGNAME:C/^.*-//}
1.1498 jlam 55: .if defined(PKGREVISION) && !empty(PKGREVISION) && (${PKGREVISION} != "0")
56: . if defined(PKGNAME)
57: PKGNAME_NOREV:= ${PKGNAME}
58: PKGNAME:= ${PKGNAME}nb${PKGREVISION}
59: . else
60: PKGNAME?= ${DISTNAME}nb${PKGREVISION}
61: PKGNAME_NOREV= ${DISTNAME}
62: . endif
63: .else
64: PKGNAME?= ${DISTNAME}
65: PKGNAME_NOREV= ${PKGNAME}
66: .endif
1.459 mycroft 67:
1.1540.2.5 tv 68: ##### PLIST
1.1540.2.1 tv 69:
70: .if ${PKG_INSTALLATION_TYPE} == "pkgviews"
71: PLIST_TYPE?= dynamic
72: .endif
73: PLIST_TYPE?= static
74:
75: .if !defined(PLIST_SRC)
76: . if exists(${PKGDIR}/PLIST.common)
77: PLIST_SRC+= ${PKGDIR}/PLIST.common
78: . endif
79: . if exists(${PKGDIR}/PLIST.${OPSYS})
80: PLIST_SRC+= ${PKGDIR}/PLIST.${OPSYS}
1.1540.2.24! tv 81: . elif exists(${PKGDIR}/PLIST.${MACHINE_ARCH:C/i[3-6]86/i386/g})
! 82: PLIST_SRC+= ${PKGDIR}/PLIST.${MACHINE_ARCH:C/i[3-6]86/i386/g}
! 83: . elif exists(${PKGDIR}/PLIST.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g})
! 84: PLIST_SRC+= ${PKGDIR}/PLIST.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g}
1.1540.2.1 tv 85: . elif exists(${PKGDIR}/PLIST)
86: PLIST_SRC+= ${PKGDIR}/PLIST
87: . endif
88: . if exists(${PKGDIR}/PLIST.common_end)
89: PLIST_SRC+= ${PKGDIR}/PLIST.common_end
90: . endif
1.1540.2.22 tv 91: .endif # !PLIST_SRC
1.851 jlam 92:
1.1540.2.5 tv 93: ##### Others
1.1540.2.1 tv 94:
95: _DISTDIR?= ${DISTDIR}/${DIST_SUBDIR}
96: BUILD_DEFS?= # empty
97: BUILD_DEPENDS?= # empty
1.1540.2.7 tv 98: BUILD_TARGET?= all
1.1540.2.18 tv 99: COMMENT?= (no description)
100: CONFIGURE_DIRS?= ${WRKSRC}
101: CONFIGURE_SCRIPT?= ./configure
1.1540.2.1 tv 102: DEPENDS?= # empty
103: DESCR_SRC?= ${PKGDIR}/DESCR
1.1540.2.24! tv 104: DIGEST_ALGORITHMS?= SHA1 RMD160
1.1540.2.1 tv 105: DISTFILES?= ${DISTNAME}${EXTRACT_SUFX}
106: DISTINFO_FILE?= ${PKGDIR}/distinfo
107: EXTRACT_ONLY?= ${DISTFILES}
108: EXTRACT_SUFX?= .tar.gz
1.1540.2.5 tv 109: INSTALL_DIRS?= ${BUILD_DIRS}
110: INSTALL_MAKE_FLAGS?= ${MAKE_FLAGS}
1.1540.2.1 tv 111: INSTALL_TARGET?= install
1.999 agc 112: INTERACTIVE_STAGE?= none
1.1540.2.1 tv 113: MAINTAINER?= tech-pkg@NetBSD.org
114: MAKE_FLAGS?= # empty
115: MAKEFILE?= Makefile
1.1540.2.24! tv 116: PATCH_DIGEST_ALGORITHM?=SHA1
1.1540.2.1 tv 117: PKG_SUFX?= .tgz
118: PKGFILE?= ${PKGREPOSITORY}/${PKGNAME}${PKG_SUFX}
119: PKGREPOSITORY?= ${PACKAGES}/${PKGREPOSITORYSUBDIR}
120: PKGREPOSITORYSUBDIR?= All
121: PKGWILDCARD?= ${PKGBASE}-[0-9]*
122: SVR4_PKGNAME?= ${PKGNAME}
123: USE_DIGEST?= YES
124: USE_GNU_TOOLS?= # empty
125: WRKSRC?= ${WRKDIR}/${DISTNAME}
126:
127: BUILD_DEFS_FIXED+= PKGPATH
128: BUILD_DEFS_FIXED+= OPSYS OS_VERSION MACHINE_ARCH MACHINE_GNU_ARCH
129: BUILD_DEFS_FIXED+= CPPFLAGS CFLAGS FFLAGS LDFLAGS
130: BUILD_DEFS_FIXED+= CONFIGURE_ENV CONFIGURE_ARGS
131: BUILD_DEFS_FIXED+= OBJECT_FMT LICENSE RESTRICTED
132: BUILD_DEFS_FIXED+= NO_SRC_ON_FTP NO_SRC_ON_CDROM
133: BUILD_DEFS_FIXED+= NO_BIN_ON_FTP NO_BIN_ON_CDROM
134: BUILD_DEFS_FIXED+= ${OSVERSION_SPECIFIC:DOSVERSION_SPECIFIC}
135:
1.1540.2.5 tv 136: ##### Non-overridable constants
1.1540.2.1 tv 137:
138: # Latest versions of tools required for correct pkgsrc operation.
139: DIGEST_REQD= 20010302
1.1540.2.19 tv 140: PKGTOOLS_REQD= ${_OPSYS_PKGTOOLS_REQD:U20050204}
1.1540.2.1 tv 141:
1.1540.2.15 tv 142: PKG_DB_TMPDIR= ${WRKDIR}/.pkgdb
1.1540.2.1 tv 143: DDIR= ${WRKDIR}/.DDIR
1.1540.2.15 tv 144: DESCR= ${PKG_DB_TMPDIR}/+DESC
1.1540.2.1 tv 145: DLIST= ${WRKDIR}/.DLIST
146: PLIST= ${WRKDIR}/.PLIST
147:
148: # Files to create for versioning and build information
1.1540.2.15 tv 149: BUILD_VERSION_FILE= ${PKG_DB_TMPDIR}/+BUILD_VERSION
150: BUILD_INFO_FILE= ${PKG_DB_TMPDIR}/+BUILD_INFO
1.1540.2.1 tv 151:
152: # Files containing size of pkg w/o and w/ all required pkgs
1.1540.2.15 tv 153: SIZE_PKG_FILE= ${PKG_DB_TMPDIR}/+SIZE_PKG
154: SIZE_ALL_FILE= ${PKG_DB_TMPDIR}/+SIZE_ALL
1.1540.2.1 tv 155:
156: # File to denote "no deletion of a package"
1.1540.2.15 tv 157: PRESERVE_FILE= ${PKG_DB_TMPDIR}/+PRESERVE
1.1540.2.1 tv 158:
159: .for targ in ${_PKG_PHASES_WRKDIR}
160: ${targ}_COOKIE= ${WRKDIR}/.${targ}_done
161: .endfor
162:
1.1540.2.5 tv 163: ##### Transform USE_* into dependencies
1.1540.2.1 tv 164:
165: .include "../../mk/bsd.pkg.use.mk"
166:
167: ############################################################################
168: # Sanity checks
169: ############################################################################
170:
171: # Fail-safe in the case of circular dependencies
172: .if defined(_PKGSRC_DEPS) && defined(PKGNAME) && !empty(_PKGSRC_DEPS:M${PKGNAME})
173: PKG_FAIL_REASON+= "Circular dependency detected"
174: .endif
1.800 jlam 175:
1.1252 jlam 176: # PKG_INSTALLATION_TYPE can only be one of two values: "pkgviews" or
177: # "overwrite".
178: .if (${PKG_INSTALLATION_TYPE} != "pkgviews") && \
179: (${PKG_INSTALLATION_TYPE} != "overwrite")
180: PKG_FAIL_REASON+= "PKG_INSTALLATION_TYPE must be \`\`pkgviews'' or \`\`overwrite''."
181: .endif
182:
183: .if empty(PKG_INSTALLATION_TYPES:M${PKG_INSTALLATION_TYPE})
184: PKG_FAIL_REASON+= "This package doesn't support PKG_INSTALLATION_TYPE=${PKG_INSTALLATION_TYPE}."
185: .endif
186:
187: .if (${PLIST_TYPE} != "dynamic") && (${PLIST_TYPE} != "static")
188: PKG_FAIL_REASON+= "PLIST_TYPE must be \`\`dynamic'' or \`\`static''."
189: .endif
190:
191: .if (${PKG_INSTALLATION_TYPE} == "overwrite") && (${PLIST_TYPE} != "static")
192: PKG_FAIL_REASON+= "PLIST_TYPE must be \`\`static'' for \`\`overwrite'' packages."
193: .endif
194:
1.1540.2.1 tv 195: # Check that we are using up-to-date pkg_* tools with this file.
196: .if !defined(NO_PKGTOOLS_REQD_CHECK)
197: . if ${PKGTOOLS_VERSION} < ${PKGTOOLS_REQD}
198: PKG_FAIL_REASON+='Error: The package tools installed on this system are out of date.'
199: PKG_FAIL_REASON+='The installed package tools are dated ${PKGTOOLS_VERSION:C|(....)(..)(..)|\1/\2/\3|} and you must update'
200: PKG_FAIL_REASON+='them to at least ${PKGTOOLS_REQD:C|(....)(..)(..)|\1/\2/\3|} using the following command:'
201: PKG_FAIL_REASON+=''
202: PKG_FAIL_REASON+=' cd ${PKGSRCDIR}/pkgtools/pkg_install && ${MAKE} clean && ${MAKE} install'
1.1339 jlam 203: . endif
1.1540.2.21 tv 204: .endif # !NO_PKGTOOLS_REQD_CHECK
1.1252 jlam 205:
1.1540.2.7 tv 206: .if defined(ALL_TARGET)
207: PKG_FAIL_REASON+='ALL_TARGET is deprecated and must be replaced with BUILD_TARGET.'
208: .endif
209:
1.1540.2.1 tv 210: .if defined(NO_WRKSUBDIR)
211: PKG_FAIL_REASON+='NO_WRKSUBDIR has been deprecated - please replace it with an explicit'
212: PKG_FAIL_REASON+='assignment of WRKSRC= $${WRKDIR}'
213: .endif # NO_WRKSUBDIR
1.1252 jlam 214:
1.820 jlam 215: # We need to make sure the buildlink-x11 package is not installed since it
1.1027 jlam 216: # breaks builds that use imake.
217: .if defined(USE_IMAKE)
1.820 jlam 218: . if exists(${LOCALBASE}/lib/X11/config/buildlinkX11.def) || \
219: exists(${X11BASE}/lib/X11/config/buildlinkX11.def)
1.1102 schmonz 220: PKG_FAIL_REASON+= "${PKGNAME} uses imake, but the buildlink-x11 package was found." \
1.820 jlam 221: " Please deinstall it (pkg_delete buildlink-x11)."
222: . endif
1.1027 jlam 223: .endif # USE_IMAKE
1.131 tv 224:
1.1540.2.1 tv 225: .if !defined(CATEGORIES) || !defined(DISTNAME)
226: PKG_FAIL_REASON+='CATEGORIES and DISTNAME are mandatory.'
1.1246 jlam 227: .endif
228:
1.1540.2.1 tv 229: .if defined(LIB_DEPENDS)
230: PKG_FAIL_REASON+='LIB_DEPENDS is deprecated and must be replaced with DEPENDS.'
1.338 kim 231: .endif
1.1015 jlam 232:
1.1540.2.1 tv 233: .if defined(PKG_PATH)
234: PKG_FAIL_REASON+='Please unset PKG_PATH before doing pkgsrc work!'
1.1015 jlam 235: .endif
236:
1.1540.2.1 tv 237: .if defined(MASTER_SITE_SUBDIR)
238: PKG_FAIL_REASON+='MASTER_SITE_SUBDIR is deprecated and must be replaced with MASTER_SITES.'
1.522 wiz 239: .endif
240:
1.1540.2.1 tv 241: .if defined(PATCH_SITE_SUBDIR)
242: PKG_FAIL_REASON+='PATCH_SITE_SUBDIR is deprecated and must be replaced with PATCH_SITES.'
1.758 jlam 243: .endif
1.986 schmonz 244:
1.1540.2.1 tv 245: .if defined(ONLY_FOR_ARCHS) || defined(NOT_FOR_ARCHS) \
246: || defined(ONLY_FOR_OPSYS) || defined(NOT_FOR_OPSYS)
247: PKG_FAIL_REASON+='ONLY/NOT_FOR_ARCHS/OPSYS are deprecated and must be replaced with ONLY/NOT_FOR_PLATFORM.'
248: .endif
1.1539 tv 249:
1.1540.2.1 tv 250: .if (${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once")
1.1540.2.5 tv 251: . if !defined(OBJHOSTNAME)
1.1540.2.1 tv 252: PKG_FAIL_REASON+='PKGSRC_LOCKTYPE needs OBJHOSTNAME defined.'
1.1540.2.5 tv 253: . elif !exists(${SHLOCK})
1.1540.2.1 tv 254: PKG_FAIL_REASON+='The ${SHLOCK} utility does not exist, and is necessary for locking.'
255: PKG_FAIL_REASON+='Please "${MAKE} install" in ../../pkgtools/shlock.'
1.1540.2.5 tv 256: . endif
1.94 agc 257: .endif
1.272 tv 258:
1.1381 jlam 259: #
1.1540.2.1 tv 260: # Many ways to disable a package.
261: #
262: # Ignore packages that can't be resold if building for a CDROM.
263: #
264: # Don't build a package if it's restricted and we don't want to
265: # get into that.
266: #
267: # Don't build any package that utilizes strong cryptography, for
268: # when the law of the land forbids it.
269: #
270: # Don't attempt to build packages against X if we don't have X.
271: #
272: # Don't build a package if it's broken.
273: #
1.1536 sketch 274:
1.1540.2.1 tv 275: .if (defined(NO_BIN_ON_CDROM) && defined(FOR_CDROM))
276: PKG_FAIL_REASON+= "${PKGNAME} may not be placed in binary form on a CDROM:" \
277: " "${NO_BIN_ON_CDROM:Q}
1.1252 jlam 278: .endif
1.1540.2.1 tv 279: .if (defined(NO_SRC_ON_CDROM) && defined(FOR_CDROM))
280: PKG_FAIL_REASON+= "${PKGNAME} may not be placed in source form on a CDROM:" \
281: " "${NO_SRC_ON_CDROM:Q}
282: .endif
283: .if (defined(RESTRICTED) && defined(NO_RESTRICTED))
284: PKG_FAIL_REASON+= "${PKGNAME} is restricted:" \
285: " "${RESTRICTED:Q}
1.1199 grant 286: .endif
1.1540.2.1 tv 287: .if !(${MKCRYPTO} == "YES" || ${MKCRYPTO} == yes)
288: . if defined(CRYPTO)
289: PKG_FAIL_REASON+= "${PKGNAME} may not be built, because it utilizes strong cryptography"
290: . endif
1.1199 grant 291: .endif
1.1540.2.1 tv 292: .if defined(USE_X11) && !exists(${X11BASE})
293: PKG_FAIL_REASON+= "${PKGNAME} uses X11, but ${X11BASE} not found"
1.1217 grant 294: .endif
1.1540.2.1 tv 295: .if defined(BROKEN)
296: PKG_FAIL_REASON+= "${PKGNAME} is marked as broken:" ${BROKEN:Q}
1.1528 recht 297: .endif
1.1209 grant 298:
1.1540.2.1 tv 299: .if defined(LICENSE)
300: . ifdef ACCEPTABLE_LICENSES
301: . for _lic in ${ACCEPTABLE_LICENSES}
302: . if ${LICENSE} == "${_lic}"
303: _ACCEPTABLE= yes
304: . endif # LICENSE == _lic
305: . endfor # _lic
306: . endif # ACCEPTABLE_LICENSES
307: . ifndef _ACCEPTABLE
308: PKG_FAIL_REASON+= "${PKGNAME} has an unacceptable license: ${LICENSE}." \
309: " To view the license, enter \"${MAKE} show-license\"." \
310: " To indicate acceptance, add this line to your /etc/mk.conf:" \
311: " ACCEPTABLE_LICENSES+=${LICENSE}"
312: . endif # _ACCEPTABLE
313: .endif # LICENSE
1.1462 jschauma 314:
1.1540.2.1 tv 315: # Define __PLATFORM_OK only if the OS matches the pkg's allowed list.
316: .if defined(ONLY_FOR_PLATFORM) && !empty(ONLY_FOR_PLATFORM)
317: . for __tmp__ in ${ONLY_FOR_PLATFORM}
318: . if ${MACHINE_PLATFORM:M${__tmp__}} != ""
319: __PLATFORM_OK?= yes
320: . endif # MACHINE_PLATFORM
321: . endfor # __tmp__
322: .else # !ONLY_FOR_PLATFORM
323: __PLATFORM_OK?= yes
324: .endif # ONLY_FOR_PLATFORM
325: .for __tmp__ in ${NOT_FOR_PLATFORM}
326: . if ${MACHINE_PLATFORM:M${__tmp__}} != ""
327: . undef __PLATFORM_OK
328: . endif # MACHINE_PLATFORM
329: .endfor # __tmp__
330: .if !defined(__PLATFORM_OK)
331: PKG_SKIP_REASON+= "${PKGNAME} is not available for ${MACHINE_PLATFORM}"
332: .endif # !__PLATFORM_OK
1.1295 grant 333:
1.1540.2.1 tv 334: .if !defined(NO_SKIP)
335: . if defined(PKG_FAIL_REASON) || defined(PKG_SKIP_REASON)
336: _PKG_SKIPPED= # defined
337: . endif
1.1295 grant 338: .endif
1.1 agc 339:
1.1540.2.1 tv 340: ############################################################################
341: # Set up build environment
342: ############################################################################
1.1488 jlam 343:
1.1540.2.1 tv 344: .if !defined(_PKG_SKIPPED)
1.1488 jlam 345:
1.1540.2.1 tv 346: # Allow variables to be set on a per-OS basis
347: OPSYSVARS+= CFLAGS CPPFLAGS CXXFLAGS FFLAGS LDFLAGS LIBS
348: . for var in ${OPSYSVARS:O}
349: . if defined(${var}.${OPSYS})
350: ${var}+= ${${var}.${OPSYS}}
351: . elif defined(${var}.*)
352: ${var}+= ${${var}.*}
353: . endif
1.1488 jlam 354: . endfor
1.1 agc 355:
1.1540.2.1 tv 356: CPPFLAGS+= ${CPP_PRECOMP_FLAGS}
357:
1.1540.2.20 tv 358: . if !empty(USE_BUILDLINK3:M[nN][oO])
1.1540.2.1 tv 359: LDFLAGS+= ${COMPILER_RPATH_FLAG}${LOCALBASE}/lib
360: LDFLAGS+= -L${LOCALBASE}/lib
1.1540.2.20 tv 361: . endif
1.1489 schmonz 362:
1.1540.2.1 tv 363: ALL_ENV+= CC=${CC:Q}
364: ALL_ENV+= CFLAGS=${CFLAGS:Q}
365: ALL_ENV+= CPPFLAGS=${CPPFLAGS:Q}
366: ALL_ENV+= CXX=${CXX:Q}
367: ALL_ENV+= CXXFLAGS=${CXXFLAGS:Q}
368: ALL_ENV+= COMPILER_RPATH_FLAG=${COMPILER_RPATH_FLAG:Q}
1.1540.2.10 tv 369: ALL_ENV+= F77=${F77:Q}
370: ALL_ENV+= FC=${FC:Q}
1.1540.2.1 tv 371: ALL_ENV+= FFLAGS=${FFLAGS:Q}
372: ALL_ENV+= LDFLAGS=${LDFLAGS:Q}
373: ALL_ENV+= LINKER_RPATH_FLAG=${LINKER_RPATH_FLAG:Q}
374: ALL_ENV+= PATH=${PATH:Q}:${LOCALBASE}/bin:${X11BASE}/bin
375: ALL_ENV+= PREFIX=${PREFIX}
376:
377: MAKE_ENV+= ${ALL_ENV}
378: MAKE_ENV+= ${NO_EXPORT_CPP:D:UCPP=${CPP:Q}}
379: MAKE_ENV+= LINK_ALL_LIBGCC_HACK=${LINK_ALL_LIBGCC_HACK:Q}
380: MAKE_ENV+= LOCALBASE=${LOCALBASE}
381: MAKE_ENV+= NO_WHOLE_ARCHIVE_FLAG=${NO_WHOLE_ARCHIVE_FLAG:Q}
382: MAKE_ENV+= WHOLE_ARCHIVE_FLAG=${WHOLE_ARCHIVE_FLAG:Q}
383: MAKE_ENV+= X11BASE=${X11BASE}
384: MAKE_ENV+= X11PREFIX=${X11PREFIX}
385:
386: # Constants to provide a consistent environment for packages using
387: # BSD-style Makefiles.
388: MAKE_ENV+= MAKECONF=${PKGMAKECONF:U/dev/null}
389: MAKE_ENV+= OBJECT_FMT=${OBJECT_FMT:Q}
390: MAKE_ENV+= ${USETOOLS:DUSETOOLS=${USETOOLS:Q}}
391:
392: SCRIPTS_ENV+= ${ALL_ENV}
393: SCRIPTS_ENV+= _PKGSRCDIR=${_PKGSRCDIR}
394: SCRIPTS_ENV+= ${BATCH:DBATCH=yes}
395: SCRIPTS_ENV+= CURDIR=${.CURDIR}
396: SCRIPTS_ENV+= DEPENDS=${DEPENDS:Q}
397: SCRIPTS_ENV+= DISTDIR=${DISTDIR}
398: SCRIPTS_ENV+= FILESDIR=${FILESDIR}
399: SCRIPTS_ENV+= LOCALBASE=${LOCALBASE}
400: SCRIPTS_ENV+= PATCHDIR=${PATCHDIR}
401: SCRIPTS_ENV+= PKGSRCDIR=${PKGSRCDIR}
402: SCRIPTS_ENV+= SCRIPTDIR=${SCRIPTDIR}
403: SCRIPTS_ENV+= VIEWBASE=${VIEWBASE}
404: SCRIPTS_ENV+= WRKDIR=${WRKDIR}
405: SCRIPTS_ENV+= WRKSRC=${WRKSRC}
406: SCRIPTS_ENV+= X11BASE=${X11BASE}
1.240 agc 407:
1.1540.2.1 tv 408: # Set PLIST_SUBST to substitute "${variable}" to "value" in PLIST
409: PLIST_SUBST+= CHGRP=${CHGRP:Q}
410: PLIST_SUBST+= CHMOD=${CHMOD:Q}
411: PLIST_SUBST+= CHOWN=${CHOWN:Q}
412: PLIST_SUBST+= LN=${LN:Q}
413: PLIST_SUBST+= LOCALBASE=${LOCALBASE}
414: PLIST_SUBST+= LOWER_VENDOR=${LOWER_VENDOR}
415: PLIST_SUBST+= LOWER_OPSYS=${LOWER_OPSYS}
416: PLIST_SUBST+= LOWER_OS_VERSION=${LOWER_OS_VERSION}
417: PLIST_SUBST+= MACHINE_ARCH=${MACHINE_ARCH}
418: PLIST_SUBST+= MACHINE_GNU_ARCH=${MACHINE_GNU_ARCH}
419: PLIST_SUBST+= MACHINE_GNU_PLATFORM=${MACHINE_GNU_PLATFORM}
420: PLIST_SUBST+= MKDIR=${MKDIR:Q}
421: PLIST_SUBST+= OPSYS=${OPSYS}
422: PLIST_SUBST+= OS_VERSION=${OS_VERSION}
423: PLIST_SUBST+= PKGBASE=${PKGBASE}
424: PLIST_SUBST+= PKGNAME=${PKGNAME_NOREV}
425: PLIST_SUBST+= PKGLOCALEDIR=${PKGLOCALEDIR}
426: PLIST_SUBST+= PKGVERSION=${PKGVERSION:C/nb[0-9]*$//}
427: PLIST_SUBST+= QMAILDIR=${QMAILDIR} # XXXTV is this used?
428: PLIST_SUBST+= RM=${RM:Q}
429: PLIST_SUBST+= RMDIR=${RMDIR:Q}
430: PLIST_SUBST+= SVR4_PKGNAME=${SVR4_PKGNAME}
431: PLIST_SUBST+= TRUE=${TRUE:Q}
432: PLIST_SUBST+= VIEWBASE=${VIEWBASE}
433: PLIST_SUBST+= X11BASE=${X11BASE}
434: PLIST_SUBST+= X11PREFIX=${X11PREFIX}
435:
436: # Automatically increase process limit where necessary for building.
437: . if defined(UNLIMIT_RESOURCES)
438: . for res in ${UNLIMIT_RESOURCES}
439: _ULIMIT_CMD+= ${ULIMIT_CMD_${res}:D${ULIMIT_CMD_${res}} ; }
440: . endfor
1.789 hubertf 441: . endif
1.436 fredb 442:
1.1540.2.5 tv 443: # if automatic manual page compression is done by the package according
444: # to MANZ's value, set MANCOMPRESSED if MANZ is set
445: . if defined(MANCOMPRESSED_IF_MANZ) && defined(MANZ)
446: MANCOMPRESSED= yes
447: MAKE_ENV+= MANZ=${MANZ}
448: . endif
449:
450: # CONF_DEPENDS notes a dependency where the config directory for the
451: # package matches the dependency's config directory. CONF_DEPENDS is
452: # only meaningful if ${PKG_INSTALLATION_TYPE} == "pkgviews".
453: #
454: CONF_DEPENDS?= # empty
455: . if !empty(CONF_DEPENDS)
456: USE_PKGINSTALL= YES
457: . endif
458:
1.1540.2.1 tv 459: .endif # !_PKG_SKIPPED
1.221 agc 460:
1.1540.2.1 tv 461: ############################################################################
462: # Debug support
463: ############################################################################
1.221 agc 464:
465: # Debugging levels for this file, dependent on PKG_DEBUG_LEVEL definition
466: # 0 == normal, default, quiet operation
467: # 1 == all shell commands echoed before invocation
468: # 2 == shell "set -x" operation
469: PKG_DEBUG_LEVEL?= 0
470: _PKG_SILENT= @
1.1058 jlam 471: _PKG_DEBUG= # empty
472: _PKG_DEBUG_SCRIPT= # empty
1.221 agc 473:
474: .if ${PKG_DEBUG_LEVEL} > 0
1.1058 jlam 475: _PKG_SILENT= # empty
1.221 agc 476: .endif
477:
478: .if ${PKG_DEBUG_LEVEL} > 1
479: _PKG_DEBUG= set -x;
1.1058 jlam 480: _PKG_DEBUG_SCRIPT= ${SH} -x
1.57 hubertf 481: .endif
482:
1.1540.2.1 tv 483: ############################################################################
484: # External tools
485: ############################################################################
1.161 agc 486:
1.1540.2.1 tv 487: # top part not skipped by _PKG_SKIPPED
1.57 hubertf 488:
1.1540.2.1 tv 489: # Used to print all the '===>' style prompts - override this to turn them off.
490: ECHO_MSG?= ${ECHO}
1.1 agc 491:
1.1540.2.1 tv 492: # Define SMART_MESSAGES in /etc/mk.conf for messages giving the tree
493: # of dependencies for building, and the current target.
494: .ifdef SMART_MESSAGES
495: _PKGSRC_IN?= ===> ${.TARGET} [${PKGNAME}${_PKGSRC_DEPS}] ===
1.663 wiz 496: .endif
1.1540.2.1 tv 497: _PKGSRC_IN?= ===
1.663 wiz 498:
1.1540.2.1 tv 499: DO_NADA?= ${TRUE} # deprecated; for compatibility only
500: SHCOMMENT?= ${ECHO_MSG} >/dev/null '***'
501: TOUCH_FLAGS?= -f
1.1114 grant 502:
1.1540.2.1 tv 503: FETCH_BEFORE_ARGS+= ${PASSIVE_FETCH:D-p}
504:
505: .if !defined(_PKG_SKIPPED)
506:
507: INSTALL_DATA?= ${INSTALL} ${COPY} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE}
508: INSTALL_DATA_DIR?= ${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} -m ${PKGDIRMODE}
509: INSTALL_GAME?= ${INSTALL} ${COPY} ${_STRIPFLAG_INSTALL} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEMODE}
510: INSTALL_GAME_DATA?= ${INSTALL} ${COPY} -o ${GAMEOWN} -g ${GAMEGRP} -m ${GAMEDATAMODE}
511: INSTALL_LIB?= ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
512: INSTALL_LIB_DIR?= ${INSTALL_PROGRAM_DIR}
513: INSTALL_MAN?= ${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
514: INSTALL_MAN_DIR?= ${INSTALL} -d -o ${MANOWN} -g ${MANGRP} -m ${PKGDIRMODE}
515: INSTALL_PROGRAM?= ${INSTALL} ${COPY} ${_STRIPFLAG_INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
516: INSTALL_PROGRAM_DIR?= ${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m ${PKGDIRMODE}
517: INSTALL_SCRIPT?= ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
518: INSTALL_SCRIPT_DIR?= ${INSTALL_PROGRAM_DIR}
519:
520: _INSTALL_MACROS= BSD_INSTALL=${INSTALL:Q}
521: . for mac in DATA GAME LIB MAN PROGRAM SCRIPT
522: _INSTALL_MACROS+= BSD_INSTALL_${mac}=${INSTALL_${mac}:Q}
523: _INSTALL_MACROS+= BSD_INSTALL_${mac}_DIR=${INSTALL_${mac}_DIR:Q}
524: CONFIGURE_ENV+= INSTALL_${mac}=${INSTALL_${mac}:Q}
525: CONFIGURE_ENV+= INSTALL_${mac}_DIR=${INSTALL_${mac}_DIR:Q}
526: . endfor
527: MAKE_ENV+= ${_INSTALL_MACROS}
528: SCRIPTS_ENV+= ${_INSTALL_MACROS}
529:
530: . if defined(USE_GNU_TOOLS) && !empty(USE_GNU_TOOLS:Mmake)
531: MAKE_PROGRAM= ${GMAKE}
532: . elif defined(USE_IMAKE)
1.1540.2.9 tv 533: . if ${_IMAKE_MAKE} == ${GMAKE}
534: USE_GNU_TOOLS+= make
535: . endif
1.1540.2.1 tv 536: MAKE_PROGRAM= ${_IMAKE_MAKE}
1.1114 grant 537: . endif
1.1540.2.1 tv 538: MAKE_PROGRAM?= ${MAKE}
1.1114 grant 539:
1.1540.2.1 tv 540: MTREE_ARGS?= -U -f ${MTREE_FILE} -d -e -p
541: MTREE_FILE?= ${PKGSRCDIR}/mk/${OPSYS}.pkg.dist
542:
543: PKG_ARGS_COMMON= -v -c -${COMMENT:Q}" " -d ${DESCR} -f ${PLIST}
544: PKG_ARGS_COMMON+= -l -b ${BUILD_VERSION_FILE} -B ${BUILD_INFO_FILE}
545: PKG_ARGS_COMMON+= -s ${SIZE_PKG_FILE} -S ${SIZE_ALL_FILE}
546: PKG_ARGS_COMMON+= -P "`${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`"
547: PKG_ARGS_COMMON+= ${INSTALL_FILE:D-i ${INSTALL_FILE}}
548: PKG_ARGS_COMMON+= ${DEINSTALL_FILE:D-k ${DEINSTALL_FILE}}
549: PKG_ARGS_COMMON+= ${MESSAGE:D-D ${MESSAGE}}
550: PKG_ARGS_COMMON+= ${NO_MTREE:D:U-m ${MTREE_FILE}}
551: PKG_ARGS_COMMON+= ${PKG_PRESERVE:D-n ${PRESERVE_FILE}}
552: . if ${PKG_INSTALLATION_TYPE} == "overwrite"
553: PKG_ARGS_COMMON+= ${CONFLICTS:D-C "${CONFLICTS}"}
554: . endif
1.164 agc 555:
1.1540.2.1 tv 556: PKG_ARGS_INSTALL= -p ${PREFIX} ${PKG_ARGS_COMMON}
557: PKG_ARGS_BINPKG= -p ${PREFIX:S/^${DESTDIR}//} -L ${PREFIX} ${PKG_ARGS_COMMON}
1.631 hubertf 558:
1.1540.2.1 tv 559: .endif # !_PKG_SKIPPED
560:
561: ############################################################################
1.1540.2.5 tv 562: # External bsd.pkg.mk fragments needing to perform overrides
1.1540.2.1 tv 563: ############################################################################
564:
565: .if !defined(_PKG_SKIPPED)
1.1250 jlam 566:
1.1540.2.1 tv 567: USE_PKGINSTALL?= NO
568: . if !empty(USE_PKGINSTALL:M[yY][eE][sS])
569: . include "../../mk/bsd.pkg.install.mk"
570: . endif
571:
572: .endif # !_PKG_SKIPPED
573:
574: ############################################################################
575: # Transform package Makefile variables (overridable by external fragments)
576: ############################################################################
577:
578: .if !defined(_PKG_SKIPPED)
1.1136 jlam 579:
1.164 agc 580: # Set INSTALL_FILE to be the name of any INSTALL file
1.1540.2.1 tv 581: . if !defined(INSTALL_FILE) && exists(${PKGDIR}/INSTALL)
1.164 agc 582: INSTALL_FILE= ${PKGDIR}/INSTALL
1.1540.2.1 tv 583: . endif
1.164 agc 584:
585: # Set DEINSTALL_FILE to be the name of any DEINSTALL file
1.1540.2.1 tv 586: . if !defined(DEINSTALL_FILE) && exists(${PKGDIR}/DEINSTALL)
1.164 agc 587: DEINSTALL_FILE= ${PKGDIR}/DEINSTALL
1.1540.2.1 tv 588: . endif
1.1 agc 589:
1.848 jlam 590: # If MESSAGE hasn't been defined, then set MESSAGE_SRC to be a space-separated
591: # list of files to be concatenated together to generate the MESSAGE file.
592: #
1.1540.2.1 tv 593: . if !defined(MESSAGE_SRC) && !defined(MESSAGE)
594: . if exists(${PKGDIR}/MESSAGE)
1.1103 seb 595: MESSAGE_SRC= ${PKGDIR}/MESSAGE
1.1540.2.1 tv 596: . else
597: . if exists(${PKGDIR}/MESSAGE.common)
1.1101 grant 598: MESSAGE_SRC= ${PKGDIR}/MESSAGE.common
1.1540.2.1 tv 599: . endif
600: . if exists(${PKGDIR}/MESSAGE.${OPSYS})
1.1101 grant 601: MESSAGE_SRC+= ${PKGDIR}/MESSAGE.${OPSYS}
1.1540.2.1 tv 602: . endif
603: . if exists(${PKGDIR}/MESSAGE.${MACHINE_ARCH:C/i[3-6]86/i386/g})
1.1160 salo 604: MESSAGE_SRC+= ${PKGDIR}/MESSAGE.${MACHINE_ARCH:C/i[3-6]86/i386/g}
1.1540.2.1 tv 605: . endif
606: . if exists(${PKGDIR}/MESSAGE.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g})
1.1104 grant 607: MESSAGE_SRC+= ${PKGDIR}/MESSAGE.${OPSYS}-${MACHINE_ARCH:C/i[3-6]86/i386/g}
1.1540.2.1 tv 608: . endif
1.1103 seb 609: . endif
1.1101 grant 610: . endif
1.654 wiz 611:
1.1540.2.1 tv 612: . if defined(MESSAGE_SRC)
1.1540.2.15 tv 613: MESSAGE= ${PKG_DB_TMPDIR}/+DISPLAY
1.654 wiz 614:
615: # Set MESSAGE_SUBST to substitute "${variable}" to "value" in MESSAGE
1.1540.2.1 tv 616: MESSAGE_SUBST+= LOCALBASE=${LOCALBASE}
617: MESSAGE_SUBST+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR}
618: MESSAGE_SUBST+= PKGNAME=${PKGNAME}
619: MESSAGE_SUBST+= PREFIX=${PREFIX}
620: MESSAGE_SUBST+= QMAILDIR=${QMAILDIR} # XXXTV is this used?
621: MESSAGE_SUBST+= ROOT_GROUP=${ROOT_GROUP}
622: MESSAGE_SUBST+= ROOT_USER=${ROOT_USER}
623: MESSAGE_SUBST+= VIEWBASE=${VIEWBASE}
624: MESSAGE_SUBST+= X11BASE=${X11BASE}
625: MESSAGE_SUBST+= X11PREFIX=${X11PREFIX}
1.848 jlam 626:
627: MESSAGE_SUBST_SED= ${MESSAGE_SUBST:S/=/}!/:S/$/!g/:S/^/ -e s!\\\${/}
1.1540.2.1 tv 628: . endif
1.1422 jlam 629:
1.1540.2.5 tv 630: ##### Config file related settings - see doc/guide
1.676 agc 631:
1.1540.2.1 tv 632: PKG_SYSCONFVAR?= ${PKGBASE}
633: PKG_SYSCONFSUBDIR?= # empty
634: . if ${PKG_INSTALLATION_TYPE} == "overwrite"
635: PKG_SYSCONFDEPOTBASE= # empty
636: PKG_SYSCONFBASEDIR= ${PKG_SYSCONFBASE}
637: . else
638: . if !empty(PKG_SYSCONFBASE:M${PREFIX}) || \
639: !empty(PKG_SYSCONFBASE:M${PREFIX}/*)
640: PKG_SYSCONFDEPOTBASE= # empty
641: PKG_SYSCONFBASEDIR= ${PKG_SYSCONFBASE}
642: . if !empty(CONF_DEPENDS)
643: _PLIST_IGNORE_FILES+= ${PKG_SYSCONFDIR:S,^${PREFIX}/,,}
644: . endif
645: . else
646: PKG_SYSCONFDEPOTBASE= ${PKG_SYSCONFBASE}/${DEPOT_SUBDIR}
647: PKG_SYSCONFBASEDIR= ${PKG_SYSCONFDEPOTBASE}/${PKGNAME}
648: . endif
649: . endif
650: . if empty(PKG_SYSCONFSUBDIR)
651: DFLT_PKG_SYSCONFDIR:= ${PKG_SYSCONFBASEDIR}
652: . else
653: DFLT_PKG_SYSCONFDIR:= ${PKG_SYSCONFBASEDIR}/${PKG_SYSCONFSUBDIR}
654: . endif
655: PKG_SYSCONFDIR= ${DFLT_PKG_SYSCONFDIR}
656: . if defined(PKG_SYSCONFDIR.${PKG_SYSCONFVAR})
657: PKG_SYSCONFDIR= ${PKG_SYSCONFDIR.${PKG_SYSCONFVAR}}
658: PKG_SYSCONFBASEDIR= ${PKG_SYSCONFDIR.${PKG_SYSCONFVAR}}
659: PKG_SYSCONFDEPOTBASE= # empty
660: . endif
1.383 hubertf 661:
1.1540.2.1 tv 662: ALL_ENV+= PKG_SYSCONFDIR=${PKG_SYSCONFDIR:Q}
663: BUILD_DEFS_FIXED+= PKG_SYSCONFBASEDIR PKG_SYSCONFDIR
1.695 tron 664:
1.1540.2.1 tv 665: .endif # !_PKG_SKIPPED
1.383 hubertf 666:
1.1540.2.5 tv 667: ##### Checksum and other file handling support
1.1540.2.1 tv 668: # not skipped by _PKG_SKIPPED
1.383 hubertf 669:
1.1540.2.1 tv 670: ALLFILES?= ${DISTFILES} ${PATCHFILES}
671: CKSUMFILES?= ${ALLFILES}
672: .for __tmp__ in ${IGNOREFILES}
673: CKSUMFILES:= ${CKSUMFILES:N${__tmp__}}
674: .endfor
1.1127 agc 675:
1.1540.2.1 tv 676: # List of all files, with ${DIST_SUBDIR} in front. Used for fetch and checksum.
677: .if defined(DIST_SUBDIR)
678: . if ${CKSUMFILES} != ""
679: _CKSUMFILES?= ${CKSUMFILES:S/^/${DIST_SUBDIR}\//}
1.789 hubertf 680: . endif
1.1540.2.1 tv 681: . if !empty(DISTFILES)
682: _DISTFILES?= ${DISTFILES:S/^/${DIST_SUBDIR}\//}
683: . else
684: _DISTFILES?= # empty
1.789 hubertf 685: . endif
1.1540.2.1 tv 686: . if defined(IGNOREFILES) && !empty(IGNOREFILES)
687: _IGNOREFILES?= ${IGNOREFILES:S/^/${DIST_SUBDIR}\//}
1.789 hubertf 688: . endif
1.1540.2.1 tv 689: . if defined(PATCHFILES) && !empty(PATCHFILES)
690: _PATCHFILES?= ${PATCHFILES:S/^/${DIST_SUBDIR}\//}
691: . else
692: _PATCHFILES?= # empty
1.789 hubertf 693: . endif
1.1540.2.1 tv 694: .else
695: _CKSUMFILES?= ${CKSUMFILES}
696: _DISTFILES?= ${DISTFILES}
697: _IGNOREFILES?= ${IGNOREFILES}
698: _PATCHFILES?= ${PATCHFILES}
699: .endif
700: _ALLFILES?= ${_DISTFILES} ${_PATCHFILES}
701:
702: ############################################################################
703: # Phase `fetch'
704: ############################################################################
705:
706: .if !empty(PKG_PHASES:Mfetch) && !defined(_PKG_SKIPPED)
707:
708: ##### Master site selection
709:
710: . include "../../mk/bsd.sites.mk"
711:
712: . if defined(DIST_SUBDIR)
713: _MASTER_SITE_BACKUP:= ${MASTER_SITE_BACKUP:=${DIST_SUBDIR}/}
714: . if defined(MASTER_SITE_OVERRIDE)
715: _MASTER_SITE_OVERRIDE:= ${MASTER_SITE_OVERRIDE:=${DIST_SUBDIR}/}
716: . endif # MASTER_SITE_OVERRIDE
717: . else # !DIST_SUBDIR
718: _MASTER_SITE_BACKUP:= ${MASTER_SITE_BACKUP}
719: . if defined(MASTER_SITE_OVERRIDE)
720: _MASTER_SITE_OVERRIDE:= ${MASTER_SITE_OVERRIDE}
721: . endif # MASTER_SITE_OVERRIDE
722: . endif # DIST_SUBDIR
723:
724: # Where to put distfiles that don't have any other master site
725: MASTER_SITE_LOCAL?= ${MASTER_SITE_BACKUP:=LOCAL_PORTS/}
726:
727: ##### Make subtargets for "fetch".
728:
729: #===> check-vulnerable: Check for any vulnerabilities in the package
730: _CHECK_VULNERABLE= \
731: ${SETENV} PKGNAME="${PKGNAME}" \
732: PKGBASE="${PKGBASE}" \
733: ${AWK} '/^$$/ { next } \
734: /^\#.*/ { next } \
735: { 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); } \
736: ' < ${PKGVULNDIR}/pkg-vulnerabilities || ${ECHO} 'could not check pkg-vulnerabilities file'
737:
738: _REAL_TARGETS.fetch+= check-vulnerable
739: .PHONY: check-vulnerable
740: check-vulnerable:
741: . if !defined(ALLOW_VULNERABLE_PACKAGES) && !exists(${extract_COOKIE})
742: . if exists(${PKGVULNDIR}/pkg-vulnerabilities)
743: ${_PKG_SILENT}${_PKG_DEBUG} \
744: ${ECHO_MSG} "${_PKGSRC_IN}> Checking for vulnerabilities in ${PKGNAME}"; \
745: vul=`${_CHECK_VULNERABLE}`; \
746: case "$$vul" in \
747: "") ;; \
748: *) ${ECHO} "$$vul"; \
749: ${ECHO} "or define ALLOW_VULNERABLE_PACKAGES if this package is absolutely essential"; \
750: ${FALSE} ;; \
751: esac
752: . else
753: @${ECHO_MSG} "${_PKGSRC_IN}> *** No ${PKGVULNDIR}/pkg-vulnerabilities file found,"
754: @${ECHO_MSG} "${_PKGSRC_IN}> *** skipping vulnerability checks. To fix, install"
755: @${ECHO_MSG} "${_PKGSRC_IN}> *** the pkgsrc/security/audit-packages package and run"
756: @${ECHO_MSG} "${_PKGSRC_IN}> *** '${LOCALBASE}/sbin/download-vulnerability-list'."
757: . endif
1.1127 agc 758: . endif
1.653 jwise 759:
1.1540.2.1 tv 760: #===> "pre-fetch"
1.653 jwise 761:
1.1540.2.1 tv 762: _REAL_TARGETS.fetch+= pre-fetch
763: .PHONY: pre-fetch
764: pre-fetch: .OPTIONAL
1.1252 jlam 765:
1.1540.2.1 tv 766: #===> "do-fetch"
1.383 hubertf 767:
1.1540.2.1 tv 768: _REAL_TARGETS.fetch+= do-fetch
769: .PHONY: do-fetch
770: #do-fetch:
1.416 agc 771:
1.1540.2.1 tv 772: #===> "post-fetch"
1.1 agc 773:
1.1540.2.1 tv 774: _REAL_TARGETS.fetch+= post-fetch
775: .PHONY: post-fetch
776: post-fetch: .OPTIONAL
1.43 hubertf 777:
1.1540.2.1 tv 778: .endif # !empty(PKG_PHASES:Mfetch) && !defined(_PKG_SKIPPED)
1.1 agc 779:
1.1540.2.1 tv 780: ############################################################################
781: # Phase `checksum'
782: ############################################################################
1.87 agc 783:
1.1540.2.1 tv 784: # not skipped by _PKG_SKIPPED
1.691 fredb 785:
1.1540.2.1 tv 786: #===> uptodate-digest: Install "digest" if needed.
787: # this is also used by `patch' and `make*sum'
788: .PHONY: uptodate-digest
789: uptodate-digest:
790: .if !empty(USE_DIGEST:M[yY][eE][sS])
791: ${_PKG_SILENT}${_PKG_DEBUG} \
792: if [ -f ${DISTINFO_FILE} -a \( ! -f ${DIGEST} -o ${DIGEST_VERSION} -lt ${DIGEST_REQD} \) ]; then \
793: { cd ${PKGSRCDIR}/pkgtools/digest; \
794: ${MAKE} clean; \
795: if [ -f ${DIGEST} ]; then \
796: ${MAKE} ${MAKEFLAGS} deinstall; \
797: fi; \
798: ${MAKE} ${MAKEFLAGS} test; \
799: if [ -f ${DIGEST} ]; then \
800: ${MAKE} ${MAKEFLAGS} deinstall; \
801: fi; \
802: ${MAKE} ${MAKEFLAGS} ${DEPENDS_TARGET}; \
803: ${MAKE} ${MAKEFLAGS} clean; } \
804: fi
1.691 fredb 805: .endif
1.15 agc 806:
1.1540.2.1 tv 807: .if !empty(PKG_PHASES:Mchecksum) && !defined(_PKG_SKIPPED)
1.1067 jlam 808:
1.1540.2.1 tv 809: #===> do-checksum
810:
811: _REAL_TARGETS.checksum+= do-checksum
812: .PHONY: do-checksum
813: do-checksum: .OPTIONAL
814: . if !defined(NO_CHECKSUM) && !exists(${extract_COOKIE})
815: do-checksum: uptodate-digest
816: ${_PKG_SILENT}${_PKG_DEBUG} \
817: if [ ! -f ${DISTINFO_FILE} ]; then \
818: ${ECHO_MSG} "=> No checksum file."; \
819: else \
1.1540.2.24! tv 820: (cd ${DISTDIR}; OK="true"; missing=""; \
1.1540.2.1 tv 821: for file in "" ${_CKSUMFILES}; do \
822: if [ "X$$file" = X"" ]; then continue; fi; \
1.1540.2.24! tv 823: filesummed=false; \
! 824: for a in ${DIGEST_ALGORITHMS}; do \
! 825: CKSUM2=`${AWK} 'NF == 4 && $$1 == "'$$a'" && $$2 == "('$$file')" && $$3 == "=" {print $$4;}' ${DISTINFO_FILE}`; \
! 826: case "$${CKSUM2}" in \
! 827: "") ${ECHO_MSG} "=> No $$a checksum recorded for $$file."; \
! 828: ;; \
! 829: *) filesummed=true; \
! 830: CKSUM=`${DIGEST} $$a < $$file`; \
! 831: if [ "$$CKSUM2" = "IGNORE" ]; then \
! 832: ${ECHO_MSG} "=> Checksum for $$file is set to IGNORE in checksum file even though"; \
! 833: ${ECHO_MSG} " the file is not in the "'$$'"{IGNOREFILES} list."; \
! 834: OK="false"; \
! 835: elif [ "$$CKSUM" = "$$CKSUM2" ]; then \
! 836: ${ECHO_MSG} "=> Checksum $$a OK for $$file."; \
! 837: else \
! 838: ${ECHO_MSG} "=> Checksum $$a mismatch for $$file."; \
! 839: OK="false"; \
! 840: fi ;; \
! 841: esac; \
! 842: done; \
! 843: case "$$filesummed" in \
! 844: false) missing="$$missing $$file"; \
! 845: OK=false ;; \
! 846: esac; \
1.1540.2.1 tv 847: done; \
848: for file in "" ${_IGNOREFILES}; do \
849: if [ "X$$file" = X"" ]; then continue; fi; \
850: CKSUM2=`${AWK} 'NF == 4 && $$3 == "=" && $$2 == "('$$file')"{print $$4;}' ${DISTINFO_FILE}`; \
851: if [ "$$CKSUM2" = "" ]; then \
852: ${ECHO_MSG} "=> No checksum recorded for $$file, file is in "'$$'"{IGNOREFILES} list."; \
853: OK="false"; \
854: elif [ "$$CKSUM2" != "IGNORE" ]; then \
855: ${ECHO_MSG} "=> Checksum for $$file is not set to IGNORE in checksum file even though"; \
856: ${ECHO_MSG} " the file is in the "'$$'"{IGNOREFILES} list."; \
857: OK="false"; \
858: fi; \
859: done; \
860: if [ "$$OK" != "true" ]; then \
1.1540.2.24! tv 861: case "$$missing" in \
! 862: "") ;; \
! 863: *) ${ECHO_MSG} "Missing checksums for $$missing";; \
! 864: esac; \
1.1540.2.1 tv 865: ${ECHO_MSG} "Make sure the Makefile and checksum file (${DISTINFO_FILE})"; \
866: ${ECHO_MSG} "are up to date. If you want to override this check, type"; \
867: ${ECHO_MSG} "\"${MAKE} NO_CHECKSUM=yes [other args]\"."; \
868: exit 1; \
869: fi) ; \
870: fi
1.1067 jlam 871: . endif
1.1540.2.1 tv 872:
873: .endif # !empty(PKG_PHASES:Mchecksum) && !defined(_PKG_SKIPPED)
874:
875: ############################################################################
876: # Phase `depends'
877: ############################################################################
878:
879: .if !empty(PKG_PHASES:Mdepends) && !defined(_PKG_SKIPPED)
880:
881: . if defined(RECOMMENDED)
882: . if !empty(IGNORE_RECOMMENDED:M[nN][oO])
883: DEPENDS+= ${RECOMMENDED}
884: . else
885: BUILD_DEFS_FIXED+= IGNORE_RECOMMENDED
886: . endif
1.1067 jlam 887: . endif
888:
1.1540.2.5 tv 889: . include "../../mk/tools.mk"
890:
891: # If NO_BUILD is defined, default to not needing a compiler.
892: . if defined(NO_BUILD)
893: USE_LANGUAGES?= # empty
894: . endif
895: . include "../../mk/compiler.mk"
896:
897: # USE_BUILDLINK3 == "no" implies NO_BUILDLINK
898: . if !empty(USE_BUILDLINK3:M[nN][oO])
899: NO_BUILDLINK= yes
900: . endif
901: . if !defined(NO_BUILDLINK)
902: . include "../../mk/buildlink3/bsd.buildlink3.mk"
903: . endif
904:
905: ##### "depends" target implementation
906:
1.1540.2.1 tv 907: # Remove some redundant dependencies from the DEPENDS list.
908: . include "../../mk/reduce-depends.mk"
1.1067 jlam 909:
1.1540.2.1 tv 910: _REAL_TARGETS.depends+= depends-message
1.1466 xtraeme 911:
1.1540.2.5 tv 912: #===> "do-depends"
1.1 agc 913:
1.1540.2.5 tv 914: _REAL_TARGETS.depends+= do-depends
915: .PHONY: do-depends
1.1 agc 916:
1.1540.2.1 tv 917: .endif # !empty(PKG_PHASES:Mdepends) && !defined(_PKG_SKIPPED)
1.177 agc 918:
1.1540.2.1 tv 919: ############################################################################
920: # Phase `extract'
921: ############################################################################
1.135 agc 922:
1.1540.2.1 tv 923: .if !empty(PKG_PHASES:Mextract) && !defined(_PKG_SKIPPED)
1.1 agc 924:
1.1540.2.1 tv 925: _REAL_TARGETS.extract+= extract-message
926:
927: #===> "build-defs-message"
928: # if BUILD_DEFS is non-empty, show a notice the the builder
929:
930: . if !empty(PKGSRC_SHOW_BUILD_DEFS:M[yY][eE][sS])
931: _REAL_TARGETS.extract+= build-defs-message
932: .PHONY: build-defs-message
933: build-defs-message:
934: . if !empty(BUILD_DEFS)
935: @${ECHO} "=========================================================================="
936: @${ECHO} "The following variables will affect the build process of this package,"
937: @${ECHO} "${PKGNAME}. Their current value is shown below:"
938: @${ECHO} ""
939: . for var in ${BUILD_DEFS}
940: . if !defined(${var})
941: @${ECHO} " * ${var} (not defined)"
942: . elif defined(${var}) && empty(${var})
943: @${ECHO} " * ${var} (defined)"
944: . else
945: @${ECHO} " * ${var} = ${${var}}"
946: . endif
947: . endfor
948: @${ECHO} ""
949: @${ECHO} "You may want to abort the process now with CTRL-C and change their value"
950: @${ECHO} "before continuing. Be sure to run \`${MAKE} clean' after"
951: @${ECHO} "the changes."
952: @${ECHO} "=========================================================================="
953: . endif
1.789 hubertf 954: . endif
1.1540.2.1 tv 955:
956: #===> "pre-extract"
957:
958: _REAL_TARGETS.extract+= pre-extract
959: .PHONY: pre-extract
960: pre-extract: .OPTIONAL
961:
962: #===> "do-extract"
963:
964: _REAL_TARGETS.extract+= do-extract
965: .PHONY: do-extract
966: #do-extract:
967:
968: #===> "post-extract"
969:
970: _REAL_TARGETS.extract+= post-extract
971: .PHONY: post-extract
972: post-extract: .OPTIONAL
973:
974: .endif # !empty(PKG_PHASES:Mextract) && !defined(_PKG_SKIPPED)
975:
976: ############################################################################
977: # Phase `patch'
978: ############################################################################
979:
980: .if !empty(PKG_PHASES:Mpatch) && !defined(_PKG_SKIPPED)
981:
982: # determine if we need a working patch(1).
983: . if defined(PATCHFILES)
984: _NEED_PATCH= YES
985: . elif defined(_OPSYS_GPATCH_REQD) && !empty(_OPSYS_GPATCH_REQD:M[yY][eE][sS])
986: _NEED_PATCH= YES
1.1315 cube 987: . else
1.1540.2.1 tv 988: _NEED_PATCH!= if [ -d ${PATCHDIR} ]; then \
989: if [ "`${ECHO} ${PATCHDIR}/patch-*`" != "${PATCHDIR}/patch-*" ]; then \
990: ${ECHO} YES; \
991: else \
992: ${ECHO} NO; \
993: fi \
994: else \
995: ${ECHO} NO; \
996: fi
1.1315 cube 997: . endif
1.1540.2.1 tv 998:
999: . if ${_NEED_PATCH} == "YES"
1000: USE_GNU_TOOLS+= patch
1.1315 cube 1001: . endif
1.1540.2.1 tv 1002:
1003: . if defined(PATCH_DEBUG) || defined(PKG_VERBOSE)
1004: PATCH_DEBUG_TMP= yes
1.1315 cube 1005: . endif
1.1540.2.1 tv 1006: PATCH_DEBUG_TMP?= no
1007:
1008: PATCH_STRIP?= -p0
1009: . if ${PATCH_DEBUG_TMP} == "yes"
1010: PATCH_ARGS?= -d ${WRKSRC} -E ${PATCH_STRIP}
1011: . endif
1012: PATCH_ARGS?= -d ${WRKSRC} --forward --quiet -E ${PATCH_STRIP}
1.1 agc 1013:
1.1540.2.1 tv 1014: PATCH_ARGS+= ${BATCH:D--batch}
1015: . if defined(_PATCH_CAN_BACKUP) && (${_PATCH_CAN_BACKUP} == "yes")
1016: PATCH_ARGS+= ${_PATCH_BACKUP_ARG} .orig
1017: . endif
1018: PATCH_FUZZ_FACTOR?= -F0 # Default to zero fuzz
1.1 agc 1019:
1.1540.2.1 tv 1020: # The following variables control how "distribution" patches are extracted
1021: # and applied to the package sources.
1022: #
1023: # PATCH_DIST_STRIP is a patch option that sets the pathname strip count.
1024: # PATCH_DIST_ARGS is the list of arguments to pass to the patch command.
1025: # PATCH_DIST_CAT is the command that outputs the patch to stdout.
1026: #
1027: # For each of these variables, there is a patch-specific variant that
1028: # may be set, i.e. PATCH_DIST_STRIP.<patch>, PATCH_DIST_ARGS.<patch>,
1029: # PATCH_DIST_CAT.<patch>.
1030: #
1031: PATCH_DIST_STRIP?= -p0
1032: . for i in ${PATCHFILES}
1033: PATCH_DIST_STRIP.${i:S/=/--/}?= ${PATCH_DIST_STRIP}
1034: . if defined(PATCH_DIST_ARGS)
1035: PATCH_DIST_ARGS.${i:S/=/--/}?= ${PATCH_DIST_ARGS}
1036: . elif ${PATCH_DEBUG_TMP} == "yes"
1037: PATCH_DIST_ARGS.${i:S/=/--/}?= -d ${WRKSRC} -E ${PATCH_DIST_STRIP.${i:S/=/--/}}
1038: . else
1039: PATCH_DIST_ARGS.${i:S/=/--/}?= -d ${WRKSRC} --forward --quiet -E ${PATCH_DIST_STRIP.${i:S/=/--/}}
1040: . endif
1041: . endfor
1042: . if defined(BATCH)
1043: PATCH_DIST_ARGS+= --batch
1044: . for i in ${PATCHFILES}
1045: PATCH_DIST_ARGS.${i:S/=/--/}+= --batch
1046: . endfor
1047: . endif
1048: . if defined(_PATCH_CAN_BACKUP) && (${_PATCH_CAN_BACKUP} == "yes")
1049: PATCH_DIST_ARGS+= ${_PATCH_BACKUP_ARG} .orig_dist
1050: . for i in ${PATCHFILES}
1051: PATCH_DIST_ARGS.${i:S/=/--/}+= ${_PATCH_BACKUP_ARG} .orig_dist
1052: . endfor
1053: . endif
1054: PATCH_DIST_CAT?= { case $$patchfile in \
1055: *.Z|*.gz) ${GZCAT} $$patchfile ;; \
1056: *.bz2) ${BZCAT} $$patchfile ;; \
1057: *) ${CAT} $$patchfile ;; \
1058: esac; }
1059: . for i in ${PATCHFILES}
1060: PATCH_DIST_CAT.${i:S/=/--/}?= { patchfile=${i}; ${PATCH_DIST_CAT}; }
1061: . endfor
1.1 agc 1062:
1.1540.2.1 tv 1063: . if !empty(PKGSRC_SHOW_PATCH_ERRORMSG:M[yY][eE][sS])
1064: PKGSRC_PATCH_FAIL= \
1065: if [ -n "${PKG_OPTIONS}" ] || [ -n "${_LOCALPATCHFILES}" ]; then \
1.1540.2.9 tv 1066: ${ECHO} "=========================================================================="; \
1.1540.2.1 tv 1067: ${ECHO}; \
1.1540.2.9 tv 1068: ${ECHO} "Some of the selected build options and/or local patches may be incompatible."; \
1.1540.2.1 tv 1069: ${ECHO} "Please try building with fewer options or patches."; \
1070: ${ECHO}; \
1.1540.2.9 tv 1071: ${ECHO} "=========================================================================="; \
1.1540.2.1 tv 1072: fi; exit 1
1073: . endif
1074: PKGSRC_PATCH_FAIL?= exit 1
1.602 hubertf 1075:
1.1540.2.3 tv 1076: _REAL_TARGETS.patch+= patch-message pre-patch do-patch post-patch
1077:
1.1540.2.1 tv 1078: .endif # !empty(PKG_PHASES:Mpatch) && !defined(_PKG_SKIPPED)
1.254 tron 1079:
1.1540.2.1 tv 1080: ############################################################################
1081: # Phase `tools'
1082: ############################################################################
1.254 tron 1083:
1.1540.2.1 tv 1084: do-tools: .OPTIONAL
1085: .if !empty(PKG_PHASES:Mtools) && !defined(_PKG_SKIPPED)
1.273 tv 1086:
1.1540.2.3 tv 1087: _REAL_TARGETS.tools+= tools-message pre-tools do-tools post-tools
1088:
1.1540.2.1 tv 1089: .endif # !empty(PKG_PHASES:Mtools) && !defined(_PKG_SKIPPED)
1090:
1091: ############################################################################
1092: # Phase `wrapper'
1093: ############################################################################
1.1 agc 1094:
1.1540.2.1 tv 1095: do-wrapper: .OPTIONAL
1096: .if !empty(PKG_PHASES:Mwrapper) && !defined(_PKG_SKIPPED)
1.907 agc 1097:
1.1540.2.1 tv 1098: . include "../../mk/wrapper/bsd.wrapper.mk"
1.1 agc 1099:
1.1540.2.3 tv 1100: _REAL_TARGETS.wrapper+= wrapper-message pre-wrapper do-wrapper post-wrapper
1101:
1.1540.2.1 tv 1102: .endif # !empty(PKG_PHASES:Mwrapper) && !defined(_PKG_SKIPPED)
1103:
1104: ############################################################################
1105: # Phase `configure'
1106: ############################################################################
1107:
1108: .if !empty(PKG_PHASES:Mconfigure) && !defined(_PKG_SKIPPED)
1109:
1110: CONFIGURE_ENV+= ${ALL_ENV}
1111: CONFIGURE_ENV+= ac_given_INSTALL="`${TYPE} ${INSTALL} | ${AWK} '{ print $$NF }'` -c -o ${BINOWN} -g ${BINGRP}"
1112: CONFIGURE_ENV+= AWK=${AWK:Q}
1113: CONFIGURE_ENV+= INSTALL="`${TYPE} ${INSTALL} | ${AWK} '{ print $$NF }'` -c -o ${BINOWN} -g ${BINGRP}"
1114: CONFIGURE_ENV+= MAKE=${MAKE_PROGRAM:T:Q}
1115: CONFIGURE_ENV+= M4=${M4:Q}
1116: CONFIGURE_ENV+= YACC=${YACC:Q}
1.262 tv 1117:
1.1540.2.1 tv 1118: . if defined(GNU_CONFIGURE)
1119: #
1120: # If GNU_CONFIGURE is defined, then pass LIBS to the GNU configure script.
1121: # also pass in a CONFIG_SHELL to avoid picking up bash
1122: #
1123: CONFIG_SHELL?= ${SH}
1124: CONFIGURE_ENV+= CONFIG_SHELL=${CONFIG_SHELL}
1125: CONFIGURE_ENV+= install_sh=${INSTALL:Q}
1126: CONFIGURE_ENV+= LIBS=${LIBS:Q}
1.1540.2.19 tv 1127: CONFIGURE_ENV+= ${USE_LIBTOOL:Dlt_cv_sys_max_cmd_len=${_OPSYS_MAX_CMDLEN_CMD:D${_OPSYS_MAX_CMDLEN_CMD:sh}}}
1.996 jlam 1128: #
1.1366 jlam 1129: # GNU_CONFIGURE_PREFIX is the argument to the --prefix option passed to the
1.996 jlam 1130: # GNU configure script.
1131: #
1132: GNU_CONFIGURE_PREFIX?= ${PREFIX}
1133: CONFIGURE_ARGS+= --host=${MACHINE_GNU_PLATFORM}
1134: CONFIGURE_ARGS+= --prefix=${GNU_CONFIGURE_PREFIX}
1.1 agc 1135: HAS_CONFIGURE= yes
1.1540.2.1 tv 1136: . if defined(USE_X11)
1.1076 jlam 1137: CONFIGURE_ARGS+= --x-includes=${X11BASE}/include
1.1536 sketch 1138: CONFIGURE_ARGS+= --x-libraries=${X11BASE}/lib${LIBABISUFFIX}
1.1540.2.1 tv 1139: . endif
1.1456 reed 1140: CONFIGURE_HAS_INFODIR?= yes
1.1540.2.1 tv 1141: . if !empty(INFO_FILES) && !empty(CONFIGURE_HAS_INFODIR:M[yY][eE][sS])
1.1455 reed 1142: CONFIGURE_ARGS+= --infodir=${PREFIX}/${INFO_DIR}
1.1540.2.1 tv 1143: . endif
1.1397 grant 1144: #
1145: # By default, override config.guess and config.sub for GNU configure
1146: # packages. pkgsrc's updated versions of these scripts allows GNU
1147: # configure to recognise NetBSD ports such as shark.
1148: #
1.1403 jlam 1149: CONFIG_GUESS_OVERRIDE?= \
1150: config.guess */config.guess */*/config.guess
1151: CONFIG_SUB_OVERRIDE?= \
1152: config.sub */config.sub */*/config.sub
1.1540.2.12 tv 1153: CONFIG_RPATH_OVERRIDE?= # set by platform file as needed
1.1400 jlam 1154: #
1155: # By default, override config.status for GNU configure packages. We
1156: # never want it to execute after the configure phase has ended as it
1157: # might overwrite any post-configure changes we might have made to the
1158: # generated files.
1159: #
1160: CONFIG_STATUS_OVERRIDE?= \
1161: config.status */config.status */*/config.status
1.1540.2.1 tv 1162: . endif
1.865 jlam 1163:
1.1540.2.3 tv 1164: _REAL_TARGETS.configure+=configure-message pre-configure pre-configure-override do-configure post-configure
1165:
1.1540.2.1 tv 1166: .endif # !empty(PKG_PHASES:Mconfigure) && !defined(_PKG_SKIPPED)
1167:
1168: ############################################################################
1169: # Phase `build'
1170: ############################################################################
1171:
1172: .if !empty(PKG_PHASES:Mbuild) && !defined(_PKG_SKIPPED)
1173:
1.1540.2.3 tv 1174: _REAL_TARGETS.build+= build-message pre-build do-build post-build
1175:
1.1540.2.1 tv 1176: .endif # !empty(PKG_PHASES:Mbuild) && !defined(_PKG_SKIPPED)
1177:
1178: ############################################################################
1179: # Phase `test'
1180: ############################################################################
1181:
1182: .if !empty(PKG_PHASES:Mtest)
1.1540.2.3 tv 1183:
1184: _REAL_TARGETS.test+= test-message pre-test do-test post-test
1185:
1.1540.2.1 tv 1186: .endif # !empty(PKG_PHASES:Mtest)
1187:
1188: ############################################################################
1189: # Phase `install'
1190: ############################################################################
1191:
1192: .if !empty(PKG_PHASES:Minstall)
1193:
1194: ##### PLIST manipulation
1195:
1.1540.2.4 tv 1196: . include "../../mk/plist.mk"
1.1540.2.1 tv 1197:
1.1540.2.19 tv 1198: ##### Handle alternatives
1199:
1200: . include "../../mk/alternatives.mk"
1201:
1.1540.2.1 tv 1202: ##### Make subtargets for non-su portion of "install".
1203:
1204: #===> "install-check-pkgname"
1205:
1206: _REAL_TARGETS.install+= install-check-pkgname
1207: .PHONY: install-check-pkgname
1208: install-check-pkgname:
1209: ${_PKG_SILENT}${_PKG_DEBUG} \
1210: extractname=`${CAT} ${extract_COOKIE}`; \
1211: case "$$extractname" in \
1212: "") ${ECHO_MSG} "*** Warning: ${WRKDIR} may contain an older version of ${PKGBASE}" ;; \
1213: "${PKGNAME}") ;; \
1214: *) ${ECHO_MSG} "*** Warning: Package version $$extractname in ${WRKDIR}"; \
1215: ${ECHO_MSG} "*** Current version ${PKGNAME} in pkgsrc directory"; \
1216: ${ECHO_MSG} "*** Cleaning and rebuilding the newer version of the package..."; \
1217: ${MAKE} clean && ${MAKE} build ;; \
1218: esac
1219:
1220: #===> "do-su-install"
1221: # su to root, then run real-su-install
1222:
1223: _REAL_TARGETS.install+= do-su-install
1224:
1225: ##### Make subtargets for su portion of "install".
1226:
1227: #===> "message"
1228: # generate ${MESSAGE} from ${MESSAGE_SRC} by substituting
1229: # for MESSAGE_SUBST entries
1230:
1231: _REAL_TARGETS.su-install+= message
1232: .PHONY: message
1233: message: ${MESSAGE}
1234: . if defined(MESSAGE)
1235: ${MESSAGE}: ${MESSAGE_SRC}
1236: ${_PKG_SILENT}${_PKG_DEBUG} \
1237: if [ -z "${MESSAGE_SRC}" ]; then \
1238: ${ECHO} "${MESSAGE_SRC} not found."; \
1239: ${ECHO} "Please set MESSAGE_SRC correctly."; \
1240: else \
1241: ${CAT} ${MESSAGE_SRC} | \
1242: ${SED} ${MESSAGE_SUBST_SED} \
1243: > ${MESSAGE}; \
1244: fi
1.865 jlam 1245: . endif
1246:
1.1540.2.1 tv 1247: #===> "init-install"
1248: # check for conflicts and create install directories
1.1 agc 1249:
1.1540.2.1 tv 1250: _REAL_TARGETS.su-install+= init-install
1251: .PHONY: init-install
1252: init-install:
1253: . if !defined(NO_PKG_REGISTER) && !defined(FORCE_PKG_REGISTER) && \
1254: (${PKG_INSTALLATION_TYPE} == "overwrite")
1255: . if defined(CONFLICTS)
1256: ${_PKG_SILENT}${_PKG_DEBUG} \
1257: ${RM} -f ${WRKDIR}/.CONFLICTS
1258: . for conflict in ${CONFLICTS}
1259: ${_PKG_SILENT}${_PKG_DEBUG} \
1260: found="`${PKG_BEST_EXISTS} \"${conflict}\" || ${TRUE}`"; \
1261: if [ X"$$found" != X"" ]; then \
1262: ${ECHO} "$$found" >> ${WRKDIR}/.CONFLICTS; \
1263: fi
1264: . endfor
1265: ${_PKG_SILENT}${_PKG_DEBUG} \
1266: if [ -s ${WRKDIR}/.CONFLICTS ]; then \
1267: found=`${SED} -e s'|${_PKG_DBDIR}/||g' ${WRKDIR}/.CONFLICTS | tr '\012' ' '`; \
1268: ${ECHO_MSG} "${_PKGSRC_IN}> ${PKGNAME} conflicts with installed package(s): $$found found."; \
1269: ${ECHO_MSG} "*** They install the same files into the same place."; \
1270: ${ECHO_MSG} "*** Please remove $$found first with pkg_delete(1)."; \
1271: ${RM} -f ${WRKDIR}/.CONFLICTS; \
1272: exit 1; \
1273: fi
1274: . endif # CONFLICTS
1275: ${_PKG_SILENT}${_PKG_DEBUG} \
1276: found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \
1277: if [ "$$found" != "" ]; then \
1278: ${ECHO_MSG} "${_PKGSRC_IN}> $$found is already installed - perhaps an older version?"; \
1279: ${ECHO_MSG} "*** If so, you may use either of:"; \
1280: ${ECHO_MSG} "*** - \"pkg_delete $$found\" and \"${MAKE} reinstall\" to upgrade properly"; \
1281: ${ECHO_MSG} "*** - \"${MAKE} update\" to rebuild the package and all of its dependencies"; \
1282: ${ECHO_MSG} "*** - \"${MAKE} replace\" to replace only the package without re-linking"; \
1283: ${ECHO_MSG} "*** dependencies, risking various problems."; \
1284: exit 1; \
1285: fi
1.1540.2.15 tv 1286: . endif # !NO_PKG_REGISTER && !FORCE_PKG_REGISTER && overwrite
1.1540.2.1 tv 1287: . if ${PKG_INSTALLATION_TYPE} == "pkgviews"
1288: ${_PKG_SILENT}${_PKG_DEBUG} \
1289: found="`${PKG_INFO} -e ${PKGNAME} || ${TRUE}`"; \
1290: if [ "$$found" != "" ]; then \
1291: ${ECHO_MSG} "${_PKGSRC_IN}> $$found is already installed."; \
1292: exit 1; \
1293: fi
1294: . endif
1295: ${_PKG_SILENT}${_PKG_DEBUG}if [ `${SH} -c umask` -ne ${DEF_UMASK} ]; then \
1.1540.2.15 tv 1296: ${ECHO_MSG} "${_PKGSRC_IN}> Warning: your umask is \"`${SH} -c umask`"\".; \
1.1540.2.1 tv 1297: ${ECHO_MSG} "If this is not desired, set it to an appropriate value (${DEF_UMASK})"; \
1298: ${ECHO_MSG} "and install this package again by \`\`${MAKE} deinstall reinstall''."; \
1299: fi
1.1540.2.13 tv 1300: . if defined(PKG_DEVELOPER) && (${CHECK_FILES} == "YES")
1301: ${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG} "${_PKGSRC_IN}> Generating pre-install file lists"
1.1540.2.23 tv 1302: ${_PKG_SILENT}${_PKG_DEBUG}${FIND} ${PREFIX} -type f -or -type l -print \
1.1540.2.13 tv 1303: 2>/dev/null ${CHECK_FILES_SKIP_CMD} >${WRKDIR}/.prefix.pre \
1304: || ${TRUE}
1305: . if ${CHECK_FILES_STRICT} == "YES"
1.1540.2.23 tv 1306: ${_PKG_SILENT}${_PKG_DEBUG}${FIND} ${PKG_SYSCONFDIR} -print \
1.1540.2.13 tv 1307: 2>/dev/null ${CHECK_FILES_SKIP_CMD} >${WRKDIR}/.sysconfdir.pre \
1308: || ${TRUE}
1.1540.2.23 tv 1309: ${_PKG_SILENT}${_PKG_DEBUG}${FIND} ${VARBASE} -print \
1.1540.2.13 tv 1310: 2>/dev/null ${CHECK_FILES_SKIP_CMD} >${WRKDIR}/.varbase.pre \
1311: || ${TRUE}
1312: . endif
1313: . endif
1.1540.2.1 tv 1314: . if defined(INSTALLATION_DIRS) && !empty(INSTALLATION_DIRS)
1315: ${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG} "${_PKGSRC_IN}> Creating installation directories"
1316: ${_PKG_SILENT}${_PKG_DEBUG} \
1317: for dir in ${INSTALLATION_DIRS}; do \
1318: case $$dir in \
1319: /*) ;; \
1320: *bin|*bin/*|*libexec|*libexec/*) \
1321: ${INSTALL_PROGRAM_DIR} ${PREFIX}/$$dir ;; \
1322: *man/*) \
1323: ${INSTALL_MAN_DIR} ${PREFIX}/$$dir ;; \
1324: *) \
1325: ${INSTALL_DATA_DIR} ${PREFIX}/$$dir ;; \
1326: esac; \
1327: done
1328: . endif # INSTALLATION_DIRS
1329: . if !defined(NO_MTREE)
1330: ${_PKG_SILENT}${_PKG_DEBUG}if [ `${ID} -u` = `${ID} -u ${ROOT_USER}` ]; then \
1331: if [ ! -f ${MTREE_FILE} ]; then \
1332: ${ECHO_MSG} "Error: mtree file \"${MTREE_FILE}\" is missing."; \
1333: exit 1; \
1334: else \
1335: if [ ! -d ${PREFIX} ]; then \
1336: ${MKDIR} ${PREFIX}; \
1337: fi; \
1338: ${MTREE} ${MTREE_ARGS} ${PREFIX}/; \
1339: fi; \
1340: else \
1341: ${ECHO_MSG} "Warning: not superuser, can't run mtree."; \
1342: ${ECHO_MSG} "Become ${ROOT_USER} and try again to ensure correct permissions."; \
1343: fi
1344: . else
1345: ${_PKG_SILENT}${_PKG_DEBUG}[ -d ${PREFIX} ] || ${MKDIR} ${PREFIX}
1346: . endif # !NO_MTREE
1.1 agc 1347:
1.1540.2.15 tv 1348: #===> "pre-install-fake-pkg"
1349:
1350: . if !defined(NO_PKG_REGISTER)
1351: _REAL_TARGETS.su-install+= pre-install-fake-pkg
1352: . endif # !NO_PKG_REGISTER
1353:
1.1540.2.1 tv 1354: #===> "pre-install-script"
1355:
1356: _REAL_TARGETS.su-install+= pre-install-script
1357: .PHONY: pre-install-script
1358: pre-install-script: .OPTIONAL
1359:
1360: #===> "pre-install"
1361:
1362: _REAL_TARGETS.su-install+= pre-install
1363: .PHONY: pre-install
1364: pre-install: .OPTIONAL
1365:
1366: #===> "do-install"
1367:
1368: _REAL_TARGETS.su-install+= do-install
1.1540.2.5 tv 1369: .PHONY: do-install
1370: .if !target(do-install)
1371: do-install:
1372: . for DIR in ${INSTALL_DIRS}
1373: ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} -f ${MAKEFILE} ${INSTALL_TARGET}
1374: . endfor
1375: .endif
1.1540.2.1 tv 1376:
1377: #===> "post-install"
1378:
1379: _REAL_TARGETS.su-install+= post-install
1380: .PHONY: post-install
1381: post-install: .OPTIONAL
1382:
1383: #===> "plist"
1384: #
1385: # PLIST must be generated at this late point (instead of
1386: # depending on it somewhere earlier), because it needs
1387: # to be created _after_ the {pre,do,post}-install
1388: # targets are run.
1389: #
1390: # We generate _before_ post-install-script is run so
1391: # that the real config files and rc.d scripts aren't
1392: # listed in the PLIST.
1393: #
1394: _REAL_TARGETS.su-install+= plist
1395: .PHONY: plist
1396: plist: ${PLIST}
1397:
1.1540.2.13 tv 1398: #===> "post-install-check-files"
1399:
1400: .if defined(PKG_DEVELOPER) && (${CHECK_FILES} == "YES")
1401: _REAL_TARGETS.su-install+= post-install-check-files
1402: .PHONY: post-install-check-files
1403: post-install-check-files:
1404: ${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG} "${_PKGSRC_IN}> Generating post-install file lists"
1.1540.2.23 tv 1405: ${_PKG_SILENT}${_PKG_DEBUG}${FIND} ${PREFIX} -type f -or -type l -print \
1.1540.2.13 tv 1406: 2>/dev/null ${CHECK_FILES_SKIP_CMD} >${WRKDIR}/.prefix.post \
1407: || ${TRUE}
1408: . if ${CHECK_FILES_STRICT} == "YES"
1.1540.2.23 tv 1409: ${_PKG_SILENT}${_PKG_DEBUG}${FIND} ${PKG_SYSCONFDIR} -print \
1.1540.2.13 tv 1410: 2>/dev/null ${CHECK_FILES_SKIP_CMD} >${WRKDIR}/.sysconfdir.post\
1411: || ${TRUE}
1.1540.2.23 tv 1412: ${_PKG_SILENT}${_PKG_DEBUG}${FIND} ${VARBASE} -print \
1.1540.2.13 tv 1413: 2>/dev/null ${CHECK_FILES_SKIP_CMD} >${WRKDIR}/.varbase.post \
1414: || ${TRUE}
1415: . endif
1416: .endif
1417:
1.1540.2.1 tv 1418: #===> "post-install-script"
1419:
1420: _REAL_TARGETS.su-install+= post-install-script
1421: .PHONY: post-install-script
1422: post-install-script: .OPTIONAL
1423:
1424: #===> "post-install-man"
1425: # fixup manpages to match actual installed files
1426:
1427: _REAL_TARGETS.su-install+= post-install-man
1428: .PHONY: post-install-man
1429: post-install-man:
1430: ${_PKG_SILENT}${_PKG_DEBUG}newmanpages=`${EGREP} -h \
1431: '^([^@/]*/)*man/([^/]*/)?(man[1-9ln]/.*\.[1-9ln]|cat[1-9ln]/.*\.0)(\.gz)?$$' \
1432: ${PLIST} 2>/dev/null || ${TRUE}`; \
1433: if [ X"${MANCOMPRESSED}" != X"" -a X"${MANZ}" = X"" ]; then \
1434: ${ECHO_MSG} "${_PKGSRC_IN}> [Automatic manual page handling]"; \
1435: ${ECHO_MSG} "${_PKGSRC_IN}> Decompressing manual pages for ${PKGNAME}"; \
1436: for manpage in $$newmanpages; do \
1437: manpage=`${ECHO} $$manpage | ${SED} -e 's|\.gz$$||'`; \
1438: if [ -h ${PREFIX}/$$manpage.gz ]; then \
1439: set - `${LS} -l ${PREFIX}/$$manpage.gz | ${SED} -e 's|\.gz$$||'`; \
1440: shift `expr $$# - 1`; \
1441: ${RM} -f ${PREFIX}/$$manpage; \
1442: ${LN} -s $${1} ${PREFIX}/$$manpage; \
1443: ${RM} ${PREFIX}/$$manpage.gz; \
1444: else \
1445: ${GUNZIP_CMD} ${PREFIX}/$$manpage.gz; \
1446: fi; \
1447: if [ X"${PKG_VERBOSE}" != X"" ]; then \
1448: ${ECHO_MSG} "$$manpage"; \
1449: fi; \
1450: done; \
1451: fi; \
1452: if [ X"${MANCOMPRESSED}" = X"" -a X"${MANZ}" != X"" ]; then \
1453: ${ECHO_MSG} "${_PKGSRC_IN}> [Automatic manual page handling]"; \
1454: ${ECHO_MSG} "${_PKGSRC_IN}> Compressing manual pages for ${PKGNAME}"; \
1455: for manpage in $$newmanpages; do \
1456: manpage=`${ECHO} $$manpage | ${SED} -e 's|\.gz$$||'`; \
1457: if [ -h ${PREFIX}/$$manpage ]; then \
1.1540.2.9 tv 1458: set - `${LS} -l ${PREFIX}/$$manpage`; \
1.1540.2.1 tv 1459: shift `expr $$# - 1`; \
1460: ${RM} -f ${PREFIX}/$$manpage.gz; \
1461: ${LN} -s $${1}.gz ${PREFIX}/$$manpage.gz; \
1462: ${RM} ${PREFIX}/$$manpage; \
1463: else \
1464: ${GZIP_CMD} ${PREFIX}/$$manpage; \
1465: fi; \
1466: if [ X"${PKG_VERBOSE}" != X"" ]; then \
1467: ${ECHO_MSG} "$$manpage"; \
1468: fi; \
1469: done; \
1470: fi
1471:
1472: #===> "post-install-shlib"
1473:
1474: . if ${_DO_SHLIB_CHECKS} == "yes"
1475: . if ${PKG_INSTALLATION_TYPE} == "overwrite"
1476: _REAL_TARGETS.su-install+= post-install-shlib
1477: .PHONY: post-install-shlib
1478: post-install-shlib:
1479: ${_PKG_SILENT}${_PKG_DEBUG} \
1480: ${MAKE} ${MAKEFLAGS} do-shlib-handling SHLIB_PLIST_MODE=0
1481: . endif
1482: . endif
1483:
1484: #===> "post-install-message"
1485: # display MESSAGE, if specified
1486:
1487: . ifdef MESSAGE
1488: _REAL_TARGETS.su-install+= post-install-message
1489: .PHONY: post-install-message
1490: post-install-message:
1491: @${ECHO_MSG} "${_PKGSRC_IN}> Please note the following:"
1492: @${ECHO_MSG} ""
1493: @${CAT} ${MESSAGE}
1494: @${ECHO_MSG} ""
1495: . if !empty(PKGSRC_MESSAGE_RECIPIENTS)
1496: ${_PKG_SILENT}${_PKG_DEBUG} \
1497: (${ECHO} "The ${PKGNAME} package was installed on `${HOSTNAME_CMD}` at `date`"; \
1498: ${ECHO} ""; \
1499: ${ECHO} "Please note the following:"; \
1500: ${ECHO} ""; \
1501: ${CAT} ${MESSAGE}; \
1502: ${ECHO} "") | \
1503: ${MAIL_CMD} -s"Package ${PKGNAME} installed on `${HOSTNAME_CMD}`" ${PKGSRC_MESSAGE_RECIPIENTS}
1504: . endif
1505: . endif
1.1433 grant 1506:
1.1540.2.15 tv 1507: #===> "register-pkg"
1.1370 jlam 1508:
1.1540.2.15 tv 1509: . if !defined(NO_PKG_REGISTER)
1510: _REAL_TARGETS.su-install+= register-pkg
1511: . endif # !NO_PKG_REGISTER
1.1453 jlam 1512:
1.1540.2.1 tv 1513: #===> "check-shlibs"
1.1032 jlam 1514:
1.1540.2.1 tv 1515: . if defined(PKG_DEVELOPER) && (${CHECK_SHLIBS} == "YES")
1516: _REAL_TARGETS.su-install+= check-shlibs
1.1492 tv 1517: . endif
1518:
1.1540.2.13 tv 1519: #===> "check-files"
1520:
1521: . if defined(PKG_DEVELOPER) && (${CHECK_FILES} == "YES")
1522: _REAL_TARGETS.su-install+= check-files
1523: . endif
1524:
1.1540.2.1 tv 1525: .endif # !empty(PKG_PHASES:Minstall)
1.1441 jmmv 1526:
1.1540.2.1 tv 1527: ############################################################################
1.1540.2.3 tv 1528: # Special install phase `replace'
1529: ############################################################################
1530:
1531: _REAL_TARGETS.replace+= do-su-replace
1532:
1533: _REAL_TARGETS.su-replace+=
1534:
1535: _REAL_TARGETS.undo-replace+= do-su-undo-replace
1536:
1537: ############################################################################
1.1540.2.1 tv 1538: # Phase `package'
1539: ############################################################################
1.1410 jlam 1540:
1.1540.2.5 tv 1541: .PHONY: descr
1542: descr: ${DESCR}
1543: ${DESCR}: ${DESCR_SRC}
1544: @${CAT} ${DESCR_SRC} >${DESCR}
1545: .if defined(HOMEPAGE)
1546: @\
1547: ${ECHO} >>${DESCR} ; \
1548: ${ECHO} "Homepage:" >>${DESCR} ; \
1549: ${ECHO} '${HOMEPAGE}' >>${DESCR}
1550: .endif
1551:
1.1540.2.3 tv 1552: _REAL_TARGETS.package+= do-su-package
1553:
1554: _REAL_TARGETS.su-package+=
1555:
1.1540.2.1 tv 1556: ############################################################################
1.1540.2.3 tv 1557: # Variables calculated after all the above, and recursion support
1.1540.2.1 tv 1558: ############################################################################
1.1374 jlam 1559:
1.1540.2.2 tv 1560: # explicit "-f Makefile" here to work around problems with the MAKEFILE var
1561: # and case-insensitive filesystems (see PR pkg/28392)
1562: #
1.1540.2.1 tv 1563: .for targ in ${_PKG_PHASES_ALL}
1564: .PHONY: recurse-${targ}
1565: recurse-${targ}:
1.1540.2.2 tv 1566: ${_PKG_SILENT}${_PKG_DEBUG}cd ${PKGDIR} && ${MAKE} -f Makefile ${targ}
1.1540.2.1 tv 1567: .endfor
1.1 agc 1568:
1.1540.2.1 tv 1569: # convenience target, to display make variables from command line
1570: # i.e. "make show-var VARNAME=var", will print var's value
1571: .PHONY: show-var show-var-noeval
1572: show-var show-var-noeval:
1573: @${ECHO} ${${VARNAME}:Q}
1.117 agc 1574:
1.1540.2.1 tv 1575: # enhanced version of target above, to display multiple variables
1576: .PHONY: show-vars show-vars-noeval
1577: show-vars show-vars-noeval:
1578: .for VARNAME in ${VARNAMES}
1579: @${ECHO} ${${VARNAME}:Q}
1580: .endfor
1.1 agc 1581:
1.1540.2.3 tv 1582: # Find out the PREFIX of dependencies where the PREFIX is needed at build time.
1583: .if defined(EVAL_PREFIX)
1584: . for def in ${EVAL_PREFIX}
1585: . if !defined(${def:C/=.*$//})
1586: ${def:C/=.*$//}_DEFAULT?=${LOCALBASE}
1.1540.2.24! tv 1587: _${def:C/=.*$//}_CMD= ${PKG_INFO} -qp ${def:C/^.*=//} 2>/dev/null | ${AWK} '{ print $$2; exit }' | ${GREP} . || ${ECHO} ${${def:C/=.*$//}_DEFAULT}
1.1540.2.3 tv 1588: ${def:C/=.*$//}= ${_${def:C/=.*$//}_CMD:sh}
1589: . endif
1590: . endfor
1591: .endif
1592:
1.1540.2.17 tv 1593: .if !defined(_PATH_ORIG)
1594: _PATH_ORIG:= ${PATH}
1595: MAKEFLAGS+= _PATH_ORIG=${_PATH_ORIG:Q}
1.1540.2.19 tv 1596: .endif
1.1540.2.17 tv 1597:
1.1540.2.19 tv 1598: .if !empty(PREPEND_PATH)
1.1540.2.1 tv 1599: # This is very Special. Because PREPEND_PATH is set with += in reverse order,
1600: # the awk expression reverses the order again (since bootstrap bmake doesn't
1601: # yet support the :[-1..1] construct).
1.1540.2.17 tv 1602: _PATH_CMD= ${ECHO} `${ECHO} ${PREPEND_PATH:Q} | ${AWK} '{ORS=":";for (i=NF;i>0;i--) print $$i}'`${_PATH_ORIG}
1.1540.2.1 tv 1603: PATH= ${_PATH_CMD:sh} # DOES NOT use :=, to defer evaluation
1604: .endif
1605:
1606: ############################################################################
1607: # User-visible make targets
1608: ############################################################################
1609:
1610: # Catch-all targets.
1611: # Without anything specified, assume "all". Also allow "dependall" to be
1612: # specified for those in the habit of using that in NetBSD main source.
1613: # Recurses to ensure that .if make() conditionals work as expected.
1.547 hubertf 1614:
1.1540.2.1 tv 1615: .if !empty(PKGSRC_RUN_TEST:M[yY][eE][sS])
1616: # only invoke "test" if requested; makes SMART_MESSAGES look nicer
1617: _PKG_ALL_TARGET= test
1618: .endif
1.547 hubertf 1619:
1.1540.2.1 tv 1620: .PHONY: all dependall
1621: .MAIN: all
1622: all dependall: recurse-${_PKG_ALL_TARGET:Ubuild}
1.1 agc 1623:
1.1540.2.5 tv 1624: # Depend is generally meaningless for arbitrary packages, but if someone wants
1625: # one they can override this. This is just to catch people who've gotten into
1626: # the habit of typing `${MAKE} depend all install' as a matter of course.
1627:
1628: .PHONY: depend
1629: depend: .OPTIONAL
1630:
1631: # Same goes for tags
1632: .PHONY: tags
1633: tags: .OPTIONAL
1634:
1.1540.2.3 tv 1635: ##### If this package will be skipped, use placebo targets.
1.1540.2.1 tv 1636:
1637: .if defined(_PKG_SKIPPED)
1.1540.2.3 tv 1638:
1639: . for targ in ${_PKG_PHASES_ALL} \
1640: replace undo-replace \
1641: update
1.1540.2.1 tv 1642: ${targ}:
1643: . if !defined(SKIP_SILENT)
1.1540.2.9 tv 1644: @for str in ${PKG_FAIL_REASON} ${PKG_SKIP_REASON}; do \
1645: ${ECHO} "${_PKGSRC_IN}> $$str"; \
1.547 hubertf 1646: done
1.789 hubertf 1647: . endif
1.1102 schmonz 1648: . if defined(PKG_FAIL_REASON)
1649: @${FALSE}
1.789 hubertf 1650: . endif
1.1540.2.1 tv 1651: . endfor
1.38 hubertf 1652:
1.1540.2.3 tv 1653: .else # !defined(_PKG_SKIPPED)
1.1 agc 1654:
1.1540.2.3 tv 1655: ##### Real targets. These don't have any commands attached; they simply defer
1656: ##### to other implementation targets below.
1.1 agc 1657:
1.1540.2.1 tv 1658: .PHONY: ${_PKG_PHASES_ALL} replace undo-replace
1659: fetch: real-fetch
1660: checksum: fetch real-checksum
1661: depends: checksum ${WRKDIR} acquire-depends-lock ${depends_COOKIE} release-depends-lock
1662: extract: depends acquire-extract-lock ${extract_COOKIE} release-extract-lock
1663: patch: extract acquire-patch-lock ${patch_COOKIE} release-patch-lock
1664: tools: patch acquire-tools-lock ${tools_COOKIE} release-tools-lock
1665: wrapper: tools acquire-wrapper-lock ${wrapper_COOKIE} release-wrapper-lock
1666: configure: wrapper acquire-configure-lock ${configure_COOKIE} release-configure-lock
1667: build: configure acquire-build-lock ${build_COOKIE} release-build-lock
1668: test: build acquire-test-lock ${test_COOKIE} release-test-lock
1669: install: test acquire-install-lock ${install_COOKIE} release-install-lock
1670: package: install acquire-package-lock ${package_COOKIE} release-package-lock
1671: replace: build real-replace
1672: undo-replace: real-undo-replace
1673:
1.1540.2.3 tv 1674: ##### *_COOKIE to real-* layer for targets which use cookies.
1675:
1676: . for targ in ${_PKG_PHASES_WRKDIR}
1677: ${${targ}_COOKIE}: real-${targ}
1.1540.2.8 tv 1678: ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f $@ && ${ECHO} ${PKGNAME} >$@
1.1540.2.3 tv 1679: . endfor
1680:
1681: # mark a stage as complete if its cookie (and all parent cookies) exist
1682: . if exists(${depends_COOKIE})
1683: ${depends_COOKIE}: .MADE
1684: . if exists(${extract_COOKIE})
1685: ${extract_COOKIE}: .MADE
1686: . if exists(${patch_COOKIE})
1687: ${patch_COOKIE}: .MADE
1688: . if exists(${tools_COOKIE})
1689: ${tools_COOKIE}: .MADE
1690: . if exists(${wrapper_COOKIE})
1691: ${wrapper_COOKIE}: .MADE
1692: . if exists(${configure_COOKIE})
1693: ${configure_COOKIE}: .MADE
1694: . if exists(${build_COOKIE})
1695: ${build_COOKIE}: .MADE
1696: . if exists(${test_COOKIE})
1697: ${test_COOKIE}: .MADE
1698: . if exists(${install_COOKIE})
1699: ${install_COOKIE}: .MADE
1700: . if exists(${package_COOKIE})
1701: ${package_COOKIE}: .MADE
1702: . endif
1703: . endif
1704: . endif
1705: . endif
1706: . endif
1707: . endif
1708: . endif
1709: . endif
1710: . endif
1711: . endif
1712:
1713: ##### NO_* for skipping phases
1714:
1715: . if defined(NO_DEPENDS) || (empty(DEPENDS) && empty(BUILD_DEPENDS))
1716: ${depends_COOKIE}: .MADE
1717: . endif
1718: . if defined(NO_TOOLS)
1719: ${tools_COOKIE}: .MADE
1720: . endif
1721: . if defined(NO_WRAPPER)
1722: ${wrapper_COOKIE}: .MADE
1723: . endif
1724: . if defined(NO_CONFIGURE)
1725: ${configure_COOKIE}: .MADE
1726: . endif
1727: . if defined(NO_BUILD)
1728: ${build_COOKIE}: .MADE
1729: . endif
1730: . if empty(PKGSRC_RUN_TEST:M[yY][eE][sS])
1731: real-test: .MADE
1732: . endif
1733: . if defined(NO_INSTALL)
1734: ${install_COOKIE}: .MADE
1735: . endif
1736:
1737: . if defined(NO_PACKAGE) && !defined(FORCE_PACKAGE)
1738: _REAL_TARGETS.package:= no-package
1739: no-package:
1740: . if !defined(SKIP_SILENT)
1741: @${ECHO_MSG} "${_PKGSRC_IN}> ${PKGNAME} may not be packaged: ${NO_PACKAGE}."
1742: . endif
1743: . endif
1744:
1745: . for targ in extract configure build install
1746: . if !empty(INTERACTIVE_STAGE:M${targ}) && defined(BATCH)
1747: _REAL_TARGETS.${targ}:= ${targ}-is-interactive
1748: ${targ}-is-interactive:
1749: @${ECHO} "*** The ${targ} stage of this package requires user interaction"
1750: @${ECHO} "*** Please ${targ} manually with \"cd ${PKGDIR} && ${MAKE} ${targ}\""
1751: @${FALSE}
1752: . endif
1753: . endfor
1754:
1755: ##### User-visible messages for most targets
1756:
1757: _PHASE_MSG.depends= Verifying dependencies
1758: _PHASE_MSG.extract= Extracting
1759: _PHASE_MSG.patch= Patching
1760: _PHASE_MSG.tools= Overriding tools
1761: _PHASE_MSG.wrapper= Creating toolchain wrappers
1762: _PHASE_MSG.configure= Configuring
1763: _PHASE_MSG.build= Building
1764: _PHASE_MSG.test= Testing
1765: _PHASE_MSG.install= Installing
1766: _PHASE_MSG.package= Packaging
1767:
1768: . for targ in ${_PKG_PHASES_WRKDIR}
1769: .PHONY: ${targ}-message
1770: ${targ}-message:
1771: @${ECHO_MSG} "${_PKGSRC_IN}> ${_PHASE_MSG.${targ}} for ${PKGNAME}"
1772: . endfor
1773:
1774: ##### real-* to actual component target layer
1775:
1776: # Simple dependencies are not used, deliberately, so that it is possible
1777: # to invoke a single subtarget by hand while working on a new package.
1778: #
1779: # Please note that the order of the targets in _REAL_TARGETS.<phase> is
1780: # important, and should not be modified (.ORDER is not recognized by
1781: # make(1) in a serial make; i.e., without "-j n").
1782:
1783: . for targ in ${_PKG_PHASES_ALL} replace undo-replace su-install
1784: .PHONY: real-${targ}
1785: .ORDER: ${_REAL_TARGETS.${targ}}
1786: real-${targ}: ${_REAL_TARGETS.${targ}}
1787: . endfor
1788:
1.1540.2.1 tv 1789: .endif # !defined(_PKG_SKIPPED)
1790:
1.1540.2.3 tv 1791: ##### su target support
1792:
1793: .for targ in install package replace undo-replace deinstall
1794: .PHONY: do-su-${targ}
1795: do-su-${targ}:
1796: ${_PKG_SILENT}${_PKG_DEBUG} \
1797: if [ `${ID} -u` = `${ID} -u ${ROOT_USER}` ]; then \
1798: ${MAKE} ${MAKEFLAGS} $$realtarget; \
1799: elif [ "X${BATCH}" != X"" ]; then \
1800: ${ECHO_MSG} "Warning: Batch mode, not superuser, can't run $$action for ${PKGNAME}."; \
1801: ${ECHO_MSG} "Become ${ROOT_USER} and try again to ensure correct permissions."; \
1802: else \
1803: args="DEINSTALLDEPENDS=${DEINSTALLDEPENDS}"; \
1804: if [ "X${FORCE_PKG_REGISTER}" != X"" ]; then \
1805: args="$$args FORCE_PKG_REGISTER=1"; \
1806: fi; \
1807: if [ "X${PKG_DEBUG_LEVEL}" != X"" ]; then \
1808: args="$$args PKG_DEBUG_LEVEL=${PKG_DEBUG_LEVEL}"; \
1809: fi; \
1810: if [ "X${PRE_ROOT_CMD}" != "X${TRUE}" ]; then \
1811: ${ECHO} "*** WARNING *** Running: ${PRE_ROOT_CMD}"; \
1812: ${PRE_ROOT_CMD}; \
1813: fi; \
1814: ${ECHO_MSG} "${_PKGSRC_IN}> Becoming ${ROOT_USER}@`${HOSTNAME_CMD}` to ${targ} ${PKGBASE}."; \
1815: ${ECHO_N} "`${ECHO} ${SU_CMD} | ${AWK} '{ print $$1 }'` ";\
1816: ${SU_CMD} "cd ${.CURDIR}; ${SETENV} PATH=$${PATH}:${SU_CMD_PATH_APPEND} ${MAKE} $$args ${MAKEFLAGS} real-su-${targ} $$realflags"; \
1817: fi
1818: .endfor
1819:
1.1540.2.1 tv 1820: ############################################################################
1821: # Package maintenance targets
1822: ############################################################################
1.1 agc 1823:
1.1540.2.1 tv 1824: # Checksumming utilities
1.1 agc 1825:
1.1540.2.1 tv 1826: .PHONY: makesum
1827: makesum: recurse-fetch uptodate-digest
1828: ${_PKG_SILENT}${_PKG_DEBUG} \
1829: newfile=${DISTINFO_FILE}.$$$$; \
1830: if [ -f ${DISTINFO_FILE} ]; then \
1831: ${GREP} '^.NetBSD' ${DISTINFO_FILE} > $$newfile || \
1832: (${ECHO_N} "$$" > $$newfile && \
1833: ${ECHO_N} "NetBSD" >> $$newfile && \
1834: ${ECHO} "$$" >> $$newfile) \
1835: else \
1836: ${ECHO_N} "$$" > $$newfile; \
1837: ${ECHO_N} "NetBSD" >> $$newfile; \
1838: ${ECHO} "$$" >> $$newfile; \
1839: fi; \
1840: ${ECHO} "" >> $$newfile; \
1841: cd ${DISTDIR}; \
1842: for sumfile in "" ${_CKSUMFILES}; do \
1843: if [ "X$$sumfile" = "X" ]; then continue; fi; \
1.1540.2.24! tv 1844: for a in "" ${DIGEST_ALGORITHMS}; do \
! 1845: if [ "X$$a" = "X" ]; then continue; fi; \
! 1846: ${DIGEST} $$a $$sumfile >> $$newfile; \
! 1847: done; \
1.1540.2.1 tv 1848: ${WC} -c $$sumfile | ${AWK} '{ print "Size (" $$2 ") = " $$1 " bytes" }' >> $$newfile; \
1849: done; \
1850: for ignore in "" ${_IGNOREFILES}; do \
1851: if [ "X$$ignore" = "X" ]; then continue; fi; \
1.1540.2.24! tv 1852: for a in "" ${DIGEST_ALGORITHMS}; do \
! 1853: if [ "X$$a" = "X" ]; then continue; fi; \
! 1854: ${ECHO} "$$a ($$ignore) = IGNORE" >> $$newfile; \
! 1855: done; \
1.1540.2.1 tv 1856: done; \
1857: if [ -f ${DISTINFO_FILE} ]; then \
1858: ${AWK} '$$2 ~ /\(patch-[a-z0-9]+\)/ { print $$0 }' < ${DISTINFO_FILE} >> $$newfile; \
1859: fi; \
1860: if ${CMP} -s $$newfile ${DISTINFO_FILE}; then \
1861: ${RM} -f $$newfile; \
1862: ${ECHO_MSG} "=> distinfo: distfiles part unchanged."; \
1863: else \
1864: ${MV} $$newfile ${DISTINFO_FILE}; \
1865: fi
1866:
1867: .PHONY: makepatchsum mps
1868: makepatchsum mps: uptodate-digest
1869: ${_PKG_SILENT}${_PKG_DEBUG} \
1870: newfile=${DISTINFO_FILE}.$$$$; \
1871: if [ -f ${DISTINFO_FILE} ]; then \
1872: ${AWK} '$$2 !~ /\(patch-[a-z0-9]+\)/ { print $$0 }' < ${DISTINFO_FILE} >> $$newfile; \
1873: else \
1874: ${ECHO_N} "$$" > $$newfile; \
1875: ${ECHO_N} "NetBSD" >> $$newfile; \
1876: ${ECHO} "$$" >> $$newfile; \
1877: ${ECHO} "" >> $$newfile; \
1878: fi; \
1879: if [ -d ${PATCHDIR} ]; then \
1880: (cd ${PATCHDIR}; \
1881: for sumfile in "" patch-*; do \
1882: if [ "X$$sumfile" = "X" ]; then continue; fi; \
1883: if [ "X$$sumfile" = "Xpatch-*" ]; then break; fi; \
1884: case $$sumfile in \
1885: patch-local-*) ;; \
1886: *.orig|*.rej|*~) continue ;; \
1.1540.2.24! tv 1887: *) ${ECHO} "${PATCH_DIGEST_ALGORITHM} ($$sumfile) = `${SED} -e '/\$$NetBSD.*/d' $$sumfile | ${DIGEST} ${DIGEST_ALGORITHM}`" >> $$newfile;; \
1.1540.2.1 tv 1888: esac; \
1889: done); \
1890: fi; \
1891: if ${CMP} -s $$newfile ${DISTINFO_FILE}; then \
1892: ${RM} -f $$newfile; \
1893: ${ECHO_MSG} "=> distinfo: patches part unchanged."; \
1894: else \
1895: ${MV} $$newfile ${DISTINFO_FILE}; \
1896: fi
1897:
1898: makedistinfo mdi distinfo: makesum makepatchsum
1899:
1900: ############################################################################
1901: # XXXTV CUT
1902: ############################################################################
1903:
1904: UPDATE_RUNNING?= NO
1905:
1906: #
1907: # _RESUME_TRANSFER:
1908: #
1909: # Macro to resume a previous transfer, needs to have defined
1910: # the following options in mk.conf:
1911: #
1912: # PKG_RESUME_TRANSFERS
1913: # FETCH_RESUME_ARGS (if FETCH_CMD != default)
1914: # FETCH_OUTPUT_ARGS (if FETCH_CMD != default)
1915: #
1916: # For example if you want to use wget (pkgsrc/net/wget):
1917: #
1918: # FETCH_CMD=wget
1919: # FETCH_RESUME_ARGS=-c
1920: # FETCH_OUTPUT_ARGS=-O
1921: #
1922: # How does it work?
1923: #
1924: # FETCH_CMD downloads the file and saves it temporally into $$bfile.temp
1925: # if the checksum match the correct one, $$bfile.temp is renamed to
1926: # the original name.
1927: #
1.1525 xtraeme 1928:
1.1477 xtraeme 1929: _RESUME_TRANSFER= \
1.1479 xtraeme 1930: tsize=`${AWK} '/^Size/ && $$2 == '"\"($$file)\""' { print $$4 }' ${DISTINFO_FILE}` || ${TRUE}; \
1.1525 xtraeme 1931: if [ ! -f "${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp" ]; then \
1932: ${CP} ${DISTDIR}/${DIST_SUBDIR}/$$bfile ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp; \
1.1540.2.9 tv 1933: fi; \
1.1525 xtraeme 1934: dsize=`${WC} -c < ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp`; \
1.1540.2.9 tv 1935: if [ "$$dsize" -eq "$$tsize" -a -f "${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp" ]; then \
1.1525 xtraeme 1936: ${MV} ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp ${DISTDIR}/${DIST_SUBDIR}/$$bfile; \
1.1540.2.9 tv 1937: fi; \
1.1478 agc 1938: case "$$tsize" in \
1939: "") ${ECHO_MSG} "No size in distinfo file (${DISTINFO_FILE})"; \
1940: break ;; \
1941: esac; \
1.1525 xtraeme 1942: if [ -n "$$ftp_proxy" -o -n "$$http_proxy" ]; then \
1.1477 xtraeme 1943: ${ECHO_MSG} "===> Resume is not supported by ftp(1) using http/ftp proxies."; \
1944: break; \
1945: else \
1.1540.2.9 tv 1946: if [ "$$dsize" -lt "$$tsize" ]; then \
1.1525 xtraeme 1947: if [ "${FETCH_CMD:T}" != "ftp" -a -z "${FETCH_RESUME_ARGS}" ]; then \
1.1479 xtraeme 1948: ${ECHO_MSG} "=> Resume transfers are not supported, FETCH_RESUME_ARGS is empty."; \
1949: break; \
1950: else \
1.1540.2.9 tv 1951: for res_site in $$sites; do \
1952: if [ -z "${FETCH_OUTPUT_ARGS}" ]; then \
1953: ${ECHO_MSG} "=> FETCH_OUTPUT_ARGS has to be defined."; \
1.1525 xtraeme 1954: break; \
1955: fi; \
1.1540.2.9 tv 1956: ${ECHO_MSG} "=> $$bfile not completed, resuming:"; \
1957: ${ECHO_MSG} "=> Downloaded: $$dsize Total: $$tsize."; \
1.1525 xtraeme 1958: ${ECHO_MSG}; \
1959: cd ${_DISTDIR}; \
1.1540.2.9 tv 1960: ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${FETCH_RESUME_ARGS} \
1.1525 xtraeme 1961: ${FETCH_OUTPUT_ARGS} $${bfile}.temp $${res_site}$${bfile}; \
1962: if [ $$? -eq 0 ]; then \
1.1540.2.9 tv 1963: ndsize=`${WC} -c < ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp`; \
1964: if [ "$$tsize" -eq "$$ndsize" ]; then \
1965: ${MV} ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp ${DISTDIR}/${DIST_SUBDIR}/$$bfile; \
1.1525 xtraeme 1966: fi; \
1.1479 xtraeme 1967: break; \
1968: fi; \
1969: done; \
1970: fi; \
1.1525 xtraeme 1971: elif [ "$$dsize" -gt "$$tsize" ]; then \
1.1540.2.9 tv 1972: ${ECHO_MSG} "==> Downloaded file larger than the recorded size."; \
1.1479 xtraeme 1973: break; \
1.1525 xtraeme 1974: fi; \
1.1477 xtraeme 1975: fi
1.1478 agc 1976:
1.895 fredb 1977: #
1978: # Define the elementary fetch macros.
1979: #
1.158 tron 1980: _FETCH_FILE= \
1.307 agc 1981: if [ ! -f $$file -a ! -f $$bfile -a ! -h $$bfile ]; then \
1.415 agc 1982: ${ECHO_MSG} "=> $$bfile doesn't seem to exist on this system."; \
1.444 hubertf 1983: if [ ! -w ${_DISTDIR}/. ]; then \
1984: ${ECHO_MSG} "=> Can't download to ${_DISTDIR} (permission denied?)."; \
1985: exit 1; \
1986: fi; \
1.175 agc 1987: for site in $$sites; do \
1.415 agc 1988: ${ECHO_MSG} "=> Attempting to fetch $$bfile from $${site}."; \
1.935 agc 1989: if [ -f ${DISTINFO_FILE} ]; then \
1990: ${AWK} 'NF == 5 && $$1 == "Size" && $$2 == "('$$bfile')" { printf("=> [%s %s]\n", $$4, $$5) }' ${DISTINFO_FILE}; \
1991: fi; \
1.175 agc 1992: if ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${site}$${bfile} ${FETCH_AFTER_ARGS}; then \
1.753 wiz 1993: if [ -n "${FAILOVER_FETCH}" -a -f ${DISTINFO_FILE} -a -f ${_DISTDIR}/$$bfile ]; then \
1994: alg=`${AWK} 'NF == 4 && $$2 == "('$$file')" && $$3 == "=" {print $$1;}' ${DISTINFO_FILE}`; \
1.699 agc 1995: if [ -z "$$alg" ]; then \
1.1540.2.24! tv 1996: alg=${PATCH_DIGEST_ALGORITHM};\
1.699 agc 1997: fi; \
1.676 agc 1998: CKSUM=`${DIGEST} $$alg < ${_DISTDIR}/$$bfile`; \
1.753 wiz 1999: CKSUM2=`${AWK} '$$1 == "'$$alg'" && $$2 == "('$$file')" {print $$4;}' <${DISTINFO_FILE}`; \
1.175 agc 2000: if [ "$$CKSUM" = "$$CKSUM2" -o "$$CKSUM2" = "IGNORE" ]; then \
1.873 wiz 2001: break; \
1.154 agc 2002: else \
1.415 agc 2003: ${ECHO_MSG} "=> Checksum failure - trying next site."; \
1.154 agc 2004: fi; \
1.300 hubertf 2005: elif [ ! -f ${_DISTDIR}/$$bfile ]; then \
1.415 agc 2006: ${ECHO_MSG} "=> FTP didn't fetch expected file, trying next site." ; \
1.175 agc 2007: else \
1.873 wiz 2008: break; \
1.175 agc 2009: fi; \
2010: fi \
2011: done; \
1.1540.2.9 tv 2012: if [ ! -f ${_DISTDIR}/$$bfile ]; then \
1.873 wiz 2013: ${ECHO_MSG} "=> Couldn't fetch $$bfile - please try to retrieve this";\
2014: ${ECHO_MSG} "=> file manually into ${_DISTDIR} and try again."; \
2015: exit 1; \
2016: fi; \
1.175 agc 2017: fi
1.158 tron 2018:
1.305 agc 2019: _CHECK_DIST_PATH= \
2020: if [ "X${DIST_PATH}" != "X" ]; then \
1.1540.2.9 tv 2021: for d in "" ${DIST_PATH:S/:/ /g}; do \
1.305 agc 2022: if [ "X$$d" = "X" -o "X$$d" = "X${DISTDIR}" ]; then continue; fi; \
2023: if [ -f $$d/${DIST_SUBDIR}/$$bfile ]; then \
2024: ${ECHO} "Using $$d/${DIST_SUBDIR}/$$bfile"; \
2025: ${RM} -f $$bfile; \
2026: ${LN} -s $$d/${DIST_SUBDIR}/$$bfile $$bfile; \
2027: break; \
2028: fi; \
2029: done; \
2030: fi
2031:
1.297 mjl 2032: #
1.941 fredb 2033: # Set up ORDERED_SITES to work out the exact list of sites for every file,
2034: # using the dynamic sites script, or sorting according to the master site
2035: # list or the patterns in MASTER_SORT or MASTER_SORT_REGEX as appropriate.
2036: # No actual sorting is done until ORDERED_SITES is expanded.
2037: #
1.944 fredb 2038: .if defined(MASTER_SORT) || defined(MASTER_SORT_REGEX)
1.297 mjl 2039: MASTER_SORT?=
2040: MASTER_SORT_REGEX?=
2041: MASTER_SORT_REGEX+= ${MASTER_SORT:S/./\\./g:C/.*/:\/\/[^\/]*&\//}
2042:
1.1338 wiz 2043: MASTER_SORT_AWK= BEGIN { RS = " "; ORS = " "; IGNORECASE = 1 ; gl = "${MASTER_SORT_REGEX:S/\\/\\\\/g}"; }
1.941 fredb 2044: . for srt in ${MASTER_SORT_REGEX}
1.1338 wiz 2045: MASTER_SORT_AWK+= /${srt:C/\//\\\//g}/ { good["${srt:S/\\/\\\\/g}"] = good["${srt:S/\\/\\\\/g}"] " " $$0 ; next; }
1.941 fredb 2046: . endfor
1.452 hubertf 2047: MASTER_SORT_AWK+= { rest = rest " " $$0; } END { n=split(gl, gla); for(i=1;i<=n;i++) { print good[gla[i]]; } print rest; }
2048:
1.895 fredb 2049: SORT_SITES_CMD= ${ECHO} $$unsorted_sites | ${AWK} '${MASTER_SORT_AWK}'
1.1338 wiz 2050: ORDERED_SITES= ${_MASTER_SITE_OVERRIDE} `${SORT_SITES_CMD:S/\\/\\\\/g:C/"/\"/g}`
1.895 fredb 2051: .else
1.896 fredb 2052: ORDERED_SITES= ${_MASTER_SITE_OVERRIDE} $$unsorted_sites
1.895 fredb 2053: .endif
1.297 mjl 2054:
1.895 fredb 2055: #
1.941 fredb 2056: # Associate each file to fetch with the correct site(s).
1.895 fredb 2057: #
1.944 fredb 2058: .if defined(DYNAMIC_MASTER_SITES)
2059: . for fetchfile in ${_ALLFILES}
1.1060 rh 2060: SITES_${fetchfile:T:S/=/--/}?= `${SH} ${FILESDIR}/getsite.sh ${fetchfile:T}`
1.944 fredb 2061: . endfor
2062: .endif
1.941 fredb 2063: .if !empty(_DISTFILES)
2064: . for fetchfile in ${_DISTFILES}
1.1060 rh 2065: SITES_${fetchfile:T:S/=/--/}?= ${MASTER_SITES}
1.941 fredb 2066: . endfor
2067: .endif
2068: .if !empty(_PATCHFILES)
2069: . for fetchfile in ${_PATCHFILES}
1.1060 rh 2070: SITES_${fetchfile:T:S/=/--/}?= ${PATCH_SITES}
1.941 fredb 2071: . endfor
2072: .endif
2073:
1.1003 agc 2074: # This code is only called in a batch case, to check for the presence of
2075: # the distfiles
1.1222 jmmv 2076: .PHONY: batch-check-distfiles
1.1003 agc 2077: batch-check-distfiles:
1.941 fredb 2078: ${_PKG_SILENT}${_PKG_DEBUG} \
1.1003 agc 2079: gotfiles=yes; \
2080: for file in "" ${_ALLFILES}; do \
2081: case "$$file" in \
2082: "") continue ;; \
2083: *) if [ ! -f ${DISTDIR}/$$file ]; then \
2084: gotfiles=no; \
2085: fi ;; \
2086: esac; \
2087: done; \
2088: case "$$gotfiles" in \
2089: no) ${ECHO} "*** This package requires user intervention to download the distfiles"; \
1.999 agc 2090: ${ECHO} "*** Please fetch the distfiles manually and place them in"; \
2091: ${ECHO} "*** ${DISTDIR}"; \
2092: [ ! -z "${MASTER_SITES}" ] && \
2093: ${ECHO} "*** The distfiles are available from ${MASTER_SITES}"; \
2094: [ ! -z "${HOMEPAGE}" ] && \
2095: ${ECHO} "*** See ${HOMEPAGE} for more details"; \
2096: ${ECHO}; \
1.1003 agc 2097: ${FALSE} ;; \
2098: esac
2099:
1.1222 jmmv 2100: .PHONY: do-fetch
1.1003 agc 2101: .if !target(do-fetch)
2102: do-fetch:
2103: . if !empty(_ALLFILES)
2104: ${_PKG_SILENT}${_PKG_DEBUG} \
2105: ${TEST} -d ${_DISTDIR} || ${MKDIR} ${_DISTDIR}
2106: . if ${INTERACTIVE_STAGE:Mfetch} == "fetch" && defined(BATCH)
2107: ${_PKG_SILENT}${_PKG_DEBUG} \
2108: ${MAKE} ${MAKEFLAGS} batch-check-distfiles
1.999 agc 2109: . else
2110: . for fetchfile in ${_ALLFILES}
1.1159 grant 2111: . if defined(_FETCH_MESSAGE)
1.941 fredb 2112: ${_PKG_SILENT}${_PKG_DEBUG} \
2113: file="${fetchfile}"; \
2114: if [ ! -f ${DISTDIR}/$$file ]; then \
2115: ${_FETCH_MESSAGE}; \
2116: fi
1.999 agc 2117: . else
1.941 fredb 2118: ${_PKG_SILENT}${_PKG_DEBUG} \
2119: cd ${_DISTDIR}; \
1.924 abs 2120: file="${fetchfile}"; \
2121: bfile="${fetchfile:T}"; \
1.1060 rh 2122: unsorted_sites="${SITES_${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"; \
1.895 fredb 2123: sites="${ORDERED_SITES}"; \
1.873 wiz 2124: ${_CHECK_DIST_PATH}; \
1.1480 xtraeme 2125: if ${TEST} "${PKG_RESUME_TRANSFERS:M[Yy][Ee][Ss]}" ; then \
2126: ${_FETCH_FILE}; ${_RESUME_TRANSFER}; \
2127: else \
2128: ${_FETCH_FILE}; \
2129: fi
1.999 agc 2130: . endif # defined(_FETCH_MESSAGE)
2131: . endfor
2132: . endif # INTERACTIVE_STAGE == fetch
1.941 fredb 2133: . endif # !empty(_ALLFILES)
1.646 dmcmahil 2134: .endif
2135:
1.929 jlam 2136: # Extract
2137:
2138: ${WRKDIR}:
2139: .if !defined(KEEP_WRKDIR)
2140: . if ${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once"
2141: . if !exists(${LOCKFILE})
2142: ${_PKG_SILENT}${_PKG_DEBUG}${RM} -rf ${WRKDIR}
2143: . endif
2144: . endif
2145: .endif
2146: ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${WRKDIR}
1.1540.2.19 tv 2147: ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${PKG_DB_TMPDIR}
1.929 jlam 2148: .ifdef WRKOBJDIR
2149: . if ${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once"
2150: . if !exists(${LOCKFILE})
2151: ${_PKG_SILENT}${_PKG_DEBUG} \
2152: ${RM} -f ${WRKDIR_BASENAME} || ${TRUE}
2153: . endif
2154: . endif
2155: ${_PKG_SILENT}${_PKG_DEBUG} \
2156: if ${LN} -s ${WRKDIR} ${WRKDIR_BASENAME} 2>/dev/null; then \
2157: ${ECHO} "${WRKDIR_BASENAME} -> ${WRKDIR}"; \
2158: fi
2159: .endif # WRKOBJDIR
1.1 agc 2160:
1.1396 wiz 2161: _EXTRACT_SUFFIXES= .tar.gz .tgz .tar.bz2 .tbz .tar.Z .tar _tar.gz
2162: _EXTRACT_SUFFIXES+= .shar.gz .shar.bz2 .shar.Z .shar
2163: _EXTRACT_SUFFIXES+= .zip
2164: _EXTRACT_SUFFIXES+= .lha .lzh
2165: _EXTRACT_SUFFIXES+= .Z .bz2 .gz
2166: _EXTRACT_SUFFIXES+= .zoo
1.1474 abs 2167: _EXTRACT_SUFFIXES+= .bin
1.1396 wiz 2168: _EXTRACT_SUFFIXES+= .rar
1.884 jlam 2169:
1.1540.2.1 tv 2170: .if (defined(PATCHFILES) && !empty(PATCHFILES:M*.bz2)) || \
2171: !empty(EXTRACT_ONLY:M*.bz2) || !empty(EXTRACT_ONLY:M*.tbz) || \
1.918 jlam 2172: !empty(EXTRACT_SUFX:M*.bz2) || !empty(EXTRACT_SUFX:M*.tbz)
1.884 jlam 2173: . if exists(/usr/bin/bzcat)
2174: BZCAT= /usr/bin/bzcat <
2175: . else
2176: BUILD_DEPENDS+= bzip2>=0.9.0b:../../archivers/bzip2
2177: BZCAT= ${LOCALBASE}/bin/bzcat
2178: . endif
2179: .endif
1.918 jlam 2180: .if !empty(EXTRACT_ONLY:M*.zip) || !empty(EXTRACT_SUFX:M*.zip)
1.917 jlam 2181: BUILD_DEPENDS+= unzip-[0-9]*:../../archivers/unzip
1.884 jlam 2182: .endif
1.918 jlam 2183: .if !empty(EXTRACT_ONLY:M*.lzh) || !empty(EXTRACT_ONLY:M*.lha) || \
2184: !empty(EXTRACT_SUFX:M*.lzh) || !empty(EXTRACT_SUFX:M*.lha)
1.1159 grant 2185: BUILD_DEPENDS+= lha>=114.9:../../archivers/lha
1.1004 grant 2186: .endif
2187: .if !defined(GZCAT)
1.1540.2.1 tv 2188: . if (defined(PATCHFILES) && !empty(PATCHFILES:M*.gz)) || \
2189: . !empty(EXTRACT_ONLY:M*.gz) || !empty(EXTRACT_ONLY:M*.tgz) || \
1.1004 grant 2190: !empty(EXTRACT_SUFX:M*.gz) || !empty(EXTRACT_SUFX:M*.tgz)
1.1516 tv 2191: BUILD_DEPENDS+= gzip-base>=1.2.4b:../../archivers/gzip-base
1.1004 grant 2192: GZCAT= ${LOCALBASE}/bin/zcat
2193: . endif
1.884 jlam 2194: .endif
1.1110 cjep 2195: .if !empty(EXTRACT_ONLY:M*.zoo) || !empty(EXTRACT_SUFX:M*.zoo)
2196: BUILD_DEPENDS+= unzoo-[0-9]*:../../archivers/unzoo
2197: .endif
1.1393 xtraeme 2198: .if !empty(EXTRACT_ONLY:M*.rar) || !empty(EXTRACT_SUFX:M*.rar)
2199: BUILD_DEPENDS+= unrar>=3.3.4:../../archivers/unrar
2200: .endif
1.884 jlam 2201:
2202: DECOMPRESS_CMD.tar.gz?= ${GZCAT}
2203: DECOMPRESS_CMD.tgz?= ${DECOMPRESS_CMD.tar.gz}
2204: DECOMPRESS_CMD.tar.bz2?= ${BZCAT}
2205: DECOMPRESS_CMD.tbz?= ${DECOMPRESS_CMD.tar.bz2}
1.930 jlam 2206: DECOMPRESS_CMD.tar.Z?= ${GZCAT}
1.884 jlam 2207: DECOMPRESS_CMD.tar?= ${CAT}
2208:
1.914 jlam 2209: DECOMPRESS_CMD.shar.gz?= ${GZCAT}
2210: DECOMPRESS_CMD.shar.bz2?= ${BZCAT}
2211: DECOMPRESS_CMD.shar.Z?= ${GZCAT}
2212: DECOMPRESS_CMD.shar?= ${CAT}
2213:
1.929 jlam 2214: DECOMPRESS_CMD.Z?= ${GZCAT}
2215: DECOMPRESS_CMD.bz2?= ${BZCAT}
2216: DECOMPRESS_CMD.gz?= ${GZCAT}
2217:
1.884 jlam 2218: DECOMPRESS_CMD?= ${GZCAT}
1.1396 wiz 2219: .for __suffix__ in ${_EXTRACT_SUFFIXES}
1.884 jlam 2220: . if !defined(DECOMPRESS_CMD${__suffix__})
2221: DECOMPRESS_CMD${__suffix__}?= ${DECOMPRESS_CMD}
2222: . endif
2223: .endfor
2224:
2225: # If this is empty, then everything gets extracted.
2226: EXTRACT_ELEMENTS?= # empty
2227:
1.929 jlam 2228: DOWNLOADED_DISTFILE= $${extract_file}
1.240 agc 2229:
1.1304 jlam 2230: EXTRACT_CMD.zip?= ${LOCALBASE}/bin/unzip ${EXTRACT_CMD_OPTS.zip} $${extract_file}
2231: EXTRACT_CMD_OPTS.zip?= -Laqo
2232: EXTRACT_CMD.lha?= ${LOCALBASE}/bin/lha ${EXTRACT_CMD_OPTS.lha} $${extract_file}
2233: EXTRACT_CMD_OPTS.lha?= xq
1.929 jlam 2234: EXTRACT_CMD.lzh?= ${EXTRACT_CMD.lha}
1.1304 jlam 2235: EXTRACT_CMD_OPTS.lzh?= ${EXTRACT_CMD_OPTS.lha}
2236: EXTRACT_CMD.zoo?= ${LOCALBASE}/bin/unzoo ${EXTRACT_CMD_OPTS.zoo} $${extract_file}
2237: EXTRACT_CMD_OPTS.zoo?= -x
1.1393 xtraeme 2238: EXTRACT_CMD.rar?= ${LOCALBASE}/bin/unrar ${EXTRACT_CMD_OPTS.rar} $${extract_file}
2239: EXTRACT_CMD_OPTS.rar?= x -inul
1.1511 tv 2240: EXTRACT_ENV.bin?= # empty
2241: EXTRACT_CMD.bin?= ${ECHO} yes | ${SETENV} ${EXTRACT_ENV.bin} $${extract_file} ${EXTRACT_CMD_OPTS.bin} >/dev/null
1.929 jlam 2242:
2243: .for __suffix__ in .gz .bz2 .Z
2244: EXTRACT_CMD${__suffix__}?= ${DECOMPRESS_CMD${__suffix__}} $${extract_file} > `${BASENAME} $${extract_file} ${__suffix__}`
2245: .endfor
1.914 jlam 2246:
2247: .for __suffix__ in .shar.gz .shar.bz2 .shar.Z .shar
1.929 jlam 2248: EXTRACT_CMD${__suffix__}?= ${DECOMPRESS_CMD${__suffix__}} $${extract_file} | ${SH}
1.914 jlam 2249: .endfor
1.884 jlam 2250:
1.1434 wiz 2251: # If EXTRACT_USING_PAX is defined, use pax in preference to (GNU) tar.
1.884 jlam 2252: #
2253: .if defined(EXTRACT_USING_PAX)
1.1434 wiz 2254: _DFLT_EXTRACT_CMD?= ${DECOMPRESS_CMD} $${extract_file} | ${PAX} -O -r ${EXTRACT_ELEMENTS}
1.884 jlam 2255: .else
1.929 jlam 2256: _DFLT_EXTRACT_CMD?= ${DECOMPRESS_CMD} $${extract_file} | ${GTAR} -xf - ${EXTRACT_ELEMENTS}
1.884 jlam 2257: .endif
2258:
1.1396 wiz 2259: .for __suffix__ in ${_EXTRACT_SUFFIXES}
1.884 jlam 2260: . if !defined(EXTRACT_CMD${__suffix__})
2261: . if defined(EXTRACT_USING_PAX)
1.1434 wiz 2262: EXTRACT_CMD${__suffix__}?= ${DECOMPRESS_CMD${__suffix__}} $${extract_file} | ${PAX} -O -r ${EXTRACT_ELEMENTS}
1.884 jlam 2263: . else
1.929 jlam 2264: EXTRACT_CMD${__suffix__}?= ${DECOMPRESS_CMD${__suffix__}} $${extract_file} | ${GTAR} -xf - ${EXTRACT_ELEMENTS}
1.884 jlam 2265: . endif
2266: . endif
2267: .endfor
2268:
1.929 jlam 2269: # _SHELL_EXTRACT is a "subroutine" for extracting an archive. It extracts
2270: # the contents of archive named by the shell variable "extract_file" based
2271: # on the file extension of the archive.
1.913 jlam 2272: #
1.929 jlam 2273: _SHELL_EXTRACT= case $${extract_file} in
1.1396 wiz 2274: .for __suffix__ in ${_EXTRACT_SUFFIXES}
1.929 jlam 2275: _SHELL_EXTRACT+= *${__suffix__}) ${EXTRACT_CMD${__suffix__}} ;;
1.913 jlam 2276: .endfor
1.929 jlam 2277: _SHELL_EXTRACT+= *) ${_DFLT_EXTRACT_CMD} ;;
2278: _SHELL_EXTRACT+= esac
1.913 jlam 2279:
1.929 jlam 2280: EXTRACT_CMD?= ${_SHELL_EXTRACT}
1.907 agc 2281:
1.1222 jmmv 2282: .PHONY: do-extract
1.907 agc 2283: .if !target(do-extract)
2284: do-extract: ${WRKDIR}
1.929 jlam 2285: . for __file__ in ${EXTRACT_ONLY}
1.902 jlam 2286: ${_PKG_SILENT}${_PKG_DEBUG} \
1.929 jlam 2287: extract_file="${_DISTDIR}/${__file__}"; export extract_file; \
2288: cd ${WRKDIR}; ${EXTRACT_CMD}
2289: . endfor
1.1 agc 2290: .endif
2291:
2292: # Patch
2293:
1.968 jlam 2294: # LOCALPATCHES contains the location of local patches to packages
2295: # that are maintained in a directory tree reflecting the same
2296: # hierarchy as the pkgsrc tree, i.e. local patches for www/apache
2297: # would be found as ${LOCALPATCHES}/www/apache/*.
2298: #
1.1168 grant 2299: .if defined(LOCALPATCHES)
1.968 jlam 2300: _DFLT_LOCALPATCHFILES= ${LOCALPATCHES}/${PKGPATH}/*
2301: _LOCALPATCHFILES= ${_DFLT_LOCALPATCHFILES}
1.1168 grant 2302: .endif
1.968 jlam 2303:
1.1222 jmmv 2304: .PHONY: do-patch
1.1 agc 2305: .if !target(do-patch)
1.676 agc 2306: do-patch: uptodate-digest
1.789 hubertf 2307: . if defined(PATCHFILES)
1.416 agc 2308: @${ECHO_MSG} "${_PKGSRC_IN}> Applying distribution patches for ${PKGNAME}"
1.1488 jlam 2309: . for i in ${PATCHFILES}
1.976 agc 2310: ${_PKG_SILENT}${_PKG_DEBUG}cd ${_DISTDIR}; \
1.1488 jlam 2311: if [ ${PATCH_DEBUG_TMP} = yes ]; then \
2312: ${ECHO_MSG} "${_PKGSRC_IN}> Applying distribution patch ${i}"; \
2313: fi; \
2314: ${PATCH_DIST_CAT.${i:S/=/--/}} | \
2315: ${PATCH} ${PATCH_DIST_ARGS.${i:S/=/--/}} \
1.1493 schmonz 2316: || { ${ECHO} "Patch ${i} failed"; ${PKGSRC_PATCH_FAIL}; }
1.1488 jlam 2317: . endfor
1.789 hubertf 2318: . endif
1.968 jlam 2319: ${_PKG_SILENT}${_PKG_DEBUG} \
2320: patchlist=""; \
2321: if [ -d ${PATCHDIR} ]; then \
1.167 agc 2322: if [ "`${ECHO} ${PATCHDIR}/patch-*`" = "${PATCHDIR}/patch-*" ]; then \
1.416 agc 2323: ${ECHO_MSG} "${_PKGSRC_IN}> Ignoring empty patch directory"; \
1.293 agc 2324: if [ -d ${PATCHDIR}/CVS ]; then \
1.910 zuntum 2325: ${ECHO_MSG} "${_PKGSRC_IN}> Perhaps you forgot the -P flag to 'cvs checkout' or 'cvs update'?"; \
1.293 agc 2326: fi; \
2327: else \
1.968 jlam 2328: patchlist=`${ECHO} ${PATCHDIR}/patch-*`; \
2329: fi; \
2330: fi; \
2331: if [ "X${_LOCALPATCHFILES}" = "X${_DFLT_LOCALPATCHFILES}" ]; then \
2332: localpatchfiles="`${ECHO} ${_LOCALPATCHFILES}`"; \
2333: if [ "$${localpatchfiles}" != "${_LOCALPATCHFILES}" ]; then \
2334: patchlist="$${patchlist} $${localpatchfiles}"; \
2335: fi; \
2336: else \
2337: patchlist=`${ECHO} $${patchlist} ${_LOCALPATCHFILES}`; \
2338: fi; \
2339: if [ -n "$${patchlist}" ]; then \
1.1092 jschauma 2340: ${ECHO_MSG} "${_PKGSRC_IN}> Applying pkgsrc patches for ${PKGNAME}" ; \
1.968 jlam 2341: fail=""; \
2342: for i in $${patchlist}; do \
2343: if [ ! -f "$$i" ]; then \
2344: ${ECHO_MSG} "${_PKGSRC_IN}> $$i is not a valid patch file - skipping"; \
2345: continue; \
2346: fi; \
2347: case $$i in \
2348: *.orig|*.rej|*~) \
2349: ${ECHO_MSG} "${_PKGSRC_IN}> Ignoring patchfile $$i"; \
2350: continue; \
2351: ;; \
2352: ${PATCHDIR}/patch-local-*) \
2353: ;; \
2354: ${PATCHDIR}/patch-*) \
2355: if [ -f ${DISTINFO_FILE} ]; then \
2356: filename=`expr $$i : '.*/\(.*\)'`; \
2357: algsum=`${AWK} 'NF == 4 && $$2 == "('$$filename')" && $$3 == "=" {print $$1 " " $$4}' ${DISTINFO_FILE} || ${TRUE}`; \
2358: if [ "X$$algsum" != "X" ]; then \
2359: alg=`${ECHO} $$algsum | ${AWK} '{ print $$1 }'`; \
2360: recorded=`${ECHO} $$algsum | ${AWK} '{ print $$2 }'`; \
2361: calcsum=`${SED} -e '/\$$NetBSD.*/d' $$i | ${DIGEST} $$alg`; \
2362: if [ ${PATCH_DEBUG_TMP} = yes ]; then \
2363: ${ECHO_MSG} "=> Verifying $$filename (using digest algorithm $$alg)"; \
1.293 agc 2364: fi; \
2365: fi; \
1.968 jlam 2366: if [ "X$$algsum" = "X" -o "X$$recorded" = "X" ]; then \
2367: ${ECHO_MSG} "**************************************"; \
2368: ${ECHO_MSG} "Ignoring unknown patch file: $$i"; \
2369: ${ECHO_MSG} "**************************************"; \
2370: continue; \
2371: fi; \
2372: if [ "X$$calcsum" != "X$$recorded" ]; then \
2373: ${ECHO_MSG} "**************************************"; \
2374: ${ECHO_MSG} "Patch file $$i has been modified"; \
2375: ${ECHO_MSG} "**************************************"; \
2376: fail="$$fail $$filename"; \
2377: continue; \
2378: fi; \
1.1302 cube 2379: else \
2380: ${ECHO_MSG} "**************************************"; \
2381: ${ECHO_MSG} "Ignoring unknown patch file: $$i"; \
2382: ${ECHO_MSG} "**************************************"; \
1.1303 cube 2383: continue; \
1.305 agc 2384: fi; \
1.968 jlam 2385: ;; \
2386: esac; \
2387: if [ ${PATCH_DEBUG_TMP} = yes ]; then \
1.1092 jschauma 2388: ${ECHO_MSG} "${_PKGSRC_IN}> Applying pkgsrc patch $$i" ; \
1.303 agc 2389: fi; \
1.968 jlam 2390: fuzz=""; \
2391: ${PATCH} -v > /dev/null 2>&1 && fuzz="${PATCH_FUZZ_FACTOR}"; \
2392: ${PATCH} $$fuzz ${PATCH_ARGS} < $$i || \
1.1493 schmonz 2393: { ${ECHO} Patch $$i failed ; ${PKGSRC_PATCH_FAIL}; }; \
1.968 jlam 2394: done; \
2395: if [ "X$$fail" != "X" ]; then \
2396: ${ECHO_MSG} "Patching failed due to modified patch file(s): $$fail"; \
1.1493 schmonz 2397: ${PKGSRC_PATCH_FAIL}; \
1.293 agc 2398: fi; \
1.1 agc 2399: fi
1.870 jlam 2400: .endif
2401:
2402: # Configure
1.1 agc 2403:
1.871 jlam 2404: # _CONFIGURE_PREREQ is a list of targets to run after pre-configure but before
2405: # do-configure. These targets typically edit the files used by the
1.1205 agc 2406: # do-configure target. The targets are run as dependencies of
1.1204 chris 2407: # pre-configure-override.
1.871 jlam 2408: #
2409: # _CONFIGURE_POSTREQ is a list of targets to run after do-configure but before
2410: # post-configure. These targets typically edit the files generated by
2411: # the do-configure target that are used during the build phase.
2412:
1.1248 jlam 2413: .if defined(USE_PKGLOCALEDIR)
2414: _PKGLOCALEDIR= ${PREFIX}/${PKGLOCALEDIR}/locale
2415: REPLACE_LOCALEDIR_PATTERNS?= # empty
2416: _REPLACE_LOCALEDIR_PATTERNS= ${REPLACE_LOCALEDIR_PATTERNS}
2417: . if defined(HAS_CONFIGURE) || defined(GNU_CONFIGURE)
1.1395 sketch 2418: _REPLACE_LOCALEDIR_PATTERNS+= [Mm]akefile.in*
1.1248 jlam 2419: . else
1.1395 sketch 2420: _REPLACE_LOCALEDIR_PATTERNS+= [Mm]akefile*
1.1248 jlam 2421: . endif
2422: _REPLACE_LOCALEDIR_PATTERNS_FIND= \
2423: \( ${_REPLACE_LOCALEDIR_PATTERNS:S/$/!/:S/^/-o -name !/:S/!/"/g:S/-o//1} \)
2424: REPLACE_LOCALEDIR?= # empty
2425: _REPLACE_LOCALEDIR= \
2426: ${REPLACE_LOCALEDIR} \
2427: `${FIND} . ${_REPLACE_LOCALEDIR_PATTERNS_FIND} -print | ${SED} -e 's|^\./||' | ${GREP} -v '\.orig' | ${SORT} -u`
2428:
2429: _CONFIGURE_PREREQ+= subst-pkglocaledir
2430: . if empty(USE_PKGLOCALEDIR:M[nN][oO])
2431: SUBST_CLASSES+= pkglocaledir
2432: . endif
2433: SUBST_MESSAGE.pkglocaledir= "Fixing locale directory references."
2434: SUBST_FILES.pkglocaledir= ${_REPLACE_LOCALEDIR}
2435: SUBST_SED.pkglocaledir= \
2436: -e 's|^\(localedir[ :]*=\).*|\1 ${_PKGLOCALEDIR}|' \
2437: -e 's|^\(gnulocaledir[ :]*=\).*|\1 ${_PKGLOCALEDIR}|' \
1.1470 salo 2438: -e 's|\(-DLOCALEDIR[ ]*=\)[^ ]*\(\.\*\)|\1"\\"${_PKGLOCALEDIR}\\""\2|'
1.1248 jlam 2439: .endif
2440:
1.870 jlam 2441: .if defined(REPLACE_PERL)
1.1208 agc 2442: REPLACE_INTERPRETER+= perl
1.1207 agc 2443: _REPLACE.perl.old= .*/bin/perl
2444: _REPLACE.perl.new= ${PERL5}
2445: _REPLACE_FILES.perl= ${REPLACE_PERL}
2446: .endif
2447:
1.1347 jlam 2448: .if defined(REPLACE_INTERPRETER)
1.1207 agc 2449: _CONFIGURE_PREREQ+= replace-interpreter
1.1222 jmmv 2450: .PHONY: replace-interpreter
1.1207 agc 2451: replace-interpreter:
2452: . for lang in ${REPLACE_INTERPRETER}
1.1415 drochner 2453: . for pattern in ${_REPLACE_FILES.${lang}}
1.870 jlam 2454: ${_PKG_SILENT}${_PKG_DEBUG} \
2455: cd ${WRKSRC}; \
1.1415 drochner 2456: for f in ${pattern}; do \
1.953 hubertf 2457: if [ -f $${f} ]; then \
1.1415 drochner 2458: ${SED} -e '1s|^#!${_REPLACE.${lang}.old}|#!${_REPLACE.${lang}.new}|' \
1.953 hubertf 2459: $${f} > $${f}.new; \
2460: if [ -x $${f} ]; then \
2461: ${CHMOD} a+x $${f}.new; \
2462: fi; \
2463: ${MV} -f $${f}.new $${f}; \
2464: fi; \
2465: done
1.1415 drochner 2466: . endfor
1.1207 agc 2467: . endfor
1.770 zuntum 2468: .endif
1.522 wiz 2469:
1.1347 jlam 2470: .if defined(USE_LIBTOOL) && defined(LTCONFIG_OVERRIDE)
1.869 jlam 2471: _CONFIGURE_PREREQ+= do-ltconfig-override
1.1222 jmmv 2472: .PHONY: do-ltconfig-override
1.869 jlam 2473: do-ltconfig-override:
1.828 jlam 2474: . for ltconfig in ${LTCONFIG_OVERRIDE}
2475: ${_PKG_SILENT}${_PKG_DEBUG} \
2476: if [ -f ${ltconfig} ]; then \
2477: ${RM} -f ${ltconfig}; \
1.1381 jlam 2478: ${ECHO} "${RM} -f libtool; ${LN} -s ${_LIBTOOL} libtool" \
1.828 jlam 2479: > ${ltconfig}; \
2480: ${CHMOD} +x ${ltconfig}; \
1.375 sakamoto 2481: fi
1.828 jlam 2482: . endfor
1.1006 schmonz 2483: .endif
2484:
2485: _CONFIGURE_PREREQ+= do-config-star-override
1.1222 jmmv 2486: .PHONY: do-config-star-override
1.1006 schmonz 2487: do-config-star-override:
1.1540.2.12 tv 2488: .if defined(GNU_CONFIGURE)
2489: . if !empty(CONFIG_GUESS_OVERRIDE)
1.1403 jlam 2490: . for _pattern_ in ${CONFIG_GUESS_OVERRIDE}
2491: ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
2492: for file in ${_pattern_}; do \
2493: if [ -f "$$file" ]; then \
2494: ${RM} -f $$file; \
1.1510 jlam 2495: ${LN} -s ${PKGSRCDIR}/mk/gnu-config/config.guess \
1.1403 jlam 2496: $$file; \
2497: fi; \
1.1006 schmonz 2498: done
1.1403 jlam 2499: . endfor
1.1007 agc 2500: . endif
1.1540.2.12 tv 2501: . if !empty(CONFIG_SUB_OVERRIDE)
1.1403 jlam 2502: . for _pattern_ in ${CONFIG_SUB_OVERRIDE}
2503: ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
2504: for file in ${_pattern_}; do \
2505: if [ -f "$$file" ]; then \
2506: ${RM} -f $$file; \
1.1510 jlam 2507: ${LN} -s ${PKGSRCDIR}/mk/gnu-config/config.sub \
1.1403 jlam 2508: $$file; \
2509: fi; \
1.1006 schmonz 2510: done
1.1403 jlam 2511: . endfor
1.1007 agc 2512: . endif
1.1540.2.12 tv 2513: . if !empty(CONFIG_RPATH_OVERRIDE)
2514: . for _pattern_ in ${CONFIG_RPATH_OVERRIDE}
2515: ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
2516: for file in ${_pattern_}; do \
2517: if [ -f "$$file" ]; then \
2518: ${RM} -f $$file; \
2519: ${LN} -s ${PKGSRCDIR}/mk/gnu-config/config.rpath \
2520: $$file; \
2521: fi; \
2522: done
2523: . endfor
2524: . endif
1.1080 rh 2525: .endif
2526:
1.1248 jlam 2527: PKGCONFIG_OVERRIDE_SED= \
1.1523 jmmv 2528: '/^Libs:.*[ ]/s|-L\([ ]*[^ ]*\)|${COMPILER_RPATH_FLAG}\1 -L\1|g'
2529: PKGCONFIG_OVERRIDE_STAGE?= pre-configure
1.1248 jlam 2530:
2531: .if defined(PKGCONFIG_OVERRIDE) && !empty(PKGCONFIG_OVERRIDE)
1.1523 jmmv 2532: . if ${PKGCONFIG_OVERRIDE_STAGE} == "pre-configure"
1.1248 jlam 2533: _CONFIGURE_PREREQ+= subst-pkgconfig
1.1523 jmmv 2534: . elif ${PKGCONFIG_OVERRIDE_STAGE} == "post-configure"
2535: _CONFIGURE_POSTREQ+= subst-pkgconfig
2536: . else
2537: SUBST_STAGE.pkgconfig= ${PKGCONFIG_OVERRIDE_STAGE}
2538: . endif
1.1248 jlam 2539: SUBST_CLASSES+= pkgconfig
2540: SUBST_MESSAGE.pkgconfig= "Adding rpaths to pkgconfig files."
2541: SUBST_FILES.pkgconfig= ${PKGCONFIG_OVERRIDE:S/^${WRKSRC}\///}
2542: SUBST_SED.pkgconfig= ${PKGCONFIG_OVERRIDE_SED}
1.828 jlam 2543: .endif
2544:
1.1540.2.7 tv 2545: # By adding this target, it makes sure the above PREREQ's work.
1.1222 jmmv 2546: .PHONY: pre-configure-override
1.1204 chris 2547: pre-configure-override: ${_CONFIGURE_PREREQ}
2548:
1.1222 jmmv 2549: .PHONY: do-configure
1.828 jlam 2550: .if !target(do-configure)
1.1389 jlam 2551: do-configure:
1.789 hubertf 2552: . if defined(HAS_CONFIGURE)
1.1032 jlam 2553: . for DIR in ${CONFIGURE_DIRS}
1.1042 abs 2554: ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} \
1.1358 grant 2555: ${CONFIGURE_ENV} ${CONFIG_SHELL} \
2556: ${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS}
1.1032 jlam 2557: . endfor
1.789 hubertf 2558: . endif
2559: . if defined(USE_IMAKE)
1.1119 jlam 2560: . for DIR in ${CONFIGURE_DIRS}
2561: ${_PKG_SILENT}${_PKG_DEBUG}cd ${DIR} && ${SETENV} ${SCRIPTS_ENV} XPROJECTROOT=${X11BASE} ${XMKMF}
2562: . endfor
1.789 hubertf 2563: . endif
1.871 jlam 2564: .endif
2565:
1.1347 jlam 2566: .if defined(USE_LIBTOOL) && \
2567: (defined(LIBTOOL_OVERRIDE) || defined(SHLIBTOOL_OVERRIDE))
1.871 jlam 2568: _CONFIGURE_POSTREQ+= do-libtool-override
1.1222 jmmv 2569: .PHONY: do-libtool-override
1.871 jlam 2570: do-libtool-override:
1.1126 jlam 2571: . if defined(LIBTOOL_OVERRIDE)
1.1404 jlam 2572: . for _pattern_ in ${LIBTOOL_OVERRIDE}
2573: ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
2574: for file in ${_pattern_}; do \
2575: if [ -f "$$file" ]; then \
2576: ${RM} -f $$file; \
2577: (${ECHO} '#!${CONFIG_SHELL}'; \
2578: ${ECHO} 'exec ${_LIBTOOL} "$$@"'; \
2579: ) > $$file; \
2580: ${CHMOD} +x $$file; \
1.1368 jlam 2581: fi; \
1.1404 jlam 2582: done
1.1126 jlam 2583: . endfor
2584: . endif
2585: . if defined(SHLIBTOOL_OVERRIDE)
1.1404 jlam 2586: . for _pattern_ in ${SHLIBTOOL_OVERRIDE}
2587: ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
2588: for file in ${_pattern_}; do \
2589: if [ -f "$$file" ]; then \
2590: ${RM} -f $$file; \
2591: (${ECHO} '#!${CONFIG_SHELL}'; \
2592: ${ECHO} 'exec ${_SHLIBTOOL} "$$@"'; \
2593: ) > $$file; \
2594: ${CHMOD} +x $$file; \
1.1382 jlam 2595: fi; \
1.1404 jlam 2596: done
1.1126 jlam 2597: . endfor
2598: . endif
1.1 agc 2599: .endif
1.871 jlam 2600:
1.1348 jlam 2601: .if defined(CONFIG_STATUS_OVERRIDE)
2602: _CONFIGURE_POSTREQ+= do-config-status-override
2603: .PHONY: do-config-status-override
1.1389 jlam 2604: do-config-status-override:
1.1400 jlam 2605: . for _pattern_ in ${CONFIG_STATUS_OVERRIDE}
1.1402 jlam 2606: ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \
1.1400 jlam 2607: for file in ${_pattern_}; do \
1.1402 jlam 2608: if [ -f "$$file" ]; then \
1.1408 jlam 2609: ${MV} -f $$file $$file.overridden; \
1.1414 jdolecek 2610: ${AWK} '/ *-recheck *\| *--recheck.*\)/ { \
1.1413 jlam 2611: print; \
2612: print " exit 0"; \
2613: next; \
2614: } \
2615: { print } \
2616: ' $$file.overridden > $$file; \
1.1402 jlam 2617: ${CHMOD} +x $$file; \
1.1400 jlam 2618: fi; \
2619: done
1.1389 jlam 2620: . endfor
2621: .endif
1.1348 jlam 2622:
1.1222 jmmv 2623: .PHONY: post-configure
1.871 jlam 2624: post-configure: ${_CONFIGURE_POSTREQ}
1.1 agc 2625:
2626: # Build
2627:
1.1344 jlam 2628: BUILD_DIRS?= ${WRKSRC}
2629: BUILD_MAKE_FLAGS?= ${MAKE_FLAGS}
1.1045 jlam 2630:
1.1222 jmmv 2631: .PHONY: do-build
1.1 agc 2632: .if !target(do-build)
2633: do-build:
1.1045 jlam 2634: . for DIR in ${BUILD_DIRS}
1.1540.2.7 tv 2635: ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${BUILD_MAKE_FLAGS} -f ${MAKEFILE} ${BUILD_TARGET}
1.1045 jlam 2636: . endfor
1.1 agc 2637: .endif
2638:
1.1081 dillo 2639: #Test
2640:
1.1344 jlam 2641: TEST_DIRS?= ${BUILD_DIRS}
2642: TEST_ENV+= ${MAKE_ENV}
2643: TEST_MAKE_FLAGS?= ${MAKE_FLAGS}
1.1081 dillo 2644:
1.1222 jmmv 2645: .PHONY: do-test
1.1081 dillo 2646: .if !target(do-test)
2647: do-test:
1.1276 jlam 2648: . if defined(TEST_TARGET) && !empty(TEST_TARGET)
1.1081 dillo 2649: . for DIR in ${TEST_DIRS}
1.1344 jlam 2650: ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${TEST_ENV} ${MAKE_PROGRAM} ${TEST_MAKE_FLAGS} -f ${MAKEFILE} ${TEST_TARGET}
1.1081 dillo 2651: . endfor
2652: . endif
2653: .endif
2654:
1.1 agc 2655: # Package
2656:
1.1222 jmmv 2657: .PHONY: real-su-package
1.810 agc 2658: real-su-package: ${PLIST} ${DESCR}
1.972 agc 2659: ${_PKG_SILENT}${_PKG_DEBUG} \
1.624 hubertf 2660: ${ECHO_MSG} "${_PKGSRC_IN}> Building binary package for ${PKGNAME}"; \
1.1245 jlam 2661: if ${PKG_INFO} -qe ${PKGNAME}; then \
2662: : The package is installed. ; \
2663: else \
2664: ${ECHO_MSG} "=> ${PKGNAME} is not installed."; \
2665: exit 1; \
2666: fi; \
1.972 agc 2667: if [ ! -d ${PKGREPOSITORY} ]; then \
2668: ${MKDIR} ${PKGREPOSITORY}; \
2669: if [ $$? -ne 0 ]; then \
1.624 hubertf 2670: ${ECHO_MSG} "=> Can't create directory ${PKGREPOSITORY}."; \
1.972 agc 2671: exit 1; \
2672: fi; \
2673: fi; \
2674: if ${PKG_CREATE} ${PKG_ARGS_BINPKG} ${PKGFILE}; then \
2675: ${MAKE} ${MAKEFLAGS} package-links; \
2676: else \
2677: ${MAKE} ${MAKEFLAGS} delete-package; \
2678: exit 1; \
1.1 agc 2679: fi
1.1540.2.1 tv 2680: .if defined(NO_BIN_ON_CDROM)
1.512 rh 2681: @${ECHO_MSG} "${_PKGSRC_IN}> Warning: ${PKGNAME} may not be put on a CD-ROM:"
1.547 hubertf 2682: @${ECHO_MSG} "${_PKGSRC_IN}> " ${NO_BIN_ON_CDROM:Q}
1.1540.2.1 tv 2683: .endif
2684: .if defined(NO_BIN_ON_FTP)
1.512 rh 2685: @${ECHO_MSG} "${_PKGSRC_IN}> Warning: ${PKGNAME} may not be made available through FTP:"
1.547 hubertf 2686: @${ECHO_MSG} "${_PKGSRC_IN}> " ${NO_BIN_ON_FTP:Q}
1.1540.2.1 tv 2687: .endif
2688: .if defined(RECOMMENDED) && !empty(IGNORE_RECOMMENDED:M[yY][eE][sS])
1.1345 rh 2689: @${ECHO_MSG} "${_PKGSRC_IN}> Warning: dependency recommendations are being ignored!"
2690: @${ECHO_MSG} "${_PKGSRC_IN}> ${PKGNAME} should not be uploaded nor"
2691: @${ECHO_MSG} "${_PKGSRC_IN}> otherwise be used as a binary package!"
1.1 agc 2692: .endif
2693:
1.810 agc 2694: # Some support rules for real-su-package
1.1 agc 2695:
1.1222 jmmv 2696: .PHONY: package-links
1.1540.2.1 tv 2697: package-links: delete-package-links
1.221 agc 2698: ${_PKG_SILENT}${_PKG_DEBUG}for cat in ${CATEGORIES}; do \
2699: if [ ! -d ${PACKAGES}/$$cat ]; then \
1.222 agc 2700: ${MKDIR} ${PACKAGES}/$$cat; \
2701: if [ $$? -ne 0 ]; then \
1.415 agc 2702: ${ECHO_MSG} "=> Can't create directory ${PACKAGES}/$$cat."; \
1.221 agc 2703: exit 1; \
2704: fi; \
2705: fi; \
1.468 tron 2706: ${RM} -f ${PACKAGES}/$$cat/${PKGNAME}${PKG_SUFX}; \
1.221 agc 2707: ${LN} -s ../${PKGREPOSITORYSUBDIR}/${PKGNAME}${PKG_SUFX} ${PACKAGES}/$$cat; \
1.1 agc 2708: done;
2709:
1.1222 jmmv 2710: .PHONY: delete-package-links
1.1 agc 2711: delete-package-links:
1.440 hubertf 2712: ${_PKG_SILENT}${_PKG_DEBUG}\
1.1360 heinz 2713: ${FIND} ${PACKAGES} -type l -name ${PKGNAME}${PKG_SUFX} -print | ${XARGS} ${RM} -f
1.1 agc 2714:
1.1222 jmmv 2715: .PHONY: delete-package
1.1540.2.1 tv 2716: delete-package: delete-package-links
1.221 agc 2717: ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PKGFILE}
1.624 hubertf 2718:
1.488 hubertf 2719: # Check if all binaries and shlibs find their needed libs
2720: # Must be run after "make install", so that files are installed, and
2721: # ${PLIST} exists.
2722: #
1.1222 jmmv 2723: .PHONY: check-shlibs
1.488 hubertf 2724: check-shlibs:
1.678 hubertf 2725: .if !defined(NO_PKG_REGISTER)
1.972 agc 2726: ${_PKG_SILENT}${_PKG_DEBUG} \
1.706 hubertf 2727: bins=`${PKG_INFO} -qL ${PKGNAME} | { ${EGREP} -h '/(bin|sbin|libexec)/' || ${TRUE}; }`; \
1.972 agc 2728: if [ "${OBJECT_FMT}" = "ELF" ]; then \
1.706 hubertf 2729: shlibs=`${PKG_INFO} -qL ${PKGNAME} | { ${EGREP} -h '/lib/lib.*.so' || ${TRUE}; }`; \
1.1244 grant 2730: elif [ "${OBJECT_FMT}" = "Mach-O" ]; then \
2731: shlibs=`${PKG_INFO} -qL ${PKGNAME} | { ${EGREP} -h '/lib/lib.*.dylib' || ${TRUE}; }`; \
1.972 agc 2732: else \
2733: shlibs=""; \
2734: fi; \
1.1244 grant 2735: if [ "X${LDD}" = X ]; then \
1.1240 grant 2736: ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'`;\
1.972 agc 2737: else \
2738: ldd="${LDD}"; \
2739: fi; \
1.1240 grant 2740: if [ -x "$$ldd" ]; then \
2741: for i in $${bins} $${shlibs}; do \
2742: err=`{ $$ldd $$i 2>&1 || ${TRUE}; } | { ${GREP} "not found" || ${TRUE}; }`; \
2743: if [ "${PKG_VERBOSE}" != "" ]; then \
2744: ${ECHO} "$$ldd $$i"; \
2745: fi; \
2746: if [ "$$err" != "" ]; then \
2747: ${ECHO} "$$i: $$err"; \
2748: error=1; \
2749: fi; \
2750: done; \
2751: fi; \
1.972 agc 2752: if [ "$$error" = 1 ]; then \
1.488 hubertf 2753: ${ECHO} "*** The above programs/libs will not find the listed shared libraries"; \
1.972 agc 2754: ${ECHO} " at runtime. Please fix the package (add -Wl,-R.../lib in the right places)!"; \
1.488 hubertf 2755: ${SHCOMMENT} Might not error-out for non-pkg-developers; \
1.972 agc 2756: exit 1; \
1.488 hubertf 2757: fi
1.1540.2.15 tv 2758: .endif # !NO_PKG_REGISTER
1.488 hubertf 2759:
1.1540.2.14 tv 2760: # CHECK_FILES_SKIP is a list of file names that will be skipped when
2761: # analyzing file lists in the check-files target. This is useful to
2762: # avoid getting errors triggered by changes in directories not really
2763: # handled by pkgsrc.
2764: #
2765: # We have to do this here, i.e., quite late in bsd.pkg.mk parsing, so
2766: # that the variables used in them are defined. Otherwise we may get
2767: # problems with the 'for' expressions.
2768: .if defined(INFO_DIR)
2769: CHECK_FILES_SKIP+= ${PREFIX}/${INFO_DIR}/dir
2770: .endif
2771: CHECK_FILES_SKIP+= ${PREFIX}/emul/linux/proc
2772:
2773: .for e c in ${CONF_FILES} ${SUPPORT_FILES}
2774: CHECK_FILES_SKIP+= ${c}/.pkgsrc
2775: .endfor
2776: .for e c o g m in ${CONF_FILES_PERMS} ${SUPPORT_FILES_PERMS}
2777: CHECK_FILES_SKIP+= ${c}/.pkgsrc
2778: .endfor
2779: .for d in ${MAKE_DIRS} ${OWN_DIRS}
2780: CHECK_FILES_SKIP+= ${d}
2781: .endfor
2782: .for d o g m in ${MAKE_DIRS_PERMS} ${OWN_DIRS_PERMS}
2783: CHECK_FILES_SKIP+= ${d}
2784: .endfor
2785:
1.1540.2.16 tv 2786: CHECK_FILES_SKIP_CMD= | ${GREP} -v ${CHECK_FILES_SKIP:@f@-e ${f:Q}@}
1.1540.2.14 tv 2787:
1.1540.2.13 tv 2788: # Check if the generated PLIST matches the list of really installed files.
2789: #
2790: .PHONY: check-files
2791: check-files:
2792: .if !defined(NO_PKG_REGISTER)
2793: ${_PKG_SILENT}${_PKG_DEBUG} \
2794: errors=0; \
2795: diff -u ${WRKDIR}/.prefix.pre ${WRKDIR}/.prefix.post \
1.1540.2.14 tv 2796: >${WRKDIR}/.files.diff || ${TRUE}; \
2797: ${GREP} '^+/' ${WRKDIR}/.files.diff | ${SED} "s|^+||" | ${SORT} \
2798: >${WRKDIR}/.files.added; \
2799: ${GREP} '^-/' ${WRKDIR}/.files.diff | ${SED} "s|^-||" | ${SORT} \
2800: >${WRKDIR}/.files.deleted; \
1.1540.2.13 tv 2801: if ${TEST} `${WC} -l ${WRKDIR}/.files.deleted | \
2802: ${AWK} '{ print $$1; }'` -gt 0; \
2803: then \
2804: echo "*** The following files have been deleted from" \
2805: "${PREFIX}!"; \
2806: ${SED} "s|^| |" <${WRKDIR}/.files.deleted; \
2807: errors=1; \
2808: fi; \
1.1540.2.14 tv 2809: ${GREP} '^[A-Za-z]' ${PLIST} | ${SED} "s|^|${PREFIX}/|" | \
2810: ${SORT} >${WRKDIR}/.files.expected; \
1.1540.2.13 tv 2811: if ! ${CMP} -s ${WRKDIR}/.files.expected ${WRKDIR}/.files.added; then \
2812: echo "*** The PLIST does not match installed files!"; \
2813: echo " The following files were not expected in ${PREFIX}:";\
2814: diff -u ${WRKDIR}/.files.expected ${WRKDIR}/.files.added | \
2815: ${GREP} '^+[^+]' | ${SED} "s|^+| |"; \
2816: errors=1; \
2817: fi; \
2818: if [ ${CHECK_FILES_STRICT} = "YES" ] && \
2819: ! ${CMP} -s ${WRKDIR}/.sysconfdir.pre ${WRKDIR}/.sysconfdir.post; \
2820: then \
2821: echo "*** The package has modified ${PKG_SYSCONFDIR}" \
2822: "contents directly!"; \
2823: echo " The offending files/directories are:"; \
2824: diff -u ${WRKDIR}/.sysconfdir.pre ${WRKDIR}/.sysconfdir.post | \
2825: ${GREP} '^+[^+]' | ${SED} "s|^+| |"; \
2826: errors=1; \
2827: fi; \
2828: if [ ${CHECK_FILES_STRICT} = "YES" ] && \
2829: ! ${CMP} -s ${WRKDIR}/.varbase.pre ${WRKDIR}/.varbase.post; then \
2830: echo "*** The package has modified ${VARBASE} contents" \
2831: "directly!"; \
2832: echo " The offending files/directories are:"; \
2833: diff -u ${WRKDIR}/.varbase.pre ${WRKDIR}/.varbase.post |\
2834: ${GREP} '^+[^+]' | ${SED} "s|^+| |"; \
2835: errors=1; \
2836: fi; \
2837: ${RM} -f ${WRKDIR}/.files.added ${WRKDIR}/.files.deleted \
2838: ${WRKDIR}/.files.diff ${WRKDIR}/.files.expected; \
2839: ${TEST} $$errors -eq 0
2840: .endif
2841:
1.1540.2.1 tv 2842: LOCKFILE= ${WRKDIR}/.lockfile
2843: .for targ in ${_PKG_PHASES_WRKDIR}
2844: .PHONY: acquire-${targ}-lock release-${targ}-lock
2845: acquire-${targ}-lock: .OPTIONAL
2846: release-${targ}-lock: .OPTIONAL
2847:
2848: . if ${PKGSRC_LOCKTYPE} != "none"
2849: acquire-${targ}-lock:
2850: ${_PKG_SILENT}${_PKG_DEBUG} \
2851: ppid=`${PS} -p $$$$ -o ppid | ${AWK} 'NR == 2 { print $$1 }'`; \
2852: if ${TEST} "$$ppid" = ""; then \
2853: ${ECHO} "No parent process ID found."; \
2854: ${FALSE}; \
2855: fi; \
2856: while true; do \
1.1540.2.23 tv 2857: : "Remove lock files older than the last reboot"; \
2858: if ${TEST} -f /var/run/dmesg.boot -a -f ${LOCKFILE}; then \
2859: rebooted=`${FIND} /var/run/dmesg.boot -newer ${LOCKFILE} -print`; \
2860: if ${TEST} x"$$rebooted" != x; then \
2861: ${ECHO} "=> Removing stale ${LOCKFILE}"; \
2862: ${RM} ${LOCKFILE}; \
2863: fi; \
1.1540.2.1 tv 2864: fi; \
2865: ${SHLOCK} -f ${LOCKFILE} -p $$ppid && break; \
2866: ${ECHO} "=> Lock is held by pid `cat ${LOCKFILE}`"; \
2867: case "${PKGSRC_LOCKTYPE}" in \
2868: once) exit 1 ;; \
2869: sleep) sleep ${PKGSRC_SLEEPSECS} ;; \
2870: esac \
2871: done; \
2872: if [ "${PKG_VERBOSE}" != "" ]; then \
2873: ${ECHO_MSG} "=> Lock acquired on behalf of process $$ppid"; \
2874: fi
1.1342 grant 2875:
1.1540.2.1 tv 2876: release-${targ}-lock:
2877: ${_PKG_SILENT}${_PKG_DEBUG} \
2878: if [ "${PKG_VERBOSE}" != "" ]; then \
2879: ${ECHO_MSG} "=> Lock released on behalf of process `${CAT} ${LOCKFILE}`"; \
2880: fi; \
2881: ${RM} ${LOCKFILE}
2882: . endif # PKGSRC_LOCKTYPE
2883: .endfor
1.1 agc 2884:
2885:
1.1540.2.1 tv 2886: # Empty pre-* and post-* targets
1.1 agc 2887:
1.1540.2.1 tv 2888: .for targ in fetch ${_PKG_PHASES_WRKDIR} install-script clean distclean
2889: .PHONY: pre-${targ} post-${targ}
2890: pre-${targ}: .OPTIONAL
2891: post-${targ}: .OPTIONAL
1.1 agc 2892: .endfor
2893:
2894: # Reinstall
2895: #
2896: # Special target to re-run install
2897:
1.1222 jmmv 2898: .PHONY: reinstall
1.560 hubertf 2899: reinstall:
1.1540.2.1 tv 2900: ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${install_COOKIE} ${package_COOKIE} ${PLIST}
1.1437 xtraeme 2901: ${_PKG_SILENT}${_PKG_DEBUG}DEPENDS_TARGET=${DEPENDS_TARGET:Q} ${MAKE} ${MAKEFLAGS} install
1.46 agc 2902:
2903: # Deinstall
2904: #
2905: # Special target to remove installation
1.221 agc 2906:
1.1540.2.1 tv 2907: .PHONY: deinstall
1.624 hubertf 2908: deinstall: do-su-deinstall
1.243 tron 2909:
1.1540.2.1 tv 2910: .if (${DEINSTALLDEPENDS} != "NO")
2911: . if (${DEINSTALLDEPENDS} != "ALL")
1.336 hubertf 2912: # used for removing stuff in bulk builds
1.624 hubertf 2913: real-su-deinstall-flags+= -r -R
1.336 hubertf 2914: # used for "update" target
1.1540.2.1 tv 2915: . else
1.624 hubertf 2916: real-su-deinstall-flags+= -r
1.789 hubertf 2917: . endif
1.1540.2.1 tv 2918: .endif
2919: .ifdef PKG_VERBOSE
1.624 hubertf 2920: real-su-deinstall-flags+= -v
1.1540.2.1 tv 2921: .endif
2922: .ifdef PKG_PRESERVE
2923: . if (${UPDATE_RUNNING} == "YES")
1.1530 erh 2924: # used to update w/o removing any files
2925: real-su-deinstall-flags+= -N -f
2926: . endif
1.1540.2.1 tv 2927: .endif
1.317 hubertf 2928:
1.1222 jmmv 2929: .PHONY: real-su-deinstall
1.624 hubertf 2930: real-su-deinstall:
1.972 agc 2931: ${_PKG_SILENT}${_PKG_DEBUG} \
1.1261 jlam 2932: found="`${PKG_INFO} -e \"${PKGNAME}\" || ${TRUE}`"; \
2933: case "$$found" in \
1.1275 jlam 2934: "") found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`" ;; \
1.1261 jlam 2935: esac; \
1.972 agc 2936: if [ "$$found" != "" ]; then \
1.624 hubertf 2937: ${ECHO} Running ${PKG_DELETE} ${real-su-deinstall-flags} $$found ; \
2938: ${PKG_DELETE} ${real-su-deinstall-flags} $$found || ${TRUE} ; \
1.317 hubertf 2939: fi
1.1540.2.1 tv 2940: .if (${DEINSTALLDEPENDS} != "NO") && (${DEINSTALLDEPENDS} != "ALL")
1.408 hubertf 2941: @${SHCOMMENT} Also remove BUILD_DEPENDS:
1.1540.2.1 tv 2942: . for pkg in ${BUILD_DEPENDS:C/:.*$//}
1.972 agc 2943: ${_PKG_SILENT}${_PKG_DEBUG} \
1.1275 jlam 2944: found="`${PKG_BEST_EXISTS} \"${pkg}\" || ${TRUE}`"; \
1.972 agc 2945: if [ "$$found" != "" ]; then \
2946: ${ECHO} Running ${PKG_DELETE} $$found; \
2947: ${PKG_DELETE} ${real-su-deinstall-flags} $$found || ${TRUE}; \
1.408 hubertf 2948: fi
1.1540.2.1 tv 2949: . endfor
2950: .endif # DEINSTALLDEPENDS
2951: @${RM} -f ${install_COOKIE} ${package_COOKIE}
1.220 hubertf 2952:
1.362 rh 2953:
1.1 agc 2954: ################################################################
2955: # Some more targets supplied for users' convenience
2956: ################################################################
1.327 rh 2957:
2958: # The 'update' target can be used to update a package and all
2959: # currently installed packages that depend upon this package.
1.362 rh 2960:
1.1222 jmmv 2961: .PHONY: update
1.958 rh 2962: .if !target(update)
1.362 rh 2963: .if exists(${DDIR})
2964: RESUMEUPDATE?= YES
1.509 rh 2965: CLEAR_DIRLIST?= NO
1.362 rh 2966:
2967: update:
2968: ${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG} \
1.416 agc 2969: "${_PKGSRC_IN}> Resuming update for ${PKGNAME}"
1.1178 rh 2970: . if ${REINSTALL} != "NO" && ${UPDATE_TARGET} != "replace"
1.515 rh 2971: ${_PKG_SILENT}${_PKG_DEBUG} \
1.1530 erh 2972: ${MAKE} ${MAKEFLAGS} deinstall UPDATE_RUNNING=YES DEINSTALLDEPENDS=ALL
1.789 hubertf 2973: . endif
1.362 rh 2974: .else
2975: RESUMEUPDATE?= NO
1.509 rh 2976: CLEAR_DIRLIST?= YES
1.362 rh 2977:
1.327 rh 2978: update:
1.452 hubertf 2979: ${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} ${DDIR}
1.1178 rh 2980: . if ${UPDATE_TARGET} != "replace"
1.972 agc 2981: ${_PKG_SILENT}${_PKG_DEBUG}if ${PKG_INFO} -qe ${PKGBASE}; then \
1.1531 agc 2982: ${MAKE} ${MAKEFLAGS} deinstall UPDATE_RUNNING=YES DEINSTALLDEPENDS=ALL \
1.972 agc 2983: || (${RM} ${DDIR} && ${FALSE}); \
1.952 tron 2984: fi
1.1178 rh 2985: . endif
1.362 rh 2986: .endif
1.327 rh 2987: ${_PKG_SILENT}${_PKG_DEBUG} \
1.590 rh 2988: ${MAKE} ${MAKEFLAGS} ${UPDATE_TARGET} KEEP_WRKDIR=YES \
1.1437 xtraeme 2989: DEPENDS_TARGET=${DEPENDS_TARGET:Q}
1.327 rh 2990: ${_PKG_SILENT}${_PKG_DEBUG} \
1.466 tron 2991: [ ! -s ${DDIR} ] || for dep in `${CAT} ${DDIR}` ; do \
1.972 agc 2992: (if cd ../.. && cd "$${dep}" ; then \
1.976 agc 2993: ${ECHO_MSG} "${_PKGSRC_IN}> Installing in $${dep}" && \
1.1178 rh 2994: if [ "(" "${RESUMEUPDATE}" = "NO" -o \
2995: "${REINSTALL}" != "NO" ")" -a \
2996: "${UPDATE_TARGET}" != "replace" ] ; then \
1.1531 agc 2997: ${MAKE} ${MAKEFLAGS} deinstall UPDATE_RUNNING=YES; \
1.362 rh 2998: fi && \
1.590 rh 2999: ${MAKE} ${MAKEFLAGS} ${UPDATE_TARGET} \
1.1437 xtraeme 3000: DEPENDS_TARGET=${DEPENDS_TARGET:Q} ; \
1.398 rh 3001: else \
1.976 agc 3002: ${ECHO_MSG} "${_PKGSRC_IN}> Skipping removed directory $${dep}"; \
1.398 rh 3003: fi) ; \
3004: done
1.362 rh 3005: .if ${NOCLEAN} == "NO"
1.398 rh 3006: ${_PKG_SILENT}${_PKG_DEBUG} \
1.452 hubertf 3007: ${MAKE} ${MAKEFLAGS} clean-update CLEAR_DIRLIST=YES
1.362 rh 3008: .endif
3009:
3010:
1.1222 jmmv 3011: .PHONY: clean-update
1.362 rh 3012: clean-update:
1.452 hubertf 3013: ${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} ${DDIR}
1.362 rh 3014: ${_PKG_SILENT}${_PKG_DEBUG} \
3015: if [ -s ${DDIR} ] ; then \
3016: for dep in `${CAT} ${DDIR}` ; do \
1.972 agc 3017: (if cd ../.. && cd "$${dep}" ; then \
1.452 hubertf 3018: ${MAKE} ${MAKEFLAGS} clean ; \
1.398 rh 3019: else \
1.416 agc 3020: ${ECHO_MSG} "${_PKGSRC_IN}> Skipping removed directory $${dep}";\
1.398 rh 3021: fi) ; \
1.362 rh 3022: done ; \
3023: fi
1.509 rh 3024: .if ${CLEAR_DIRLIST} != "NO"
1.452 hubertf 3025: ${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} clean
1.362 rh 3026: .else
1.398 rh 3027: ${_PKG_SILENT}${_PKG_DEBUG} \
1.452 hubertf 3028: ${MAKE} ${MAKEFLAGS} clean update-dirlist \
1.362 rh 3029: DIRLIST="`${CAT} ${DDIR}`" PKGLIST="`${CAT} ${DLIST}`"
1.515 rh 3030: ${_PKG_SILENT}${_PKG_DEBUG}${ECHO_MSG} \
3031: "${_PKGSRC_IN}> Warning: preserved leftover directory list. Your next";\
3032: ${ECHO_MSG} "${_PKGSRC_IN}> \`\`${MAKE} update'' may fail. It is advised to use";\
3033: ${ECHO_MSG} "${_PKGSRC_IN}> \`\`${MAKE} update REINSTALL=YES'' instead!"
1.362 rh 3034: .endif
1.958 rh 3035:
3036: .endif # !target(update)
1.362 rh 3037:
3038:
1.1222 jmmv 3039: .PHONY: update-dirlist
1.362 rh 3040: update-dirlist:
3041: ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} -p ${WRKDIR}
3042: .ifdef PKGLIST
1.789 hubertf 3043: . for __tmp__ in ${PKGLIST}
1.362 rh 3044: ${_PKG_SILENT}${_PKG_DEBUG}${ECHO} >>${DLIST} "${__tmp__}"
1.789 hubertf 3045: . endfor
1.362 rh 3046: .endif
3047: .ifdef DIRLIST
1.789 hubertf 3048: . for __tmp__ in ${DIRLIST}
1.362 rh 3049: ${_PKG_SILENT}${_PKG_DEBUG}${ECHO} >>${DDIR} "${__tmp__}"
1.789 hubertf 3050: . endfor
1.362 rh 3051: .endif
3052:
1.327 rh 3053:
3054: ${DDIR}: ${DLIST}
3055: ${_PKG_SILENT}${_PKG_DEBUG} \
1.655 wiz 3056: ddir=`${SED} 's:-[^-]*$$::' ${DLIST}`; \
1.508 rh 3057: ${ECHO} >${DDIR}; \
3058: for pkg in $${ddir} ; do \
1.1048 hubertf 3059: if ${PKG_INFO} -b "$${pkg}" >/dev/null 2>&1 ; then \
3060: ${PKG_INFO} -b "$${pkg}" | ${SED} -ne \
1.510 rh 3061: 's,\([^/]*/[^/]*\)/Makefile:.*,\1,p' | \
3062: ${HEAD} -1 >>${DDIR}; \
1.508 rh 3063: fi ; \
3064: done
1.327 rh 3065:
1.965 agc 3066: ${DLIST}: ${WRKDIR}
1.327 rh 3067: ${_PKG_SILENT}${_PKG_DEBUG} \
1.1444 tv 3068: { ${PKG_DELETE} -n "${PKGWILDCARD}" 2>&1 | \
1.1540.2.9 tv 3069: ${GREP} '^ ' | \
1.1444 tv 3070: ${AWK} '{ l[NR]=$$0 } END { for (i=NR;i>0;--i) print l[i] }' \
3071: || ${TRUE}; } > ${DLIST}
1.524 tron 3072:
1.784 tron 3073: # Create a binary package from an install package using "pkg_tarup"
1.1222 jmmv 3074: .PHONY: tarup
1.784 tron 3075: tarup:
1.1252 jlam 3076: .if ${PKG_INSTALLATION_TYPE} == "overwrite"
1.972 agc 3077: ${_PKG_SILENT}${_PKG_DEBUG} \
3078: ${RM} -f ${PACKAGES}/All/${PKGNAME}${PKG_SUFX}; \
1.1540.2.9 tv 3079: ${SETENV} PKG_DBDIR=${_PKG_DBDIR} PKG_SUFX=${PKG_SUFX} \
1.972 agc 3080: PKGREPOSITORY=${PACKAGES}/All \
3081: ${LOCALBASE}/bin/pkg_tarup ${PKGNAME}; \
3082: for CATEGORY in ${CATEGORIES}; do \
3083: ${MKDIR} ${PACKAGES}/$$CATEGORY; \
3084: cd ${PACKAGES}/$$CATEGORY; \
3085: ${RM} -f ${PKGNAME}${PKG_SUFX}; \
3086: ${LN} -s ../All/${PKGNAME}${PKG_SUFX}; \
1.784 tron 3087: done
1.1252 jlam 3088: .endif
1.939 agc 3089:
3090: # shared code for replace and undo-replace
3091: _REPLACE= \
1.1531 agc 3092: if [ -f ${_PKG_DBDIR}/$$oldpkgname/+REQUIRED_BY ]; then \
1.1252 jlam 3093: ${MV} ${_PKG_DBDIR}/$$oldpkgname/+REQUIRED_BY ${WRKDIR}/.req; \
1.939 agc 3094: fi; \
1.1531 agc 3095: ${MAKE} deinstall UPDATE_RUNNING=YES; \
1.939 agc 3096: $$replace_action; \
3097: if [ -f ${WRKDIR}/.req ]; then \
1.1252 jlam 3098: ${MV} ${WRKDIR}/.req ${_PKG_DBDIR}/$$newpkgname/+REQUIRED_BY; \
3099: for pkg in `${CAT} ${_PKG_DBDIR}/$$newpkgname/+REQUIRED_BY`; do \
1.939 agc 3100: ${SETENV} NEWPKGNAME=$$newpkgname \
3101: ${AWK} '/^@pkgdep '$$oldpkgname'/ { print "@pkgdep " ENVIRON["NEWPKGNAME"]; next } { print }' \
1.1252 jlam 3102: < ${_PKG_DBDIR}/$$pkg/+CONTENTS > ${_PKG_DBDIR}/$$pkg/+CONTENTS.$$$$ && \
3103: ${MV} ${_PKG_DBDIR}/$$pkg/+CONTENTS.$$$$ ${_PKG_DBDIR}/$$pkg/+CONTENTS; \
1.939 agc 3104: done; \
3105: fi
3106:
3107: # replace a package in place - not for the faint-hearted
1.1222 jmmv 3108: .PHONY: real-su-replace
1.939 agc 3109: real-su-replace:
1.972 agc 3110: ${_PKG_SILENT}${_PKG_DEBUG} \
1.939 agc 3111: ${ECHO_MSG} "*** WARNING - experimental target - data loss may be experienced ***"; \
1.955 agc 3112: if [ -x ${LOCALBASE}/bin/pkg_tarup ]; then \
3113: ${SETENV} PKGREPOSITORY=${WRKDIR} ${LOCALBASE}/bin/pkg_tarup ${PKGBASE}; \
3114: else \
3115: ${ECHO} "No ${LOCALBASE}/bin/pkg_tarup binary - can't pkg_tarup ${PKGBASE}"; \
3116: exit 1; \
3117: fi
1.972 agc 3118: ${_PKG_SILENT}${_PKG_DEBUG} \
1.1281 jlam 3119: oldpkgname=`${PKG_BEST_EXISTS} "${PKGWILDCARD}"`; \
1.939 agc 3120: newpkgname=${PKGNAME}; \
3121: ${ECHO} "$$oldpkgname" > ${WRKDIR}/.replace; \
3122: replace_action="${MAKE} install"; \
3123: ${_REPLACE}
3124:
3125: # undo the replacement of a package - not for the faint-hearted either
1.1222 jmmv 3126: .PHONY: real-su-undo-replace
1.939 agc 3127: real-su-undo-replace:
1.972 agc 3128: ${_PKG_SILENT}${_PKG_DEBUG} \
1.939 agc 3129: if [ ! -f ${WRKDIR}/.replace ]; then \
3130: ${ECHO_MSG} "No replacement to undo"; \
3131: exit 1; \
1.955 agc 3132: fi
1.972 agc 3133: ${_PKG_SILENT}${_PKG_DEBUG} \
1.939 agc 3134: ${ECHO_MSG} "*** WARNING - experimental target - data loss may be experienced ***"; \
3135: oldpkgname=${PKGNAME}; \
3136: newpkgname=`${CAT} ${WRKDIR}/.replace`; \
1.955 agc 3137: replace_action="${SETENV} ${PKG_ADD} ${WRKDIR}/$$newpkgname${PKG_SUFX}"; \
1.939 agc 3138: ${_REPLACE}; \
3139: ${RM} ${WRKDIR}/.replace
1.631 hubertf 3140:
1.251 hubertf 3141: # This is for the use of sites which store distfiles which others may
3142: # fetch - only fetch the distfile if it is allowed to be
3143: # re-distributed freely
1.1222 jmmv 3144: .PHONY: mirror-distfiles
1.251 hubertf 3145: mirror-distfiles:
1.547 hubertf 3146: .if !defined(NO_SRC_ON_FTP)
1.1481 seb 3147: @${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} fetch NO_SKIP=yes
1.251 hubertf 3148: .endif
3149:
1.1 agc 3150:
3151: # Cleaning up
3152:
1.1222 jmmv 3153: .PHONY: clean
1.1 agc 3154: clean: pre-clean
1.1540.2.1 tv 3155: .if (${CLEANDEPENDS} != "NO") && (!empty(BUILD_DEPENDS) || !empty(DEPENDS))
1.452 hubertf 3156: ${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} clean-depends
1.1540.2.1 tv 3157: .endif
1.416 agc 3158: @${ECHO_MSG} "${_PKGSRC_IN}> Cleaning for ${PKGNAME}"
1.463 mycroft 3159: ${_PKG_SILENT}${_PKG_DEBUG} \
3160: if [ -d ${WRKDIR} ]; then \
1.221 agc 3161: if [ -w ${WRKDIR} ]; then \
3162: ${RM} -rf ${WRKDIR}; \
3163: else \
1.416 agc 3164: ${ECHO_MSG} "${_PKGSRC_IN}> ${WRKDIR} not writable, skipping"; \
1.221 agc 3165: fi; \
1.1 agc 3166: fi
1.1540.2.1 tv 3167: .ifdef WRKOBJDIR
1.463 mycroft 3168: -${_PKG_SILENT}${_PKG_DEBUG} \
1.469 mycroft 3169: ${RMDIR} ${BUILD_DIR} 2>/dev/null; \
1.463 mycroft 3170: ${RM} -f ${WRKDIR_BASENAME}
1.1 agc 3171: .endif
3172:
1.446 hubertf 3173:
1.1222 jmmv 3174: .PHONY: clean-depends
1.446 hubertf 3175: clean-depends:
1.1540.2.1 tv 3176: .if !empty(BUILD_DEPENDS) || !empty(DEPENDS)
1.469 mycroft 3177: ${_PKG_SILENT}${_PKG_DEBUG} \
1.1540.2.1 tv 3178: for i in `${_SHOW_ALL_DEPENDS_DIRS_EXCL}`; do \
1.490 dmcmahil 3179: cd ${.CURDIR}/../../$$i && \
3180: ${MAKE} ${MAKEFLAGS} CLEANDEPENDS=NO clean; \
1.446 hubertf 3181: done
1.172 tron 3182: .endif
3183:
1.446 hubertf 3184:
1.1222 jmmv 3185: .PHONY: cleandir
1.172 tron 3186: cleandir: clean
1.1 agc 3187:
1.446 hubertf 3188:
1.1222 jmmv 3189: .PHONY: distclean
1.1 agc 3190: distclean: pre-distclean clean
1.416 agc 3191: ${_PKG_SILENT}${ECHO_MSG} "${_PKGSRC_IN}> Dist cleaning for ${PKGNAME}"
1.451 hubertf 3192: ${_PKG_SILENT}${_PKG_DEBUG}if [ -d ${_DISTDIR} ]; then \
1.221 agc 3193: cd ${_DISTDIR} && \
3194: ${TEST} -z "${DISTFILES}" || ${RM} -f ${DISTFILES}; \
3195: ${TEST} -z "${PATCHFILES}" || ${RM} -f ${PATCHFILES}; \
1.451 hubertf 3196: fi
1.1540.2.1 tv 3197: .if defined(DIST_SUBDIR) && exists(DIST_SUBDIR)
1.1159 grant 3198: -${_PKG_SILENT}${_PKG_DEBUG}${RMDIR} ${_DISTDIR}
1.1 agc 3199: .endif
1.1540.2.1 tv 3200: -${_PKG_SILENT}${_PKG_DEBUG}${RM} -f README.html
1.1 agc 3201:
1.744 hubertf 3202: # List of sites carrying binary pkgs. Variables "rel" and "arch" are
3203: # replaced with OS release ("1.5", ...) and architecture ("mipsel", ...)
1.1082 hubertf 3204: BINPKG_SITES?= \
1.1412 grant 3205: ftp://ftp.NetBSD.org/pub/NetBSD/packages/$${rel}/$${arch}
1.744 hubertf 3206:
1.1252 jlam 3207: # List of flags to pass to pkg_add(1) for bin-install:
3208:
1.744 hubertf 3209: BIN_INSTALL_FLAGS?= # -v
1.1252 jlam 3210: .if ${PKG_INSTALLATION_TYPE} == "pkgviews"
1.1264 jlam 3211: PKG_ARGS_ADD= -W ${LOCALBASE} -w ${DEFAULT_VIEW}
1.1252 jlam 3212: .endif
3213: _BIN_INSTALL_FLAGS= ${BIN_INSTALL_FLAGS}
3214: _BIN_INSTALL_FLAGS+= ${PKG_ARGS_ADD}
1.744 hubertf 3215:
1.499 hubertf 3216: # Install binary pkg, without strict uptodate-check first
1.1297 agc 3217: .PHONY: real-su-bin-install
3218: real-su-bin-install:
1.1275 jlam 3219: @found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \
1.744 hubertf 3220: if [ "$$found" != "" ]; then \
1.1331 grant 3221: ${ECHO_MSG} "${_PKGSRC_IN}> $$found is already installed - perhaps an older version?"; \
1.744 hubertf 3222: ${ECHO_MSG} "*** If so, you may wish to \`\`pkg_delete $$found'' and install"; \
3223: ${ECHO_MSG} "*** this package again by \`\`${MAKE} bin-install'' to upgrade it properly."; \
3224: ${SHCOMMENT} ${ECHO_MSG} "*** or use \`\`${MAKE} bin-update'' to upgrade it and all of its dependencies."; \
3225: exit 1; \
3226: fi
1.499 hubertf 3227: @if [ -f ${PKGFILE} ] ; then \
3228: ${ECHO_MSG} "Installing from binary pkg ${PKGFILE}" ; \
1.1252 jlam 3229: ${PKG_ADD} ${_BIN_INSTALL_FLAGS} ${PKGFILE} ; \
1.499 hubertf 3230: else \
1.972 agc 3231: rel=`${UNAME} -r | ${SED} 's@\.\([0-9]*\)[\._].*@\.\1@'`; \
1.926 hubertf 3232: arch=${MACHINE_ARCH}; \
1.1082 hubertf 3233: for site in ${BINPKG_SITES} ; do \
1.756 jlam 3234: ${ECHO} Trying `eval ${ECHO} $$site`/All ; \
1.1252 jlam 3235: ${SHCOMMENT} ${ECHO} ${SETENV} PKG_PATH="`eval ${ECHO} $$site`/All" ${PKG_ADD} ${_BIN_INSTALL_FLAGS} ${PKGNAME}${PKG_SUFX} ; \
1.756 jlam 3236: if ${SETENV} PKG_PATH="`eval ${ECHO} $$site`/All" ${PKG_ADD} ${BIN_INSTALL_FLAGS} ${PKGNAME}${PKG_SUFX} ; then \
1.972 agc 3237: ${ECHO} "${PKGNAME} successfully installed."; \
1.744 hubertf 3238: break ; \
3239: fi ; \
3240: done ; \
1.1048 hubertf 3241: if ! ${PKG_INFO} -qe "${PKGNAME}" ; then \
1.744 hubertf 3242: ${SHCOMMENT} Cycle through some FTP server here ;\
3243: ${ECHO_MSG} "Installing from source" ; \
1.969 hubertf 3244: ${MAKE} ${MAKEFLAGS} package \
1.1437 xtraeme 3245: DEPENDS_TARGET=${DEPENDS_TARGET:Q} && \
1.744 hubertf 3246: ${MAKE} ${MAKEFLAGS} clean ; \
3247: fi ; \
1.499 hubertf 3248: fi
1.1297 agc 3249:
3250: .PHONY: bin-install
3251: bin-install:
3252: @${ECHO_MSG} "${_PKGSRC_IN}> Binary install for ${PKGNAME}"
3253: ${_PKG_SILENT}${_PKG_DEBUG} \
1.1540.2.9 tv 3254: realtarget="real-su-bin-install"; \
1.1297 agc 3255: action="binary install"; \
3256: ${_SU_TARGET}
3257:
1.1 agc 3258: ################################################################
3259: # The special package-building targets
3260: # You probably won't need to touch these
3261: ################################################################
3262:
3263: # Show (recursively) all the packages this package depends on.
1.414 hubertf 3264: # If PACKAGE_DEPENDS_WITH_PATTERNS is set, print as pattern (if possible)
1.399 hubertf 3265: PACKAGE_DEPENDS_WITH_PATTERNS?=true
1.1222 jmmv 3266: .PHONY: run-depends-list
1.532 hubertf 3267: run-depends-list:
1.1540.2.1 tv 3268: .for dep in ${DEPENDS}
1.747 agc 3269: @pkg="${dep:C/:.*//}"; \
1.452 hubertf 3270: dir="${dep:C/[^:]*://}"; \
1.472 hubertf 3271: cd ${.CURDIR}; \
1.482 hubertf 3272: if ${PACKAGE_DEPENDS_WITH_PATTERNS}; then \
3273: ${ECHO} "$$pkg"; \
3274: else \
3275: if cd $$dir 2>/dev/null; then \
1.458 hubertf 3276: ${MAKE} ${MAKEFLAGS} package-name PACKAGE_NAME_TYPE=${PACKAGE_NAME_TYPE}; \
1.482 hubertf 3277: else \
3278: ${ECHO_MSG} "Warning: \"$$dir\" non-existent -- @pkgdep registration incomplete" >&2; \
1.221 agc 3279: fi; \
1.458 hubertf 3280: fi
1.1540.2.1 tv 3281: .endfor
1.1 agc 3282:
1.1540.2.6 tv 3283: # Set to "html" by the README.html target to generate HTML code,
3284: # or to "svr4" to print SVR4 (Solaris, ...) short package names, from
3285: # SVR4_PKGNAME variable.
3286: # This variable is passed down via build-depends-list and run-depends-list
3287: PACKAGE_NAME_TYPE?= name
3288:
3289: # Nobody should want to override this unless PKGNAME is simply bogus.
3290: HTML_PKGNAME=<a href="../../${PKGPATH:S/&/\&/g:S/>/\>/g:S/</\</g}/README.html">${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</A>
3291:
3292: .PHONY: package-name
3293: package-name:
3294: .if (${PACKAGE_NAME_TYPE} == "html")
3295: @${ECHO} '<a href="../../${PKGPATH:S/&/\&/g:S/>/\>/g:S/</\</g}/README.html">${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</A>'
3296: .elif (${PACKAGE_NAME_TYPE} == "svr4")
3297: @${ECHO} ${SVR4_PKGNAME}
3298: .else
3299: @${ECHO} ${PKGNAME}
3300: .endif # PACKAGE_NAME_TYPE
3301:
1.1 agc 3302: # Build a package but don't check the package cookie
3303:
1.1222 jmmv 3304: .PHONY: repackage
1.1 agc 3305: repackage: pre-repackage package
3306:
1.1222 jmmv 3307: .PHONY: pre-repackage
1.1 agc 3308: pre-repackage:
1.1540.2.1 tv 3309: ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${package_COOKIE}
1.1 agc 3310:
3311: # Build a package but don't check the cookie for installation, also don't
3312: # install package cookie
3313:
1.1222 jmmv 3314: .PHONY: package-noinstall
1.1 agc 3315: package-noinstall:
1.452 hubertf 3316: ${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} PACKAGE_NOINSTALL=yes real-package
1.1 agc 3317:
3318: ################################################################
3319: # Dependency checking
3320: ################################################################
3321:
1.393 agc 3322: # Tells whether to halt execution if the object formats differ
3323: FATAL_OBJECT_FMT_SKEW?= yes
1.396 agc 3324: WARN_NO_OBJECT_FMT?= yes
1.393 agc 3325:
1.1540.2.5 tv 3326: do-depends:
1.1540.2.1 tv 3327: .for dep in ${DEPENDS} ${BUILD_DEPENDS}
1.701 hubertf 3328: ${_PKG_SILENT}${_PKG_DEBUG} \
1.454 mycroft 3329: pkg="${dep:C/:.*//}"; \
3330: dir="${dep:C/[^:]*://:C/:.*$//}"; \
1.1275 jlam 3331: found=`${PKG_BEST_EXISTS} "$$pkg" || ${TRUE}`; \
1.808 martin 3332: if [ "X$$REBUILD_DOWNLEVEL_DEPENDS" != "X" ]; then \
1.1540.2.1 tv 3333: pkgname=`cd $$dir ; ${MAKE} ${MAKEFLAGS} show-var-noeval VARNAME=PKGNAME`; \
1.972 agc 3334: if [ "X$$found" != "X" -a "X$$found" != "X$${pkgname}" ]; then \
3335: ${ECHO_MSG} "ignoring old installed package \"$$found\""; \
1.808 martin 3336: found=""; \
3337: fi; \
3338: fi; \
1.452 hubertf 3339: if [ "$$found" != "" ]; then \
1.1275 jlam 3340: instobjfmt=`${PKG_INFO} -B "$$found" | ${AWK} -F'=[ \t]*' '/^OBJECT_FMT/ {print $$2; exit}'`; \
1.452 hubertf 3341: if [ "$$instobjfmt" = "" ]; then \
1.396 agc 3342: if [ "X${WARN_NO_OBJECT_FMT}" != "Xno" ]; then \
1.1275 jlam 3343: ${ECHO} "WARNING: Unknown object format for installed package $$found - continuing"; \
1.396 agc 3344: fi; \
1.452 hubertf 3345: elif [ "$$instobjfmt" != "${OBJECT_FMT}" ]; then \
1.1275 jlam 3346: ${ECHO} "Installed package $$found is an $$instobjfmt package."; \
1.392 agc 3347: ${ECHO} "You are building an ${OBJECT_FMT} package, which will not inter-operate."; \
1.1275 jlam 3348: ${ECHO} "Please update the $$found package to ${OBJECT_FMT}"; \
1.537 fredb 3349: if [ "X${FATAL_OBJECT_FMT_SKEW}" != "Xno" ]; then \
1.393 agc 3350: exit 1; \
3351: fi; \
1.392 agc 3352: fi; \
1.1279 jlam 3353: ${ECHO_MSG} "${_PKGSRC_IN}> Required installed package $$pkg: $${found} found"; \
1.148 agc 3354: else \
1.606 hubertf 3355: ${ECHO_MSG} "${_PKGSRC_IN}> Required package $$pkg: NOT found"; \
1.1437 xtraeme 3356: target=${DEPENDS_TARGET:Q}; \
1.416 agc 3357: ${ECHO_MSG} "${_PKGSRC_IN}> Verifying $$target for $$dir"; \
1.148 agc 3358: if [ ! -d $$dir ]; then \
1.415 agc 3359: ${ECHO_MSG} "=> No directory for $$dir. Skipping.."; \
1.73 agc 3360: else \
1.452 hubertf 3361: cd $$dir ; \
1.1468 agc 3362: ${SETENV} _PKGSRC_DEPS=", ${PKGNAME}${_PKGSRC_DEPS}" ${MAKE} ${MAKEFLAGS} $$target PKGNAME_REQD=\'$$pkg\' || exit 1; \
1.416 agc 3363: ${ECHO_MSG} "${_PKGSRC_IN}> Returning to build of ${PKGNAME}"; \
1.275 tv 3364: fi; \
3365: fi
1.1540.2.1 tv 3366: .endfor # DEPENDS
1.1 agc 3367:
1.1222 jmmv 3368: .PHONY: build-depends-list
1.532 hubertf 3369: build-depends-list:
1.1540.2.1 tv 3370: @for dir in `${_SHOW_ALL_DEPENDS_DIRS_EXCL}`; do \
1.937 wiz 3371: (cd ../../$$dir && \
3372: ${MAKE} ${MAKEFLAGS} package-name) \
3373: done
1.1 agc 3374:
1.1159 grant 3375: # Stat all the files of one pkg and sum the sizes up.
3376: #
1.373 hubertf 3377: # XXX This is intended to be run before pkg_create is called, so the
1.577 agc 3378: # existence of ${PLIST} can be assumed.
1.1222 jmmv 3379: .PHONY: print-pkg-size-this
1.483 hubertf 3380: print-pkg-size-this:
1.485 hubertf 3381: @${SHCOMMENT} "This pkg's files" ; \
1.424 hubertf 3382: ${AWK} 'BEGIN { base = "${PREFIX}/" } \
3383: /^@cwd/ { base = $$2 "/" } \
1.1328 seb 3384: /^@/ { next } \
3385: { print base $$0 }' \
1.488 hubertf 3386: <${PLIST} \
1.757 jlam 3387: | ${SORT} -u \
1.1328 seb 3388: | ${SED} -e "s/'/'\\\\''/g" -e "s/.*/'&'/" \
1.1383 jlam 3389: | ${XARGS} -n 256 ${LS} -ld \
1.1540.2.19 tv 3390: | ${AWK} '{ s += $$5; } END { print s; }' \
1.386 hubertf 3391:
1.483 hubertf 3392: # Sizes of required pkgs (only)
1.1159 grant 3393: #
1.483 hubertf 3394: # XXX This is intended to be run before pkg_create is called, so the
1.1159 grant 3395: # dependencies are all installed.
1.1222 jmmv 3396: .PHONY: print-pkg-size-depends
1.483 hubertf 3397: print-pkg-size-depends:
1.1483 minskim 3398: @pkglist=`${MAKE} ${MAKEFLAGS} run-depends-list`; \
3399: if [ "X$${pkglist}" != "X" ]; then \
3400: ${ECHO} $${pkglist} \
3401: | ${XARGS} -n 1 ${SETENV} ${PKG_BEST_EXISTS} \
3402: | ${SORT} -u \
3403: | ${XARGS} -n 256 ${SETENV} ${PKG_INFO} -qs \
1.1540.2.19 tv 3404: | ${AWK} '/^[0-9]+$$/ { s += $$1; } END { print s; }'; \
1.1483 minskim 3405: else \
3406: ${ECHO} "0"; \
3407: fi
1.480 hubertf 3408:
1.1252 jlam 3409: # By default, all packages attempt to link into the views.
3410: .if ${PKG_INSTALLATION_TYPE} == "pkgviews"
3411: BUILD_VIEWS?= yes
3412: .endif
3413:
1.1272 jlam 3414: # DEFAULT_VIEW.${PKGBASE} default view for ${PKGBASE}
3415: # VIEWBASE base location of files at run-time
3416: #
3417: DEFAULT_VIEW.${PKGBASE}?= ${DEFAULT_VIEW}
3418: .if ${PKG_INSTALLATION_TYPE} == "pkgviews"
3419: . if empty(DEFAULT_VIEW.${PKGBASE}:M"")
3420: VIEWBASE= ${LOCALBASE}/${DEFAULT_VIEW.${PKGBASE}}
3421: . else
3422: VIEWBASE= ${LOCALBASE}
3423: . endif
3424: .elif ${PKG_INSTALLATION_TYPE} == "overwrite"
3425: VIEWBASE= ${PREFIX}
3426: .endif
1.1305 jlam 3427: MAKE_ENV+= VIEWBASE=${VIEWBASE}
1.1272 jlam 3428:
3429: PKGVIEWS+= ${DEFAULT_VIEW.${PKGBASE}}
1.373 hubertf 3430:
1.1540.2.15 tv 3431: .PHONY: pre-install-fake-pkg
3432: pre-install-fake-pkg:
1.1127 agc 3433: ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PRESERVE_FILE}
1.1540.2.1 tv 3434: .if defined(PKG_PRESERVE)
1.1127 agc 3435: ${_PKG_SILENT}${_PKG_DEBUG}${DATE} > ${PRESERVE_FILE}
1.1540.2.1 tv 3436: .endif
1.932 agc 3437: ${_PKG_SILENT}${_PKG_DEBUG} \
3438: files=""; \
1.948 tron 3439: for f in ${.CURDIR}/Makefile ${FILESDIR}/* ${PKGDIR}/*; do \
1.945 agc 3440: if [ -f "$$f" ]; then \
3441: files="$$files \"$$f\""; \
3442: fi; \
3443: done; \
1.753 wiz 3444: if [ -f ${DISTINFO_FILE} ]; then \
3445: for f in `${AWK} 'NF == 4 && $$3 == "=" { gsub("[()]", "", $$2); print $$2 }' < ${DISTINFO_FILE}`; do \
1.662 agc 3446: if [ -f ${PATCHDIR}/$$f ]; then \
1.945 agc 3447: files="$$files \"${PATCHDIR}/$$f\""; \
1.334 tron 3448: fi; \
1.315 agc 3449: done; \
3450: fi; \
1.186 agc 3451: if [ -d ${PATCHDIR} ]; then \
3452: for f in ${PATCHDIR}/patch-*; do \
3453: case $$f in \
3454: *.orig|*.rej|*~) ;; \
1.315 agc 3455: ${PATCHDIR}/patch-local-*) \
1.945 agc 3456: files="$$files \"$$f\"" ;; \
1.186 agc 3457: esac; \
3458: done; \
3459: fi; \
1.1510 jlam 3460: eval ${GREP} '\$$NetBSD' $$files | ${SED} -e 's|^${PKGSRCDIR}/||' > ${BUILD_VERSION_FILE}
1.1540.2.15 tv 3461: ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${BUILD_INFO_FILE}
1.1540.2.1 tv 3462: .for def in ${BUILD_DEFS} ${BUILD_DEFS_FIXED}
1.1193 grant 3463: @${ECHO} ${def}=${${def}:Q} | ${SED} -e 's|^PATH=[^ ]*|PATH=...|' >> ${BUILD_INFO_FILE}
1.1540.2.1 tv 3464: .endfor
3465: .if defined(USE_LANGUAGES) && !empty(USE_LANGUAGES)
1.1294 grant 3466: @${ECHO} "CC_VERSION=${CC_VERSION}" >> ${BUILD_INFO_FILE}
1.1540.2.1 tv 3467: .endif
3468: .if defined(USE_PERL5) && (${USE_PERL5} == "run")
1.1193 grant 3469: @${ECHO} "PERL=`${PERL5} --version 2>/dev/null | ${GREP} 'This is perl'`" >> ${BUILD_INFO_FILE}
1.1540.2.1 tv 3470: .endif
3471: .if !empty(USE_GNU_TOOLS:Mmake)
1.1193 grant 3472: @${ECHO} "GMAKE=`${GMAKE} --version | ${GREP} Make`" >> ${BUILD_INFO_FILE}
1.1540.2.1 tv 3473: .endif
1.1540.2.15 tv 3474: ${_PKG_SILENT}${_PKG_DEBUG} \
3475: ${ECHO} "_PKGTOOLS_VER=${PKGTOOLS_VERSION}" >> ${BUILD_INFO_FILE}
3476:
3477: .PHONY: post-install-fake-pkg
3478: post-install-fake-pkg: ${PLIST} ${DESCR} ${MESSAGE}
3479: ${_PKG_SILENT}${_PKG_DEBUG} \
3480: if [ ! -f ${PLIST} -o ! -f ${DESCR} ]; then \
3481: ${ECHO} "** Missing package files for ${PKGNAME} - installation not recorded."; \
3482: exit 1; \
3483: fi
3484: ${_PKG_SILENT}${_PKG_DEBUG} \
3485: if [ ! -d ${_PKG_DBDIR} ]; then \
3486: ${RM} -f ${_PKG_DBDIR}; \
3487: ${MKDIR} ${_PKG_DBDIR}; \
3488: fi
3489: .if defined(FORCE_PKG_REGISTER)
3490: ${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} delete ${PKGNAME}
3491: .endif
3492: ${_PKG_SILENT}${_PKG_DEBUG} \
3493: ${ECHO} ${COMMENT:Q} > ${PKG_DB_TMPDIR}/+COMMENT
3494: ${_PKG_SILENT}${_PKG_DEBUG} \
3495: case "${DESCR}" in \
3496: ${PKG_DB_TMPDIR}/*|"") ;; \
3497: *) if ${TEST} -f ${DESCR}; then \
3498: ${CP} ${DESCR} ${PKG_DB_TMPDIR}/+DESC; \
3499: fi ;; \
3500: esac
3501: ${_PKG_SILENT}${_PKG_DEBUG} \
3502: case "${MESSAGE}" in \
3503: ${PKG_DB_TMPDIR}/*|"") ;; \
3504: *) if ${TEST} -f ${MESSAGE}; then \
3505: ${CP} ${MESSAGE} ${PKG_DB_TMPDIR}/+DISPLAY; \
3506: fi ;; \
3507: esac
3508: ${_PKG_SILENT}${_PKG_DEBUG} \
3509: case ${PKG_INSTALLATION_TYPE} in \
3510: pkgview) ${TOUCH} ${PKG_DB_TMPDIR}/+VIEWS ;; \
3511: esac
3512: ${_PKG_SILENT}${_PKG_DEBUG} \
3513: case "${INSTALL_FILE}" in \
3514: ${PKG_DB_TMPDIR}/*|"") ;; \
3515: *) if ${TEST} -f ${INSTALL_FILE}; then \
3516: ${CP} ${INSTALL_FILE} ${PKG_DB_TMPDIR}/+INSTALL; \
3517: fi ;; \
3518: esac
3519: ${_PKG_SILENT}${_PKG_DEBUG} \
3520: case "${DEINSTALL_FILE}" in \
3521: ${PKG_DB_TMPDIR}/*|"") ;; \
3522: *) if ${TEST} -f ${DEINSTALL_FILE}; then \
3523: ${CP} ${DEINSTALL_FILE} ${PKG_DB_TMPDIR}/+DEINSTALL; \
3524: fi ;; \
3525: esac
3526: ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${SIZE_PKG_FILE} ${SIZE_ALL_FILE}
1.1540.2.1 tv 3527: .if ${SHLIB_HANDLING} == "YES" && ${CHECK_SHLIBS} == "YES"
1.1219 agc 3528: ${_PKG_SILENT}${_PKG_DEBUG} \
1.1244 grant 3529: case "${LDD}" in \
3530: "") ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'`;; \
3531: *) ldd="${LDD}"; \
3532: esac; \
1.1219 agc 3533: case "${OBJECT_FMT}" in \
3534: ELF) bins=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^(bin|sbin|libexec)\// { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
3535: libs=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^lib\/lib.*\.so\.[0-9]+$$/ { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
3536: if ${TEST} "$$bins" != "" -o "$$libs" != ""; then \
1.1220 agc 3537: requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} 'NF == 3 { print $$3 }' | ${SORT} -u`; \
1.1219 agc 3538: fi; \
1.1529 tv 3539: linklibs=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^[^@].*\.so\.[0-9\.]+$$/ { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
1.1518 tv 3540: for i in $${linklibs}; do \
1.1527 tv 3541: if ${TEST} -r $$i -a ! -x $$i -a ! -h $$i; then \
1.1529 tv 3542: ${TEST} "${PKG_DEVELOPER:Uno}" = "no" || \
3543: ${ECHO} "$$i: installed without execute permission; fixing (should use [BSD_]INSTALL_LIB)"; \
1.1518 tv 3544: ${CHMOD} +x $$i; \
3545: fi; \
3546: done; \
1.1244 grant 3547: ;; \
3548: Mach-O) bins=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^(bin|sbin|libexec)\// { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
3549: libs=`${SETENV} PREFIX=${PREFIX} ${AWK} '/^lib\/lib.*\.dylib/ { print ENVIRON["PREFIX"] "/" $$0 }' ${PLIST} || ${TRUE}`; \
3550: if ${TEST} "$$bins" != "" -o "$$libs" != ""; then \
1.1334 grant 3551: requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} '/compatibility version/ { print $$1 }' | ${SORT} -u`; \
1.1244 grant 3552: fi; \
3553: ;; \
3554: esac; \
3555: for i in "" $$libs; do \
3556: ${TEST} "$$i" = "" && continue; \
3557: ${ECHO} "PROVIDES=$$i" >> ${BUILD_INFO_FILE}; \
3558: done; \
3559: for req in "" $$requires; do \
3560: ${TEST} "$$req" = "" && continue; \
3561: ${ECHO} "REQUIRES=$$req" >> ${BUILD_INFO_FILE}; \
3562: done
1.1540.2.1 tv 3563: .endif
1.615 hubertf 3564: ${_PKG_SILENT}${_PKG_DEBUG} \
1.483 hubertf 3565: size_this=`${MAKE} ${MAKEFLAGS} print-pkg-size-this`; \
3566: size_depends=`${MAKE} ${MAKEFLAGS} print-pkg-size-depends`; \
1.488 hubertf 3567: ${ECHO} $$size_this >${SIZE_PKG_FILE}; \
1.1540.2.19 tv 3568: ${ECHO} $$size_this $$size_depends \
3569: | ${AWK} '{ print $$1 + $$2; }' >${SIZE_ALL_FILE}
1.1540.2.15 tv 3570:
3571: # Fake installation of package so that user can pkg_delete it later.
3572: # Also, make sure that an installed package is recognized correctly in
3573: # accordance to the @pkgdep directive in the packing lists.
3574: #
3575: .PHONY: register-pkg
3576: register-pkg: post-install-fake-pkg
1.452 hubertf 3577: ${_PKG_SILENT}${_PKG_DEBUG} \
1.1252 jlam 3578: doit=yes; \
3579: case ${PKG_INSTALLATION_TYPE} in \
3580: overwrite) if [ -d ${_PKG_DBDIR}/${PKGNAME} ]; then \
3581: doit=no; \
3582: fi ;; \
3583: esac; \
3584: case $$doit in \
3585: yes) \
1.416 agc 3586: ${ECHO_MSG} "${_PKGSRC_IN}> Registering installation for ${PKGNAME}"; \
1.1540.2.15 tv 3587: ${PKG_CREATE} ${PKG_ARGS_INSTALL} -O ${PKGFILE} > ${PKG_DB_TMPDIR}/+CONTENTS; \
1.1435 tv 3588: list="`${MAKE} ${MAKEFLAGS} run-depends-list ECHO_MSG=${TRUE} | ${SORT} -u`" ; \
1.1278 jlam 3589: for realdep in `${ECHO} $$list | ${XARGS} -n 1 ${SETENV} ${PKG_BEST_EXISTS} | ${SORT} -u`; do \
1.380 hubertf 3590: if ${TEST} -z "$$realdep"; then \
1.568 wiz 3591: ${ECHO} "$$dep not installed - dependency NOT registered" ; \
1.1252 jlam 3592: elif [ -d ${_PKG_DBDIR}/$$realdep ]; then \
1.1471 grant 3593: if ${TEST} ! -f ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY; then \
1.1252 jlam 3594: ${TOUCH} ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY; \
1.221 agc 3595: fi; \
3596: ${AWK} 'BEGIN { found = 0; } \
3597: $$0 == "${PKGNAME}" { found = 1; } \
3598: { print $$0; } \
3599: END { if (!found) { printf("%s\n", "${PKGNAME}"); }}' \
1.1252 jlam 3600: < ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY > ${_PKG_DBDIR}/$$realdep/reqby.$$$$; \
3601: ${MV} ${_PKG_DBDIR}/$$realdep/reqby.$$$$ ${_PKG_DBDIR}/$$realdep/+REQUIRED_BY; \
1.221 agc 3602: ${ECHO} "${PKGNAME} requires installed package $$realdep"; \
1.175 agc 3603: fi; \
1.1540.2.15 tv 3604: done; \
3605: case ${PKG_INSTALLATION_TYPE} in \
3606: overwrite) ${RM} -rf ${_PKG_DBDIR}/${PKGNAME} ;; \
3607: esac; \
3608: ${MKDIR} ${_PKG_DBDIR}/${PKGNAME}; \
3609: ${CP} ${PKG_DB_TMPDIR}/+* ${_PKG_DBDIR}/${PKGNAME}; \
3610: ;; \
1.1252 jlam 3611: esac
1.1540.2.1 tv 3612: .if (${PKG_INSTALLATION_TYPE} == "pkgviews") && \
1.1265 jlam 3613: !empty(BUILD_VIEWS:M[yY][eE][sS])
1.1252 jlam 3614: ${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} build-views
1.1540.2.1 tv 3615: .endif # pkgviews
1.1252 jlam 3616:
3617: .PHONY: build-views
3618: build-views: do-su-build-views
3619:
3620: .PHONY: do-su-build-views
3621: do-su-build-views:
3622: @${ECHO_MSG} "${_PKGSRC_IN}> Building views for ${PKGNAME}"
3623: ${_PKG_SILENT}${_PKG_DEBUG} \
3624: realtarget="real-su-build-views"; \
3625: action="build-views"; \
3626: ${_SU_TARGET}
3627:
3628: .PHONY: real-su-build-views
3629: real-su-build-views:
1.1540.2.1 tv 3630: .if (${PKG_INSTALLATION_TYPE} == "pkgviews") && defined(PKGVIEWS)
1.1252 jlam 3631: ${_PKG_SILENT}${_PKG_DEBUG} \
3632: ${MKDIR} ${LOCALBASE}; \
3633: for v in ${PKGVIEWS}; do \
3634: case "$$v" in \
3635: "") dbdir=${PKG_DBDIR}; viewname=standard ;; \
3636: *) dbdir=${LOCALBASE}/$$v/.dbdir; viewname=$$v ;; \
3637: esac; \
3638: ${ECHO} "=> Performing package view clash check for ${PKGNAME} in $$viewname view"; \
3639: pkg=`${PKG_INFO_CMD} -K $$dbdir -e ${PKGBASE} || ${TRUE}`; \
3640: case "$$pkg" in \
3641: "") ;; \
3642: *) ${ECHO} "*** ${PKGBASE} exists in $$viewname view - package $$pkg ***"; \
3643: ${ECHO} "*** Not hoisting ${PKGNAME} into $$viewname view"; \
3644: continue ;; \
3645: esac; \
3646: ${ECHO} "=> Performing package view overwrite check for ${PKGNAME} in $$viewname view"; \
3647: dups=`${SETENV} PLIST_IGNORE_FILES="${_PLIST_IGNORE_FILES}" ${PKG_VIEW} --view=$$v check ${PKGNAME} || ${TRUE}`; \
3648: case "$$dups" in \
3649: "") ;; \
3650: *) ${ECHO} "***********************************************************"; \
3651: ${ECHO} "**** The following symbolic links will be overwritten *****"; \
3652: for f in $$dups; do \
3653: ${LS} -l ${LOCALBASE}/$$v/$$f; \
3654: done; \
3655: ${ECHO} "***********************************************************"; \
3656: ;; \
3657: esac; \
3658: ${ECHO} "=> Linking package into $$viewname view"; \
3659: ${SETENV} PLIST_IGNORE_FILES="${_PLIST_IGNORE_FILES}" ${PKG_VIEW} --view=$$v add ${PKGNAME}; \
3660: done
3661: .endif
3662:
3663: .PHONY: remove-views
3664: remove-views: do-su-remove-views
3665:
3666: .PHONY: do-su-remove-views
3667: do-su-remove-views:
3668: @${ECHO_MSG} "${_PKGSRC_IN}> Removing ${PKGNAME} from views"
3669: ${_PKG_SILENT}${_PKG_DEBUG} \
3670: realtarget="real-su-remove-views"; \
3671: action="remove-views"; \
3672: ${_SU_TARGET}
3673:
3674: .PHONY: real-su-remove-views
3675: real-su-remove-views:
1.1540.2.1 tv 3676: .if (${PKG_INSTALLATION_TYPE} == "pkgviews") && defined(PKGVIEWS)
1.1252 jlam 3677: ${_PKG_SILENT}${_PKG_DEBUG} \
3678: for v in ${PKGVIEWS}; do \
3679: case "$$v" in \
3680: "") dbdir=${PKG_DBDIR}; viewname=standard ;; \
3681: *) dbdir=${LOCALBASE}/$$v/.dbdir; viewname=$$v ;; \
3682: esac; \
3683: ${ECHO} "=> Removing package from $$viewname view"; \
3684: ${SETENV} PLIST_IGNORE_FILES="${_PLIST_IGNORE_FILES}" ${PKG_VIEW} --view=$$v delete ${PKGNAME}; \
3685: done
1.1 agc 3686: .endif
3687:
1.1540.2.5 tv 3688: .include "../../mk/bsd.pkg.data.mk"
1.1248 jlam 3689: .include "../../mk/subst.mk"
1.521 hubertf 3690:
3691: #
3692: # For bulk build targets (bulk-install, bulk-package), the
1.529 hubertf 3693: # BATCH variable must be set in /etc/mk.conf:
1.521 hubertf 3694: #
3695: .if defined(BATCH)
1.789 hubertf 3696: . include "../../mk/bulk/bsd.bulk-pkg.mk"
1.149 tsarna 3697: .endif
CVSweb <webmaster@jp.NetBSD.org>