* [bug#51996] [PATCH] gnu: Add xfoil.
@ 2021-11-20 7:54 Foo Chuan Wei
2021-11-21 10:40 ` [bug#51996] [PATCH v2] " Foo Chuan Wei
0 siblings, 1 reply; 3+ messages in thread
From: Foo Chuan Wei @ 2021-11-20 7:54 UTC (permalink / raw)
To: 51996
* gnu/packages/engineering.scm (xfoil): New variable.
---
gnu/packages/engineering.scm | 97 ++++++++++++++++++++++++++++++++++++
1 file changed, 97 insertions(+)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 50f265f085..d933dffe6e 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,102 @@ 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))
+ (native-inputs
+ `(("gfortran" ,gfortran)
+ ("libx11" ,libx11)))
+ (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: 70a88dac11d3cb47c1058ed65d3970fe27517c77
--
2.25.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [bug#51996] [PATCH v2] gnu: Add xfoil.
2021-11-20 7:54 [bug#51996] [PATCH] gnu: Add xfoil Foo Chuan Wei
@ 2021-11-21 10:40 ` Foo Chuan Wei
2021-12-18 19:04 ` bug#51996: [PATCH] " Ludovic Courtès
0 siblings, 1 reply; 3+ messages in thread
From: Foo Chuan Wei @ 2021-11-21 10:40 UTC (permalink / raw)
To: 51996
* 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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* bug#51996: [PATCH] gnu: Add xfoil.
2021-11-21 10:40 ` [bug#51996] [PATCH v2] " Foo Chuan Wei
@ 2021-12-18 19:04 ` Ludovic Courtès
0 siblings, 0 replies; 3+ messages in thread
From: Ludovic Courtès @ 2021-12-18 19:04 UTC (permalink / raw)
To: Foo Chuan Wei; +Cc: 51996-done
[-- Attachment #1: Type: text/plain, Size: 177 bytes --]
Hi,
Foo Chuan Wei <chuanwei.foo@hotmail.com> skribis:
> * gnu/packages/engineering.scm (xfoil): New variable.
Applied with the changes below.
Thanks!
Ludo’.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1153 bytes --]
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 42f5544a54..e0fe0f354f 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2961,6 +2961,10 @@ (define-public xfoil
(with-directory-excursion "orrs"
(invoke "bin/osgen" "osmaps_ns.lst"))
(invoke "make" "-C" "plotlib")
+ (substitute* "bin/Makefile_gfortran"
+ (("^FFLAGS =(.*)$" _ suffix)
+ (string-append "FFLAGS = -fallow-argument-mismatch "
+ suffix "\n")))
(invoke "make" "-C" "bin" "-f" "Makefile_gfortran")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
@@ -2976,9 +2980,9 @@ (define-public xfoil
(install-file "xfoil_doc.txt" doc-dir)))))
#:tests? #f))
(inputs
- `(("libx11" ,libx11)))
+ (list libx11))
(native-inputs
- `(("gfortran" ,gfortran)))
+ (list gfortran))
(home-page "https://web.mit.edu/drela/Public/web/xfoil/")
(synopsis "Program for the design and analysis of subsonic airfoils")
(description
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-12-18 19:05 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-20 7:54 [bug#51996] [PATCH] gnu: Add xfoil Foo Chuan Wei
2021-11-21 10:40 ` [bug#51996] [PATCH v2] " Foo Chuan Wei
2021-12-18 19:04 ` bug#51996: [PATCH] " Ludovic Courtès
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).