Subject: bug#51996: closed (Re: bug#51996: [PATCH] gnu: Add xfoil.)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 18 Dec 2021 19:05:02 +0000

Your bug report

#51996: [PATCH] gnu: Add xfoil.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
51996: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=51996
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#51996: [PATCH] gnu: Add xfoil.
From: Ludovic Courtès <[email-masked]>
To: Foo Chuan Wei <[email-masked]>
Cc: [email-masked]
Date: Sat, 18 Dec 2021 20:04:48 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Foo Chuan Wei <[email-masked]> skribis:

> * gnu/packages/engineering.scm (xfoil): New variable.

Applied with the changes below.

Thanks!

Ludo’.

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

Subject: [PATCH] gnu: Add xfoil.
From: Foo Chuan Wei <[email-masked]>
To: [email-masked]
Date: Sat, 20 Nov 2021 07:54:47 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

* 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 <[email-masked]>
 ;;; Copyright © 2021 Guillaume Le Vaillant <[email-masked]>
 ;;; Copyright © 2021 Ivan Gankevich <[email-masked]>
+;;; Copyright © 2021 Foo Chuan Wei <[email-masked]>
 ;;;
 ;;; 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