gnu: Add reprotest.

Added to diffoscope, to avoid triggering #37346.

* gnu/packages/diffoscope (reprotest): New variable.
* gnu/packages/patches/reprotest-support-guix.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add patch.
This commit is contained in:
Vagrant Cascadian 2020-02-07 16:06:17 -08:00 committed by Vagrant Cascadian
parent d9e2f7b284
commit c526ddf482
No known key found for this signature in database
GPG key ID: DC518FC87F9716AA
3 changed files with 148 additions and 0 deletions

View file

@ -1363,6 +1363,7 @@ dist_patch_DATA = \
%D%/packages/patches/readline-link-ncurses.patch \
%D%/packages/patches/readline-6.2-CVE-2014-2524.patch \
%D%/packages/patches/reposurgeon-add-missing-docbook-files.patch \
%D%/packages/patches/reprotest-support-guix.patch \
%D%/packages/patches/ri-li-modernize_cpp.patch \
%D%/packages/patches/ripperx-missing-file.patch \
%D%/packages/patches/rpcbind-CVE-2017-8779.patch \

View file

@ -44,6 +44,7 @@ (define-module (gnu packages diffoscope)
#:use-module (gnu packages java)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages man)
#:use-module (gnu packages mono)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages package-management)
@ -224,6 +225,73 @@ (define-public diffoscope
install.")
(license license:gpl3+))))
(define-public reprotest
(package
(name "reprotest")
(version "0.7.13")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://salsa.debian.org/reproducible-builds/reprotest.git")
(commit version)))
(file-name (git-file-name name version))
(patches (search-patches "reprotest-support-guix.patch"))
(sha256
(base32
"0jj9sqxbdpypnc0y8md352wwzh1by6nyhmx5fwqnvrbznrng332f"))))
(inputs
`(("python-debian" ,python-debian)
("python-distro" ,python-distro)
("python-libarchive-c", python-libarchive-c)
("python-rstr" ,python-rstr)))
(native-inputs
`(("diffoscope" ,diffoscope)
("help2man" ,help2man)
("libfaketime" ,libfaketime)
("python-coverage" ,python-coverage)
("python-docutils" ,python-docutils)
("python-pytest " ,python-pytest)
("python-tlsh" ,python-tlsh)
("python-tox" ,python-tox)
("unzip" ,unzip)
("xxd" ,xxd)))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; Neither glibc-locales nor glibc-utf8-locales have the C.UTF-8
;; locale or several other locales used in reprotest.
(add-after 'unpack 'adjust-locales
(lambda _
(substitute* "reprotest/build.py"
(("'C.UTF-8'") "'en_US.UTF-8'")
(("'ru_RU.CP1251'") "'ru_RU.KOI8-R'")
(("'kk_KZ.RK1048'") "'kk_KZ'"))
(substitute* "reprotest/lib/adt_testbed.py"
(("export LANG=C.UTF-8") "export LANG=en_US.UTF-8"))
#t))
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let* ((mandir1 (string-append
(assoc-ref outputs "out") "/share/man/man1"))
(docdir (string-append
(assoc-ref outputs "out") "/share/doc/" ,name "-" ,version)))
(invoke "make" "-C" "doc")
(mkdir-p mandir1)
(install-file "doc/reprotest.1" mandir1)
(mkdir-p docdir)
(install-file "./README.rst" docdir)
(install-file "./README-dev.rst" docdir))
#t)))))
(home-page "https://salsa.debian.org/reproducible-builds/reprotest")
(synopsis "Build software and check it for reproducibility")
(description "Reprotest builds the same source code twice in different
environments, and then checks the binaries produced by each build for
differences. If any are found, then diffoscope or diff is used to display
them in detail for later analysis.")
(license (list license:gpl3+ license:gpl2+))))
(define-public trydiffoscope
(package
(name "trydiffoscope")

View file

@ -0,0 +1,79 @@
From 31bd4fe777cbff3ebca74115e5735a8b8f584fa7 Mon Sep 17 00:00:00 2001
From: Vagrant Cascadian <vagrant@reproducible-builds.org>
Date: Thu, 6 Feb 2020 23:17:58 -0800
Subject: [PATCH] Add support for GNU Guix.
---
reprotest/lib/adt_testbed.py | 2 ++
reprotest/lib/system_interface/guix.py | 39 ++++++++++++++++++++++++++
2 files changed, 41 insertions(+)
create mode 100644 reprotest/lib/system_interface/guix.py
diff --git a/reprotest/lib/adt_testbed.py b/reprotest/lib/adt_testbed.py
index ef704d6..60bf763 100644
--- a/reprotest/lib/adt_testbed.py
+++ b/reprotest/lib/adt_testbed.py
@@ -40,6 +40,7 @@ import urllib.parse
from reprotest.lib.system_interface.debian import DebianInterface
from reprotest.lib.system_interface.arch import ArchInterface
from reprotest.lib.system_interface.fedora import FedoraInterface
+from reprotest.lib.system_interface.guix import GuixInterface
from reprotest.lib import adtlog
from reprotest.lib import VirtSubproc
@@ -47,6 +48,7 @@ SYSTEM_INTERFACES = {
'debian': DebianInterface,
'arch': ArchInterface,
'fedora': FedoraInterface,
+ 'guix': GuixInterface,
}
timeouts = {
diff --git a/reprotest/lib/system_interface/guix.py b/reprotest/lib/system_interface/guix.py
new file mode 100644
index 0000000..2b06104
--- /dev/null
+++ b/reprotest/lib/system_interface/guix.py
@@ -0,0 +1,39 @@
+# adt_testbed.py is part of autopkgtest
+# autopkgtest is a tool for testing Debian binary packages. The
+# system_interface module is an addition for reprotest to make
+# this module distro-agnostic
+#
+# autopkgtest is Copyright (C) 2006-2015 Canonical Ltd.
+# the system_interface module is Copyright (C) 2017 Santiago Torres-Arias
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# See the file CREDITS for a full list of credits information (often
+# installed as /usr/share/doc/autopkgtest/CREDITS).
+import subprocess
+
+from . import SystemInterface
+
+class GuixInterface(SystemInterface):
+ """
+ SystemInterface implementation for GNU Guix hosts. Contains commands that
+ are specific to the GNU Guix toolchain.
+ """
+
+ def get_arch(self):
+ return ['uname', '-m']
+
+ def can_query_packages(self):
+ return False
--
2.20.1