all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Crude diffoscope report generator
@ 2016-02-04 20:27 Leo Famulari
  0 siblings, 0 replies; only message in thread
From: Leo Famulari @ 2016-02-04 20:27 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 584 bytes --]

I have been investigating some reproducibility problems using Guix and
diffoscope. We have all the tools to make possible but it's not
automated yet.

I've attached the crude shell script I've been using to build, rebuild,
and generate a diffoscope report. Perhaps it will help others and
inspire more work in this area :)

You use it from within your Guix checkout, and the only argument it
accepts is the name of a package.

BTW, the rsync options are adapted from --archive, but modified to alter
symlinks so that they do not point into the store. I'm sure they could
be improved.

[-- Attachment #2: checker --]
[-- Type: text/plain, Size: 532 bytes --]

#!/bin/sh

set -u
set -e

main() {
	if [ $# -lt 1 ]; then
		printf "Give a package name.\n"
		exit 1
	fi
	package=$1
	shift

	if [ $# -ne 0 ]; then
		printf "Unknown parameter %s\n" "$1"
		exit 1
	fi

	mkdir a
	mkdir b

	mypath="$(./pre-inst-env guix build --no-substitutes $package)" \
	&& rsync -rLptgoD "$mypath" ./a \
	&& guix gc -d "$mypath" \
	&& mypath="$(./pre-inst-env guix build --no-substitutes $package)" \
	&& rsync -rLptgoD "$mypath" ./b \
	&& guix gc -d "$mypath" \
	&& diffoscope --html ./report ./a ./b
}
main "$@"

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-02-04 20:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-04 20:27 Crude diffoscope report generator Leo Famulari

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.