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

Annotation of pkgsrc/mk/bsd.pkg.readme.mk, Revision 1.1

1.1     ! jlam        1: # $NetBSD$
        !             2: #
        !             3: # This Makefile fragment is included by bsd.pkg.mk and encapsulates the
        !             4: # code to produce README.html files in each package directory.
        !             5: #
        !             6: # The following are the "public" targets provided by this module.
        !             7: #
        !             8: #    readme            This target generates a README.html file suitable
        !             9: #                      for being served via FTP.
        !            10: #
        !            11: #    cdrom-readme      This target generates a README.html file suitable
        !            12: #                      for being served from a mounted CD-ROM.
        !            13: #
        !            14: # The following are the user-settable variables that may be defined in
        !            15: # /etc/mk.conf.
        !            16: #
        !            17: #    FTP_PKG_URL_HOST is the host portion of the URL to embed in each
        !            18: #      README.html file to be served via FTP, and defaults to
        !            19: #      "ftp://ftp.NetBSD.org".
        !            20: #
        !            21: #    FTP_PKG_URL_DIR is the directory portion of the URL to embed in each
        !            22: #      README.html file to be served via FTP, and defaults to
        !            23: #      "/pub/NetBSD/packages".
        !            24: #
        !            25: #    CDROM_PKG_URL_HOST is the host portion of the URL to embed in each
        !            26: #      README.html file to be served from a mounted CD-ROM, and defaults
        !            27: #      to "file://localhost".
        !            28: #
        !            29: #    CDROM_PKG_URL_DIR is the directory portion of the URL to embed in each
        !            30: #      README.html file to be served from a mounted CD-ROM, and defaults
        !            31: #      to "/usr/pkgsrc/packages".
        !            32: #
        !            33:
        !            34: # Set to "html" by the README.html target to generate HTML code,
        !            35: # or to "svr4" to print SVR4 (Solaris, ...) short package names, from
        !            36: # SVR4_PKGNAME variable.
        !            37: # This variable is passed down via build-depends-list and run-depends-list
        !            38: PACKAGE_NAME_TYPE?=    name
        !            39:
        !            40: _HTML_PKGNAME=         ${PKGNAME:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}
        !            41: _HTML_PKGPATH=         ${PKGPATH:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}
        !            42: _HTML_PKGLINK=         <a href="../../${_HTML_PKGPATH}/README.html">${_HTML_PKGNAME}</a>
        !            43:
        !            44: .PHONY: package-name
        !            45: .if !target(package-name)
        !            46: package-name:
        !            47: .  if (${PACKAGE_NAME_TYPE} == "html")
        !            48:        @${ECHO} ${_HTML_PKGLINK:Q}
        !            49: .  elif (${PACKAGE_NAME_TYPE} == "svr4")
        !            50:        @${ECHO} ${SVR4_PKGNAME}
        !            51: .  else
        !            52:        @${ECHO} ${PKGNAME}
        !            53: .  endif # PACKAGE_NAME_TYPE
        !            54: .endif # !target(package-name)
        !            55:
        !            56: .PHONY: make-readme-html-help
        !            57: .if !target(make-readme-html-help)
        !            58: make-readme-html-help:
        !            59:        @${ECHO} '${PKGNAME:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}</a>: <TD>'${COMMENT:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g:Q}
        !            60: .endif # !target(make-readme-html-help)
        !            61:
        !            62: # Show (non-recursively) all the packages this package depends on.
        !            63: # If PACKAGE_DEPENDS_WITH_PATTERNS is set, print as pattern (if possible)
        !            64: PACKAGE_DEPENDS_WITH_PATTERNS?=true
        !            65: .PHONY: run-depends-list
        !            66: .if !target(run-depends-list)
        !            67: run-depends-list:
        !            68: .  for dep in ${DEPENDS}
        !            69:        @pkg="${dep:C/:.*//}";                                          \
        !            70:        dir="${dep:C/[^:]*://}";                                        \
        !            71:        cd ${.CURDIR};                                                  \
        !            72:        if ${PACKAGE_DEPENDS_WITH_PATTERNS}; then                       \
        !            73:                ${ECHO} "$$pkg";                                        \
        !            74:        else                                                            \
        !            75:                if cd $$dir 2>/dev/null; then                           \
        !            76:                        ${MAKE} ${MAKEFLAGS} package-name PACKAGE_NAME_TYPE=${PACKAGE_NAME_TYPE}; \
        !            77:                else                                                    \
        !            78:                        ${ECHO_MSG} "Warning: \"$$dir\" non-existent -- @pkgdep registration incomplete" >&2; \
        !            79:                fi;                                                     \
        !            80:        fi
        !            81: .  endfor
        !            82: .endif # target(run-depends-list)
        !            83:
        !            84: .PHONY: build-depends-list
        !            85: .if !target(build-depends-list)
        !            86: build-depends-list:
        !            87:        @for dir in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs-excl`;  \
        !            88:        do                                                              \
        !            89:                (cd ../../$$dir &&                                      \
        !            90:                ${MAKE} ${MAKEFLAGS} package-name)                      \
        !            91:        done
        !            92: .endif
        !            93:
        !            94: # If PACKAGES is set to the default (../../pkgsrc/packages), the current
        !            95: # ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory
        !            96: # structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed.
        !            97: # The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on
        !            98: # the target used to generate the README.html file.
        !            99: .PHONY: binpkg-list
        !           100: .if !target(binpkg-list)
        !           101: binpkg-list:
        !           102:        @if ${TEST} -d ${PACKAGES}; then                                        \
        !           103:                cd ${PACKAGES};                                         \
        !           104:                case ${.CURDIR} in                                      \
        !           105:                */pkgsrc/packages)                                      \
        !           106:                        for pkg in ${PKGREPOSITORYSUBDIR}/${PKGWILDCARD}${PKG_SUFX} ; \
        !           107:                        do                                              \
        !           108:                                if [ -f "$$pkg" ] ; then                \
        !           109:                                        pkgname=`${ECHO} $$pkg | ${SED} 's@.*/@@'`; \
        !           110:                                        ${ECHO} "<TR><TD>${MACHINE_ARCH}:<TD><a href=\"${PKG_URL}/$$pkg\">$$pkgname</a><TD>(${OPSYS} ${OS_VERSION})"; \
        !           111:                                fi ;                                    \
        !           112:                        done ;                                          \
        !           113:                        ;;                                              \
        !           114:                *)                                                      \
        !           115:                        cd ${PACKAGES}/../..;                           \
        !           116:                        for i in [1-9].*/*; do                          \
        !           117:                                if cd ${PACKAGES}/../../$$i/${PKGREPOSITORYSUBDIR} 2>/dev/null; then \
        !           118:                                        for j in ${PKGWILDCARD}${PKG_SUFX}; \
        !           119:                                        do                              \
        !           120:                                                if [ -f "$$j" ]; then   \
        !           121:                                                        ${ECHO} $$i/$$j;\
        !           122:                                                fi;                     \
        !           123:                                        done;                           \
        !           124:                                fi;                                     \
        !           125:                        done | ${AWK} -F/ '                             \
        !           126:                                {                                       \
        !           127:                                        release = $$1;                  \
        !           128:                                        arch = $$2;                     \
        !           129:                                        pkg = $$3;                      \
        !           130:                                        gsub("\\.tgz","", pkg);         \
        !           131:                                        if (arch != "m68k" && arch != "mipsel") { \
        !           132:                                                if (arch in urls)       \
        !           133:                                                        urls[arch "/" pkg "/" release] = "<a href=\"${PKG_URL}/" release "/" arch "/${PKGREPOSITORYSUBDIR}/" pkg "${PKG_SUFX}\">" pkg "</a>, " urls[arch]; \
        !           134:                                                else                    \
        !           135:                                                        urls[arch "/" pkg "/" release] = "<a href=\"${PKG_URL}/" release "/" arch "/${PKGREPOSITORYSUBDIR}/" pkg "${PKG_SUFX}\">" pkg "</a> "; \
        !           136:                                        }                               \
        !           137:                                }                                       \
        !           138:                                END {                                   \
        !           139:                                        for (av in urls) {              \
        !           140:                                                split(av, ava, "/");    \
        !           141:                                                arch=ava[1];            \
        !           142:                                                pkg=ava[2];             \
        !           143:                                                release=ava[3];         \
        !           144:                                                print "<TR><TD>" arch ":<TD>" urls[av] "<TD>(${OPSYS} " release ")"; \
        !           145:                                        }                               \
        !           146:                                }' | ${SORT}                            \
        !           147:                        ;;                                              \
        !           148:                esac;                                                   \
        !           149:        fi
        !           150: .endif
        !           151:
        !           152: # This target generates an index entry suitable for aggregation into
        !           153: # a large index.  Format is:
        !           154: #
        !           155: # distribution-name|package-path|installation-prefix|comment| \
        !           156: #  description-file|maintainer|categories|build deps|run deps|for arch| \
        !           157: #  not for opsys
        !           158: #
        !           159: .PHONY: describe
        !           160: .if !target(describe)
        !           161: describe:
        !           162:        @${ECHO_N} "${PKGNAME}|${.CURDIR}|";                            \
        !           163:        ${ECHO_N} "${PREFIX}|";                                         \
        !           164:        ${ECHO_N} ${COMMENT:Q};                                         \
        !           165:        if [ -f ${DESCR_SRC} ]; then                                    \
        !           166:                ${ECHO_N} "|${DESCR_SRC}";                              \
        !           167:        else                                                            \
        !           168:                ${ECHO_N} "|/dev/null";                                 \
        !           169:        fi;                                                             \
        !           170:        ${ECHO_N} "|${MAINTAINER}|${CATEGORIES}|";                      \
        !           171:        case "A${BUILD_DEPENDS}B${DEPENDS}C" in \
        !           172:                ABC) ;;                                                 \
        !           173:                *) cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u`;; \
        !           174:        esac;                                                           \
        !           175:        ${ECHO_N} "|";                                                  \
        !           176:        if [ "${DEPENDS}" != "" ]; then                                 \
        !           177:                cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`; \
        !           178:        fi;                                                             \
        !           179:        ${ECHO_N} "|";                                                  \
        !           180:        if [ "${ONLY_FOR_PLATFORM}" = "" ]; then                        \
        !           181:                ${ECHO_N} "any";                                        \
        !           182:        else                                                            \
        !           183:                ${ECHO_N} "${ONLY_FOR_PLATFORM}";                       \
        !           184:        fi;                                                             \
        !           185:        ${ECHO_N} "|";                                                  \
        !           186:        if [ "${NOT_FOR_PLATFORM}" = "" ]; then                         \
        !           187:                ${ECHO_N} "any";                                        \
        !           188:        else                                                            \
        !           189:                ${ECHO_N} "not ${NOT_FOR_PLATFORM}";                    \
        !           190:        fi;                                                             \
        !           191:        ${ECHO} ""
        !           192: .endif
        !           193:
        !           194: .PHONY: readmes
        !           195: .if !target(readmes)
        !           196: readmes:       readme
        !           197: .endif
        !           198:
        !           199: # This target is used to generate README.html files
        !           200: .PHONY: readme
        !           201: .if !target(readme)
        !           202: FTP_PKG_URL_HOST?=     ftp://ftp.NetBSD.org
        !           203: FTP_PKG_URL_DIR?=      /pub/NetBSD/packages
        !           204:
        !           205: readme:
        !           206:        @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${FTP_PKG_URL_HOST}${FTP_PKG_URL_DIR}
        !           207: .endif
        !           208:
        !           209: # This target is used to generate README.html files, very like "readme"
        !           210: # However, a different target was used for ease of use.
        !           211: .PHONY: cdrom-readme
        !           212: .if !target(cdrom-readme)
        !           213: CDROM_PKG_URL_HOST?=   file://localhost
        !           214: CDROM_PKG_URL_DIR?=    /usr/pkgsrc/packages
        !           215:
        !           216: cdrom-readme:
        !           217:        @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${CDROM_PKG_URL_HOST}${CDROM_PKG_URL_DIR}
        !           218: .endif
        !           219:
        !           220: README_NAME=   ${TEMPLATES}/README.pkg
        !           221:
        !           222: # set up the correct license information as a sed expression
        !           223: .if defined(LICENSE)
        !           224: SED_LICENSE_EXPR=      -e 's|%%LICENSE%%|<p>Please note that this package has a ${LICENSE} license.</p>|'
        !           225: .else
        !           226: SED_LICENSE_EXPR=      -e 's|%%LICENSE%%||'
        !           227: .endif
        !           228:
        !           229: # set up the "more info URL" information as a sed expression
        !           230: .if defined(HOMEPAGE)
        !           231: SED_HOMEPAGE_EXPR=     -e 's|%%HOMEPAGE%%|<p>This package has a home page at <a HREF="${HOMEPAGE}">${HOMEPAGE}</a>.</p>|'
        !           232: .else
        !           233: SED_HOMEPAGE_EXPR=     -e 's|%%HOMEPAGE%%||'
        !           234: .endif
        !           235:
        !           236: .PHONY: show-vulnerabilities-html
        !           237: show-vulnerabilities-html:
        !           238:        ${_PKG_SILENT}${_PKG_DEBUG}                                     \
        !           239:        if [ -f ${PKGVULNDIR}/pkg-vulnerabilities ]; then               \
        !           240:                ${AWK} '/^${PKGBASE}[-<>=]+[0-9]/ { gsub("\<", "\\&lt;", $$1);  \
        !           241:                         gsub("\>", "\\&gt;", $$1);                     \
        !           242:                         printf("<LI><STRONG>%s has a %s exploit (see <a href=\"%s\">%s</a> for more details)</STRONG></LI>\n", $$1, $$2, $$3, $$3) }' \
        !           243:                        ${PKGVULNDIR}/pkg-vulnerabilities;              \
        !           244:        fi
        !           245:
        !           246:
        !           247: # If PACKAGES is set to the default (../../packages), the current
        !           248: # ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory
        !           249: # structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed.
        !           250: # The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on
        !           251: # the target used to generate the README.html file.
        !           252: .PHONY: README.html
        !           253: README.html: .PRECIOUS
        !           254:        @${SETENV} AWK=${AWK} BMAKE=${MAKE} ../../mk/scripts/mkdatabase -f $@.tmp1
        !           255:        @if ${TEST} -d ${PACKAGES}; then                                        \
        !           256:                cd ${PACKAGES};                                         \
        !           257:                case `${PWD_CMD}` in                                    \
        !           258:                        ${PKGSRCDIR}/packages)                          \
        !           259:                                MULTIARCH=no;                           \
        !           260:                                ;;                                      \
        !           261:                        *)                                              \
        !           262:                                MULTIARCH=yes;                          \
        !           263:                                ;;                                      \
        !           264:                esac;                                                   \
        !           265:                cd ${.CURDIR} ;                                         \
        !           266:        fi;                                                             \
        !           267:        ${AWK} -f ../../mk/scripts/genreadme.awk \
        !           268:                builddependsfile=/dev/null \
        !           269:                dependsfile=/dev/null \
        !           270:                AWK=${AWK:Q} \
        !           271:                CMP=${CMP:Q} \
        !           272:                DISTDIR=${DISTDIR:Q} \
        !           273:                GREP=${GREP:Q} \
        !           274:                PACKAGES=${PACKAGES:Q} \
        !           275:                PKG_INFO=${PKG_INFO:Q} \
        !           276:                PKG_SUFX=${PKG_SUFX:Q} \
        !           277:                PKG_URL=${PKG_URL:Q} \
        !           278:                PKGSRCDIR=${.CURDIR:C|/[^/]*/[^/]*$||:Q} \
        !           279:                SED=${SED:Q} \
        !           280:                SETENV=${SETENV:Q} \
        !           281:                SORT=${SORT:Q} \
        !           282:                TMPDIR=${TMPDIR:U/tmp:Q} \
        !           283:                SINGLEPKG=${PKGPATH:Q} \
        !           284:                $@.tmp1
        !           285:        @${RM} $@.tmp1
        !           286:
        !           287: .PHONY: print-build-depends-list
        !           288: .if !target(print-build-depends-list)
        !           289: print-build-depends-list:
        !           290: .  if !empty(BUILD_DEPENDS) || !empty(DEPENDS)
        !           291:        @${ECHO_N} 'This package requires package(s) "'
        !           292:        @${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u`
        !           293:        @${ECHO} '" to build.'
        !           294: .  endif
        !           295: .endif
        !           296:
        !           297: .PHONY: print-run-depends-list
        !           298: .if !target(print-run-depends-list)
        !           299: print-run-depends-list:
        !           300: .  if !empty(DEPENDS)
        !           301:        @${ECHO_N} 'This package requires package(s) "'
        !           302:        @${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`
        !           303:        @${ECHO} '" to run.'
        !           304: .  endif
        !           305: .endif
        !           306:
        !           307: # This target is used by the mk/scripts/mkreadme script to generate
        !           308: # README.html files
        !           309: .PHONY: print-summary-data
        !           310: .if !target(print-summary-data)
        !           311: print-summary-data:
        !           312:        @${ECHO} depends ${PKGPATH} ${DEPENDS:Q}
        !           313:        @${ECHO} build_depends ${PKGPATH} ${BUILD_DEPENDS:Q}
        !           314:        @${ECHO} conflicts ${PKGPATH} ${CONFLICTS:Q}
        !           315:        @${ECHO} index ${PKGPATH} ${PKGNAME:Q}
        !           316:        @${ECHO} htmlname ${PKGPATH} ${_HTML_PKGLINK:Q}
        !           317:        @${ECHO} homepage ${PKGPATH} ${HOMEPAGE:Q}
        !           318:        @${ECHO} wildcard ${PKGPATH} ${PKGWILDCARD:Q}
        !           319:        @${ECHO} comment ${PKGPATH} ${COMMENT:Q}
        !           320:        @${ECHO} license ${PKGPATH} ${LICENSE:Q}
        !           321:        @if [ "${ONLY_FOR_PLATFORM}" = "" ]; then                       \
        !           322:                ${ECHO} "onlyfor ${PKGPATH} any";                       \
        !           323:        else                                                            \
        !           324:                ${ECHO} "onlyfor ${PKGPATH} ${ONLY_FOR_PLATFORM}";      \
        !           325:        fi
        !           326:        @if [ "${NOT_FOR_PLATFORM}" = "" ]; then                        \
        !           327:                ${ECHO} "notfor ${PKGPATH} any";                        \
        !           328:        else                                                            \
        !           329:                ${ECHO} "notfor ${PKGPATH} not ${NOT_FOR_PLATFORM}";    \
        !           330:        fi;
        !           331:        @${ECHO} "maintainer ${PKGPATH} ${MAINTAINER}"
        !           332:        @${ECHO} "categories ${PKGPATH} ${CATEGORIES}"
        !           333:        @if [ -f ${DESCR_SRC} ]; then                                   \
        !           334:                ${ECHO}  "descr ${PKGPATH} ${DESCR_SRC:S;${PKGSRCDIR}/;;g}"; \
        !           335:        else                                                            \
        !           336:                ${ECHO}  "descr ${PKGPATH} /dev/null";                  \
        !           337:        fi
        !           338:        @${ECHO} "prefix ${PKGPATH} ${PREFIX}"
        !           339: .endif

CVSweb <webmaster@jp.NetBSD.org>