[bug#53943] Add python-stltools

Message ID 875ypli5yr.fsf@pisemsky.com
State New
Headers
Series [bug#53943] Add python-stltools |

Commit Message

Evgeny Pisemsky Feb. 11, 2022, 7 p.m. UTC
Hello!

The source of this package contains custom setup.py script, which does
not work with python-build-system, so I just copied files around in
package definition, and this seems worked.

However, I am not sure if it is an appropriate way of intallation.
  

Comments

Evgeny Pisemsky Feb. 25, 2022, 5:50 p.m. UTC | #1
Any feedback?
  
Maxime Devos Feb. 25, 2022, 7:49 p.m. UTC | #2
Evgeny Pisemsky schreef op vr 11-02-2022 om 22:00 [+0300]:
> +         (replace 'check
> +           (lambda _
> +             (invoke "py.test" "-v"))))))

For cross-compilation and to make "--without-tests" work, this phase
needs to respect #:tests?, try

        (replace 'check
          (lambda* (#:key tests? #:allow-other-keys)
            (when tests?
              (invoke "py.test" "-v")))))))

Greetings,
Maxime.
  
Maxime Devos Feb. 25, 2022, 7:51 p.m. UTC | #3
Evgeny Pisemsky schreef op vr 11-02-2022 om 22:00 [+0300]:
> +     `(#:use-setuptools? #f
> +       #:phases
> +       (modify-phases %standard-phases
> +         (delete 'build)
> +         [replace the install phase]

Most of the time (but not always!), the default build and install
phases and the default of #:use-setuptools? is fine.  Could you
elaborate what is the issue?

Greetings,
Maxime.
  
Maxime Devos Feb. 25, 2022, 7:55 p.m. UTC | #4
Evgeny Pisemsky schreef op vr 11-02-2022 om 22:00 [+0300]:
> +    (description "Python modules and scripts for handling
> +stereolithography (STL) files.")

Perhaps the description can be extended a bit? Maybe:

"This package consists of Python modules and scripts for manipulating
stereolithography (STL) files.  It can convert STL files into POV-ray
meshes, PDF and PostScript.  The Python modules allow for reading
and writing STL files.  It supports both the text and binary forms
of STL."

Greetings,
Maxime.
  
Maxime Devos Feb. 25, 2022, 7:58 p.m. UTC | #5
Maxime Devos schreef op vr 25-02-2022 om 20:51 [+0100]:
> Evgeny Pisemsky schreef op vr 11-02-2022 om 22:00 [+0300]:
> > +     `(#:use-setuptools? #f
> > +       #:phases
> > +       (modify-phases %standard-phases
> > +         (delete 'build)
> > +         [replace the install phase]
> 
> Most of the time (but not always!), the default build and install
> phases and the default of #:use-setuptools? is fine.  Could you
> elaborate what is the issue?

Nevermind, I now see the original message you sent.  Still seems
suboptimal though ...
  
Maxime Devos Feb. 25, 2022, 8:02 p.m. UTC | #6
Evgeny Pisemsky schreef op vr 11-02-2022 om 22:00 [+0300]:
> +    (arguments
> +     `(#:use-setuptools? #f
> +       #:phases
> +       (modify-phases %standard-phases

To make sure that 'stl2pov' and friends of 'python-sltools' can find
its dependencies when run outside a profile (somewhat niche but
occassionaly useful), some wrapping may be necessary (search for 'wrap-
program').  Maybe python-build-system does that automatically though
...
  

Patch

From c6fcae5568da38a66e67947f6d20d7228923c626 Mon Sep 17 00:00:00 2001
From: Evgeny Pisemsky <evgeny@pisemsky.com>
Date: Fri, 11 Feb 2022 19:55:13 +0300
Subject: [PATCH] gnu: Add python-stltools.

* gnu/packages/python-xyz.scm (python-stltools): New variable.
---
 gnu/packages/python-xyz.scm | 44 +++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 41b60325d2..e72d5baed7 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -116,6 +116,7 @@ 
 ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
+;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28933,3 +28934,46 @@  (define-public python-types-dataclasses
      "This packages provides a collection of library stubs for Python, with
 static types.")
     (license license:asl2.0)))
+
+(define-public python-stltools
+  (package
+    (name "python-stltools")
+    (version "2022.01.20")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/rsmith-nl/stltools")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1k6dhszza4lpy46qffaqx5zr70ikfqqysbacy7zabnrvz09fd4rs"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:use-setuptools? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((moddir (string-append (site-packages inputs outputs) "/stltools"))
+                   (bindir (string-append (assoc-ref outputs "out") "/bin")))
+               (copy-recursively "stltools" moddir)
+               (mkdir-p bindir)
+               (for-each
+                (lambda (script)
+                  (let ((source (string-append script ".py"))
+                        (target (string-append bindir "/" script)))
+                    (copy-file source target)
+                    (chmod target #o555)))
+                '("stl2pov" "stl2ps" "stl2pdf" "stlinfo")))))
+         (replace 'check
+           (lambda _
+             (invoke "py.test" "-v"))))))
+    (propagated-inputs (list python-pycairo))
+    (native-inputs (list python-pytest))
+    (home-page "https://github.com/rsmith-nl/stltools")
+    (synopsis "Tools to manipulate STL files")
+    (description "Python modules and scripts for handling
+stereolithography (STL) files.")
+    (license license:expat)))

base-commit: 6baf2177df36bc33e79f1c71198dfe04d242efb2
-- 
2.34.0