From e5ac7d8301efd127740e0ebfde020aae9c9563c0 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 4 May 2016 23:10:15 +0000 Subject: import SOURCE_DATE_EPOCH_TEX_PRIMITIVES support from pdftex r751, per tex-k thread, http://tug.org/pipermail/tex-k/2016-May/002691.html git-svn-id: svn://tug.org/texlive/trunk@40889 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/man/man1/pdflatex.man1.pdf | Bin 40261 -> 40192 bytes Master/texmf-dist/doc/man/man1/pdftex.1 | 72 ++++++++++----------- Master/texmf-dist/doc/man/man1/pdftex.man1.pdf | Bin 40261 -> 40192 bytes Master/texmf-dist/doc/pdftex/manual/ChangeLog | 5 ++ Master/texmf-dist/doc/pdftex/manual/Makefile | 5 +- Master/texmf-dist/doc/pdftex/manual/pdftex-a.pdf | Bin 813349 -> 817102 bytes Master/texmf-dist/doc/pdftex/manual/pdftex-t.tex | 30 +++++++-- .../pdftex/tests/03-deterministic-output/Makefile | 17 +++-- .../tests/03-deterministic-output/test-prim.tex | 11 ++++ 9 files changed, 87 insertions(+), 53 deletions(-) create mode 100644 Master/texmf-dist/doc/pdftex/tests/03-deterministic-output/test-prim.tex (limited to 'Master') diff --git a/Master/texmf-dist/doc/man/man1/pdflatex.man1.pdf b/Master/texmf-dist/doc/man/man1/pdflatex.man1.pdf index 5a2834ffe1c..7a5f4a9ebee 100644 Binary files a/Master/texmf-dist/doc/man/man1/pdflatex.man1.pdf and b/Master/texmf-dist/doc/man/man1/pdflatex.man1.pdf differ diff --git a/Master/texmf-dist/doc/man/man1/pdftex.1 b/Master/texmf-dist/doc/man/man1/pdftex.1 index eb255815aee..f1b1c2c9231 100644 --- a/Master/texmf-dist/doc/man/man1/pdftex.1 +++ b/Master/texmf-dist/doc/man/man1/pdftex.1 @@ -1,4 +1,4 @@ -.TH PDFTEX 1 "16 June 2015" "Web2C 2016" +.TH PDFTEX 1 "4 May 2016" "Web2C 2016" .\"===================================================================== .if n .ds MF Metafont .if t .ds MF Metafont @@ -318,7 +318,7 @@ line can overrule this setting. Print version information and exit. .\"===================================================================== .SH ENVIRONMENT -See the Kpathsearch library documentation (the `Path specifications' +See the Kpathsea library documentation (e.g., the `Path specifications' node) for precise details of how the environment variables are used. The .B kpsewhich @@ -364,11 +364,6 @@ current directory and ``/home/user/tex'' to the standard search path. .B TEXFORMATS Search path for format files. .TP -.B TEXPOOL -search path for -.B pdftex -internal strings. -.TP .B TEXEDIT Command template for switching to editor. The default, usually .BR vi , @@ -378,6 +373,27 @@ is set when pdf\*(TX is compiled. Search path for font metric .RI ( .tfm ) files. +.TP +.B SOURCE_DATE_EPOCH +If set, its value, taken to be in epoch-seconds, will be used for the +timestamps in the PDF output, such as the CreationDate and ModDate keys. +This is useful for making reproducible builds. +.TP +.B SOURCE_DATE_EPOCH_TEX_PRIMITIVES +If set to the value "1", the time-related \*(TX primitives +.RI ( \eyear , +.IR \emonth , +.IR \eday , +.IR \etime ) +are also initialized from the value of SOURCE_DATE_EPOCH. This is not +recommended if there is any viable alternative. +.br +pdf\*(TX also has several primitives to support reproducible builds, +which are preferable to setting these environment variables; see the +main manual. +.PP +Many, many more environment variables may be consulted related to path +searching. See the Kpathsea manual. .\"===================================================================== .SH FILES The location of the files mentioned below varies from system to @@ -385,11 +401,8 @@ system. Use the .B kpsewhich utility to find their locations. .TP -.I pdftex.pool -Text file containing pdf\*(TX's internal strings. -.TP .I pdftex.map -Filename mapping definitions. +Font name mapping definitions. .TP .I *.tfm Metric files for pdf\*(TX's fonts. @@ -409,14 +422,6 @@ and the info manual .IR "Web2C: A TeX implementation" . .\"===================================================================== .SH BUGS -This version of pdf\*(TX implements a number of optional extensions. -In fact, many of these extensions conflict to a greater or lesser -extent with the definition of pdf\*(TX. When such extensions are -enabled, the banner printed when pdf\*(TX starts is changed to print -.B pdfTeXk -instead of -.BR pdfTeX . -.PP This version of pdf\*(TX fails to trap arithmetic overflow when dimensions are added or subtracted. Cases where this occurs are rare, but when it does the generated @@ -427,27 +432,19 @@ file would be usable is unknown. .\"===================================================================== .SH AVAILABILITY pdf\*(TX is available for a large variety of machine architectures -and operation systems. +and operating systems. pdf\*(TX is part of all major \*(TX distributions. -.P -Information on how to get pdf\*(TX and related information -is available at the -.B http://www.pdftex.org -.IR "pdf\*(TX" -web site. -.P -The following pdfe\*(TX related mailing list is available: -.BR pdftex@tug.org . -This is a mailman list; -to subscribe send a message containing -.I subscribe -to -.BR pdftex-request@tug.org . -A web interface and list archives can be found at the -.B "http://lists.tug.org/pdftex" -mailing list web site. +.br +The pdf\*(TX home page: http://www.pdftex.org. +.br +pdf\*(TX on CTAN: http://www.ctan.org/pkg/pdftex. +.br +pdf\*(TX mailing list for all discussion: http://lists.tug.org/pdftex. .\"===================================================================== .SH "SEE ALSO" +The full pdf\*(TX manual can be accessed from the home page or CTAN page. +Same for the Web2C, Kpathsea, and other manuals. +Some related programs: .BR epstopdf (1), .BR etex (1), .BR latex (1), @@ -455,7 +452,6 @@ mailing list web site. .BR mptopdf (1), .BR tex (1), .BR mf (1). -http://pdftex.org, http://tug.org/web2c. .\"===================================================================== .SH AUTHORS The primary authors of pdf\*(TX are Han The Thanh, Petr Sojka, diff --git a/Master/texmf-dist/doc/man/man1/pdftex.man1.pdf b/Master/texmf-dist/doc/man/man1/pdftex.man1.pdf index 7e9c4e2796d..f4429301ad3 100644 Binary files a/Master/texmf-dist/doc/man/man1/pdftex.man1.pdf and b/Master/texmf-dist/doc/man/man1/pdftex.man1.pdf differ diff --git a/Master/texmf-dist/doc/pdftex/manual/ChangeLog b/Master/texmf-dist/doc/pdftex/manual/ChangeLog index 220c0ca6ad4..3e3cb1168fa 100644 --- a/Master/texmf-dist/doc/pdftex/manual/ChangeLog +++ b/Master/texmf-dist/doc/pdftex/manual/ChangeLog @@ -1,3 +1,8 @@ +2016-05-04 Karl Berry + + * pdftex-t.tex (Invoking \PDFTEX): describe + SOURCE_DATE_EPOCH_TEX_PRIMITIVES, with caveats. + 2016-04-25 Karl Berry * samplepdf: move subdir up a level for more visibility. diff --git a/Master/texmf-dist/doc/pdftex/manual/Makefile b/Master/texmf-dist/doc/pdftex/manual/Makefile index 001768d614b..102d82ff576 100644 --- a/Master/texmf-dist/doc/pdftex/manual/Makefile +++ b/Master/texmf-dist/doc/pdftex/manual/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile 745 2016-04-25 18:06:57Z karl $ +# $Id: Makefile 751 2016-05-04 22:57:38Z karl $ # Makefile for pdfTeX documentation. Public domain. # Get version we're documenting from the \def in the manual. @@ -58,8 +58,9 @@ pdftex-w.pdf: pdftex-w.tex # Too annoying to remake help text every time; check by hand when needed. -pdftex-help.txt: +pdftex-help.txt: force $(pdftex_binary) --help >$@ || rm -f $@ +force: # if we don't have a build tree around, just try from the path. build_binary := ../../source/build-pdftex/texk/web2c/pdftex diff --git a/Master/texmf-dist/doc/pdftex/manual/pdftex-a.pdf b/Master/texmf-dist/doc/pdftex/manual/pdftex-a.pdf index 8de0d2cb619..d220e5ca648 100644 Binary files a/Master/texmf-dist/doc/pdftex/manual/pdftex-a.pdf and b/Master/texmf-dist/doc/pdftex/manual/pdftex-a.pdf differ diff --git a/Master/texmf-dist/doc/pdftex/manual/pdftex-t.tex b/Master/texmf-dist/doc/pdftex/manual/pdftex-t.tex index 9ae584c7c5e..fd2054a33f5 100644 --- a/Master/texmf-dist/doc/pdftex/manual/pdftex-t.tex +++ b/Master/texmf-dist/doc/pdftex/manual/pdftex-t.tex @@ -1,7 +1,7 @@ % interface=english modes=letter,screen output=pdftex % vim: tw=79 -% $Id: pdftex-t.tex 745 2016-04-25 18:06:57Z karl $ +% $Id: pdftex-t.tex 751 2016-05-04 22:57:38Z karl $ % The number of lines on the title page depends on exactly % what \PDF\ code is generated. @@ -38,7 +38,7 @@ August\or September\or October\or November\or December\else ERROR\fi} } -\svnscan $Id: pdftex-t.tex 745 2016-04-25 18:06:57Z karl $ +\svnscan $Id: pdftex-t.tex 751 2016-05-04 22:57:38Z karl $ \def\currentpdftex{1.40.17} @@ -1313,20 +1313,36 @@ engines as implemented in \WEBC\ (\from [web2c] has the manual). The same commonality holds for environment variables; see the section ``Setting search paths'' above for an overview. However, \PDFTEX\ looks -for one additional environment variable: \type{SOURCE_DATE_EPOCH} +for two additional environment variables: first, \type{SOURCE_DATE_EPOCH} (introduced in version 1.40.17, 2016). If this is set, it must be a positive integer (with one trivial exception: if it is set but empty, that is equivalent to 0). Non-integer values cause a fatal error. The value is used as the current time in seconds since the usual Unix -``epoch'', the beginning of 1970-01-01, UTC. Thus, a value of \type{32} +``epoch'': the beginning of 1970-01-01, UTC. Thus, a value of \type{32} would result in a \type{/CreationDate} and \type{/ModDate} values of \type{19700101000032Z}. This is useful for reproducible builds of documents. (See also \type{\pdfinfoomitdate}, \type{\pdfsuppressptexinfo}, et al.) -Just to have the list of options and basic invocation at hand, here is a -verbatim listing of the \type{-}\type{-help} output. All options can be -specified with one or two dashes and unambiguously abbreviated. +The second \PDFTEX-specific environment variable is +\type{SOURCE_DATE_EPOCH_TEX_PRIMITIVES}. If this is set to~\type{1}, +\TEX's time-related primitives are also initialized from the value of +\type{SOURCE_DATE_EPOCH}. These primitives are \type{\year}, +\type{\month}, \type{day}, and \type{\time}. If +\type{SOURCE_DATE_EPOCH} is not set, setting +\type{SOURCE_DATE_EPOCH_TEX_PRIMITIVES} has no effect. If +\type{SOURCE_DATE_EPOCH_TEX_PRIMITIVES} is unset, set to the empty +string, or set to~\type{0}, the primitives reflect the current time as +usual. Any other value elicits a warning, and the current time is used. +(This is useful only if one wants to make reproducible \PDF{}s for a set +of documents without changing them in any way, e.g., an operating system +distribution with manuals that use \type{\today}. Except in such +unusual circumstances, it is better not to set this, and let the \TEX\ +primitives have the meaning they have always had.) + +Now, just to have the list of options and basic invocation at hand, here +is a verbatim listing of the \type{-}\type{-help} output. All options +can be specified with one or two dashes and unambiguously abbreviated. \startnotmode[screen] \switchtobodyfont[9pt] % squeeze everything on one page diff --git a/Master/texmf-dist/doc/pdftex/tests/03-deterministic-output/Makefile b/Master/texmf-dist/doc/pdftex/tests/03-deterministic-output/Makefile index cbf7ee13b25..1e0e72aea9c 100644 --- a/Master/texmf-dist/doc/pdftex/tests/03-deterministic-output/Makefile +++ b/Master/texmf-dist/doc/pdftex/tests/03-deterministic-output/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile 740 2016-04-23 15:08:37Z karl $ +# $Id: Makefile 751 2016-05-04 22:57:38Z karl $ # Public domain. include ../Common.mak @@ -9,6 +9,10 @@ test1: test2: $(prog) test-fixed-date-id.tex +testprim: + SOURCE_DATE_EPOCH=120 SOURCE_DATE_EPOCH_TEX_PRIMITIVES=1 \ + $(prog) test-prim.tex + test = test-SOURCE_DATE_EPOCH # test invalid settings of the envvar. test3-invalid: @@ -27,17 +31,18 @@ test3-valid: test3-orig.pdf test3-repro.pdf SOURCE_DATE_EPOCH=0 $(prog) $(test).tex SOURCE_DATE_EPOCH="" $(prog) $(test).tex # same as 0 -$(diff) $< $(test).pdf # shows differences - SOURCE_DATE_EPOCH=10 $(prog) $(test).tex + SOURCE_DATE_EPOCH=11 $(prog) $(test).tex $(diff) test3-repro.pdf $(test).pdf # should be identical # SOURCE_DATE_EPOCH=1439928155 $(prog) $(test).tex # make an original with nonzero time for checking. -test3-repro.pdf: - SOURCE_DATE_EPOCH=10 $(prog) $(test).tex && mv $(test).pdf $@ +test3-repro.pdf: force + SOURCE_DATE_EPOCH=11 $(prog) $(test).tex && mv $(test).pdf $@ +force: clean: rm -f *.log *.pdf *.fmt *.aux fmt: - $(prog) *pdflatex.ini - $(prog) *pdfetex.ini + $(prog) \*pdflatex.ini + $(prog) \*pdfetex.ini diff --git a/Master/texmf-dist/doc/pdftex/tests/03-deterministic-output/test-prim.tex b/Master/texmf-dist/doc/pdftex/tests/03-deterministic-output/test-prim.tex new file mode 100644 index 00000000000..7c83d90b422 --- /dev/null +++ b/Master/texmf-dist/doc/pdftex/tests/03-deterministic-output/test-prim.tex @@ -0,0 +1,11 @@ +% $Id$ +% See the testprim: target in ./Makefile for the invocation. + +\catcode`\{ = 1 +\catcode`\} = 2 + +\ifnum\year=1970 \else \errmessage{year is \the\year, not 1970}\fi +\ifnum\month=1 \else \errmessage{month is \the\month, not 1}\fi +\ifnum\day=1 \else \errmessage{day is \the\day, not 1}\fi +\ifnum\time=2 \else \errmessage{time is \the\time, not 2}\fi +\end -- cgit v1.2.3