From: Foo Chuan Wei <chuanwei.foo@hotmail.com>
To: 51996@debbugs.gnu.org
Subject: [bug#51996] [PATCH v2] gnu: Add xfoil.
Date: Sun, 21 Nov 2021 10:40:50 +0000 [thread overview]
Message-ID: <PU1PR01MB21552B912C9D263F18933DA38D9E9@PU1PR01MB2155.apcprd01.prod.exchangelabs.com> (raw)
In-Reply-To: <PU1PR01MB21551A696B38950183AC3BB88D9D9@PU1PR01MB2155.apcprd01.prod.exchangelabs.com>
* gnu/packages/engineering.scm (xfoil): New variable.
---
Changes relative to PATCH v1:
* Move libx11 from native-inputs to inputs.
gnu/packages/engineering.scm | 98 ++++++++++++++++++++++++++++++++++++
1 file changed, 98 insertions(+)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 50f265f085..fdbbf2edf7 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -25,6 +25,7 @@
;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
+;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -2847,6 +2848,103 @@ hot-patching the machine code of the standard C library in the memory of
a process.")
(license license:bsd-2))))
+(define-public xfoil
+ (package
+ (name "xfoil")
+ (version "6.99")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://web.mit.edu/drela/Public/web/xfoil/xfoil"
+ version ".tgz"))
+ (sha256
+ (base32
+ "0h5y5v0qlyvi4qc943x394npz4779i8f52iksxshxkjj7xj500jw"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'unpack 'edit-files
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; The instructions in orrs/README say that orrs/bin/osmap.f
+ ;; should be edited, but that file is never used by XFOIL.
+ ;; Instead, it is osrc/osmap.f that is used.
+ (substitute* "osrc/osmap.f"
+ (("^[ ]{6}DATA OSFILE / '/var/local/codes/orrs/osmap.dat' /")
+ (let ((replacement (string-append (make-string 6 #\space)
+ "DATA OSFILE / '"
+ (assoc-ref outputs "out")
+ "/share/xfoil/osmap.dat' /")))
+ ;; In fixed form Fortran, lines cannot exceed 72 columns.
+ ;; The Guix store path exceeds this limit.
+ (string-append
+ (substring replacement 0 72) "\n"
+ (make-string 5 #\space) "&" (substring replacement 72)))))
+ (substitute* "orrs/bin/Makefile_DP"
+ (("^FC = ifort")
+ "FC = gfortran")
+ (("^FLG = -O -r8")
+ "FLG = -O2 -fdefault-real-8"))
+ (substitute* "plotlib/Makefile"
+ (("^include ./config.make")
+ "include ./config.make.gfortranDP"))
+ (substitute* "bin/Makefile_gfortran"
+ (("^BINDIR = /home/codes/bin/")
+ (string-append "BINDIR = " (assoc-ref outputs "out") "/bin"))
+ (("^CC = cc")
+ "CC = gcc")
+ (("^CFLAGS = -O -DUNDERSCORE")
+ "CFLAGS = -O2 -DUNDERSCORE")
+ (("^FFLAGS = -O \\$\\(CHK\\) \\$\\(DBL\\)")
+ "FFLAGS = -O2 $(CHK) $(DBL)")
+ (("^FFLOPT = -O \\$\\(CHK\\) \\$\\(DBL\\)")
+ "FFLOPT = -O2 $(CHK) $(DBL)")
+ ;; Separate the build stage from the install stage.
+ (("\\$\\(INSTALLCMD\\) xfoil \\$\\(BINDIR\\)") "")
+ (("\\$\\(INSTALLCMD\\) pxplot \\$\\(BINDIR\\)") "")
+ (("\\$\\(INSTALLCMD\\) pplot \\$\\(BINDIR\\)") ""))))
+ (replace 'build
+ (lambda _
+ (invoke "make" "-C" "orrs/bin" "-f" "Makefile_DP" "osgen")
+ (with-directory-excursion "orrs"
+ (invoke "bin/osgen" "osmaps_ns.lst"))
+ (invoke "make" "-C" "plotlib")
+ (invoke "make" "-C" "bin" "-f" "Makefile_gfortran")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin-dir (string-append out "/bin"))
+ (data-dir (string-append out "/share/xfoil"))
+ (doc-dir (string-append out "/share/doc/xfoil")))
+ (mkdir-p bin-dir)
+ (invoke "make" "-C" "bin" "-f" "Makefile_gfortran" "install")
+ (mkdir-p data-dir)
+ (install-file "orrs/osmap.dat" data-dir)
+ (mkdir-p doc-dir)
+ (install-file "xfoil_doc.txt" doc-dir)))))
+ #:tests? #f))
+ (inputs
+ `(("libx11" ,libx11)))
+ (native-inputs
+ `(("gfortran" ,gfortran)))
+ (home-page "https://web.mit.edu/drela/Public/web/xfoil/")
+ (synopsis "Program for the design and analysis of subsonic airfoils")
+ (description
+ "XFOIL is an interactive program for the design and analysis of subsonic
+isolated airfoils. It consists of a collection of menu-driven routines which
+perform various useful functions such as:
+@itemize
+@item Viscous (or inviscid) analysis of an existing airfoil
+@item Airfoil design and redesign by interactive modification of surface speed
+ distributions
+@item Airfoil redesign by interactive modification of geometric parameters
+@item Blending of airfoils
+@item Writing and reading of airfoil coordinates and polar save files
+@item Plotting of geometry, pressure distributions, and multiple polars
+@end itemize")
+ (license license:gpl2+)))
+
(define-public libigl
(package
(name "libigl")
base-commit: 9bfbba8af5b7efb952292c8b7d5e9ee57300c2bc
--
2.25.1
next prev parent reply other threads:[~2021-11-21 10:42 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-20 7:54 [bug#51996] [PATCH] gnu: Add xfoil Foo Chuan Wei
2021-11-21 10:40 ` Foo Chuan Wei [this message]
2021-12-18 19:04 ` bug#51996: " Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=PU1PR01MB21552B912C9D263F18933DA38D9E9@PU1PR01MB2155.apcprd01.prod.exchangelabs.com \
--to=chuanwei.foo@hotmail.com \
--cc=51996@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.