commit:     6f826cbd3673375bea652a8ffff906a4b8443e25
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Sat Feb 13 10:08:48 2016 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Sat Feb 13 10:09:41 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6f826cbd

sys-devel/automake: make mdate output stable #520818 #574492

 sys-devel/automake/automake-1.15-r2.ebuild         | 104 +++++++++++++++++++++
 .../automake/files/automake-1.15-mdate-tz.patch    |  53 +++++++++++
 2 files changed, 157 insertions(+)

diff --git a/sys-devel/automake/automake-1.15-r2.ebuild 
b/sys-devel/automake/automake-1.15-r2.ebuild
new file mode 100644
index 0000000..9b47c67
--- /dev/null
+++ b/sys-devel/automake/automake-1.15-r2.ebuild
@@ -0,0 +1,104 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+inherit eutils versionator
+
+if [[ ${PV/_beta} == ${PV} ]]; then
+       MY_P=${P}
+       SRC_URI="mirror://gnu/${PN}/${P}.tar.xz
+               ftp://alpha.gnu.org/pub/gnu/${PN}/${MY_P}.tar.xz";
+else
+       MY_PV="$(get_major_version).$(($(get_version_component_range 2)-1))b"
+       MY_P="${PN}-${MY_PV}"
+
+       # Alpha/beta releases are not distributed on the usual mirrors.
+       SRC_URI="ftp://alpha.gnu.org/pub/gnu/${PN}/${MY_P}.tar.xz";
+fi
+
+DESCRIPTION="Used to generate Makefile.in from Makefile.am"
+HOMEPAGE="https://www.gnu.org/software/automake/";
+
+LICENSE="GPL-2"
+# Use Gentoo versioning for slotting.
+SLOT="${PV:0:4}"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 
~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
+IUSE=""
+
+RDEPEND="dev-lang/perl
+       >=sys-devel/automake-wrapper-10
+       >=sys-devel/autoconf-2.69
+       sys-devel/gnuconfig"
+DEPEND="${RDEPEND}
+       sys-apps/help2man"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+       export WANT_AUTOCONF=2.5
+       epatch "${FILESDIR}"/${PN}-1.15-perl-escape-curly-bracket.patch
+       epatch "${FILESDIR}"/${PN}-1.15-mdate-tz.patch #520818 #574492
+}
+
+src_configure() {
+       econf --docdir=/usr/share/doc/${PF} HELP2MAN=true
+}
+
+src_compile() {
+       emake APIVERSION="${SLOT}" pkgvdatadir="/usr/share/${PN}-${SLOT}"
+}
+
+src_test() {
+       emake check
+}
+
+# slot the info pages.  do this w/out munging the source so we don't have
+# to depend on texinfo to regen things.  #464146 (among others)
+slot_info_pages() {
+       pushd "${D}"/usr/share/info >/dev/null
+       rm -f dir
+
+       # Rewrite all the references to other pages.
+       # before: * aclocal-invocation: (automake)aclocal Invocation.   
Generating aclocal.m4.
+       # after:  * aclocal-invocation v1.13: (automake-1.13)aclocal 
Invocation.   Generating aclocal.m4.
+       local p pages=( *.info ) args=()
+       for p in "${pages[@]/%.info}" ; do
+               args+=(
+                       -e "/START-INFO-DIR-ENTRY/,/END-INFO-DIR-ENTRY/s|: 
(${p})| v${SLOT}&|"
+                       -e "s:(${p}):(${p}-${SLOT}):g"
+               )
+       done
+       sed -i "${args[@]}" * || die
+
+       # Rewrite all the file references, and rename them in the process.
+       local f d
+       for f in * ; do
+               d=${f/.info/-${SLOT}.info}
+               mv "${f}" "${d}" || die
+               sed -i -e "s:${f}:${d}:g" * || die
+       done
+
+       popd >/dev/null
+}
+
+src_install() {
+       emake DESTDIR="${D}" install \
+               APIVERSION="${SLOT}" pkgvdatadir="/usr/share/${PN}-${SLOT}"
+       slot_info_pages
+       rm "${D}"/usr/share/aclocal/README || die
+       rmdir "${D}"/usr/share/aclocal || die
+       dodoc AUTHORS ChangeLog NEWS README THANKS
+
+       rm \
+               "${D}"/usr/bin/{aclocal,automake} \
+               "${D}"/usr/share/man/man1/{aclocal,automake}.1 || die
+
+       # remove all config.guess and config.sub files replacing them
+       # w/a symlink to a specific gnuconfig version
+       local x
+       for x in guess sub ; do
+               dosym ../gnuconfig/config.${x} 
/usr/share/${PN}-${SLOT}/config.${x}
+       done
+}

diff --git a/sys-devel/automake/files/automake-1.15-mdate-tz.patch 
b/sys-devel/automake/files/automake-1.15-mdate-tz.patch
new file mode 100644
index 0000000..e00f2bf
--- /dev/null
+++ b/sys-devel/automake/files/automake-1.15-mdate-tz.patch
@@ -0,0 +1,53 @@
+https://bugs.gentoo.org/520818
+https://bugs.gentoo.org/574492
+https://lists.gnu.org/archive/html/bug-automake/2014-10/msg00003.html
+https://lists.gnu.org/archive/html/bug-automake/2014-10/msg00004.html
+
+https://debbugs.gnu.org/20314
+https://bugs.debian.org/782345
+https://lists.gnu.org/archive/html/automake-patches/2015-04/msg00000.html
+
+From: Reiner Herrmann <rei...@reiner-h.de>
+Date: Sat, 18 Jul 2015 14:10:35 -0400
+Subject: Make output of mdate-sh deterministic
+
+mdate-sh pretty-prints the modification time of a file.
+But it's output can vary depending on the timezone of
+the caller. Someone in timezone GMT-12 will get a different
+result (day) than someone in timezone GMT+12.
+
+As this output is also used to create/update stamp files,
+which influence the further build process, the build result
+can vary.
+To enable reproducible builds and to have a more deterministic
+build behavior, this change fixes the timezone to UTC.
+
+Signed-off-by: Reiner Herrmann <reiner at reiner-h.de>
+---
+ lib/mdate-sh | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/lib/mdate-sh b/lib/mdate-sh
+index e8dfaca..9e2c0c9 100755
+--- a/lib/mdate-sh
++++ b/lib/mdate-sh
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ # Get modification time of a file or directory and pretty-print it.
+ 
+-scriptversion=2010-08-21.06; # UTC
++scriptversion=2015-04-09.19; # UTC
+ 
+ # Copyright (C) 1995-2014 Free Software Foundation, Inc.
+ # written by Ulrich Drepper <drep...@gnu.ai.mit.edu>, June 1995
+@@ -74,6 +74,10 @@ export LC_ALL
+ LC_TIME=C
+ export LC_TIME
+ 
++# Use UTC to get reproducible result
++TZ=UTC
++export TZ
++
+ # GNU ls changes its time format in response to the TIME_STYLE
+ # variable.  Since we cannot assume 'unset' works, revert this
+ # variable to its documented default.

Reply via email to