Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/pkgsrc/mk/bsd.pkg.mk,v rcsdiff: /ftp/cvs/cvsroot/pkgsrc/mk/bsd.pkg.mk,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.1540.2.3 retrieving revision 1.1540.2.12 diff -u -p -r1.1540.2.3 -r1.1540.2.12 --- pkgsrc/mk/bsd.pkg.mk 2004/11/23 16:50:18 1.1540.2.3 +++ pkgsrc/mk/bsd.pkg.mk 2005/01/24 18:25:28 1.1540.2.12 @@ -1,19 +1,14 @@ -# $NetBSD: bsd.pkg.mk,v 1.1540.2.3 2004/11/23 16:50:18 tv Exp $ +# $NetBSD: bsd.pkg.mk,v 1.1540.2.12 2005/01/24 18:25:28 tv Exp $ # # This file is in the public domain. # # This file is derived from bsd.port.mk - 940820 Jordan K. Hubbard. # -# Please see the NetBSD packages(7) manual page for details on the +# Please see the pkgsrc/doc/guide manual for details on the # variables used in this make file template. # -# Some interesting targets: +# XXX tv: rev 1.1554 is not merged yet (phase "error handlers") # -# all: Recurses to "make test". -# show-var: Show the value of the variable named by VARNAME. -# show-var-noeval: Same as show-var, but skips phase-specific evaluations. -# show-vars: Show the value of the variables named by VARNAMES. -# show-vars-noeval: Same as show-vars, but skips phase-specific evaluations. ############################################################################ # Include any preferences, if not already included, and common definitions @@ -48,7 +43,7 @@ NOCLEAN?= NO # don't clean up after upd REINSTALL?= NO # reinstall upon update SHLIB_HANDLING?= YES # do automatic shared lib handling -### Variant spellings +##### Variant spellings .if defined(LICENCE) && !defined(LICENSE) LICENSE= ${LICENCE} @@ -57,7 +52,7 @@ LICENSE= ${LICENCE} ACCEPTABLE_LICENSES= ${ACCEPTABLE_LICENCES} .endif -### PKGBASE, PKGNAME[_NOREV], PKGVERSION +##### PKGBASE, PKGNAME[_NOREV], PKGVERSION PKGBASE?= ${PKGNAME:C/-[^-]*$//} PKGVERSION?= ${PKGNAME:C/^.*-//} @@ -74,7 +69,7 @@ PKGNAME?= ${DISTNAME} PKGNAME_NOREV= ${PKGNAME} .endif -### PLIST +##### PLIST .if ${PKG_INSTALLATION_TYPE} == "pkgviews" PLIST_TYPE?= dynamic @@ -95,12 +90,12 @@ PLIST_SRC+= ${PKGDIR}/PLIST.common_end . endif .endif # !PLIST_SRC -### Others +##### Others _DISTDIR?= ${DISTDIR}/${DIST_SUBDIR} -ALL_TARGET?= all BUILD_DEFS?= # empty BUILD_DEPENDS?= # empty +BUILD_TARGET?= all DEPENDS?= # empty DESCR_SRC?= ${PKGDIR}/DESCR DIGEST_ALGORITHM?= SHA1 @@ -111,6 +106,8 @@ CONFIGURE_DIRS?= ${WRKSRC} CONFIGURE_SCRIPT?= ./configure EXTRACT_ONLY?= ${DISTFILES} EXTRACT_SUFX?= .tar.gz +INSTALL_DIRS?= ${BUILD_DIRS} +INSTALL_MAKE_FLAGS?= ${MAKE_FLAGS} INSTALL_TARGET?= install INTERACTIVE_STAGE?= none MAINTAINER?= tech-pkg@NetBSD.org @@ -135,7 +132,7 @@ BUILD_DEFS_FIXED+= NO_SRC_ON_FTP NO_SRC_ BUILD_DEFS_FIXED+= NO_BIN_ON_FTP NO_BIN_ON_CDROM BUILD_DEFS_FIXED+= ${OSVERSION_SPECIFIC:DOSVERSION_SPECIFIC} -### Non-overridable constants +##### Non-overridable constants # Latest versions of tools required for correct pkgsrc operation. DIGEST_REQD= 20010302 @@ -161,7 +158,7 @@ PRESERVE_FILE= ${WRKDIR}/.PRESERVE ${targ}_COOKIE= ${WRKDIR}/.${targ}_done .endfor -### Transform USE_* into dependencies +##### Transform USE_* into dependencies .include "../../mk/bsd.pkg.use.mk" @@ -204,6 +201,10 @@ PKG_FAIL_REASON+=' cd ${PKGSRCDIR}/pkgto . endif .endif # NO_PKGTOOLS_REQD_CHECK +.if defined(ALL_TARGET) +PKG_FAIL_REASON+='ALL_TARGET is deprecated and must be replaced with BUILD_TARGET.' +.endif + .if defined(NO_WRKSUBDIR) PKG_FAIL_REASON+='NO_WRKSUBDIR has been deprecated - please replace it with an explicit' PKG_FAIL_REASON+='assignment of WRKSRC= $${WRKDIR}' @@ -245,12 +246,12 @@ PKG_FAIL_REASON+='ONLY/NOT_FOR_ARCHS/OPS .endif .if (${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once") -. if !defined(OBJHOSTNAME) +. if !defined(OBJHOSTNAME) PKG_FAIL_REASON+='PKGSRC_LOCKTYPE needs OBJHOSTNAME defined.' -. elif !exists(${SHLOCK}) +. elif !exists(${SHLOCK}) PKG_FAIL_REASON+='The ${SHLOCK} utility does not exist, and is necessary for locking.' PKG_FAIL_REASON+='Please "${MAKE} install" in ../../pkgtools/shlock.' -. endif +. endif .endif # @@ -351,8 +352,6 @@ ${var}+= ${${var}.*} . endfor CPPFLAGS+= ${CPP_PRECOMP_FLAGS} -DEPENDS+= ${USE_USERADD:D${_USER_DEPENDS}} -DEPENDS+= ${USE_GROUPADD:D${_USER_DEPENDS}} .if !empty(USE_BUILDLINK3:M[nN][oO]) LDFLAGS+= ${COMPILER_RPATH_FLAG}${LOCALBASE}/lib @@ -365,6 +364,8 @@ ALL_ENV+= CPPFLAGS=${CPPFLAGS:Q} ALL_ENV+= CXX=${CXX:Q} ALL_ENV+= CXXFLAGS=${CXXFLAGS:Q} ALL_ENV+= COMPILER_RPATH_FLAG=${COMPILER_RPATH_FLAG:Q} +ALL_ENV+= F77=${F77:Q} +ALL_ENV+= FC=${FC:Q} ALL_ENV+= FFLAGS=${FFLAGS:Q} ALL_ENV+= LDFLAGS=${LDFLAGS:Q} ALL_ENV+= LINKER_RPATH_FLAG=${LINKER_RPATH_FLAG:Q} @@ -437,6 +438,22 @@ _ULIMIT_CMD+= ${ULIMIT_CMD_${res}:D${ULI . endfor . endif +# if automatic manual page compression is done by the package according +# to MANZ's value, set MANCOMPRESSED if MANZ is set +. if defined(MANCOMPRESSED_IF_MANZ) && defined(MANZ) +MANCOMPRESSED= yes +MAKE_ENV+= MANZ=${MANZ} +. endif + +# CONF_DEPENDS notes a dependency where the config directory for the +# package matches the dependency's config directory. CONF_DEPENDS is +# only meaningful if ${PKG_INSTALLATION_TYPE} == "pkgviews". +# +CONF_DEPENDS?= # empty +. if !empty(CONF_DEPENDS) +USE_PKGINSTALL= YES +. endif + .endif # !_PKG_SKIPPED ############################################################################ @@ -511,6 +528,9 @@ SCRIPTS_ENV+= ${_INSTALL_MACROS} . if defined(USE_GNU_TOOLS) && !empty(USE_GNU_TOOLS:Mmake) MAKE_PROGRAM= ${GMAKE} . elif defined(USE_IMAKE) +. if ${_IMAKE_MAKE} == ${GMAKE} +USE_GNU_TOOLS+= make +. endif MAKE_PROGRAM= ${_IMAKE_MAKE} . endif MAKE_PROGRAM?= ${MAKE} @@ -537,20 +557,11 @@ PKG_ARGS_BINPKG= -p ${PREFIX:S/^${DESTDI .endif # !_PKG_SKIPPED ############################################################################ -# External bsd.pkg.mk fragments +# External bsd.pkg.mk fragments needing to perform overrides ############################################################################ .if !defined(_PKG_SKIPPED) -# CONF_DEPENDS notes a dependency where the config directory for the -# package matches the dependency's config directory. CONF_DEPENDS is -# only meaningful if ${PKG_INSTALLATION_TYPE} == "pkgviews". -# -CONF_DEPENDS?= # empty -. if !empty(CONF_DEPENDS) -USE_PKGINSTALL= YES -. endif - USE_PKGINSTALL?= NO . if !empty(USE_PKGINSTALL:M[yY][eE][sS]) . include "../../mk/bsd.pkg.install.mk" @@ -614,7 +625,7 @@ MESSAGE_SUBST+= X11PREFIX=${X11PREFIX} MESSAGE_SUBST_SED= ${MESSAGE_SUBST:S/=/}!/:S/$/!g/:S/^/ -e s!\\\${/} . endif -### Config file related settings - see Packages.txt +##### Config file related settings - see doc/guide PKG_SYSCONFVAR?= ${PKGBASE} PKG_SYSCONFSUBDIR?= # empty @@ -651,7 +662,7 @@ BUILD_DEFS_FIXED+= PKG_SYSCONFBASEDIR PK .endif # !_PKG_SKIPPED -### Checksum and other file handling support +##### Checksum and other file handling support # not skipped by _PKG_SKIPPED ALLFILES?= ${DISTFILES} ${PATCHFILES} @@ -864,16 +875,33 @@ BUILD_DEFS_FIXED+= IGNORE_RECOMMENDED . endif . endif +. include "../../mk/tools.mk" + +# If NO_BUILD is defined, default to not needing a compiler. +. if defined(NO_BUILD) +USE_LANGUAGES?= # empty +. endif +. include "../../mk/compiler.mk" + +# USE_BUILDLINK3 == "no" implies NO_BUILDLINK +. if !empty(USE_BUILDLINK3:M[nN][oO]) +NO_BUILDLINK= yes +. endif +. if !defined(NO_BUILDLINK) +. include "../../mk/buildlink3/bsd.buildlink3.mk" +. endif + +##### "depends" target implementation + # Remove some redundant dependencies from the DEPENDS list. . include "../../mk/reduce-depends.mk" _REAL_TARGETS.depends+= depends-message -#===> "install-depends" +#===> "do-depends" -_REAL_TARGETS.depends+= install-depends -.PHONY: install-depends -#install-depends: +_REAL_TARGETS.depends+= do-depends +.PHONY: do-depends .endif # !empty(PKG_PHASES:Mdepends) && !defined(_PKG_SKIPPED) @@ -1024,12 +1052,12 @@ PATCH_DIST_CAT.${i:S/=/--/}?= { patchfil . if !empty(PKGSRC_SHOW_PATCH_ERRORMSG:M[yY][eE][sS]) PKGSRC_PATCH_FAIL= \ if [ -n "${PKG_OPTIONS}" ] || [ -n "${_LOCALPATCHFILES}" ]; then \ - ${ECHO} "=========================================================================="; \ + ${ECHO} "=========================================================================="; \ ${ECHO}; \ - ${ECHO} "Some of the selected build options and/or local patches may be incompatible."; \ + ${ECHO} "Some of the selected build options and/or local patches may be incompatible."; \ ${ECHO} "Please try building with fewer options or patches."; \ ${ECHO}; \ - ${ECHO} "=========================================================================="; \ + ${ECHO} "=========================================================================="; \ fi; exit 1 . endif PKGSRC_PATCH_FAIL?= exit 1 @@ -1045,8 +1073,6 @@ _REAL_TARGETS.patch+= patch-message pre- do-tools: .OPTIONAL .if !empty(PKG_PHASES:Mtools) && !defined(_PKG_SKIPPED) -. include "../../mk/tools.mk" - _REAL_TARGETS.tools+= tools-message pre-tools do-tools post-tools .endif # !empty(PKG_PHASES:Mtools) && !defined(_PKG_SKIPPED) @@ -1058,11 +1084,6 @@ _REAL_TARGETS.tools+= tools-message pre- do-wrapper: .OPTIONAL .if !empty(PKG_PHASES:Mwrapper) && !defined(_PKG_SKIPPED) -# If NO_BUILD is defined, default to not needing a compiler. -. if defined(NO_BUILD) -USE_LANGUAGES?= # empty -. endif -. include "../../mk/compiler.mk" . include "../../mk/wrapper/bsd.wrapper.mk" _REAL_TARGETS.wrapper+= wrapper-message pre-wrapper do-wrapper post-wrapper @@ -1078,8 +1099,6 @@ _REAL_TARGETS.wrapper+= wrapper-message CONFIGURE_ENV+= ${ALL_ENV} CONFIGURE_ENV+= ac_given_INSTALL="`${TYPE} ${INSTALL} | ${AWK} '{ print $$NF }'` -c -o ${BINOWN} -g ${BINGRP}" CONFIGURE_ENV+= AWK=${AWK:Q} -CONFIGURE_ENV+= F77=${FC:Q} -CONFIGURE_ENV+= FC=${FC:Q} CONFIGURE_ENV+= INSTALL="`${TYPE} ${INSTALL} | ${AWK} '{ print $$NF }'` -c -o ${BINOWN} -g ${BINGRP}" CONFIGURE_ENV+= MAKE=${MAKE_PROGRAM:T:Q} CONFIGURE_ENV+= M4=${M4:Q} @@ -1120,6 +1139,7 @@ CONFIG_GUESS_OVERRIDE?= \ config.guess */config.guess */*/config.guess CONFIG_SUB_OVERRIDE?= \ config.sub */config.sub */*/config.sub +CONFIG_RPATH_OVERRIDE?= # set by platform file as needed # # By default, override config.status for GNU configure packages. We # never want it to execute after the configure phase has ended as it @@ -1162,25 +1182,7 @@ _REAL_TARGETS.test+= test-message pre-te ##### PLIST manipulation -. if ${PKG_INSTALLATION_TYPE} == "pkgviews" -# -# _PLIST_IGNORE_FILES basically mirrors the list of ignored files found -# in pkg_views(1). It's used by the dynamic PLIST generator to skip -# adding the named files to the PLIST. -# -_PLIST_IGNORE_FILES= +* # package metadata files -_PLIST_IGNORE_FILES+= info/dir -. if defined(INFO_DIR) && empty(INFO_DIR:Minfo) -_PLIST_IGNORE_FILES+= ${INFO_DIR}/dir -. endif -_PLIST_IGNORE_FILES+= *[~\#] *.OLD *.orig *,v # scratch config files -_PLIST_IGNORE_FILES+= ${PLIST_IGNORE_FILES} - -PKG_ARGS_INSTALL+= -U # don't update the pkgdb.byfile.db -PKG_ARGS_BINPKG+= -E # create an empty views file in the binpkg -. endif # PKG_INSTALLATION_TYPE - -BUILD_DEFS_FIXED+= _PLIST_IGNORE_FILES +. include "../../mk/plist.mk" ##### Make subtargets for non-su portion of "install". @@ -1329,6 +1331,13 @@ pre-install: .OPTIONAL #===> "do-install" _REAL_TARGETS.su-install+= do-install +.PHONY: do-install +.if !target(do-install) +do-install: +. for DIR in ${INSTALL_DIRS} + ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} -f ${MAKEFILE} ${INSTALL_TARGET} +. endfor +.endif #===> "post-install" @@ -1391,7 +1400,7 @@ post-install-man: for manpage in $$newmanpages; do \ manpage=`${ECHO} $$manpage | ${SED} -e 's|\.gz$$||'`; \ if [ -h ${PREFIX}/$$manpage ]; then \ - set - `${LS} -l ${PREFIX}/$$manpage`; \ + set - `${LS} -l ${PREFIX}/$$manpage`; \ shift `expr $$# - 1`; \ ${RM} -f ${PREFIX}/$$manpage.gz; \ ${LN} -s $${1}.gz ${PREFIX}/$$manpage.gz; \ @@ -1466,6 +1475,17 @@ _REAL_TARGETS.undo-replace+= do-su-undo- # Phase `package' ############################################################################ +.PHONY: descr +descr: ${DESCR} +${DESCR}: ${DESCR_SRC} + @${CAT} ${DESCR_SRC} >${DESCR} +.if defined(HOMEPAGE) + @\ + ${ECHO} >>${DESCR} ; \ + ${ECHO} "Homepage:" >>${DESCR} ; \ + ${ECHO} '${HOMEPAGE}' >>${DESCR} +.endif + _REAL_TARGETS.package+= do-su-package _REAL_TARGETS.su-package+= @@ -1534,6 +1554,17 @@ _PKG_ALL_TARGET= test .MAIN: all all dependall: recurse-${_PKG_ALL_TARGET:Ubuild} +# Depend is generally meaningless for arbitrary packages, but if someone wants +# one they can override this. This is just to catch people who've gotten into +# the habit of typing `${MAKE} depend all install' as a matter of course. + +.PHONY: depend +depend: .OPTIONAL + +# Same goes for tags +.PHONY: tags +tags: .OPTIONAL + ##### If this package will be skipped, use placebo targets. .if defined(_PKG_SKIPPED) @@ -1543,9 +1574,8 @@ all dependall: recurse-${_PKG_ALL_TARGET update ${targ}: . if !defined(SKIP_SILENT) - @for str in ${PKG_FAIL_REASON} ${PKG_SKIP_REASON} ; \ - do \ - ${ECHO} "${_PKGSRC_IN}> $$str" ; \ + @for str in ${PKG_FAIL_REASON} ${PKG_SKIP_REASON}; do \ + ${ECHO} "${_PKGSRC_IN}> $$str"; \ done . endif . if defined(PKG_FAIL_REASON) @@ -1578,7 +1608,7 @@ undo-replace: real-undo-replace . for targ in ${_PKG_PHASES_WRKDIR} ${${targ}_COOKIE}: real-${targ} - ${_PKG_SILENT}${_PKG_DEBUG}${ECHO} ${PKGNAME} >${${targ}_COOKIE} + ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f $@ && ${ECHO} ${PKGNAME} >$@ . endfor # mark a stage as complete if its cookie (and all parent cookies) exist @@ -1827,11 +1857,11 @@ _RESUME_TRANSFER= \ tsize=`${AWK} '/^Size/ && $$2 == '"\"($$file)\""' { print $$4 }' ${DISTINFO_FILE}` || ${TRUE}; \ if [ ! -f "${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp" ]; then \ ${CP} ${DISTDIR}/${DIST_SUBDIR}/$$bfile ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp; \ - fi; \ + fi; \ dsize=`${WC} -c < ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp`; \ - if [ "$$dsize" -eq "$$tsize" -a -f "${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp" ]; then \ + if [ "$$dsize" -eq "$$tsize" -a -f "${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp" ]; then \ ${MV} ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp ${DISTDIR}/${DIST_SUBDIR}/$$bfile; \ - fi; \ + fi; \ case "$$tsize" in \ "") ${ECHO_MSG} "No size in distinfo file (${DISTINFO_FILE})"; \ break ;; \ @@ -1840,33 +1870,33 @@ _RESUME_TRANSFER= \ ${ECHO_MSG} "===> Resume is not supported by ftp(1) using http/ftp proxies."; \ break; \ else \ - if [ "$$dsize" -lt "$$tsize" ]; then \ + if [ "$$dsize" -lt "$$tsize" ]; then \ if [ "${FETCH_CMD:T}" != "ftp" -a -z "${FETCH_RESUME_ARGS}" ]; then \ ${ECHO_MSG} "=> Resume transfers are not supported, FETCH_RESUME_ARGS is empty."; \ break; \ else \ - for res_site in $$sites; do \ - if [ -z "${FETCH_OUTPUT_ARGS}" ]; then \ - ${ECHO_MSG} "=> FETCH_OUTPUT_ARGS has to be defined."; \ + for res_site in $$sites; do \ + if [ -z "${FETCH_OUTPUT_ARGS}" ]; then \ + ${ECHO_MSG} "=> FETCH_OUTPUT_ARGS has to be defined."; \ break; \ fi; \ - ${ECHO_MSG} "=> $$bfile not completed, resuming:"; \ - ${ECHO_MSG} "=> Downloaded: $$dsize Total: $$tsize."; \ + ${ECHO_MSG} "=> $$bfile not completed, resuming:"; \ + ${ECHO_MSG} "=> Downloaded: $$dsize Total: $$tsize."; \ ${ECHO_MSG}; \ cd ${_DISTDIR}; \ - ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${FETCH_RESUME_ARGS} \ + ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${FETCH_RESUME_ARGS} \ ${FETCH_OUTPUT_ARGS} $${bfile}.temp $${res_site}$${bfile}; \ if [ $$? -eq 0 ]; then \ - ndsize=`${WC} -c < ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp`; \ - if [ "$$tsize" -eq "$$ndsize" ]; then \ - ${MV} ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp ${DISTDIR}/${DIST_SUBDIR}/$$bfile; \ + ndsize=`${WC} -c < ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp`; \ + if [ "$$tsize" -eq "$$ndsize" ]; then \ + ${MV} ${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp ${DISTDIR}/${DIST_SUBDIR}/$$bfile; \ fi; \ break; \ fi; \ done; \ fi; \ elif [ "$$dsize" -gt "$$tsize" ]; then \ - ${ECHO_MSG} "==> Downloaded file larger than the recorded size."; \ + ${ECHO_MSG} "==> Downloaded file larger than the recorded size."; \ break; \ fi; \ fi @@ -1906,7 +1936,7 @@ _FETCH_FILE= \ fi; \ fi \ done; \ - if [ ! -f ${_DISTDIR}/$$bfile ]; then \ + if [ ! -f ${_DISTDIR}/$$bfile ]; then \ ${ECHO_MSG} "=> Couldn't fetch $$bfile - please try to retrieve this";\ ${ECHO_MSG} "=> file manually into ${_DISTDIR} and try again."; \ exit 1; \ @@ -1915,7 +1945,7 @@ _FETCH_FILE= \ _CHECK_DIST_PATH= \ if [ "X${DIST_PATH}" != "X" ]; then \ - for d in "" ${DIST_PATH:S/:/ /g}; do \ + for d in "" ${DIST_PATH:S/:/ /g}; do \ if [ "X$$d" = "X" -o "X$$d" = "X${DISTDIR}" ]; then continue; fi; \ if [ -f $$d/${DIST_SUBDIR}/$$bfile ]; then \ ${ECHO} "Using $$d/${DIST_SUBDIR}/$$bfile"; \ @@ -2030,138 +2060,6 @@ do-fetch: . endif # !empty(_ALLFILES) .endif -# show both build and run depends directories (non-recursively) -.PHONY: show-depends-dirs -show-depends-dirs: - @dlist=""; \ - thisdir=`${PWD_CMD}`; \ - for reldir in "" ${DEPENDS:C/^[^:]*://:C/:.*$//} ${BUILD_DEPENDS:C/^[^:]*://:C/:.*$//} ;\ - do \ - if [ "X$$reldir" = "X" ]; then continue; fi; \ - cd $$thisdir/$$reldir; \ - WD=`${PWD_CMD}`; \ - d=`dirname $$WD`; \ - absdir=`basename $$d`/`basename $$WD`; \ - dlist="$$dlist $$absdir"; \ - done; \ - cd $$thisdir; \ - ${ECHO} "$$dlist" - -# Show all build and run depends, reverse-breadth first, with options. - -# "awk" macro to recurse over the dependencies efficiently, never running in -# the same same directory twice. You may set the following options via "-v": -# -# NonSelf = 1 to not print own directory; -# RootsOnly = 1 to print only root directories (i.e. directories -# of packages with no dependencies), including possibly -# own directory -# -_RECURSE_DEPENDS_DIRS= \ - function append_dirs(dir) { \ - command = "cd ../../" dir " && ${MAKE} show-depends-dirs"; \ - command | getline tmp_dirs; \ - close(command); \ - if (tmp_dirs ~ /^$$/) \ - root_dirs[p++] = dir; \ - for (i = 1; i <= split(tmp_dirs, tmp_r); i++) \ - if (!(tmp_r[i] in hash_all_dirs)) { \ - all_dirs[n++] = tmp_r[i]; \ - hash_all_dirs[tmp_r[i]] = 1 \ - } \ - } \ - BEGIN { \ - command = "${PWD_CMD}"; \ - command | getline start_dir; \ - close(command); \ - i = split(start_dir, tmp_r, /\//); \ - all_dirs[n++] = tmp_r[i-1] "/" tmp_r[i]; \ - for (; m < n; ) \ - append_dirs(all_dirs[m++]); \ - if (RootsOnly) { \ - printf("%s", root_dirs[--p]); \ - for (; p > 0; ) \ - printf(" %s", root_dirs[--p]) \ - } \ - else { \ - if (m > NonSelf) \ - printf("%s", all_dirs[--m]); \ - for (; m > NonSelf; ) \ - printf(" %s", all_dirs[--m]) \ - } \ - print \ - } - -_SHOW_ALL_DEPENDS_DIRS_EXCL= ${AWK} -v NonSelf=1 '${_RECURSE_DEPENDS_DIRS}' - -.PHONY: show-all-depends-dirs -show-all-depends-dirs: - @${AWK} '${_RECURSE_DEPENDS_DIRS}' - -.PHONY: show-root-dirs -show-root-dirs: - ${_PKG_SILENT}${_PKG_DEBUG}${AWK} -v RootsOnly=1 '${_RECURSE_DEPENDS_DIRS}' - -.PHONY: show-distfiles -show-distfiles: -.if !defined(PKG_FAIL_REASON) - ${_PKG_SILENT}${_PKG_DEBUG} \ - for file in "" ${_CKSUMFILES}; do \ - if [ "X$$file" = "X" ]; then continue; fi; \ - ${ECHO} $$file; \ - done -.endif - -.PHONY: show-downlevel -show-downlevel: -.if !defined(PKG_FAIL_REASON) - ${_PKG_SILENT}${_PKG_DEBUG} \ - found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \ - if [ "X$$found" != "X" -a "X$$found" != "X${PKGNAME}" ]; then \ - ${ECHO} "${PKGBASE} package: $$found installed, pkgsrc version ${PKGNAME}"; \ - if [ "X$$STOP_DOWNLEVEL_AFTER_FIRST" != "X" ]; then \ - ${ECHO} "stopping after first downlevel pkg found"; \ - exit 1; \ - fi; \ - fi -.endif - -.PHONY: show-installed-depends -show-installed-depends: -.if !empty(DEPENDS) - ${_PKG_SILENT}${_PKG_DEBUG} \ - for i in ${DEPENDS:C/:.*$//:Q:S/\ / /g} ; do \ - echo "$$i =>" `${PKG_BEST_EXISTS} "$$i"` ; \ - done -.endif - -.PHONY: show-needs-update -show-needs-update: -.if !empty(DEPENDS) - ${_PKG_SILENT}${_PKG_DEBUG} \ - for i in `${MAKE} show-all-depends-dirs`; do \ - cd ${PKGSRCDIR}/$$i; \ - want=`${MAKE} show-var-noeval VARNAME=PKGNAME`; \ - wild=`${MAKE} show-var-noeval VARNAME=PKGWILDCARD`; \ - have=`${PKG_BEST_EXISTS} "$$wild" || ${TRUE}`; \ - if [ -z "$$have" ]; then \ - ${ECHO} "$$i => (none) => needs install of $$want"; \ - elif [ "$$have" != "$$want" ]; then \ - ${ECHO} "$$i => $$have => needs update to $$want"; \ - fi; \ - done -.endif - -.PHONY: show-pkgsrc-dir -show-pkgsrc-dir: -.if !defined(PKG_FAIL_REASON) - ${_PKG_SILENT}${_PKG_DEBUG} \ - found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \ - if [ "X$$found" != "X" ]; then \ - ${ECHO} ${PKGPATH}; \ - fi -.endif - # Extract ${WRKDIR}: @@ -2510,11 +2408,11 @@ do-ltconfig-override: . endfor .endif -.if defined(CONFIG_GUESS_OVERRIDE) || defined(CONFIG_SUB_OVERRIDE) _CONFIGURE_PREREQ+= do-config-star-override .PHONY: do-config-star-override do-config-star-override: -. if defined(CONFIG_GUESS_OVERRIDE) && !empty(CONFIG_GUESS_OVERRIDE) +.if defined(GNU_CONFIGURE) +. if !empty(CONFIG_GUESS_OVERRIDE) . for _pattern_ in ${CONFIG_GUESS_OVERRIDE} ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \ for file in ${_pattern_}; do \ @@ -2526,7 +2424,7 @@ do-config-star-override: done . endfor . endif -. if defined(CONFIG_SUB_OVERRIDE) && !empty(CONFIG_SUB_OVERRIDE) +. if !empty(CONFIG_SUB_OVERRIDE) . for _pattern_ in ${CONFIG_SUB_OVERRIDE} ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \ for file in ${_pattern_}; do \ @@ -2538,6 +2436,18 @@ do-config-star-override: done . endfor . endif +. if !empty(CONFIG_RPATH_OVERRIDE) +. for _pattern_ in ${CONFIG_RPATH_OVERRIDE} + ${_PKG_SILENT}${_PKG_DEBUG}cd ${WRKSRC}; \ + for file in ${_pattern_}; do \ + if [ -f "$$file" ]; then \ + ${RM} -f $$file; \ + ${LN} -s ${PKGSRCDIR}/mk/gnu-config/config.rpath \ + $$file; \ + fi; \ + done +. endfor +. endif .endif PKGCONFIG_OVERRIDE_SED= \ @@ -2558,7 +2468,7 @@ SUBST_FILES.pkgconfig= ${PKGCONFIG_OVER SUBST_SED.pkgconfig= ${PKGCONFIG_OVERRIDE_SED} .endif -# By adding this target, it makes sure the the above PREREQ's work. +# By adding this target, it makes sure the above PREREQ's work. .PHONY: pre-configure-override pre-configure-override: ${_CONFIGURE_PREREQ} @@ -2648,7 +2558,7 @@ BUILD_MAKE_FLAGS?= ${MAKE_FLAGS} .if !target(do-build) do-build: . for DIR in ${BUILD_DIRS} - ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${BUILD_MAKE_FLAGS} -f ${MAKEFILE} ${ALL_TARGET} + ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${BUILD_MAKE_FLAGS} -f ${MAKEFILE} ${BUILD_TARGET} . endfor .endif @@ -2668,19 +2578,6 @@ do-test: . endif .endif -# Install - -INSTALL_DIRS?= ${BUILD_DIRS} -INSTALL_MAKE_FLAGS?= ${MAKE_FLAGS} - -.PHONY: do-install -.if !target(do-install) -do-install: -. for DIR in ${INSTALL_DIRS} - ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} -f ${MAKEFILE} ${INSTALL_TARGET} -. endfor -.endif - # Package .PHONY: real-su-package @@ -2745,253 +2642,6 @@ delete-package-links: delete-package: delete-package-links ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PKGFILE} - - -# Do handling of shared libs for two cases: -# -# SHLIB_PLIST_MODE=1: when first called via the ${PLIST} target, -# update the PLIST to contain ELF symlink, run -# ldconfig on a.out, etc. (used when called via -# the ${PLIST} target). Will update ${PLIST}. -# SHLIB_PLIST_MODE=0: when called via the real-su-install target, -# actually generate symlinks for ELF, run ldconfig -# for a.out, etc. Will not modify ${PLIST}. -# -# XXX This target could need some cleanup after it was ripped out of -# real-su-install -# -_AOUT_AWK = \ - BEGIN { linkc = 1 } \ - /^@/ { lines[NR] = $$0; next } \ - function libtool_release(lib) { \ - if (gsub("-[^-]+\\.so\\.", ".so.", lib)) { \ - if (system("${TEST} -h ${PREFIX}/" lib) == 0) { \ - rels[NR] = lib; \ - } \ - } \ - } \ - /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+\.[0-9]+$$/ { \ - libtool_release($$0); \ - lines[NR] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - if (sub("-[^-]+\\.so$$", ".so")) { \ - links[linkc++] = $$0; \ - } \ - next \ - } \ - /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+$$/ { \ - libtool_release($$0); \ - lines[NR] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - if (sub("-[^-]+\\.so$$", ".so")) { \ - links[linkc++] = $$0; \ - } \ - next \ - } \ - { lines[NR] = $$0 } \ - END { \ - for (i = 0 ; i <= linkc ; i++) \ - for (j = 1 ; j < NR ; j++) \ - if (lines[j] == links[i]) \ - lines[j] = "@comment " lines[j]; \ - if (${SHLIB_PLIST_MODE}) \ - for (i = 1 ; i <= NR ; i++) { \ - print lines[i]; \ - if (rels[i] != "") \ - print rels[i]; \ - } \ - } - -_DYLIB_AWK= \ - /^@/ { lines[NR] = $$0; next } \ - function libtool_release(lib) { \ - if (gsub("\\.so\\.", ".", lib) || gsub("\\.so$$", "", lib)) { \ - lib = lib ".dylib"; \ - if (system("${TEST} -h ${PREFIX}/" lib) == 0) { \ - rels[NR] = lib; \ - } \ - } \ - } \ - /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+\.[0-9]+$$/ { \ - libtool_release($$0); \ - lines[NR] = $$0; \ - links[linkc++] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - if (sub("-[^-]+\\.so$$", ".so")) { \ - links[linkc++] = $$0; \ - } \ - next \ - } \ - /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+$$/ { \ - libtool_release($$0); \ - lines[NR] = $$0; \ - links[linkc++] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - if (sub("-[^-]+\\.so$$", ".so")) { \ - links[linkc++] = $$0; \ - } \ - next \ - } \ - /.*\/lib[^\/]+\.so\.[0-9]+$$/ { \ - libtool_release($$0); \ - lines[NR] = $$0; \ - links[linkc++] = $$0; \ - sub("\\.[0-9]+$$", ""); \ - links[linkc++] = $$0; \ - if (sub("-[^-]+\\.so$$", ".so")) { \ - links[linkc++] = $$0; \ - } \ - next \ - } \ - /.*\/lib[^\/]+\.so$$/ { \ - lines[NR] = $$0; \ - if (system("${TEST} -f ${PREFIX}/" $$0) == 0) { \ - next; \ - } \ - libtool_release($$0); \ - links[linkc++] = $$0; \ - if (sub("-[^-]+\\.so$$", ".so")) { \ - links[linkc++] = $$0; \ - } \ - next \ - } \ - { lines[NR] = $$0 } \ - END { \ - for (i = 0 ; i <= linkc ; i++) \ - for (j = 1 ; j <= NR ; j++) \ - if (lines[j] == links[i]) \ - lines[j] = "@comment " lines[j]; \ - if (${SHLIB_PLIST_MODE}) \ - for (i = 1 ; i <= NR ; i++) { \ - print lines[i]; \ - if (rels[i] != "") { \ - print rels[i]; \ - cmd = "${LS} -l ${PREFIX}/" rels[i]; \ - cmd | getline tgt; \ - close(cmd); \ - gsub(".* ", "", tgt); \ - if (tgts[tgt] == "") { \ - tgts[tgt] = tgt; \ - if (index(tgt, "/") == 1) \ - print tgt; \ - else { \ - prefix=""; \ - if (match(rels[i], ".*/") != 0) \ - prefix=substr(rels[i],1,RLENGTH); \ - print prefix tgt; \ - } \ - } \ - } \ - } \ - } - -# Turn lib*.so.*, lib*.so into lib*.a. Drop duplicates. -_AIXLIB_AWK= \ - /^@/ { lines[NR] = $$0; next } \ - /.*\/lib[^\/]+\.so(\.[0-9]+)*$$/ { \ - sub("(\\.[0-9]+)*$$", ""); \ - sub("\\.so$$", ".a"); \ - lines[NR] = $$0; \ - next \ - } \ - { lines[NR] = $$0 } \ - END { \ - nlibs = 0; \ - for (i = 1; i <= NR; i++) { \ - for (j = 0; j < nlibs; j++) { \ - if (libs[j] == lines[i]) \ - break; \ - } \ - if (j >= nlibs) \ - print lines[i]; \ - if (match(lines[i], ".*/lib[^/]+\\.a$$")) { \ - libs[nlibs] = lines[i]; \ - nlibs++; \ - } \ - } \ - } - -.PHONY: do-shlib-handling -do-shlib-handling: -.if ${SHLIB_HANDLING} == "YES" - ${_PKG_SILENT}${_PKG_DEBUG} \ - sos=`${EGREP} -h '^.*/lib[^/]+\.so$$' ${PLIST} || ${TRUE}`; \ - if [ "$$sos" != "" ]; then \ - shlib_type=`${_GET_SHLIB_TYPE}`; \ - if [ "${SHLIB_PLIST_MODE}" = "0" ]; then \ - ${ECHO_MSG} "${_PKGSRC_IN}> [Automatic $$shlib_type shared object handling]"; \ - fi; \ - case "$$shlib_type" in \ - ELF) ;; \ - "a.out") \ - ${AWK} '${_AOUT_AWK}' <${PLIST} >${PLIST}.tmp ; \ - if [ "${SHLIB_PLIST_MODE}" = "1" ]; then \ - ${MV} ${PLIST}.tmp ${PLIST}; \ - else \ - ${RM} ${PLIST}.tmp ; \ - fi ; \ - cnt=`${EGREP} -c '^@exec[ ]*${LDCONFIG}$$' ${PLIST} || ${TRUE}`; \ - if [ "${SHLIB_PLIST_MODE}" = "1" ]; then \ - if [ $$cnt -eq 0 ]; then \ - ${ECHO} "@exec ${LDCONFIG}" >> ${PLIST}; \ - ${ECHO} "@unexec ${LDCONFIG}" >> ${PLIST}; \ - fi \ - fi; \ - if [ "${SHLIB_PLIST_MODE}" = "0" ]; then \ - if [ "${PKG_VERBOSE}" != "" ]; then \ - ${ECHO_MSG} "$$sos"; \ - ${ECHO_MSG} "Running ${LDCONFIG}"; \ - fi; \ - ${LDCONFIG} || ${TRUE}; \ - fi \ - ;; \ - "dylib") \ - ${AWK} '${_DYLIB_AWK}' <${PLIST} >${PLIST}.tmp && \ - if [ "${SHLIB_PLIST_MODE}" = "1" ]; then \ - ${MV} ${PLIST}.tmp ${PLIST}; \ - else \ - ${RM} ${PLIST}.tmp ; \ - fi ; \ - ;; \ - "aixlib") \ - ${AWK} '${_AIXLIB_AWK}' <${PLIST} >${PLIST}.tmp && \ - ${MV} ${PLIST}.tmp ${PLIST}; \ - ;; \ - "*") \ - if [ "${SHLIB_PLIST_MODE}" = "0" ]; then \ - ${ECHO_MSG} "No shared libraries for ${MACHINE_ARCH}"; \ - fi ; \ - if [ "${SHLIB_PLIST_MODE}" = "1" ]; then \ - for so in $$sos; do \ - if [ X"${PKG_VERBOSE}" != X"" ]; then \ - ${ECHO_MSG} >&2 "Ignoring $$so"; \ - fi; \ - ${SED} -e "s;^$$so$$;@comment No shared objects - &;" \ - ${PLIST} >${PLIST}.tmp && ${MV} ${PLIST}.tmp ${PLIST}; \ - done; \ - fi ; \ - ;; \ - esac; \ - fi -.endif # SHLIB_HANDLING == "YES" - - # Check if all binaries and shlibs find their needed libs # Must be run after "make install", so that files are installed, and # ${PLIST} exists. @@ -3033,40 +2683,6 @@ check-shlibs: fi .endif # NO_PKG_REGISTER - -# Macro to print out the actual shared library type. -.if defined(USE_LANGUAGES) && !empty(USE_LANGUAGES) -. if ${_OPSYS_SHLIB_TYPE} == "ELF/a.out" -. if (${OBJECT_FMT} == "ELF" || ${OBJECT_FMT} == "a.out") -_GET_SHLIB_TYPE= ${ECHO} '${OBJECT_FMT}' # speedup if already known -. else -_GET_SHLIB_TYPE=\ - @cd ${WRKDIR} && \ - sotype=none; \ - if [ "X${MKPIC}" != "Xno" -a "X${NOPIC}" = "X" ]; then \ - ${ECHO} "int main() { return(0); }" > a.$$$$.c; \ - ${SETENV} PATH=${PATH} \ - ${CC} ${CFLAGS} a.$$$$.c -o a.$$$$.out; \ - case `${FILE_CMD} a.$$$$.out` in \ - *ELF*dynamically*) \ - sotype=ELF ;; \ - *shared*library*|*dynamically*) \ - sotype="a.out" ;; \ - esac; \ - fi; \ - ${ECHO} "$$sotype"; \ - ${RM} -f a.$$$$.c a.$$$$.out -. endif -. else -_GET_SHLIB_TYPE= ${ECHO} '${_OPSYS_SHLIB_TYPE}' -. endif -.endif -_GET_SHLIB_TYPE?= ${ECHO} none - -# Not to be used by pkgsrc; available for human inspection only. -show-shlib-type: - @${_GET_SHLIB_TYPE} - LOCKFILE= ${WRKDIR}/.lockfile .for targ in ${_PKG_PHASES_WRKDIR} .PHONY: acquire-${targ}-lock release-${targ}-lock @@ -3291,37 +2907,17 @@ ${DDIR}: ${DLIST} ${DLIST}: ${WRKDIR} ${_PKG_SILENT}${_PKG_DEBUG} \ { ${PKG_DELETE} -n "${PKGWILDCARD}" 2>&1 | \ - ${GREP} '^ ' | \ + ${GREP} '^ ' | \ ${AWK} '{ l[NR]=$$0 } END { for (i=NR;i>0;--i) print l[i] }' \ || ${TRUE}; } > ${DLIST} -# The 'info' target can be used to display information about a package. -.PHONY: info -info: - ${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} "${PKGWILDCARD}" - -# The 'check' target can be used to check an installed package. -.PHONY: check -check: - ${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} check "${PKGWILDCARD}" - -# The 'list' target can be used to list the files installed by a package. -.PHONY: list -list: - ${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} -L "${PKGWILDCARD}" - -# Run pkglint: -.PHONY: lint -lint: - ${_PKG_SILENT}${_PKG_DEBUG}${LOCALBASE}/bin/pkglint | ${GREP} -v ^OK - # Create a binary package from an install package using "pkg_tarup" .PHONY: tarup tarup: .if ${PKG_INSTALLATION_TYPE} == "overwrite" ${_PKG_SILENT}${_PKG_DEBUG} \ ${RM} -f ${PACKAGES}/All/${PKGNAME}${PKG_SUFX}; \ - ${SETENV} PKG_DBDIR=${_PKG_DBDIR} PKG_SUFX=${PKG_SUFX} \ + ${SETENV} PKG_DBDIR=${_PKG_DBDIR} PKG_SUFX=${PKG_SUFX} \ PKGREPOSITORY=${PACKAGES}/All \ ${LOCALBASE}/bin/pkg_tarup ${PKGNAME}; \ for CATEGORY in ${CATEGORIES}; do \ @@ -3444,100 +3040,6 @@ distclean: pre-distclean clean .endif -${_PKG_SILENT}${_PKG_DEBUG}${RM} -f README.html -# Prints out a script to fetch all needed files (no checksumming). -.PHONY: fetch-list -fetch-list: - @${ECHO} '#!/bin/sh' - @${ECHO} '#' - @${ECHO} '# This is an auto-generated script, the result of running' - @${ECHO} '# `${MAKE} fetch-list'"'"' in directory "'"`${PWD_CMD}`"'"' - @${ECHO} '# on host "'"`${UNAME} -n`"'" on "'"`date`"'".' - @${ECHO} '#' - @${MAKE} ${MAKEFLAGS} fetch-list-recursive - -.PHONY: fetch-list-recursive -fetch-list-recursive: - ${_PKG_SILENT}${_PKG_DEBUG} \ - for dir in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs`; do \ - (cd ../../$$dir && \ - ${MAKE} ${MAKEFLAGS} fetch-list-one-pkg \ - | ${AWK} ' \ - /^[^#]/ { FoundSomething = 1 } \ - /^unsorted/ { gsub(/[[:space:]]+/, " \\\n\t") } \ - /^echo/ { gsub(/;[[:space:]]+/, "\n") } \ - { block[line_c++] = $$0 } \ - END { if (FoundSomething) \ - for (line = 0; line < line_c; line++) \ - print block[line] } \ - ') \ - done - -.PHONY: fetch-list-one-pkg -fetch-list-one-pkg: -.if !empty(_ALLFILES) - @${ECHO} - @${ECHO} '#' - @location=`${PWD_CMD} | ${AWK} -F / '{ print $$(NF-1) "/" $$NF }'`; \ - ${ECHO} '# Need additional files for ${PKGNAME} ('$$location')...' - @${ECHO} '#' - @${MKDIR} ${_DISTDIR} -. for fetchfile in ${_ALLFILES} -. if defined(_FETCH_MESSAGE) - @(cd ${_DISTDIR}; \ - if [ ! -f ${fetchfile:T} ]; then \ - ${ECHO}; \ - filesize=`${AWK} ' \ - /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \ - ' ${DISTINFO_FILE}` || true; \ - ${ECHO} '# Prompt user to get ${fetchfile} ('$${filesize-???}' bytes) manually:'; \ - ${ECHO} '#'; \ - ${ECHO} ${_FETCH_MESSAGE:Q}; \ - fi) -. elif defined(DYNAMIC_MASTER_SITES) - @(cd ${_DISTDIR}; \ - if [ ! -f ${fetchfile:T} ]; then \ - ${ECHO}; \ - filesize=`${AWK} ' \ - /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \ - ' ${DISTINFO_FILE}` || true; \ - ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \ - ${ECHO} '#'; \ - ${ECHO} '${SH} -s ${fetchfile:T} <<"EOF" |('; \ - ${CAT} ${FILESDIR}/getsite.sh; \ - ${ECHO} EOF; \ - ${ECHO} read unsorted_sites; \ - ${ECHO} 'unsorted_sites="$${unsorted_sites} ${_MASTER_SITE_BACKUP}"'; \ - ${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \ - ${ECHO} "${MKDIR} ${_DISTDIR}"; \ - ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \ - ${ECHO} 'for site in $$sites; do'; \ - ${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \ - ${ECHO} ' ${ECHO} ${fetchfile} not fetched'; \ - ${ECHO} done; \ - ${ECHO} ')'; \ - fi) -. else - @(cd ${_DISTDIR}; \ - if [ ! -f ${fetchfile:T} ]; then \ - ${ECHO}; \ - filesize=`${AWK} ' \ - /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \ - ' ${DISTINFO_FILE}` || true; \ - ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \ - ${ECHO} '#'; \ - ${ECHO} 'unsorted_sites="${SITES_${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"'; \ - ${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \ - ${ECHO} "${MKDIR} ${_DISTDIR}"; \ - ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \ - ${ECHO} 'for site in $$sites; do'; \ - ${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \ - ${ECHO} ' ${ECHO} ${fetchfile} not fetched'; \ - ${ECHO} done; \ - fi) -. endif # defined(_FETCH_MESSAGE) || defined(DYNAMIC_MASTER_SITES) -. endfor -.endif # !empty(_ALLFILES) - # List of sites carrying binary pkgs. Variables "rel" and "arch" are # replaced with OS release ("1.5", ...) and architecture ("mipsel", ...) BINPKG_SITES?= \ @@ -3590,40 +3092,15 @@ real-su-bin-install: bin-install: @${ECHO_MSG} "${_PKGSRC_IN}> Binary install for ${PKGNAME}" ${_PKG_SILENT}${_PKG_DEBUG} \ - realtarget="real-su-bin-install"; \ + realtarget="real-su-bin-install"; \ action="binary install"; \ ${_SU_TARGET} - - ################################################################ # The special package-building targets # You probably won't need to touch these ################################################################ -# Set to "html" by the README.html target to generate HTML code, -# or to "svr4" to print SVR4 (Solaris, ...) short package names, from -# SVR4_PKGNAME variable. -# This variable is passed down via build-depends-list and run-depends-list -PACKAGE_NAME_TYPE?= name - -# Nobody should want to override this unless PKGNAME is simply bogus. -HTML_PKGNAME=${PKGNAME:S/&/\&/g:S/>/\>/g:S/ - -.PHONY: package-name -package-name: -.if (${PACKAGE_NAME_TYPE} == "html") - @${ECHO} '${PKGNAME:S/&/\&/g:S/>/\>/g:S/' -.elif (${PACKAGE_NAME_TYPE} == "svr4") - @${ECHO} ${SVR4_PKGNAME} -.else - @${ECHO} ${PKGNAME} -.endif # PACKAGE_NAME_TYPE - -.PHONY: make-readme-html-help -make-readme-html-help: - @${ECHO} '${PKGNAME:S/&/\&/g:S/>/\>/g:S/: '${COMMENT:S/&/\&/g:S/>/\>/g:S//\>/g:S/${PKGNAME:S/&/\&/g:S/>/\>/g:S/ + +.PHONY: package-name +package-name: +.if (${PACKAGE_NAME_TYPE} == "html") + @${ECHO} '${PKGNAME:S/&/\&/g:S/>/\>/g:S/' +.elif (${PACKAGE_NAME_TYPE} == "svr4") + @${ECHO} ${SVR4_PKGNAME} +.else + @${ECHO} ${PKGNAME} +.endif # PACKAGE_NAME_TYPE + # Build a package but don't check the package cookie .PHONY: repackage @@ -3664,12 +3160,11 @@ package-noinstall: # Dependency checking ################################################################ -.PHONY: install-depends # Tells whether to halt execution if the object formats differ FATAL_OBJECT_FMT_SKEW?= yes WARN_NO_OBJECT_FMT?= yes -install-depends: +do-depends: .for dep in ${DEPENDS} ${BUILD_DEPENDS} ${_PKG_SILENT}${_PKG_DEBUG} \ pkg="${dep:C/:.*//}"; \ @@ -3718,256 +3213,6 @@ build-depends-list: ${MAKE} ${MAKEFLAGS} package-name) \ done -# If PACKAGES is set to the default (../../pkgsrc/packages), the current -# ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory -# structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed. -# The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on -# the target used to generate the README.html file. -.PHONY: binpkg-list -binpkg-list: - @if ${TEST} -d ${PACKAGES}; then \ - cd ${PACKAGES}; \ - case ${.CURDIR} in \ - */pkgsrc/packages) \ - for pkg in ${PKGREPOSITORYSUBDIR}/${PKGWILDCARD}${PKG_SUFX} ; \ - do \ - if [ -f "$$pkg" ] ; then \ - pkgname=`${ECHO} $$pkg | ${SED} 's@.*/@@'`; \ - ${ECHO} "${MACHINE_ARCH}:$$pkgname(${OPSYS} ${OS_VERSION})"; \ - fi ; \ - done ; \ - ;; \ - *) \ - cd ${PACKAGES}/../..; \ - for i in [1-9].*/*; do \ - if cd ${PACKAGES}/../../$$i/${PKGREPOSITORYSUBDIR} 2>/dev/null; then \ - for j in ${PKGWILDCARD}${PKG_SUFX}; \ - do \ - if [ -f "$$j" ]; then \ - ${ECHO} $$i/$$j;\ - fi; \ - done; \ - fi; \ - done | ${AWK} -F/ ' \ - { \ - release = $$1; \ - arch = $$2; \ - pkg = $$3; \ - gsub("\\.tgz","", pkg); \ - if (arch != "m68k" && arch != "mipsel") { \ - if (arch in urls) \ - urls[arch "/" pkg "/" release] = "" pkg ", " urls[arch]; \ - else \ - urls[arch "/" pkg "/" release] = "" pkg " "; \ - } \ - } \ - END { \ - for (av in urls) { \ - split(av, ava, "/"); \ - arch=ava[1]; \ - pkg=ava[2]; \ - release=ava[3]; \ - print "" arch ":" urls[av] "(${OPSYS} " release ")"; \ - } \ - }' | ${SORT} \ - ;; \ - esac; \ - fi - -################################################################ -# Everything after here are internal targets and really -# shouldn't be touched by anybody but the release engineers. -################################################################ - -# This target generates an index entry suitable for aggregation into -# a large index. Format is: -# -# distribution-name|package-path|installation-prefix|comment| \ -# description-file|maintainer|categories|build deps|run deps|for arch| \ -# not for opsys -# -.PHONY: describe -describe: - @${ECHO_N} "${PKGNAME}|${.CURDIR}|"; \ - ${ECHO_N} "${PREFIX}|"; \ - ${ECHO_N} ${COMMENT:Q}; \ - if [ -f ${DESCR_SRC} ]; then \ - ${ECHO_N} "|${DESCR_SRC}"; \ - else \ - ${ECHO_N} "|/dev/null"; \ - fi; \ - ${ECHO_N} "|${MAINTAINER}|${CATEGORIES}|"; \ - case "A${BUILD_DEPENDS}B${DEPENDS}C" in \ - ABC) ;; \ - *) cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u`;; \ - esac; \ - ${ECHO_N} "|"; \ - if [ "${DEPENDS}" != "" ]; then \ - cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`; \ - fi; \ - ${ECHO_N} "|"; \ - if [ "${ONLY_FOR_ARCHS}" = "" ]; then \ - ${ECHO_N} "any"; \ - else \ - ${ECHO_N} "${ONLY_FOR_ARCHS}"; \ - fi; \ - ${ECHO_N} "|"; \ - if [ "${NOT_FOR_OPSYS}" = "" ]; then \ - ${ECHO_N} "any"; \ - else \ - ${ECHO_N} "not ${NOT_FOR_OPSYS}"; \ - fi; \ - ${ECHO} "" - -# This target is used to generate README.html files -FTP_PKG_URL_HOST?= ftp://ftp.NetBSD.org -FTP_PKG_URL_DIR?= /pub/NetBSD/packages - -.PHONY: readme readmes -readme readmes: - @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${FTP_PKG_URL_HOST}${FTP_PKG_URL_DIR} - -# This target is used to generate README.html files, very like "readme" -# However, a different target was used for ease of use. -CDROM_PKG_URL_HOST?= file://localhost -CDROM_PKG_URL_DIR?= /usr/pkgsrc/packages - -.PHONY: cdrom-readme -cdrom-readme: - @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${CDROM_PKG_URL_HOST}${CDROM_PKG_URL_DIR} - -README_NAME= ${TEMPLATES}/README.pkg - -# set up the correct license information as a sed expression -.ifdef LICENSE -SED_LICENSE_EXPR= -e 's|%%LICENSE%%|

Please note that this package has a ${LICENSE} license.

|' -.else -SED_LICENSE_EXPR= -e 's|%%LICENSE%%||' -.endif - -# set up the "more info URL" information as a sed expression -.ifdef HOMEPAGE -SED_HOMEPAGE_EXPR= -e 's|%%HOMEPAGE%%|

This package has a home page at ${HOMEPAGE}.

|' -.else -SED_HOMEPAGE_EXPR= -e 's|%%HOMEPAGE%%||' -.endif - -.PHONY: show-vulnerabilities-html -show-vulnerabilities-html: - ${_PKG_SILENT}${_PKG_DEBUG} \ - if [ -f ${PKGVULNDIR}/pkg-vulnerabilities ]; then \ - ${AWK} '/^${PKGBASE}[-<>=]+[0-9]/ { gsub("\<", "\\<", $$1); \ - gsub("\>", "\\>", $$1); \ - printf("
  • %s has a %s exploit (see %s for more details)
  • \n", $$1, $$2, $$3, $$3) }' \ - ${PKGVULNDIR}/pkg-vulnerabilities; \ - fi - - -# If PACKAGES is set to the default (../../packages), the current -# ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory -# structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed. -# The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on -# the target used to generate the README.html file. -.PHONY: README.html -README.html: .PRECIOUS - @${SETENV} AWK=${AWK} BMAKE=${MAKE} ../../mk/scripts/mkdatabase -f $@.tmp1 - @if ${TEST} -d ${PACKAGES}; then \ - cd ${PACKAGES}; \ - case `${PWD_CMD}` in \ - ${PKGSRCDIR}/packages) \ - MULTIARCH=no; \ - ;; \ - *) \ - MULTIARCH=yes; \ - ;; \ - esac; \ - cd ${.CURDIR} ; \ - fi; \ - ${AWK} -f ../../mk/scripts/genreadme.awk \ - builddependsfile=/dev/null \ - dependsfile=/dev/null \ - DISTDIR=${DISTDIR} \ - MACHINE_ARCH=${MACHINE_ARCH} \ - MULTIARCH=$$MULTIARCH \ - OPSYS=${OPSYS} \ - OS_VERSION=${OS_VERSION} \ - PACKAGES=${PACKAGES} \ - PKG_SUFX=${PKG_SUFX} \ - PKG_URL=${PKG_URL} \ - PKGREPOSITORYSUBDIR=${PKGREPOSITORYSUBDIR} \ - PKGSRCDIR=${.CURDIR:C|/[^/]*/[^/]*$||} \ - TMPDIR=${TMPDIR:U/tmp} \ - SINGLEPKG=${PKGPATH} \ - $@.tmp1 - @${RM} $@.tmp1 - -.PHONY: show-pkgtools-version -show-pkgtools-version: - @${ECHO} ${PKGTOOLS_VERSION} - -.PHONY: print-build-depends-list -print-build-depends-list: -.if !empty(BUILD_DEPENDS) || !empty(DEPENDS) - @${ECHO_N} 'This package requires package(s) "' - @${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u` - @${ECHO} '" to build.' -.endif - -.PHONY: print-run-depends-list -print-run-depends-list: -.if !empty(DEPENDS) - @${ECHO_N} 'This package requires package(s) "' - @${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u` - @${ECHO} '" to run.' -.endif - -# This target is used by the mk/scripts/mkreadme script to generate -# README.html files -.PHONY: print-summary-data -print-summary-data: - @${ECHO} "depends ${PKGPATH} ${DEPENDS}" - @${ECHO} "build_depends ${PKGPATH} ${BUILD_DEPENDS}" - @${ECHO} "conflicts ${PKGPATH} ${CONFLICTS}" - @${ECHO} "index ${PKGPATH} ${PKGNAME}" - @${ECHO} htmlname ${PKGPATH} ${HTML_PKGNAME:Q} - @${ECHO} homepage ${PKGPATH} ${HOMEPAGE:Q} - @${ECHO} wildcard ${PKGPATH} ${PKGWILDCARD:Q} - @${ECHO} comment ${PKGPATH} ${COMMENT:Q} - @${ECHO} license ${PKGPATH} ${LICENSE:Q} - @if [ "${ONLY_FOR_ARCHS}" = "" ]; then \ - ${ECHO} "onlyfor ${PKGPATH} any"; \ - else \ - ${ECHO} "onlyfor ${PKGPATH} ${ONLY_FOR_ARCHS}"; \ - fi; - @if [ "${NOT_FOR_OPSYS}" = "" ]; then \ - ${ECHO} "notfor ${PKGPATH} any"; \ - else \ - ${ECHO} "notfor ${PKGPATH} not ${NOT_FOR_OPSYS}"; \ - fi; - @${ECHO} "maintainer ${PKGPATH} ${MAINTAINER}" - @${ECHO} "categories ${PKGPATH} ${CATEGORIES}" - @if [ -f ${DESCR_SRC} ]; then \ - ${ECHO} "descr ${PKGPATH} ${DESCR_SRC:S;${PKGSRCDIR}/;;g}"; \ - else \ - ${ECHO} "descr ${PKGPATH} /dev/null"; \ - fi - @${ECHO} "prefix ${PKGPATH} ${PREFIX}" - -.PHONY: show-license show-licence -show-license show-licence: - @if [ "${LICENSE}" != "" ]; then \ - if ${TEST} -f ${PKGSRCDIR}/licenses/${LICENSE}; then \ - if [ "${PAGER}" != "" ]; then \ - ${PAGER} ${PKGSRCDIR}/licenses/${LICENSE};\ - else \ - ${CAT} ${PKGSRCDIR}/licenses/${LICENSE};\ - fi \ - else \ - ${ECHO} "Generic ${LICENSE} information not available"; \ - ${ECHO} "See the package description (pkg_info -d ${PKGNAME}) for more information."; \ - fi \ - fi - # Stat all the files of one pkg and sum the sizes up. # # XXX This is intended to be run before pkg_create is called, so the @@ -4008,177 +3253,6 @@ print-pkg-size-depends: ${ECHO} "0"; \ fi - -### -### Automatic PLIST generation -### - files & symlinks first -### - @dirrm statements last -### - empty directories are handled properly -### - dirs from mtree files are excluded -### - substitute for platform or package specifics substrings -### -### Usage: -### - make install -### - make print-PLIST | brain >PLIST -### - -_PRINT_PLIST_AWK_SUBST={ \ - gsub(/${OPSYS}/, "$${OPSYS}"); \ - gsub(/${OS_VERSION:S/./\./g}/, "$${OS_VERSION}"); \ - gsub(/${MACHINE_GNU_PLATFORM}/, "$${MACHINE_GNU_PLATFORM}"); \ - gsub(/${MACHINE_ARCH}/, "$${MACHINE_ARCH}"); \ - gsub(/${MACHINE_GNU_ARCH}/, "$${MACHINE_GNU_ARCH}"); -.if !empty(LOWER_VENDOR) -_PRINT_PLIST_AWK_SUBST+= gsub(/${LOWER_VENDOR}/, "$${LOWER_VENDOR}"); -.endif -_PRINT_PLIST_AWK_SUBST+= \ - gsub(/${LOWER_OS_VERSION:S/./\./g}/, "$${LOWER_OS_VERSION}"); \ - gsub(/${LOWER_OPSYS}/, "$${LOWER_OPSYS}"); \ - gsub(/${PKGNAME_NOREV}/, "$${PKGNAME}"); \ - gsub(/${PKGVERSION:S/./\./g:C/nb[0-9]*$$//}/, "$${PKGVERSION}");\ - gsub(/${PKGLOCALEDIR}\/locale/, "$${PKGLOCALEDIR}/locale"); \ -} - -_PRINT_PLIST_AWK_IGNORE= ($$0 ~ /emul\/linux\/proc/) -_PRINT_PLIST_AWK_IGNORE+= || ($$0 ~ /^info\/dir$$/) -.if defined(INFO_DIR) && empty(INFO_DIR:Minfo) -_PRINT_PLIST_AWK_IGNORE+= || ($$0 ~ /^${INFO_DIR:S|/|\\/|g}\/dir$$/) -.endif -.if !empty(INFO_FILES) -. for _f_ in ${INFO_FILES} -_PRINT_PLIST_AWK_IGNORE+= || ($$0 ~ /^${INFO_DIR:S|/|\\/|g}\/${_f_:S|+|\+|g}(-[0-9]+)?(\.gz)?$$/) -. endfor -.endif - -# Common (system) directories not to generate @dirrm statements for -# Reads MTREE_FILE and generate awk statements that will -# sort out which directories NOT to include into the PLIST @dirrm list -.if make(print-PLIST) -_PRINT_PLIST_COMMON_DIRS!= ${AWK} 'BEGIN { \ - i=0; \ - stack[i]="${PREFIX}" ; \ - cwd=""; \ - } \ - ! ( /^\// || /^\#/ || /^$$/ ) { \ - if ( $$1 == ".." ){ \ - i=i-1; \ - cwd = stack[i]; \ - } else if ( $$1 == "." ){ \ - } else { \ - stack[i] = cwd ; \ - if ( i == 0 ){ \ - cwd = $$1 ; \ - } else { \ - cwd = cwd "\\/" $$1 ; \ - } \ - print "/^" cwd "$$$$/ { next; }"; \ - i=i+1 ; \ - } \ - } \ - END { print "{ print $$$$0; }"; } \ - ' <${MTREE_FILE} -.endif - - -# scan $PREFIX for any files/dirs modified since the package was extracted -# will emit "@exec mkdir"-statements for empty directories -# XXX will fail for data files that were copied using tar (e.g. emacs)! -# XXX should check $LOCALBASE and $X11BASE, and add @cwd statements - -_PRINT_PLIST_FILES_CMD= \ - ${FIND} ${PREFIX}/. -xdev -newer ${extract_COOKIE} \! -type d -print -_PRINT_PLIST_DIRS_CMD= \ - ${FIND} ${PREFIX}/. -xdev -newer ${extract_COOKIE} -type d -print -_PRINT_LA_LIBNAMES= ${SETENV} ECHO=${ECHO:Q} GREP=${GREP:Q} SORT=${SORT:Q} \ - ${SH} ${.CURDIR}/../../mk/scripts/print-la-libnames - -.if !empty(LIBTOOLIZE_PLIST:M[yY][eE][sS]) -_PRINT_PLIST_LIBTOOLIZE_FILTER?= \ - ( \ - if ${TEST} -d ${WRKDIR}; then \ - tmpdir="${WRKDIR}"; \ - else \ - tmpdir="$${TMPDIR-/tmp}"; \ - fi; \ - fileslist="$$tmpdir/print.plist.files.$$$$"; \ - libslist="$$tmpdir/print.plist.libs.$$$$"; \ - while read file; do \ - case $$file in \ - *.la) \ - ${_PRINT_LA_LIBNAMES} $$file >> $$libslist; \ - ;; \ - esac; \ - ${ECHO} "$$file"; \ - done > $$fileslist; \ - if ${TEST} -f "$$libslist"; then \ - ${GREP} -hvxF "`${SORT} -u $$libslist`" "$$fileslist"; \ - else \ - ${CAT} "$$fileslist"; \ - fi; \ - ${RM} -f "$$fileslist" "$$libslist"; \ - ) -.else -_PRINT_PLIST_LIBTOOLIZE_FILTER?= ${CAT} -.endif - -.PHONY: print-PLIST -print-PLIST: - ${_PKG_SILENT}${_PKG_DEBUG}\ - ${ECHO} '@comment $$'NetBSD'$$' - ${_PKG_SILENT}${_PKG_DEBUG}\ - shlib_type=`${_GET_SHLIB_TYPE}`; \ - case $$shlib_type in \ - "a.out") genlinks=1 ;; \ - *) genlinks=0 ;; \ - esac; \ - ${_PRINT_PLIST_FILES_CMD} \ - | ${_PRINT_PLIST_LIBTOOLIZE_FILTER} \ - | ${SORT} \ - | ${AWK} ' \ - { sub("${PREFIX}/\\./", ""); } \ - ${_PRINT_PLIST_AWK_IGNORE} { next; } \ - ${_PRINT_PLIST_AWK_SUBST} \ - /^@/ { print $$0; next } \ - /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+\.[0-9]+$$/ { \ - print $$0; \ - sub("\\.[0-9]+$$", ""); \ - if ('$$genlinks') print $$0; \ - sub("\\.[0-9]+$$", ""); \ - if ('$$genlinks') print $$0; \ - sub("\\.[0-9]+$$", ""); \ - if ('$$genlinks') print $$0; \ - next; \ - } \ - /.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+$$/ { \ - print $$0; \ - sub("\\.[0-9]+$$", ""); \ - if ('$$genlinks') print $$0; \ - sub("\\.[0-9]+$$", ""); \ - if ('$$genlinks') print $$0; \ - next; \ - } \ - ${PRINT_PLIST_AWK} \ - { print $$0; }' - ${_PKG_SILENT}${_PKG_DEBUG}\ - for i in `${_PRINT_PLIST_DIRS_CMD} \ - | ${SORT} -r \ - | ${AWK} ' \ - /emul\/linux\/proc/ { next; } \ - /${PREFIX:S|/|\\/|g}\/\.$$/ { next; } \ - { sub("${PREFIX}/\\\\./", ""); } \ - ${_PRINT_PLIST_COMMON_DIRS}'` ; \ - do \ - if [ `${LS} -la ${PREFIX}/$$i | ${WC} -l` = 3 ]; then \ - ${ECHO} @exec \$${MKDIR} %D/$$i | ${AWK} ' \ - ${PRINT_PLIST_AWK} \ - { print $$0; }' ; \ - fi ; \ - ${ECHO} @dirrm $$i | ${AWK} ' \ - ${PRINT_PLIST_AWK} \ - { print $$0; }' ; \ - done \ - | ${AWK} '${_PRINT_PLIST_AWK_SUBST} { print $$0; }' - # By default, all packages attempt to link into the views. .if ${PKG_INSTALLATION_TYPE} == "pkgviews" BUILD_VIEWS?= yes @@ -4446,203 +3520,7 @@ real-su-remove-views: done .endif -# Depend is generally meaningless for arbitrary packages, but if someone wants -# one they can override this. This is just to catch people who've gotten into -# the habit of typing `${MAKE} depend all install' as a matter of course. -# -.PHONY: depend -depend: .OPTIONAL - -# Same goes for tags -.PHONY: tags -tags: .OPTIONAL - -# if automatic manual page compression is done by the package according -# to MANZ's value, set MANCOMPRESSED if MANZ is set -.if defined(MANCOMPRESSED_IF_MANZ) && defined(MANZ) -MANCOMPRESSED= yes -MAKE_ENV+= MANZ="${MANZ}" -.endif - -# generate ${PLIST} from ${PLIST_SRC} by: -# - substituting for PLIST_SUBST entries -# - fixing list of man-pages according to MANZ, MANINSTALL. -# - adding symlinks for shared libs (ELF) or ldconfig calls (a.out). - -# plist awk pattern-action statement to handle MANINSTALL -_PLIST_AWK_MANINSTALL= \ -{ \ - if (!"${MANINSTALL:Mmaninstall}" && \ - match($$0, "^([^/]*/)*man/([^/]*/)?man[1-9ln]") ) { \ - next; \ - } \ - if (!"${MANINSTALL:Mcatinstall}" && \ - match($$0, "^([^/]*/)*man/([^/]*/)?cat[1-9ln]") ) { \ - next; \ - } \ -} - -# plist awk pattern-action statement to strip '.gz' from man -# entries -_PLIST_AWK_STRIP_MANZ= \ -/^([^\/]*\/)*man\/([^\/]*\/)?(man[1-9ln]\/.*[1-9ln]|cat[1-9ln]\/.*0)\.gz$$/ { \ - $$0 = substr($$0, 1, length($$0) - 3); \ -} - -# plist awk pattern-action statement to add '.gz' to man entries -_PLIST_AWK_ADD_MANZ= \ -/^([^\/]*\/)*man\/([^\/]*\/)?(man[1-9ln]\/.*[1-9ln]|cat[1-9ln]\/.*0)$$/ { \ - $$0 = $$0 ".gz"; \ -} - -# plist awk pattern-action statement to handle PLIST_SUBST substitutions -# BEWARE: the awk script quote is closed and reopened around the -# string argument of gsub() calls so historic quoting semantic of -# PLIST_SUBST is preserved. -# XXX `_str_quote_{start,end}_' is a gross hack to work around weird word -# splitting. -_PLIST_AWK_SUBST= { ${PLIST_SUBST:S|=|\\}/,_str_quote_start_|:S|$|_str_quote_end_);|:S|^|gsub(/\\\$\\{|:S|_str_quote_start_|"'|g:S|_str_quote_end_|'"|g} } - -# plist awk pattern-action statement to rewrite "imake installed" catman pages -# as plain manpages. -_PLIST_AWK_IMAKE_MAN= \ -/^([^\/]*\/)*man\/([^\/]*\/)?cat[1-9ln]\/.*0$$/ { \ - n = match($$0, "/cat[1-9ln]"); \ - sect = sprintf(".%s", substr($$0, n + 4, 1)); \ - sub("/cat", "/man"); \ - sub("\\.0$$", sect); \ -} - -# plist awk pattern-action statement to handle info files: -# generate list of files matching -# ${PREFIX}/${INFO_DIR}/filename(-[0-9]+)?(.gz)? -# for `filename' being each word of INFO_FILES in turn. -# Notes: -# - first the filenames matching ${PREFIX}/${INFO_DIR}/filename* -# are generated with ls then they are filtered by the exact pattern. -# - ${PREFIX}/${INFO_DIR}/filename is single quoted and single quote -# escaped -# XXX When all info file entries will be removed from PLIST files -# the non-BEGIN pattern-action statements generated below will be retired. -_PLIST_AWK_INFO= -.if ${PLIST_TYPE} == "static" -. if !empty(INFO_FILES) -. for _f_ in ${INFO_FILES} -_PLIST_AWK_INFO+= \ -BEGIN { \ - cmd="${_f_}"; gsub("'\''", "\\'\''", cmd); \ - sub("^", "${LS} '\''${PREFIX}/${INFO_DIR}/", cmd); \ - sub("$$", "'\''*", cmd); \ - while ((cmd | getline l) > 0) { \ - if (match(l, ".*/${_f_:S|+|\\\+|g}(-[0-9]+)?(\\.gz)?$$")) { \ - sub("^${PREFIX}/", "", l); \ - print l; \ - } \ - } \ - close(cmd); \ -} \ -/^${INFO_DIR:S|/|\\/|g}\/${_f_}(-[0-9]+)?$$/ { next; } -. endfor -. endif -.endif - -# plist awk pattern-action statement to expand libtool archives into -# shared and/or static libraries. -# -.if ${PLIST_TYPE} == "dynamic" -_PLIST_AWK_LIBTOOL?= # empty -.elif empty(LIBTOOLIZE_PLIST:M[yY][eE][sS]) -BROKEN+= "USE_LIBTOOL requires LIBTOOLIZE_PLIST=yes for proper PLIST generation" -.else -_PLIST_AWK_LIBTOOL?= \ -/^[^@].*\.la$$/ { \ - system("cd ${PREFIX} && ${_PRINT_LA_LIBNAMES} " $$0) \ -} -.endif - -# _PLIST_AWK_SCRIPT hold the complete awk script for plist target. -# -_PLIST_AWK_SCRIPT= ' -# Do the substitutions -# See comments above about _PLIST_AWK_SUBST: it contains single quotes! -# So _PLIST_AWK_SCRIPT is intended to be single quoted. -_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_SUBST} -# Generated entries for info files -.if !empty(INFO_FILES) -_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_INFO} -.endif -# Expand libtool archives -_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_LIBTOOL} -# Strip the '.gz' suffixes on man entries -_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_STRIP_MANZ} -# Deal with MANINSTALL and man entries -_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_MANINSTALL} -# Deal with "imake installed" catman pages -.if defined(USE_IMAKE) && ${_PREFORMATTED_MAN_DIR} == "man" -_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_IMAKE_MAN} -.endif -# Add '.gz' suffixes on man entries if needed -.if defined(MANZ) -_PLIST_AWK_SCRIPT+= ${_PLIST_AWK_ADD_MANZ} -.endif -# Print the entry -_PLIST_AWK_SCRIPT+= { print $$0; } -# -_PLIST_AWK_SCRIPT+= ' - -# GENERATE_PLIST is a sequence of commands, terminating in a semicolon, -# that outputs contents for a PLIST to stdout and is appended to -# the contents of ${PLIST_SRC}. -# -GENERATE_PLIST?= ${TRUE}; -.if ${PLIST_TYPE} == "dynamic" -_PLIST_IGNORE_CMD= \ - ( while read i; do \ - ignore=no; \ - for p in ${_PLIST_IGNORE_FILES}; do \ - case "$$i" in \ - $$p) ignore=yes; break ;; \ - esac; \ - done; \ - [ "$$ignore" = "yes" ] || ${ECHO} "$$i"; \ - done ) -_GENERATE_PLIST= \ - ${FIND} ${PREFIX} \! -type d -print | ${SORT} | \ - ${SED} -e "s|^${PREFIX}/||" | \ - ${_PLIST_IGNORE_CMD}; \ - ${FIND} ${PREFIX} -type d -print | ${SORT} -r | \ - ${GREP} -v "^${PREFIX}$$" | \ - ${_PLIST_IGNORE_CMD} | \ - ${SED} -e "s|^${PREFIX}/|@unexec ${RMDIR} -p %D/|" \ - -e "s,$$, 2>/dev/null || ${TRUE},"; -.else -_GENERATE_PLIST= ${CAT} ${PLIST_SRC}; ${GENERATE_PLIST} -.endif - -.if ${PLIST_TYPE} == "static" -${PLIST}: ${PLIST_SRC} -.endif -${PLIST}: - ${_PKG_SILENT}${_PKG_DEBUG} \ - { ${_GENERATE_PLIST} } | ${AWK} ${_PLIST_AWK_SCRIPT} \ - > ${PLIST}; \ - ${MAKE} ${MAKEFLAGS} do-shlib-handling \ - SHLIB_PLIST_MODE=1 - -# generate ${DESCR} from ${DESCR_SRC} by: -# - Appending the homepage URL, if any - -.PHONY: descr -descr: ${DESCR} -${DESCR}: ${DESCR_SRC} - @${CAT} ${DESCR_SRC} >${DESCR} -.if defined(HOMEPAGE) - @\ - ${ECHO} >>${DESCR} ; \ - ${ECHO} "Homepage:" >>${DESCR} ; \ - ${ECHO} '${HOMEPAGE}' >>${DESCR} -.endif - +.include "../../mk/bsd.pkg.data.mk" .include "../../mk/subst.mk" #