gnu: yosys: Use new package style.
* gnu/packages/fpga.scm (yosys)[source]: Use gexp in snippet and don't explicitly return #t. [arguments]: Use gexps; use search-input-file to locate executables; simplify parameters to "configure" phase; don't explicitly return #t from phases. [native-inputs]: Sort alphabetically. [inputs]: Sort alphabetically. Signed-off-by: Christopher Baines <mail@cbaines.net>master
parent
535c61ccc3
commit
8b0024f8da
|
@ -150,44 +150,43 @@ For synthesis, the compiler generates netlists in the desired format.")
|
||||||
(file-name (git-file-name name version))
|
(file-name (git-file-name name version))
|
||||||
(modules '((guix build utils)))
|
(modules '((guix build utils)))
|
||||||
(snippet
|
(snippet
|
||||||
'(begin
|
#~(begin
|
||||||
(substitute* "Makefile"
|
(substitute* "Makefile"
|
||||||
(("ABCREV = .*") "ABCREV = default\n"))
|
(("ABCREV = .*") "ABCREV = default\n"))))))
|
||||||
#t))))
|
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:test-target "test"
|
(list
|
||||||
#:make-flags (list "CC=gcc"
|
#:test-target "test"
|
||||||
|
#:make-flags #~(list "CC=gcc"
|
||||||
"CXX=g++"
|
"CXX=g++"
|
||||||
(string-append "PREFIX=" %output))
|
(string-append "PREFIX=" #$output))
|
||||||
#:phases
|
#:phases
|
||||||
(modify-phases %standard-phases
|
#~(modify-phases %standard-phases
|
||||||
(add-before 'configure 'fix-paths
|
(add-before 'configure 'fix-paths
|
||||||
(lambda _
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
(substitute* "./passes/cmds/show.cc"
|
(substitute* "./passes/cmds/show.cc"
|
||||||
(("exec xdot") (string-append "exec " (which "xdot")))
|
(("exec xdot")
|
||||||
(("dot -") (string-append (which "dot") " -"))
|
(string-append "exec " (search-input-file inputs
|
||||||
(("fuser") (which "fuser")))
|
"/bin/xdot")))
|
||||||
#t))
|
(("dot -")
|
||||||
|
(string-append (search-input-file inputs "/bin/dot") " -"))
|
||||||
|
(("fuser")
|
||||||
|
(search-input-file inputs "/bin/fuser")))))
|
||||||
(replace 'configure
|
(replace 'configure
|
||||||
(lambda* (#:key inputs (make-flags '()) #:allow-other-keys)
|
(lambda* (#:key make-flags #:allow-other-keys)
|
||||||
(apply invoke "make" "config-gcc" make-flags)))
|
(apply invoke "make" "config-gcc" make-flags)))
|
||||||
(add-after 'configure 'prepare-abc
|
(add-after 'configure 'prepare-abc
|
||||||
(lambda* (#:key inputs #:allow-other-keys)
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
(let* ((sourceabc (assoc-ref inputs "abc"))
|
|
||||||
(sourcebin (string-append sourceabc "/bin"))
|
|
||||||
(source (string-append sourcebin "/abc")))
|
|
||||||
(mkdir-p "abc")
|
(mkdir-p "abc")
|
||||||
(call-with-output-file "abc/Makefile"
|
(call-with-output-file "abc/Makefile"
|
||||||
(lambda (port)
|
(lambda (port)
|
||||||
(format port ".PHONY: all\nall:\n\tcp -f abc abc-default\n")))
|
(format port ".PHONY: all\nall:\n\tcp -f abc abc-default\n")))
|
||||||
(copy-file source "abc/abc")
|
(copy-file (search-input-file inputs "/bin/abc") "abc/abc")
|
||||||
(invoke "chmod" "+w" "abc/abc"))))
|
(invoke "chmod" "+w" "abc/abc")))
|
||||||
(add-before 'check 'fix-iverilog-references
|
(add-before 'check 'fix-iverilog-references
|
||||||
(lambda* (#:key inputs native-inputs #:allow-other-keys)
|
(lambda* (#:key inputs native-inputs #:allow-other-keys)
|
||||||
(let* ((xinputs (or native-inputs inputs))
|
(let ((iverilog (search-input-file (or native-inputs inputs)
|
||||||
(xdirname (assoc-ref xinputs "iverilog"))
|
"/bin/iverilog")))
|
||||||
(iverilog (string-append xdirname "/bin/iverilog")))
|
|
||||||
(substitute* '("./manual/CHAPTER_StateOfTheArt/synth.sh"
|
(substitute* '("./manual/CHAPTER_StateOfTheArt/synth.sh"
|
||||||
"./manual/CHAPTER_StateOfTheArt/validate_tb.sh"
|
"./manual/CHAPTER_StateOfTheArt/validate_tb.sh"
|
||||||
"./techlibs/ice40/tests/test_bram.sh"
|
"./techlibs/ice40/tests/test_bram.sh"
|
||||||
|
@ -203,24 +202,23 @@ For synthesis, the compiler generates netlists in the desired format.")
|
||||||
(("if ! which iverilog") "if ! true")
|
(("if ! which iverilog") "if ! true")
|
||||||
(("iverilog ") (string-append iverilog " "))
|
(("iverilog ") (string-append iverilog " "))
|
||||||
(("iverilog_bin=\".*\"") (string-append "iverilog_bin=\""
|
(("iverilog_bin=\".*\"") (string-append "iverilog_bin=\""
|
||||||
iverilog "\"")))
|
iverilog "\"")))))))))
|
||||||
#t))))))
|
|
||||||
(native-inputs
|
(native-inputs
|
||||||
(list pkg-config
|
(list bison
|
||||||
python
|
|
||||||
bison
|
|
||||||
flex
|
flex
|
||||||
gawk ; for the tests and "make" progress pretty-printing
|
gawk ; for the tests and "make" progress pretty-printing
|
||||||
tcl ; tclsh for the tests
|
iverilog ; for the tests
|
||||||
iverilog)) ; for the tests
|
pkg-config
|
||||||
|
python
|
||||||
|
tcl)) ; tclsh for the tests
|
||||||
(inputs
|
(inputs
|
||||||
(list tcl
|
(list abc
|
||||||
readline
|
|
||||||
libffi
|
|
||||||
graphviz
|
graphviz
|
||||||
|
libffi
|
||||||
psmisc
|
psmisc
|
||||||
xdot
|
readline
|
||||||
abc))
|
tcl
|
||||||
|
xdot))
|
||||||
(propagated-inputs
|
(propagated-inputs
|
||||||
(list z3)) ; should be in path for yosys-smtbmc
|
(list z3)) ; should be in path for yosys-smtbmc
|
||||||
(home-page "https://yosyshq.net/yosys/")
|
(home-page "https://yosyshq.net/yosys/")
|
||||||
|
|
Reference in New Issue