;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gd)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages linux) ;FIXME: for pcb
+ #:use-module (gnu packages m4)
#:use-module (gnu packages maths)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages qt)
#:use-module (gnu packages tcl)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (srfi srfi-1))
(define-public librecad
(package
(name "librecad")
- (version "2.0.6-rc")
+ (version "2.1.1")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/LibreCAD/LibreCAD/archive/"
version ".tar.gz"))
- (file-name (string-append name "-" version))
+ (file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1n1mh8asj6yrl5hi438dvizmrbqk1kni5xkizhi3pdmkg7z3hksm"))))
+ "132vv9pzbx64zmbnikyg06d4j47yzlmwi4mywxnd9gkaik4yd2kb"))))
(build-system gnu-build-system)
(arguments
'(#:phases
- (alist-cons-after
- 'unpack
- 'patch-paths
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (substitute* "librecad/src/lib/engine/rs_system.cpp"
- (("/usr/share") (string-append out "/share")))))
- (alist-replace
- 'configure
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "librecad/src/lib/engine/rs_system.cpp"
+ (("/usr/share") (string-append out "/share"))))))
+ (replace 'configure
(lambda* (#:key inputs #:allow-other-keys)
(system* "qmake" (string-append "BOOST_DIR="
- (assoc-ref inputs "boost"))))
- (alist-replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (mkdir-p (string-append out "/bin"))
- (mkdir-p (string-append out "/share/librecad"))
- (copy-file "unix/librecad"
- (string-append out "/bin/librecad"))
- (copy-recursively "unix/resources"
- (string-append out "/share/librecad"))))
- %standard-phases)))))
+ (assoc-ref inputs "boost")))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (mkdir-p (string-append out "/bin"))
+ (mkdir-p (string-append out "/share/librecad"))
+ (copy-file "unix/librecad"
+ (string-append out "/bin/librecad"))
+ (copy-recursively "unix/resources"
+ (string-append out "/share/librecad"))))))))
(inputs
`(("boost" ,boost)
("muparser" ,muparser)
("freetype" ,freetype)
- ("qt" ,qt-4)))
+ ("qt" ,qt)))
(native-inputs
`(("pkg-config" ,pkg-config)
("which" ,which)))
(define-public geda-gaf
(package
(name "geda-gaf")
- (version "1.8.2")
+ (version "1.9.2")
(source (origin
(method url-fetch)
(uri (string-append
- "http://ftp.geda-project.org/geda-gaf/stable/v"
+ "http://ftp.geda-project.org/geda-gaf/unstable/v"
(version-major+minor version) "/"
version "/geda-gaf-" version ".tar.gz"))
(sha256
(base32
- "08dpa506xk4gjbbi8vnxcb640wq4ihlgmhzlssl52nhvxwx7gx5v"))))
+ "14mk45pfz11v54q66gafw2l68n1p5ssvvjmdm8ffgc8x1w5ajfrz"))))
(build-system gnu-build-system)
(arguments
'(#:phases
- ;; tests require a writable HOME
- (alist-cons-before
- 'check 'set-home
- (lambda _
- (setenv "HOME" (getenv "TMPDIR")))
- %standard-phases)))
+ (modify-phases %standard-phases
+ ;; tests require a writable HOME
+ (add-before 'check 'set-home
+ (lambda _
+ (setenv "HOME" (getenv "TMPDIR"))
+ #t)))
+ #:configure-flags
+ (let ((pcb (assoc-ref %build-inputs "pcb")))
+ (list (string-append "--with-pcb-datadir=" pcb "/share")
+ (string-append "--with-pcb-lib-path="
+ pcb "/share/pcb/pcblib-newlib:"
+ pcb "/share/pcb/newlib")))))
(inputs
`(("glib" ,glib)
("gtk" ,gtk+-2)
("guile" ,guile-2.0)
("desktop-file-utils" ,desktop-file-utils)
- ("shared-mime-info" ,shared-mime-info)))
+ ("shared-mime-info" ,shared-mime-info)
+ ("m4" ,m4)
+ ("pcb" ,pcb)))
(native-inputs
`(("pkg-config" ,pkg-config)
("perl" ,perl))) ; for tests
(home-page "http://geda-project.org/")
(synopsis "Schematic capture, netlister, symbols, symbol checker, and utils")
(description
- "gaf stands for “gschem and friends”. It is a subset of the entire tool
+ "Gaf stands for “gschem and friends”. It is a subset of the entire tool
suite grouped together under the gEDA name. gEDA/gaf is a collection of tools
which currently includes: gschem, a schematic capture program; gnetlist, a
netlist generation program; gsymcheck, a syntax checker for schematic symbols;
optimizer; and it can produce photorealistic and design review images.")
(license license:gpl2+)))
-(define* (broken-tarball-fetch url hash-algo hash
- #:optional name
- #:key (system (%current-system))
- (guile (default-guile)))
- (mlet %store-monad ((drv (url-fetch url hash-algo hash
- (string-append "tarbomb-" name)
- #:system system
- #:guile guile)))
- ;; Take the tar bomb, and simply unpack it as a directory.
- (gexp->derivation name
- #~(begin
- (mkdir #$output)
- (setenv "PATH"
- (string-append #$gzip "/bin"))
- (chdir #$output)
- (zero? (system* (string-append #$tar "/bin/tar")
- "xf" #$drv))))))
-
-
(define-public fastcap
(package
(name "fastcap")
(version "2.0-18Sep92")
(source (origin
- (method broken-tarball-fetch)
+ (method url-fetch/tarbomb)
(file-name (string-append name "-" version ".tar.gz"))
(uri (string-append "http://www.rle.mit.edu/cpg/codes/"
name "-" version ".tgz"))
(sha256
(base32
"0x37vfp6k0d2z3gnig0hbicvi0jp8v267xjnn3z8jdllpiaa6p3k"))
- (modules '((guix build utils)
- (guix build download)
- (guix ftp-client)))
- (patches (list (search-patch "fastcap-mulSetup.patch")
- (search-patch "fastcap-mulGlobal.patch")))))
+ (snippet
+ ;; Remove a non-free file.
+ '(delete-file "doc/psfig.sty"))
+ (patches (search-patches "fastcap-mulSetup.patch"
+ "fastcap-mulGlobal.patch"))))
(build-system gnu-build-system)
(native-inputs
`(("texlive" ,texlive)
(("\\\\special\\{psfile=([^,]*),.*scale=([#0-9.]*).*\\}"
all file scale)
(string-append "\\includegraphics[scale=" scale "]{"
- file "}")))
- (substitute* '("doc/mtt.tex" "doc/tcad.tex")
+ file "}"))
+ (("\\\\psfig\\{figure=([^,]*),.*width=([#0-9.]*in).*\\}"
+ all file width)
+ (string-append "\\includegraphics[width=" width "]{"
+ file "}"))
+ (("\\\\psfig\\{figure=([^,]*),.*height=([#0-9.]*in).*\\}"
+ all file height)
+ (string-append "\\includegraphics[height=" height "]{"
+ file "}"))
+ (("\\\\psfig\\{figure=([^,]*)\\}" all file)
+ (string-append "\\includegraphics{" file "}")))
+ (substitute* '("doc/mtt.tex" "doc/tcad.tex" "doc/ug.tex")
(("^\\\\documentstyle\\[(.*)\\]\\{(.*)\\}"
all options class)
(string-append "\\documentclass[" options "]{"
(doc (string-append data "/doc/" ,name "-" ,version))
(examples (string-append doc "/examples")))
(with-directory-excursion "bin"
- (mkdir-p bin)
- (for-each
- (lambda (f)
- (copy-file f (string-append bin "/" (basename f))))
- (find-files "." ".*")))
+ (for-each (lambda (f)
+ (install-file f bin))
+ (find-files "." ".*")))
(copy-recursively "doc" doc)
(copy-recursively "examples" examples)
#t))))))
"Fastcap is a capacitance extraction program based on a
multipole-accelerated algorithm.")
(license (license:non-copyleft #f "See fastcap.c."))))
+
+(define-public fasthenry
+ (package
+ (name "fasthenry")
+ (version "3.0-12Nov96")
+ (source (origin
+ (method url-fetch)
+ (file-name (string-append name "-" version ".tar.gz"))
+ (uri (string-append
+ "http://www.rle.mit.edu/cpg/codes/" name
+ "-" version ".tar.z"))
+ (sha256
+ (base32 "1a06xyyd40zhknrkz17xppl2zd5ig4w9g1grc8qrs0zqqcl5hpzi"))
+ (patches (search-patches "fasthenry-spAllocate.patch"
+ "fasthenry-spBuild.patch"
+ "fasthenry-spUtils.patch"
+ "fasthenry-spSolve.patch"
+ "fasthenry-spFactor.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags '("CC=gcc" "RM=rm" "SHELL=sh" "all")
+ #:parallel-build? #f
+ #:tests? #f ;; no tests-suite
+ #:modules ((srfi srfi-1)
+ ,@%gnu-build-system-modules)
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (data (string-append out "/share"))
+ (bin (string-append out "/bin"))
+ (doc (string-append data "/doc/" ,name "-" ,version))
+ (examples (string-append doc "/examples")))
+ (with-directory-excursion "bin"
+ (for-each (lambda (f)
+ (install-file f bin))
+ (find-files "." ".*")))
+ (copy-recursively "doc" doc)
+ (copy-recursively "examples" examples)
+ #t))))))
+ (home-page "http://www.rle.mit.edu/cpg/research_codes.htm")
+ (synopsis "Multipole-accelerated inductance analysis program")
+ (description
+ "Fasthenry is an inductance extraction program based on a
+multipole-accelerated algorithm.")
+ (license (license:non-copyleft #f "See induct.c."))))
+
+(define-public fritzing
+ (package
+ (name "fritzing")
+ (version "0.9.2b")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/fritzing/"
+ "fritzing-app/archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0pvk57z2pxz89pcwwm61lkpvj4w9qxqz8mi0zkpj6pnaljabp7bf"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (and (zero? (system* "tar"
+ "-xvf" (assoc-ref inputs "fritzing-parts-db")
+ "-C" "parts"))
+ (zero? (system* "qmake"
+ (string-append "PREFIX="
+ (assoc-ref outputs "out"))
+ "phoenix.pro"))))))))
+ (inputs
+ `(("qtbase" ,qtbase)
+ ("qtserialport" ,qtserialport)
+ ("qtsvg" ,qtsvg)
+ ("boost" ,boost)
+ ("zlib" ,zlib)
+ ("fritzing-parts-db"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/fritzing/"
+ "fritzing-parts/archive/" version ".tar.gz"))
+ (file-name (string-append "fritzing-parts-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0jqr8yjg7177f3pk1fcns584r0qavwpr280nggsi2ff3pwk5wpsz"))))))
+ (home-page "http://fritzing.org")
+ (synopsis "Electronic circuit design")
+ (description
+ "The Fritzing application is @dfn{Electronic Design Automation} (EDA)
+software with a low entry barrier, suited for the needs of makers and
+hobbyists. It offers a unique real-life \"breadboard\" view, and a parts
+library with many commonly used high-level components. Fritzing makes it very
+easy to communicate about circuits, as well as to turn them into PCB layouts
+ready for production.")
+ ;; Documentation and parts are released under CC-BY-SA 3.0; source code is
+ ;; released under GPLv3+.
+ (license (list license:gpl3+ license:cc-by-sa3.0))))
+
+(define-public gerbv
+ (package
+ (name "gerbv")
+ (version "2.6.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/gerbv/gerbv/gerbv-"
+ version "/gerbv-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0v6ry0mxi5qym4z0y0lpblxsw9dfjpgxs4c4v2ngg7yw4b3a59ks"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'autoconf
+ (lambda _
+ ;; Build rules contain references to Russian translation, but the
+ ;; needed files are missing; see
+ ;; http://sourceforge.net/p/gerbv/bugs/174/
+ (delete-file "po/LINGUAS")
+ (substitute* "man/Makefile.am"
+ (("PO_FILES= gerbv.ru.1.in.po") "")
+ (("man_MANS = gerbv.1 gerbv.ru.1") "man_MANS = gerbv.1"))
+ (zero? (system* "autoreconf" "-vfi")))))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("gettext" ,gettext-minimal)
+ ("po4a" ,po4a)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("cairo" ,cairo)
+ ("gtk" ,gtk+-2)
+ ("desktop-file-utils" ,desktop-file-utils)))
+ (home-page "http://gerbv.geda-project.org/")
+ (synopsis "Gerber file viewer")
+ (description
+ "Gerbv is a viewer for files in the Gerber format (RS-274X only), which
+is commonly used to represent printed circuit board (PCB) layouts. Gerbv lets
+you load several files on top of each other, do measurements on the displayed
+image, etc. Besides viewing Gerbers, you may also view Excellon drill files
+as well as pick-place files.")
+ (license license:gpl2+)))