all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Paul A. Patience" <paul@apatience.com>
To: 56638@debbugs.gnu.org
Cc: "Paul A. Patience" <paul@apatience.com>
Subject: [bug#56638] [PATCH v2 2/2] gnu: Add asli.
Date: Sun, 24 Jul 2022 12:02:57 +0000	[thread overview]
Message-ID: <20220724120228.54052-3-paul@apatience.com> (raw)
In-Reply-To: <20220724120228.54052-1-paul@apatience.com>

* gnu/packages/graphics.scm (asli): New variable.
* gnu/packages/patches/asli-use-system-libs.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register patch.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/graphics.scm                     | 74 +++++++++++++++++++
 .../patches/asli-use-system-libs.patch        | 70 ++++++++++++++++++
 3 files changed, 145 insertions(+)
 create mode 100644 gnu/packages/patches/asli-use-system-libs.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 412d512775..75ca3e6a29 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -858,6 +858,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch	\
   %D%/packages/patches/apr-skip-getservbyname-test.patch	\
   %D%/packages/patches/ark-skip-xar-test.patch			\
+  %D%/packages/patches/asli-use-system-libs.patch		\
   %D%/packages/patches/aspell-default-dict-dir.patch		\
   %D%/packages/patches/ath9k-htc-firmware-binutils.patch	\
   %D%/packages/patches/ath9k-htc-firmware-gcc.patch		\
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 7417fbe690..d3a11824b4 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -2224,3 +2224,77 @@ (define-public mmg
 @code{mmg3d} libraries.
 @end itemize")
     (license license:lgpl3+)))
+
+(define-public asli
+  (package
+    (name "asli")
+    (version "0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tpms-lattice/ASLI")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "02hwdavpsy3vmivd6prp03jn004ykrl11lbkvksy5i2zm38zbknr"))
+       (patches (search-patches "asli-use-system-libs.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Remove bundled libraries except (the ones missing from Guix and)
+        ;; KU Leuven's mTT, which is an obscure (i.e., unfindable by searching
+        ;; online for “mTT KU Leuven”), BSD-3 licensed, header-only library.
+        #~(begin
+            ;;(delete-file-recursively "libs/AdaptTools") ; Missing from Guix
+            (delete-file-recursively "libs/CGAL")
+            ;;(delete-file-recursively "libs/alglib") ; Missing from Guix
+            (delete-file-recursively "libs/eigen")
+            (delete-file-recursively "libs/mmg")
+            ;;(delete-file-recursively "libs/tetgen") ; Missing from Guix
+            (delete-file-recursively "libs/yaml")))))
+    (build-system cmake-build-system)
+    (inputs
+     (list boost
+           cgal
+           eigen
+           gmp
+           `(,mmg "lib")
+           mpfr
+           tbb-2020
+           yaml-cpp))
+    (arguments
+     (list #:tests? #f                  ; No tests
+           #:configure-flags
+           #~(list "-DCGAL_ACTIVATE_CONCURRENT_MESH_3=ON"
+                   (string-append "-DEIGEN3_INCLUDE_DIR="
+                                  #$(this-package-input "eigen")
+                                  "/include/eigen3")
+                   (string-append "-DMMG_INCLUDE_DIR="
+                                  (ungexp (this-package-input "mmg") "lib")
+                                  "/include")
+                   (string-append "-DMMG_LIBRARY_DIR="
+                                  (ungexp (this-package-input "mmg") "lib")
+                                  "/lib"))
+           #:phases
+           #~(modify-phases %standard-phases
+               (replace 'install        ; No install phase
+                 (lambda _
+                   (with-directory-excursion "../source/bin"
+                     (install-file "ASLI" (string-append #$output "/bin"))
+                     ;; The manual is included in the repository.
+                     ;; Building it requires -DASLI_DOC=ON, but this is marked
+                     ;; as unsupported (presumably for users).
+                     ;; Besides, some of the LaTeX packages it uses are
+                     ;; missing from Guix, for example emptypage, fvextra and
+                     ;; menukeys.
+                     (install-file "docs/ASLI [User Manual].pdf"
+                                   (string-append #$output "/share/doc/"
+                                                  #$name "-" #$version))))))))
+    (home-page "http://www.biomech.ulg.ac.be/ASLI/")
+    (synopsis "Create lattice infills with varying unit cell type, size and feature")
+    (description "ASLI (A Simple Lattice Infiller) is a command-line tool that
+allows users to fill any 3D geometry with a functionally graded lattice.  The
+lattice infill is constructed out of unit cells, described by implicit
+functions, whose type, size and feature can be varied locally to obtain the
+desired local properties.")
+    (license license:agpl3+)))
diff --git a/gnu/packages/patches/asli-use-system-libs.patch b/gnu/packages/patches/asli-use-system-libs.patch
new file mode 100644
index 0000000000..d8234fd608
--- /dev/null
+++ b/gnu/packages/patches/asli-use-system-libs.patch
@@ -0,0 +1,70 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b11c5ba..702423e 100755
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -122,28 +122,8 @@ if(MMG_MESH)
+   add_definitions(-DMMG_MESH)
+
+   # MMG
+-  set(MMG_PREFIX mmg3d)
+-  set(MMG_PREFIX_DIR ${CMAKE_CURRENT_BINARY_DIR}/${MMG_PREFIX})
+-  set(MMG_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/${MMG_PREFIX})
+-  ExternalProject_Add(${MMG_PREFIX}
+-    PREFIX       ${MMG_PREFIX_DIR}
+-    SOURCE_DIR   ${CMAKE_CURRENT_SOURCE_DIR}/libs/mmg
+-
+-    BUILD_ALWAYS OFF
+-    INSTALL_DIR  ${MMG_INSTALL_DIR}
+-
+-    CMAKE_ARGS(-DCMAKE_BUILD_TYPE=Release -DBUILD=MMG3D -DLIBMMG3D_STATIC=ON
+-               -DLIBMMG3D_SHARED=OFF -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>)
+-
+-    BUILD_COMMAND   make
+-    INSTALL_COMMAND make install
+-  )
+-  set(MMG3D_INCLUDE_DIRS "${MMG_INSTALL_DIR}/include")
+-  set(MMG3D_LIBRARIES "${MMG_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${MMG_PREFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}")
+-
+-  include_directories(${MMG3D_INCLUDE_DIRS})
+-  #add_library(MMG3D STATIC IMPORTED)
+-  #set_target_properties(MMG3D PROPERTIES IMPORTED_LOCATION "${MMG3D_LIBRARIES}")
++  include_directories(${MMG_INCLUDE_DIR})
++  set(MMG3D_LIBRARIES ${MMG_LIBRARY_DIR}/libmmg3d.so)
+
+   # MshMet
+   set(MSHMET_PREFIX mshmet)
+@@ -192,14 +172,8 @@ target_include_directories(tet PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/libs/tetgen)
+ target_compile_definitions(tet PUBLIC TETLIBRARY) # -DTETLIBRARY: flag to compile tetgen as a library
+
+ # yaml
+-file(GLOB yaml_SRC CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libs/yaml/src/*.cpp) # Using file GLOB is not recomended!
+-add_library(yaml STATIC)
+-target_include_directories(yaml
+-  PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/libs/yaml/include
+-  PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/libs/yaml/src
+-)
+-target_sources(yaml PRIVATE ${yaml_SRC})
+-set_target_properties(yaml PROPERTIES CXX_STANDARD 11)
++find_package(yaml-cpp REQUIRED)
++include_directories(${YAML_CPP_INCLUDE_DIRS})
+
+ # Compile options for debuging
+ if(CMAKE_BUILD_TYPE MATCHES Debug)
+@@ -259,7 +233,7 @@ if(MARCH_NATIVE)
+ endif()
+
+ # Create entries for C++ files in "ASLI" routine
+-target_link_libraries(ASLI PUBLIC alg tet yaml)
++target_link_libraries(ASLI PUBLIC alg tet ${YAML_CPP_LIBRARIES})
+ if(NOT MSVC)
+   target_link_libraries(ASLI PUBLIC stdc++fs)
+ endif()
+@@ -272,7 +246,7 @@ if(CGAL_MESH)
+ endif()
+
+ if(MMG_MESH)
+-  add_dependencies(ASLI ${MMG_PREFIX} ${MSHMET_PREFIX})
++  add_dependencies(ASLI ${MSHMET_PREFIX})
+   target_link_libraries(ASLI PUBLIC ${MMG3D_LIBRARIES} ${MSHMET_LIBRARIES})
+   if(SCOTCH_FOUND)
+     target_link_libraries(ASLI PUBLIC ${SCOTCH_LIBRARIES} scotch)
--
2.37.0






  parent reply	other threads:[~2022-07-24 12:04 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-19  7:59 [bug#56638] [PATCH] gnu: Add asli Paul A. Patience
2022-07-19  8:10 ` Paul A. Patience
2022-07-19 14:21   ` Ludovic Courtès
2022-07-19 14:32 ` Maxime Devos
2022-07-19 14:34 ` Maxime Devos
2022-07-24 12:02 ` [bug#56638] [PATCH v2 0/2] " Paul A. Patience
2022-07-24 12:02   ` [bug#56638] [PATCH v2 1/2] gnu: Add mmg Paul A. Patience
2022-08-29 21:21     ` [bug#56638] [PATCH] gnu: Add asli Ludovic Courtès
2022-07-24 12:02   ` Paul A. Patience [this message]
2022-08-04 21:40     ` Ludovic Courtès
2022-08-29 21:21       ` Ludovic Courtès
2022-08-30 12:01         ` Paul A. Patience
2022-09-02 20:34 ` [bug#56638] [PATCH v3] " Paul A. Patience
2022-09-13 19:02   ` Paul A. Patience
2022-09-14 21:13   ` [bug#56638] [PATCH] " Ludovic Courtès
2022-09-15 13:37     ` Paul A. Patience
2023-06-20  0:39       ` Paul A. Patience
2023-09-08 17:16       ` bug#56638: " 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=20220724120228.54052-3-paul@apatience.com \
    --to=paul@apatience.com \
    --cc=56638@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.