From owner-svn-doc-head@freebsd.org Mon Jul 4 14:56:43 2016 Return-Path: Delivered-To: svn-doc-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4C66EB91A3C; Mon, 4 Jul 2016 14:56:43 +0000 (UTC) (envelope-from wblock@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2728E24AC; Mon, 4 Jul 2016 14:56:43 +0000 (UTC) (envelope-from wblock@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u64Eug7t039592; Mon, 4 Jul 2016 14:56:42 GMT (envelope-from wblock@FreeBSD.org) Received: (from wblock@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u64Eug1W039590; Mon, 4 Jul 2016 14:56:42 GMT (envelope-from wblock@FreeBSD.org) Message-Id: <201607041456.u64Eug1W039590@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: wblock set sender to wblock@FreeBSD.org using -f From: Warren Block Date: Mon, 4 Jul 2016 14:56:42 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r49051 - head/share/mk X-SVN-Group: doc-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-doc-head@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: SVN commit messages for the doc tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jul 2016 14:56:43 -0000 Author: wblock Date: Mon Jul 4 14:56:42 2016 New Revision: 49051 URL: https://svnweb.freebsd.org/changeset/doc/49051 Log: Improve latest revision detection based on mat's work. This clarifies the code, reduces dependencies, and removes a lot of quotes by using --stringparam. Differential Revision: https://reviews.freebsd.org/D6902 Modified: head/share/mk/doc.commands.mk head/share/mk/doc.docbook.mk Modified: head/share/mk/doc.commands.mk ============================================================================== --- head/share/mk/doc.commands.mk Sun Jul 3 21:48:20 2016 (r49050) +++ head/share/mk/doc.commands.mk Mon Jul 4 14:56:42 2016 (r49051) @@ -32,12 +32,18 @@ SED?= /usr/bin/sed SETENV?= /usr/bin/env SH?= /bin/sh SORT?= /usr/bin/sort +STAT?= /usr/bin/stat TAIL?= /usr/bin/tail TOUCH?= /usr/bin/touch TRUE?= /usr/bin/true XARGS?= /usr/bin/xargs # +# Version control +# +GIT?= /usr/local/bin/git + +# # Compession and decompression # Modified: head/share/mk/doc.docbook.mk ============================================================================== --- head/share/mk/doc.docbook.mk Sun Jul 3 21:48:20 2016 (r49050) +++ head/share/mk/doc.docbook.mk Mon Jul 4 14:56:42 2016 (r49051) @@ -88,33 +88,38 @@ NO_SUBDIR= YES # Determine latest revision # # This needs to contain all of: -# --param latestrevision.timestamp "'timestamp'" -# --param latestrevision.committer "'committer'" -# --param latestrevision.number "'revision id'" +# --stringparam latestrevision.timestamp "timestamp" +# --stringparam latestrevision.committer "committer" +# --stringparam latestrevision.number "revision id" # If using git, use git log. The revision won't work with the generated links, # because it is a hash, and git log doesn't know about git svn find-rev. -.if exists(${DOC_PREFIX}/.git) -LATESTREVISION!=cd ${.CURDIR} && git log -1 \ - --pretty=format:'--param latestrevision.timestamp "'\''%ci'\''" --param latestrevision.committer "'\''%cn'\''" --param latestrevision.number "'\''%h'\''"' \ - ${SRCS} -.else -# svn doesn't allow multiple files passed to it, so try to get the latest with grep +.if exists(${DOC_PREFIX}/.git) && exists(${GIT}) +LATESTREVISION!=cd ${.CURDIR} && ${GIT} log -1 --pretty=format:'\ + --stringparam latestrevision.timestamp "%ci" \ + --stringparam latestrevision.committer "%cn" \ + --stringparam latestrevision.number "%h"' ${SRCS} +.else +# version numbers are expected to be in Subversion, but we cannot +# require Subversion to be installed just to build the documents, +# so use grep to find the version strings LATESTREVISION!=${GREP} -Ehos '\$$[F]reeBSD: ([^\$$ ]+ ){5}\$$' ${SRCS} | \ ${AWK} '{ print \ - " --param latestrevision.timestamp \"'\''"$$4" "$$5"'\''\"" \ - " --param latestrevision.committer \"'\''"$$6"'\''\"" \ - " --param latestrevision.number \"'\''"$$3"'\''\"" \ + "--stringparam latestrevision.timestamp \""$$4" "$$5"\" " \ + "--stringparam latestrevision.committer \""$$6"\" " \ + "--stringparam latestrevision.number \""$$3"\" " \ }' | ${SORT} | ${TAIL} -n1 .endif -# And sometime, strange things happen, so let's try to be a bit clever so that -# we always have something to output, so use file on the file modified last, -# and use its changed timestamp, user. Leave the revision as blank. +# if neither Subversion nor Git revision numbers are available, use +# the revision date from the timestamp of the most recent file and +# set the revision number to "filedate" .if empty(LATESTREVISION) -LATESTREVISION!=stat -t '%F %T %Z' \ - -f '--param latestrevision.timestamp "'\''%Sc'\''" --param latestrevision.committer "'\''%Su'\''" --param latestrevision.number "'\'''\''"' \ - $(ls -t1 ${SRCS}|head -1) +LATESTREVISION!=${STAT} 2>/dev/null -t '%F %T %Z' -f '\ + --stringparam latestrevision.timestamp "%Sc" \ + --stringparam latestrevision.committer "%Su" \ + --stringparam latestrevision.number "filedate"' \ + ${SRCS} | ${SORT} -r | ${TAIL} -n1 .endif XSLTPROCOPTS+= ${LATESTREVISION}