Package: guix-patches;
Reported by: Kristian Lein-Mathisen <kristianlein <at> gmail.com>
Date: Tue, 23 Aug 2022 17:30:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Message #11 received at 57361 <at> debbugs.gnu.org (full text, mbox):
From: Liliana Marie Prikler <liliana.prikler <at> gmail.com> To: Kristian Lein-Mathisen <kristianlein <at> gmail.com>, 57361 <at> debbugs.gnu.org Subject: Re: Solvespace package re-done Date: Thu, 01 Sep 2022 19:18:37 +0200
Am Mittwoch, dem 31.08.2022 um 20:51 +0200 schrieb Kristian Lein- Mathisen: > ;; There is another mimalloc, used in rust-mimalloc. But it's on > mimalloc > +;; version 1.6.4. TODO: See if it's possible to re-use this package > by both. > +(define mimalloc-for-solvespace Given that this is the upstream mimalloc, there's no reason to make this private or only for solvespace. Note that you should separate this into one patch per package. > + (let ((commit "f2712f4a8f038a7fb4df2790f4c3b7e3ed9e219b") > + (version "2.0.6")) This is the release commit, no reason to use git-version etc. here > + (package > + (name "mimalloc-for-solvespace") > + (version (git-version version "1" commit)) > + (source (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/microsoft/mimalloc") > + (commit commit))) You can use (string-append "v" version) to check out the tag. > + (file-name (git-file-name name version)) > + (sha256 > + (base32 > + > "05x2dl3zimflfj91ns3vrphmzpdlyyr230p9adqgfds101f16qmv")))) > + (build-system cmake-build-system) > + (arguments > + `(#:build-type "Release")) > + (synopsis "Compact general purpose allocator with excellent > performance") Don't bloat the synopsis with marketing terms; "General purpose allocator" should probably suffice. > + (description "@code{mimalloc} is a drop-in replacement for > @code{malloc} .") The rest appears somewhat superfluous :) > + (home-page "https://microsoft.github.io/mimalloc/") > + (license license:expat)))) > +(define-public solvespace > + (let ((commit "70bde63cb32a7f049fa56cbdf924e2695fcb2916") > + (version "3.1") I haven't checked, but is this the release commit? If so, no need for all this verbosity. > + ;; libdxfrw has no readme, no version release, no tags. > Initial > + ;; commit says "libdxfrw-0.6.3 import", but it shares no git > history > + ;; with "upstream" https://github.com/codelibs/libdxfrw. > Both are > + ;; difficult to package separately as they don't install > properly. > + ;; Copying in-tree instead of #:recursive #t to avoid > downloading the > + ;; other bigger dependencies which aren't needed. > + (libdxfrw-sources (origin > + (method git-fetch) > + (uri (git-reference (url > + > "https://github.com/solvespace/libdxfrw") > + (commit > + > "0b7b7b709d9299565db603f878214656ef5e9ddf"))) > + (sha256 (base32 > + > "0d2wjq81466m3hb5cffiy99vhx0irwwy47yfxp318k2q4cvd5z2a"))))) This should be its own variable. Unlike with mimalloc, since it's just an origin, you can use the same patch as solvespace. > + (package > + (name "solvespace") > + (version (git-version version "1" commit)) > + (source (origin > + (method git-fetch) > + (uri (git-reference > + (url > "https://github.com/solvespace/solvespace") > + (commit commit))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 > + > "1hbdln44k00a6vlklv2mq2c9zda3i9d5x0f7ks85w4v6zskhqnra")))) > + (build-system cmake-build-system) > + (native-inputs (list pkg-config gettext-minimal)) > + (arguments > + (list #:build-type "Release" > + #:phases #~(modify-phases %standard-phases `guix style' is not yet perfect when it comes to trade-offs between horizontal and vertical space. Prefer (list #:build-type "Release" #:phases #~(modify-phases ... > + (add-after 'unpack 'unpack-libdxfrw > + (lambda _ > + (copy-recursively #$libdxfrw-sources > + "extlib/libdxfrw"))) > + (add-before 'configure 'embed-git-commit- > hash > + (lambda _ > + ;; `git describe` doesn't work here, > so embed > + ;; the commit hash directly in > CMakeLists.txt as > + ;; described instead. > + (substitute* "CMakeLists.txt" > + (("include\\(GetGitCommitHash\\)") > + (string-append "set(GIT_COMMIT_HASH > " > + #$commit ")"))))) > + (add-before 'configure 'use-packaged- > mimalloc > + (lambda _ > + (substitute* "CMakeLists.txt" > + (("message\\(STATUS \"Using in-tree > mimalloc\"\\)") > + "message(STATUS \"Using guix > packaged mimalloc\")") > + > (("add_subdirectory\\(extlib/mimalloc EXCLUDE_FROM_ALL\\)") > + "find_package(mimalloc > REQUIRED)"))))))) > + (inputs (list cairo > + eigen > + freetype > + gtkmm-3 > + json-c > + libpng > + libspnav ;spaceware > + mimalloc-for-solvespace > + mesa > + zlib)) > + (synopsis "Parametric 2D/3D CAD") > + (description > + "SOLVESPACE is a parametric 3D @acronym{CAD, > +Computer Aided Design} tool. Applications include: > + > +@itemize > +@item modeling 3d parts — draw with extrudes, revolves, helixes and > + Boolean (union / difference / intersection) operations > +@item modeling 2d parts — draw the part as a single section, > + and export DXF, PDF, SVG; use 3d assembly to verify fit > +@item 3d-printed parts — export the STL or other triangle mesh > + expected by most 3d printers > +@item preparing CAM data — export 2d vector art for a waterjet > + machine or laser cutter; or generate STEP or STL, for import > into > + third-party CAM software for machining > +@item mechanism design — use the constraint solver to simulate > planar > + or spatial linkages, with pin, ball, or slide joints > +@item plane and solid geometry — replace hand-solved trigonometry > and spreadsheets > + with a live dimensioned drawing > +@end itemize") > + (home-page "https://solvespace.com/") > + (license license:gpl3+)))) > + Cheers
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.