From 6f826cbd3673375bea652a8ffff906a4b8443e25 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 13 Feb 2016 05:08:48 -0500 Subject: 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(+) create mode 100644 sys-devel/automake/automake-1.15-r2.ebuild create mode 100644 sys-devel/automake/files/automake-1.15-mdate-tz.patch (limited to 'sys-devel/automake') 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 000000000000..9b47c6764c24 --- /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 000000000000..e00f2bf329d1 --- /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 +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 +--- + 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 , 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. -- cgit v1.2.3-65-gdbad