summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2018-10-01 16:11:22 +0200
committerTobias Geerinckx-Rice <me@tobias.gr>2018-10-04 04:20:04 +0200
commitfb5412511479c19b3e4c884e9cc65e652ea923e2 (patch)
treead8bfd5ceb10f7a77c773ce831b48929c6427bd4 /gnu
parent5eff43804eaed5744967f83edbaeb7ffdb77aec1 (diff)
gnu: Add memtester.
* gnu/packages/hardware.scm (memtester): New public variable.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/hardware.scm51
1 files changed, 50 insertions, 1 deletions
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index 62f6316bca..02ab9e2e00 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -116,7 +116,8 @@ calibrated, and restored when the calibration is applied.")
(lambda (file)
(install-file file doc))
(list "FAQ"
- "README"))))))))
+ "README"))
+ #t))))))
(native-inputs
;; Newer GCCs fail with a deluge of "multiple definition of `__foo'" errors.
`(("gcc" ,gcc-4.9)))
@@ -135,6 +136,54 @@ can scan as much of your RAM as possible for hardware defects.
Memtest86+ cannot currently be used on computers booted with UEFI.")
(license license:gpl2)))
+(define-public memtester
+ (package
+ (name "memtester")
+ (version "4.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ ;; Even the latest release is available under 'old-versions/'.
+ (uri (string-append "http://pyropus.ca/software/memtester/old-versions/"
+ "memtester-" version ".tar.gz"))
+ (sha256
+ (base32 "127xymmyzb9r6dxqrwd69v7gf8csv8kv7fjvagbglf3wfgyy5pzr"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ (list "CC=gcc")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ ;; This is a home-brewed configuration system where the cc/ld command
+ ;; lines are stored in one-line files.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out")))
+ (substitute* (list "conf-cc" "conf-ld")
+ (("^cc") "gcc"))
+ (substitute* "Makefile"
+ (("(INSTALLPATH.*=).*" _ assignment)
+ (string-append assignment out)))
+ #t)))
+ (replace 'check
+ ;; There is no test suite. Test some RAM for a single iteration.
+ (lambda _
+ (invoke "./memtester" "64K" "1"))))))
+ (home-page "http://pyropus.ca/software/memtester/")
+ (synopsis "User-space memory subsystem tester")
+ (description
+ "Memtester stress-tests the memory subsystem of your operating system and
+computer. It repeatedly writes different patterns to all memory locations,
+reads them back again, and verifies whether the result is the same as what was
+written. This can help debug even intermittent and non-deterministic errors.
+
+Memtester runs entirely in user space. This means that you don't need to reboot
+to test your memory, but also that it's not possible to test all of the RAM
+installed in the system.
+
+It can also be told to test memory starting at a particular physical address.")
+ (license license:gpl2)))
+
(define-public msr-tools
(package
(name "msr-tools")